ramaze.ch.oddb.org 1.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 (286) hide show
  1. data/History.txt +6 -0
  2. data/LICENSE +339 -0
  3. data/Manifest.txt +285 -0
  4. data/README.txt +45 -0
  5. data/Rakefile +28 -0
  6. data/bin/admin +69 -0
  7. data/bin/exportd +63 -0
  8. data/bin/migrate +461 -0
  9. data/bin/oddbd +62 -0
  10. data/data/fulltext/data/dicts/french/fulltext.aff +1057 -0
  11. data/data/fulltext/data/dicts/french/fulltext.dict +91189 -0
  12. data/data/fulltext/data/dicts/french/fulltext.stop +135 -0
  13. data/data/fulltext/data/dicts/german/fulltext.aff +1233 -0
  14. data/data/fulltext/data/dicts/german/fulltext.dict +287574 -0
  15. data/data/fulltext/data/dicts/german/fulltext.stop +133 -0
  16. data/data/fulltext/data/german_compound/README +15 -0
  17. data/data/fulltext/data/german_compound/compound.pl +63 -0
  18. data/data/fulltext/data/german_compound/german.stop +20 -0
  19. data/data/fulltext/data/ispell-german-compound.tar.gz +0 -0
  20. data/data/fulltext/redist/dict_french/Makefile +12 -0
  21. data/data/fulltext/redist/dict_french/README.french +1 -0
  22. data/data/fulltext/redist/dict_french/dict_french.sql.in +7 -0
  23. data/data/fulltext/redist/dict_french/dict_snowball.c +56 -0
  24. data/data/fulltext/redist/dict_french/french_stem.c +1222 -0
  25. data/data/fulltext/redist/dict_french/french_stem.h +16 -0
  26. data/data/fulltext/redist/dict_french/subinclude.h +2 -0
  27. data/data/fulltext/redist/dict_german/Makefile +12 -0
  28. data/data/fulltext/redist/dict_german/README.german +1 -0
  29. data/data/fulltext/redist/dict_german/dict_german.sql.in +7 -0
  30. data/data/fulltext/redist/dict_german/dict_snowball.c +56 -0
  31. data/data/fulltext/redist/dict_german/german_stem.c +527 -0
  32. data/data/fulltext/redist/dict_german/german_stem.h +16 -0
  33. data/data/fulltext/redist/dict_german/subinclude.h +1 -0
  34. data/data/fulltext/redist/french_stem.c +1222 -0
  35. data/data/fulltext/redist/french_stem.h +16 -0
  36. data/data/fulltext/redist/german_stem.c +527 -0
  37. data/data/fulltext/redist/german_stem.h +16 -0
  38. data/lib/fixes/ruby19.rb +21 -0
  39. data/lib/fixes/selenium.rb +20 -0
  40. data/lib/fixes/singular.rb +8 -0
  41. data/lib/fixes/yaml.rb +13 -0
  42. data/lib/oddb.rb +11 -0
  43. data/lib/oddb/business/company.rb +18 -0
  44. data/lib/oddb/business/invoice.rb +75 -0
  45. data/lib/oddb/business/price.rb +60 -0
  46. data/lib/oddb/config.rb +73 -0
  47. data/lib/oddb/drugs.rb +16 -0
  48. data/lib/oddb/drugs/active_agent.rb +37 -0
  49. data/lib/oddb/drugs/atc.rb +53 -0
  50. data/lib/oddb/drugs/composition.rb +41 -0
  51. data/lib/oddb/drugs/ddd.rb +24 -0
  52. data/lib/oddb/drugs/dose.rb +107 -0
  53. data/lib/oddb/drugs/galenic_form.rb +21 -0
  54. data/lib/oddb/drugs/galenic_group.rb +17 -0
  55. data/lib/oddb/drugs/package.rb +87 -0
  56. data/lib/oddb/drugs/part.rb +56 -0
  57. data/lib/oddb/drugs/product.rb +25 -0
  58. data/lib/oddb/drugs/sequence.rb +61 -0
  59. data/lib/oddb/drugs/substance.rb +31 -0
  60. data/lib/oddb/drugs/substance_group.rb +13 -0
  61. data/lib/oddb/drugs/unit.rb +12 -0
  62. data/lib/oddb/export.rb +4 -0
  63. data/lib/oddb/export/csv.rb +89 -0
  64. data/lib/oddb/export/l10n_sessions.rb +30 -0
  65. data/lib/oddb/export/rss.rb +44 -0
  66. data/lib/oddb/export/server.rb +58 -0
  67. data/lib/oddb/export/xls.rb +119 -0
  68. data/lib/oddb/export/yaml.rb +123 -0
  69. data/lib/oddb/html/state/drugs/admin/package.rb +189 -0
  70. data/lib/oddb/html/state/drugs/admin/product.rb +56 -0
  71. data/lib/oddb/html/state/drugs/admin/sequence.rb +259 -0
  72. data/lib/oddb/html/state/drugs/ajax/explain_ddd_price.rb +19 -0
  73. data/lib/oddb/html/state/drugs/ajax/explain_price.rb +19 -0
  74. data/lib/oddb/html/state/drugs/ajax/global.rb +18 -0
  75. data/lib/oddb/html/state/drugs/ajax/package_infos.rb +19 -0
  76. data/lib/oddb/html/state/drugs/ajax/remote_infos.rb +19 -0
  77. data/lib/oddb/html/state/drugs/atc_browser.rb +39 -0
  78. data/lib/oddb/html/state/drugs/atc_guidelines.rb +21 -0
  79. data/lib/oddb/html/state/drugs/compare.rb +52 -0
  80. data/lib/oddb/html/state/drugs/download_export.rb +18 -0
  81. data/lib/oddb/html/state/drugs/fachinfo.rb +21 -0
  82. data/lib/oddb/html/state/drugs/feedback.rb +94 -0
  83. data/lib/oddb/html/state/drugs/global.rb +266 -0
  84. data/lib/oddb/html/state/drugs/init.rb +18 -0
  85. data/lib/oddb/html/state/drugs/login.rb +17 -0
  86. data/lib/oddb/html/state/drugs/package.rb +32 -0
  87. data/lib/oddb/html/state/drugs/patinfo.rb +21 -0
  88. data/lib/oddb/html/state/drugs/products.rb +51 -0
  89. data/lib/oddb/html/state/drugs/result.rb +125 -0
  90. data/lib/oddb/html/state/global.rb +165 -0
  91. data/lib/oddb/html/state/global_predefine.rb +17 -0
  92. data/lib/oddb/html/state/limit.rb +17 -0
  93. data/lib/oddb/html/state/login.rb +56 -0
  94. data/lib/oddb/html/state/paypal/checkout.rb +130 -0
  95. data/lib/oddb/html/state/paypal/collect.rb +46 -0
  96. data/lib/oddb/html/state/paypal/redirect.rb +18 -0
  97. data/lib/oddb/html/state/register_export.rb +38 -0
  98. data/lib/oddb/html/state/register_poweruser.rb +17 -0
  99. data/lib/oddb/html/state/viral/admin.rb +76 -0
  100. data/lib/oddb/html/state/viral/poweruser.rb +16 -0
  101. data/lib/oddb/html/util/annotated_list.rb +39 -0
  102. data/lib/oddb/html/util/know_it_all.rb +28 -0
  103. data/lib/oddb/html/util/known_user.rb +55 -0
  104. data/lib/oddb/html/util/lookandfeel.rb +554 -0
  105. data/lib/oddb/html/util/need_all_input.rb +29 -0
  106. data/lib/oddb/html/util/session.rb +88 -0
  107. data/lib/oddb/html/util/sort.rb +72 -0
  108. data/lib/oddb/html/util/unsaved_helper.rb +20 -0
  109. data/lib/oddb/html/util/validator.rb +54 -0
  110. data/lib/oddb/html/view/ajax/json.rb +22 -0
  111. data/lib/oddb/html/view/alpha_header.rb +28 -0
  112. data/lib/oddb/html/view/document.rb +126 -0
  113. data/lib/oddb/html/view/drugs/admin/package.rb +237 -0
  114. data/lib/oddb/html/view/drugs/admin/product.rb +104 -0
  115. data/lib/oddb/html/view/drugs/admin/sequence.rb +312 -0
  116. data/lib/oddb/html/view/drugs/ajax/explain_ddd_price.rb +87 -0
  117. data/lib/oddb/html/view/drugs/ajax/explain_price.rb +61 -0
  118. data/lib/oddb/html/view/drugs/ajax/package_infos.rb +105 -0
  119. data/lib/oddb/html/view/drugs/ajax/remote_infos.rb +44 -0
  120. data/lib/oddb/html/view/drugs/atc_browser.rb +68 -0
  121. data/lib/oddb/html/view/drugs/atc_guidelines.rb +94 -0
  122. data/lib/oddb/html/view/drugs/compare.rb +95 -0
  123. data/lib/oddb/html/view/drugs/download_export.rb +28 -0
  124. data/lib/oddb/html/view/drugs/fachinfo.rb +46 -0
  125. data/lib/oddb/html/view/drugs/feedback.rb +231 -0
  126. data/lib/oddb/html/view/drugs/init.rb +51 -0
  127. data/lib/oddb/html/view/drugs/legend.rb +24 -0
  128. data/lib/oddb/html/view/drugs/package.rb +398 -0
  129. data/lib/oddb/html/view/drugs/patinfo.rb +46 -0
  130. data/lib/oddb/html/view/drugs/products.rb +97 -0
  131. data/lib/oddb/html/view/drugs/result.rb +296 -0
  132. data/lib/oddb/html/view/drugs/search.rb +33 -0
  133. data/lib/oddb/html/view/drugs/template.rb +15 -0
  134. data/lib/oddb/html/view/foot.rb +52 -0
  135. data/lib/oddb/html/view/google.rb +23 -0
  136. data/lib/oddb/html/view/google_ads.rb +40 -0
  137. data/lib/oddb/html/view/head.rb +78 -0
  138. data/lib/oddb/html/view/limit.rb +109 -0
  139. data/lib/oddb/html/view/list.rb +59 -0
  140. data/lib/oddb/html/view/login.rb +38 -0
  141. data/lib/oddb/html/view/navigation.rb +67 -0
  142. data/lib/oddb/html/view/offset_header.rb +35 -0
  143. data/lib/oddb/html/view/paypal/collect.rb +84 -0
  144. data/lib/oddb/html/view/paypal/redirect.rb +51 -0
  145. data/lib/oddb/html/view/paypal/register_form.rb +106 -0
  146. data/lib/oddb/html/view/register_export.rb +29 -0
  147. data/lib/oddb/html/view/register_poweruser.rb +29 -0
  148. data/lib/oddb/html/view/rss/feedback.rb +64 -0
  149. data/lib/oddb/html/view/rss_preview.rb +54 -0
  150. data/lib/oddb/html/view/search.rb +104 -0
  151. data/lib/oddb/html/view/snapback.rb +24 -0
  152. data/lib/oddb/html/view/template.rb +56 -0
  153. data/lib/oddb/import/excel.rb +45 -0
  154. data/lib/oddb/import/import.rb +39 -0
  155. data/lib/oddb/import/rtf.rb +410 -0
  156. data/lib/oddb/import/whocc.rb +173 -0
  157. data/lib/oddb/import/xml.rb +15 -0
  158. data/lib/oddb/model.rb +179 -0
  159. data/lib/oddb/persistence/odba.rb +33 -0
  160. data/lib/oddb/persistence/odba/business/company.rb +13 -0
  161. data/lib/oddb/persistence/odba/business/invoice.rb +15 -0
  162. data/lib/oddb/persistence/odba/drugs/atc.rb +15 -0
  163. data/lib/oddb/persistence/odba/drugs/galenic_form.rb +18 -0
  164. data/lib/oddb/persistence/odba/drugs/galenic_group.rb +13 -0
  165. data/lib/oddb/persistence/odba/drugs/package.rb +25 -0
  166. data/lib/oddb/persistence/odba/drugs/product.rb +13 -0
  167. data/lib/oddb/persistence/odba/drugs/sequence.rb +21 -0
  168. data/lib/oddb/persistence/odba/drugs/substance.rb +21 -0
  169. data/lib/oddb/persistence/odba/drugs/substance_group.rb +13 -0
  170. data/lib/oddb/persistence/odba/drugs/unit.rb +13 -0
  171. data/lib/oddb/persistence/odba/export.rb +26 -0
  172. data/lib/oddb/persistence/odba/model.rb +68 -0
  173. data/lib/oddb/persistence/odba/regulatory/authority.rb +13 -0
  174. data/lib/oddb/persistence/odba/regulatory/registration.rb +13 -0
  175. data/lib/oddb/persistence/odba/text/document.rb +11 -0
  176. data/lib/oddb/persistence/odba/util/code.rb +11 -0
  177. data/lib/oddb/persistence/odba/util/m10l_document.rb +13 -0
  178. data/lib/oddb/persistence/og.rb +16 -0
  179. data/lib/oddb/persistence/og/drugs/composition.rb +14 -0
  180. data/lib/oddb/persistence/og/drugs/product.rb +14 -0
  181. data/lib/oddb/persistence/og/drugs/sequence.rb +15 -0
  182. data/lib/oddb/persistence/og/model.rb +25 -0
  183. data/lib/oddb/persistence/og/util/multilingual.rb +13 -0
  184. data/lib/oddb/redist/rtf_tools/reader.rb +139 -0
  185. data/lib/oddb/regulatory/authority.rb +14 -0
  186. data/lib/oddb/regulatory/registration.rb +15 -0
  187. data/lib/oddb/remote/business/company.rb +23 -0
  188. data/lib/oddb/remote/drugs/active_agent.rb +27 -0
  189. data/lib/oddb/remote/drugs/atc.rb +32 -0
  190. data/lib/oddb/remote/drugs/dose.rb +8 -0
  191. data/lib/oddb/remote/drugs/galenic_form.rb +25 -0
  192. data/lib/oddb/remote/drugs/package.rb +126 -0
  193. data/lib/oddb/remote/drugs/part.rb +30 -0
  194. data/lib/oddb/remote/drugs/product.rb +19 -0
  195. data/lib/oddb/remote/drugs/sequence.rb +46 -0
  196. data/lib/oddb/remote/drugs/substance.rb +20 -0
  197. data/lib/oddb/remote/drugs/unit.rb +19 -0
  198. data/lib/oddb/remote/object.rb +36 -0
  199. data/lib/oddb/remote/text/document.rb +20 -0
  200. data/lib/oddb/remote/util/m10l_document.rb +22 -0
  201. data/lib/oddb/text/chapter.rb +27 -0
  202. data/lib/oddb/text/document.rb +43 -0
  203. data/lib/oddb/text/format.rb +37 -0
  204. data/lib/oddb/text/paragraph.rb +58 -0
  205. data/lib/oddb/text/picture.rb +93 -0
  206. data/lib/oddb/text/table.rb +68 -0
  207. data/lib/oddb/util.rb +8 -0
  208. data/lib/oddb/util/annotated_list.rb +37 -0
  209. data/lib/oddb/util/code.rb +69 -0
  210. data/lib/oddb/util/comparison.rb +36 -0
  211. data/lib/oddb/util/exporter.rb +8 -0
  212. data/lib/oddb/util/feedback.rb +23 -0
  213. data/lib/oddb/util/ipn.rb +48 -0
  214. data/lib/oddb/util/m10l_document.rb +38 -0
  215. data/lib/oddb/util/mail.rb +73 -0
  216. data/lib/oddb/util/money.rb +60 -0
  217. data/lib/oddb/util/multilingual.rb +70 -0
  218. data/lib/oddb/util/quanty.rb +4 -0
  219. data/lib/oddb/util/quanty/fact.rb +229 -0
  220. data/lib/oddb/util/quanty/main.rb +160 -0
  221. data/lib/oddb/util/quanty/parse.rb +853 -0
  222. data/lib/oddb/util/quanty/units.dump +0 -0
  223. data/lib/oddb/util/server.rb +117 -0
  224. data/lib/oddb/util/updater.rb +41 -0
  225. data/lib/oddb/util/ydim.rb +110 -0
  226. data/lib/oddb/util/yus.rb +46 -0
  227. data/test/business/test_company.rb +29 -0
  228. data/test/business/test_price.rb +46 -0
  229. data/test/drugs/test_active_agent.rb +53 -0
  230. data/test/drugs/test_atc.rb +54 -0
  231. data/test/drugs/test_composition.rb +88 -0
  232. data/test/drugs/test_ddd.rb +22 -0
  233. data/test/drugs/test_dose.rb +190 -0
  234. data/test/drugs/test_galenic_form.rb +41 -0
  235. data/test/drugs/test_package.rb +173 -0
  236. data/test/drugs/test_part.rb +32 -0
  237. data/test/drugs/test_product.rb +31 -0
  238. data/test/drugs/test_sequence.rb +140 -0
  239. data/test/drugs/test_substance.rb +51 -0
  240. data/test/drugs/test_substance_group.rb +27 -0
  241. data/test/export/test_rss.rb +94 -0
  242. data/test/export/test_server.rb +117 -0
  243. data/test/export/test_xls.rb +152 -0
  244. data/test/export/test_yaml.rb +120 -0
  245. data/test/import/data/html/whocc/A.html +56 -0
  246. data/test/import/data/html/whocc/A03.html +48 -0
  247. data/test/import/data/html/whocc/A03AB.html +48 -0
  248. data/test/import/data/html/whocc/A06AA.html +47 -0
  249. data/test/import/data/html/whocc/C03.html +47 -0
  250. data/test/import/data/html/whocc/login.html +77 -0
  251. data/test/import/data/xml/ATC_2006.xml +47 -0
  252. data/test/import/data/xml/ATC_2006_ddd.xml +35 -0
  253. data/test/import/test_excel.rb +34 -0
  254. data/test/import/test_rtf.rb +40 -0
  255. data/test/import/test_whocc.rb +315 -0
  256. data/test/remote/drugs/test_active_agent.rb +36 -0
  257. data/test/selenium/selenium-server.jar +0 -0
  258. data/test/selenium/test_atc_browser.rb +122 -0
  259. data/test/selenium/test_atc_guidelines.rb +96 -0
  260. data/test/selenium/test_collect.rb +138 -0
  261. data/test/selenium/test_compare.rb +206 -0
  262. data/test/selenium/test_fachinfo.rb +130 -0
  263. data/test/selenium/test_feedback.rb +196 -0
  264. data/test/selenium/test_init.rb +52 -0
  265. data/test/selenium/test_limit.rb +305 -0
  266. data/test/selenium/test_login.rb +67 -0
  267. data/test/selenium/test_package.rb +512 -0
  268. data/test/selenium/test_patinfo.rb +131 -0
  269. data/test/selenium/test_product.rb +80 -0
  270. data/test/selenium/test_products.rb +142 -0
  271. data/test/selenium/test_search.rb +715 -0
  272. data/test/selenium/test_sequence.rb +543 -0
  273. data/test/selenium/unit.rb +185 -0
  274. data/test/stub/http_server.rb +169 -0
  275. data/test/stub/model.rb +173 -0
  276. data/test/suite.rb +15 -0
  277. data/test/test_model.rb +83 -0
  278. data/test/util/test_code.rb +74 -0
  279. data/test/util/test_ipn.rb +117 -0
  280. data/test/util/test_mail.rb +86 -0
  281. data/test/util/test_multilingual.rb +97 -0
  282. data/test/util/test_server.rb +48 -0
  283. data/test/util/test_updater.rb +353 -0
  284. data/test/util/test_ydim.rb +115 -0
  285. data/test/util/test_yus.rb +79 -0
  286. metadata +418 -0
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Drugs::Init -- de.oddb.org -- 27.10.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/state/global_predefine'
5
+ require 'oddb/html/view/drugs/init'
6
+
7
+ module ODDB
8
+ module Html
9
+ module State
10
+ module Drugs
11
+ class Init < Drugs::Global
12
+ DIRECT_EVENT = :home
13
+ VIEW = View::Drugs::Init
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Drugs::Login -- de.oddb.org -- 26.10.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/state/global_predefine'
5
+ require 'oddb/html/state/login'
6
+
7
+ module ODDB
8
+ module Html
9
+ module State
10
+ module Drugs
11
+ class Login < Global
12
+ include State::Login
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Drugs::Package -- de.oddb.org -- 11.12.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/state/global_predefine'
5
+ require 'oddb/html/view/drugs/package'
6
+
7
+ module ODDB
8
+ module Html
9
+ module State
10
+ module Drugs
11
+ class Package < Global
12
+ LIMIT = true
13
+ VIEW = View::Drugs::Package
14
+ def direct_event
15
+ direct_event = [:package]
16
+ if(code = @model.code(:cid, ODDB.config.country))
17
+ direct_event.push([:cid, code.value])
18
+ end
19
+ direct_event
20
+ end
21
+ def _package(code)
22
+ if(@model.code(:cid, ODDB.config.country) == code)
23
+ self
24
+ else
25
+ super
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Drugs::Patinfo -- de.oddb.org -- 30.10.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/state/global_predefine'
5
+ require 'oddb/html/view/drugs/patinfo'
6
+
7
+ module ODDB
8
+ module Html
9
+ module State
10
+ module Drugs
11
+ class Patinfo < Global
12
+ LIMIT = true
13
+ VIEW = View::Drugs::Patinfo
14
+ def direct_event
15
+ [:patinfo, [:uid, @model.uid]]
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Drugs::Products -- de.oddb.org -- 07.12.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/state/global_predefine'
5
+ require 'oddb/html/util/sort'
6
+ require 'oddb/html/view/drugs/products'
7
+
8
+ module ODDB
9
+ module Html
10
+ module State
11
+ module Drugs
12
+ class Products < Drugs::Global
13
+ include Util::Sort
14
+ DIRECT_EVENT = :products
15
+ LIMIT = true
16
+ VIEW = View::Drugs::Products
17
+ def init
18
+ sort_by(:product)
19
+ sort
20
+ end
21
+ def _products(query)
22
+ if(@model.query == query)
23
+ sort
24
+ else
25
+ super
26
+ end
27
+ end
28
+ def intervals
29
+ alpha, others = partitioned_keys(ODDB::Drugs::Product.name_keys(1))
30
+ keys = alpha.collect { |key| key.upcase }
31
+ keys.push('0-9') unless(others.empty?)
32
+ keys
33
+ end
34
+ def sort_proc(key)
35
+ case key
36
+ when :atc
37
+ Proc.new { |prod|
38
+ prod.atcs.compact.uniq.collect { |atc| atc.code }.sort }
39
+ when :company
40
+ Proc.new { |prod|
41
+ (multilingual = prod.send(key)) \
42
+ && multilingual.name.send(@session.language) || '' }
43
+ when :product
44
+ Proc.new { |prod| prod.name.send(@session.language) || '' }
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,125 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Drugs::Result -- de.oddb.org -- 07.11.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/state/global_predefine'
5
+ require 'oddb/html/util/sort'
6
+ require 'oddb/html/view/drugs/result'
7
+
8
+ module ODDB
9
+ module Html
10
+ module State
11
+ module Drugs
12
+ class Result < Drugs::Global
13
+ class Paginator
14
+ attr_accessor :page, :display
15
+ attr_reader :pages, :model
16
+ def initialize(model)
17
+ @model = model
18
+ @page = 0
19
+ @pages = [0]
20
+ end
21
+ def collect!(&block)
22
+ @model.collect!(&block)
23
+ self
24
+ end
25
+ def each(&block)
26
+ if(paged?)
27
+ paged_each(&block)
28
+ else
29
+ @model.each(&block)
30
+ end
31
+ end
32
+ def method_missing(key, *args, &block)
33
+ @model.send(key, *args, &block)
34
+ end
35
+ def next_page!
36
+ @page = @pages.size
37
+ @pages.push(@model.size)
38
+ @page
39
+ end
40
+ def overflow?
41
+ @pages.size > 1
42
+ end
43
+ def page_count
44
+ @pages.size
45
+ end
46
+ def paged?
47
+ @display == 'paged'
48
+ end
49
+ def paged_each(&block)
50
+ max = @pages.length - 1
51
+ range = if(@page >= max)
52
+ @pages[max]..-1
53
+ else
54
+ @pages[@page]...@pages[@page.next]
55
+ end
56
+ @model[range].each(&block)
57
+ end
58
+ def show_details?
59
+ !overflow? || paged?
60
+ end
61
+ end
62
+ include Util::PackageSort
63
+ LIMIT = true
64
+ VIEW = View::Drugs::Result
65
+ def init
66
+ partition!
67
+ sort_by(:price_public, 0)
68
+ sort_by(:size, 0)
69
+ sort_by(:active_agents, [])
70
+ sort_by(:product, nil)
71
+ paginate
72
+ sort
73
+ end
74
+ def direct_event
75
+ [:search, :query, @model.query, :dstype, @model.dstype]
76
+ end
77
+ def paginate
78
+ if(@session.user_input(:page))
79
+ @session.set_cookie_input(:display, 'paged')
80
+ end
81
+ @model.display = @session.cookie_set_or_get(:display)
82
+ if(page = @session.user_input(:page))
83
+ @model.page = page
84
+ end
85
+ end
86
+ def partition!
87
+ atcs = {}
88
+ @model = Paginator.new(@model)
89
+ @model.total = @model.size
90
+ while(package = @model.shift)
91
+ code = (atc = package.atc) ? atc.code : 'X'
92
+ (atcs[code] ||= ODDB::Util::AnnotatedList.new(:atc => atc)).push(package)
93
+ end
94
+ count = 0
95
+ limit = @session.pagelength
96
+ atcs.sort.each { |code, array|
97
+ count += array.size
98
+ ## count > array.size: very large atc-classes may instantly get the count
99
+ # to be > limit
100
+ if(count > array.size && count > limit)
101
+ @model.next_page!
102
+ count = array.size
103
+ end
104
+ @model.push(array)
105
+ }
106
+ @model.page = 0
107
+ end
108
+ def _search(query, dstype)
109
+ if(@model.query == query && @model.dstype == dstype)
110
+ paginate
111
+ sort
112
+ else
113
+ super
114
+ end
115
+ end
116
+ def _sort_by(model, reverse, &sorter)
117
+ model.collect! { |array|
118
+ super(array, reverse, &sorter)
119
+ }
120
+ end
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,165 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Drugs::Global -- de.oddb.org -- 27.10.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/state/global_predefine'
5
+ require 'oddb/html/state/drugs/atc_browser'
6
+ require 'oddb/html/state/drugs/download_export'
7
+ require 'oddb/html/state/drugs/init'
8
+ require 'oddb/html/state/drugs/login'
9
+ require 'oddb/html/state/limit'
10
+ require 'oddb/html/state/register_export'
11
+ require 'oddb/html/state/register_poweruser'
12
+ require 'oddb/html/state/paypal/checkout'
13
+ require 'oddb/business/invoice'
14
+
15
+ module ODDB
16
+ module Html
17
+ module State
18
+ class Global < SBSM::State
19
+ include PayPal::Checkout
20
+ attr_reader :passed_turing_test
21
+ LIMIT = false
22
+ GLOBAL_MAP = {
23
+ :atc_browser => Drugs::AtcBrowser,
24
+ :login => Drugs::Login,
25
+ }
26
+ def compare
27
+ if(code = @session.user_input(:cid))
28
+ _compare(code)
29
+ end
30
+ end
31
+ def _download(file)
32
+ if match = /(.+)_(.+).csv/.match(file)
33
+ packages = _search_local match[1].tr('-', ' '), match[2]
34
+ packages.filename = file
35
+ Drugs::DownloadExport.new(@session, packages)
36
+ end
37
+ end
38
+ def explain_ddd_price
39
+ if((code = @session.user_input(:cid)) \
40
+ && (idx = @session.user_input(:offset)))
41
+ _explain_ddd_price(code, idx.to_i)
42
+ end
43
+ end
44
+ def explain_price
45
+ if(code = @session.user_input(:cid))
46
+ _explain_price(code)
47
+ end
48
+ end
49
+ def fachinfo
50
+ if(uid = @session.user_input(:uid))
51
+ _fachinfo(uid)
52
+ end
53
+ end
54
+ def feedback
55
+ if(code = @session.user_input(:cid))
56
+ _feedback(code)
57
+ end
58
+ end
59
+ def home
60
+ State::Drugs::Init.new @session, nil
61
+ end
62
+ def limited?
63
+ self.class.const_get(:LIMIT)
64
+ end
65
+ def limit_state
66
+ State::Limit.new(@session, nil)
67
+ end
68
+ def logout
69
+ @session.logout
70
+ home
71
+ end
72
+ def package
73
+ if(code = @session.user_input(:cid))
74
+ _package(code)
75
+ end
76
+ end
77
+ def package_infos
78
+ if(code = @session.user_input(:cid))
79
+ _package_infos(code)
80
+ end
81
+ end
82
+ def partitioned_keys(keys)
83
+ keys.partition { |key|
84
+ /^[a-z]$/.match(key)
85
+ }
86
+ end
87
+ def patinfo
88
+ if(uid = @session.user_input(:uid))
89
+ _patinfo(uid)
90
+ end
91
+ end
92
+ def proceed_export
93
+ query = @session.persistent_user_input(:query)
94
+ dstype = @session.persistent_user_input(:dstype) || ODDB.config.default_dstype
95
+ result = _search_local(query, dstype)
96
+ filename = sprintf('%s_%s.csv', query.tr(' ', '-'), dstype)
97
+ if @session.allowed?('download', "#{ODDB.config.auth_domain}.#{filename}")
98
+ result.filename = filename
99
+ Drugs::DownloadExport.new @session, result
100
+ else
101
+ lines = result.size
102
+ price = ODDB.config.prices["org.oddb.de.export.cvs"].to_f
103
+ unless(lines > 0 && price > 0)
104
+ @errors.store :days, create_error(:e_empty_result, :query, query)
105
+ self
106
+ else
107
+ invoice = ODDB::Business::Invoice.new
108
+ item = invoice.add(:export, filename, lines, '', price)
109
+ State::RegisterExport.new(@session, invoice)
110
+ end
111
+ end
112
+ end
113
+ def proceed_poweruser
114
+ days = @session.user_input(:days).to_i
115
+ total = ODDB.config.prices["org.oddb.de.view.#{days}"].to_f
116
+ unless(days > 0 && total > 0)
117
+ @errors.store :days, create_error(:e_missing_days, :days, 0)
118
+ self
119
+ else
120
+ invoice = ODDB::Business::Invoice.new
121
+ item = invoice.add(:poweruser, "unlimited access", days,
122
+ @session.lookandfeel.lookup(:days), total / days)
123
+ State::RegisterPowerUser.new(@session, invoice)
124
+ end
125
+ =begin
126
+ if(usr = @session.user_input(:pointer))
127
+ State::User::RenewPowerUser.new(@session, invoice)
128
+ else
129
+ State::User::RegisterPowerUser.new(@session, invoice)
130
+ end
131
+ end
132
+ =end
133
+ end
134
+ def product
135
+ if(uid = @session.user_input(:uid))
136
+ _product(uid)
137
+ end
138
+ end
139
+ def products
140
+ _products(@session.persistent_user_input(:range))
141
+ end
142
+ def remote_infos
143
+ if(id = @session.user_input(:uid))
144
+ _remote_infos(id)
145
+ end
146
+ end
147
+ def sequence
148
+ if(uid = @session.user_input(:uid))
149
+ _sequence(uid)
150
+ end
151
+ end
152
+ def navigation
153
+ []
154
+ end
155
+ def method_missing(mth, *args)
156
+ if(mth.to_s[0] == ?_)
157
+ self
158
+ else
159
+ super
160
+ end
161
+ end
162
+ end
163
+ end
164
+ end
165
+ end
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Drugs::Global -- de.oddb.org -- 27.10.2006 -- hwyss@ywesee.com
3
+
4
+ require 'sbsm/state'
5
+
6
+ module ODDB
7
+ module Html
8
+ module State
9
+ class Global < SBSM::State
10
+ end
11
+ module Drugs
12
+ class Global < Global
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end