3f766544ac
site-generator: fixed an error in the POD documentation and added an example. Reformatted 'GetOptions' arguments. Fixed 'parse_page_arg' which started its returned array with an empty arrayref. Fixed code using this array which skipped this unwanted extra value. Fixed 'get_ids_from_db' which turns a CSV list of shows into an array, but includes a blank element. Removed a few trailing spaces. templates/content-correspondents.tpl.html: Capitalised "License". Added 'order by h.host' to the internal query to get hosts sorted alphabetically. templates/content-episode.tpl.html: Added a call to macro 'zero_pad_left' to add leading zeroes to show number in the title. Added a call to 'FILTER html_para' when displaying comments (which are plain text). Added a test for whether the show being displayed is in the 20-show window before the current one to determine whether the short or long comment form is required. Added the code to generate the two form types depending on the earlier test. templates/content-sitemap.tpl.html: Corrected the entry for "Show Comments" which contained an invalid URL. templates/page.tpl.html: Grammar corrections in the '<head>' section. templates/queries-episode-mysql.tpl.html: Adjusted the date tests in the CTE's which compare the episode date with today's date plus one day. Why add a day when the test is whether the episode date is less than or equal to the current one? Also, it seemed that MySQL/MariaDB might need to work with the UTC date rather than the local dat implied by 'NOW()'. templates/queries-episode-sqlite.tpl.html: Similar adjustment to date tests in CTE's to the MySQL version. SQLite defaults to UTC however. templates/queries-episodes-mysql.tpl.html: See above for notes about date tests and MySQL UTC dates. Same arguments here. templates/queries-episodes-sqlite.tpl.html: Date test adjustment described above. templates/queries-ids-episode-mysql.tpl.html: Removed the date test from the query so all episode numbers are returned. Added an 'order by' since the table can (could in the past) return numbers out of numerical sequence. templates/queries-ids-episode-sqlite.tpl.html: Same change as for the MySQL version. templates/queries-index-mysql.tpl.html: There are three queries here, returned as TT² variables. The one called 'query_latest_episodes' has been adjusted to use UTC and to avoid adding a day to the current date. The query called 'query_last_5_weeks_episodes' has been similarly adjusted. templates/queries-index-sqlite.tpl.html: Changes for the same two queries, but just for the tests requiring today's date plus one day. templates/rss-comments.tpl.xml: Grammar corrections in the '<channel><description>' section. templates/rss.tpl.xml: Grammar corrections in various subsections of the '<channel>' section. templates/shared-call_for_shows.tpl.html: Removed the "FTP server" message. Slight tidying. |
||
---|---|---|
_sql/sqlite | ||
public_html | ||
templates | ||
utils | ||
GETTING_STARTED.md | ||
LICENSE | ||
README.md | ||
site-generator | ||
site.cfg |
hpr_generator
Static web page generator for the Hacker Public Radio website.
Installation
- Clone or download this repository
- With SQLite
- Create the sqlite3 database from the hpr.sql MySQL dump file available on hackerpublicradio.org. The default name for the database file is "hpr.db" and should be located in the root of the project directory. The name and location can be set in the site.cfg file.
- An "update-hpr.sh" helper script is available in the utils directory. This
script will download the hpr.sql file, convert it to the SQLite hpr.db file,
and regenerate the website using the site-generator.
cd
into the root of the project directory- Run
./utils/update-hpr.sh
- SQLite v3.8.3 or greater is recommended. CTE WITH clauses are used in some template queries. Must convert WITH clauses to sub-queries when using earlier versions of SQLite.
- With MySQL
- Create database hpr_hpr in the MySQL server from HPR dump file.
sudo mysql --host=localhost < hpr.sql
- Create a user that will be used by the site-generator.
- Suggested username: hpr-generator
CREATE USER 'hpr-generator'@'localhost' IDENTIFIED BY '<password>';
- Limit the user's privileges to EXECUTE and SELECT
GRANT SELECT ON hpr_hpr.* TO 'hpr-generator'@'localhost';
GRANT EXECUTE ON `hpr_hpr`.* TO 'hpr-generator'@'localhost';
- Create database hpr_hpr in the MySQL server from HPR dump file.
- Install the needed Perl modules using preferred method (distribution packages, CPAN, etc.)
- GetOpt
- Pod::Usage
- Config::Std
- Template
- Template::Plugin::File
- Template::Plugin::DBI
- DBI
- Tie::DBI
- DBD::SQLite or DBD:mysql
- Date::Calc
- See the Getting Started tutorial (GETTING_STARTED.md) for more details on installing the HPR generator.
Usage
Generate two specific pages:
site-generator index about
Generate the whole site:
site-generator --all
Generate pages based on the same template:
site-generator correspondent=1,3,5..10
Support
Please submit an Issue, and add the label "Help Request" for help running or installing the site-generator.
For discussing HPR site generation in general, please submit an Issue and add the label "General Discussion".
Contributing
Happy to take any contributions or suggestions.
To contribute code or documentation, please create a fork of the project and submit a pull request or send a patch. If an issue exists that is related to your patch, please assign the issue to yourself, or if it is already assigned to someone else, please coordinate with them to minimize duplicated efforts.
If you have found an error in the code or the generated HTML, please submit an Issue, and add the label "Bug Found".
To make a suggestion, please submit an Issue, and add the label "Feature Request".
Authors and acknowledgment
- Roan "Rho`n" Horning
- gordons
- Ken Fallon
- norrist