summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--inc/config.php7
-rw-r--r--inc/mod/pages.php29
-rw-r--r--templates/mod/config-editor-php.html45
-rw-r--r--templates/mod/dashboard.html2
-rw-r--r--templates/mod/edit_post_form.html2
5 files changed, 74 insertions, 11 deletions
diff --git a/inc/config.php b/inc/config.php
index d82ebfc6..bddb9e4c 100644
--- a/inc/config.php
+++ b/inc/config.php
@@ -929,6 +929,9 @@
// Automatically dismiss all reports regarding a thread when it is locked
$config['mod']['dismiss_reports_on_lock'] = true;
+ // Replace ?/config with a simple text editor for editing inc/instance-config.php
+ $config['mod']['config_editor_php'] = false;
+
// Probably best not to change these:
if (!defined('JANITOR')) {
define('JANITOR', 0, true);
@@ -999,7 +1002,7 @@
// Bypass flood check
$config['mod']['flood'] = ADMIN;
// Raw HTML posting
- $config['mod']['rawhtml'] = DISABLED;
+ $config['mod']['rawhtml'] = ADMIN;
/* Administration */
// View the report queue
@@ -1077,8 +1080,6 @@
// Delete news entries
$config['mod']['news_delete'] = ADMIN;
- // View the current configuration
- $config['mod']['show_config'] = ADMIN;
// Edit the current configuration (via web interface)
$config['mod']['edit_config'] = ADMIN;
diff --git a/inc/mod/pages.php b/inc/mod/pages.php
index 1e0dc7c9..615e85c7 100644
--- a/inc/mod/pages.php
+++ b/inc/mod/pages.php
@@ -1304,13 +1304,12 @@ function mod_edit_post($board, $edit_raw_html, $postID) {
header('Location: ?/' . sprintf($config['board_path'], $board) . $config['dir']['res'] . sprintf($config['file_page'], $post['thread'] ? $post['thread'] : $postID) . '#' . $postID, true, $config['redirect_http']);
} else {
if ($config['minify_html']) {
- // $post['body_nomarkup'] = str_replace("\n", '
', $post['body_nomarkup']);
- // $post['body'] = str_replace("\n", '
', $post['body']);
+ $post['body_nomarkup'] = str_replace("\n", '
', utf8tohtml($post['body_nomarkup']));
+ $post['body'] = str_replace("\n", '
', utf8tohtml($post['body']));
+ $post['body_nomarkup'] = str_replace("\r", '', $post['body_nomarkup']);
+ $post['body'] = str_replace("\r", '', $post['body']);
}
-
- // Minifying this page causes an issue with newlines in the textarea. This is a temporary solution.
- $config['minify_html'] = false;
-
+
mod_page(_('Edit post'), 'mod/edit_post_form.html', array('token' => $security_token, 'board' => $board, 'raw' => $edit_raw_html, 'post' => $post));
}
}
@@ -1948,6 +1947,24 @@ function mod_config() {
if (!hasPermission($config['mod']['edit_config']))
error($config['error']['noaccess']);
+ if ($config['mod']['config_editor_php']) {
+ $readonly = !is_writable('inc/instance-config.php');
+
+ if (!$readonly && isset($_POST['code'])) {
+ $code = $_POST['code'];
+ file_put_contents('inc/instance-config.php', $code);
+ header('Location: ?/config', true, $config['redirect_http']);
+ return;
+ }
+
+ $instance_config = file_get_contents('inc/instance-config.php');
+ $instance_config = str_replace("\n", '
', utf8tohtml($instance_config));
+
+ mod_page(_('Config editor'), 'mod/config-editor-php.html', array('php' => $instance_config, 'readonly' => $readonly));
+ return;
+ }
+
+
require_once 'inc/mod/config-editor.php';
$conf = config_vars();
diff --git a/templates/mod/config-editor-php.html b/templates/mod/config-editor-php.html
new file mode 100644
index 00000000..54c398e4
--- /dev/null
+++ b/templates/mod/config-editor-php.html
@@ -0,0 +1,45 @@
+{% if readonly %}
+ <p style="text-align:center;max-width:800px;margin:20px auto">Tinyboard does not have the required permissions to edit <strong>inc/instance-config.php</strong>. To make changes, you will need to change the file's permissions first or manually edit the code.</p>
+{% endif %}
+
+
+{% if not readonly %}<form method="post" action="">{% endif %}
+ <textarea name="code" id="code" style="display:block; margin:auto;width:100%;max-width:800px;height:500px{% if readonly %};background:#eee" readonly{% else %}"{% endif %}>
+ {{ php }}
+ </textarea>
+
+ <ul style="padding:0;text-align:center;list-style:none">
+ <li><input name="save" type="submit" value="{% trans 'Save changes' %}"{% if readonly %} disabled{% endif %}></li>
+ </ul>
+{% if not readonly %}</form>{% endif %}
+
+<script type="text/javascript">
+var observe;
+if (window.attachEvent) {
+ observe = function (element, event, handler) {
+ element.attachEvent('on'+event, handler);
+ };
+}
+else {
+ observe = function (element, event, handler) {
+ element.addEventListener(event, handler, false);
+ };
+}
+
+var text = document.getElementById('code');
+function resize () {
+ text.style.height = 'auto';
+ text.style.height = text.scrollHeight+'px';
+}
+/* 0-timeout to get the already changed text */
+function delayedResize () {
+ window.setTimeout(resize, 0);
+}
+observe(text, 'change', resize);
+observe(text, 'cut', delayedResize);
+observe(text, 'paste', delayedResize);
+observe(text, 'drop', delayedResize);
+observe(text, 'keydown', delayedResize);
+
+resize();
+</script> \ No newline at end of file
diff --git a/templates/mod/dashboard.html b/templates/mod/dashboard.html
index 5f6585fc..e9fb7c9c 100644
--- a/templates/mod/dashboard.html
+++ b/templates/mod/dashboard.html
@@ -94,7 +94,7 @@
{% if mod|hasPermission(config.mod.rebuild) %}
<li><a href="?/rebuild">{% trans 'Rebuild' %}</a></li>
{% endif %}
- {% if mod|hasPermission(config.mod.show_config) %}
+ {% if mod|hasPermission(config.mod.edit_config) %}
<li><a href="?/config">{% trans 'Configuration' %}</a></li>
{% endif %}
diff --git a/templates/mod/edit_post_form.html b/templates/mod/edit_post_form.html
index b9359c68..a2980d35 100644
--- a/templates/mod/edit_post_form.html
+++ b/templates/mod/edit_post_form.html
@@ -32,7 +32,7 @@
{% trans %}Comment{% endtrans %}
</th>
<td>
- <textarea name="body" id="body" rows="8" cols="35">{% if raw %}{{ post.body|e }}{% else %}{{ post.body_nomarkup|e }}{% endif %}</textarea>
+ <textarea name="body" id="body" rows="8" cols="35">{% if raw %}{{ post.body }}{% else %}{{ post.body_nomarkup }}{% endif %}</textarea>
</td>
</tr>
</table>