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,97 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::Drugs::Products -- de.oddb.org -- 07.12.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/view/alpha_header'
5
+ require 'oddb/html/view/google'
6
+ require 'oddb/html/view/list'
7
+ require 'oddb/html/view/offset_header'
8
+ require 'oddb/html/view/search'
9
+ require 'oddb/html/view/drugs/template'
10
+
11
+ module ODDB
12
+ module Html
13
+ module View
14
+ module Drugs
15
+ module ProductMethods
16
+ def company(model)
17
+ if(company = model.company)
18
+ company.name.send(@session.language)
19
+ end
20
+ end
21
+ end
22
+ class ProductsList < View::List
23
+ include View::AlphaHeader
24
+ include View::OffsetHeader
25
+ include ProductMethods
26
+ include View::Google
27
+ def init
28
+ @components = @lookandfeel.products_components
29
+ @components.each { |key, val|
30
+ css_map.store(key, val.to_s)
31
+ }
32
+ @css_head_map = @css_map
33
+ super
34
+ end
35
+ def atc(model)
36
+ atcs = model.atcs.sort
37
+ unless(atcs.empty?)
38
+ span = HtmlGrid::Span.new(model, @session, self)
39
+ names = []
40
+ codes = []
41
+ atcs.each { |atc|
42
+ names.push(atc.name.send(@session.language))
43
+ codes.push(atc.code)
44
+ }
45
+ span.value = codes.join(', ')
46
+ span.css_id = "atc_#@list_index"
47
+ span.dojo_title = codes.join(', ')
48
+ span
49
+ end
50
+ end
51
+ def fachinfo_link(model)
52
+ if(seq = model.sequences.find { |sq| sq.fachinfo.send(@session.language) })
53
+ link = HtmlGrid::Link.new(:square_fachinfo, seq, @session, self)
54
+ link.css_class = 'square fachinfo'
55
+ link.href = @lookandfeel._event_url(:fachinfo, [:uid, seq.uid])
56
+ link
57
+ end
58
+ end
59
+ def patinfo_link(model)
60
+ if(seq = model.sequences.find { |sq| sq.patinfo.send(@session.language) })
61
+ link = HtmlGrid::Link.new(:square_patinfo, seq, @session, self)
62
+ link.css_class = 'square patinfo'
63
+ link.href = @lookandfeel._event_url(:patinfo, [:uid, seq.uid])
64
+ link
65
+ end
66
+ end
67
+ def product(model)
68
+ link = HtmlGrid::Link.new(:product, model, @session, self)
69
+ name = model.name.send(@session.language)
70
+ link.value = name
71
+ link.href = @lookandfeel._event_url(:search,
72
+ [:query, name, :dstype, 'tradename'])
73
+ link
74
+ end
75
+ def query_key
76
+ :range
77
+ end
78
+ end
79
+ class ProductsComposite < HtmlGrid::DivComposite
80
+ COMPONENTS = {
81
+ [0,0] => InlineSearch,
82
+ [0,1] => :products,
83
+ }
84
+ CSS_ID_MAP = ['result-search']
85
+ CSS_MAP = { 1 => 'result' }
86
+ def products(model)
87
+ offset = [@session.user_input(:offset).to_i, model.size].min
88
+ ProductsList.new(model[offset, @session.pagelength], @session, self)
89
+ end
90
+ end
91
+ class Products < Template
92
+ CONTENT = ProductsComposite
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,296 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::Drugs::Result -- de.oddb.org -- 07.11.2006 -- hwyss@ywesee.com
3
+
4
+ require 'htmlgrid/div'
5
+ require 'htmlgrid/divform'
6
+ require 'htmlgrid/errormessage'
7
+ require 'htmlgrid/span'
8
+ require 'oddb/html/view/google'
9
+ require 'oddb/html/view/list'
10
+ require 'oddb/html/view/search'
11
+ require 'oddb/html/view/drugs/legend'
12
+ require 'oddb/html/view/drugs/package'
13
+ require 'oddb/html/view/drugs/products'
14
+ require 'oddb/html/view/drugs/template'
15
+
16
+ module ODDB
17
+ module Html
18
+ module View
19
+ module Drugs
20
+ class AtcAssign < HtmlGrid::DivForm
21
+ COMPONENTS = { [0,0,0] => :toggle, [0,0,1] => :atc_assign }
22
+ EVENT = :atc_assign
23
+ FORM_ID = 'atc-assign-form'
24
+ def atc_assign(model)
25
+ input = HtmlGrid::InputText.new(:code, model, @session, self)
26
+ style = 'margin-left: 4px;'
27
+ style << ' display: none;' unless @session.error(:atc_assign)
28
+ input.set_attribute('style', style)
29
+ input.css_id = 'atc-assign'
30
+ input
31
+ end
32
+ def hidden_fields(context)
33
+ %w{query dstype}.inject(super) { |memo, key|
34
+ memo << context.hidden(key, @session.persistent_user_input(key))
35
+ }
36
+ end
37
+ def toggle(model)
38
+ link = HtmlGrid::Link.new(:atc_assign, model, @session, self)
39
+ unless @session.error(:atc_assign)
40
+ link.onclick = "dojo.lfx.toggle.fade.show('atc-assign', 500); this.onclick=null;"
41
+ end
42
+ link.css_id = 'atc-assign-toggle'
43
+ link
44
+ end
45
+ end
46
+ class Pager < HtmlGrid::Div
47
+ CSS_CLASS = 'pager'
48
+ def init
49
+ super
50
+ @value = [@lookandfeel.lookup(:pager, @model.page + 1,
51
+ @model.page_count)]
52
+ @value.push(' ', link('<<', @model.page))
53
+ 1.upto(@model.page_count) { |page|
54
+ @value.push(' ', link(page.to_s, page))
55
+ }
56
+ @value.push(' ', link('>>', @model.page + 2))
57
+ end
58
+ def link(text, pos)
59
+ link = HtmlGrid::Link.new(:pager, @model, @session, self)
60
+ link.value = text
61
+ unless([0, @model.page.next, @model.page_count.next].include?(pos))
62
+ args = @session.state.direct_event
63
+ event = args.shift
64
+ args.push(:page, pos)
65
+ link.href = @lookandfeel._event_url(event, args)
66
+ else
67
+ link.css_class = 'current_page'
68
+ end
69
+ link
70
+ end
71
+ end
72
+ class Packages < View::List
73
+ include PackageMethods
74
+ include ProductMethods
75
+ include View::Google
76
+ EMPTY_LIST_KEY = :empty_packages
77
+ def init
78
+ @components = @lookandfeel.result_components
79
+ @components.each { |key, val|
80
+ css_map.store(key, val.to_s)
81
+ }
82
+ @css_head_map = @css_map
83
+ super
84
+ end
85
+ def atc(model)
86
+ description = @lookandfeel.lookup(:atc_unknown)
87
+ parts = []
88
+ atc = model.atc
89
+ if(atc.nil? \
90
+ && @session.allowed?('login', ODDB.config.auth_domain + '.Admin'))
91
+ parts.push AtcAssign.new(atc, @session, self)
92
+ end
93
+ if(atc)
94
+ description = sprintf("%s (%s)",
95
+ atc.name.send(@session.language), atc.code)
96
+ parts.push ddd_link(atc)
97
+ end
98
+ txt = sprintf("%s - %i %s", description, model.size,
99
+ @lookandfeel.lookup(:packages))
100
+ if(@model.overflow?)
101
+ parts.push atc_opener(atc, txt)
102
+ else
103
+ parts.push txt
104
+ end
105
+ if(@model.overflow? && @model.paged?)
106
+ parts.push Pager.new(@model, @session, self)
107
+ end
108
+ parts.reverse
109
+ end
110
+ def atc_assign
111
+ div = HtmlGrid::DivForm.new(nil, @session, self)
112
+ div.extend(HtmlGrid::FormMethods)
113
+ div.value = [
114
+ @lookandfeel.lookup(:atc_assign),
115
+ HtmlGrid::Input.new(:atc_assign, nil, @session, self),
116
+ ]
117
+ div
118
+ end
119
+ def atc_code(model)
120
+ model ? model.code : 'X'
121
+ end
122
+ def atc_opener(model, txt)
123
+ code = atc_code(model)
124
+ if(code == @session.persistent_user_input(:code))
125
+ link = HtmlGrid::Link.new(code, model, @session, self)
126
+ unless(code == 'X')
127
+ link.href = @lookandfeel._event_url(:search, [:query, code,
128
+ :dstype, :compare])
129
+ end
130
+ link.value = txt
131
+ link
132
+ else
133
+ variable_link(:code, code, txt, code)
134
+ end
135
+ end
136
+ def code_prescription(model)
137
+ if code = model.code(:prescription)
138
+ span = HtmlGrid::Span.new(model, @session, self)
139
+ if code.value
140
+ span.value = @lookandfeel.lookup(:prescription_needed)
141
+ span.css_class = 'prescription'
142
+ else
143
+ span.value = @lookandfeel.lookup(:prescription_free)
144
+ span.css_class = 'otc'
145
+ end
146
+ span
147
+ end
148
+ end
149
+ def compose_empty_list(offset)
150
+ if(key = @model.error)
151
+ fill_row(offset, key, 'warn')
152
+ else
153
+ super(offset, 'info')
154
+ end
155
+ end
156
+ def compose_list(model=@model, offset=[0,0])
157
+ code = @session.persistent_user_input(:code)
158
+ if(model.overflow?)
159
+ offset = compose_row(display_switcher(model), offset,
160
+ {'id' => 'display-switcher'})
161
+ end
162
+ @model.each { |part|
163
+ ccode = atc_code(part.atc)
164
+ offset = compose_subheader(part, offset,
165
+ model.overflow? && ccode == code)
166
+ if(@model.show_details? || (ccode == code))
167
+ offset = super(part, offset)
168
+ end
169
+ }
170
+ end
171
+ def compose_row(content, offset, attrs={})
172
+ @grid.add(content, *offset)
173
+ @grid.set_colspan(offset.at(0), offset.at(1), full_colspan)
174
+ @grid.set_row_attributes(attrs, offset.at(1), 1)
175
+ resolve_offset(offset, OFFSET_STEP)
176
+ end
177
+ def compose_subheader(model, offset, selected=false)
178
+ attrs = {'class' => 'groupheader'}
179
+ if(selected)
180
+ attrs.store('id', 'selected')
181
+ end
182
+ compose_row(atc(model), offset, attrs)
183
+ end
184
+ def ddd_link(atc)
185
+ while(atc && !atc.interesting? && (code = atc.parent_code))
186
+ atc = ODDB::Drugs::Atc.find_by_code(code)
187
+ end
188
+ if(atc && atc.interesting?)
189
+ link = HtmlGrid::Link.new(:who_ddd, atc, @session, self)
190
+ link.href = @lookandfeel._event_url(:ddd, [:code, atc.code])
191
+ link.css_class = 'who-ddd square'
192
+ link
193
+ end
194
+ end
195
+ def display_switcher(model)
196
+ disp = @session.cookie_set_or_get(:display)
197
+ disp = (disp == 'paged') ? 'grouped' : 'paged'
198
+ link = variable_link(:display, disp,
199
+ @lookandfeel.lookup("display_#{disp}"))
200
+ link
201
+ end
202
+ def ikscat(model)
203
+ span = HtmlGrid::Span.new(model, @session, self)
204
+ span.value = code = model.ikscat.to_s
205
+ if(code =~ /[AB]/)
206
+ span.css_class = 'prescription'
207
+ else
208
+ span.css_class = 'otc'
209
+ end
210
+ span
211
+ end
212
+ def infos_local(model)
213
+ code = model.code(:cid)
214
+ span = HtmlGrid::Span.new(model, @session, self)
215
+ span.css_id = "package_infos#{code}"
216
+ infos = [ code_festbetragsgruppe(model),
217
+ code_festbetragsstufe(model), code_zuzahlungsbefreit(model),
218
+ code_prescription(model) ].compact
219
+ unless infos.empty?
220
+ span.value = infos.zip(Array.new(infos.size - 1, ' / '))
221
+ span.dojo_tooltip = @lookandfeel._event_url(:package_infos,
222
+ [:cid, code])
223
+ span
224
+ end
225
+ end
226
+ def infos_remote(model)
227
+ span = HtmlGrid::Span.new(model, @session, self)
228
+ infos = [ ikscat(model) ]
229
+ uid = model.uid
230
+ if(model.sl_entry)
231
+ infos.unshift(@lookandfeel.lookup(:ch_sl))
232
+ end
233
+ span.css_id = "package_infos#{uid}"
234
+ span.dojo_tooltip = @lookandfeel._event_url(:remote_infos,
235
+ [:uid, uid])
236
+ span.value = infos.zip(Array.new(infos.size - 1, ' / '))
237
+ span
238
+ end
239
+ def package_infos(model)
240
+ if(model.is_a?(Remote::Drugs::Package))
241
+ infos_remote(model)
242
+ else
243
+ infos_local(model)
244
+ end
245
+ end
246
+ def query_args
247
+ [:dstype, @model.dstype]
248
+ end
249
+ def variable_link(key, value, text, anchor=nil)
250
+ link = HtmlGrid::Link.new(key, @model, @session, self)
251
+ args = @session.state.direct_event
252
+ event = args.shift
253
+ args.push(key, value)
254
+ link.href = @lookandfeel._event_url(event, args, anchor)
255
+ link.value = text
256
+ link
257
+ end
258
+ end
259
+ class ResultComposite < HtmlGrid::DivComposite
260
+ include HtmlGrid::ErrorMessage
261
+ COMPONENTS = {
262
+ [0,0] => :title_found,
263
+ [0,1] => :export_cvs,
264
+ [0,2] => "explain_compare",
265
+ [0,3] => InlineSearch,
266
+ [0,4] => Packages,
267
+ [0,5] => Legend,
268
+ }
269
+ CSS_ID_MAP = ['result-found', 'result-search', 'explain-compare',
270
+ 'result-search', 'result-list', 'legend' ]
271
+ CSS_MAP = { 0 => 'lefthand', 2 => 'before-searchbar', 4 => 'result' }
272
+ def init
273
+ super
274
+ error_message
275
+ end
276
+ def export_cvs(model)
277
+ button = HtmlGrid::Button.new(:export_csv, model, @session, self)
278
+ query = @session.persistent_user_input(:query)
279
+ dstype = @session.persistent_user_input(:dstype) || ODDB.config.default_dstype
280
+ url = @lookandfeel._event_url(:proceed_export,
281
+ [ :query, query, :dstype, dstype ])
282
+ button.onclick = "location.href='#{url}';"
283
+ button
284
+ end
285
+ def title_found(model)
286
+ @lookandfeel.lookup(:title_found, @model.query, @model.total)
287
+ end
288
+ end
289
+ class Result < Template
290
+ CONTENT = ResultComposite
291
+ JAVASCRIPTS = ['opener']
292
+ end
293
+ end
294
+ end
295
+ end
296
+ end
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::Drugs::Search -- de.oddb.org -- 12.12.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/view/search'
5
+ require 'oddb/html/view/navigation'
6
+
7
+ module ODDB
8
+ module Html
9
+ module View
10
+ module Drugs
11
+ class Search < View::Search
12
+ COMPONENTS = {
13
+ [0,0] => 'dstype',
14
+ [0,1] => :dstype,
15
+ [0,2] => :query,
16
+ [0,3] => :submit,
17
+ [1,3] => :reset,
18
+ [0,4] => "explain_search",
19
+ [0,5] => :package_count,
20
+ [2,5] => Navigation,
21
+ [0,6] => :social_bookmarks,
22
+ [0,7] => :screencast,
23
+ }
24
+ CSS_MAP = { 4 => "explain", 5 => "explain links",
25
+ 6 => "explain", 7 => "explain" }
26
+ def package_count(model)
27
+ ODDB::Drugs::Package.count
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::Drugs::Template -- de.oddb.org -- 27.10.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/view/template'
5
+
6
+ module ODDB
7
+ module Html
8
+ module View
9
+ module Drugs
10
+ class Template < View::Template
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::Foot -- de.oddb.org -- 02.11.2006 -- hwyss@ywesee.com
3
+
4
+ require 'htmlgrid/divcomposite'
5
+ require 'oddb/html/view/navigation'
6
+
7
+ module ODDB
8
+ module Html
9
+ module View
10
+ class Foot < HtmlGrid::DivComposite
11
+ COMPONENTS = {
12
+ [0,0] => HelpLinks,
13
+ [0,1] => :copyright,
14
+ }
15
+ CSS_MAP = ['navigation', 'links']
16
+ def copyright(model)
17
+ [ lgpl_license(model), ' ', Time.now.year, ', ',
18
+ ywesee_link(model), ', ', oddb_version(model) ]
19
+ end
20
+ def lgpl_license(model)
21
+ link = HtmlGrid::Link.new(:lgpl_license, model, @session, self)
22
+ link.href = 'http://www.gnu.org/copyleft/lesser.html'
23
+ link
24
+ end
25
+ def oddb_version(model)
26
+ link = HtmlGrid::Link.new(:oddb_version, model, @session, self)
27
+ link.href = 'http://scm.ywesee.com/?p=de.oddb.org;a=summary'
28
+ link.set_attribute('title', ODDB_VERSION)
29
+ link
30
+ end
31
+ def ywesee_link(model)
32
+ link = HtmlGrid::Link.new(:ywesee, model, @session, self)
33
+ link.href = 'http://www.ywesee.com'
34
+ link
35
+ end
36
+ end
37
+ class NavigationFoot < HtmlGrid::DivComposite
38
+ COMPONENTS = {
39
+ [0,0] => Navigation,
40
+ [0,1] => CountryLinks,
41
+ }
42
+ CSS_MAP = ['navigation', 'links']
43
+ def init
44
+ if(@lookandfeel.disabled? :country_links)
45
+ components.update([0,1] => "&nbsp;")
46
+ end
47
+ super
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end