gbdev-calendar_date_select 1.11.20080824

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. data/CHANGELOG +204 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README +30 -0
  4. data/calendar_date_select.gemspec +14 -0
  5. data/init.rb +16 -0
  6. data/js_test/functional/cds_test.html +334 -0
  7. data/js_test/prototype.js +4184 -0
  8. data/js_test/test.css +40 -0
  9. data/js_test/unit/cds_helper_methods.html +46 -0
  10. data/js_test/unittest.js +564 -0
  11. data/lib/calendar_date_select.rb +222 -0
  12. data/lib/gem_init.rb +3 -0
  13. data/lib/includes_helper.rb +38 -0
  14. data/public/blank_iframe.html +2 -0
  15. data/public/images/calendar_date_select/calendar.gif +0 -0
  16. data/public/javascripts/calendar_date_select/calendar_date_select.js +430 -0
  17. data/public/javascripts/calendar_date_select/format_american.js +34 -0
  18. data/public/javascripts/calendar_date_select/format_db.js +27 -0
  19. data/public/javascripts/calendar_date_select/format_euro_24hr.js +7 -0
  20. data/public/javascripts/calendar_date_select/format_euro_24hr_ymd.js +7 -0
  21. data/public/javascripts/calendar_date_select/format_finnish.js +24 -0
  22. data/public/javascripts/calendar_date_select/format_hyphen_ampm.js +36 -0
  23. data/public/javascripts/calendar_date_select/format_iso_date.js +46 -0
  24. data/public/javascripts/calendar_date_select/format_italian.js +24 -0
  25. data/public/javascripts/calendar_date_select/locale/fi.js +10 -0
  26. data/public/javascripts/calendar_date_select/locale/pl.js +10 -0
  27. data/public/javascripts/calendar_date_select/locale/pt.js +10 -0
  28. data/public/stylesheets/calendar_date_select/blue.css +130 -0
  29. data/public/stylesheets/calendar_date_select/default.css +135 -0
  30. data/public/stylesheets/calendar_date_select/plain.css +128 -0
  31. data/public/stylesheets/calendar_date_select/red.css +135 -0
  32. data/public/stylesheets/calendar_date_select/silver.css +133 -0
  33. data/test/functional/calendar_date_select_test.rb +157 -0
  34. data/test/functional/helper_methods_test.rb +15 -0
  35. data/test/test_helper.rb +26 -0
  36. metadata +89 -0
