summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2007-10-23 00:02:53 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2007-10-23 00:02:53 +0000
commita27f4a47ba0435233ed272e2541feab4e0868b32 (patch)
treec71ebd83d8d3edbd9080560b89decfccd35a6286 /doc
parent341a6c13c45907df960ef30d74c1e4f3a4b4fe4b (diff)
* Add a calendar plugin, contributed by Manoj Srivastava.
* Reformat calendar plugin to ikiwiki conventions. * The calendar plugin made *every* page depend on every other page, which seemed a wee tiny little bit overkill. Fixed the dependency calculations (I hope.) * Removed manual ctime statting code, and just have the calendar plugin use %pagectime.
Diffstat (limited to 'doc')
-rw-r--r--doc/plugins/calendar.mdwn76
-rw-r--r--doc/todo/calendar_--_archive_browsing_via_a_calendar_frontend.mdwn4
-rw-r--r--doc/todo/plugin_data_storage.mdwn8
3 files changed, 87 insertions, 1 deletions
diff --git a/doc/plugins/calendar.mdwn b/doc/plugins/calendar.mdwn
new file mode 100644
index 000000000..99e2ab126
--- /dev/null
+++ b/doc/plugins/calendar.mdwn
@@ -0,0 +1,76 @@
+[[template id=plugin name=calendar author="[[ManojSrivastava]]"]]
+[[tag type/chrome]]
+
+This plugin displays a calendar, similar to the typical calendars shown on
+some blogs.
+
+# examples
+
+ \[[calendar ]]
+
+ \[[calendar type="month" pages="blog/* and !*/Discussion"]]
+
+ \[[calendar type="year" year="2005" pages="blog/* and !*/Discussion"]]
+
+This plugin is inspired by the calendar plugin for Blosxom, but
+derives no code from it. This plugin is essentially a fancy front end
+to archives of previous pages, usually used for blogs. It can produce
+a calendar for a given month, or a list of months for a given year.
+
+The tricky part of this is that while calendar defaults to showing the
+current day and month, ikiwiki is a wiki compiler, which only rebuilds
+pages if they have changed. So to keep the calendar up-to-date, wikis that
+include it need to be periodically rebuilt, typically by cron at midnight.
+
+The month format calendar simply links to any page posted on each
+day of the month. The year format calendar links to archive pages, with
+names like `archives/2007` (for all of 2007) and `archives/2007/01`
+(for January, 2007). For this to work, you'll need to create these archive
+pages. They typically use [[inline]] to display or list pages created in
+the given time frame.
+
+## usage
+
+* `type` - Used to specify the type of calendar wanted. Can be one of
+ "month" or "year". The default is a month view calendar.
+* `pages` - Specifies the [[PageSpec]] of pages to link to from the
+ month calendar. Defaults to "*".
+* `archivebase` - Configures the base of the archives hierarchy. The
+ default is "archives". Note that this default can also be overridden
+ for the whole wiki by setting `archivebase` in ikiwiki's setup file.
+* `year` - The year for which the calendar is requested. Defaults to the
+ current year.
+* `month` - The numeric month for which the calendar is requested, in the
+ range 1..12. Used only for the month view calendar, and defaults to the
+ current month.
+* `week_start_day` - A number, in the range 0..6, which represents the day
+ of the week that the month calendar starts with. 0 is Sunday, 1 is Monday,
+ and so on. Defaults to 0, which is Sunday.
+* `months_per_row` - In the annual calendar, number of months to place in
+ each row. Defaults to 3.
+
+## CSS
+
+The output is liberally sprinkled with classes, for fine grained CSS
+customization.
+
+* `month-calendar` - The month calendar as a whole.
+* `month-calendar-head` - The head of the month calendar (ie,"March").
+* `month-calendar-day-head` - A column head in the month calendar (ie, a
+ day-of-week abbreviation).
+* `month-calendar-day-noday`, `month-calendar-day-link`,
+ `month-calendar-day-nolink`, `month-calendar-day-future`,
+ `month-calendar-day-this-day` - The day squares on the month calendar,
+ for days that are not in the month (before or after the month itself), that
+ don't have links, that do have links, that are in the future, or are that
+ are the current day, respectively.
+* `Sunday`, `Monday`, `Tuesday`, ... - Each day square is also given a class
+ matching its (localised) day of week, this can be used to highlight
+ weekends.
+* `year-calendar` - The year calendar as a whole.
+* `year-calendar-head` - The head of the year calendar (ie, "2007").
+* `year-calendar-subhead` - For example, "Months".
+* `year-calendar-month-link`, `year-calendar-month-nolink`,
+ `year-calendar-month-future`, `year-calendar-this-month` - The month
+ squares on the year calendar, for months with stories,
+ without, in the future, and currently selected, respectively.
diff --git a/doc/todo/calendar_--_archive_browsing_via_a_calendar_frontend.mdwn b/doc/todo/calendar_--_archive_browsing_via_a_calendar_frontend.mdwn
index 6fd9fb1cf..caff54780 100644
--- a/doc/todo/calendar_--_archive_browsing_via_a_calendar_frontend.mdwn
+++ b/doc/todo/calendar_--_archive_browsing_via_a_calendar_frontend.mdwn
@@ -119,4 +119,6 @@ And that's all I've heard so far. Hoping I didn't miss another patch?
>> I think I have solved the ""Need to look at all pages that match the spec"" issue; but the nightly rebuild to handle the current day changing still remain. I use cron. It is now, however, richly documented :)
---ManojSrivastava \ No newline at end of file
+--ManojSrivastava
+
+> Finally reviewed and applied this. [[done]]! --[[Joey]]
diff --git a/doc/todo/plugin_data_storage.mdwn b/doc/todo/plugin_data_storage.mdwn
index 44888327e..7078a6ed3 100644
--- a/doc/todo/plugin_data_storage.mdwn
+++ b/doc/todo/plugin_data_storage.mdwn
@@ -58,3 +58,11 @@ If I do this, I might as well also:
* Change the link= link= stuff to just links=link+link etc.
* Change the delimiter from space to comma; commas are rare in index files,
so less ugly escaped delimiters to deal with.
+
+---
+
+The [[plugins/calendar]] plugin could use plugin data storage to record
+which pages have a calendar for the current time. Then ensure they are
+rebuilt at least once a day. Currently, it needs a cron job to rebuild
+the *whole* wiki every day; with this enhancement, the cron job would only
+rebuild the few pages that really need it.