From 40c5e70aa70d5f283355ae51fc1a0fb216378354 Mon Sep 17 00:00:00 2001 From: Adrian Lang Date: Thu, 25 Aug 2011 09:52:19 +0200 Subject: [PATCH 01/10] Add DokuWiki export --- node/handler/ExportHandler.js | 21 +++ node/server.js | 5 +- node/utils/ExportDokuWiki.js | 344 ++++++++++++++++++++++++++++++++++ static/css/pad.css | 6 +- static/img/fileicons.gif | Bin 1397 -> 1649 bytes static/js/pad_impexp.js | 5 +- static/pad.html | 1 + 7 files changed, 377 insertions(+), 5 deletions(-) create mode 100644 node/utils/ExportDokuWiki.js diff --git a/node/handler/ExportHandler.js b/node/handler/ExportHandler.js index a87219bb7..4453e3c2e 100644 --- a/node/handler/ExportHandler.js +++ b/node/handler/ExportHandler.js @@ -19,6 +19,7 @@ */ var exporthtml = require("../utils/ExportHtml"); +var exportdokuwiki = require("../utils/ExportDokuWiki"); var padManager = require("../db/PadManager"); var async = require("async"); var fs = require("fs"); @@ -56,6 +57,26 @@ exports.doExport = function(req, res, padId, type) res.send(pad.text()); }); } + else if(type == 'dokuwiki') + { + var randNum; + var srcFile, destFile; + + async.series([ + //render the dokuwiki document + function(callback) + { + exportdokuwiki.getPadDokuWikiDocument(padId, null, function(err, dokuwiki) + { + res.send(dokuwiki); + callback("stop"); + }); + }, + ], function(err) + { + if(err && err != "stop") throw err; + }); + } else { var html; diff --git a/node/server.js b/node/server.js index 2bebe6a24..9e7613a15 100644 --- a/node/server.js +++ b/node/server.js @@ -237,7 +237,7 @@ async.waterfall([ return; } - var types = ["pdf", "doc", "txt", "html", "odt"]; + var types = ["pdf", "doc", "txt", "html", "odt", "dokuwiki"]; //send a 404 if we don't support this filetype if(types.indexOf(req.params.type) == -1) { @@ -246,7 +246,8 @@ async.waterfall([ } //if abiword is disabled, and this is a format we only support with abiword, output a message - if(settings.abiword == null && req.params.type != "html" && req.params.type != "txt" ) + if(settings.abiword == null && + ["odt", "pdf", "doc"].indexOf(req.params.type) !== -1) { res.send("Abiword is not enabled at this Etherpad Lite instance. Set the path to Abiword in settings.json to enable this feature"); return; diff --git a/node/utils/ExportDokuWiki.js b/node/utils/ExportDokuWiki.js new file mode 100644 index 000000000..48e4b2915 --- /dev/null +++ b/node/utils/ExportDokuWiki.js @@ -0,0 +1,344 @@ +/** + * Copyright 2011 Adrian Lang + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS-IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var async = require("async"); +var Changeset = require("./Changeset"); +var padManager = require("../db/PadManager"); + +function getPadDokuWiki(pad, revNum, callback) +{ + var atext = pad.atext; + var dokuwiki; + async.waterfall([ + // fetch revision atext + + + function (callback) + { + if (revNum != undefined) + { + pad.getInternalRevisionAText(revNum, function (err, revisionAtext) + { + atext = revisionAtext; + callback(err); + }); + } + else + { + callback(null); + } + }, + + // convert atext to dokuwiki text + + function (callback) + { + dokuwiki = getDokuWikiFromAtext(pad, atext); + callback(null); + }], + // run final callback + + + function (err) + { + callback(err, dokuwiki); + }); +} + +function getDokuWikiFromAtext(pad, atext) +{ + var apool = pad.apool(); + var textLines = atext.text.slice(0, -1).split('\n'); + var attribLines = Changeset.splitAttributionLines(atext.attribs, atext.text); + + var tags = ['======', '=====', '**', '//', '__', 'del>']; + var props = ['heading1', 'heading2', 'bold', 'italic', 'underline', 'strikethrough']; + var anumMap = {}; + + props.forEach(function (propName, i) + { + var propTrueNum = apool.putAttrib([propName, true], true); + if (propTrueNum >= 0) + { + anumMap[propTrueNum] = i; + } + }); + + function getLineDokuWiki(text, attribs) + { + var propVals = [false, false, false]; + var ENTER = 1; + var STAY = 2; + var LEAVE = 0; + + // Use order of tags (b/i/u) as order of nesting, for simplicity + // and decent nesting. For example, + // Just bold Bold and italics Just italics + // becomes + // Just bold Bold and italics Just italics + var taker = Changeset.stringIterator(text); + var assem = Changeset.stringAssembler(); + + function emitOpenTag(i) + { + if (tags[i].indexOf('>') !== -1) { + assem.append('<'); + } + assem.append(tags[i]); + } + + function emitCloseTag(i) + { + if (tags[i].indexOf('>') !== -1) { + assem.append(' bold, etc. + if (!propVals[i]) + { + propVals[i] = ENTER; + propChanged = true; + } + else + { + propVals[i] = STAY; + } + } + }); + for (var i = 0; i < propVals.length; i++) + { + if (propVals[i] === true) + { + propVals[i] = LEAVE; + propChanged = true; + } + else if (propVals[i] === STAY) + { + propVals[i] = true; // set it back + } + } + // now each member of propVal is in {false,LEAVE,ENTER,true} + // according to what happens at start of span + if (propChanged) + { + // leaving bold (e.g.) also leaves italics, etc. + var left = false; + for (var i = 0; i < propVals.length; i++) + { + var v = propVals[i]; + if (!left) + { + if (v === LEAVE) + { + left = true; + } + } + else + { + if (v === true) + { + propVals[i] = STAY; // tag will be closed and re-opened + } + } + } + + for (var i = propVals.length - 1; i >= 0; i--) + { + if (propVals[i] === LEAVE) + { + emitCloseTag(i); + propVals[i] = false; + } + else if (propVals[i] === STAY) + { + emitCloseTag(i); + } + } + for (var i = 0; i < propVals.length; i++) + { + if (propVals[i] === ENTER || propVals[i] === STAY) + { + emitOpenTag(i); + propVals[i] = true; + } + } + // propVals is now all {true,false} again + } // end if (propChanged) + var chars = o.chars; + if (o.lines) + { + chars--; // exclude newline at end of line, if present + } + var s = taker.take(chars); + + assem.append(_escapeDokuWiki(s)); + } // end iteration over spans in line + for (var i = propVals.length - 1; i >= 0; i--) + { + if (propVals[i]) + { + emitCloseTag(i); + propVals[i] = false; + } + } + } // end processNextChars + if (urls) + { + urls.forEach(function (urlData) + { + var startIndex = urlData[0]; + var url = urlData[1]; + var urlLength = url.length; + processNextChars(startIndex - idx); + assem.append('[['); + + // Do not use processNextChars since a link does not contain syntax and + // needs no escaping + var iter = Changeset.opIterator(Changeset.subattribution(attribs, idx, idx + urlLength)); + idx += urlLength; + assem.append(taker.take(iter.next().chars)); + + assem.append(']]'); + }); + } + processNextChars(text.length - idx); + + return assem.toString() + "\n"; + } // end getLineDokuWiki + var pieces = []; + + for (var i = 0; i < textLines.length; i++) + { + var line = _analyzeLine(textLines[i], attribLines[i], apool); + var lineContent = getLineDokuWiki(line.text, line.aline); + + if (line.listLevel && lineContent) + { + pieces.push(new Array(line.listLevel + 1).join(' ') + '* '); + } + pieces.push(lineContent); + } + + return pieces.join(''); +} + +function _analyzeLine(text, aline, apool) +{ + var line = {}; + + // identify list + var lineMarker = 0; + line.listLevel = 0; + if (aline) + { + var opIter = Changeset.opIterator(aline); + if (opIter.hasNext()) + { + var listType = Changeset.opAttributeValue(opIter.next(), 'list', apool); + if (listType) + { + lineMarker = 1; + listType = /([a-z]+)([12345678])/.exec(listType); + if (listType) + { + line.listTypeName = listType[1]; + line.listLevel = Number(listType[2]); + } + } + } + } + if (lineMarker) + { + line.text = text.substring(1); + line.aline = Changeset.subattribution(aline, 1); + } + else + { + line.text = text; + line.aline = aline; + } + + return line; +} + +exports.getPadDokuWikiDocument = function (padId, revNum, callback) +{ + padManager.getPad(padId, function (err, pad) + { + if (err) + { + callback(err); + return; + } + + getPadDokuWiki(pad, revNum, callback); + }); +} + +function _escapeDokuWiki(s) +{ + s = s.replace(/(\/\/|\*\*|__)/g, '%%$1%%'); + return s; +} + +// copied from ACE +var _REGEX_WORDCHAR = /[\u0030-\u0039\u0041-\u005A\u0061-\u007A\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\u1FFF\u3040-\u9FFF\uF900-\uFDFF\uFE70-\uFEFE\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFDC]/; +var _REGEX_SPACE = /\s/; +var _REGEX_URLCHAR = new RegExp('(' + /[-:@a-zA-Z0-9_.,~%+\/\\?=&#;()$]/.source + '|' + _REGEX_WORDCHAR.source + ')'); +var _REGEX_URL = new RegExp(/(?:(?:https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt):\/\/|mailto:)/.source + _REGEX_URLCHAR.source + '*(?![:.,;])' + _REGEX_URLCHAR.source, 'g'); + +// returns null if no URLs, or [[startIndex1, url1], [startIndex2, url2], ...] + + +function _findURLs(text) +{ + _REGEX_URL.lastIndex = 0; + var urls = null; + var execResult; + while ((execResult = _REGEX_URL.exec(text))) + { + urls = (urls || []); + var startIndex = execResult.index; + var url = execResult[0]; + urls.push([startIndex, url]); + } + + return urls; +} diff --git a/static/css/pad.css b/static/css/pad.css index 45385a5b7..f6edefef4 100644 --- a/static/css/pad.css +++ b/static/css/pad.css @@ -1066,6 +1066,10 @@ position: relative; background-position: 2px -49px; } +#exportdokuwiki{ + background-position: 2px -144px; +} + #export a{ text-decoration: none; } @@ -1146,4 +1150,4 @@ width:33px !important; #editbar ul li { padding: 4px 1px; } -} \ No newline at end of file +} diff --git a/static/img/fileicons.gif b/static/img/fileicons.gif index 26f63882b64383f535328b22301dd1a12866a425..c03b6031a62780479212fe50240ccb60dd3750b1 100644 GIT binary patch delta 332 zcmV-S0ki(~3h@jJM@dFFIbjh1rvS#W3x5F@0000X`2+y~0Dk~1000005dfzE00;h) zp#lB^{xOrG0{sL22*8t}1N;R32{DC}p#;x=_wM_5uqQA95HGv{1Q2To00$ar4j=#! zaYUcO^wejO0~%2s#l2`cjYq7Yu*}GuTQ7fH1oFosR-=z=Iz2@B$Z5z=STG;2$R7 zf(htwhk7W03kQ&a45a7}MNGj2kVt|Z5+MOBV1XwFu)+aMQ4b^l0tvEEfWi%;hZ8^_ e1zxbjF}k1-0!RP_vLr{r5#foyV?-bW0028YkaYL} delta 78 zcmey!^OcL+-P6s&GEtCW0>iV7-1Us&|NsA2{K>+|z);Vi!vF*z83y+MlNU1nV=@F% dOn;d<4ghK9KP;Svt(PV*WI4~eU6O;r8UPjW8$kd7 diff --git a/static/js/pad_impexp.js b/static/js/pad_impexp.js index 8224fce56..fe1d28fbe 100644 --- a/static/js/pad_impexp.js +++ b/static/js/pad_impexp.js @@ -234,6 +234,7 @@ var padimpexp = (function() $("#exporthtmla").attr("href", document.location.pathname + "/export/html"); $("#exportplaina").attr("href", document.location.pathname + "/export/txt"); $("#exportwordlea").attr("href", document.location.pathname + "/export/wordle"); + $("#exportdokuwikia").attr("href", document.location.pathname + "/export/dokuwiki"); //hide stuff thats not avaible if abiword is disabled if(clientVars.abiwordAvailable == "no") @@ -241,8 +242,8 @@ var padimpexp = (function() $("#exportworda").remove(); $("#exportpdfa").remove(); $("#exportopena").remove(); - $("#importexport").css({"height":"95px"}); - $("#importexportline").css({"height":"95px"}); + $("#importexport").css({"height":"115px"}); + $("#importexportline").css({"height":"115px"}); $("#import").html("Import is not available"); } else if(clientVars.abiwordAvailable == "withoutPDF") diff --git a/static/pad.html b/static/pad.html index 980905e99..154cbe1fd 100644 --- a/static/pad.html +++ b/static/pad.html @@ -208,6 +208,7 @@
Microsoft Word
PDF
OpenDocument
+
DokuWiki text
Wordle
From 4287cc283a1467a699e261133ede3244f6141b2a Mon Sep 17 00:00:00 2001 From: 0ip Date: Wed, 7 Dec 2011 15:14:52 +0100 Subject: [PATCH 02/10] Fix for disappearing chat --- static/js/chat.js | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/static/js/chat.js b/static/js/chat.js index bda5786de..b6f994293 100644 --- a/static/js/chat.js +++ b/static/js/chat.js @@ -20,18 +20,24 @@ var chat = (function() var isAndroid = ua.indexOf("android") > -1; var isMobileSafari = ua.indexOf("mobile") > -1; var bottomMargin = "0px"; + var sDuration = 500; + var hDuration = 750; var chatMentions = 0; var title = document.title; + if (isAndroid || isMobileSafari){ + sDuration = 0; + hDuration = 0; + } var self = { show: function () { $("#chaticon").hide("slide", { direction: "down" - }, 500, function () + }, hDuration, function () { $("#chatbox").show("slide", { direction: "down" - }, 750, self.scrollDown); + }, sDuration, self.scrollDown); $("#chatbox").resizable( { handles: 'nw', @@ -60,14 +66,10 @@ var chat = (function() hide: function () { $("#chatcounter").text("0"); - if(isAndroid || isMobileSafari) { - $("#chatbox").toggle(); - } - else + $("#chatbox").hide("slide", { direction: "down" }, sDuration, function() { - $("#chatbox").toggle("slide", { direction: "down" }, 625); - } - + $("#chaticon").show("slide", { direction: "down" }, hDuration); + }); }, scrollDown: function() { From 49006a3b6a538a49feb9acae0ea993e566b3602c Mon Sep 17 00:00:00 2001 From: Peter 'Pita' Martischka Date: Thu, 8 Dec 2011 23:32:51 +0100 Subject: [PATCH 03/10] Don't make the globalPads too global ;) --- node/db/PadManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node/db/PadManager.js b/node/db/PadManager.js index 46eb3c966..7471a0f20 100644 --- a/node/db/PadManager.js +++ b/node/db/PadManager.js @@ -31,7 +31,7 @@ var db = require("./DB").db; * If this is needed in other places, it would be wise to make this a prototype * that's defined somewhere more sensible. */ -globalPads = { +var globalPads = { get: function (name) { return this[':'+name]; }, set: function (name, value) { this[':'+name] = value; }, remove: function (name) { delete this[':'+name]; } From 22fd5ae33dc6a8f410a630f33bfb6261051656e8 Mon Sep 17 00:00:00 2001 From: Peter 'Pita' Martischka Date: Sat, 10 Dec 2011 12:37:51 +0100 Subject: [PATCH 04/10] updated ueberDB --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0a73b923e..78108d8b4 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ ], "dependencies" : { "socket.io" : "0.8.7", - "ueberDB" : "0.1.3", + "ueberDB" : "0.1.4", "async" : "0.1.15", "joose" : "3.50.0", "express" : "2.5.0", From 6684d6ed5241b4ededc5cc0ae5a2eaae0ba84d09 Mon Sep 17 00:00:00 2001 From: Peter 'Pita' Martischka Date: Sat, 10 Dec 2011 16:46:47 +0100 Subject: [PATCH 05/10] replaced all stop callbacks with customError callbacks. Fixes #270 --- node/db/API.js | 35 ++++++++++++++++++----------------- node/db/GroupManager.js | 11 ++++++----- node/db/PadManager.js | 7 ++++--- node/db/SecurityManager.js | 2 +- node/db/SessionManager.js | 21 +++++++++++---------- node/handler/APIHandler.js | 4 ++-- node/utils/customError.js | 17 +++++++++++++++++ 7 files changed, 59 insertions(+), 38 deletions(-) create mode 100644 node/utils/customError.js diff --git a/node/db/API.js b/node/db/API.js index 1cfa203c8..90bfd8f66 100644 --- a/node/db/API.js +++ b/node/db/API.js @@ -19,6 +19,7 @@ */ var ERR = require("async-stacktrace"); +var customError = require("../utils/customError"); var padManager = require("./PadManager"); var padMessageHandler = require("../handler/PadMessageHandler"); var readOnlyManager = require("./ReadOnlyManager"); @@ -88,7 +89,7 @@ exports.getText = function(padID, rev, callback) } else { - callback({stop: "rev is not a number"}); + callback(new customError("rev is not a number", "apierror")); return; } } @@ -96,14 +97,14 @@ exports.getText = function(padID, rev, callback) //ensure this is not a negativ number if(rev !== undefined && rev < 0) { - callback({stop: "rev is a negativ number"}); + callback(new customError("rev is a negativ number","apierror")); return; } //ensure this is not a float value if(rev !== undefined && !is_int(rev)) { - callback({stop: "rev is a float value"}); + callback(new customError("rev is a float value","apierror")); return; } @@ -118,7 +119,7 @@ exports.getText = function(padID, rev, callback) //check if this is a valid revision if(rev > pad.getHeadRevisionNumber()) { - callback({stop: "rev is higher than the head revision of the pad"}); + callback(new customError("rev is higher than the head revision of the pad","apierror")); return; } @@ -188,20 +189,20 @@ exports.getHTML = function(padID, rev, callback) } else { - callback({stop: "rev is not a number"}); + callback(new customError("rev is not a number","apierror")); return; } } if(rev !== undefined && rev < 0) { - callback({stop: "rev is a negative number"}); + callback(new customError("rev is a negative number","apierror")); return; } if(rev !== undefined && !is_int(rev)) { - callback({stop: "rev is a float value"}); + callback(new customError("rev is a float value","apierror")); return; } @@ -215,7 +216,7 @@ exports.getHTML = function(padID, rev, callback) //check if this is a valid revision if(rev > pad.getHeadRevisionNumber()) { - callback({stop: "rev is higher than the head revision of the pad"}); + callback(new customError("rev is higher than the head revision of the pad","apierror")); return; } @@ -294,7 +295,7 @@ exports.createPad = function(padID, text, callback) //ensure there is no $ in the padID if(padID.indexOf("$") != -1) { - callback({stop: "createPad can't create group pads"}); + callback(new customError("createPad can't create group pads","apierror")); return; } @@ -361,7 +362,7 @@ exports.setPublicStatus = function(padID, publicStatus, callback) //ensure this is a group pad if(padID.indexOf("$") == -1) { - callback({stop: "You can only get/set the publicStatus of pads that belong to a group"}); + callback(new customError("You can only get/set the publicStatus of pads that belong to a group","apierror")); return; } @@ -394,7 +395,7 @@ exports.getPublicStatus = function(padID, callback) //ensure this is a group pad if(padID.indexOf("$") == -1) { - callback({stop: "You can only get/set the publicStatus of pads that belong to a group"}); + callback(new customError("You can only get/set the publicStatus of pads that belong to a group","apierror")); return; } @@ -420,7 +421,7 @@ exports.setPassword = function(padID, password, callback) //ensure this is a group pad if(padID.indexOf("$") == -1) { - callback({stop: "You can only get/set the password of pads that belong to a group"}); + callback(new customError("You can only get/set the password of pads that belong to a group","apierror")); return; } @@ -449,7 +450,7 @@ exports.isPasswordProtected = function(padID, callback) //ensure this is a group pad if(padID.indexOf("$") == -1) { - callback({stop: "You can only get/set the password of pads that belong to a group"}); + callback(new customError("You can only get/set the password of pads that belong to a group","apierror")); return; } @@ -484,14 +485,14 @@ function getPadSafe(padID, shouldExist, text, callback) //check if padID is a string if(typeof padID != "string") { - callback({stop: "padID is not a string"}); + callback(new customError("padID is not a string","apierror")); return; } //check if the padID maches the requirements if(!padManager.isValidPadId(padID)) { - callback({stop: "padID did not match requirements"}); + callback(new customError("padID did not match requirements","apierror")); return; } @@ -503,12 +504,12 @@ function getPadSafe(padID, shouldExist, text, callback) //does not exist, but should if(exists == false && shouldExist == true) { - callback({stop: "padID does not exist"}); + callback(new customError("padID does not exist","apierror")); } //does exists, but shouldn't else if(exists == true && shouldExist == false) { - callback({stop: "padID does already exist"}); + callback(new customError("padID does already exist","apierror")); } //pad exists, let's get it else diff --git a/node/db/GroupManager.js b/node/db/GroupManager.js index a87d5d14f..473ea9b77 100644 --- a/node/db/GroupManager.js +++ b/node/db/GroupManager.js @@ -19,6 +19,7 @@ */ var ERR = require("async-stacktrace"); +var customError = require("../utils/customError"); var db = require("./DB").db; var async = require("async"); var padManager = require("./PadManager"); @@ -40,7 +41,7 @@ exports.deleteGroup = function(groupID, callback) //group does not exist if(_group == null) { - callback({stop: "groupID does not exist"}); + callback(new customError("groupID does not exist","apierror")); } //group exists, everything is fine else @@ -135,7 +136,7 @@ exports.createGroupIfNotExistsFor = function(groupMapper, callback) //ensure mapper is optional if(typeof groupMapper != "string") { - callback({stop: "groupMapper is no string"}); + callback(new customError("groupMapper is no string","apierror")); return; } @@ -182,7 +183,7 @@ exports.createGroupPad = function(groupID, padName, text, callback) //group does not exist if(exists == false) { - callback({stop: "groupID does not exist"}); + callback(new customError("groupID does not exist","apierror")); } //group exists, everything is fine else @@ -201,7 +202,7 @@ exports.createGroupPad = function(groupID, padName, text, callback) //pad exists already if(exists == true) { - callback({stop: "padName does already exist"}); + callback(new customError("padName does already exist","apierror")); } //pad does not exist, everything is fine else @@ -241,7 +242,7 @@ exports.listPads = function(groupID, callback) //group does not exist if(exists == false) { - callback({stop: "groupID does not exist"}); + callback(new customError("groupID does not exist","apierror")); } //group exists, let's get the pads else diff --git a/node/db/PadManager.js b/node/db/PadManager.js index 7471a0f20..36c272637 100644 --- a/node/db/PadManager.js +++ b/node/db/PadManager.js @@ -19,6 +19,7 @@ */ var ERR = require("async-stacktrace"); +var customError = require("../utils/customError"); require("../db/Pad"); var db = require("./DB").db; @@ -47,7 +48,7 @@ exports.getPad = function(id, text, callback) //check if this is a valid padId if(!exports.isValidPadId(id)) { - callback({stop: id + " is not a valid padId"}); + callback(new customError(id + " is not a valid padId","apierror")); return; } @@ -64,14 +65,14 @@ exports.getPad = function(id, text, callback) //check if text is a string if(typeof text != "string") { - callback({stop: "text is not a string"}); + callback(new customError("text is not a string","apierror")); return; } //check if text is less than 100k chars if(text.length > 100000) { - callback({stop: "text must be less than 100k chars"}); + callback(new customError("text must be less than 100k chars","apierror")); return; } } diff --git a/node/db/SecurityManager.js b/node/db/SecurityManager.js index a804d8c3a..52d5afcbe 100644 --- a/node/db/SecurityManager.js +++ b/node/db/SecurityManager.js @@ -118,7 +118,7 @@ exports.checkAccess = function (padID, sessionID, token, password, callback) sessionManager.getSessionInfo(sessionID, function(err, sessionInfo) { //skip session validation if the session doesn't exists - if(err && err.stop == "sessionID does not exist") + if(err && err.message == "sessionID does not exist") { callback(); return; diff --git a/node/db/SessionManager.js b/node/db/SessionManager.js index 9279273f5..a394f5442 100644 --- a/node/db/SessionManager.js +++ b/node/db/SessionManager.js @@ -19,6 +19,7 @@ */ var ERR = require("async-stacktrace"); +var customError = require("../utils/customError"); var db = require("./DB").db; var async = require("async"); var groupMangager = require("./GroupManager"); @@ -52,7 +53,7 @@ exports.createSession = function(groupID, authorID, validUntil, callback) //group does not exist if(exists == false) { - callback({stop: "groupID does not exist"}); + callback(new customError("groupID does not exist","apierror")); } //everything is fine, continue else @@ -71,7 +72,7 @@ exports.createSession = function(groupID, authorID, validUntil, callback) //author does not exist if(exists == false) { - callback({stop: "authorID does not exist"}); + callback(new customError("authorID does not exist","apierror")); } //everything is fine, continue else @@ -93,7 +94,7 @@ exports.createSession = function(groupID, authorID, validUntil, callback) } else { - callback({stop: "validUntil is not a number"}); + callback(new customError("validUntil is not a number","apierror")); return; } } @@ -101,21 +102,21 @@ exports.createSession = function(groupID, authorID, validUntil, callback) //ensure this is not a negativ number if(validUntil < 0) { - callback({stop: "validUntil is a negativ number"}); + callback(new customError("validUntil is a negativ number","apierror")); return; } //ensure this is not a float value if(!is_int(validUntil)) { - callback({stop: "validUntil is a float value"}); + callback(new customError("validUntil is a float value","apierror")); return; } //check if validUntil is in the future if(Math.floor(new Date().getTime()/1000) > validUntil) { - callback({stop: "validUntil is in the past"}); + callback(new customError("validUntil is in the past","apierror")); return; } @@ -192,7 +193,7 @@ exports.getSessionInfo = function(sessionID, callback) //session does not exists if(session == null) { - callback({stop: "sessionID does not exist"}) + callback(new customError("sessionID does not exist","apierror")) } //everything is fine, return the sessioninfos else @@ -221,7 +222,7 @@ exports.deleteSession = function(sessionID, callback) //session does not exists if(session == null) { - callback({stop: "sessionID does not exist"}) + callback(new customError("sessionID does not exist","apierror")) } //everything is fine, return the sessioninfos else @@ -285,7 +286,7 @@ exports.listSessionsOfGroup = function(groupID, callback) //group does not exist if(exists == false) { - callback({stop: "groupID does not exist"}); + callback(new customError("groupID does not exist","apierror")); } //everything is fine, continue else @@ -304,7 +305,7 @@ exports.listSessionsOfAuthor = function(authorID, callback) //group does not exist if(exists == false) { - callback({stop: "authorID does not exist"}); + callback(new customError("authorID does not exist","apierror")); } //everything is fine, continue else diff --git a/node/handler/APIHandler.js b/node/handler/APIHandler.js index 8dc68378f..5c29f9e4c 100644 --- a/node/handler/APIHandler.js +++ b/node/handler/APIHandler.js @@ -115,9 +115,9 @@ exports.handle = function(functionName, fields, req, res) res.send({code: 0, message: "ok", data: data}); } // parameters were wrong and the api stopped execution, pass the error - else if(err.stop) + else if(err.name == "apierror") { - res.send({code: 1, message: err.stop, data: null}); + res.send({code: 1, message: err.message, data: null}); } //an unkown error happend else diff --git a/node/utils/customError.js b/node/utils/customError.js new file mode 100644 index 000000000..5ca7a7a41 --- /dev/null +++ b/node/utils/customError.js @@ -0,0 +1,17 @@ +/* + This helper modules allows us to create different type of errors we can throw +*/ +function customError(message, errorName) +{ + this.name = errorName || "Error"; + this.message = message; + + var stackParts = new Error().stack.split("\n"); + stackParts.splice(0,2); + stackParts.unshift(this.name + ": " + message); + + this.stack = stackParts.join("\n"); +} +customError.prototype = Error.prototype; + +module.exports = customError; From d41ba6f5f7f756b88f79b98dc2dc13c3ba21818e Mon Sep 17 00:00:00 2001 From: Peter 'Pita' Martischka Date: Sat, 10 Dec 2011 18:04:19 +0100 Subject: [PATCH 06/10] updated ueberDB --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 78108d8b4..7536a3013 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ ], "dependencies" : { "socket.io" : "0.8.7", - "ueberDB" : "0.1.4", + "ueberDB" : "0.1.5", "async" : "0.1.15", "joose" : "3.50.0", "express" : "2.5.0", From 3401a7bc11f86a560a6de4afc17bdbe93294eda0 Mon Sep 17 00:00:00 2001 From: Peter 'Pita' Martischka Date: Sun, 11 Dec 2011 18:20:05 +0100 Subject: [PATCH 07/10] small css fix at the importexport panel --- static/css/pad.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/css/pad.css b/static/css/pad.css index cb15a99ba..ddab8edf6 100644 --- a/static/css/pad.css +++ b/static/css/pad.css @@ -1003,7 +1003,7 @@ position: relative; padding: 10px; -moz-border-radius: 6px; border-radius: 6px; - height:170px; + height:190px; display:none; } @@ -1032,7 +1032,7 @@ position: relative; #importexportline{ border: dotted 1px; - height: 165px; + height: 185px; position:absolute; width:0px; left:260px; From d20dcc7c57d993aa7cb55dddbe551665e74f4843 Mon Sep 17 00:00:00 2001 From: John McLear Date: Sun, 4 Dec 2011 18:55:35 +0000 Subject: [PATCH 08/10] fixed merge conflicts --- static/css/pad.css | 4 +++- static/js/ace2_inner.js | 4 ++++ static/js/pad2.js | 14 ++++++++++++++ static/js/pad_editor.js | 1 + 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/static/css/pad.css b/static/css/pad.css index ddab8edf6..a1c48ce28 100644 --- a/static/css/pad.css +++ b/static/css/pad.css @@ -1162,7 +1162,6 @@ label[for=readonlyinput] { margin-left:10px; } - @media screen and (max-width: 960px) { .modaldialog { position: relative; @@ -1251,3 +1250,6 @@ label[for=readonlyinput] { display:none; } } +.rtl{ + direction:RTL; +} diff --git a/static/js/ace2_inner.js b/static/js/ace2_inner.js index bb45ac5f9..663b5cca0 100644 --- a/static/js/ace2_inner.js +++ b/static/js/ace2_inner.js @@ -1127,6 +1127,10 @@ function OUTER(gscope) { setTextSize(value); } + else if (k == 'rtlistrue') + { + setClassPresence(root, "rtl", !! value); + } } editorInfo.ace_setBaseText = function(txt) diff --git a/static/js/pad2.js b/static/js/pad2.js index debd25512..1498a74ca 100644 --- a/static/js/pad2.js +++ b/static/js/pad2.js @@ -22,6 +22,7 @@ var noColors = false; var useMonospaceFontGlobal = false; var globalUserName = false; var hideQRCode = false; +var rtlIsTrue = false; $(document).ready(function() { @@ -88,6 +89,7 @@ function getParams() var useMonospaceFont = params["useMonospaceFont"]; var IsnoColors = params["noColors"]; var hideQRCode = params["hideQRCode"]; + var rtl = params["rtl"]; if(IsnoColors) { @@ -135,6 +137,13 @@ function getParams() { $('#qrcode').hide(); } + if(rtl) + { + if(rtl == "true") + { + rtlIsTrue = true + } + } } function getUrlVars() @@ -293,6 +302,11 @@ function handshake() { pad.changeViewOption('noColors', true); } + + if (rtlIsTrue == true) + { + pad.changeViewOption('rtl', true); + } // If the Monospacefont value is set to true then change it to monospace. if (useMonospaceFontGlobal == true) diff --git a/static/js/pad_editor.js b/static/js/pad_editor.js index e98252cff..dc76898c4 100644 --- a/static/js/pad_editor.js +++ b/static/js/pad_editor.js @@ -89,6 +89,7 @@ var padeditor = (function() self.ace.setProperty("showsauthorcolors", noColors); + self.ace.setProperty("rtlIsTrue", rtlIsTrue); }, initViewZoom: function() { From 609701961ec195c91bd81a80ee22593132c43bd9 Mon Sep 17 00:00:00 2001 From: Peter 'Pita' Martischka Date: Sun, 4 Dec 2011 15:33:56 +0000 Subject: [PATCH 09/10] Added some comments to help us documentating the code --- node/utils/Changeset.js | 6 ++++++ static/js/ace.js | 6 ++++++ static/js/ace2_common.js | 8 +++++++- static/js/ace2_inner.js | 6 ++++++ static/js/broadcast.js | 6 ++++++ static/js/broadcast_revisions.js | 6 ++++++ static/js/broadcast_slider.js | 6 ++++++ static/js/changesettracker.js | 6 ++++++ static/js/chat.js | 8 +++++++- static/js/collab_client.js | 6 ++++++ static/js/colorutils.js | 6 ++++++ static/js/contentcollector.js | 6 ++++++ static/js/cssmanager.js | 6 ++++++ static/js/cssmanager_client.js | 6 ++++++ static/js/domline.js | 6 ++++++ static/js/domline_client.js | 6 ++++++ static/js/draggable.js | 6 ++++++ static/js/easysync2.js | 6 ++++++ static/js/easysync2_client.js | 6 ++++++ static/js/linestylefilter.js | 6 ++++++ static/js/linestylefilter_client.js | 6 ++++++ static/js/pad2.js | 6 ++++++ static/js/pad_connectionstatus.js | 6 ++++++ static/js/pad_cookie.js | 6 ++++++ static/js/pad_docbar.js | 6 ++++++ static/js/pad_editbar.js | 6 ++++++ static/js/pad_editor.js | 6 ++++++ static/js/pad_impexp.js | 6 ++++++ static/js/pad_modals.js | 6 ++++++ static/js/pad_savedrevs.js | 6 ++++++ static/js/pad_userlist.js | 6 ++++++ static/js/pad_utils.js | 6 ++++++ static/js/plugins.js | 6 ++++++ static/js/skiplist.js | 6 ++++++ static/js/undo-xpopup.js | 6 ++++++ static/js/undomodule.js | 6 ++++++ static/js/virtual_lines.js | 6 ++++++ 37 files changed, 224 insertions(+), 2 deletions(-) diff --git a/node/utils/Changeset.js b/node/utils/Changeset.js index 2c9e06838..9e1b60ebe 100644 --- a/node/utils/Changeset.js +++ b/node/utils/Changeset.js @@ -3,6 +3,12 @@ * Can be found in https://github.com/ether/pad/blob/master/infrastructure/ace/www/easysync2.js */ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /* * Copyright 2009 Google Inc., 2011 Peter 'Pita' Martischka (Primary Technology Ltd) * diff --git a/static/js/ace.js b/static/js/ace.js index 27899aaab..69d3cf09b 100644 --- a/static/js/ace.js +++ b/static/js/ace.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/ace2_common.js b/static/js/ace2_common.js index de2fede1c..1246a16ec 100644 --- a/static/js/ace2_common.js +++ b/static/js/ace2_common.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * @@ -142,4 +148,4 @@ function htmlPrettyEscape(str) if (typeof exports !== "undefined") { exports.map = map; -} \ No newline at end of file +} diff --git a/static/js/ace2_inner.js b/static/js/ace2_inner.js index 663b5cca0..65f8ec7e7 100644 --- a/static/js/ace2_inner.js +++ b/static/js/ace2_inner.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/broadcast.js b/static/js/broadcast.js index 32424731b..865574abd 100644 --- a/static/js/broadcast.js +++ b/static/js/broadcast.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/broadcast_revisions.js b/static/js/broadcast_revisions.js index 828677733..33a2f9dfa 100644 --- a/static/js/broadcast_revisions.js +++ b/static/js/broadcast_revisions.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/broadcast_slider.js b/static/js/broadcast_slider.js index 68f424495..af5a50411 100644 --- a/static/js/broadcast_slider.js +++ b/static/js/broadcast_slider.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/changesettracker.js b/static/js/changesettracker.js index 09e413f39..cc7f64623 100644 --- a/static/js/changesettracker.js +++ b/static/js/changesettracker.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/chat.js b/static/js/chat.js index b6f994293..4dade69f3 100644 --- a/static/js/chat.js +++ b/static/js/chat.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc., 2011 Peter 'Pita' Martischka (Primary Technology Ltd) * @@ -168,4 +174,4 @@ var chat = (function() } return self; -}()); \ No newline at end of file +}()); diff --git a/static/js/collab_client.js b/static/js/collab_client.js index c64b99949..fafe0fd2f 100644 --- a/static/js/collab_client.js +++ b/static/js/collab_client.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/colorutils.js b/static/js/colorutils.js index 03141271b..92d8da719 100644 --- a/static/js/colorutils.js +++ b/static/js/colorutils.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + // DO NOT EDIT THIS FILE, edit infrastructure/ace/www/colorutils.js // THIS FILE IS ALSO SERVED AS CLIENT-SIDE JS /** diff --git a/static/js/contentcollector.js b/static/js/contentcollector.js index 577b24c6c..69036ba25 100644 --- a/static/js/contentcollector.js +++ b/static/js/contentcollector.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + // THIS FILE IS ALSO AN APPJET MODULE: etherpad.collab.ace.contentcollector // %APPJET%: import("etherpad.collab.ace.easysync2.Changeset"); // %APPJET%: import("etherpad.admin.plugins"); diff --git a/static/js/cssmanager.js b/static/js/cssmanager.js index 5601ea25b..b8208b83f 100644 --- a/static/js/cssmanager.js +++ b/static/js/cssmanager.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/cssmanager_client.js b/static/js/cssmanager_client.js index 2fa61027e..60bf9f8c5 100644 --- a/static/js/cssmanager_client.js +++ b/static/js/cssmanager_client.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + // DO NOT EDIT THIS FILE, edit infrastructure/ace/www/cssmanager.js /** * Copyright 2009 Google Inc. diff --git a/static/js/domline.js b/static/js/domline.js index 7732805fd..56f74a1cd 100644 --- a/static/js/domline.js +++ b/static/js/domline.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + // THIS FILE IS ALSO AN APPJET MODULE: etherpad.collab.ace.domline // %APPJET%: import("etherpad.admin.plugins"); /** diff --git a/static/js/domline_client.js b/static/js/domline_client.js index d4dd4606d..a152412c9 100644 --- a/static/js/domline_client.js +++ b/static/js/domline_client.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + // DO NOT EDIT THIS FILE, edit infrastructure/ace/www/domline.js // THIS FILE IS ALSO AN APPJET MODULE: etherpad.collab.ace.domline /** diff --git a/static/js/draggable.js b/static/js/draggable.js index 2f40c1c7e..7bf523eb5 100644 --- a/static/js/draggable.js +++ b/static/js/draggable.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/easysync2.js b/static/js/easysync2.js index 7f5d0cf98..17ab585d9 100644 --- a/static/js/easysync2.js +++ b/static/js/easysync2.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + // THIS FILE IS ALSO AN APPJET MODULE: etherpad.collab.ace.easysync2 // %APPJET%: jimport("com.etherpad.Easysync2Support"); /** diff --git a/static/js/easysync2_client.js b/static/js/easysync2_client.js index 5d0e582d8..3611da233 100644 --- a/static/js/easysync2_client.js +++ b/static/js/easysync2_client.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + // DO NOT EDIT THIS FILE, edit infrastructure/ace/www/easysync2.js // THIS FILE IS ALSO AN APPJET MODULE: etherpad.collab.ace.easysync2 /** diff --git a/static/js/linestylefilter.js b/static/js/linestylefilter.js index f6cf9f357..9164d42f0 100644 --- a/static/js/linestylefilter.js +++ b/static/js/linestylefilter.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + // THIS FILE IS ALSO AN APPJET MODULE: etherpad.collab.ace.linestylefilter // %APPJET%: import("etherpad.collab.ace.easysync2.Changeset"); // %APPJET%: import("etherpad.admin.plugins"); diff --git a/static/js/linestylefilter_client.js b/static/js/linestylefilter_client.js index b1bdae6ef..69c3f1242 100644 --- a/static/js/linestylefilter_client.js +++ b/static/js/linestylefilter_client.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + // DO NOT EDIT THIS FILE, edit infrastructure/ace/www/linestylefilter.js // THIS FILE IS ALSO AN APPJET MODULE: etherpad.collab.ace.linestylefilter /** diff --git a/static/js/pad2.js b/static/js/pad2.js index 1498a74ca..b75c1f9cc 100644 --- a/static/js/pad2.js +++ b/static/js/pad2.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc., 2011 Peter 'Pita' Martischka (Primary Technology Ltd) * diff --git a/static/js/pad_connectionstatus.js b/static/js/pad_connectionstatus.js index 3d244303c..d35eb02d6 100644 --- a/static/js/pad_connectionstatus.js +++ b/static/js/pad_connectionstatus.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/pad_cookie.js b/static/js/pad_cookie.js index 5db6a2ca0..64211750d 100644 --- a/static/js/pad_cookie.js +++ b/static/js/pad_cookie.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/pad_docbar.js b/static/js/pad_docbar.js index 6ee38f686..c67ca55c4 100644 --- a/static/js/pad_docbar.js +++ b/static/js/pad_docbar.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/pad_editbar.js b/static/js/pad_editbar.js index 97bd7f85b..9de23f82e 100644 --- a/static/js/pad_editbar.js +++ b/static/js/pad_editbar.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/pad_editor.js b/static/js/pad_editor.js index dc76898c4..183de948d 100644 --- a/static/js/pad_editor.js +++ b/static/js/pad_editor.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/pad_impexp.js b/static/js/pad_impexp.js index fe1d28fbe..4cf7ffcd8 100644 --- a/static/js/pad_impexp.js +++ b/static/js/pad_impexp.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/pad_modals.js b/static/js/pad_modals.js index ccd4607ec..cf9d04355 100644 --- a/static/js/pad_modals.js +++ b/static/js/pad_modals.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/pad_savedrevs.js b/static/js/pad_savedrevs.js index ae4220cd9..487e85f1a 100644 --- a/static/js/pad_savedrevs.js +++ b/static/js/pad_savedrevs.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/pad_userlist.js b/static/js/pad_userlist.js index e11cd3acb..748674916 100644 --- a/static/js/pad_userlist.js +++ b/static/js/pad_userlist.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/pad_utils.js b/static/js/pad_utils.js index 331590fed..76a167057 100644 --- a/static/js/pad_utils.js +++ b/static/js/pad_utils.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/plugins.js b/static/js/plugins.js index 2ebf98f3c..b29d01d4d 100644 --- a/static/js/plugins.js +++ b/static/js/plugins.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + plugins = { callHook: function(hookName, args) { diff --git a/static/js/skiplist.js b/static/js/skiplist.js index c21873887..c9654be46 100644 --- a/static/js/skiplist.js +++ b/static/js/skiplist.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/undo-xpopup.js b/static/js/undo-xpopup.js index 2fc0ee1a7..e733f3ea3 100644 --- a/static/js/undo-xpopup.js +++ b/static/js/undo-xpopup.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/undomodule.js b/static/js/undomodule.js index b070ce253..3891629aa 100644 --- a/static/js/undomodule.js +++ b/static/js/undomodule.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * diff --git a/static/js/virtual_lines.js b/static/js/virtual_lines.js index e27e4af40..ece96b149 100644 --- a/static/js/virtual_lines.js +++ b/static/js/virtual_lines.js @@ -1,3 +1,9 @@ +/** + * This code is mostly from the old Etherpad. Please help us to comment this code. + * This helps other people to understand this code better and helps them to improve it. + * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED + */ + /** * Copyright 2009 Google Inc. * From ddf1cd345c8516a77c1440b53ddc05279551db7b Mon Sep 17 00:00:00 2001 From: Peter 'Pita' Martischka Date: Wed, 14 Dec 2011 21:36:33 +0100 Subject: [PATCH 10/10] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7536a3013..0a73b923e 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ ], "dependencies" : { "socket.io" : "0.8.7", - "ueberDB" : "0.1.5", + "ueberDB" : "0.1.3", "async" : "0.1.15", "joose" : "3.50.0", "express" : "2.5.0",