Version Description
- Added Save, Undo, Redo, Search, Find Next, Find Prev, Replace, Replace All and Fullscreen buttons to plugin/theme editors
- Added ability to hide WP Editor menu icon from menu sidebar and move it to settings submenu
- Added ability to check if file is writable and add error messages accordingly in plugin/theme editors
- Added highlighting of shortcodes in Post editor
- Updated is_writeable() to is_writable()
- Fixed conflicts with TinyMCE Advanced and Ultimate TinyMCE plugins
- Fixed conflict with WooThemes themes
Download this release
Release Info
Developer | benjaminprojas |
Plugin | WP Editor |
Version | 1.2 |
Comparing to | |
See all releases |
Code changes from version 1.1.0.3 to 1.2
- classes/WPEditorAdmin.php +7 -3
- classes/WPEditorAjax.php +17 -9
- classes/WPEditorBrowser.php +17 -1
- classes/WPEditorPlugins.php +1 -1
- classes/WPEditorThemes.php +1 -1
- extensions/codemirror/dialog.css +26 -12
- extensions/codemirror/js/dialog.js +19 -2
- extensions/codemirror/themes/themes.css +14 -12
- js/posts-jquery.js +10 -5
- js/wpeditor.js +31 -8
- readme.txt +20 -3
- views/plugin-editor.php +87 -16
- views/settings.php +19 -0
- views/theme-editor.php +88 -17
- wpeditor.css +25 -2
- wpeditor.php +11 -4
classes/WPEditorAdmin.php
CHANGED
@@ -2,11 +2,15 @@
|
|
2 |
class WPEditorAdmin {
|
3 |
|
4 |
public function buildAdminMenu() {
|
5 |
-
$icon = WPEDITOR_URL . '/images/wpeditor_logo_16.png';
|
6 |
$page_roles = WPEditorSetting::getValue('admin_page_roles');
|
7 |
$page_roles = unserialize($page_roles);
|
8 |
-
|
9 |
-
|
|
|
|
|
|
|
|
|
|
|
10 |
//add_submenu_page('wpeditor_admin', __('Sub Menu', 'wpeditor'), __('Orders', 'wpeditor'), $page_roles['orders'], 'wpeditor_admin', array('WPEditorAdmin', 'subMenuPage'));
|
11 |
add_action('admin_print_styles-' . $settings, array('WPEditorAdmin', 'defaultStylesheetAndScript'));
|
12 |
}
|
2 |
class WPEditorAdmin {
|
3 |
|
4 |
public function buildAdminMenu() {
|
|
|
5 |
$page_roles = WPEditorSetting::getValue('admin_page_roles');
|
6 |
$page_roles = unserialize($page_roles);
|
7 |
+
if(WPEditorSetting::getValue('hide_wpeditor_menu')) {
|
8 |
+
$settings = add_submenu_page('options-general.php', __('WP Editor Settings', 'wpeditor'), __('WP Editor', 'wpeditor'), $page_roles['settings'], 'wpeditor_admin', array('WPEditorAdmin', 'addSettingsPage'));
|
9 |
+
}
|
10 |
+
else {
|
11 |
+
$icon = WPEDITOR_URL . '/images/wpeditor_logo_16.png';
|
12 |
+
$settings = add_menu_page(__('WP Editor Settings', 'wpeditor'), __('WP Editor', 'wpeditor'), $page_roles['settings'], 'wpeditor_admin', array('WPEditorAdmin', 'addSettingsPage'), $icon);
|
13 |
+
}
|
14 |
//add_submenu_page('wpeditor_admin', __('Sub Menu', 'wpeditor'), __('Orders', 'wpeditor'), $page_roles['orders'], 'wpeditor_admin', array('WPEditorAdmin', 'subMenuPage'));
|
15 |
add_action('admin_print_styles-' . $settings, array('WPEditorAdmin', 'defaultStylesheetAndScript'));
|
16 |
}
|
classes/WPEditorAjax.php
CHANGED
@@ -57,21 +57,29 @@ class WPEditorAjax {
|
|
57 |
try {
|
58 |
if(isset($_POST['new_content']) && isset($_POST['real_file'])) {
|
59 |
$real_file = $_POST['real_file'];
|
60 |
-
if(file_exists($real_file)
|
61 |
-
|
62 |
-
|
63 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
}
|
65 |
else {
|
66 |
-
$
|
67 |
-
fwrite($f, $new_content);
|
68 |
-
fclose($f);
|
69 |
-
WPEditorLog::log('[' . basename(__FILE__) . ' - line ' . __LINE__ . "] just wrote to $real_file");
|
70 |
}
|
71 |
}
|
|
|
|
|
|
|
72 |
}
|
73 |
else {
|
74 |
-
$error = 'Invalid Content';
|
75 |
}
|
76 |
}
|
77 |
catch(WPEditorException $e) {
|
57 |
try {
|
58 |
if(isset($_POST['new_content']) && isset($_POST['real_file'])) {
|
59 |
$real_file = $_POST['real_file'];
|
60 |
+
if(file_exists($real_file)) {
|
61 |
+
if(is_writable($real_file)) {
|
62 |
+
$new_content = stripslashes($_POST['new_content']);
|
63 |
+
if(file_get_contents($real_file) === $new_content) {
|
64 |
+
WPEditorLog::log('[' . basename(__FILE__) . ' - line ' . __LINE__ . "] Contents are the same");
|
65 |
+
}
|
66 |
+
else {
|
67 |
+
$f = fopen($real_file, 'w+');
|
68 |
+
fwrite($f, $new_content);
|
69 |
+
fclose($f);
|
70 |
+
WPEditorLog::log('[' . basename(__FILE__) . ' - line ' . __LINE__ . "] just wrote to $real_file");
|
71 |
+
}
|
72 |
}
|
73 |
else {
|
74 |
+
$error = __('This file is not writable', 'wpeditor');
|
|
|
|
|
|
|
75 |
}
|
76 |
}
|
77 |
+
else {
|
78 |
+
$error = __('This file does not exist', 'wpeditor');
|
79 |
+
}
|
80 |
}
|
81 |
else {
|
82 |
+
$error = __('Invalid Content', 'wpeditor');
|
83 |
}
|
84 |
}
|
85 |
catch(WPEditorException $e) {
|
classes/WPEditorBrowser.php
CHANGED
@@ -14,7 +14,7 @@ class WPEditorBrowser {
|
|
14 |
$topdir = substr($dir, 0, $pos + 1);
|
15 |
$i = 0;
|
16 |
while(false !== ($file = readdir($handle))) {
|
17 |
-
if($file != '.' && $file != '..' && substr($file, 0, 1) != '.' &&
|
18 |
$rows[$i]['data'] = $file;
|
19 |
$rows[$i]['dir'] = is_dir($dir . $slash . $file);
|
20 |
$i++;
|
@@ -36,6 +36,10 @@ class WPEditorBrowser {
|
|
36 |
$output[$i]['filesize'] = '';
|
37 |
}
|
38 |
else {
|
|
|
|
|
|
|
|
|
39 |
$output[$i]['filetype'] = 'file';
|
40 |
$path = pathinfo($output[$i]['name']);
|
41 |
if(isset($path['extension'])) {
|
@@ -67,6 +71,10 @@ class WPEditorBrowser {
|
|
67 |
$output['extension'] = $path['extension'];
|
68 |
}
|
69 |
$output['content'] = file_get_contents($dir);
|
|
|
|
|
|
|
|
|
70 |
if($type == 'theme') {
|
71 |
$output['file'] = str_replace(realpath(get_theme_root()) . $slash, '', $output['path']);
|
72 |
$output['url'] = get_theme_root_uri() . $slash . $output['file'];
|
@@ -107,6 +115,10 @@ class WPEditorBrowser {
|
|
107 |
$output[$i]['filesize'] = '';
|
108 |
}
|
109 |
else {
|
|
|
|
|
|
|
|
|
110 |
$output[$i]['filetype'] = 'file';
|
111 |
$path = pathinfo($rows[$i]['data']);
|
112 |
if(isset($path['extension'])) {
|
@@ -117,6 +129,10 @@ class WPEditorBrowser {
|
|
117 |
if($output[$i]['path'] == $dir) {
|
118 |
$output[$i]['content'] = file_get_contents($dir);
|
119 |
}
|
|
|
|
|
|
|
|
|
120 |
if($type == 'theme') {
|
121 |
$output[$i]['file'] = str_replace(realpath(get_theme_root()) . $slash, '', $output[$i]['path']);
|
122 |
$output[$i]['url'] = get_theme_root_uri() . $slash . $output[$i]['file'];
|
14 |
$topdir = substr($dir, 0, $pos + 1);
|
15 |
$i = 0;
|
16 |
while(false !== ($file = readdir($handle))) {
|
17 |
+
if($file != '.' && $file != '..' && substr($file, 0, 1) != '.' && self::allowedFiles($dir, $file)) {
|
18 |
$rows[$i]['data'] = $file;
|
19 |
$rows[$i]['dir'] = is_dir($dir . $slash . $file);
|
20 |
$i++;
|
36 |
$output[$i]['filesize'] = '';
|
37 |
}
|
38 |
else {
|
39 |
+
$output[$i]['writable'] = false;
|
40 |
+
if(is_writable($output[$i]['path'])) {
|
41 |
+
$output[$i]['writable'] = true;
|
42 |
+
}
|
43 |
$output[$i]['filetype'] = 'file';
|
44 |
$path = pathinfo($output[$i]['name']);
|
45 |
if(isset($path['extension'])) {
|
71 |
$output['extension'] = $path['extension'];
|
72 |
}
|
73 |
$output['content'] = file_get_contents($dir);
|
74 |
+
$output['writable'] = false;
|
75 |
+
if(is_writable($output['path'])) {
|
76 |
+
$output['writable'] = true;
|
77 |
+
}
|
78 |
if($type == 'theme') {
|
79 |
$output['file'] = str_replace(realpath(get_theme_root()) . $slash, '', $output['path']);
|
80 |
$output['url'] = get_theme_root_uri() . $slash . $output['file'];
|
115 |
$output[$i]['filesize'] = '';
|
116 |
}
|
117 |
else {
|
118 |
+
$output[$i]['writable'] = false;
|
119 |
+
if(is_writable($output[$i]['path'])) {
|
120 |
+
$output[$i]['writable'] = true;
|
121 |
+
}
|
122 |
$output[$i]['filetype'] = 'file';
|
123 |
$path = pathinfo($rows[$i]['data']);
|
124 |
if(isset($path['extension'])) {
|
129 |
if($output[$i]['path'] == $dir) {
|
130 |
$output[$i]['content'] = file_get_contents($dir);
|
131 |
}
|
132 |
+
$output[$i]['writable'] = false;
|
133 |
+
if(is_writable($output[$i]['path'])) {
|
134 |
+
$output[$i]['writable'] = true;
|
135 |
+
}
|
136 |
if($type == 'theme') {
|
137 |
$output[$i]['file'] = str_replace(realpath(get_theme_root()) . $slash, '', $output[$i]['path']);
|
138 |
$output[$i]['url'] = get_theme_root_uri() . $slash . $output[$i]['file'];
|
classes/WPEditorPlugins.php
CHANGED
@@ -45,7 +45,7 @@ class WPEditorPlugins {
|
|
45 |
$current_plugin_root = WP_PLUGIN_DIR . '/' . dirname($file);
|
46 |
$real_file = WP_PLUGIN_DIR . '/' . $plugin;
|
47 |
|
48 |
-
if(isset($_POST['new-content']) && file_exists($real_file) &&
|
49 |
$new_content = stripslashes($_POST['new-content']);
|
50 |
if(file_get_contents($real_file) === $new_content) {
|
51 |
WPEditorLog::log('[' . basename(__FILE__) . ' - line ' . __LINE__ . "] Contents are the same");
|
45 |
$current_plugin_root = WP_PLUGIN_DIR . '/' . dirname($file);
|
46 |
$real_file = WP_PLUGIN_DIR . '/' . $plugin;
|
47 |
|
48 |
+
if(isset($_POST['new-content']) && file_exists($real_file) && is_writable($real_file)) {
|
49 |
$new_content = stripslashes($_POST['new-content']);
|
50 |
if(file_get_contents($real_file) === $new_content) {
|
51 |
WPEditorLog::log('[' . basename(__FILE__) . ' - line ' . __LINE__ . "] Contents are the same");
|
classes/WPEditorThemes.php
CHANGED
@@ -87,7 +87,7 @@ class WPEditorThemes {
|
|
87 |
}
|
88 |
$real_file = $current_theme_root . basename($file);
|
89 |
|
90 |
-
if(isset($_POST['new-content']) && file_exists($real_file) &&
|
91 |
$new_content = stripslashes($_POST['new-content']);
|
92 |
if(file_get_contents($real_file) === $new_content) {
|
93 |
WPEditorLog::log('[' . basename(__FILE__) . ' - line ' . __LINE__ . "] Contents are the same");
|
87 |
}
|
88 |
$real_file = $current_theme_root . basename($file);
|
89 |
|
90 |
+
if(isset($_POST['new-content']) && file_exists($real_file) && is_writable($real_file)) {
|
91 |
$new_content = stripslashes($_POST['new-content']);
|
92 |
if(file_get_contents($real_file) === $new_content) {
|
93 |
WPEditorLog::log('[' . basename(__FILE__) . ' - line ' . __LINE__ . "] Contents are the same");
|
extensions/codemirror/dialog.css
CHANGED
@@ -1,23 +1,37 @@
|
|
1 |
.CodeMirror-dialog {
|
2 |
-
position:
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
background:
|
9 |
-
border-bottom: 1px solid #eee;
|
10 |
z-index: 15;
|
11 |
-
padding:
|
|
|
|
|
|
|
12 |
overflow: hidden;
|
|
|
13 |
color: #333;
|
14 |
}
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
.CodeMirror-dialog input {
|
17 |
-
border: none;
|
18 |
-
outline: none;
|
19 |
-
background: transparent;
|
20 |
width: 20em;
|
21 |
color: inherit;
|
22 |
font-family: monospace;
|
23 |
}
|
|
|
|
|
|
|
|
1 |
.CodeMirror-dialog {
|
2 |
+
position:absolute;
|
3 |
+
background: #EEE;
|
4 |
+
background-image: -webkit-gradient(linear,left bottom,left top,from(#E5E5E5),to(#F4F4F4));
|
5 |
+
background-image: -webkit-linear-gradient(bottom,#E5E5E5,#F4F4F4);
|
6 |
+
background-image: -moz-linear-gradient(bottom,#E5E5E5,#F4F4F4);
|
7 |
+
background-image: -o-linear-gradient(bottom,#E5E5E5,#F4F4F4);
|
8 |
+
background-image: linear-gradient(to top,#E5E5E5,#F4F4F4);
|
|
|
9 |
z-index: 15;
|
10 |
+
padding: 5px 8px;
|
11 |
+
font-family:Arial, Helvetica, 'sans-serif normal';
|
12 |
+
right:16px;
|
13 |
+
top:36px;
|
14 |
overflow: hidden;
|
15 |
+
border-right:none;
|
16 |
color: #333;
|
17 |
}
|
18 |
|
19 |
+
.CodeMirror-dialog-top {
|
20 |
+
border-bottom: 1px solid #eee;
|
21 |
+
top: 0;
|
22 |
+
}
|
23 |
+
|
24 |
+
.CodeMirror-dialog-bottom {
|
25 |
+
border-top: 1px solid #eee;
|
26 |
+
bottom: 0;
|
27 |
+
}
|
28 |
+
|
29 |
.CodeMirror-dialog input {
|
|
|
|
|
|
|
30 |
width: 20em;
|
31 |
color: inherit;
|
32 |
font-family: monospace;
|
33 |
}
|
34 |
+
|
35 |
+
.CodeMirror-dialog button {
|
36 |
+
font-size: 70%;
|
37 |
+
}
|
extensions/codemirror/js/dialog.js
CHANGED
@@ -3,12 +3,29 @@
|
|
3 |
(function() {
|
4 |
function dialogDiv(cm, template) {
|
5 |
var wrap = cm.getWrapperElement();
|
6 |
-
|
|
|
|
|
|
|
|
|
|
|
7 |
dialog.className = "CodeMirror-dialog";
|
8 |
dialog.innerHTML = '<div>' + template + '</div>';
|
9 |
return dialog;
|
10 |
}
|
11 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
CodeMirror.defineExtension("openDialog", function(template, callback) {
|
13 |
var dialog = dialogDiv(this, template);
|
14 |
var closed = false, me = this;
|
3 |
(function() {
|
4 |
function dialogDiv(cm, template) {
|
5 |
var wrap = cm.getWrapperElement();
|
6 |
+
if(hasClass(wrap.firstChild, 'quicktags-toolbar')) {
|
7 |
+
var dialog = insertAfter(document.createElement("div"), wrap.firstChild);
|
8 |
+
}
|
9 |
+
else {
|
10 |
+
var dialog = wrap.insertBefore(document.createElement("div"), wrap.firstChild);
|
11 |
+
}
|
12 |
dialog.className = "CodeMirror-dialog";
|
13 |
dialog.innerHTML = '<div>' + template + '</div>';
|
14 |
return dialog;
|
15 |
}
|
16 |
+
function hasClass(ele,cls) {
|
17 |
+
return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
|
18 |
+
}
|
19 |
+
function insertAfter(newElement,targetElement) {
|
20 |
+
var parent = targetElement.parentNode;
|
21 |
+
if(parent.lastchild == targetElement) {
|
22 |
+
return parent.appendChild(newElement);
|
23 |
+
}
|
24 |
+
else {
|
25 |
+
return parent.insertBefore(newElement, targetElement.nextSibling);
|
26 |
+
}
|
27 |
+
}
|
28 |
+
|
29 |
CodeMirror.defineExtension("openDialog", function(template, callback) {
|
30 |
var dialog = dialogDiv(this, template);
|
31 |
var closed = false, me = this;
|
extensions/codemirror/themes/themes.css
CHANGED
@@ -24,7 +24,7 @@
|
|
24 |
.cm-s-default span.cm-quote {color: #090;}
|
25 |
.cm-s-default span.cm-hr {color: #999;}
|
26 |
.cm-s-default span.cm-link {color: #00c;}
|
27 |
-
|
28 |
|
29 |
/************************************************************
|
30 |
* Ambiance
|
@@ -64,6 +64,7 @@
|
|
64 |
.cm-s-ambiance .CodeMirror-lines {}
|
65 |
.cm-s-ambiance .CodeMirror-lines .CodeMirror-cursor {border-left: 1px solid #7991E8;}
|
66 |
.cm-s-ambiance .activeline {background: none repeat scroll 0% 0% rgba(255, 255, 255, 0.031);}
|
|
|
67 |
.cm-s-ambiance, .cm-s-ambiance .CodeMirror-gutter {background-image: url("data:image/png;base64,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");
|
68 |
}
|
69 |
|
@@ -92,7 +93,7 @@
|
|
92 |
.cm-s-blackboard .cm-header { color: #FF6400; }
|
93 |
.cm-s-blackboard .cm-hr { color: #AEAEAE; }
|
94 |
.cm-s-blackboard .cm-link { color: #8DA6CE; }
|
95 |
-
|
96 |
/************************************************************
|
97 |
* Cobalt
|
98 |
************************************************************/
|
@@ -113,7 +114,7 @@
|
|
113 |
.cm-s-cobalt span.cm-bracket { color: #d8d8d8; }
|
114 |
.cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; }
|
115 |
.cm-s-cobalt span.cm-link { color: #845dc4; }
|
116 |
-
|
117 |
/************************************************************
|
118 |
* Eclipse
|
119 |
************************************************************/
|
@@ -138,7 +139,7 @@
|
|
138 |
.cm-s-eclipse span.cm-attribute {color: #00c;}
|
139 |
.cm-s-eclipse span.cm-link {color: #219;}
|
140 |
.cm-s-eclipse .CodeMirror-matchingbracket {border:1px solid grey; color:black !important;}
|
141 |
-
|
142 |
/************************************************************
|
143 |
* Elegant
|
144 |
************************************************************/
|
@@ -152,7 +153,7 @@
|
|
152 |
.cm-s-elegant span.cm-builtin {color: #30a;}
|
153 |
.cm-s-elegant span.cm-error {background-color: #fdd;}
|
154 |
.cm-s-elegant span.cm-link {color: #762;}
|
155 |
-
|
156 |
/************************************************************
|
157 |
* Lesser Dark
|
158 |
************************************************************/
|
@@ -188,7 +189,7 @@ div.CodeMirror span.CodeMirror-matchingbracket { color: #7EFC7E; }/*65FC65*/
|
|
188 |
.cm-s-lesser-dark span.cm-quote {color: #090;}
|
189 |
.cm-s-lesser-dark span.cm-hr {color: #999;}
|
190 |
.cm-s-lesser-dark span.cm-link {color: #00c;}
|
191 |
-
|
192 |
/************************************************************
|
193 |
* Monokai
|
194 |
************************************************************/
|
@@ -211,7 +212,7 @@ div.CodeMirror span.CodeMirror-matchingbracket { color: #7EFC7E; }/*65FC65*/
|
|
211 |
.cm-s-monokai span.cm-tag {color: #f92672;}
|
212 |
.cm-s-monokai span.cm-link {color: #ae81ff;}
|
213 |
.cm-s-monokai .CodeMirror-matchingbracket {text-decoration: underline;color: white !important;}
|
214 |
-
|
215 |
/************************************************************
|
216 |
* Neat
|
217 |
************************************************************/
|
@@ -224,7 +225,7 @@ div.CodeMirror span.CodeMirror-matchingbracket { color: #7EFC7E; }/*65FC65*/
|
|
224 |
.cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; }
|
225 |
.cm-s-neat span.cm-meta {color: #555;}
|
226 |
.cm-s-neat span.cm-link { color: #3a3; }
|
227 |
-
|
228 |
/************************************************************
|
229 |
* Night
|
230 |
************************************************************/
|
@@ -246,7 +247,7 @@ div.CodeMirror span.CodeMirror-matchingbracket { color: #7EFC7E; }/*65FC65*/
|
|
246 |
.cm-s-night span.cm-comment { color: #6900a1; }
|
247 |
.cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59; }
|
248 |
.cm-s-night span.cm-link { color: #845dc4; }
|
249 |
-
|
250 |
/************************************************************
|
251 |
* Ruby Blue
|
252 |
************************************************************/
|
@@ -269,7 +270,7 @@ div.CodeMirror span.CodeMirror-matchingbracket { color: #7EFC7E; }/*65FC65*/
|
|
269 |
.cm-s-rubyblue span.cm-link { color: #F4C20B; }
|
270 |
.cm-s-rubyblue span.CodeMirror-matchingbracket { color:#F0F !important; }
|
271 |
.cm-s-rubyblue span.cm-builtin, .cm-s-rubyblue span.cm-special { color: #FF9D00; }
|
272 |
-
|
273 |
/************************************************************
|
274 |
* Vibrant Ink
|
275 |
************************************************************/
|
@@ -296,7 +297,7 @@ div.CodeMirror span.CodeMirror-matchingbracket { color: #7EFC7E; }/*65FC65*/
|
|
296 |
.cm-s-vibrant-ink .cm-header { color: #FF6400; }
|
297 |
.cm-s-vibrant-ink .cm-hr { color: #AEAEAE; }
|
298 |
.cm-s-vibrant-ink .cm-link { color: blue; }
|
299 |
-
|
300 |
/************************************************************
|
301 |
* XQ-Dark
|
302 |
************************************************************/
|
@@ -345,4 +346,5 @@ THE SOFTWARE.
|
|
345 |
.cm-s-xq-dark span.cm-builtin {color: #30a;}
|
346 |
.cm-s-xq-dark span.cm-bracket {color: #cc7;}
|
347 |
.cm-s-xq-dark span.cm-tag {color: #FFBD40;}
|
348 |
-
.cm-s-xq-dark span.cm-attribute {color: #FFF700;}
|
|
24 |
.cm-s-default span.cm-quote {color: #090;}
|
25 |
.cm-s-default span.cm-hr {color: #999;}
|
26 |
.cm-s-default span.cm-link {color: #00c;}
|
27 |
+
.cm-mustache {color: #611;font-weight:bold;}
|
28 |
|
29 |
/************************************************************
|
30 |
* Ambiance
|
64 |
.cm-s-ambiance .CodeMirror-lines {}
|
65 |
.cm-s-ambiance .CodeMirror-lines .CodeMirror-cursor {border-left: 1px solid #7991E8;}
|
66 |
.cm-s-ambiance .activeline {background: none repeat scroll 0% 0% rgba(255, 255, 255, 0.031);}
|
67 |
+
.cm-s-ambiance .cm-mustache {color: #AF2018;font-weight:bold;}
|
68 |
.cm-s-ambiance, .cm-s-ambiance .CodeMirror-gutter {background-image: url("data:image/png;base64,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");
|
69 |
}
|
70 |
|
93 |
.cm-s-blackboard .cm-header { color: #FF6400; }
|
94 |
.cm-s-blackboard .cm-hr { color: #AEAEAE; }
|
95 |
.cm-s-blackboard .cm-link { color: #8DA6CE; }
|
96 |
+
.cm-s-blackboard .cm-mustache {color: #9D1E15;font-weight:bold;}
|
97 |
/************************************************************
|
98 |
* Cobalt
|
99 |
************************************************************/
|
114 |
.cm-s-cobalt span.cm-bracket { color: #d8d8d8; }
|
115 |
.cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; }
|
116 |
.cm-s-cobalt span.cm-link { color: #845dc4; }
|
117 |
+
.cm-s-cobalt .cm-mustache {color: #9d1e15;font-weight:bold;}
|
118 |
/************************************************************
|
119 |
* Eclipse
|
120 |
************************************************************/
|
139 |
.cm-s-eclipse span.cm-attribute {color: #00c;}
|
140 |
.cm-s-eclipse span.cm-link {color: #219;}
|
141 |
.cm-s-eclipse .CodeMirror-matchingbracket {border:1px solid grey; color:black !important;}
|
142 |
+
.cm-s-eclipse .cm-mustache {color: #f00;font-weight:bold;}
|
143 |
/************************************************************
|
144 |
* Elegant
|
145 |
************************************************************/
|
153 |
.cm-s-elegant span.cm-builtin {color: #30a;}
|
154 |
.cm-s-elegant span.cm-error {background-color: #fdd;}
|
155 |
.cm-s-elegant span.cm-link {color: #762;}
|
156 |
+
.cm-s-elegant .cm-mustache {color: #262;font-weight:bold;}
|
157 |
/************************************************************
|
158 |
* Lesser Dark
|
159 |
************************************************************/
|
189 |
.cm-s-lesser-dark span.cm-quote {color: #090;}
|
190 |
.cm-s-lesser-dark span.cm-hr {color: #999;}
|
191 |
.cm-s-lesser-dark span.cm-link {color: #00c;}
|
192 |
+
.cm-s-lesser-dark .cm-mustache {color: #9d1e15;font-weight:bold;}
|
193 |
/************************************************************
|
194 |
* Monokai
|
195 |
************************************************************/
|
212 |
.cm-s-monokai span.cm-tag {color: #f92672;}
|
213 |
.cm-s-monokai span.cm-link {color: #ae81ff;}
|
214 |
.cm-s-monokai .CodeMirror-matchingbracket {text-decoration: underline;color: white !important;}
|
215 |
+
.cm-s-monokai .cm-mustache {background: #f92672;color: #f8f8f0;font-weight:bold;}
|
216 |
/************************************************************
|
217 |
* Neat
|
218 |
************************************************************/
|
225 |
.cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; }
|
226 |
.cm-s-neat span.cm-meta {color: #555;}
|
227 |
.cm-s-neat span.cm-link { color: #3a3; }
|
228 |
+
.cm-s-neat .cm-mustache {color: #a86;font-weight:bold;}
|
229 |
/************************************************************
|
230 |
* Night
|
231 |
************************************************************/
|
247 |
.cm-s-night span.cm-comment { color: #6900a1; }
|
248 |
.cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59; }
|
249 |
.cm-s-night span.cm-link { color: #845dc4; }
|
250 |
+
.cm-s-night .cm-mustache {color: #9d1e15;font-weight:bold;}
|
251 |
/************************************************************
|
252 |
* Ruby Blue
|
253 |
************************************************************/
|
270 |
.cm-s-rubyblue span.cm-link { color: #F4C20B; }
|
271 |
.cm-s-rubyblue span.CodeMirror-matchingbracket { color:#F0F !important; }
|
272 |
.cm-s-rubyblue span.cm-builtin, .cm-s-rubyblue span.cm-special { color: #FF9D00; }
|
273 |
+
.cm-s-rubyblue .cm-mustache {color: #AF2018;font-weight:bold;}
|
274 |
/************************************************************
|
275 |
* Vibrant Ink
|
276 |
************************************************************/
|
297 |
.cm-s-vibrant-ink .cm-header { color: #FF6400; }
|
298 |
.cm-s-vibrant-ink .cm-hr { color: #AEAEAE; }
|
299 |
.cm-s-vibrant-ink .cm-link { color: blue; }
|
300 |
+
.cm-s-vibrant-ink .cm-mustache {color: #8DA6CE;font-weight:bold;}
|
301 |
/************************************************************
|
302 |
* XQ-Dark
|
303 |
************************************************************/
|
346 |
.cm-s-xq-dark span.cm-builtin {color: #30a;}
|
347 |
.cm-s-xq-dark span.cm-bracket {color: #cc7;}
|
348 |
.cm-s-xq-dark span.cm-tag {color: #FFBD40;}
|
349 |
+
.cm-s-xq-dark span.cm-attribute {color: #FFF700;}
|
350 |
+
.cm-s-xq-dark .cm-mustache {color: #f00;font-weight:bold;}
|
js/posts-jquery.js
CHANGED
@@ -97,6 +97,7 @@ tags = {};
|
|
97 |
}
|
98 |
}
|
99 |
$(document).ready(function(){
|
|
|
100 |
$('#ed_toolbar').hide();
|
101 |
$('#wpe_qt_content_strong').live("click", function() {
|
102 |
insertOpenCloseTag('strong', 'b', '<strong>', '</strong>');
|
@@ -160,17 +161,21 @@ tags = {};
|
|
160 |
insertLinkTag(link, title, blank);
|
161 |
return false;
|
162 |
})
|
|
|
|
|
163 |
$('#content-tmce').click(function() {
|
164 |
-
if(editor_status
|
165 |
editor.toTextArea();
|
166 |
switchEditors.switchto(this);
|
167 |
editor_status = 'tmce';
|
168 |
}
|
169 |
})
|
170 |
$('#content-html').click(function() {
|
171 |
-
if(editor_status
|
|
|
172 |
postCodeMirror('content');
|
173 |
editor_status = 'html';
|
|
|
174 |
}
|
175 |
else {
|
176 |
editor.toTextArea();
|
@@ -219,7 +224,7 @@ tags = {};
|
|
219 |
}
|
220 |
});
|
221 |
};
|
222 |
-
window.
|
223 |
window.send_to_editor = function(html){
|
224 |
if(editor_status == 'html') {
|
225 |
var cursor = editor.getCursor(true);
|
@@ -233,13 +238,13 @@ tags = {};
|
|
233 |
});
|
234 |
editor.toTextArea();
|
235 |
$('#content').setContentCursor(lineArray[cursor.line] + cursor.ch, lineArray[cursor.line] + cursor.ch);
|
236 |
-
window.
|
237 |
postCodeMirror('content');
|
238 |
editor.setCursor(cursor.line, cursor.ch + html.length)
|
239 |
editor.focus();
|
240 |
}
|
241 |
else {
|
242 |
-
window.
|
243 |
}
|
244 |
};
|
245 |
function postCodeMirror(element) {
|
97 |
}
|
98 |
}
|
99 |
$(document).ready(function(){
|
100 |
+
|
101 |
$('#ed_toolbar').hide();
|
102 |
$('#wpe_qt_content_strong').live("click", function() {
|
103 |
insertOpenCloseTag('strong', 'b', '<strong>', '</strong>');
|
161 |
insertLinkTag(link, title, blank);
|
162 |
return false;
|
163 |
})
|
164 |
+
$('#content-tmce').attr('onclick','').unbind('click');
|
165 |
+
$('#content-html').attr('onclick','').unbind('click');
|
166 |
$('#content-tmce').click(function() {
|
167 |
+
if(editor_status !== 'tmce') {
|
168 |
editor.toTextArea();
|
169 |
switchEditors.switchto(this);
|
170 |
editor_status = 'tmce';
|
171 |
}
|
172 |
})
|
173 |
$('#content-html').click(function() {
|
174 |
+
if(editor_status !== 'html') {
|
175 |
+
switchEditors.switchto(this);
|
176 |
postCodeMirror('content');
|
177 |
editor_status = 'html';
|
178 |
+
return false;
|
179 |
}
|
180 |
else {
|
181 |
editor.toTextArea();
|
224 |
}
|
225 |
});
|
226 |
};
|
227 |
+
window.wp_editor_send_to_editor = window.send_to_editor;
|
228 |
window.send_to_editor = function(html){
|
229 |
if(editor_status == 'html') {
|
230 |
var cursor = editor.getCursor(true);
|
238 |
});
|
239 |
editor.toTextArea();
|
240 |
$('#content').setContentCursor(lineArray[cursor.line] + cursor.ch, lineArray[cursor.line] + cursor.ch);
|
241 |
+
window.wp_editor_send_to_editor(html);
|
242 |
postCodeMirror('content');
|
243 |
editor.setCursor(cursor.line, cursor.ch + html.length)
|
244 |
editor.focus();
|
245 |
}
|
246 |
else {
|
247 |
+
window.wp_editor_send_to_editor(html);
|
248 |
}
|
249 |
};
|
250 |
function postCodeMirror(element) {
|
js/wpeditor.js
CHANGED
@@ -41,7 +41,8 @@ function toggleFullscreenEditing() {
|
|
41 |
var editorDiv = $jq('.CodeMirror');
|
42 |
if(!editorDiv.hasClass('CodeMirror-fullscreen')) {
|
43 |
toggleFullscreenEditing.beforeFullscreen = {
|
44 |
-
height: editorDiv.height(),
|
|
|
45 |
width: editorDiv.width()
|
46 |
}
|
47 |
editorDiv.addClass('CodeMirror-fullscreen');
|
@@ -53,8 +54,8 @@ function toggleFullscreenEditing() {
|
|
53 |
else {
|
54 |
editorDiv.removeClass('CodeMirror-fullscreen');
|
55 |
editorDiv.height(toggleFullscreenEditing.beforeFullscreen.height);
|
56 |
-
$jq('.CodeMirror-scroll').height(toggleFullscreenEditing.beforeFullscreen.
|
57 |
-
editorDiv.width('
|
58 |
editor.refresh();
|
59 |
}
|
60 |
}
|
@@ -131,12 +132,24 @@ function toggleFullscreenEditing() {
|
|
131 |
$('#save-result').fadeIn(1000).delay(3000).fadeOut(300);
|
132 |
}
|
133 |
else {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
editor.toTextArea();
|
135 |
$('#new-content').val(result.content);
|
136 |
$('#file').val(result.file);
|
137 |
$('#path').val(result.path);
|
138 |
$('#extension').val(result.extension);
|
139 |
-
$('.current_file').html(result.file);
|
140 |
runCodeMirror(result.extension);
|
141 |
}
|
142 |
}
|
@@ -156,13 +169,20 @@ function toggleFullscreenEditing() {
|
|
156 |
'filesize': value.filesize,
|
157 |
'file': value.file,
|
158 |
'extension': value.extension,
|
159 |
-
'url': value.url
|
|
|
160 |
}
|
161 |
))
|
162 |
}
|
163 |
else {
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
newElement.children('ul').append(
|
165 |
-
$('<li><a href="#" class="' + value.filetype + '">' + value.name + ' <span class="tiny">' + value.filesize + '</span></a></li>').addClass(
|
166 |
value.extension + ' ' + value.filetype
|
167 |
).data({
|
168 |
'path': value.path,
|
@@ -170,7 +190,8 @@ function toggleFullscreenEditing() {
|
|
170 |
'filesize': value.filesize,
|
171 |
'file': value.file,
|
172 |
'extension': value.extension,
|
173 |
-
'url': value.url
|
|
|
174 |
}
|
175 |
))
|
176 |
}
|
@@ -191,6 +212,7 @@ function toggleFullscreenEditing() {
|
|
191 |
filesize: '',
|
192 |
file: '',
|
193 |
extension: '',
|
|
|
194 |
open: 'opened',
|
195 |
loading: 'loading'
|
196 |
}, handler);
|
@@ -201,7 +223,8 @@ function toggleFullscreenEditing() {
|
|
201 |
'filesize': this.options.filesize,
|
202 |
'file': this.options.file,
|
203 |
'extension': this.options.extension,
|
204 |
-
'url': this.options.url
|
|
|
205 |
}).bind('retrieve:finder', ajaxFolders).trigger('retrieve:finder')
|
206 |
}
|
207 |
});
|
41 |
var editorDiv = $jq('.CodeMirror');
|
42 |
if(!editorDiv.hasClass('CodeMirror-fullscreen')) {
|
43 |
toggleFullscreenEditing.beforeFullscreen = {
|
44 |
+
height: editorDiv.height(),
|
45 |
+
scrollHeight: editorDiv.height() - 33,
|
46 |
width: editorDiv.width()
|
47 |
}
|
48 |
editorDiv.addClass('CodeMirror-fullscreen');
|
54 |
else {
|
55 |
editorDiv.removeClass('CodeMirror-fullscreen');
|
56 |
editorDiv.height(toggleFullscreenEditing.beforeFullscreen.height);
|
57 |
+
$jq('.CodeMirror-scroll').height(toggleFullscreenEditing.beforeFullscreen.scrollHeight);
|
58 |
+
editorDiv.width('100%');
|
59 |
editor.refresh();
|
60 |
}
|
61 |
}
|
132 |
$('#save-result').fadeIn(1000).delay(3000).fadeOut(300);
|
133 |
}
|
134 |
else {
|
135 |
+
var notWritable = '';
|
136 |
+
if(!result.writable) {
|
137 |
+
$('p.submit').hide();
|
138 |
+
$('div.writable-error').show();
|
139 |
+
notWritable = ' <span class="not-writable">(not writable)</span>';
|
140 |
+
$('.writable_status').html('Browsing');
|
141 |
+
}
|
142 |
+
else {
|
143 |
+
$('p.submit').show();
|
144 |
+
$('div.writable-error').hide();
|
145 |
+
$('.writable_status').html('Editing');
|
146 |
+
}
|
147 |
editor.toTextArea();
|
148 |
$('#new-content').val(result.content);
|
149 |
$('#file').val(result.file);
|
150 |
$('#path').val(result.path);
|
151 |
$('#extension').val(result.extension);
|
152 |
+
$('.current_file').html(result.file + notWritable);
|
153 |
runCodeMirror(result.extension);
|
154 |
}
|
155 |
}
|
169 |
'filesize': value.filesize,
|
170 |
'file': value.file,
|
171 |
'extension': value.extension,
|
172 |
+
'url': value.url,
|
173 |
+
'writable': value.writable
|
174 |
}
|
175 |
))
|
176 |
}
|
177 |
else {
|
178 |
+
var writable = '';
|
179 |
+
var writableClass = '';
|
180 |
+
if(!value.writable) {
|
181 |
+
writable = '<span class="writable">×</span>';
|
182 |
+
writableClass = ' not-writable';
|
183 |
+
}
|
184 |
newElement.children('ul').append(
|
185 |
+
$('<li><a href="#" class="' + value.filetype + writableClass + '">' + writable + ' ' + value.name + ' <span class="tiny">' + value.filesize + '</span></a></li>').addClass(
|
186 |
value.extension + ' ' + value.filetype
|
187 |
).data({
|
188 |
'path': value.path,
|
190 |
'filesize': value.filesize,
|
191 |
'file': value.file,
|
192 |
'extension': value.extension,
|
193 |
+
'url': value.url,
|
194 |
+
'writable': value.writable
|
195 |
}
|
196 |
))
|
197 |
}
|
212 |
filesize: '',
|
213 |
file: '',
|
214 |
extension: '',
|
215 |
+
writable: '',
|
216 |
open: 'opened',
|
217 |
loading: 'loading'
|
218 |
}, handler);
|
223 |
'filesize': this.options.filesize,
|
224 |
'file': this.options.file,
|
225 |
'extension': this.options.extension,
|
226 |
+
'url': this.options.url,
|
227 |
+
'writable': this.options.writable
|
228 |
}).bind('retrieve:finder', ajaxFolders).trigger('retrieve:finder')
|
229 |
}
|
230 |
});
|
readme.txt
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
=== WP Editor ===
|
2 |
Contributors: benjaminprojas
|
3 |
Donate link: http://wpeditor.net/
|
4 |
-
Tags: plugin editor, theme editor, page editor, post editor, pages, posts, html, codemirror, plugins, themes, editor, fancybox, post.php, post-new.php, ajax, syntax highlighting, html syntax highlighting
|
5 |
Requires at least: 3.0
|
6 |
-
Tested up to: 3.
|
7 |
-
Stable tag: 1.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -69,6 +69,15 @@ Yes! While we don't have a need for further developers at this time, any financi
|
|
69 |
|
70 |
== Changelog ==
|
71 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
= 1.1.0.3 =
|
73 |
* Added Ambiance, Blackboard, Lesser Dark, Vibrant Ink and XQ-Dark themes
|
74 |
* Fixed text selection in all editors
|
@@ -116,6 +125,14 @@ Yes! While we don't have a need for further developers at this time, any financi
|
|
116 |
|
117 |
== Upgrade Notice ==
|
118 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
= 1.1.0.3 =
|
120 |
Fixed text selection in all editors
|
121 |
Fixed post editor highlighter not loading when visual editor is disabled
|
1 |
=== WP Editor ===
|
2 |
Contributors: benjaminprojas
|
3 |
Donate link: http://wpeditor.net/
|
4 |
+
Tags: code editor, plugin editor, theme editor, page editor, post editor, pages, posts, html, codemirror, plugins, themes, editor, fancybox, post.php, post-new.php, ajax, syntax highlighting, html syntax highlighting
|
5 |
Requires at least: 3.0
|
6 |
+
Tested up to: 3.5
|
7 |
+
Stable tag: 1.2
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
69 |
|
70 |
== Changelog ==
|
71 |
|
72 |
+
= 1.2 =
|
73 |
+
* Added Save, Undo, Redo, Search, Find Next, Find Prev, Replace, Replace All and Fullscreen buttons to plugin/theme editors
|
74 |
+
* Added ability to hide WP Editor menu icon from menu sidebar and move it to settings submenu
|
75 |
+
* Added ability to check if file is writable and add error messages accordingly in plugin/theme editors
|
76 |
+
* Added highlighting of shortcodes in Post editor
|
77 |
+
* Updated is_writeable() to is_writable()
|
78 |
+
* Fixed conflicts with TinyMCE Advanced and Ultimate TinyMCE plugins
|
79 |
+
* Fixed conflict with WooThemes themes
|
80 |
+
|
81 |
= 1.1.0.3 =
|
82 |
* Added Ambiance, Blackboard, Lesser Dark, Vibrant Ink and XQ-Dark themes
|
83 |
* Fixed text selection in all editors
|
125 |
|
126 |
== Upgrade Notice ==
|
127 |
|
128 |
+
= 1.2 =
|
129 |
+
Compatibility with WordPress 3.5
|
130 |
+
Added Save, Undo, Redo, Search, Find Next, Find Prev, Replace, Replace All and Fullscreen buttons to plugin/theme editors
|
131 |
+
Added ability to hide WP Editor menu icon from menu sidebar and move it to settings submenu
|
132 |
+
Added ability to check if file is writable and add error messages accordingly in plugin/theme editors
|
133 |
+
Added highlighting of shortcodes in Post editor
|
134 |
+
Fixed conflicts with multiple plugins and themes
|
135 |
+
|
136 |
= 1.1.0.3 =
|
137 |
Fixed text selection in all editors
|
138 |
Fixed post editor highlighter not loading when visual editor is disabled
|
views/plugin-editor.php
CHANGED
@@ -12,14 +12,14 @@
|
|
12 |
<h3>
|
13 |
<?php
|
14 |
if(is_plugin_active($data['plugin'])) {
|
15 |
-
if(
|
16 |
echo __('Editing <span class="current_file">', 'wpeditor') . $data['file'] . __('</span> (active)', 'wpeditor');
|
17 |
}
|
18 |
else {
|
19 |
echo __('Browsing <span class="current_file">', 'wpeditor') . $data['file'] . __('</span> (active)', 'wpeditor');
|
20 |
}
|
21 |
} else {
|
22 |
-
if (
|
23 |
echo __('Editing <span class="current_file">', 'wpeditor') . $data['file'] . __('</span> (inactive)', 'wpeditor');
|
24 |
}
|
25 |
else {
|
@@ -59,7 +59,7 @@
|
|
59 |
<?php if(WPEditorSetting::getValue('plugin_file_upload')): ?>
|
60 |
<h3><?php _e('Upload Files', 'wpeditor'); ?></h3>
|
61 |
<div id="plugin-upload-files">
|
62 |
-
<?php if(
|
63 |
<form enctype="multipart/form-data" id="plugin_upload_form" method="POST">
|
64 |
<!-- MAX_FILE_SIZE must precede the file input field -->
|
65 |
<!--input type="hidden" name="MAX_FILE_SIZE" value="30000" /-->
|
@@ -69,7 +69,7 @@
|
|
69 |
<input type="hidden" name="current_plugin_root" value="<?php echo $data['current_plugin_root']; ?>" id="current_plugin_root" />
|
70 |
<input type="text" name="directory" id="file_directory" style="width:190px" placeholder="<?php _e('Optional: Sub-Directory', 'wpeditor'); ?>" />
|
71 |
<!-- Name of input element determines name in $_FILES array -->
|
72 |
-
<input name="file" type="file" id="
|
73 |
<div class="ajax-button-loader">
|
74 |
<?php submit_button(__('Upload File', 'wpeditor'), 'primary', 'submit', false); ?>
|
75 |
<div class="ajax-loader"></div>
|
@@ -90,7 +90,7 @@
|
|
90 |
</div>
|
91 |
</div>
|
92 |
|
93 |
-
<form name="template" id="template_form" action="" method="post" class="ajax-editor-update">
|
94 |
<?php wp_nonce_field('edit-plugin_' . $data['real_file']); ?>
|
95 |
<div>
|
96 |
<textarea cols="70" rows="25" name="new-content" id="new-content" tabindex="1"><?php echo $data['content'] ?></textarea>
|
@@ -106,7 +106,7 @@
|
|
106 |
?>
|
107 |
<input type="hidden" name="extension" id="extension" value="<?php echo $pathinfo['extension']; ?>" />
|
108 |
</div>
|
109 |
-
<?php if(
|
110 |
<p class="submit">
|
111 |
<?php
|
112 |
if(isset($_GET['phperror'])) {
|
@@ -118,10 +118,28 @@
|
|
118 |
}
|
119 |
?>
|
120 |
</p>
|
|
|
|
|
|
|
|
|
|
|
121 |
<?php else: ?>
|
122 |
-
<p>
|
123 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
</p>
|
|
|
|
|
|
|
|
|
|
|
125 |
<?php endif; ?>
|
126 |
</form>
|
127 |
<script type="text/javascript">
|
@@ -168,14 +186,6 @@
|
|
168 |
});
|
169 |
return false;
|
170 |
});
|
171 |
-
<?php if(WPEditorSetting::getValue('enable_plugin_editor_height')) { ?>
|
172 |
-
$('.CodeMirror-scroll, .CodeMirror').height('<?php echo WPEditorSetting::getValue("enable_plugin_editor_height"); ?>px');
|
173 |
-
var scrollDivHeight = $('.CodeMirror-scroll div:first-child').height();
|
174 |
-
var editorDivHeight = $('.CodeMirror').height();
|
175 |
-
if(scrollDivHeight > editorDivHeight) {
|
176 |
-
$('.CodeMirror-gutter').height(scrollDivHeight);
|
177 |
-
}
|
178 |
-
<?php } ?>
|
179 |
})
|
180 |
})(jQuery);
|
181 |
function runCodeMirror(extension) {
|
@@ -240,6 +250,67 @@
|
|
240 |
if(activeLine) {
|
241 |
var hlLine = editor.setLineClass(0, activeLine);
|
242 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
243 |
}
|
244 |
</script>
|
245 |
</div>
|
12 |
<h3>
|
13 |
<?php
|
14 |
if(is_plugin_active($data['plugin'])) {
|
15 |
+
if(is_writable($data['real_file'])) {
|
16 |
echo __('Editing <span class="current_file">', 'wpeditor') . $data['file'] . __('</span> (active)', 'wpeditor');
|
17 |
}
|
18 |
else {
|
19 |
echo __('Browsing <span class="current_file">', 'wpeditor') . $data['file'] . __('</span> (active)', 'wpeditor');
|
20 |
}
|
21 |
} else {
|
22 |
+
if (is_writable($data['real_file'])) {
|
23 |
echo __('Editing <span class="current_file">', 'wpeditor') . $data['file'] . __('</span> (inactive)', 'wpeditor');
|
24 |
}
|
25 |
else {
|
59 |
<?php if(WPEditorSetting::getValue('plugin_file_upload')): ?>
|
60 |
<h3><?php _e('Upload Files', 'wpeditor'); ?></h3>
|
61 |
<div id="plugin-upload-files">
|
62 |
+
<?php if(is_writable($data['real_file'])): ?>
|
63 |
<form enctype="multipart/form-data" id="plugin_upload_form" method="POST">
|
64 |
<!-- MAX_FILE_SIZE must precede the file input field -->
|
65 |
<!--input type="hidden" name="MAX_FILE_SIZE" value="30000" /-->
|
69 |
<input type="hidden" name="current_plugin_root" value="<?php echo $data['current_plugin_root']; ?>" id="current_plugin_root" />
|
70 |
<input type="text" name="directory" id="file_directory" style="width:190px" placeholder="<?php _e('Optional: Sub-Directory', 'wpeditor'); ?>" />
|
71 |
<!-- Name of input element determines name in $_FILES array -->
|
72 |
+
<input name="file" type="file" id="upload_file" style="width:180px" />
|
73 |
<div class="ajax-button-loader">
|
74 |
<?php submit_button(__('Upload File', 'wpeditor'), 'primary', 'submit', false); ?>
|
75 |
<div class="ajax-loader"></div>
|
90 |
</div>
|
91 |
</div>
|
92 |
|
93 |
+
<form name="template" id="template_form" action="" method="post" class="ajax-editor-update" style="float:left width:auto;overflow:hidden;position:relative;">
|
94 |
<?php wp_nonce_field('edit-plugin_' . $data['real_file']); ?>
|
95 |
<div>
|
96 |
<textarea cols="70" rows="25" name="new-content" id="new-content" tabindex="1"><?php echo $data['content'] ?></textarea>
|
106 |
?>
|
107 |
<input type="hidden" name="extension" id="extension" value="<?php echo $pathinfo['extension']; ?>" />
|
108 |
</div>
|
109 |
+
<?php if(is_writable($data['real_file'])): ?>
|
110 |
<p class="submit">
|
111 |
<?php
|
112 |
if(isset($_GET['phperror'])) {
|
118 |
}
|
119 |
?>
|
120 |
</p>
|
121 |
+
<div class="error writable-error" style="display:none;">
|
122 |
+
<p>
|
123 |
+
<em><?php _e('You need to make this file writable before you can save your changes. See <a href="http://codex.wordpress.org/Changing_File_Permissions" target="_blank">the Codex</a> for more information.'); ?></em>
|
124 |
+
</p>
|
125 |
+
</div>
|
126 |
<?php else: ?>
|
127 |
+
<p class="submit" style="display:none;">
|
128 |
+
<?php
|
129 |
+
if(isset($_GET['phperror'])) {
|
130 |
+
echo '<input type="hidden" name="phperror" value="1" />'; ?>
|
131 |
+
<input type="submit" name="submit" class="button-primary" value="<?php _e('Update File and Attempt to Reactivate', 'wpeditor'); ?>" />
|
132 |
+
<?php } else { ?>
|
133 |
+
<input type="submit" name='submit' class="button-primary" value="<?php _e('Update File', 'wpeditor'); ?>" />
|
134 |
+
<?php
|
135 |
+
}
|
136 |
+
?>
|
137 |
</p>
|
138 |
+
<div class="error writable-error">
|
139 |
+
<p>
|
140 |
+
<em><?php _e('You need to make this file writable before you can save your changes. See <a href="http://codex.wordpress.org/Changing_File_Permissions" target="_blank">the Codex</a> for more information.'); ?></em>
|
141 |
+
</p>
|
142 |
+
</div>
|
143 |
<?php endif; ?>
|
144 |
</form>
|
145 |
<script type="text/javascript">
|
186 |
});
|
187 |
return false;
|
188 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
189 |
})
|
190 |
})(jQuery);
|
191 |
function runCodeMirror(extension) {
|
250 |
if(activeLine) {
|
251 |
var hlLine = editor.setLineClass(0, activeLine);
|
252 |
}
|
253 |
+
<?php if(WPEditorSetting::getValue('enable_plugin_editor_height')) { ?>
|
254 |
+
$jq = jQuery.noConflict();
|
255 |
+
$jq('.CodeMirror-scroll, .CodeMirror').height('<?php echo WPEditorSetting::getValue("enable_plugin_editor_height"); ?>px');
|
256 |
+
var scrollDivHeight = $jq('.CodeMirror-scroll div:first-child').height();
|
257 |
+
var editorDivHeight = $jq('.CodeMirror').height();
|
258 |
+
if(scrollDivHeight > editorDivHeight) {
|
259 |
+
$jq('.CodeMirror-gutter').height(scrollDivHeight);
|
260 |
+
}
|
261 |
+
<?php } ?>
|
262 |
+
if(!$jq('.CodeMirror .quicktags-toolbar').length) {
|
263 |
+
$jq('.CodeMirror').prepend('<div class="quicktags-toolbar">' +
|
264 |
+
'<a href="#" class="button-primary editor-button" id="plugin_save">save</a> ' +
|
265 |
+
'<a href="#" class="button-secondary editor-button" id="plugin_undo">undo</a> ' +
|
266 |
+
'<a href="#" class="button-secondary editor-button" id="plugin_redo">redo</a> ' +
|
267 |
+
'<a href="#" class="button-secondary editor-button" id="plugin_search">search</a> ' +
|
268 |
+
'<a href="#" class="button-secondary editor-button" id="plugin_find_prev">find prev</a> ' +
|
269 |
+
'<a href="#" class="button-secondary editor-button" id="plugin_find_next">find next</a> ' +
|
270 |
+
'<a href="#" class="button-secondary editor-button" id="plugin_replace">replace</a> ' +
|
271 |
+
'<a href="#" class="button-secondary editor-button" id="plugin_replace_all">replace all</a> ' +
|
272 |
+
'<a href="#" class="button-secondary editor-button" id="plugin_fullscreen">fullscreen</a> ' +
|
273 |
+
'</div>'
|
274 |
+
);
|
275 |
+
$jq('.CodeMirror-scroll').height($jq('.CodeMirror-scroll').height() - 33);
|
276 |
+
editor.focus();
|
277 |
+
}
|
278 |
+
$jq('#plugin_fullscreen').live("click", function() {
|
279 |
+
toggleFullscreenEditing();
|
280 |
+
editor.focus();
|
281 |
+
})
|
282 |
+
$jq('#plugin_save').live("click", function() {
|
283 |
+
$jq('.ajax-editor-update').submit();
|
284 |
+
editor.focus();
|
285 |
+
})
|
286 |
+
$jq('#plugin_undo').live("click", function() {
|
287 |
+
editor.undo();
|
288 |
+
editor.focus();
|
289 |
+
})
|
290 |
+
$jq('#plugin_redo').live("click", function() {
|
291 |
+
editor.redo();
|
292 |
+
editor.focus();
|
293 |
+
})
|
294 |
+
$jq('#plugin_search').live("click", function() {
|
295 |
+
CodeMirror.commands.find(editor);
|
296 |
+
return false;
|
297 |
+
})
|
298 |
+
$jq('#plugin_find_next').live("click", function() {
|
299 |
+
CodeMirror.commands.findNext(editor);
|
300 |
+
return false;
|
301 |
+
})
|
302 |
+
$jq('#plugin_find_prev').live("click", function() {
|
303 |
+
CodeMirror.commands.findPrev(editor);
|
304 |
+
return false;
|
305 |
+
})
|
306 |
+
$jq('#plugin_replace').live("click", function() {
|
307 |
+
CodeMirror.commands.replace(editor);
|
308 |
+
return false;
|
309 |
+
})
|
310 |
+
$jq('#plugin_replace_all').live("click", function() {
|
311 |
+
CodeMirror.commands.replaceAll(editor);
|
312 |
+
return false;
|
313 |
+
})
|
314 |
}
|
315 |
</script>
|
316 |
</div>
|
views/settings.php
CHANGED
@@ -102,6 +102,25 @@
|
|
102 |
</ul>
|
103 |
</div>
|
104 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
<div id="save-settings">
|
106 |
<ul>
|
107 |
<li>
|
102 |
</ul>
|
103 |
</div>
|
104 |
</div>
|
105 |
+
<div id="menu-location" class="section">
|
106 |
+
<div class="section-header">
|
107 |
+
<h3><?php _e('WP Editor Menu Location', 'wpeditor'); ?></h3>
|
108 |
+
</div>
|
109 |
+
<div class="section-body">
|
110 |
+
<ul>
|
111 |
+
<li>
|
112 |
+
<label for="hide_wpeditor_menu"><?php _e('Hide WP Editor Icon:', 'wpeditor'); ?></label>
|
113 |
+
</li>
|
114 |
+
<li class="indent">
|
115 |
+
<input type="radio" name="hide_wpeditor_menu" value="1" <?php echo (WPEditorSetting::getValue('hide_wpeditor_menu') == 1) ? 'checked="checked"' : ''; ?>> <?php _e('Yes', 'wpeditor'); ?>
|
116 |
+
<input type="radio" name="hide_wpeditor_menu" value="0" <?php echo (WPEditorSetting::getValue('hide_wpeditor_menu') != 1) ? 'checked="checked"' : ''; ?>> <?php _e('No', 'wpeditor'); ?>
|
117 |
+
</li>
|
118 |
+
<li class="indent description">
|
119 |
+
<p><?php _e("If set to yes, this will hide the WP Editor icon from the menu on the left. You will be able to access this settings page from the main Settings drop down instead.<br />Default: No", 'wpeditor'); ?></p>
|
120 |
+
</li>
|
121 |
+
</ul>
|
122 |
+
</div>
|
123 |
+
</div>
|
124 |
<div id="save-settings">
|
125 |
<ul>
|
126 |
<li>
|
views/theme-editor.php
CHANGED
@@ -16,11 +16,11 @@
|
|
16 |
<?php echo $data['themes'][$data['theme']]['Name'] . ': '; ?>
|
17 |
<?php endif; ?>
|
18 |
<?php
|
19 |
-
if(
|
20 |
-
echo
|
21 |
}
|
22 |
else {
|
23 |
-
echo
|
24 |
}
|
25 |
?>
|
26 |
</h3>
|
@@ -66,7 +66,7 @@
|
|
66 |
<?php if(WPEditorSetting::getValue('theme_file_upload')): ?>
|
67 |
<h3><?php _e('Upload Files', 'wpeditor'); ?></h3>
|
68 |
<div id="theme-upload-files">
|
69 |
-
<?php if(
|
70 |
<form enctype="multipart/form-data" id="theme_upload_form" method="POST">
|
71 |
<!-- MAX_FILE_SIZE must precede the file input field -->
|
72 |
<!--input type="hidden" name="MAX_FILE_SIZE" value="30000" /-->
|
@@ -76,7 +76,7 @@
|
|
76 |
<input type="hidden" name="current_theme_root" value="<?php echo $data['current_theme_root']; ?>" id="current_theme_root" />
|
77 |
<input type="text" name="directory" id="file_directory" style="width:190px" placeholder="<?php _e('Optional: Sub-Directory', 'wpeditor'); ?>" />
|
78 |
<!-- Name of input element determines name in $_FILES array -->
|
79 |
-
<input name="file" type="file" id="
|
80 |
<div class="ajax-button-loader">
|
81 |
<?php submit_button(__('Upload File', 'wpeditor'), 'primary', 'submit', false); ?>
|
82 |
<div class="ajax-loader"></div>
|
@@ -97,7 +97,7 @@
|
|
97 |
</div>
|
98 |
</div>
|
99 |
|
100 |
-
<form name="template" id="template_form" action="" method="post" class="ajax-editor-update">
|
101 |
<?php wp_nonce_field('edit-theme_' . $data['real_file']); ?>
|
102 |
<div>
|
103 |
<textarea cols="70" rows="25" name="new-content" id="new-content" tabindex="1"><?php echo $data['content'] ?></textarea>
|
@@ -113,7 +113,7 @@
|
|
113 |
?>
|
114 |
<input type="hidden" name="extension" id="extension" value="<?php echo $pathinfo['extension']; ?>" />
|
115 |
</div>
|
116 |
-
<?php if(
|
117 |
<p class="submit">
|
118 |
<?php
|
119 |
if(isset($_GET['phperror'])) {
|
@@ -125,10 +125,28 @@
|
|
125 |
}
|
126 |
?>
|
127 |
</p>
|
|
|
|
|
|
|
|
|
|
|
128 |
<?php else: ?>
|
129 |
-
<p>
|
130 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
</p>
|
|
|
|
|
|
|
|
|
|
|
132 |
<?php endif; ?>
|
133 |
</form>
|
134 |
<script type="text/javascript">
|
@@ -175,14 +193,6 @@
|
|
175 |
});
|
176 |
return false;
|
177 |
});
|
178 |
-
<?php if(WPEditorSetting::getValue('enable_theme_editor_height')) { ?>
|
179 |
-
$('.CodeMirror-scroll, .CodeMirror').height('<?php echo WPEditorSetting::getValue("enable_theme_editor_height"); ?>px');
|
180 |
-
var scrollDivHeight = $('.CodeMirror-scroll div:first-child').height();
|
181 |
-
var editorDivHeight = $('.CodeMirror').height();
|
182 |
-
if(scrollDivHeight > editorDivHeight) {
|
183 |
-
$('.CodeMirror-gutter').height(scrollDivHeight);
|
184 |
-
}
|
185 |
-
<?php } ?>
|
186 |
})
|
187 |
})(jQuery);
|
188 |
function runCodeMirror(extension) {
|
@@ -247,6 +257,67 @@
|
|
247 |
if(activeLine) {
|
248 |
var hlLine = editor.setLineClass(0, activeLine);
|
249 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
250 |
}
|
251 |
</script>
|
252 |
</div>
|
16 |
<?php echo $data['themes'][$data['theme']]['Name'] . ': '; ?>
|
17 |
<?php endif; ?>
|
18 |
<?php
|
19 |
+
if(is_writable($data['real_file'])) {
|
20 |
+
echo '<span class="writable_status">' . __('Editing', 'wpeditor') . '</span> <span class="current_file">' . $data['file'] . '</span>';
|
21 |
}
|
22 |
else {
|
23 |
+
echo '<span class="writable_status">' . __('Browsing', 'wpeditor') . '</span> <span class="current_file">' . $data['file'] . '</span>';
|
24 |
}
|
25 |
?>
|
26 |
</h3>
|
66 |
<?php if(WPEditorSetting::getValue('theme_file_upload')): ?>
|
67 |
<h3><?php _e('Upload Files', 'wpeditor'); ?></h3>
|
68 |
<div id="theme-upload-files">
|
69 |
+
<?php if(is_writable($data['real_file'])): ?>
|
70 |
<form enctype="multipart/form-data" id="theme_upload_form" method="POST">
|
71 |
<!-- MAX_FILE_SIZE must precede the file input field -->
|
72 |
<!--input type="hidden" name="MAX_FILE_SIZE" value="30000" /-->
|
76 |
<input type="hidden" name="current_theme_root" value="<?php echo $data['current_theme_root']; ?>" id="current_theme_root" />
|
77 |
<input type="text" name="directory" id="file_directory" style="width:190px" placeholder="<?php _e('Optional: Sub-Directory', 'wpeditor'); ?>" />
|
78 |
<!-- Name of input element determines name in $_FILES array -->
|
79 |
+
<input name="file" type="file" id="upload_file" style="width:180px" />
|
80 |
<div class="ajax-button-loader">
|
81 |
<?php submit_button(__('Upload File', 'wpeditor'), 'primary', 'submit', false); ?>
|
82 |
<div class="ajax-loader"></div>
|
97 |
</div>
|
98 |
</div>
|
99 |
|
100 |
+
<form name="template" id="template_form" action="" method="post" class="ajax-editor-update" style="float:left width:auto;overflow:hidden;">
|
101 |
<?php wp_nonce_field('edit-theme_' . $data['real_file']); ?>
|
102 |
<div>
|
103 |
<textarea cols="70" rows="25" name="new-content" id="new-content" tabindex="1"><?php echo $data['content'] ?></textarea>
|
113 |
?>
|
114 |
<input type="hidden" name="extension" id="extension" value="<?php echo $pathinfo['extension']; ?>" />
|
115 |
</div>
|
116 |
+
<?php if(is_writable($data['real_file'])): ?>
|
117 |
<p class="submit">
|
118 |
<?php
|
119 |
if(isset($_GET['phperror'])) {
|
125 |
}
|
126 |
?>
|
127 |
</p>
|
128 |
+
<div class="error writable-error" style="display:none;">
|
129 |
+
<p>
|
130 |
+
<em><?php _e('You need to make this file writable before you can save your changes. See <a href="http://codex.wordpress.org/Changing_File_Permissions" target="_blank">the Codex</a> for more information.'); ?></em>
|
131 |
+
</p>
|
132 |
+
</div>
|
133 |
<?php else: ?>
|
134 |
+
<p class="submit" style="display:none;">
|
135 |
+
<?php
|
136 |
+
if(isset($_GET['phperror'])) {
|
137 |
+
echo '<input type="hidden" name="phperror" value="1" />'; ?>
|
138 |
+
<input type="submit" name="submit" class="button-primary" value="<?php _e('Update File and Attempt to Reactivate', 'wpeditor'); ?>" />
|
139 |
+
<?php } else { ?>
|
140 |
+
<input type="submit" name='submit' class="button-primary" value="<?php _e('Update File', 'wpeditor'); ?>" />
|
141 |
+
<?php
|
142 |
+
}
|
143 |
+
?>
|
144 |
</p>
|
145 |
+
<div class="error writable-error">
|
146 |
+
<p>
|
147 |
+
<em><?php _e('You need to make this file writable before you can save your changes. See <a href="http://codex.wordpress.org/Changing_File_Permissions" target="_blank">the Codex</a> for more information.'); ?></em>
|
148 |
+
</p>
|
149 |
+
</div>
|
150 |
<?php endif; ?>
|
151 |
</form>
|
152 |
<script type="text/javascript">
|
193 |
});
|
194 |
return false;
|
195 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
196 |
})
|
197 |
})(jQuery);
|
198 |
function runCodeMirror(extension) {
|
257 |
if(activeLine) {
|
258 |
var hlLine = editor.setLineClass(0, activeLine);
|
259 |
}
|
260 |
+
<?php if(WPEditorSetting::getValue('enable_theme_editor_height')) { ?>
|
261 |
+
$jq = jQuery.noConflict();
|
262 |
+
$jq('.CodeMirror-scroll, .CodeMirror').height('<?php echo WPEditorSetting::getValue("enable_theme_editor_height"); ?>px');
|
263 |
+
var scrollDivHeight = $jq('.CodeMirror-scroll div:first-child').height();
|
264 |
+
var editorDivHeight = $jq('.CodeMirror').height();
|
265 |
+
if(scrollDivHeight > editorDivHeight) {
|
266 |
+
$jq('.CodeMirror-gutter').height(scrollDivHeight);
|
267 |
+
}
|
268 |
+
<?php } ?>
|
269 |
+
if(!$jq('.CodeMirror .quicktags-toolbar').length) {
|
270 |
+
$jq('.CodeMirror').prepend('<div class="quicktags-toolbar">' +
|
271 |
+
'<a href="#" class="button-primary editor-button" id="theme_save">save</a> ' +
|
272 |
+
'<a href="#" class="button-secondary editor-button" id="theme_undo">undo</a> ' +
|
273 |
+
'<a href="#" class="button-secondary editor-button" id="theme_redo">redo</a> ' +
|
274 |
+
'<a href="#" class="button-secondary editor-button" id="theme_search">search</a> ' +
|
275 |
+
'<a href="#" class="button-secondary editor-button" id="theme_find_prev">find prev</a> ' +
|
276 |
+
'<a href="#" class="button-secondary editor-button" id="theme_find_next">find next</a> ' +
|
277 |
+
'<a href="#" class="button-secondary editor-button" id="theme_replace">replace</a> ' +
|
278 |
+
'<a href="#" class="button-secondary editor-button" id="theme_replace_all">replace all</a> ' +
|
279 |
+
'<a href="#" class="button-secondary editor-button" id="theme_fullscreen">fullscreen</a> ' +
|
280 |
+
'</div>'
|
281 |
+
);
|
282 |
+
$jq('.CodeMirror-scroll').height($jq('.CodeMirror-scroll').height() - 33);
|
283 |
+
editor.focus();
|
284 |
+
}
|
285 |
+
$jq('#theme_fullscreen').live("click", function() {
|
286 |
+
toggleFullscreenEditing();
|
287 |
+
editor.focus();
|
288 |
+
})
|
289 |
+
$jq('#theme_save').live("click", function() {
|
290 |
+
$jq('.ajax-editor-update').submit();
|
291 |
+
editor.focus();
|
292 |
+
})
|
293 |
+
$jq('#theme_undo').live("click", function() {
|
294 |
+
editor.undo();
|
295 |
+
editor.focus();
|
296 |
+
})
|
297 |
+
$jq('#theme_redo').live("click", function() {
|
298 |
+
editor.redo();
|
299 |
+
editor.focus();
|
300 |
+
})
|
301 |
+
$jq('#theme_search').live("click", function() {
|
302 |
+
CodeMirror.commands.find(editor);
|
303 |
+
return false;
|
304 |
+
})
|
305 |
+
$jq('#theme_find_next').live("click", function() {
|
306 |
+
CodeMirror.commands.findNext(editor);
|
307 |
+
return false;
|
308 |
+
})
|
309 |
+
$jq('#theme_find_prev').live("click", function() {
|
310 |
+
CodeMirror.commands.findPrev(editor);
|
311 |
+
return false;
|
312 |
+
})
|
313 |
+
$jq('#theme_replace').live("click", function() {
|
314 |
+
CodeMirror.commands.replace(editor);
|
315 |
+
return false;
|
316 |
+
})
|
317 |
+
$jq('#theme_replace_all').live("click", function() {
|
318 |
+
CodeMirror.commands.replaceAll(editor);
|
319 |
+
return false;
|
320 |
+
})
|
321 |
}
|
322 |
</script>
|
323 |
</div>
|
wpeditor.css
CHANGED
@@ -233,7 +233,7 @@ span.tiny {
|
|
233 |
}
|
234 |
.CodeMirror {
|
235 |
height:450px;
|
236 |
-
width:
|
237 |
}
|
238 |
.wp-editor-container .CodeMirror {
|
239 |
width:100% !important;
|
@@ -264,7 +264,7 @@ span.tiny {
|
|
264 |
margin:0 5px 0 0;
|
265 |
padding:0;
|
266 |
}
|
267 |
-
.current_file {
|
268 |
font-weight:bold;
|
269 |
}
|
270 |
.normal_list {
|
@@ -324,4 +324,27 @@ a.donate, a.support {
|
|
324 |
background-image: -o-linear-gradient(bottom,#E3E3E3,white);
|
325 |
background-image: -webkit-linear-gradient(bottom,#E3E3E3,white);
|
326 |
background-image: linear-gradient(bottom,#E3E3E3,white);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
327 |
}
|
233 |
}
|
234 |
.CodeMirror {
|
235 |
height:450px;
|
236 |
+
width:100%;
|
237 |
}
|
238 |
.wp-editor-container .CodeMirror {
|
239 |
width:100% !important;
|
264 |
margin:0 5px 0 0;
|
265 |
padding:0;
|
266 |
}
|
267 |
+
.current_file, .writable_status, .not-writable {
|
268 |
font-weight:bold;
|
269 |
}
|
270 |
.normal_list {
|
324 |
background-image: -o-linear-gradient(bottom,#E3E3E3,white);
|
325 |
background-image: -webkit-linear-gradient(bottom,#E3E3E3,white);
|
326 |
background-image: linear-gradient(bottom,#E3E3E3,white);
|
327 |
+
}
|
328 |
+
#plugin-editor-files .plugin-folders ul a.not-writable, #theme-editor-files .theme-folders ul a.not-writable, span.not-writable {
|
329 |
+
color: red;
|
330 |
+
}
|
331 |
+
.quicktags-toolbar {
|
332 |
+
border-bottom-style: solid;
|
333 |
+
border-bottom-width: 1px;
|
334 |
+
-webkit-border-top-right-radius: 3px;
|
335 |
+
-webkit-border-top-left-radius: 3px;
|
336 |
+
border-top-right-radius: 3px;
|
337 |
+
border-top-left-radius: 3px;
|
338 |
+
padding: 5px 8px 0;
|
339 |
+
min-height: 29px;
|
340 |
+
border-bottom: 1px solid #D1D1D1;
|
341 |
+
background: #EEE;
|
342 |
+
background-image: -webkit-gradient(linear,left bottom,left top,from(#E5E5E5),to(#F4F4F4));
|
343 |
+
background-image: -webkit-linear-gradient(bottom,#E5E5E5,#F4F4F4);
|
344 |
+
background-image: -moz-linear-gradient(bottom,#E5E5E5,#F4F4F4);
|
345 |
+
background-image: -o-linear-gradient(bottom,#E5E5E5,#F4F4F4);
|
346 |
+
background-image: linear-gradient(to top,#E5E5E5,#F4F4F4);
|
347 |
+
}
|
348 |
+
.editor-button {
|
349 |
+
font-family:Arial, Helvetica, 'sans-serif normal';
|
350 |
}
|
wpeditor.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: WP Editor
|
4 |
Plugin URI: http://wpeditor.net
|
5 |
Description: This plugin modifies the default behavior of the WordPress plugin and theme editors.
|
6 |
-
Version: 1.
|
7 |
Author: Benjamin Rojas
|
8 |
Author URI: http://benjaminrojas.net
|
9 |
Text Domain: wpeditor
|
@@ -30,9 +30,6 @@ if(!class_exists('WPEditor')) {
|
|
30 |
|
31 |
ob_start();
|
32 |
|
33 |
-
// Define the WP Editor version number
|
34 |
-
define('WPEDITOR_VERSION_NUMBER', '1.1.0.3');
|
35 |
-
|
36 |
$wp_34 = false;
|
37 |
if(version_compare(get_bloginfo('version'), '3.4', '>=')) {
|
38 |
$wp_34 = true;
|
@@ -43,6 +40,9 @@ if(!class_exists('WPEditor')) {
|
|
43 |
define('WPEDITOR_PATH', plugin_dir_path( __FILE__ ));
|
44 |
define('WPEDITOR_URL', plugins_url() . '/' . basename(dirname(__FILE__)));
|
45 |
|
|
|
|
|
|
|
46 |
// IS_ADMIN is true when the dashboard or the administration panels are displayed
|
47 |
if(!defined('IS_ADMIN')) {
|
48 |
define('IS_ADMIN', is_admin());
|
@@ -83,4 +83,11 @@ function wpEditorSettingsLink($links, $file) {
|
|
83 |
array_unshift($links, $settings);
|
84 |
}
|
85 |
return $links;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
}
|
3 |
Plugin Name: WP Editor
|
4 |
Plugin URI: http://wpeditor.net
|
5 |
Description: This plugin modifies the default behavior of the WordPress plugin and theme editors.
|
6 |
+
Version: 1.2
|
7 |
Author: Benjamin Rojas
|
8 |
Author URI: http://benjaminrojas.net
|
9 |
Text Domain: wpeditor
|
30 |
|
31 |
ob_start();
|
32 |
|
|
|
|
|
|
|
33 |
$wp_34 = false;
|
34 |
if(version_compare(get_bloginfo('version'), '3.4', '>=')) {
|
35 |
$wp_34 = true;
|
40 |
define('WPEDITOR_PATH', plugin_dir_path( __FILE__ ));
|
41 |
define('WPEDITOR_URL', plugins_url() . '/' . basename(dirname(__FILE__)));
|
42 |
|
43 |
+
// Define the WP Editor version number
|
44 |
+
define('WPEDITOR_VERSION_NUMBER', wpEditorVersionNumber());
|
45 |
+
|
46 |
// IS_ADMIN is true when the dashboard or the administration panels are displayed
|
47 |
if(!defined('IS_ADMIN')) {
|
48 |
define('IS_ADMIN', is_admin());
|
83 |
array_unshift($links, $settings);
|
84 |
}
|
85 |
return $links;
|
86 |
+
}
|
87 |
+
function wpEditorVersionNumber() {
|
88 |
+
if(!function_exists('get_plugin_data')) {
|
89 |
+
require_once(ABSPATH . 'wp-admin/includes/plugin.php');
|
90 |
+
}
|
91 |
+
$plugin_data = get_plugin_data(WPEDITOR_PATH . '/wpeditor.php');
|
92 |
+
return $plugin_data['Version'];
|
93 |
}
|