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,41 @@
1
+ # Filters added to this controller will be run for all controllers in the application.
2
+ # Likewise, all the methods added will be available for all controllers.
3
+
4
+ require_dependency "login_system"
5
+ require_dependency "basic_authorization"
6
+
7
+ class ApplicationController < ActionController::Base
8
+ include LoginSystem
9
+ include BasicAuthorization
10
+ before_filter :session_expires
11
+
12
+ filter_parameter_logging :password
13
+
14
+
15
+ protected
16
+ def session_expires
17
+ ::ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(
18
+ :session_expires => GFDNAVI_SESSION_DURATION.minute.from_now
19
+ )
20
+ end
21
+
22
+ def user_path
23
+ GFDNAVI_USER_PATH + "/" + session[:user]
24
+ end
25
+
26
+ def uri_prefix
27
+ prot = request.ssl? ? "https" : "http"
28
+ "#{prot}://#{request.host_with_port}#{relative_url_root}/"
29
+ end
30
+
31
+ def relative_url_root
32
+ if request.respond_to?(:relative_url_root)
33
+ # for < 2.2.2
34
+ request.relative_url_root
35
+ else
36
+ # for >= 2.2.2
37
+ super || ""
38
+ end
39
+ end
40
+
41
+ end
@@ -0,0 +1,172 @@
1
+ class DrawMethodController < ApplicationController
2
+ layout "gfdnavi"
3
+
4
+ before_filter :login_required
5
+
6
+ def index
7
+ redirect_to :action => "list"
8
+ end
9
+
10
+ def create
11
+ user = (login=session[:user]) && User.find_by_login(login)
12
+ @directory = "/usr/#{user.login}/draw_methods"
13
+ case request.method
14
+ when :post
15
+ @draw_method = DrawMethod.new
16
+ @draw_method.attributes = params[:draw_method]
17
+ @draw_method.owner = user
18
+ @draw_method.path = "#{@directory}/#{@draw_method.name}"
19
+ attribute_num = params[:attribute_num].to_i
20
+ attribute_num.times{|i|
21
+ param = params[:attribute][i.to_s]
22
+ value_type = param.delete(:value_type)
23
+ dma = @draw_method.draw_method_attributes.create(param)
24
+ dma.value_type = ValueType.find(:first,:conditions=>["name=?",value_type])
25
+ }
26
+ Node.make_user_directory(@directory, user, 0)
27
+ groups = params[:groups]
28
+ groups.shift if groups[0] == 'only me'
29
+ @draw_method.other_mode = 0
30
+ @draw_method.set_rgroups(groups) if groups.length > 0
31
+ if check_erb(@draw_method) && check_srcipt(@draw_method)
32
+ if @draw_method.save
33
+ flash[:notice] = "create successful"
34
+ redirect_back_or_default :action => "list"
35
+ else
36
+ flash[:notice] = "create unsuccessful"
37
+ end
38
+ end
39
+ when :get
40
+ @draw_method = DrawMethod.new
41
+ end
42
+ @groups = user.own_groups + user.belonging_groups
43
+ @user = user
44
+ end
45
+
46
+ def edit
47
+ user = (login=session[:user]) && User.find_by_login(login)
48
+ @draw_method = DrawMethod.find(:first, :conditions=>["name=?",params[:id]], :user=>user)
49
+ unless @draw_method && @draw_method.owner==user
50
+ redirect_back_or_default :action => "list"
51
+ return
52
+ end
53
+ @directory = "/usr/#{user.login}/draw_methods"
54
+ case request.method
55
+ when :post
56
+ @draw_method.attributes = params[:draw_method]
57
+ attribute_num = params[:attribute_num].to_i
58
+ dmas = @draw_method.draw_method_attributes
59
+ attribute_num.times{|i|
60
+ param = params[:attribute][i.to_s]
61
+ value_type = param.delete(:value_type)
62
+ if dmas[i]
63
+ dma = dmas[i]
64
+ dma.attributes = param
65
+ else
66
+ dma = dmas.create(param)
67
+ end
68
+ dma.value_type = ValueType.find(:first,:conditions=>["name=?",value_type])
69
+ dma.update
70
+ }
71
+ for i in attribute_num...dmas.length
72
+ dmas[i].destroy
73
+ end
74
+ groups = params[:groups]
75
+ groups.shift if groups[0] == 'only me'
76
+ @draw_method.other_mode = 0
77
+ @draw_method.set_rgroups(groups) if groups.length > 0
78
+ if check_erb(@draw_method) && check_srcipt(@draw_method)
79
+ if @draw_method.update
80
+ flash[:notice] = "edit successful"
81
+ redirect_back_or_default :action => "list"
82
+ else
83
+ flash[:notice] = "edit unsuccessful"
84
+ end
85
+ end
86
+ end
87
+ @groups = user.own_groups + user.belonging_groups
88
+ @user = user
89
+ end
90
+
91
+ def list
92
+ user = (login=session[:user]) && User.find_by_login(login)
93
+ dms = DrawMethod.find(:all, :user => user)
94
+ @own_dms = Array.new
95
+ @other_dms = Array.new
96
+ dms.each{|dm|
97
+ if dm.owner == user
98
+ @own_dms.push dm
99
+ else
100
+ @other_dms.push dm
101
+ end
102
+ }
103
+ @super_user = user.super_user
104
+ end
105
+
106
+ def details
107
+ name = params[:id]
108
+ user = (login=session[:user]) && User.find_by_login(login)
109
+ dm = DrawMethod.find(:first, :conditions=>["name=?",name], :user=>user)
110
+ if dm
111
+ @draw_method = dm
112
+ @user = user
113
+ else
114
+ redirect_back_or_default :action => "list"
115
+ return
116
+ end
117
+ end
118
+
119
+ def create_setting_html
120
+ unless request.xhr?
121
+ render :nothing => true
122
+ return
123
+ end
124
+ name = params[:name]
125
+ nattr = params[:nattr].to_i
126
+ attrs = params[:attribute]
127
+ html = ""
128
+ if nattr > 0
129
+ html += "<table>\n"
130
+ nattr.times{|n|
131
+ html += " <tr>\n"
132
+ attr = attrs[n.to_s]
133
+ html +=<<-"EOS"
134
+ <td>#{attr["name"]}</td>
135
+ <td>(#{attr["value_type"]})</td>
136
+ <td><input type="text" size="5" value="#{attr["default"]}" name="analysis[#{name}_#{attr["name"]}][#{n}]"/></td>
137
+ EOS
138
+ html += " </tr>\n"
139
+ }
140
+ html += "</table>\n"
141
+ end
142
+ render :update do |page|
143
+ page << "$('draw_method_setting_html').value='#{escape_javascript(html)}'"
144
+ end
145
+ end
146
+
147
+
148
+ private
149
+
150
+ def check_script(function)
151
+ script = function.script
152
+ ggraph = function.ggraph
153
+ if script =~ /retry/ || ggraph =~ /retry/
154
+ flash[:notice] = "you cannot use retry in script"
155
+ return false
156
+ end
157
+ return true
158
+ end
159
+
160
+ def check_erb(draw_method)
161
+ html = draw_method.setting_html
162
+ begin
163
+ ERB.new(html).run
164
+ return true
165
+ rescue SyntaxError
166
+ flash[:notice] = "html is invalid"
167
+ return false
168
+ end
169
+ end
170
+
171
+
172
+ end
@@ -0,0 +1,197 @@
1
+ #require "rdb_concat"
2
+
3
+ class ExplorerController < ApplicationController
4
+ layout "gfdnavi"
5
+
6
+
7
+ def index
8
+ session[:previd]=nil
9
+ @previd=nil
10
+ @qargs=nil
11
+ @results=ExplorerResult.new(0)
12
+ @queryconditions=Array.new
13
+ session[:results]=@results
14
+ session[:result]=@results
15
+ session[:qsetid]=1
16
+ session[:queryconditions]=@queryconditions
17
+ session[:qcond_selection]=Array.new
18
+ session[:nodetype_selection]=Array.new
19
+ session[:qcno]=0
20
+ end
21
+
22
+ def add_keyname
23
+ @results=session[:results]
24
+ @results.keynames.push(params[:keyname])
25
+ @results.keynames.uniq!
26
+ session[:results]=@results
27
+ valuelist=@results.get_keyvalue_list(params[:keyname])
28
+ if valuelist.size>0 then
29
+ render :update do |page|
30
+ valuelist.each{ |v|
31
+ page.insert_html(:bottom,"kw_#{params[:keyname]}","<li><a href=\"/explorer/search_kw?keyname=#{params[:keyname]}&keyvalue=#{v.value}\">#{v.value}(#{v.cnt})</a></li>")
32
+ }
33
+ page.show("kw_#{params[:keyname]}_close")
34
+ end
35
+ end
36
+ end
37
+
38
+ def del_keyname
39
+ @results=session[:results]
40
+ @results.keynames.delete(params[:keyname])
41
+ session[:results]=@results
42
+ render :update do |page|
43
+ page.replace_html("kw_#{params[:keyname]}","")
44
+ page.hide("kw_#{params[:keyname]}_close")
45
+ end
46
+ end
47
+ def get_keyvalue
48
+ @results=ExplorerResult.new(0)
49
+
50
+ # @results=session[:result]
51
+ @results.keynames.push(params["keyname"])
52
+ @results.keynames.uniq!
53
+
54
+ session[:result]=@results
55
+ @valuelist=@results.get_keyvalue_list(params["keyname"])
56
+
57
+
58
+ render :xml=>@valuelist
59
+ end
60
+
61
+ def search_path
62
+ desc="[P]#{params[:path]}"
63
+ search("path",desc)
64
+ end
65
+
66
+ def search_freeword
67
+ desc="[F]#{params[:freeword]}"
68
+ search("freeword",desc)
69
+ end
70
+
71
+
72
+ def search_kw
73
+ desc="[K]#{params[:keyname]}=#{params[:keyvalue]}"
74
+ search("keyword",desc)
75
+ end
76
+
77
+
78
+ def search_kname
79
+ desc="[K]#{params[:keyname]}"
80
+ search("keyname",desc)
81
+ end
82
+
83
+ def search_space
84
+ desc = "[S](#{params[:start_lon]},#{params[:start_lat]})-(#{params[:end_lon]},#{params[:end_lat]})"
85
+ search("space",desc)
86
+ end
87
+
88
+ def search_time
89
+ desc="[T]#{params[:starttime]}~#{params[:endtime]}"
90
+ search("time",desc)
91
+ end
92
+
93
+ def queryconditions_selection
94
+ num=0
95
+ for i in 0..session[:qcno].to_i-1
96
+ if params["qcond_selection_#{i}"]=="1" then
97
+ session[:qcond_selection][i]=1
98
+ num=num+1
99
+ else
100
+ session[:qcond_selection][i]=0
101
+ end
102
+ end
103
+ if num==0 then
104
+ redirect_to :action=>"index"
105
+ else
106
+ search("qcond_selection",params[:queryset_id].to_i)
107
+ end
108
+ end
109
+
110
+ def nodetype_selection
111
+ num=0
112
+ types=Array.new
113
+ @nodetypes=Hash.new
114
+ ntypes=["data","knowledge","function","draw_method"]
115
+ ntypes.each{ |nt|
116
+ value=params["nodetype_#{nt}"]
117
+ if value then
118
+ if params["nodetype_#{nt}"]=="1" then
119
+ types.push(nt)
120
+ num=num+1
121
+ @nodetypes[nt]=1
122
+ else
123
+ @nodetypes[nt]=0
124
+ end
125
+ else
126
+ @nodetypes[nt]=0
127
+ end
128
+ }
129
+ if num==0 then
130
+ redirect_to :action=>"index"
131
+ else
132
+ types_str=types.join(",")
133
+ search("nodetype","[N]#{types_str}")
134
+ end
135
+ end
136
+
137
+ def search(querytype,desc)
138
+ if session[:queryconditions] then
139
+ @queryconditions=session[:queryconditions]
140
+ if querytype!="qcond_selection" then
141
+ @queryconditions.push(desc)
142
+ end
143
+ end
144
+
145
+ user = (login=session[:user]) && User.find_by_login(login)
146
+
147
+ eq=ExplorerQuery.new
148
+ qstr = eq.make_query(@queryconditions,user)
149
+ if qstr!="" then
150
+ @results=ExplorerResult.new(@qsetid)
151
+ @results.put_results(Node.find_by_sql(qstr))
152
+ end
153
+ session[:results]=@results
154
+ render :action=>"index.rhtml"
155
+ end
156
+
157
+
158
+ def categorized_search
159
+
160
+ descriptions=Array.new
161
+ queries=params[:query]
162
+ queries.keys.each{|k|
163
+ if queries[k]!=nil then
164
+ descriptions.push(queries[k])
165
+ end
166
+ }
167
+ options=Hash.new
168
+ if params["show_kwfacets"] then
169
+ options["show_kwfacets"]=params["show_kwfacets"]
170
+ else
171
+ options["show_kwfacets"]=0
172
+ end
173
+ if params["show_kwvalues"] then
174
+ options["show_kwvalues"]=params["show_kwvalues"]
175
+ else
176
+ options["show_kwvalue"]=0
177
+ end
178
+ if params["show_spfacets"] then
179
+ options["show_spfacets"]=params["show_spfacets"]
180
+ else
181
+ options["show_spfacets"]=0
182
+ end
183
+
184
+ user = (login=session[:user]) && User.find_by_login(login)
185
+
186
+ eq=ExplorerQuery.new
187
+ qstr = eq.make_query(descriptions,user)
188
+ rnodes=Node.find_by_sql(qstr)
189
+ expres=ExplorerResult.new(-1)
190
+ expres.put_results(rnodes)
191
+ session[:result]=expres
192
+ results=eq.generate_results(rnodes,expres,options)
193
+ render :xml => results
194
+ end
195
+
196
+
197
+ end
@@ -0,0 +1,331 @@
1
+ #require "create_activeresources"
2
+
3
+ class FinderController < ApplicationController
4
+
5
+ layout "gfdnavi"
6
+
7
+
8
+ def index
9
+ @path = params[:path]
10
+ end
11
+
12
+ def clear_tree
13
+ session[:dir_tree] = nil
14
+ session[:dir_tree_closed] = nil
15
+ session[:dir_tree_selected] = nil
16
+ redirect_to :action => :index
17
+ end
18
+
19
+ def create_tree
20
+ if (path = params[:path])
21
+ dir = open_tree(path)
22
+ @selected_dir = session[:dir_tree_selected] = dir
23
+ end
24
+ @user = (login=session[:user]) && User.find_by_login(login)
25
+ @parent = nil
26
+ @dirs = Node.top_directory_nodes
27
+ if GFDNAVI_OTHER_GFDNAVI_SERVERS
28
+ GFDNAVI_OTHER_GFDNAVI_SERVERS.each{|gs|
29
+ }
30
+ end
31
+ =begin
32
+ Node_Remote.each{|nr|
33
+ @dirs += nr.find(:all, :from => :top_directory_nodes)
34
+ }
35
+ =end
36
+ @opened_dirs = (session[:dir_tree] ||= Array.new)
37
+ @closed_dirs = (session[:dir_tree_closed] ||= Array.new)
38
+ @selected_dir = session[:dir_tree_selected]
39
+ if @dirs.length == 1
40
+ path = @dirs[0].full_path
41
+ @opened_dirs.push(path) unless @opened_dirs.include?(path)
42
+ @closed_dirs.delete(path)
43
+ end
44
+ render :layout => false
45
+ end
46
+
47
+ def children
48
+ user = (login=session[:user]) && User.find_by_login(login)
49
+ unless (path = params[:path]) && (parent = find_node(path,user) )
50
+ head :not_found
51
+ return
52
+ end
53
+
54
+ unless request.xhr?
55
+ redirect_to :action => :index
56
+ return
57
+ end
58
+
59
+ selected = params[:selected]
60
+
61
+ session[:dir_tree] ||= Array.new
62
+ open_dir([], [parent], session, selected)
63
+ end
64
+
65
+ def add_to_list
66
+ path = params[:path]
67
+ add_node_to_list(path)
68
+ redirect_to(:controller => "analysis")
69
+ end
70
+
71
+ def items_selected
72
+ button = String.new
73
+ params.keys.each { |key|
74
+ case key
75
+ when /^anal_viz/
76
+ button = "Anal/Viz checked items"
77
+ break
78
+ when /^show/
79
+ button = "Show checked items"
80
+ break
81
+ when /^dl/
82
+ button = "Download checked items"
83
+ break
84
+ end
85
+ }
86
+ case button
87
+ when "Anal/Viz checked items" then anal_viz_checked_items
88
+ when "Show checked items" then show_checked_items
89
+ when "Download checked items" then download_checked_items
90
+ else raise "error.\n"
91
+ end
92
+ end
93
+
94
+ def dir_status
95
+ unless request.xhr?
96
+ redirect_to :action => :index
97
+ return
98
+ end
99
+ session[:dir_tree_closed] ||= Array.new
100
+ user = (login=session[:user]) && User.find_by_login(login)
101
+ if (path = params["opened"])
102
+ session[:dir_tree_closed].delete path
103
+ if params["selected"]
104
+ dir = Node.find(:first, :conditions=>["path=?",path], :user=>user)
105
+ session[:dir_tree_selected] = dir
106
+ end
107
+ elsif (path = params["closed"])
108
+ dir = Node.find(:first, :conditions=>["path=?",path], :user=>user)
109
+ if dir
110
+ session[:dir_tree_closed].push(path) unless session[:dir_tree_closed].include?(path)
111
+ if (dir_selected = session[:dir_tree_selected])
112
+ dir_selected_path = dir_selected.path
113
+ if /^#{path}/ =~ dir_selected_path && path != dir_selected_path
114
+ render :update do |page|
115
+ session[:dir_tree_selected] = dir
116
+ page << "tree.dirSelected('#{path}', true);"
117
+ end
118
+ return
119
+ end
120
+ end
121
+ end
122
+ end
123
+ render :nothing => true
124
+ end
125
+
126
+ def show_details
127
+ if GFDNAVI_DATA_URL_PREFIX
128
+ @url_prefix = (respond_to?(:relative_url_root) ? (relative_url_root || "") : request.respond_to?(:relative_url_root) ? request.relative_url_root : raise("bug") ) + GFDNAVI_DATA_URL_PREFIX
129
+ end
130
+ user = (login=session[:user]) && User.find_by_login(login)
131
+ if path = params[:path]
132
+ dir = find_node(path,user)
133
+ else
134
+ dir = session[:dir_tree_selected]
135
+ end
136
+ if dir
137
+ session[:dir_tree_selected] = dir
138
+ order = params[:order]
139
+ @user = user
140
+ @path = dir.path
141
+ @dirs = dir.directory_nodes(:user=>@user, :order=>order)
142
+ @dirs.delete_if {|d| d.name =~ /^[.]/}
143
+ @vars = dir.variable_nodes(:user=>@user, :order=>order)
144
+ @imgs = dir.image_nodes(:user=>@user, :order=>order)
145
+ @klgs = dir.knowledge_nodes(:user=>@user, :order=>order)
146
+ render :layout => false
147
+ else
148
+ render :nothing => true
149
+ end
150
+ end
151
+
152
+ def open_tree(path)
153
+ if path
154
+ flag = true
155
+ else
156
+ unless request.xhr?
157
+ redirect_to :action => :index
158
+ return
159
+ end
160
+ path = params[:path]
161
+ flag = false
162
+ end
163
+ user = (login=session[:user]) && User.find_by_login(login)
164
+ unless path && dir = find_node(path,user)
165
+ render(:nothing => true) unless flag
166
+ return
167
+ end
168
+ tree = ( session[:dir_tree] ||= Array.new )
169
+ closed = ( session[:dir_tree_closed] ||= Array.new )
170
+ ancestors = Array.new
171
+ closes = Array.new unless flag
172
+ parent = dir
173
+ while (parent = parent.parent)
174
+ pa = parent.full_path
175
+ if tree.include?(pa)
176
+ if closed.include?(pa)
177
+ if flag
178
+ closed.delete parent.path
179
+ else
180
+ closes.unshift parent
181
+ end
182
+ end
183
+ else
184
+ ancestors.unshift parent
185
+ end
186
+ end
187
+ if flag
188
+ ancestors.each{|an| tree.push an.full_path}
189
+ return dir
190
+ else
191
+ closes.push(dir) if tree.include?(path) && !closed.include?(path)
192
+ open_dir(closes, ancestors, session, false)
193
+ end
194
+ end
195
+
196
+ def show_images
197
+ if path = params[:path]
198
+ list = [[path, "1"]]
199
+ else
200
+ list = params[:list]
201
+ end
202
+ @images = Array.new
203
+ if list
204
+ list.each{|path,v|
205
+ if v == "1"
206
+ user = (login=session[:user]) && User.find_by_login(login)
207
+ node = Node.find(:first, :conditions => ["path=?", path], :user => user)
208
+ @images << path if node.image?
209
+ end
210
+ }
211
+ end
212
+ render :layout => !request.xhr?
213
+ end
214
+
215
+
216
+ def flex
217
+ @uri_prefix = uri_prefix.sub(/^http:\/\//,"")
218
+ render :layout => false
219
+ end
220
+
221
+ protected
222
+
223
+
224
+ def anal_viz_checked_items
225
+ list = params[:list]
226
+ if list
227
+ list.each{|path,v|
228
+ add_node_to_list(path) if v == "1"
229
+ }
230
+ end
231
+ redirect_to(:controller => "analysis")
232
+ end
233
+
234
+ def download_checked_items
235
+ redirect_to :action => "index"
236
+ end
237
+
238
+
239
+ def open_dir(closes, parents, session, selected)
240
+ dir_tree = session[:dir_tree]
241
+ user = (login=session[:user]) && User.find_by_login(login)
242
+ if parents[0]
243
+ grand_parent = parents[0].parent
244
+ if grand_parent && !dir_tree.include?(grand_parent.full_path)
245
+ render :nothing => true
246
+ return false
247
+ end
248
+ end
249
+ render :update do |page|
250
+ closes.each{|dir|
251
+ page << "tree.dirChange('#{dir.full_path}');"
252
+ }
253
+ parents.each{|dir|
254
+ path = dir.full_path
255
+ @dirs = dir.directory_nodes(:user=>user)
256
+ if !(dir_tree.include?(path)) && @dirs.length > 0
257
+ @user = user
258
+ @parent = dir
259
+ session[:dir_tree].push path
260
+ page.replace "dir#{path}", render(:partial => "children")
261
+ end
262
+ }
263
+ if selected
264
+ page << "tree.dirSelected('#{parents[-1].full_path}');"
265
+ end
266
+ end
267
+ session[:dir_tree_selected] = parents[-1] if selected
268
+ end
269
+
270
+ def add_var_to_list(var)
271
+ if Node === var
272
+ var = var.entity
273
+ elsif String === var
274
+ user = (login=session[:user]) && User.find_by_login(login)
275
+ var = Variable.find(:first, :conditions=>["path=?",path,], :user=>user )
276
+ end
277
+ if var
278
+ session[:variables_list] ||= Array.new
279
+ path = var.path
280
+ session[:variables_list].push path unless session[:variables_list].include?(path)
281
+ end
282
+ end
283
+
284
+ def add_node_to_list(node)
285
+ user = (login=session[:user]) && User.find_by_login(login)
286
+ if String === node
287
+ begin
288
+ node = Node.find(:first, :conditions=>["path=?",node], :user=>user)
289
+ return nil unless node
290
+ end
291
+ end
292
+
293
+ if node.variable?
294
+ add_var_to_list(node)
295
+ return
296
+ elsif node.directory?
297
+ node.variable_nodes(:user=>user).each{|var|
298
+ add_var_to_list(var)
299
+ }
300
+ node.directory_nodes(:user=>user).each{|dir|
301
+ add_dir_to_list(dir)
302
+ }
303
+ end
304
+ end
305
+
306
+
307
+ protected
308
+ def find_node(path,user)
309
+ if /^([^@]+)@(.+)$/ =~ path
310
+ site = $1
311
+ path = $2
312
+ else
313
+ site = "localhost"
314
+ end
315
+ if site == "localhost"
316
+ return Node.find(:first, :conditions => ["path=?",path], :user => user)
317
+ else
318
+ =begin
319
+ Node_Remote.each{|nr|
320
+ if nr.site.to_s == site
321
+ return nr.find(:one, :from => "/nodes/show.xml?path=#{path}")
322
+ end
323
+ }
324
+ =end
325
+ end
326
+ return nil
327
+ end
328
+
329
+
330
+
331
+ end