Calendar rewrite progress. Please see dev forum. Don't hurt me.

This commit is contained in:
Doug Bell 2006-12-02 10:26:53 +00:00
parent 39d6ac8584
commit 5b29b0dfcb
15 changed files with 5640 additions and 610 deletions

View file

@ -0,0 +1,280 @@
#CalendarDay00000000001
#create
#namespace:Calendar/Day
#url:default-calendar-day
#title:Default Calendar Day
#menuTitle:Default Calendar Day
<tmpl_if admin>
<p><tmpl_var adminControls></p>
</tmpl_if>
<tmpl_if displayTitle>
<h1><tmpl_var title></h1>
</tmpl_if>
<tmpl_if description>
<p><tmpl_var description></p>
</tmpl_if>
<table cellspacing="0" cellpadding="0" width="600" id="mCAL">
<tr>
<td style="text-align:right">
<a href="<tmpl_var urlDay>" class="tab active">Day</a>
<a href="<tmpl_var urlWeek>" class="tab">Week</a>
<a href="<tmpl_var urlMonth>" class="tab">Month</a>
<a href="/<tmpl_var url>?func=search" class="tab">Search</a>
<div class="controls">
<tmpl_if editor><a href="/<tmpl_var url>?func=add;class=WebGUI::Asset::Event">Add Event</a></tmpl_if>
<!--&bull; <a href="#">Print</a>
&bull; <a href="#">Subscribe</a>-->
</div>
</td>
</tr>
<tr>
<td class="months">
<div style="padding:3px 0px;">
<a href="<tmpl_var pagePrevUrl>" style="font-weight:bold;margin-right:8px;">&laquo; Previous Day
</a>&bull;
<span style="margin-right:8px;margin-left:8px;" class="monthLink current"><tmpl_var dayAbbr>, <tmpl_var monthAbbr> <tmpl_var dayOfMonth>. <tmpl_var year></span>&bull;
<a href="<tmpl_var pageNextUrl>" style="font-weight:bold;padding-left:8px">Next Day &raquo;</a>
</div>
</td>
</tr>
<tr>
<td>
<div class="curMonth">
<tmpl_var dayName>, <tmpl_var monthName> <tmpl_var dayOfMonth>, <tmpl_var year>
</div>
</td>
</tr>
<tr>
<td style="width:100%">
<table width="100%" cellspacing="2" cellpadding="0">
<tmpl_loop hours><tr>
<td class="heading">
<div style="padding:4px;"><tmpl_var hour12>:00<tmpl_var hourM></div>
</td>
<td class="day">
<ul class="eventList">
<tmpl_loop events><li>
<a href="/<tmpl_var eventUrl>"><tmpl_var eventTitle></a>
</tmpl_loop></li>
</ul>
</td>
</tr></tmpl_loop>
</table>
</td>
</tr>
</table>
~~~
<style type="text/css">
/* Edited with EditCSS */
/**** Inline STYLE-tag style sheet ****/
body * {
margin:0px;
}
#mCAL {
}
#mCAL td {
font-size:10px;
font-family:arial;
}
#mCAL .tab {
border-bottom-style:none;
font-weight:bold;
padding: 2px 15px 0px 15px;
text-align;center;
background-color:#E9ECF3;
-moz-border-radius-topLeft:10px;
-moz-border-radius-topRight:10px;
color:#7588B5;
text-decoration:none;
font-size:10pt;
display:block;
float:left;
margin-right:5px;
}
#mCAL .tab:hover {
color:black;
}
#mCAL .active {
background-color:#DFE3EE;
color:#404F77;
border-bottom:solid #DFE3EE 1px;
}
#mCAL .controls {
float:right;
vertical-align:bottom;
}
#mCAL a {
font-size:11px;
color:#517AC8;
}
#mCAL .heading {
width:200px;
-moz-box-sizing:border-box;
background-color:#ABB7D1;
text-align:center;
font-weight:bold;
color:#374664;
font-size:9px;
letter-spacing:1px;
text-transform:uppercase;
text-align:right;
vertical-align:top;
-moz-border-radius-bottomRight:8px;
-moz-border-radius-topRight:8px;
}
#mCAL .day {
background-color:#E9ECF3;
width:400px;
position:relative;
vertical-align:top;
-moz-border-radius-topLeft:8px;
-moz-border-radius-bottomLeft:8px;
border:solid #CCD2E3 1px;
}
#mCAL .curDay {
background-color:#FFE4B3;
border-color:orange;
}
#mCAL .dayWrapper {
height:100%;
width:100%;
position:relative;
z-index:0;
margin:0px;
padding:0px 0px 2px 5px;;
-moz-box-sizing:border-box;
}
html > body #mCAL .dayWrapper {
height:auto;
min-height:100%;
}
#mCAL .dayNum {
width:100%;
text-align:right;
}
#mCAL span.border {
text-align:center;
padding:5px;
font-weight:bold;
-moz-border-radius-bottomRight:5px;
-moz-border-radius-topLeft:5px;
color:black;
border-right:solid #CCD2E3 1px;
border-bottom: solid #CCD2E3 1px;
background-color:#ABB7D1;
-moz-box-sizing:border-box;
top:5px;
position:relative;
}
#mCAL .curDay span.border {
background-color:orange;
color:black;
border-color:orange;
}
#mCAL .event {
padding:3px;
padding-top:8px;
clear:left;
font-weight:bold;
}
#mCAL .event a {
color:#4F4F4F;
text-decoration:none;
font-size:9px;
}
#mCAL .moreButton {
border-style:none;
z-index:5;
position:absolute;
bottom:0px;
width:100%;
height:9px;
background-color:#517AC8;
font-size:5px;
text-align:center;
}
#mCAL .moreButton:hover {
background-color:orange;
}
#mCAL .empty {
border-style:none;
background-color:#CCD2E3;
-moz-border-radius:10px;
}
#mCAL .months {
text-align:center;
background-color:#DFE3EE;
}
#mCAL .months a {
color:#517AC8;
text-decoration:none;
}
#mCAL .months .monthLink {
text-decoration:none;
padding-left:5px;
padding-right:5px;
color:#AAB8D5;
font-size:12px;
font-weight:bold;
}
#mCAL .months .current {
color:#517AC8;
}
#mCAL .current {
font-weight:bold;
color:#517AC8;
background-color:#fff;
-moz-border-radius:5px;
}
#mCAL .curMonth {
text-align:center;
margin: 2px 0px;
background-color:#517AC8;
color:white;
font-size:14px;
font-weight:bold;
}
/* MORE STYLES */
#more1 {
position:absolute;
top:170px;
left:10px;
}
* html #more1 {
top:158px;
left:12px;
}
.moreDisplay {
border:solid orange 1px;
border-top:solid orange 2px;
font-family:arial;
font-size:10px;
width:300px;
padding:2px;
background-color:#FFD3A8;
z-index:10;
}
ul.eventList {
margin:0px;
padding:0px;
margin-left:30px;
color:#526896;
}
</style>

