r60934 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r60933‎ | r60934 | r60935 >
Date:17:49, 11 January 2010
Author:yaron
Status:deferred
Tags:
Comment:
Tag for version 0.2.9
Modified paths:
  • /tags/extensions/SemanticCalendar/REL_0_2_9 (added) (history)
  • /tags/extensions/SemanticCalendar/REL_0_2_9/OBSOLETE (added) (history)

Diff [purge]

Index: tags/extensions/SemanticCalendar/REL_0_2_9/INSTALL
@@ -0,0 +1,35 @@
 2+[[Semantic Calendar 0.2.9]]
 3+
 4+Contents:
 5+* Disclaimer
 6+* Requirements
 7+* Installation
 8+* Contact
 9+
 10+== Disclaimer ==
 11+
 12+Semantic Calendar is a new extension, and there is no
 13+guarantee that any of it will work on your system. However, it does
 14+not make any modifications to the database, so it should be a
 15+low-risk installation.
 16+
 17+For a proper legal disclaimer, see the file "COPYING".
 18+
 19+== Requirements ==
 20+
 21+The extension requires an install of Semantic MediaWiki 0.6 or
 22+greater. For more details, see Semantic MediaWiki's own
 23+installation requirements.
 24+
 25+== Installation ==
 26+
 27+(1) Extract the archive to obtain the directory "SemanticCalendar"
 28+ that contains all relevant files. Copy this directory (or
 29+ extract/download it) to "[wikipath]/extensions/".
 30+(2) Insert the following line into the file "[wikipath]/LocalSettings.php":
 31+ include_once('extensions/SemanticCalendar/includes/SC_Settings.php');
 32+
 33+== Contact ==
 34+
 35+If you have any issues or questions, please send them to
 36+yaron57@gmail.com.
Property changes on: tags/extensions/SemanticCalendar/REL_0_2_9/INSTALL
___________________________________________________________________
Name: svn:eol-style
137 + native
Index: tags/extensions/SemanticCalendar/REL_0_2_9/includes/SC_ParserFunctions.php
@@ -0,0 +1,276 @@
 2+<?php
 3+/**
 4+ * Parser functions for Semantic Calendar.
 5+ *
 6+ * There is currently one parser function defined: 'semantic_calendar'.
 7+ *
 8+ * 'semantic_calendar' is called as:
 9+ *
 10+ * {{#semantic_calendar:date property|query filters}}
 11+ *
 12+ * This function returns HTML that displays a monthly calendar, showing
 13+ * the titles of pages based on their semantic date information. The
 14+ * calendar allows a user to navigate to any month; the default the
 15+ * calenda displays the current month and year. The calendar does not
 16+ * include any links for adding new events; those can be placed separately,
 17+ * including above or below the calendar (the Semantic Forms extension is
 18+ * recommended for this purpose.
 19+ *
 20+ * The first argument, 'date property', is mandatory: it is the name of
 21+ * the semantic date property that is to be queried on. The 'query filters'
 22+ * argument is optional: it is a list of semantic properties and their
 23+ * values, used to provide further constraints on the set of returned
 24+ * values, in the manner of SMW's #ask function.
 25+ *
 26+ * Both of these arguments can be arrays, separated by semicolons, to
 27+ * allow for multiple queries within the same calendar. The number of date
 28+ * properties determines the number of queries: if more date properties
 29+ * than query filters are passed in, the remaining date properties are
 30+ * queried on without any filters, while if more query filters than
 31+ * date properties are passed in, the remaining query filters are
 32+ * ignored.
 33+ *
 34+ * Examples:
 35+ *
 36+ * To display a calendar that shows all pages by their value for the
 37+ * property 'Has date', if they belong to the 'Accounting' department
 38+ * and have an importance of 'High', you should call the following:
 39+ *
 40+ * {{#semantic_calendar:Has date|[[Belongs to department::Accounting]][[Has importance::High]]}}
 41+ *
 42+ * To display a calendar that shows all the previous dates, and also
 43+ * show all pages of category 'Projects' by their value for 'Has
 44+ * deadline', you should call the following:
 45+ *
 46+ * {{#semantic_calendar:Has date;Has deadline|[[Belongs to department::Accounting]][[Has importance::High]];[[Category:Projects]]}}
 47+ *
 48+ * @author Yaron Koren
 49+ */
 50+
 51+function scgRegisterParser( &$parser ) {
 52+ $parser->setFunctionHook('semantic_calendar', 'scRenderSemanticCalendar');
 53+ return true;
 54+}
 55+
 56+function scgLanguageGetMagic( &$magicWords, $langCode = "en" ) {
 57+ switch ( $langCode ) {
 58+ default:
 59+ $magicWords['semantic_calendar'] = array ( 0, 'semantic_calendar' );
 60+ }
 61+ return true;
 62+}
 63+
 64+function intToMonth($int) {
 65+ if ($int == '2') {return wfMsg('february'); }
 66+ if ($int == '3') {return wfMsg('march'); }
 67+ if ($int == '4') {return wfMsg('april'); }
 68+ if ($int == '5') {return wfMsg('may'); }
 69+ if ($int == '6') {return wfMsg('june'); }
 70+ if ($int == '7') {return wfMsg('july'); }
 71+ if ($int == '8') {return wfMsg('august'); }
 72+ if ($int == '9') {return wfMsg('september'); }
 73+ if ($int == '10') {return wfMsg('october'); }
 74+ if ($int == '11') {return wfMsg('november'); }
 75+ if ($int == '12') {return wfMsg('december'); }
 76+ // keep it simple - if it's '1' or anything else, return January
 77+ return wfMsg('january');
 78+}
 79+
 80+function scRenderSemanticCalendar (&$parser, $inDatePropertiesStr = '', $inQueryFiltersStr = '') {
 81+ global $wgOut, $scgScriptPath, $wgRequest;
 82+
 83+ wfLoadExtensionMessages('SemanticCalendar');
 84+ $wgOut->addLink( array(
 85+ 'rel' => 'stylesheet',
 86+ 'type' => 'text/css',
 87+ 'media' => "screen, print",
 88+ 'href' => $scgScriptPath . "/skins/SC_main.css"
 89+ ));
 90+
 91+ // initialize some variables
 92+ $text = "";
 93+ $title = $parser->getTitle();
 94+ $skin = $parser->getOptions()->getSkin();
 95+ $events = array();
 96+ $smw_version = SMW_VERSION;
 97+ $date_properties = explode(";", $inDatePropertiesStr);
 98+ $query_filters = explode(";", $inQueryFiltersStr);
 99+ // cycle through the date properties, adding to each a query filter
 100+ // when possible; excess query filters, if any exist, are ignored
 101+ foreach ($date_properties as $i => $date_property) {
 102+ if (count($query_filters) > $i) {
 103+ $query_filter_str = $query_filters[$i];
 104+ } else {
 105+ $query_filter_str = "";
 106+ }
 107+ $events = array_merge($events, scfGetEvents($date_property, $query_filter_str));
 108+ }
 109+
 110+ // get all the date-based values we need - the current month and year
 111+ // (i.e., the one the user is looking at - not necessarily the
 112+ // "current" ones), the previous and next months and years (same -
 113+ // note that the previous or next month could be in a different year),
 114+ // the number of days in the current, previous and next months, etc.
 115+ $cur_month_num = date("n", mktime());
 116+ if ($wgRequest->getCheck('month')) {
 117+ $query_month = $wgRequest->getVal('month');
 118+ if (is_numeric($query_month) && (intval($query_month) == $query_month) && $query_month >= 1 && $query_month <= 12) {
 119+ $cur_month_num = $wgRequest->getVal('month');
 120+ }
 121+ }
 122+ $cur_month = intToMonth($cur_month_num);
 123+ $cur_year = date("Y", mktime());
 124+ if ($wgRequest->getCheck('year')) {
 125+ $query_year = $wgRequest->getVal('year');
 126+ if (is_numeric($query_year) && intval($query_year) == $query_year) {
 127+ $cur_year = $wgRequest->getVal('year');
 128+ }
 129+ }
 130+ if ($cur_month_num == '1') {
 131+ $prev_month_num = '12';
 132+ $prev_year = $cur_year - 1;
 133+ } else {
 134+ $prev_month_num = $cur_month_num - 1;
 135+ $prev_year = $cur_year;
 136+ }
 137+ if ($cur_month_num == '12') {
 138+ $next_month_num = '1';
 139+ $next_year = $cur_year + 1;
 140+ } else {
 141+ $next_month_num = $cur_month_num + 1;
 142+ $next_year = $cur_year;
 143+ }
 144+ // there's no year '0' - change it to '1' or '-1'
 145+ if ($cur_year == "0") {$cur_year = "1"; }
 146+ if ($next_year == "0") {$next_year = "1"; }
 147+ if ($prev_year == "0") {$prev_year = "-1"; }
 148+ $prev_month_url = $title->getLocalURL("month=$prev_month_num&year=$prev_year");
 149+ $next_month_url = $title->getLocalURL("month=$next_month_num&year=$next_year");
 150+ $today_url = $title->getLocalURL();
 151+ $today_text = wfMsg('sc_today');
 152+ $prev_month_text = wfMsg('sc_previousmonth');
 153+ $next_month_text = wfMsg('sc_nextmonth');
 154+ $go_to_month_text = wfMsg('sc_gotomonth');
 155+
 156+ // get day of the week that the first of this month falls on
 157+ $first_day = new SCHistoricalDate();
 158+ $first_day->create($cur_year, $cur_month_num, 1);
 159+ $day_of_week_of_1 = $first_day->getDayOfWeek();
 160+ $start_day = 1 - $day_of_week_of_1;
 161+ $days_in_prev_month = SCHistoricalDate::daysInMonth($prev_year, $prev_month_num);
 162+ $days_in_cur_month = SCHistoricalDate::daysInMonth($cur_year, $cur_month_num);
 163+ $today_string = date("Y n j", mktime());
 164+ $url_year = $wgRequest->getVal('year');
 165+ $title = $title->getPrefixedDbKey();
 166+
 167+ // create table for holding calendar, and the top (navigation) row
 168+ $text .=<<<END
 169+<table class="navigation_table">
 170+<tr>
 171+<td class="month_name">$cur_month $cur_year</td>
 172+<td class="nav_links">
 173+<a href="$prev_month_url" title="$prev_month_text"><img src="$scgScriptPath/skins/images/left-arrow.png" border="0" /></a>
 174+&nbsp;
 175+<a href="$today_url">$today_text</a>
 176+&nbsp;
 177+<a href="$next_month_url" title="$next_month_text"><img src="$scgScriptPath/skins/images/right-arrow.png" border="0" /></a>
 178+</td>
 179+<td class="nav_form">
 180+<form>
 181+<input type="hidden" name="title" value="$title">
 182+<select name="month">
 183+
 184+END;
 185+ for ($i = 1; $i <= 12; $i++) {
 186+ $month_name = intToMonth($i);
 187+ $selected_str = ($i == $cur_month_num) ? "selected" : "";
 188+ $text .= "<option value=\"$i\" $selected_str>$month_name</option>\n";
 189+ }
 190+ $text .=<<<END
 191+</select>
 192+<input name="year" type="text" value="$cur_year" size="4">
 193+<input type="submit" value="$go_to_month_text">
 194+</form>
 195+</td>
 196+</tr>
 197+</table>
 198+
 199+<table class="month_calendar">
 200+
 201+END;
 202+ // second row holds the calendar title and current month
 203+ $text .=<<<END
 204+<tr class="weekdays">
 205+
 206+END;
 207+
 208+ // third row holds the days of the week
 209+ $week_days = array(wfMsg('sunday'), wfMsg('monday'), wfMsg('tuesday'), wfMsg('wednesday'), wfMsg('thursday'), wfMsg('friday'), wfMsg('saturday'));
 210+ foreach ($week_days as $week_day) {
 211+ $text .= "<td>$week_day</td>";
 212+ }
 213+ $text .= "</tr>\n";
 214+
 215+ // now, create the calendar itself -
 216+ // loop through a set of weeks, from a Sunday (which might be
 217+ // before the beginning of the month) to a Saturday (which might
 218+ // be after the end of the month)
 219+ $day_of_the_week = 1;
 220+ $is_last_week = false;
 221+ for ($day = $start_day; (! $is_last_week || $day_of_the_week != 1); $day++) {
 222+ if ($day_of_the_week == 1) {
 223+ $text .= "<tr>\n";
 224+ }
 225+ if ("$cur_year $cur_month_num $day" == $today_string) {
 226+ $text .= "<td class=\"today\">\n";
 227+ } elseif ($day_of_the_week == 1 || $day_of_the_week == 7) {
 228+ $text .= "<td class=\"weekend_day\">\n";
 229+ } else {
 230+ $text .= "<td>\n";
 231+ }
 232+ if ($day == $days_in_cur_month || $day > 50) {$is_last_week = true; }
 233+ // if this day is before or after the current month, set a
 234+ // "display day" to show on the calendar, and use a different
 235+ // CSS style for it
 236+ if ($day > $days_in_cur_month || $day < 1) {
 237+ if ($day < 1) {
 238+ $display_day = $day + $days_in_prev_month;
 239+ $date_str = "$prev_year-" . $prev_month_num . "-" . $display_day;
 240+ }
 241+ if ($day > $days_in_cur_month) {
 242+ $display_day = $day - $days_in_cur_month;
 243+ $date_str = "$next_year-" . $next_month_num . "-" . $display_day;
 244+ }
 245+ $text .= "<div class=\"day day_other_month\">$display_day</div>\n";
 246+ } else {
 247+ $date_str = "$cur_year-" . $cur_month_num . "-" . $day;
 248+ $text .= "<div class=\"day\">$day</div>\n";
 249+ }
 250+ // finally, the most important step - get the events that
 251+ // match this date, and the given set of criteria, and
 252+ // display them in this date's box
 253+ $text .= "<div class=\"main\">\n";
 254+ foreach ($events as $event_pair) {
 255+ list($event_title, $event_date) = $event_pair;
 256+ if ($event_date == $date_str) {
 257+ $text .= $skin->makeLinkObj($event_title, str_replace('_', ' ', $event_title->getPrefixedDbKey()));
 258+ $text .= "\n\n";
 259+ }
 260+ }
 261+ $text .=<<<END
 262+</div>
 263+</td>
 264+
 265+END;
 266+ if ($day_of_the_week == 7) {
 267+ $text .= "</tr>\n";
 268+ $day_of_the_week = 1;
 269+ } else {
 270+ $day_of_the_week++;
 271+ }
 272+ }
 273+
 274+ $text .= "</table>\n";
 275+
 276+ return array($text, 'noparse' => 'true', 'isHTML' => 'true');
 277+}
