trivial 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +1 -0
- data/Manifest +34 -1
- data/Rakefile +16 -1
- data/bin/trivialize +80 -17
- data/config/trivial.inc +3 -0
- data/content/dynamic.inc +1 -0
- data/lib/trivial.php +147 -21
- data/readme.md +77 -3
- data/styles/application.css +0 -7
- data/styles/blueprint/LICENSE +314 -0
- data/styles/blueprint/ie.css +35 -0
- data/styles/blueprint/plugins/buttons/icons/cross.png +0 -0
- data/styles/blueprint/plugins/buttons/icons/key.png +0 -0
- data/styles/blueprint/plugins/buttons/icons/tick.png +0 -0
- data/styles/blueprint/plugins/buttons/readme.txt +32 -0
- data/styles/blueprint/plugins/buttons/screen.css +97 -0
- data/styles/blueprint/plugins/fancy-type/readme.txt +14 -0
- data/styles/blueprint/plugins/fancy-type/screen.css +71 -0
- data/styles/blueprint/plugins/link-icons/icons/doc.png +0 -0
- data/styles/blueprint/plugins/link-icons/icons/email.png +0 -0
- data/styles/blueprint/plugins/link-icons/icons/external.png +0 -0
- data/styles/blueprint/plugins/link-icons/icons/feed.png +0 -0
- data/styles/blueprint/plugins/link-icons/icons/im.png +0 -0
- data/styles/blueprint/plugins/link-icons/icons/pdf.png +0 -0
- data/styles/blueprint/plugins/link-icons/icons/visited.png +0 -0
- data/styles/blueprint/plugins/link-icons/icons/xls.png +0 -0
- data/styles/blueprint/plugins/link-icons/readme.txt +18 -0
- data/styles/blueprint/plugins/link-icons/screen.css +40 -0
- data/styles/blueprint/plugins/rtl/readme.txt +10 -0
- data/styles/blueprint/plugins/rtl/screen.css +110 -0
- data/styles/blueprint/print.css +29 -0
- data/styles/blueprint/screen.css +258 -0
- data/styles/blueprint/src/forms.css +65 -0
- data/styles/blueprint/src/grid.css +280 -0
- data/styles/blueprint/src/grid.png +0 -0
- data/styles/blueprint/src/ie.css +76 -0
- data/styles/blueprint/src/print.css +85 -0
- data/styles/blueprint/src/reset.css +45 -0
- data/styles/blueprint/src/typography.css +106 -0
- data/trivial.gemspec +4 -4
- data/upgrade-notes/0.0.6.txt +12 -0
- data/views/application.inc +1 -0
- metadata +39 -4
data/CHANGELOG
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
v0.0.6. Added better asset tags, cachebusters, code cleanup, better documentation, upgrade functionality.
|
data/Manifest
CHANGED
@@ -1,10 +1,43 @@
|
|
1
|
+
CHANGELOG
|
1
2
|
Manifest
|
2
3
|
Rakefile
|
3
4
|
bin/trivialize
|
5
|
+
config/trivial.inc
|
6
|
+
content/dynamic.inc
|
4
7
|
content/index.html
|
5
8
|
dist/htaccess.dist
|
6
9
|
lib/trivial.php
|
7
10
|
readme.md
|
8
11
|
styles/application.css
|
9
|
-
|
12
|
+
styles/blueprint/LICENSE
|
13
|
+
styles/blueprint/ie.css
|
14
|
+
styles/blueprint/plugins/buttons/icons/cross.png
|
15
|
+
styles/blueprint/plugins/buttons/icons/key.png
|
16
|
+
styles/blueprint/plugins/buttons/icons/tick.png
|
17
|
+
styles/blueprint/plugins/buttons/readme.txt
|
18
|
+
styles/blueprint/plugins/buttons/screen.css
|
19
|
+
styles/blueprint/plugins/fancy-type/readme.txt
|
20
|
+
styles/blueprint/plugins/fancy-type/screen.css
|
21
|
+
styles/blueprint/plugins/link-icons/icons/doc.png
|
22
|
+
styles/blueprint/plugins/link-icons/icons/email.png
|
23
|
+
styles/blueprint/plugins/link-icons/icons/external.png
|
24
|
+
styles/blueprint/plugins/link-icons/icons/feed.png
|
25
|
+
styles/blueprint/plugins/link-icons/icons/im.png
|
26
|
+
styles/blueprint/plugins/link-icons/icons/pdf.png
|
27
|
+
styles/blueprint/plugins/link-icons/icons/visited.png
|
28
|
+
styles/blueprint/plugins/link-icons/icons/xls.png
|
29
|
+
styles/blueprint/plugins/link-icons/readme.txt
|
30
|
+
styles/blueprint/plugins/link-icons/screen.css
|
31
|
+
styles/blueprint/plugins/rtl/readme.txt
|
32
|
+
styles/blueprint/plugins/rtl/screen.css
|
33
|
+
styles/blueprint/print.css
|
34
|
+
styles/blueprint/screen.css
|
35
|
+
styles/blueprint/src/forms.css
|
36
|
+
styles/blueprint/src/grid.css
|
37
|
+
styles/blueprint/src/grid.png
|
38
|
+
styles/blueprint/src/ie.css
|
39
|
+
styles/blueprint/src/print.css
|
40
|
+
styles/blueprint/src/reset.css
|
41
|
+
styles/blueprint/src/typography.css
|
42
|
+
upgrade-notes/0.0.6.txt
|
10
43
|
views/application.inc
|
data/Rakefile
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rake'
|
3
3
|
require 'echoe'
|
4
|
+
require 'fileutils'
|
4
5
|
|
5
|
-
Echoe.new('trivial'
|
6
|
+
Echoe.new('trivial') do |p|
|
6
7
|
p.summary = "Ultra-lightweight website framework for PHP"
|
7
8
|
p.description = <<-EOT
|
8
9
|
For those who are using PHP to build their sites and want a very simple framework
|
@@ -16,3 +17,17 @@ Echoe.new('trivial', '0.0.5') do |p|
|
|
16
17
|
p.email = "john@coswelproductions.com"
|
17
18
|
p.url = "http://github.com/johnbintz/trivial"
|
18
19
|
end
|
20
|
+
|
21
|
+
namespace :blueprint do
|
22
|
+
desc "Include the latest Blueprint CSS files"
|
23
|
+
task :download do
|
24
|
+
FileUtils.rm_r 'blueprint' if File.directory? 'blueprint'
|
25
|
+
FileUtils.mkdir 'blueprint'
|
26
|
+
Dir.chdir 'blueprint'
|
27
|
+
system 'git clone git://github.com/joshuaclayton/blueprint-css.git'
|
28
|
+
FileUtils.cp_r File.join('blueprint-css', 'blueprint'), File.join('..', 'styles')
|
29
|
+
FileUtils.cp File.join('blueprint-css', 'LICENSE'), File.join('..', 'styles', 'blueprint')
|
30
|
+
Dir.chdir '..'
|
31
|
+
FileUtils.rm_r 'blueprint'
|
32
|
+
end
|
33
|
+
end
|
data/bin/trivialize
CHANGED
@@ -6,24 +6,87 @@ if !ARGV[0]
|
|
6
6
|
exit 1
|
7
7
|
end
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
class Installer
|
10
|
+
def initialize(dest_dir)
|
11
|
+
@dest_dir = dest_dir
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.go(dest_dir, &block)
|
15
|
+
installer = Installer.new(dest_dir)
|
16
|
+
installer.instance_eval &block
|
17
|
+
end
|
18
|
+
|
19
|
+
def mk_mydir
|
20
|
+
FileUtils.mkdir @dest_dir if (!File.directory? @dest_dir)
|
21
|
+
end
|
22
|
+
|
23
|
+
def mkdir(dirs)
|
24
|
+
dirs.each do |dir|
|
25
|
+
FileUtils.mkdir File.join(@dest_dir, dir) if (!File.directory? File.join(@dest_dir, dir))
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def dest_path(*dest)
|
30
|
+
File.join(@dest_dir, *dest)
|
31
|
+
end
|
32
|
+
|
33
|
+
def paths_to_a(*paths)
|
34
|
+
paths.collect do |path|
|
35
|
+
if path.kind_of? String
|
36
|
+
path = path.split('/')
|
37
|
+
end
|
38
|
+
path
|
39
|
+
end
|
40
|
+
end
|
14
41
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
else
|
25
|
-
puts "Won't overwrite existing #{File.join(*dest)}!"
|
42
|
+
def overwrite(source, dest = nil)
|
43
|
+
dest = source if (dest == nil)
|
44
|
+
source, dest = paths_to_a source, dest
|
45
|
+
source_path = File.join(File.dirname(__FILE__), '..', *source)
|
46
|
+
if File.directory? source_path
|
47
|
+
FileUtils.cp_r source_path, dest_path(*dest)
|
48
|
+
else
|
49
|
+
FileUtils.cp source_path, dest_path(*dest)
|
50
|
+
end
|
26
51
|
end
|
52
|
+
|
53
|
+
def copy(source, dest = nil)
|
54
|
+
dest = source if (dest == nil)
|
55
|
+
source, dest = paths_to_a source, dest
|
56
|
+
if !File.exists? dest_path(*dest)
|
57
|
+
overwrite(source, dest)
|
58
|
+
else
|
59
|
+
puts "Won't overwrite existing #{dest_path(*dest)}!"
|
60
|
+
end
|
61
|
+
end
|
27
62
|
end
|
28
63
|
|
29
|
-
|
64
|
+
if ARGV[0] == '--upgrade'
|
65
|
+
puts "Upgrading to latest version..."
|
66
|
+
|
67
|
+
Installer.go(Dir.pwd) do
|
68
|
+
mkdir %w{config}
|
69
|
+
|
70
|
+
overwrite 'lib/trivial.php'
|
71
|
+
copy 'config/trivial.inc'
|
72
|
+
end
|
73
|
+
|
74
|
+
puts "Done!"
|
75
|
+
else
|
76
|
+
puts "Trivializing #{ARGV[0]}"
|
77
|
+
|
78
|
+
Installer.go(ARGV[0]) do
|
79
|
+
mk_mydir
|
80
|
+
mkdir %w{content actions views scripts styles lib config}
|
81
|
+
|
82
|
+
copy 'lib/trivial.php'
|
83
|
+
copy 'config/trivial.inc'
|
84
|
+
copy 'dist/htaccess.dist', '.htaccess'
|
85
|
+
copy 'views/application.inc'
|
86
|
+
copy 'content/index.html'
|
87
|
+
copy 'styles/application.css'
|
88
|
+
overwrite 'styles/blueprint'
|
89
|
+
end
|
90
|
+
|
91
|
+
puts "Done! Make sure you can use .htaccess files in your Webserver setup."
|
92
|
+
end
|
data/config/trivial.inc
ADDED
data/content/dynamic.inc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
<?php echo "hello world!" ?>
|
data/lib/trivial.php
CHANGED
@@ -1,15 +1,41 @@
|
|
1
1
|
<?php
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
define('TRIVIAL_VERSION', '0.0.6');
|
4
|
+
|
5
|
+
// PUT SITE CONFIGURATION IN config/trivial.inc
|
5
6
|
|
6
7
|
if (!isset($_SERVER['REDIRECT_URL'])) {
|
7
8
|
header('HTTP/1.1 403 Forbidden');
|
8
9
|
exit(1);
|
9
10
|
}
|
10
11
|
|
11
|
-
|
12
|
+
$root_dir = realpath(dirname(__FILE__) . '/../');
|
13
|
+
|
14
|
+
// All of these should be set within config/trivial.inc!
|
15
|
+
|
16
|
+
// The default layout.
|
17
|
+
$layout = 'application';
|
18
|
+
|
19
|
+
// Additional scripts and stylesheets can be loaded in this way. Blueprint does not get loaded this way.
|
20
|
+
$global_head = array('scripts' => array(), 'styles' => array());
|
21
|
+
|
22
|
+
// If the environment is anything but production, errors will be rendered in the page.
|
23
|
+
$trivial_env = 'development';
|
24
|
+
|
25
|
+
if (($config = fe_check('config/trivial.inc')) !== false) {
|
26
|
+
include($config);
|
27
|
+
}
|
28
|
+
|
29
|
+
$trim = str_replace(realpath($_SERVER['DOCUMENT_ROOT']), '', realpath($root_dir));
|
12
30
|
|
31
|
+
$requested = preg_replace('#/$#', '/index.html', $_SERVER['REDIRECT_URL']);
|
32
|
+
$requested = preg_replace("#${trim}/(.*)\.[^\.]+\$#", '\1', $requested);
|
33
|
+
|
34
|
+
/**
|
35
|
+
* Check the root path for the requested file.
|
36
|
+
* @param string $path The path to look for.
|
37
|
+
* @return string The path to the file on the filesystem, or false if not found.
|
38
|
+
*/
|
13
39
|
function fe_check($path) {
|
14
40
|
global $root_dir;
|
15
41
|
if (file_exists($full_path = ($root_dir . '/' . $path))) {
|
@@ -19,6 +45,13 @@ function fe_check($path) {
|
|
19
45
|
}
|
20
46
|
}
|
21
47
|
|
48
|
+
/**
|
49
|
+
* Load a partial file.
|
50
|
+
* Partials live in the views directory and are prefixed with an underscore (ex: section/_a_partial.inc).
|
51
|
+
* @param string $name The name of the partial without the leading underscore (ex: section/a_partial).
|
52
|
+
* @param array $local A hash of variables to include into the local scope of the partial.
|
53
|
+
* @return string The partial's result.
|
54
|
+
*/
|
22
55
|
function partial($name, $local = array()) {
|
23
56
|
$name = preg_replace('#/([^/]+)$', '/_\1', $name);
|
24
57
|
if (($path = fe_check('views/' . $name . '.inc')) !== false) {
|
@@ -27,62 +60,155 @@ function partial($name, $local = array()) {
|
|
27
60
|
include($path);
|
28
61
|
return ob_get_clean();
|
29
62
|
} else {
|
30
|
-
|
63
|
+
render_error("No partial named ${name} found!");
|
31
64
|
}
|
32
65
|
}
|
33
66
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
$
|
39
|
-
|
67
|
+
/**
|
68
|
+
* Handle a rendering error.
|
69
|
+
* If the environment is 'production', the error is only logged. If it's anything else, it's printed
|
70
|
+
* on the screen. Regardless, an HTTP 500 error is returned and processing stops.
|
71
|
+
* @param string $error The error message to display.
|
72
|
+
*/
|
73
|
+
function render_error($error) {
|
74
|
+
global $trivial_env;
|
75
|
+
if ($trivial_env == 'production') {
|
76
|
+
error_log($error);
|
77
|
+
} else {
|
78
|
+
echo "<div id='trivial-error'>${error}</div>";
|
79
|
+
}
|
80
|
+
header('HTTP/1.1 500 Internal Server Error');
|
81
|
+
exit(1);
|
82
|
+
}
|
40
83
|
|
84
|
+
/**
|
85
|
+
* Render style link tags.
|
86
|
+
*/
|
41
87
|
function styles() {
|
42
|
-
return head_component(
|
88
|
+
return head_component('style', func_get_args());
|
43
89
|
}
|
44
90
|
|
91
|
+
/**
|
92
|
+
* Render script tags.
|
93
|
+
*/
|
45
94
|
function scripts() {
|
46
|
-
return head_component(
|
95
|
+
return head_component('script', func_get_args());
|
96
|
+
}
|
97
|
+
|
98
|
+
/**
|
99
|
+
* Render a style tag.
|
100
|
+
*/
|
101
|
+
function style($name, $additional = '') {
|
102
|
+
return asset($name, 'styles/%s.css', '<link rel="stylesheet" href="styles/%s.css%s" type="text/css" %s/>', true, $additional);
|
103
|
+
}
|
104
|
+
|
105
|
+
/**
|
106
|
+
* Render a script tag.
|
107
|
+
*/
|
108
|
+
function script($name) {
|
109
|
+
return asset($name, 'scripts/%s.js', '<script type="text/javascript" src="scripts/%s.js%s"></script>');
|
110
|
+
}
|
111
|
+
|
112
|
+
/**
|
113
|
+
* Render an asset tag, busting the cache if necessary.
|
114
|
+
*/
|
115
|
+
function asset($name, $search, $format, $bust_cache = true, $additional = '') {
|
116
|
+
if (($file = fe_check(sprintf($search, $name))) !== false) {
|
117
|
+
return sprintf($format, $name, $bust_cache ? cachebuster($file) : '', $additional);
|
118
|
+
}
|
119
|
+
return '';
|
120
|
+
}
|
121
|
+
|
122
|
+
/**
|
123
|
+
* Get a cachebuster string for a file.
|
124
|
+
*/
|
125
|
+
function cachebuster($file) {
|
126
|
+
if (file_exists($file)) {
|
127
|
+
return '?' . filemtime($file);
|
128
|
+
} else {
|
129
|
+
return '';
|
130
|
+
}
|
47
131
|
}
|
48
132
|
|
49
|
-
|
50
|
-
|
133
|
+
/**
|
134
|
+
* Render head compoments.
|
135
|
+
* @param string $what The type of component to render. $global_head is searched for a matching key and values for that key are merged into the list of styles.
|
136
|
+
* @param array $additional An array of additional components to display.
|
137
|
+
* @param string $search The search pattern to use for each component, run through sprintf() with the first %s being replaced with the component name.
|
138
|
+
* @param string $format The output format of the HTML tag to bring in the content.
|
139
|
+
* @return string The HTML for all found components.
|
140
|
+
*/
|
141
|
+
function head_component($what, $additional = array()) {
|
142
|
+
global $requested, $global_head;
|
51
143
|
|
52
144
|
$output = array();
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
145
|
+
|
146
|
+
$components = $additional;
|
147
|
+
|
148
|
+
if (isset($global_head[$what]) && is_array($global_head[$what])) {
|
149
|
+
$components = array_merge($components, $global_head[$what]);
|
57
150
|
}
|
151
|
+
|
152
|
+
$components = array_merge($components, array('application', $requested));
|
153
|
+
|
154
|
+
foreach ($components as $name) { $output[] = call_user_func($what, $name); }
|
58
155
|
return implode("\n", $output);
|
59
156
|
}
|
60
157
|
|
158
|
+
/**
|
159
|
+
* Get the code to embed the Blueprint CSS framework.
|
160
|
+
* You should be starting with Blueprint and working your way from there, if only for the CSS reset & IE fixes alone.
|
161
|
+
* @return string The HTML for Blueprint.
|
162
|
+
*/
|
163
|
+
function blueprint() {
|
164
|
+
$output = array();
|
165
|
+
$output[] = style('blueprint/screen', 'media="screen, projection"');
|
166
|
+
$output[] = style('blueprint/print', 'media="print"');
|
167
|
+
$output[] = '<!--[if lte IE 8]>';
|
168
|
+
$output[] = style('blueprint/ie', 'media="screen, projection"');
|
169
|
+
$output[] = '<![endif]-->';
|
170
|
+
return implode('', $output);
|
171
|
+
}
|
172
|
+
|
173
|
+
// Search for files in the content directory, starting with .inc files (which will be include()d), then .html files (which will be file_get_content()sed)
|
61
174
|
$content = null;
|
62
|
-
if (($content_file = fe_check('content/' . $requested . '.
|
63
|
-
|
175
|
+
if (($content_file = fe_check('content/' . $requested . '.inc')) !== false) {
|
176
|
+
ob_start();
|
177
|
+
include($content_file);
|
178
|
+
$content = ob_get_clean();
|
179
|
+
} else {
|
180
|
+
if (($content_file = fe_check('content/' . $requested . '.html')) !== false) {
|
181
|
+
$content = file_get_contents($content_file);
|
182
|
+
}
|
64
183
|
}
|
65
184
|
|
185
|
+
// Look for an action for the request. If it's found, execute it. Remember, $content contains the result of the above operation, if something was found.
|
66
186
|
foreach (array('application', $requested) as $action) {
|
67
187
|
if (($action_file = fe_check('actions/' . $action . '.inc')) !== false) {
|
68
188
|
include($action_file);
|
69
189
|
}
|
70
190
|
}
|
71
191
|
|
192
|
+
// Look for a view with the same name as the request. If it's found, include() it, wrapping the include() in an output buffer block.
|
72
193
|
if (($view_file = fe_check('views/' . $requested . '.inc')) !== false) {
|
73
194
|
ob_start();
|
74
195
|
include($view_file);
|
75
196
|
$content = ob_get_clean();
|
76
197
|
}
|
77
198
|
|
199
|
+
// We should have content by this point. If not, raise an error.
|
78
200
|
if (is_null($content)) {
|
79
|
-
|
201
|
+
render_error("No content generated for ${requested}! Did you create a content, action, or view file for this request?");
|
80
202
|
}
|
81
203
|
|
204
|
+
// We should have a layout, too. If not, raise an error.
|
82
205
|
if (($layout_file = fe_check('views/' . $layout . '.inc')) !== false) {
|
83
206
|
ob_start();
|
84
207
|
include($layout_file);
|
85
208
|
$content = ob_get_clean();
|
209
|
+
} else {
|
210
|
+
render_error("Layout not found: ${layout}");
|
86
211
|
}
|
87
212
|
|
213
|
+
// We're done!
|
88
214
|
echo $content;
|
data/readme.md
CHANGED
@@ -16,22 +16,96 @@ A new binary is created, `trivialize`.
|
|
16
16
|
|
17
17
|
A directory called `my-new-site` will be created with the site structure in place. An example `content/index.html` and `views/application.inc` will also be installed.
|
18
18
|
|
19
|
+
## Upgrading an existing site
|
20
|
+
|
21
|
+
Backup your existing site folder, `cd` to the site folder and type:
|
22
|
+
|
23
|
+
`trivialize --upgrade`
|
24
|
+
|
25
|
+
The following files will be overwritten:
|
26
|
+
|
27
|
+
* `lib/trivial.php`
|
28
|
+
* `styles/blueprint`
|
29
|
+
|
30
|
+
And if they don't exist, the following files will be created:
|
31
|
+
|
32
|
+
* `config/trivial.inc`
|
33
|
+
|
19
34
|
## The request process
|
20
35
|
|
21
36
|
When a request comes in to that directory for a file that doesn't exist, trivial
|
22
37
|
does the following (for the examples, the request was for `about_us/contact.html` and the default `$layout` value is `"application"`):
|
23
38
|
|
24
|
-
* The `content` folder is checked for
|
39
|
+
* The `content` folder is checked for an `.html` or `.inc` file that matches the path (`content/about_us/contact.html`).
|
40
|
+
* If a `.html` file exists, the contents of the file are pulled into the global `$content` variable.
|
41
|
+
* If a `.inc` file exists, the file is include()d and the output is placed into the global `$content` variable.
|
25
42
|
* The `actions` folder is checked for two files:
|
26
43
|
* `actions/application.inc`
|
27
44
|
* `actions/about_us/contact.inc`
|
28
|
-
Each found file is included into the program, potentially modifying `$content` or `$layout`.
|
45
|
+
Each found file is included into the program in that order, potentially modifying `$content` or `$layout`.
|
29
46
|
* The `views` folder is checked for two files:
|
30
47
|
* `views/about_us/contact.inc`
|
31
48
|
* `views/application.inc`
|
32
49
|
Each found file is included into the program, including `$content` where specified and outputting back into `$content`.
|
50
|
+
A layout *must exist* or an error will occur.
|
33
51
|
* The value of `$content` is output to the visitor.
|
34
52
|
|
35
53
|
## Styles and scripts
|
36
54
|
|
37
|
-
|
55
|
+
By default, the provided `views/application.inc` file has three functions for including stylesheets and scripts:
|
56
|
+
|
57
|
+
<head>
|
58
|
+
<?php echo blueprint() ?>
|
59
|
+
<?php echo scripts() ?>
|
60
|
+
<?php echo styles() ?>
|
61
|
+
</head>
|
62
|
+
|
63
|
+
### Blueprint
|
64
|
+
|
65
|
+
The latest [Blueprint CSS Framework](http://blueprintcss.org/) comes with Trivial. It's included into the defaut application.inc layout
|
66
|
+
with the `blueprint()` function. Blueprint's licence can be found in the `styles/blueprint` directory.
|
67
|
+
|
68
|
+
### Other Styles and Scripts
|
69
|
+
|
70
|
+
The `scripts()` and `styles()` functions, by default, only search for files named `application.ext` and `name/of/request.ext`.
|
71
|
+
For the request `contact/about_us.html`, the following JavaScript and CSS files will be searched for, in this order:
|
72
|
+
|
73
|
+
* `scripts/application.js`
|
74
|
+
* `scripts/contact/about_us.js`
|
75
|
+
* `styles/application.css`
|
76
|
+
* `styles/contact/about_us.css`
|
77
|
+
|
78
|
+
You can incude other scripts and stylesheets in several ways:
|
79
|
+
|
80
|
+
#### Globally, before application- and page-specific includes
|
81
|
+
|
82
|
+
Inside of `config/trivial.inc`, add the following variable definition:
|
83
|
+
|
84
|
+
`$global_head = array('scripts' => array(), 'styles' => array());`
|
85
|
+
|
86
|
+
In the `scripts` and `styles` arrays, add the names of the other files to include, not including the extension:
|
87
|
+
|
88
|
+
`$global_head = array('scripts' => array('jquery-1.4.2.min'), 'styles' => array('client'));`
|
89
|
+
|
90
|
+
These scripts are loaded before the ones listed above, so the new search path becomes:
|
91
|
+
|
92
|
+
* `scripts/jquery-1.4.2.min.js`
|
93
|
+
* `scripts/application.js`
|
94
|
+
* `scripts/contact/about_us.js`
|
95
|
+
* `styles/client.css`
|
96
|
+
* `styles/application.css`
|
97
|
+
* `styles/contact/about_us.css`
|
98
|
+
|
99
|
+
#### Locally, via a view, before application- and page-specific includes
|
100
|
+
|
101
|
+
In your view, modify `$global_head` as you would above.
|
102
|
+
|
103
|
+
#### Within the layout, without adding new script() or style() tags
|
104
|
+
|
105
|
+
Adding additional parameters to the `scripts()` or `styles()` tag works the same as adding items to the `$global_head`:
|
106
|
+
|
107
|
+
`<?php echo scripts('jquery-1.4.2.min') ?>`
|
108
|
+
`<?php echo styles('client') ?>`
|
109
|
+
|
110
|
+
Scripts/styles defined in the tag itself are loaded before `$global_head`.
|
111
|
+
|