View file

@ -0,0 +1,167 @@
#CalendarEventEdit00001
#create
#namespace:Calendar/EventEdit
#url:default-calendar-event-edit
#title:Default Calendar Event Edit
#menuTitle:Default Calendar Event Edit
<tmpl_var formHeader>
<tmpl_if formErrors>
<h1>Errors!</h1>
<ul>
<tmpl_loop formErrors>
<li><tmpl_var message></li>
</tmpl_loop>
</ul>
</tmpl_if>
<table id="tabs" cellpadding="0" cellspacing="0" border="0">
<tr>
<td style="text-align:left;">
<a href="#" onclick="toggleTab('event'); return false;" class="tab active">Events</a>
<a href="#" onclick="toggleTab('recursion'); return false;" class="tab">Recurrence</a>
<tmpl_var formSave>
<tmpl_var formCancel>
</td>
</tr>
</table>
<!-- Event tab -->
<table id="event" cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="border" style="text-align:left;width:700px">
<table cellpadding="2" style="margin:5px;">
<tr>
<td class="label" style="text-align:right">Event Title</td>
<td><tmpl_var formTitle></td>
</tr>
<tr>
<td class="label" style="text-align:right">Short Title</td>
<td><tmpl_var formMenuTitle></td>
</tr>
<tr>
<td class="label" style="text-align:right">Location</td>
<td><tmpl_var formLocation></td>
</tr>
<tr>
<td class="label" style="text-align:right;vertical-align:top">Description</td>
<td><tmpl_var formDescription></td>
</tr>
<tr>
<td class="label" style="text-align:right;vertical-align:top">Start Date</td>
<td><tmpl_var formStartDate></td>
</tr>
<tr>
<td class="label" style="text-align:right;vertical-align:top">End Date</td>
<td><tmpl_var formEndDate></td>
</tr>
<tr>
<td class="label" style="text-align:right;vertical-align:top">Time</td>
<td><tmpl_var formTime></td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr>
<td class="label" style="text-align:right;vertical-align:top;">Related Links</td>
<td><tmpl_var formRelatedLinks></td>
</tr>
</table>
</td>
</tr>
</table>
<table style="display: none; margin: 5px;" id="recursion" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="label" style="text-align:right;vertical-align:top">Recurrence Pattern</td>
<td><tmpl_var formRecurPattern></td>
</tr>
<tr>
<td class="label" style="text-align:right;vertical-align:top">Recurrence Range</td>
<td>
<p style="float: left; margin: 5px;">Start:</p>
<div style="float: left; margin: 5px;"><tmpl_var formRecurStart></div>
<p style="float: left; clear: left; margin: 5px;">End:</p>
<div style="float: left; margin: 5px;"><tmpl_var formRecurEnd></div>
</td>
</tr>
<!--<tr>
<td class="label" style="text-align:right;vertical-align:top">Include Dates</td>
<td><tmpl_var formRecurInclude></td>
</tr>
<tr>
<td class="label" style="text-align:right;vertical-align:top">Exclude Dates</td>
<td><tmpl_var formRecurExclude></td>
</tr>-->
</table>
<tmpl_var formFooter>
<script type="text/javascript">
var old_tab = document.getElementById("event");
function toggleTab(id)
{
if (old_tab)
old_tab.style.display = "none";
element = document.getElementById(id);
element.style.display = "block";
old_tab = element;
}
</script>
~~~
<script src="/extras/yui/build/yahoo/yahoo.js" type="text/javascript"></script>
<script src="/extras/yui/build/event/event.js" type="text/javascript"></script>
<script src="/extras/yui/build/dom/dom.js" type="text/javascript"></script>
<script src="/extras/yui/build/dragdrop/dragdrop.js" type="text/javascript"></script>
<script src="/extras/yui/build/logger/logger.js" type="text/javascript"></script>
<script src="/extras/yui-ext/yui-ext-core.js" type="text/javascript"></script>
<script src="/extras/yui-ext/resizable-lib.js" type="text/javascript"></script>
<link href="/extras/yui-ext/resources/css/resizable.css" rel="stylesheet" type="text/css" />
<script src="/extras/textFix.js" type="text/javascript"></script>
<script src="/extras/tinymce2/jscripts/tiny_mce/tiny_mce.js" type="text/javascript"></script>
<script src="/extras/tinymce2/jscripts/webgui.js" type="text/javascript"></script>
<script src="/extras/tabs/tabs.js" type="text/javascript"></script>
<style type="text/css">
body * {
margin:0px;
}
table td {
font-family:Arial;
font-size:10px;
}
#tabs a {
border:solid #F0F0F0 1px;
-moz-border-radius-topLeft: 20px;
-moz-border-radius-topRight: 20px;
font-weight:bold;
padding: 2px 15px 0px 15px;
text-align;center;
background-color:#FBFBFB;
border-top:solid #F0F0F0 2px;
color:#b0b0b0;
text-decoration:none;
font-size:10pt;
display:block;
float:left;
margin-right:5px;
}
#tabs a:hover {
color:black;
}
#tabs .active {
background-color:#F0F0F0;
color:#404040;
}
table a {
font-size:11px;
color:#447BFD;
}
input {
font-size:10px;
border:gray solid 1px;
background-color:#F0F0F0;
cursor:pointer;
}
</style>