Property changes on: tags/extensions/SemanticCalendar/REL_0_2_9/includes/SC_ParserFunctions.php
___________________________________________________________________
Name: svn:eol-style
1278 + native
Index: tags/extensions/SemanticCalendar/REL_0_2_9/includes/SC_GlobalFunctions.php
@@ -0,0 +1,134 @@
 2+<?php
 3+/**
 4+ * Global functions and constants for Semantic Calendar
 5+ *
 6+ * @author Yaron Koren
 7+ */
 8+
 9+if (!defined('MEDIAWIKI')) die();
 10+
 11+define('SC_VERSION','0.2.9');
 12+
 13+$wgExtensionCredits['parserhook'][]= array(
 14+ 'path' => __FILE__,
 15+ 'name' => 'Semantic Calendar',
 16+ 'version' => SC_VERSION,
 17+ 'author' => 'Yaron Koren',
 18+ 'url' => 'http://www.mediawiki.org/wiki/Extension:Semantic_Calendar',
 19+ 'description' => 'A calendar that displays semantic date information',
 20+ 'descriptionmsg' => 'sc_desc',
 21+);
 22+
 23+$wgHooks['ParserFirstCallInit'][] = 'scgRegisterParser';
 24+$wgHooks['LanguageGetMagic'][] = 'scgLanguageGetMagic';
 25+
 26+require_once($scgIP . '/includes/SC_ParserFunctions.php');
 27+$wgAutoloadClasses['SCHistoricalDate'] = $scgIP . '/includes/SC_HistoricalDate.php';
 28+require_once($scgIP . '/languages/SC_Language.php');
 29+
 30+$wgExtensionMessagesFiles['SemanticCalendar'] = $scgIP . '/languages/SC_Messages.php';
 31+
 32+/**********************************************/
 33+/***** namespace settings *****/
 34+/**********************************************/
 35+
 36+/**********************************************/
 37+/***** language settings *****/
 38+/**********************************************/
 39+
 40+/**
 41+ * Initialise a global language object for content language. This
 42+ * must happen early on, even before user language is known, to
 43+ * determine labels for additional namespaces. In contrast, messages
 44+ * can be initialised much later when they are actually needed.
 45+ */
 46+function scfInitContentLanguage($langcode) {
 47+ global $scgIP, $scgContLang;
 48+
 49+ if (!empty($scgContLang)) { return; }
 50+
 51+ $scContLangClass = 'SC_Language' . str_replace( '-', '_', ucfirst( $langcode ) );
 52+
 53+ if (file_exists($scgIP . '/languages/'. $scContLangClass . '.php')) {
 54+ include_once( $scgIP . '/languages/'. $scContLangClass . '.php' );
 55+ }
 56+
 57+ // fallback if language not supported
 58+ if ( !class_exists($scContLangClass)) {
 59+ include_once($scgIP . '/languages/SC_LanguageEn.php');
 60+ $scContLangClass = 'SC_LanguageEn';
 61+ }
 62+
 63+ $scgContLang = new $scContLangClass();
 64+}
 65+
 66+/**
 67+ * Initialize the global language object for user language. This
 68+ * must happen after the content language was initialised, since
 69+ * this language is used as a fallback.
 70+ */
 71+function scfInitUserLanguage($langcode) {
 72+ global $scgIP, $scgLang;
 73+
 74+ if (!empty($scgLang)) { return; }
 75+
 76+ $scLangClass = 'SC_Language' . str_replace( '-', '_', ucfirst( $langcode ) );
 77+ if (file_exists($scgIP . '/languages/'. $scLangClass . '.php')) {
 78+ include_once( $scgIP . '/languages/'. $scLangClass . '.php' );
 79+ }
 80+
 81+ // fallback if language not supported
 82+ if ( !class_exists($scLangClass)) {
 83+ global $scgContLang;
 84+ $scgLang = $scgContLang;
 85+ } else {
 86+ $scgLang = new $scLangClass();
 87+ }
 88+}
 89+
 90+/**********************************************/
 91+/***** other global helpers *****/
 92+/**********************************************/
 93+
 94+function scfGetEvents($date_property, $filter_query) {
 95+ global $smwgIP;
 96+ include_once($smwgIP . "/includes/SMW_QueryProcessor.php");
 97+ $events = array();
 98+ // some changes were made to querying in SMW 1.2
 99+ $smw_version = SMW_VERSION;
 100+ if (version_compare(SMW_VERSION, '1.2', '>=' ) ||
 101+ substr($smw_version, 0, 3) == '1.2') { // temporary hack
 102+ $query_string = "[[$date_property::+]]$filter_query";
 103+ } else {
 104+ $query_string = "[[$date_property::*]][[$date_property::+]]$filter_query";
 105+ }
 106+ // set a limit sufficiently close to infinity
 107+ $params = array('limit' => 100000);
 108+ $inline = false;
 109+ $format = 'auto';
 110+ $printlabel = "";
 111+ $printouts = array();
 112+ if (class_exists('SMWPropertyValue')) { // SMW 1.4
 113+ $printouts[] = new SMWPrintRequest(SMWPrintRequest::PRINT_PROP, $printlabel, SMWPropertyValue::makeProperty($date_property));
 114+ } elseif (version_compare(SMW_VERSION, '1.2', '>=' ) ||
 115+ substr($smw_version, 0, 3) == '1.2') { // temporary hack
 116+ $printouts[] = new SMWPrintRequest(SMWPrintRequest::PRINT_PROP, $printlabel, Title::newFromText($date_property, SMW_NS_PROPERTY));
 117+ } else {
 118+ $printouts[] = new SMWPrintRequest(SMW_PRINT_THIS, $printlabel);
 119+ }
 120+ $query = SMWQueryProcessor::createQuery($query_string, $params, $inline, $format, $printouts);
 121+ $results = smwfGetStore()->getQueryResult($query);
 122+ while ($row = $results->getNext()) {
 123+ $event_names = $row[0];
 124+ $event_dates = $row[1];
 125+ $event_title = $event_names->getNextObject()->getTitle();
 126+ while ($event_date = $event_dates->getNextObject()) {
 127+ if (method_exists('SMWTimeValue', 'getYear')) // SMW 1.4
 128+ $actual_date = $event_date->getYear() . '-' . $event_date->getMonth() . '-' . $event_date->getDay();
 129+ else
 130+ $actual_date = date("Y-n-j", $event_date->getNumericValue());
 131+ $events[] = array($event_title, $actual_date);
 132+ }
 133+ }
 134+ return $events;
 135+}
