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,95 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::Drugs::Compare -- de.oddb.org -- 14.02.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/view/google'
5
+ require 'oddb/html/view/list'
6
+ require 'oddb/html/view/search'
7
+ require 'oddb/html/view/snapback'
8
+ require 'oddb/html/view/drugs/legend'
9
+ require 'oddb/html/view/drugs/package'
10
+ require 'oddb/html/view/drugs/products'
11
+ require 'oddb/html/view/drugs/template'
12
+
13
+ module ODDB
14
+ module Html
15
+ module View
16
+ module Drugs
17
+ class CompareList < View::List
18
+ include PackageMethods
19
+ include ProductMethods
20
+ include View::Google
21
+ COMPONENTS = {
22
+ [0,0] => :product,
23
+ [1,0] => :company,
24
+ [2,0] => :active_agents,
25
+ [3,0] => :size,
26
+ [4,0] => :price_exfactory,
27
+ [5,0] => :price_public,
28
+ [6,0] => :ddd_prices,
29
+ [7,0] => :difference,
30
+ [8,0] => :google,
31
+ }
32
+ css_map = {}
33
+ COMPONENTS.each { |key, val|
34
+ css_map.store(key, val.to_s)
35
+ }
36
+ CSS_MAP = css_map
37
+ CSS_HEAD_MAP = css_map
38
+ EMPTY_LIST_KEY = :empty_comparison
39
+ def compose_header(offset=[0,0])
40
+ offset = super
41
+ mdl = @model.origin
42
+ _compose(mdl, offset)
43
+ css = ['origin', row_css(mdl, nil)].compact.join(' ')
44
+ @grid.set_row_attributes({'class' => css}, offset.at(1))
45
+ resolve_offset(offset, self::class::OFFSET_STEP)
46
+ end
47
+ def difference(model)
48
+ if(model.respond_to?(:difference) && (difference = model.difference))
49
+ span = HtmlGrid::Span.new(model, @session, self)
50
+ if(difference < 0)
51
+ span.css_class = 'less'
52
+ elsif(difference > 0)
53
+ span.css_class = 'more'
54
+ else
55
+ span.css_class = 'same'
56
+ end
57
+ span.value = sprintf("%+2.1f%%", difference)
58
+ span
59
+ end
60
+ end
61
+ def query_key
62
+ @model.origin.is_a?(Remote::Drugs::Package) ? :uid : :cid
63
+ end
64
+ end
65
+ class CompareComposite < HtmlGrid::DivComposite
66
+ include Snapback
67
+ COMPONENTS = {
68
+ [0,0] => :snapback,
69
+ [0,1] => "explain_compare",
70
+ [0,2] => InlineSearch,
71
+ [0,3] => CompareList,
72
+ [0,4] => Legend,
73
+ }
74
+ CSS_ID_MAP = [ 'snapback', 'explain-compare', 'result-search',
75
+ 'compare-list', 'legend' ]
76
+ CSS_MAP = { 1 => 'before-searchbar', 3 => 'result' }
77
+ def comparison_for(model)
78
+ @lookandfeel.lookup(:comparison_for,
79
+ model.origin.name.send(@session.language))
80
+ end
81
+ def snapback(model)
82
+ [ super, @lookandfeel.lookup(:breadcrumb_divider),
83
+ comparison_for(model)]
84
+ end
85
+ end
86
+ class Compare < Template
87
+ CONTENT = CompareComposite
88
+ def _title
89
+ super[0..-2].push(@model.origin.name.send(@session.language))
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::DownloadExport -- de.oddb.org -- 29.07.2008 -- hwyss@ywesee.com
3
+
4
+ require 'htmlgrid/component'
5
+ require 'oddb/export/csv'
6
+
7
+ module ODDB
8
+ module Html
9
+ module View
10
+ module Drugs
11
+ class DownloadExport < HtmlGrid::Component
12
+ def http_headers
13
+ {
14
+ "Content-Type" => "text/csv",
15
+ "Cache-Control" => "no-cache, max-age=3600, must-revalidate",
16
+ "Content-Disposition" => "attachment; filename=#{@model.filename}",
17
+ "Refresh" => "0; URL=#{@lookandfeel._event_url(:home)}",
18
+ }
19
+ end
20
+ def to_html(context)
21
+ Export::Csv::Packages.export @model, @lookandfeel.csv_components,
22
+ @session.language
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::Drugs::Fachinfo -- de.oddb.org -- 30.10.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/view/document'
5
+ require 'oddb/html/view/drugs/template'
6
+
7
+ module ODDB
8
+ module Html
9
+ module View
10
+ module Drugs
11
+ class FachinfoComposite < HtmlGrid::DivComposite
12
+ include Snapback
13
+ COMPONENTS = {
14
+ [0,0] => :snapback,
15
+ [0,1] => InlineSearch,
16
+ [0,2] => :name,
17
+ [0,3] => :chapters,
18
+ [0,4] => :document,
19
+ }
20
+ CSS_ID_MAP = [ 'snapback', 'result-search', 'title', 'chapters' ]
21
+ CSS_MAP = { 0 => 'before-searchbar' }
22
+ def document(model)
23
+ if((fi = model.fachinfo) && (doc = fi.send(@session.language)))
24
+ Document.new(doc, @session, self)
25
+ end
26
+ end
27
+ def chapters(model)
28
+ if((fi = model.fachinfo) && (doc = fi.send(@session.language)))
29
+ ChapterNames.new(:fachinfo, doc, @session, self)
30
+ end
31
+ end
32
+ end
33
+ class Fachinfo < Template
34
+ CONTENT = FachinfoComposite
35
+ def _title
36
+ name = @model.name.send(@session.language)
37
+ if name.nil? && @model.respond_to?(:product)
38
+ name = @model.product.name.send(@session.language)
39
+ end
40
+ super.push name
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,231 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::Drugs::Feedback -- de.oddb.org -- 06.12.2007 -- hwyss@ywesee.com
3
+
4
+ require 'htmlgrid/errormessage'
5
+ require 'htmlgrid/form'
6
+ require 'htmlgrid/infomessage'
7
+ require 'htmlgrid/inputradio'
8
+ require 'htmlgrid/labeltext'
9
+ require 'htmlgrid/textarea'
10
+ require 'oddb/html/view/drugs/package'
11
+ require 'oddb/html/view/drugs/template'
12
+ require 'oddb/html/view/list'
13
+ require 'oddb/html/view/search'
14
+ require 'oddb/html/view/snapback'
15
+
16
+ module ODDB
17
+ module Html
18
+ module View
19
+ module Drugs
20
+ class FeedbackList < List
21
+ class << self
22
+ def boolean ypos, key
23
+ components.update( [0, ypos] => key )
24
+ define_method(key) { |model| boolean model.send(key) }
25
+ end
26
+ def components
27
+ @components ||= {}
28
+ end
29
+ end
30
+ COLSPAN_MAP = { [0,0] => 2 }
31
+ COMPONENTS = {
32
+ [0,0] => :name,
33
+ [0,1] => :email,
34
+ [0,2] => :message,
35
+ }
36
+ boolean 3, :item_good_experience
37
+ boolean 4, :item_recommended
38
+ boolean 5, :item_good_impression
39
+ boolean 6, :item_helps
40
+ CSS_MAP = {
41
+ [0,2] => 'top',
42
+ }
43
+ LABELS = true
44
+ LOOKANDFEEL_MAP = {
45
+ :message => :feedback,
46
+ }
47
+ OFFSET_STEP = [0,7]
48
+ OMIT_HEADER = true
49
+ def init
50
+ components.update self.class.components
51
+ super
52
+ end
53
+ def boolean(bool)
54
+ div = HtmlGrid::Div.new(bool, @session, self)
55
+ css = 'square '
56
+ if(bool)
57
+ div.value = '+'
58
+ css << 'plus'
59
+ else
60
+ div.value = '-'
61
+ css << 'minus'
62
+ end
63
+ div.css_class = css
64
+ div.label = true
65
+ div
66
+ end
67
+ def email(model)
68
+ value = HtmlGrid::Value.new(:email, model, @session, self)
69
+ if(!model.email_public)
70
+ value.value = @lookandfeel.lookup(:email_not_public)
71
+ end
72
+ value
73
+ end
74
+ def name(model)
75
+ @lookandfeel.lookup(:feedback_by, model.name,
76
+ model.time.strftime("%A, %d. %B %Y - %H:%M"))
77
+ end
78
+ end
79
+ class FeedbackForm < HtmlGrid::Form
80
+ class << self
81
+ def radio ypos, key
82
+ key = key.to_sym
83
+ truekey = "#{key}_true"
84
+ falsekey = "#{key}_false"
85
+ components.update( [0, ypos] => key,
86
+ [1, ypos, 0] => truekey.to_sym,
87
+ [2, ypos, 1] => truekey,
88
+ [1, ypos + 1, 0] => falsekey.to_sym,
89
+ [2, ypos + 1, 1] => falsekey)
90
+ css_map.update( [1, ypos] => 'radio', [1, ypos + 1] => 'radio')
91
+ symbol_map.store(key, HtmlGrid::LabelText)
92
+ define_method(truekey) { |model| radio_true(key) }
93
+ define_method(falsekey) { |model| radio_false(key) }
94
+ end
95
+ def components
96
+ @components ||= {}
97
+ end
98
+ def css_map
99
+ @css_map ||= {}
100
+ end
101
+ def symbol_map
102
+ @symbol_map ||= {}
103
+ end
104
+ end
105
+ COMPONENTS = {
106
+ [0,0] => :name,
107
+ [0,1] => :email,
108
+ [0,4] => :message,
109
+ }
110
+ radio 2, :email_public
111
+ radio 5, :item_good_experience
112
+ radio 7, :item_recommended
113
+ radio 9, :item_good_impression
114
+ radio 11, :item_helps
115
+ include HtmlGrid::ErrorMessage
116
+ include HtmlGrid::InfoMessage
117
+ CSS_MAP = {
118
+ [0,4] => 'top',
119
+ }
120
+ COLSPAN_MAP = {
121
+ [1,0] => 2,
122
+ [1,1] => 2,
123
+ [1,4] => 2,
124
+ [1,13] => 2,
125
+ }
126
+ CSS_CLASS = 'composite top'
127
+ LABELS = true
128
+ LOOKANDFEEL_MAP = {
129
+ :message => :feedback_message,
130
+ }
131
+ EVENT = :update
132
+ LEGACY_INTERFACE = false
133
+ SYMBOL_MAP = {
134
+ :email_public => HtmlGrid::LabelText,
135
+ }
136
+ def init
137
+ components.update self.class.components
138
+ symbol_map.update self.class.symbol_map
139
+ css_map.update self.class.css_map
140
+ if(@session.passed_turing_test?)
141
+ components.update([1,13]=>:submit)
142
+ else
143
+ components.update([0,13]=>:captcha, [1,14]=>:captcha_image, [1,15]=>:submit)
144
+ colspan_map.update([1,14]=>2, [1,15]=>2)
145
+ end
146
+ super
147
+ error_message
148
+ info_message
149
+ end
150
+ def challenge
151
+ @challenge ||= @lookandfeel.generate_challenge
152
+ end
153
+ def captcha(model)
154
+ name = "captcha[#{challenge.id}]"
155
+ HtmlGrid::InputText.new(name, model, @session, self)
156
+ end
157
+ def captcha_image(model)
158
+ img = HtmlGrid::Image.new(:file, challenge, @session, self)
159
+ img.attributes["src"] = File.join('', 'captcha', challenge.file)
160
+ img
161
+ end
162
+ def email_public_false(model)
163
+ radio_false(:email_public)
164
+ end
165
+ def email_public_true(model)
166
+ radio_true(:email_public)
167
+ end
168
+ def radio_true(true_key)
169
+ radio = HtmlGrid::InputRadio.new(true_key, model, @session, self)
170
+ if(model.send(true_key) || @session.user_input(true_key))
171
+ radio.set_attribute('checked', true)
172
+ end
173
+ radio.value = '1'
174
+ radio.label = false
175
+ radio
176
+ end
177
+ def radio_false(false_key)
178
+ radio = HtmlGrid::InputRadio.new(false_key, model, @session, self)
179
+ if(model.send(false_key).eql?(false) \
180
+ || @session.user_input(false_key).eql?(false))
181
+ radio.set_attribute('checked', true)
182
+ end
183
+ radio.value = '0'
184
+ radio.label = false
185
+ radio
186
+ end
187
+ def message(model)
188
+ input = HtmlGrid::Textarea.new(:message, model, @session, self)
189
+ input.set_attribute('wrap', true)
190
+ js = "if(this.value.length > 400) { (this.value = this.value.substr(0,400))}"
191
+ input.set_attribute('onKeypress', js)
192
+ input.label = true
193
+ input
194
+ end
195
+ end
196
+ class FeedbackComposite < HtmlGrid::DivComposite
197
+ include Snapback
198
+ include Drugs::PackageMethods
199
+ COMPONENTS = {
200
+ [0,0] => :snapback,
201
+ [0,1] => InlineSearch,
202
+ [0,2] => :feedback_for,
203
+ [0,3] => :feedbacks,
204
+ [0,4] => :feedback_form,
205
+ }
206
+ CSS_ID_MAP = [ 'snapback', 'result-search', 'title', 'feedbacks' ]
207
+ CSS_MAP = {
208
+ 0 => 'before-searchbar',
209
+ 3 => 'mezzo righthand',
210
+ 4 => 'mezzo lefthand',
211
+ }
212
+ def feedbacks(model)
213
+ FeedbackList.new(model.feedbacks.reverse, @session, self)
214
+ end
215
+ def feedback_for(model)
216
+ @lookandfeel.lookup(:feedback_for, model.name, size(model))
217
+ end
218
+ def feedback_form(model)
219
+ FeedbackForm.new(model.current, @session, self)
220
+ end
221
+ end
222
+ class Feedback < Template
223
+ CONTENT = FeedbackComposite
224
+ def _title
225
+ super[0..-2].push(@model.name.send(@session.language))
226
+ end
227
+ end
228
+ end
229
+ end
230
+ end
231
+ end
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::Drugs::Init -- de.oddb.org -- 27.10.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/view/drugs/template'
5
+ require 'oddb/html/view/drugs/search'
6
+ require 'oddb/html/view/google_ads'
7
+ require 'oddb/html/view/rss_preview'
8
+
9
+ module ODDB
10
+ module Html
11
+ module View
12
+ module Drugs
13
+ class Init < Template
14
+ COMPONENTS = {
15
+ [0,0] => :head,
16
+ [0,1] => :sidebar_left,
17
+ [0,2] => :sidebar_right,
18
+ [0,3] => :content,
19
+ [0,4] => NavigationFoot,
20
+ [0,5] => :foot,
21
+ }
22
+ CONTENT = Search
23
+ CSS_MAP = { 1 => 'sidebar lefthand', 2 => 'sidebar righthand' }
24
+ CSS_ID_MAP = { 0 => 'head', 3 => 'home-search',
25
+ 4 => 'navigation', 5 => 'foot' }
26
+ HEAD = WelcomeHead
27
+ def sidebar_left(model)
28
+ if(@lookandfeel.enabled?(:google_ads) && !@session.logged_in?)
29
+ GoogleAds.new
30
+ end
31
+ end
32
+ def sidebar_right(model)
33
+ if(@lookandfeel.enabled?(:feedback_rss))
34
+ RssFeedbacks.new ODDB::Util::Feedback.newest, @session, self
35
+ end
36
+ end
37
+ def other_html_headers(context)
38
+ headers = super
39
+ if(@lookandfeel.enabled?(:feedback_rss))
40
+ url = [ 'http:/', @session.server_name, 'rss',
41
+ @session.language, "feedback.rss" ].join('/')
42
+ headers << context.link(:href => url, :type => "application/rss+xml",
43
+ :title => 'feedback.rss', :rel => "alternate")
44
+ end
45
+ headers
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end