View file

@ -0,0 +1,220 @@
#CalendarEvent000000001
#create
#namespace:Calendar/Event
#url:default-calendar-event
#title:Default Calendar Event
#menuTitle:Default Calendar Event
<table cellspacing="0" cellpadding="0" width="600" id="mCAL" border="0">
<tr>
<td style="text-align:right;border-bottom:solid white 1px;">
<a href="<tmpl_var urlDay>" class="tab">Day</a>
<a href="<tmpl_var urlWeek>" class="tab">Week</a>
<a href="<tmpl_var urlMonth>" class="tab">Month</a>
<a href="<tmpl_var urlParent>?func=search" class="tab">Search</a>
<div class="controls">
<a href="/<tmpl_var url>?func=edit">Edit</a> &bull; <a href="?func=delete">Delete</a>
</div>
</td>
</tr>
<tr>
<td class="months">
<div style="float: left;"><a href="<tmpl_var prevUrl>">&lt;&lt; Previous Event</a></div>
<div style="float: right;"><a href="<tmpl_var nextUrl>">Next Event &gt;&gt;</a></div>
</td>
</tr>
<tr>
<td class="months">
Event Details
</td>
</tr>
<tr>
<td style="width:100%">
<table width="100%" cellspacing="2" cellpadding="0">
<tr>
<td class="heading">
<div style="padding:4px;">Event Title</div>
</td>
<td class="day">
<div class="eventWrapper">
<tmpl_var title>
</div>
</td>
</tr>
<tr>
<td class="heading">
<div style="padding:4px;">Location</div>
</td>
<td class="day">
<div class="eventWrapper">
<tmpl_var location>
</div>
</td>
</tr>
<tr>
<td class="heading">
<div style="padding:4px;">Description</div>
</td>
<td class="day">
<div class="eventWrapper"><tmpl_var description></div>
</td>
</tr>
<tr>
<td class="heading">
<div style="padding:4px;">Scheduled</div>
</td>
<td class="day">
<div class="eventWrapper">
<tmpl_var startDateDayName>,
<tmpl_var startDateMonthName>
<tmpl_var startDateDayOfMonth>
<tmpl_var startDateHour>:<tmpl_var startDateMinute> <tmpl_var startDateM> &bull; <tmpl_var endDateDayName>,
<tmpl_var endDateMonthName>
<tmpl_var endDateDayOfMonth>
<tmpl_var endDateHour>:<tmpl_var endDateMinute> <tmpl_var endDateM>
</div>
</td>
</tr>
<tr>
<td class="heading">
<div style="padding:4px;">Related Material</div>
</td>
<td class="day"> <div class="eventWrapper"><tmpl_loop relatedLinks>
<a href="<tmpl_var link.url>"><tmpl_var linkUrl></a><br />
</tmpl_loop></div>
</td>
</tr>
</table>
</td>
</tr>
</table>
~~~
<style type="text/css">
/* Edited with EditCSS */
/**** Inline STYLE-tag style sheet ****/
body * {
margin:0px;
}
#mCAL {
}
#mCAL td {
font-size:10px;
font-family:arial;
}
#mCAL .tab {
border-bottom-style:none;
font-weight:bold;
padding: 2px 15px 0px 15px;
text-align;center;
background-color:#E9ECF3;
-moz-border-radius-topLeft:10px;
-moz-border-radius-topRight:10px;
color:#7588B5;
text-decoration:none;
font-size:10pt;
display:block;
float:left;
margin-right:5px;
}
#mCAL .tab:hover {
color:black;
}
#mCAL .active {
background-color:#DFE3EE;
color:#404F77;
border-bottom:solid #DFE3EE 1px;
}
#mCAL a {
font-size:11px;
color:#517AC8;
}
#mCAL .heading {
width:200px;
-moz-box-sizing:border-box;
background-color:#ABB7D1;
text-align:center;
font-weight:bold;
color:#374664;
font-size:9px;
letter-spacing:1px;
text-transform:uppercase;
text-align:right;
vertical-align:top;
-moz-border-radius-bottomRight:8px;
-moz-border-radius-topRight:8px;
}
#mCAL .day {
background-color:#E9ECF3;
width:400px;
position:relative;
vertical-align:top;
-moz-border-radius-topLeft:8px;
-moz-border-radius-bottomLeft:8px;
border:solid #CCD2E3 1px;
}
#mCAL .months {
text-align:center;
background-color:#DFE3EE;
color:#3E4D75;
font-size:14px;
font-weight:bold;
}
#mCAL .months a {
color:#517AC8;
text-decoration:none;
}
#mCAL .months .monthLink {
text-decoration:none;
padding-left:5px;
padding-right:5px;
color:#AAB8D5;
font-size:12px;
font-weight:bold;
}
#mCAL .months .current {
color:#517AC8;
}
#mCAL .current {
font-weight:bold;
color:#517AC8;
background-color:#fff;
-moz-border-radius:5px;
}
#mCAL .curMonth {
text-align:center;
margin: 2px 0px;
background-color:#517AC8;
color:white;
font-size:14px;
font-weight:bold;
}
#mCAL .searchField {
margin: 2px 10px;
border:solid #ABB7D1 1px;
}
#mCAL .searchBtn {
background-color: #ABB7D1;
border:solid #CCD2E3 1px;
color:white;
font-weight:bold;
cursor:pointer;
}
#mCAL .eventWrapper {
margin:2px 10px;
}
</style>