Property changes on: tags/extensions/SemanticCalendar/REL_0_2_9/includes/SC_GlobalFunctions.php
___________________________________________________________________
Name: svn:eol-style
1136 + native
Index: tags/extensions/SemanticCalendar/REL_0_2_9/includes/SC_HistoricalDate.php
@@ -0,0 +1,92 @@
 2+<?php
 3+
 4+/**
 5+ * SC_HistoricalDate.php
 6+ *
 7+ * This code is lifted from Terry Hurlbut's 'SMW_DV_HxDate.php' class;
 8+ * that code was itself adapted from the Fourmilab Calendar Converter
 9+ * Javascripts by John Walker, who wrote them in 1999 and released them
 10+ * to the public domain.
 11+ *
 12+ * The internal value, unlike that of the standard SMW Date type, is a
 13+ * 64-bit PHP float. The characteristic gives the days since
 14+ * the epoch.
 15+ *
 16+ * Technically, the Julian calendar is valid only beginning January 1, 45 BC,
 17+ * when Julius Caesar established it as per a formal Senatus consultum. But
 18+ * currently this is the only calendar currently projectible to earlier times;
 19+ * therefore Julian dates are valid for any year in the Julian Period.
 20+ *
 21+ * @author Terry A. Hurlbut
 22+ * @author Yaron Koren
 23+ */
 24+class SCHistoricalDate {
 25+
 26+ const GREGORIAN_EPOCH = 1721425.5; // equivalent to 1 AD
 27+
 28+ protected $m_date; // the Julian day
 29+
 30+ function create($year, $month, $day) {
 31+ if ($year < 1582 ||
 32+ ($year == 1582 && ($month < 10 || ($month == 10 && $day < 15)))) {
 33+ $this->createFromJulian($year, $month, $day);
 34+ } else {
 35+ $this->createFromGregorian($year, $month, $day);
 36+ }
 37+ }
 38+
 39+ static protected function leap_gregorian($year) {
 40+ return (($year % 4) == 0) && (!((($year % 100) == 0) && (($year % 400) != 0)));
 41+ }
 42+
 43+ static protected function leap_julian($year) {
 44+ return (($year % 4) == (($year > 0) ? 0 : 3));
 45+ }
 46+
 47+ static protected function leap_jul_greg($year) {
 48+ return (($year < 1582) ? SCHistoricalDate::leap_julian($year) : SCHistoricalDate::leap_gregorian($year));
 49+ }
 50+
 51+ protected function createFromGregorian($year, $month, $day) {
 52+ $this->m_date = (self::GREGORIAN_EPOCH - 1) +
 53+ (365 * ($year - 1)) +
 54+ floor(($year - 1) / 4) +
 55+ (-floor(($year - 1) / 100)) +
 56+ floor(($year - 1) / 400) +
 57+ floor((((367 * $month) - 362) / 12) +
 58+ (($month <= 2) ? 0 :
 59+ (SCHistoricalDate::leap_gregorian($year) ? -1 : -2)
 60+ ) + $day);
 61+ }
 62+
 63+ protected function createFromJulian($year, $month, $day) {
 64+
 65+ /* Adjust negative common era years to the zero-based notation we use. */
 66+ if ($year < 1) {
 67+ $year++;
 68+ }
 69+
 70+ /* Algorithm as given in Meeus, Astronomical Algorithms, Chapter 7, page 61 */
 71+ if ($month <= 2) {
 72+ $year--;
 73+ $month += 12;
 74+ }
 75+
 76+ $this->m_date = ((floor((365.25 * ($year + 4716))) +
 77+ floor((30.6001 * ($month + 1))) +
 78+ $day) - 1524.5);
 79+ }
 80+
 81+ public function getDayOfWeek() {
 82+ return (floor($this->m_date + 1.5) % 7);
 83+ }
 84+
 85+ static function daysInMonth($year, $month) {
 86+ if ($month == 4 || $month == 6 || $month == 9 || $month == 11)
 87+ return 30;
 88+ if ($month == 2)
 89+ return (SCHistoricalDate::leap_jul_greg($year)) ? 29 : 28;
 90+ return 31;
 91+ }
 92+
 93+}
