diff --git a/src/locales/en.json b/src/locales/en.json
index 23bb3a040..3e16c5de0 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -38,7 +38,24 @@
"pad.settings.rtlcheck": "Read content from right to left?",
"pad.settings.fontType": "Font type:",
"pad.settings.fontType.normal": "Normal",
+ "pad.settings.fontType.opendyslexic": "Open Dyslexic",
"pad.settings.fontType.monospaced": "Monospace",
+ "pad.settings.fontType.comicsans": "Comic Sans",
+ "pad.settings.fontType.couriernew": "Courier New",
+ "pad.settings.fontType.georgia": "Georgia",
+ "pad.settings.fontType.impact": "Impact",
+ "pad.settings.fontType.lucida": "Lucida",
+ "pad.settings.fontType.lucidasans": "Lucida Sans",
+ "pad.settings.fontType.palatino": "Palatino",
+ "pad.settings.fontType.tahoma": "Tahoma",
+ "pad.settings.fontType.timesnewroman": "Times New Roman",
+ "pad.settings.fontType.trebuchet": "Trebuchet",
+ "pad.settings.fontType.verdana": "Verdana",
+ "pad.settings.fontType.symbol": "Symbol",
+ "pad.settings.fontType.webdings": "Webdings",
+ "pad.settings.fontType.wingdings": "Wingdings",
+ "pad.settings.fontType.sansserif": "Sans Serif",
+ "pad.settings.fontType.serif": "Serif",
"pad.settings.globalView": "Global View",
"pad.settings.language": "Language:",
@@ -105,6 +122,10 @@
"timeslider.version": "Version {{version}}",
"timeslider.saved": "Saved {{month}} {{day}}, {{year}}",
+ "timeslider.playPause": "Playback / Pause Pad Contents",
+ "timeslider.backRevision":"Go back a revision in this Pad",
+ "timeslider.forwardRevision":"Go forward a revision in this Pad",
+
"timeslider.dateformat": "{{month}}/{{day}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}",
"timeslider.month.january": "January",
"timeslider.month.february": "February",
diff --git a/src/node/handler/ImportHandler.js b/src/node/handler/ImportHandler.js
index 676986510..2dad8b3d8 100644
--- a/src/node/handler/ImportHandler.js
+++ b/src/node/handler/ImportHandler.js
@@ -148,6 +148,9 @@ exports.doImport = function(req, res, padId)
if(!importHandledByPlugin || !directDatabaseAccess){
var fileEnding = path.extname(srcFile).toLowerCase();
var fileIsHTML = (fileEnding === ".html" || fileEnding === ".htm");
+ var fileIsTXT = (fileEnding === ".txt");
+ if (fileIsTXT) abiword = false; // Don't use abiword for text files
+ // See https://github.com/ether/etherpad-lite/issues/2572
if (abiword && !fileIsHTML) {
abiword.convertFile(srcFile, destFile, "htm", function(err) {
//catch convert errors
@@ -213,7 +216,7 @@ exports.doImport = function(req, res, padId)
// Title needs to be stripped out else it appends it to the pad..
text = text.replace("
", "");
-
+
//node on windows has a delay on releasing of the file lock.
//We add a 100ms delay to work around this
if(os.type().indexOf("Windows") > -1){
@@ -245,7 +248,6 @@ exports.doImport = function(req, res, padId)
padManager.getPad(padId, function(err, _pad){
var pad = _pad;
padManager.unloadPad(padId);
-
// direct Database Access means a pad user should perform a switchToPad
// and not attempt to recieve updated pad data..
if(!directDatabaseAccess){
diff --git a/src/node/utils/Settings.js b/src/node/utils/Settings.js
index 888e86d32..536c088b2 100644
--- a/src/node/utils/Settings.js
+++ b/src/node/utils/Settings.js
@@ -100,7 +100,7 @@ exports.toolbar = {
["showusers"]
],
timeslider: [
- ["timeslider_export", "timeslider_returnToPad"]
+ ["timeslider_export", "timeslider_settings", "timeslider_returnToPad"]
]
}
diff --git a/src/node/utils/toolbar.js b/src/node/utils/toolbar.js
index a5d30f960..07b86496f 100644
--- a/src/node/utils/toolbar.js
+++ b/src/node/utils/toolbar.js
@@ -99,12 +99,14 @@ _.extend(Button.prototype, {
};
return tag("li", liAttributes,
tag("a", { "class": this.grouping, "data-l10n-id": this.attributes.localizationId },
- tag("span", { "class": " "+ this.attributes.class })
+ tag("button", { "class": " "+ this.attributes.class, "data-l10n-id": this.attributes.localizationId })
)
);
}
});
+
+
SelectButton = function (attributes) {
this.attributes = attributes;
this.options = [];
@@ -208,6 +210,12 @@ module.exports = {
class: "buttonicon buttonicon-import_export"
},
+ timeslider_settings: {
+ command: "settings",
+ localizationId: "pad.toolbar.settings.title",
+ class: "buttonicon buttonicon-settings"
+ },
+
timeslider_returnToPad: {
command: "timeslider_returnToPad",
localizationId: "timeslider.toolbar.returnbutton",
diff --git a/src/static/css/pad.css b/src/static/css/pad.css
index c9ebff4a5..ff8ab5ab7 100644
--- a/src/static/css/pad.css
+++ b/src/static/css/pad.css
@@ -70,10 +70,6 @@ a img {
.toolbar ul li {
float: left;
margin-left: 2px;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
height:32px;
}
.toolbar ul li.separator {
@@ -141,9 +137,24 @@ a img {
top: 1px;
}
.toolbar ul li a .buttontext {
- color: #222;
+ color: #666;
font-size: 14px;
+ border:none;
+ background:none;
+ margin-top:1px;
+ color:#666;
}
+
+.buttontext::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+
+.buttontext:focus{
+ /* Not sure why important is required here but it is */
+ border: 1px solid #666 !important;
+}
+
.toolbar ul li a.grouped-left {
border-radius: 3px 0 0 3px;
}
@@ -197,6 +208,7 @@ li[data-key=showusers] > a #online_count {
#editbar{
display:none;
}
+
#editorcontainer {
position: absolute;
top: 37px; /* + 1px border */
@@ -742,12 +754,24 @@ table#otheruserstable {
height: 16px;
display: inline-block;
vertical-align: middle;
-
+ border: none;
+ padding: 0;
+ background: none;
font-family: "fontawesome-etherpad";
font-size: 15px;
font-style: normal;
font-weight: normal;
color: #666;
+ cursor: pointer;
+}
+
+.buttonicon::-moz-focus-inner {
+ padding: 0;
+ border: 0
+}
+
+.buttonicon:focus{
+ border: 1px solid #666;
}
.buttonicon-bold:before {
content: "\e81c";
@@ -1216,6 +1240,11 @@ input[type=checkbox] {
}
/* End of gritter stuff */
+@font-face {
+ font-family: opendyslexic;
+ src: url("../../static/font/opendyslexic.otf") format("opentype");
+}
+
@font-face {
font-family: "fontawesome-etherpad";
src:url("../font/fontawesome-etherpad.eot");
@@ -1254,3 +1283,11 @@ input[type=checkbox] {
-moz-osx-font-smoothing: grayscale;
}
+.hideControlsEditor{
+ top:0px !important;
+}
+.hideControlsEditbar{
+ display:none !important;
+}
+
+
diff --git a/src/static/css/timeslider.css b/src/static/css/timeslider.css
index 49f894210..9f4e46839 100644
--- a/src/static/css/timeslider.css
+++ b/src/static/css/timeslider.css
@@ -78,6 +78,7 @@
width: 44px;
text-align:center;
vertical-align:middle;
+ background:none;
}
#playpause_button {
right: 77px;
@@ -125,7 +126,7 @@
font-family: fontawesome-etherpad;
border-radius:2px;
border: #666 solid 1px;
- line-height:18px;
+/* line-height:18px; */
text-align:center;
height:22px;
color:#666;
@@ -204,12 +205,9 @@ stepper:active{
float:right;
height:30px;
}
-#settings,
-#import_export,
-#embed,
-#connectivity,
-#users {
- top: 62px;
+#import_export, #settings{
+ top: 115px;
+ position: fixed;
}
#import_export .popup {
width: 183px;
@@ -218,9 +216,7 @@ stepper:active{
border-radius: 0 0 0 6px;
}
#import_export {
- top: 115px;
width: 185px;
- position: fixed;
}
.timeslider-bar {
background: #f7f7f7;
@@ -236,7 +232,7 @@ stepper:active{
.timeslider-bar #editbar {
border-bottom: none;
float: right;
- width: 170px;
+ width: 180px;
}
.timeslider-bar h1 {
margin: 5px
@@ -337,3 +333,19 @@ OL {
.list-number6 {
list-style-type: lower-roman
}
+
+button{
+ margin:0;
+ padding:0;
+ cursor:pointer;
+}
+
+button::-moz-focus-inner {
+ padding: 0;
+ border: 0
+}
+
+button:focus{
+ border: 1px solid #666;
+}
+
diff --git a/src/static/font/opendyslexic.otf b/src/static/font/opendyslexic.otf
new file mode 100644
index 000000000..1a7c9d411
Binary files /dev/null and b/src/static/font/opendyslexic.otf differ
diff --git a/src/static/js/ace.js b/src/static/js/ace.js
index addc412fc..c446939a3 100644
--- a/src/static/js/ace.js
+++ b/src/static/js/ace.js
@@ -265,7 +265,7 @@ plugins.ensure(function () {\n\
iframeHTML: iframeHTML
});
- iframeHTML.push('