View file

@ -0,0 +1,388 @@
#CalendarMonth000000001
#create
#namespace:Calendar/Month
#url:default-calendar-month
#title:Default Calendar Month
#menuTitle:Default Calendar Month
<tmpl_if admin>
<p><tmpl_var adminControls></p>
</tmpl_if>
<tmpl_if displayTitle>
<h1><tmpl_var title></h1>
</tmpl_if>
<tmpl_if description>
<tmpl_var description>
</tmpl_if>
<div id="calendar">
<!-- tabs -->
<div class="tabs">
<a href="<tmpl_var urlDay>">Day</a>
<a href="<tmpl_var urlWeek>">Week</a>
<a href="<tmpl_var urlMonth>">Month</a>
<a href="/<tmpl_var url>?func=search">Search</a>
</div>
<!-- other actions -->
<div class="actions">
<tmpl_if editor><a href="/<tmpl_var url>?func=add;class=WebGUI::Asset::Event">Add Event</a></tmpl_if>
<!--&bull; <a href="#">Print</a>
&bull; <a href="#">Subscribe</a>-->
</div>
<div class="navigation">
<!-- previous year -->
<div class="previous"><a href="<tmpl_var pagePrevUrl>">&laquo; <tmpl_var pagePrevYear></a></div>
<!-- next year -->
<div class="next"><a href="<tmpl_var pageNextUrl>"><tmpl_var pageNextYear>&raquo;</a></div>
<!-- months in this year -->
<ul class="months">
<tmpl_loop months>
<li>
<a href="<tmpl_var monthUrl>" class="<tmpl_if monthCurrent>current</tmpl_if>"><tmpl_var monthAbbr></a>
</li>
</tmpl_loop>
</ul>
</div>
<!-- banner -->
<h2><tmpl_var monthName> <tmpl_var year></h2>
<!-- the calendar table -->
<table id="month">
<!-- day names -->
<tr><tmpl_loop dayNames>
<th><tmpl_var dayName></th>
</tmpl_loop></tr>
<!-- the grid -->
<tmpl_loop weeks><tr>
<tmpl_loop days><td><div class="<tmpl_if dayMonth>active</tmpl_if><tmpl_if dayCurrent> current</tmpl_if>">
<tmpl_if dayMonth>
<a class="number" href="<tmpl_var dayUrl>"><tmpl_var dayMonth></a>
<tmpl_if events>
<ul class="events"><tmpl_loop events>
<li><a href="/<tmpl_var eventUrl>">
<tmpl_var eventMenuTitle>
</a></li>
</tmpl_loop></ul>
<a href="#" onmouseover="DelayedRollover.showPopup('more<tmpl_var dayMonth>')" onmouseout="DelayedRollover.hidePopup('more<tmpl_var dayMonth>')" class="moreButton" onclick="return false;">
<img src="/extras/wobject/Calendar/images/more.gif" />
</a>
<div style="display: none" id="more<tmpl_var dayMonth>" class="moreDisplay" onmouseover="DelayedRollover.showPopup('more<tmpl_var dayMonth>')" onmouseout="DelayedRollover.hidePopup('more<tmpl_var dayMonth>')" >
<tmpl_loop events>
<a href="/<tmpl_var eventUrl>"><tmpl_var eventTitle></a><br/>
</tmpl_loop>
</div>
</tmpl_if> <!--/events-->
</tmpl_if> <!--/day-->
</div></td></tmpl_loop> <!--/days-->
</tr></tmpl_loop>
</table>
</div>
~~~
<script type="text/javascript">
// Delayed rollovers
// From: http://www.pjhyett.com/articles/2006/07/05/timeout-your-mouseovers
// Modified by: Doug Bell
var DelayedRollover = {
timeout : new Array(),
showPopup : function(e){
element = document.getElementById(e);
clearTimeout(this.timeout[e]);
if(element.style.display == 'none'){
this.timeout[e] = setTimeout(function(){element.style.display="block"},10);
}
},
hidePopup : function(e){
element = document.getElementById(e);
if(element.style.display == 'none'){
clearTimeout(this.timeout[e]);
}else{
this.timeout[e] = setTimeout(function(){element.style.display="none"},10);
}
}
}
</script>
<style type="text/css">
body *
{
margin: 0px;
}
#calendar *
{
/* Override any defaults that mess up our template */
}
#calendar
{
width: 630px;
}
/**** DEFAULTS ****/
#calendar td
{
font-size: 10px;
font-family: Arial, sans-serif;
}
#calendar a
{
font-size: 11px;
color: #517AC8;
}
#calendar h2
{
text-align: center;
margin: 2px 0px;
background-color: #517AC8;
color: white;
font-size: 14px;
font-weight: bold;
}
/**** Tabs ****/
#calendar .tabs
{
list-style: none;
float: left;
text-align: left;
margin: 0px;
padding: 0px;
}
#calendar .tabs a
{
-moz-border-radius-topLeft: 10px;
-moz-border-radius-topRight: 10px;
display: block;
float: left;
margin-right: 5px;
padding: 2px 15px 0px 15px;
border-bottom-style: none;
background-color: #E9ECF3;
color: #7588B5;
font-weight: bold;
font-size: 10pt;
text-align: center;
text-decoration: none;
}
#calendar .tabs a:hover
{
color: black;
}
/**** Actions ****/
#calendar .actions
{
float: right;
vertical-align: bottom;
}
/**** Navigation ****/
#calendar .navigation
{
clear: both;
text-align: center;
background-color: #DFE3EE;
padding: 3px 0px;
}
#calendar .navigation .previous
{
float: left;
}
#calendar .navigation .next
{
float: right;
}
#calendar .navigation ul
{
list-style: none;
margin: 0px;
padding: 0px;
}
#calendar .navigation li
{
display: inline;
margin: 0px;
padding: 0px;
}
#calendar .navigation a
{
text-decoration: none;
padding-left: 5px;
padding-right: 5px;
color: #AAB8D5;
font-size: 12px;
font-weight: bold;
}
#calendar .navigation a.current, #calendar .navigation a:hover
{
-moz-border-radius: 5px;
font-weight: bold;
color: #517AC8;
background-color: #fff;
}
/**** Month view ****/
/* Table */
#calendar table#month
{
z-index: 1;
}
#calendar table#month *
{
padding: 0px;
margin: 0px;
}
#calendar table#month a
{
text-decoration: none;
}
#calendar table#month th
{
-moz-box-sizing:border-box;
width: 85px;
background-color: #517AC8;
text-align: center;
font-weight: bold;
color: white;
}
#calendar table#month div
{
position: relative;
width: 85px;
height: 85px;
margin: 0px;
background-color: #E9ECF3;
}
#calendar table#month ul
{
overflow: hidden;
}
#calendar table#month .active
{
-moz-border-radius-topLeft: 8px;
-moz-border-radius-bottomLeft: 8px;
-moz-border-radius-bottomRight: 8px;
vertical-align: top;
background-color: #CCD2E3;
border: solid #CCD2E3 1px;
}
#calendar table#month .current
{
background-color: #FFE4B3;
border-color: orange;
}
#calendar table#month .number
{
-moz-border-radius-bottomLeft:5px;
display: block;
position: absolute;
top: 0px;
right: 0px;
height: 10px;
width: 10px;
background-color: #516BA4;
color: white;
text-align: center;
vertical-align: middle;
padding: 0px 3px 2px 2px;
font-weight: bold;
}
#calendar table#month .current .number
{
background-color: orange;
color: black;
}
#calendar table#month .events
{
padding: 3px;
padding-top: 8px;
font-weight: bold;
}
#calendar table#month .events a
{
color: #4F4F4F;
text-decoration: none;
font-size: 9px;
}
#calendar table#month .moreButton
{
border-style: none;
position: absolute;
bottom: 0px;
width: 100%;
height: 9px;
background-color: #517AC8;
font-size: 5px;
text-align: center;
-moz-border-radius-bottomLeft: 8px;
-moz-border-radius-bottomRight: 8px;
}
#calendar table#month .moreButton img
{
border: none;
}
#calendar table#month .moreButton:hover
{
background-color: orange;
}
/* MORE STYLES */
#calendar table#month .moreDisplay {
position: absolute;
left: 0px;
top: 85px;
border:solid orange 1px;
border-top:solid orange 2px;
font-family:arial;
font-size:10px;
width:300px;
height: auto;
padding:2px;
background-color:#FFD3A8;
z-index: 100;
}
* html body table#month td { position: relative; z-index: 1; }
</style>

