From 051930e2c771c7279589e36c02f3b17203796d2c Mon Sep 17 00:00:00 2001 From: Stefan 'Gared Date: Tue, 28 Feb 2012 13:38:29 +0000 Subject: [PATCH 01/26] Added errorId to error message and shows error on screen when pad dies on loading --- static/js/pad_utils.js | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/static/js/pad_utils.js b/static/js/pad_utils.js index fb538211f..499f71260 100644 --- a/static/js/pad_utils.js +++ b/static/js/pad_utils.js @@ -502,17 +502,26 @@ var padutils = { var globalExceptionHandler = undefined; function setupGlobalExceptionHandler() { - //send javascript errors to the server if (!globalExceptionHandler) { globalExceptionHandler = function test (msg, url, linenumber) { - var errObj = {errorInfo: JSON.stringify({msg: msg, url: url, linenumber: linenumber, userAgent: navigator.userAgent})}; - var loc = document.location; - var url = loc.protocol + "//" + loc.hostname + ":" + loc.port + "/" + loc.pathname.substr(1, loc.pathname.indexOf("/p/")) + "jserror"; + var errorId = randomString(20); + if ($("#editorloadingbox").attr("display") != "none"){ + //show javascript errors to the user + $("#editorloadingbox").css("padding", "10px"); + $("#editorloadingbox").css("padding-top", "45px"); + $("#editorloadingbox").html("
An error occured
The error was reported with the following id: '" + errorId + "'

