diff --git a/src/node/db/API.js b/src/node/db/API.js
index 09cc95afc..37fd3f161 100644
--- a/src/node/db/API.js
+++ b/src/node/db/API.js
@@ -431,7 +431,7 @@ exports.setPassword = function(padID, password, callback)
if(ERR(err, callback)) return;
//set the password
- pad.setPassword(password);
+ pad.setPassword(password == "" ? null : password);
callback();
});
diff --git a/src/node/utils/caching_middleware.js b/src/node/utils/caching_middleware.js
index 70d5a08c4..ba2b462df 100644
--- a/src/node/utils/caching_middleware.js
+++ b/src/node/utils/caching_middleware.js
@@ -73,6 +73,9 @@ CachingMiddleware.prototype = new function () {
var _headers = {};
old_res.setHeader = res.setHeader;
res.setHeader = function (key, value) {
+ // Don't set cookies, see issue #707
+ if (key.toLowerCase() === 'set-cookie') return;
+
_headers[key.toLowerCase()] = value;
old_res.setHeader.call(res, key, value);
};
diff --git a/src/node/utils/tar.json b/src/node/utils/tar.json
index e691334dc..461e51979 100644
--- a/src/node/utils/tar.json
+++ b/src/node/utils/tar.json
@@ -1,12 +1,7 @@
{
"pad.js": [
- "jquery.js"
- , "underscore.js"
- , "security.js"
- , "pad.js"
- , "ace2_common.js"
+ "pad.js"
, "pad_utils.js"
- , "json2.js"
, "pad_cookie.js"
, "pad_editor.js"
, "pad_editbar.js"
@@ -23,13 +18,9 @@
, "farbtastic.js"
]
, "timeslider.js": [
- "jquery.js"
- , "underscore.js"
- , "security.js"
- , "json2.js"
+ "timeslider.js"
, "colorutils.js"
, "draggable.js"
- , "ace2_common.js"
, "pad_utils.js"
, "pad_cookie.js"
, "pad_editor.js"
@@ -46,12 +37,10 @@
, "broadcast.js"
, "broadcast_slider.js"
, "broadcast_revisions.js"
- , "timeslider.js"
]
, "ace2_inner.js": [
- "ace2_common.js"
+ "ace2_inner.js"
, "underscore.js"
- , "rjquery.js"
, "AttributePool.js"
, "Changeset.js"
, "ChangesetUtils.js"
@@ -66,6 +55,17 @@
, "linestylefilter.js"
, "domline.js"
, "AttributeManager.js"
- , "ace2_inner.js"
+ ]
+, "ace2_common.js": [
+ "ace2_common.js"
+ , "jquery.js"
+ , "rjquery.js"
+ , "underscore.js"
+ , "security.js"
+ , "json2.js"
+ , "pluginfw/plugins.js"
+ , "pluginfw/hooks.js"
+ , "pluginfw/async.js"
+ , "pluginfw/parent_require.js"
]
}
diff --git a/src/package.json b/src/package.json
index 0b76ec2ed..c46abbbf6 100644
--- a/src/package.json
+++ b/src/package.json
@@ -10,7 +10,7 @@
"name": "Robin Buse" }
],
"dependencies" : {
- "yajsml" : "1.1.2",
+ "yajsml" : "1.1.3",
"request" : "2.9.100",
"require-kernel" : "1.0.5",
"resolve" : "0.2.1",
diff --git a/src/static/css/pad.css b/src/static/css/pad.css
index 40089bbfb..02e05113c 100644
--- a/src/static/css/pad.css
+++ b/src/static/css/pad.css
@@ -64,34 +64,17 @@ a img {
height: 32px;
}
.toolbar ul li {
- background: #fff;
- background: -webkit-linear-gradient(#fff, #f0f0f0);
- background: -moz-linear-gradient(#fff, #f0f0f0);
- background: -o-linear-gradient(#fff, #f0f0f0);
- background: -ms-linear-gradient(#fff, #f0f0f0);
- background: linear-gradient(#fff, #f0f0f0);
- border: 1px solid #ccc;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
- cursor: pointer;
float: left;
- height: 18px;
margin-left: 2px;
- overflow: hidden;
- padding: 4px 5px;
- width: 18px;
}
-.toolbar ul li a {
+.toolbar ul li a:hover {
text-decoration: none;
- color: #ccc;
- position: absolute;
}
.toolbar ul li a span {
position: relative;
top: -2px;
}
-.toolbar ul li:hover {
+.toolbar ul li a:hover {
background: #fff;
background: -webkit-linear-gradient(#f4f4f4, #e4e4e4);
background: -moz-linear-gradient(#f4f4f4, #e4e4e4);
@@ -99,7 +82,7 @@ a img {
background: -ms-linear-gradient(#f4f4f4, #e4e4e4);
background: linear-gradient(#f4f4f4, #e4e4e4);
}
-.toolbar ul li:active {
+.toolbar ul li a:active {
background: #eee;
background: -webkit-linear-gradient(#ddd, #fff);
background: -moz-linear-gradient(#ddd, #fff);
@@ -115,12 +98,30 @@ a img {
background: inherit;
visibility: hidden;
width: 0px;
+ padding: 5px;
}
.toolbar ul li a {
- display: block
+ background: #fff;
+ background: -webkit-linear-gradient(#fff, #f0f0f0);
+ background: -moz-linear-gradient(#fff, #f0f0f0);
+ background: -o-linear-gradient(#fff, #f0f0f0);
+ background: -ms-linear-gradient(#fff, #f0f0f0);
+ background: linear-gradient(#fff, #f0f0f0);
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ color: #ccc;
+ cursor: pointer;
+ display: inline-block;
+ min-height: 18px;
+ overflow: hidden;
+ padding: 4px 5px;
+ text-align: center;
+ text-decoration: none;
+ min-width: 18px;
}
-.toolbar ul li a img {
- padding: 1px
+.toolbar ul li a .buttonicon {
+ position: relative;
+ top: 1px;
}
.toolbar ul {
float: left
@@ -428,6 +429,7 @@ a#hidetopmsg {
top: 0;
width: 56px;
z-index: 10;
+ display: inline-block;
}
.toolbarsavetable {
position: absolute;
@@ -1214,8 +1216,8 @@ ul#colorpickerswatches li:hover {
height: 16px;
background-image: url('../../static/img/etherpad_lite_icons.png');
background-repeat: no-repeat;
- margin-left: 1px;
- margin-top: 1px;
+ display: inline-block;
+ vertical-align: middle;
}
.buttonicon-bold {
background-position: 0px -116px
@@ -1264,20 +1266,13 @@ ul#colorpickerswatches li:hover {
}
.buttonicon-chat {
background-position: 0px -102px;
- display: inline-block;
- vertical-align: middle;
- margin: 0 !important;
}
.buttonicon-showusers {
background-position: 0px -183px;
- display: inline-block;
}
.buttonicon-savedRevision {
background-position: 0px -493px
}
-#usericon {
- width: 33px !important
-}
#focusprotector {
z-index: 100;
position: absolute;
@@ -1293,9 +1288,6 @@ ul#colorpickerswatches li:hover {
}
#online_count {
color: #888;
- font-size: 11px;
- line-height: 18px;
- position: fixed;
}
.rtl {
direction: RTL
@@ -1399,13 +1391,16 @@ input[type=checkbox] {
}
}
@media screen and (max-width: 600px) {
- .toolbar ul li {
+ .toolbar ul li.separator {
+ padding: 1px;
+ }
+ .toolbar ul li a {
padding: 4px 1px
}
}
@media only screen and (min-device-width: 320px) and (max-device-width: 720px) {
- .toolbar ul li {
- padding: 4px 3px
+ .toolbar ul li a {
+ padding: 4px 5px;
}
#users {
right: 0;
@@ -1436,15 +1431,6 @@ input[type=checkbox] {
bottom: 0;
border-top: 1px solid #ccc;
}
- .toolbar ul.menu_right li:last-child {
- height: 24px;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
- margin-top: 0;
- border: 0;
- float: right;
- }
#chaticon {
bottom: 3px;
right: 55px;
@@ -1466,19 +1452,27 @@ input[type=checkbox] {
border-top-right-radius: 0;
border-right: none;
}
- .toolbar ul li a span {
- top: -3px
- }
#usericonback {
margin-top: 4px
}
- .toolbar ul.menu_right li:not(:last-child) {
- display: block
+ .toolbar ul.menu_right > li:last-child {
+ float: right;
+ }
+ .toolbar ul.menu_right > li:not(:last-child) a {
+ display: block;
}
.toolbar ul.menu_right > li {
- background: none;
+ padding: 0;
+ }
+ .toolbar ul.menu_right > li a {
+ height: 24px;
+ line-height: 24px;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
border: none;
- margin-top: 4px;
+ background: none;
+ margin: 0;
padding: 4px 8px;
}
.selected {
diff --git a/src/static/js/ace.js b/src/static/js/ace.js
index 0003eedf2..8cb9f1884 100644
--- a/src/static/js/ace.js
+++ b/src/static/js/ace.js
@@ -178,18 +178,17 @@ require.setGlobalKeyPath("require");\n\
function pushScriptsTo(buffer) {
/* Folling is for packaging regular expression. */
/* $$INCLUDE_JS("../javascripts/src/ace2_inner.js?callback=require.define"); */
+ /* $$INCLUDE_JS("../javascripts/src/ace2_common.js?callback=require.define"); */
var ACE_SOURCE = '../javascripts/src/ace2_inner.js?callback=require.define';
+ var ACE_COMMON = '../javascripts/src/ace2_common.js?callback=require.define';
if (Ace2Editor.EMBEDED && Ace2Editor.EMBEDED[ACE_SOURCE]) {
buffer.push('\
');
- pushScriptsTo(iframeHTML);
+
+ iframeHTML.push('