Link | nCtag_Calendar |
Author | Bret Williams |
Category | Custom Tag |
Version | 7.x |
License | http://opensource.org/licenses/gpl-license.php |
Posted | 01 Feb 2006 |
Updated | 01 Feb 2006 |
More by this author... |
If you need to show one or more small calendars, this cTag can help. You can specify the start month, number of months to generate, dates to highlight, and whether you want a vertical or horizontal orientation. Output is a table using CSS class styles which you specify in your HTML page or included CSS file. If you don't specify styles for Title, Heading, Days, Weekends and Highlighted Dates, then it will use whatever default the browser reverts to. You may certainly use this, if it helps. Please drop me an e-mail if you do (bret@novusweb.com). It should work with v8.x, but haven't tested it yet. If you do find any bugs, please let me know. One note: in order for the HTML to show correctly in the browser, you should set encoding to -EncodeNone for the calendar output.
nCtag_Calendar: -StartMonth = '2006-01', -Months = '3', -Orientation = 'Vertical', -HighlightDates = '2006-01-04 2006-01-14 2006-02-12 2006-03-21', -Table = 'calTable', -Title = 'calTitle', -Heading = 'calHeading', -Day = 'calDay', -Weekend = 'calWeekend', -Highlight = 'calHighlight';
Click the "Download" button below to retrieve a copy of this tag, including the complete documentation and sample usage shown on this page. Place the downloaded ".inc" file in your LassoStartup folder, restart Lasso, and you can begin using this tag immediately.
(Format: '%Y-%m'), 'LV_Months' = (Integer: 1), 'LV_Orientation' = 'Vertical', 'LV_HighlightDates' = (Array), 'LV_Table' = (String), 'LV_Title' = (String), 'LV_Heading' = (String), 'LV_Day' = (String), 'LV_Weekend' = (String), 'LV_Highlight' = (String); // Test for StartMonth Parameter If: (Local: 'StartMonth')->(Size) > 0; Local: 'LV_TempDate' = (Date: (Local: 'StartMonth'), -Format = '%Y-%m'); Select: #LV_TempDate; Case: NULL; #LV_StartMonth = #LV_StartMonth; Case; #LV_StartMonth = #LV_TempDate->(Format: '%Y-%m'); /Select; /If; // Test for Months Parameter If: (Local: 'Months')->(Size) > 0; Select: (String_IsDigit: (Local: 'Months')); Case: True; #LV_Months = (Local: 'Months'); /Select; /If; // Test for Orientation Parameter If: (Local: 'Orientation')->(Size) > 0; Select: (Local: 'Orientation')->(BeginsWith: 'Hor'); Case: True; #LV_Orientation = 'Horizontal'; /Select; /If; // Test for HighlightDates Parameter If: (Local: 'HighlightDates')->(Size) > 0; Local: 'LV_TempHighlightDates' = (Local: 'HighlightDates')->(Split: ' '); #LV_HighlightDates = #LV_TempHighlightDates; /If; // Test for Table Parameter If: (Local: 'Table')->(Size) > 0; #LV_Table = (Local: 'Table'); /If; // Test for Title Parameter If: (Local: 'Title')->(Size) > 0; #LV_Title = (Local: 'Title'); /If; // Test for Heading Parameter If: (Local: 'Heading')->(Size) > 0; #LV_Heading = (Local: 'Heading'); /If; // Test for Day Parameter If: (Local: 'Day')->(Size) > 0; #LV_Day = (Local: 'Day'); /If; // Test for Weekend Parameter If: (Local: 'Weekend')->(Size) > 0; #LV_Weekend = (Local: 'Weekend'); Else; #LV_Weekend = #LV_Day; /If; // Test for Highlight Parameter If: (Local: 'Highlight')->(Size) > 0; #LV_Highlight = (Local: 'Highlight'); /If; // Loop for number of Calendar rows Local: 'LV_CalendarRows' = (Integer), 'LV_CalendarCols' = (Integer); Select: #LV_Orientation; Case: 'Horizontal'; #LV_CalendarRows = 1; #LV_CalendarCols = #LV_Months; Case: 'Vertical'; #LV_CalendarRows = #LV_Months; #LV_CalendarCols = 1; /Select; Local: 'LV_Build' = (String); // Build Calendar Cells Array Local: 'LV_CalendarArray' = (Array); Local: 'LV_CellArray' = (Array); Local: 'LV_MonthDate' = (Date: #LV_StartMonth); Local: 'LV_StartDay' = (Integer); Local: 'LV_EndDate' = (Integer); Local: 'LV_LoopMonth' = (Integer); Local: 'LV_TestDate' = (Date); Local: 'LV_CalendarRows' = (Integer); Local: 'LV_MaxRows' = (Integer); Local: 'LV_RowCountArray' = (Array); Local: 'LV_DayCount' = (Integer); Local: 'LV_RowCount' = (Integer); Loop: #LV_Months; // Initialize Necessary Vars #LV_CellArray = (Array); // Determine the first day of the month #LV_StartDay = #LV_MonthDate->(DayofWeek); //Determine last day of the month #LV_EndDate = (Integer); #LV_LoopMonth = (#LV_MonthDate->(Month)); #LV_TestDate = (Date: -Year=(#LV_MonthDate->(Year)), -Month=(#LV_MonthDate->(Month)), -Day='28'); Loop: -From=28, -To=31; If: (#LV_TestDate->(Month) == #LV_LoopMonth); #LV_EndDate = (Loop_Count); Else; Loop_Abort; /If; // Add one day #LV_TestDate = (Date_Add: #LV_TestDate, -Day='1'); /Loop; // Pad beginning of Array Loop: (#LV_StartDay-1); #LV_CellArray->(Insert: ('')); /Loop; // Insert Remaining Cells Loop: #LV_EndDate; // Set Calendar Date #LV_TestDate = (Date: -Year=(#LV_MonthDate->(Year)), -Month=(#LV_MonthDate->(Month)), -Day=(Loop_Count)); If: (#LV_HighlightDates->(Find: #LV_TestDate)->(Size)) != 0; #LV_CellArray->(Insert: (' ' + (Loop_Count) + ' ')); Else: (#LV_TestDate->(DayofWeek) == 1) || (#LV_TestDate->(DayofWeek) == 7); #LV_CellArray->(Insert: ('' + (Loop_Count) + ' ')); Else; #LV_CellArray->(Insert: ('' + (Loop_Count) + ' ')); /If; /Loop; // Pad End of Array If: #LV_CellArray->(Size)%7 > 0; Local: 'LV_LoopSize' = (Math_Sub: 7, (#LV_CellArray->(Size)%7)); Loop: #LV_LoopSize; #LV_CellArray->(Insert: ('')); /Loop; /If; // Determine if month has maximum number of rows #LV_CalendarRows = #LV_CellArray->(Size)/7; If: #LV_CellArray->(Size)%7 > 0; #LV_CalendarRows += 1; /If; If: #LV_CalendarRows > #LV_MaxRows; #LV_MaxRows = #LV_CalendarRows; /If; // Add Row Count to Array #LV_RowCountArray->(Insert: #LV_CalendarRows); // Add Cell Array to Calendar Array #LV_CalendarArray->(Insert: #LV_CellArray); // Add One Month #LV_MonthDate = (Date_Add: #LV_MonthDate, -Month=1); /Loop; #LV_MonthDate = (Date: #LV_StartMonth); // Build Calendar Shell #LV_Build += ( '
' + #LV_MonthDate->(Format: '%B %Y') + ' | ||||||
S | M | T | W | T | F | S |
' + #LV_MonthDate->(Format: '%B %Y') + ' | ' ); #LV_MonthDate = (Date_Add: #LV_MonthDate, -Month=1); /Loop; #LV_Build += ( '||||||
S | M | T | W | T | F | S | ' ); /Loop; #LV_Build += ( '
'); /If; /Loop; #LV_Build += ( ' |
No comments
©LassoSoft Inc 2015 | Web Development by Treefrog Inc | Privacy | Legal terms and Shipping | Contact LassoSoft