summaryrefslogtreecommitdiff
path: root/templates/homepage/frameset/theme.php
blob: 3964a46930bcbd99c37e3e69958288cb32162537 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
	$theme = Array();
	
	// Theme name
	$theme['name'] = 'Frameset';
	// Description (you can use Tinyboard markup here)
	$theme['description'] = 
'Use a basic frameset layout, with a list of boards and pages on a sidebar to the left of the page.

Users never have to leave the homepage; they can do all their browsing from the one page.';
	$theme['version'] = 'v0.1';
	
	// Theme configuration	
	$theme['config'] = Array();
	$theme['config'][] = Array(
		'title' => 'Page title',
		'name' => 'title',
		'type' => 'text'
	);
	
	// Unique function name for building everything
	$config['build_function'] = 'frameset_build';
	
	function frameset_build($settings) {
		Frameset::build($settings);
	}
	
	// Wrap functions in a class so they don't interfere with normal Tinyboard operations
	class Frameset {
		public static function build($settings) {
			global $config;
			
			file_put_contents($config['dir']['home'] . $config['file_index'], Frameset::homepage($settings));
			file_put_contents($config['dir']['home'] . 'sidebar.html', Frameset::sidebar($settings));
		}
		
		// Build homepage
		public static function homepage($settings) {
			global $config;
			
			// HTML5
			return '<!DOCTYPE html><html>'
			. '<head>'
				. '<link rel="stylesheet" media="screen" href="' . $config['url_stylesheet'] . '"/>'
				. '<style type="text/css">'
					. 'iframe{border:none;margin:0;padding:0;height:99%;position:absolute}'
					. 'iframe#sidebar{left:0;top:0;width:15%}'
					. 'iframe#main{border-left:1px solid black;left:15%;top:0;width:85%}'
				. '</style>'
				. '<title>' . $settings['title'] . '</title>'
			. '</head><body>'
			// Sidebar
			. '<iframe src="sidebar.html" id="sidebar"></iframe>'
			// Main
			. '<iframe src="b" id="main"></iframe>'
			// Finish page
			. '</body></html>';
		}
		
		// Build sidebar
		public static function sidebar($settings) {
			global $config, $board;
			
			$body = '<!DOCTYPE html><html>'
			. '<head>' 
				. '<style type="text/css">'
					. ''
				. '</style>'
				. '<base target="main" />'
				. '<title>' . $settings['title'] . '</title>'
			. '</head><body><h2>Boards</h2><ul>';
			
			$boards = listBoards();
			foreach($boards as &$_board) {
				openBoard($_board['uri']);
				$body .= '<li><a href="' .
					sprintf($config['board_path'], $board['uri']) .
				'">' . $board['name'] . '</a></li>';
			}
			
			$body .= '</ul>'
			// Finish page
			. '</body></html>';
			
			return $body;
		}
	};
	
?>