hydra-file-access 5.0.0.pre1

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 (169) hide show
  1. data/.gitignore +2 -0
  2. data/Rakefile +5 -0
  3. data/app/assets/images/hydra/powered_by_hydra.png +0 -0
  4. data/app/assets/images/hydra/search-button.png +0 -0
  5. data/app/assets/javascripts/date-picker/booking/index.html +368 -0
  6. data/app/assets/javascripts/date-picker/calendarHTML.txt +84 -0
  7. data/app/assets/javascripts/date-picker/css/datepicker.css +511 -0
  8. data/app/assets/javascripts/date-picker/css/demo.css +229 -0
  9. data/app/assets/javascripts/date-picker/index.html +798 -0
  10. data/app/assets/javascripts/date-picker/js/datepicker.js +2898 -0
  11. data/app/assets/javascripts/date-picker/js/datepicker.packed.js +1 -0
  12. data/app/assets/javascripts/date-picker/js/lang/ar.js +9 -0
  13. data/app/assets/javascripts/date-picker/js/lang/cs.js +9 -0
  14. data/app/assets/javascripts/date-picker/js/lang/da.js +10 -0
  15. data/app/assets/javascripts/date-picker/js/lang/de.js +10 -0
  16. data/app/assets/javascripts/date-picker/js/lang/en.js +9 -0
  17. data/app/assets/javascripts/date-picker/js/lang/eo.js +13 -0
  18. data/app/assets/javascripts/date-picker/js/lang/es.js +9 -0
  19. data/app/assets/javascripts/date-picker/js/lang/et.js +23 -0
  20. data/app/assets/javascripts/date-picker/js/lang/fi.js +7 -0
  21. data/app/assets/javascripts/date-picker/js/lang/fr.js +69 -0
  22. data/app/assets/javascripts/date-picker/js/lang/he.js +9 -0
  23. data/app/assets/javascripts/date-picker/js/lang/hu.js +9 -0
  24. data/app/assets/javascripts/date-picker/js/lang/id.js +9 -0
  25. data/app/assets/javascripts/date-picker/js/lang/it.js +11 -0
  26. data/app/assets/javascripts/date-picker/js/lang/kr.js +9 -0
  27. data/app/assets/javascripts/date-picker/js/lang/lt.js +8 -0
  28. data/app/assets/javascripts/date-picker/js/lang/lv.js +9 -0
  29. data/app/assets/javascripts/date-picker/js/lang/nl.js +9 -0
  30. data/app/assets/javascripts/date-picker/js/lang/no.js +9 -0
  31. data/app/assets/javascripts/date-picker/js/lang/pl.js +10 -0
  32. data/app/assets/javascripts/date-picker/js/lang/pt-br.js +11 -0
  33. data/app/assets/javascripts/date-picker/js/lang/pt.js +9 -0
  34. data/app/assets/javascripts/date-picker/js/lang/ru.js +11 -0
  35. data/app/assets/javascripts/date-picker/js/lang/se.js +9 -0
  36. data/app/assets/javascripts/date-picker/js/lang/si.js +9 -0
  37. data/app/assets/javascripts/date-picker/js/lang/tr.js +9 -0
  38. data/app/assets/javascripts/date-picker/language/index.html +240 -0
  39. data/app/assets/javascripts/date-picker/media/Thumbs.db +0 -0
  40. data/app/assets/javascripts/date-picker/media/backstripes.gif +0 -0
  41. data/app/assets/javascripts/date-picker/media/bg_header.jpg +0 -0
  42. data/app/assets/javascripts/date-picker/media/bullet1.gif +0 -0
  43. data/app/assets/javascripts/date-picker/media/bullet2.gif +0 -0
  44. data/app/assets/javascripts/date-picker/media/cal-grey.gif +0 -0
  45. data/app/assets/javascripts/date-picker/media/cal.gif +0 -0
  46. data/app/assets/javascripts/date-picker/media/gradient-e5e5e5-ffffff.gif +0 -0
  47. data/app/assets/javascripts/hydra/hydra-head.js +195 -0
  48. data/app/assets/javascripts/hydra/mediashelf.datepicker.js +39 -0
  49. data/app/assets/javascripts/hydra/mediashelf.placeholder.js +67 -0
  50. data/app/assets/javascripts/jquery.form.js +1076 -0
  51. data/app/assets/javascripts/jquery.ui.datepicker.js +1793 -0
  52. data/app/assets/javascripts/spin.min.js +2 -0
  53. data/app/assets/stylesheets/hydra/html_refactor.css +79 -0
  54. data/app/assets/stylesheets/hydra/hydrangea-split-button.css +18 -0
  55. data/app/assets/stylesheets/hydra/hydrangea.css +288 -0
  56. data/app/assets/stylesheets/hydra/ie-styles.css +149 -0
  57. data/app/assets/stylesheets/hydra/styles.css +946 -0
  58. data/app/assets/stylesheets/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  59. data/app/assets/stylesheets/redmond/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
  60. data/app/assets/stylesheets/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
  61. data/app/assets/stylesheets/redmond/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
  62. data/app/assets/stylesheets/redmond/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  63. data/app/assets/stylesheets/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
  64. data/app/assets/stylesheets/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
  65. data/app/assets/stylesheets/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  66. data/app/assets/stylesheets/redmond/images/ui-icons_217bc0_256x240.png +0 -0
  67. data/app/assets/stylesheets/redmond/images/ui-icons_2e83ff_256x240.png +0 -0
  68. data/app/assets/stylesheets/redmond/images/ui-icons_469bdd_256x240.png +0 -0
  69. data/app/assets/stylesheets/redmond/images/ui-icons_6da8d5_256x240.png +0 -0
  70. data/app/assets/stylesheets/redmond/images/ui-icons_cd0a0a_256x240.png +0 -0
  71. data/app/assets/stylesheets/redmond/images/ui-icons_d8e7f3_256x240.png +0 -0
  72. data/app/assets/stylesheets/redmond/images/ui-icons_f9bd01_256x240.png +0 -0
  73. data/app/assets/stylesheets/redmond/jquery-ui-1.8.5.custom.css +572 -0
  74. data/app/controllers/hydra/application_controller.rb +5 -0
  75. data/app/controllers/hydra/file_assets_controller.rb +3 -0
  76. data/app/helpers/application_helper.rb +3 -0
  77. data/app/helpers/hydra/application_helper_behavior.rb +8 -0
  78. data/app/helpers/hydra/hydra_helper_behavior.rb +70 -0
  79. data/app/helpers/hydra_helper.rb +4 -0
  80. data/app/models/file_asset.rb +5 -0
  81. data/app/models/uses_default_partials.rb +23 -0
  82. data/app/views/_add_assets_links.html.erb +14 -0
  83. data/app/views/_user_util_links.html.erb +24 -0
  84. data/app/views/generic_content_objects/_contributor_form.html.erb +11 -0
  85. data/app/views/generic_content_objects/_description_form.html.erb +7 -0
  86. data/app/views/generic_content_objects/_edit_description.html.erb +23 -0
  87. data/app/views/generic_content_objects/_new.html.erb +0 -0
  88. data/app/views/generic_content_objects/_show_description.html.erb +41 -0
  89. data/app/views/generic_contents/_edit.html.erb +10 -0
  90. data/app/views/generic_contents/_index.html.erb +21 -0
  91. data/app/views/generic_contents/_show.html.erb +6 -0
  92. data/app/views/generic_contents/_show_content.html.erb +7 -0
  93. data/app/views/generic_images/_edit.html.erb +36 -0
  94. data/app/views/generic_images/_index.html.erb +24 -0
  95. data/app/views/generic_images/_show.html.erb +13 -0
  96. data/app/views/generic_images/_show_all.html.erb +14 -0
  97. data/app/views/generic_images/_show_content.html.erb +7 -0
  98. data/app/views/hydra/file_assets/_asset_saved_flash.html.erb +2 -0
  99. data/app/views/hydra/file_assets/_deletable_result.html.erb +5 -0
  100. data/app/views/hydra/file_assets/_file_assets_form.html.erb +11 -0
  101. data/app/views/hydra/file_assets/_index.html.erb +29 -0
  102. data/app/views/hydra/file_assets/_new.html.erb +6 -0
  103. data/app/views/hydra/file_assets/_result.html.erb +11 -0
  104. data/app/views/hydra/file_assets/index.html.erb +5 -0
  105. data/app/views/hydra/permissions/_edit_person_permissions.html.erb +30 -0
  106. data/app/views/hydra/permissions/_index.html.erb +46 -0
  107. data/app/views/hydra/permissions/_new.html.erb +14 -0
  108. data/app/views/hydra/permissions/_permissions_form.html.erb +23 -0
  109. data/app/views/hydra/permissions/index.html.erb +1 -0
  110. data/app/views/hydra/permissions/new.html.erb +1 -0
  111. data/app/views/mods_assets/_additional_info_form.html.erb +44 -0
  112. data/app/views/mods_assets/_contributor_form.html.erb +14 -0
  113. data/app/views/mods_assets/_edit.html.erb +10 -0
  114. data/app/views/mods_assets/_edit_description.html.erb +73 -0
  115. data/app/views/mods_assets/_edit_journal.html.erb +57 -0
  116. data/app/views/mods_assets/_index.html.erb +1 -0
  117. data/app/views/mods_assets/_index_list.html.erb +37 -0
  118. data/app/views/mods_assets/_index_table.html.erb +7 -0
  119. data/app/views/mods_assets/_progress_box.html.erb +82 -0
  120. data/app/views/mods_assets/_publication_form.html.erb +13 -0
  121. data/app/views/mods_assets/_show.html.erb +39 -0
  122. data/app/views/mods_assets/_show_additional_info.html.erb +17 -0
  123. data/app/views/mods_assets/_show_contributors.html.erb +7 -0
  124. data/app/views/mods_assets/_show_description.html.erb +35 -0
  125. data/app/views/mods_assets/_show_file_assets.html.erb +22 -0
  126. data/app/views/mods_assets/_show_journal.html.erb +42 -0
  127. data/app/views/mods_assets/_show_permissions.html.erb +15 -0
  128. data/app/views/mods_assets/_show_publication.html.erb +8 -0
  129. data/app/views/shared/_delete_asset_confirmation.html.erb +17 -0
  130. data/config/jetty.yml +7 -0
  131. data/hydra-file-access.gemspec +39 -0
  132. data/lib/hydra-file-access.rb +15 -0
  133. data/lib/hydra/assets.rb +5 -0
  134. data/lib/hydra/assets_controller_helper.rb +122 -0
  135. data/lib/hydra/controller/assets_controller_behavior.rb +153 -0
  136. data/lib/hydra/controller/file_assets_behavior.rb +140 -0
  137. data/lib/hydra/file_access/engine.rb +12 -0
  138. data/lib/hydra/file_assets.rb +11 -0
  139. data/lib/hydra/submission_workflow.rb +139 -0
  140. data/lib/hydra/ui.rb +6 -0
  141. data/spec/.gitignore +1 -0
  142. data/spec/controllers/file_assets_controller_spec.rb +180 -0
  143. data/spec/fixtures/small_file.txt +1 -0
  144. data/spec/helpers/access_controls_evaluation_spec.rb +19 -0
  145. data/spec/helpers/assets_controller_helper_spec.rb +63 -0
  146. data/spec/helpers/file_assets_helper_spec.rb +116 -0
  147. data/spec/helpers/hydra_helper_spec.rb +21 -0
  148. data/spec/helpers/hydra_model_methods_spec.rb +88 -0
  149. data/spec/integration/file_asset_spec.rb +68 -0
  150. data/spec/lib/hydra_submission_workflow_spec.rb +141 -0
  151. data/spec/models/file_asset_spec.rb +25 -0
  152. data/spec/spec_helper.rb +27 -0
  153. data/spec/support/Gemfile +12 -0
  154. data/spec/support/app/models/generic_content.rb +26 -0
  155. data/spec/support/app/models/sample.rb +33 -0
  156. data/spec/support/app/models/solr_document.rb +5 -0
  157. data/spec/support/db/migrate/20111101221803_create_searches.rb +16 -0
  158. data/spec/support/lib/generators/test_app_generator.rb +39 -0
  159. data/spec/support/matchers/helper_matcher.rb +14 -0
  160. data/spec/support/matchers/solr_matchers.rb +60 -0
  161. data/spec/support/spec/factories/users.rb +11 -0
  162. data/spec/support/spec/fixtures/hydra_test_generic_content.foxml.xml +138 -0
  163. data/spec/support/spec/fixtures/hydrangea_fixture_file_asset1.foxml.xml +4946 -0
  164. data/spec/support/spec/fixtures/hydrangea_fixture_mods_article1.foxml.xml +234 -0
  165. data/spec/support/spec/fixtures/hydrangea_fixture_mods_article2.foxml.xml +177 -0
  166. data/spec/support/spec/fixtures/hydrangea_fixture_mods_article3.foxml.xml +170 -0
  167. data/spec/support/spec/fixtures/hydrangea_fixture_uploaded_svg1.foxml.xml +676 -0
  168. data/tasks/rspec.rake +55 -0
  169. metadata +516 -0
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ tmp/
2
+ Gemfile.lock
data/Rakefile ADDED
@@ -0,0 +1,5 @@
1
+ require 'rake/testtask'
2
+ require 'bundler'
3
+ Bundler::GemHelper.install_tasks
4
+
5
+ Dir.glob('tasks/*.rake').each { |r| import r }
@@ -0,0 +1,368 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+ <title>frequency decoder ~ Unobtrusive JavaScript datePicker (calendar) widgit demo</title>
5
+ <script type="text/javascript" src="../js/lang/en.js"></script>
6
+ <script type="text/javascript" src="../js/datepicker.js"></script>
7
+ <link href="../css/demo.css" rel="stylesheet" type="text/css" />
8
+ <link href="../css/datepicker.css" rel="stylesheet" type="text/css" />
9
+ <style type="text/css">
10
+ .englishDate
11
+ {
12
+ display:block;
13
+ font:lighter oblique 12px/12px helvetica, arial, sans-serif;
14
+ text-align:left;
15
+ color:#555;
16
+ margin:0 0 0 0.5em;
17
+ }
18
+ .schedsearchtable label
19
+ {
20
+ font:bold 12px/12px helvetica, arial, sans-serif;
21
+ text-align:right;
22
+ color:#666;
23
+ text-transform:none;
24
+ display:block;
25
+ margin-bottom:0.2em;
26
+ }
27
+ h1
28
+ {
29
+ font:normal 42px/42px helvetica, arial, sans-serif;
30
+ text-align:center;
31
+ color:#555;
32
+ text-transform:none;
33
+ display:block;
34
+ margin-bottom:1.2em;
35
+ }
36
+ form
37
+ {
38
+ text-align:left;
39
+ }
40
+ </style>
41
+
42
+ <script type="text/javascript">
43
+ // <![CDATA[
44
+
45
+
46
+ // An object that ties the two datePickers together
47
+ var bookingPod = window.bookingPod = {
48
+ // Default departure cursor date : todays date + 7
49
+ "OUTWARD_CURSOR" : 7,
50
+ // Default return cursor date : departure date + 7
51
+ "RETURN_CURSOR" : 7,
52
+ // Min days between departure and return dates
53
+ "MIN_DAYS_BETWEEN" : 0,
54
+ // Default messages
55
+ "MESSAGES" : { "MD1" : "Please select a departure date", "MD2" : " Please select a return date" },
56
+ // Maximum days ahead that a flight can be booked
57
+ "MAX_DATE_LIMIT" : 360,
58
+ // Minimum days ahead that a flight can be booked
59
+ "MIN_DATE_LIMIT" : 0,
60
+
61
+ createYYYYMMDDString: function(dt) {
62
+ return dt ? dt.getFullYear() + String(dt.getMonth() + 1 < 10 ? "0" + (dt.getMonth() + 1) : dt.getMonth() + 1) + (dt.getDate() < 10 ? "0" + dt.getDate() : dt.getDate()) : "";
63
+ },
64
+ checkOutwardDate: function(cbObj) {
65
+ // Show the date
66
+ bookingPod.showEnglishDate(cbObj);
67
+
68
+ // An invalid or no outward date was entered
69
+ if(!cbObj.date) {
70
+ // Set the default cursor dates on the return element
71
+ var today = new Date(),
72
+ defaultOut = new Date(today.getFullYear(), today.getMonth(), today.getDate() + bookingPod.OUTWARD_CURSOR),
73
+ defaultRet = new Date(defaultOut.getFullYear(), defaultOut.getMonth(), defaultOut.getDate() + bookingPod.RETURN_CURSOR),
74
+ rangeHigh = new Date(today.getFullYear(), today.getMonth(), today.getDate() + bookingPod.MAX_DATE_LIMIT),
75
+ rangeLow = new Date(today.getFullYear(), today.getMonth(), today.getDate() + bookingPod.MIN_DATE_LIMIT);
76
+
77
+ // Reset the outward default ranges
78
+ datePickerController.setRangeHigh("MD2", bookingPod.createYYYYMMDDString(rangeHigh));
79
+ datePickerController.setRangeLow("MD2", bookingPod.createYYYYMMDDString(rangeLow));
80
+
81
+ // Set the outward cursor to be the default value : today's date + OUTWARD_CURSOR
82
+ datePickerController.setCursorDate("MD1", bookingPod.createYYYYMMDDString(defaultOut));
83
+
84
+ // If no return date set then reset the cursor position to be today's date + OUTWARD_CURSOR + RETURN_CURSOR
85
+ if(!datePickerController.getSelectedDate("MD2")) {
86
+ datePickerController.setCursorDate("MD2", bookingPod.createYYYYMMDDString(defaultRet));
87
+ };
88
+
89
+ return;
90
+ };
91
+
92
+ // Set the rangeLow of the return to be the outward date + MIN_DAYS_BETWEEN
93
+ datePickerController.setRangeLow("MD2", bookingPod.createYYYYMMDDString(new Date(cbObj.yyyy, +cbObj.mm - 1, (+cbObj.dd + bookingPod.MIN_DAYS_BETWEEN), 5, 0, 0, 0)));
94
+
95
+ // If no valid return date set
96
+ if(!datePickerController.getSelectedDate("MD2")) {
97
+ // Set the return date to be departure date + RETURN_CURSOR
98
+ datePickerController.setSelectedDate("MD2", bookingPod.createYYYYMMDDString(new Date(cbObj.yyyy, +cbObj.mm - 1, (+cbObj.dd + bookingPod.RETURN_CURSOR), 5, 0, 0, 0)));
99
+ };
100
+ },
101
+
102
+ checkReturnDate: function(cbObj) {
103
+ // Set the return cursor date if none set
104
+ if(!cbObj.date) {
105
+ var depDate = datePickerController.getSelectedDate("MD1") || new Date();
106
+ // Set the outward cursor to be the default value : todays date + OUTWARD_CURSOR
107
+ datePickerController.setCursorDate("MD2", bookingPod.createYYYYMMDDString(new Date(depDate.getFullYear(), depDate.getMonth(), depDate.getDate() + bookingPod.RETURN_CURSOR)));
108
+ };
109
+
110
+ // Show the date
111
+ bookingPod.showEnglishDate(cbObj);
112
+ },
113
+
114
+ showEnglishDate : function(argObj) {
115
+ // Grab the span & get a more English-ised version of the selected date
116
+ var spn = document.getElementById(argObj.id + "-EnglishDate"),
117
+ formattedDate = !(argObj.date == null) ? datePickerController.printFormattedDate(argObj.date, "l-cc-sp-d-S-sp-F-sp-Y", false) || bookingPod.MESSAGES[argObj.id] : bookingPod.MESSAGES[argObj.id];
118
+
119
+ while(spn.firstChild) spn.removeChild(spn.firstChild);
120
+
121
+ // Note: The 3rd argument to printFormattedDate is a Boolean value that
122
+ // instructs the script to use the imported locale (true) or not (false)
123
+ // when creating the dates. In this case, I'm not using the imported locale
124
+ // as I've used the "S" format mask, which returns the English ordinal
125
+ // suffix for a date e.g. "st", "nd", "rd" or "th" and using an
126
+ // imported locale would look strange if an English suffix was included
127
+
128
+ // Add a new text node containing our formatted date
129
+ spn.appendChild(document.createTextNode(formattedDate));
130
+ }
131
+ }
132
+
133
+ // ]]>
134
+ </script>
135
+
136
+ </head>
137
+ <body>
138
+ <form id="testform" method="post" action="">
139
+ <h1>Booking form test</h1>
140
+
141
+ <table cellspacing="0" cellpadding="2" class="schedsearchtable">
142
+ <tbody>
143
+ <tr>
144
+ <td><label for="DD1">Departing</label></td>
145
+ <td><select id="TD1" name="TD1">
146
+ <option selected="selected">Anytime</option>
147
+ <option>Morning</option>
148
+ <option>Midday</option>
149
+ <option>Evening</option>
150
+ <option>Night</option>
151
+ <option>0100</option>
152
+ <option>0200</option>
153
+ <option>0300</option>
154
+ <option>0400</option>
155
+ <option>0500</option>
156
+ <option>0600</option>
157
+ <option>0700</option>
158
+ <option>0800</option>
159
+ <option>0900</option>
160
+ <option>1000</option>
161
+ <option>1100</option>
162
+ <option>1200</option>
163
+ <option>1300</option>
164
+ <option>1400</option>
165
+ <option>1500</option>
166
+ <option>1600</option>
167
+ <option>1700</option>
168
+ <option>1800</option>
169
+ <option>1900</option>
170
+ <option>2000</option>
171
+ <option>2100</option>
172
+ <option>2200</option>
173
+ <option>2300</option>
174
+ </select>
175
+ <!-- Departure Date -->
176
+ <select name="DD1" id="DD1">
177
+
178
+ <option value="1">1</option>
179
+ <option value="2">2</option>
180
+ <option value="3">3</option>
181
+ <option value="4">4</option>
182
+ <option value="5">5</option>
183
+ <option value="6">6</option>
184
+ <option value="7">7</option>
185
+ <option value="8">8</option>
186
+ <option value="9">9</option>
187
+ <option value="10">10</option>
188
+ <option value="11">11</option>
189
+ <option value="12">12</option>
190
+ <option value="13">13</option>
191
+ <option value="14">14</option>
192
+ <option value="15">15</option>
193
+ <option value="16">16</option>
194
+ <option value="17">17</option>
195
+ <option value="18">18</option>
196
+ <option value="19">19</option>
197
+ <option value="20">20</option>
198
+ <option value="21">21</option>
199
+ <option value="22">22</option>
200
+ <option value="23">23</option>
201
+ <option value="24">24</option>
202
+ <option value="25">25</option>
203
+ <option value="26">26</option>
204
+ <option value="27">27</option>
205
+ <option value="28">28</option>
206
+ <option value="29">29</option>
207
+ <option value="30">30</option>
208
+ <option value="31">31</option>
209
+ </select>
210
+ <!-- Departure Month -->
211
+ <select id="MD1" name="MD1">
212
+ <option value="082009">August 2009</option>
213
+ <option value="092009">September 2009</option>
214
+ <option value="102009">October 2009</option>
215
+ <option value="112009">November 2009</option>
216
+ <option value="122009">December 2009</option>
217
+ <option value="012010">January 2010</option>
218
+ <option value="022010">February 2010</option>
219
+ <option value="032010">March 2010</option>
220
+ <option value="042010">April 2010</option>
221
+ <option value="052010">May 2010</option>
222
+ <option value="062010">June 2010</option>
223
+ <option value="072010">July 2010</option>
224
+
225
+ </select>
226
+ </td>
227
+ <td><span id="MD1-EnglishDate" class="englishDate"></span></td>
228
+ </tr>
229
+ <tr>
230
+ <td><label for="DD2">Returning</label></td>
231
+ <td><select id="TD2" name="TD2">
232
+ <option selected="selected">Anytime</option>
233
+ <option>Morning</option>
234
+ <option>Midday</option>
235
+ <option>Evening</option>
236
+ <option>Night</option>
237
+ <option>0100</option>
238
+ <option>0200</option>
239
+ <option>0300</option>
240
+ <option>0400</option>
241
+ <option>0500</option>
242
+ <option>0600</option>
243
+ <option>0700</option>
244
+ <option>0800</option>
245
+ <option>0900</option>
246
+ <option>1000</option>
247
+ <option>1100</option>
248
+ <option>1200</option>
249
+ <option>1300</option>
250
+ <option>1400</option>
251
+ <option>1500</option>
252
+ <option>1600</option>
253
+ <option>1700</option>
254
+ <option>1800</option>
255
+ <option>1900</option>
256
+ <option>2000</option>
257
+ <option>2100</option>
258
+ <option>2200</option>
259
+ <option>2300</option>
260
+ </select>
261
+ <!-- Return Date -->
262
+ <select id="DD2" name="DD2">
263
+
264
+ <option value="1">1</option>
265
+ <option value="2">2</option>
266
+ <option value="3">3</option>
267
+ <option value="4">4</option>
268
+ <option value="5">5</option>
269
+ <option value="6">6</option>
270
+ <option value="7">7</option>
271
+ <option value="8">8</option>
272
+ <option value="9">9</option>
273
+ <option value="10">10</option>
274
+ <option value="11">11</option>
275
+ <option value="12">12</option>
276
+ <option value="13">13</option>
277
+ <option value="14">14</option>
278
+ <option value="15">15</option>
279
+ <option value="16">16</option>
280
+ <option value="17">17</option>
281
+ <option value="18">18</option>
282
+ <option value="19">19</option>
283
+ <option value="20">20</option>
284
+ <option value="21">21</option>
285
+ <option value="22">22</option>
286
+ <option value="23">23</option>
287
+ <option value="24">24</option>
288
+ <option value="25">25</option>
289
+ <option value="26">26</option>
290
+ <option value="27">27</option>
291
+ <option value="28">28</option>
292
+ <option value="29">29</option>
293
+ <option value="30">30</option>
294
+ <option value="31">31</option>
295
+ </select>
296
+
297
+ <select id="MD2" name="MD2">
298
+ <option value="082009">August 2009</option>
299
+ <option value="092009">September 2009</option>
300
+ <option value="102009">October 2009</option>
301
+ <option value="112009">November 2009</option>
302
+ <option value="122009">December 2009</option>
303
+ <option value="012010">January 2010</option>
304
+ <option value="022010">February 2010</option>
305
+ <option value="032010">March 2010</option>
306
+ <option value="042010">April 2010</option>
307
+ <option value="052010">May 2010</option>
308
+ <option value="062010">June 2010</option>
309
+ <option value="072010">July 2010</option>
310
+
311
+ </select>
312
+ </td>
313
+ <td><span id="MD2-EnglishDate" class="englishDate"></span></td>
314
+ </tr>
315
+ </tbody>
316
+ </table>
317
+ </div>
318
+ </div
319
+ </form>
320
+
321
+ <script type="text/javascript">
322
+ // <![CDATA[
323
+ var today = new Date();
324
+
325
+ // START: Just for the demo to reset the departure date to todays date
326
+ // This would always be done server side in reality...
327
+ document.getElementById("DD1").selectedIndex = today.getDate();
328
+
329
+ var depElem = document.getElementById("MD1"),
330
+ opts = depElem.options,
331
+ dt = ((today.getMonth() + 1) < 10 ? "0" + (today.getMonth() + 1) : (today.getMonth() + 1)) + "" + today.getFullYear();
332
+
333
+ for(var i = 0, opt; opt = opts[i]; i++) {
334
+ if(opt.value == dt) {
335
+ opt.selected = true;
336
+ break;
337
+ };
338
+ }
339
+ // END: just for the demo...
340
+
341
+ // Default options
342
+ var opts = {
343
+ splitDate:true,
344
+ staticPos:false,
345
+ fillGrid:true,
346
+ constrainSelection:false,
347
+ noTodayButton:true,
348
+ // You would most probably calculate both the high and low ranges server side...
349
+ rangeLow:bookingPod.createYYYYMMDDString(new Date(today.getFullYear(), today.getMonth(), today.getDate() + bookingPod.MIN_DATE_LIMIT)),
350
+ rangeHigh:bookingPod.createYYYYMMDDString(new Date(today.getFullYear(), today.getMonth(), today.getDate() + bookingPod.MAX_DATE_LIMIT)),
351
+ callbackFunctions:{"create":[bookingPod.checkReturnDate],"dateset":[bookingPod.checkReturnDate]},
352
+ statusFormat:"l-cc-sp-d-S-sp-F-sp-Y"
353
+ };
354
+
355
+ // Create Slave first
356
+ opts.formElements = { "MD2":"m-Y", "DD2":"j" };
357
+ datePickerController.createDatePicker(opts);
358
+
359
+ // Master second
360
+ opts.formElements = { "MD1":"m-Y", "DD1":"j" };
361
+ opts.callbackFunctions = {"create":[bookingPod.checkOutwardDate],"dateset":[bookingPod.checkOutwardDate]};
362
+
363
+ datePickerController.createDatePicker(opts);
364
+ // ]]>
365
+ </script>
366
+ </body>
367
+ </html>
368
+
@@ -0,0 +1,84 @@
1
+ The following HTML is created by the script for each datePicker instance...
2
+
3
+ <div id="fd-date-2" class="datePicker drag-enabled weeks-displayed datepicker-focus" aria-labelledby="date-2_label" aria-hidden="false" role="grid">
4
+ <table class="datePickerTable" summary="">
5
+ <tfoot>
6
+ <tr class="">
7
+ <th class="date-picker-statusbar drag-enabled" colspan="8">Tuesday, 17<sup>th</sup> March 2009</th>
8
+ </tr>
9
+ </tfoot>
10
+ <thead>
11
+ <tr role="presentation">
12
+ <th class="date-picker-title drag-enabled" colspan="8"><span class="month-display drag-enabled">March </span><span class="year-display drag-enabled">2009</span></th>
13
+ </tr>
14
+ <tr role="presentation">
15
+ <th><span class="prev-but prev-year" id="date-2-prev-year-but" title="Previous year">«</span></th><th><span class="prev-but prev-month" id="date-2-prev-month-but" title="Previous month">‹</span></th><th colspan="4"><span class="today-but fd-disabled" id="date-2-today-but" title="">Today</span></th><th><span class="next-but next-month" id="date-2-next-month-but" title="Next month">›</span></th><th><span class="next-but next-year" id="date-2-next-year-but" title="Next year">»</span></th>
16
+ </tr>
17
+ <tr>
18
+ <th class="date-picker-week-header" scope="row" role="rowheader" id="date-2-row-0" title="Week">wk</th><th class="date-picker-day-header" scope="col" role="columnheader" id="date-2-col-1" title="Monday">Mon</th><th class="date-picker-day-header" scope="col" role="columnheader" id="date-2-col-2" title="Tuesday"><span class="fd-day-header day-1" title="Tuesday">Tue</span></th><th class="date-picker-day-header" scope="col" role="columnheader" id="date-2-col-3" title="Wednesday"><span class="fd-day-header day-2" title="Wednesday">Wed</span></th><th class="date-picker-day-header" scope="col" role="columnheader" id="date-2-col-4" title="Thursday"><span class="fd-day-header day-3" title="Thursday">Thu</span></th><th class="date-picker-day-header" scope="col" role="columnheader" id="date-2-col-5" title="Friday"><span class="fd-day-header day-4" title="Friday">Fri</span></th><th class="date-picker-day-header date-picker-highlight" scope="col" role="columnheader" id="date-2-col-6" title="Saturday"><span class="fd-day-header day-5" title="Saturday">Sat</span></th><th class="date-picker-day-header date-picker-highlight" scope="col" role="columnheader" id="date-2-col-7" title="Sunday"><span class="fd-day-header day-6" title="Sunday">Sun</span></th>
19
+ </tr>
20
+ </thead>
21
+ <tbody>
22
+ <tr role="row" class="">
23
+ <th class="date-picker-week-header" scope="row" role="rowheader" id="date-2-row-1">9</th>
24
+ <td aria-describedby="date-2-col-1 date-2-row-1" aria-selected="false" role="gridcell" class="date-picker-unused" title=""> </td>
25
+ <td aria-describedby="date-2-col-2 date-2-row-1" aria-selected="false" role="gridcell" class="date-picker-unused" title=""> </td>
26
+ <td aria-describedby="date-2-col-3 date-2-row-1" aria-selected="false" role="gridcell" class="date-picker-unused" title=""> </td>
27
+ <td aria-describedby="date-2-col-4 date-2-row-1" aria-selected="false" role="gridcell" class="date-picker-unused" title=""> </td>
28
+ <td aria-describedby="date-2-col-5 date-2-row-1" aria-selected="false" role="gridcell" class="date-picker-unused" title=""> </td>
29
+ <td aria-describedby="date-2-col-6 date-2-row-1" aria-selected="false" role="gridcell" class="date-picker-unused" title=""> </td>
30
+ <td aria-describedby="date-2-col-7 date-2-row-1" aria-selected="false" role="gridcell" title="March 01, 2009" class="day-sun cd-20090301 yyyymm-200903 mmdd-0301 date-picker-highlight" id="" tabindex="-1">1<span class="fd-screen-reader"> March 2009</span></td>
31
+ </tr>
32
+ <tr role="row" class="">
33
+ <th class="date-picker-week-header" scope="row" role="rowheader" id="date-2-row-2">10</th>
34
+ <td aria-describedby="date-2-col-1 date-2-row-2" aria-selected="false" role="gridcell" title="March 02, 2009" class="day-mon cd-20090302 yyyymm-200903 mmdd-0302">2<span class="fd-screen-reader"> March 2009</span></td>
35
+ <td aria-describedby="date-2-col-2 date-2-row-2" aria-selected="false" role="gridcell" title="March 03, 2009" class="day-tue cd-20090303 yyyymm-200903 mmdd-0303">3<span class="fd-screen-reader"> March 2009</span></td>
36
+ <td aria-describedby="date-2-col-3 date-2-row-2" aria-selected="false" role="gridcell" title="March 04, 2009" class="day-wed cd-20090304 yyyymm-200903 mmdd-0304">4<span class="fd-screen-reader"> March 2009</span></td>
37
+ <td aria-describedby="date-2-col-4 date-2-row-2" aria-selected="false" role="gridcell" title="March 05, 2009" class="day-thu cd-20090305 yyyymm-200903 mmdd-0305">5<span class="fd-screen-reader"> March 2009</span></td>
38
+ <td aria-describedby="date-2-col-5 date-2-row-2" aria-selected="false" role="gridcell" title="March 06, 2009" class="day-fri cd-20090306 yyyymm-200903 mmdd-0306">6<span class="fd-screen-reader"> March 2009</span></td>
39
+ <td aria-describedby="date-2-col-6 date-2-row-2" aria-selected="false" role="gridcell" title="March 07, 2009" class="day-sat cd-20090307 yyyymm-200903 mmdd-0307 date-picker-highlight" id="" tabindex="-1">7<span class="fd-screen-reader"> March 2009</span></td>
40
+ <td aria-describedby="date-2-col-7 date-2-row-2" aria-selected="false" role="gridcell" title="March 08, 2009" class="day-sun cd-20090308 yyyymm-200903 mmdd-0308 date-picker-highlight">8<span class="fd-screen-reader"> March 2009</span></td>
41
+ </tr>
42
+ <tr role="row" class="">
43
+ <th class="date-picker-week-header" scope="row" role="rowheader" id="date-2-row-3">11</th>
44
+ <td aria-describedby="date-2-col-1 date-2-row-3" aria-selected="false" role="gridcell" title="March 09, 2009" class="day-mon cd-20090309 yyyymm-200903 mmdd-0309">9<span class="fd-screen-reader"> March 2009</span></td>
45
+ <td aria-describedby="date-2-col-2 date-2-row-3" aria-selected="false" role="gridcell" title="March 10, 2009" class="day-tue cd-20090310 yyyymm-200903 mmdd-0310">10<span class="fd-screen-reader"> March 2009</span></td>
46
+ <td aria-describedby="date-2-col-3 date-2-row-3" aria-selected="false" role="gridcell" title="March 11, 2009" class="day-wed cd-20090311 yyyymm-200903 mmdd-0311">11<span class="fd-screen-reader"> March 2009</span></td>
47
+ <td aria-describedby="date-2-col-4 date-2-row-3" aria-selected="false" role="gridcell" title="March 12, 2009" class="day-thu cd-20090312 yyyymm-200903 mmdd-0312">12<span class="fd-screen-reader"> March 2009</span></td>
48
+ <td aria-describedby="date-2-col-5 date-2-row-3" aria-selected="false" role="gridcell" title="March 13, 2009" class="day-fri cd-20090313 yyyymm-200903 mmdd-0313" id="" tabindex="-1">13<span class="fd-screen-reader"> March 2009</span></td>
49
+ <td aria-describedby="date-2-col-6 date-2-row-3" aria-selected="false" role="gridcell" title="March 14, 2009" class="day-sat cd-20090314 yyyymm-200903 mmdd-0314 date-picker-highlight">14<span class="fd-screen-reader"> March 2009</span></td>
50
+ <td aria-describedby="date-2-col-7 date-2-row-3" aria-selected="false" role="gridcell" title="March 15, 2009" class="day-sun cd-20090315 yyyymm-200903 mmdd-0315 date-picker-highlight">15<span class="fd-screen-reader"> March 2009</span></td>
51
+ </tr>
52
+ <tr role="row" class="">
53
+ <th class="date-picker-week-header" scope="row" role="rowheader" id="date-2-row-4">12</th>
54
+ <td aria-describedby="date-2-col-1 date-2-row-4" aria-selected="false" role="gridcell" title="March 16, 2009" class="day-mon cd-20090316 yyyymm-200903 mmdd-0316">16<span class="fd-screen-reader"> March 2009</span></td>
55
+ <td aria-describedby="date-2-col-2 date-2-row-4" aria-selected="false" role="gridcell" title="March 17, 2009" id="date-2-date-picker-hover" class="day-tue cd-20090317 yyyymm-200903 mmdd-0317 date-picker-today date-picker-hover" tabindex="0">17<span class="fd-screen-reader"> March 2009</span></td>
56
+ <td aria-describedby="date-2-col-3 date-2-row-4" aria-selected="false" role="gridcell" title="March 18, 2009" class="day-wed cd-20090318 yyyymm-200903 mmdd-0318">18<span class="fd-screen-reader"> March 2009</span></td>
57
+ <td aria-describedby="date-2-col-4 date-2-row-4" aria-selected="false" role="gridcell" title="March 19, 2009" class="day-thu cd-20090319 yyyymm-200903 mmdd-0319">19<span class="fd-screen-reader"> March 2009</span></td>
58
+ <td aria-describedby="date-2-col-5 date-2-row-4" aria-selected="false" role="gridcell" title="March 20, 2009" class="day-fri cd-20090320 yyyymm-200903 mmdd-0320" id="" tabindex="-1">20<span class="fd-screen-reader"> March 2009</span></td>
59
+ <td aria-describedby="date-2-col-6 date-2-row-4" aria-selected="false" role="gridcell" title="March 21, 2009" class="day-sat cd-20090321 yyyymm-200903 mmdd-0321 date-picker-highlight">21<span class="fd-screen-reader"> March 2009</span></td>
60
+ <td aria-describedby="date-2-col-7 date-2-row-4" aria-selected="false" role="gridcell" title="March 22, 2009" class="day-sun cd-20090322 yyyymm-200903 mmdd-0322 date-picker-highlight">22<span class="fd-screen-reader"> March 2009</span></td>
61
+ </tr>
62
+ <tr role="row" class="">
63
+ <th class="date-picker-week-header" scope="row" role="rowheader" id="date-2-row-5">13</th>
64
+ <td aria-describedby="date-2-col-1 date-2-row-5" aria-selected="false" role="gridcell" title="March 23, 2009" class="day-mon cd-20090323 yyyymm-200903 mmdd-0323" id="" tabindex="-1">23<span class="fd-screen-reader"> March 2009</span></td>
65
+ <td aria-describedby="date-2-col-2 date-2-row-5" aria-selected="false" role="gridcell" title="March 24, 2009" class="day-tue cd-20090324 yyyymm-200903 mmdd-0324">24<span class="fd-screen-reader"> March 2009</span></td>
66
+ <td aria-describedby="date-2-col-3 date-2-row-5" aria-selected="false" role="gridcell" title="March 25, 2009" class="day-wed cd-20090325 yyyymm-200903 mmdd-0325">25<span class="fd-screen-reader"> March 2009</span></td>
67
+ <td aria-describedby="date-2-col-4 date-2-row-5" aria-selected="false" role="gridcell" title="March 26, 2009" class="day-thu cd-20090326 yyyymm-200903 mmdd-0326" id="" tabindex="-1">26<span class="fd-screen-reader"> March 2009</span></td>
68
+ <td aria-describedby="date-2-col-5 date-2-row-5" aria-selected="false" role="gridcell" title="March 27, 2009" class="day-fri cd-20090327 yyyymm-200903 mmdd-0327">27<span class="fd-screen-reader"> March 2009</span></td>
69
+ <td aria-describedby="date-2-col-6 date-2-row-5" aria-selected="false" role="gridcell" title="March 28, 2009" class="day-sat cd-20090328 yyyymm-200903 mmdd-0328 date-picker-highlight">28<span class="fd-screen-reader"> March 2009</span></td>
70
+ <td aria-describedby="date-2-col-7 date-2-row-5" aria-selected="false" role="gridcell" title="March 29, 2009" class="day-sun cd-20090329 yyyymm-200903 mmdd-0329 date-picker-highlight">29<span class="fd-screen-reader"> March 2009</span></td>
71
+ </tr>
72
+ <tr role="row" class="">
73
+ <th class="date-picker-week-header" scope="row" role="rowheader" id="date-2-row-6">14</th>
74
+ <td aria-describedby="date-2-col-1 date-2-row-6" aria-selected="false" role="gridcell" title="March 30, 2009" class="day-mon cd-20090330 yyyymm-200903 mmdd-0330" id="" tabindex="-1">30<span class="fd-screen-reader"> March 2009</span></td>
75
+ <td aria-describedby="date-2-col-2 date-2-row-6" aria-selected="false" role="gridcell" title="March 31, 2009" class="day-tue cd-20090331 yyyymm-200903 mmdd-0331">31<span class="fd-screen-reader"> March 2009</span></td>
76
+ <td aria-describedby="date-2-col-3 date-2-row-6" aria-selected="false" role="gridcell" class="date-picker-unused" title=""> </td>
77
+ <td aria-describedby="date-2-col-4 date-2-row-6" aria-selected="false" role="gridcell" class="date-picker-unused" title=""> </td>
78
+ <td aria-describedby="date-2-col-5 date-2-row-6" aria-selected="false" role="gridcell" class="date-picker-unused" title=""> </td>
79
+ <td aria-describedby="date-2-col-6 date-2-row-6" aria-selected="false" role="gridcell" class="date-picker-unused" title=""> </td>
80
+ <td aria-describedby="date-2-col-7 date-2-row-6" aria-selected="false" role="gridcell" class="date-picker-unused" title=""> </td>
81
+ </tr>
82
+ </tbody>
83
+ </table>
84
+ </div>