[1mdiff --git a/inc/instance-config.php b/inc/instance-config.php[m
[1mindex 699d1a1..475f3ed 100644[m
[1m--- a/inc/instance-config.php[m
[1m+++ b/inc/instance-config.php[m
[36m@@ -18,15 +18,15 @@[m
$config['db']['user'] = 'root';[m
$config['db']['password'] = '';[m
$config['timezone'] = 'UTC';[m
[31m- $config['cache']['enabled'] = 'apc';[m
[31m-[m
[31m-[m
[32m+[m [32m$config['cache']['enabled'] = false;[m
[32m+[m[41m [m
[32m+[m[41m [m
$config['cookies']['mod'] = 'mod';[m
$config['cookies']['salt'] = '';[m
[31m-[m
[32m+[m[41m [m
$config['spam']['hidden_inputs_max_pass'] = 128;[m
$config['spam']['hidden_inputs_expire'] = 60 * 60 * 4; // three hours[m
[31m-[m
[32m+[m[41m [m
$config['flood_time'] = 5;[m
$config['flood_time_ip'] = 30;[m
$config['flood_time_same'] = 2;[m
[36m@@ -46,10 +46,10 @@[m
$config['thread_subject_in_title'] = true;[m
$config['spam']['hidden_inputs_max_pass'] = 128;[m
$config['ayah_enabled'] = true;[m
[31m-[m
[32m+[m[41m [m
// Load database credentials[m
require "secrets.php";[m
[31m-[m
[32m+[m[41m [m
// Image shit[m
$config['thumb_method'] = 'gm+gifsicle';[m
$config['thumb_ext'] = '';[m
[1mdiff --git a/install.php b/install.php[m
[1mindex 8b3815a..07e94e7 100644[m
[1m--- a/install.php[m
[1m+++ b/install.php[m
[36m@@ -579,7 +579,8 @@[m [mif ($step == 0) {[m
';[m
[m
echo Element('page.html', $page);[m
[31m-} elseif ($step == 1) {[m
[32m+[m[32m}[m
[32m+[m[32melseif ($step == 1) {[m
$page['title'] = 'Pre-installation test';[m
[m
$can_exec = true;[m
[36m@@ -761,7 +762,8 @@[m [mif ($step == 0) {[m
'title' => 'Checking environment',[m
'config' => $config[m
));[m
[31m-} elseif ($step == 2) {[m
[32m+[m[32m}[m
[32m+[m[32melseif ($step == 2) {[m
// Basic config[m
$page['title'] = 'Configuration';[m
[m
[36m@@ -775,7 +777,8 @@[m [mif ($step == 0) {[m
'title' => 'Configuration',[m
'config' => $config[m
));[m
[31m-} elseif ($step == 3) {[m
[32m+[m[32m}[m
[32m+[m[32melseif ($step == 3) {[m
$instance_config = [m
'I couldn\'t write to SQL errors SQL errors were encountered when trying to install the database. This may be the result of using a database which is already occupied with a vichan installation; if so, you can probably ignore this.
The errors encountered were:
Ignore errors and complete installation.
';[m
[31m- } else {[m
[32m+[m [32m}[m
[32m+[m [32melse {[m
$boards = listBoards();[m
foreach ($boards as &$_board) {[m
setupBoard($_board);[m
[36m@@ -866,13 +876,11 @@[m [mif ($step == 0) {[m
}[m
[m
file_write($config['has_installed'], VERSION);[m
[31m- /*if (!file_unlink(__FILE__)) {[m
[31m- $page['body'] .= 'Thank you for using vichan. Please remember to report any bugs you discover.
';[m
[m
[1mdiff --git a/templates/8chan/index.html b/templates/8chan/index.html[m
[1mindex 459e7e8..4f25473 100644[m
[1m--- a/templates/8chan/index.html[m
[1m+++ b/templates/8chan/index.html[m
[36m@@ -223,7 +223,7 @@[m
[m
[m
[m
[31m- [m
[32m+[m[32m [m
[m
[m
[m
[1mdiff --git a/templates/generic_page.html b/templates/generic_page.html[m
[1mindex 0fe1f9c..4cd3116 100644[m
[1m--- a/templates/generic_page.html[m
[1m+++ b/templates/generic_page.html[m
[36m@@ -6,7 +6,7 @@[m
{{ board.url }} - {{ board.name }} [m
{% endblock %}[m
[m
[31m- [m
[32m+[m[32m[m
{{ boardlist.top }}[m
{% if pm %}
You have
an unread PM {% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.
{% endif %}[m
{% if config.url_banner %}
{% endif %}[m
[1mdiff --git a/templates/index.html b/templates/index.html[m
[1mindex aae87c1..5638fd6 100644[m
[1m--- a/templates/index.html[m
[1m+++ b/templates/index.html[m
[36m@@ -14,7 +14,7 @@[m
{% include 'header.html' %}[m
{{ board.url }} - {{ board.title|e }} [m
[m
[31m- [m
[32m+[m[32m[m
{{ boardlist.top }}[m
[m
{% if pm %}
You have
an unread PM {% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.
{% endif %}[m
[1mdiff --git a/templates/main.js b/templates/main.js[m
[1mindex 1ec4d26..d100f93 100644[m
[1m--- a/templates/main.js[m
[1m+++ b/templates/main.js[m
[36m@@ -73,11 +73,6 @@[m [mvar saved = {};[m
[m
[m
var selectedstyle = '{% endraw %}{{ config.default_stylesheet.0|addslashes }}{% raw %}';[m
[31m-/*var styles = {[m
[31m- {% endraw %}[m
[31m- {% for stylesheet in stylesheets %}{% raw %}'{% endraw %}{{ stylesheet.name|addslashes }}{% raw %}' : '{% endraw %}{{ stylesheet.uri|addslashes }}{% raw %}',[m
[31m- {% endraw %}{% endfor %}{% raw %}[m
[31m-};*/[m
var board_name = false;[m
[m
function changeStyle(styleName, link) {[m
[36m@@ -92,36 +87,78 @@[m [mfunction changeStyle(styleName, link) {[m
{% endif %}[m
{% raw %}[m
[m
[31m- if (!document.getElementById('stylesheet')) {[m
[31m- var s = document.createElement('link');[m
[31m- s.rel = 'stylesheet';[m
[31m- s.type = 'text/css';[m
[31m- s.id = 'stylesheet';[m
[32m+[m [32m// Find the
for the stylesheet. May be nothing.[m
[32m+[m [32mvar domStylesheet = document.getElementById('stylesheet');[m
[32m+[m [32m// Determine if this stylesheet is the default.[m
[32m+[m [32mvar setToDefault = ( styles[styleName] == "" || styles[styleName] == "/stylesheets/" );[m
[32m+[m [32m// Turn "Yotsuba B" to "yotsuba_b"[m[41m [m
[32m+[m [32mvar attributeName = styleName.replace(/[^a-z0-9_\-]/gi, '_').toLowerCase();[m
[32m+[m[41m [m
[32m+[m [32mif( !domStylesheet && !setToDefault ) {[m
[32m+[m [32mdomStylesheet = document.createElement('link');[m
[32m+[m [32mdomStylesheet.rel = 'stylesheet';[m
[32m+[m [32mdomStylesheet.type = 'text/css';[m
[32m+[m [32mdomStylesheet.id = 'stylesheet';[m
[32m+[m[41m [m
var x = document.getElementsByTagName('head')[0];[m
[31m- x.appendChild(s);[m
[32m+[m [32mx.appendChild(domStylesheet);[m
}[m
[31m-[m
[31m- {% endraw %}[m
[31m- var root = "{{ config.root }}";[m
[31m- {% raw %}[m
[31m- root = root.replace(/\/$/, "");[m
[31m- [m
[31m- document.getElementById('stylesheet').href = root + styles[styleName];[m
[31m- selectedstyle = styleName;[m
[m
[31m- if (document.getElementsByClassName('styles').length != 0) {[m
[31m- var styleLinks = document.getElementsByClassName('styles')[0].childNodes;[m
[31m- for (var i = 0; i < styleLinks.length; i++) {[m
[31m- styleLinks[i].className = '';[m
[32m+[m [32mif( !setToDefault ) {[m
[32m+[m [32m{% endraw %}[m
[32m+[m [32mvar root = "{{ config.root }}";[m
[32m+[m [32m{% raw %}[m
[32m+[m [32mroot = root.replace(/\/$/, "");[m
[32m+[m[41m [m
[32m+[m [32mdomStylesheet.href = root + styles[styleName];[m
[32m+[m [32mselectedstyle = styleName;[m
[32m+[m[41m [m
[32m+[m [32mif (document.getElementsByClassName('styles').length != 0) {[m
[32m+[m [32mvar styleLinks = document.getElementsByClassName('styles')[0].childNodes;[m
[32m+[m [32mfor (var i = 0; i < styleLinks.length; i++) {[m
[32m+[m [32mstyleLinks[i].className = '';[m
[32m+[m [32m}[m
}[m
[32m+[m[41m [m
[32m+[m [32mif (link) {[m
[32m+[m [32mlink.className = 'selected';[m
[32m+[m [32m}[m
[32m+[m [32m}[m
[32m+[m [32melse if( domStylesheet ) {[m
[32m+[m [32mdomStylesheet.parentNode.removeChild( domStylesheet );[m
}[m
[m
[31m- if (link) {[m
[31m- link.className = 'selected';[m
[32m+[m [32m// Fix the classes on the body tag.[m
[32m+[m [32mvar body = document.getElementsByTagName('body')[0];[m
[32m+[m[41m [m
[32m+[m [32mif( body ) {[m
[32m+[m [32mvar bodyClasses = document.getElementsByTagName('body')[0].getAttribute('class').split(" ");[m
[32m+[m [32mvar bodyClassesNew = [];[m
[32m+[m[41m [m
[32m+[m [32mfor( i = 0; i < bodyClasses.length; ++i ) {[m
[32m+[m [32mvar bodyClass = bodyClasses[ i ];[m
[32m+[m[41m [m
[32m+[m [32m// null class from a double-space.[m
[32m+[m [32mif( bodyClass == "" ) {[m
[32m+[m [32mcontinue;[m
[32m+[m [32m}[m
[32m+[m[41m [m
[32m+[m [32mif( bodyClass.indexOf( "stylesheet-" ) == 0 ) {[m
[32m+[m [32mcontinue;[m
[32m+[m [32m}[m
[32m+[m[41m [m
[32m+[m [32mbodyClassesNew.push( bodyClass );[m
[32m+[m [32m}[m
[32m+[m[41m [m
[32m+[m [32m// Add stylesheet-yotsuba_b at the end.[m
[32m+[m [32mbodyClassesNew.push( "stylesheet-" + attributeName );[m
[32m+[m [32mbody.setAttribute( 'class', bodyClassesNew.join(" ") );[m
[32m+[m [32mbody.setAttribute( 'data-stylesheet', attributeName );[m
}[m
[m
[31m- if (typeof $ != 'undefined')[m
[32m+[m [32mif (typeof $ != 'undefined') {[m
$(window).trigger('stylesheet', styleName);[m
[32m+[m [32m}[m
}[m
[m
[m
[36m@@ -167,7 +204,7 @@[m [mfunction init_stylechooser() {[m
}[m
}[m
}[m
[31m- {% endraw%}[m
[32m+[m [32m{% endraw %}[m
{% else %}[m
{% raw %}[m
if (localStorage.stylesheet) {[m
[36m@@ -185,10 +222,13 @@[m [mfunction init_stylechooser() {[m
[m
function get_cookie(cookie_name) {[m
var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)');[m
[31m- if (results)[m
[32m+[m[41m [m
[32m+[m [32mif (results) {[m
return (unescape(results[2]));[m
[31m- else[m
[32m+[m [32m}[m
[32m+[m [32melse {[m
return null;[m
[32m+[m [32m}[m
}[m
[m
function highlightReply(id) {[m
[1mdiff --git a/templates/mod/dashboard.html b/templates/mod/dashboard.html[m
[1mindex 4f76625..87e67c8 100644[m
[1m--- a/templates/mod/dashboard.html[m
[1m+++ b/templates/mod/dashboard.html[m
[36m@@ -1,40 +1,5 @@[m
[31m-[m
[31m- {% trans 'Boards' %} [m
[31m- [m
[31m- [m
[31m- {% for board in boards %}[m
[31m- {% if board.uri in mod.boards or mod.boards[0] == '*' %}[m
[31m- [m
[31m- {{ config.board_abbreviation|sprintf(board.uri) }} [m
[31m- - [m
[31m- {{ board.title|e }}[m
[31m- {% if board.subtitle %}[m
[31m- — [m
[31m- {% if config.allow_subtitle_html %}[m
[31m- {{ board.subtitle }}[m
[31m- {% else %}[m
[31m- {{ board.subtitle|e }}[m
[31m- {% endif %}[m
[31m- [m
[31m-[m
[31m- {% endif %}[m
[31m- {% if mod.type == "20" %}[m
[31m- [{% trans 'settings' %}] [m
[31m- {% endif %}[m
[31m- {% if mod|hasPermission(config.mod.manageboards) %}[m
[31m- [{% trans 'edit' %}] [m
[31m- {% endif %}[m
[31m- [m
[31m- {% endif %}[m
[31m- {% endfor %}[m
[31m- [m
[31m- {% if mod|hasPermission(config.mod.newboard) %}[m
[31m- {% trans 'Create new board' %} [m
[31m- {% endif %}[m
[31m- [m
[31m- [m
[31m-[m
[31m-[m
[32m+[m[32m[m
[32m+[m[32m[m
{% trans 'Messages' %} [m
[m
{% if mod|hasPermission(config.mod.noticeboard) %}[m
[36m@@ -78,7 +43,8 @@[m
[m
[m
[m
[31m-[m
[32m+[m[32m[m
[32m+[m[32m[m
{% trans 'Administration' %} [m
[m
[m
[36m@@ -123,57 +89,99 @@[m
[m
[m
[m
[32m+[m[32m[m
{% if mod|hasPermission(config.mod.search) %}[m
[31m- [m
[31m- {% trans 'Search' %} [m
[31m- [m
[31m- [m
[32m+[m[32m[m
[32m+[m [32m{% trans 'Search' %} [m
[32m+[m[41m [m
[32m+[m [32m[m
[32m+[m [32m[m
[32m+[m [32m{% include 'mod/search_form.html' %}[m
[32m+[m [32m [m
[32m+[m [32m [m
[32m+[m[32m [m
[32m+[m[32m{% endif %}[m
[32m+[m
[32m+[m[32m[m
[32m+[m[32m[m
[32m+[m [32m{% trans 'Boards' %} [m
[32m+[m[41m [m
[32m+[m [32m[m
[32m+[m [32m{% for board in boards %}[m
[32m+[m [32m{% if board.uri in mod.boards or mod.boards[0] == '*' %}[m
[m
[31m- {% include 'mod/search_form.html' %}[m
[32m+[m [32m{{ config.board_abbreviation|sprintf(board.uri) }} [m
[32m+[m [32m -[m[41m [m
[32m+[m [32m{{ board.title|e }}[m
[32m+[m [32m{% if board.subtitle %}[m
[32m+[m [32m—[m[41m [m
[32m+[m [32m{% if config.allow_subtitle_html %}[m
[32m+[m [32m{{ board.subtitle }}[m
[32m+[m [32m{% else %}[m
[32m+[m [32m{{ board.subtitle|e }}[m
[32m+[m [32m{% endif %}[m
[32m+[m [32m [m
[32m+[m
[32m+[m [32m{% endif %}[m
[32m+[m [32m{% if mod.type == "20" %}[m
[32m+[m [32m[{% trans 'settings' %}] [m
[32m+[m [32m{% endif %}[m
[32m+[m [32m{% if mod|hasPermission(config.mod.manageboards) %}[m
[32m+[m [32m [{% trans 'edit' %}] [m
[32m+[m [32m{% endif %}[m
[m
[31m- [m
[31m- [m
[31m-{% endif %}[m
[32m+[m [32m{% endif %}[m
[32m+[m [32m{% endfor %}[m
[32m+[m[41m [m
[32m+[m [32m{% if mod|hasPermission(config.mod.newboard) %}[m
[32m+[m [32m{% trans 'Create new board' %} [m
[32m+[m [32m{% endif %}[m
[32m+[m [32m [m
[32m+[m[32m [m
[m
[32m+[m[32m[m
{% if config.mod.dashboard_links|count %}[m
[31m- [m
[31m- {% trans 'Other' %} [m
[31m- [m
[31m- [m
[31m- {% for label,link in config.mod.dashboard_links %}[m
[31m- {{ label }} [m
[31m- {% endfor %}[m
[31m- [m
[31m- [m
[32m+[m[32m[m
[32m+[m [32m{% trans 'Other' %} [m
[32m+[m
[32m+[m [32m[m
[32m+[m [32m{% for label,link in config.mod.dashboard_links %}[m
[32m+[m [32m{{ label }} [m
[32m+[m [32m{% endfor %}[m
[32m+[m [32m [m
[32m+[m[32m [m
{% endif %}[m
[m
[32m+[m[32m[m
{% if config.debug %}[m
[31m- [m
[31m- {% trans 'Debug' %} [m
[31m- [m
[31m- [m
[32m+[m[32m[m
[32m+[m [32m{% trans 'Debug' %} [m
[32m+[m [32m[m
[32m+[m[32m [m
{% endif %}[m
[m
[32m+[m[32m[m
{% if newer_release %}[m
[31m- [m
[31m- Update [m
[31m- [m
[31m- [m
[31m- A newer version of Tinyboard [m
[31m- (v{{ newer_release.massive }}.{{ newer_release.major }}.{{ newer_release.minor }} ) is available! [m
[31m- See http://tinyboard.org/ for upgrade instructions.[m
[31m- [m
[31m- [m
[31m- [m
[32m+[m[32m[m
[32m+[m [32mUpdate [m
[32m+[m [32m[m
[32m+[m [32m[m
[32m+[m [32mA newer version of Tinyboard[m[41m [m
[32m+[m [32m(v{{ newer_release.massive }}.{{ newer_release.major }}.{{ newer_release.minor }} ) is available![m[41m [m
[32m+[m [32mSee http://tinyboard.org/ for upgrade instructions.[m
[32m+[m [32m [m
[32m+[m [32m [m
[32m+[m[32m [m
{% endif %}[m
[m
[31m-[m
[32m+[m[32m[m
[32m+[m[32m[m
{% trans 'User account' %} [m
[m