Property changes on: tags/extensions/SemanticCalendar/REL_0_2_9/includes/SC_HistoricalDate.php
___________________________________________________________________
Name: svn:eol-style
194 + native
Index: tags/extensions/SemanticCalendar/REL_0_2_9/includes/SC_Settings.php
@@ -0,0 +1,30 @@
 2+<?php
 3+/**
 4+ * Protect against register_globals vulnerabilities.
 5+ * This line must be present before any global variable is referenced.
 6+ */
 7+if (!defined('MEDIAWIKI')) die();
 8+
 9+
 10+###
 11+# This is the path to your installation of Semantic Calendar as
 12+# seen from the web. Change it if required ($wgScriptPath is the
 13+# path to the base directory of your wiki). No final slash.
 14+##
 15+$scgScriptPath = $wgScriptPath . '/extensions/SemanticCalendar';
 16+##
 17+
 18+###
 19+# This is the path to your installation of Semantic Calendar as
 20+# seen on your local filesystem. Used against some PHP file path
 21+# issues.
 22+##
 23+$scgIP = $IP . '/extensions/SemanticCalendar';
 24+##
 25+
 26+
 27+// PHP fails to find relative includes at some level of inclusion:
 28+//$pathfix = $IP . $scgScriptPath;
 29+
 30+// load global functions
 31+require_once($scgIP . '/includes/SC_GlobalFunctions.php');
Property changes on: tags/extensions/SemanticCalendar/REL_0_2_9/includes/SC_Settings.php
___________________________________________________________________
Name: svn:eol-style
132 + native
Index: tags/extensions/SemanticCalendar/REL_0_2_9/languages/SC_LanguageEn.php
@@ -0,0 +1,12 @@
 2+<?php
 3+/**
 4+ * @author Yaron Koren
 5+ */
 6+
 7+class SC_LanguageEn extends SC_Language {
 8+
 9+/* private */ var $m_SpecialProperties = array(
 10+ //always start upper-case
 11+);
 12+
 13+}
