gfdnavi 1.3.0.0

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 (446) hide show
  1. data/ChangeLog +10949 -0
  2. data/LICENCE.txt +57 -0
  3. data/Makefile +18 -0
  4. data/TODO +132 -0
  5. data/app/controllers/analysis_controller.rb +700 -0
  6. data/app/controllers/application.rb +41 -0
  7. data/app/controllers/draw_method_controller.rb +172 -0
  8. data/app/controllers/explorer_controller.rb +197 -0
  9. data/app/controllers/finder_controller.rb +331 -0
  10. data/app/controllers/function_controller.rb +204 -0
  11. data/app/controllers/group_controller.rb +115 -0
  12. data/app/controllers/keyword_attributes_controller.rb +52 -0
  13. data/app/controllers/knowledge_controller.rb +928 -0
  14. data/app/controllers/nodes_controller.rb +515 -0
  15. data/app/controllers/search_controller.rb +341 -0
  16. data/app/controllers/user_controller.rb +337 -0
  17. data/app/helpers/analysis_helper.rb +2 -0
  18. data/app/helpers/application_helper.rb +105 -0
  19. data/app/helpers/description_helper.rb +2 -0
  20. data/app/helpers/function_helper.rb +2 -0
  21. data/app/helpers/group_helper.rb +2 -0
  22. data/app/helpers/search_helper.rb +3 -0
  23. data/app/helpers/user_helper.rb +2 -0
  24. data/app/helpers/work_flow_helper.rb +92 -0
  25. data/app/models/actual_file.rb +3 -0
  26. data/app/models/analysis.rb +715 -0
  27. data/app/models/analysis_history.rb +42 -0
  28. data/app/models/cross_array.rb +22 -0
  29. data/app/models/cross_result.rb +254 -0
  30. data/app/models/derived_spatial_attribute.rb +3 -0
  31. data/app/models/diagram_cache.rb +16 -0
  32. data/app/models/diagram_cache_datum.rb +4 -0
  33. data/app/models/diagram_cache_session.rb +8 -0
  34. data/app/models/directory.rb +21 -0
  35. data/app/models/draw_method.rb +48 -0
  36. data/app/models/draw_method_attribute.rb +8 -0
  37. data/app/models/draw_parameter.rb +12 -0
  38. data/app/models/explorer_query.rb +354 -0
  39. data/app/models/explorer_result.rb +312 -0
  40. data/app/models/function.rb +75 -0
  41. data/app/models/function_argument.rb +6 -0
  42. data/app/models/function_output.rb +4 -0
  43. data/app/models/group.rb +153 -0
  44. data/app/models/image.rb +20 -0
  45. data/app/models/keyword_attribute.rb +179 -0
  46. data/app/models/knowledge.rb +94 -0
  47. data/app/models/knowledge_backup.rb +32 -0
  48. data/app/models/knowledge_figure.rb +16 -0
  49. data/app/models/knowledge_figure_backup.rb +16 -0
  50. data/app/models/knowledge_parser.rb +392 -0
  51. data/app/models/node.rb +605 -0
  52. data/app/models/node_entity_abstract.rb +112 -0
  53. data/app/models/node_lineage.rb +6 -0
  54. data/app/models/node_relation.rb +4 -0
  55. data/app/models/path_node.rb +60 -0
  56. data/app/models/query.rb +193 -0
  57. data/app/models/query_history.rb +12 -0
  58. data/app/models/results.rb +48 -0
  59. data/app/models/sign_up_user.rb +25 -0
  60. data/app/models/spatial_and_time_attribute.rb +11 -0
  61. data/app/models/user.rb +115 -0
  62. data/app/models/user_mailer.rb +48 -0
  63. data/app/models/value_type.rb +3 -0
  64. data/app/models/variable.rb +70 -0
  65. data/app/models/virtual_node.rb +457 -0
  66. data/app/views/analysis/__help_analysis_tab.en.html +57 -0
  67. data/app/views/analysis/__help_draw_share.en.html +12 -0
  68. data/app/views/analysis/__help_draw_tab.en.html +6 -0
  69. data/app/views/analysis/_analysis_function_settings.rhtml +61 -0
  70. data/app/views/analysis/_analysis_settings.rhtml +28 -0
  71. data/app/views/analysis/_diagram.rhtml +70 -0
  72. data/app/views/analysis/_dimension_option.rhtml +59 -0
  73. data/app/views/analysis/_draw_general_settings.rhtml +217 -0
  74. data/app/views/analysis/_draw_settings.rhtml +73 -0
  75. data/app/views/analysis/_history.rhtml +19 -0
  76. data/app/views/analysis/_popular_diagrams.rhtml +42 -0
  77. data/app/views/analysis/_save_form.rhtml +44 -0
  78. data/app/views/analysis/_variables.rhtml +66 -0
  79. data/app/views/analysis/_variables_order.rhtml +56 -0
  80. data/app/views/analysis/index.rhtml +195 -0
  81. data/app/views/analysis/preview.rhtml +3 -0
  82. data/app/views/analysis/save.rhtml +73 -0
  83. data/app/views/analysis/show_diagram.rhtml +42 -0
  84. data/app/views/cross/_display_map.rhtml +201 -0
  85. data/app/views/cross/_result.rhtml +205 -0
  86. data/app/views/cross/_show_result_tree.rhtml +40 -0
  87. data/app/views/cross/_show_results.rhtml +80 -0
  88. data/app/views/cross/_style.rhtml +21 -0
  89. data/app/views/cross/index.rhtml +271 -0
  90. data/app/views/draw_method/_edit_form.rhtml +110 -0
  91. data/app/views/draw_method/create.rhtml +8 -0
  92. data/app/views/draw_method/details.rhtml +113 -0
  93. data/app/views/draw_method/edit.rhtml +8 -0
  94. data/app/views/draw_method/list.rhtml +80 -0
  95. data/app/views/explorer/_display_map.rhtml +199 -0
  96. data/app/views/explorer/_show_result_tree.rhtml +40 -0
  97. data/app/views/explorer/_show_results.rhtml +101 -0
  98. data/app/views/explorer/_style.rhtml +21 -0
  99. data/app/views/explorer/index.rhtml +214 -0
  100. data/app/views/finder/_children.html.erb +84 -0
  101. data/app/views/finder/_children_details.html.erb +74 -0
  102. data/app/views/finder/_children_details_tr.html.erb +196 -0
  103. data/app/views/finder/create_tree.html.erb +15 -0
  104. data/app/views/finder/flex.html.erb +52 -0
  105. data/app/views/finder/index.html.erb +47 -0
  106. data/app/views/finder/show_details.html.erb +3 -0
  107. data/app/views/finder/show_images.html.erb +3 -0
  108. data/app/views/function/_edit_form.rhtml +106 -0
  109. data/app/views/function/create.rhtml +8 -0
  110. data/app/views/function/details.rhtml +96 -0
  111. data/app/views/function/edit.rhtml +8 -0
  112. data/app/views/function/list.rhtml +80 -0
  113. data/app/views/group/add_member.rhtml +13 -0
  114. data/app/views/group/change_owner.rhtml +15 -0
  115. data/app/views/group/create.rhtml +11 -0
  116. data/app/views/group/delete_member.rhtml +14 -0
  117. data/app/views/group/list.rhtml +63 -0
  118. data/app/views/knowledge/_backup.rhtml +135 -0
  119. data/app/views/knowledge/_category.rhtml +58 -0
  120. data/app/views/knowledge/_category_list.rhtml +34 -0
  121. data/app/views/knowledge/_category_table.rhtml +23 -0
  122. data/app/views/knowledge/_comment.rhtml +64 -0
  123. data/app/views/knowledge/_comment_input_form.rhtml +19 -0
  124. data/app/views/knowledge/_comments.rhtml +84 -0
  125. data/app/views/knowledge/_form.rhtml +139 -0
  126. data/app/views/knowledge/_group_figure_form.rhtml +187 -0
  127. data/app/views/knowledge/_layout_figure.rhtml +61 -0
  128. data/app/views/knowledge/_layout_figures_in_a_row_above_text.rhtml +42 -0
  129. data/app/views/knowledge/_layout_figures_under_text.rhtml +45 -0
  130. data/app/views/knowledge/_layout_one_figure_above_text.rhtml +28 -0
  131. data/app/views/knowledge/_summary.rhtml +21 -0
  132. data/app/views/knowledge/edit.rhtml +37 -0
  133. data/app/views/knowledge/list.rhtml +287 -0
  134. data/app/views/knowledge/new.rhtml +23 -0
  135. data/app/views/knowledge/new_from_analysis.rhtml +21 -0
  136. data/app/views/knowledge/show.rhtml +196 -0
  137. data/app/views/layouts/gfdnavi.rhtml +105 -0
  138. data/app/views/nodes/_ancestors.html.erb +89 -0
  139. data/app/views/nodes/_description_methods_table.html.erb +75 -0
  140. data/app/views/nodes/_mode.html.erb +16 -0
  141. data/app/views/nodes/description.html.erb +181 -0
  142. data/app/views/nodes/description_methods.html.erb +1 -0
  143. data/app/views/nodes/edit.html.erb +73 -0
  144. data/app/views/nodes/index.html.erb +25 -0
  145. data/app/views/nodes/show.html.erb +20 -0
  146. data/app/views/search/_children_details_mapsearch.rhtml +68 -0
  147. data/app/views/search/_children_details_tr.rhtml +205 -0
  148. data/app/views/search/_show_grouplist.rhtml +74 -0
  149. data/app/views/search/_show_results.rhtml +43 -0
  150. data/app/views/search/_show_results_global.rhtml +36 -0
  151. data/app/views/search/_show_results_partial.rhtml +39 -0
  152. data/app/views/search/_show_results_partial_groupbyfile.rhtml +50 -0
  153. data/app/views/search/_show_variablelist.rhtml +28 -0
  154. data/app/views/search/mapsearch.rhtml +176 -0
  155. data/app/views/search/remapsearch.rjs +18 -0
  156. data/app/views/search/show_details.rhtml +3 -0
  157. data/app/views/user/add_user.rhtml +30 -0
  158. data/app/views/user/change_password.rhtml +25 -0
  159. data/app/views/user/edit.html.erb +50 -0
  160. data/app/views/user/index.rhtml +162 -0
  161. data/app/views/user/login.rhtml +41 -0
  162. data/app/views/user/logout.rhtml +4 -0
  163. data/app/views/user/signup.rhtml +36 -0
  164. data/app/views/user/signup_succeeded.rhtml +36 -0
  165. data/app/views/user_mailer/authorization_inform.rhtml +15 -0
  166. data/app/views/user_mailer/signup_accepted.rhtml +12 -0
  167. data/app/views/user_mailer/signup_confirm.rhtml +14 -0
  168. data/app/views/user_mailer/signup_inform.rhtml +13 -0
  169. data/app/views/user_mailer/signup_rejected.rhtml +11 -0
  170. data/app/views/work_flow/_push_wsdls.rhtml +55 -0
  171. data/app/views/work_flow/index.rhtml +46 -0
  172. data/config/database.yml.example +35 -0
  173. data/config/environment.rb +68 -0
  174. data/config/gfdnavi.yml.example +95 -0
  175. data/config/load_config.rb +151 -0
  176. data/config/routes.rb +35 -0
  177. data/consistency_checker.rb +129 -0
  178. data/data/gfdnavi_docs/how_to_draw_multiple_images.knlge +68 -0
  179. data/data/gfdnavi_docs/how_to_knowledge.knlge +138 -0
  180. data/data/gfdnavi_docs/how_to_write_document_about_Gfdnavi.knlge +30 -0
  181. data/data/samples/jmadata.SIGEN +8 -0
  182. data/data/samples/jmadata.yml +6 -0
  183. data/data/samples/jmadata/MSM-P/2006.nc.yml +2 -0
  184. data/data/samples/jmadata/MSM-P/2006.yml +17 -0
  185. data/data/samples/jmadata/MSM-P/2006/0101.nc +0 -0
  186. data/data/samples/jmadata/MSM-P/2006/0101.nc.yml +13 -0
  187. data/data/samples/jmadata/MSM-P/2006/0102.nc +0 -0
  188. data/data/samples/jmadata/MSM-P/2006/0103.nc +0 -0
  189. data/data/samples/jmadata/MSM-P/2006/0104.nc +0 -0
  190. data/data/samples/jmadata/MSM-P/2006/0105.nc +0 -0
  191. data/data/samples/jmadata/MSM-P/2006/010[1-3].nc.yml +2 -0
  192. data/data/samples/jmadata/MSM-P/2006/skip_data.rb +96 -0
  193. data/data/samples/jmadata/MSM-P/2006/skip_data.sh +6 -0
  194. data/data/samples/reanalysis.SIGEN +8 -0
  195. data/data/samples/reanalysis/era40.SIGEN +8 -0
  196. data/data/samples/reanalysis/era40.yml +2 -0
  197. data/data/samples/reanalysis/era40/t.jan.nc +0 -0
  198. data/data/samples/reanalysis/era40/t.jan.nc.yml +1 -0
  199. data/data/samples/reanalysis/ncep.SIGEN +9 -0
  200. data/data/samples/reanalysis/ncep/T.jan.100hPa.png +0 -0
  201. data/data/samples/reanalysis/ncep/T.jan.100hPa.png.yml +43 -0
  202. data/data/samples/reanalysis/ncep/T.jan.nc +0 -0
  203. data/data/samples/reanalysis/ncep/T.jan.zonal_mean.nc +0 -0
  204. data/data/samples/reanalysis/ncep/T.jan.zonal_mean.nc.yml +8 -0
  205. data/data/samples/reanalysis/ncep/T.jan_only_root.nc +0 -0
  206. data/data/samples/reanalysis/ncep/T.jan_only_root.nc.yml +4 -0
  207. data/data/samples/reanalysis/ncep/UV.jan.nc +0 -0
  208. data/data/samples/reanalysis/ncep/UV.jan.nc.yml +10 -0
  209. data/data/samples/reanalysis/ncep/UV.jan.nc.yml.ja +11 -0
  210. data/data/samples/sonde_operational.yml +5 -0
  211. data/data/samples/sonde_operational/std_plev.yml +12 -0
  212. data/data/samples/sonde_operational/std_plev/41256.spl.nc +0 -0
  213. data/data/samples/sonde_operational/std_plev/42410.spl.nc +0 -0
  214. data/data/samples/sonde_operational/std_plev/43333.spl.nc +0 -0
  215. data/data/samples/sonde_operational/std_plev/43346.spl.nc +0 -0
  216. data/data/samples/sonde_operational/std_plev/48698.spl.nc +0 -0
  217. data/data/samples/sonde_operational/std_plev/61641.spl.nc +0 -0
  218. data/data/samples/sonde_operational/std_plev/63741.spl.nc +0 -0
  219. data/data/samples/sonde_operational/std_plev/67083.spl.nc +0 -0
  220. data/data/samples/sonde_operational/std_plev/72261.spl.nc +0 -0
  221. data/data/samples/sonde_operational/std_plev/76805.spl.nc +0 -0
  222. data/data/samples/sonde_operational/std_plev/82193.spl.nc +0 -0
  223. data/data/samples/sonde_operational/std_plev/91165.spl.nc +0 -0
  224. data/data/samples/sonde_operational/std_plev/91610.spl.nc +0 -0
  225. data/data/samples/sonde_operational/std_plev/91948.spl.nc +0 -0
  226. data/data/samples/sonde_operational/std_plev/94294.spl.nc +0 -0
  227. data/db/NetCDFparser.rb +406 -0
  228. data/db/create_derived_spatial_attributes.sql +12 -0
  229. data/db/draw_methods/line.yml +6 -0
  230. data/db/draw_methods/scatter.yml +38 -0
  231. data/db/draw_methods/tone.yml +64 -0
  232. data/db/draw_methods/vector.yml +19 -0
  233. data/db/dump_db.rb +43 -0
  234. data/db/functions/additions.yml +10 -0
  235. data/db/functions/cut.yml +10 -0
  236. data/db/functions/division.yml +10 -0
  237. data/db/functions/mean.yml +28 -0
  238. data/db/functions/multiplication.yml +10 -0
  239. data/db/functions/stddev.yml +28 -0
  240. data/db/functions/subtraction.yml +10 -0
  241. data/db/migrate/001_initial_scheme.rb +289 -0
  242. data/db/migrate/002_add_open_id_authentication_tables.rb +20 -0
  243. data/db/register_directory_tree.rb +760 -0
  244. data/db/restore_db.rb +60 -0
  245. data/gfdnavi-install +828 -0
  246. data/install.rb +828 -0
  247. data/lib/activerecord_gfdnavi.rb +31 -0
  248. data/lib/basic_authorization.rb +50 -0
  249. data/lib/create_activeresources.rb +108 -0
  250. data/lib/execute_analysis.rb +472 -0
  251. data/lib/file_gfdnavi.rb +38 -0
  252. data/lib/gphys_gfdnavi.rb +81 -0
  253. data/lib/localdir.rb +110 -0
  254. data/lib/login_system.rb +110 -0
  255. data/lib/multibytes.rb +20 -0
  256. data/lib/narray_yaml.rb +58 -0
  257. data/lib/no_rdb_base.rb +40 -0
  258. data/lib/opendapdir.rb +171 -0
  259. data/lib/tar.rb +127 -0
  260. data/lib/tasks/clean.rake +65 -0
  261. data/lib/tasks/setup.rake +316 -0
  262. data/lib/tasks/update.rake +62 -0
  263. data/lib/vizshot_gfdnavi.rb +224 -0
  264. data/public/crossdomain.xml +4 -0
  265. data/public/flex/NodeTreeDescriptor.as +55 -0
  266. data/public/flex/TreeNode.as +253 -0
  267. data/public/flex/finder.mxml +304 -0
  268. data/public/flex/finder.swf +0 -0
  269. data/public/flex/gfdnavi.mxml +52 -0
  270. data/public/flex/gfdnavi.swf +0 -0
  271. data/public/images/Help_S-shots/dir_tree_with_add.jpg +0 -0
  272. data/public/images/analyze.gif +0 -0
  273. data/public/images/circle.gif +0 -0
  274. data/public/images/create_from_analysis_button.png +0 -0
  275. data/public/images/delete.png +0 -0
  276. data/public/images/down.png +0 -0
  277. data/public/images/drawbutton.gif +0 -0
  278. data/public/images/gfdnavi_home_logo.png +0 -0
  279. data/public/images/gfdnavi_logo_big.png +0 -0
  280. data/public/images/gfdnavi_logo_med.png +0 -0
  281. data/public/images/gfdnavi_logo_mini.png +0 -0
  282. data/public/images/gfdnavi_logo_nobg_big.png +0 -0
  283. data/public/images/gfdnavi_logo_nobg_med.png +0 -0
  284. data/public/images/gfdnavi_logo_nobg_small.png +0 -0
  285. data/public/images/gfdnavi_logo_small.png +0 -0
  286. data/public/images/gfdnavi_logo_xsmall.png +0 -0
  287. data/public/images/hbar.png +0 -0
  288. data/public/images/helpmark16.png +0 -0
  289. data/public/images/helpmark18.png +0 -0
  290. data/public/images/kikyu_g.gif +0 -0
  291. data/public/images/kikyu_r.gif +0 -0
  292. data/public/images/map_icon_g.gif +0 -0
  293. data/public/images/map_icon_r.gif +0 -0
  294. data/public/images/new_knowledge.png +0 -0
  295. data/public/images/openid.png +0 -0
  296. data/public/images/read_in_the_form.png +0 -0
  297. data/public/images/slider_f.gif +0 -0
  298. data/public/images/slider_f_red.gif +0 -0
  299. data/public/images/star1.gif +0 -0
  300. data/public/images/star2.gif +0 -0
  301. data/public/images/startanim.gif +0 -0
  302. data/public/images/stopanim.gif +0 -0
  303. data/public/images/tree/DL.png +0 -0
  304. data/public/images/tree/anal_viz.png +0 -0
  305. data/public/images/tree/analyze_visualize_checked_items.png +0 -0
  306. data/public/images/tree/binary.png +0 -0
  307. data/public/images/tree/details.png +0 -0
  308. data/public/images/tree/download_checked_items.png +0 -0
  309. data/public/images/tree/folder.png +0 -0
  310. data/public/images/tree/folder_close.gif +0 -0
  311. data/public/images/tree/image2.png +0 -0
  312. data/public/images/tree/knowledge.png +0 -0
  313. data/public/images/tree/knowledges.png +0 -0
  314. data/public/images/tree/last.gif +0 -0
  315. data/public/images/tree/last.png +0 -0
  316. data/public/images/tree/minus.gif +0 -0
  317. data/public/images/tree/minus_simple.gif +0 -0
  318. data/public/images/tree/none.gif +0 -0
  319. data/public/images/tree/none.png +0 -0
  320. data/public/images/tree/plus.gif +0 -0
  321. data/public/images/tree/plus_simple.gif +0 -0
  322. data/public/images/tree/show.png +0 -0
  323. data/public/images/tree/show_checked_items.png +0 -0
  324. data/public/images/tree/t.gif +0 -0
  325. data/public/images/tree/t.png +0 -0
  326. data/public/images/tree/tate.gif +0 -0
  327. data/public/images/tree/tate.png +0 -0
  328. data/public/images/up.png +0 -0
  329. data/public/images/vbar.png +0 -0
  330. data/public/images/white.bmp +0 -0
  331. data/public/images/x.gif +0 -0
  332. data/public/index.html +100 -0
  333. data/public/javascripts/AC_OETags.js +269 -0
  334. data/public/javascripts/analysis.js +751 -0
  335. data/public/javascripts/application.js +29 -0
  336. data/public/javascripts/directory_tree.js +102 -0
  337. data/public/javascripts/draw_method.js +83 -0
  338. data/public/javascripts/excanvas.js +704 -0
  339. data/public/javascripts/function.js +107 -0
  340. data/public/javascripts/gfdnavi.js +175 -0
  341. data/public/javascripts/knowledge.js +384 -0
  342. data/public/javascripts/mapsearch.js +313 -0
  343. data/public/javascripts/progress.js +42 -0
  344. data/public/javascripts/resizable_box.js +164 -0
  345. data/public/javascripts/slider.js +260 -0
  346. data/public/javascripts/tab.js +17 -0
  347. data/public/javascripts/work_flow.js +452 -0
  348. data/public/stylesheets/analysis.css +111 -0
  349. data/public/stylesheets/description.css +71 -0
  350. data/public/stylesheets/gfdnavi.css +141 -0
  351. data/public/stylesheets/knowledge.css +218 -0
  352. data/public/stylesheets/search.css +184 -0
  353. data/public/stylesheets/tree.css +45 -0
  354. data/public/stylesheets/tree_for_ie.css +3 -0
  355. data/public/stylesheets/work_flow.css +78 -0
  356. data/script/cleaner +11 -0
  357. data/script/server_ssl +131 -0
  358. data/test/fixtures/diagram_cache_data.yml +5 -0
  359. data/test/fixtures/diagram_cache_sessions.yml +6 -0
  360. data/test/fixtures/diagram_caches.yml +6 -0
  361. data/test/fixtures/directories.yml +57 -0
  362. data/test/fixtures/draw_parameters.yml +6 -0
  363. data/test/fixtures/function_arguments.yml +15 -0
  364. data/test/fixtures/function_outputs.yml +15 -0
  365. data/test/fixtures/functions.yml +29 -0
  366. data/test/fixtures/group_members.yml +33 -0
  367. data/test/fixtures/groups.yml +25 -0
  368. data/test/fixtures/images.yml +12 -0
  369. data/test/fixtures/keyword_attributes.yml +73 -0
  370. data/test/fixtures/knowledges.yml +10 -0
  371. data/test/fixtures/node_relations.yml +11 -0
  372. data/test/fixtures/nodes.yml +298 -0
  373. data/test/fixtures/sign_up_users.yml +8 -0
  374. data/test/fixtures/spatial_and_time_attributes.yml +29 -0
  375. data/test/fixtures/user_mailer/authorization_inform +11 -0
  376. data/test/fixtures/user_mailer/signup_accepted +10 -0
  377. data/test/fixtures/user_mailer/signup_confirm +17 -0
  378. data/test/fixtures/user_mailer/signup_inform +10 -0
  379. data/test/fixtures/user_mailer/signup_rejected +9 -0
  380. data/test/fixtures/users.yml +31 -0
  381. data/test/fixtures/value_types.yml +10 -0
  382. data/test/fixtures/variables.yml +17 -0
  383. data/test/functional/analysis_controller_test.rb +169 -0
  384. data/test/functional/description_controller_test.rb +18 -0
  385. data/test/functional/function_controller_test.rb +18 -0
  386. data/test/functional/group_controller_test.rb +18 -0
  387. data/test/functional/search_controller_test.rb +83 -0
  388. data/test/functional/user_controller_test.rb +77 -0
  389. data/test/functional/webservice_analysis_api_test.rb +12 -0
  390. data/test/functional/work_flow_controller_test.rb +18 -0
  391. data/test/test_helper.rb +28 -0
  392. data/test/unit/diagram_cache_datum_test.rb +10 -0
  393. data/test/unit/diagram_cache_session_test.rb +10 -0
  394. data/test/unit/diagram_cache_test.rb +10 -0
  395. data/test/unit/directory_test.rb +49 -0
  396. data/test/unit/draw_parameter_test.rb +10 -0
  397. data/test/unit/function_argument_test.rb +10 -0
  398. data/test/unit/function_output_test.rb +10 -0
  399. data/test/unit/function_test.rb +10 -0
  400. data/test/unit/group_test.rb +48 -0
  401. data/test/unit/image_test.rb +13 -0
  402. data/test/unit/keyword_attribute_test.rb +33 -0
  403. data/test/unit/knowledge_test.rb +13 -0
  404. data/test/unit/node_relation_test.rb +20 -0
  405. data/test/unit/node_test.rb +85 -0
  406. data/test/unit/sign_up_user_test.rb +20 -0
  407. data/test/unit/spatial_and_time_attribute_test.rb +29 -0
  408. data/test/unit/user_mailer_test.rb +101 -0
  409. data/test/unit/user_test.rb +134 -0
  410. data/test/unit/value_type_test.rb +10 -0
  411. data/test/unit/variable_test.rb +35 -0
  412. data/vendor/plugins/acts_as_list/README +23 -0
  413. data/vendor/plugins/acts_as_list/init.rb +3 -0
  414. data/vendor/plugins/acts_as_list/lib/active_record/acts/list.rb +256 -0
  415. data/vendor/plugins/acts_as_list/test/list_test.rb +332 -0
  416. data/vendor/plugins/acts_as_tree/README +26 -0
  417. data/vendor/plugins/acts_as_tree/Rakefile +22 -0
  418. data/vendor/plugins/acts_as_tree/init.rb +1 -0
  419. data/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb +96 -0
  420. data/vendor/plugins/acts_as_tree/test/abstract_unit.rb +0 -0
  421. data/vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb +219 -0
  422. data/vendor/plugins/acts_as_tree/test/database.yml +0 -0
  423. data/vendor/plugins/acts_as_tree/test/fixtures/mixin.rb +0 -0
  424. data/vendor/plugins/acts_as_tree/test/fixtures/mixins.yml +0 -0
  425. data/vendor/plugins/acts_as_tree/test/schema.rb +0 -0
  426. data/vendor/plugins/will_paginate/CHANGELOG +92 -0
  427. data/vendor/plugins/will_paginate/LICENSE +18 -0
  428. data/vendor/plugins/will_paginate/README.rdoc +131 -0
  429. data/vendor/plugins/will_paginate/Rakefile +62 -0
  430. data/vendor/plugins/will_paginate/examples/apple-circle.gif +0 -0
  431. data/vendor/plugins/will_paginate/examples/index.haml +69 -0
  432. data/vendor/plugins/will_paginate/examples/index.html +92 -0
  433. data/vendor/plugins/will_paginate/examples/pagination.css +90 -0
  434. data/vendor/plugins/will_paginate/examples/pagination.sass +91 -0
  435. data/vendor/plugins/will_paginate/init.rb +1 -0
  436. data/vendor/plugins/will_paginate/lib/will_paginate.rb +86 -0
  437. data/vendor/plugins/will_paginate/lib/will_paginate/array.rb +16 -0
  438. data/vendor/plugins/will_paginate/lib/will_paginate/collection.rb +145 -0
  439. data/vendor/plugins/will_paginate/lib/will_paginate/core_ext.rb +32 -0
  440. data/vendor/plugins/will_paginate/lib/will_paginate/finder.rb +247 -0
  441. data/vendor/plugins/will_paginate/lib/will_paginate/named_scope.rb +132 -0
  442. data/vendor/plugins/will_paginate/lib/will_paginate/named_scope_patch.rb +39 -0
  443. data/vendor/plugins/will_paginate/lib/will_paginate/version.rb +9 -0
  444. data/vendor/plugins/will_paginate/lib/will_paginate/view_helpers.rb +373 -0
  445. data/vendor/plugins/will_paginate/will_paginate.gemspec +21 -0
  446. metadata +586 -0
