diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e4857bd..0fac58f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +# 1.2.81 + * Fix: CtrlZ-Y for Undo Redo + * Fix: RTL functionality on contents & fix RTL/LTR tests and RTL in Safari + * Fix: Various other tests fixed in Android + # 1.2.8 ! IMPORTANT: New setting.json value is required to automatically reconnect clients on disconnect * NEW: Use Socket IO for rooms (allows for pads to be load balanced with sticky rooms) diff --git a/doc/api/embed_parameters.md b/doc/api/embed_parameters.md index 3100fff9..dcbe3e5b 100644 --- a/doc/api/embed_parameters.md +++ b/doc/api/embed_parameters.md @@ -60,3 +60,9 @@ Default: en Example: `lang=ar` (translates the interface into Arabic) +## rtl + * Boolean + +Default: true +Displays pad text from right to left. + diff --git a/src/locales/en.json b/src/locales/en.json index bef6dfd0..920a2b00 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -29,6 +29,7 @@ "pad.settings.stickychat": "Chat always on screen", "pad.settings.colorcheck": "Authorship colors", "pad.settings.linenocheck": "Line numbers", + "pad.settings.rtlcheck": "Read content from right to left?", "pad.settings.fontType": "Font type:", "pad.settings.fontType.normal": "Normal", "pad.settings.fontType.monospaced": "Monospace", diff --git a/src/package.json b/src/package.json index 44d03d80..13a4de4c 100644 --- a/src/package.json +++ b/src/package.json @@ -45,5 +45,5 @@ "engines" : { "node" : ">=0.6.3", "npm" : ">=1.0" }, - "version" : "1.2.8" + "version" : "1.2.81" } diff --git a/src/static/css/pad.css b/src/static/css/pad.css index 6034b5ed..e536b925 100644 --- a/src/static/css/pad.css +++ b/src/static/css/pad.css @@ -179,6 +179,7 @@ a img { width: 100%; padding: 0; margin: 0; + left: 0; /* Required for safari fixes RTL */ } #editorloadingbox { padding-top: 100px; diff --git a/src/static/js/ace2_inner.js b/src/static/js/ace2_inner.js index ddb614be..b8b59b84 100644 --- a/src/static/js/ace2_inner.js +++ b/src/static/js/ace2_inner.js @@ -959,7 +959,11 @@ function Ace2Inner(){ styled: setStyled, textface: setTextFace, textsize: setTextSize, - rtlistrue: setClassPresenceNamed(root, "rtl") + rtlistrue: function(value) { + setClassPresence(root, "rtl", value) + setClassPresence(root, "ltr", !value) + document.documentElement.dir = value? 'rtl' : 'ltr' + } }; var setter = setters[key.toLowerCase()]; @@ -3580,7 +3584,7 @@ function Ace2Inner(){ var specialHandled = false; var isTypeForSpecialKey = ((browser.msie || browser.safari) ? (type == "keydown") : (type == "keypress")); - var isTypeForCmdKey = ((browser.msie || browser.safari) ? (type == "keydown") : (type == "keypress")); + var isTypeForCmdKey = ((browser.msie || browser.safari || browser.chrome) ? (type == "keydown") : (type == "keypress")); var stopped = false; diff --git a/src/static/js/pad.js b/src/static/js/pad.js index 6e8b2ae0..4b052620 100644 --- a/src/static/js/pad.js +++ b/src/static/js/pad.js @@ -313,7 +313,7 @@ function handshake() if (settings.rtlIsTrue == true) { - pad.changeViewOption('rtl', true); + pad.changeViewOption('rtlIsTrue', true); } // If the Monospacefont value is set to true then change it to monospace. diff --git a/src/static/js/pad_editor.js b/src/static/js/pad_editor.js index dd0cbbbb..b73409ff 100644 --- a/src/static/js/pad_editor.js +++ b/src/static/js/pad_editor.js @@ -62,20 +62,36 @@ var padeditor = (function() }, initViewOptions: function() { + // Line numbers padutils.bindCheckboxChange($("#options-linenoscheck"), function() { pad.changeViewOption('showLineNumbers', padutils.getCheckbox($("#options-linenoscheck"))); }); + + // Author colors padutils.bindCheckboxChange($("#options-colorscheck"), function() { padcookie.setPref('showAuthorshipColors', padutils.getCheckbox("#options-colorscheck")); pad.changeViewOption('showAuthorColors', padutils.getCheckbox("#options-colorscheck")); }); + + // Right to left + padutils.bindCheckboxChange($("#options-rtlcheck"), function() + { + pad.changeViewOption('rtlIsTrue', padutils.getCheckbox($("#options-rtlcheck"))) + }); + html10n.bind('localized', function() { + pad.changeViewOption('rtlIsTrue', ('rtl' == html10n.getDirection())); + padutils.setCheckbox($("#options-rtlcheck"), ('rtl' == html10n.getDirection())); + }) + + // font face $("#viewfontmenu").change(function() { pad.changeViewOption('useMonospaceFont', $("#viewfontmenu").val() == 'monospace'); }); + // Language html10n.bind('localized', function() { $("#languagemenu").val(html10n.getLanguage()); // translate the value of 'unnamed' and 'Enter your name' textboxes in the userlist @@ -104,12 +120,14 @@ var padeditor = (function() if (value == "false") return false; return defaultValue; } - self.ace.setProperty("rtlIsTrue", settings.rtlIsTrue); var v; - v = getOption('rtlIsTrue', false); + v = getOption('rtlIsTrue', ('rtl' == html10n.getDirection())); + // Override from parameters if true + if(settings.rtlIsTrue === true) v = true; self.ace.setProperty("rtlIsTrue", v); + padutils.setCheckbox($("#options-rtlcheck"), v); v = getOption('showLineNumbers', true); self.ace.setProperty("showslinenumbers", v); diff --git a/src/templates/pad.html b/src/templates/pad.html index 76df5133..1d8c069a 100644 --- a/src/templates/pad.html +++ b/src/templates/pad.html @@ -217,6 +217,10 @@
++ + +
<% e.end_block(); %>