mirror of
https://github.com/vichan-devel/vichan.git
synced 2024-11-30 18:24:29 +01:00
better rebuilding system for themes
This commit is contained in:
parent
757b09dec9
commit
641f925dfe
@ -104,13 +104,13 @@
|
||||
return $theme;
|
||||
}
|
||||
|
||||
function rebuildTheme() {
|
||||
function rebuildTheme($action) {
|
||||
$query = query("SELECT `value` AS `theme` FROM `theme_settings` WHERE `name` = 'theme'") or error(db_error());
|
||||
if($theme = $query->fetch()) {
|
||||
// A theme is installed
|
||||
|
||||
$theme = loadThemeConfig($theme['theme']);
|
||||
$theme['build_function'](themeSettings());
|
||||
$theme['build_function']($action, themeSettings());
|
||||
}
|
||||
}
|
||||
|
||||
@ -799,10 +799,16 @@
|
||||
$content .= '<div style="display:none"><input type="text" name="' . htmlspecialchars($name) . '" value="' . htmlspecialchars($value) . '" /></div>';
|
||||
break;
|
||||
case 6:
|
||||
if(!empty($value))
|
||||
$content .= '<textarea style="display:none" name="' . htmlspecialchars($name) . '">' . htmlspecialchars($value) . '</textarea>';
|
||||
else
|
||||
$content .= '<input type="hidden" name="' . htmlspecialchars($name) . '" value="' . htmlspecialchars($value) . '" />';
|
||||
break;
|
||||
case 7:
|
||||
if(!empty($value))
|
||||
$content .= '<textarea name="' . htmlspecialchars($name) . '" style="display:none">' . htmlspecialchars($value) . '</textarea>';
|
||||
else
|
||||
$content .= '<input type="hidden" name="' . htmlspecialchars($name) . '" value="' . htmlspecialchars($value) . '" />';
|
||||
break;
|
||||
case 8:
|
||||
$content .= '<div style="display:none"><textarea name="' . htmlspecialchars($name) . '" style="display:none">' . htmlspecialchars($value) . '</textarea></div>';
|
||||
|
22
mod.php
22
mod.php
@ -304,7 +304,15 @@
|
||||
$query->execute() or error(db_error($query));
|
||||
|
||||
// Build theme
|
||||
$theme['build_function'](themeSettings());
|
||||
rebuildTheme('all');
|
||||
|
||||
echo Element('page.html', Array(
|
||||
'config'=>$config,
|
||||
'title'=>'Installed "' . htmlentities($theme['name']) . '"',
|
||||
'body'=>'<p style="text-align:center">Successfully installed and built theme.</p>',
|
||||
'mod'=>true
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$body = '<form action="" method="post">';
|
||||
|
||||
@ -481,7 +489,7 @@
|
||||
$query->bindValue(':id', $match[1], PDO::PARAM_INT);
|
||||
$query->execute() or error(db_error($query));
|
||||
|
||||
rebuildTheme();
|
||||
rebuildTheme('news');
|
||||
|
||||
header('Location: ?/news', true, $config['redirect_http']);
|
||||
} elseif(preg_match('/^\/news$/', $query)) {
|
||||
@ -504,7 +512,7 @@
|
||||
$query->bindValue(':body', $_POST['body']);
|
||||
$query->execute() or error(db_error($query));
|
||||
|
||||
rebuildTheme();
|
||||
rebuildTheme('news');
|
||||
}
|
||||
|
||||
$body .= '<fieldset><legend>New post</legend><form style="display:inline" action="" method="post"><table>' .
|
||||
@ -1197,6 +1205,8 @@
|
||||
$query->bindValue(':id', $board['id'], PDO::PARAM_INT);
|
||||
$query->execute() or error(db_error($query));
|
||||
|
||||
rebuildTheme('boards');
|
||||
|
||||
header('Location: ?/', true, $config['redirect_http']);
|
||||
} else {
|
||||
if(isset($_POST['title']) && isset($_POST['subtitle'])) {
|
||||
@ -1211,6 +1221,8 @@
|
||||
$query->bindValue(':id', $board['id'], PDO::PARAM_INT);
|
||||
$query->execute() or error(db_error($query));
|
||||
|
||||
rebuildTheme('boards');
|
||||
|
||||
openBoard($board['uri']);
|
||||
}
|
||||
|
||||
@ -1364,7 +1376,7 @@
|
||||
$body = '<div class="ban"><h2>Rebuilding…</h2><p>';
|
||||
|
||||
$body .= 'Regenerating theme files…<br/>';
|
||||
rebuildTheme();
|
||||
rebuildTheme('all');
|
||||
|
||||
$body .= 'Generating Javascript file…<br/>';
|
||||
buildJavascript();
|
||||
@ -1510,6 +1522,8 @@
|
||||
// Build the board
|
||||
buildIndex();
|
||||
|
||||
rebuildTheme('boards');
|
||||
|
||||
header('Location: ?/board/' . $board['uri'], true, $config['redirect_http']);
|
||||
} else {
|
||||
|
||||
|
@ -25,15 +25,21 @@
|
||||
// Unique function name for building everything
|
||||
$theme['build_function'] = 'basic_build';
|
||||
|
||||
function basic_build($settings) {
|
||||
Basic::build($settings);
|
||||
function basic_build($action, $settings) {
|
||||
// Possible values for $action:
|
||||
// - all (rebuild everything, initialization)
|
||||
// - news (news has been updated)
|
||||
// - boards (board list changed)
|
||||
|
||||
Basic::build($action, $settings);
|
||||
}
|
||||
|
||||
// Wrap functions in a class so they don't interfere with normal Tinyboard operations
|
||||
class Basic {
|
||||
public static function build($settings) {
|
||||
public static function build($action, $settings) {
|
||||
global $config;
|
||||
|
||||
if($action == 'all' || $action == 'news')
|
||||
file_put_contents($config['dir']['home'] . $config['file_index'], Basic::homepage($settings));
|
||||
}
|
||||
|
||||
|
@ -28,17 +28,27 @@ Users never have to leave the homepage; they can do all their browsing from the
|
||||
// Unique function name for building everything
|
||||
$theme['build_function'] = 'frameset_build';
|
||||
|
||||
function frameset_build($settings) {
|
||||
Frameset::build($settings);
|
||||
function frameset_build($action, $settings) {
|
||||
// Possible values for $action:
|
||||
// - all (rebuild everything, initialization)
|
||||
// - news (news has been updated)
|
||||
// - boards (board list changed)
|
||||
|
||||
Frameset::build($action, $settings);
|
||||
}
|
||||
|
||||
// Wrap functions in a class so they don't interfere with normal Tinyboard operations
|
||||
class Frameset {
|
||||
public static function build($settings) {
|
||||
public static function build($action, $settings) {
|
||||
global $config;
|
||||
|
||||
if($action == 'all')
|
||||
file_put_contents($config['dir']['home'] . $config['file_index'], Frameset::homepage($settings));
|
||||
|
||||
if($action == 'all' || $action == 'boards')
|
||||
file_put_contents($config['dir']['home'] . 'sidebar.html', Frameset::sidebar($settings));
|
||||
|
||||
if($action == 'all' || $action == 'news')
|
||||
file_put_contents($config['dir']['home'] . 'news.html', Frameset::news($settings));
|
||||
}
|
||||
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 7.4 KiB |
Loading…
Reference in New Issue
Block a user