@@ -0,0 +1,128 @@
1
+ .calendar_date_select {
2
+ border:#777 1px solid;
3
+ display:block;
4
+ width:195px;
5
+ z-index: 1000;
6
+ background-color:white;
7
+ }
8
+ /* this is a fun ie6 hack to get drop downs to stay behind the popup window. This should always be just underneath .calendar_date_select */
9
+ iframe.ie6_blocker {
10
+ position: absolute;
11
+ z-index: 999;
12
+ }
13
+
14
+ .calendar_date_select thead th {
15
+ color: black !important;
16
+ font-weight:bold;
17
+ }
18
+
19
+ .calendar_date_select .cds_buttons {
20
+ text-align:center;
21
+ padding:5px 0px;
22
+ }
23
+
24
+ .calendar_date_select .cds_footer {
25
+ padding:3px;
26
+ font-size:10px;
27
+ text-align:center;
28
+ }
29
+
30
+ .calendar_date_select table {
31
+ margin: 0px;
32
+ padding: 0px;
33
+ }
34
+
35
+
36
+ .calendar_date_select .cds_header {
37
+ text-align:center;
38
+ }
39
+
40
+ .calendar_date_select .cds_header * {
41
+ border:0px;
42
+ background-color:white;
43
+ }
44
+
45
+ .calendar_date_select .cds_header span {
46
+ font-size:15px;
47
+ color: black;
48
+ font-weight: bold;
49
+ }
50
+
51
+ .calendar_date_select select { font-size:11px;}
52
+
53
+ .calendar_date_select .cds_header a:hover {
54
+ color: white;
55
+ }
56
+ .calendar_date_select .cds_header a {
57
+ width:22px;
58
+ height:20px;
59
+ text-decoration: none;
60
+ font-size:14px;
61
+ color:black !important;
62
+ }
63
+
64
+ .calendar_date_select .cds_header a.prev {
65
+ float:left;
66
+ }
67
+ .calendar_date_select .cds_header a.next {
68
+ float:right;
69
+ }
70
+ .calendar_date_select .cds_header a.close {
71
+ float:right;
72
+ display:none;
73
+ }
74
+
75
+ .calendar_date_select .cds_header select.month {
76
+ width:90px;
77
+ }
78
+
79
+ .calendar_date_select .cds_header select.year {
80
+ width:61px;
81
+ }
82
+
83
+ .calendar_date_select .cds_buttons a {
84
+ color: black;
85
+ font-size: 9px;
86
+ }
87
+ .calendar_date_select td {
88
+ font-size:12px;
89
+ width: 24px;
90
+ height: 21px;
91
+ text-align:center;
92
+ vertical-align: middle;
93
+ background-color: #fff;
94
+ }
95
+ .calendar_date_select td.weekend {
96
+ }
97
+
98
+ .calendar_date_select td div {
99
+ color: #000;
100
+ }
101
+ .calendar_date_select td div.other {
102
+ color: #ccc;
103
+ }
104
+ .calendar_date_select td.selected div {
105
+ color:white;
106
+ }
107
+
108
+ .calendar_date_select tbody td {
109
+ }
110
+ .calendar_date_select td.selected {
111
+ background-color:#777;
112
+ }
113
+
114
+ .calendar_date_select td:hover {
115
+ background-color:#ccc;
116
+ }
117
+
118
+ .calendar_date_select td.today {
119
+ border: 1px dashed #999;
120
+ }
121
+
122
+ .calendar_date_select td.disabled div {
123
+ color: #e6e6e6;
124
+ }
125
+
126
+ .fieldWithErrors .calendar_date_select {
127
+ border: 2px solid red;
128
+ }
@@ -0,0 +1,135 @@
1
+ .calendar_date_select {
2
+ color:white;
3
+ border:#777 1px solid;
4
+ display:block;
5
+ width:195px;
6
+ z-index: 1000;
7
+ }
8
+ /* this is a fun ie6 hack to get drop downs to stay behind the popup window. This should always be just underneath .calendar_date_select */
9
+ iframe.ie6_blocker {
10
+ position: absolute;
11
+ z-index: 999;
12
+ }
13
+
14
+ .calendar_date_select thead th {
15
+ font-weight:bold;
16
+ background-color: #E7E8E8;
17
+ border-bottom:2px solid black;
18
+ color: black !important;
19
+ }
20
+
21
+ .calendar_date_select .cds_buttons {
22
+ text-align:center;
23
+ padding:5px 0px;
24
+ background-color: #5f0000;
25
+ }
26
+
27
+ .calendar_date_select .cds_footer {
28
+ background-color: black;
29
+ padding:3px;
30
+ text-align:center;
31
+ }
32
+
33
+ .calendar_date_select table {
34
+ margin: 0px;
35
+ padding: 0px;
36
+ }
37
+
38
+
39
+ .calendar_date_select .cds_header {
40
+ background-color: #ccc;
41
+ border-bottom: 2px solid #aaa;
42
+ text-align:center;
43
+ }
44
+
45
+ .calendar_date_select .cds_header span {
46
+ font-size:15px;
47
+ color: black;
48
+ font-weight: bold;
49
+ }
50
+
51
+ .calendar_date_select select { font-size:11px;}
52
+
53
+ .calendar_date_select .cds_header a:hover {
54
+ color: white;
55
+ }
56
+ .calendar_date_select .cds_header a {
57
+ width:22px;
58
+ height:20px;
59
+ text-decoration: none;
60
+ font-size:14px;
61
+ color:black !important;
62
+ }
63
+
64
+ .calendar_date_select .cds_header a.prev {
65
+ float:left;
66
+ }
67
+ .calendar_date_select .cds_header a.next {
68
+ float:right;
69
+ }
70
+
71
+ .calendar_date_select .cds_header a.close {
72
+ float:right;
73
+ display:none;
74
+ }
75
+
76
+ .calendar_date_select .cds_header select.month {
77
+ width:90px;
78
+ }
79
+
80
+ .calendar_date_select .cds_header select.year {
81
+ width:61px;
82
+ }
83
+
84
+ .calendar_date_select .cds_buttons a {
85
+ color: white;
86
+ font-size: 9px;
87
+ }
88
+
89
+
90
+ .calendar_date_select td {
91
+ background-color: #660000;
92
+ font-size:12px;
93
+ width: 24px;
94
+ height: 21px;
95
+ text-align:center;
96
+ vertical-align: middle;
97
+ }
98
+ .calendar_date_select td.weekend {
99
+ background-color: #5a0000;
100
+ }
101
+
102
+ .calendar_date_select td div {
103
+ color:#fff;
104
+ }
105
+ .calendar_date_select td div.other {
106
+ color: #93554C;
107
+ }
108
+ .calendar_date_select td.selected div {
109
+ color:black;
110
+ }
111
+
112
+
113
+ .calendar_date_select tbody td {
114
+ border-bottom: 1px solid #550000;
115
+ }
116
+ .calendar_date_select tbody td.selected {
117
+ background-color:white;
118
+ color:black;
119
+ }
120
+
121
+ .calendar_date_select tbody td:hover {
122
+ background-color:#ccc;
123
+ }
124
+
125
+ .calendar_date_select tbody td.today {
126
+ border: 1px dashed red;
127
+ }
128
+
129
+ .calendar_date_select td.disabled div {
130
+ color: #440000;
131
+ }
132
+
133
+ .fieldWithErrors .calendar_date_select {
134
+ border: 2px solid red;
135
+ }
@@ -0,0 +1,133 @@
1
+ .calendar_date_select {
2
+ color:white;
3
+ border:#777 1px solid;
4
+ display:block;
5
+ width:195px;
6
+ z-index: 1000;
7
+ }
8
+ /* this is a fun ie6 hack to get drop downs to stay behind the popup window. This should always be just underneath .calendar_date_select */
9
+ iframe.ie6_blocker {
10
+ position: absolute;
11
+ z-index: 999;
12
+ }
13
+
14
+ .calendar_date_select thead th {
15
+ font-weight:bold;
16
+ background-color: #000;
17
+ border-top:1px solid #777;
18
+ border-bottom:2px solid #333;
19
+ color: white !important;
20
+ }
21
+
22
+ .calendar_date_select .cds_buttons {
23
+ text-align:center;
24
+ padding:5px 0px;
25
+ background-color: #555;
26
+ }
27
+
28
+ .calendar_date_select .cds_footer {
29
+ background-color: black;
30
+ padding:3px;
31
+ font-size:12px;
32
+ text-align:center;
33
+ }
34
+
35
+ .calendar_date_select table {
36
+ margin: 0px;
37
+ padding: 0px;
38
+ }
39
+
40
+
41
+ .calendar_date_select .cds_header {
42
+ background-color: #ccc;
43
+ border-bottom: 2px solid #aaa;
44
+ text-align:center;
45
+ }
46
+
47
+ .calendar_date_select .cds_header span {
48
+ font-size:15px;
49
+ color: black;
50
+ font-weight: bold;
51
+ }
52
+
53
+ .calendar_date_select select { font-size:11px;}
54
+
55
+ .calendar_date_select .cds_header a:hover {
56
+ color: white;
57
+ }
58
+ .calendar_date_select .cds_header a {
59
+ width:22px;
60
+ height:20px;
61
+ text-decoration: none;
62
+ font-size:14px;
63
+ color:black !important;
64
+ }
65
+
66
+ .calendar_date_select .cds_header a.prev {
67
+ float:left;
68
+ }
69
+ .calendar_date_select .cds_header a.next {
70
+ float:right;
71
+ }
72
+ .calendar_date_select .cds_header a.close {
73
+ float:right;
74
+ display:none;
75
+ }
76
+
77
+ .calendar_date_select .cds_header select.month {
78
+ width:90px;
79
+ }
80
+
81
+ .calendar_date_select .cds_header select.year {
82
+ width:61px;
83
+ }
84
+
85
+ .calendar_date_select .cds_buttons a {
86
+ color: white;
87
+ font-size: 9px;
88
+ }
89
+ .calendar_date_select td {
90
+ font-size:12px;
91
+ width: 24px;
92
+ height: 21px;
93
+ text-align:center;
94
+ vertical-align: middle;
95
+ background-color: #666666;
96
+ }
97
+ .calendar_date_select td.weekend {
98
+ background-color: #606060;
99
+ }
100
+
101
+ .calendar_date_select td div {
102
+ color: #fff;
103
+ }
104
+ .calendar_date_select td div.other {
105
+ color: #888;
106
+ }
107
+ .calendar_date_select td.selected div {
108
+ color:black;
109
+ }
110
+
111
+ .calendar_date_select tbody td {
112
+ border-bottom: 1px solid #555;
113
+ }
114
+ .calendar_date_select td.selected {
115
+ background-color:white;
116
+ }
117
+
118
+ .calendar_date_select td:hover {
119
+ background-color:#ccc;
120
+ }
121
+
122
+ .calendar_date_select td.today {
123
+ border: 1px dashed #999;
124
+ }
125
+
126
+ .calendar_date_select td.disabled div {
127
+ color: #454545;
128
+ }
129
+
130
+
131
+ .fieldWithErrors .calendar_date_select {
132
+ border: 2px solid red;
133
+ }
@@ -0,0 +1,157 @@
1
+ require File.join(File.dirname(__FILE__), '../test_helper.rb')
2
+
3
+ class HelperMethodsTest < Test::Unit::TestCase
4
+ include ActionView::Helpers::FormHelper
5
+ include ActionView::Helpers::JavaScriptHelper
6
+ include ActionView::Helpers::AssetTagHelper
7
+ include ActionView::Helpers::TagHelper
8
+ include ActionView::Helpers::FormTagHelper
9
+
10
+ include CalendarDateSelect::FormHelper
11
+
12
+ def setup
13
+ @controller = ActionController::Base.new
14
+ @request = OpenStruct.new
15
+ @controller.request = @request
16
+
17
+ @model = OpenStruct.new
18
+ end
19
+
20
+ def test_mixed_time__model_returns_date__should_render_without_time
21
+ @model.start_datetime = Date.parse("January 2, 2007")
22
+ output = calendar_date_select(:model, :start_datetime, :time => "mixed")
23
+ assert_no_match(/12:00 AM/, output, "Shouldn't have outputted a time")
24
+ end
25
+
26
+ def test_mixed_time__model_returns_time__should_render_with_time
27
+ @model.start_datetime = Time.parse("January 2, 2007 12:00 AM")
28
+ output = calendar_date_select(:model, :start_datetime, :time => "mixed")
29
+ assert_match(/12:00 AM/, output, "Should have outputted a time")
30
+ end
31
+
32
+ def test_time_true__model_returns_date__should_render_with_time
33
+ @model.start_datetime = Date.parse("January 2, 2007")
34
+ output = calendar_date_select(:model, :start_datetime, :time => "true")
35
+ assert_match(/12:00 AM/, output, "Should have outputted a time")
36
+ end
37
+
38
+ def test_time_false__model_returns_time__should_render_without_time
39
+ @model.start_datetime = Time.parse("January 2, 2007 12:00 AM")
40
+ output = calendar_date_select(:model, :start_datetime)
41
+ assert_no_match(/12:00 AM/, output, "Shouldn't have outputted a time")
42
+ end
43
+
44
+ def test__nil_model__shouldnt_populate_value
45
+ @model = nil
46
+ output = calendar_date_select(:model, :start_datetime)
47
+
48
+ assert_no_match(/value/, output)
49
+ end
50
+
51
+ def test__vdc__should_auto_format_function
52
+ @model.start_datetime = Time.parse("January 2, 2007 12:00 AM")
53
+ output = calendar_date_select(:model,
54
+ :start_datetime,
55
+ :valid_date_check => "date < new Date()"
56
+ )
57
+ assert_match("valid_date_check:function(date) { return(date &lt; new Date()) }", output)
58
+
59
+ output = calendar_date_select(:model,
60
+ :start_datetime,
61
+ :valid_date_check => "return(date < new Date())"
62
+ )
63
+ assert_match("valid_date_check:function(date) { return(date &lt; new Date()) }", output)
64
+ output = calendar_date_select(:model,
65
+ :start_datetime,
66
+ :valid_date_check => "function(p) { return(date < new Date()) }"
67
+ )
68
+ assert_match("valid_date_check:function(p) { return(date &lt; new Date()) }", output)
69
+ end
70
+
71
+ def test__vdc__excluded_return__should_raise_error
72
+ throw_message = ":valid_date_check function is missing a 'return' statement. Try something like: :valid_date_check => 'if (date > new(Date)) return true; else return false;'"
73
+ assert_throws throw_message.to_sym do
74
+ output = calendar_date_select(:model,
75
+ :start_datetime,
76
+ :valid_date_check => "date = 5; date < new Date());"
77
+ )
78
+ end
79
+
80
+ assert_throws throw_message.to_sym do
81
+ output = calendar_date_select(:model,
82
+ :start_datetime,
83
+ :valid_date_check => "function(p) { date = 5; date < new Date()); }"
84
+ )
85
+ end
86
+ end
87
+
88
+ def test__year_range__formats_correctly
89
+ output = calendar_date_select(:model, :start_datetime)
90
+ assert_match("year_range:10", output)
91
+ output = calendar_date_select(:model, :start_datetime, :year_range => 2000..2010)
92
+ assert_match("year_range:[2000, 2010]", output)
93
+ output = calendar_date_select(:model, :start_datetime, :year_range => (15.years.ago..5.years.ago))
94
+ assert_match("year_range:[#{15.years.ago.year}, #{5.years.ago.year}]", output)
95
+ end
96
+
97
+ def test__tag__formats_text_correctly_string
98
+ time = "January 2, 2007 12:01:23 AM"
99
+ output = calendar_date_select_tag(:name, time)
100
+
101
+ assert_match(time, output, "Should have outputted a correctly formatted time")
102
+ end
103
+
104
+ def test__tag__formats_text_correctly_date
105
+ time = Date.new(2007, 01, 02)
106
+ output = calendar_date_select_tag(:name, time)
107
+
108
+ assert_no_match(/12:01 AM/, output, "Should not have outputted a time")
109
+ assert_match(CalendarDateSelect.format_date(time), output, "Should have outputted a correctly formatted time")
110
+ end
111
+
112
+ def test__tag__formats_text_correctly_time
113
+ time = Time.parse("January 2, 2007 12:01:23 AM")
114
+ output = calendar_date_select_tag(:name, time)
115
+
116
+ assert_match(CalendarDateSelect.format_date(time), output, "Should have outputted a correctly formatted time")
117
+ end
118
+
119
+ def test__tag__formats_text_correctly_with_time_option
120
+ time = Time.parse("January 2, 2007 12:01:23 AM")
121
+ output = calendar_date_select_tag(:name, time, :time => true)
122
+
123
+ assert_match(CalendarDateSelect.format_date(time), output, "Should have outputted a correctly formatted time")
124
+ end
125
+
126
+ def test__tag__formats_text_correctly_with_mixed_option
127
+ time = Time.parse("January 2, 2007 12:01:23 AM")
128
+ output = calendar_date_select_tag(:name, time, :time => 'mixed')
129
+
130
+ assert_match(CalendarDateSelect.format_date(time), output, "Should have outputted a correctly formatted time")
131
+ end
132
+
133
+ def test__tag__formats_text_correctly_time_as_date
134
+ time = Time.parse("January 2, 2007 12:01:23 AM")
135
+ output = calendar_date_select_tag(:name, time, :time => false)
136
+
137
+ assert_no_match(/12:01 AM/, output, "Should not have outputted a time")
138
+ assert_match(time.strftime(CalendarDateSelect.date_format_string(false)), output, "Should have outputted a correctly formatted time")
139
+ end
140
+
141
+ def test__tag__formats_text_correctly_time_with_format
142
+ time = Time.parse("January 2, 2007 12:01:00 AM")
143
+ output = calendar_date_select_tag(:name, time, :format => "%Y-%m-%d")
144
+
145
+ assert_no_match(/12:01 AM/, output, "Should not have outputted a time")
146
+ assert_match('2007-01-02', output, "Should have outputted a correctly formatted time")
147
+ end
148
+
149
+ def test__nil_object_option__should_disregard
150
+ @model.start_datetime = Time.parse("January 2, 2007 12:00 AM")
151
+ output = calendar_date_select(:model, :start_datetime, :time => true, :object => nil)
152
+ assert_match(CalendarDateSelect.format_date(@model.start_datetime), output, "Should have outputted a time")
153
+ end
154
+
155
+ end
156
+
157
+