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,229 +32,246 @@ ...@@ -32,229 +32,246 @@
"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._onlineWork = true;
} this._SpellCheckApi.init(docid);
}; this._onlineWork = true;
}
CSpellCheckApi.prototype.set_url = function(url) { };
if (this._SpellCheckApi) {
this._SpellCheckApi.set_url(url); CSpellCheckApi.prototype.set_url = function (url) {
} if (this._SpellCheckApi) {
}; this._SpellCheckApi.set_url(url);
}
CSpellCheckApi.prototype.get_state = function() { };
if (this._SpellCheckApi) {
return this._SpellCheckApi.get_state(); CSpellCheckApi.prototype.get_state = function () {
} if (this._SpellCheckApi) {
return this._SpellCheckApi.get_state();
return 0; }
};
return 0;
CSpellCheckApi.prototype.disconnect = function() { };
if (this._SpellCheckApi && this._onlineWork) {
this._SpellCheckApi.disconnect(); CSpellCheckApi.prototype.disconnect = function () {
} if (this._SpellCheckApi && this._onlineWork) {
}; this._SpellCheckApi.disconnect();
}
CSpellCheckApi.prototype.spellCheck = function(spellCheckData) { };
if (this._SpellCheckApi && this._onlineWork) {
this._SpellCheckApi.spellCheck(spellCheckData); CSpellCheckApi.prototype.spellCheck = function (spellCheckData) {
} if (this._SpellCheckApi && this._onlineWork) {
}; this._SpellCheckApi.spellCheck(spellCheckData);
}
CSpellCheckApi.prototype.callback_OnSpellCheck = function(e) { };
if (this.onSpellCheck) {
return this.onSpellCheck(e); CSpellCheckApi.prototype.callback_OnSpellCheck = function (e) {
} if (this.onSpellCheck) {
}; return this.onSpellCheck(e);
}
/** };
* Event об отсоединении от сервера CSpellCheckApi.prototype.callback_OnInit = function (e) {
* @param {jQuery} e event об отсоединении с причиной if (this.onInit) {
* @param {Bool} isDisconnectAtAll окончательно ли отсоединяемся(true) или будем пробовать сделать reconnect(false) + сами отключились return this.onInit(e);
*/ }
CSpellCheckApi.prototype.callback_OnDisconnect = function(e, isDisconnectAtAll, isCloseCoAuthoring) { };
if (this.onDisconnect) {
return this.onDisconnect(e, isDisconnectAtAll, isCloseCoAuthoring); /**
} * Event об отсоединении от сервера
}; * @param {jQuery} e event об отсоединении с причиной
* @param {Bool} isDisconnectAtAll окончательно ли отсоединяемся(true) или будем пробовать сделать reconnect(false) + сами отключились
/** States */
* -1 - reconnect state CSpellCheckApi.prototype.callback_OnDisconnect = function (e, isDisconnectAtAll, isCloseCoAuthoring) {
* 0 - not initialized if (this.onDisconnect) {
* 1 - opened return this.onDisconnect(e, isDisconnectAtAll, isCloseCoAuthoring);
* 3 - closed }
*/ };
var SpellCheckApi = function(options) {
if (options) { /** States
this.onDisconnect = options.onDisconnect; * -1 - reconnect state
this.onConnect = options.onConnect; * 0 - not initialized
this.onSpellCheck = options.onSpellCheck; * 1 - opened
} * 3 - closed
this._state = 0; */
// Мы сами отключились от совместного редактирования var SpellCheckApi = function () {
this.isCloseCoAuthoring = false; this.onDisconnect = null;
this.onConnect = null;
// Массив данных, который стоит отправить как только подключимся this.onSpellCheck = null;
this.dataNeedSend = []; this.onInit = null;
this._url = ""; this._state = 0;
}; // Мы сами отключились от совместного редактирования
this.isCloseCoAuthoring = false;
SpellCheckApi.prototype.isRightURL = function() {
return ("" != this._url); // Массив данных, который стоит отправить как только подключимся
}; this.dataNeedSend = [];
SpellCheckApi.prototype.set_url = function(url) { this._url = "";
this._url = url; };
};
SpellCheckApi.prototype.isRightURL = function () {
SpellCheckApi.prototype.get_state = function() { return ("" !== this._url);
return this._state; };
};
SpellCheckApi.prototype.set_url = function (url) {
SpellCheckApi.prototype.spellCheck = function(spellCheckData) { this._url = url;
this._send({"type": "spellCheck", "spellCheckData": spellCheckData}); };
};
SpellCheckApi.prototype.get_state = function () {
SpellCheckApi.prototype.disconnect = function() { return this._state;
// Отключаемся сами };
this.isCloseCoAuthoring = true;
return this.sockjs.close(); SpellCheckApi.prototype.spellCheck = function (spellCheckData) {
}; this._send({"type": "spellCheck", "spellCheckData": spellCheckData});
};
SpellCheckApi.prototype._send = function(data) {
if (data !== null && typeof data === "object") { SpellCheckApi.prototype.disconnect = function () {
if (this._state > 0) { // Отключаемся сами
this.sockjs.send(JSON.stringify(data)); this.isCloseCoAuthoring = true;
} else { return this.sockjs.close();
this.dataNeedSend.push(data); };
}
} SpellCheckApi.prototype._send = function (data) {
}; if (data !== null && typeof data === "object") {
if (this._state > 0) {
SpellCheckApi.prototype._sendAfterConnect = function() { this.sockjs.send(JSON.stringify(data));
var data; } else {
while (this._state > 0 && undefined !== (data = this.dataNeedSend.shift())) this.dataNeedSend.push(data);
this._send(data); }
}; }
};
SpellCheckApi.prototype._onSpellCheck = function(data) {
if (undefined !== data["spellCheckData"] && this.onSpellCheck) { SpellCheckApi.prototype._sendAfterConnect = function () {
this.onSpellCheck(data["spellCheckData"]); var data;
} while (this._state > 0 && undefined !== (data = this.dataNeedSend.shift()))
}; this._send(data);
};
var reconnectTimeout, attemptCount = 0;
SpellCheckApi.prototype._onSpellCheck = function (data) {
function initSocksJs(url, docsCoApi) { if (data["spellCheckData"] && this.onSpellCheck) {
//ограничиваем transports WebSocket и XHR / JSONP polling, как и engine.io https://github.com/socketio/engine.io this.onSpellCheck(data["spellCheckData"]);
//при переборе 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']}); };
SpellCheckApi.prototype._onInit = function (data) {
sockjs.onopen = function() { if (data["languages"] && this.onInit) {
if (reconnectTimeout) { this.onInit(data["languages"]);
clearTimeout(reconnectTimeout); }
attemptCount = 0; };
}
docsCoApi._state = 1; // Opened state var reconnectTimeout, attemptCount = 0;
if (docsCoApi.onConnect) {
docsCoApi.onConnect(); function initSocksJs(url, docsCoApi) {
} //ограничиваем transports WebSocket и XHR / JSONP polling, как и engine.io https://github.com/socketio/engine.io
//при переборе streaming transports у клиента с wirewall происходило зацикливание(не повторялось в версии sock.js 0.3.4)
// Отправляем все данные, которые пришли до соединения с сервером var sockjs = new (_getSockJs())(url, null,
docsCoApi._sendAfterConnect(); {transports: ['websocket', 'xdr-polling', 'xhr-polling', 'iframe-xhr-polling', 'jsonp-polling']});
};
sockjs.onopen = function () {
sockjs.onmessage = function(e) { if (reconnectTimeout) {
//TODO: add checks and error handling clearTimeout(reconnectTimeout);
//Get data type attemptCount = 0;
var dataObject = JSON.parse(e.data); }
var type = dataObject.type; docsCoApi._state = 1; // Opened state
switch (type) { if (docsCoApi.onConnect) {
case 'spellCheck' : docsCoApi.onConnect();
docsCoApi._onSpellCheck(dataObject); }
break;
} // Отправляем все данные, которые пришли до соединения с сервером
}; docsCoApi._sendAfterConnect();
sockjs.onclose = function(evt) { };
docsCoApi._state = -1; // Reconnect state
var bIsDisconnectAtAll = attemptCount >= 20 || docsCoApi.isCloseCoAuthoring; sockjs.onmessage = function (e) {
if (bIsDisconnectAtAll) { //TODO: add checks and error handling
docsCoApi._state = 3; //Get data type
} // Closed state var dataObject = JSON.parse(e.data);
if (docsCoApi.onDisconnect) { var type = dataObject.type;
docsCoApi.onDisconnect(evt.reason, bIsDisconnectAtAll, docsCoApi.isCloseCoAuthoring); switch (type) {
} case 'spellCheck' :
if (docsCoApi.isCloseCoAuthoring) { docsCoApi._onSpellCheck(dataObject);
return; break;
} case 'init':
//Try reconect docsCoApi._onInit(dataObject);
if (attemptCount < 20) { break;
tryReconnect(); }
} };
}; sockjs.onclose = function (evt) {
docsCoApi._state = -1; // Reconnect state
function tryReconnect() { var bIsDisconnectAtAll = attemptCount >= 20 || docsCoApi.isCloseCoAuthoring;
if (reconnectTimeout) { if (bIsDisconnectAtAll) {
clearTimeout(reconnectTimeout); docsCoApi._state = 3;
} } // Closed state
attemptCount++; if (docsCoApi.onDisconnect) {
reconnectTimeout = setTimeout(function() { docsCoApi.onDisconnect(evt.reason, bIsDisconnectAtAll, docsCoApi.isCloseCoAuthoring);
delete docsCoApi.sockjs; }
docsCoApi.sockjs = initSocksJs(url, docsCoApi); if (docsCoApi.isCloseCoAuthoring) {
}, 500 * attemptCount); return;
}
} //Try reconect
if (attemptCount < 20) {
return sockjs; tryReconnect();
} }
};
function _getSockJs() {
return window['SockJS'] ? window['SockJS'] : require('sockjs'); function tryReconnect() {
} if (reconnectTimeout) {
clearTimeout(reconnectTimeout);
SpellCheckApi.prototype.init = function(docid) { }
this._docid = docid; attemptCount++;
var re = /^https?:\/\//; reconnectTimeout = setTimeout(function () {
var spellcheckUrl = this._url + '/doc/' + docid + '/c' delete docsCoApi.sockjs;
docsCoApi.sockjs = initSocksJs(url, docsCoApi);
if(re.test(this._url)) }, 500 * attemptCount);
this.sockjs_url = spellcheckUrl;
else }
this.sockjs_url = AscCommon.getBaseUrl() + "../../../.." + spellcheckUrl;
return sockjs;
//Begin send auth }
this.sockjs = initSocksJs(this.sockjs_url, this);
}; function _getSockJs() {
return window['SockJS'] ? window['SockJS'] : require('sockjs');
//-----------------------------------------------------------export--------------------------------------------------- }
window['AscCommon'] = window['AscCommon'] || {};
window["AscCommon"].CSpellCheckApi = CSpellCheckApi; SpellCheckApi.prototype.init = function (docid) {
this._docid = docid;
var re = /^https?:\/\//;
var spellcheckUrl = this._url + '/doc/' + docid + '/c';
if (re.test(this._url)) {
this.sockjs_url = spellcheckUrl;
} else {
this.sockjs_url = AscCommon.getBaseUrl() + "../../../.." + spellcheckUrl;
}
//Begin send auth
this.sockjs = initSocksJs(this.sockjs_url, this);
};
//-----------------------------------------------------------export---------------------------------------------------
window['AscCommon'] = window['AscCommon'] || {};
window["AscCommon"].CSpellCheckApi = CSpellCheckApi;
})(window); })(window);
...@@ -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.onSpellCheck = function(e)
{
var incomeObject = JSON.parse(e);
t.SpellCheck_CallBack(incomeObject);
}; };
this.SpellCheckApi.disconnect = function () {
};
} 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