webmcp

annotate framework/env/ui_deprecated/calendar.lua @ 0:9fdfb27f8e67

Version 1.0.0
author jbe/bsw
date Sun Oct 25 12:00:00 2009 +0100 (2009-10-25)
parents
children
rev   line source
jbe/bsw@0 1 function ui_deprecated.calendar(args)
jbe/bsw@0 2 local record = assert(slot.get_state_table(), "ui_deprecated.calender was not called within a form.").form_record
jbe/bsw@0 3 local value = param.get(args.field, atom.date) or record[args.field]
jbe/bsw@0 4 local year = param.get('_ui_calendar_year', atom.integer) or args.year or 2008
jbe/bsw@0 5 local month = param.get('_ui_calendar_month', atom.integer) or args.month or 10
jbe/bsw@0 6 local empty_days = atom.date{ year = year, month = month, day = 1 }.iso_weekday -1
jbe/bsw@0 7 local enabled = not args.disabled
jbe/bsw@0 8
jbe/bsw@0 9 local prev_year = year
jbe/bsw@0 10 local prev_month = month - 1
jbe/bsw@0 11 if prev_month == 0 then
jbe/bsw@0 12 prev_month = 12
jbe/bsw@0 13 prev_year = prev_year - 1
jbe/bsw@0 14 end
jbe/bsw@0 15
jbe/bsw@0 16 local next_year = year
jbe/bsw@0 17 local next_month = month + 1
jbe/bsw@0 18 if next_month == 13 then
jbe/bsw@0 19 next_month = 1
jbe/bsw@0 20 next_year = next_year + 1
jbe/bsw@0 21 end
jbe/bsw@0 22
jbe/bsw@0 23 ui_deprecated.tag('div', {
jbe/bsw@0 24 html_options = {
jbe/bsw@0 25 class="ui_field ui_calendar"
jbe/bsw@0 26 },
jbe/bsw@0 27 content = function()
jbe/bsw@0 28 ui_deprecated.tag('input', {
jbe/bsw@0 29 html_options = {
jbe/bsw@0 30 type = 'hidden',
jbe/bsw@0 31 value = year,
jbe/bsw@0 32 name = '_ui_calendar_year',
jbe/bsw@0 33 id = '_ui_calendar_year',
jbe/bsw@0 34 onchange = 'this.form.submit();'
jbe/bsw@0 35 }
jbe/bsw@0 36 })
jbe/bsw@0 37 ui_deprecated.tag('input', {
jbe/bsw@0 38 html_options = {
jbe/bsw@0 39 type = 'hidden',
jbe/bsw@0 40 value = month,
jbe/bsw@0 41 name = '_ui_calendar_month',
jbe/bsw@0 42 id = '_ui_calendar_month',
jbe/bsw@0 43 onchange = 'this.form.submit();'
jbe/bsw@0 44 }
jbe/bsw@0 45 })
jbe/bsw@0 46 ui_deprecated.tag('input', {
jbe/bsw@0 47 html_options = {
jbe/bsw@0 48 type = 'hidden',
jbe/bsw@0 49 value = value and tostring(value) or '',
jbe/bsw@0 50 name = args.field,
jbe/bsw@0 51 id = '_ui_calendar_input',
jbe/bsw@0 52 onchange = 'this.form.submit();'
jbe/bsw@0 53 }
jbe/bsw@0 54 })
jbe/bsw@0 55 if args.label then
jbe/bsw@0 56 ui_deprecated.tag('div', {
jbe/bsw@0 57 html_options = {
jbe/bsw@0 58 class="label"
jbe/bsw@0 59 },
jbe/bsw@0 60 content = function()
jbe/bsw@0 61 ui_deprecated.text(args.label)
jbe/bsw@0 62 end
jbe/bsw@0 63 })
jbe/bsw@0 64 end
jbe/bsw@0 65 ui_deprecated.tag('div', {
jbe/bsw@0 66 html_options = {
jbe/bsw@0 67 class="value"
jbe/bsw@0 68 },
jbe/bsw@0 69 content = function()
jbe/bsw@0 70 ui_deprecated.tag('div', {
jbe/bsw@0 71 html_options = {
jbe/bsw@0 72 class = 'next',
jbe/bsw@0 73 href = '#',
jbe/bsw@0 74 onclick = enabled and "document.getElementById('_ui_calendar_year').value = '" .. tostring(next_year) .. "'; document.getElementById('_ui_calendar_month').value = '" .. tostring(next_month) .. "'; document.getElementById('_ui_calendar_year').form.submit();" or '',
jbe/bsw@0 75 },
jbe/bsw@0 76 content = '>>>';
jbe/bsw@0 77 })
jbe/bsw@0 78 ui_deprecated.tag('div', {
jbe/bsw@0 79 html_options = {
jbe/bsw@0 80 class = 'prev',
jbe/bsw@0 81 href = '#',
jbe/bsw@0 82 onclick = enabled and "document.getElementById('_ui_calendar_year').value = '" .. tostring(prev_year) .. "'; document.getElementById('_ui_calendar_month').value = '" .. tostring(prev_month) .. "'; document.getElementById('_ui_calendar_year').form.submit();" or '',
jbe/bsw@0 83 },
jbe/bsw@0 84 content = '<<<';
jbe/bsw@0 85 })
jbe/bsw@0 86 ui_deprecated.tag('div', {
jbe/bsw@0 87 html_options = {
jbe/bsw@0 88 class="title"
jbe/bsw@0 89 },
jbe/bsw@0 90 content = function()
jbe/bsw@0 91 local months = {_'January', _'February', _'March', _'April', _'May', _'June', _'July', _'August', _'September', _'October', _'November', _'December' }
jbe/bsw@0 92 ui_deprecated.text(months[month])
jbe/bsw@0 93 ui_deprecated.text(' ')
jbe/bsw@0 94 ui_deprecated.text(tostring(year))
jbe/bsw@0 95 end
jbe/bsw@0 96 })
jbe/bsw@0 97 ui_deprecated.tag('table', {
jbe/bsw@0 98 content = function()
jbe/bsw@0 99 ui_deprecated.tag('thead', {
jbe/bsw@0 100 content = function()
jbe/bsw@0 101 ui_deprecated.tag('tr', {
jbe/bsw@0 102 content = function()
jbe/bsw@0 103 local dows = { _'Mon', _'Tue', _'Wed', _'Thu', _'Fri', _'Sat', _'Sun' }
jbe/bsw@0 104 for col = 1,7 do
jbe/bsw@0 105 ui_deprecated.tag('th', { content = dows[col] })
jbe/bsw@0 106 end
jbe/bsw@0 107 end
jbe/bsw@0 108 })
jbe/bsw@0 109 end
jbe/bsw@0 110 })
jbe/bsw@0 111 ui_deprecated.tag('tbody', {
jbe/bsw@0 112 content = function()
jbe/bsw@0 113 for row = 1,6 do
jbe/bsw@0 114 ui_deprecated.tag('tr', {
jbe/bsw@0 115 content = function()
jbe/bsw@0 116 for col = 1,7 do
jbe/bsw@0 117 local day = (row -1) * 7 + col - empty_days
jbe/bsw@0 118 local date = atom.date.invalid
jbe/bsw@0 119 if day > 0 then
jbe/bsw@0 120 date = atom.date{ year = year, month = month, day = day }
jbe/bsw@0 121 end
jbe/bsw@0 122 ui_deprecated.tag('td', {
jbe/bsw@0 123 html_options = {
jbe/bsw@0 124 onclick = enabled and 'document.getElementById(\'_ui_calendar_input\').value = \'' .. tostring(date) .. '\'; document.getElementById(\'_ui_calendar_input\').onchange(); ' or ''
jbe/bsw@0 125 },
jbe/bsw@0 126 content = function()
jbe/bsw@0 127 if date.invalid then
jbe/bsw@0 128 slot.put('&nbsp;')
jbe/bsw@0 129 else
jbe/bsw@0 130 local selected = date == value
jbe/bsw@0 131 args.day_func(date, selected)
jbe/bsw@0 132 end
jbe/bsw@0 133 end
jbe/bsw@0 134 })
jbe/bsw@0 135 end
jbe/bsw@0 136 end
jbe/bsw@0 137 })
jbe/bsw@0 138 end
jbe/bsw@0 139 end
jbe/bsw@0 140 })
jbe/bsw@0 141 end
jbe/bsw@0 142 })
jbe/bsw@0 143 end
jbe/bsw@0 144 })
jbe/bsw@0 145 end
jbe/bsw@0 146 })
jbe/bsw@0 147 end

Impressum / About Us