Please send this error message to us:
'" + + "ErrorId: " + errorId + "
UserAgent: " + navigator.userAgent + "
" + msg + " in " + url + " at line " + linenumber + "'
"); + } + + //send javascript errors to the server + var errObj = {errorInfo: JSON.stringify({errorId: errorId, msg: msg, url: url, linenumber: linenumber, userAgent: navigator.userAgent})}; + var loc = document.location; + var url = loc.protocol + "//" + loc.hostname + ":" + loc.port + "/" + loc.pathname.substr(1, loc.pathname.indexOf("/p/")) + "jserror"; - $.post(url, errObj); + $.post(url, errObj); - return false; + return false; }; window.onerror = globalExceptionHandler; } From 45af962a6a509c63637c16d16c836d5119fda91d Mon Sep 17 00:00:00 2001 From: Chad Weider Date: Sun, 4 Mar 2012 13:10:36 -0800 Subject: [PATCH 02/26] Patch use of `forEach` after method was removed. Corrects 465f6c2de73887d60400fb59d422f559d75a1388. --- static/js/broadcast_slider.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/static/js/broadcast_slider.js b/static/js/broadcast_slider.js index 0bdc2cabc..2b67ac73a 100644 --- a/static/js/broadcast_slider.js +++ b/static/js/broadcast_slider.js @@ -22,6 +22,8 @@ // These parameters were global, now they are injected. A reference to the // Timeslider controller would probably be more appropriate. +var forEach = require('./ace2_common').forEach; + function loadBroadcastSliderJS(fireWhenAllScriptsAreLoaded) { var BroadcastSlider; @@ -173,7 +175,7 @@ function loadBroadcastSliderJS(fireWhenAllScriptsAreLoaded) $("#authorstable").empty(); var numAnonymous = 0; var numNamed = 0; - authors.forEach(function(author) + forEach(authors, function(author) { if (author.name) { @@ -467,7 +469,7 @@ function loadBroadcastSliderJS(fireWhenAllScriptsAreLoaded) $("#timeslider").show(); setSliderLength(clientVars.totalRevs); setSliderPosition(clientVars.revNum); - clientVars.savedRevisions.forEach(function(revision) + forEach(clientVars.savedRevisions, function(revision) { addSavedRevision(revision.revNum, revision); }) From 57d0a2e803d8efd2721c575e225bc9d90910d6d3 Mon Sep 17 00:00:00 2001 From: Chad Weider Date: Sun, 4 Mar 2012 15:04:54 -0800 Subject: [PATCH 03/26] Avoid orphaned cache files from breaking the caching layer. --- node/utils/caching_middleware.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node/utils/caching_middleware.js b/node/utils/caching_middleware.js index f25059b88..d99023e09 100644 --- a/node/utils/caching_middleware.js +++ b/node/utils/caching_middleware.js @@ -54,7 +54,7 @@ CachingMiddleware.prototype = new function () { var modifiedSince = (req.headers['if-modified-since'] && new Date(req.headers['if-modified-since'])); var lastModifiedCache = !error && stats.mtime; - if (lastModifiedCache) { + if (lastModifiedCache && responseCache[cacheKey]) { req.headers['if-modified-since'] = lastModifiedCache.toUTCString(); } else { delete req.headers['if-modified-since']; From 0930b64c4e1c8aa1eccac533fc8fbd2605ccf33f Mon Sep 17 00:00:00 2001 From: Chad Weider Date: Sun, 4 Mar 2012 15:05:22 -0800 Subject: [PATCH 04/26] Handle Windows paths correctly (again). --- node/utils/Minify.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/node/utils/Minify.js b/node/utils/Minify.js index a49195a7b..39c6ceb3f 100644 --- a/node/utils/Minify.js +++ b/node/utils/Minify.js @@ -149,8 +149,10 @@ function getAceFile(callback) { var request = require('request'); var baseURI = 'http://localhost:' + settings.port + var resourceURI = baseURI + path.normalize(path.join('/static/', filename)); + resourceURI = resourceURI.replace(/\\/g, '/'); // Windows (safe generally?) - request(baseURI + path.normalize(path.join('/static/', filename)), function (error, response, body) { + request(resourceURI, function (error, response, body) { if (!error && response.statusCode == 200) { data += 'Ace2Editor.EMBEDED[' + JSON.stringify(filename) + '] = ' + JSON.stringify(body || '') + ';\n'; From 29548244fdcc905da082f208656d61206c518dbf Mon Sep 17 00:00:00 2001 From: Chad Weider Date: Sun, 4 Mar 2012 15:13:15 -0800 Subject: [PATCH 05/26] Do not cache 404 responses. This makes DOS attacks way to easy. This really needs to be replaced with an LRU (e.g. a prebuilt middleware). --- node/utils/caching_middleware.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node/utils/caching_middleware.js b/node/utils/caching_middleware.js index d99023e09..a26e22d18 100644 --- a/node/utils/caching_middleware.js +++ b/node/utils/caching_middleware.js @@ -83,7 +83,7 @@ CachingMiddleware.prototype = new function () { && new Date(res.getHeader('last-modified'))); res.writeHead = old_res.writeHead; - if (status == 200 || status == 404) { + if (status == 200) { // Update cache var buffer = ''; From 72571e5ef08fc4b42f11bcfccee7ea4aa648264e Mon Sep 17 00:00:00 2001 From: Egil Moeller Date: Thu, 8 Mar 2012 21:03:22 +0100 Subject: [PATCH 06/26] Bugfixing cache --- src/node/utils/caching_middleware.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/node/utils/caching_middleware.js b/src/node/utils/caching_middleware.js index f25059b88..df114350a 100644 --- a/src/node/utils/caching_middleware.js +++ b/src/node/utils/caching_middleware.js @@ -21,9 +21,9 @@ var path = require('path'); var server = require('../server'); var zlib = require('zlib'); var util = require('util'); +var settings = require('./Settings'); -var ROOT_DIR = path.normalize(__dirname + "/../"); -var CACHE_DIR = ROOT_DIR + '../var/'; +var CACHE_DIR = path.join(settings.root, 'var'); var responseCache = {}; From 384d7686102ff5bbd6e795b07b70ec33eb6e1fa3 Mon Sep 17 00:00:00 2001 From: Egil Moeller Date: Thu, 8 Mar 2012 21:47:18 +0100 Subject: [PATCH 07/26] One more bug in cache dir setting --- src/node/utils/caching_middleware.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/node/utils/caching_middleware.js b/src/node/utils/caching_middleware.js index df114350a..9712deb30 100644 --- a/src/node/utils/caching_middleware.js +++ b/src/node/utils/caching_middleware.js @@ -23,7 +23,7 @@ var zlib = require('zlib'); var util = require('util'); var settings = require('./Settings'); -var CACHE_DIR = path.join(settings.root, 'var'); +var CACHE_DIR = path.join(settings.root, 'var/'); var responseCache = {}; From 8619cd57849b5f74e3f69636e63dc960145334fa Mon Sep 17 00:00:00 2001 From: bradh Date: Sat, 10 Mar 2012 17:23:05 +1100 Subject: [PATCH 08/26] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 84e866585..2a30b9708 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ Here is the **[FAQ](https://github.com/Pita/etherpad-lite/wiki/FAQ)** **As root:**
    -
  1. Install the dependencies. We need gzip, git, curl, libssl develop libraries, python and gcc.
    For Debian/Ubuntu apt-get install gzip git-core curl python libssl-dev build-essential
    +
  2. Install the dependencies. We need gzip, git, curl, libssl develop libraries, python and gcc.
    For Debian/Ubuntu apt-get install gzip git-core curl python libssl-dev pkg-config build-essential
    For Fedora/CentOS yum install gzip git-core curl python openssl-devel && yum groupinstall "Development Tools"

  3. Install node.js @@ -73,6 +73,7 @@ Here is the **[FAQ](https://github.com/Pita/etherpad-lite/wiki/FAQ)**
    1. Move to a folder where you want to install Etherpad Lite. Clone the git repository git clone 'git://github.com/Pita/etherpad-lite.git'
       
    2. +
    3. Change into the directory containing the Etherpad Lite source code clone with cd etherpad-lite
    4. Install the dependencies with bin/installDeps.sh
       
    5. Start it with bin/run.sh
       
    6. Open your web browser and visit http://localhost:9001. You like it? Look at the 'Next Steps' section below
    7. From 6af869caddac5046db48484de4b5ae836d05709d Mon Sep 17 00:00:00 2001 From: Chad Weider Date: Tue, 6 Mar 2012 17:27:03 -0800 Subject: [PATCH 09/26] Modules requires use relative paths. --- static/js/Changeset.js | 2 +- static/js/ace.js | 2 +- static/js/ace2_common.js | 2 +- static/js/ace2_inner.js | 25 +++++++++--------- static/js/broadcast.js | 12 ++++----- static/js/changesettracker.js | 4 +-- static/js/chat.js | 4 +-- static/js/collab_client.js | 2 +- static/js/contentcollector.js | 4 +-- static/js/domline.js | 6 ++--- static/js/linestylefilter.js | 6 ++--- static/js/pad.js | 42 +++++++++++++++---------------- static/js/pad_connectionstatus.js | 2 +- static/js/pad_docbar.js | 4 +-- static/js/pad_editbar.js | 6 ++--- static/js/pad_editor.js | 6 ++--- static/js/pad_impexp.js | 2 +- static/js/pad_modals.js | 4 +-- static/js/pad_savedrevs.js | 4 +-- static/js/pad_userlist.js | 2 +- static/js/pad_utils.js | 8 +++--- static/js/timeslider.js | 20 +++++++-------- static/js/undomodule.js | 4 +-- 23 files changed, 86 insertions(+), 87 deletions(-) diff --git a/static/js/Changeset.js b/static/js/Changeset.js index 81c0c81b2..fd1900ba7 100644 --- a/static/js/Changeset.js +++ b/static/js/Changeset.js @@ -25,7 +25,7 @@ * limitations under the License. */ -var AttributePoolFactory = require("/AttributePoolFactory"); +var AttributePoolFactory = require("./AttributePoolFactory"); var _opt = null; diff --git a/static/js/ace.js b/static/js/ace.js index 22d4eaa6e..789aba522 100644 --- a/static/js/ace.js +++ b/static/js/ace.js @@ -28,7 +28,7 @@ Ace2Editor.registry = { nextId: 1 }; -var plugins = require('/plugins').plugins; +var plugins = require('./plugins').plugins; function Ace2Editor() { diff --git a/static/js/ace2_common.js b/static/js/ace2_common.js index 0f8195fa7..9f217045e 100644 --- a/static/js/ace2_common.js +++ b/static/js/ace2_common.js @@ -20,7 +20,7 @@ * limitations under the License. */ -var Security = require('/security'); +var Security = require('./security'); function isNodeText(node) { diff --git a/static/js/ace2_inner.js b/static/js/ace2_inner.js index 17d02036f..66f19faf1 100644 --- a/static/js/ace2_inner.js +++ b/static/js/ace2_inner.js @@ -20,7 +20,7 @@ * limitations under the License. */ -var Ace2Common = require('/ace2_common'); +var Ace2Common = require('./ace2_common'); // Extract useful method defined in the other module. var isNodeText = Ace2Common.isNodeText; @@ -38,18 +38,17 @@ var htmlPrettyEscape = Ace2Common.htmlPrettyEscape; var map = Ace2Common.map; var noop = Ace2Common.noop; -var makeChangesetTracker = require('/changesettracker').makeChangesetTracker; -var colorutils = require('/colorutils').colorutils; -var makeContentCollector = require('/contentcollector').makeContentCollector; -var makeCSSManager = require('/cssmanager').makeCSSManager; -var domline = require('/domline').domline; -var AttribPool = require('/AttributePoolFactory').createAttributePool; -var Changeset = require('/Changeset'); -var linestylefilter = require('/linestylefilter').linestylefilter; -var newSkipList = require('/skiplist').newSkipList; -var undoModule = require('/undomodule').undoModule; -var makeVirtualLineView = require('/virtual_lines').makeVirtualLineView; - +var makeChangesetTracker = require('./changesettracker').makeChangesetTracker; +var colorutils = require('./colorutils').colorutils; +var makeContentCollector = require('./contentcollector').makeContentCollector; +var makeCSSManager = require('./cssmanager').makeCSSManager; +var domline = require('./domline').domline; +var AttribPool = require('./AttributePoolFactory').createAttributePool; +var Changeset = require('./Changeset'); +var linestylefilter = require('./linestylefilter').linestylefilter; +var newSkipList = require('./skiplist').newSkipList; +var undoModule = require('./undomodule').undoModule; +var makeVirtualLineView = require('./virtual_lines').makeVirtualLineView; function Ace2Inner(){ var DEBUG = false; //$$ build script replaces the string "var DEBUG=true;//$$" with "var DEBUG=false;" diff --git a/static/js/broadcast.js b/static/js/broadcast.js index 97256bbfd..485db44fb 100644 --- a/static/js/broadcast.js +++ b/static/js/broadcast.js @@ -20,12 +20,12 @@ * limitations under the License. */ -var makeCSSManager = require('/cssmanager').makeCSSManager; -var domline = require('/domline').domline; -var AttribPool = require('/AttributePoolFactory').createAttributePool; -var Changeset = require('/Changeset'); -var linestylefilter = require('/linestylefilter').linestylefilter; -var colorutils = require('/colorutils').colorutils; +var makeCSSManager = require('./cssmanager').makeCSSManager; +var domline = require('./domline').domline; +var AttribPool = require('./AttributePoolFactory').createAttributePool; +var Changeset = require('./Changeset'); +var linestylefilter = require('./linestylefilter').linestylefilter; +var colorutils = require('./colorutils').colorutils; var Ace2Common = require('./ace2_common'); var map = Ace2Common.map; diff --git a/static/js/changesettracker.js b/static/js/changesettracker.js index e34dc107e..b02198526 100644 --- a/static/js/changesettracker.js +++ b/static/js/changesettracker.js @@ -20,8 +20,8 @@ * limitations under the License. */ -var AttribPool = require('/AttributePoolFactory').createAttributePool; -var Changeset = require('/Changeset'); +var AttribPool = require('./AttributePoolFactory').createAttributePool; +var Changeset = require('./Changeset'); function makeChangesetTracker(scheduler, apool, aceCallbacksProvider) { diff --git a/static/js/chat.js b/static/js/chat.js index 8f076af6a..b8f22e9e4 100644 --- a/static/js/chat.js +++ b/static/js/chat.js @@ -20,8 +20,8 @@ * limitations under the License. */ -var padutils = require('/pad_utils').padutils; -var padcookie = require('/pad_cookie').padcookie; +var padutils = require('./pad_utils').padutils; +var padcookie = require('./pad_cookie').padcookie; var chat = (function() { diff --git a/static/js/collab_client.js b/static/js/collab_client.js index bb68f6040..18e3616b7 100644 --- a/static/js/collab_client.js +++ b/static/js/collab_client.js @@ -20,7 +20,7 @@ * limitations under the License. */ -var chat = require('/chat').chat; +var chat = require('./chat').chat; // Dependency fill on init. This exists for `pad.socket` only. // TODO: bind directly to the socket. diff --git a/static/js/contentcollector.js b/static/js/contentcollector.js index 96dc4b7dd..616e6e2bf 100644 --- a/static/js/contentcollector.js +++ b/static/js/contentcollector.js @@ -25,8 +25,8 @@ var _MAX_LIST_LEVEL = 8; -var Changeset = require('/Changeset'); -var plugins = require('/plugins').plugins; +var Changeset = require('./Changeset'); +var plugins = require('./plugins').plugins; function sanitizeUnicode(s) { diff --git a/static/js/domline.js b/static/js/domline.js index 3074c9e93..e24916338 100644 --- a/static/js/domline.js +++ b/static/js/domline.js @@ -26,9 +26,9 @@ // requires: plugins // requires: undefined -var Security = require('/security'); -var Ace2Common = require('/ace2_common'); -var plugins = require('/plugins').plugins; +var Security = require('./security'); +var Ace2Common = require('./ace2_common'); +var plugins = require('./plugins').plugins; var map = Ace2Common.map; var noop = Ace2Common.noop; var identity = Ace2Common.identity; diff --git a/static/js/linestylefilter.js b/static/js/linestylefilter.js index 4b4557247..2b9baebcb 100644 --- a/static/js/linestylefilter.js +++ b/static/js/linestylefilter.js @@ -28,9 +28,9 @@ // requires: plugins // requires: undefined -var Changeset = require('/Changeset'); -var plugins = require('/plugins').plugins; -var map = require('/ace2_common').map; +var Changeset = require('./Changeset'); +var plugins = require('./plugins').plugins; +var map = require('./ace2_common').map; var linestylefilter = {}; diff --git a/static/js/pad.js b/static/js/pad.js index bda68956e..d19cfacea 100644 --- a/static/js/pad.js +++ b/static/js/pad.js @@ -26,29 +26,29 @@ var socket; // These jQuery things should create local references, but for now `require()` // assigns to the global `$` and augments it with plugins. -require('/jquery'); -require('/farbtastic'); -require('/excanvas'); -JSON = require('/json2'); -require('/undo-xpopup'); -require('/prefixfree'); +require('./jquery'); +require('./farbtastic'); +require('./excanvas'); +JSON = require('./json2'); +require('./undo-xpopup'); +require('./prefixfree'); -var chat = require('/chat').chat; -var getCollabClient = require('/collab_client').getCollabClient; -var padconnectionstatus = require('/pad_connectionstatus').padconnectionstatus; -var padcookie = require('/pad_cookie').padcookie; -var paddocbar = require('/pad_docbar').paddocbar; -var padeditbar = require('/pad_editbar').padeditbar; -var padeditor = require('/pad_editor').padeditor; -var padimpexp = require('/pad_impexp').padimpexp; -var padmodals = require('/pad_modals').padmodals; -var padsavedrevs = require('/pad_savedrevs').padsavedrevs; -var paduserlist = require('/pad_userlist').paduserlist; -var padutils = require('/pad_utils').padutils; +var chat = require('./chat').chat; +var getCollabClient = require('./collab_client').getCollabClient; +var padconnectionstatus = require('./pad_connectionstatus').padconnectionstatus; +var padcookie = require('./pad_cookie').padcookie; +var paddocbar = require('./pad_docbar').paddocbar; +var padeditbar = require('./pad_editbar').padeditbar; +var padeditor = require('./pad_editor').padeditor; +var padimpexp = require('./pad_impexp').padimpexp; +var padmodals = require('./pad_modals').padmodals; +var padsavedrevs = require('./pad_savedrevs').padsavedrevs; +var paduserlist = require('./pad_userlist').paduserlist; +var padutils = require('./pad_utils').padutils; -var createCookie = require('/pad_utils').createCookie; -var readCookie = require('/pad_utils').readCookie; -var randomString = require('/pad_utils').randomString; +var createCookie = require('./pad_utils').createCookie; +var readCookie = require('./pad_utils').readCookie; +var randomString = require('./pad_utils').randomString; function getParams() { diff --git a/static/js/pad_connectionstatus.js b/static/js/pad_connectionstatus.js index 1de024e8d..bb0f0521f 100644 --- a/static/js/pad_connectionstatus.js +++ b/static/js/pad_connectionstatus.js @@ -20,7 +20,7 @@ * limitations under the License. */ -var padmodals = require('/pad_modals').padmodals; +var padmodals = require('./pad_modals').padmodals; var padconnectionstatus = (function() { diff --git a/static/js/pad_docbar.js b/static/js/pad_docbar.js index b83bf3bfe..08bbb0c4d 100644 --- a/static/js/pad_docbar.js +++ b/static/js/pad_docbar.js @@ -20,7 +20,7 @@ * limitations under the License. */ -var padutils = require('/pad_utils').padutils; +var padutils = require('./pad_utils').padutils; var paddocbar = (function() { @@ -449,7 +449,7 @@ var paddocbar = (function() handleResizePage: function() { // Side-step circular reference. This should be injected. - var padsavedrevs = require('/pad_savedrevs').padsavedrevs; + var padsavedrevs = require('./pad_savedrevs').padsavedrevs; padsavedrevs.handleResizePage(); }, hideLaterIfNoOtherInteraction: function() diff --git a/static/js/pad_editbar.js b/static/js/pad_editbar.js index 236926310..04f03992a 100644 --- a/static/js/pad_editbar.js +++ b/static/js/pad_editbar.js @@ -20,9 +20,9 @@ * limitations under the License. */ -var padutils = require('/pad_utils').padutils; -var padeditor = require('/pad_editor').padeditor; -var padsavedrevs = require('/pad_savedrevs').padsavedrevs; +var padutils = require('./pad_utils').padutils; +var padeditor = require('./pad_editor').padeditor; +var padsavedrevs = require('./pad_savedrevs').padsavedrevs; function indexOf(array, value) { for (var i = 0, ii = array.length; i < ii; i++) { diff --git a/static/js/pad_editor.js b/static/js/pad_editor.js index 3dd67544d..12f83aeb6 100644 --- a/static/js/pad_editor.js +++ b/static/js/pad_editor.js @@ -20,8 +20,8 @@ * limitations under the License. */ -var padcookie = require('/pad_cookie').padcookie; -var padutils = require('/pad_utils').padutils; +var padcookie = require('./pad_cookie').padcookie; +var padutils = require('./pad_utils').padutils; var padeditor = (function() { @@ -34,7 +34,7 @@ var padeditor = (function() viewZoom: 100, init: function(readyFunc, initialViewOptions, _pad) { - Ace2Editor = require('/ace').Ace2Editor; + Ace2Editor = require('./ace').Ace2Editor; pad = _pad; settings = pad.settings; diff --git a/static/js/pad_impexp.js b/static/js/pad_impexp.js index 9ff09d195..23655ba47 100644 --- a/static/js/pad_impexp.js +++ b/static/js/pad_impexp.js @@ -20,7 +20,7 @@ * limitations under the License. */ -var paddocbar = require('/pad_docbar').paddocbar; +var paddocbar = require('./pad_docbar').paddocbar; var padimpexp = (function() { diff --git a/static/js/pad_modals.js b/static/js/pad_modals.js index b78e28f40..0dd281bbe 100644 --- a/static/js/pad_modals.js +++ b/static/js/pad_modals.js @@ -20,8 +20,8 @@ * limitations under the License. */ -var padutils = require('/pad_utils').padutils; -var paddocbar = require('/pad_docbar').paddocbar; +var padutils = require('./pad_utils').padutils; +var paddocbar = require('./pad_docbar').paddocbar; var padmodals = (function() { diff --git a/static/js/pad_savedrevs.js b/static/js/pad_savedrevs.js index 6d37dfa81..2a0f4fded 100644 --- a/static/js/pad_savedrevs.js +++ b/static/js/pad_savedrevs.js @@ -20,8 +20,8 @@ * limitations under the License. */ -var padutils = require('/pad_utils').padutils; -var paddocbar = require('/pad_docbar').paddocbar; +var padutils = require('./pad_utils').padutils; +var paddocbar = require('./pad_docbar').paddocbar; var padsavedrevs = (function() { diff --git a/static/js/pad_userlist.js b/static/js/pad_userlist.js index 2c063d74c..5a3f9b355 100644 --- a/static/js/pad_userlist.js +++ b/static/js/pad_userlist.js @@ -20,7 +20,7 @@ * limitations under the License. */ -var padutils = require('/pad_utils').padutils; +var padutils = require('./pad_utils').padutils; var myUserInfo = {}; diff --git a/static/js/pad_utils.js b/static/js/pad_utils.js index fb538211f..8f7347bfd 100644 --- a/static/js/pad_utils.js +++ b/static/js/pad_utils.js @@ -20,7 +20,7 @@ * limitations under the License. */ -var Security = require('/security'); +var Security = require('./security'); /** * Generates a random String with the given length. Is needed to generate the Author, Group, readonly, session Ids @@ -75,7 +75,7 @@ var padutils = { }, uniqueId: function() { - var pad = require('/pad').pad; // Sidestep circular dependency + var pad = require('./pad').pad; // Sidestep circular dependency function encodeNum(n, width) { // returns string that is exactly 'width' chars, padding with zeros @@ -250,7 +250,7 @@ var padutils = { }, timediff: function(d) { - var pad = require('/pad').pad; // Sidestep circular dependency + var pad = require('./pad').pad; // Sidestep circular dependency function format(n, word) { n = Math.round(n); @@ -520,7 +520,7 @@ function setupGlobalExceptionHandler() { padutils.setupGlobalExceptionHandler = setupGlobalExceptionHandler; -padutils.binarySearch = require('/ace2_common').binarySearch; +padutils.binarySearch = require('./ace2_common').binarySearch; exports.randomString = randomString; exports.createCookie = createCookie; diff --git a/static/js/timeslider.js b/static/js/timeslider.js index 143ef3281..579dcb603 100644 --- a/static/js/timeslider.js +++ b/static/js/timeslider.js @@ -22,13 +22,13 @@ // These jQuery things should create local references, but for now `require()` // assigns to the global `$` and augments it with plugins. -require('/jquery'); -JSON = require('/json2'); -require('/undo-xpopup'); +require('./jquery'); +JSON = require('./json2'); +require('./undo-xpopup'); -var createCookie = require('/pad_utils').createCookie; -var readCookie = require('/pad_utils').readCookie; -var randomString = require('/pad_utils').randomString; +var createCookie = require('./pad_utils').createCookie; +var readCookie = require('./pad_utils').readCookie; +var randomString = require('./pad_utils').randomString; var socket, token, padId, export_links; @@ -127,12 +127,12 @@ function handleClientVars(message) clientVars = message.data; //load all script that doesn't work without the clientVars - BroadcastSlider = require('/broadcast_slider').loadBroadcastSliderJS(fireWhenAllScriptsAreLoaded); - require('/broadcast_revisions').loadBroadcastRevisionsJS(); - changesetLoader = require('/broadcast').loadBroadcastJS(socket, sendSocketMsg, fireWhenAllScriptsAreLoaded, BroadcastSlider); + BroadcastSlider = require('./broadcast_slider').loadBroadcastSliderJS(fireWhenAllScriptsAreLoaded); + require('./broadcast_revisions').loadBroadcastRevisionsJS(); + changesetLoader = require('./broadcast').loadBroadcastJS(socket, sendSocketMsg, fireWhenAllScriptsAreLoaded, BroadcastSlider); //initialize export ui - require('/pad_impexp').padimpexp.init(); + require('./pad_impexp').padimpexp.init(); //change export urls when the slider moves var export_rev_regex = /(\/\d+)?\/export/ diff --git a/static/js/undomodule.js b/static/js/undomodule.js index 886cbdf0a..8b0c0909c 100644 --- a/static/js/undomodule.js +++ b/static/js/undomodule.js @@ -20,8 +20,8 @@ * limitations under the License. */ -var Changeset = require('/Changeset'); -var extend = require('/ace2_common').extend; +var Changeset = require('./Changeset'); +var extend = require('./ace2_common').extend; var undoModule = (function() { From 652fffe8eabc6e31bf4801d62296566351d8c32d Mon Sep 17 00:00:00 2001 From: Chad Weider Date: Tue, 6 Mar 2012 17:42:32 -0800 Subject: [PATCH 10/26] Upgrade require-kernel for relative path fixes. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 01eb8e96a..0c10d5cb2 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "dependencies" : { "yajsml" : "1.1.2", "request" : "2.9.100", - "require-kernel" : "1.0.3", + "require-kernel" : "1.0.5", "socket.io" : "0.8.7", "ueberDB" : "0.1.7", "async" : "0.1.18", From ee312672d307e3bcc981b952dc2a4ff88d5c2d08 Mon Sep 17 00:00:00 2001 From: Chad Weider Date: Sat, 10 Mar 2012 14:36:54 -0800 Subject: [PATCH 11/26] This is duplicated by the contents of static. --- src/ep.json | 1 - src/node/hooks/express/minified.js | 6 ------ 2 files changed, 7 deletions(-) delete mode 100644 src/node/hooks/express/minified.js diff --git a/src/ep.json b/src/ep.json index bc955dbf3..59cbf3aa4 100644 --- a/src/ep.json +++ b/src/ep.json @@ -3,7 +3,6 @@ { "name": "static", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/static:expressCreateServer" } }, { "name": "specialpages", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/specialpages:expressCreateServer" } }, { "name": "padurlsanitize", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/padurlsanitize:expressCreateServer" } }, - { "name": "minified", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/minified:expressCreateServer" } }, { "name": "padreadonly", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/padreadonly:expressCreateServer" } }, { "name": "webaccess", "hooks": { "expressConfigure": "ep_etherpad-lite/node/hooks/express/webaccess:expressConfigure" } }, { "name": "apicalls", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/apicalls:expressCreateServer" } }, diff --git a/src/node/hooks/express/minified.js b/src/node/hooks/express/minified.js deleted file mode 100644 index f8a988d77..000000000 --- a/src/node/hooks/express/minified.js +++ /dev/null @@ -1,6 +0,0 @@ -var minify = require('../../utils/Minify'); - -exports.expressCreateServer = function (hook_name, args, cb) { - //serve minified files - args.app.get(/^\/minified\/(.*)/, minify.minifyJS); -} From 648603126b7d9ab87cb9b19b5422d936dc2536f4 Mon Sep 17 00:00:00 2001 From: Chad Weider Date: Sat, 10 Mar 2012 13:59:07 -0800 Subject: [PATCH 12/26] Remove require changes in `pushScriptsTo` method. These duplicate `pushRequireScriptTo` at least, but mostly break things. --- src/static/js/ace.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/static/js/ace.js b/src/static/js/ace.js index 4114b63cf..7331d68d6 100644 --- a/src/static/js/ace.js +++ b/src/static/js/ace.js @@ -176,10 +176,6 @@ function Ace2Editor() } else { file = ACE_SOURCE; file = file.replace(/^\.\.\/static\/js\//, '../minified/'); - buffer.push('\ - + - + - + - + - + - + From 4e039d68da8e781c3959f41272a4cc05ff436b8e Mon Sep 17 00:00:00 2001 From: Chad Weider Date: Sat, 10 Mar 2012 15:52:22 -0800 Subject: [PATCH 23/26] Correct indentation. --- src/static/pad.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/static/pad.html b/src/static/pad.html index 98451e5f8..95a5b98fa 100644 --- a/src/static/pad.html +++ b/src/static/pad.html @@ -269,9 +269,9 @@ require.setGlobalKeyPath("require"); var plugins = require('ep_etherpad-lite/static/js/pluginfw/plugins'); - plugins.update(function () { - require('ep_etherpad-lite/static/js/pad').init(); - }); + plugins.update(function () { + require('ep_etherpad-lite/static/js/pad').init(); + }); /* TODO: These globals shouldn't exist. */ pad = require('ep_etherpad-lite/static/js/pad').pad; From 3a115154e77c9d9ab83ddf4ae539f36866a8e0b4 Mon Sep 17 00:00:00 2001 From: Chad Weider Date: Sat, 10 Mar 2012 17:15:04 -0800 Subject: [PATCH 24/26] Migrate tar to use library paths. --- src/node/utils/Minify.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/node/utils/Minify.js b/src/node/utils/Minify.js index 4e1c44db4..a4c3efa0c 100644 --- a/src/node/utils/Minify.js +++ b/src/node/utils/Minify.js @@ -36,11 +36,14 @@ var TAR_PATH = path.join(__dirname, 'tar.json'); var tar = JSON.parse(fs.readFileSync(TAR_PATH, 'utf8')); // Rewrite tar to include modules with no extensions and proper rooted paths. +var LIBRARY_PREFIX = 'ep_etherpad-lite/static/js'; exports.tar = {}; for (var key in tar) { - exports.tar['/' + key] = - tar[key].map(function (p) {return '/' + p}).concat( - tar[key].map(function (p) {return '/' + p.replace(/\.js$/, '')}) + exports.tar[LIBRARY_PREFIX + '/' + key] = + tar[key].map(function (p) {return LIBRARY_PREFIX + '/' + p}).concat( + tar[key].map(function (p) { + return LIBRARY_PREFIX + '/' + p.replace(/\.js$/, '') + }) ); } From 65ad9da155a6ceac1b9a9f4dd90b19fc5feebd88 Mon Sep 17 00:00:00 2001 From: Chad Weider Date: Sat, 10 Mar 2012 18:19:40 -0800 Subject: [PATCH 25/26] Correct resource paths. --- static/timeslider.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/timeslider.html b/static/timeslider.html index 19f5fefcd..42e812b73 100644 --- a/static/timeslider.html +++ b/static/timeslider.html @@ -204,8 +204,8 @@