Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
HTML::CalendarMonthSimUser3Contributed Perl DocumeHTML::CalendarMonthSimple(3)

       HTML::CalendarMonthSimple - Perl	Module for Generating HTML Calendars

	  use HTML::CalendarMonthSimple;
	  $cal = new HTML::CalendarMonthSimple('year'=>2001,'month'=>2);
	  $cal->header('Text at	the top	of the Grid');
	  $cal->setcontent(14,"Valentine's Day");
	  $cal->setdatehref(14,	'http://localhost/');
	  $cal->addcontent(14,"<p>Don't	forget to buy flowers.");
	  $cal->addcontent(13,"Guess what's tomorrow?");
	  print	$cal->as_HTML;

       Note: This package is no	longer being maintained	by Gregor Mosheh
       <>.  It is recommended that new development be
       built against HTML::CalendarMonth.

       HTML::CalendarMonthSimple is a Perl module for generating,
       manipulating, and printing a HTML calendar grid for a specified month.
       It is intended as a faster and easier-to-use alternative	to

       This module requires the	Date::Calc module, which is available from
       CPAN if you don't already have it.

       Naturally, new()	returns	a newly	constructed calendar object.

       The optional constructor	arguments 'year' and 'month' can specify which
       month's calendar	will be	used. If either	is omitted, the	current	value
       (e.g. "today") is used. An important note is that the month and the
       year are	NOT the	standard C or Perl -- use a month in the range 1-12
       and a real year,	e.g. 2001.

       The arguments 'today_year', 'today_month', and 'today_date' may also be
       specified, to specify what "today" is. If not specified,	the system
       clock will be used. This	is particularly	useful when the	todaycolor()
       et al methods are used, and/or if you're	dealing	with multiple
       timezones. Note that these arguments change what	"today"	is, which
       means that if you specify a today_year and a today_month	then you are
       effectively specifying a	'year' and 'month' argument as well, though
       you can also specify a year and month argument and override the "today"

	  # Examples:
	  # Create a calendar for this month.
	  $cal = new HTML::CalendarMonthSimple();
	  # A calendar for a specific month/year
	  $cal = new HTML::CalendarMonthSimple('month'=>2,'year'=>2000);
	  # Pretend that today is June 10, 2000	and display the	"current" calendar
	  $cal = new HTML::CalendarMonthSimple('today_year'=>2000,'today_month'=>6,'today_date'=>10);

       These methods simply return the year/month/date of the calendar,	as
       specified in the	constructor.

       monthname() returns the text name of the	month, e.g. "December".

   highlight (@DATE)
       Highlights the particular dates given.


       These methods are used to control the content of	date cells within the
       calendar	grid. The DATE argument	may be a numeric date or it may	be a
       string describing a certain occurrence of a weekday, e.g. "3MONDAY" to
       represent "the third Monday of the month	being worked with", or it may
       be the plural of	a weekday name,	e.g. "wednesdays" to represent all
       occurrences of the given	weekday. The weekdays are case-insensitive.

       Since plural weekdays (e.g. 'wednesdays') is not	a single date,
       getcontent() will return	the content only for the first occurrence of
       that day	within a month.

	  # Examples:
	  # The	cell for the 15th of the month will now	say something.
	  $cal->setcontent(15,"An Important Event!");
	  # Later down the program, we want the	content	to be boldfaced.
	  $cal->setcontent(15,"<b>" . $cal->getcontent(15) . "</b>");

	  # addcontent() does not clobber existing content.
	  # Also, if you setcontent() to '', you've deleted the	content.
	  $cal->addcontent(16,"<p>Hello	World</p>");
	  $cal->addcontent(16,"<p>Hello	Again</p>");
	  print	$cal->getcontent(16); #	Prints 2 sentences

	  # Padded and decimal numbers may be used, as well:
	  $cal->setcontent(3.14159,'Third of the month');
	  $cal->addcontent('00003.0000','Still the third');
	  $cal->getcontent('3'); # Gets	the 2 sentences

	  # The	second Sunday of May is	some holiday or	another...
	  $cal->addcontent('2sunday','Some Special Day') if ($cal->month() == 5);

	  # Every Wednesday is special...
	  $cal->addcontent('wednesdays','Every Wednesday!');

	  # either of these will return	the content for	the 1st	Friday of the month
	  $cal->getcontent('Fridays'); # you really should use '1friday' for the first Friday

       Note: A change in 1.21 is that all content is now stored	in a single
       set of date-indexed buckets. Previously,	the content for	weekdays,
       plural weekdays,	and numeric dates were stored separately and could be
       fetched and set independently. This led to buggy	behavior, so now a
       single storage set is used.

	  # Example:
	  # if the 9th of the month is the second Wednesday...
	  $cal->addcontent('2wednesday','second	wednesday');
	  $cal->addcontent('wednesdays','every wednesday');
	  print	$cal->getcontent(9);

       In version 1.20 and previous, this would	print 'ninth' but in 1.21 and
       later, this will	print all three	items (since the 9th is	not only the
       9th but also a Wednesday	and the	second Wednesday). This	could have
       implications if you use setcontent() on a set of	days, since other
       content may be overwritten:

	  # Example:
	  # the	second setcontent() effectively	overwrites the first one
	  $cal->setcontent('2wednesday','second	wednesday');
	  $cal->setcontent('wednesdays','every wednesday');
	  print	$cal->getcontent(9); # returns 'every wednesday' because that was the last assignment!

       This method returns a string containing the HTML	table for the month.

	  # Example:
	  print	$cal->as_HTML();

       It's okay to continue modifying the calendar after calling as_HTML().
       My guess	is that	you'd want to call as_HTML() again to print the
       further-modified	calendar, but that's your business...

       By default, calendars are displayed with	Sunday as the first day	of the
       week (American style). Most of the world	prefers	for calendars to start
       the week	on Monday. This	method selects which type is used: 1 specifies
       that the	week starts on Monday, 0 specifies that	the week starts	on
       Sunday (the default). If	no value is given at all, the current value (1
       or 0) is	returned.

	  # Example:
	  $cal->weekstartsonmonday(1); # switch	over to	weeks starting on Monday
	  $cal->weekstartsonmonday(0); # switch	back to	the default, where weeks start on Sunday

	  # Example:
	  print	"The week starts on " .	($cal->weekstartsonmonday() ? 'Sunday' : 'Monday') . "\n";

       This function returns the number	of days	on the current calendar.

	 foreach my $day (1 .. $cal->Days_in_Month) {
	   $cal->setdatehref($day, &make_url($cal->year, $cal->month, $day));

       These allow the date-number in a	calendar cell to become	a hyperlink to
       the specified URL. The DATE may be either a numeric date	or any of the
       weekday formats described in setcontent(), et al. If plural weekdays
       (e.g. 'wednesdays') are used with getdatehref() the URL of the first
       occurrence of that weekday in the month will be returned	(since
       'wednesdays' is not a single date).

	  # Example:
	  # The	date number in the cell	for the	15th of	the month will be a link
	  # then we change our mind and	delete the link	by assigning a null string

	  # Example:
	  # the	second Wednesday of the	month goes to some website

	  # Example:
	  # every Wednesday goes to a website
	  # note that this will	effectively undo the '2wednesday' assignment we	just did!
	  # if we wanted the second Wednesday to go to that special URL, we should've done that	one after this!

       contentfontsize() sets the font size for	the contents of	the cell,
       overriding the browser's	default. Can be	expressed as an	absolute (1 ..
       6) or relative (-3 .. +3) size.

       This specifies the value	of the border attribute	to the <TABLE>
       declaration for the calendar. As	such, this controls the	thickness of
       the border around the calendar table. The default value is 5.

       If a value is not specified, the	current	value is returned. If a	value
       is specified, the border	value is changed and the new value is

       This sets the value of the width	attribute to the <TABLE> declaration
       for the calendar. As such, this controls	the horizintal width of	the

       The width value can be either an	integer	(e.g. 600) or a	percentage
       string (e.g. "80%"). Most web browsers take an integer to be the
       table's width in	pixels and a percentage	to be the table	width relative
       to the screen's width. The default width	is "100%".

       If a value is not specified, the	current	value is returned. If a	value
       is specified, the border	value is changed and the new value is

	  # Examples:
	  $cal->width(600);    # absolute pixel	width
	  $cal->width("100%"); # percentage of screen size

   showdatenumbers([1 or 0])
       If showdatenumbers() is set to 1, then the as_HTML() method will	put
       date labels in each cell	(e.g. a	1 on the 1st, a	2 on the 2nd, etc.) If
       set to 0, then the date labels will not be printed. The default is 1.

       If no value is specified, the current value is returned.

       The date	numbers	are shown in boldface, normal size font. If you	want
       to change this, consider	setting	showdatenumbers() to 0 and using
       setcontent()/addcontent() instead.

   showweekdayheaders([1 or 0])
   weekdayheadersbig([1	or 0])
       If showweekdayheaders() is set to 1 (the	default) then calendars
       rendered	via as_HTML() will display the names of	the days of the	week.
       If set to 0, the	days' names will not be	displayed.

       If weekdayheadersbig() is set to	1 (the default)	then the weekday
       headers will be in <th> cells. The effect in most web browsers is that
       they will be boldfaced and centered. If set to 0, the weekday headers
       will be in <td> cells and in normal text.

       For both	functions, if no value is specified, the current value is

       cellalignment() sets the	value of the align attribute to	the <TD> tag
       for each	day's cell. This controls how text will	be horizontally
       centered/aligned	within the cells. vcellalignment() does	the same for
       vertical	alignment. By default, content is aligned horizontally "left"
       and vertically "top"

       Any value can be	used, if you think the web browser will	find it
       interesting. Some useful	alignments are:	left, right, center, top, and

       By default, the current month and year are displayed at the top of the
       calendar	grid. This is called the "header".

       The header() method allows you to set the header	to whatever you	like.
       If no new header	is specified, the current header is returned.

       If the header is	set to an empty	string,	then no	header will be printed
       at all. (No, you	won't be stuck with a big empty	cell!)

	  # Example:
	  # Set	the month/year header to something snazzy.
	  my($y,$m) = (	$cal->year() , $cal->monthname() );
	  $cal->header("<center><font size=+2 color=red>$m $y</font></center>\n\n");

       These define the	colors of the cells. If	a string (which	should be
       either a	HTML color-code	like '#000000' or a color-word like 'yellow')
       is supplied as an argument, then	the color is set to that specified.
       Otherwise, the current value is returned. To un-set a value, try
       assigning the null string as a value.

       The bgcolor defines the color of	all cells. The weekdaycolor overrides
       the bgcolor for weekdays	(Monday	through	Friday), the weekendcolor
       overrides the bgcolor for weekend days (Saturday	and Sunday), and the
       todaycolor overrides the	bgcolor	for today's date. (Which may not mean
       a lot if	you're looking at a calendar other than	the current month.)

       The weekdayheadercolor overrides	the bgcolor for	the weekday headers
       that appear at the top of the calendar if showweekdayheaders() is true,
       and weekendheadercolor does the same thing for the weekend headers. The
       headercolor overrides the bgcolor for the month/year header at the top
       of the calendar.	The headercontentcolor(), weekdayheadercontentcolor(),
       and weekendheadercontentcolor() methods affect the color	of the
       corresponding headers' contents and default to the contentcolor().

       The colors of the cell borders may be set: bordercolor determines the
       color of	the calendar grid's outside border, and	is the default color
       of the inner border for individual cells. The inner bordercolor may be
       overridden for the various types	of cells via weekdaybordercolor,
       weekendbordercolor, and todaybordercolor.

       Finally,	the color of the cells'	contents may be	set with contentcolor,
       weekdaycontentcolor, weekendcontentcolor, and todaycontentcolor.	The
       contentcolor is the default color of cell content, and the other
       methods override	this for the appropriate days' cells.

	  # Example:
	  $cal->bgcolor('white');		   # Set the default cell bgcolor
	  $cal->bordercolor('green');		   # Set the default border color
	  $cal->contentcolor('black');		   # Set the default content color
	  $cal->headercolor('yellow');		   # Set the bgcolor of	the Month+Year header
	  $cal->headercontentcolor('yellow');	   # Set the content color of the Month+Year header
	  $cal->weekdayheadercolor('orange');	   # Set the bgcolor of	weekdays' headers
	  $cal->weekendheadercontentcolor('blue'); # Set the color of weekday headers' contents
	  $cal->weekendheadercolor('pink');	   # Set the bgcolor of	weekends' headers
	  $cal->weekdayheadercontentcolor('blue'); # Set the color of weekend headers' contents
	  $cal->weekendcolor('palegreen');	   # Override weekends'	cell bgcolor
	  $cal->weekendcontentcolor('blue');	   # Override weekends'	content	color
	  $cal->todaycolor('red');		   # Override today's cell bgcolor
	  $cal->todaycontentcolor('yellow');	   # Override today's content color
	  print	$cal->as_HTML;			   # Print a really ugly calendar!

       These methods set the cell color	and the	content	color for the
       specified date, and will	return the current value if STRING is not
       specified. These	color settings will override any of the	settings
       mentioned above,	even todaycolor() and todaycontentcolor().

       The date	may be a numeric date or a weekday string as described in
       setcontent() et al. Note	that if	a plural weekday is used (e.g.
       'sundays') then,	since it's not a single	date, the value	for the	first
       occurrence of that weekday will be returned (e.g. the first Sunday's

	  # Example: a red-letter day!

	  # Example:
	  # Every Tuesday is a Soylent Green day...
	  # Note that if the 3rd was a Tuesday,	this later assignment would override the previous one.
	  # see	the docs for setcontent() et all for more information.

   nowrap([1 or	0])
       If set to 1, then calendar cells	will have the NOWRAP attribute set,
       preventing their	content	from wrapping. If set to 0 (the	default) then
       NOWRAP is not used and very long	content	may cause cells	to become
       stretched out.

   sharpborders([1 or 0])
       If set to 1, this gives very crisp edges	between	the table cells. If
       set to 0	(the default) standard HTML cells are used. If neither value
       is specified, the current value is returned.

       FYI: To accomplish the crisp border, the	entire calendar	table is
       wrapped inside a	table cell.

       This specifies the height in pixels of each cell	in the calendar. By
       default,	no height is defined and the web browser usually chooses a
       reasonable default.

       If no value is given, the current value is returned.

       To un-specify a height, try specifying a	height of 0 or undef.

       These specify which CSS class will be attributed	to the calendar's
       table and the calendar's	cells. By default, no classes are specified or

       tableclass() sets the CSS class for the calendar	table.

       cellclass() is used for all calendar cells. weekdaycellclass(),
       weekendcellclass(), and todaycellclass()	override the cellclass() for
       the corresponding types of cells. headerclass() is used for the
       calendar's header.

       datecellclass() sets the	CSS class for the cell for the specified date.
       This setting will override any of the other cell	class settings,	even
       todaycellclass()	 This date must	be numeric; it cannot be a string such
       as "2wednesday"

       If no value is given, the current value is returned.

       To un-specify a class, try specifying an	empty string, e.g.

       These functions allow the days of the week to be	"renamed", which is
       useful for displaying the weekday headers in another language.

	  # show the days of the week in Spanish

	  # show the days of the week in German

       If no value is specified	(or, for weekdays() if exactly 5 arguments
       aren't given) then the current value is returned.

       Send bug	reports	to the author and log on RT.

       This program is free software licensed under the...

	 The BSD License

       The full	text of	the license can	be found in the	LICENSE	file included
       with this module.

       Note: Versions prior to 1.26 were licensed under	a BSD-like statement
       "This Perl module is freeware. It may be	copied,	derived, used, and
       distributed without limitation."

       HTML::CalendarMonth was written and is copyrighted by Matthew P.	Sisk
       <> and provided	inspiration for	the module's interface
       and features. None of Matt Sisk's code appears herein.

       HTML::CalendarMonthSimple was written by	Gregor Mosheh
       <> Frankly, the major inspiration	was the
       difficulty and unnecessary complexity of	HTML::CalendarMonth. (Laziness
       is a virtue.)

       This would have been extremely difficult	if not for Date::Calc. Many
       thanks to Steffen Beyer <> for	a very fine set	of
       date-related functions!

       Dave Fuller <>	added the getdatehref()	and
       setdatehref() methods, and pointed out the bugs that were corrected in

       Danny J.	Sohier <> provided many of the color

       Bernie Ledwick <> provided base code for the today*()
       functions, and for the handling of cell borders.

       Justin Ainsworth	<> provided	the vcellalignment()
       concept and code.

       Jessee Porter <> provided fixes for 1.12 to correct
       those warnings.

       Bray Jones <>	supplied the sharpborders(), nowrap(),
       cellheight(), cellclass() methods.

       Bill Turner <> supplied the headerclass() method
       and the rest of the methods added to 1.13

       Bill Rhodes <> provided the contentfontsize() method for
       version 1.14

       Alberto SimA<micro>es <> provided the
       tableclass() function and the saturday(), sunday(), and weekdays()
       functions for version 1.18. Thanks, Alberto, I've been wanting this
       since the beginning!

       Blair Zajac <>	provided the fixes for 1.19

       Thanks to Kurt <> for the bug report that made all	the
       new stuff in 1.21 possible.

       Many thanks to Stefano Rodighiero <> for	the code that
       made weekstartsonmonday() possible. This	was a much-requested feature
       that will make many people happy!

       Dan Boitnott <> provided today_year() et al in	1.23

       Peter Venables <> provided the XML validation fixes
       for 1.24

       Hey! The	above document had some	coding errors, which are explained

       Around line 1229:
	   Non-ASCII character seen before =encoding in
	   '$cal->saturday('SA!bado');'. Assuming CP1252

perl v5.32.1			  2010-07-29	  HTML::CalendarMonthSimple(3)


Want to link to this manual page? Use this URL:

home | help