"use strict"; /** @define {boolean} */ var ASC_DOCS_API_DEBUG = true; var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; var documentId = undefined; var documentUserId = undefined; var documentUrl = 'null'; var documentTitle = 'null'; var documentTitleWithoutExtention = 'null'; var documentFormat = 'null'; var documentVKey = null; var documentOrigin = ""; var documentFormatSave = c_oAscFileType.PPTX;//пока не во что другое сохранять не можем. var documentCallbackUrl = undefined; // Ссылка для отправления информации о документе var c_oSerFormat = { Version:1, Signature: "PPTY" }; function CErrorData() { this.Value = 0; } CErrorData.prototype.put_Value = function(v){ this.Value = v; }; CErrorData.prototype.get_Value = function() { return this.Value; }; function asc_docs_api(name) { var CDocsCoApi = window["CDocsCoApi"]; var CSpellCheckApi = window["CSpellCheckApi"]; /************ private!!! **************/ this.HtmlElementName = name; this.WordControl = new CEditorPage(this); this.WordControl.Name = this.HtmlElementName; this.ThemeLoader = new CThemeLoader(); this.ThemeLoader.Api = this; this.FontLoader = window.g_font_loader; this.ImageLoader = window.g_image_loader; this.FontLoader.put_Api(this); this.ImageLoader.put_Api(this); this.FontLoader.SetStandartFonts(); this.LoadedObject = null; this.DocumentType = 0; // 0 - empty, 1 - test, 2 - document (from json) this.DocumentUrl = ""; this.DocumentName = ""; this.DocInfo = null; this.bNoSendComments = false; this.isApplyChangesOnOpen = false; this.isApplyChangesOnOpenEnabled = true; this.IsSupportEmptyPresentation = true; this.ShowParaMarks = false; this.ShowSnapLines = true; this.isAddSpaceBetweenPrg = false; this.isPageBreakBefore = false; this.isKeepLinesTogether = false; this.isPresentationEditor = true; this.bAlignBySelected = false; this.isMobileVersion = false; this.isPaintFormat = false; this.isViewMode = false; this.isShowTableEmptyLine = false;//true; this.isShowTableEmptyLineAttack = false;//true; this.bInit_word_control = false; this.isDocumentModify = false; this.isImageChangeUrl = false; this.isShapeImageChangeUrl = false; this.isSlideImageChangeUrl = false; this.isPasteFonts_Images = false; this.isLoadNoCutFonts = false; // На этапе сборки значение переменной ASC_DOCS_API_USE_EMBEDDED_FONTS может менятся. // По дефолту встроенные шрифты использоваться не будут, как и при любом значении // ASC_DOCS_API_USE_EMBEDDED_FONTS, кроме "true"(написание от регистра не зависит). this.isUseEmbeddedCutFonts = ("true" == ASC_DOCS_API_USE_EMBEDDED_FONTS.toLowerCase()); this.noCreatePoint = false; this.exucuteHistory = false; this.exucuteHistoryEnd = false; this.pasteCallback = null; this.pasteImageMap = null; this.EndActionLoadImages = 0; this.isSaveFonts_Images = false; this.saveImageMap = null; this.canSave = true;//Флаг нужен чтобы не происходило сохранение пока не завершится предыдущее сохранение this.waitSave = false; // Отложенное сохранение, происходит во время долгих операций this.ServerIdWaitComplete = false; this.ServerImagesWaitComplete = false; this.ParcedDocument = false; this.isStartCoAuthoringOnEndLoad = false; // Подсоединились раньше, чем документ загрузился this.DocumentOrientation = orientation_Portrait ? true : false; this.SelectedObjectsStack = []; this.OpenDocumentProgress = new CDocOpenProgress(); this._lastConvertProgress = 0; // CoAuthoring and Chat this.User = undefined; this.CoAuthoringApi = new CDocsCoApi(); this.isCoAuthoringEnable = true; this.CoAuthoringApi.isPowerPoint = true; this.isDocumentCanSave = false; // Флаг, говорит о возможности сохранять документ (активна кнопка save или нет) /**************************************/ // AutoSave this.autoSaveGap = 0; // Интервал автосохранения (0 - означает, что автосохранения нет) в милесекундах this.canSave = true; //Флаг нужен чтобы не происходило сохранение пока не завершится предыдущее сохранение if(typeof ChartPreviewManager !== "undefined") this.chartPreviewManager = new ChartPreviewManager(); else this.chartPreviewManager = null; if(typeof asc_CChartTranslate !== "undefined") this.chartTranslate = new asc_CChartTranslate(); else this.chartTranslate = null; // объекты, нужные для отправки в тулбар (шрифты, стили) this._gui_fonts = null; this._gui_editor_themes = null; this._gui_document_themes = null; this.tableStylesIdCounter = 0; //выставляем тип copypaste g_bIsDocumentCopyPaste = false; this.IsLongIteration = false; this.TrackFile = null; var oThis = this; if(window.addEventListener) window.addEventListener("message", function(){ oThis.OnHandleMessage.apply(oThis, arguments); }, false); if ("undefined" != typeof(FileReader) && "undefined" != typeof(FormData)) { //var element = document.body; var element = document.getElementById(this.HtmlElementName); if(null != element) { element["ondragover"] = function(e) { e.preventDefault(); if(CanDropFiles(e)) e.dataTransfer.dropEffect = 'copy'; else e.dataTransfer.dropEffect = 'none'; return false; }; element["ondrop"] = function(e) { e.preventDefault(); var files = e.dataTransfer.files; var nError = ValidateUploadImage(files); if(c_oAscServerError.NoError == nError) { oThis.sync_StartAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.UploadImage); var xhr = new XMLHttpRequest(); var fd = new FormData(); for(var i = 0, length = files.length; i < length; i++) fd.append('file[' + i + ']', files[i]); xhr.open('POST', g_sUploadServiceLocalUrl+'?key='+documentId); xhr.onreadystatechange = function(){ if(4 == this.readyState) { if((this.status == 200 || this.status == 1223)) { var frameWindow = GetUploadIFrame(); var content = this.responseText; frameWindow.document.open(); frameWindow.document.write(content); frameWindow.document.close(); } else oThis.asc_fireCallback("asc_onError",c_oAscError.ID.Unknown,c_oAscError.Level.NoCritical); oThis.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.UploadImage); } }; xhr.send(fd); } else oThis.asc_fireCallback("asc_onError",_mapAscServerErrorToAscError(nError),c_oAscError.Level.NoCritical); }; } } if (window.editor == undefined) { window.editor = this; window['editor'] = window.editor; if (window["NATIVE_EDITOR_ENJINE"]) editor = window.editor; } CHART_STYLE_MANAGER = new CChartStyleManager(); } asc_docs_api.prototype.asc_GetFontThumbnailsPath = function() { return "../Common/Images/"; } ///////////////////////////////////////////////////////////////////////// ///////////////////CoAuthoring and Chat api////////////////////////////// ///////////////////////////////////////////////////////////////////////// function CChatMessage(user, message) { this.UserId = (undefined != user_id) ? user_id : null; this.Message = (undefined != message) ? message : null; } CChatMessage.prototype.get_UserId = function() { return this.UserId; } CChatMessage.prototype.get_Message = function() { return this.Message; } /* ToDo Register Callback OnCoAuthoringChatReceiveMessage return object CChatMessage (возможно возвращается МАСС�?В CChatMessage со всеми сообщениями) ToDo Register Callback OnCoAuthoringConnectUser возвращается userId ToDo Register Callback OnCoAuthoringDisconnectUser возвращается userId */ // Init CoAuthoring asc_docs_api.prototype._coAuthoringInit = function () { if (!this.CoAuthoringApi) { g_oIdCounter.Set_Load(false); this.asyncServerIdEndLoaded (); return; // Error } if(undefined !== window['g_cAscCoAuthoringUrl']) window.g_cAscCoAuthoringUrl = window['g_cAscCoAuthoringUrl']; if (undefined !== window.g_cAscCoAuthoringUrl) { //Turn off CoAuthoring feature if it disabled if(!this.isCoAuthoringEnable) window.g_cAscCoAuthoringUrl = ""; this._coAuthoringSetServerUrl(window.g_cAscCoAuthoringUrl); } if (null == this.User || null == this.User.asc_getId()) { this.User = new Asc.asc_CUser(); this.User.asc_setId("Unknown"); this.User.asc_setUserName("Unknown"); this._coAuthoringSetServerUrl(""); } var t = this; this.CoAuthoringApi.onParticipantsChanged = function (e, count) { t.asc_fireCallback("asc_onParticipantsChanged", e, count); }; this.CoAuthoringApi.onAuthParticipantsChanged = function (e, count) { t.asc_fireCallback("asc_onAuthParticipantsChanged", e, count); }; this.CoAuthoringApi.onMessage = function (e) { t.asc_fireCallback( "asc_onCoAuthoringChatReceiveMessage", e ); }; this.CoAuthoringApi.onConnectionStateChanged = function (e) { t.asc_fireCallback( "asc_onConnectionStateChanged", e ); }; this.CoAuthoringApi.onLocksAcquired = function (e) { if (2 != e["state"]) { var block_value = e["blockValue"]; var classes = []; switch(block_value["type"]) { case c_oAscLockTypeElemPresentation.Object: { classes.push(block_value["objId"]); //classes.push(block_value["slideId"]); break; } case c_oAscLockTypeElemPresentation.Slide: { classes.push(block_value["val"]); break; } case c_oAscLockTypeElemPresentation.Presentation: { break; } } var Id = e["block"]; for(var i = 0; i < classes.length; ++i) { var Class = g_oTableId.Get_ById(classes[i]);// g_oTableId.Get_ById( Id ); if ( null != Class ) { var Lock = Class.Lock; var OldType = Class.Lock.Get_Type(); if ( locktype_Other2 === OldType || locktype_Other3 === OldType ) Lock.Set_Type( locktype_Other3, true ); else Lock.Set_Type( locktype_Other, true ); if ( Class instanceof PropLocker ) { var object = g_oTableId.Get_ById(Class.objectId); if(object instanceof Slide && Class === object.deleteLock) { editor.WordControl.m_oLogicDocument.DrawingDocument.LockSlide(object.num); } } // Выставляем ID пользователя, залочившего данный элемент Lock.Set_UserId( e["user"] ); if ( Class instanceof PropLocker ) { var object = g_oTableId.Get_ById(Class.objectId); if(object instanceof CPresentation) { if(Class === editor.WordControl.m_oLogicDocument.themeLock) { editor.asc_fireCallback("asc_onLockDocumentTheme"); } else if(Class === editor.WordControl.m_oLogicDocument.schemeLock) { editor.asc_fireCallback("asc_onLockDocumentSchema"); } else if(Class === editor.WordControl.m_oLogicDocument.slideSizeLock) { editor.asc_fireCallback("asc_onLockDocumentProps"); } } } if(Class instanceof CComment) { editor.sync_LockComment(Class.Get_Id(), e["user"]); } // TODO: Здесь для ускорения надо сделать проверку, является ли текущим элемент с // заданным Id. Если нет, тогда и не надо обновлять состояние. editor.WordControl.m_oLogicDocument.Document_UpdateInterfaceState(); } else { if(classes[i].indexOf("new_object") > -1 && block_value["type"] === c_oAscLockTypeElemPresentation.Object) { var slide_id = block_value["slideId"]; var delete_lock = g_oTableId.Get_ById(slide_id); if(isRealObject(delete_lock)) { var Lock = delete_lock.Lock; var OldType = Lock.Get_Type(); if ( locktype_Other2 === OldType || locktype_Other3 === OldType ) Lock.Set_Type( locktype_Other3, true ); else Lock.Set_Type( locktype_Other, true ); editor.WordControl.m_oLogicDocument.DrawingDocument.LockSlide(g_oTableId.Get_ById(delete_lock.objectId).num); } else { CollaborativeEditing.Add_NeedLock(slide_id, e["user"]); } } else { CollaborativeEditing.Add_NeedLock(classes[i], e["user"]); } } } } }; this.CoAuthoringApi.onLocksReleased = function (e, bChanges) { var Id; var block_value = e["block"]; var classes = []; switch(block_value["type"]) { case c_oAscLockTypeElemPresentation.Object: { classes.push(block_value["objId"]); //classes.push(block_value["slideId"]); break; } case c_oAscLockTypeElemPresentation.Slide: { classes.push(block_value["val"]); break; } case c_oAscLockTypeElemPresentation.Presentation: { break; } } for(var i = 0; i < classes.length; ++i) { Id = classes[i]; var Class = g_oTableId.Get_ById( Id ); if ( null != Class ) { var Lock = Class.Lock; if ( "undefined" != typeof(Lock) ) { var CurType = Lock.Get_Type(); var NewType = locktype_None; if ( CurType === locktype_Other ) { if ( true != bChanges ) NewType = locktype_None; else { NewType = locktype_Other2; CollaborativeEditing.Add_Unlock(Class); } } else if ( CurType === locktype_Mine ) { // Такого быть не должно NewType = locktype_Mine; } else if ( CurType === locktype_Other2 || CurType === locktype_Other3 ) NewType = locktype_Other2; Lock.Set_Type( NewType, true ); if(Class instanceof PropLocker ) { var object = g_oTableId.Get_ById(Class.objectId); if(object instanceof Slide && Class === object.deleteLock) { if(NewType !== locktype_Mine && NewType !== locktype_None) editor.WordControl.m_oLogicDocument.DrawingDocument.LockSlide(object.num); else editor.WordControl.m_oLogicDocument.DrawingDocument.UnLockSlide(object.num); } if(object instanceof CPresentation) { if(Class === object.themeLock) { if(NewType !== locktype_Mine && NewType !== locktype_None) editor.asc_fireCallback("asc_onLockDocumentTheme"); else editor.asc_fireCallback("asc_onUnLockDocumentTheme"); } if(Class === object.slideSizeLock) { if(NewType !== locktype_Mine && NewType !== locktype_None) editor.asc_fireCallback("asc_onLockDocumentProps"); else editor.asc_fireCallback("asc_onUnLockDocumentProps"); } } } } } else { CollaborativeEditing.Remove_NeedLock(Id); } } }; this.CoAuthoringApi.onSaveChanges = function (e, userId, bFirstLoad) { // bSendEvent = false - это означает, что мы загружаем имеющиеся изменения при открытии var Changes = new CCollaborativeChanges(); Changes.Set_Data(e); CollaborativeEditing.Add_Changes(Changes); // т.е. если bSendEvent не задан, то посылаем сообщение + когда загрузился документ if (!bFirstLoad && t.bInit_word_control) t.sync_CollaborativeChanges(); }; this.CoAuthoringApi.onFirstLoadChangesEnd = function () { t.asyncServerIdEndLoaded (); }; this.CoAuthoringApi.onSetIndexUser = function (e) { g_oIdCounter.Set_UserId("" + e); }; this.CoAuthoringApi.onStartCoAuthoring = function (isStartEvent) { if (t.ParcedDocument) { CollaborativeEditing.Start_CollaborationEditing(); t.WordControl.m_oLogicDocument.DrawingDocument.Start_CollaborationEditing(); if (true != History.Is_Clear()) { CollaborativeEditing.Apply_Changes(); CollaborativeEditing.Send_Changes(); } else { // Изменений нет, но нужно сбросить lock t.CoAuthoringApi.unLockDocument(false); } } else t.isStartCoAuthoringOnEndLoad = true; }; this.CoAuthoringApi.onEndCoAuthoring = function (isStartEvent) { CollaborativeEditing.End_CollaborationEditing(); if (false != t.WordControl.m_oLogicDocument.DrawingDocument.IsLockObjectsEnable) { t.WordControl.m_oLogicDocument.DrawingDocument.IsLockObjectsEnable = false; t.WordControl.m_oLogicDocument.DrawingDocument.FirePaint(); } }; /** * Event об отсоединении от сервера * @param {jQuery} e event об отсоединении с причиной * @param {Bool} isDisconnectAtAll окончательно ли отсоединяемся(true) или будем пробовать сделать reconnect(false) + сами отключились * @param {Bool} isCloseCoAuthoring */ this.CoAuthoringApi.onDisconnect = function (e, isDisconnectAtAll, isCloseCoAuthoring) { if (0 === t.CoAuthoringApi.get_state()) t.asyncServerIdEndLoaded(); if (isDisconnectAtAll) { // Посылаем наверх эвент об отключении от сервера t.asc_fireCallback("asc_onСoAuthoringDisconnect"); t.SetViewMode(true, true); t.sync_ErrorCallback(isCloseCoAuthoring ? c_oAscError.ID.UserDrop : c_oAscError.ID.CoAuthoringDisconnect, c_oAscError.Level.NoCritical); } }; this.CoAuthoringApi.init(this.User, documentId, documentCallbackUrl, 'fghhfgsjdgfjs', function(){}, c_oEditorId.Presentation, documentFormatSave, this.isViewMode); // ToDo init other callbacks }; asc_docs_api.prototype.pre_Save = function(_images) { this.isSaveFonts_Images = true; this.saveImageMap = _images; this.WordControl.m_oDrawingDocument.CheckFontNeeds(); this.FontLoader.LoadDocumentFonts2(this.WordControl.m_oLogicDocument.Fonts); } asc_docs_api.prototype.sync_CollaborativeChanges = function() { this.asc_fireCallback("asc_onCollaborativeChanges"); } // Set CoAuthoring server url asc_docs_api.prototype._coAuthoringSetServerUrl = function (url) { if (!this.CoAuthoringApi) return; // Error this.CoAuthoringApi.set_url(url); }; // server disconnect asc_docs_api.prototype.asc_coAuthoringDisconnect = function () { //Just set viewer mode this.SetViewMode(true); //TODO: Uncomment when CoAuthoring will be done //if (!this.CoAuthoringApi) // return; // Error //this.CoAuthoringApi.disconnect(); }; // send chart message asc_docs_api.prototype.asc_coAuthoringChatSendMessage = function (message) { if (!this.CoAuthoringApi) return; // Error this.CoAuthoringApi.sendMessage(message); }; // get chart messages, возвращается массив CChatMessage asc_docs_api.prototype.asc_coAuthoringChatGetMessages = function () { if (!this.CoAuthoringApi) return; // Error this.CoAuthoringApi.getMessages(); }; // get users, возвращается массив users asc_docs_api.prototype.asc_coAuthoringGetUsers = function () { if (!this.CoAuthoringApi) return; // Error this.CoAuthoringApi.getUsers(); }; asc_docs_api.prototype.asyncServerIdStartLoaded = function () { //Инициализируем контрол для совместного редактирования this._coAuthoringInit(); }; asc_docs_api.prototype.asyncServerIdEndLoaded = function () { this.ServerIdWaitComplete = true; if (true == this.ServerImagesWaitComplete) this.OpenDocumentEndCallback(); }; // Эвент о пришедщих изменениях asc_docs_api.prototype.syncCollaborativeChanges = function () { this.asc_fireCallback("asc_onCollaborativeChanges"); }; asc_docs_api.prototype.SetCollaborativeMarksShowType = function(Type) { this.CollaborativeMarksShowType = Type; } asc_docs_api.prototype.GetCollaborativeMarksShowType = function(Type) { return this.CollaborativeMarksShowType; }; asc_docs_api.prototype.Clear_CollaborativeMarks = function() { CollaborativeEditing.Clear_CollaborativeMarks(true); }; asc_docs_api.prototype._onUpdateDocumentCanSave = function () { // Можно модифицировать это условие на более быстрое (менять самим состояние в аргументах, а не запрашивать каждый раз) var tmp = this.isDocumentModified() || (0 >= CollaborativeEditing.m_nUseType && 0 !== CollaborativeEditing.getOwnLocksLength()); if (tmp !== this.isDocumentCanSave) { this.isDocumentCanSave = tmp; this.asc_fireCallback('asc_onDocumentCanSaveChanged', this.isDocumentCanSave); } }; /////////////////////////////////////////// asc_docs_api.prototype.SetUnchangedDocument = function() { this.isDocumentModify = false; this.asc_fireCallback("asc_onDocumentModifiedChanged"); this._onUpdateDocumentCanSave(); }; asc_docs_api.prototype.isDocumentModified = function() { if (!this.canSave) { // Пока идет сохранение, мы не закрываем документ return true; } return this.isDocumentModify; }; /** * Эта функция возвращает true, если есть изменения или есть lock-и в документе */ asc_docs_api.prototype.asc_isDocumentCanSave = function () { return this.isDocumentCanSave; }; asc_docs_api.prototype.sync_BeginCatchSelectedElements = function() { if (0 != this.SelectedObjectsStack.length) this.SelectedObjectsStack.splice(0, this.SelectedObjectsStack.length); }; asc_docs_api.prototype.sync_EndCatchSelectedElements = function() { this.asc_fireCallback("asc_onFocusObject", this.SelectedObjectsStack); } asc_docs_api.prototype.getSelectedElements = function() { return this.SelectedObjectsStack; } asc_docs_api.prototype.sync_ChangeLastSelectedElement = function(type, obj) { var oUnkTypeObj = null; switch( type ) { case c_oAscTypeSelectElement.Paragraph: oUnkTypeObj = new CParagraphProp( obj ); break; case c_oAscTypeSelectElement.Image: oUnkTypeObj = new CImgProperty( obj ); break; case c_oAscTypeSelectElement.Table: oUnkTypeObj = new CTableProp( obj ); break; case c_oAscTypeSelectElement.Shape: oUnkTypeObj = obj; break; } var _i = this.SelectedObjectsStack.length - 1; var bIsFound = false; while (_i >= 0) { if (this.SelectedObjectsStack[_i].Type == type) { this.SelectedObjectsStack[_i].Value = oUnkTypeObj; bIsFound = true; break; } _i--; } if (!bIsFound) { this.SelectedObjectsStack[this.SelectedObjectsStack.length] = new CSelectedObject( type, oUnkTypeObj ); } } asc_docs_api.prototype.Init = function() { this.WordControl.Init(); } asc_docs_api.prototype.asc_getEditorPermissions = function() { if (this.DocInfo && this.DocInfo.get_Id()) { var rData = { "c" : "getsettings", "id" : this.DocInfo.get_Id(), "userid" : this.DocInfo.get_UserId(), "format" : this.DocInfo.get_Format(), "vkey" : this.DocInfo.get_VKey(), "editorid" : c_oEditorId.Presentation }; sendCommand( this, this.asc_getEditorPermissionsCallback, rData ); } else { var asc_CAscEditorPermissions = window["Asc"].asc_CAscEditorPermissions; editor.asc_fireCallback("asc_onGetEditorPermissions", new asc_CAscEditorPermissions()); } }; asc_docs_api.prototype.asc_getLicense = function () { var t = this; var rdata = { "c" : "getlicense" }; sendCommand(this, function (response) {t._onGetLicense(response);}, rdata); }; asc_docs_api.prototype.asc_getEditorPermissionsCallback = function(incomeObject) { if(null != incomeObject && "getsettings" == incomeObject["type"]){ var oSettings = JSON.parse(incomeObject["data"]); //Set up coauthoring and spellcheker service window.g_cAscCoAuthoringUrl = oSettings['g_cAscCoAuthoringUrl']; window.g_cAscSpellCheckUrl = oSettings['g_cAscSpellCheckUrl']; var asc_CAscEditorPermissions = window["Asc"].asc_CAscEditorPermissions; var oEditorPermissions = new asc_CAscEditorPermissions(oSettings); editor.asc_fireCallback("asc_onGetEditorPermissions", oEditorPermissions); if(undefined != oSettings['trackingInfo'] && null != oSettings['trackingInfo']) { var asc_CTrackFile = window["Asc"].CTrackFile; editor.TrackFile = new asc_CTrackFile(oSettings['trackingInfo']); editor.TrackFile.setDocId(editor.DocInfo.get_Id()); editor.TrackFile.setUserId(editor.DocInfo.get_UserId()); editor.TrackFile.setTrackFunc(sendTrack); var _isDocumentModified = function(){ return editor.isDocumentModified(); }; editor.TrackFile.setIsDocumentModifiedFunc(_isDocumentModified); if(undefined != oSettings['TrackingInterval'] && null != oSettings['TrackingInterval']) editor.TrackFile.setInterval(oSettings['TrackingInterval']); editor.TrackFile.Start(); } } } asc_docs_api.prototype._onGetLicense = function (response) { if (null != response && "getlicense" == response.type){ var oSettings = JSON.parse(response.data); var oLicense = (null != oSettings) ? new window["Asc"].asc_CAscLicense(oSettings) : null; this.asc_fireCallback("asc_onGetLicense", oLicense); } }; asc_docs_api.prototype.asc_setDocInfo = function(c_DocInfo) { if(c_DocInfo) this.DocInfo = c_DocInfo; } asc_docs_api.prototype.asc_setLocale = function(val) { } asc_docs_api.prototype.LoadDocument = function(c_DocInfo) { this.asc_setDocInfo(c_DocInfo); this.WordControl.m_oDrawingDocument.m_bIsOpeningDocument = true; if(this.DocInfo){ documentId = this.DocInfo.get_Id(); documentUserId = this.DocInfo.get_UserId(); documentUrl = this.DocInfo.get_Url(); documentTitle = this.DocInfo.get_Title(); documentFormat = this.DocInfo.get_Format(); documentCallbackUrl = this.DocInfo.get_CallbackUrl(); var nIndex = -1; if(documentTitle) nIndex = documentTitle.lastIndexOf("."); if(-1 != nIndex) documentTitleWithoutExtention = documentTitle.substring(0, nIndex); else documentTitleWithoutExtention = documentTitle; documentVKey = this.DocInfo.get_VKey(); // documentOrigin = this.DocInfo.get_Origin(); var sProtocol = window.location.protocol; var sHost = window.location.host; documentOrigin = ""; if(sProtocol && "" != sProtocol) documentOrigin = sProtocol + "//" + sHost; else documentOrigin = sHost; this.User = new Asc.asc_CUser(); this.User.asc_setId(this.DocInfo.get_UserId()); this.User.asc_setUserName(this.DocInfo.get_UserName()); } this.DocumentName = documentTitle; var oThis = this; if (this.DocInfo.get_OfflineApp() === true) { this.OfflineAppDocumentStartLoad(); return; } if (documentId) { this.sync_StartAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.Open); var rData = { "id":documentId, "userid": documentUserId, "format": documentFormat, "vkey": documentVKey, "editorid": c_oEditorId.Presentation, "c":"open", "url": documentUrl, "title": documentTitle, "embeddedfonts": this.isUseEmbeddedCutFonts}; sendCommand( oThis, function(){}, rData ); this.sync_zoomChangeCallback(this.WordControl.m_nZoomValue, this.WordControl.m_nZoomType); } else { documentUrl = "document/"; this.DocInfo.put_OfflineApp(true); // For test create unique id documentId = "test_presentation_id"; this.OfflineAppDocumentStartLoad(); this.sync_zoomChangeCallback(this.WordControl.m_nZoomValue, this.WordControl.m_nZoomType); } } asc_docs_api.prototype.SetFontsPath = function(path) { this.FontLoader.fontFilesPath = path; } asc_docs_api.prototype.SetThemesPath = function(path) { this.ThemeLoader.ThemesUrl = path; } asc_docs_api.prototype.CreateCSS = function() { if (window["flat_desine"] === true) { GlobalSkin = GlobalSkinFlat; } var _head = document.getElementsByTagName('head')[0]; var style0 = document.createElement('style'); style0.type = 'text/css'; style0.innerHTML = ".block_elem { position:absolute;padding:0;margin:0; }"; _head.appendChild(style0); var style1 = document.createElement('style'); style1.type = 'text/css'; style1.innerHTML = ".buttonTabs {\ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAA5CAMAAADjueCuAAAABGdBTUEAALGPC/xhBQAAAEhQTFRFAAAAWFhYZWVlSEhIY2NjV1dXQ0NDYWFhYmJiTk5OVlZWYGBgVFRUS0tLbGxsRERETExMZmZmVVVVXl5eR0dHa2trPj4+u77CpAZQrwAAAAF0Uk5TAEDm2GYAAABwSURBVDjL1dHHDoAgEEVR7NLr4P//qQm6EMaFxtje8oTF5ELIpU35Fstf3GegsPEBG+uwSYpNB1qNKreoDeNw/r6dLr/tnFpbbNZj8wKbk8W/1d6ZPjfrhdHx9c4fbA9wzMYWm3OFhbQmbC2ue6z9DCH/Exf/mU3YAAAAAElFTkSuQmCC);\ background-position: 0px 0px;\ background-repeat: no-repeat;\ }"; _head.appendChild(style1); var style3 = document.createElement('style'); style3.type = 'text/css'; style3.innerHTML = ".buttonPrevPage {\ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAABgBAMAAADm/++TAAAABGdBTUEAALGPC/xhBQAAABJQTFRFAAAA////UVNVu77Cenp62Nrc3x8hMQAAAAF0Uk5TAEDm2GYAAABySURBVCjPY2AgETDBGEoKUAElJcJSxANjKGAwDQWDYAKMIBhDSRXCCFJSIixF0GS4M+AMExcwcCbAcIQxBEUgDEdBQcJSBE2GO4PU6IJHASxS4NGER4p28YWIAlikwKMJjxTt4gsRBbBIgUcTHini4wsAwMmIvYZODL0AAAAASUVORK5CYII=);\ background-position: 0px 0px;\ background-repeat: no-repeat;\ }"; _head.appendChild(style3); var style4 = document.createElement('style'); style4.type = 'text/css'; style4.innerHTML = ".buttonNextPage {\ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAABgBAMAAADm/++TAAAABGdBTUEAALGPC/xhBQAAABJQTFRFAAAA////UVNVu77Cenp62Nrc3x8hMQAAAAF0Uk5TAEDm2GYAAABySURBVCjPY2AgETDBGEoKUAElJcJSxANjKGAwDQWDYAKMIBhDSRXCCFJSIixF0GS4M+AMExcwcCbAcIQxBEUgDEdBQcJSBE2GO4PU6IJHASxS4NGER4p28YWIAlikwKMJjxTt4gsRBbBIgUcTHini4wsAwMmIvYZODL0AAAAASUVORK5CYII=);\ background-position: 0px -48px;\ background-repeat: no-repeat;\ }"; _head.appendChild(style4); } asc_docs_api.prototype.CreateComponents = function() { this.CreateCSS(); var _main_border_style = "border-bottom-width: 1px;border-bottom-color:" + GlobalSkin.BorderSplitterColor + "; border-bottom-style: solid;"; var _thumbnail_style_right = "border-right-width: 1px;border-right-color:" + GlobalSkin.BorderSplitterColor + "; border-right-style: solid;"; if (!GlobalSkin.SupportNotes) { _main_border_style = ""; _thumbnail_style_right = ""; } var _innerHTML = "
\ \ \
\
\
\
\
\
\ \ \
\
\ \
\
\ \ \ \
\
\
\
\
\
\
\
\
\
\
\
\
\
\
"; if (true) { _innerHTML += "
\ \
\
\
\
"; } var element = document.getElementById(this.HtmlElementName); if (element != null) { if (GlobalSkin.Name == "flat") element.style.backgroundColor = GlobalSkin.BackgroundColorThumbnails; element.innerHTML = _innerHTML; } } asc_docs_api.prototype.InitEditor = function() { this.WordControl.m_oLogicDocument = new CPresentation(this.WordControl.m_oDrawingDocument); this.WordControl.m_oDrawingDocument.m_oLogicDocument = this.WordControl.m_oLogicDocument; } asc_docs_api.prototype.SetInterfaceDrawImagePlaceShape = function(div_id) { this.WordControl.m_oDrawingDocument.InitGuiCanvasShape(div_id); } asc_docs_api.prototype.SetInterfaceDrawImagePlaceSlide = function(div_id) { this.WordControl.m_oDrawingDocument.InitGuiCanvasSlide(div_id); } asc_docs_api.prototype.SetInterfaceDrawImagePlace = function() {} asc_docs_api.prototype.OpenDocument2 = function(url, gObject) { this.InitEditor(); this.DocumentUrl = url; this.DocumentType = 2; var _loader = new BinaryPPTYLoader(); _loader.Api = this; g_oIdCounter.Set_Load(true); _loader.Load(gObject, this.WordControl.m_oLogicDocument); _loader.Check_TextFit(); this.LoadedObject = 1; g_oIdCounter.Set_Load(false); this.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.Open); this.FontLoader.LoadEmbeddedFonts(this.DocumentUrl, this.WordControl.m_oLogicDocument.EmbeddedFonts); this.FontLoader.LoadDocumentFonts(this.WordControl.m_oLogicDocument.Fonts, false); this.ParcedDocument = true; g_oIdCounter.Set_Load(false); if (this.isStartCoAuthoringOnEndLoad) { this.CoAuthoringApi.onStartCoAuthoring(true); this.isStartCoAuthoringOnEndLoad = false; } if (this.isMobileVersion) { window.USER_AGENT_SAFARI_MACOS = false; PASTE_ELEMENT_ID = "wrd_pastebin"; ELEMENT_DISPAY_STYLE = "none"; } if (window.USER_AGENT_SAFARI_MACOS) setInterval(SafariIntervalFocus, 10); } asc_docs_api.prototype.get_DocumentName = function() { return this.DocumentName; } asc_docs_api.prototype.OfflineAppDocumentStartLoad = function() { var scriptElem = document.createElement('script'); if (scriptElem.readyState) { scriptElem.onreadystatechange = function () { if (this.readyState == 'complete' || this.readyState == 'loaded') { scriptElem.onreadystatechange = null; setTimeout(editor.OfflineAppDocumentEndLoad, 0); } } } scriptElem.onload = scriptElem.onerror = this.OfflineAppDocumentEndLoad; scriptElem.setAttribute('src',documentUrl + "editor.js"); scriptElem.setAttribute('type','text/javascript'); document.getElementsByTagName('head')[0].appendChild(scriptElem); } asc_docs_api.prototype.OfflineAppDocumentEndLoad = function() { if (undefined == window["editor_bin"]) return; editor.OpenDocument2(documentUrl, window["editor_bin"]); //callback editor.DocumentOrientation = (null == editor.WordControl.m_oLogicDocument) ? true : !editor.WordControl.m_oLogicDocument.Orientation; } // Callbacks /* все имена callback'оф начинаются с On. Пока сделаны: OnBold, OnItalic, OnUnderline, OnTextPrBaseline(возвращается расположение строки - supstring, superstring, baseline), OnPrAlign(выравнивание по ширине, правому краю, левому краю, по центру), OnListType( возвращается CListType ) фейк-функции ожидающие TODO: Print,Undo,Redo,Copy,Cut,Paste,Share,Save,Download & callbacks OnFontName, OnFontSize, OnLineSpacing OnFocusObject( возвращается массив CSelectedObject ) OnInitEditorStyles( возвращается CStylesPainter ) OnSearchFound( возвращается CSearchResult ); OnParaSpacingLine( возвращается CParagraphSpacing ) OnLineSpacing( не используется? ) OnTextColor( возвращается CColor ) OnTextHightLight( возвращается CColor ) OnInitEditorFonts( возвращается массив объектов СFont ) OnFontFamily( возвращается CTextFontFamily ) */ var _callbacks = {}; asc_docs_api.prototype.asc_registerCallback = function(name, callback) { if (!_callbacks.hasOwnProperty(name)) _callbacks[name] = [] _callbacks[name].push(callback); } asc_docs_api.prototype.asc_unregisterCallback = function(name, callback) { if (_callbacks.hasOwnProperty(name)) { for (var i = _callbacks[name].length - 1; i >= 0 ; --i) { if (_callbacks[name][i] == callback) _callbacks[name].splice(i, 1); } } _callbacks[name] = [] _callbacks[name].push(callback); } asc_docs_api.prototype.asc_fireCallback = function(name) { if (_callbacks.hasOwnProperty(name)) { for (var i = 0; i < _callbacks[name].length; ++i) { _callbacks[name][i].apply(this || window, Array.prototype.slice.call(arguments, 1)); } return true; } return false; } asc_docs_api.prototype.asc_checkNeedCallback = function(name) { if (_callbacks.hasOwnProperty(name)) { return true; } return false; } // get functions asc_docs_api.prototype.get_TextProps = function() { var Doc = this.WordControl.m_oLogicDocument; var ParaPr = Doc.Get_Paragraph_ParaPr(); var TextPr = Doc.Get_Paragraph_TextPr(); // return { ParaPr: ParaPr, TextPr : TextPr }; return new CParagraphAndTextProp (ParaPr, TextPr); // uncomment if this method will be used externally. 20/03/2012 uncommented for testers } // ------- // тут методы, замены евентов asc_docs_api.prototype.get_PropertyEditorShapes = function() { var ret = [g_oAutoShapesGroups, g_oAutoShapesTypes]; return ret; } asc_docs_api.prototype.get_PropertyEditorFonts = function() { return this._gui_fonts; } asc_docs_api.prototype.get_PropertyStandartTextures = function() { var _count = g_oUserTexturePresets.length; var arr = new Array(_count); for (var i = 0; i < _count; ++i) { arr[i] = new CAscTexture(); arr[i].Id = i; arr[i].Image = g_oUserTexturePresets[i]; } return arr; } asc_docs_api.prototype.get_PropertyEditorThemes = function() { var ret = [this._gui_editor_themes, this._gui_document_themes]; return ret; } // ------- // ------- asc_docs_api.prototype.get_ContentCount = function() { return this.WordControl.m_oLogicDocument.Content.length; } asc_docs_api.prototype.select_Element = function(Index) { var Document = this.WordControl.m_oLogicDocument; if ( true === Document.Selection.Use ) Document.Selection_Remove(); Document.DrawingDocument.SelectEnabled(true); Document.DrawingDocument.TargetEnd(); Document.Selection.Use = true; Document.Selection.Start = false; Document.Selection.Flag = selectionflag_Common; Document.Selection.StartPos = Index; Document.Selection.EndPos = Index; Document.Content[Index].Selection.Use = true; Document.Content[Index].Selection.StartPos = Document.Content[Index].Internal_GetStartPos(); Document.Content[Index].Selection.EndPos = Document.Content[Index].Content.length - 1; Document.Selection_Draw(); } asc_docs_api.prototype.UpdateTextPr = function(TextPr) { if ( "undefined" != typeof(TextPr) ) { if (TextPr.Color !== undefined) { this.WordControl.m_oDrawingDocument.TargetCursorColor.R = TextPr.Color.r; this.WordControl.m_oDrawingDocument.TargetCursorColor.G = TextPr.Color.g; this.WordControl.m_oDrawingDocument.TargetCursorColor.B = TextPr.Color.b; } if(TextPr.Bold === undefined) TextPr.Bold = false; if(TextPr.Italic === undefined) TextPr.Italic = false; if(TextPr.Underline === undefined) TextPr.Underline = false; if(TextPr.Strikeout === undefined) TextPr.Strikeout = false; if(TextPr.FontFamily === undefined) TextPr.FontFamily = {Index : 0, Name : ""}; if(TextPr.FontSize === undefined) TextPr.FontSize = ""; this.sync_BoldCallBack(TextPr.Bold); this.sync_ItalicCallBack(TextPr.Italic); this.sync_UnderlineCallBack(TextPr.Underline); this.sync_StrikeoutCallBack(TextPr.Strikeout); this.sync_TextPrFontSizeCallBack(TextPr.FontSize); this.sync_TextPrFontFamilyCallBack(TextPr.FontFamily); if (TextPr.VertAlign !== undefined) this.sync_VerticalAlign(TextPr.VertAlign); if (TextPr.Spacing !== undefined) this.sync_TextSpacing(TextPr.Spacing); if (TextPr.DStrikeout !== undefined) this.sync_TextDStrikeout(TextPr.DStrikeout); if (TextPr.Caps !== undefined) this.sync_TextCaps(TextPr.Caps); if (TextPr.SmallCaps !== undefined) this.sync_TextSmallCaps(TextPr.SmallCaps); if (TextPr.Position !== undefined) this.sync_TextPosition(TextPr.Position); if (TextPr.Lang !== undefined) this.sync_TextLangCallBack(TextPr.Lang); if (TextPr.Unifill !== undefined) { this.sync_TextColor2(TextPr.Unifill); } } } asc_docs_api.prototype.sync_TextSpacing = function(Spacing) { this.asc_fireCallback("asc_onTextSpacing", Spacing ); } asc_docs_api.prototype.sync_TextDStrikeout = function(Value) { this.asc_fireCallback("asc_onTextDStrikeout", Value ); } asc_docs_api.prototype.sync_TextCaps = function(Value) { this.asc_fireCallback("asc_onTextCaps", Value ); } asc_docs_api.prototype.sync_TextSmallCaps = function(Value) { this.asc_fireCallback("asc_onTextSmallCaps", Value ); } asc_docs_api.prototype.sync_TextPosition = function(Value) { this.asc_fireCallback("asc_onTextPosition", Value ); } asc_docs_api.prototype.sync_TextLangCallBack = function(Lang) { this.asc_fireCallback("asc_onTextLanguage", Lang.Val ); } asc_docs_api.prototype.sync_VerticalTextAlign = function(align) { this.asc_fireCallback("asc_onVerticalTextAlign", align); } asc_docs_api.prototype.UpdateParagraphProp = function(ParaPr, bParaPr){ ParaPr.StyleName = ""; var TextPr = editor.WordControl.m_oLogicDocument.Get_Paragraph_TextPr(); ParaPr.Subscript = ( TextPr.VertAlign === vertalign_SubScript ? true : false ); ParaPr.Superscript = ( TextPr.VertAlign === vertalign_SuperScript ? true : false ); ParaPr.Strikeout = TextPr.Strikeout; ParaPr.DStrikeout = TextPr.DStrikeout; ParaPr.AllCaps = TextPr.Caps; ParaPr.SmallCaps = TextPr.SmallCaps; ParaPr.TextSpacing = TextPr.Spacing; ParaPr.Position = TextPr.Position; if(ParaPr.Bullet) { var ListType = { Type: -1, SubType: -1 }; if(ParaPr.Bullet && ParaPr.Bullet.bulletType) { switch (ParaPr.Bullet.bulletType.type) { case BULLET_TYPE_BULLET_CHAR: { ListType.Type = 0; ListType.SubType = undefined; switch(ParaPr.Bullet.bulletType.Char) { case "•": { ListType.SubType = 1; break; } case "o": { ListType.SubType = 2; break; } case "§": { ListType.SubType = 3; break; } case String.fromCharCode( 0x0076 ): { ListType.SubType = 4; break; } case String.fromCharCode( 0x00D8 ): { ListType.SubType = 5; break; } case String.fromCharCode( 0x00FC ): { ListType.SubType = 6; break; } case String.fromCharCode( 119 ): { ListType.SubType = 7; break; } } break; } case BULLET_TYPE_BULLET_BLIP: { ListType.Type = 0; ListType.SubType = undefined; break; } case BULLET_TYPE_BULLET_AUTONUM: { ListType.Type = 1; ListType.SubType = undefined; if(isRealNumber(ParaPr.Bullet.bulletType.AutoNumType)) { var AutoNumType = g_NumberingArr[ParaPr.Bullet.bulletType.AutoNumType] - 99; if(AutoNumType > 0 && AutoNumType < 9) { ListType.SubType = AutoNumType; } } break; } } } ParaPr.ListType = ListType; } else { ParaPr.ListType = {Type: -1, SubType: -1}; } this.sync_ParaSpacingLine( ParaPr.Spacing ); this.Update_ParaInd(ParaPr.Ind); this.sync_PrAlignCallBack(ParaPr.Jc); this.sync_ParaStyleName(ParaPr.StyleName); this.sync_ListType(ParaPr.ListType); if(!(bParaPr === true)) this.sync_PrPropCallback(ParaPr); } /*----------------------------------------------------------------*/ /*functions for working with clipboard, document*/ /*TODO: Print,Undo,Redo,Copy,Cut,Paste,Share,Save,DownloadAs,ReturnToDocuments(вернуться на предыдущую страницу) & callbacks for these functions*/ asc_docs_api.prototype.asc_Print = function(){ this.sync_StartAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.Print); var editor = this; _downloadAs(this, c_oAscFileType.PDF, function(incomeObject){ if(null != incomeObject && "save" == incomeObject["type"]) editor.processSavedFile(incomeObject["data"], false); editor.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.Print);}, true); } asc_docs_api.prototype.Undo = function(){ this.WordControl.m_oLogicDocument.Document_Undo(); } asc_docs_api.prototype.Redo = function(){ this.WordControl.m_oLogicDocument.Document_Redo(); } asc_docs_api.prototype.Copy = function(){ return Editor_Copy_Button(this); } asc_docs_api.prototype.Update_ParaTab = function(Default_Tab, ParaTabs){ this.WordControl.m_oDrawingDocument.Update_ParaTab(Default_Tab, ParaTabs); } asc_docs_api.prototype.Cut = function(){ return Editor_Copy_Button(this, true) } asc_docs_api.prototype.Paste = function(){ if (false === this.WordControl.m_oLogicDocument.Document_Is_SelectionLocked(changestype_Drawing_Props)) { if (!window.GlobalPasteFlag) { if (!window.USER_AGENT_SAFARI_MACOS) { window.GlobalPasteFlag = true; return Editor_Paste_Button(this); } else { if (0 === window.GlobalPasteFlagCounter) { SafariIntervalFocus(); window.GlobalPasteFlag = true; return Editor_Paste_Button(this); } } } } }; asc_docs_api.prototype.Share = function(){ }; function OnSave_Callback(e) { if (false == e["saveLock"]) { editor.sync_StartAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.Save); if (c_oAscCollaborativeMarksShowType.LastChanges === editor.CollaborativeMarksShowType) CollaborativeEditing.Clear_CollaborativeMarks(); // Принимаем чужие изменения CollaborativeEditing.Apply_Changes(); editor.CoAuthoringApi.onUnSaveLock = function () { editor.CoAuthoringApi.onUnSaveLock = null; // Выставляем, что документ не модифицирован editor.SetUnchangedDocument(); editor.canSave = true; editor.sync_EndAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.Save); // Обновляем состояние возможности сохранения документа editor._onUpdateDocumentCanSave(); }; // Пересылаем свои изменения CollaborativeEditing.Send_Changes(); } else { var nState = editor.CoAuthoringApi.get_state(); if (3 === nState) { // Отключаемся от сохранения, соединение потеряно editor.canSave = true; } else { setTimeout(function () { editor.CoAuthoringApi.askSaveChanges(OnSave_Callback); }, 1000); } } } asc_docs_api.prototype.asc_Save = function () { // waitSave - означает, что сейчас происходит вставка данных и сохранять до окончания нельзя if (false === this.waitSave && true === this.canSave) { this.canSave = false; this.CoAuthoringApi.askSaveChanges(OnSave_Callback); } }; asc_docs_api.prototype.processSavedFile = function(url, bInner){ if(bInner) editor.asc_fireCallback("asc_onSaveUrl", url, function(hasError){}); else { getFile(url); } }; asc_docs_api.prototype.asc_DownloadAs = function(typeFile){//передаем число соответствующее своему формату. this.sync_StartAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.DownloadAs); var editor = this; _downloadAs(this, typeFile, function(incomeObject){ if(null != incomeObject && "save" == incomeObject["type"]) editor.processSavedFile(incomeObject["data"], false); editor.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.DownloadAs);}, true); }; asc_docs_api.prototype.Resize = function(){ if (false === this.bInit_word_control) return; this.WordControl.OnResize(false); }; asc_docs_api.prototype.AddURL = function(url){ } asc_docs_api.prototype.Help = function(){ } asc_docs_api.prototype.ClearCache = function(){ var rData = { "id":documentId, "userid": documentUserId, "vkey": documentVKey, "format": documentFormat, "c":"cc"}; sendCommand(editor, function(){}, rData); } asc_docs_api.prototype.startGetDocInfo = function(){ /* Возвращаем объект следующего вида: { PageCount: 12, WordsCount: 2321, ParagraphCount: 45, SymbolsCount: 232345, SymbolsWSCount: 34356 } */ this.sync_GetDocInfoStartCallback(); this.WordControl.m_oLogicDocument.Statistics_Start(); } asc_docs_api.prototype.stopGetDocInfo = function(){ this.sync_GetDocInfoStopCallback(); this.WordControl.m_oLogicDocument.Statistics_Stop(); } asc_docs_api.prototype.sync_DocInfoCallback = function(obj){ this.asc_fireCallback( "asc_onDocInfo", new CDocInfoProp(obj)); } asc_docs_api.prototype.sync_GetDocInfoStartCallback = function(){ this.asc_fireCallback("asc_onGetDocInfoStart"); } asc_docs_api.prototype.sync_GetDocInfoStopCallback = function(){ this.asc_fireCallback("asc_onGetDocInfoStop"); } asc_docs_api.prototype.sync_GetDocInfoEndCallback = function(){ this.asc_fireCallback("asc_onGetDocInfoEnd"); } asc_docs_api.prototype.sync_CanUndoCallback = function(bCanUndo) { this.asc_fireCallback("asc_onCanUndo", bCanUndo); } asc_docs_api.prototype.sync_CanRedoCallback = function(bCanRedo) { this.asc_fireCallback("asc_onCanRedo", bCanRedo); } /*callbacks*/ /*asc_docs_api.prototype.sync_CursorLockCallBack = function(isLock){ this.asc_fireCallback("asc_onCursorLock",isLock); }*/ asc_docs_api.prototype.sync_PrintCallBack = function(){ this.asc_fireCallback("asc_onPrint"); } asc_docs_api.prototype.sync_UndoCallBack = function(){ this.asc_fireCallback("asc_onUndo"); } asc_docs_api.prototype.sync_RedoCallBack = function(){ this.asc_fireCallback("asc_onRedo"); } asc_docs_api.prototype.sync_CopyCallBack = function(){ this.asc_fireCallback("asc_onCopy"); } asc_docs_api.prototype.sync_CutCallBack = function(){ this.asc_fireCallback("asc_onCut"); } asc_docs_api.prototype.sync_PasteCallBack = function(){ this.asc_fireCallback("asc_onPaste"); } asc_docs_api.prototype.sync_ShareCallBack = function(){ this.asc_fireCallback("asc_onShare"); } asc_docs_api.prototype.sync_SaveCallBack = function(){ this.asc_fireCallback("asc_onSave"); } asc_docs_api.prototype.sync_DownloadAsCallBack = function(){ this.asc_fireCallback("asc_onDownload"); } asc_docs_api.prototype.sync_StartAction = function(type, id){ //this.AsyncAction this.asc_fireCallback("asc_onStartAction", type, id); // по идее нужен счетчик, но перед выпуском делаем верняк if (c_oAscAsyncActionType.BlockInteraction == type) this.IsLongIteration = true; } asc_docs_api.prototype.sync_EndAction = function(type, id){ //this.AsyncAction this.asc_fireCallback("asc_onEndAction", type, id); if (c_oAscAsyncActionType.BlockInteraction == type) this.IsLongIteration = false; } asc_docs_api.prototype.sync_AddURLCallback = function(){ this.asc_fireCallback("asc_onAddURL"); } asc_docs_api.prototype.sync_ErrorCallback = function(errorID,errorLevel){ this.asc_fireCallback("asc_onError",errorID,errorLevel); } asc_docs_api.prototype.sync_HelpCallback = function(url){ this.asc_fireCallback("asc_onHelp",url); } asc_docs_api.prototype.sync_UpdateZoom = function(zoom){ this.asc_fireCallback("asc_onZoom", zoom); } asc_docs_api.prototype.sync_StatusMessage = function(message){ this.asc_fireCallback("asc_onMessage", message); } asc_docs_api.prototype.ClearPropObjCallback = function(prop){//колбэк предшествующий приходу свойств объекта, prop а всякий случай this.asc_fireCallback("asc_onClearPropObj", prop); } asc_docs_api.prototype.CollectHeaders = function(){ this.sync_ReturnHeadersCallback(_fakeHeaders); } asc_docs_api.prototype.GetActiveHeader = function(){ } asc_docs_api.prototype.gotoHeader = function(page, X, Y){ this.goToPage(page); } asc_docs_api.prototype.sync_ChangeActiveHeaderCallback = function (position, header){ this.asc_fireCallback("asc_onChangeActiveHeader", position, new CHeader (header)); } asc_docs_api.prototype.sync_ReturnHeadersCallback = function (headers){ var _headers = []; for (var i = 0; i < headers.length; i++) { _headers[i] = new CHeader (headers[i]); } this.asc_fireCallback("asc_onReturnHeaders", _headers); } /*----------------------------------------------------------------*/ /*functions for working with search*/ /* структура поиска, предварительно, выглядит так { text: "...слово поиска...", pageNumber: 0, //содержит номер страницы, где находится искомая последовательность X: 0,//координаты по OX начала последовательности на данной страницы Y: 0//координаты по OY начала последовательности на данной страницы } */ asc_docs_api.prototype.startSearchText = function(what){// "what" means word(s) what we search this._searchCur = 0; this.sync_SearchStartCallback(); if (null != this.WordControl.m_oLogicDocument) this.WordControl.m_oLogicDocument.Search_Start(what); else this.WordControl.m_oDrawingDocument.m_oDocumentRenderer.StartSearch(what); } asc_docs_api.prototype.goToNextSearchResult = function() { this.WordControl.m_oLogicDocument.goToNextSearchResult(); } asc_docs_api.prototype.gotoSearchResultText = function(navigator){//переход к результату. this.WordControl.m_oDrawingDocument.CurrentSearchNavi = navigator; this.WordControl.ToSearchResult(); } asc_docs_api.prototype.stopSearchText = function(){ this.sync_SearchStopCallback(); this.WordControl.m_oLogicDocument.Search_Stop(); } asc_docs_api.prototype.findText = function(text, isNext){ var SearchEngine = editor.WordControl.m_oLogicDocument.Search(text, {MatchCase: false}); var Id = this.WordControl.m_oLogicDocument.Search_GetId( isNext ); if ( null != Id ) this.WordControl.m_oLogicDocument.Search_Select( Id ); return SearchEngine.Count; //return this.WordControl.m_oLogicDocument.findText(text, scanForward); } asc_docs_api.prototype.asc_searchEnabled = function(bIsEnabled) { // пустой метод } asc_docs_api.prototype.asc_findText = function(text, isNext, isMatchCase) { return this.WordControl.m_oLogicDocument.findText(text, isNext === true); } // returns: CSearchResult asc_docs_api.prototype.sync_SearchFoundCallback = function(obj){ this.asc_fireCallback("asc_onSearchFound", new CSearchResult(obj)); } asc_docs_api.prototype.sync_SearchStartCallback = function(){ this.asc_fireCallback("asc_onSearchStart"); } asc_docs_api.prototype.sync_SearchStopCallback = function(){ this.asc_fireCallback("asc_onSearchStop"); } asc_docs_api.prototype.sync_SearchEndCallback = function(){ this.asc_fireCallback("asc_onSearchEnd"); } /*----------------------------------------------------------------*/ /*functions for working with font*/ /*setters*/ asc_docs_api.prototype.put_TextPrFontName = function(name) { var loader = window.g_font_loader; var nIndex = loader.map_font_index[name]; var fontinfo = loader.fontInfos[nIndex]; var isasync = loader.LoadFont(fontinfo); if (false === isasync) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Paragraph_Add( new ParaTextPr( { FontFamily : { Name : fontinfo.Name , Index : nIndex } } ) ); } } asc_docs_api.prototype.put_TextPrFontSize = function(size) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Paragraph_Add( new ParaTextPr( { FontSize : Math.min(size, 100) } ) ); } asc_docs_api.prototype.put_TextPrBold = function(value) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Paragraph_Add( new ParaTextPr( { Bold : value } ) ); } asc_docs_api.prototype.put_TextPrItalic = function(value) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Paragraph_Add( new ParaTextPr( { Italic : value } ) ); } asc_docs_api.prototype.put_TextPrUnderline = function(value) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Paragraph_Add( new ParaTextPr( { Underline : value } ) ); } asc_docs_api.prototype.put_TextPrStrikeout = function(value) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Paragraph_Add( new ParaTextPr( { Strikeout : value } ) ); } asc_docs_api.prototype.put_PrLineSpacing = function(Type, Value) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Set_ParagraphSpacing( { LineRule : Type, Line : Value } ); } asc_docs_api.prototype.put_LineSpacingBeforeAfter = function(type,value)//"type == 0" means "Before", "type == 1" means "After" { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); switch (type) { case 0: this.WordControl.m_oLogicDocument.Set_ParagraphSpacing( {Before : value}); break; case 1: this.WordControl.m_oLogicDocument.Set_ParagraphSpacing( {After : value}); break; } } asc_docs_api.prototype.FontSizeIn = function() { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Paragraph_IncDecFontSize(true); } asc_docs_api.prototype.FontSizeOut = function() { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Paragraph_IncDecFontSize(false); } asc_docs_api.prototype.put_AlignBySelect = function(val) { this.bAlignBySelected = val; } asc_docs_api.prototype.get_AlignBySelect = function() { return this.bAlignBySelected; } /*callbacks*/ asc_docs_api.prototype.sync_BoldCallBack = function(isBold){ this.asc_fireCallback("asc_onBold",isBold); } asc_docs_api.prototype.sync_ItalicCallBack = function(isItalic){ this.asc_fireCallback("asc_onItalic",isItalic); } asc_docs_api.prototype.sync_UnderlineCallBack = function(isUnderline){ this.asc_fireCallback("asc_onUnderline",isUnderline); } asc_docs_api.prototype.sync_StrikeoutCallBack = function(isStrikeout){ this.asc_fireCallback("asc_onStrikeout",isStrikeout); } asc_docs_api.prototype.sync_TextPrFontFamilyCallBack = function(FontFamily){ this.asc_fireCallback("asc_onFontFamily", new CTextFontFamily( FontFamily )); } asc_docs_api.prototype.sync_TextPrFontSizeCallBack = function(FontSize){ this.asc_fireCallback("asc_onFontSize",FontSize); } asc_docs_api.prototype.sync_PrLineSpacingCallBack = function(LineSpacing){ this.asc_fireCallback("asc_onLineSpacing", new CParagraphSpacing( LineSpacing ) ); } asc_docs_api.prototype.sync_InitEditorFonts = function(gui_fonts){ this._gui_fonts = gui_fonts; } asc_docs_api.prototype.sync_InitEditorThemes = function(gui_editor_themes, gui_document_themes){ this._gui_editor_themes = gui_editor_themes; this._gui_document_themes = gui_document_themes; this.asc_fireCallback("asc_onInitEditorStyles", [gui_editor_themes, gui_document_themes]); } asc_docs_api.prototype.sync_InitEditorTableStyles = function(styles){ this.asc_fireCallback("asc_onInitTableTemplates",styles); }; /*----------------------------------------------------------------*/ /*functions for working with paragraph*/ /*setters*/ // Right = 0; Left = 1; Center = 2; Justify = 3; or using enum that written above /* структура для параграфа Ind : { Left : 0, // Левый отступ Right : 0, // Правый отступ FirstLine : 0 // Первая строка } Spacing : { Line : 1.15, // Расстояние между строками внутри абзаца LineRule : linerule_Auto, // Тип расстрояния между строками Before : 0, // Дополнительное расстояние до абзаца After : 10 * g_dKoef_pt_to_mm // Дополнительное расстояние после абзаца }, KeepLines : false, // переносить параграф на новую страницу, // если на текущей он целиком не убирается PageBreakBefore : false */ asc_docs_api.prototype.paraApply = function(Props) { var _presentation = editor.WordControl.m_oLogicDocument; if(_presentation.Slides[_presentation.CurPage]) { var graphicObjects = _presentation.Slides[_presentation.CurPage].graphicObjects; graphicObjects.checkSelectedObjectsAndCallback(function(){ if ( "undefined" != typeof(Props.Ind) && null != Props.Ind ) graphicObjects.setParagraphIndent( Props.Ind ); if ( "undefined" != typeof(Props.Jc) && null != Props.Jc ) graphicObjects.setParagraphAlign( Props.Jc ); if ( "undefined" != typeof(Props.Spacing) && null != Props.Spacing ) graphicObjects.setParagraphSpacing( Props.Spacing ); if ( undefined != Props.Tabs ) { var Tabs = new CParaTabs(); Tabs.Set_FromObject( Props.Tabs.Tabs ); graphicObjects.setParagraphTabs( Tabs ); } if ( undefined != Props.DefaultTab ) { _presentation.Set_DocumentDefaultTab( Props.DefaultTab ); } var TextPr = new CTextPr(); if ( true === Props.Subscript ) TextPr.VertAlign = vertalign_SubScript; else if ( true === Props.Superscript ) TextPr.VertAlign = vertalign_SuperScript; else if ( false === Props.Superscript || false === Props.Subscript ) TextPr.VertAlign = vertalign_Baseline; if ( undefined != Props.Strikeout ) { TextPr.Strikeout = Props.Strikeout; TextPr.DStrikeout = false; } if ( undefined != Props.DStrikeout ) { TextPr.DStrikeout = Props.DStrikeout; if ( true === TextPr.DStrikeout ) TextPr.Strikeout = false; } if ( undefined != Props.SmallCaps ) { TextPr.SmallCaps = Props.SmallCaps; TextPr.AllCaps = false; } if ( undefined != Props.AllCaps ) { TextPr.Caps = Props.AllCaps; if ( true === TextPr.AllCaps ) TextPr.SmallCaps = false; } if ( undefined != Props.TextSpacing ) TextPr.Spacing = Props.TextSpacing; if ( undefined != Props.Position ) TextPr.Position = Props.Position; graphicObjects.paragraphAdd( new ParaTextPr(TextPr) ); _presentation.Recalculate(); _presentation.Document_UpdateInterfaceState(); }, []); } } asc_docs_api.prototype.put_PrAlign = function(value) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Set_ParagraphAlign(value); } // 0- baseline, 2-subscript, 1-superscript asc_docs_api.prototype.put_TextPrBaseline = function(value) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Paragraph_Add( new ParaTextPr( { VertAlign : value } ) ); } /* Маркированный список Type = 0 нет - SubType = -1 черная точка - SubType = 1 круг - SubType = 2 квадрат - SubType = 3 картинка - SubType = -1 4 ромба - SubType = 4 ч/б стрелка - SubType = 5 галка - SubType = 6 Нумерованный список Type = 1 нет - SubType = -1 1. - SubType = 1 1) - SubType = 2 I. - SubType = 3 A. - SubType = 4 a) - SubType = 5 a. - SubType = 6 i. - SubType = 7 Многоуровневый список Type = 2 нет - SubType = -1 1)a)i) - SubType = 1 1.1.1 - SubType = 2 маркированный - SubType = 3 */ asc_docs_api.prototype.put_ListType = function(type, subtype) { var NumberInfo = { Type : 0, SubType : -1 }; NumberInfo.Type = type; NumberInfo.SubType = subtype; this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Set_ParagraphNumbering( NumberInfo ); } asc_docs_api.prototype.put_Style = function(name) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Set_ParagraphStyle(name); } asc_docs_api.prototype.put_ShowSnapLines = function(isShow) { this.ShowSnapLines = isShow; } asc_docs_api.prototype.get_ShowSnapLines = function() { return this.ShowSnapLines; } asc_docs_api.prototype.put_ShowParaMarks = function(isShow){ this.ShowParaMarks = isShow; this.WordControl.OnRePaintAttack(); return this.ShowParaMarks; } asc_docs_api.prototype.get_ShowParaMarks = function(){ return this.ShowParaMarks; } asc_docs_api.prototype.put_ShowTableEmptyLine = function(isShow) { this.isShowTableEmptyLine = isShow; this.WordControl.OnRePaintAttack(); return this.isShowTableEmptyLine; } asc_docs_api.prototype.get_ShowTableEmptyLine = function(){ return this.isShowTableEmptyLine; } asc_docs_api.prototype.put_KeepLines = function(isKeepLines){ this.isKeepLinesTogether = isKeepLines; this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Set_ParagraphKeepLines(isKeepLines); this.sync_KeepLinesCallback(isKeepLines); } asc_docs_api.prototype.put_AddSpaceBetweenPrg = function(isSpacePrg){ this.isAddSpaceBetweenPrg = isSpacePrg; this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Set_ParagraphContextualSpacing(isSpacePrg); } asc_docs_api.prototype.put_ShapeFillColor = function(is_flag, r, g, b) { if (false === is_flag) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); var Unifill = new CUniFill(); Unifill.fill = new CNoFill(); Unifill.calculate(); this.WordControl.m_oLogicDocument.changeShapeFill( Unifill ); } else { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); var Unifill = new CUniFill(); Unifill.fill = new CSolidFill(); Unifill.fill.color = new CRGBColor(); Unifill.fill.color.RGBA = { R : r, G : g, B: b, A : 255}; Unifill.calculate(); this.WordControl.m_oLogicDocument.changeShapeFill( Unifill ); } } asc_docs_api.prototype.ShapeApply = function(prop) { // нужно определить, картинка это или нет var image_url = ""; prop.Width = prop.w; prop.Height = prop.h; if (prop.fill != null) { if (prop.fill.fill != null && prop.fill.type == c_oAscFill.FILL_TYPE_BLIP) { image_url = prop.fill.fill.get_url(); var _tx_id = prop.fill.fill.get_texture_id(); if (null != _tx_id && 0 <= _tx_id && _tx_id < g_oUserTexturePresets.length) { image_url = g_oUserTexturePresets[_tx_id]; } } } if (image_url != "") { var _image = this.ImageLoader.LoadImage(image_url, 1); var sFindString = editor.DocumentUrl + "media/"; if(0 == image_url.indexOf(sFindString)) { image_url = image_url.substring(sFindString.length); prop.fill.fill.put_url(image_url); // erase documentUrl } if (null != _image) { var doc = this.WordControl.m_oLogicDocument; this.WordControl.m_oLogicDocument.ShapeApply(prop); this.WordControl.m_oDrawingDocument.DrawImageTextureFillShape(image_url); } else { this.sync_StartAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.LoadImage); var oProp = prop; this.asyncImageEndLoaded2 = function(_image) { this.WordControl.m_oLogicDocument.ShapeApply(oProp); this.WordControl.m_oDrawingDocument.DrawImageTextureFillShape(image_url); this.sync_EndAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.LoadImage); this.asyncImageEndLoaded2 = null; } } } else { if(!this.noCreatePoint || this.exucuteHistory) { if( !this.noCreatePoint && !this.exucuteHistory && this.exucuteHistoryEnd) { var slide = this.WordControl.m_oLogicDocument.Slides[this.WordControl.m_oLogicDocument.CurPage]; slide.graphicObjects.applyDrawingProps(prop); slide.graphicObjects.recalculate(); this.WordControl.m_oDrawingDocument.OnRecalculatePage(this.WordControl.m_oLogicDocument.CurPage, slide); this.WordControl.m_oDrawingDocument.OnEndRecalculate(); this.exucuteHistoryEnd = false; } else { this.WordControl.m_oLogicDocument.ShapeApply(prop); } if(this.exucuteHistory) { this.exucuteHistory = false; } } else { if(this.WordControl.m_oLogicDocument.Slides[this.WordControl.m_oLogicDocument.CurPage]) { ExecuteNoHistory(function(){ var slide = this.WordControl.m_oLogicDocument.Slides[this.WordControl.m_oLogicDocument.CurPage]; slide.graphicObjects.applyDrawingProps(prop); slide.graphicObjects.recalculate(); this.WordControl.m_oDrawingDocument.OnRecalculatePage(this.WordControl.m_oLogicDocument.CurPage, slide); this.WordControl.m_oDrawingDocument.OnEndRecalculate(); }, this, []); } } } } asc_docs_api.prototype.setStartPointHistory = function(){ this.noCreatePoint = true; this.exucuteHistory = true; }; asc_docs_api.prototype.setEndPointHistory = function(){ this.noCreatePoint = false; this.exucuteHistoryEnd = true; }; asc_docs_api.prototype.SetSlideProps = function(prop) { if (null == prop) return; var arr_ind = this.WordControl.Thumbnails.GetSelectedArray(); var _back_fill = prop.get_background(); if (_back_fill) { if (_back_fill.get_type() == c_oAscFill.FILL_TYPE_NOFILL) { var bg = new CBg(); bg.bgPr = new CBgPr(); bg.bgPr.Fill = CorrectUniFill(_back_fill, null); this.WordControl.m_oLogicDocument.changeBackground(bg, arr_ind); return; } var _old_fill = this.WordControl.m_oLogicDocument.Slides[this.WordControl.m_oLogicDocument.CurPage].backgroundFill; if (isRealObject(_old_fill)) _old_fill = _old_fill.createDuplicate(); var bg = new CBg(); bg.bgPr = new CBgPr(); bg.bgPr.Fill = CorrectUniFill(_back_fill, _old_fill); var image_url = ""; if (bg.bgPr.Fill != null && bg.bgPr.Fill.fill != null && bg.bgPr.Fill.fill.type == FILL_TYPE_BLIP) { image_url = bg.bgPr.Fill.fill.RasterImageId; } if (image_url != "" && _back_fill.fill && _back_fill.fill.url != "" && _back_fill.fill.url != null) { var _image = this.ImageLoader.LoadImage(image_url, 1); var sFindString = editor.DocumentUrl + "media/"; if(0 == image_url.indexOf(sFindString)) { image_url = image_url.substring(sFindString.length); bg.bgPr.Fill.fill.RasterImageId = image_url; // erase documentUrl } if (null != _image) { if (bg.bgPr.Fill != null && bg.bgPr.Fill.fill != null && bg.bgPr.Fill.fill.type == c_oAscFill.FILL_TYPE_BLIP) { this.WordControl.m_oDrawingDocument.DrawImageTextureFillSlide(bg.bgPr.Fill.fill.RasterImageId); } this.WordControl.m_oLogicDocument.changeBackground(bg, arr_ind); } else { this.sync_StartAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.LoadImage); var oProp = prop; this.asyncImageEndLoaded2 = function(_image) { if (bg.bgPr.Fill != null && bg.bgPr.Fill.fill != null && bg.bgPr.Fill.fill.type == c_oAscFill.FILL_TYPE_BLIP) { this.WordControl.m_oDrawingDocument.DrawImageTextureFillSlide(bg.bgPr.Fill.fill.RasterImageId); } this.WordControl.m_oLogicDocument.changeBackground(bg, arr_ind); this.asyncImageEndLoaded2 = null; this.sync_EndAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.LoadImage); } } } else { if (bg.bgPr.Fill != null && bg.bgPr.Fill.fill != null && bg.bgPr.Fill.fill.type == c_oAscFill.FILL_TYPE_BLIP) { this.WordControl.m_oDrawingDocument.DrawImageTextureFillSlide(bg.bgPr.Fill.fill.RasterImageId); } this.WordControl.m_oLogicDocument.changeBackground(bg, arr_ind); } } var _timing = prop.get_timing(); if (_timing) { this.ApplySlideTiming(_timing); } } asc_docs_api.prototype.put_LineCap = function(_cap) { this.WordControl.m_oLogicDocument.putLineCap(_cap); } asc_docs_api.prototype.put_LineJoin = function(_join) { this.WordControl.m_oLogicDocument.putLineJoin(_join); } asc_docs_api.prototype.put_LineBeginStyle = function(_style) { this.WordControl.m_oLogicDocument.putLineBeginStyle(_style); } asc_docs_api.prototype.put_LineBeginSize = function(_size) { this.WordControl.m_oLogicDocument.putLineBeginSize(_size); } asc_docs_api.prototype.put_LineEndStyle = function(_style) { this.WordControl.m_oLogicDocument.putLineEndStyle(_style); } asc_docs_api.prototype.put_LineEndSize = function(_size) { this.WordControl.m_oLogicDocument.putLineEndSize(_size); } asc_docs_api.prototype.put_TextColor2 = function(r, g, b) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Paragraph_Add( new ParaTextPr( { Color : { r : r, g : g, b: b} } ) ); } asc_docs_api.prototype.put_TextColor = function(color) { var _unifill = new CUniFill(); _unifill.fill = new CSolidFill(); _unifill.fill.color = CorrectUniColor(color, _unifill.fill.color, 0); this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Paragraph_Add( new ParaTextPr( { Unifill : _unifill } ) ); } asc_docs_api.prototype.put_ParagraphShade = function(is_flag, r, g, b) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); if (false === is_flag) this.WordControl.m_oLogicDocument.Set_ParagraphShd( { Value : shd_Nil } ); else { this.WordControl.m_oLogicDocument.Set_ParagraphShd( { Value : shd_Clear, Color : { r : r, g : g, b: b} } ); } } asc_docs_api.prototype.put_PrIndent = function(value,levelValue) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Set_ParagraphIndent( { Left : value, ChangeLevel: levelValue } ); } asc_docs_api.prototype.IncreaseIndent = function() { this.WordControl.m_oLogicDocument.Paragraph_IncDecIndent( true ); } asc_docs_api.prototype.DecreaseIndent = function() { this.WordControl.m_oLogicDocument.Paragraph_IncDecIndent( false ); } asc_docs_api.prototype.put_PrIndentRight = function(value) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Set_ParagraphIndent( { Right : value } ); } asc_docs_api.prototype.put_PrFirstLineIndent = function(value) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Set_ParagraphIndent( { FirstLine : value } ); } asc_docs_api.prototype.getFocusObject = function(){//возвратит тип элемента - параграф c_oAscTypeSelectElement.Paragraph, изображение c_oAscTypeSelectElement.Image, таблица c_oAscTypeSelectElement.Table, колонтитул c_oAscTypeSelectElement.Header. } /*callbacks*/ asc_docs_api.prototype.sync_VerticalAlign = function(typeBaseline){ this.asc_fireCallback("asc_onVerticalAlign",typeBaseline); } asc_docs_api.prototype.sync_PrAlignCallBack = function(value){ this.asc_fireCallback("asc_onPrAlign",value); } asc_docs_api.prototype.sync_ListType = function(NumPr){ this.asc_fireCallback("asc_onListType", new CListType( NumPr ) ); } asc_docs_api.prototype.sync_TextColor = function(Color){ this.asc_fireCallback("asc_onTextColor", new CColor( Color.r, Color.g, Color.b )); } asc_docs_api.prototype.sync_TextColor2 = function(unifill) { var _color; if (unifill.fill == null) return; else if (unifill.fill.type == FILL_TYPE_SOLID) { _color = unifill.getRGBAColor(); var color = CreateAscColor(unifill.fill.color); color.put_r(_color.R); color.put_g(_color.G); color.put_b(_color.B); this.asc_fireCallback("asc_onTextColor", color); } else if (unifill.fill.type == FILL_TYPE_GRAD) { _color = unifill.getRGBAColor(); var color = CreateAscColor(unifill.fill.colors[0].color); color.put_r(_color.R); color.put_g(_color.G); color.put_b(_color.B); this.asc_fireCallback("asc_onTextColor", color); } else { _color = unifill.getRGBAColor(); var color = new CAscColor(); color.put_r(_color.R); color.put_g(_color.G); color.put_b(_color.B); this.asc_fireCallback("asc_onTextColor", color); } } asc_docs_api.prototype.sync_TextHighLight = function(HighLight){ this.asc_fireCallback("asc_onTextHighLight", new CColor( HighLight.r, HighLight.g, HighLight.b ) ); } asc_docs_api.prototype.sync_ParaStyleName = function(Name){ this.asc_fireCallback("asc_onParaStyleName",Name); } asc_docs_api.prototype.sync_ParaSpacingLine = function(SpacingLine){ this.asc_fireCallback("asc_onParaSpacingLine", new CParagraphSpacing( SpacingLine )); } asc_docs_api.prototype.sync_PageBreakCallback = function(isBreak){ this.asc_fireCallback("asc_onPageBreak",isBreak); } asc_docs_api.prototype.sync_KeepLinesCallback = function(isKeepLines){ this.asc_fireCallback("asc_onKeepLines",isKeepLines); } asc_docs_api.prototype.sync_ShowParaMarksCallback = function(){ this.asc_fireCallback("asc_onShowParaMarks"); } asc_docs_api.prototype.sync_SpaceBetweenPrgCallback = function(){ this.asc_fireCallback("asc_onSpaceBetweenPrg"); } asc_docs_api.prototype.sync_PrPropCallback = function(prProp){ var _len = this.SelectedObjectsStack.length; if (_len > 0) { if (this.SelectedObjectsStack[_len - 1].Type == c_oAscTypeSelectElement.Paragraph) { this.SelectedObjectsStack[_len - 1].Value = new CParagraphProp( prProp ); return; } } this.SelectedObjectsStack[this.SelectedObjectsStack.length] = new CSelectedObject( c_oAscTypeSelectElement.Paragraph, new CParagraphProp( prProp ) ); } asc_docs_api.prototype.SetDrawImagePlaceParagraph = function(element_id, props) { this.WordControl.m_oDrawingDocument.InitGuiCanvasTextProps(element_id); this.WordControl.m_oDrawingDocument.DrawGuiCanvasTextProps(props); } /*----------------------------------------------------------------*/ /*functions for working with page*/ asc_docs_api.prototype.change_PageOrient = function(isPortrait) { this.WordControl.m_oDrawingDocument.m_bIsUpdateDocSize = true; this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); if (isPortrait) { this.WordControl.m_oLogicDocument.Set_DocumentOrientation(orientation_Portrait); this.DocumentOrientation = orientation_Portrait ? true : false ; } else { this.WordControl.m_oLogicDocument.Set_DocumentOrientation(orientation_Landscape); this.DocumentOrientation = orientation_Landscape ? true : false; } this.sync_PageOrientCallback(!editor.get_DocumentOrientation()); } asc_docs_api.prototype.get_DocumentOrientation = function() { return this.DocumentOrientation; } asc_docs_api.prototype.change_DocSize = function(width,height) { this.WordControl.m_oDrawingDocument.m_bIsUpdateDocSize = true; this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); if (this.DocumentOrientation == orientation_Portrait) this.WordControl.m_oLogicDocument.Set_DocumentPageSize(width, height); else this.WordControl.m_oLogicDocument.Set_DocumentPageSize(height, width); } asc_docs_api.prototype.put_AddPageBreak = function() { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Paragraph_Add( new ParaNewLine( break_Page ) ); } asc_docs_api.prototype.Update_ParaInd = function( Ind ){ var FirstLine = 0; var Left = 0; var Right = 0; if ( "undefined" != typeof(Ind) ) { if("undefined" != typeof(Ind.FirstLine)) { FirstLine = Ind.FirstLine; } if("undefined" != typeof(Ind.Left)) { Left = Ind.Left; } if("undefined" != typeof(Ind.Right)) { Right = Ind.Right; } } this.Internal_Update_Ind_Left(Left); this.Internal_Update_Ind_FirstLine(FirstLine,Left); this.Internal_Update_Ind_Right(Right); } asc_docs_api.prototype.Internal_Update_Ind_FirstLine = function(FirstLine,Left){ if (this.WordControl.m_oHorRuler.m_dIndentLeftFirst != (FirstLine + Left)) { this.WordControl.m_oHorRuler.m_dIndentLeftFirst = (FirstLine + Left); this.WordControl.UpdateHorRuler(); } } asc_docs_api.prototype.Internal_Update_Ind_Left = function(Left){ if (this.WordControl.m_oHorRuler.m_dIndentLeft != Left) { this.WordControl.m_oHorRuler.m_dIndentLeft = Left; this.WordControl.UpdateHorRuler(); } } asc_docs_api.prototype.Internal_Update_Ind_Right = function(Right){ if (this.WordControl.m_oHorRuler.m_dIndentRight != Right) { this.WordControl.m_oHorRuler.m_dIndentRight = Right; this.WordControl.UpdateHorRuler(); } } asc_docs_api.prototype.sync_DocSizeCallback = function(width,height){ this.asc_fireCallback("asc_onDocSize",width,height); } asc_docs_api.prototype.sync_PageOrientCallback = function(isPortrait){ this.asc_fireCallback("asc_onPageOrient",isPortrait); } asc_docs_api.prototype.sync_HeadersAndFootersPropCallback = function(hafProp){ this.SelectedObjectsStack[this.SelectedObjectsStack.length] = new CSelectedObject( c_oAscTypeSelectElement.Header, new CHeaderProp( hafProp ) ); } /*----------------------------------------------------------------*/ /*functions for working with table*/ asc_docs_api.prototype.put_Table = function(col,row) { this.WordControl.m_oLogicDocument.Add_FlowTable(col,row); } asc_docs_api.prototype.addRowAbove = function(count) { var doc = this.WordControl.m_oLogicDocument; if(doc.Document_Is_SelectionLocked(changestype_Drawing_Props) === false) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Table_AddRow(true); } } asc_docs_api.prototype.addRowBelow = function(count) { var doc = this.WordControl.m_oLogicDocument; if(doc.Document_Is_SelectionLocked(changestype_Drawing_Props) === false) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Table_AddRow(false); } } asc_docs_api.prototype.addColumnLeft = function(count) { var doc = this.WordControl.m_oLogicDocument; if(doc.Document_Is_SelectionLocked(changestype_Drawing_Props) === false) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Table_AddCol(true); } } asc_docs_api.prototype.addColumnRight = function(count) { var doc = this.WordControl.m_oLogicDocument; if(doc.Document_Is_SelectionLocked(changestype_Drawing_Props) === false) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Table_AddCol(false); } } asc_docs_api.prototype.remRow = function() { var doc = this.WordControl.m_oLogicDocument; if(doc.Document_Is_SelectionLocked(changestype_Drawing_Props) === false) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Table_RemoveRow(); } } asc_docs_api.prototype.remColumn = function() { var doc = this.WordControl.m_oLogicDocument; if(doc.Document_Is_SelectionLocked(changestype_Drawing_Props) === false) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Table_RemoveCol(); } } asc_docs_api.prototype.remTable = function() { var doc = this.WordControl.m_oLogicDocument; if(doc.Document_Is_SelectionLocked(changestype_Drawing_Props) === false) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Table_RemoveTable(); } } asc_docs_api.prototype.selectRow = function() { this.WordControl.m_oLogicDocument.Table_Select( c_oAscTableSelectionType.Row ); } asc_docs_api.prototype.selectColumn = function() { this.WordControl.m_oLogicDocument.Table_Select( c_oAscTableSelectionType.Column ); } asc_docs_api.prototype.selectCell = function() { this.WordControl.m_oLogicDocument.Table_Select( c_oAscTableSelectionType.Cell ); } asc_docs_api.prototype.selectTable = function() { this.WordControl.m_oLogicDocument.Table_Select( c_oAscTableSelectionType.Table ); } asc_docs_api.prototype.setColumnWidth = function(width){ } asc_docs_api.prototype.setRowHeight = function(height){ } asc_docs_api.prototype.set_TblDistanceFromText = function(left,top,right,bottom){ } asc_docs_api.prototype.CheckBeforeMergeCells = function() { return this.WordControl.m_oLogicDocument.Table_CheckMerge(); } asc_docs_api.prototype.CheckBeforeSplitCells = function() { return this.WordControl.m_oLogicDocument.Table_CheckSplit(); } asc_docs_api.prototype.MergeCells = function() { var doc = this.WordControl.m_oLogicDocument; if(doc.Document_Is_SelectionLocked(changestype_Drawing_Props) === false) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Table_MergeCells(); } } asc_docs_api.prototype.SplitCell = function(Cols, Rows) { var doc = this.WordControl.m_oLogicDocument; if(doc.Document_Is_SelectionLocked(changestype_Drawing_Props) === false) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Table_SplitCell(Cols, Rows); } } asc_docs_api.prototype.widthTable = function(width){ } asc_docs_api.prototype.put_CellsMargin = function(left,top,right,bottom){ } asc_docs_api.prototype.set_TblWrap = function(type){ } asc_docs_api.prototype.set_TblIndentLeft = function(spacing){ } asc_docs_api.prototype.set_Borders = function(typeBorders,size,Color){//если size == 0 то границы нет. } asc_docs_api.prototype.set_TableBackground = function(Color) { } asc_docs_api.prototype.set_AlignCell = function(align){// c_oAscAlignType.RIGHT, c_oAscAlignType.LEFT, c_oAscAlignType.CENTER switch(align) { case c_oAscAlignType.LEFT : break; case c_oAscAlignType.CENTER : break; case c_oAscAlignType.RIGHT : break; } } asc_docs_api.prototype.set_TblAlign = function(align){// c_oAscAlignType.RIGHT, c_oAscAlignType.LEFT, c_oAscAlignType.CENTER switch(align) { case c_oAscAlignType.LEFT : break; case c_oAscAlignType.CENTER : break; case c_oAscAlignType.RIGHT : break; } } asc_docs_api.prototype.set_SpacingBetweenCells = function(isOn,spacing){// c_oAscAlignType.RIGHT, c_oAscAlignType.LEFT, c_oAscAlignType.CENTER if(isOn){ } } /* { TableWidth : null - галочка убрана, либо заданное значение в мм TableSpacing : null - галочка убрана, либо заданное значение в мм TableDefaultMargins : // маргины для всей таблицы(значение по умолчанию) { Left : 1.9, Right : 1.9, Top : 0, Bottom : 0 } CellMargins : { Left : 1.9, (null - неопределенное значение) Right : 1.9, (null - неопределенное значение) Top : 0, (null - неопределенное значение) Bottom : 0, (null - неопределенное значение) Flag : 0 - У всех выделенных ячеек значение берется из TableDefaultMargins 1 - У выделенных ячеек есть ячейки с дефолтовыми значениями, и есть со своими собственными 2 - У всех ячеек свои собственные значения } TableAlignment : 0, 1, 2 (слева, по центру, справа) TableIndent : значение в мм, TableWrappingStyle : 0, 1 (inline, flow) TablePaddings: { Left : 3.2, Right : 3.2, Top : 0, Bottom : 0 } TableBorders : // границы таблицы { Bottom : { Color : { r : 0, g : 0, b : 0 }, Value : border_Single, Size : 0.5 * g_dKoef_pt_to_mm Space : }, Left : { Color : { r : 0, g : 0, b : 0 }, Value : border_Single, Size : 0.5 * g_dKoef_pt_to_mm Space : }, Right : { Color : { r : 0, g : 0, b : 0 }, Value : border_Single, Size : 0.5 * g_dKoef_pt_to_mm Space : }, Top : { Color : { r : 0, g : 0, b : 0 }, Value : border_Single, Size : 0.5 * g_dKoef_pt_to_mm Space : }, InsideH : { Color : { r : 0, g : 0, b : 0 }, Value : border_Single, Size : 0.5 * g_dKoef_pt_to_mm Space : }, InsideV : { Color : { r : 0, g : 0, b : 0 }, Value : border_Single, Size : 0.5 * g_dKoef_pt_to_mm Space : } } CellBorders : // границы выделенных ячеек { ForSelectedCells : true, Bottom : { Color : { r : 0, g : 0, b : 0 }, Value : border_Single, Size : 0.5 * g_dKoef_pt_to_mm Space : }, Left : { Color : { r : 0, g : 0, b : 0 }, Value : border_Single, Size : 0.5 * g_dKoef_pt_to_mm Space : }, Right : { Color : { r : 0, g : 0, b : 0 }, Value : border_Single, Size : 0.5 * g_dKoef_pt_to_mm Space : }, Top : { Color : { r : 0, g : 0, b : 0 }, Value : border_Single, Size : 0.5 * g_dKoef_pt_to_mm Space : }, InsideH : // данного элемента может не быть, если у выделенных ячеек // нет горизонтальных внутренних границ { Color : { r : 0, g : 0, b : 0 }, Value : border_Single, Size : 0.5 * g_dKoef_pt_to_mm Space : }, InsideV : // данного элемента может не быть, если у выделенных ячеек // нет вертикальных внутренних границ { Color : { r : 0, g : 0, b : 0 }, Value : border_Single, Size : 0.5 * g_dKoef_pt_to_mm Space : } } TableBackground : { Value : тип заливки(прозрачная или нет), Color : { r : 0, g : 0, b : 0 } } CellsBackground : null если заливка не определена для выделенных ячеек { Value : тип заливки(прозрачная или нет), Color : { r : 0, g : 0, b : 0 } } Position: { X:0, Y:0 } } */ asc_docs_api.prototype.tblApply = function(obj) { var doc = this.WordControl.m_oLogicDocument; if(doc.Document_Is_SelectionLocked(changestype_Drawing_Props) === false) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); if(obj.CellBorders) { if(obj.CellBorders.Left && obj.CellBorders.Left.Color) { obj.CellBorders.Left.Unifill = CreateUnifillFromAscColor(obj.CellBorders.Left.Color); } if(obj.CellBorders.Top && obj.CellBorders.Top.Color) { obj.CellBorders.Top.Unifill = CreateUnifillFromAscColor(obj.CellBorders.Top.Color); } if(obj.CellBorders.Right && obj.CellBorders.Right.Color) { obj.CellBorders.Right.Unifill = CreateUnifillFromAscColor(obj.CellBorders.Right.Color); } if(obj.CellBorders.Bottom && obj.CellBorders.Bottom.Color) { obj.CellBorders.Bottom.Unifill = CreateUnifillFromAscColor(obj.CellBorders.Bottom.Color); } if(obj.CellBorders.InsideH && obj.CellBorders.InsideH.Color) { obj.CellBorders.InsideH.Unifill = CreateUnifillFromAscColor(obj.CellBorders.InsideH.Color); } if(obj.CellBorders.InsideV && obj.CellBorders.InsideV.Color) { obj.CellBorders.InsideV.Unifill = CreateUnifillFromAscColor(obj.CellBorders.InsideV.Color); } } if(obj.CellsBackground && obj.CellsBackground.Color) { obj.CellsBackground.Unifill = CreateUnifillFromAscColor(obj.CellsBackground.Color); } this.WordControl.m_oLogicDocument.Set_TableProps(obj); } } /*callbacks*/ asc_docs_api.prototype.sync_AddTableCallback = function(){ this.asc_fireCallback("asc_onAddTable"); } asc_docs_api.prototype.sync_AlignCellCallback = function(align){ this.asc_fireCallback("asc_onAlignCell",align); } asc_docs_api.prototype.sync_TblPropCallback = function(tblProp){ this.SelectedObjectsStack[this.SelectedObjectsStack.length] = new CSelectedObject( c_oAscTypeSelectElement.Table, new CTableProp( tblProp )); } asc_docs_api.prototype.sync_TblWrapStyleChangedCallback = function(style){ this.asc_fireCallback("asc_onTblWrapStyleChanged",style); } asc_docs_api.prototype.sync_TblAlignChangedCallback = function(style){ this.asc_fireCallback("asc_onTblAlignChanged",style); } /*----------------------------------------------------------------*/ /*functions for working with images*/ asc_docs_api.prototype.ChangeImageFromFile = function() { this.isImageChangeUrl = true; this.AddImage(); } asc_docs_api.prototype.ChangeShapeImageFromFile = function() { this.isShapeImageChangeUrl = true; this.AddImage(); } asc_docs_api.prototype.ChangeSlideImageFromFile = function() { this.isSlideImageChangeUrl = true; this.AddImage(); } asc_docs_api.prototype.AddImage = function(){ var oImageUploader = document.getElementById("apiImageUpload"); if(!oImageUploader) { var frame = document.createElement("iframe"); frame.name = "apiImageUpload"; frame.id = "apiImageUpload"; frame.setAttribute("style", "position:absolute;left:-2px;top:-2px;width:1px;height:1px;z-index:-1000;"); document.body.appendChild(frame); } var frameWindow = GetUploadIFrame(); var content = '
'; frameWindow.document.open(); frameWindow.document.write(content); frameWindow.document.close(); var fileName = frameWindow.document.getElementById("apiiuFile"); var fileSubmit = frameWindow.document.getElementById("apiiuSubmit"); var oThis = this; fileName.onchange = function(e) { var bNeedSubmit = true; if(e && e.target && e.target.files) { var file = e.target.files[0]; var nError = ValidateUploadImage(e.target.files); if(c_oAscServerError.NoError != nError) { bNeedSubmit = false; oThis.asc_fireCallback("asc_onError",_mapAscServerErrorToAscError(nError),c_oAscError.Level.NoCritical); } } if(bNeedSubmit) { oThis.sync_StartAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.UploadImage); fileSubmit.click(); } }; //todo пересмотреть opera if (window.opera != undefined) setTimeout( function(){fileName.click();}, 0); else fileName.click(); } asc_docs_api.prototype.StartAddShape = function(prst, is_apply) { this.WordControl.m_oLogicDocument.StartAddShape(prst, is_apply); if (is_apply) { this.WordControl.m_oDrawingDocument.LockCursorType("crosshair"); } } asc_docs_api.prototype.canGroup = function() { return this.WordControl.m_oLogicDocument.canGroup(); } asc_docs_api.prototype.canUnGroup = function() { return this.WordControl.m_oLogicDocument.canUnGroup(); } asc_docs_api.prototype.AddImageUrl = function(url){ if(0 == url.indexOf(this.DocumentUrl)) { this.AddImageUrlAction(url); } else { var rData = { "id":documentId, "userid": documentUserId, "vkey": documentVKey, "c":"imgurl", "data": url}; var oThis = this; this.sync_StartAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.UploadImage); sendCommand(this, function(incomeObject){ if(null != incomeObject && "imgurl" == incomeObject["type"]) oThis.AddImageUrlAction(incomeObject["data"]); oThis.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.UploadImage); }, rData ); } }; asc_docs_api.prototype.AddImageUrlAction = function(url){ var _image = this.ImageLoader.LoadImage(url, 1); if (null != _image) { var _w = Page_Width - (X_Left_Margin + X_Right_Margin); var _h = Page_Height - (Y_Top_Margin + Y_Bottom_Margin); if (_image.Image != null) { var __w = Math.max((_image.Image.width * g_dKoef_pix_to_mm) >> 0, 1); var __h = Math.max((_image.Image.height * g_dKoef_pix_to_mm) >> 0, 1); _w = Math.max(5, Math.min(_w, __w)); _h = Math.max(5, Math.min((_w * __h / __w) >> 0)); } this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); var src = _image.src; if (this.isShapeImageChangeUrl) { var AscShapeProp = new CAscShapeProp(); AscShapeProp.fill = new CAscFill(); AscShapeProp.fill.type = c_oAscFill.FILL_TYPE_BLIP; AscShapeProp.fill.fill = new CAscFillBlip(); AscShapeProp.fill.fill.put_url(src); this.ShapeApply(AscShapeProp); this.isShapeImageChangeUrl = false; } else if (this.isSlideImageChangeUrl) { var AscSlideProp = new CAscSlideProps(); AscSlideProp.Background = new CAscFill(); AscSlideProp.Background.type = c_oAscFill.FILL_TYPE_BLIP; AscSlideProp.Background.fill = new CAscFillBlip(); AscSlideProp.Background.fill.put_url(src); this.SetSlideProps(AscSlideProp); this.isSlideImageChangeUrl = false; } else if (this.isImageChangeUrl) { var AscImageProp = new CImgProperty(); AscImageProp.ImageUrl = src; this.ImgApply(AscImageProp); this.isImageChangeUrl = false; } else { var sFindString = editor.DocumentUrl + "media/"; if(0 == src.indexOf(sFindString)) src = src.substring(sFindString.length); this.WordControl.m_oLogicDocument.Add_FlowImage(_w, _h, src); } } else { this.sync_StartAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.LoadImage); this.asyncImageEndLoaded2 = function(_image) { var _w = Page_Width - (X_Left_Margin + X_Right_Margin); var _h = Page_Height - (Y_Top_Margin + Y_Bottom_Margin); if (_image.Image != null) { var __w = Math.max((_image.Image.width * g_dKoef_pix_to_mm) >> 0, 1); var __h = Math.max((_image.Image.height * g_dKoef_pix_to_mm) >> 0, 1); _w = Math.max(5, Math.min(_w, __w)); _h = Math.max(5, Math.min((_w * __h / __w) >> 0)); } // this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); var src = _image.src; //this.WordControl.m_oLogicDocument.Add_FlowImage(_w, _h, src); if (this.isShapeImageChangeUrl) { var AscShapeProp = new CAscShapeProp(); AscShapeProp.fill = new CAscFill(); AscShapeProp.fill.type = c_oAscFill.FILL_TYPE_BLIP; AscShapeProp.fill.fill = new CAscFillBlip(); AscShapeProp.fill.fill.put_url(src); this.ShapeApply(AscShapeProp); this.isShapeImageChangeUrl = false; } else if (this.isSlideImageChangeUrl) { var AscSlideProp = new CAscSlideProps(); AscSlideProp.Background = new CAscFill(); AscSlideProp.Background.type = c_oAscFill.FILL_TYPE_BLIP; AscSlideProp.Background.fill = new CAscFillBlip(); AscSlideProp.Background.fill.put_url(src); this.SetSlideProps(AscSlideProp); this.isSlideImageChangeUrl = false; } else if (this.isImageChangeUrl) { var AscImageProp = new CImgProperty(); AscImageProp.ImageUrl = src; this.ImgApply(AscImageProp); this.isImageChangeUrl = false; } else { var sFindString = editor.DocumentUrl + "media/"; if(0 == src.indexOf(sFindString)) src = src.substring(sFindString.length); this.WordControl.m_oLogicDocument.Add_FlowImage(_w, _h, src); } this.sync_EndAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.LoadImage); this.asyncImageEndLoaded2 = null; } } } /* В качестве параметра передается объект класса CImgProperty, он же приходит на OnImgProp CImgProperty заменяет пережнюю структуру: если параметр не имеет значения то передвать следует null, напримере inline-картинок: в качестве left,top,bottom,right,X,Y,ImageUrl необходимо передавать null. { Width: 0, Height: 0, WrappingStyle: 0, Paddings: { Left : 0, Top : 0, Bottom: 0, Right: 0 }, Position : {X : 0, Y : 0}, ImageUrl : "" } */ asc_docs_api.prototype.ImgApply = function(obj){ var ImagePr = {}; ImagePr.Width = null === obj.Width ? null : parseFloat(obj.Width); ImagePr.Height = null === obj.Height ? null : parseFloat(obj.Height); if( undefined != obj.Position ) { ImagePr.Position = { X : null === obj.Position.X ? null : parseFloat(obj.Position.X), Y : null === obj.Position.Y ? null : parseFloat(obj.Position.Y) }; } else { ImagePr.Position = {X : null, Y : null}; } ImagePr.ImageUrl = obj.ImageUrl; if(ImagePr.ImageUrl != undefined && ImagePr.ImageUrl != null && ImagePr.ImageUrl != "") { var _img = this.ImageLoader.LoadImage(ImagePr.ImageUrl, 1); var sFindString = editor.DocumentUrl + "media/"; if(0 == ImagePr.ImageUrl.indexOf(sFindString)) { ImagePr.ImageUrl = ImagePr.ImageUrl.substring(sFindString.length); // erase documentUrl } if (null != _img) { //ImagePr.ImageUrl = _img.src; this.WordControl.m_oLogicDocument.Set_ImageProps( ImagePr ); } else { this.asyncImageEndLoaded2 = function(_image) { //ImagePr.ImageUrl = _image.src; this.WordControl.m_oLogicDocument.Set_ImageProps( ImagePr ); this.asyncImageEndLoaded2 = null; } } } else { ImagePr.ImageUrl = null; this.WordControl.m_oLogicDocument.Set_ImageProps( ImagePr ); } } asc_docs_api.prototype.asc_setChartTranslate = function(translate) { this.chartTranslate = translate; }; asc_docs_api.prototype.ChartApply = function(obj) { this.WordControl.m_oLogicDocument.ChartApply(obj); } asc_docs_api.prototype.set_Size = function(width, height){ } asc_docs_api.prototype.set_ConstProportions = function(isOn){ if (isOn){ } else{ } } asc_docs_api.prototype.set_WrapStyle = function(type){ } asc_docs_api.prototype.deleteImage = function(){ } asc_docs_api.prototype.set_ImgDistanceFromText = function(left,top,right,bottom){ } asc_docs_api.prototype.set_PositionOnPage = function(X,Y){//расположение от начала страницы } asc_docs_api.prototype.get_OriginalSizeImage = function(){ if (0 == this.SelectedObjectsStack.length) return null; var obj = this.SelectedObjectsStack[this.SelectedObjectsStack.length - 1]; if (obj == null) return null; if (obj.Type == c_oAscTypeSelectElement.Image) return obj.Value.get_OriginSize(this); } /*callbacks*/ asc_docs_api.prototype.sync_AddImageCallback = function(){ this.asc_fireCallback("asc_onAddImage"); } asc_docs_api.prototype.sync_ImgPropCallback = function(imgProp){ var type = imgProp.chartProps ? c_oAscTypeSelectElement.Chart : c_oAscTypeSelectElement.Image; var objects; if(type === c_oAscTypeSelectElement.Chart) { objects = new CAscChartProp(imgProp); } else { objects = new CImgProperty(imgProp); } this.SelectedObjectsStack[this.SelectedObjectsStack.length] = new CSelectedObject( type, objects); } asc_docs_api.prototype.SetDrawingFreeze = function(bIsFreeze) { this.WordControl.DrawingFreeze = bIsFreeze; var _elem1 = document.getElementById("id_main"); if (_elem1) { var _elem2 = document.getElementById("id_panel_thumbnails"); var _elem3 = document.getElementById("id_panel_notes"); if (bIsFreeze) { _elem1.style.display = "none"; _elem2.style.display = "none"; _elem3.style.display = "none"; } else { _elem1.style.display = "block"; _elem2.style.display = "block"; _elem3.style.display = "block"; } } if (!bIsFreeze) this.WordControl.OnScroll(); } /*----------------------------------------------------------------*/ /*functions for working with zoom & navigation*/ asc_docs_api.prototype.zoomIn = function(){ this.WordControl.zoom_In(); } asc_docs_api.prototype.zoomOut = function(){ this.WordControl.zoom_Out(); } asc_docs_api.prototype.zoomFitToPage = function(){ this.WordControl.zoom_FitToPage(); } asc_docs_api.prototype.zoomFitToWidth = function(){ this.WordControl.zoom_FitToWidth(); } asc_docs_api.prototype.zoomCustomMode = function(){ this.WordControl.m_nZoomType = 0; this.WordControl.zoom_Fire(); } asc_docs_api.prototype.zoom100 = function(){ this.WordControl.m_nZoomValue = 100; this.WordControl.zoom_Fire(); } asc_docs_api.prototype.zoom = function(percent){ this.WordControl.m_nZoomValue = percent; this.WordControl.zoom_Fire(0); } asc_docs_api.prototype.goToPage = function(number){ this.WordControl.GoToPage(number); } asc_docs_api.prototype.getCountPages = function(){ return this.WordControl.m_oDrawingDocument.SlidesCount; } asc_docs_api.prototype.getCurrentPage = function(){ return this.WordControl.m_oDrawingDocument.SlideCurrent; } /*callbacks*/ asc_docs_api.prototype.sync_zoomChangeCallback = function(percent,type){ //c_oAscZoomType.Current, c_oAscZoomType.FitWidth, c_oAscZoomType.FitPage this.asc_fireCallback("asc_onZoomChange",percent,type); } asc_docs_api.prototype.sync_countPagesCallback = function(count){ this.asc_fireCallback("asc_onCountPages",count); } asc_docs_api.prototype.sync_currentPageCallback = function(number){ this.asc_fireCallback("asc_onCurrentPage",number); } asc_docs_api.prototype.sync_SendThemeColors = function(colors,standart_colors) { this.asc_fireCallback("asc_onSendThemeColors",colors,standart_colors); } asc_docs_api.prototype.sync_SendThemeColorSchemes = function(param) { this.asc_fireCallback("asc_onSendThemeColorSchemes",param); } asc_docs_api.prototype.ChangeColorScheme = function(index_scheme) { var _count_defaults = g_oUserColorScheme.length; if (index_scheme < _count_defaults) { var _obj = g_oUserColorScheme[index_scheme]; var scheme = new ClrScheme(); scheme.name = _obj["name"]; var _c = null; _c = _obj["dk1"]; scheme.colors[8] = CreateUniColorRGB(_c["R"], _c["G"], _c["B"]); _c = _obj["lt1"]; scheme.colors[12] = CreateUniColorRGB(_c["R"], _c["G"], _c["B"]); _c = _obj["dk2"]; scheme.colors[9] = CreateUniColorRGB(_c["R"], _c["G"], _c["B"]); _c = _obj["lt2"]; scheme.colors[13] = CreateUniColorRGB(_c["R"], _c["G"], _c["B"]); _c = _obj["accent1"]; scheme.colors[0] = CreateUniColorRGB(_c["R"], _c["G"], _c["B"]); _c = _obj["accent2"]; scheme.colors[1] = CreateUniColorRGB(_c["R"], _c["G"], _c["B"]); _c = _obj["accent3"]; scheme.colors[2] = CreateUniColorRGB(_c["R"], _c["G"], _c["B"]); _c = _obj["accent4"]; scheme.colors[3] = CreateUniColorRGB(_c["R"], _c["G"], _c["B"]); _c = _obj["accent5"]; scheme.colors[4] = CreateUniColorRGB(_c["R"], _c["G"], _c["B"]); _c = _obj["accent6"]; scheme.colors[5] = CreateUniColorRGB(_c["R"], _c["G"], _c["B"]); _c = _obj["hlink"]; scheme.colors[11] = CreateUniColorRGB(_c["R"], _c["G"], _c["B"]); _c = _obj["folHlink"]; scheme.colors[10] = CreateUniColorRGB(_c["R"], _c["G"], _c["B"]); this.WordControl.m_oLogicDocument.changeColorScheme(scheme); } else { index_scheme -= _count_defaults; if (null == this.WordControl.MasterLayouts) return; var theme = this.WordControl.MasterLayouts.Theme; if (null == theme) return; if (index_scheme < 0 || index_scheme >= theme.extraClrSchemeLst.length) return; this.WordControl.m_oLogicDocument.changeColorScheme(theme.extraClrSchemeLst[index_scheme].clrScheme); } this.WordControl.m_oDrawingDocument.CheckGuiControlColors(); } /*----------------------------------------------------------------*/ asc_docs_api.prototype.asc_enableKeyEvents = function(value){ if (this.WordControl.IsFocus != value) { this.WordControl.IsFocus = value; this.asc_fireCallback("asc_onEnableKeyEventsChanged", value); } } //----------------------------------------------------------------- // Функции для работы с комментариями //----------------------------------------------------------------- function asc_CCommentData( obj ) { if( obj ) { this.m_sText = (undefined != obj.m_sText ) ? obj.m_sText : ""; this.m_sTime = (undefined != obj.m_sTime ) ? obj.m_sTime : ""; this.m_sUserId = (undefined != obj.m_sUserId ) ? obj.m_sUserId : ""; this.m_sQuoteText = (undefined != obj.m_sQuoteText) ? obj.m_sQuoteText : null; this.m_bSolved = (undefined != obj.m_bSolved ) ? obj.m_bSolved : false; this.m_sUserName = (undefined != obj.m_sUserName ) ? obj.m_sUserName : ""; this.m_aReplies = []; if ( undefined != obj.m_aReplies ) { var Count = obj.m_aReplies.length; for ( var Index = 0; Index < Count; Index++ ) { var Reply = new asc_CCommentData( obj.m_aReplies[Index] ); this.m_aReplies.push( Reply ); } } } else { this.m_sText = ""; this.m_sTime = ""; this.m_sUserId = ""; this.m_sQuoteText = null; this.m_bSolved = false; this.m_sUserName = ""; this.m_aReplies = []; } } asc_CCommentData.prototype.asc_getText = function() { return this.m_sText; } asc_CCommentData.prototype.asc_putText = function(v) { this.m_sText = v; } asc_CCommentData.prototype.asc_getTime = function() { return this.m_sTime; } asc_CCommentData.prototype.asc_putTime = function(v) { this.m_sTime = v; } asc_CCommentData.prototype.asc_getUserId = function() { return this.m_sUserId; } asc_CCommentData.prototype.asc_putUserId = function(v) { this.m_sUserId = v; } asc_CCommentData.prototype.asc_getUserName = function() { return this.m_sUserName; } asc_CCommentData.prototype.asc_putUserName = function(v) { this.m_sUserName = v; } asc_CCommentData.prototype.asc_getQuoteText = function() { return this.m_sQuoteText; }; asc_CCommentData.prototype.asc_putQuoteText = function(v) { this.m_sQuoteText = v; }; asc_CCommentData.prototype.asc_getSolved = function() { return this.m_bSolved; }; asc_CCommentData.prototype.asc_putSolved = function(v) { this.m_bSolved = v; }; asc_CCommentData.prototype.asc_getReply = function(i) { return this.m_aReplies[i]; } asc_CCommentData.prototype.asc_addReply = function(v) { this.m_aReplies.push( v ); } asc_CCommentData.prototype.asc_getRepliesCount = function(v) { return this.m_aReplies.length; } asc_docs_api.prototype.asc_showComments = function() { if (null == this.WordControl.m_oLogicDocument) return; this.WordControl.m_oLogicDocument.Show_Comments(); } asc_docs_api.prototype.asc_hideComments = function() { if (null == this.WordControl.m_oLogicDocument) return; this.WordControl.m_oLogicDocument.Hide_Comments(); editor.sync_HideComment(); } asc_docs_api.prototype.asc_addComment = function(AscCommentData) { //if ( true === CollaborativeEditing.Get_GlobalLock() ) // return; if (null == this.WordControl.m_oLogicDocument) return; var CommentData = new CCommentData(); CommentData.Read_FromAscCommentData(AscCommentData); var Comment = this.WordControl.m_oLogicDocument.Add_Comment( CommentData ); if (Comment ) return Comment.Get_Id(); } asc_docs_api.prototype.asc_getMasterCommentId = function() { return -1; } asc_docs_api.prototype.asc_getAnchorPosition = function() { var AnchorPos = this.WordControl.m_oLogicDocument.Get_SelectionAnchorPos(); return new asc_CRect(AnchorPos.X0, AnchorPos.Y, AnchorPos.X1 - AnchorPos.X0, 0); } asc_docs_api.prototype.asc_removeComment = function(Id) { if (null == this.WordControl.m_oLogicDocument) return; if ( false === this.WordControl.m_oLogicDocument.Document_Is_SelectionLocked(changestype_MoveComment, Id ) ) { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Remove_Comment( Id, true ); } } asc_docs_api.prototype.asc_changeComment = function(Id, AscCommentData) { if (null == this.WordControl.m_oLogicDocument) return; //if ( false === this.WordControl.m_oLogicDocument.Document_Is_SelectionLocked(changestype_MoveComment, Id ) ) { var CommentData = new CCommentData(); CommentData.Read_FromAscCommentData(AscCommentData); this.WordControl.m_oLogicDocument.Change_Comment( Id, CommentData ); } } asc_docs_api.prototype.asc_selectComment = function(Id) { if (null == this.WordControl.m_oLogicDocument) return; this.WordControl.m_oLogicDocument.Select_Comment(Id); } asc_docs_api.prototype.asc_showComment = function(Id) { this.WordControl.m_oLogicDocument.Show_Comment(Id); } asc_docs_api.prototype.can_AddQuotedComment = function() { //if ( true === CollaborativeEditing.Get_GlobalLock() ) // return false; return this.WordControl.m_oLogicDocument.CanAdd_Comment(); } asc_docs_api.prototype.sync_RemoveComment = function(Id) { this.asc_fireCallback("asc_onRemoveComment", Id); } asc_docs_api.prototype.sync_AddComment = function(Id, CommentData) { if(this.bNoSendComments === false) { var AscCommentData = new asc_CCommentData(CommentData); AscCommentData.asc_putQuoteText(""); this.asc_fireCallback("asc_onAddComment", Id, AscCommentData); } } asc_docs_api.prototype.sync_ShowComment = function(Id, X, Y) { /* if (this.WordControl.m_oMainContent) { X -= ((this.WordControl.m_oMainContent.Bounds.L * g_dKoef_mm_to_pix) >> 0); } */ // TODO: Переделать на нормальный массив this.asc_fireCallback("asc_onShowComment", [ Id ], X, Y); } asc_docs_api.prototype.sync_HideComment = function() { this.asc_fireCallback("asc_onHideComment"); } asc_docs_api.prototype.sync_UpdateCommentPosition = function(Id, X, Y) { // TODO: Переделать на нормальный массив this.asc_fireCallback("asc_onUpdateCommentPosition", [ Id ], X, Y); } asc_docs_api.prototype.sync_ChangeCommentData = function(Id, CommentData) { var AscCommentData = new asc_CCommentData(CommentData); this.asc_fireCallback("asc_onChangeCommentData", Id, AscCommentData); } asc_docs_api.prototype.sync_LockComment = function(Id, UserId) { this.asc_fireCallback("asc_onLockComment", Id, UserId); } asc_docs_api.prototype.sync_UnLockComment = function(Id) { this.asc_fireCallback("asc_onUnLockComment", Id); } // работа с шрифтами asc_docs_api.prototype.asyncFontsDocumentStartLoaded = function() { // здесь прокинуть евент о заморозке меню // и нужно вывести информацию в статус бар if (this.isPasteFonts_Images) this.sync_StartAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.LoadFont); else { this.sync_StartAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.LoadDocumentFonts); // заполним прогресс var _progress = this.OpenDocumentProgress; _progress.Type = c_oAscAsyncAction.LoadDocumentFonts; _progress.FontsCount = this.FontLoader.fonts_loading.length; _progress.CurrentFont = 0; var _loader_object = this.WordControl.m_oLogicDocument; var _count = 0; if (_loader_object !== undefined && _loader_object != null) { for (var i in _loader_object.ImageMap) ++_count; } _progress.ImagesCount = _count + g_oUserTexturePresets.length; _progress.CurrentImage = 0; } } asc_docs_api.prototype.GenerateStyles = function() { return; } asc_docs_api.prototype.asyncFontsDocumentEndLoaded = function() { // все, шрифты загружены. Теперь нужно подгрузить картинки if (this.isPasteFonts_Images) this.sync_EndAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.LoadFont); else this.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.LoadDocumentFonts); this.EndActionLoadImages = 0; if (this.isPasteFonts_Images) { var _count = 0; for (var i in this.pasteImageMap) ++_count; if (_count > 0) { this.EndActionLoadImages = 2; this.sync_StartAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.LoadImage); } this.ImageLoader.LoadDocumentImages(this.pasteImageMap, false); return; } else if (this.isSaveFonts_Images) { var _count = 0; for (var i in this.saveImageMap) ++_count; if (_count > 0) { this.EndActionLoadImages = 2; this.sync_StartAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.LoadImage); } this.ImageLoader.LoadDocumentImages(this.saveImageMap, false); return; } this.GenerateStyles(); // открытие после загрузки документа if (this.isLoadNoCutFonts) { this.isLoadNoCutFonts = false; this.SetViewMode(false); return; } var _loader_object = this.WordControl.m_oLogicDocument; if (null == _loader_object) _loader_object = this.WordControl.m_oDrawingDocument.m_oDocumentRenderer; var _count = 0; for (var i in _loader_object.ImageMap) ++_count; // add const textures var _st_count = g_oUserTexturePresets.length; for (var i = 0; i < _st_count; i++) _loader_object.ImageMap[_count + i] = g_oUserTexturePresets[i]; if (_count > 0) { this.EndActionLoadImages = 1; this.sync_StartAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.LoadDocumentImages); } this.ImageLoader.bIsLoadDocumentFirst = true; this.ImageLoader.LoadDocumentImages(_loader_object.ImageMap, true); } asc_docs_api.prototype.asyncImagesDocumentStartLoaded = function() { // евент о заморозке не нужен... оно и так заморожено // просто нужно вывести информацию в статус бар (что началась загрузка картинок) } asc_docs_api.prototype.asyncImagesDocumentEndLoaded = function() { if (this.EndActionLoadImages == 1) { this.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.LoadDocumentImages); } else if (this.EndActionLoadImages == 2) { this.sync_EndAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.LoadImage); } this.EndActionLoadImages = 0; this.ImageLoader.bIsLoadDocumentFirst = false; // размораживаем меню... и начинаем считать документ if (this.isPasteFonts_Images) { this.isPasteFonts_Images = false; this.pasteImageMap = null; this.waitSave = false; this.pasteCallback(); window.GlobalPasteFlag = false; window.GlobalPasteFlagCounter = 0; this.pasteCallback = null; } else if (this.isSaveFonts_Images) { this.isSaveFonts_Images = false; this.saveImageMap = null; this.pre_SaveCallback(); } else { this.ServerImagesWaitComplete = true; if (true == this.ServerIdWaitComplete) this.OpenDocumentEndCallback(); this.asyncServerIdStartLoaded(); } } asc_docs_api.prototype.asc_getComments = function() { var comms = []; if (null == this.WordControl.m_oLogicDocument) return comms; var _slides = this.WordControl.m_oLogicDocument.Slides; var _slidesCount = _slides.length; for (var i = 0; i < _slidesCount; i++) { var _comments = _slides[i].slideComments.comments; var _commentsCount = _comments.length; for (var j = 0; j < _commentsCount; j++) { var _id = _comments[j].Get_Id(); var _ascCommentData = new asc_CCommentData(_comments[j].Data); comms.push({ "Id" : _id, "Comment" : _ascCommentData }); } } return comms; } asc_docs_api.prototype.OpenDocumentEndCallback = function() { var bIsScroll = false; if (0 == this.DocumentType) this.WordControl.m_oLogicDocument.LoadEmptyDocument(); else if (1 == this.DocumentType) { this.WordControl.m_oLogicDocument.LoadTestDocument(); } else { if(this.LoadedObject) { if(this.LoadedObject === 1) { if (this.isApplyChangesOnOpenEnabled) { this.isApplyChangesOnOpenEnabled = false; this.isApplyChangesOnOpen = true; this.bNoSendComments = true; var OtherChanges = CollaborativeEditing.m_aChanges.length > 0 ; CollaborativeEditing.Apply_Changes(); CollaborativeEditing.Release_Locks(); this.bNoSendComments = false; if(OtherChanges) { var _slides = this.WordControl.m_oLogicDocument.Slides; var _slidesCount = _slides.length; for (var i = 0; i < _slidesCount; i++) { var slideComments = _slides[i].slideComments; if(slideComments) { var _comments = slideComments.comments; var _commentsCount = _comments.length; for (var j = 0; j < _commentsCount; j++) { this.sync_AddComment(_comments[j].Get_Id(), _comments[j].Data ); } } } return; } } } this.WordControl.m_oLogicDocument.Recalculate({Drawings: {All:true, Map: {}}}); var presentation = this.WordControl.m_oLogicDocument; presentation.DrawingDocument.OnEndRecalculate(); this.WordControl.m_oLayoutDrawer.IsRetina = this.WordControl.bIsRetinaSupport; this.WordControl.m_oLayoutDrawer.WidthMM = presentation.Width; this.WordControl.m_oLayoutDrawer.HeightMM = presentation.Height; this.WordControl.m_oMasterDrawer.WidthMM = presentation.Width; this.WordControl.m_oMasterDrawer.HeightMM = presentation.Height; this.WordControl.m_oLogicDocument.GenerateThumbnails(this.WordControl.m_oMasterDrawer, this.WordControl.m_oLayoutDrawer); var _masters = this.WordControl.m_oLogicDocument.slideMasters; for (var i = 0; i < _masters.length; i++) { if(_masters[i].ThemeIndex < 0)//только темы презентации { var theme_load_info = new CThemeLoadInfo(); theme_load_info.Master = _masters[i]; theme_load_info.Theme = _masters[i].Theme; var _lay_cnt = _masters[i].sldLayoutLst.length; for (var j = 0; j < _lay_cnt; j++) theme_load_info.Layouts[j] = _masters[i].sldLayoutLst[j]; var th_info = {}; th_info["Name"] = "Doc Theme " + i; th_info["Url"] = ""; th_info["Thumbnail"] = _masters[i].ImageBase64; var th = new CAscThemeInfo(th_info); this.ThemeLoader.Themes.DocumentThemes[this.ThemeLoader.Themes.DocumentThemes.length] = th; th.Index = -this.ThemeLoader.Themes.DocumentThemes.length; this.ThemeLoader.themes_info_document[this.ThemeLoader.Themes.DocumentThemes.length - 1] = theme_load_info; } } this.sync_InitEditorThemes(this.ThemeLoader.Themes.EditorThemes, this.ThemeLoader.Themes.DocumentThemes); this.asc_fireCallback("asc_onPresentationSize", presentation.Width, presentation.Height); this.WordControl.GoToPage(0); bIsScroll = true; } } this.WordControl.m_oLogicDocument.Document_UpdateInterfaceState(); this.WordControl.m_oLogicDocument.Document_UpdateRulersState(); this.WordControl.m_oLogicDocument.Document_UpdateSelectionState(); this.LoadedObject = null; this.bInit_word_control = true; var _slides = this.WordControl.m_oLogicDocument.Slides; var _slidesCount = _slides.length; for (var i = 0; i < _slidesCount; i++) { var slideComments = _slides[i].slideComments; if(slideComments) { var _comments = slideComments.comments; var _commentsCount = _comments.length; for (var j = 0; j < _commentsCount; j++) { this.sync_AddComment(_comments[j].Get_Id(), _comments[j].Data ); } } } this.asc_fireCallback("asc_onDocumentContentReady"); this.WordControl.InitControl(); if (bIsScroll) { this.WordControl.OnScroll(); } if (this.isViewMode) this.SetViewMode(true); }; asc_docs_api.prototype.asyncFontStartLoaded = function() { // здесь прокинуть евент о заморозке меню this.sync_StartAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.LoadFont); } asc_docs_api.prototype.asyncFontEndLoaded = function(fontinfo) { this.sync_EndAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.LoadFont); this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.WordControl.m_oLogicDocument.Paragraph_Add( new ParaTextPr( { FontFamily : { Name : fontinfo.Name , Index : -1 } } ) ); // отжать заморозку меню } asc_docs_api.prototype.asyncImageStartLoaded = function() { // здесь прокинуть евент о заморозке меню } asc_docs_api.prototype.asyncImageEndLoaded = function(_image) { // отжать заморозку меню if (this.asyncImageEndLoaded2) this.asyncImageEndLoaded2(_image); else { this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); if (_image.Type == 0) this.WordControl.m_oLogicDocument.Add_FlowImage(50, 50, _image.src); else this.WordControl.m_oLogicDocument.Add_InlineImage(50, 50, _image.src); } } asc_docs_api.prototype.get_PresentationWidth = function() { if (this.WordControl.m_oLogicDocument == null) return 0; return this.WordControl.m_oLogicDocument.Width; } asc_docs_api.prototype.get_PresentationHeight = function() { if (this.WordControl.m_oLogicDocument == null) return 0; return this.WordControl.m_oLogicDocument.Height; } asc_docs_api.prototype.SendOpenProgress = function() { // Пока отсылаем старый callback this.asc_fireCallback("asc_onOpenDocumentProgress", this.OpenDocumentProgress); var _progress = this.OpenDocumentProgress; var _percents = (_progress.get_CurrentFont() + _progress.get_CurrentImage())/(_progress.get_FontsCount() + _progress.get_ImagesCount()); // приводим к 0..100 _percents *= 100; // рассчет исходя из того, что часть прогресса прошли на конвертации _percents = Math.min(this._lastConvertProgress + _percents * (100.0 - this._lastConvertProgress) / 100.0, 100.0); return this.sync_SendProgress(_percents); //console.log("" + this.OpenDocumentProgress.CurrentFont); } asc_docs_api.prototype.sync_SendProgress = function(Percents) { this.asc_fireCallback("asc_onOpenDocumentProgress2", Percents); } asc_docs_api.prototype.pre_Paste = function(_fonts, _images, callback) { this.pasteCallback = callback; this.pasteImageMap = _images; var _count = 0; for (var i in this.pasteImageMap) ++_count; if (0 == _count && false === this.FontLoader.CheckFontsNeedLoading(_fonts)) { // никаких евентов. ничего грузить не нужно. сделано для сафари под макОс. // там при LongActions теряется фокус и вставляются пробелы this.waitSave = false; this.pasteCallback(); window.GlobalPasteFlag = false; window.GlobalPasteFlagCounter = 0; this.pasteCallback = null; return; } this.isPasteFonts_Images = true; this.FontLoader.LoadDocumentFonts2(_fonts); } asc_docs_api.prototype.pre_SaveCallback = function() { CollaborativeEditing.OnEnd_Load_Objects(); if (this.isApplyChangesOnOpen) { this.isApplyChangesOnOpen = false; this.OpenDocumentEndCallback(); } this.WordControl.SlideDrawer.CheckRecalculateSlide(); } asc_docs_api.prototype.initEvents2MobileAdvances = function() { this.WordControl.initEvents2MobileAdvances(); } asc_docs_api.prototype.ViewScrollToX = function(x) { this.WordControl.m_oScrollHorApi.scrollToX(x); } asc_docs_api.prototype.ViewScrollToY = function(y) { this.WordControl.m_oScrollVerApi.scrollToY(y); } asc_docs_api.prototype.GetDocWidthPx = function() { return this.WordControl.m_dDocumentWidth; } asc_docs_api.prototype.GetDocHeightPx = function() { return this.WordControl.m_dDocumentHeight; } asc_docs_api.prototype.ClearSearch = function() { return this.WordControl.m_oDrawingDocument.EndSearch(true); } asc_docs_api.prototype.GetCurrentVisiblePage = function() { return this.WordControl.m_oDrawingDocument.SlideCurrent; }; // Выставление интервала автосохранения (0 - означает, что автосохранения нет) asc_docs_api.prototype.asc_setAutoSaveGap = function (autoSaveGap) { if (typeof autoSaveGap === "number") { this.autoSaveGap = autoSaveGap * 1000; // Нам выставляют в секундах } }; asc_docs_api.prototype.asc_SetDocumentPlaceChangedEnabled = function(bEnabled) { if (this.WordControl) this.WordControl.m_bDocumentPlaceChangedEnabled = bEnabled; } asc_docs_api.prototype.asc_SetViewRulers = function(bRulers) { //if (false === this.bInit_word_control || true === this.isViewMode) // return; if (this.WordControl.m_bIsRuler != bRulers) { this.WordControl.m_bIsRuler = bRulers; this.WordControl.checkNeedRules(); this.WordControl.OnResize(true); } }; asc_docs_api.prototype.asc_SetViewRulersChange = function() { //if (false === this.bInit_word_control || true === this.isViewMode) // return; this.WordControl.m_bIsRuler = !this.WordControl.m_bIsRuler; this.WordControl.checkNeedRules(); this.WordControl.OnResize(true); return this.WordControl.m_bIsRuler; }; asc_docs_api.prototype.asc_GetViewRulers = function() { return this.WordControl.m_bIsRuler; }; asc_docs_api.prototype.SetMobileVersion = function(val) { this.isMobileVersion = val; if (this.isMobileVersion) { this.WordControl.bIsRetinaSupport = false; // ipad имеет проблемы с большими картинками this.WordControl.bIsRetinaNoSupportAttack = true; this.WordControl.m_bIsRuler = false; this.ShowParaMarks = false; } }; asc_docs_api.prototype.GoToHeader = function(pageNumber) { if (this.WordControl.m_oDrawingDocument.IsFreezePage(pageNumber)) return; var oldClickCount = global_mouseEvent.ClickCount; global_mouseEvent.ClickCount = 2; this.WordControl.m_oLogicDocument.OnMouseDown(global_mouseEvent, 0, 0, pageNumber); this.WordControl.m_oLogicDocument.OnMouseUp(global_mouseEvent, 0, 0, pageNumber); this.WordControl.m_oLogicDocument.Document_UpdateInterfaceState(); global_mouseEvent.ClickCount = oldClickCount; } asc_docs_api.prototype.changeSlideSize = function(width, height) { this.WordControl.m_oLogicDocument.changeSlideSize(width, height); } asc_docs_api.prototype.AddSlide = function(layoutIndex) { this.WordControl.m_oLogicDocument.addNextSlide(layoutIndex); } asc_docs_api.prototype.DeleteSlide = function() { var _delete_array = this.WordControl.Thumbnails.GetSelectedArray(); if (!this.IsSupportEmptyPresentation) { if (_delete_array.length == this.WordControl.m_oDrawingDocument.SlidesCount) _delete_array.splice(0, 1); } if (_delete_array.length != 0) { this.WordControl.m_oLogicDocument.deleteSlides(_delete_array); } } asc_docs_api.prototype.DublicateSlide = function() { this.WordControl.m_oLogicDocument.DublicateSlide(); } asc_docs_api.prototype.SelectAllSlides = function(layoutType) { var drDoc = this.WordControl.m_oDrawingDocument; var slidesCount = drDoc.SlidesCount; for (var i = 0; i < slidesCount; i++) { this.WordControl.Thumbnails.m_arrPages[i].IsSelected = true; } this.WordControl.Thumbnails.OnUpdateOverlay(); } asc_docs_api.prototype.AddShape = function(shapetype) { } asc_docs_api.prototype.ChangeShapeType = function(shapetype) { History.Create_NewPoint(); this.WordControl.m_oLogicDocument.changeShapeType(shapetype); } asc_docs_api.prototype.AddText = function() { } asc_docs_api.prototype.groupShapes = function() { this.WordControl.m_oLogicDocument.groupShapes(); } asc_docs_api.prototype.unGroupShapes = function() { this.WordControl.m_oLogicDocument.unGroupShapes(); } asc_docs_api.prototype.setVerticalAlign = function(align) { History.Create_NewPoint(); this.WordControl.m_oLogicDocument.setVerticalAlign(align); } asc_docs_api.prototype.sync_MouseMoveStartCallback = function() { this.asc_fireCallback("asc_onMouseMoveStart"); } asc_docs_api.prototype.sync_MouseMoveEndCallback = function() { this.asc_fireCallback("asc_onMouseMoveEnd"); } asc_docs_api.prototype.sync_MouseMoveCallback = function(Data) { if(Data.Hyperlink && typeof Data.Hyperlink.Value === "string") { var indAction = Data.Hyperlink.Value.indexOf("ppaction://hlink"); var Url = Data.Hyperlink.Value; if (0 == indAction) { if (Url == "ppaction://hlinkshowjump?jump=firstslide") { Data.Hyperlink.Value = "First Slide"; } else if (Url == "ppaction://hlinkshowjump?jump=lastslide") { Data.Hyperlink.Value = "Last Slide"; } else if (Url == "ppaction://hlinkshowjump?jump=nextslide") { Data.Hyperlink.Value = "Next Slide"; } else if (Url == "ppaction://hlinkshowjump?jump=previousslide") { Data.Hyperlink.Value = "Previous Slide"; } else { var mask = "ppaction://hlinksldjumpslide"; var indSlide = Url.indexOf(mask); if (0 == indSlide) { var slideNum = parseInt(Url.substring(mask.length)); Data.Hyperlink.Value = "Slide" + slideNum; } } } } this.asc_fireCallback("asc_onMouseMove", Data ); } asc_docs_api.prototype.ShowThumbnails = function(bIsShow) { if (bIsShow) { this.WordControl.Splitter1Pos = this.WordControl.OldSplitter1Pos; if (this.WordControl.Splitter1Pos == 0) this.WordControl.Splitter1Pos = 70; this.WordControl.OnResizeSplitter(); } else { var old = this.WordControl.OldSplitter1Pos; this.WordControl.Splitter1Pos = 0; this.WordControl.OnResizeSplitter(); this.WordControl.OldSplitter1Pos = old; } } asc_docs_api.prototype.syncOnThumbnailsShow = function() { var bIsShow = true; if (0 == this.WordControl.Splitter1Pos) bIsShow = false; this.asc_fireCallback("asc_onThumbnailsShow", bIsShow); } //----------------------------------------------------------------- // Функции для работы с гиперссылками //----------------------------------------------------------------- asc_docs_api.prototype.can_AddHyperlink = function() { //if ( true === CollaborativeEditing.Get_GlobalLock() ) // return false; var bCanAdd = this.WordControl.m_oLogicDocument.Hyperlink_CanAdd(); if ( true === bCanAdd ) return this.WordControl.m_oLogicDocument.Get_SelectedText(true); return false; } // HyperProps - объект CHyperlinkProperty asc_docs_api.prototype.add_Hyperlink = function(HyperProps) { this.WordControl.m_oLogicDocument.Hyperlink_Add( HyperProps ); } // HyperProps - объект CHyperlinkProperty asc_docs_api.prototype.change_Hyperlink = function(HyperProps) { this.WordControl.m_oLogicDocument.Hyperlink_Modify( HyperProps ); } asc_docs_api.prototype.remove_Hyperlink = function() { this.WordControl.m_oLogicDocument.Hyperlink_Remove(); } function CHyperlinkProperty( obj ) { if( obj ) { this.Text = (undefined != obj.Text ) ? obj.Text : null; this.Value = (undefined != obj.Value ) ? obj.Value : ""; this.ToolTip = (undefined != obj.ToolTip) ? obj.ToolTip : null; } else { this.Text = null; this.Value = ""; this.ToolTip = null; } } CHyperlinkProperty.prototype.get_Value = function() { return this.Value; } CHyperlinkProperty.prototype.put_Value = function(v) { this.Value = v; } CHyperlinkProperty.prototype.get_ToolTip = function() { return this.ToolTip; } CHyperlinkProperty.prototype.put_ToolTip = function(v) { this.ToolTip = v; } CHyperlinkProperty.prototype.get_Text = function() { return this.Text; } CHyperlinkProperty.prototype.put_Text = function(v) { this.Text = v; } asc_docs_api.prototype.sync_HyperlinkPropCallback = function(hyperProp) { this.SelectedObjectsStack[this.SelectedObjectsStack.length] = new CSelectedObject( c_oAscTypeSelectElement.Hyperlink, new CHyperlinkProperty( hyperProp ) ); } asc_docs_api.prototype.sync_HyperlinkClickCallback = function(Url) { this.asc_fireCallback("asc_onHyperlinkClick", Url); } asc_docs_api.prototype.sync_CanAddHyperlinkCallback = function(bCanAdd) { //if ( true === CollaborativeEditing.Get_GlobalLock() ) // this.asc_fireCallback("asc_onCanAddHyperlink", false); //else this.asc_fireCallback("asc_onCanAddHyperlink", bCanAdd); } asc_docs_api.prototype.sync_DialogAddHyperlink = function() { this.asc_fireCallback("asc_onDialogAddHyperlink"); } asc_docs_api.prototype.GoToFooter = function(pageNumber) { if (this.WordControl.m_oDrawingDocument.IsFreezePage(pageNumber)) return; var oldClickCount = global_mouseEvent.ClickCount; global_mouseEvent.ClickCount = 2; this.WordControl.m_oLogicDocument.OnMouseDown(global_mouseEvent, 0, Page_Height, pageNumber); this.WordControl.m_oLogicDocument.OnMouseUp(global_mouseEvent, 0, Page_Height, pageNumber); this.WordControl.m_oLogicDocument.Document_UpdateInterfaceState(); global_mouseEvent.ClickCount = oldClickCount; } asc_docs_api.prototype.sync_shapePropCallback = function(pr) { var obj = CreateAscShapePropFromProp(pr); if (pr.fill != null && pr.fill.fill != null && pr.fill.fill.type == FILL_TYPE_BLIP) { this.WordControl.m_oDrawingDocument.DrawImageTextureFillShape(pr.fill.fill.RasterImageId); } else { this.WordControl.m_oDrawingDocument.DrawImageTextureFillShape(null); } var _len = this.SelectedObjectsStack.length; if (_len > 0) { if (this.SelectedObjectsStack[_len - 1].Type == c_oAscTypeSelectElement.Shape) { this.SelectedObjectsStack[_len - 1].Value = obj; return; } } this.SelectedObjectsStack[this.SelectedObjectsStack.length] = new CSelectedObject( c_oAscTypeSelectElement.Shape, obj ); } asc_docs_api.prototype.sync_slidePropCallback = function(slide) { if (!slide) return; var bg = slide.cSld.Bg; var obj = new CAscSlideProps(); var bgFill = slide.backgroundFill; // if (slide.cSld && slide.cSld.Bg && slide.cSld.Bg.bgPr) // bgFill = slide.cSld.Bg.bgPr.Fill; if(!bgFill) { obj.Background = new CAscFill(); obj.Background.type = c_oAscFill.FILL_TYPE_NOFILL; this.WordControl.m_oDrawingDocument.DrawImageTextureFillSlide(null); } else { obj.Background = CreateAscFill(bgFill); if (bgFill != null && bgFill.fill != null && bgFill.fill.type == FILL_TYPE_BLIP) { this.WordControl.m_oDrawingDocument.DrawImageTextureFillSlide(bgFill.fill.RasterImageId); } else { this.WordControl.m_oDrawingDocument.DrawImageTextureFillSlide(null); } } obj.Timing = slide.timing; obj.lockDelete = !(slide.deleteLock.Lock.Type === locktype_Mine || slide.deleteLock.Lock.Type === locktype_None); obj.lockLayout = !(slide.layoutLock.Lock.Type === locktype_Mine || slide.layoutLock.Lock.Type === locktype_None); obj.lockTiming = !(slide.timingLock.Lock.Type === locktype_Mine || slide.timingLock.Lock.Type === locktype_None); obj.lockTranzition = !(slide.transitionLock.Lock.Type === locktype_Mine || slide.transitionLock.Lock.Type === locktype_None); obj.lockBackground = !(slide.backgroundLock.Lock.Type === locktype_Mine || slide.backgroundLock.Lock.Type === locktype_None); obj.lockRemove = obj.lockDelete || obj.lockLayout || obj.lockTiming || obj.lockTranzition || obj.lockBackground ||slide.isLockedObject() ; var _len = this.SelectedObjectsStack.length; if (_len > 0) { if (this.SelectedObjectsStack[_len - 1].Type == c_oAscTypeSelectElement.Slide) { this.SelectedObjectsStack[_len - 1].Value = obj; return; } } this.SelectedObjectsStack[this.SelectedObjectsStack.length] = new CSelectedObject( c_oAscTypeSelectElement.Slide, obj ); } asc_docs_api.prototype.ExitHeader_Footer = function(pageNumber) { if (this.WordControl.m_oDrawingDocument.IsFreezePage(pageNumber)) return; var oldClickCount = global_mouseEvent.ClickCount; global_mouseEvent.ClickCount = 2; this.WordControl.m_oLogicDocument.OnMouseDown(global_mouseEvent, 0, Page_Height / 2, pageNumber); this.WordControl.m_oLogicDocument.OnMouseUp(global_mouseEvent, 0, Page_Height / 2, pageNumber); this.WordControl.m_oLogicDocument.Document_UpdateInterfaceState(); global_mouseEvent.ClickCount = oldClickCount; } asc_docs_api.prototype.GetCurrentPixOffsetY = function() { return this.WordControl.m_dScrollY; } asc_docs_api.prototype.SetPaintFormat = function(value) { this.isPaintFormat = value; this.WordControl.m_oLogicDocument.Document_Format_Copy(); } asc_docs_api.prototype.sync_PaintFormatCallback = function(value) { this.isPaintFormat = value; return this.asc_fireCallback("asc_onPaintFormatChanged", value); } asc_docs_api.prototype.ClearFormating = function() { this.WordControl.m_oLogicDocument.Paragraph_ClearFormatting(); } asc_docs_api.prototype.SetDeviceInputHelperId = function(idKeyboard) { if (window.ID_KEYBOARD_AREA === undefined && this.WordControl.m_oMainView != null) { window.ID_KEYBOARD_AREA = document.getElementById(idKeyboard); window.ID_KEYBOARD_AREA.onkeypress = function(e){ if (false === editor.WordControl.IsFocus) { editor.WordControl.IsFocus = true; var ret = editor.WordControl.onKeyPress(e); editor.WordControl.IsFocus = false; return ret; } } window.ID_KEYBOARD_AREA.onkeydown = function(e){ if (false === editor.WordControl.IsFocus) { editor.WordControl.IsFocus = true; var ret = editor.WordControl.onKeyDown(e); editor.WordControl.IsFocus = false; return ret; } } } window.ID_KEYBOARD_AREA.focus(); } asc_docs_api.prototype.SetViewMode = function( isViewMode ) { if (isViewMode) { this.isViewMode = true; this.ShowParaMarks = false; this.WordControl.m_bIsRuler = false; this.WordControl.m_oDrawingDocument.ClearCachePages(); this.WordControl.HideRulers(); if (null != this.WordControl.m_oLogicDocument) this.WordControl.m_oLogicDocument.viewMode = true; } else { if (this.bInit_word_control === true && this.FontLoader.embedded_cut_manager.bIsCutFontsUse) { this.isLoadNoCutFonts = true; this.FontLoader.embedded_cut_manager.bIsCutFontsUse = false; this.FontLoader.LoadDocumentFonts(this.WordControl.m_oLogicDocument.Fonts, true); return; } if ( this.bInit_word_control === true ) { CollaborativeEditing.Apply_Changes(); CollaborativeEditing.Release_Locks(); } this.isUseEmbeddedCutFonts = false; this.isViewMode = false; this.WordControl.checkNeedRules(); this.WordControl.m_oDrawingDocument.ClearCachePages(); this.WordControl.OnResize(true); if (null != this.WordControl.m_oLogicDocument) this.WordControl.m_oLogicDocument.viewMode = false; } } asc_docs_api.prototype.SetUseEmbeddedCutFonts = function(bUse) { this.isUseEmbeddedCutFonts = bUse; } asc_docs_api.prototype.IsNeedDefaultFonts = function() { if (this.WordControl.m_oLogicDocument != null) return true; return false; } asc_docs_api.prototype.can_AddHyperlink = function() { var bCanAdd = this.WordControl.m_oLogicDocument.Hyperlink_CanAdd(); if ( true === bCanAdd ) return this.WordControl.m_oLogicDocument.Get_SelectedText(true); return false; } asc_docs_api.prototype.add_Hyperlink = function(HyperProps) { this.WordControl.m_oLogicDocument.Hyperlink_Add( HyperProps ); } asc_docs_api.prototype.sync_HyperlinkClickCallback = function(Url) { var indAction = Url.indexOf("ppaction://hlink"); if (0 == indAction) { if (Url == "ppaction://hlinkshowjump?jump=firstslide") { this.WordControl.GoToPage(0); } else if (Url == "ppaction://hlinkshowjump?jump=lastslide") { this.WordControl.GoToPage(this.WordControl.m_oDrawingDocument.SlidesCount - 1); } else if (Url == "ppaction://hlinkshowjump?jump=nextslide") { this.WordControl.onNextPage(); } else if (Url == "ppaction://hlinkshowjump?jump=previousslide") { this.WordControl.onPrevPage(); } else { var mask = "ppaction://hlinksldjumpslide"; var indSlide = Url.indexOf(mask); if (0 == indSlide) { var slideNum = parseInt(Url.substring(mask.length)); if (slideNum >= 0 && slideNum < this.WordControl.m_oDrawingDocument.SlidesCount) this.WordControl.GoToPage(slideNum); } } return; } this.asc_fireCallback("asc_onHyperlinkClick", Url); } asc_docs_api.prototype.UpdateInterfaceState = function() { if (this.WordControl.m_oLogicDocument != null) { this.WordControl.m_oLogicDocument.Document_UpdateInterfaceState(); this.WordControl.CheckLayouts(true); } } asc_docs_api.prototype.OnMouseUp = function(x, y) { var _e = CreateMouseUpEventObject(x, y); Window_OnMouseUp(_e); //this.WordControl.onMouseUpExternal(x, y); } asc_docs_api.prototype.OnHandleMessage = function(event) { if (null != event && null != event.data) { var data = JSON.parse(event.data); if(null != data && null != data["type"]) { if(PostMessageType.UploadImage == data["type"]) { editor.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.UploadImage); if(c_oAscServerError.NoError == data["error"]) { var urls = data["urls"]; if(urls && urls.length > 0) this.AddImageUrl(urls[0]); } else this.sync_ErrorCallback(_mapAscServerErrorToAscError(data["error"]), c_oAscError.Level.NoCritical); } } } } asc_docs_api.prototype.asyncImageEndLoaded2 = null; asc_docs_api.prototype.ChangeTheme = function(indexTheme) { if (true === CollaborativeEditing.Get_GlobalLock()) return; if (!this.isViewMode && this.WordControl.m_oLogicDocument.Document_Is_SelectionLocked(changestype_Theme) === false) { CollaborativeEditing.m_bGlobalLock = true; this.WordControl.m_oLogicDocument.Create_NewHistoryPoint(); this.ThemeLoader.StartLoadTheme(indexTheme); } } asc_docs_api.prototype.StartLoadTheme = function() { } asc_docs_api.prototype.EndLoadTheme = function(theme_load_info) { this.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.LoadTheme); CollaborativeEditing.m_bGlobalLock = false; // применение темы var _array = this.WordControl.Thumbnails.GetSelectedArray(); this.WordControl.m_oLogicDocument.changeTheme(theme_load_info, _array.length <= 1 ? null : _array); this.WordControl.ThemeGenerateThumbnails(theme_load_info.Master); // меняем шаблоны в меню this.WordControl.CheckLayouts(); } asc_docs_api.prototype.ChangeLayout = function(layout_index) { var _array = this.WordControl.Thumbnails.GetSelectedArray(); var _master = this.WordControl.MasterLayouts; this.WordControl.m_oLogicDocument.changeLayout(_array, this.WordControl.MasterLayouts, layout_index); } asc_docs_api.prototype.put_ShapesAlign = function(type) { switch (type) { case c_oAscAlignShapeType.ALIGN_LEFT: { this.shapes_alignLeft(); break; } case c_oAscAlignShapeType.ALIGN_RIGHT: { this.shapes_alignRight(); break; } case c_oAscAlignShapeType.ALIGN_TOP: { this.shapes_alignTop(); break; } case c_oAscAlignShapeType.ALIGN_BOTTOM: { this.shapes_alignBottom(); break; } case c_oAscAlignShapeType.ALIGN_CENTER: { this.shapes_alignCenter(); break; } case c_oAscAlignShapeType.ALIGN_MIDDLE: { this.shapes_alignMiddle(); break; } default: break; } }; asc_docs_api.prototype.DistributeHorizontally = function() { this.WordControl.m_oLogicDocument.distributeHor(); }; asc_docs_api.prototype.DistributeVertically = function() { this.WordControl.m_oLogicDocument.distributeVer(); }; asc_docs_api.prototype.shapes_alignLeft = function() { this.WordControl.m_oLogicDocument.alignLeft(); }; asc_docs_api.prototype.shapes_alignRight = function() { this.WordControl.m_oLogicDocument.alignRight(); }; asc_docs_api.prototype.shapes_alignTop = function() { this.WordControl.m_oLogicDocument.alignTop(); }; asc_docs_api.prototype.shapes_alignBottom = function() { this.WordControl.m_oLogicDocument.alignBottom(); }; asc_docs_api.prototype.shapes_alignCenter = function() { this.WordControl.m_oLogicDocument.alignCenter(); }; asc_docs_api.prototype.shapes_alignMiddle = function() { this.WordControl.m_oLogicDocument.alignMiddle(); }; asc_docs_api.prototype.shapes_bringToFront = function() { this.WordControl.m_oLogicDocument.bringToFront(); }; asc_docs_api.prototype.shapes_bringForward = function() { this.WordControl.m_oLogicDocument.bringForward(); }; asc_docs_api.prototype.shapes_bringToBack = function() { this.WordControl.m_oLogicDocument.sendToBack(); }; asc_docs_api.prototype.shapes_bringBackward = function() { this.WordControl.m_oLogicDocument.bringBackward(); }; asc_docs_api.prototype.sync_endDemonstration = function() { this.asc_fireCallback("asc_onEndDemonstration"); }; asc_docs_api.prototype.sync_DemonstrationSlideChanged = function(slideNum) { this.asc_fireCallback("asc_onDemonstrationSlideChanged", slideNum); }; asc_docs_api.prototype.StartDemonstration = function(div_id, slidestart_num) { this.WordControl.DemonstrationManager.Start(div_id, slidestart_num, true); } asc_docs_api.prototype.EndDemonstration = function() { this.WordControl.DemonstrationManager.End(); } asc_docs_api.prototype.DemonstrationPlay = function() { this.WordControl.DemonstrationManager.Play(); } asc_docs_api.prototype.DemonstrationPause = function() { this.WordControl.DemonstrationManager.Pause(); } asc_docs_api.prototype.DemonstrationEndShowMessage = function(message) { this.WordControl.DemonstrationManager.EndShowMessage = message; } asc_docs_api.prototype.DemonstrationNextSlide = function() { this.WordControl.DemonstrationManager.NextSlide(); } asc_docs_api.prototype.DemonstrationPrevSlide = function() { this.WordControl.DemonstrationManager.PrevSlide(); } asc_docs_api.prototype.DemonstrationGoToSlide = function(slideNum) { this.WordControl.DemonstrationManager.GoToSlide(slideNum); } asc_docs_api.prototype.ApplySlideTiming = function(oTiming) { if(this.WordControl.m_oLogicDocument.Document_Is_SelectionLocked(changestype_SlideTiming) === false) { History.Create_NewPoint(); var _count = this.WordControl.m_oDrawingDocument.SlidesCount; var _cur = this.WordControl.m_oDrawingDocument.SlideCurrent; if (_cur < 0 || _cur >= _count) return; var _curSlide = this.WordControl.m_oLogicDocument.Slides[_cur]; _curSlide.applyTiming(oTiming); } this.WordControl.m_oLogicDocument.Document_UpdateInterfaceState(); } asc_docs_api.prototype.SlideTimingApplyToAll = function() { var _count = this.WordControl.m_oDrawingDocument.SlidesCount; var _cur = this.WordControl.m_oDrawingDocument.SlideCurrent; var _slides = this.WordControl.m_oLogicDocument.Slides; if (_cur < 0 || _cur >= _count) return; var _curSlide = _slides[_cur]; _curSlide.timing.makeDuplicate(this.WordControl.m_oLogicDocument.DefaultSlideTiming); var _default = this.WordControl.m_oLogicDocument.DefaultSlideTiming; for (var i = 0; i < _count; i++) { if (i == _cur) continue; _slides[i].applyTiming(_default); } } asc_docs_api.prototype.SlideTransitionPlay = function() { var _count = this.WordControl.m_oDrawingDocument.SlidesCount; var _cur = this.WordControl.m_oDrawingDocument.SlideCurrent; if (_cur < 0 || _cur >= _count) return; var _timing = this.WordControl.m_oLogicDocument.Slides[_cur].timing; var _tr = this.WordControl.m_oDrawingDocument.TransitionSlide; _tr.Type = _timing.TransitionType; _tr.Param = _timing.TransitionOption; _tr.Duration = _timing.TransitionDuration; _tr.Start(true); } asc_docs_api.prototype.SetTextBoxInputMode = function(bIsEA) { this.WordControl.SetTextBoxMode(bIsEA); } asc_docs_api.prototype.GetTextBoxInputMode = function() { return this.WordControl.TextBoxInputMode; } asc_docs_api.prototype.asc_setCoAuthoringEnable = function (isCoAuthoringEnable) { this.isCoAuthoringEnable = !!isCoAuthoringEnable; } asc_docs_api.prototype.sync_EndAddShape = function() { editor.asc_fireCallback("asc_onEndAddShape"); if (this.WordControl.m_oDrawingDocument.m_sLockedCursorType == "crosshair") { this.WordControl.m_oDrawingDocument.UnlockCursorType(); } } // Вставка диаграмм asc_docs_api.prototype.asc_getChartObject = function(type) { this.isChartEditor = true; // Для совместного редактирования return this.WordControl.m_oLogicDocument.Get_ChartObject(type); } asc_docs_api.prototype.asc_addChartDrawingObject = function(chartBinary) { /**/ // Приводим бинарик к объекту типа CChartAsGroup и добавляем объект if ( isObject(chartBinary) ) { //if ( false === this.WordControl.m_oLogicDocument.Document_Is_SelectionLocked(changestype_Drawing_Props) ) { this.WordControl.m_oLogicDocument.addChart(chartBinary); } } } asc_docs_api.prototype.asc_editChartDrawingObject = function(chartBinary) { /**/ // Находим выделенную диаграмму и накатываем бинарник if ( isRealObject(chartBinary) ) { this.WordControl.m_oLogicDocument.Edit_Chart(chartBinary["binary"]); } } asc_docs_api.prototype.asc_getChartPreviews = function(chartType) { return this.chartPreviewManager.getChartPreviews(chartType); } asc_docs_api.prototype.sync_closeChartEditor = function() { this.asc_fireCallback("asc_onCloseChartEditor"); } //----------------------------------------------------------------- // События контекстного меню //----------------------------------------------------------------- function CContextMenuData(oData) { if(isRealObject(oData)) { this.Type = oData.Type; this.X_abs = oData.X_abs; this.Y_abs = oData.Y_abs; this.IsSlideSelect = oData.IsSlideSelect; } else { this.Type = c_oAscContextMenuTypes.Main; this.X_abs = 0; this.Y_abs = 0; this.IsSlideSelect = true; } } CContextMenuData.prototype.get_Type = function() { return this.Type; }; CContextMenuData.prototype.get_X = function() { return this.X_abs; }; CContextMenuData.prototype.get_Y = function() { return this.Y_abs; }; CContextMenuData.prototype.get_IsSlideSelect = function() { return this.IsSlideSelect; }; asc_docs_api.prototype.sync_ContextMenuCallback = function(Data) { this.asc_fireCallback("asc_onContextMenu", Data); }; var cCharDelimiter = String.fromCharCode(5); function getURLParameter(name) { return (RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]; } function sendCommand(editor, fCallback, rdata){ var sData; var sRequestContentType = "application/json"; //json не должен превышать размера g_nMaxJsonLength, иначе при его чтении будет exception if(null != rdata["data"] && "string" === typeof(rdata["data"]) && rdata["data"].length > g_nMaxJsonLengthChecked) { var sTemp = rdata["data"]; rdata["data"] = null; sData = "mnuSaveAs" + cCharDelimiter + JSON.stringify(rdata) + cCharDelimiter + sTemp; sRequestContentType = "application/octet-stream"; } else sData = JSON.stringify(rdata); asc_ajax({ type: 'POST', url: g_sMainServiceLocalUrl, data: sData, contentType: sRequestContentType, error: function(){ editor.asc_fireCallback("asc_onError",c_oAscError.ID.Unknown,c_oAscError.Level.Critical); if(fCallback) fCallback(); }, success: function(msg){ var incomeObject = JSON.parse(msg), rData; switch(incomeObject["type"]){ case "updateversion": if (editor.isViewMode) _onOpenCommand(fCallback, incomeObject); else editor.asc_fireCallback("asc_onDocumentUpdateVersion", function () { editor.SetViewMode(true); _onOpenCommand(fCallback, incomeObject); }); break; case "open": _onOpenCommand(fCallback, incomeObject); break; case "waitopen": if (incomeObject["data"]) { editor._lastConvertProgress = incomeObject["data"] / 2; editor.sync_SendProgress(editor._lastConvertProgress); } rData = { "id":documentId, "userid": documentUserId, "format": documentFormat, "vkey": documentVKey, "editorid": c_oEditorId.Presentation, "c":"chopen"}; setTimeout( function(){sendCommand(editor, fCallback, rData)}, 3000); break; case "save": if(fCallback) fCallback(incomeObject); break; case "waitsave": rData = { "id":documentId, "userid": documentUserId, "vkey": documentVKey, "title": documentTitleWithoutExtention, "c":"chsave", "data": incomeObject["data"]}; setTimeout( function(){sendCommand(editor, fCallback, rData)}, 3000); break; case "savepart": var outputData = JSON.parse(incomeObject["data"]); _downloadAs(editor, outputData["format"], fCallback, false, outputData["savekey"]); break; case "getsettings": if(fCallback) fCallback(incomeObject); break; case "err": var nErrorLevel = c_oAscError.Level.NoCritical; //todo передалеть работу с callback if("getsettings" == rdata["c"] || "open" == rdata["c"] || "chopen" == rdata["c"] || "create" == rdata["c"]) nErrorLevel = c_oAscError.Level.Critical; editor.asc_fireCallback("asc_onError",_mapAscServerErrorToAscError(parseInt(incomeObject["data"])),nErrorLevel); if(fCallback) fCallback(incomeObject); break; default: if(fCallback) fCallback(incomeObject); break; } } }); } function sendTrack(fCallback, url, rdata){ asc_ajax({ type: 'POST', url: url, data: rdata, contentType: "application/json", error: function(){ if(fCallback) fCallback(); }, success: function(msg){ var incomeObject = JSON.parse(msg); if(fCallback) fCallback(incomeObject); } }) } function _onOpenCommand(fCallback, incomeObject) { var sJsonUrl = g_sResourceServiceLocalUrl + incomeObject["data"]; asc_ajax({ url: sJsonUrl, dataType: "text", success: function(result) { //получаем url к папке с файлом var url; var nIndex = sJsonUrl.lastIndexOf("/"); if(-1 != nIndex) url = sJsonUrl.substring(0, nIndex + 1); else url = sJsonUrl; var bIsViewer = false; if(result.length > 0) { if(c_oSerFormat.Signature != result.substring(0, c_oSerFormat.Signature.length)) bIsViewer = true; } if(true == bIsViewer) editor.OpenDocument(url, result); else editor.OpenDocument2(url, result); //callback editor.DocumentOrientation = (null == editor.WordControl.m_oLogicDocument) ? true : !editor.WordControl.m_oLogicDocument.Orientation; editor.sync_DocSizeCallback(Page_Width, Page_Height); editor.sync_PageOrientCallback(editor.get_DocumentOrientation()); if(fCallback) fCallback(incomeObject); }, error:function(){ editor.asc_fireCallback("asc_onError",c_oAscError.ID.Unknown,c_oAscError.Level.Critical); if(fCallback) fCallback(); } }); } function _downloadAs(editor, filetype, fCallback, bStart, sSaveKey) { var oAdditionalData = {}; oAdditionalData["c"] = "save"; oAdditionalData["id"] = documentId; oAdditionalData["userid"] = documentUserId; oAdditionalData["vkey"] = documentVKey; oAdditionalData["outputformat"] = filetype; if(null != sSaveKey) oAdditionalData["savekey"] = sSaveKey; if(c_oAscFileType.PDF == filetype) { var dd = editor.WordControl.m_oDrawingDocument; if(dd.isComleteRenderer2()) { if(false == bStart) oAdditionalData["savetype"] = "complete"; else oAdditionalData["savetype"] = "completeall"; } else { if(false == bStart) oAdditionalData["savetype"] = "part"; else oAdditionalData["savetype"] = "partstart"; } oAdditionalData["data"] = dd.ToRendererPart(); sendCommand(editor, fCallback, oAdditionalData); } else { oAdditionalData["savetype"] = "completeall"; oAdditionalData["data"] = editor.WordControl.SaveDocument(); sendCommand(editor, fCallback, oAdditionalData); } } function _getFullImageSrc(src) { if (window["NATIVE_EDITOR_ENJINE"]) return src; if (0 == src.indexOf("theme")) return editor.ThemeLoader.ThemesUrl + src; if(0 != src.indexOf("http:") && 0 != src.indexOf("data:") && 0 != src.indexOf("https:") && 0 != src.indexOf("ftp:") && 0 != src.indexOf("file:")) { if (0 == src.indexOf(editor.DocumentUrl)) return src; if (0 == src.indexOf(editor.ThemeLoader.ThemesUrl)) return src; return editor.DocumentUrl + "media/" + src; } else return src; } function _mapAscServerErrorToAscError(nServerError) { var nRes = c_oAscError.ID.Unknown; switch(nServerError) { case c_oAscServerError.NoError : nRes = c_oAscError.ID.No;break; case c_oAscServerError.TaskQueue : case c_oAscServerError.TaskResult : nRes = c_oAscError.ID.Database;break; case c_oAscServerError.ConvertDownload : nRes = c_oAscError.ID.DownloadError;break; case c_oAscServerError.ConvertTimeout : nRes = c_oAscError.ID.ConvertationTimeout;break; case c_oAscServerError.ConvertMS_OFFCRYPTO : nRes = c_oAscError.ID.ConvertationPassword;break; case c_oAscServerError.ConvertUnknownFormat : case c_oAscServerError.ConvertReadFile : case c_oAscServerError.Convert : nRes = c_oAscError.ID.ConvertationError;break; case c_oAscServerError.UploadContentLength : nRes = c_oAscError.ID.UplImageSize;break; case c_oAscServerError.UploadExtension : nRes = c_oAscError.ID.UplImageExt;break; case c_oAscServerError.UploadCountFiles : nRes = c_oAscError.ID.UplImageFileCount;break; case c_oAscServerError.VKey : nRes = c_oAscError.ID.FileVKey;break; case c_oAscServerError.VKeyEncrypt : nRes = c_oAscError.ID.VKeyEncrypt;break; case c_oAscServerError.VKeyKeyExpire : nRes = c_oAscError.ID.KeyExpire;break; case c_oAscServerError.VKeyUserCountExceed : nRes = c_oAscError.ID.UserCountExceed;break; case c_oAscServerError.Storage : case c_oAscServerError.StorageFileNoFound : case c_oAscServerError.StorageRead : case c_oAscServerError.StorageWrite : case c_oAscServerError.StorageRemoveDir : case c_oAscServerError.StorageCreateDir : case c_oAscServerError.StorageGetInfo : case c_oAscServerError.Upload : case c_oAscServerError.ReadRequestStream : case c_oAscServerError.Unknown : nRes = c_oAscError.ID.Unknown;break; } return nRes; } function asc_ajax(obj){ var url = "", type = "GET", async = true, data = null, dataType = "text/xml", error = null, success = null, httpRequest = null, contentType = "application/x-www-form-urlencoded", init = function (obj){ if ( typeof (obj.url) != 'undefined' ){ url = obj.url; } if ( typeof (obj.type) != 'undefined' ){ type = obj.type; } if ( typeof (obj.async) != 'undefined' ){ async = obj.async; } if ( typeof (obj.data) != 'undefined' ){ data = obj.data; } if ( typeof (obj.dataType) != 'undefined' ){ dataType = obj.dataType; } if ( typeof (obj.error) != 'undefined' ){ error = obj.error; } if ( typeof (obj.success) != 'undefined' ){ success = obj.success; } if ( typeof (obj.contentType) != 'undefined' ){ contentType = obj.contentType; } if (window.XMLHttpRequest) { // Mozilla, Safari, ... httpRequest = new XMLHttpRequest(); if (httpRequest.overrideMimeType) { httpRequest.overrideMimeType(dataType); } } else if (window.ActiveXObject) { // IE try { httpRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } httpRequest.onreadystatechange = function(){ respons(this); }; send(); }, send = function(){ httpRequest.open(type, url, async); if (type === "POST") httpRequest.setRequestHeader("Content-Type", contentType); httpRequest.send(data); }, respons = function(httpRequest){ switch (httpRequest.readyState) { case 0: // The object has been created, but not initialized (the open method has not been called). break; case 1: // A request has been opened, but the send method has not been called. break; case 2: // The send method has been called. No data is available yet. break; case 3: // Some data has been received; however, neither responseText nor responseBody is available. break; case 4: if (httpRequest.status == 200 || httpRequest.status == 1223) { if (typeof success === "function") success(httpRequest.responseText); } else { if (typeof error === "function") error(httpRequest,httpRequest.statusText,httpRequest.status); } break; } }; init(obj); } //test window["asc_docs_api"] = asc_docs_api; window["asc_docs_api"].prototype["asc_nativeOpenFile"] = function(base64File, version) { this.DocumentUrl = "TeamlabNative"; window.g_cAscCoAuthoringUrl = ""; window.g_cAscSpellCheckUrl = ""; this.User = new Asc.asc_CUser(); this.User.asc_setId("TM"); this.User.asc_setUserName("native"); this.WordControl.m_bIsRuler = false; this.WordControl.Init(); this.InitEditor(); g_oIdCounter.Set_Load(true); var _loader = new BinaryPPTYLoader(); _loader.Api = this; if (version === undefined) { _loader.Load(base64File, this.WordControl.m_oLogicDocument); _loader.Check_TextFit(); } else { _loader.Load2(base64File, this.WordControl.m_oLogicDocument); _loader.Check_TextFit(); } this.LoadedObject = 1; g_oIdCounter.Set_Load(false); } window["asc_docs_api"].prototype["asc_nativeCalculateFile"] = function() { this.bNoSendComments = false; this.ShowParaMarks = false; var presentation = this.WordControl.m_oLogicDocument; presentation.Recalculate({Drawings: {All: true, Map: {}}}); presentation.DrawingDocument.OnEndRecalculate(); } window["asc_docs_api"].prototype["asc_nativeApplyChanges"] = function(changes) { var _len = changes.length; for (var i = 0; i < _len; i++) { var Changes = new CCollaborativeChanges(); Changes.Set_Data( changes[i]); CollaborativeEditing.Add_Changes( Changes ); } CollaborativeEditing.Apply_OtherChanges(); } window["asc_docs_api"].prototype["asc_nativeApplyChanges2"] = function(data, isFull) { // Чтобы заново созданные параграфы не отображались залоченными g_oIdCounter.Set_Load( true ); var stream = new FT_Stream2(data, data.length); stream.obj = null; var Loader = { Reader : stream, Reader2 : null }; var _color = new CDocumentColor( 191, 255, 199 ); // Применяем изменения, пока они есть var _count = Loader.Reader.GetLong(); var _pos = 4; for (var i = 0; i < _count; i++) { if (window["NATIVE_EDITOR_ENJINE"] === true && window["native"]["CheckNextChange"]) { if (!window["native"]["CheckNextChange"]()) break; } var _len = Loader.Reader.GetLong(); _pos += 4; stream.size = _pos + _len; var _id = Loader.Reader.GetString2(); var _read_pos = Loader.Reader.GetCurPos(); var Type = Loader.Reader.GetLong(); var Class = null; if ( historyitem_type_HdrFtr === Type ) { Class = editor.WordControl.m_oLogicDocument.HdrFtr; } else Class = g_oTableId.Get_ById( _id ); stream.Seek(_read_pos); stream.Seek2(_read_pos); if ( null != Class ) Class.Load_Changes( Loader.Reader, Loader.Reader2, _color ); _pos += _len; stream.Seek2(_pos); stream.size = data.length; } if (isFull) { CollaborativeEditing.m_aChanges = []; // У новых элементов выставляем указатели на другие классы CollaborativeEditing.Apply_LinkData(); // Делаем проверки корректности новых изменений CollaborativeEditing.Check_MergeData(); CollaborativeEditing.OnEnd_ReadForeignChanges(); } g_oIdCounter.Set_Load( false ); } window["asc_docs_api"].prototype["asc_nativeGetFile"] = function() { var writer = new CBinaryFileWriter(); this.WordControl.m_oLogicDocument.CalculateComments(); return writer.WriteDocument(this.WordControl.m_oLogicDocument); } window["asc_docs_api"].prototype["asc_nativeGetFileData"] = function() { var writer = new CBinaryFileWriter(); this.WordControl.m_oLogicDocument.CalculateComments(); writer.WriteDocument2(this.WordControl.m_oLogicDocument); var _header = "PPTY;v1;" + writer.pos + ";"; window["native"]["Save_End"](_header, writer.pos); return writer.ImData.data; } window["asc_docs_api"].prototype["asc_nativeCheckPdfRenderer"] = function(_memory1, _memory2) { if (true) { // pos не должен минимизироваться!!! _memory1.Copy = _memory1["Copy"]; _memory1.ClearNoAttack = _memory1["ClearNoAttack"]; _memory1.WriteByte = _memory1["WriteByte"]; _memory1.WriteBool = _memory1["WriteBool"]; _memory1.WriteLong = _memory1["WriteLong"]; _memory1.WriteDouble = _memory1["WriteDouble"]; _memory1.WriteString = _memory1["WriteString"]; _memory1.WriteString2 = _memory1["WriteString2"]; _memory2.Copy = _memory1["Copy"]; _memory2.ClearNoAttack = _memory1["ClearNoAttack"]; _memory2.WriteByte = _memory1["WriteByte"]; _memory2.WriteBool = _memory1["WriteBool"]; _memory2.WriteLong = _memory1["WriteLong"]; _memory2.WriteDouble = _memory1["WriteDouble"]; _memory2.WriteString = _memory1["WriteString"]; _memory2.WriteString2 = _memory1["WriteString2"]; } var _printer = new CDocumentRenderer(); _printer.Memory = _memory1; _printer.VectorMemoryForPrint = _memory2; return _printer; }, window["asc_docs_api"].prototype["asc_nativeCalculate"] = function() { } window["asc_docs_api"].prototype["asc_nativePrint"] = function(_printer, _page) { var _logic_doc = this.WordControl.m_oLogicDocument; _printer.BeginPage(_logic_doc.Width, _logic_doc.Height); _logic_doc.DrawPage(_page, _printer); _printer.EndPage(); } window["asc_docs_api"].prototype["asc_nativePrintPagesCount"] = function() { return this.WordControl.m_oDrawingDocument.SlidesCount; }