Property changes on: tags/extensions/SemanticCalendar/REL_0_2_9/languages/SC_LanguageEn.php
___________________________________________________________________
Name: svn:eol-style
114 + native
Index: tags/extensions/SemanticCalendar/REL_0_2_9/languages/SC_Messages.php
@@ -0,0 +1,471 @@
 2+<?php
 3+/**
 4+ * Internationalization file for the Semantic Calendar extension
 5+ *
 6+ * @addtogroup Extensions
 7+*/
 8+
 9+$messages = array();
 10+
 11+/** English
 12+ * @author Yaron Koren
 13+ */
 14+$messages['en'] = array(
 15+ // user messages
 16+ 'sc_desc' => 'A calendar that displays semantic date information',
 17+ 'sc_previousmonth' => 'Previous month',
 18+ 'sc_nextmonth' => 'Next month',
 19+ 'sc_today' => 'Today',
 20+ 'sc_gotomonth' => 'Go to month',
 21+);
 22+
 23+/** Message documentation (Message documentation)
 24+ * @author Purodha
 25+ */
 26+$messages['qqq'] = array(
 27+ 'sc_desc' => 'Short description of this extension, shown in [[Special:Version]]. Do not translate or change links.',
 28+);
 29+
 30+/** Afrikaans (Afrikaans)
 31+ * @author SPQRobin
 32+ */
 33+$messages['af'] = array(
 34+ 'sc_gotomonth' => 'Gaan na maand',
 35+);
 36+
 37+/** Arabic (العربية)
 38+ * @author Meno25
 39+ */
 40+$messages['ar'] = array(
 41+ 'sc_desc' => 'نتيجة تعرض معلومات تاريخ سيمانتيك',
 42+ 'sc_previousmonth' => 'الشهر السابق',
 43+ 'sc_nextmonth' => 'الشهر التالي',
 44+ 'sc_today' => 'اليوم',
 45+ 'sc_gotomonth' => 'اذهب إلى شهر',
 46+);
 47+
 48+/** Egyptian Spoken Arabic (مصرى)
 49+ * @author Meno25
 50+ */
 51+$messages['arz'] = array(
 52+ 'sc_desc' => 'نتيجة تعرض معلومات تاريخ سيمانتيك',
 53+ 'sc_previousmonth' => 'الشهر السابق',
 54+ 'sc_nextmonth' => 'الشهر التالي',
 55+ 'sc_today' => 'اليوم',
 56+ 'sc_gotomonth' => 'اذهب إلى شهر',
 57+);
 58+
 59+/** Bulgarian (Български)
 60+ * @author DCLXVI
 61+ */
 62+$messages['bg'] = array(
 63+ 'sc_previousmonth' => 'Предходен месец',
 64+ 'sc_nextmonth' => 'Следващ месец',
 65+ 'sc_today' => 'Днес',
 66+);
 67+
 68+/** Breton (Brezhoneg)
 69+ * @author Fulup
 70+ */
 71+$messages['br'] = array(
 72+ 'sc_previousmonth' => 'Miz a-raok',
 73+ 'sc_nextmonth' => 'Miz a zeu',
 74+ 'sc_today' => 'Hiziv',
 75+ 'sc_gotomonth' => "Mont d'ar miz",
 76+);
 77+
 78+/** German (Deutsch)
 79+ * @author Krabina
 80+ */
 81+$messages['de'] = array(
 82+ 'sc_previousmonth' => 'Voriger Monat',
 83+ 'sc_nextmonth' => 'Nächster Monat',
 84+ 'sc_today' => 'Heute',
 85+ 'sc_gotomonth' => 'Gehe zu Monat',
 86+);
 87+
 88+/** Greek (Ελληνικά)
 89+ * @author Consta
 90+ */
 91+$messages['el'] = array(
 92+ 'sc_previousmonth' => 'Προηγούμενος μήνας',
 93+ 'sc_nextmonth' => 'Επόμενος μήνας',
 94+ 'sc_today' => 'Σήμερα',
 95+);
 96+
 97+/** Esperanto (Esperanto)
 98+ * @author Yekrats
 99+ */
 100+$messages['eo'] = array(
 101+ 'sc_previousmonth' => 'Antaŭa monato',
 102+ 'sc_nextmonth' => 'Posta monato',
 103+ 'sc_today' => 'Hodiaŭ',
 104+ 'sc_gotomonth' => 'Iru al monato',
 105+);
 106+
 107+/** Persian (فارسی)
 108+ * @author Tofighi
 109+ */
 110+$messages['fa'] = array(
 111+ 'sc_previousmonth' => 'ماه گذشته',
 112+ 'sc_nextmonth' => 'ماه آینده',
 113+ 'sc_today' => 'امروز',
 114+ 'sc_gotomonth' => 'برو به ماه',
 115+);
 116+
 117+/** French (Français)
 118+ * @author Grondin
 119+ * @author Urhixidur
 120+ */
 121+$messages['fr'] = array(
 122+ 'sc_desc' => 'Un calendrier qui affiche les informations de date sémantique',
 123+ 'sc_previousmonth' => 'Mois précédent',
 124+ 'sc_nextmonth' => 'Mois suivant',
 125+ 'sc_today' => "Aujourd'hui",
 126+ 'sc_gotomonth' => 'Aller vers le mois',
 127+);
 128+
 129+/** Galician (Galego)
 130+ * @author Alma
 131+ * @author Toliño
 132+ */
 133+$messages['gl'] = array(
 134+ 'sc_desc' => 'Un calendario que amosa datos da información semántica',
 135+ 'sc_previousmonth' => 'Mes anterior',
 136+ 'sc_nextmonth' => 'Mes seguinte',
 137+ 'sc_today' => 'Hoxe',
 138+ 'sc_gotomonth' => 'Ir ao mes',
 139+);
 140+
 141+/** Ancient Greek (Ἀρχαία ἑλληνικὴ)
 142+ * @author Omnipaedista
 143+ */
 144+$messages['grc'] = array(
 145+ 'sc_today' => 'Σήμερον',
 146+);
 147+
 148+/** Manx (Gaelg)
 149+ * @author MacTire02
 150+ */
 151+$messages['gv'] = array(
 152+ 'sc_previousmonth' => 'Yn mee roish shen',
 153+ 'sc_nextmonth' => 'Yn chied mee elley',
 154+ 'sc_today' => 'Jiu',
 155+);
 156+
 157+/** Hebrew (עברית)
 158+ * @author StuB
 159+ * @author YaronSh
 160+ */
 161+$messages['he'] = array(
 162+ 'sc_desc' => 'לוח שנה המציג נתונים סמנטיים אודות התאריך',
 163+ 'sc_previousmonth' => 'החודש הקודם',
 164+ 'sc_nextmonth' => 'החודש הבא',
 165+ 'sc_today' => 'היום',
 166+ 'sc_gotomonth' => 'מעבר לחודש',
 167+);
 168+
 169+/** Hindi (हिन्दी)
 170+ * @author Kaustubh
 171+ */
 172+$messages['hi'] = array(
 173+ 'sc_previousmonth' => 'पिछला महिना',
 174+ 'sc_nextmonth' => 'अगला महिना',
 175+ 'sc_today' => 'आज़',
 176+ 'sc_gotomonth' => 'महिनेपर चलें',
 177+);
 178+
 179+/** Upper Sorbian (Hornjoserbsce)
 180+ * @author Michawiki
 181+ */
 182+$messages['hsb'] = array(
 183+ 'sc_previousmonth' => 'Předchadny měsac',
 184+ 'sc_nextmonth' => 'Přichodny měsac',
 185+ 'sc_today' => 'Dźensa',
 186+ 'sc_gotomonth' => 'Dźi k měsacej',
 187+);
 188+
 189+/** Hungarian (Magyar)
 190+ * @author Dani
 191+ */
 192+$messages['hu'] = array(
 193+ 'sc_previousmonth' => 'Előző hónap',
 194+ 'sc_nextmonth' => 'Következő hónap',
 195+);
 196+
 197+/** Interlingua (Interlingua)
 198+ * @author McDutchie
 199+ */
 200+$messages['ia'] = array(
 201+ 'sc_desc' => 'Un calendario que monstra informationes de data semantic',
 202+ 'sc_previousmonth' => 'Mense precedente',
 203+ 'sc_nextmonth' => 'Mense sequente',
 204+ 'sc_today' => 'Hodie',
 205+ 'sc_gotomonth' => 'Ir al mense',
 206+);
 207+
 208+/** Italian (Italiano)
 209+ * @author Darth Kule
 210+ */
 211+$messages['it'] = array(
 212+ 'sc_previousmonth' => 'Mese precedente',
 213+ 'sc_nextmonth' => 'Mese successivo',
 214+ 'sc_today' => 'Oggi',
 215+ 'sc_gotomonth' => 'Vai al mese',
 216+);
 217+
 218+/** Japanese (日本語)
 219+ * @author JtFuruhata
 220+ */
 221+$messages['ja'] = array(
 222+ 'sc_previousmonth' => '前の月',
 223+ 'sc_nextmonth' => '次の月',
 224+ 'sc_today' => '今日',
 225+ 'sc_gotomonth' => 'この月を表示',
 226+);
 227+
 228+/** Javanese (Basa Jawa)
 229+ * @author Meursault2004
 230+ */
 231+$messages['jv'] = array(
 232+ 'sc_previousmonth' => 'Sasi sadurungé',
 233+ 'sc_nextmonth' => 'Sasi sabanjuré',
 234+ 'sc_today' => 'Dina iki',
 235+ 'sc_gotomonth' => 'Tumuju menyang sasi',
 236+);
 237+
 238+/** Khmer (ភាសាខ្មែរ)
 239+ * @author Lovekhmer
 240+ * @author គីមស៊្រុន
 241+ */
 242+$messages['km'] = array(
 243+ 'sc_previousmonth' => 'ខែមុន',
 244+ 'sc_nextmonth' => 'ខែបន្ទាប់',
 245+ 'sc_today' => 'ថ្ងៃនេះ',
 246+ 'sc_gotomonth' => 'ទៅកាន់ខែ',
 247+);
 248+
 249+/** Ripoarisch (Ripoarisch)
 250+ * @author Purodha
 251+ */
 252+$messages['ksh'] = array(
 253+ 'sc_desc' => 'Ene Kalländer, dä semantesche Dattums-Enfommazjuhne aanzeisch.',
 254+ 'sc_today' => 'Hück',
 255+);
 256+
 257+/** Luxembourgish (Lëtzebuergesch)
 258+ * @author Robby
 259+ */
 260+$messages['lb'] = array(
 261+ 'sc_previousmonth' => 'Mount virdrun',
 262+ 'sc_nextmonth' => 'Nächste Mount',
 263+ 'sc_today' => 'Haut',
 264+ 'sc_gotomonth' => 'Géi op de Mount',
 265+);
 266+
 267+/** Lithuanian (Lietuvių)
 268+ * @author Hugo.arg
 269+ */
 270+$messages['lt'] = array(
 271+ 'sc_previousmonth' => 'Praeitas mėnuo',
 272+ 'sc_nextmonth' => 'Ateinantis mėnuo',
 273+ 'sc_today' => 'Šiandien',
 274+ 'sc_gotomonth' => 'Eiti į mėnesį',
 275+);
 276+
 277+/** Malayalam (മലയാളം)
 278+ * @author Shijualex
 279+ */
 280+$messages['ml'] = array(
 281+ 'sc_previousmonth' => 'കഴിഞ്ഞ മാസം',
 282+ 'sc_nextmonth' => 'അടുത്ത മാസം',
 283+ 'sc_today' => 'ഇന്ന്',
 284+ 'sc_gotomonth' => 'മാസത്തിലേക്ക് പോവുക',
 285+);
 286+
 287+/** Marathi (मराठी)
 288+ * @author Mahitgar
 289+ */
 290+$messages['mr'] = array(
 291+ 'sc_previousmonth' => 'मागचा महीना',
 292+ 'sc_nextmonth' => 'पुढचा महीना',
 293+ 'sc_today' => 'आज',
 294+ 'sc_gotomonth' => 'महीन्याकडे चला',
 295+);
 296+
 297+/** Erzya (Эрзянь)
 298+ * @author Botuzhaleny-sodamo
 299+ */
 300+$messages['myv'] = array(
 301+ 'sc_previousmonth' => 'Йутазь ковсто',
 302+ 'sc_nextmonth' => 'Сы ковсто',
 303+ 'sc_today' => 'Течи',
 304+);
 305+
 306+/** Dutch (Nederlands)
 307+ * @author GerardM
 308+ * @author Siebrand
 309+ */
 310+$messages['nl'] = array(
 311+ 'sc_desc' => 'Een kalender die semantische datuminformatie weergeeft',
 312+ 'sc_previousmonth' => 'Vorige maand',
 313+ 'sc_nextmonth' => 'Volgende maand',
 314+ 'sc_today' => 'Vandaag',
 315+ 'sc_gotomonth' => 'Ga naar maand',
 316+);
 317+
 318+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
 319+ * @author Eirik
 320+ */
 321+$messages['nn'] = array(
 322+ 'sc_previousmonth' => 'Førre månad',
 323+ 'sc_nextmonth' => 'Neste månad',
 324+ 'sc_today' => 'I dag',
 325+ 'sc_gotomonth' => 'Gå til månad',
 326+);
 327+
 328+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
 329+ * @author Jon Harald Søby
 330+ */
 331+$messages['no'] = array(
 332+ 'sc_desc' => 'En kalender som viser semantisk datoinformasjon',
 333+ 'sc_previousmonth' => 'Forrige måned',
 334+ 'sc_nextmonth' => 'Neste måned',
 335+ 'sc_today' => 'I dag',
 336+ 'sc_gotomonth' => 'Gå til måned',
 337+);
 338+
 339+/** Occitan (Occitan)
 340+ * @author Cedric31
 341+ */
 342+$messages['oc'] = array(
 343+ 'sc_desc' => "Un calendièr qu'aficha las entresenhas de data semantica",
 344+ 'sc_previousmonth' => 'Mes precedent',
 345+ 'sc_nextmonth' => 'Mes seguent',
 346+ 'sc_today' => 'Uèi',
 347+ 'sc_gotomonth' => 'Anar cap al mes',
 348+);
 349+
 350+/** Polish (Polski)
 351+ * @author Maire
 352+ */
 353+$messages['pl'] = array(
 354+ 'sc_previousmonth' => 'Poprzedni miesiąc',
 355+ 'sc_nextmonth' => 'Następny miesiąc',
 356+ 'sc_today' => 'Dzisiaj',
 357+ 'sc_gotomonth' => 'Idź do miesiąca',
 358+);
 359+
 360+/** Pashto (پښتو)
 361+ * @author Ahmed-Najib-Biabani-Ibrahimkhel
 362+ */
 363+$messages['ps'] = array(
 364+ 'sc_previousmonth' => 'پخوانۍ مياشت',
 365+ 'sc_nextmonth' => 'راتلونکې مياشت',
 366+ 'sc_today' => 'نن',
 367+ 'sc_gotomonth' => 'مياشت ته ورځه',
 368+);
 369+
 370+/** Portuguese (Português)
 371+ * @author Malafaya
 372+ */
 373+$messages['pt'] = array(
 374+ 'sc_previousmonth' => 'Mês anterior',
 375+ 'sc_nextmonth' => 'Mês seguinte',
 376+ 'sc_today' => 'Hoje',
 377+ 'sc_gotomonth' => 'Ir para mês',
 378+);
 379+
 380+/** Russian (Русский)
 381+ * @author Александр Сигачёв
 382+ */
 383+$messages['ru'] = array(
 384+ 'sc_previousmonth' => 'Предыдущий месяц',
 385+ 'sc_nextmonth' => 'Следующий месяц',
 386+ 'sc_today' => 'Сегодня',
 387+ 'sc_gotomonth' => 'Перейти к месяцу',
 388+);
 389+
 390+/** Slovak (Slovenčina)
 391+ * @author Helix84
 392+ */
 393+$messages['sk'] = array(
 394+ 'sc_desc' => 'Kalendár zobrazujúci sémantické dátumové informácie',
 395+ 'sc_previousmonth' => 'Predošlý mesiac',
 396+ 'sc_nextmonth' => 'Ďalší mesiac',
 397+ 'sc_today' => 'Dnes',
 398+ 'sc_gotomonth' => 'Prejsť na mesiac',
 399+);
 400+
 401+/** Swedish (Svenska)
 402+ * @author M.M.S.
 403+ * @author Najami
 404+ */
 405+$messages['sv'] = array(
 406+ 'sc_desc' => 'En kalender som visar semantisk datumsinformation',
 407+ 'sc_previousmonth' => 'Föregående månad',
 408+ 'sc_nextmonth' => 'Nästa månad',
 409+ 'sc_today' => 'Idag',
 410+ 'sc_gotomonth' => 'Gå till månad',
 411+);
 412+
 413+/** Telugu (తెలుగు)
 414+ * @author Veeven
 415+ */
 416+$messages['te'] = array(
 417+ 'sc_previousmonth' => 'క్రితం నెల',
 418+ 'sc_nextmonth' => 'తర్వాతి నెల',
 419+ 'sc_today' => 'ఈరోజు',
 420+ 'sc_gotomonth' => 'నెలకి వెళ్ళండి',
 421+);
 422+
 423+/** Tajik (Cyrillic) (Тоҷикӣ (Cyrillic))
 424+ * @author Ibrahim
 425+ */
 426+$messages['tg-cyrl'] = array(
 427+ 'sc_previousmonth' => 'Моҳи қаблӣ',
 428+ 'sc_nextmonth' => 'Моҳи баъдӣ',
 429+ 'sc_today' => 'Имрӯз',
 430+ 'sc_gotomonth' => 'Рафтан ба моҳ',
 431+);
 432+
 433+/** Vèneto (Vèneto)
 434+ * @author Candalua
 435+ */
 436+$messages['vec'] = array(
 437+ 'sc_previousmonth' => 'Mese preçedente',
 438+ 'sc_nextmonth' => 'Mese sucessivo',
 439+ 'sc_today' => 'Ancuó',
 440+ 'sc_gotomonth' => 'Và al mese',
 441+);
 442+
 443+/** Vietnamese (Tiếng Việt)
 444+ * @author Minh Nguyen
 445+ * @author Vinhtantran
 446+ */
 447+$messages['vi'] = array(
 448+ 'sc_previousmonth' => 'Tháng trước',
 449+ 'sc_nextmonth' => 'Tháng sau',
 450+ 'sc_today' => 'Hôm nay',
 451+ 'sc_gotomonth' => 'Đến tháng',
 452+);
 453+
 454+/** Volapük (Volapük)
 455+ * @author Malafaya
 456+ */
 457+$messages['vo'] = array(
 458+ 'sc_previousmonth' => 'Mul büik',
 459+ 'sc_nextmonth' => 'Mul sököl',
 460+ 'sc_today' => 'Adelo',
 461+);
 462+
 463+/** Chinese (Taiwan) (‪中文(台灣)‬)
 464+ * @author Roc michael
 465+ */
 466+$messages['zh-tw'] = array(
 467+ 'sc_previousmonth' => '前一月',
 468+ 'sc_nextmonth' => '次一月',
 469+ 'sc_today' => '今日',
 470+ 'sc_gotomonth' => '前往',
 471+);
 472+
Property changes on: tags/extensions/SemanticCalendar/REL_0_2_9/languages/SC_Messages.php
___________________________________________________________________
Name: svn:eol-style
1473 + native
Index: tags/extensions/SemanticCalendar/REL_0_2_9/languages/SC_Language.php
@@ -0,0 +1,33 @@
 2+<?php
 3+/**
 4+ * @author Yaron Koren
 5+ */
 6+
 7+/**
 8+ * Base class for all language classes - heavily based on Semantic MediaWiki's
 9+ * 'SMW_Language' class
 10+ */
 11+abstract class SC_Language {
 12+
 13+ protected $m_SpecialProperties;
 14+
 15+ // By default, every language has English-language aliases for
 16+ // special properties and namespaces
 17+ protected $m_SpecialPropertyAliases = array(
 18+ );
 19+
 20+ /**
 21+ * Function that returns the labels for the special properties.
 22+ */
 23+ function getSpecialPropertiesArray() {
 24+ return $this->m_SpecialProperties;
 25+ }
 26+
 27+ /**
 28+ * Aliases for special properties, if any.
 29+ */
 30+ function getSpecialPropertyAliases() {
 31+ return $this->m_SpecialPropertyAliases;
 32+ }
 33+
 34+}
Property changes on: tags/extensions/SemanticCalendar/REL_0_2_9/languages/SC_Language.php
___________________________________________________________________
Name: svn:eol-style
135 + native
Index: tags/extensions/SemanticCalendar/REL_0_2_9/skins/SC_main.css
@@ -0,0 +1,91 @@
 2+/**
 3+ * The main CSS file for the Semantic Calendar extension.
 4+ */
 5+
 6+table.navigation_table {
 7+ width: 100%;
 8+ padding-bottom: 20px;
 9+}
 10+table.navigation_table tr td.month_name {
 11+ font-size: xx-large;
 12+}
 13+table.navigation_table tr td.nav_links {
 14+ text-align: center;
 15+ font-weight: bold;
 16+}
 17+table.navigation_table tr td.nav_form {
 18+ text-align: right;
 19+}
 20+table.month_calendar {
 21+ border-collapse: collapse;
 22+}
 23+table.month_calendar tr {
 24+}
 25+table.month_calendar td {
 26+ width: 150px;
 27+ border: 1px #888888 solid;
 28+ padding: 0px;
 29+ vertical-align: top;
 30+}
 31+table.month_calendar td div.day {
 32+ min-height: 15px;
 33+ min-width: 15px;
 34+ padding: 5px;
 35+ margin: 0px 0px 3px 3px;
 36+ float: right;
 37+ text-align: center;
 38+ vertical-align: middle;
 39+ font-weight: bold;
 40+ font-size: larger;
 41+ color: #555555;
 42+ border-left: 1px #cccccc solid;
 43+ border-bottom: 1px #cccccc solid;
 44+}
 45+table.month_calendar td div.day_other_month {
 46+ background: #eeeeee;
 47+ color: #aaaaaa;
 48+ border: none;
 49+}
 50+}
 51+table.month_calendar td div.day_other_month {
 52+ background: #fcffb1;
 53+ color: #aaaaaa;
 54+}
 55+table.month_calendar td div.main {
 56+ min-height: 80px;
 57+ padding: 4px;
 58+ height: 100%;
 59+}
 60+table.month_calendar td div.main p {
 61+ line-height: 125%;
 62+}
 63+table.month_calendar td.today div.day {
 64+ background: #dbe8f9;
 65+ color: black;
 66+ border-left: 1px #999999 solid;
 67+ border-bottom: 1px #999999 solid;
 68+}
 69+table.month_calendar td.today div.main {
 70+ background: #f9f9f9;
 71+}
 72+table.month_calendar tr.header {
 73+ vertical-align: middle;
 74+}
 75+table.month_calendar tr.header td {
 76+ padding: 30px 10px 10px 10px;
 77+ border: 0;
 78+ text-align: center;
 79+ font-size: x-large;
 80+}
 81+table.month_calendar tr.weekdays {
 82+ border-top: 1px black solid;
 83+ font-weight: bold;
 84+ background: #dbe8f9;
 85+}
 86+table.month_calendar tr.weekdays td {
 87+ border: 0;
 88+ text-align: center;
 89+ vertical-align: middle;
 90+ color: #555555;
 91+ padding: 8px 2px 2px 2px;
 92+}
