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,84 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::PayPal::Collect -- de.oddb.org -- 30.01.2008 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/view/search'
5
+ require 'oddb/html/view/template'
6
+
7
+ module ODDB
8
+ module Html
9
+ module View
10
+ module PayPal
11
+ class ReturnDownloads < HtmlGrid::List
12
+ COMPONENTS = {
13
+ [0,0] => :download_link
14
+ }
15
+ LEGACY_INTERFACE = false
16
+ OMIT_HEADER = true
17
+ STRIPED_BG = false
18
+ def download_link(model)
19
+ if(model.expired?)
20
+ time = model.expiry_time
21
+ timestr = (time) \
22
+ ? time.strftime(@lookandfeel.lookup(:time_format_long)) \
23
+ : @lookandfeel.lookup(:paypal_e_invalid_time)
24
+ @lookandfeel.lookup(:paypal_e_expired, model.text, timestr)
25
+ elsif(@session.allowed?('view', ODDB.config.auth_domain))
26
+ @lookandfeel.lookup(:paypal_explain_poweruser)
27
+ else
28
+ link = HtmlGrid::Link.new(:paypal_explain_login1, model, @session, self)
29
+ link.href = @lookandfeel._event_url(:login)
30
+ [
31
+ @lookandfeel.lookup(:paypal_explain_login0),
32
+ link,
33
+ @lookandfeel.lookup(:paypal_explain_login2),
34
+ ]
35
+ end
36
+ end
37
+ end
38
+ class CollectComposite < HtmlGrid::DivComposite
39
+ COMPONENTS = {
40
+ [0,0] => InlineSearch,
41
+ [0,1] => :title,
42
+ [0,2] => :message,
43
+ [0,3] => :download_links,
44
+ }
45
+ CSS_ID_MAP = ['result-search', 'title']
46
+ CSS_MAP = { 2 => 'explain' }
47
+ LEGACY_INTERFACE = false
48
+ def message(model)
49
+ key = if(model.nil?)
50
+ :paypal_e_missing_invoice
51
+ elsif(model.status == 'completed')
52
+ suffix = @model.items.size == 1 ? @model.types.first : 'p'
53
+ "paypal_msg_succ_#{suffix}"
54
+ else
55
+ :paypal_msg_unconfirmed
56
+ end
57
+ @lookandfeel.lookup key
58
+ end
59
+ def title(model)
60
+ msg = @lookandfeel.lookup("paypal_#{model.status}".downcase) if model
61
+ msg || @lookandfeel.lookup(:paypal_failed)
62
+ end
63
+ def download_links(model)
64
+ if(model && model.status == 'completed')
65
+ ReturnDownloads.new(model.items, @session, self)
66
+ end
67
+ end
68
+ end
69
+ class Collect < Template
70
+ CONTENT = CollectComposite
71
+ def http_headers
72
+ headers = super
73
+ if(@model && !@model.status)
74
+ args = { :invoice => @model.id }
75
+ url = @lookandfeel._event_url(:collect, args)
76
+ headers.store('Refresh', "10; URL=#{url}")
77
+ end
78
+ headers
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::PayPal::Redirect -- de.oddb.org -- 23.01.2008 -- hwyss@ywesee.com
3
+
4
+ require 'htmlgrid/component'
5
+
6
+ module ODDB
7
+ module Html
8
+ module View
9
+ module PayPal
10
+ class Redirect < HtmlGrid::Component
11
+ def http_headers
12
+ invoice = @model.id
13
+ names = @model.items.collect { |item|
14
+ txt = item.text
15
+ case txt
16
+ when 'unlimited access'
17
+ 'Unlimited Access to de.oddb.org for %i days' % item.quantity
18
+ else
19
+ txt
20
+ end
21
+ }.join(' ,')
22
+ ret_url = @lookandfeel._event_url(:collect, :invoice => invoice)
23
+ url = 'https://' << ODDB.config.paypal_server << '/cgi-bin/webscr?' \
24
+ << "business=#{ODDB.config.paypal_receiver}&" \
25
+ << "item_name=#{names}&item_number=#{invoice}&" \
26
+ << "invoice=#{invoice}&custom=de.oddb.org&" \
27
+ << "amount=#{sprintf('%3.2f', model.total_brutto)}&" \
28
+ << 'no_shipping=1&no_note=1&currency_code=EUR&' \
29
+ << "return=#{ret_url}&" \
30
+ << "cancel_return=#{@lookandfeel.base_url}&" \
31
+ << "image_url=https://www.generika.cc/images/oddb_paypal.jpg"
32
+ if((user = @session.user).is_a?(Util::KnownUser))
33
+ url << "&email=#{user.email}&first_name=#{user.name_first}" \
34
+ << "&last_name=#{user.name_last}&address1=#{user.address}" \
35
+ << "&city=#{user.city}&zip=#{user.plz}" \
36
+ << "&redirect_cmd=_xclick&cmd=_ext-enter"
37
+ else
38
+ url << '&cmd=_xclick'
39
+ end
40
+ {
41
+ 'Location' => url,
42
+ }
43
+ end
44
+ def to_html(context)
45
+ ''
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,106 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::PayPal::ExportForm -- de.oddb.org -- 28.07.2008 -- hwyss@ywesee.com
3
+
4
+ module ODDB
5
+ module Html
6
+ module View
7
+ module PayPal
8
+ class InvoiceItems < HtmlGrid::List
9
+ COMPONENTS = {
10
+ [0,0] => :quantity,
11
+ [1,0] => :text,
12
+ [2,0] => :price,
13
+ }
14
+ CSS_CLASS = 'invoice items'
15
+ CSS_MAP = {
16
+ [0,0] => 'right',
17
+ [1,0] => '',
18
+ [2,0] => 'right',
19
+ }
20
+ LEGACY_INTERFACE = false
21
+ OMIT_HEADER = true
22
+ STRIPED_BG = false
23
+ def compose_footer(matrix)
24
+ total_net = [nil, @lookandfeel.lookup(:total_netto), nil, total_netto()]
25
+ vat = [nil, @lookandfeel.lookup(:vat), nil, vat()]
26
+ total = [nil, @lookandfeel.lookup(:total_brutto), nil, total_brutto()]
27
+ @grid.add(total_net, *matrix)
28
+ @grid.set_row_attributes({'class' => 'bg'}, matrix.at(1))
29
+ @grid.add_style('right', *resolve_offset(matrix, [2,0]))
30
+ matrix = resolve_offset(matrix, [0,1])
31
+ @grid.add(vat, *matrix)
32
+ @grid.set_row_attributes({'class' => 'bg'}, matrix.at(1))
33
+ @grid.add_style('right', *resolve_offset(matrix, [2,0]))
34
+ matrix = resolve_offset(matrix, [0,1])
35
+ @grid.add(total, *matrix)
36
+ @grid.set_row_attributes({'class' => 'bg'}, matrix.at(1))
37
+ @grid.add_style('right total', *resolve_offset(matrix, [2,0]))
38
+ end
39
+ def text(model)
40
+ model.text
41
+ end
42
+ def format_price(price, currency=nil)
43
+ @lookandfeel.format_price(price.to_f * 100.0, currency)
44
+ end
45
+ def price(model)
46
+ format_price(model.total_netto)
47
+ end
48
+ def quantity(model)
49
+ model.quantity.to_i.to_s << ' x'
50
+ end
51
+ def total_brutto
52
+ format_price(@model.inject(0) { |inj, item|
53
+ inj + item.total_brutto
54
+ }, 'EUR')
55
+ end
56
+ def total_netto
57
+ format_price @model.inject(0) { |inj, item|
58
+ inj + item.total_netto
59
+ }
60
+ end
61
+ def vat
62
+ format_price @model.inject(0) { |inj, item|
63
+ inj + item.vat
64
+ }
65
+ end
66
+ end
67
+ class RegisterForm < HtmlGrid::Form
68
+ include HtmlGrid::ErrorMessage
69
+ COMPONENTS = {
70
+ [0,0] => :email,
71
+ [0,1] => :pass,
72
+ [3,1] => :confirm_pass,
73
+ [0,2] => :salutation,
74
+ [0,3] => :name_last,
75
+ [0,4] => :name_first,
76
+ [1,5] => :submit,
77
+ }
78
+ CSS_CLASS = 'invoice'
79
+ EVENT = :checkout
80
+ LABELS = true
81
+ LEGACY_INTERFACE = false
82
+ SYMBOL_MAP = {
83
+ :salutation => HtmlGrid::Select,
84
+ :pass => HtmlGrid::Pass,
85
+ :confirm_pass => HtmlGrid::Pass,
86
+ }
87
+ def init
88
+ @model = @session.user
89
+ super
90
+ error_message
91
+ end
92
+ def email(model, session=@session)
93
+ input = HtmlGrid::InputText.new(:email, model, @session, self)
94
+ url = @lookandfeel._event_url(:ajax_autofill, {:email => nil})
95
+ if(@session.logged_in?)
96
+ input.set_attribute('disabled', true)
97
+ else
98
+ input.set_attribute('onChange', "autofill(this.form, 'email', '#{url}');")
99
+ end
100
+ input
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::RegisterExport -- de.oddb.org -- 28.07.2008 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/view/template'
5
+ require 'oddb/html/view/paypal/register_form'
6
+
7
+ module ODDB
8
+ module Html
9
+ module View
10
+ class RegisterExportComposite < HtmlGrid::DivComposite
11
+ COMPONENTS = {
12
+ [0,0] => "export",
13
+ [0,1] => "export_descr",
14
+ [0,2] => PayPal::RegisterForm,
15
+ [1,2] => :invoice_items,
16
+ }
17
+ CSS_ID_MAP = ['title']
18
+ CSS_MAP = { 1 => 'explain' }
19
+ def invoice_items(model)
20
+ PayPal::InvoiceItems.new(model.items, @session, self)
21
+ end
22
+ end
23
+ class RegisterExport < Template
24
+ JAVASCRIPTS = ['autofill']
25
+ CONTENT = RegisterExportComposite
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::RegisterPowerUser -- de.oddb.org -- 21.01.2008 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/view/template'
5
+ require 'oddb/html/view/paypal/register_form'
6
+
7
+ module ODDB
8
+ module Html
9
+ module View
10
+ class RegisterPowerUserComposite < HtmlGrid::DivComposite
11
+ COMPONENTS = {
12
+ [0,0] => "poweruser",
13
+ [0,1] => "poweruser_descr",
14
+ [0,2] => PayPal::RegisterForm,
15
+ [1,2] => :invoice_items,
16
+ }
17
+ CSS_ID_MAP = ['title']
18
+ CSS_MAP = { 1 => 'explain' }
19
+ def invoice_items(model)
20
+ PayPal::InvoiceItems.new(model.items, @session, self)
21
+ end
22
+ end
23
+ class RegisterPowerUser < Template
24
+ JAVASCRIPTS = ['autofill']
25
+ CONTENT = RegisterPowerUserComposite
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env ruby
2
+ # View::Rss::Feedback -- oddb.org -- 29.06.2007 -- hwyss@ywesee.com
3
+
4
+ require 'rss/maker'
5
+ require 'oddb/html/view/drugs/feedback'
6
+
7
+ module ODDB
8
+ module Html
9
+ module View
10
+ module Rss
11
+ class FeedbackTemplate < HtmlGrid::DivTemplate
12
+ COMPONENTS = {
13
+ [0,0] => :feedback,
14
+ [0,1] => :feedback_feed_link,
15
+ }
16
+ def feedback(model)
17
+ View::Drugs::FeedbackList.new([model], @session, self)
18
+ end
19
+ def feedback_feed_link(model)
20
+ code = model.item.code(:cid)
21
+ link = HtmlGrid::Link.new(:feedback_feed_link, model, @session, self)
22
+ link.href = @lookandfeel._event_url(:feedbacks, :cid => code)
23
+ link
24
+ end
25
+ end
26
+ class Feedback < HtmlGrid::Component
27
+ include Drugs::PackageMethods
28
+ HTTP_HEADERS = {
29
+ "Content-Type" => "application/rss+xml",
30
+ }
31
+ def to_html(context)
32
+ RSS::Maker.make('2.0') { |feed|
33
+ feed.channel.title = @lookandfeel.lookup(:feedback_feed_title)
34
+ feed.channel.link = @lookandfeel._event_url(:home)
35
+ feed.channel.description = @lookandfeel.lookup(:feedback_feed_description)
36
+ feed.channel.language = @session.language
37
+ feed.encoding = 'UTF-8'
38
+ feed.xml_stylesheets.new_xml_stylesheet.href = @lookandfeel.resource(:css)
39
+ size = @model.size
40
+ @model.each_with_index { |feedback, idx|
41
+ if(parent = feedback.item)
42
+ item = feed.items.new_item
43
+ item.author = ODDB.config.server_name
44
+ title = @lookandfeel.lookup(:feedback_for, parent.name, size(parent))
45
+ item.title = title
46
+
47
+ url = @lookandfeel._event_url(:feedback,
48
+ [:cid, parent.code(:cid),
49
+ :index, size - idx])
50
+ item.guid.content = item.link = url
51
+ item.guid.isPermaLink = true
52
+ item.date = feedback.time
53
+
54
+ comp = FeedbackTemplate.new(feedback, @session, self)
55
+ item.description = comp.to_html(context)
56
+ end
57
+ }
58
+ }.to_s
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::RssPreview -- de.oddb.org -- 12.12.2007 -- hwyss@ywesee.com
3
+
4
+ require 'htmlgrid/divcomposite'
5
+ require 'htmlgrid/divlist'
6
+ require 'oddb/html/view/drugs/package'
7
+
8
+ module ODDB
9
+ module Html
10
+ module View
11
+ class RssPreview < HtmlGrid::DivComposite
12
+ CSS_MAP = ['heading']
13
+ def rss_image(model)
14
+ if(link = title(model))
15
+ img = HtmlGrid::Image.new(:rss_img, model, @session, self)
16
+ img.attributes['src'] = @lookandfeel.resource_global(:rss_img)
17
+ link.value = img
18
+ link
19
+ end
20
+ end
21
+ end
22
+ class RssFeedbackList < HtmlGrid::DivList
23
+ include Drugs::PackageMethods
24
+ COMPONENTS = {
25
+ [0,0] => :heading,
26
+ }
27
+ def heading(model)
28
+ if(parent = model.item)
29
+ link = HtmlGrid::Link.new(:feedback, model, @session, self)
30
+ link.href = @lookandfeel._event_url(:feedback, :cid => parent.code(:cid))
31
+ link.value = @lookandfeel.lookup :feedback_preview, parent.name, size(parent)
32
+ link
33
+ end
34
+ end
35
+ end
36
+ class RssFeedbacks < RssPreview
37
+ COMPONENTS = {
38
+ [0,0] => :rss_image,
39
+ [1,0] => :title,
40
+ [0,1] => RssFeedbackList,
41
+ }
42
+ def title(model)
43
+ if(feedback = model.first)
44
+ link = HtmlGrid::Link.new(:feedback_feed_title, model, @session, self)
45
+ link.href = url = [ 'http:/', @session.server_name, 'rss',
46
+ @session.language, "feedback.rss" ].join('/')
47
+ link.css_class = 'rss-title'
48
+ link
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,104 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::Search -- de.oddb.org -- 07.11.2006 -- hwyss@ywesee.com
3
+
4
+ require 'htmlgrid/divform'
5
+ require 'htmlgrid/reset'
6
+ require 'htmlgrid/select'
7
+
8
+ module ODDB
9
+ module Html
10
+ module View
11
+ module SearchMethods
12
+ def dstype(model)
13
+ select = HtmlGrid::Select.new(:dstype, model, @session, self)
14
+ select.set_attribute('onChange', 'this.form.onsubmit();')
15
+ select.selected = @session.persistent_user_input(:dstype)
16
+ select
17
+ end
18
+ end
19
+ class SearchBar < HtmlGrid::InputText
20
+ def init
21
+ super
22
+ self.onload = "document.getElementById('searchbar').focus();"
23
+ val = @lookandfeel.lookup(:query_info)
24
+ txt_val = @session.persistent_user_input(@name) || val
25
+ @attributes.store('value', txt_val)
26
+ @attributes.update({
27
+ 'onFocus' => "if (value=='#{val}') { value='' };",
28
+ 'onBlur' => "if (value=='') { value='#{val}' };",
29
+ 'id' => "searchbar",
30
+ })
31
+ args = [@name, '']
32
+ submit = @lookandfeel._event_url(@container.event, args)
33
+ script = "if(#{@name}.value!='#{val}'){"
34
+ script << "var href = '#{submit}'"
35
+ script << "+encodeURIComponent(#{@name}.value.replace(/\\//, '%2F'));"
36
+ script << "if(this.dstype)"
37
+ script << "href += '/dstype/' + this.dstype.value;"
38
+ #script << "href += '#best_result';"
39
+ script << "document.location.href=href; } return false"
40
+ self.onsubmit = script
41
+ end
42
+ end
43
+ class Search < HtmlGrid::DivForm
44
+ include SearchMethods
45
+ EVENT = :search
46
+ FORM_NAME = 'search'
47
+ COMPONENTS = {
48
+ [0,0] => 'dstype',
49
+ [0,1] => :dstype,
50
+ [0,2] => :query,
51
+ [0,3] => :submit,
52
+ [1,3] => :reset,
53
+ [0,4] => "explain_search",
54
+ [0,5] => :social_bookmarks,
55
+ [0,6] => :screencast,
56
+ }
57
+ SYMBOL_MAP = {
58
+ :query => SearchBar,
59
+ :reset => HtmlGrid::Reset,
60
+ }
61
+ CSS_MAP = {4 => "explain", 6 => "explain"}
62
+ SOCIAL_BOOKMARKS = [
63
+ [ :sb_delicious, "http://del.icio.us/post?url=%s&title=%s" ],
64
+ [ :sb_stumble, "http://www.stumbleupon.com/submit?url=%s&title=%s" ],
65
+ [ :sb_digg, "http://digg.com/submit?phase=2&url=%stitle=%s" ],
66
+ [ :sb_simpy,
67
+ "http://www.simpy.com/simpy/LinkAdd.do?href=%s&note=%s"],
68
+ ]
69
+ def screencast(model)
70
+ if @lookandfeel.enabled?(:screencast)
71
+ link = HtmlGrid::Link.new(:screencast, model, @session, self)
72
+ link.href = @lookandfeel.lookup(:screencast_url)
73
+ link
74
+ end
75
+ end
76
+ def social_bookmarks(model)
77
+ return unless @lookandfeel.enabled?(:social_bookmarks)
78
+ url = @lookandfeel.base_url
79
+ title = escape(@lookandfeel.lookup(:explain_search))
80
+ SOCIAL_BOOKMARKS.collect { |key, fmt|
81
+ span = HtmlGrid::Span.new(model, @session, self)
82
+ link = HtmlGrid::Link.new(key, model, @session, self)
83
+ link.href = sprintf(fmt, url, title)
84
+ span.css_class = 'social'
85
+ span.css_id = key.to_s[3..-1]
86
+ span.value = link
87
+ span
88
+ }
89
+ end
90
+ end
91
+ class InlineSearch < HtmlGrid::DivForm
92
+ include SearchMethods
93
+ EVENT = :search
94
+ COMPONENTS = {
95
+ [0,0] => :query,
96
+ [1,0] => :dstype,
97
+ }
98
+ SYMBOL_MAP = {
99
+ :query => SearchBar,
100
+ }
101
+ end
102
+ end
103
+ end
104
+ end