webmcp
annotate framework/env/ui_deprecated/calendar.lua @ 2:72860d232f32
Version 1.0.2
Fixed bug with explicit garbage collection (requests > 256kB caused an error)
Views prefixed with an underscore can't be called externally
ui.paginate now displays the last page, if the selected page number is too high.
Fixed bug with explicit garbage collection (requests > 256kB caused an error)
Views prefixed with an underscore can't be called externally
ui.paginate now displays the last page, if the selected page number is too high.
| author | jbe/bsw |
|---|---|
| date | Thu Dec 10 12:00:00 2009 +0100 (2009-12-10) |
| parents | 9fdfb27f8e67 |
| 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(' ') |
| 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 |