@@ -0,0 +1,341 @@
1
+ class SearchController < ApplicationController
2
+ layout "gfdnavi"
3
+
4
+ def index
5
+ mapsearch
6
+ return
7
+ end
8
+
9
+
10
+ def msearch
11
+ debug="**debug**"
12
+ @query = Query.new(params[:query])
13
+ if(query_points = @query.querystring("points"))
14
+ @varpoints = Node.find_by_sql( [query_points.gsub(/%/,'%%')] )
15
+ @results = true
16
+ else
17
+ @varpoints = nil
18
+ end
19
+
20
+ if @query.spatial_region
21
+ lon_len = @query.start_lon - @query.end_lon if @query.start_lon >= @query.end_lon
22
+ lon_len = @query.end_lon - @query.start_lon if @query.start_lon < @query.end_lon
23
+ lat_len = @query.start_lat - @query.end_lat if @query.start_lat >= @query.end_lat
24
+ lat_len = @query.end_lat - @query.start_lat if @query.start_lat < @query.end_lat
25
+
26
+ #e = lon_len / 5.0 if lon_len >= lat_len
27
+ #e = lat_len / 5.0 if lat_len > lon_len
28
+ #
29
+ #if ((@query.zoomlevel).to_i) < ((@query.oldzoomlevel).to_i)
30
+ # e = e * 2.0*(((@query.oldzoomlevel).to_f) - ((@query.zoomlevel).to_f))
31
+ #elsif ((@query.zoomlevel).to_i) > ((@query.oldzoomlevel).to_i)
32
+ # e = e / 2.0 / (((@query.zoomlevel).to_f)-((@query.oldzoomlevel).to_f))
33
+ #end
34
+ e = params[:query][:span].to_f/15
35
+ else
36
+ e = 30.0
37
+ end
38
+
39
+
40
+ if @varpoints
41
+ all_points_group=Hash.new
42
+ pg_count=0
43
+ @varpoints.each { |v|
44
+ SpatialAndTimeAttribute.find(:all, :conditions=>{:node_id=>v.id}).each { |s|
45
+ if (all_points_group.keys.length==0)
46
+ all_points_group["point_group0"]=Array.new
47
+ all_points_group["point_group0"].push s
48
+ pg_count=1
49
+ else
50
+ i=0
51
+ while i <= pg_count do
52
+ points_group = all_points_group["point_group#{i}"]
53
+ if (i==pg_count)
54
+ all_points_group["point_group#{pg_count}"]=Array.new
55
+ all_points_group["point_group#{pg_count}"].push s
56
+ pg_count=pg_count+1
57
+ break
58
+ elsif (points_group[0].latitude_lb+e >= s.latitude_lb && points_group[0].latitude_lb-e <= s.latitude_lb && points_group[0].longitude_lb+e >= s.longitude_lb && points_group[0].longitude_lb-e <= s.longitude_lb)
59
+ all_points_group["point_group#{i}"].push s
60
+ break
61
+ end
62
+ i=i+1
63
+ end #while
64
+ end #if
65
+ }#SpatialAttributes
66
+ } #@verpoints.each
67
+ @all_points_group=all_points_group
68
+ end #@verpoints
69
+
70
+ if(query_partial = @query.querystring("partial"))
71
+ debug+=query_partial
72
+ @varpartial = Node.find_by_sql( [query_partial.gsub(/%/,'%%')] )
73
+ @results = true
74
+ else
75
+ @varpartial = nil
76
+ end
77
+
78
+ if @varpartial
79
+ pag_count=0
80
+ all_partial_group=Hash.new
81
+
82
+ @varpartial.each do |v|
83
+ SpatialAndTimeAttribute.find(:all, :conditions=>{:node_id=>v.id}).each{ |s|
84
+ if (all_partial_group.keys.length==0)
85
+ all_partial_group["partial_group0"]=Array.new
86
+ all_partial_group["partial_group0"].push s
87
+ pag_count=1
88
+ else
89
+ i=0
90
+ while i<=pag_count do
91
+ if (i==pag_count)
92
+ all_partial_group["partial_group#{pag_count}"]=Array.new
93
+ all_partial_group["partial_group#{pag_count}"].push s
94
+ pag_count=pag_count+1
95
+ break
96
+ else
97
+ partial_group=all_partial_group["partial_group#{i}"]
98
+ if(partial_group[0].latitude_lb+e >= s.latitude_lb && partial_group[0].latitude_lb-e <= s.latitude_lb && partial_group[0].longitude_lb+e >= s.longitude_lb && partial_group[0].longitude_lb-e <= s.longitude_lb)
99
+ all_partial_group["partial_group#{i}"].push s
100
+ break
101
+ end
102
+ end
103
+ i=i+1
104
+ end #while
105
+ end #if
106
+ }#SpatialAttribute
107
+ end
108
+ @all_partial_group=all_partial_group
109
+ end
110
+
111
+ if(query_global = @query.querystring("global"))
112
+ debug+=query_partial
113
+ @varglobal = Node.find_by_sql( [query_global.gsub(/%/,'%%')] )
114
+ @results = true
115
+ else
116
+ @varglobal = nil
117
+ end
118
+
119
+ if (query_no_region = @query.querystring("no_region"))
120
+ debug += query_no_region
121
+ @varno_region = Node.find_by_sql( [query_no_region.gsub(/%/,'%%')] )
122
+ @resutls = true
123
+ else
124
+ @varno_region = nil
125
+ end
126
+
127
+ res=Hash.new
128
+ res["debug"]=debug
129
+ res["points"]=@all_points_group
130
+ res["partial"]=@all_partial_group
131
+ res["global"] = @varglobal
132
+ res["no_region"] = @varnoapatialattribute
133
+ res["radius"]=e
134
+ return res
135
+ end
136
+
137
+ def re_search
138
+ res = msearch
139
+ session[:query]=@query
140
+ session[:all_partial_group]=@all_partial_group
141
+ session[:all_points_group]=@all_points_group
142
+
143
+ return res
144
+ end
145
+
146
+ def mapsearch
147
+ @google_map_key = GFDNAVI_GOOGLE_MAP_KEY
148
+ @page_title = 'search by google-map'
149
+
150
+ if request.post?
151
+ res = msearch
152
+ else
153
+ @query=Query.new();
154
+ end
155
+
156
+ session[:varglobal]=@varglobal
157
+ session[:varpartial]=@varpartial
158
+ session[:varpoints]=@varpoints
159
+ session[:varno_region] = @varno_region
160
+ session[:query]=@query
161
+ session[:results]=@results
162
+ session[:all_partial_group]=@all_partial_group
163
+ session[:all_points_group]=@all_points_group
164
+
165
+ @variables = Array.new
166
+ [@varpoints, @varpartial, @varglobal, @varno_region].each{|ary|
167
+ @variables += ary if Array === ary
168
+ }
169
+ render :action => "mapsearch"
170
+ end
171
+
172
+ def remapsearch
173
+ r=re_search
174
+ @objs = Array.new
175
+ if @all_points_group!=nil then
176
+ @all_points_group.keys.each{ |key|
177
+ group = @all_points_group[key]
178
+ size = group.length if group.length > 30
179
+ size = 30 if group.length <= 30
180
+ if group.length!=0 then
181
+ @objs.push( {:gid=>key, :radius=>r["radius"],:posx=>group[0].latitude_lb, :posy=>group[0].longitude_lb, :size=>size, :num=>group.length, :mode=>"points"} )
182
+ end
183
+ }
184
+ end
185
+ if @all_partial_group!=nil then
186
+ @all_partial_group.keys.each{ |key|
187
+ group = @all_partial_group[key]
188
+ size = group.length if group.length > 30
189
+ size = 30 if group.length <= 30
190
+ if group.length!=0 then
191
+ @objs.push( {:gid=>key, :radius=>r["radius"], :posx=>group[0].latitude_lb, :posy=>group[0].longitude_lb, :size=>size, :num=>group.length, :mode=>"partial"} )
192
+ end
193
+ }
194
+ end
195
+ @debug = r["debug"]
196
+ @queryregion = {:start_lon=>@query.start_lon,:start_lat=>@query.start_lat,:end_lon=>@query.end_lon,:end_lat=>@query.end_lat}
197
+ @windowregion = {:window_start_lon=>@query.window_start_lon,:window_start_lat=>@query.window_start_lat,:window_end_lon=>@query.window_end_lon,:window_end_lat=>@query.window_end_lat}
198
+ end
199
+
200
+ def listvariables
201
+ @all_group = session[:all_points_group]
202
+ @mode = params[:mode]
203
+
204
+ if @mode=="points"
205
+ @all_group = session[:all_points_group]
206
+ elsif @mode=="partial"
207
+ @all_group = session[:all_partial_group]
208
+ end
209
+ @points_group = @all_group[params[:gid]]
210
+ @gid=params[:gid]
211
+ render(:partial=>"show_variablelist")
212
+ end
213
+
214
+
215
+ def change_results
216
+ @varpoints = session[:varpoints] || []
217
+ @varpartial = session[:varpartial] || []
218
+ @varglobal = session[:varglobal] || []
219
+ @varno_region = session[:varno_region] || []
220
+ @mode = params[:show][:list]
221
+ case @mode
222
+ when "points"
223
+ @no="p"
224
+ @variables = @varpoints
225
+ when "partial"
226
+ @no="p"
227
+ @variables = @varpartial
228
+ when "global"
229
+ @no="g"
230
+ @variables = @varglobal
231
+ when "no_region"
232
+ @no=""
233
+ @variables = @varno_region
234
+ else
235
+ @no=""
236
+ @variables = @varpoints + @varpartial + @varglobal + @varno_region
237
+ end
238
+ render(:partial =>"show_results")
239
+ end
240
+
241
+
242
+ def change_points_listmode
243
+ @varpoints=session[:varpoints]
244
+ if params[:mode][:list]=="groupbyfiles"
245
+ render(:partial =>"show_results_points_groupbyfile", :object => @varpoints)
246
+ else
247
+ render(:partial =>"show_results_points", :object => @varpoints)
248
+ end
249
+ end
250
+
251
+
252
+ def change_partial_listmode
253
+ @varpartial=session[:varpartial]
254
+ if params[:mode][:list]=="groupbyfiles"
255
+ render(:partial =>"show_results_partial_groupbyfile", :object => @varpartial)
256
+ else
257
+ render(:partial =>"show_results_partial", :object => @varpartial)
258
+ end
259
+ end
260
+
261
+ def change_global_listmode
262
+ @varglobal=session[:varglobal]
263
+ if params[:mode][:list]=="groupbyfiles"
264
+ render(:partial =>"show_results_global_groupbyfile", :object => @varglobal)
265
+ else
266
+ render(:partial =>"show_results_global", :object => @varglobal)
267
+ end
268
+ end
269
+
270
+
271
+
272
+ private
273
+
274
+ def open_dir(closes, parents, session, selected)
275
+ dir_tree = session[:dir_tree]
276
+ user = (login=session[:user]) && User.find_by_login(login)
277
+ if parents[0]
278
+ grand_parent = parents[0].parent
279
+ if grand_parent && !dir_tree.include?(grand_parent.path)
280
+ render :nothing => true
281
+ return false
282
+ end
283
+ end
284
+ render :update do |page|
285
+ closes.each{|dir|
286
+ page << "tree.dirChange('#{dir.path}');"
287
+ }
288
+ parents.each{|dir|
289
+ path = dir.path
290
+ @dirs = dir.directory_nodes(:user=>user)
291
+ if !(dir_tree.include?(path)) && @dirs.length > 0
292
+ @user = user
293
+ @parent = dir
294
+ session[:dir_tree].push path
295
+ page.replace "dir#{path}", render(:partial => "children")
296
+ end
297
+ }
298
+ if selected
299
+ page << "tree.dirSelected('#{parents[-1].path}');"
300
+ end
301
+ end
302
+ session[:dir_tree_selected] = parents[-1] if selected
303
+ end
304
+
305
+ def add_var_to_list(var)
306
+ if Node === var
307
+ var = var.entity
308
+ elsif String === var
309
+ user = (login=session[:user]) && User.find_by_login(user)
310
+ var = Variable.find(:first, :conditions=>["path=?",path,], :user=>user )
311
+ end
312
+ if var
313
+ session[:variables_list] ||= Array.new
314
+ session[:variables_list].push var unless session[:variables_list].include?(var)
315
+ end
316
+ end
317
+
318
+ def add_node_to_list(node)
319
+ user = (login=session[:user]) && User.find_by_login(user)
320
+ if String === node
321
+ begin
322
+ node = Node.find(:first, :conditions=>["path=?",node], :user=>user)
323
+ return nil unless node
324
+ end
325
+ end
326
+
327
+ if node.variable?
328
+ add_var_to_list(node)
329
+ return
330
+ elsif node.directory?
331
+ node.variable_nodes(:user=>user).each{|var|
332
+ add_var_to_list(var)
333
+ }
334
+ node.directory_nodes(:user=>user).each{|dir|
335
+ add_dir_to_list(dir)
336
+ }
337
+ end
338
+ end
339
+
340
+
341
+ end
@@ -0,0 +1,337 @@
1
+ class UserController < ApplicationController
2
+ # for OpenID
3
+ require 'ostruct'
4
+
5
+ # === Proxy���g�p����OpenID�F�؃T�[�o�ƒʐM���邽�߂ɕK�v
6
+ OpenID.fetcher_use_env_http_proxy if GFDNAVI_USING_PROXY
7
+
8
+ layout 'gfdnavi'
9
+
10
+ before_filter :login_required, :except => [:login, :signup, :openid_signup, :openid_login, :openid_logout, :authenticate, :root_url]
11
+
12
+ def index
13
+ @user = User.find_by_login(session[:user])
14
+ end
15
+
16
+ def login
17
+
18
+ case request.method
19
+ when :post
20
+ user = User.authenticate(params[:user][:login], params[:user][:password])
21
+ if user
22
+ =begin
23
+ !!! have to reset session, but this is not valid under rails 1.2
24
+ data = session.instance_variable_get(:@data)
25
+ data ||= session.instance_variable_get(:@attributes)
26
+ request.reset_session
27
+ for key, val in data
28
+ session[key] = val
29
+ end
30
+ =end
31
+ session[:user] = user.login
32
+ flash['notice'] = "Login successful"
33
+ redirect_back_or_default :action => "index"
34
+ else
35
+ flash.now['notice'] = "Login unsuccessful"
36
+ @login = params[:user_login]
37
+ end
38
+ end
39
+ end
40
+
41
+ def add_user
42
+ user = (login=session[:user]) && User.find_by_login(login)
43
+ unless user && User.super_user?(user)
44
+ redirect_back_or_default :action => "index"
45
+ end
46
+ case request.method
47
+ when :post
48
+ @user = User.new(params['user'])
49
+ @user.internal_user = true
50
+ if @user.save
51
+ flash['notice'] = "Signup successful"
52
+ redirect_back_or_default :action => "index"
53
+ end
54
+ when :get
55
+ @user = User.new
56
+ end
57
+ end
58
+
59
+ def signup
60
+ logout
61
+ case request.method
62
+ when :post
63
+ @sign_up_user = SignUpUser.new(params['sign_up_user'])
64
+ if @sign_up_user.save
65
+ if GFDNAVI_ENABLE_EMAIL
66
+ UserMailer.deliver_signup_confirm(@sign_up_user, uri_prefix)
67
+ UserMailer.deliver_signup_inform(@sign_up_user, uri_prefix)
68
+ end
69
+ render :action => "signup_succeeded"
70
+ return
71
+ end
72
+ when :get
73
+ @sign_up_user = SignUpUser.new
74
+ end
75
+ end
76
+
77
+ def change_password
78
+ @user = (login=session[:user]) && User.find_by_login(login)
79
+ if @user && @user.super_user?
80
+ if (name=params[:name]) && (user=User.find(:first,:conditions=>["login=?",name]))
81
+ @user = user
82
+ end
83
+ @super = true
84
+ end
85
+ case request.method
86
+ when :post
87
+ password = params['current_password']
88
+ if @super || User.authenticate(@user.login, password) == @user
89
+ if @user.change_password(params['new_password'], params['new_password_confirmation'])
90
+ flash['notice'] = "Change successful"
91
+ redirect_to :action => "index"
92
+ end
93
+ end
94
+ flash['notice'] = "Change unsuccessful"
95
+ end
96
+ end
97
+
98
+ def edit
99
+ user_login = (login=session[:user]) && User.find_by_login(login)
100
+ @user = user_login
101
+ if @user && @user.super_user?
102
+ if (name=params[:name]) && (user=User.find(:first,:conditions=>["login=?",name]))
103
+ @user = user
104
+ end
105
+ @super = true
106
+ end
107
+ case request.method
108
+ when :post
109
+ password = params[:password]
110
+ if user_login.super_user? || User.authenticate(@user.login, password) == @user
111
+ @user.update_attributes(params[:user])
112
+ if @user.save
113
+ flash[:notice] = "Change successful"
114
+ redirect_to :action => "index"
115
+ return
116
+ end
117
+ end
118
+ flash[:notice] = "Change unsuccessful"
119
+ end
120
+ end
121
+
122
+ def delete
123
+ if (name = params[:name]) and (user = (login=session[:user])&&User.find_by_login(login))
124
+ user_to_delete = User.find(:first, :conditions=>["login = ?",name])
125
+ if user.super_user? || user == user_to_delete
126
+ user_to_delete.destroy
127
+ end
128
+ end
129
+ redirect_to :action => "index"
130
+ end
131
+
132
+ def logout
133
+ session[:user] = nil
134
+ request.reset_session
135
+ session = request.session
136
+ end
137
+
138
+ def set_super_user
139
+ if (name = params[:name]) and User.find_by_login(session[:user]).super_user
140
+ user = User.find(:first, :conditions=>["login = ?",name])
141
+ user.super_user = true
142
+ user.save!
143
+ end
144
+ redirect_to :action => "index"
145
+ end
146
+
147
+ def unset_super_user
148
+ if (name = params[:name]) and (login=session[:user]) && (user=User.find_by_login(login)) && user.super_user?
149
+ user = User.find(:first,:conditions=>["login=?",name])
150
+ user.super_user = false
151
+ user.save!
152
+ end
153
+ redirect_to :action => "index"
154
+ end
155
+
156
+ def accept_signup
157
+ suser = (login=session[:user]) && User.find_by_login(login)
158
+ unless User.super_user?(suser)
159
+ redirect_to :action => "index"
160
+ end
161
+ user = SignUpUser.find(params['id'])
162
+ new_user = User.new
163
+ %w(login full_name email_address affiliation).each{|attr|
164
+ new_user.send("#{attr}=", user.send(attr))
165
+ }
166
+ new_user.password = "dummy"
167
+ new_user.password_confirmation = "dummy"
168
+ if new_user.save
169
+ new_user.password = user.password
170
+ new_user.save!
171
+ user.destroy
172
+ flash[:notice] = "authorization of #{user.login} was succeeded"
173
+ @uri = uri_prefix
174
+ if GFDNAVI_ENABLE_EMAIL
175
+ UserMailer.deliver_signup_accepted(new_user, uri_prefix)
176
+ UserMailer.deliver_authorization_inform(new_user, uri_prefix, suser, "accept")
177
+ end
178
+ else
179
+ flash[:notice] = "authorization of #{user.login} was failed"
180
+ end
181
+ redirect_to :action => "index"
182
+ end
183
+
184
+ def reject_signup
185
+ suser = (login=session[:user]) && User.find_by_login(user)
186
+ unless User.super_user?(suser)
187
+ redirect_to :action => "index"
188
+ end
189
+ user = SignUpUser.find(params['id'])
190
+ @uri = uri_prefix
191
+ if GFDNAVI_ENABLE_EMAIL
192
+ UserMailer.deliver_signup_rejected(user, uri_prefix)
193
+ UserMailer.deliver_authorization_inform(user, uri_prefix, suser, "reject")
194
+ end
195
+ user.destroy
196
+ redirect_to :action => "index"
197
+ end
198
+
199
+ =begin
200
+ # == for OpenID
201
+ # * gfdnavi.yml�� allow_any_openid ��ݒ�B false �Ȃ����ꂽOpenID���[�U�ɂ������‚��Ȃ����[�h�ɂȂ�B
202
+ # * params[:open_id_complete]�́A�F�؃T�[�o����߂��Ă����Ƃ��ɒl������B����܂ł� nil�B
203
+ #
204
+ # (1) ���[�U��OpenID�����
205
+ # (2) using_open_id�̔���ŁA�󂶂�Ȃ���Ύ葱�����s�B��Ȃ� index �Ƀ��_�C���N�g�B
206
+ # (3) �S�Ă�OpenID���������[�h���A�܂������łȂ��Ă��o�^�ς݂�OpenID�ł����authenticate.
207
+ # �����łȂ���΁AOpenID���\���̃y�[�W�ւƔ�΂�(openid_signup �փ��_�C���N�g)�B
208
+ def openid_login
209
+ unless respond_to?("using_open_id?")
210
+ flash[:notice] = "Please install Rails plugin \"open_id_authentication plugin\".\n"
211
+ redirect_to :action => "index"
212
+ end
213
+
214
+ if using_open_id?
215
+ if GFDNAVI_ALLOW_ANY_OPENID || User.find_by_login(User.normalization(params[:openid]))
216
+ authenticate
217
+ else
218
+ flash[:notice] = "In this Gfdnavi server, login is permitted only to admitted OpenID.\nDo you want to signup?"
219
+ @openid = params[:openid]
220
+ redirect_to :action => "openid_signup"
221
+ end
222
+ else
223
+ flash[:error] = "Authentication failed. Your input was empty, or wrong OpenID.\nPlease retry.\n"
224
+ redirect_to :action => "index"
225
+ end
226
+ end
227
+
228
+ def openid_logout
229
+ session[:user_id] = nil
230
+ redirect_to :action => "index"
231
+ end
232
+
233
+ # == OpenID���[�U�� signup �Ɏg���B
234
+ # ���̃��\�b�h���Ă΂ꂽ�Ƃ��́AOpenID�F�؃T�[�o�ɂ͂܂��A�N�Z�X���Ă��Ȃ��̂ŁA
235
+ # signup�̂��߂ɔF�؂�������B
236
+ # ������
237
+ def openid_signup
238
+ logout
239
+ openid_logout
240
+ case request.method
241
+ when :post
242
+ authenticate_with_open_id(params[:openid],:required=>[:fullname, :email]) do |result, identity_url, registration|
243
+ unless result.successful?
244
+ flash[:error] = result.message + "Please confirm your OpenID URL.\n"
245
+ redirect_to :action => "index"
246
+ return
247
+ else
248
+ # === �F�ؐ���
249
+ @sign_up_openid_user = SignUpUser.new
250
+ @sign_up_openid_user.login = identity_url
251
+ @sign_up_openid_user.full_name = registration["fullname"]
252
+ @sign_up_openid_user.email_address = registration["email"]
253
+ @sign_up_openid_user.affiliation = ""
254
+ @sign_up_openid_user.password = "dummy"
255
+
256
+ if @sign_up_user.save
257
+ if GFDNAVI_ENABLE_EMAIL
258
+ UserMailer.deliver_signup_confirm(@sign_up_user, uri_prefix)
259
+ UserMailer.deliver_signup_inform(@sign_up_user, uri_prefix)
260
+ end
261
+ render :action => "signup_succeeded"
262
+ return
263
+ end
264
+ end
265
+ end
266
+ when :get
267
+ @sign_up_user = SignUpUser.new
268
+ end
269
+ end
270
+
271
+ protected
272
+ # == OpenID�ɂ�郍�O�C���̔F�؂��s��
273
+ # * �F�؂̐��ۂ͂����Ŕ��肵�Ă���B
274
+ def authenticate(identity_url = "")
275
+ print "authenticate!\n"
276
+
277
+ authenticate_with_open_id(params[:openid],:required=>[:fullname, :email]) do |result, identity_url, registration|
278
+ # * �F�؎��s�Ȃ�AUser�̃C���f�b�N�X�y�[�W�ւƃ��_�C���N�g
279
+ # * �F�ؐ����Ȃ�AOpenStruct�I�u�W�F�N�g�����A�Z�b�V�����ɓ����B
280
+ unless result.successful?
281
+ flash[:error] = result.message + "Please confirm your OpenID URL.\n"
282
+ # redirect_to :controller => "user", :action => "index"
283
+ jumpto = session[:jumpto] || {:controller => "user"}
284
+ else
285
+ openid_user = OpenStruct.new
286
+ openid_user.identity_url = identity_url
287
+ openid_user.fullname = registration["fullname"]
288
+ openid_user.email = registration["email"]
289
+ session[:user_id] = openid_user
290
+
291
+ jumpto = session[:jumpto] || {:controller => "user"}
292
+ session[:jumpto] = nil
293
+
294
+ # ���͂��ꂽOpenID��Gfdnavi�̃f�[�^�x�[�X�ɂ��邩�ǂ����T���B
295
+ # * ���͂��ꂽOpenID�����ɓo�^����Ă���ꍇ�Afull_name��email_address���X�V���ă��O�C���B
296
+ # * OpenID�����o�^�̏ꍇ�A�V�K�o�^����B
297
+ if external_user = User.find_by_login(identity_url)
298
+ external_user.full_name = registration["fullname"]
299
+ external_user.email_address = registration["email"]
300
+ external_user.save
301
+ session[:user] = external_user.login
302
+ flash[:notice] = "authorization of #{identity_url} is succeeded"
303
+ else
304
+ new_user = User.new
305
+ new_user.login = identity_url
306
+ new_user.password = "dummy"
307
+ new_user.password_confirmation = "dummy"
308
+ new_user.full_name = registration["fullname"]
309
+ new_user.email_address = registration["email"]
310
+ new_user.affiliation = "external user"
311
+ new_user.internal_user = false
312
+ new_user.openid = true
313
+
314
+ require 'pp'
315
+ print "new_user = "
316
+ pp new_user
317
+
318
+ if new_user.save
319
+ print "successfully login.\n"
320
+ flash[:notice] = "creation of #{identity_url} user is succeeded"
321
+ session[:user] = new_user.login
322
+ else
323
+ print "failed to save.\n"
324
+ flash[:notice] = "creation of #{identity_url} user is failed"
325
+ end
326
+ end
327
+ end
328
+ redirect_to(jumpto)
329
+ end
330
+ end
331
+
332
+ def root_url
333
+ openid_url
334
+ end
335
+ =end
336
+
337
+ end