annotate bin/chronicle @ 159:0d86c243c1c0

Include release in static pages too
author Steve Kemp <steve@steve.org.uk>
date Sat, 05 Jan 2008 22:45:46 +0000
parents 6c1a70c3c3a8
children 29397985be65
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1 #!/usr/bin/perl -w
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
2
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
3 =head1 NAME
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
4
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
5 chronicle - A blog compiler.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
6
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
7 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
8
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
9 =head1 SYNOPSIS
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
10
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
11
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
12 Path Options:
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
13
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
14 --comments Specify the path to the optional comments directory.
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
15 --config Specify a configuration file to read.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
16 --input Specify the input directory to use.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
17 --output Specify the directory to write output to.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
18 --theme-dir Specify the path to the theme templates.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
19 --theme Specify the theme to use.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
20 --pattern Specify the pattern of files to work with.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
21 --url-prefix Specify the prefix to the live blog.
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
22
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
23
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
24 Pre & Post-Build Commands:
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
25
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
26 --pre-build Specify a command to execute prior to building the blog.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
27 --post-build Specify a command to execute once the blog has been built.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
28
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
29 Blog Entry Options:
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
30
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
31 --format Specify the format of your entries, HTML/textile/markdown.
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
32
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
33 Optional Features:
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
34
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
35 --force Force the copying of static files from the blog theme.
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
36 --no-archive Don't create an archive page.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
37 --no-cache Don't use the optional memcached features, even if available.
128
9f092b9be906 Updated spelling.
Steve Kemp <steve@steve.org.uk>
parents: 105
diff changeset
38 --no-calendar Don't use the optional calendar upon the index.
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
39 --no-tags Don't produce any tag pages.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
40 --lower-case Lower-case all filenames which are output.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
41
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
42
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
43 Help Options:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
44
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
45 --help Show the help information for this script.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
46 --manual Read the manual for this script.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
47 --verbose Show useful debugging information.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
48 --version Show the version number and exit.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
49
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
50 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
51
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
52
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
53 =head1 ABOUT
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
54
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
55 Chronicle is a simple tool to convert a collection of text files,
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
56 located within a single directory, into a blog consisting of static
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
57 HTML files.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
58
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
59 It supports only the bare minimum of features which are required
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
60 to be useful:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
61
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
62 * Tagging support.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
63
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
64 * RSS support.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
65
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
66 * Archive support.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
67
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
68 The obvious deficiencies are:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
69
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
70 * Lack of support for instant commenting.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
71
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
72 * Lack of pingback/trackback support.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
73
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
74 Having said that it is a robust, stable, and useful system.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
75
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
76 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
77
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
78
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
79 =head1 BLOG FORMAT
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
80
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
81 The format of the text files we process is critical to the output
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
82 pages. Each entry should look something like this:
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
83
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
84 =for example begin
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
85
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
86 Title: This is the title of the blog post
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
87 Date: 2nd March 2007
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
88 Tags: one, two, three, long tag
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
89
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
90 The text of your entry goes here.
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
91
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
92 =for example end
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
93
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
94 In this example we can see that the entry itself has been prefaced
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
95 with a small header. An entry header is contains three optional lines,
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
96 if these are not present then there are sensible defaults as described
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
97 below:
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
98
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
99 =over 8
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
100
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
101 =item Title:
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
102 Describes the title of the post. If not present the filename of the entry
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
103 is used instead.
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
104
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
105 =item Date:
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
106 The date the post was written. If not present the creation time of the
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
107 file is used instead.
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
108
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
109 =item Tags:
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
110 Any tags which should be associated with the entry, separated by commas.
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
111
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
112 =back
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
113
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
114 The text of the entry itself is assumed to be HTML, however if you
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
115 have the optional modules installed you may write it in Markdown or
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
116 Textile formats - if they are not present you will receive a message
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
117 informing you of the names of the required modules.
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
118
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
119 You may specify the format of your entries either in the configuration
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
120 file, or via the command line flag B<--format>.
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
121
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
122 =cut
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
123
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
124
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
125 =head1 CONFIGURATION
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
126
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
127 The configuration of the software is minimal, and generally performed
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
128 via the command line arguments. However it is possible to save settings
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
129 either in the file global /etc/chroniclerc or the per-user ~/.chroniclerc
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
130 file.
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
131
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
132 If you wish you may pass the name of another configuration file to
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
133 the script with the B<--config> flag. This will be read after the
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
134 previous two files, and may override any settings which are present.
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
135
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
136 The configuration file contains lines like these:
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
137
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
138 =for example begin
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
139
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
140 input = /home/me/blog
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
141
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
142 output = /var/www/blog
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
143
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
144 format = markdown
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
145
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
146 =for example end
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
147
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
148 Keys which are unknown are ignored.
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
149
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
150 =cut
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
151
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
152
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
153 =head1 OPTIONAL CACHING
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
154
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
155 To speed the rebuilding of a large blog the compiler may use a local
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
156 Memcached deaemon, if installed and available.
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
157
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
158 To install this, under a Debian GNU/Linux system please run:
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
159
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
160 =for example begin
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
161
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
162 apt-get update
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
163 apt-get install memcached libcache-memcached-perl
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
164
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
165 =for example end
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
166
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
167 You may disable this caching behaviour with --no-cache, and see the
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
168 effect with --verbose.
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
169
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
170 =cut
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
171
66
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
172 =head1 OPTIONAL CALENDAR
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
173
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
174 If the 'HTML::CalendarMonthSimple' module is available each blog will
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
175 contain a simple month-view of the current month upon the index.
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
176
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
177 To disable this invoke the program with '--no-calendar'.
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
178
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
179 =cut
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
180
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
181
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
182 =head1 OPTIONAL COMMENTING
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
183
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
184 Included with the chronicle code you should find the file
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
185 cgi-bin/comments.cgi.
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
186
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
187 This file is designed to write submitted comments to the local
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
188 filesystem of your webserver. If you install that, and edit the
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
189 path at the start of teh script you should be able to include
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
190 comments in your blog.
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
191
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
192 In short there are three things you need to do:
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
193
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
194 =over 8
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
195
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
196 =item Install the CGI script and edit the path at the start.
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
197
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
198 =item Copy the output comments to your local blog source.
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
199
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
200 =item Run this script again with --comments=./path/to/comments
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
201
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
202 =back
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
203
143
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
204 This should include the comments in the static output. More
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
205 explicit instructions are provided within the file 'COMMENTS'
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
206 included within the distribution.
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
207
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
208 =cut
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
209
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
210
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
211 =head1 AUTHOR
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
212
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
213 Steve
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
214 --
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
215 http://www.steve.org.uk/
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
216
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
217 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
218
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
219 =head1 LICENSE
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
220
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
221 Copyright (c) 2007 by Steve Kemp. All rights reserved.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
222
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
223 This module is free software;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
224 you can redistribute it and/or modify it under
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
225 the same terms as Perl itself.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
226 The LICENSE file contains the full text of the license.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
227
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
228 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
229
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
230
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
231 use strict;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
232 use warnings;
45
a9f8a82045f8 2007-10-10 20:00:57 by steve
steve
parents: 44
diff changeset
233
a9f8a82045f8 2007-10-10 20:00:57 by steve
steve
parents: 44
diff changeset
234
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
235 use Date::Parse;
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
236 use Date::Format;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
237 use File::Copy;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
238 use File::Path;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
239 use Getopt::Long;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
240 use HTML::Template;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
241 use Pod::Usage;
45
a9f8a82045f8 2007-10-10 20:00:57 by steve
steve
parents: 44
diff changeset
242 use Time::Local;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
243
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
244
23
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
245 #
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
246 # Release number
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
247 #
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
248 # NOTE: Set by 'make release'.
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
249 #
67
e1bef4e4fb5e Removed the 1.0 version
Steve Kemp <steve@steve.org.uk>
parents: 66
diff changeset
250 my $RELEASE = 'UNRELEASED';
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
251
49
0c4f7753c9d3 2007-10-10 21:31:32 by steve
steve
parents: 48
diff changeset
252 #
0c4f7753c9d3 2007-10-10 21:31:32 by steve
steve
parents: 48
diff changeset
253 # The names of the months. Posted early to allow i18n users.
0c4f7753c9d3 2007-10-10 21:31:32 by steve
steve
parents: 48
diff changeset
254 #
0c4f7753c9d3 2007-10-10 21:31:32 by steve
steve
parents: 48
diff changeset
255 my @names = qw( January February March April May June July August September October November December );
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
256
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
257 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
258 # Setup default options.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
259 #
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
260 my %CONFIG = setupDefaultOptions();
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
261
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
262
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
263 #
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
264 # Read the global and per-user configuration files, if they exist.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
265 #
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
266 readConfigurationFile( "/etc/chroniclerc" );
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
267 readConfigurationFile( $ENV{'HOME'} . "/.chroniclerc" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
268
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
269
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
270 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
271 # Parse the command line arguments.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
272 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
273 parseCommandLineArguments();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
274
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
275
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
276 #
59
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
277 # Another configuration file?
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
278 #
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
279 readConfigurationFile( $CONFIG{'config'} ) if ( defined $CONFIG{'config'} );
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
280
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
281
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
282 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
283 # Make sure we have arguments which are sane.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
284 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
285 # Specifically we want to cope with the "new" 'theme-dir', and 'theme'
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
286 # arguments.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
287 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
288 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
289 sanityCheckArguments();
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
290
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
291
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
292 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
293 # Listing themes?
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
294 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
295 if ( $CONFIG{'list-themes'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
296 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
297 listThemes( $CONFIG{'theme-dir'} );
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
298 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
299 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
300
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
301 # Should we run something before we start?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
302 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
303 if ( $CONFIG{'pre-build'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
304 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
305 $CONFIG{'verbose'} && print "Running command: $CONFIG{'pre-build'}\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
306
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
307 system($CONFIG{'pre-build'});
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
308 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
309
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
310
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
311 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
312 # Parse each of the given text files, and build up a datastructure
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
313 # we can use to create our pages.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
314 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
315 # The data-structure is a hash of arrays. The hash key is the blog
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
316 # entry's filename, and the array stored as the hash's value has
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
317 # keys such as:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
318 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
319 # tags => [ 'test', 'testing' ]
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
320 # date => '1st july 2007'
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
321 # title => 'Some title'
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
322 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
323 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
324 my %data = createDataStructure();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
325
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
326 #
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
327 # Find each unique tag used within our entries.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
328 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
329 my %all_tags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
330 %all_tags = findAllTags() unless( $CONFIG{'no-tags'} );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
331
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
332 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
333 # Find each unique month + year we've used.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
334 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
335 my %all_dates;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
336 %all_dates = findAllMonths() unless( $CONFIG{'no-archive'} );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
337
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
338
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
339 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
340 # Now create the global tag + date loops which are used for our
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
341 # sidebar.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
342 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
343 my %CLOUD;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
344 $CLOUD{'tag'} = createTagCloud( %all_tags ) unless( $CONFIG{'no-tags'} );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
345 $CLOUD{'archive'} = createDateCloud( %all_dates ) unless( $CONFIG{'no-archive'} );;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
346
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
347
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
348
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
349 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
350 # Create the output directories.
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
351 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
352 mkpath( $CONFIG{'output'}, 0, 0755 ) if ( ! -d $CONFIG{'output'} );
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
353 foreach my $tag ( keys %all_tags )
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
354 {
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
355 mkpath( "$CONFIG{'output'}/tags/$tag", 0, 0755 );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
356 }
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
357 foreach my $date ( keys %all_dates )
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
358 {
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
359 next unless ( $date =~ /^([0-9]{4})-([0-9]{2})/ );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
360 mkpath( "$CONFIG{'output'}/archive/$1/$2", 0, 0755 );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
361 }
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
362
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
363
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
364 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
365 # Output each static page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
366 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
367 $CONFIG{'verbose'} && print "Creating static pages:\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
368 foreach my $file ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
369 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
370 outputStaticPage( $file );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
371 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
372
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
373
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
374
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
375 #
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
376 # Build an output page for every tag which has ever been used.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
377 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
378 foreach my $tagName ( sort keys %all_tags )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
379 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
380 $CONFIG{'verbose'} && print "Creating tag page: $tagName\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
381
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
382 outputTagPage( $tagName );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
383 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
384
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
385
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
386
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
387 #
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
388 # Now build the archive pages.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
389 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
390 foreach my $date ( keys( %all_dates ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
391 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
392 $CONFIG{'verbose'} && print "Creating archive page: $date\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
393
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
394 outputArchivePage( $date );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
395 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
396
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
397
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
398
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
399 #
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
400 # Finally out the most recent entries for the front-page.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
401 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
402 outputIndexPage();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
403
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
404
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
405
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
406 #
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
407 # Copy any static files into place.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
408 #
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
409 copyStaticFiles();
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
410
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
411
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
412 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
413 # Post-build command?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
414 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
415 if ( $CONFIG{'post-build'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
416 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
417 $CONFIG{'verbose'} && print "Running command: $CONFIG{'post-build'}\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
418
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
419 system($CONFIG{'post-build'});
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
420 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
421
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
422
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
423 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
424 # All done.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
425 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
426 exit;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
427
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
428
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
429
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
430
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
431
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
432
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
433
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
434 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
435
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
436 Setup the default options we'd expect into our global configuration hash.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
437
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
438 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
439
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
440 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
441
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
442 sub setupDefaultOptions
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
443 {
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
444 my %CONFIG;
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
445
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
446 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
447 # Text directory.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
448 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
449 $CONFIG{'input'} = "./blog";
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
450 $CONFIG{'comments'} = '';
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
451
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
452 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
453 # Output directory.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
454 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
455 $CONFIG{'output'} = "./output";
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
456
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
457 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
458 # Theme setup
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
459 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
460 $CONFIG{'theme-dir'} = "./themes/";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
461 $CONFIG{'theme'} = "default";
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
462
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
463 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
464 # prefix for all links.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
465 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
466 $CONFIG{'url-prefix'} = "";
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
467
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
468 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
469 # Default input format
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
470 #
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
471 $CONFIG{'format'} = 'html';
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
472
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
473 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
474 # Entries per-page for the index.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
475 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
476 $CONFIG{'entry-count'} = 10;
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
477
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
478 #
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
479 # Don't overwrite files by default
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
480 #
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
481 $CONFIG{'force'} = 0;
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
482
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
483 return( %CONFIG );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
484 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
485
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
486
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
487
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
488
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
489 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
490
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
491 Parse the command line arguments this script was given.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
492
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
493 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
494
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
495 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
496
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
497 sub parseCommandLineArguments
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
498 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
499 my $HELP = 0;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
500 my $MANUAL = 0;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
501 my $VERSION = 0;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
502
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
503 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
504 # Parse options.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
505 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
506 GetOptions(
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
507 # Help options
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
508 "help", \$HELP,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
509 "manual", \$MANUAL,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
510 "verbose", \$CONFIG{'verbose'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
511 "version", \$VERSION,
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
512 "list-themes", \$CONFIG{'list-themes'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
513
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
514 # paths
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
515 "comments=s", \$CONFIG{'comments'},
59
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
516 "config=s", \$CONFIG{'config'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
517 "input=s", \$CONFIG{'input'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
518 "output=s", \$CONFIG{'output'},
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
519 "theme-dir=s", \$CONFIG{'theme-dir'},
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
520 "theme=s", \$CONFIG{'theme'},
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
521 "pattern=s", \$CONFIG{'pattern'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
522
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
523 # optional
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
524 "force", \$CONFIG{'force'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
525 "no-tags", \$CONFIG{'no-tags'},
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
526 "no-cache", \$CONFIG{'no-cache'},
75
c64a37a823d1 Document, and support, no-calendar.
Steve Kemp <steve@steve.org.uk>
parents: 67
diff changeset
527 "no-calendar", \$CONFIG{'no-calendar'},
105
7a7c3faf3171 Honour --no-comments
Steve Kemp <steve@steve.org.uk>
parents: 100
diff changeset
528 "no-comments", \$CONFIG{'no-comments'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
529 "no-archive", \$CONFIG{'no-archive'},
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
530 "lower-case", \$CONFIG{'lower-case'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
531
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
532 # input format.
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
533 "format=s", \$CONFIG{'format'},
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
534
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
535 # prefix
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
536 "url-prefix=s", \$CONFIG{'url_prefix'},
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
537
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
538 # commands
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
539 "pre-build=s", \$CONFIG{'pre-build'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
540 "post-build=s", \$CONFIG{'post-build'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
541
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
542 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
543
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
544 pod2usage(1) if $HELP;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
545 pod2usage(-verbose => 2 ) if $MANUAL;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
546
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
547 if ( $VERSION )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
548 {
23
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
549 print( "chronicle release $RELEASE\n" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
550 exit;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
551 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
552 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
553
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
554
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
555
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
556 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
557
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
558 Create our global datastructure, by reading each of the blog
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
559 files and extracting:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
560
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
561 1. The title of the entry.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
562
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
563 2. Any tags which might be present.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
564
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
565 3. The date upon which it was made.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
566
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
567 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
568
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
569 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
570
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
571 sub createDataStructure
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
572 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
573 my %results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
574
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
575 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
576 # Did the user override the default pattern?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
577 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
578 my $pattern = $CONFIG{'pattern'} || "*";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
579
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
580 foreach my $file ( sort( glob( $CONFIG{'input'} . "/" . $pattern ) ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
581 {
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
582 #
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
583 # Ignore directories.
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
584 #
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
585 next if ( -d $file );
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
586
144
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
587 #
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
588 # Read the entry and store all the data away as a
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
589 # hash element keyed upon the (unique) filename.
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
590 #
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
591 $results{$file} = readBlogEntry( $file);
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
592 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
593
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
594 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
595 # Make sure we found some entries.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
596 #
144
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
597 if ( scalar(keys(%results))< 1 )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
598 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
599 print <<EOF;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
600
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
601 There were no text files found in the input directory
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
602 $CONFIG{'input'} which matched the pattern '$pattern'.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
603
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
604 Aborting.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
605
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
606 EOF
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
607 exit;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
608 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
609
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
610 return %results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
611 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
612
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
613
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
614
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
615 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
616
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
617 Find each distinct tag which has been used within blog entries,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
618 and the number of times each one has been used.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
619
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
620 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
621
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
622 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
623
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
624 sub findAllTags
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
625 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
626 my %allTags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
627
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
628 foreach my $f ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
629 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
630 my $h = $data{$f};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
631 my $tags = $h->{'tags'} || undef;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
632 foreach my $t ( @$tags )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
633 {
144
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
634 if ( $t->{'tag'} )
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
635 {
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
636 $allTags{$t->{'tag'}}+=1;
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
637 }
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
638 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
639 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
640
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
641 return( %allTags );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
642 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
643
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
644
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
645
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
646 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
647
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
648 Create a structure for a tag cloud.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
649
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
650 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
651
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
652 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
653
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
654 sub createTagCloud
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
655 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
656 my( %unique ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
657
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
658 my $results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
659
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
660 foreach my $key ( sort keys( %unique ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
661 {
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
662 # count.
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
663 my $count = $unique{$key};
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
664
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
665 # size for the HTML.
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
666 my $size = 10 + ( $count * 5 );
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
667 $size = 40 if ( $size >= 40 );
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
668
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
669 push( @$results,
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
670 { tag => $key,
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
671 count => $count,
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
672 size => $size } );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
673 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
674 return $results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
675
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
676 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
677
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
678
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
679
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
680 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
681
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
682 Find each of the distinct Month + Year pairs for entries which
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
683 have been created.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
684
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
685 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
686
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
687 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
688
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
689 sub findAllMonths
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
690 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
691 my %allDates;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
692 foreach my $f ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
693 {
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
694 my $h = $data{$f};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
695 next if ( !$h );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
696
55
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
697 my $date = $h->{'date'};
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
698
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
699 #
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
700 # Not a date? Use the ctime of the file.
55
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
701 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
702 if ( !defined( $date ) || !length($date) )
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
703 {
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
704 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
705 # Test the file for creation time.
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
706 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
707 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
708 $atime,$mtime,$ctime,$blksize,$blocks)
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
709 = stat($f);
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
710
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
711 $date = localtime( $ctime );
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
712 }
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
713
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
714 $date = time2str("%Y-%m", str2time($date));
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
715
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
716 $allDates{$date}+=1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
717 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
718
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
719 return( %allDates );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
720 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
721
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
722
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
723
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
724 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
725
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
726 Create a data structure which can be used for our archive layout.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
727
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
728 This is a little messy too. It mostly comes because we want to
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
729 have a nested loop so that we can place our entries in a nice manner.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
730
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
731 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
732
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
733 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
734
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
735 sub createDateCloud
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
736 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
737 my( %entry_dates ) = ( @_ );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
738
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
739 my $results;
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
740 my $year;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
741 my $months;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
742
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
743 foreach my $date ( sort keys %entry_dates )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
744 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
745 next unless ( $date =~ /^([0-9]{4})-([0-9]{2})/ );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
746
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
747 if ( $year and $1 ne $year )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
748 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
749 push( @$results, { year => $year,
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
750 months => $months } );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
751 undef $months;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
752 }
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
753 $year = $1;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
754
84
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
755 push( @$months, { month => $2,
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
756 month_name => $names[$2-1],
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
757 count => $entry_dates{$date} } );
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
758
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
759 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
760
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
761 push( @$results, { year => $year,
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
762 months => $months } );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
763
78
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
764 #
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
765 # Make sure this is sorted by reverse chronilogical order.
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
766 #
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
767 my @sorted = sort { $b->{'year'} <=> $a->{'year'} } @$results;
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
768 return \@sorted;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
769 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
770
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
771
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
772
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
773 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
774
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
775 Sort by date.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
776
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
777 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
778
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
779 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
780
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
781 sub bywhen
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
782 {
37
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
783 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
784 # Parse and return the date
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
785 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
786 my ($ss1,$mm1,$hh1,$day1,$month1,$year1,$zone1) = strptime($a->{'date'});
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
787 my ($ss2,$mm2,$hh2,$day2,$month2,$year2,$zone2) = strptime($b->{'date'});
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
788
37
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
789 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
790 # Abort if we didn't work.
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
791 #
66
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
792 die "Couldn't find first year: $a->{'date'}" unless defined($year1);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
793 die "Couldn't find second year: $b->{'date'}" unless defined($year2);
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
794
37
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
795 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
796 # Convert to compare
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
797 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
798 my $c = timelocal(0,0,0,$day1,$month1,$year1 + 1900);
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
799 my $d = timelocal(0,0,0,$day2,$month2,$year2 + 1900);
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
800
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
801 return $d <=> $c;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
802 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
803
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
804
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
805
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
806
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
807 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
808
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
809 Output the index page + index RSS feed.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
810
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
811 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
812
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
813 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
814
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
815 sub outputIndexPage
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
816 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
817
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
818 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
819 # Holder for the blog entries.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
820 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
821 my $entries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
822
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
823 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
824 # Find all the entries and sort them to be most recent first.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
825 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
826 my $tmp;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
827 foreach my $file ( keys ( %data ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
828 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
829 my $blog = readBlogEntry( $file );
80
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
830
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
831 push( @$tmp, $blog ) if (keys( %$blog ) );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
832 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
833 my @tmp2 = sort bywhen @$tmp;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
834
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
835 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
836 # The number of entries to display upon the index.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
837 #
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
838 my $max = $CONFIG{'entry-count'};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
839 foreach my $f ( @tmp2 )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
840 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
841 push( @$entries, $f ) if ( $max > 0 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
842 $max -= 1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
843 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
844
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
845 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
846 # Open the index template.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
847 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
848 my $template = loadTemplate( "index.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
849 die_on_bad_params => 0 );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
850
66
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
851
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
852 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
853 # create the calendar if we can.
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
854 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
855 my $calendar = createCalendar();
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
856 if ( defined( $calendar ) )
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
857 {
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
858 my $text = $calendar->as_HTML();
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
859
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
860 $text =~ s/<\/?b>//g;
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
861 $text =~ s/<\/?p>//g;
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
862
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
863 $template->param( calendar => 1,
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
864 calendar_month => $text );
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
865 }
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
866
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
867
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
868 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
869 # The entries.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
870 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
871 $template->param( entries => $entries )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
872 if ( $entries );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
873
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
874 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
875 # The clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
876 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
877 $template->param( tagcloud => $CLOUD{'tag'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
878 if ( $CLOUD{'tag'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
879 $template->param( datecloud => $CLOUD{'archive'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
880 if ( $CLOUD{'archive'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
881
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
882 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
883 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
884 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
885 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
886 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
887 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
888 if ( $CONFIG{'blog_subtitle'} );
23
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
889 $template->param( release => $RELEASE );
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
890
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
891
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
892 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
893 # Page to use
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
894 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
895 my $index = $CONFIG{'filename'} || "index.html";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
896
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
897 outputTemplate( $template, $index );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
898
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
899 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
900 # Output the RSS feed
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
901 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
902 $template = loadTemplate( "index.xml.template",
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
903 die_on_bad_params => 0 );
152
89eef19064e8 Updated to add titles to our RSS feeds.
Steve Kemp <steve@steve.org.uk>
parents: 144
diff changeset
904 $template->param( blog_title => $CONFIG{'blog_title'} )
89eef19064e8 Updated to add titles to our RSS feeds.
Steve Kemp <steve@steve.org.uk>
parents: 144
diff changeset
905 if ( $CONFIG{'blog_title'} );
89eef19064e8 Updated to add titles to our RSS feeds.
Steve Kemp <steve@steve.org.uk>
parents: 144
diff changeset
906 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
89eef19064e8 Updated to add titles to our RSS feeds.
Steve Kemp <steve@steve.org.uk>
parents: 144
diff changeset
907 if ( $CONFIG{'blog_subtitle'} );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
908 $template->param( entries => $entries ) if ( $entries );
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
909 outputTemplate( $template, "index.rss" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
910 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
911
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
912
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
913
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
914 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
915
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
916 Write out a /tags/$foo/index.html containing each blog entry which has the
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
917 tag '$foo'.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
918
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
919 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
920
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
921 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
922
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
923 sub outputTagPage
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
924 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
925 my ( $tagName ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
926
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
927 my $dir = "tags/$tagName";
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
928
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
929 my %allTags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
930 my %tagEntries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
931 foreach my $f ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
932 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
933 my $h = $data{$f};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
934 my $tags = $h->{'tags'} || undef;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
935 foreach my $t ( @$tags )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
936 {
144
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
937 my $name = $t->{'tag'};
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
938 $allTags{$name}+=1;
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
939 my $a = $tagEntries{$name};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
940 push @$a, $f ;
144
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
941 $tagEntries{$name}= $a;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
942 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
943 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
944
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
945 my $matching = $tagEntries{$tagName};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
946
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
947 my $entries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
948
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
949 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
950 # Now read the matching entries.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
951 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
952 foreach my $f ( sort @$matching )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
953 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
954 my $blog = readBlogEntry( $f );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
955 if (keys( %$blog ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
956 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
957 $CONFIG{'verbose'} && print "\tAdded: $f\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
958 push( @$entries, $blog );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
959 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
960 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
961
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
962 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
963 # Now write the output as a HTML page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
964 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
965 my $template = loadTemplate( "tags.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
966 die_on_bad_params => 0 );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
967
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
968 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
969 # The entries.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
970 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
971 $template->param( entries => $entries ) if ( $entries );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
972 $template->param( tagname => $tagName );
158
6c1a70c3c3a8 Updated so that our templates always get a version included.
Steve Kemp <steve@steve.org.uk>
parents: 152
diff changeset
973 $template->param( release => $RELEASE );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
974
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
975 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
976 # The clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
977 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
978 $template->param( tagcloud => $CLOUD{'tag'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
979 if ( $CLOUD{'tag'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
980 $template->param( datecloud => $CLOUD{'archive'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
981 if ( $CLOUD{'archive'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
982
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
983 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
984 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
985 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
986 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
987 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
988 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
989 if ( $CONFIG{'blog_subtitle'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
990
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
991
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
992 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
993 # Page to use
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
994 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
995 my $index = $CONFIG{'filename'} || "index.html";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
996
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
997 outputTemplate( $template, "$dir/$index" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
998
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
999 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1000 # Now output the .xml file
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1001 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1002 $template = loadTemplate( "tags.xml.template", die_on_bad_params => 0 );
152
89eef19064e8 Updated to add titles to our RSS feeds.
Steve Kemp <steve@steve.org.uk>
parents: 144
diff changeset
1003 $template->param( blog_title => $CONFIG{'blog_title'} )
89eef19064e8 Updated to add titles to our RSS feeds.
Steve Kemp <steve@steve.org.uk>
parents: 144
diff changeset
1004 if ( $CONFIG{'blog_title'} );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1005 $template->param( entries => $entries ) if ( $entries );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1006 $template->param( tagname => $tagName ) if ( $tagName );
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1007 outputTemplate( $template, "$dir/$tagName.rss" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1008 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1009
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1010
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1011
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1012 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1013
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1014 Output the archive page for the given Month + Year.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1015
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1016 This function is a *mess* and iterates over the data structure much
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1017 more often than it needs to.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1018
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1019 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1020
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1021 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1022
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1023 sub outputArchivePage
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1024 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1025 my( $date ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1026
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1027 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1028 # Should we abort?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1029 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1030 if ( $CONFIG{'no-archive'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1031 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1032 $CONFIG{'verbose'} && print "Ignoring archive page, as instructed.\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1033 return;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1034 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1035
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1036
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1037 my $year = '';
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1038 my $month = '';
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1039 if ( $date =~ /^([0-9]{4})-([0-9]{2})/ )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1040 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1041 $year = $1;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1042 $month = $2;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1043 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1044
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1045 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1046 # Make the directory
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1047 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1048 my $dir = "archive/$year/$month";
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1049
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1050 my $entries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1051
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1052
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1053 my %dateEntries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1054 foreach my $f ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1055 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1056 my $h = $data{$f};
55
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1057 my $date = $h->{'date'};
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1058
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1059 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1060 # Not a date? Use the file.
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1061 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1062 if ( !defined( $date ) || !length($date) )
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1063 {
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1064 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1065 # Test the file for creation time.
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1066 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1067 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1068 $atime,$mtime,$ctime,$blksize,$blocks)
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1069 = stat($f);
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1070
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1071 $date = localtime( $ctime );
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1072 }
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1073
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1074 $date = time2str("%Y-%m", str2time($date));
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1075
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1076 push @{$dateEntries{$date}}, $f ;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1077 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1078
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1079
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1080 my $matching = $dateEntries{$date};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1081 foreach my $f ( reverse @$matching )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1082 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1083 $CONFIG{'verbose'} && print "\tAdded: $f\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1084
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1085 my $blog = readBlogEntry( $f );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1086 if (keys( %$blog ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1087 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1088 push( @$entries, $blog );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1089 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1090 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1091
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1092 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1093 # Now write the output as a HTML page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1094 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1095 my $template = loadTemplate( "month.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1096 die_on_bad_params => 0 );
158
6c1a70c3c3a8 Updated so that our templates always get a version included.
Steve Kemp <steve@steve.org.uk>
parents: 152
diff changeset
1097 $template->param( release => $RELEASE );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1098
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1099
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1100 #
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1101 # The entries
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1102 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1103 $template->param( entries => $entries ) if ( $entries );
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1104
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1105 #
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1106 # Output the month + year.
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1107 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1108 $template->param( year => $year, month => $month );
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1109 $template->param( month_name => $names[$month - 1 ] );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1110
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1111 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1112 # The clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1113 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1114 $template->param( tagcloud => $CLOUD{'tag'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1115 if ( $CLOUD{'tag'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1116 $template->param( datecloud => $CLOUD{'archive'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1117 if ( $CLOUD{'archive'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1118
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1119 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1120 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1121 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1122 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1123 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1124 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1125 if ( $CONFIG{'blog_subtitle'} );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1126
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1127 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1128 # Page to use
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1129 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1130 my $index = $CONFIG{'filename'} || "index.html";
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1131 outputTemplate( $template, "$dir/$index" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1132
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1133 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1134 # Now the RSS page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1135 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1136 $template = loadTemplate( "month.xml.template", die_on_bad_params => 0 );
152
89eef19064e8 Updated to add titles to our RSS feeds.
Steve Kemp <steve@steve.org.uk>
parents: 144
diff changeset
1137 $template->param( blog_title => $CONFIG{'blog_title'} )
89eef19064e8 Updated to add titles to our RSS feeds.
Steve Kemp <steve@steve.org.uk>
parents: 144
diff changeset
1138 if ( $CONFIG{'blog_title'} );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1139 $template->param( entries => $entries ) if ( $entries );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1140 $template->param( month => $month, year => $year );
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1141 $template->param( month_name => $names[$month - 1 ] );
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1142 outputTemplate( $template, "$dir/$month.rss" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1143 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1144
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1145
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1146
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1147
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1148 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1149
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1150 Output static page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1151
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1152 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1153
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1154 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1155
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1156 sub outputStaticPage
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1157 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1158 my ( $filename ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1159
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1160 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1161 # Load the template
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1162 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1163 my $template = loadTemplate( "entry.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1164 die_on_bad_params => 0 );
159
0d86c243c1c0 Include release in static pages too
Steve Kemp <steve@steve.org.uk>
parents: 158
diff changeset
1165 $template->param( release => $RELEASE );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1166
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1167 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1168 # Just the name of the file.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1169 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1170 my $basename = $filename;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1171 if ( $basename =~ /(.*)\/(.*)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1172 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1173 $basename=$2;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1174 }
57
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1175 if ( $basename =~ /^(.*)\.(.*)$/ )
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1176 {
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1177 $basename = $1;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1178 }
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1179
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1180 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1181 # Read the entry
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1182 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1183 my $static = readBlogEntry( $filename );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1184
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1185 #
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1186 # Get the pieces of information.
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1187 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1188 my $title = $static->{'title'} || $basename;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1189 my $tags = $static->{'tags'};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1190 my $body = $static->{'body'};
55
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1191 my $date = $static->{'date'};
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1192
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1193 if ( !defined($date) )
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1194 {
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1195 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1196 $atime,$mtime,$ctime,$blksize,$blocks)
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1197 = stat($filename);
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1198
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1199 $date = localtime( $ctime );
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1200 }
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1201
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1202 $CONFIG{'verbose'} && print "\t$filename\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1203
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1204 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1205 # Convert to suitable filename.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1206 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1207 my $file = fileToTitle($title);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1208
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1209
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1210 #
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1211 # Get comments, if present.
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1212 #
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1213 if( !$CONFIG{'no-comments'} )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1214 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1215 my $comments = getComments( $CONFIG{'comments'}, $file );
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1216
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1217 if ( defined($comments) )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1218 {
132
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1219 my $count = scalar( @$comments );
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1220 my $plural = 1;
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1221 $plural = 0 if ( $count == 1 );
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1222
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1223 $template->param( comments => $comments,
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1224 comment_count => $count,
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1225 comment_plural => $plural );
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1226
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1227 $CONFIG{'verbose'} && print "$file [$filename] has $count comments\n";
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1228 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1229
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1230 $template->param( comments_enabled => 1 );
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1231 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1232
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1233
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1234 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1235 # The entry.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1236 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1237 $template->param( title => $title );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1238 $template->param( tags => $tags ) if ( $tags );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1239 $template->param( date => $date ) if ( $date );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1240 $template->param( body => $body );
92
44401f2b885b Updated again.
Steve Kemp <steve@steve.org.uk>
parents: 85
diff changeset
1241 $template->param( link => $static->{'link'} );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1242
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1243 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1244 # Our clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1245 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1246 $template->param( tagcloud => $CLOUD{'tag'} ) if ( $CLOUD{'tag'} );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1247 $template->param( datecloud => $CLOUD{'archive'} ) if ( $CLOUD{'archive'} );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1248
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1249 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1250 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1251 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1252 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1253 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1254 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1255 if ( $CONFIG{'blog_subtitle'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1256
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1257 outputTemplate( $template, $file );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1258 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1259
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1260
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1261
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1262 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1263
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1264 Return a hash of interesting data from our blog file.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1265
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1266 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1267
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1268 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1269
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1270 sub readBlogEntry
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1271 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1272 my ( $filename ) = ( @_);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1273
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1274 my %entry;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1275
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1276 #
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1277 # Do we have the memcache module available?
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1278 #
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1279 my $cache = undef;
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1280 my $test = "use Cache::Memcached;";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1281 eval( $test );
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1282 if ( ( ! $@ ) && ( ! $CONFIG{'no-cache'} ) )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1283 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1284 # create the cache object
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1285 $cache = new Cache::Memcached {'servers' => ["localhost:11211"] };
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1286
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1287 # fetch from the cache if it is present.
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1288 my $cached = $cache->get( "file_$filename" );
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1289 if ( defined( $cached ) )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1290 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1291 $CONFIG{'verbose'} && print "memcache-get: $filename\n";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1292 return( \%$cached )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1293 }
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1294 else
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1295 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1296 $CONFIG{'verbose'} && print "memcache-fail: $filename\n";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1297 }
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1298 }
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1299
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1300
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1301 my $title = ""; # entry title.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1302 my $tags = ""; # entry tags.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1303 my $body = ""; # entry body.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1304 my $date = ""; # entry date
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1305
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1306 open( ENTRY, "<", $filename ) or die "Failed to read $filename $!";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1307 while( my $line = <ENTRY> )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1308 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1309 #
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1310 # Get the tags.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1311 #
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1312 if (( $line =~ /^tags: (.*)/i ) && !length( $tags ) )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1313 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1314 $tags = $1;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1315 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1316 elsif (( $line =~ /^title: (.*)/i ) && !length($title) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1317 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1318 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1319 # Get the title
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1320 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1321 $title = $1;
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1322
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1323 # strip leading and trailing space.
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1324 $title =~ s/^\s+// if ( length $title );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1325 $title =~ s/\s+$// if ( length $title );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1326 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1327 elsif (( $line =~ /^date: (.*)/i ) && !length($date) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1328 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1329 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1330 # Get the date.
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1331 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1332 $date = $1;
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1333
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1334 # strip leading and trailing space.
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1335 $date =~ s/^\s+// if ( length $date );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1336 $date =~ s/\s+$// if ( length $date );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1337 }
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1338 else
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1339 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1340 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1341 # Just a piece of body text.
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1342 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1343 $body .= $line;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1344 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1345 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1346 close( ENTRY );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1347
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1348 #
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1349 # Determine the input format to use.
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1350 #
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1351 my $format = lc($CONFIG{'format'});
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1352
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1353 #
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1354 # Now process accordingly.
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1355 #
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1356 if ( $format eq 'html' )
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1357 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1358 # nop
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1359 }
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1360 elsif( $format eq 'markdown' )
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1361 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1362 $body = markdown2HTML( $body );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1363 }
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1364 elsif( $format eq 'textile' )
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1365 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1366 $body = textile2HTML( $body );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1367 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1368 else
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1369 {
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1370 print "Unkown blog entry format ($CONFIG{'format'}).\n";
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1371 print "Treating as HTML.\n";
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1372 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1373
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1374 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1375 #
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1376 # If we have tags then we should use them.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1377 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1378 my $entryTags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1379
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1380 foreach my $tag ( split( /,/, $tags ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1381 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1382 # strip leading and trailing space.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1383 $tag =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1384 $tag =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1385
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1386 # skip empty tags.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1387 next if ( !length($tag) );
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1388
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1389 # tags are lowercase.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1390 $tag = lc($tag);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1391 push ( @$entryTags, { tag => $tag } );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1392 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1393
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1394 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1395 # If the date isn't set then use todays.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1396 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1397 if ( ! defined($date) ||( !length( $date ) ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1398 {
84
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1399 my @lt = localtime(time);
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1400 $date = strftime( "%d %B %Y", @lt);
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1401 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1402
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1403 #
84
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1404 # Make an entry date for the XML feed, if we have a date.
80
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1405 #
84
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1406 my $time = str2time($date);
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1407 if ( $time )
80
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1408 {
84
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1409 #
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1410 # Get the details of the file.
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1411 #
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1412 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1413 $atime,$mtime,$ctime,$blksize,$blocks)
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1414 = stat($filename);
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1415
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1416 #
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1417 # Get the modification hours.
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1418 #
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1419 my ($sec,$min,$hour) = localtime( $mtime );
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1420
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1421 #
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1422 # Pad to two digits for each of the hours, minutes, and seconds.
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1423 #
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1424 my $hms = sprintf("%02d:%02d:%02d", $hour, $min, $sec );
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1425
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1426 #
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1427 # Store the published date & time away. Collapsing multiple
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1428 # spaces
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1429 #
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1430 $entry{'pubdate'} = time2str("%a, %e %b %Y $hms GMT", $time );
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1431 $entry{'pubdate'} =~ s/ +/ /g;
80
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1432 }
84
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1433 else
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1434 {
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1435 print "Failed to parse date: '$date' to generate pubDate of entry.\n";
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1436 }
80
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1437
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1438 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1439 # Store the entry.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1440 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1441 $entry{'title'} = $title;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1442 $entry{'body'} = $body if ( $body );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1443 $entry{'date'} = $date;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1444 $entry{'tags'} = $entryTags if ( $entryTags );
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1445
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1446
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1447 #
57
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1448 # No title?
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1449 #
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1450 if ( !defined($entry{'title'}) ||
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1451 !length($entry{'title'}) )
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1452 {
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1453 my $basename = $filename;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1454 if ( $basename =~ /(.*)\/(.*)/ )
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1455 {
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1456 $basename=$2;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1457 }
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1458 if ( $basename =~ /^(.*)\.(.*)$/ )
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1459 {
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1460 $basename = $1;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1461 }
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1462
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1463 $entry{'title'} = $basename;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1464 }
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1465
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1466 #
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1467 # Get the link - after ensuring we have a title.
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1468 #
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1469 my $link = fileToTitle( $entry{'title'} );
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1470 $entry{'link'} = $link;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1471
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1472 #
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1473 # Count comments.
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1474 #
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1475 $entry{'comment_count' } = countComments( $CONFIG{'comments'}, $entry{'link'} );
132
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1476 if ( defined $entry{'comment_count'} &&
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1477 $entry{'comment_count'} != 1 )
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1478 {
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1479 $entry{'comment_plural'} = 1;
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1480 }
57
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1481
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1482 #
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1483 # Store the read file in the cache if we're using it.
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1484 #
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1485 if ( defined( $cache ) )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1486 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1487 $CONFIG{'verbose'} && print "memcache-set: $filename\n";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1488 $cache->set( "file_$filename", \%entry );
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1489 }
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1490 return \%entry;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1491 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1492
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1493
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1494
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1495 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1496
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1497 Create a filename for an URL which does not contain unsafe
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1498 characters.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1499
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1500 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1501
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1502 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1503
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1504 sub fileToTitle
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1505 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1506 my( $file ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1507
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1508 if ( $file =~ /(.*)\.(.*)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1509 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1510 $file = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1511 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1512 $file =~ s/ /_/g;
78
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
1513 $file =~ s/'/_/g;
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
1514 $file =~ s/!/_/g;
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
1515 $file =~ s/\?/_/g;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1516 $file =~ s/\///g;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1517 $file =~ s/\\//g;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1518
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
1519 my $suffix = $CONFIG{'suffix'} || ".html";
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
1520 $file .= $suffix;
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1521
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1522 #
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1523 # Lower case?
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1524 #
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1525 $file = lc($file) if ( $CONFIG{'lower-case'} );
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1526
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1527 return( $file );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1528
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1529 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1530
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1531
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1532
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1533 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1534
144
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1535 Look for comments, for the given entry. Return any found in a format
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1536 suitable for the insertion into the output templates.
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1537
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1538 =end doc
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1539
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1540 =cut
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1541
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1542 sub getComments
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1543 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1544 my( $dir, $title ) = (@_);
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1545
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1546 my $results;
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1547
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1548 if ( $title =~ /^(.*)\.([^.]+)$/ )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1549 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1550 $title = $1;
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1551 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1552
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1553 foreach my $file ( sort( glob( $dir . "/" . $title . "*" ) ) )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1554 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1555 my $date = "";
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1556 my $name = "";
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1557 my $body = "";
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1558 my $mail = "";
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1559
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1560 if ( $file =~ /^(.*)\.([^.]+)$/ )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1561 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1562 $date = $2;
100
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1563
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1564 if ( $date =~ /(.*)-([0-9:]+)/ )
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1565 {
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1566 my $d = $1;
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1567 my $t = $2;
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1568
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1569 $d =~ s/-/ /g;
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1570 $date = "Submitted at $t on $d";
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1571 }
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1572 }
100
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1573
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1574 open( COMMENT, "<", $file )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1575 or next;
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1576
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1577 foreach my $line ( <COMMENT> )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1578 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1579 next if ( !defined( $line ) );
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1580
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1581 chomp( $line );
97
69570137cb66 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 96
diff changeset
1582
69570137cb66 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 96
diff changeset
1583 next if ($line =~ /^IP-Address:/ );
69570137cb66 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 96
diff changeset
1584 next if ($line =~ /^User-Agent:/ );
69570137cb66 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 96
diff changeset
1585
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1586 if ( !length( $name ) && $line =~ /^Name: (.*)/i )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1587 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1588 $name = $1;
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1589 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1590 elsif ( !length( $mail ) && $line =~ /^Mail: (.*)/i )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1591 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1592 $mail = $1;
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1593 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1594 else
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1595 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1596 $body .= $line . "\n";
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1597 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1598 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1599 close( COMMENT );
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1600
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1601 if ( length($name) &&
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1602 length($mail) &&
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1603 length($body) )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1604 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1605 push( @$results,
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1606 { name => $name,
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1607 mail => $mail,
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1608 body => $body,
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1609 date => $date } );
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1610
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1611 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1612 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1613 return( $results );
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1614 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1615
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1616
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1617
144
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1618 =begin doc
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1619
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1620 Count the number of comments associated with a given post.
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1621
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1622 =end doc
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1623
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1624 =cut
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1625
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1626 sub countComments
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1627 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1628 my( $dir, $title ) = (@_);
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1629
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1630 return( 0 ) if ( $CONFIG{'no-comments'} );
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1631
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1632 if ( $title =~ /^(.*)\.([^.]+)$/ )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1633 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1634 $title = $1;
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1635 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1636
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1637 my $count = 0;
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1638 foreach my $f ( sort glob( $dir . "/" . $title . "*" ) )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1639 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1640 $count += 1;
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1641 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1642
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1643 return( $count );
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1644 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1645
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1646
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1647
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1648 =begin doc
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1649
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1650 Load a template file.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1651
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1652 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1653
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1654 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1655
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1656 sub loadTemplate
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1657 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1658 my( $file, %params ) = (@_);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1659
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1660 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1661 # Get the directory.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1662 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1663 my $dir = $CONFIG{'theme-dir'};
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1664
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1665 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1666 # XML files go in theme-dir/xml/
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1667 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1668 if ( $file =~ /\.xml\./i )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1669 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1670 $dir .= "/xml/";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1671 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1672 else
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1673 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1674 $dir .= "/" . $CONFIG{'theme'} . "/";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1675 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1676
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1677 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1678 # Make sure the file exists.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1679 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1680 if ( ! -e $dir . $file )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1681 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1682 print <<EOF;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1683
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1684 The template file $file was not found in the theme directory.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1685
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1686 Theme : $CONFIG{'theme'}
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1687 Theme Directory: $CONFIG{'theme-dir'}
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1688
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1689 We expected to find $dir$file;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1690
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1691 Aborting.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1692 EOF
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1693 exit;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1694 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1695
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1696 my $t = HTML::Template->new( filename => $file,
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1697 path => $dir,
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1698 loop_context_vars => 1,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1699 global_vars => 1,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1700 %params );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1701
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1702 return( $t );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1703 }
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1704
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1705
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1706
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1707 =begin doc
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1708
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1709 Set URL for top directory and output a template.
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1710
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1711 =end doc
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1712
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1713 =cut
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1714
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1715 sub outputTemplate
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1716 {
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1717 my( $template, $path ) = ( @_ );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1718
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1719 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1720 # Select relative/absolute URL prefix.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1721 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1722 my $top;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1723 if ( $CONFIG{'url_prefix'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1724 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1725 $top = $CONFIG{'url_prefix'};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1726 }
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1727 else
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1728 {
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1729 $top = $path;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1730 $top =~ s'[^/]+/'../'g;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1731 $top =~ s'[^/]*$'';
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1732 }
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1733 $template->param( top => $top );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1734
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1735 open( OUTPUT, ">", "$CONFIG{'output'}/$path" );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1736 print OUTPUT $template->output();
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1737 close( OUTPUT );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1738 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1739
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1740
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1741
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1742 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1743
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1744 Read the specified configuration file if it exists.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1745
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1746 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1747
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1748 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1749
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1750 sub readConfigurationFile
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1751 {
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1752 my( $file ) = ( @_ );
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1753
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1754 #
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1755 # If it doesn't exist ignore it.
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1756 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1757 return if ( ! -e $file );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1758
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1759
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1760 my $line = "";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1761
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1762 open( FILE, "<", $file ) or die "Cannot read file '$file' - $!";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1763 while (defined($line = <FILE>) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1764 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1765 chomp $line;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1766 if ($line =~ s/\\$//)
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1767 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1768 $line .= <FILE>;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1769 redo unless eof(FILE);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1770 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1771
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1772 # Skip lines beginning with comments
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1773 next if ( $line =~ /^([ \t]*)\#/ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1774
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1775 # Skip blank lines
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1776 next if ( length( $line ) < 1 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1777
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1778 # Strip trailing comments.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1779 if ( $line =~ /(.*)\#(.*)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1780 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1781 $line = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1782 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1783
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1784 # Find variable settings
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1785 if ( $line =~ /([^=]+)=([^\n]+)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1786 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1787 my $key = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1788 my $val = $2;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1789
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1790 # Strip leading and trailing whitespace.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1791 $key =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1792 $key =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1793 $val =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1794 $val =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1795
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1796 # command expansion?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1797 if ( $val =~ /(.*)`([^`]+)`(.*)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1798 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1799 # store
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1800 my $pre = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1801 my $cmd = $2;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1802 my $post = $3;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1803
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1804 # get output
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1805 my $output = `$cmd`;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1806 chomp( $output );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1807
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1808 # build up replacement.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1809 $val = $pre . $output . $post;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1810 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1811
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1812 # Store value.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1813 $CONFIG{ $key } = $val;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1814 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1815 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1816
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1817 close( FILE );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1818 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1819
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1820
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1821
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1822 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1823
143
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1824 Sanity check our arguments, and setup to make sure there is nothing
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1825 obviously broken.
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1826
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1827 =end doc
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1828
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1829 =cut
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1830
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1831 sub sanityCheckArguments
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1832 {
143
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1833 #
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1834 # Make sure we have an input directory.
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1835 #
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1836 if ( ! -d $CONFIG{'input'} )
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1837 {
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1838 print <<EOF;
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1839
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1840 The blog input directory $CONFIG{'input'} does not exist.
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1841
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1842 Aborting.
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1843 EOF
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1844
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1845 exit;
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1846 }
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1847
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1848 if ( !$CONFIG{'theme-dir'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1849 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1850 print <<EOF;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1851
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1852 Error - You don't have a theme directory setup.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1853
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1854 Please specify --theme-dir=/some/path, or add this to your configuration
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1855 file:
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1856
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1857 theme-dir = /path/to/use/
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1858 EOF
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1859
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1860 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1861 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1862
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1863 if ( ! -d $CONFIG{'theme-dir'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1864 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1865 print "The theme directory you specified doesn't exist:\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1866 print "\t" . $CONFIG{'theme-dir'} . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1867 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1868 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1869
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1870 if ( !$CONFIG{'theme'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1871 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1872 print <<EOF;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1873
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1874 You've not specified a theme.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1875
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1876 Please specify --theme=xx
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1877
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1878 Or add this to your configuration file:
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1879
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1880 theme = xx
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1881
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1882
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1883 [You may list themes with --list-themes]
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1884
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1885 EOF
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1886
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1887 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1888 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1889
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1890
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1891 if ( ! -d $CONFIG{'theme-dir'} . "/" . $CONFIG{'theme'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1892 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1893 print "The theme directory you specified doesn't exist in the theme directory:\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1894 print "\tTheme :" . $CONFIG{'theme'} . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1895 print "\tTheme dir:" . $CONFIG{'theme-dir'} . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1896 print "\tExpected :" . $CONFIG{'theme-dir'} . "/" . $CONFIG{'theme'} . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1897 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1898 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1899
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1900 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1901
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1902
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1903
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1904
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1905 =begin doc
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1906
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1907 Copy any static files from the theme directory into the "live" location
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1908 in the output.
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1909
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1910 This only works for a top-level target directory.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1911
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
1912 Unless --force is specified we skip copying files which already exist.
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
1913
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1914 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1915
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1916 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1917
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1918 sub copyStaticFiles
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1919 {
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1920 #
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1921 # Soure and destination for the copy
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1922 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1923 my $input = $CONFIG{'theme-dir'} . "/" . $CONFIG{'theme'};
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1924 my $output = $CONFIG{'output'};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1925
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1926 foreach my $pattern ( qw! *.css *.jpg *.gif *.png *.js *.ico ! )
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1927 {
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1928 foreach my $file ( glob( $input . "/" . $pattern ) )
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1929 {
13
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1930 #
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1931 # Get the name of the file.
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1932 #
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1933 if ( $file =~ /(.*)\/(.*)/ )
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1934 {
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1935 $file = $2;
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1936 }
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
1937 if ( $CONFIG{'force'} || ( ! -e "$output/$file" ) )
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1938 {
13
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1939 $CONFIG{'verbose'} && print "Copying static file: $file\n";
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1940 copy( "$input/$file", "$output/$file" );
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1941 }
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1942 }
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1943 }
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1944 }
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1945
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1946
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1947
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1948 =begin doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1949
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1950 Convert from markdown to HTML.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1951
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1952 =end doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1953
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1954 =cut
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1955
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1956 sub markdown2HTML
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1957 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1958 my( $text ) = (@_);
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1959
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1960 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1961 # Make sure we have the module installed. Use eval to
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1962 # avoid making this mandatory.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1963 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1964 my $test = "use Text::Markdown;";
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1965
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1966 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1967 # Test loading the module.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1968 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1969 eval( $test );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1970 if ( $@ )
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1971 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1972 print <<EOF;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1973
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1974 You have chosen to format your input text via Markdown, but the
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1975 Perl module Text::Markdown is not installed.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1976
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1977 Aborting.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1978 EOF
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1979 exit;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1980 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1981
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1982 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1983 # Convert.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1984 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1985 $text = Text::Markdown::Markdown( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1986 return( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1987 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1988
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1989
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1990
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1991 =begin doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1992
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1993 Convert from textile to HTML.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1994
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1995 =end doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1996
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1997 =cut
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1998
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1999 sub textile2HTML
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2000 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2001 my( $text ) = (@_);
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2002
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2003 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2004 # Make sure we have the module installed. Use eval to
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2005 # avoid making this mandatory.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2006 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2007 my $test = "use Text::Textile;";
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2008
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2009 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2010 # Test loading the module.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2011 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2012 eval( $test );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2013 if ( $@ )
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2014 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2015 print <<EOF;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2016
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2017 You have chosen to format your input text via Textile, but the
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2018 Perl module Text::Textile is not installed.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2019
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2020 Aborting.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2021 EOF
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2022 exit;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2023 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2024
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2025 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2026 # Convert.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2027 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2028 $text = Text::Textile::textile( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2029 return( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2030 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2031
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2032
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2033
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2034
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2035 sub listThemes
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2036 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2037 my( $dir ) = ( @_ );
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2038
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2039 $CONFIG{'verbose'} && print "Listhing themes beneath : $dir\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2040
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2041 foreach my $name ( sort( glob( $dir . "/*" ) ) )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2042 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2043 next unless( -d $name );
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2044
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2045 next if ( $name =~ /\/xml$/ );
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2046
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2047 if ( $name =~ /^(.*)\/([^\/\\]*)$/ )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2048 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2049 print $2 . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2050 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2051 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2052 }
66
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2053
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2054
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2055
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2056 =begin doc
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2057
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2058 Create and configure a calendar for the index, if and only iff the
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2059 HTML::CalendarMonthSimple module is installed.
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2060
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2061 =end doc
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2062
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2063 =cut
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2064
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2065 sub createCalendar
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2066 {
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2067 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2068 # Attempt to load the module.
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2069 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2070 my $test = "use HTML::CalendarMonthSimple;";
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2071 eval( $test );
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2072
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2073 #
128
9f092b9be906 Updated spelling.
Steve Kemp <steve@steve.org.uk>
parents: 105
diff changeset
2074 # If there was an error, or the calendar is disabled then
66
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2075 # return undef.
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2076 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2077 if ( ( $@ ) || ( $CONFIG{'no-calendar'} ) )
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2078 {
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2079 return undef;
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2080 }
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2081
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2082 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2083 # Continue
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2084 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2085 my $cal = new HTML::CalendarMonthSimple();
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2086
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2087 # configuration of the calendar
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2088 $cal->border(0);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2089 $cal->weekstartsonmonday(1);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2090 $cal->showweekdayheaders(1);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2091 $cal->sunday('Sun');
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2092 $cal->saturday('Sat');
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2093 $cal->weekdays('Mo','Tue','We','Thu','Fr');
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2094
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2095 # get 4th element from localtime aka month in form of (0..11)
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2096 my $curmonth = (localtime)[4] + 1;
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2097
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2098 foreach my $f (%data)
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2099 {
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2100 my $h = $data{$f};
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2101 next if ( !$h );
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2102 my $entrydate = $h->{'date'};
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2103
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2104 if ( !$entrydate )
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2105 {
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2106 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2107 $atime,$mtime,$ctime,$blksize,$blocks)
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2108 = stat($f);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2109
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2110 $entrydate = localtime( $ctime );
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2111 }
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2112
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2113 my $date = time2str("%Y-%m-%d", str2time($entrydate));
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2114 my ($year,$month,$day) = split(/-/,$date);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2115
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2116
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2117 if ($month eq $curmonth)
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2118 {
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2119 $cal->setdatehref($day,fileToTitle($data{$f}->{'title'}));
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2120 }
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2121 }
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2122 return ($cal);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2123 }