Commit 41d3be0a authored by Alexander.Trofimov's avatar Alexander.Trofimov

delete spellcheck desctop -> override functions

add init spellcheck from server and asc_onSpellCheckInit event with array languages from server
parent a3832b6d
...@@ -444,8 +444,7 @@ ...@@ -444,8 +444,7 @@
/** /**
* Event об отсоединении от сервера * Event об отсоединении от сервера
* @param {jQuery} e event об отсоединении с причиной * @param {jQuery} e event об отсоединении с причиной
* @param {Bool} isDisconnectAtAll окончательно ли отсоединяемся(true) или будем пробовать сделать reconnect(false) + сами отключились * @param {Asc.c_oAscError.ID} errorCode
* @param {Bool} isCloseCoAuthoring
*/ */
CDocsCoApi.prototype.callback_OnDisconnect = function(e, errorCode) { CDocsCoApi.prototype.callback_OnDisconnect = function(e, errorCode) {
if (this.onDisconnect) { if (this.onDisconnect) {
......
...@@ -32,42 +32,44 @@ ...@@ -32,42 +32,44 @@
"use strict"; "use strict";
(function(window) { (function (window) {
'use strict'; 'use strict';
// Класс надстройка, для online и offline работы // Класс надстройка, для online и offline работы
var CSpellCheckApi = function(options) { var CSpellCheckApi = function () {
this._SpellCheckApi = new SpellCheckApi(); this._SpellCheckApi = new SpellCheckApi();
this._onlineWork = false; this._onlineWork = false;
if (options) { this.onDisconnect = null;
this.onDisconnect = options.onDisconnect; this.onSpellCheck = null;
this.onSpellCheck = options.onSpellCheck; this.onSpellCheck = null;
}
}; };
CSpellCheckApi.prototype.init = function(docid) { CSpellCheckApi.prototype.init = function (docid) {
if (this._SpellCheckApi && this._SpellCheckApi.isRightURL()) { if (this._SpellCheckApi && this._SpellCheckApi.isRightURL()) {
var t = this; var t = this;
this._SpellCheckApi.onDisconnect = function(e, isDisconnectAtAll, isCloseCoAuthoring) { this._SpellCheckApi.onDisconnect = function (e, isDisconnectAtAll, isCloseCoAuthoring) {
t.callback_OnDisconnect(e, isDisconnectAtAll, isCloseCoAuthoring); t.callback_OnDisconnect(e, isDisconnectAtAll, isCloseCoAuthoring);
}; };
this._SpellCheckApi.onSpellCheck = function(e) { this._SpellCheckApi.onSpellCheck = function (e) {
t.callback_OnSpellCheck(e); t.callback_OnSpellCheck(e);
}; };
this._SpellCheckApi.onInit = function (e) {
t.callback_OnInit(e);
};
this._SpellCheckApi.init(docid); this._SpellCheckApi.init(docid);
this._onlineWork = true; this._onlineWork = true;
} }
}; };
CSpellCheckApi.prototype.set_url = function(url) { CSpellCheckApi.prototype.set_url = function (url) {
if (this._SpellCheckApi) { if (this._SpellCheckApi) {
this._SpellCheckApi.set_url(url); this._SpellCheckApi.set_url(url);
} }
}; };
CSpellCheckApi.prototype.get_state = function() { CSpellCheckApi.prototype.get_state = function () {
if (this._SpellCheckApi) { if (this._SpellCheckApi) {
return this._SpellCheckApi.get_state(); return this._SpellCheckApi.get_state();
} }
...@@ -75,30 +77,35 @@ ...@@ -75,30 +77,35 @@
return 0; return 0;
}; };
CSpellCheckApi.prototype.disconnect = function() { CSpellCheckApi.prototype.disconnect = function () {
if (this._SpellCheckApi && this._onlineWork) { if (this._SpellCheckApi && this._onlineWork) {
this._SpellCheckApi.disconnect(); this._SpellCheckApi.disconnect();
} }
}; };
CSpellCheckApi.prototype.spellCheck = function(spellCheckData) { CSpellCheckApi.prototype.spellCheck = function (spellCheckData) {
if (this._SpellCheckApi && this._onlineWork) { if (this._SpellCheckApi && this._onlineWork) {
this._SpellCheckApi.spellCheck(spellCheckData); this._SpellCheckApi.spellCheck(spellCheckData);
} }
}; };
CSpellCheckApi.prototype.callback_OnSpellCheck = function(e) { CSpellCheckApi.prototype.callback_OnSpellCheck = function (e) {
if (this.onSpellCheck) { if (this.onSpellCheck) {
return this.onSpellCheck(e); return this.onSpellCheck(e);
} }
}; };
CSpellCheckApi.prototype.callback_OnInit = function (e) {
if (this.onInit) {
return this.onInit(e);
}
};
/** /**
* Event об отсоединении от сервера * Event об отсоединении от сервера
* @param {jQuery} e event об отсоединении с причиной * @param {jQuery} e event об отсоединении с причиной
* @param {Bool} isDisconnectAtAll окончательно ли отсоединяемся(true) или будем пробовать сделать reconnect(false) + сами отключились * @param {Bool} isDisconnectAtAll окончательно ли отсоединяемся(true) или будем пробовать сделать reconnect(false) + сами отключились
*/ */
CSpellCheckApi.prototype.callback_OnDisconnect = function(e, isDisconnectAtAll, isCloseCoAuthoring) { CSpellCheckApi.prototype.callback_OnDisconnect = function (e, isDisconnectAtAll, isCloseCoAuthoring) {
if (this.onDisconnect) { if (this.onDisconnect) {
return this.onDisconnect(e, isDisconnectAtAll, isCloseCoAuthoring); return this.onDisconnect(e, isDisconnectAtAll, isCloseCoAuthoring);
} }
...@@ -110,12 +117,12 @@ ...@@ -110,12 +117,12 @@
* 1 - opened * 1 - opened
* 3 - closed * 3 - closed
*/ */
var SpellCheckApi = function(options) { var SpellCheckApi = function () {
if (options) { this.onDisconnect = null;
this.onDisconnect = options.onDisconnect; this.onConnect = null;
this.onConnect = options.onConnect; this.onSpellCheck = null;
this.onSpellCheck = options.onSpellCheck; this.onInit = null;
}
this._state = 0; this._state = 0;
// Мы сами отключились от совместного редактирования // Мы сами отключились от совместного редактирования
this.isCloseCoAuthoring = false; this.isCloseCoAuthoring = false;
...@@ -126,29 +133,29 @@ ...@@ -126,29 +133,29 @@
this._url = ""; this._url = "";
}; };
SpellCheckApi.prototype.isRightURL = function() { SpellCheckApi.prototype.isRightURL = function () {
return ("" != this._url); return ("" !== this._url);
}; };
SpellCheckApi.prototype.set_url = function(url) { SpellCheckApi.prototype.set_url = function (url) {
this._url = url; this._url = url;
}; };
SpellCheckApi.prototype.get_state = function() { SpellCheckApi.prototype.get_state = function () {
return this._state; return this._state;
}; };
SpellCheckApi.prototype.spellCheck = function(spellCheckData) { SpellCheckApi.prototype.spellCheck = function (spellCheckData) {
this._send({"type": "spellCheck", "spellCheckData": spellCheckData}); this._send({"type": "spellCheck", "spellCheckData": spellCheckData});
}; };
SpellCheckApi.prototype.disconnect = function() { SpellCheckApi.prototype.disconnect = function () {
// Отключаемся сами // Отключаемся сами
this.isCloseCoAuthoring = true; this.isCloseCoAuthoring = true;
return this.sockjs.close(); return this.sockjs.close();
}; };
SpellCheckApi.prototype._send = function(data) { SpellCheckApi.prototype._send = function (data) {
if (data !== null && typeof data === "object") { if (data !== null && typeof data === "object") {
if (this._state > 0) { if (this._state > 0) {
this.sockjs.send(JSON.stringify(data)); this.sockjs.send(JSON.stringify(data));
...@@ -158,26 +165,32 @@ ...@@ -158,26 +165,32 @@
} }
}; };
SpellCheckApi.prototype._sendAfterConnect = function() { SpellCheckApi.prototype._sendAfterConnect = function () {
var data; var data;
while (this._state > 0 && undefined !== (data = this.dataNeedSend.shift())) while (this._state > 0 && undefined !== (data = this.dataNeedSend.shift()))
this._send(data); this._send(data);
}; };
SpellCheckApi.prototype._onSpellCheck = function(data) { SpellCheckApi.prototype._onSpellCheck = function (data) {
if (undefined !== data["spellCheckData"] && this.onSpellCheck) { if (data["spellCheckData"] && this.onSpellCheck) {
this.onSpellCheck(data["spellCheckData"]); this.onSpellCheck(data["spellCheckData"]);
} }
}; };
SpellCheckApi.prototype._onInit = function (data) {
if (data["languages"] && this.onInit) {
this.onInit(data["languages"]);
}
};
var reconnectTimeout, attemptCount = 0; var reconnectTimeout, attemptCount = 0;
function initSocksJs(url, docsCoApi) { function initSocksJs(url, docsCoApi) {
//ограничиваем transports WebSocket и XHR / JSONP polling, как и engine.io https://github.com/socketio/engine.io //ограничиваем transports WebSocket и XHR / JSONP polling, как и engine.io https://github.com/socketio/engine.io
//при переборе streaming transports у клиента с wirewall происходило зацикливание(не повторялось в версии sock.js 0.3.4) //при переборе streaming transports у клиента с wirewall происходило зацикливание(не повторялось в версии sock.js 0.3.4)
var sockjs = new (_getSockJs())(url, null, {transports: ['websocket', 'xdr-polling', 'xhr-polling', 'iframe-xhr-polling', 'jsonp-polling']}); var sockjs = new (_getSockJs())(url, null,
{transports: ['websocket', 'xdr-polling', 'xhr-polling', 'iframe-xhr-polling', 'jsonp-polling']});
sockjs.onopen = function() { sockjs.onopen = function () {
if (reconnectTimeout) { if (reconnectTimeout) {
clearTimeout(reconnectTimeout); clearTimeout(reconnectTimeout);
attemptCount = 0; attemptCount = 0;
...@@ -191,7 +204,7 @@ ...@@ -191,7 +204,7 @@
docsCoApi._sendAfterConnect(); docsCoApi._sendAfterConnect();
}; };
sockjs.onmessage = function(e) { sockjs.onmessage = function (e) {
//TODO: add checks and error handling //TODO: add checks and error handling
//Get data type //Get data type
var dataObject = JSON.parse(e.data); var dataObject = JSON.parse(e.data);
...@@ -200,9 +213,12 @@ ...@@ -200,9 +213,12 @@
case 'spellCheck' : case 'spellCheck' :
docsCoApi._onSpellCheck(dataObject); docsCoApi._onSpellCheck(dataObject);
break; break;
case 'init':
docsCoApi._onInit(dataObject);
break;
} }
}; };
sockjs.onclose = function(evt) { sockjs.onclose = function (evt) {
docsCoApi._state = -1; // Reconnect state docsCoApi._state = -1; // Reconnect state
var bIsDisconnectAtAll = attemptCount >= 20 || docsCoApi.isCloseCoAuthoring; var bIsDisconnectAtAll = attemptCount >= 20 || docsCoApi.isCloseCoAuthoring;
if (bIsDisconnectAtAll) { if (bIsDisconnectAtAll) {
...@@ -225,7 +241,7 @@ ...@@ -225,7 +241,7 @@
clearTimeout(reconnectTimeout); clearTimeout(reconnectTimeout);
} }
attemptCount++; attemptCount++;
reconnectTimeout = setTimeout(function() { reconnectTimeout = setTimeout(function () {
delete docsCoApi.sockjs; delete docsCoApi.sockjs;
docsCoApi.sockjs = initSocksJs(url, docsCoApi); docsCoApi.sockjs = initSocksJs(url, docsCoApi);
}, 500 * attemptCount); }, 500 * attemptCount);
...@@ -239,15 +255,16 @@ ...@@ -239,15 +255,16 @@
return window['SockJS'] ? window['SockJS'] : require('sockjs'); return window['SockJS'] ? window['SockJS'] : require('sockjs');
} }
SpellCheckApi.prototype.init = function(docid) { SpellCheckApi.prototype.init = function (docid) {
this._docid = docid; this._docid = docid;
var re = /^https?:\/\//; var re = /^https?:\/\//;
var spellcheckUrl = this._url + '/doc/' + docid + '/c' var spellcheckUrl = this._url + '/doc/' + docid + '/c';
if(re.test(this._url)) if (re.test(this._url)) {
this.sockjs_url = spellcheckUrl; this.sockjs_url = spellcheckUrl;
else } else {
this.sockjs_url = AscCommon.getBaseUrl() + "../../../.." + spellcheckUrl; this.sockjs_url = AscCommon.getBaseUrl() + "../../../.." + spellcheckUrl;
}
//Begin send auth //Begin send auth
this.sockjs = initSocksJs(this.sockjs_url, this); this.sockjs = initSocksJs(this.sockjs_url, this);
......
...@@ -446,7 +446,7 @@ ...@@ -446,7 +446,7 @@
this.tmpZoomType = null; this.tmpZoomType = null;
// Spell Checking // Spell Checking
this.SpellCheckApi = (window["AscDesktopEditor"] === undefined) ? new AscCommon.CSpellCheckApi() : new CSpellCheckApi_desktop(); this.SpellCheckApi = new AscCommon.CSpellCheckApi();
this.isSpellCheckEnable = true; this.isSpellCheckEnable = true;
// это чтобы сразу показать ридер, без возможности вернуться в редактор/вьюер // это чтобы сразу показать ридер, без возможности вернуться в редактор/вьюер
...@@ -1228,18 +1228,24 @@ background-repeat: no-repeat;\ ...@@ -1228,18 +1228,24 @@ background-repeat: no-repeat;\
} }
var t = this; var t = this;
if (!window["AscDesktopEditor"]) if (window["AscDesktopEditor"]) {
{ this.SpellCheckApi.spellCheck = function (spellData) {
if (this.SpellCheckUrl && this.isSpellCheckEnable) window["AscDesktopEditor"]["SpellCheck"](spellData);
this.SpellCheckApi.set_url(this.SpellCheckUrl); };
this.SpellCheckApi.disconnect = function () {
this.SpellCheckApi.onSpellCheck = function(e)
{
var incomeObject = JSON.parse(e);
t.SpellCheck_CallBack(incomeObject);
}; };
} else {
if (this.SpellCheckUrl && this.isSpellCheckEnable) {
this.SpellCheckApi.set_url(this.SpellCheckUrl);
}
} }
this.SpellCheckApi.onInit = function (e) {
t.sendEvent('asc_onSpellCheckInit', e);
};
this.SpellCheckApi.onSpellCheck = function (e) {
t.SpellCheck_CallBack(e);
};
this.SpellCheckApi.init(this.documentId); this.SpellCheckApi.init(this.documentId);
}; };
//---------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------
...@@ -7552,36 +7558,6 @@ background-repeat: no-repeat;\ ...@@ -7552,36 +7558,6 @@ background-repeat: no-repeat;\
} }
}; };
// desktop editor spellcheck
function CSpellCheckApi_desktop()
{
this.docId = undefined;
this.init = function(docid)
{
this.docId = docid;
};
this.set_url = function(url)
{
};
this.spellCheck = function(spellData)
{
window["AscDesktopEditor"]["SpellCheck"](spellData);
};
this.onSpellCheck = function(spellData)
{
editor.SpellCheck_CallBack(spellData);
};
this.disconnect = function()
{
// none
};
}
window["AscDesktopEditor_Save"] = function() window["AscDesktopEditor_Save"] = function()
{ {
return editor.asc_Save(false); return editor.asc_Save(false);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment