Hi Guys,
Installed this module on a vanilla ZC 1.3.8a install and all seems to work fine EXCEPT the sidebox contains that whole site!
Any ideas?
You can see it here:
http://tinyurl.com/53djkt
Hi Guys,
Installed this module on a vanilla ZC 1.3.8a install and all seems to work fine EXCEPT the sidebox contains that whole site!
Any ideas?
You can see it here:
http://tinyurl.com/53djkt
Thanks falstaffpac for the info on the calendar !
Without the knowledge of knowing that the script needed cleaning up - I would have rode the module off.
But after cleaning up, my customer is now happy her ZenCart Site has a calendar :)
And a working one at that !
Appreciate your posts !
Brad :)
Hi Rhonda,
I would suggest cleaning all files.
From memory, there was only a couple of files that did not needed touching.
But all the others I did.
And it did take me a go or two to get them all.
You only need one line to be not structured properly for things not to work
Hence the reason, for extra scanning of each file.
My Customers website for Reference for how the current version looks.
Have a great day :)
Brad
Thank you a nice site, but boy it would be nice if someone could just zip up the cleaned up code! I am not an expert on PHP so this is taking some effort! Rhonda
I'm a little reluctant to post these files because:
1) It is not my work
2) I am not a programmer so I cannot offer support
Unfortunately, this script has not received much support lately and I think its pretty cool when it works. So, I've included the code of the 2 files I formatted below. I hope this is enough to get your calendar working. Beyond this, I don't know that I can be of much help.
/includes/classes/calendar.php
/modules/events_calendar_listing.phpPHP Code:<?php
/** --------------------------------------------------------------------- */
/** zen-cart Open Source E-commerce */
/** --------------------------------------------------------------------- */
/** Copyright (c) 2003 The zen-cart developers */
/** */
/** http://www.zen-cart.com/index.php */
/** */
/** Portions Copyright (c) 2003 osCommerce */
/** ---------------------------------------------------------------------- */
/** This source file is subject to version 2.0 of the GPL license, */
/** that is bundled with this package in the file LICENSE, and is */
/** available through the world-wide-web at the following url: */
/** http://www.zen-cart.com/license/2_0.txt. */
/** If you did not receive a copy of the zen-cart license and are unable */
/** to obtain it through the world-wide-web, please send a note to */
/** [email protected] so we can mail you a copy immediately. */
/** ---------------------------------------------------------------------- */
/** $Id: events_manager.php 2007-07-10 [email protected] */
class Calendar
{
function Calendar()
{
}
function getDayNames()
{
return $this->dayNames;
}
function setDayNames($names)
{
$this->dayNames = $names;
}
function getMonthNames()
{
$this->monthNames;
}
function setMonthNames($names)
{
$this->monthNames = $names;
}
function getStartDay()
{
return $this->startDay;
}
function setStartDay($day)
{
$this->startDay = $day;
}
function getStartMonth()
{
return $this->startMonth;
}
function setStartMonth($month)
{
$this->startMonth = $month;
}
function getCalendarLink($month, $year)
{
return "&_month=$month&_year=$year";
}
function pad($s, $n)
{
$r = $s; while (strlen($r) < $n)
{
$r = "0".$r;
}
return $r;
}
function getFileName($day, $month, $year)
{
return $this->pad($year, 4) ."-". $this->pad($month, 2) ."-". $this->pad($day, 2);
}
function getDbLink($day, $month, $year)
{
global $db;
$dateString = $this->getFileName($day, $month, $year);
$event = $db->Execute("select start_date from " . TABLE_EVENTS_CALENDAR . " where '" . $dateString . "' between start_date and end_date");
if($event->RecordCount() > 0)
{
while (!$event->EOF)
{
/* get the first event for this day's start date for the link */
list($year_start, $month_start, $day_start) = split ('[/.-]', $event->fields['start_date']);
break; $event->MoveNext();
}
$bname = FILENAME_EVENTS_CALENDAR;
return "index.php?main_page=".$bname."&_day=".$day_start."&_month=".$month_start."&_year=".$year_start."";
}
}
function getCurrentMonthView()
{
$d = getdate(time());
return $this->getMonthView($d["mon"], $d["year"]);
}
function getCurrentYearView()
{
$d = getdate(time());
return $this->getYearView($d["year"]);
}
function getMonthView($month, $year)
{
return $this->getMonthHTML($month, $year);
}
function getYearView($year)
{
return $this->getYearHTML($year);
}
function getDaysInMonth($month, $year)
{
if ($month < 1 || $month > 12)
{
return 0;
}
$d = $this->daysInMonth[$month - 1];
if ($month == 2)
{
if ($year%4 == 0)
{
if ($year%100 == 0)
{
if ($year%400 == 0)
{
$d = 29;
}
}
else
{
$d = 29;
}
}
}
return $d;
}
function getMonthHTML($m, $y, $show = 1)
{
$s = "";
$a = $this->adjustDate($m, $y);
$month = $a[0];
$year = $a[1];
$daysInMonth = $this->getDaysInMonth($month, $year);
$date = getdate(mktime(12, 0, 0, $month, 1, $year));
$first = $date["wday"];
$monthName = $this->monthNames[$month - 1];
$prev = $this->adjustDate($month - 1, $year);
$next = $this->adjustDate($month + 1, $year);
$this_month = date('m');
$this_year = date('Y');
$header = $monthName . (($show > 0) ? " " . $year : "");
$D = $this->monthNames[11].' ';
$J = $this->monthNames[0].' ';
if ($show == 1)
{
$prevMonth = '<a href=index.php?main_page='. FILENAME_EVENTS_CALENDAR_INCLUDE . '&eventmode=eventframe' .$this->getCalendarLink($prev[0], $prev[1]).' target=calendar title='. $this->monthNames[$month - 2] . (($month-2 < 1) ? $D.($year-1) : ' '. $year) .' ><</a>';
$nextMonth = '<a href=index.php?main_page='. FILENAME_EVENTS_CALENDAR_INCLUDE . '&eventmode=eventframe' . $this->getCalendarLink($next[0], $next[1]).' target=calendar title='. $this->monthNames[$month + 0] . (($month+0 > 11) ? $J.($year+1) : ' '. $year) .' >></a>';
}
else
{
$prevMonth = "";
$nextMonth = "";
}
$s .= "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n";
$s .= "<tr class=\"calendarHeader\">\n";
$linkHeader = zen_href_link(FILENAME_EVENTS_CALENDAR, "_month=$month&_year=$year");
$s .= "<td align=\"left\"><a href=\"$linkHeader\" target=\"_parent\">$header</a></td>\n";
$s .= "<td align=\"center\" class=\"yearHeader\">\n";
if(mktime (0,0,0,$month ,0,$year) > mktime (0,0,0,$this_month ,0,$this_year))
{
$s .= $prevMonth;
}
else
{
$s .= $prevMonth;
}
$s .= "</td>\n";
$s .= "<td align=\"center\" class=\"yearHeader\">$nextMonth</td></tr>\n";
$s .= "<tr><td colspan=\"3\">\n";
$s .= "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" class=\"calendarMonth\"><tr class=\"calendarHeader\">\n";
$s .= "<td align=\"center\" valign=\"middle\">" . $this->dayNames[($this->startDay)%7] . "</td>\n";
$s .= "<td align=\"center\" valign=\"middle\">" . $this->dayNames[($this->startDay+1)%7] . "</td>\n";
$s .= "<td align=\"center\" valign=\"middle\">" . $this->dayNames[($this->startDay+2)%7] . "</td>\n";
$s .= "<td align=\"center\" valign=\"middle\">" . $this->dayNames[($this->startDay+3)%7] . "</td>\n";
$s .= "<td align=\"center\" valign=\"middle\">" . $this->dayNames[($this->startDay+4)%7] . "</td>\n";
$s .= "<td align=\"center\" valign=\"middle\">" . $this->dayNames[($this->startDay+5)%7] . "</td>\n";
$s .= "<td align=\"center\" valign=\"middle\">" . $this->dayNames[($this->startDay+6)%7] . "</td>\n";
$s .= "</tr>\n";$d = $this->startDay + 1 - $first;
while ($d > 1)
{
$d -= 7;
}
$today = getdate(time());
$start_day = $this->getStartDay();
$click = BOX_CLICK_LINK;
while ($d <= $daysInMonth)
{
$s .= "<tr>\n";
for ($i = 0; $i < 7; $i++)
{
$class = (($i < (6-$start_day) &! $i <= $start_day) ? (($year == $today["year"] && $month == $today["mon"] && $d == $today["mday"]) ? "calendarToday" : "calendar" ) : (($year == $today["year"] && $month == $today["mon"] && $d == $today["mday"]) ? "calendarToday" : "calendarWeekend"));
if ($d > 0 && $d <= $daysInMonth)
{
$link = $this->getDbLink($d, $month, $year);
$s .= (($link == "") ? "<td class=\"$class\" align=\"left\" valign=\"bottom\">" : "<td class=\"$class\" onclick=top.window.location=\"$link\">" );
if($show == 1)
{
$s .= (($link == "") ? $d : "<a href=\"$link\" target=\"_parent\" title=\"$click\">$d</a>");
}
else
{
$s .= (($link == "") ? $d : "<a href=\"$link\" title=\"$click\">$d</a>");
}
}
else
{
$s .= "<td class=\"empty\"> ";
}
$s .= "</td>\n";
$d++;
}
$s .= "</tr>\n";
}
$s .= "</table>\n";
$s .= "</td></tr></table>\n";
return $s;
}
function getYearHTML($year)
{
$year_view = 1;
$s = "";
$prev = 'index.php?main_page='.FILENAME_EVENTS_CALENDAR . $this->getCalendarLink(1, $year - 1) .'&year_view=1';
$next = 'index.php?main_page='.FILENAME_EVENTS_CALENDAR . $this->getCalendarLink(1, $year + 1) .'&year_view=1';
$this_year = date('Y');
$s .= "<table align=\"center\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" >\n";
$s .= "<tr>";
if($year > $this_year)
{
$s .= "<td class=\"yearHeader\" align=\"center\" align=\"left\">" . (($prev == "") ? " " : "<a href=\"$prev\"><<</a>") . "</td>\n";
}
else
{
$s .= "<td class=\"yearHeader\" align=\"center\" align=\"left\"> </td>\n";
}
$s .= "<td height=\"20\" class=\"yearHeader\" align=\"center\">" . (($this->startMonth > 1) ? $year . " - " . ($year + 1) : $year) ."</td>\n";
$s .= "<td class=\"yearHeader\" align=\"center\" align=\"right\">" . (($next == "") ? " " : "<a href=\"$next\">>></a>") . "</td>\n";
$s .= "</tr>\n"; $s .= "<tr>"; $s .= "<td valign=\"top\">" . $this->getMonthHTML(0 + $this->startMonth, $year, 0) ."</td>\n";
$s .= "<td valign=\"top\">" . $this->getMonthHTML(1 + $this->startMonth, $year, 0) ."</td>\n";
$s .= "<td valign=\"top\">" . $this->getMonthHTML(2 + $this->startMonth, $year, 0) ."</td>\n";
$s .= "</tr>\n";
$s .= "<tr>\n";
$s .= "<td valign=\"top\">" . $this->getMonthHTML(3 + $this->startMonth, $year, 0) ."</td>\n";
$s .= "<td valign=\"top\">" . $this->getMonthHTML(4 + $this->startMonth, $year, 0) ."</td>\n";
$s .= "<td valign=\"top\">" . $this->getMonthHTML(5 + $this->startMonth, $year, 0) ."</td>\n";
$s .= "</tr>\n";
$s .= "<tr>\n";
$s .= "<td valign=\"top\">" . $this->getMonthHTML(6 + $this->startMonth, $year, 0) ."</td>\n";
$s .= "<td valign=\"top\">" . $this->getMonthHTML(7 + $this->startMonth, $year, 0) ."</td>\n";
$s .= "<td valign=\"top\">" . $this->getMonthHTML(8 + $this->startMonth, $year, 0) ."</td>\n";
$s .= "</tr>\n";
$s .= "<tr>\n";
$s .= "<td valign=\"top\">" . $this->getMonthHTML(9 + $this->startMonth, $year, 0) ."</td>\n";
$s .= "<td valign=\"top\">" . $this->getMonthHTML(10 + $this->startMonth, $year, 0) ."</td>\n";
$s .= "<td valign=\"top\">" . $this->getMonthHTML(11 + $this->startMonth, $year, 0) ."</td>\n";
$s .= "</tr>\n";
$s .= "</table>\n";
return $s;
}
function adjustDate($month, $year)
{
$a = array();
$a[0] = $month;
$a[1] = $year;
while ($a[0] > 12)
{
$a[0] -= 12;
$a[1]++;
}
while ($a[0] <= 0)
{
$a[0] += 12;
$a[1]--;
}
return $a;
}
/*
The start day of the week. This is the day that appears in the first column
of the calendar. Sunday = 0.
*/
var $startDay = 0;
/*
The start month of the year. This is the month that appears in the first slot
of the calendar in the year view. January = 1.
*/
var $startMonth = 1;
/*
The labels to display for the days of the week. The first entry in this array
represents Sunday.
*/
var $dayNames = array("S", "M", "T", "W", "T", "F", "S");
/*
The labels to display for the months of the year. The first entry in this array
represents January.
*/
var $monthNames = array("January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December");
/*
The number of days in each month. You're unlikely to want to change this...
The first entry in this array represents January.
*/
var $daysInMonth = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
}
?>
PHP Code:<?php
/** --------------------------------------------------------------------- */
/** zen-cart Open Source E-commerce */
/** --------------------------------------------------------------------- */
/** Copyright (c) 2003 The zen-cart developers */
/** */
/** [url]http://www.zen-cart.com/index.php[/url] */
/** */
/** Portions Copyright (c) 2003 osCommerce */
/** ---------------------------------------------------------------------- */
/** This source file is subject to version 2.0 of the GPL license, */
/** that is bundled with this package in the file LICENSE, and is */
/** available through the world-wide-web at the following url: */
/** [url]http://www.zen-cart.com/license/2_0.txt[/url]. */
/** If you did not receive a copy of the zen-cart license and are unable */
/** to obtain it through the world-wide-web, please send a note to */
/** [email protected] so we can mail you a copy immediately. */
/** ---------------------------------------------------------------------- */
/** $Id: events_manager.php 2007-07-10 [email protected] */
if(isset($listingTitle))
{
echo '<H2>' . $listingTitle . '</H2>';
}
$events_split = new splitPageResults($events_query_raw, MAX_DISPLAY_NUMBER_EVENTS, 'DAYOFMONTH(start_date)');
$events_query = $db->Execute($events_query_raw);
/** Show Paging Header ? */
if (($events_split->number_of_rows > 0) && ((PREV_NEXT_BAR_LOCATION == '1') || (PREV_NEXT_BAR_LOCATION == '3')))
{
?>
</td>
</tr>
<tr>
<td>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr>
<td class="smallText">
<?php
if(isset($displayPagingSuffix))
{
$displayPagingSuffix = ' : ' . $displayPagingSuffix;
}
echo $events_split->display_count(TEXT_DISPLAY_NUMBER_OF_PAGES . $displayPagingSuffix);
?>
</td>
<td align="right" class="smallText">
<?php
echo TEXT_RESULT_PAGE . ' ' . $events_split->display_links(MAX_DISPLAY_PAGE_LINKS, zen_get_all_get_params(array('page', 'info', 'x', 'y')));
?>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<?php
}
$row = 0;
$list_box_contents = array();
/** Add headings ... */
$list_box_contents[$row][] = array('align' => 'left',
'params' => 'class="event_header"',
'text' => ' ' . TEXT_EVENT_TITLE . ' ');
$list_box_contents[$row][] = array('align' => 'center',
'params' => 'class="event_header"',
'text' => ' Start ' . TEXT_EVENT_DATE . ' ');
$list_box_contents[$row][] = array('align' => 'center',
'params' => 'class="event_header"',
'text' => ' End ' . TEXT_EVENT_DATE . ' ');
/** Add listing rows ... */
$events = $db->Execute($events_split->sql_query);
/** while($events = zen_db_fetch_array($events_query)) */
while (!$events->EOF)
{
$row++;
$list_box_contents[$row][] = array('align' => 'left',
'params' => 'class="event_description"',
'text' => '<a href="index.php?main_page='
. FILENAME_EVENTS_CALENDAR . '&select_event=' . $events->fields['event_id'] . '">' . $events->fields['title'] . '</a>');
$events->MoveNext();
list($year, $month, $day) = split ( '[/.-]', $events->fields['start_date']);
$list_box_contents[$row][] = array( 'align' => 'center',
'params' => 'class="event_description"',
'text' => date("F j, Y", mktime(0, 0, 0, $month, $day, $year)));
$endDate = '-';
if(isset($events->fields['end_date']) && trim($events->fields['end_date']) != '')
{
list($year, $month, $day) = split ('[/.-]', $events->fields['end_date']);
$endDate = date("F j, Y", mktime(0, 0, 0, $month, $day, $year));
}
$list_box_contents[$row][] = array('align' => 'center',
'params' => 'class="event_description"',
'text' => $endDate);
}
/** Show listing */
require($template->get_template_dir('tpl_tabular_display.php',DIR_WS_TEMPLATE, $current_page_base,'common'). '/tpl_tabular_display.php');
/** new productListingBox($list_box_contents); */
if (($events_split->number_of_rows > 0) && ((PREV_NEXT_BAR_LOCATION == '2') || (PREV_NEXT_BAR_LOCATION == '3')))
{
?>
</td>
</tr>
<tr>
<td>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr>
<td class="smallText">
<?php
if(isset($displayPagingSuffix))
{
$displayPagingSuffix = ' : ' . $displayPagingSuffix;
}
echo $events_split->display_count(TEXT_DISPLAY_NUMBER_OF_PAGES . $displayPagingSuffix);
?>
</td>
<td align="right" class="smallText">
<?php echo TEXT_RESULT_PAGE . ' ' . $events_split->display_links(MAX_DISPLAY_PAGE_LINKS, zen_get_all_get_params(array('page', 'info', 'x', 'y'))); ?> </td>
</tr>
</table>
</td>
</tr>
<tr>
<td><?php
}
else
{
?>
<table border=0 width="100%" cellspacing="0" cellpadding="4">
<tr>
<td class="main"><br><?php echo TEXT_NO_EVENTS; ?></td>
</tr>
</table>
<?php
}
?>
Thank you so much for this! You are definitely my hero! Rhonda
falstaffpac
Many thanks for your time in improving the readability.
Thanks falstaffpac,
you have a great heart :)![]()