timcharper-CalendarDateSelect 1.11.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. data/History.txt +216 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Manifest.txt +39 -0
  4. data/Rakefile +31 -0
  5. data/Readme.txt +16 -0
  6. data/init.rb +1 -0
  7. data/js_test/functional/cds_test.html +334 -0
  8. data/js_test/prototype.js +4184 -0
  9. data/js_test/test.css +40 -0
  10. data/js_test/unit/cds_helper_methods.html +46 -0
  11. data/js_test/unittest.js +564 -0
  12. data/lib/calendar_date_select.rb +19 -0
  13. data/lib/calendar_date_select/calendar_date_select.rb +223 -0
  14. data/lib/calendar_date_select/includes_helper.rb +38 -0
  15. data/public/blank_iframe.html +2 -0
  16. data/public/images/calendar_date_select/calendar.gif +0 -0
  17. data/public/javascripts/calendar_date_select/calendar_date_select.js +442 -0
  18. data/public/javascripts/calendar_date_select/format_american.js +34 -0
  19. data/public/javascripts/calendar_date_select/format_db.js +27 -0
  20. data/public/javascripts/calendar_date_select/format_euro_24hr.js +7 -0
  21. data/public/javascripts/calendar_date_select/format_euro_24hr_ymd.js +7 -0
  22. data/public/javascripts/calendar_date_select/format_finnish.js +32 -0
  23. data/public/javascripts/calendar_date_select/format_hyphen_ampm.js +36 -0
  24. data/public/javascripts/calendar_date_select/format_iso_date.js +46 -0
  25. data/public/javascripts/calendar_date_select/format_italian.js +24 -0
  26. data/public/javascripts/calendar_date_select/locale/de.js +10 -0
  27. data/public/javascripts/calendar_date_select/locale/fi.js +10 -0
  28. data/public/javascripts/calendar_date_select/locale/fr.js +10 -0
  29. data/public/javascripts/calendar_date_select/locale/pl.js +10 -0
  30. data/public/javascripts/calendar_date_select/locale/pt.js +11 -0
  31. data/public/javascripts/calendar_date_select/locale/ru.js +10 -0
  32. data/public/stylesheets/calendar_date_select/blue.css +130 -0
  33. data/public/stylesheets/calendar_date_select/default.css +135 -0
  34. data/public/stylesheets/calendar_date_select/plain.css +128 -0
  35. data/public/stylesheets/calendar_date_select/red.css +135 -0
  36. data/public/stylesheets/calendar_date_select/silver.css +133 -0
  37. data/test/functional/calendar_date_select_test.rb +157 -0
  38. data/test/functional/helper_methods_test.rb +15 -0
  39. data/test/test_helper.rb +19 -0
  40. metadata +103 -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
+