diff --git a/src/node/eejs/index.js b/src/node/eejs/index.js index 90c69e595..2d02a45a6 100644 --- a/src/node/eejs/index.js +++ b/src/node/eejs/index.js @@ -23,6 +23,7 @@ var ejs = require("ejs"); var fs = require("fs"); var path = require("path"); var hooks = require("ep_etherpad-lite/static/js/pluginfw/hooks.js"); +var resolve = require("resolve"); exports.info = { buf_stack: [], @@ -91,13 +92,28 @@ exports.inherit = function (name, args) { exports.info.file_stack[exports.info.file_stack.length-1].inherit.push({name:name, args:args}); } -exports.require = function (name, args) { +exports.require = function (name, args, mod) { if (args == undefined) args = {}; - - if ((name.indexOf("./") == 0 || name.indexOf("../") == 0) && exports.info.file_stack.length) { - name = path.join(path.dirname(exports.info.file_stack[exports.info.file_stack.length-1].path), name); + + var basedir = __dirname; + var paths = []; + + if (exports.info.file_stack.length) { + basedir = path.dirname(exports.info.file_stack[exports.info.file_stack.length-1].path); } - var ejspath = require.resolve(name) + if (mod) { + basedir = path.dirname(mod.filename); + paths = mod.paths; + } + + var ejspath = resolve.sync( + name, + { + paths : paths, + basedir : basedir, + extensions : [ '.html', '.ejs' ], + } + ) args.e = exports; args.require = require; diff --git a/src/static/css/admin.css b/src/static/css/admin.css index 67706fa2f..b2dfc1c5c 100644 --- a/src/static/css/admin.css +++ b/src/static/css/admin.css @@ -1,138 +1,123 @@ -body { - margin: 0; - height: 100%; - color: #333; - font: 14px helvetica, sans-serif; - background: #ddd; - background: -webkit-radial-gradient(circle,#aaa,#eee 60%) center fixed; - background: -moz-radial-gradient(circle,#aaa,#eee 60%) center fixed; - background: -ms-radial-gradient(circle,#aaa,#eee 60%) center fixed; - background: -o-radial-gradient(circle,#aaa,#eee 60%) center fixed; - border-top: 8px solid rgba(51,51,51,.8); -} -#wrapper { - border-top: 1px solid #999; - margin-top: 160px; - padding: 15px; - background: #eee; - background: -webkit-linear-gradient(#fff,#ccc); - background: -moz-linear-gradient(#fff,#ccc); - background: -ms-linear-gradient(#fff,#ccc); - background: -o-linear-gradient(#fff,#ccc); - opacity: .9; - box-shadow: 0px 1px 8px rgba(0,0,0,0.3); - max-width: 1200px; - margin: auto; -} -#inner { - width: 300px; - margin: 0 auto; -} -#button:hover { - cursor: pointer; - background: #666; - background: -webkit-linear-gradient(#707070,#666666 50%,#5B5B5B 51%,#474747); - background: -moz-linear-gradient(#707070,#666666 50%,#5B5B5B 51%,#474747); - background: -ms-linear-gradient(#707070,#666666 50%,#5B5B5B 51%,#474747); - background: -o-linear-gradient(#707070,#666666 50%,#5B5B5B 51%,#474747); -} -#button:active { - box-shadow: inset 0 1px 12px rgba(0,0,0,0.9); - background: #444; -} -#label { - text-align: left; - text-shadow: 0 1px 1px #fff; - margin: 16px auto 0; -} -form { - border: 1px solid #bbb; - border-radius: 3px; - position: relative; -} -button, input { - font-weight: bold; - font-size: 15px; -} -input[type="button"] { - height:30px; -} -input[type="text"] { - border-radius: 3px; - box-sizing: border-box; - -moz-box-sizing: border-box; - padding: 10px 45px 10px 10px; - *padding: 0; /* IE7 hack */ - width: 100%; - outline: none; - border: none; -} -button{ - display:block; -} -@media only screen and (min-device-width: 320px) and (max-device-width: 720px) { - body { - background: #bbb; - background: -webkit-linear-gradient(#aaa,#eee 60%) center fixed; - background: -moz-linear-gradient(#aaa,#eee 60%) center fixed; - background: -ms-linear-gradient(#aaa,#eee 60%) center fixed; - } - #wrapper { - margin-top: 0; - } - #inner { - width: 95%; - } - #label { - text-align: center; - } -} - -table { - border-collapse: collapse; -} -td, th { - border: 1px solid black; - padding-left: 10px; - padding-right: 10px; - padding-top: 2px; - padding-bottom: 2px; -} -.template { - display: none; -} -.dialog { - display: none; - position: absolute; - left: 50%; - top: 50%; - width: 700px; - height: 500px; - margin-left: -350px; - margin-top: -250px; - border: 3px solid #999999; - background: #eeeeee; -} -.dialog .title { - margin: 0; - padding: 2px; - border-bottom: 3px solid #999999; - font-size: 24px; - line-height: 24px; - height: 24px; - overflow: hidden; -} -.dialog .title .close { - float: right; -} -.dialog .history { - background: #222222; - color: #eeeeee; - position: absolute; - top: 41px; - bottom: 10px; - left: 10px; - right: 10px; - padding: 2px; - overflow: auto; -} +body { + margin: 0; + height: 100%; + color: #333; + font: 14px helvetica, sans-serif; + background: #ddd; + background: -webkit-radial-gradient(circle,#aaa,#eee 60%) center fixed; + background: -moz-radial-gradient(circle,#aaa,#eee 60%) center fixed; + background: -ms-radial-gradient(circle,#aaa,#eee 60%) center fixed; + background: -o-radial-gradient(circle,#aaa,#eee 60%) center fixed; + border-top: 8px solid rgba(51,51,51,.8); +} +#wrapper { + margin-top: 160px; + padding: 15px; + background: #fff; + opacity: .9; + box-shadow: 0px 1px 8px rgba(0,0,0,0.3); + max-width: 700px; + margin: auto; + border-radius: 0 0 7px 7px; +} +h1 { + font-size: 29px; +} +h2 { + font-size: 24px; +} +.seperator { + margin: 10px 0; + height: 1px; + background: #aaa; + background: -webkit-linear-gradient(left, #fff, #aaa 20%, #aaa 80%, #fff); + background: -moz-linear-gradient(left, #fff, #aaa 20%, #aaa 80%, #fff); + background: -ms-linear-gradient(left, #fff, #aaa 20%, #aaa 80%, #fff); + background: -o-linear-gradient(left, #fff, #aaa 20%, #aaa 80%, #fff); +} +form { + margin-bottom: 0; +} +#inner { + width: 300px; + margin: 0 auto; +} +input { + font-weight: bold; + font-size: 15px; +} +input[type="button"] { + padding: 4px 6px; + margin: 0; +} +input[type="button"].do-install, input[type="button"].do-uninstall { + float: right; + width: 100px; +} +input[type="button"]#do-search { + display: block; +} +input[type="text"] { + border-radius: 3px; + box-sizing: border-box; + -moz-box-sizing: border-box; + padding: 10px; + *padding: 0; /* IE7 hack */ + width: 100%; + outline: none; + border: 1px solid #ddd; + margin: 0 0 5px 0; + max-width: 500px; +} +table { + border: 1px solid #ddd; + border-radius: 3px; + border-spacing: 0; + width: 100%; + margin: 20px 0; +} +table thead tr { + background: #eee; +} +td, th { + padding: 5px; +} +.template { + display: none; +} +.dialog { + display: none; + position: absolute; + left: 50%; + top: 50%; + width: 700px; + height: 500px; + margin-left: -350px; + margin-top: -250px; + border: 3px solid #999; + background: #eee; +} +.dialog .title { + margin: 0; + padding: 2px; + border-bottom: 3px solid #999; + font-size: 24px; + line-height: 24px; + height: 24px; + overflow: hidden; +} +.dialog .title .close { + float: right; + padding: 1px 10px; +} +.dialog .history { + background: #222; + color: #eee; + position: absolute; + top: 41px; + bottom: 10px; + left: 10px; + right: 10px; + padding: 2px; + overflow: auto; +} \ No newline at end of file diff --git a/src/static/js/ace.js b/src/static/js/ace.js index 6ea2938b9..85801d33e 100644 --- a/src/static/js/ace.js +++ b/src/static/js/ace.js @@ -167,7 +167,13 @@ require.setGlobalKeyPath("require");\n\ buffer.push(Ace2Editor.EMBEDED[KERNEL_SOURCE]); buffer.push(KERNEL_BOOT); buffer.push('<\/script>'); - } + } else { + file = KERNEL_SOURCE; + buffer.push(' - - - - -
- - <% if (errors.length) { %> -
- <% errors.forEach(function (item) { %> -
<%= item.toString() %>
- <% }) %> -
- <% } %> - - -

Installed plugins

- - - - - - - - - - - - - - - - - -
NameDescription
- -
- -
-

Search for plugins to install

-
- - -
- - - - - - - - - - - - - - - - - -
NameDescription
- -
- - .. of . - -
- - -
-

- Please wait: - -

-
-
-
- - + + + Plugin manager + + + + + + + +
+ + <% if (errors.length) { %> +
+ <% errors.forEach(function (item) { %> +
<%= item.toString() %>
+ <% }) %> +
+ <% } %> + + +

Etherpad Lite

+
+

Installed plugins

+ + + + + + + + + + + + + + + + + +
NameDescription
+ +
+ +
+
+

Search for plugins to install

+
+ + +
+ + + + + + + + + + + + + + + + + +
NameDescription
+ +
+ + .. of . + +
+ +
+

+ Please wait: + +

+
+
+
+ + diff --git a/src/templates/pad.html b/src/templates/pad.html index 91583b360..6181b0621 100644 --- a/src/templates/pad.html +++ b/src/templates/pad.html @@ -11,79 +11,77 @@ <% e.begin_block("styles"); %> - - - + + + <% e.end_block(); %>
+ <% e.begin_block("editbarMenuLeft"); %> +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • +
  • + +
  • +
  • + +
  • +
  • +
  • + +
  • + <% e.end_block(); %> +
    @@ -95,17 +93,17 @@ - +
    -
    +
    -
    +
    @@ -150,20 +148,20 @@

    Import from text file, HTML, PDF, Word, ODT or RTF


    -
    - -
    -
    +
    + +
    +
    -
    Successful!
    -
    - - - - - - -
    +
    Successful!
    +
    + + + + + + +
    @@ -223,79 +221,79 @@
    - +
    <% e.begin_block("modals"); %> -
    -
    -
    Connecting...
    -
    Reestablishing connection...
    -
    -

    Disconnected.

    -

    Opened in another window.

    -

    No Authorization.

    -
    -

    We're having trouble talking to the EtherPad lite synchronization server. You may be connecting through an incompatible firewall or proxy server.

    -
    -
    -

    We were unable to connect to the EtherPad lite synchronization server. This may be due to an incompatibility with your web browser or internet connection.

    -
    -
    -

    You seem to have opened this pad in another browser window. If you'd like to use this window instead, you can reconnect.

    -
    -
    -

    Lost connection with the EtherPad lite synchronization server. This may be due to a loss of network connectivity.

    -
    -
    -

    Server not responding. This may be due to network connectivity issues or high load on the server.

    -
    -
    -

    Your browser's credentials or permissions have changed while viewing this pad. Try reconnecting.

    -
    -
    -

    This pad was deleted.

    -
    -
    -

    If this continues to happen, please let us know

    -
    -
    - -
    +
    +
    +
    Connecting...
    +
    Reestablishing connection...
    +
    +

    Disconnected.

    +

    Opened in another window.

    +

    No Authorization.

    +
    +

    We're having trouble talking to the EtherPad lite synchronization server. You may be connecting through an incompatible firewall or proxy server.

    +
    +
    +

    We were unable to connect to the EtherPad lite synchronization server. This may be due to an incompatibility with your web browser or internet connection.

    +
    +
    +

    You seem to have opened this pad in another browser window. If you'd like to use this window instead, you can reconnect.

    +
    +
    +

    Lost connection with the EtherPad lite synchronization server. This may be due to a loss of network connectivity.

    +
    +
    +

    Server not responding. This may be due to network connectivity issues or high load on the server.

    +
    +
    +

    Your browser's credentials or permissions have changed while viewing this pad. Try reconnecting.

    +
    +
    +

    This pad was deleted.

    +
    +
    +

    If this continues to happen, please let us know

    +
    +
    +
    -
    + +
    <% e.end_block(); %>
    - + <% e.begin_block("scripts"); %> - - - - - + + + + + /* TODO: These globals shouldn't exist. */ + pad = require('ep_etherpad-lite/static/js/pad').pad; + chat = require('ep_etherpad-lite/static/js/chat').chat; + padeditbar = require('ep_etherpad-lite/static/js/pad_editbar').padeditbar; + padimpexp = require('ep_etherpad-lite/static/js/pad_impexp').padimpexp; + }()); + <% e.end_block(); %>