View file

@ -0,0 +1,316 @@
#CalendarSearch00000001
#create
#namespace:Calendar/Search
#url:default-calendar-search
#title:Default Calendar Search
#menuTitle:Default Calendar Search
<tmpl_var form.header>
<table cellspacing="0" cellpadding="0" width="600" id="mCAL" border="0">
<tr>
<td style="text-align:right">
<a href="/<tmpl_var url>?type=day" class="tab">Day</a>
<a href="/<tmpl_var url>?type=week" class="tab">Week</a>
<a href="/<tmpl_var url>?type=month" class="tab">Month</a>
<a href="/<tmpl_var url>?func=search" class="tab active">Search</a>
</td>
</tr>
<tr>
<td class="months">
&nbsp;
</td>
</tr>
<tr>
<td style="width:100%">
<table width="100%" cellspacing="2" cellpadding="0">
<tr>
<td class="heading">
<div style="padding:4px;">Keyword</div>
</td>
<td class="day">
<tmpl_var form.keywords>
</td>
</tr>
<tr>
<td class="heading">
<div style="padding:4px;">Start Date</div>
</td>
<td class="day">
<tmpl_var form.startDate>
</td>
</tr>
<tr>
<td class="heading">
<div style="padding:4px;">End Date</div>
</td>
<td class="day">
<tmpl_var form.endDate>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="text-align:right">
<tmpl_var form.submit>
</td>
</tr>
</table>
<tmpl_var form.footer>
<tmpl_if results>
<table cellspacing="0" cellpadding="0" width="600" id="mCAL">
<tr>
<td>
<div class="curMonth">
Search Results
<span style="font-size:9px;">Displaying page <tmpl_var pagination.pageCount> of <tmpl_var pagination.pageCount></span>
</div>
</td>
</tr>
<tr>
<td class="months">
<div style="padding:3px 0px;">
<tmpl_var pagination.firstPage>
<tmpl_var pagination.pageList>
<tmpl_var pagination.lastPage>
</div>
</td>
</tr>
<tr>
<td style="width:100%">
<table width="100%" cellspacing="2" cellpadding="0">
<tmpl_loop results><tr>
<td class="heading">
<div style="padding:4px;"><tmpl_var startDate></div>
</td>
<td class="day">
<a href="/<tmpl_var url>" style="padding-left:10px"><tmpl_var title></a>
</td>
</tr></tmpl_loop>
</table>
</td>
</tr>
<tr>
<td class="months">
<div style="padding:3px 0px;">
<tmpl_var pagination.firstPage>
<tmpl_var pagination.pageList>
<tmpl_var pagination.lastPage>
</div>
</td>
</tr>
</table>
</tmpl_if>
~~~
<style type="text/css">
body * {
margin:0px;
}
#mCAL {
}
#mCAL td {
font-size:10px;
font-family:arial;
}
#mCAL .tab {
border-bottom-style:none;
font-weight:bold;
padding: 2px 15px 0px 15px;
text-align;center;
background-color:#E9ECF3;
-moz-border-radius-topLeft:10px;
-moz-border-radius-topRight:10px;
color:#7588B5;
text-decoration:none;
font-size:10pt;
display:block;
float:left;
margin-right:5px;
}
#mCAL .tab:hover {
color:black;
}
#mCAL .active {
background-color:#DFE3EE;
color:#404F77;
border-bottom:solid #DFE3EE 1px;
}
#mCAL .controls {
float:right;
vertical-align:bottom;
}
#mCAL a {
font-size:11px;
color:#517AC8;
}
#mCAL .heading {
width:200px;
-moz-box-sizing:border-box;
background-color:#ABB7D1;
text-align:center;
font-weight:bold;
color:#374664;
font-size:9px;
letter-spacing:1px;
text-transform:uppercase;
text-align:right;
vertical-align:top;
-moz-border-radius-bottomRight:8px;
-moz-border-radius-topRight:8px;
}
#mCAL .day {
background-color:#E9ECF3;
width:400px;
position:relative;
vertical-align:top;
-moz-border-radius-topLeft:8px;
-moz-border-radius-bottomLeft:8px;
border:solid #CCD2E3 1px;
}
#mCAL .curDay {
background-color:#FFE4B3;
border-color:orange;
}
#mCAL .dayWrapper {
height:100%;
width:100%;
position:relative;
z-index:0;
margin:0px;
padding:0px 0px 2px 5px;;
-moz-box-sizing:border-box;
}
html > body #mCAL .dayWrapper {
height:auto;
min-height:100%;
}
#mCAL .dayNum {
width:100%;
text-align:right;
}
#mCAL span.border {
text-align:center;
padding:5px;
font-weight:bold;
-moz-border-radius-bottomRight:5px;
-moz-border-radius-topLeft:5px;
color:black;
border-right:solid #CCD2E3 1px;
border-bottom: solid #CCD2E3 1px;
background-color:#ABB7D1;
-moz-box-sizing:border-box;
top:5px;
position:relative;
}
#mCAL .curDay span.border {
background-color:orange;
color:black;
border-color:orange;
}
#mCAL .event {
padding:3px;
padding-top:8px;
clear:left;
font-weight:bold;
}
#mCAL .event a {
color:#4F4F4F;
text-decoration:none;
font-size:9px;
}
#mCAL .moreButton {
border-style:none;
z-index:5;
position:absolute;
bottom:0px;
width:100%;
height:9px;
background-color:#517AC8;
font-size:5px;
text-align:center;
}
#mCAL .moreButton:hover {
background-color:orange;
}
#mCAL .empty {
border-style:none;
background-color:#CCD2E3;
-moz-border-radius:10px;
}
#mCAL .months {
text-align:center;
background-color:#DFE3EE;
}
#mCAL .months a {
color:#517AC8;
text-decoration:none;
}
#mCAL .months .monthLink {
text-decoration:none;
padding-left:5px;
padding-right:5px;
color:#AAB8D5;
font-size:12px;
font-weight:bold;
}
#mCAL .months .current {
color:#517AC8;
}
#mCAL .current {
font-weight:bold;
color:#517AC8;
background-color:#fff;
-moz-border-radius:5px;
}
#mCAL .curMonth {
text-align:left;
margin: 2px 0px;
background-color:#517AC8;
color:white;
font-size:14px;
font-weight:bold;
}
/* MORE STYLES */
#more1 {
position:absolute;
top:170px;
left:10px;
}
* html #more1 {
top:158px;
left:12px;
}
.moreDisplay {
border:solid orange 1px;
border-top:solid orange 2px;
font-family:arial;
font-size:10px;
width:300px;
padding:2px;
background-color:#FFD3A8;
z-index:10;
}
ul.eventList {
margin:0px;
padding:0px;
margin-left:30px;
color:#526896;
}
</style>

