diff --git a/admin/js/markdown.js b/admin/js/markdown.js
index fbe343d2..cc3aa9cb 100644
--- a/admin/js/markdown.js
+++ b/admin/js/markdown.js
@@ -3057,6 +3057,8 @@ else
heading: "Heading
/ Ctrl+H",
headingexample: "Heading",
+ fullscreen: 'FullScreen Ctrl+M',
+
hr: "Horizontal Rule
Ctrl+R",
undo: "Undo - Ctrl+Z",
@@ -3565,56 +3567,77 @@ else
refreshState();
};
+ var getFullScreenAdapter = function () {
+ var selector = {
+ fullScreenChange : ['onfullscreenchange', 'onwebkitfullscreenchange', 'onmozfullscreenchange'],
+ requestFullscreen : ['requestFullscreen', 'webkitRequestFullScreen', 'mozRequestFullScreen'],
+ cancelFullscreen : ['cancelFullscreen', 'webkitCancelFullScreen', 'mozCancelFullScreen']
+ }, adapter = {};
+
+ for (var name in selector) {
+ var len = selector[name].length, found = false;
+
+ for (var i = 0; i < len; i ++) {
+ var method = selector[name][i];
+
+ if ('undefined' != typeof(document[method]) || 'undefined' != typeof(document.body[method])) {
+ adapter[name] = method;
+ found = true;
+ break;
+ }
+ }
+
+ if (!found) {
+ return false;
+ }
+ }
+
+ return adapter;
+ }
+
+ var isFullScreen = function () {
+ return document.fullScreen ||
+ document.mozFullScreen ||
+ document.webkitIsFullScreen;
+ }
+
+ var fullScreenBind = false;
+
// fullscreen
this.fullscreen = function () {
- var nativeFsWebkit = document.body.webkitRequestFullScreen ? true : false;
- var nativeFsMoz = document.body.mozRequestFullScreen ? true : false;
- var nativeFsW3C = document.body.requestFullscreen ? true : false;
- var nativeFs = nativeFsWebkit || nativeFsMoz || nativeFsW3C;
- var input = panels.input, preview = panels.preview, buttonBar = panels.buttonBar, parent = buttonBar.parentNode;
- parent.style.display = 'none';
- var isFullScreen = parent.getAttribute('isFullScreen');
- if (isFullScreen != 'true') {
- parent.setAttribute('isFullScreen', true);
- var windowHeight;
- if (nativeFs) {
- if (nativeFsWebkit) {
- parent.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
- }
- else if (nativeFsMoz) {
- parent.mozRequestFullScreen();
- }
- else if (nativeFsW3C) {
- parent.requestFullscreen();
- }
- }
+ var input = panels.input, preview = panels.preview, buttonBar = panels.buttonBar,
+ adapter = getFullScreenAdapter();
- windowHeight = window.screen.height - 32;
-
- input.style.cssText = "width:50%;background-color:#000000;color:#ffffff;position:absolute;z-index:999;top:32px;left:0;box-sizing: border-box;";
- input.style.height = windowHeight + 'px';
- buttonBar.style.cssText = "width:100%;background-color:#ffffff;position:absolute;z-index:1000;top:0;left:0";
- preview.style.cssText = "width:50%;background-color:#ffffff;position:absolute;z-index:999;top:32px;right:0;box-sizing: border-box;overflow: auto;";
- preview.style.height = windowHeight + 'px';
-
- } else {
- parent.setAttribute('isFullScreen', false);
- if (nativeFs) {
- if (nativeFsWebkit) {
- document.webkitCancelFullScreen();
- }
- else if (nativeFsMoz) {
- document.mozCancelFullScreen();
- }
- else if (nativeFsW3C) {
- document.exitFullscreen();
- }
- }
- input.style.cssText = 'height:350px;';
- preview.style.cssText = '';
- buttonBar.style.cssText = '';
+ if (!adapter) {
+ return false;
+ }
+
+ if (!fullScreenBind) {
+ util.addEvent(document, adapter.fullScreenChange.substring(2), function () {
+ if (!isFullScreen()) {
+ input.style.cssText = 'height:350px;';
+ preview.style.cssText = '';
+ buttonBar.style.cssText = '';
+ } else {
+ var windowHeight = window.screen.height - 32;
+
+ input.style.cssText = "width:50%;background-color:#000000;color:#ffffff;position:absolute;z-index:999;top:32px;left:0;box-sizing: border-box;";
+ input.style.height = windowHeight + 'px';
+ buttonBar.style.cssText = "width:100%;background-color:#ffffff;position:absolute;z-index:1000;top:0;left:0";
+ preview.style.cssText = "width:50%;background-color:#ffffff;position:absolute;z-index:999;top:32px;right:0;box-sizing: border-box;overflow: auto;";
+ preview.style.height = windowHeight + 'px';
+ }
+ });
+
+ fullScreenBind = true;
+ }
+
+ if (!isFullScreen()) {
+ document.body[adapter.requestFullscreen]('webkitRequestFullScreen' == adapter.requestFullscreen
+ ? Element.ALLOW_KEYBOARD_INPUT : null);
+ } else {
+ document[adapter.cancelFullscreen]();
}
- parent.style.display = '';
};
// Push the input area state to the stack.
@@ -4350,6 +4373,9 @@ else
case "u":
doClick(buttons.ulist);
break;
+ case 'm':
+ doClick(buttons.fullscreen);
+ break;
case "h":
doClick(buttons.heading);
break;
diff --git a/admin/write-js.php b/admin/write-js.php
index 89c1a6f8..18bb0f52 100644
--- a/admin/write-js.php
+++ b/admin/write-js.php
@@ -239,6 +239,8 @@ $(document).ready(function () {
redo: ' - Ctrl+Y',
redomac: ' - Ctrl+Shift+Z',
+ fullscreen: ' - Ctrl+M',
+
imagedialog: '
',
linkdialog: '
',