diff --git a/inc/config.php b/inc/config.php index 81522b63..179eff32 100644 --- a/inc/config.php +++ b/inc/config.php @@ -203,6 +203,7 @@ $config['file_page'] = '%d.html'; $config['file_mod'] = 'mod.php'; $config['file_post'] = 'post.php'; + $config['file_script'] = 'main.js'; // Multi-board (%s is board abbreviation) $config['board_path'] = '%s/'; @@ -325,6 +326,11 @@ $config['mod']['modlog'] = ADMIN; // Create a PM (viewing mod usernames) $config['mod']['create_pm'] = JANITOR; + // Rebuild everything + $config['mod']['rebuild'] = ADMIN; + + // Wait indefinitely when rebuilding everything + $config['mod']['rebuild_timelimit'] = 0; // Mod links (full HTML) // Correspond to above permission directives @@ -434,6 +440,22 @@ // Always act as if they had typed "noko" in the email field no mattter what $config['always_noko'] = false; + // Characters used to generate a random password (with Javascript) + $config['genpassword_chars'] = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+'; + + // Custom stylesheets available. The prefix for each stylesheet URI is defined below. + $config['stylesheets'] = Array( + // Stylesheet name => URI + 'Yotsuba B' => 'default.css', + 'Yotsuba' => 'yotsuba.css' + ); + + // The prefix for each stylesheet URI. Defaults to $config['root'] + //$config['uri_stylesheets'] = 'http://static.example.org/stylesheets/'; + + // The default stylesheet to use + $config['default_stylesheet'] = Array('Yotsuba B', $config['stylesheets']['Yotsuba B']); + // Boardlinks // You can group, order and place the boardlist at the top of every page, using the following template. //$config['boards'] = Array( @@ -450,4 +472,5 @@ // $config['url_javascript'] = 'http://static.example.org/main.js'; // $config['url_banner'] = '/banner.php'; // $config['url_favicon'] = '/favicon.gif'; + ?> \ No newline at end of file diff --git a/inc/functions.php b/inc/functions.php index d930712f..aa9db4a7 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -15,7 +15,7 @@ if(!isset($config['url_stylesheet'])) $config['url_stylesheet'] = $config['root'] . 'style.css'; if(!isset($config['url_javascript'])) - $config['url_javascript'] = $config['root'] . 'script.js'; + $config['url_javascript'] = $config['root'] . 'main.js'; if(!isset($config['post_url'])) $config['post_url'] = $config['root'] . $config['file_post']; @@ -61,6 +61,9 @@ else $config['uri_img'] = sprintf($config['uri_img'], $board['dir']); + if(!isset($config['uri_stylesheets'])) + $config['uri_stylesheets'] = $config['root']; + if($config['root_file']) { chdir($config['root_file']); } @@ -840,6 +843,22 @@ } } + function buildJavascript() { + global $config; + + $stylesheets = Array(); + foreach($config['stylesheets'] as $name => $uri) { + $stylesheets[] = Array( + 'name' => addslashes($name), + 'uri' => addslashes((!empty($uri) ? $config['uri_stylesheets'] : '') . $uri)); + } + + file_put_contents($config['file_script'], Element('main.js', Array( + 'config' => $config, + 'stylesheets' => $stylesheets + ))); + } + function isDNSBL() { $dns_black_lists = file('./dnsbl.txt', FILE_IGNORE_NEW_LINES); diff --git a/main.js b/main.js index 038713cd..d434acb3 100644 --- a/main.js +++ b/main.js @@ -41,8 +41,8 @@ function citeReply(id) { var selectedstyle = 'Yotsuba B'; var styles = [ - ['Yotsuba B', '/default.css'], - ['Yotsuba', '/yotsuba.css'] + ['Yotsuba B', '/board/default.css'], + ['Yotsuba', '/board/yotsuba.css'] ]; function changeStyle(x) { @@ -51,12 +51,6 @@ function changeStyle(x) { selectedstyle = styles[x][0]; } -newLink = document.createElement('link'); -newLink.rel = 'stylesheet'; -newLink.type = 'text/css'; -newLink.id = 'stylesheet'; -document.getElementsByTagName('head')[0].insertBefore(newLink, document.getElementsByTagName('link')[0].lastChild) - if(localStorage.stylesheet) { for(x=0;x{board[url]} - {board[name]} - {config[meta_keywords]?} + + {boardlist[top]} diff --git a/templates/main.js b/templates/main.js new file mode 100644 index 00000000..7bf5b6d9 --- /dev/null +++ b/templates/main.js @@ -0,0 +1,123 @@ +function highlightReply(id) +{ + var divs = document.getElementsByTagName('div'); + for (var i = 0; i < divs.length; i++) + { + if (divs[i].className.indexOf('post') != -1) + divs[i].className = divs[i].className.replace(/highlighted/, ''); + } + if (id) { + post = document.getElementById('reply_'+id); + if(post) + post.className += ' highlighted'; + } +} +function focusId(id) +{ + document.getElementById(id).focus(); + init(); +} + +function generatePassword() { + pass = ''; + chars = '{config[genpassword_chars]}'; + for(i=0;i<8;i++) { + rnd = Math.floor(Math.random() * chars.length); + pass += chars.substring(rnd,rnd + 1); + } + return pass; +} + +function dopost(form) { + localStorage.name = form.name.value.replace(/ ##.+$/, ''); + if(form.email.value != 'sage') + localStorage.email = form.email.value; + + return form.body.value != "" || (typeof form.thread != "undefined" && form.file.value != ""); +} +function citeReply(id) { + document.getElementById('body').value += '>>' + id + '\n'; +} + +var selectedstyle = '{config[default_stylesheet][0]}'; +var styles = [ + {stylesheets:['{stylesheets[name]}', '{stylesheets[uri]}']{!%last?, + }} +]; + +function changeStyle(x) { + localStorage.stylesheet = styles[x][1]; + document.getElementById('stylesheet').href = styles[x][1]; + selectedstyle = styles[x][0]; +} + +if(localStorage.stylesheet) { + for(x=0;x{title} + {pm?
{pm}

} diff --git a/templates/thread.html b/templates/thread.html index 4df828c6..91448f39 100644 --- a/templates/thread.html +++ b/templates/thread.html @@ -6,6 +6,7 @@ {board[url]} - {board[name]} +