View file

@ -0,0 +1,263 @@
#CalendarWeek0000000001
#create
#namespace:Calendar/Week
#url:default-calendar-week
#title:Default Calendar Week
#menuTitle:Default Calendar Week
<tmpl_if admin>
<p><tmpl_var adminControls></p>
</tmpl_if>
<tmpl_if displayTitle>
<h1><tmpl_var title></h1>
</tmpl_if>
<tmpl_if description>
<tmpl_var description>
</tmpl_if>
<div id="calendar">
<!-- tabs -->
<div class="tabs">
<a href="<tmpl_var urlDay>">Day</a>
<a href="<tmpl_var urlWeek>">Week</a>
<a href="<tmpl_var urlMonth>">Month</a>
<a href="/<tmpl_var url>?func=search">Search</a>
</div>
<!-- other actions -->
<div class="actions">
<tmpl_if editor><a href="/<tmpl_var url>?func=add;class=WebGUI::Asset::Event">Add Event</a></tmpl_if>
<!--&bull; <a href="#">Print</a>
&bull; <a href="#">Subscribe</a>-->
</div>
<div class="navigation">
<!-- previous year -->
<div class="previous"><a href="<tmpl_var pagePrevUrl>">&laquo; Previous Week</a></div>
<!-- next year -->
<div class="next"><a href="<tmpl_var pageNextUrl>">Next Week &raquo;</a></div>
<!-- I guess write the week again -->
<p><tmpl_var startMonthAbbr> <tmpl_var startDayOfMonth>, <tmpl_var startYear> to <tmpl_var endMonthAbbr> <tmpl_var endDayOfMonth>, <tmpl_var endYear></p>
</div>
<!-- banner -->
<h2><tmpl_var startMonthName> <tmpl_var startDayOfMonth>, <tmpl_var startYear> to <tmpl_var endMonthName> <tmpl_var endDayOfMonth>, <tmpl_var endYear></h2>
<!-- the calendar table -->
<table id="week">
<tmpl_loop days><tr>
<th><tmpl_var dayName></th>
<td><div>
<div class="number"><tmpl_var dayOfMonth></div>
<tmpl_if events><ul><tmpl_loop events>
<li><a href="/<tmpl_var eventUrl>"><tmpl_var eventTitle></a></li>
</tmpl_loop></ul></tmpl_if></div></td> <!-- /events -->
</tr></tmpl_loop><!--/days-->
</table>
</div>
~~~
<style type="text/css">
body *
{
margin: 0px;
}
#calendar *
{
/* Override any defaults that mess up our template */
}
#calendar
{
width: 630px;
}
/**** DEFAULTS ****/
#calendar table
{
width: 100%;
}
#calendar td
{
font-size: 10px;
font-family: Arial, sans-serif;
}
#calendar a
{
font-size: 11px;
color: #517AC8;
}
#calendar h2
{
text-align: center;
margin: 2px 0px;
background-color: #517AC8;
color: white;
font-size: 14px;
font-weight: bold;
}
/**** Tabs ****/
#calendar .tabs
{
list-style: none;
float: left;
text-align: left;
margin: 0px;
padding: 0px;
}
#calendar .tabs a
{
-moz-border-radius-topLeft: 10px;
-moz-border-radius-topRight: 10px;
display: block;
float: left;
margin-right: 5px;
padding: 2px 15px 0px 15px;
border-bottom-style: none;
background-color: #E9ECF3;
color: #7588B5;
font-weight: bold;
font-size: 10pt;
text-align: center;
text-decoration: none;
}
#calendar .tabs a:hover
{
color: black;
}
/**** Actions ****/
#calendar .actions
{
float: right;
vertical-align: bottom;
}
/**** Navigation ****/
#calendar .navigation
{
clear: both;
text-align: center;
background-color: #DFE3EE;
padding: 3px 0px;
}
#calendar .navigation .previous
{
float: left;
}
#calendar .navigation .next
{
float: right;
}
#calendar .navigation ul
{
list-style: none;
margin: 0px;
padding: 0px;
}
#calendar .navigation li
{
display: inline;
margin: 0px;
padding: 0px;
}
#calendar .navigation a
{
text-decoration: none;
padding-left: 5px;
padding-right: 5px;
color: #AAB8D5;
font-size: 12px;
font-weight: bold;
}
#calendar .navigation a.current, #calendar .navigation a:hover
{
-moz-border-radius: 5px;
font-weight: bold;
color: #517AC8;
background-color: #fff;
}
/* Week */
#calendar table#week th
{
width: 35%;
-moz-box-sizing: border-box;
background-color: #ABB7D1;
text-align: center;
font-weight: bold;
color: #374664;
font-size: 9px;
letter-spacing: 1px;
text-transform: uppercase;
text-align: right;
vertical-align: top;
-moz-border-radius-bottomRight:8px;
-moz-border-radius-topRight:8px;
}
#calendar table#week td
{
width: 65%;
vertical-align: top;
background-color: #E9ECF3;
-moz-border-radius-topLeft:8px;
-moz-border-radius-bottomLeft:8px;
border: solid #CCD2E3 1px;
}
#calendar table#week td div
{
position: relative;
min-height: 35px;
}
/* IE min-height hack */
* html body #calendar table#week td { height: 45px; }
#calendar table#week ul { padding-left: 50px; }
#calendar table#week .number
{
position: absolute;
top: -2px;
left: -2px;
width: 2em;
height: 1em;
min-height: 1em;
text-align: center;
padding: 5px;
font-weight: bold;
-moz-border-radius-bottomRight:5px;
-moz-border-radius-topLeft:5px;
color: black;
border-right: solid #CCD2E3 1px;
border-bottom: solid #CCD2E3 1px;
background-color: #ABB7D1;
}
</style>