Property changes on: tags/extensions/SemanticCalendar/REL_0_2_9/skins/SC_main.css
___________________________________________________________________
Name: svn:eol-style
193 + native
Index: tags/extensions/SemanticCalendar/REL_0_2_9/skins/images/left-arrow.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: tags/extensions/SemanticCalendar/REL_0_2_9/skins/images/left-arrow.png
___________________________________________________________________
Name: svn:mime-type
294 + image/png
Index: tags/extensions/SemanticCalendar/REL_0_2_9/skins/images/right-arrow.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: tags/extensions/SemanticCalendar/REL_0_2_9/skins/images/right-arrow.png
___________________________________________________________________
Name: svn:mime-type
395 + image/png
Index: tags/extensions/SemanticCalendar/REL_0_2_9/COPYING
@@ -0,0 +1,348 @@
 2+The license text below "----" applies to all files within this distribution, other
 3+than those that are in a directory which contains files named "LICENSE" or
 4+"COPYING", or a subdirectory thereof. For those files, the license text contained in
 5+said file overrides any license information contained in directories of smaller depth.
 6+Alternative licenses are typically used for software that is provided by external
 7+parties, and merely packaged with the Semantic Calendar release for convenience.
 8+----
 9+
 10+ GNU GENERAL PUBLIC LICENSE
 11+ Version 2, June 1991
 12+
 13+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
 14+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 15+ Everyone is permitted to copy and distribute verbatim copies
 16+ of this license document, but changing it is not allowed.
 17+
 18+ Preamble
 19+
 20+ The licenses for most software are designed to take away your
 21+freedom to share and change it. By contrast, the GNU General Public
 22+License is intended to guarantee your freedom to share and change free
 23+software--to make sure the software is free for all its users. This
 24+General Public License applies to most of the Free Software
 25+Foundation's software and to any other program whose authors commit to
 26+using it. (Some other Free Software Foundation software is covered by
 27+the GNU Library General Public License instead.) You can apply it to
 28+your programs, too.
 29+
 30+ When we speak of free software, we are referring to freedom, not
 31+price. Our General Public Licenses are designed to make sure that you
 32+have the freedom to distribute copies of free software (and charge for
 33+this service if you wish), that you receive source code or can get it
 34+if you want it, that you can change the software or use pieces of it
 35+in new free programs; and that you know you can do these things.
 36+
 37+ To protect your rights, we need to make restrictions that forbid
 38+anyone to deny you these rights or to ask you to surrender the rights.
 39+These restrictions translate to certain responsibilities for you if you
 40+distribute copies of the software, or if you modify it.
 41+
 42+ For example, if you distribute copies of such a program, whether
 43+gratis or for a fee, you must give the recipients all the rights that
 44+you have. You must make sure that they, too, receive or can get the
 45+source code. And you must show them these terms so they know their
 46+rights.
 47+
 48+ We protect your rights with two steps: (1) copyright the software, and
 49+(2) offer you this license which gives you legal permission to copy,
 50+distribute and/or modify the software.
 51+
 52+ Also, for each author's protection and ours, we want to make certain
 53+that everyone understands that there is no warranty for this free
 54+software. If the software is modified by someone else and passed on, we
 55+want its recipients to know that what they have is not the original, so
 56+that any problems introduced by others will not reflect on the original
 57+authors' reputations.
 58+
 59+ Finally, any free program is threatened constantly by software
 60+patents. We wish to avoid the danger that redistributors of a free
 61+program will individually obtain patent licenses, in effect making the
 62+program proprietary. To prevent this, we have made it clear that any
 63+patent must be licensed for everyone's free use or not licensed at all.
 64+
 65+ The precise terms and conditions for copying, distribution and
 66+modification follow.
 67+
 68+ GNU GENERAL PUBLIC LICENSE
 69+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 70+
 71+ 0. This License applies to any program or other work which contains
 72+a notice placed by the copyright holder saying it may be distributed
 73+under the terms of this General Public License. The "Program", below,
 74+refers to any such program or work, and a "work based on the Program"
 75+means either the Program or any derivative work under copyright law:
 76+that is to say, a work containing the Program or a portion of it,
 77+either verbatim or with modifications and/or translated into another
 78+language. (Hereinafter, translation is included without limitation in
 79+the term "modification".) Each licensee is addressed as "you".
 80+
 81+Activities other than copying, distribution and modification are not
 82+covered by this License; they are outside its scope. The act of
 83+running the Program is not restricted, and the output from the Program
 84+is covered only if its contents constitute a work based on the
 85+Program (independent of having been made by running the Program).
 86+Whether that is true depends on what the Program does.
 87+
 88+ 1. You may copy and distribute verbatim copies of the Program's
 89+source code as you receive it, in any medium, provided that you
 90+conspicuously and appropriately publish on each copy an appropriate
 91+copyright notice and disclaimer of warranty; keep intact all the
 92+notices that refer to this License and to the absence of any warranty;
 93+and give any other recipients of the Program a copy of this License
 94+along with the Program.
 95+
 96+You may charge a fee for the physical act of transferring a copy, and
 97+you may at your option offer warranty protection in exchange for a fee.
 98+
 99+ 2. You may modify your copy or copies of the Program or any portion
 100+of it, thus forming a work based on the Program, and copy and
 101+distribute such modifications or work under the terms of Section 1
 102+above, provided that you also meet all of these conditions:
 103+
 104+ a) You must cause the modified files to carry prominent notices
 105+ stating that you changed the files and the date of any change.
 106+
 107+ b) You must cause any work that you distribute or publish, that in
 108+ whole or in part contains or is derived from the Program or any
 109+ part thereof, to be licensed as a whole at no charge to all third
 110+ parties under the terms of this License.
 111+
 112+ c) If the modified program normally reads commands interactively
 113+ when run, you must cause it, when started running for such
 114+ interactive use in the most ordinary way, to print or display an
 115+ announcement including an appropriate copyright notice and a
 116+ notice that there is no warranty (or else, saying that you provide
 117+ a warranty) and that users may redistribute the program under
 118+ these conditions, and telling the user how to view a copy of this
 119+ License. (Exception: if the Program itself is interactive but
 120+ does not normally print such an announcement, your work based on
 121+ the Program is not required to print an announcement.)
 122+
 123+These requirements apply to the modified work as a whole. If
 124+identifiable sections of that work are not derived from the Program,
 125+and can be reasonably considered independent and separate works in
 126+themselves, then this License, and its terms, do not apply to those
 127+sections when you distribute them as separate works. But when you
 128+distribute the same sections as part of a whole which is a work based
 129+on the Program, the distribution of the whole must be on the terms of
 130+this License, whose permissions for other licensees extend to the
 131+entire whole, and thus to each and every part regardless of who wrote it.
 132+
 133+Thus, it is not the intent of this section to claim rights or contest
 134+your rights to work written entirely by you; rather, the intent is to
 135+exercise the right to control the distribution of derivative or
 136+collective works based on the Program.
 137+
 138+In addition, mere aggregation of another work not based on the Program
 139+with the Program (or with a work based on the Program) on a volume of
 140+a storage or distribution medium does not bring the other work under
 141+the scope of this License.
 142+
 143+ 3. You may copy and distribute the Program (or a work based on it,
 144+under Section 2) in object code or executable form under the terms of
 145+Sections 1 and 2 above provided that you also do one of the following:
 146+
 147+ a) Accompany it with the complete corresponding machine-readable
 148+ source code, which must be distributed under the terms of Sections
 149+ 1 and 2 above on a medium customarily used for software interchange; or,
 150+
 151+ b) Accompany it with a written offer, valid for at least three
 152+ years, to give any third party, for a charge no more than your
 153+ cost of physically performing source distribution, a complete
 154+ machine-readable copy of the corresponding source code, to be
 155+ distributed under the terms of Sections 1 and 2 above on a medium
 156+ customarily used for software interchange; or,
 157+
 158+ c) Accompany it with the information you received as to the offer
 159+ to distribute corresponding source code. (This alternative is
 160+ allowed only for noncommercial distribution and only if you
 161+ received the program in object code or executable form with such
 162+ an offer, in accord with Subsection b above.)
 163+
 164+The source code for a work means the preferred form of the work for
 165+making modifications to it. For an executable work, complete source
 166+code means all the source code for all modules it contains, plus any
 167+associated interface definition files, plus the scripts used to
 168+control compilation and installation of the executable. However, as a
 169+special exception, the source code distributed need not include
 170+anything that is normally distributed (in either source or binary
 171+form) with the major components (compiler, kernel, and so on) of the
 172+operating system on which the executable runs, unless that component
 173+itself accompanies the executable.
 174+
 175+If distribution of executable or object code is made by offering
 176+access to copy from a designated place, then offering equivalent
 177+access to copy the source code from the same place counts as
 178+distribution of the source code, even though third parties are not
 179+compelled to copy the source along with the object code.
 180+
 181+ 4. You may not copy, modify, sublicense, or distribute the Program
 182+except as expressly provided under this License. Any attempt
 183+otherwise to copy, modify, sublicense or distribute the Program is
 184+void, and will automatically terminate your rights under this License.
 185+However, parties who have received copies, or rights, from you under
 186+this License will not have their licenses terminated so long as such
 187+parties remain in full compliance.
 188+
 189+ 5. You are not required to accept this License, since you have not
 190+signed it. However, nothing else grants you permission to modify or
 191+distribute the Program or its derivative works. These actions are
 192+prohibited by law if you do not accept this License. Therefore, by
 193+modifying or distributing the Program (or any work based on the
 194+Program), you indicate your acceptance of this License to do so, and
 195+all its terms and conditions for copying, distributing or modifying
 196+the Program or works based on it.
 197+
 198+ 6. Each time you redistribute the Program (or any work based on the
 199+Program), the recipient automatically receives a license from the
 200+original licensor to copy, distribute or modify the Program subject to
 201+these terms and conditions. You may not impose any further
 202+restrictions on the recipients' exercise of the rights granted herein.
 203+You are not responsible for enforcing compliance by third parties to
 204+this License.
 205+
 206+ 7. If, as a consequence of a court judgment or allegation of patent
 207+infringement or for any other reason (not limited to patent issues),
 208+conditions are imposed on you (whether by court order, agreement or
 209+otherwise) that contradict the conditions of this License, they do not
 210+excuse you from the conditions of this License. If you cannot
 211+distribute so as to satisfy simultaneously your obligations under this
 212+License and any other pertinent obligations, then as a consequence you
 213+may not distribute the Program at all. For example, if a patent
 214+license would not permit royalty-free redistribution of the Program by
 215+all those who receive copies directly or indirectly through you, then
 216+the only way you could satisfy both it and this License would be to
 217+refrain entirely from distribution of the Program.
 218+
 219+If any portion of this section is held invalid or unenforceable under
 220+any particular circumstance, the balance of the section is intended to
 221+apply and the section as a whole is intended to apply in other
 222+circumstances.
 223+
 224+It is not the purpose of this section to induce you to infringe any
 225+patents or other property right claims or to contest validity of any
 226+such claims; this section has the sole purpose of protecting the
 227+integrity of the free software distribution system, which is
 228+implemented by public license practices. Many people have made
 229+generous contributions to the wide range of software distributed
 230+through that system in reliance on consistent application of that
 231+system; it is up to the author/donor to decide if he or she is willing
 232+to distribute software through any other system and a licensee cannot
 233+impose that choice.
 234+
 235+This section is intended to make thoroughly clear what is believed to
 236+be a consequence of the rest of this License.
 237+
 238+ 8. If the distribution and/or use of the Program is restricted in
 239+certain countries either by patents or by copyrighted interfaces, the
 240+original copyright holder who places the Program under this License
 241+may add an explicit geographical distribution limitation excluding
 242+those countries, so that distribution is permitted only in or among
 243+countries not thus excluded. In such case, this License incorporates
 244+the limitation as if written in the body of this License.
 245+
 246+ 9. The Free Software Foundation may publish revised and/or new versions
 247+of the General Public License from time to time. Such new versions will
 248+be similar in spirit to the present version, but may differ in detail to
 249+address new problems or concerns.
 250+
 251+Each version is given a distinguishing version number. If the Program
 252+specifies a version number of this License which applies to it and "any
 253+later version", you have the option of following the terms and conditions
 254+either of that version or of any later version published by the Free
 255+Software Foundation. If the Program does not specify a version number of
 256+this License, you may choose any version ever published by the Free Software
 257+Foundation.
 258+
 259+ 10. If you wish to incorporate parts of the Program into other free
 260+programs whose distribution conditions are different, write to the author
 261+to ask for permission. For software which is copyrighted by the Free
 262+Software Foundation, write to the Free Software Foundation; we sometimes
 263+make exceptions for this. Our decision will be guided by the two goals
 264+of preserving the free status of all derivatives of our free software and
 265+of promoting the sharing and reuse of software generally.
 266+
 267+ NO WARRANTY
 268+
 269+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
 270+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
 271+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
 272+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
 273+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 274+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
 275+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
 276+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
 277+REPAIR OR CORRECTION.
 278+
 279+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
 280+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
 281+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
 282+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
 283+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
 284+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
 285+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
 286+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
 287+POSSIBILITY OF SUCH DAMAGES.
 288+
 289+ END OF TERMS AND CONDITIONS
 290+
 291+ How to Apply These Terms to Your New Programs
 292+
 293+ If you develop a new program, and you want it to be of the greatest
 294+possible use to the public, the best way to achieve this is to make it
 295+free software which everyone can redistribute and change under these terms.
 296+
 297+ To do so, attach the following notices to the program. It is safest
 298+to attach them to the start of each source file to most effectively
 299+convey the exclusion of warranty; and each file should have at least
 300+the "copyright" line and a pointer to where the full notice is found.
 301+
 302+ <one line to give the program's name and a brief idea of what it does.>
 303+ Copyright (C) <year> <name of author>
 304+
 305+ This program is free software; you can redistribute it and/or modify
 306+ it under the terms of the GNU General Public License as published by
 307+ the Free Software Foundation; either version 2 of the License, or
 308+ (at your option) any later version.
 309+
 310+ This program is distributed in the hope that it will be useful,
 311+ but WITHOUT ANY WARRANTY; without even the implied warranty of
 312+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 313+ GNU General Public License for more details.
 314+
 315+ You should have received a copy of the GNU General Public License
 316+ along with this program; if not, write to the Free Software
 317+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 318+
 319+
 320+Also add information on how to contact you by electronic and paper mail.
 321+
 322+If the program is interactive, make it output a short notice like this
 323+when it starts in an interactive mode:
 324+
 325+ Gnomovision version 69, Copyright (C) year name of author
 326+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
 327+ This is free software, and you are welcome to redistribute it
 328+ under certain conditions; type `show c' for details.
 329+
 330+The hypothetical commands `show w' and `show c' should show the appropriate
 331+parts of the General Public License. Of course, the commands you use may
 332+be called something other than `show w' and `show c'; they could even be
 333+mouse-clicks or menu items--whatever suits your program.
 334+
 335+You should also get your employer (if you work as a programmer) or your
 336+school, if any, to sign a "copyright disclaimer" for the program, if
 337+necessary. Here is a sample; alter the names:
 338+
 339+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
 340+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
 341+
 342+ <signature of Ty Coon>, 1 April 1989
 343+ Ty Coon, President of Vice
 344+
 345+This General Public License does not permit incorporating your program into
 346+proprietary programs. If your program is a subroutine library, you may
 347+consider it more useful to permit linking proprietary applications with the
 348+library. If this is what you want to do, use the GNU Library General
 349+Public License instead of this License.