View file

@ -23,6 +23,9 @@ addWikiAssets($session);
deleteOldFiles($session);
addFileFieldsToDataForm($session);
makeRSSFromParentAlwaysHidden($session);
#addNewCalendar($session);
#migrateCalendars($session);
#removeOldCalendar($session);
finish($session); # this line required
#-------------------------------------------------
@ -129,6 +132,176 @@ EOT
);
}
sub addNewCalendar {
my $session = shift;
print "\tCreating Calendar and Event tables.\n" unless $quiet;
$session->db->write($_) for (<<'ENDSQL',
CREATE TABLE `Event` (
`assetId` varchar(22) NOT NULL,
`revisionDate` bigint(20) unsigned NOT NULL,
`feedId` varchar(22) default NULL,
`startDate` date default NULL,
`endDate` date default NULL,
`userDefined1` text,
`userDefined2` text,
`userDefined3` text,
`userDefined4` text,
`userDefined5` text,
`recurId` varchar(22) default NULL,
`description` longtext,
`startTime` time default NULL,
`endTime` time default NULL,
`relatedLinks` longtext,
`location` varchar(255) default NULL,
PRIMARY KEY (`assetId`,`revisionDate`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
ENDSQL
<<'ENDSQL',
CREATE TABLE `Calendar` (
`assetId` varchar(22) NOT NULL,
`revisionDate` bigint(20) unsigned NOT NULL default '0',
`defaultDate` enum('current','first','last') default "current",
`defaultView` enum('month','week','day') default "month",
`visitorCacheTimeout` int(11) unsigned default NULL,
`templateIdMonth` varchar(22) default "CalendarMonth000000001",
`templateIdWeek` varchar(22) default "CalendarWeek0000000001",
`templateIdDay` varchar(22) default "CalendarDay00000000001",
`templateIdEvent` varchar(22) default "CalendarEvent000000001",
`templateIdEventEdit` varchar(22) default "CalendarEventEdit00001",
`templateIdSearch` varchar(22) default "CalendarSearch00000001",
`templateIdPrintMonth` varchar(22) default "CalendarPrintMonth0001",
`templateIdPrintWeek` varchar(22) default "CalendarPrintWeek00001",
`templateIdPrintDay` varchar(22) default "CalendarPrintDay000001",
`templateIdPrintEvent` varchar(22) default "CalendarPrintEvent0001",
`groupIdEventEdit` varchar(22) default "3",
`groupIdSubscribed` varchar(22) default NULL,
`subscriberNotifyOffset` int(11) default NULL,
PRIMARY KEY (`assetId`,`revisionDate`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
ENDSQL
<<'ENDSQL',
CREATE TABLE `Event_recur` (
`recurId` varchar(22) NOT NULL,
`recurType` varchar(16) default NULL,
`pattern` varchar(255) default NULL,
`startDate` date default NULL,
`endDate` varchar(10) default NULL,
PRIMARY KEY (`recurId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
ENDSQL
<<'ENDSQL',
CREATE TABLE `Calendar_feeds` (
`feedId` varchar(22) NOT NULL,
`assetId` varchar(22) NOT NULL,
`url` varchar(255) NOT NULL,
`lastUpdated` int(16) default NULL,
`lastResult` varchar(255) default NULL,
`feedType` varchar(30) NOT NULL,
PRIMARY KEY (`feedId`,`assetId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
ENDSQL
);
$session->config->addToArray('assets', 'WebGUI::Asset::Wobject::Calendar');
}
sub migrateCalendars {
my $session = shift;
print "\tMigrating EventsCalendar to Calendar wobjects.\n" unless $quiet;
use WebGUI::DateTime;
# For every EventsCalendar
#EventsCalendar.defaultMonth = Calendar.defaultDate
my $calendars = WebGUI::Asset->getRoot($session)->getLineage(['descendents'],
{
includeOnlyClasses => ['WebGUI::Asset::Wobject::EventsCalendar'],
returnObjects => 1,
});
for my $asset (@{$calendars})
{
my $properties = {%{$asset->get}};
$properties->{defaultDate} = delete $properties->{defaultMonth};
warn "Found calendar ".$properties->{title};
$properties->{className} = "WebGUI::Asset::Wobject::Calendar";
# Add the new asset
my $newAsset = $asset->getParent->addChild($properties);
warn "Added Calendar ".$newAsset->get("title")." ".$newAsset->get("className");
# Get this calendar's events and change to new parent
my $events = $asset->getLineage(['descendants'],
{
includeOnlyClasses => ['WebGUI::Asset::Event'],
});
warn "Got lineage";
# Set the new asset's rank
$newAsset->swapRank($asset->getRank);
warn "Swapped rank";
for my $event (@{$events})
{
warn "Got event: $event";
# Add a child to the new calendar using the properties
# from EventsCalendar_event
my %eventProperties = $session->db->quickHash("select * from asset left join assetData on asset.assetId=assetData.assetId left join EventsCalendar_event on asset.assetId = EventsCalendar_event.assetId where asset.assetId = ?",[$event]);
my ($startDate, $startTime) = split / /, WebGUI::DateTime->new(delete $eventProperties{eventStartDate})->toMysql;
my ($endDate, $endTime) = split / /, WebGUI::DateTime->new(delete $eventProperties{eventEndDate})->toMysql;
$eventProperties{startDate} = $startDate;
$eventProperties{startTime} = $startTime;
$eventProperties{endDate} = $endDate;
$eventProperties{endTime} = $endTime;
#use Data::Dumper;
#warn Dumper \%eventProperties;
$newAsset->addChild(\%eventProperties);
# Remove this event from the old calendar
#$session->db->write("delete from EventsCalendar_event where assetId=?",[$event]);
#$session->db->write("delete from asset where assetId=?",[$event]);
#$session->db->write("delete from assetData where assetId=?",[$event]);
#$session->db->write("delete from assetIndex where assetId=?",[$event]);
#$session->db->write("delete from assetHistory where assetId=?",[$event]);
}
warn "Set parents on events";
# Remove the old asset
$asset->purge;
warn "Purged old calendar";
}
}
sub removeOldCalendar {
my $session = shift;
print "\tRemoving old EventsCalendar tables, templates, .\n" unless $quiet;
# Remove tables
$session->db->write("drop table EventsCalendar");
$session->db->write("drop table EventsCalendar_event");
# Remove Plainblack's EventsCalendar / Events templates
#PBtmpl0000000000000022
WebGUI::Asset->newByDynamicClass($session,"PBtmpl0000000000000022")->purge;
#PBtmpl0000000000000023
WebGUI::Asset->newByDynamicClass($session,"PBtmpl0000000000000023")->purge;
$session->config->deleteFromArray("assets","WebGUI::Asset::Wobject::EventsCalendar");
}
# ---- DO NOT EDIT BELOW THIS LINE ----
#-------------------------------------------------
@ -175,7 +348,7 @@ sub updateTemplates {
my %properties = (className=>"WebGUI::Asset::Template");
while (my $line = <FILE>) {
if ($first) {
$line =~ m/^\#(.*)$/;
$line =~ m/^\#(.{0,22})$/;
$properties{id} = $1;
$first = 0;
} elsif ($line =~ m/^\#create$/) {
@ -191,7 +364,7 @@ sub updateTemplates {
}
}
close(FILE);
if ($create) {
if ($create && !WebGUI::Asset->newByDynamicClass($session,$properties{id})) {
$newFolder = createNewTemplatesFolder($importNode) unless (defined $newFolder);
my $template = $newFolder->addChild(\%properties, $properties{id});
} else {