Property changes on: tags/extensions/SemanticCalendar/REL_0_2_9/COPYING
___________________________________________________________________
Name: svn:eol-style
1350 + native
Index: tags/extensions/SemanticCalendar/REL_0_2_9/OBSOLETE
@@ -0,0 +1,5 @@
 2+This extension is obsolete; it has been replaced by the 'calendar' format of
 3+the Semantic Result Formats extension:
 4+
 5+http://www.mediawiki.org/wiki/Extension:Semantic_Result_Formats
 6+http://www.mediawiki.org/wiki/Extension:Semantic_Result_Formats/calendar_format
Index: tags/extensions/SemanticCalendar/REL_0_2_9/README
@@ -0,0 +1,20 @@
 2+== About ==
 3+
 4+Semantic Calendar is an extension to MediaWiki that works in
 5+conjunction with another extension, Semantic MediaWiki, to provide
 6+a drilldown interface for all the data on a site.
 7+For more information on Semantic Calendar, see the extension
 8+homepage at
 9+http://www.mediawiki.org/wiki/Extension:Semantic_Calendar
 10+
 11+Notes on installing Semantic Calendar can be found in the file INSTALL.
 12+
 13+== Credits ==
 14+
 15+Semantic Calendar was written by Yaron Koren, with important code
 16+contributions from Terry Hurlbut.
 17+
 18+== Contact ==
 19+
 20+Comments, questions, suggestions and bug reports should be
 21+sent to Yaron at yaron57@gmail.com.
Property changes on: tags/extensions/SemanticCalendar/REL_0_2_9/README
___________________________________________________________________
Name: svn:eol-style
122 + native

Status & tagging log