cyberweb 0.4.174

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of cyberweb might be problematic. Click here for more details.

Files changed (573) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +3259 -0
  3. data/bin/cyberweb +27 -0
  4. data/cyberweb.gemspec +119 -0
  5. data/doc/AUTHORS.md +12 -0
  6. data/doc/CONVENTIONS.md +7 -0
  7. data/doc/CYBERWEB_TUTORIAL.cgi +43 -0
  8. data/doc/DOCUMENTATION_FOR_CYBERSPRAWL.md +50 -0
  9. data/doc/FUTURE_DESIGN_GOAL_CONSIDERATIONS.md +13 -0
  10. data/doc/JQUERY.md +122 -0
  11. data/doc/MOUSE.md +80 -0
  12. data/doc/README.gen +3231 -0
  13. data/doc/RENDER_WEB_BASE.md +46 -0
  14. data/doc/USAGE.md +246 -0
  15. data/doc/configuration/configuration.md +23 -0
  16. data/doc/deprecations.md +32 -0
  17. data/doc/html_characters.md +15 -0
  18. data/doc/todo/TODO_FOR_THE_CYBERWEB_PROJECT.md +1089 -0
  19. data/examples/README.md +4 -0
  20. data/examples/advanced/delayed_update_of_the_body_via_javascript.cgi +38 -0
  21. data/examples/advanced/hybrid_experiment.cgi +108 -0
  22. data/examples/advanced/larger_image_on_mouse_over_example.cgi +35 -0
  23. data/examples/advanced/no_right_click.cgi +26 -0
  24. data/examples/advanced/objectified_html_tags.cgi +35 -0
  25. data/examples/advanced/simple_calculator.cgi +42 -0
  26. data/examples/advanced/simple_form_example.cgi +38 -0
  27. data/examples/css/blue_border.html +28 -0
  28. data/examples/css/caret_colour_example.html +22 -0
  29. data/examples/css/css_border_spacing_example.html +69 -0
  30. data/examples/css/css_bubbles.html +43 -0
  31. data/examples/css/css_clock.html +344 -0
  32. data/examples/css/css_drag_and_drop.html +89 -0
  33. data/examples/css/css_neon_glow_effects.html +317 -0
  34. data/examples/css/css_text_decoration_example.html +70 -0
  35. data/examples/css/css_tooltip.html +44 -0
  36. data/examples/css/fade_in_and_fade_out_effect.html +66 -0
  37. data/examples/css/font_size_examples.html +40 -0
  38. data/examples/css/letter_spacing_example.cgi +36 -0
  39. data/examples/css/meter_example.html +31 -0
  40. data/examples/css/on_mouse_button_pressed.html +41 -0
  41. data/examples/css/planets.html +187 -0
  42. data/examples/css/scale_example.html +25 -0
  43. data/examples/css/shadow_example_in_CSS.cgi +30 -0
  44. data/examples/css/sticky_div_example.html +56 -0
  45. data/examples/css/stitched_div.html +36 -0
  46. data/examples/csv/README.md +1 -0
  47. data/examples/csv/sample.csv +10 -0
  48. data/examples/example1.rb +7 -0
  49. data/examples/flip_card_example/flip_card_example.html +72 -0
  50. data/examples/frames/frame_left.html +1 -0
  51. data/examples/frames/frame_right.html +1 -0
  52. data/examples/html/README.md +1 -0
  53. data/examples/html/abbr_example.html +25 -0
  54. data/examples/html/base64_image_example.html +26 -0
  55. data/examples/html/colour_wheel.html +1389 -0
  56. data/examples/html/column_width_example.html +34 -0
  57. data/examples/html/custom_cursor.html +103 -0
  58. data/examples/html/draggable_paragraph.html +12 -0
  59. data/examples/html/fieldset_example.html +25 -0
  60. data/examples/html/frames_example.html +7 -0
  61. data/examples/html/glyph_example.html +43 -0
  62. data/examples/html/hbox_and_vbox_example.html +65 -0
  63. data/examples/html/href_examples.html +27 -0
  64. data/examples/html/input_autofocus_example.html +16 -0
  65. data/examples/html/larger_image_on_mouse_over_example.html +30 -0
  66. data/examples/html/ordered_and_unordered_bulletsin.html +33 -0
  67. data/examples/html/play_video_example.html +13 -0
  68. data/examples/html/readonly_textarea_example.html +23 -0
  69. data/examples/html/remote_image_example.html +10 -0
  70. data/examples/html/simple_unordered_list.html +16 -0
  71. data/examples/html/table_with_header_example.html +27 -0
  72. data/examples/html/two_columns_flex_example.html +39 -0
  73. data/examples/javascript/README.md +2 -0
  74. data/examples/javascript/arrays/arrays_example_in_javascript.html +16 -0
  75. data/examples/javascript/delay_example/delay_example.html +46 -0
  76. data/examples/javascript/drag_support/drag_support.html +37 -0
  77. data/examples/javascript/jquery_drag_and_drop/drag_and_drop_image_example.html +33 -0
  78. data/examples/javascript/on_click_event_hello_world/on_click_event_hello_world.html +21 -0
  79. data/examples/javascript/rgb_to_hex/rgb_to_hex.html +15 -0
  80. data/examples/javascript/screen_resolution/screen_resolution.html +20 -0
  81. data/examples/javascript/select_everything/select_everything.html +14 -0
  82. data/examples/javascript/write_into_a_file/write_into_a_file.html +39 -0
  83. data/examples/rack/README.md +4 -0
  84. data/examples/rack/example_with_html_template.rb +123 -0
  85. data/examples/rack/example_with_rack_and_cyberweb_showing_how_to_use_images.rb +56 -0
  86. data/examples/rack/hello_world_example_with_rack.rb +45 -0
  87. data/examples/rack/lobster.rb +79 -0
  88. data/examples/rack/rack_env.rb +10 -0
  89. data/examples/rack/standalone_example.rb +26 -0
  90. data/examples/show_greek_letters.rb +3 -0
  91. data/examples/simple/on_click_event_hello_world.cgi +34 -0
  92. data/examples/sinatra/001_your_ip_address_is.rb +8 -0
  93. data/examples/sinatra/002_the_request_object.rb +16 -0
  94. data/examples/sinatra/003_hello_world_example.rb +82 -0
  95. data/examples/sinatra/004_splat_example.rb +10 -0
  96. data/examples/sinatra/005_attachment_example.rb +11 -0
  97. data/examples/sinatra/006_outer_self_example.rb +8 -0
  98. data/examples/sinatra/007_mime_type_example.rb +17 -0
  99. data/examples/sinatra/008_post_example.rb +55 -0
  100. data/examples/table_example.rb +37 -0
  101. data/images/cyberweb_favicon.png +0 -0
  102. data/images/cyberweb_logo.png +0 -0
  103. data/images/cyberweb_theme.png +0 -0
  104. data/lib/cyberweb/and_sinatra_base.rb +9 -0
  105. data/lib/cyberweb/autoinclude.rb +20 -0
  106. data/lib/cyberweb/autoinclude_webobject.rb +14 -0
  107. data/lib/cyberweb/base/base.rb +41 -0
  108. data/lib/cyberweb/base/colours.rb +69 -0
  109. data/lib/cyberweb/base/constants.rb +18 -0
  110. data/lib/cyberweb/base/encoding.rb +19 -0
  111. data/lib/cyberweb/base/misc.rb +239 -0
  112. data/lib/cyberweb/base/reset.rb +23 -0
  113. data/lib/cyberweb/base/save_file.rb +22 -0
  114. data/lib/cyberweb/cascading_style_sheets/README.md +4 -0
  115. data/lib/cyberweb/cascading_style_sheets/admonition.css +33 -0
  116. data/lib/cyberweb/cascading_style_sheets/balloon.css +344 -0
  117. data/lib/cyberweb/cascading_style_sheets/border.css +202 -0
  118. data/lib/cyberweb/cascading_style_sheets/code.css +58 -0
  119. data/lib/cyberweb/cascading_style_sheets/colours.css +476 -0
  120. data/lib/cyberweb/cascading_style_sheets/default.css +1836 -0
  121. data/lib/cyberweb/cascading_style_sheets/div.css +26 -0
  122. data/lib/cyberweb/cascading_style_sheets/fonts.css +365 -0
  123. data/lib/cyberweb/cascading_style_sheets/links.css +207 -0
  124. data/lib/cyberweb/cascading_style_sheets/margin.css +677 -0
  125. data/lib/cyberweb/cascading_style_sheets/menu.css +37 -0
  126. data/lib/cyberweb/cascading_style_sheets/message_boxes.css +48 -0
  127. data/lib/cyberweb/cascading_style_sheets/misc.css +162 -0
  128. data/lib/cyberweb/cascading_style_sheets/popup.css +63 -0
  129. data/lib/cyberweb/cascading_style_sheets/rpg.css +51 -0
  130. data/lib/cyberweb/cascading_style_sheets/ruby_regexes.css +33 -0
  131. data/lib/cyberweb/cascading_style_sheets/template2.css +18 -0
  132. data/lib/cyberweb/cascading_style_sheets/text_shadow.css +19 -0
  133. data/lib/cyberweb/cascading_style_sheets/tooltip.css +36 -0
  134. data/lib/cyberweb/cgi/README.md +6 -0
  135. data/lib/cyberweb/cgi/cgi.rb +340 -0
  136. data/lib/cyberweb/cgi/constants.rb +121 -0
  137. data/lib/cyberweb/cgi/cookie.rb +218 -0
  138. data/lib/cyberweb/cgi/core.rb +638 -0
  139. data/lib/cyberweb/cgi/exceptions.rb +223 -0
  140. data/lib/cyberweb/cgi/html.rb +1025 -0
  141. data/lib/cyberweb/cgi/mod_ruby_exception_printer.rb +40 -0
  142. data/lib/cyberweb/cgi/query_extension.rb +431 -0
  143. data/lib/cyberweb/cgi/session/file_store.rb +131 -0
  144. data/lib/cyberweb/cgi/session/memory_store.rb +90 -0
  145. data/lib/cyberweb/cgi/session/pstore.rb +127 -0
  146. data/lib/cyberweb/cgi/session.rb +444 -0
  147. data/lib/cyberweb/cgi/tag_maker.rb +94 -0
  148. data/lib/cyberweb/cgi/util.rb +239 -0
  149. data/lib/cyberweb/charts/README.md +2 -0
  150. data/lib/cyberweb/charts/google_charts.rb +51 -0
  151. data/lib/cyberweb/classes/simple_form.rb +55 -0
  152. data/lib/cyberweb/classes/tooltips.rb +169 -0
  153. data/lib/cyberweb/coloured_tags/coloured_tags.rb +3099 -0
  154. data/lib/cyberweb/colours/colour_chart.rb +117 -0
  155. data/lib/cyberweb/colours/colours.rb +50 -0
  156. data/lib/cyberweb/colours/random_colour.rb +28 -0
  157. data/lib/cyberweb/colours/sanitize_for_colours.rb +95 -0
  158. data/lib/cyberweb/commandline/commandline_interface.rb +49 -0
  159. data/lib/cyberweb/configuration/configuration.rb +66 -0
  160. data/lib/cyberweb/configuration/load_the_configuration_file.rb +73 -0
  161. data/lib/cyberweb/constants/array_images.rb +21 -0
  162. data/lib/cyberweb/constants/array_local_css_files.rb +35 -0
  163. data/lib/cyberweb/constants/array_predefined_constants.rb +23 -0
  164. data/lib/cyberweb/constants/configuration_file.rb +33 -0
  165. data/lib/cyberweb/constants/constants.rb +9 -0
  166. data/lib/cyberweb/constants/file_constants.rb +16 -0
  167. data/lib/cyberweb/constants/http_status_codes.rb +42 -0
  168. data/lib/cyberweb/constants/nl.rb +22 -0
  169. data/lib/cyberweb/constants/project_constants.rb +99 -0
  170. data/lib/cyberweb/constants/roebe.rb +28 -0
  171. data/lib/cyberweb/constants/standalone_constants.rb +309 -0
  172. data/lib/cyberweb/controller/README.md +4 -0
  173. data/lib/cyberweb/controller/webobject_controller.rb +50 -0
  174. data/lib/cyberweb/csv/README.md +2 -0
  175. data/lib/cyberweb/csv/csv.rb +58 -0
  176. data/lib/cyberweb/cybersprawl +1 -0
  177. data/lib/cyberweb/debug/debug.rb +69 -0
  178. data/lib/cyberweb/encoding/encoding.rb +84 -0
  179. data/lib/cyberweb/erb/test.rhtml +81 -0
  180. data/lib/cyberweb/erb/test_template.erb +9 -0
  181. data/lib/cyberweb/evaluate_from_the_same_named_file_then_serve.rb +9 -0
  182. data/lib/cyberweb/favicon/favicon.rb +196 -0
  183. data/lib/cyberweb/generator/README.md +2 -0
  184. data/lib/cyberweb/generator/cgi.rb +201 -0
  185. data/lib/cyberweb/generator/class.rb +25 -0
  186. data/lib/cyberweb/generator/static_webpage.rb +162 -0
  187. data/lib/cyberweb/generator/webpage_for_images.rb +553 -0
  188. data/lib/cyberweb/help/help.rb +29 -0
  189. data/lib/cyberweb/html_codes/README.md +15 -0
  190. data/lib/cyberweb/html_codes/greek_letters.rb +204 -0
  191. data/lib/cyberweb/html_tags/README.md +3 -0
  192. data/lib/cyberweb/html_tags/a.rb +65 -0
  193. data/lib/cyberweb/html_tags/accesskey.rb +25 -0
  194. data/lib/cyberweb/html_tags/blockquote.rb +56 -0
  195. data/lib/cyberweb/html_tags/body.rb +14 -0
  196. data/lib/cyberweb/html_tags/br.rb +19 -0
  197. data/lib/cyberweb/html_tags/button.rb +110 -0
  198. data/lib/cyberweb/html_tags/canvas.rb +59 -0
  199. data/lib/cyberweb/html_tags/chtml.rb +14 -0
  200. data/lib/cyberweb/html_tags/div.rb +163 -0
  201. data/lib/cyberweb/html_tags/fieldset.rb +67 -0
  202. data/lib/cyberweb/html_tags/figure.rb +72 -0
  203. data/lib/cyberweb/html_tags/form.rb +203 -0
  204. data/lib/cyberweb/html_tags/h1.rb +75 -0
  205. data/lib/cyberweb/html_tags/h2.rb +73 -0
  206. data/lib/cyberweb/html_tags/h3.rb +58 -0
  207. data/lib/cyberweb/html_tags/h4.rb +60 -0
  208. data/lib/cyberweb/html_tags/h5.rb +54 -0
  209. data/lib/cyberweb/html_tags/h6.rb +54 -0
  210. data/lib/cyberweb/html_tags/hr.rb +22 -0
  211. data/lib/cyberweb/html_tags/html_tags.rb +240 -0
  212. data/lib/cyberweb/html_tags/i.rb +50 -0
  213. data/lib/cyberweb/html_tags/img.rb +294 -0
  214. data/lib/cyberweb/html_tags/input.rb +345 -0
  215. data/lib/cyberweb/html_tags/label.rb +63 -0
  216. data/lib/cyberweb/html_tags/legend.rb +56 -0
  217. data/lib/cyberweb/html_tags/li.rb +67 -0
  218. data/lib/cyberweb/html_tags/map.rb +31 -0
  219. data/lib/cyberweb/html_tags/nav.rb +63 -0
  220. data/lib/cyberweb/html_tags/object.rb +56 -0
  221. data/lib/cyberweb/html_tags/ol.rb +56 -0
  222. data/lib/cyberweb/html_tags/option.rb +61 -0
  223. data/lib/cyberweb/html_tags/p.rb +90 -0
  224. data/lib/cyberweb/html_tags/pre.rb +164 -0
  225. data/lib/cyberweb/html_tags/section.rb +33 -0
  226. data/lib/cyberweb/html_tags/select.rb +100 -0
  227. data/lib/cyberweb/html_tags/span.rb +338 -0
  228. data/lib/cyberweb/html_tags/strong.rb +39 -0
  229. data/lib/cyberweb/html_tags/table.rb +273 -0
  230. data/lib/cyberweb/html_tags/tbody.rb +24 -0
  231. data/lib/cyberweb/html_tags/td.rb +214 -0
  232. data/lib/cyberweb/html_tags/textarea.rb +138 -0
  233. data/lib/cyberweb/html_tags/th.rb +68 -0
  234. data/lib/cyberweb/html_tags/thead.rb +36 -0
  235. data/lib/cyberweb/html_tags/tr.rb +97 -0
  236. data/lib/cyberweb/html_tags/ul.rb +51 -0
  237. data/lib/cyberweb/html_template/html_template.rb +352 -0
  238. data/lib/cyberweb/images/embed_this_image.rb +37 -0
  239. data/lib/cyberweb/images/images.rb +58 -0
  240. data/lib/cyberweb/images/is_image.rb +22 -0
  241. data/lib/cyberweb/images/path_to_images.rb +60 -0
  242. data/lib/cyberweb/images/real/README.md +6 -0
  243. data/lib/cyberweb/images/remove_this_substring_from_all_images.rb +44 -0
  244. data/lib/cyberweb/images/standalone_drag_and_drop_this_image.rb +64 -0
  245. data/lib/cyberweb/images/string_image.rb +399 -0
  246. data/lib/cyberweb/images_base64_encoded/AUSRUFUNGSZEICHEN.png.md +1 -0
  247. data/lib/cyberweb/images_base64_encoded/BLUEARROW.png.md +1 -0
  248. data/lib/cyberweb/images_base64_encoded/BUBBLE.png.md +1 -0
  249. data/lib/cyberweb/images_base64_encoded/CAT.png.md +1 -0
  250. data/lib/cyberweb/images_base64_encoded/CAUTION.png.md +1 -0
  251. data/lib/cyberweb/images_base64_encoded/CHEERING_PERSON.png.md +1 -0
  252. data/lib/cyberweb/images_base64_encoded/CURSOR.png.md +1 -0
  253. data/lib/cyberweb/images_base64_encoded/DOT_01.png.md +5 -0
  254. data/lib/cyberweb/images_base64_encoded/DUCKY.png.md +1 -0
  255. data/lib/cyberweb/images_base64_encoded/ELEPHANT.png.md +1 -0
  256. data/lib/cyberweb/images_base64_encoded/HALLOWEEN.png.md +1 -0
  257. data/lib/cyberweb/images_base64_encoded/HANGING_MONKEY.png.md +1 -0
  258. data/lib/cyberweb/images_base64_encoded/LENS.png.md +1 -0
  259. data/lib/cyberweb/images_base64_encoded/README.md +2 -0
  260. data/lib/cyberweb/images_base64_encoded/TU_WIEN_LOGO.png.md +1 -0
  261. data/lib/cyberweb/images_base64_encoded/VOGEL.png.md +1 -0
  262. data/lib/cyberweb/io/README.md +1 -0
  263. data/lib/cyberweb/io/io.rb +19 -0
  264. data/lib/cyberweb/javascript/drag_and_drop.rb +105 -0
  265. data/lib/cyberweb/javascript/dragula_collection.rb +54 -0
  266. data/lib/cyberweb/javascript/javascript.rb +211 -0
  267. data/lib/cyberweb/javascript/javascript_bundle.rb +223 -0
  268. data/lib/cyberweb/javascript/javascript_clock.rb +69 -0
  269. data/lib/cyberweb/javascript/javascript_last_modified.rb +27 -0
  270. data/lib/cyberweb/javascript/javascript_magic.rb +150 -0
  271. data/lib/cyberweb/javascript/javascript_selectable.rb +24 -0
  272. data/lib/cyberweb/javascript/jquery.rb +30 -0
  273. data/lib/cyberweb/javascript/on_click_change_opacity.rb +97 -0
  274. data/lib/cyberweb/javascript/on_click_hide.rb +63 -0
  275. data/lib/cyberweb/javascript/popup.rb +80 -0
  276. data/lib/cyberweb/javascript/print_javascript.rb +33 -0
  277. data/lib/cyberweb/javascript/registered_javascript_methods.rb +30 -0
  278. data/lib/cyberweb/javascript/resize.rb +28 -0
  279. data/lib/cyberweb/javascript/return_javascript.rb +48 -0
  280. data/lib/cyberweb/javascript/scroll.rb +17 -0
  281. data/lib/cyberweb/javascript/snoweffect.rb +122 -0
  282. data/lib/cyberweb/javascript_code/README.md +6 -0
  283. data/lib/cyberweb/javascript_code/chmod_displayer.js +74 -0
  284. data/lib/cyberweb/javascript_code/custom_functions.js +267 -0
  285. data/lib/cyberweb/javascript_code/jquery/jquery-3.6.0.js +10881 -0
  286. data/lib/cyberweb/javascript_code/jquery/jquery-ui-1.12.1.js +18706 -0
  287. data/lib/cyberweb/javascript_code/rgb_to_hex.js +14 -0
  288. data/lib/cyberweb/javascript_code/select_even_numbers.js +7 -0
  289. data/lib/cyberweb/javascript_code/select_everything.js +22 -0
  290. data/lib/cyberweb/javascript_code/simple_calculator.js +15 -0
  291. data/lib/cyberweb/javascript_code/sleep.js +3 -0
  292. data/lib/cyberweb/javascript_code/to_celsius.js +8 -0
  293. data/lib/cyberweb/mouse/README.md +3 -0
  294. data/lib/cyberweb/mouse/libxdo.rb +321 -0
  295. data/lib/cyberweb/mouse/mouse.rb +264 -0
  296. data/lib/cyberweb/objectified_html_tags/README.md +8 -0
  297. data/lib/cyberweb/objectified_html_tags/a.rb +129 -0
  298. data/lib/cyberweb/objectified_html_tags/abbr.rb +84 -0
  299. data/lib/cyberweb/objectified_html_tags/base.rb +376 -0
  300. data/lib/cyberweb/objectified_html_tags/button.rb +135 -0
  301. data/lib/cyberweb/objectified_html_tags/combobox.rb +165 -0
  302. data/lib/cyberweb/objectified_html_tags/div.rb +129 -0
  303. data/lib/cyberweb/objectified_html_tags/embed.rb +161 -0
  304. data/lib/cyberweb/objectified_html_tags/form.rb +129 -0
  305. data/lib/cyberweb/objectified_html_tags/h1.rb +129 -0
  306. data/lib/cyberweb/objectified_html_tags/h2.rb +129 -0
  307. data/lib/cyberweb/objectified_html_tags/h3.rb +129 -0
  308. data/lib/cyberweb/objectified_html_tags/h4.rb +129 -0
  309. data/lib/cyberweb/objectified_html_tags/h5.rb +129 -0
  310. data/lib/cyberweb/objectified_html_tags/h6.rb +129 -0
  311. data/lib/cyberweb/objectified_html_tags/hbox.rb +71 -0
  312. data/lib/cyberweb/objectified_html_tags/img.rb +202 -0
  313. data/lib/cyberweb/objectified_html_tags/input.rb +185 -0
  314. data/lib/cyberweb/objectified_html_tags/p.rb +129 -0
  315. data/lib/cyberweb/objectified_html_tags/pre.rb +129 -0
  316. data/lib/cyberweb/objectified_html_tags/span.rb +92 -0
  317. data/lib/cyberweb/objectified_html_tags/table.rb +174 -0
  318. data/lib/cyberweb/objectified_html_tags/textarea.rb +173 -0
  319. data/lib/cyberweb/objectified_html_tags/title.rb +82 -0
  320. data/lib/cyberweb/objectified_html_tags/window.rb +79 -0
  321. data/lib/cyberweb/predefined_and_freeform_methods/README.md +1 -0
  322. data/lib/cyberweb/predefined_and_freeform_methods/frage.rb +45 -0
  323. data/lib/cyberweb/predefined_and_freeform_methods/freeform_methods.rb +93 -0
  324. data/lib/cyberweb/predefined_and_freeform_methods/hash_css_class_to_use.rb +55 -0
  325. data/lib/cyberweb/predefined_and_freeform_methods/hash_registered_extra_tags.rb +29 -0
  326. data/lib/cyberweb/predefined_and_freeform_methods/header.rb +81 -0
  327. data/lib/cyberweb/predefined_and_freeform_methods/predefined_methods.rb +413 -0
  328. data/lib/cyberweb/project/project.rb +85 -0
  329. data/lib/cyberweb/rack/README.md +1 -0
  330. data/lib/cyberweb/rack/request.rb +31 -0
  331. data/lib/cyberweb/requires/README.md +4 -0
  332. data/lib/cyberweb/requires/do_require_web_object_files.rb +9 -0
  333. data/lib/cyberweb/requires/remove_html.rb +9 -0
  334. data/lib/cyberweb/requires/require_cgi.rb +16 -0
  335. data/lib/cyberweb/requires/require_charts.rb +20 -0
  336. data/lib/cyberweb/requires/require_generators.rb +23 -0
  337. data/lib/cyberweb/requires/require_html_tags_files.rb +23 -0
  338. data/lib/cyberweb/requires/require_javascript_files.rb +23 -0
  339. data/lib/cyberweb/requires/require_kimurai.rb +13 -0
  340. data/lib/cyberweb/requires/require_objectified_html_tags_files.rb +23 -0
  341. data/lib/cyberweb/requires/require_sinatra.rb +7 -0
  342. data/lib/cyberweb/requires/require_the_constants.rb +26 -0
  343. data/lib/cyberweb/requires/require_the_cyberweb_project.rb +172 -0
  344. data/lib/cyberweb/requires/require_the_html_template.rb +7 -0
  345. data/lib/cyberweb/requires/require_the_toplevel_methods_files.rb +24 -0
  346. data/lib/cyberweb/requires/require_web_images.rb +7 -0
  347. data/lib/cyberweb/requires/require_web_object_files.rb +25 -0
  348. data/lib/cyberweb/requires/require_yaml.rb +11 -0
  349. data/lib/cyberweb/sinatra/README.md +11 -0
  350. data/lib/cyberweb/sinatra/base.rb +145 -0
  351. data/lib/cyberweb/sinatra/custom_extensions.rb +131 -0
  352. data/lib/cyberweb/standalone_classes/all_css_classes.rb +255 -0
  353. data/lib/cyberweb/standalone_classes/calculator.rb +127 -0
  354. data/lib/cyberweb/standalone_classes/correct_image_entries_in_html_file.rb +207 -0
  355. data/lib/cyberweb/standalone_classes/input_focus.rb +97 -0
  356. data/lib/cyberweb/standalone_classes/tag_prototype.rb +43 -0
  357. data/lib/cyberweb/standalone_classes/turn_html_into_cyberweb.rb +174 -0
  358. data/lib/cyberweb/svg/blue_rect.svg +12 -0
  359. data/lib/cyberweb/svg/butterfly.svg +15 -0
  360. data/lib/cyberweb/svg/chemical_molecule.svg +192 -0
  361. data/lib/cyberweb/svg/circles_on_background.svg +29 -0
  362. data/lib/cyberweb/svg/ellipse.svg +12 -0
  363. data/lib/cyberweb/svg/five_circles.svg +26 -0
  364. data/lib/cyberweb/svg/flag_germany.svg +10 -0
  365. data/lib/cyberweb/svg/gaussian_blur.svg +20 -0
  366. data/lib/cyberweb/svg/gradient_circle.svg +18 -0
  367. data/lib/cyberweb/svg/green_butterfly.svg +18 -0
  368. data/lib/cyberweb/svg/green_tilted_lines.svg +25 -0
  369. data/lib/cyberweb/svg/lion.svg +161 -0
  370. data/lib/cyberweb/svg/one_circle.svg +12 -0
  371. data/lib/cyberweb/svg/pie_chart.svg +130 -0
  372. data/lib/cyberweb/svg/svg.cgi +61 -0
  373. data/lib/cyberweb/svg/tetris.svg +487 -0
  374. data/lib/cyberweb/svg/three_circles.svg +18 -0
  375. data/lib/cyberweb/svg/tiger.svg +732 -0
  376. data/lib/cyberweb/svg/tilted_arcs.svg +74 -0
  377. data/lib/cyberweb/svg/transparent_rect.svg +12 -0
  378. data/lib/cyberweb/svg/yellow_fe_blending.svg +42 -0
  379. data/lib/cyberweb/toplevel_methods/a.rb +131 -0
  380. data/lib/cyberweb/toplevel_methods/anmerkung.rb +67 -0
  381. data/lib/cyberweb/toplevel_methods/audio.rb +59 -0
  382. data/lib/cyberweb/toplevel_methods/bold.rb +65 -0
  383. data/lib/cyberweb/toplevel_methods/cgi.rb +65 -0
  384. data/lib/cyberweb/toplevel_methods/charsets.rb +52 -0
  385. data/lib/cyberweb/toplevel_methods/clear.rb +30 -0
  386. data/lib/cyberweb/toplevel_methods/close.rb +62 -0
  387. data/lib/cyberweb/toplevel_methods/consider_serving_the_web_object.rb +41 -0
  388. data/lib/cyberweb/toplevel_methods/css.rb +732 -0
  389. data/lib/cyberweb/toplevel_methods/date.rb +71 -0
  390. data/lib/cyberweb/toplevel_methods/dictionary.rb +48 -0
  391. data/lib/cyberweb/toplevel_methods/disable.rb +49 -0
  392. data/lib/cyberweb/toplevel_methods/document.rb +56 -0
  393. data/lib/cyberweb/toplevel_methods/dot.rb +182 -0
  394. data/lib/cyberweb/toplevel_methods/download_webpage.rb +18 -0
  395. data/lib/cyberweb/toplevel_methods/edit_configuration_file.rb +26 -0
  396. data/lib/cyberweb/toplevel_methods/ee.rb +44 -0
  397. data/lib/cyberweb/toplevel_methods/env.rb +44 -0
  398. data/lib/cyberweb/toplevel_methods/escape_html.rb +54 -0
  399. data/lib/cyberweb/toplevel_methods/fields.rb +46 -0
  400. data/lib/cyberweb/toplevel_methods/filename.rb +33 -0
  401. data/lib/cyberweb/toplevel_methods/frames.rb +131 -0
  402. data/lib/cyberweb/toplevel_methods/glob.rb +30 -0
  403. data/lib/cyberweb/toplevel_methods/google.rb +35 -0
  404. data/lib/cyberweb/toplevel_methods/hardware_information.rb +90 -0
  405. data/lib/cyberweb/toplevel_methods/hfin.rb +56 -0
  406. data/lib/cyberweb/toplevel_methods/html_comment.rb +48 -0
  407. data/lib/cyberweb/toplevel_methods/html_mode.rb +39 -0
  408. data/lib/cyberweb/toplevel_methods/html_tables.rb +818 -0
  409. data/lib/cyberweb/toplevel_methods/input.rb +54 -0
  410. data/lib/cyberweb/toplevel_methods/jquery.rb +82 -0
  411. data/lib/cyberweb/toplevel_methods/last_modified.rb +39 -0
  412. data/lib/cyberweb/toplevel_methods/links.rb +426 -0
  413. data/lib/cyberweb/toplevel_methods/listing.rb +96 -0
  414. data/lib/cyberweb/toplevel_methods/localhost.rb +18 -0
  415. data/lib/cyberweb/toplevel_methods/log_directory.rb +84 -0
  416. data/lib/cyberweb/toplevel_methods/logging.rb +42 -0
  417. data/lib/cyberweb/toplevel_methods/logo.rb +30 -0
  418. data/lib/cyberweb/toplevel_methods/markdown.rb +112 -0
  419. data/lib/cyberweb/toplevel_methods/mathml.rb +130 -0
  420. data/lib/cyberweb/toplevel_methods/message_boxes.rb +140 -0
  421. data/lib/cyberweb/toplevel_methods/misc.rb +1398 -0
  422. data/lib/cyberweb/toplevel_methods/name_of_img_dir.rb +51 -0
  423. data/lib/cyberweb/toplevel_methods/padlem_and_marlem.rb +107 -0
  424. data/lib/cyberweb/toplevel_methods/params.rb +57 -0
  425. data/lib/cyberweb/toplevel_methods/path.rb +69 -0
  426. data/lib/cyberweb/toplevel_methods/pdf.rb +103 -0
  427. data/lib/cyberweb/toplevel_methods/process_content.rb +102 -0
  428. data/lib/cyberweb/toplevel_methods/progress.rb +42 -0
  429. data/lib/cyberweb/toplevel_methods/quote.rb +44 -0
  430. data/lib/cyberweb/toplevel_methods/random.rb +70 -0
  431. data/lib/cyberweb/toplevel_methods/rds.rb +35 -0
  432. data/lib/cyberweb/toplevel_methods/read_and_display.rb +284 -0
  433. data/lib/cyberweb/toplevel_methods/readlines.rb +31 -0
  434. data/lib/cyberweb/toplevel_methods/redirect.rb +29 -0
  435. data/lib/cyberweb/toplevel_methods/registered_ids.rb +178 -0
  436. data/lib/cyberweb/toplevel_methods/remove_html.rb +32 -0
  437. data/lib/cyberweb/toplevel_methods/remove_newlines.rb +28 -0
  438. data/lib/cyberweb/toplevel_methods/return_head_start.rb +33 -0
  439. data/lib/cyberweb/toplevel_methods/return_html_fin.rb +34 -0
  440. data/lib/cyberweb/toplevel_methods/return_html_header.rb +35 -0
  441. data/lib/cyberweb/toplevel_methods/return_html_start.rb +24 -0
  442. data/lib/cyberweb/toplevel_methods/return_html_to_head_start.rb +42 -0
  443. data/lib/cyberweb/toplevel_methods/return_meta_collection.rb +54 -0
  444. data/lib/cyberweb/toplevel_methods/return_pwd.rb +23 -0
  445. data/lib/cyberweb/toplevel_methods/return_strict_doctype.rb +51 -0
  446. data/lib/cyberweb/toplevel_methods/roebe.rb +43 -0
  447. data/lib/cyberweb/toplevel_methods/s2.rb +30 -0
  448. data/lib/cyberweb/toplevel_methods/sanitize_url.rb +57 -0
  449. data/lib/cyberweb/toplevel_methods/sbr.rb +170 -0
  450. data/lib/cyberweb/toplevel_methods/server_base_directory.rb +148 -0
  451. data/lib/cyberweb/toplevel_methods/show_and_display.rb +215 -0
  452. data/lib/cyberweb/toplevel_methods/show_configuration.rb +83 -0
  453. data/lib/cyberweb/toplevel_methods/sitemap.rb +111 -0
  454. data/lib/cyberweb/toplevel_methods/spacer.rb +119 -0
  455. data/lib/cyberweb/toplevel_methods/string_body_start.rb +65 -0
  456. data/lib/cyberweb/toplevel_methods/string_content.rb +35 -0
  457. data/lib/cyberweb/toplevel_methods/svg.rb +66 -0
  458. data/lib/cyberweb/toplevel_methods/tag.rb +237 -0
  459. data/lib/cyberweb/toplevel_methods/temp_directory.rb +73 -0
  460. data/lib/cyberweb/toplevel_methods/test_css.rb +24 -0
  461. data/lib/cyberweb/toplevel_methods/textile.rb +45 -0
  462. data/lib/cyberweb/toplevel_methods/title.rb +125 -0
  463. data/lib/cyberweb/toplevel_methods/umlaute.rb +90 -0
  464. data/lib/cyberweb/toplevel_methods/video.rb +352 -0
  465. data/lib/cyberweb/toplevel_methods/view_source.rb +50 -0
  466. data/lib/cyberweb/toplevel_methods/web_object.rb +42 -0
  467. data/lib/cyberweb/toplevel_methods/write_what_into.rb +27 -0
  468. data/lib/cyberweb/utility_scripts/README.md +4 -0
  469. data/lib/cyberweb/utility_scripts/create_coloured_tags.rb +172 -0
  470. data/lib/cyberweb/utility_scripts/download_balloon_css.rb +160 -0
  471. data/lib/cyberweb/utility_scripts/hyperlink_all_images_from.rb +148 -0
  472. data/lib/cyberweb/version/version.rb +25 -0
  473. data/lib/cyberweb/web_base/web_base.rb +28 -0
  474. data/lib/cyberweb/web_images/array_listing_all_project_images.rb +52 -0
  475. data/lib/cyberweb/web_images/map_symbol_to_image_location.rb +1661 -0
  476. data/lib/cyberweb/web_images/web_images.rb +270 -0
  477. data/lib/cyberweb/web_object/css.rb +627 -0
  478. data/lib/cyberweb/web_object/evaluate.rb +126 -0
  479. data/lib/cyberweb/web_object/favicon.rb +160 -0
  480. data/lib/cyberweb/web_object/html_related_tags.rb +320 -0
  481. data/lib/cyberweb/web_object/images.rb +693 -0
  482. data/lib/cyberweb/web_object/initialize.rb +51 -0
  483. data/lib/cyberweb/web_object/input_related_functionality.rb +414 -0
  484. data/lib/cyberweb/web_object/javascript.rb +427 -0
  485. data/lib/cyberweb/web_object/languages.rb +172 -0
  486. data/lib/cyberweb/web_object/links.rb +228 -0
  487. data/lib/cyberweb/web_object/misc.rb +5159 -0
  488. data/lib/cyberweb/web_object/params.rb +289 -0
  489. data/lib/cyberweb/web_object/reset.rb +192 -0
  490. data/lib/cyberweb/web_object/run.rb +44 -0
  491. data/lib/cyberweb/web_object/sinatra_related_functionality.rb +30 -0
  492. data/lib/cyberweb/web_object/sitemap.rb +176 -0
  493. data/lib/cyberweb/web_object/table.rb +378 -0
  494. data/lib/cyberweb/web_object/web_object.rb +126 -0
  495. data/lib/cyberweb/web_scraper/README.md +8 -0
  496. data/lib/cyberweb/web_scraper/scrape_this_url.rb +183 -0
  497. data/lib/cyberweb/webmin/biology_server.cgi +256 -0
  498. data/lib/cyberweb/webmin/calculator.cgi +52 -0
  499. data/lib/cyberweb/webmin/colour_chart.cgi +33 -0
  500. data/lib/cyberweb/webmin/comments.cgi +137 -0
  501. data/lib/cyberweb/webmin/comments_data +18 -0
  502. data/lib/cyberweb/webmin/constants.rb +46 -0
  503. data/lib/cyberweb/webmin/dictionary.cgi +39 -0
  504. data/lib/cyberweb/webmin/sys_info.cgi +26 -0
  505. data/lib/cyberweb/webmin/webforum.cgi +58 -0
  506. data/lib/cyberweb/webmin/webmin.cgi +679 -0
  507. data/lib/cyberweb/yaml/autogenerated_system_settings.yml +14 -0
  508. data/lib/cyberweb/yaml/custom_tags.yml +7 -0
  509. data/lib/cyberweb/yaml/debug.yml +1 -0
  510. data/lib/cyberweb/yaml/html5_global_attributes.yml +12 -0
  511. data/lib/cyberweb/yaml/html5_new_elements.yml +108 -0
  512. data/lib/cyberweb/yaml/html_tag_legend.yml +12 -0
  513. data/lib/cyberweb/yaml/http_status_codes.yml +38 -0
  514. data/lib/cyberweb/yaml/js_files_to_load.yml +28 -0
  515. data/lib/cyberweb/yaml/project_configuration.yml +229 -0
  516. data/lib/cyberweb/yaml/video_attributes.yml +35 -0
  517. data/lib/cyberweb/yaml/web_images.yml +306 -0
  518. data/lib/cyberweb.rb +5 -0
  519. data/test/README.md +5 -0
  520. data/test/complex_tests/all_tests_in_one_page.cgi +666 -0
  521. data/test/complex_tests/simple_sinatra_example_using_cyberweb/simple.rb +60 -0
  522. data/test/complex_tests/sinatra_or_cyberweb/sinatra_or_cyberweb.cgi +7 -0
  523. data/test/complex_tests/sinatra_or_cyberweb/sinatra_or_cyberweb.rb +23 -0
  524. data/test/complex_tests/sinatra_or_cyberweb/sinatra_or_cyberweb.sinatra +65 -0
  525. data/test/complex_tests/testing_frames.cgi +42 -0
  526. data/test/complex_tests/testing_objectified_html_tags.rb +82 -0
  527. data/test/complex_tests/testing_style_variants/README.md +2 -0
  528. data/test/complex_tests/testing_style_variants/show_coloured_boxes.cgi +58 -0
  529. data/test/complex_tests/testing_tables.cgi +67 -0
  530. data/test/complex_tests/testing_the_cyberweb_shell.rb +188 -0
  531. data/test/complex_tests/testing_web_object.rb +94 -0
  532. data/test/css/README.md +5 -0
  533. data/test/css/return_the_content_of_these_css_classes.rb +7 -0
  534. data/test/css/testing_css_effects.cgi +159 -0
  535. data/test/css/testing_css_masking.cgi +36 -0
  536. data/test/dummy.pdf +0 -0
  537. data/test/hello_world/hello_world.cgi +25 -0
  538. data/test/javascript/README.md +2 -0
  539. data/test/javascript/testing_cheerleader_javascript.cgi +0 -0
  540. data/test/javascript/testing_drag_and_drop_support.cgi +33 -0
  541. data/test/javascript/testing_on_click_change_opacity.cgi +26 -0
  542. data/test/javascript/testing_snowflakes.cgi +20 -0
  543. data/test/simple_tests/README.md +3 -0
  544. data/test/simple_tests/ad-hoc-test.cgi +55 -0
  545. data/test/simple_tests/commandline_tests.rb +70 -0
  546. data/test/simple_tests/display_this_file.cgi +11 -0
  547. data/test/simple_tests/simple_html_example.cgi +29 -0
  548. data/test/simple_tests/simple_status_page.cgi +52 -0
  549. data/test/simple_tests/string_s2_test.rb +11 -0
  550. data/test/simple_tests/test_simple_string_as_input.rb +12 -0
  551. data/test/simple_tests/testing_base64_images.cgi +26 -0
  552. data/test/simple_tests/testing_dragging_an_image.cgi +23 -0
  553. data/test/simple_tests/testing_editable_text.cgi +16 -0
  554. data/test/simple_tests/testing_email.cgi +31 -0
  555. data/test/simple_tests/testing_embedding_a_pdf_file.cgi +32 -0
  556. data/test/simple_tests/testing_google_charts.cgi +24 -0
  557. data/test/simple_tests/testing_html_forms.cgi +31 -0
  558. data/test/simple_tests/testing_html_template.rb +13 -0
  559. data/test/simple_tests/testing_popup_div.cgi +22 -0
  560. data/test/simple_tests/testing_return_dataset_without_any_comments.rb +11 -0
  561. data/test/simple_tests/testing_the_cap_box.cgi +20 -0
  562. data/test/simple_tests/testing_the_div_tag.cgi +21 -0
  563. data/test/simple_tests/testing_the_headers_tag.cgi +36 -0
  564. data/test/simple_tests/testing_the_html_colours.cgi +19 -0
  565. data/test/simple_tests/testing_the_info_box.cgi +19 -0
  566. data/test/simple_tests/testing_the_li_tag.cgi +24 -0
  567. data/test/simple_tests/testing_the_s2_method.rb +7 -0
  568. data/test/simple_tests/testing_the_select_tag.cgi +23 -0
  569. data/test/simple_tests/testing_the_span_tag.cgi +36 -0
  570. data/test/simple_tests/testing_web_images.rb +12 -0
  571. data/test/testing_html_tags/README.md +7 -0
  572. data/test/testing_html_tags/button_example.cgi +42 -0
  573. metadata +759 -0
@@ -0,0 +1,693 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'cyberweb/web_object/images.rb'
6
+ # =========================================================================== #
7
+ require 'cyberweb/base/base.rb'
8
+
9
+ module Cyberweb
10
+
11
+ class WebObject < Base # === Cyberweb::WebObject
12
+
13
+ require 'cyberweb/requires/require_web_images.rb'
14
+
15
+ # ========================================================================= #
16
+ # === drag_local_image_or_remote_image
17
+ #
18
+ # As local_image_or_remote_image(), but with the default id argument to
19
+ # refer to :drag.
20
+ # ========================================================================= #
21
+ def drag_local_image_or_remote_image(
22
+ local_image = '',
23
+ remote_image_substitute = '', # This one should be the remote URL.
24
+ optional_css_class = '',
25
+ optional_the_id = :drag,
26
+ optional_css_style = '',
27
+ alt_text = '',
28
+ &block
29
+ )
30
+ local_image_or_remote_image(
31
+ local_image,
32
+ remote_image_substitute,
33
+ optional_css_class,
34
+ optional_the_id,
35
+ optional_css_style
36
+ ) { :drag }
37
+ end; alias dlocal_image_or_remote_image drag_local_image_or_remote_image # === dlocal_image_or_remote_image
38
+ alias dimg2 drag_local_image_or_remote_image # === dimg2
39
+
40
+ # ========================================================================= #
41
+ # === local_image_or_remote_image
42
+ #
43
+ # This method can be used to add a substitute image in the event that
44
+ # a local image could not be found. Otherwise it behaves exactly like
45
+ # image() does.
46
+ # ========================================================================= #
47
+ def local_image_or_remote_image(
48
+ local_image = '',
49
+ remote_image_substitute = '', # This one should be the remote URL.
50
+ optional_css_class = '',
51
+ optional_the_id = '',
52
+ optional_css_style = '',
53
+ alt_text = '',
54
+ &block
55
+ )
56
+ # ======================================================================= #
57
+ # We first have to decide whether the image exists or whether it does
58
+ # not exist, at the specified location. If it exists then we can use
59
+ # the regular img() call; otherwise we have to use the second argument
60
+ # to this method.
61
+ # ======================================================================= #
62
+ assumed_path = rds(
63
+ path_to_the_image_directory?+
64
+ local_image
65
+ )
66
+ if File.exist? assumed_path
67
+ img(
68
+ local_image,
69
+ optional_css_class,
70
+ optional_the_id,
71
+ optional_css_style,
72
+ alt_text,
73
+ &block
74
+ )
75
+ else
76
+ # ===================================================================== #
77
+ # else we use a remote URL or a rescue URL anyway.
78
+ # ===================================================================== #
79
+ remote_img(
80
+ remote_image_substitute,
81
+ {
82
+ css_class: optional_css_class,
83
+ id: optional_the_id,
84
+ css_style: optional_css_style
85
+ },
86
+ &block
87
+ # alt_text is currently not handled here.
88
+ )
89
+ end
90
+ end
91
+
92
+ # ========================================================================= #
93
+ # === remote_img
94
+ #
95
+ # This method can be used to "embed" a remote image in a given
96
+ # web-application.
97
+ #
98
+ # Usage example:
99
+ #
100
+ # embed_remote_image('https://i.imgur.com/jYBEnjr.png', css_class: 'bblack2 mar4px', id: 'drag_ferkellampe')
101
+ #
102
+ # ========================================================================= #
103
+ def remote_img(
104
+ i = 'http://mikesrpgcenter.com/krondor/maps/timirianya.html',
105
+ optional_hash = {},
106
+ &block
107
+ )
108
+ # ======================================================================= #
109
+ # === Handle blocks first
110
+ # ======================================================================= #
111
+ if block_given?
112
+ yielded = yield
113
+ # ===================================================================== #
114
+ # === Handle Hashes next
115
+ # ===================================================================== #
116
+ if yielded.is_a? Hash
117
+ optional_hash.merge!(yielded) # And push them onto the main Hash here.
118
+ end
119
+ end
120
+ addnl(
121
+ HtmlTags.img(i) { optional_hash }
122
+ )
123
+ end; alias embed_remote_image remote_img # === embed_remote_image
124
+ alias remote_image remote_img # === remote_image
125
+
126
+ # ========================================================================= #
127
+ # === raw_image
128
+ #
129
+ # The first argument to this method should be the path to the file at
130
+ # hand.
131
+ # ========================================================================= #
132
+ def raw_image(
133
+ i = '',
134
+ optional_css_class = '',
135
+ optional_the_id = '',
136
+ optional_css_style = '',
137
+ alt_text = ''
138
+ )
139
+ return '<img src="'+i+'"'+
140
+ css_class_or_no_class(optional_css_class)+
141
+ id_or_no_id(optional_the_id, i)+
142
+ css_style_or_no_style(optional_css_style)+
143
+ alt_text_or_no_alt_text(alt_text)+'>'
144
+ end
145
+
146
+ # ========================================================================= #
147
+ # === simpler_string_image (sg tag)
148
+ #
149
+ # This method has been added in September 2020 to specifically
150
+ # work around the problem that the older sg() has.
151
+ #
152
+ # The return-value of this method MUST always be a String; it may never
153
+ # use addnl() directly. The whole idea is to build up a <img> tag
154
+ # through it; sg is short for string_image().
155
+ # ========================================================================= #
156
+ def simpler_string_image(
157
+ i = :random, # This is the path - or a Symbol denoting that a path should be used.
158
+ optional_css_class = '',
159
+ optional_the_id = '',
160
+ optional_css_style = '',
161
+ alt_text = '',
162
+ make_linebreak = 0,
163
+ something1 = '',
164
+ something2 = '',
165
+ hmmmmmmmmm = '',
166
+ javascript = '',
167
+ &block
168
+ )
169
+ if i.is_a? Symbol
170
+ i = ::Cyberweb.image_url(i) # This has the path.
171
+ end
172
+ # ======================================================================= #
173
+ # === Handle Hashes next
174
+ #
175
+ # We must be careful here, depending on which symbol is passed to the
176
+ # method.
177
+ # ======================================================================= #
178
+ if optional_css_class.is_a? Hash
179
+ # ===================================================================== #
180
+ # === :id
181
+ # ===================================================================== #
182
+ if optional_css_class.has_key? :id
183
+ optional_the_id = optional_css_class.delete(:id)
184
+ # ===================================================================== #
185
+ # === :the_id
186
+ # ===================================================================== #
187
+ elsif optional_css_class.has_key? :the_id
188
+ optional_the_id = optional_css_class.delete(:the_id)
189
+ end
190
+ # ===================================================================== #
191
+ # === :css_style
192
+ # ===================================================================== #
193
+ if optional_css_class.has_key? :css_style
194
+ optional_css_style = optional_css_class.delete(:css_style)
195
+ end
196
+ # ===================================================================== #
197
+ # === :content
198
+ # ===================================================================== #
199
+ if optional_css_class.has_key? :content
200
+ i = optional_css_class.delete(:content)
201
+ end
202
+ # ===================================================================== #
203
+ # === :css
204
+ # ===================================================================== #
205
+ if optional_css_class.has_key? :css
206
+ optional_css_class = optional_css_class.delete(:css)
207
+ # ===================================================================== #
208
+ # === :css_class
209
+ # ===================================================================== #
210
+ elsif optional_css_class.has_key? :css_class
211
+ optional_css_class = optional_css_class.delete(:css_class)
212
+ end
213
+ end
214
+ i = i.to_s
215
+ may_we_prepend_the_path = true
216
+ case optional_the_id
217
+ # ======================================================================= #
218
+ # === :drag
219
+ # ======================================================================= #
220
+ when :drag
221
+ optional_the_id = 'drag_'+File.basename(i).downcase.delete_suffix(
222
+ File.extname(i)
223
+ ).tr('.','_')
224
+ end
225
+ # ======================================================================= #
226
+ # === Handle blocks next
227
+ # ======================================================================= #
228
+ if block_given?
229
+ yielded = yield
230
+ case yielded
231
+ # ===================================================================== #
232
+ # === :draggable
233
+ # ===================================================================== #
234
+ when :drag
235
+ optional_the_id = 'drag_'+File.basename(i).downcase.delete_suffix(
236
+ File.extname(i)
237
+ ).tr('.','_')
238
+ # ===================================================================== #
239
+ # === :draggable_attribute
240
+ # ===================================================================== #
241
+ when :draggable_attribute
242
+ i = i.dup
243
+ i[-1,0] = ' draggable="true"'
244
+ # ===================================================================== #
245
+ # === :prepend_only_to_the_images_real_directory
246
+ # ===================================================================== #
247
+ when :prepend_only_to_the_images_real_directory
248
+ i.prepend(relative_path?.dup)
249
+ may_we_prepend_the_path = false
250
+ # ===================================================================== #
251
+ # === :do_not_prepend_anything
252
+ # ===================================================================== #
253
+ when :do_not_prepend_anything
254
+ may_we_prepend_the_path = false
255
+ end
256
+ end
257
+ if may_we_prepend_the_path
258
+ i = return_path_to_the_images_directory+
259
+ i
260
+ end
261
+ return raw_image(
262
+ i, optional_css_class, optional_the_id, optional_css_style, alt_text
263
+ )
264
+ end; alias sg simpler_string_image # === sg
265
+ alias simg simpler_string_image # === simg
266
+ alias string_img simpler_string_image # === string_img
267
+
268
+ # ========================================================================= #
269
+ # === img (img tag, image tag)
270
+ # ========================================================================= #
271
+ def img(
272
+ url = 'RPG/YINYANG.png',
273
+ css_class = '',
274
+ the_id = '',
275
+ css_style = '',
276
+ alt_text = '',
277
+ &block
278
+ )
279
+ # ======================================================================= #
280
+ # First we should obtain the corresponding <img> tag. This will be
281
+ # delegated towards sg() which is an abbreviated name for
282
+ # string_image():
283
+ # ======================================================================= #
284
+ content = sg(
285
+ url, css_class, the_id, css_style, alt_text
286
+ )
287
+ # ======================================================================= #
288
+ # === Handle blocks given to this method next
289
+ # ======================================================================= #
290
+ if block_given?
291
+ yielded = yield
292
+ # ===================================================================== #
293
+ # === Handle Hashes next
294
+ # ===================================================================== #
295
+ if yielded.is_a? Hash
296
+ # =================================================================== #
297
+ # === :draggable_attribute
298
+ # =================================================================== #
299
+ if yielded.has_key? :draggable_attribute
300
+ content = content.dup
301
+ content[-1,0] = ' draggable="true"'
302
+ end
303
+ # =================================================================== #
304
+ # === :usemap
305
+ # =================================================================== #
306
+ if yielded.has_key? :usemap
307
+ content = content.dup
308
+ content[-1,0] = ' usemap="'+yielded[:usemap].to_s+'"'
309
+ end
310
+ # ===================================================================== #
311
+ # === Handle Symbols next
312
+ # ===================================================================== #
313
+ elsif yielded.is_a? Symbol
314
+ case yielded # case tag
315
+ # =================================================================== #
316
+ # === :draggable_attribute
317
+ # =================================================================== #
318
+ when :draggable_attribute,
319
+ :drag
320
+ content = content.dup
321
+ content[-1,0] = ' draggable="true"'
322
+ end
323
+ end
324
+ end
325
+ addnl(
326
+ content
327
+ )
328
+ end
329
+
330
+ # ========================================================================= #
331
+ # === draggable_image
332
+ #
333
+ # Example code how to tap into this method:
334
+ #
335
+ # draggable_image 'STD/USB_CONNECTION_DEVICE.png',
336
+ # 'mar1em bblack1 mars3em'
337
+ #
338
+ # It may be more convenient to use the alias name dimg().
339
+ # ========================================================================= #
340
+ def draggable_image(
341
+ url = '',
342
+ css_class = '',
343
+ the_id = '',
344
+ css_style = '',
345
+ alt_text = '',
346
+ &block
347
+ )
348
+ if the_id and the_id.empty?
349
+ the_id = (
350
+ 'drag_'+
351
+ File.basename(url.to_s).
352
+ downcase.
353
+ delete_suffix(
354
+ File.extname(url.to_s)
355
+ )
356
+ ).tr('.','_')
357
+ end
358
+ if the_id and !the_id.empty? and !the_id.start_with?('drag_')
359
+ the_id = the_id.dup
360
+ the_id.prepend('drag_')
361
+ end
362
+ if uses_sinatra? # Handle sinatra first.
363
+ draggable_img_base64(url, css_class, css_style)
364
+ else
365
+ img(url, css_class, the_id, css_style, alt_text) { :draggable_attribute }
366
+ end
367
+ end; alias draggable_img draggable_image # === draggable_img
368
+ alias dimg draggable_image # === dimg
369
+ alias dimage draggable_image # === dimage
370
+
371
+ # ========================================================================= #
372
+ # === return_this_base64_image
373
+ # ========================================================================= #
374
+ def return_this_base64_image(
375
+ i,
376
+ optional_css_class = '',
377
+ optional_css_id = ''
378
+ )
379
+ return ::Cyberweb.return_this_base64_image(
380
+ i,
381
+ optional_css_class,
382
+ optional_css_id
383
+ )
384
+ end
385
+
386
+ # ========================================================================= #
387
+ # === add_this_base64_image
388
+ # ========================================================================= #
389
+ def add_this_base64_image(
390
+ i,
391
+ optional_css_class = '',
392
+ optional_css_id = ''
393
+ )
394
+ addnl(
395
+ return_this_base64_image(
396
+ i,
397
+ optional_css_class,
398
+ optional_css_id
399
+ )
400
+ )
401
+ end
402
+
403
+ # ========================================================================= #
404
+ # === display_the_registered_base64_images
405
+ # ========================================================================= #
406
+ def display_the_registered_base64_images
407
+ return_the_registered_base64_images.each {|this_base64_image|
408
+ add_this_base64_image(this_base64_image)
409
+ }
410
+ end
411
+
412
+ # ========================================================================= #
413
+ # === draggable_image_nbr
414
+ # ========================================================================= #
415
+ def draggable_image_nbr(
416
+ url = '',
417
+ css_class = '',
418
+ the_id = '',
419
+ css_style = '',
420
+ alt_text = '',
421
+ &block
422
+ )
423
+ draggable_image(
424
+ url,
425
+ css_class,
426
+ the_id,
427
+ css_style,
428
+ alt_text,
429
+ &block
430
+ )
431
+ br
432
+ end
433
+
434
+ # ========================================================================= #
435
+ # === img_dir?
436
+ # ========================================================================= #
437
+ def img_dir?
438
+ Cyberweb.server_base_directory?+
439
+ 'data/'+
440
+ return_name_of_the_images_directory+'/'
441
+ end
442
+
443
+ # ========================================================================= #
444
+ # === return_path_to_the_images_directory
445
+ # ========================================================================= #
446
+ def return_path_to_the_images_directory(
447
+ path_to_use = relative_path?
448
+ )
449
+ return "#{path_to_use}data/#{return_name_of_the_images_directory}/"
450
+ end
451
+
452
+ # ========================================================================= #
453
+ # === draggable_string_image
454
+ # ========================================================================= #
455
+ def draggable_string_image(
456
+ url = '',
457
+ css_class = '',
458
+ the_id = '',
459
+ css_style = '',
460
+ alt_text = '',
461
+ &block
462
+ )
463
+ if the_id and the_id.empty?
464
+ the_id = 'drag_'+File.basename(url).downcase.delete_suffix(File.extname(url))
465
+ end
466
+ if the_id and !the_id.empty? and !the_id.start_with?('drag_')
467
+ the_id = the_id.dup
468
+ the_id.prepend('drag_')
469
+ end
470
+ string_img(url, css_class, the_id, css_style, alt_text) { :draggable_attribute }
471
+ end
472
+
473
+ # ========================================================================= #
474
+ # === in_dir_image
475
+ #
476
+ # This will use an image from the current working directory.
477
+ #
478
+ # The first argument to it should be the target file path of your local
479
+ # file system.
480
+ # ========================================================================= #
481
+ def in_dir_image(
482
+ path,
483
+ optional_css_class = '',
484
+ optional_id = :drag,
485
+ optional_css_style = ''
486
+ )
487
+ addnl HtmlTags.img(
488
+ path, optional_css_class, optional_id, optional_css_style
489
+ )
490
+ javascript_drag_and_drop(optional_id) if optional_id == :drag
491
+ end; alias indir_img in_dir_image # === indir_img
492
+ alias img_in_dir in_dir_image # === img_in_dir
493
+
494
+ # ========================================================================= #
495
+ # === return_absolute_image
496
+ # ========================================================================= #
497
+ def return_absolute_image(
498
+ remote_url,
499
+ css_class = '',
500
+ the_id = '',
501
+ css_style = ''
502
+ )
503
+ register_this_id(the_id)
504
+ return ::Cyberweb.string_absolute_img(
505
+ remote_url,
506
+ css_class,
507
+ the_id,
508
+ css_style
509
+ )
510
+ end
511
+
512
+ # ========================================================================= #
513
+ # === enable_drag_all_images
514
+ #
515
+ # We enable a configuration option through this method call here.
516
+ #
517
+ # Note that we will also automatically enable jquery in this case,
518
+ # as otherwise we could not drag the image in question around,
519
+ # which would sort of defeat the points of having this method
520
+ # in the first place - or it would require of you to manually
521
+ # enable jquery, which seems superfluous.
522
+ # ========================================================================= #
523
+ def enable_drag_all_images
524
+ do_use_jquery unless use_jquery?
525
+ @config['drag_all_images'] = true
526
+ end; alias drag_all_images enable_drag_all_images # === drag_all_images
527
+ alias drag_everything enable_drag_all_images # === drag_everything
528
+ alias do_drag_all_images enable_drag_all_images # === do_drag_all_image
529
+ alias do_enable_drag_all_images enable_drag_all_images # === do_enable_drag_all_image
530
+ alias drag_everything enable_drag_all_images # === drag_everything
531
+ alias all_images_will_be_draggable enable_drag_all_images # === all_images_will_be_draggable
532
+ alias enable_dragging enable_drag_all_images # === enable_dragging
533
+ alias enable_drag_and_drop enable_drag_all_images # === enable_drag_and_drop
534
+
535
+ # ========================================================================= #
536
+ # === relative_background_image
537
+ #
538
+ # We have to build the proper path, e. g.:
539
+ #
540
+ # url(data/images/WALLPAPERS/TheCalling_AnimeWallpaper.jpg);
541
+ #
542
+ # ========================================================================= #
543
+ def relative_background_image(this_image)
544
+ _ = ('../' * n_steps_to_the_base_directory?) +
545
+ "#{name_of_img_dir?}".dup
546
+ _ << this_image
547
+ background_image = "background-image: url(#{_});" # The string to append.
548
+ # ======================================================================= #
549
+ # Next, add some default assumptions here. No repeat is ok to
550
+ # use, centered background position - not sure.
551
+ # background-position: center;
552
+ # ======================================================================= #
553
+ add_this_css_style(
554
+ 'body {
555
+ '+background_image+'
556
+ background-repeat: no-repeat;
557
+ }'
558
+ )
559
+ end
560
+
561
+ # ========================================================================= #
562
+ # === background_image=
563
+ #
564
+ # Use this method to set the background image for a page.
565
+ #
566
+ # body {background-image: url("../IMG/");}'
567
+ #
568
+ # Since as of December 2011, if you pass an argument such as 'NJOY/#RAND'
569
+ # then we use this as instruction to fetch a random entry from this
570
+ # directory.
571
+ #
572
+ # Usage Example:
573
+ #
574
+ # w.background_image = 'NJOY/#RAND'
575
+ #
576
+ # ========================================================================= #
577
+ def background_image=(
578
+ i = '/blaaa/foo.png'
579
+ )
580
+ _ = "#{name_of_img_dir?}/".dup # Hardcoded for now. Yes, I am aware that this sucks.
581
+ if i.to_s.downcase.include? '#rand' # Then get path given. Example: w.background_image = 'NJOY/#RAND'
582
+ first_part = i.split('#').first
583
+ _ << first_part
584
+ _ << get_files_from(::Cyberweb.path_to_images?).sample.to_s
585
+ else
586
+ case i
587
+ when :random
588
+ _ << Dir[::Cyberweb.path_to_images?+'NJOY/*'].sample.
589
+ sub(/\/home\/x\/DATA\/IMG\//, '')
590
+ else
591
+ _ << i
592
+ end
593
+ end
594
+ background_img = "background-image: url(#{::Cyberweb.path_to_images?}#{_});" # The string to append.
595
+ # ======================================================================= #
596
+ # Next, add some default assumptions here. No repeat is ok to
597
+ # use, centered background position - not sure.
598
+ # background-position: center;
599
+ # ======================================================================= #
600
+ add_this_css_style(
601
+ 'body {
602
+ '+background_img+'
603
+ background-repeat: no-repeat;
604
+ }'
605
+ )
606
+ end; alias body_background_image background_image= # === body_background_image
607
+ alias background_image background_image= # === background_image
608
+
609
+ # ========================================================================= #
610
+ # === absolute_image
611
+ # ========================================================================= #
612
+ def absolute_image(
613
+ remote_url,
614
+ css_class = '',
615
+ the_id = '',
616
+ css_style = ''
617
+ )
618
+ register_this_id(the_id)
619
+ result = string_absolute_img(
620
+ remote_url,
621
+ css_class,
622
+ the_id,
623
+ css_style
624
+ )
625
+ addnl(result)
626
+ return result
627
+ end; alias absolute_img absolute_image # === absolute_img
628
+
629
+ # ========================================================================= #
630
+ # === return_the_registered_base64_images
631
+ # ========================================================================= #
632
+ def return_the_registered_base64_images
633
+ ::Cyberweb.base64_images
634
+ end
635
+
636
+ # ========================================================================= #
637
+ # === get_images
638
+ #
639
+ # This method will obtain all files from all subdirectories there as
640
+ # well.
641
+ # ========================================================================= #
642
+ def get_images(
643
+ from_this_dir = return_pwd
644
+ )
645
+ Dir["#{from_this_dir}/**/**"].select {|entry|
646
+ ::Cyberweb.is_image?(entry)
647
+ }
648
+ end; alias get_images_from get_images # === get_images_from
649
+
650
+ # ========================================================================= #
651
+ # === return_name_of_the_images_directory
652
+ #
653
+ # This method must always return the name of the default images directory,
654
+ # without any trailing '/'.
655
+ # ========================================================================= #
656
+ def return_name_of_the_images_directory
657
+ 'images'
658
+ end
659
+
660
+ # ========================================================================= #
661
+ # === display_all_images
662
+ #
663
+ # Use this when you just want to display all images.
664
+ #
665
+ # The first argument should be the location towards the
666
+ # directory that holds all images.
667
+ # ========================================================================= #
668
+ def display_all_images(
669
+ dir = ::Cyberweb.return_pwd,
670
+ optional_css = 'bblack1'
671
+ )
672
+ if dir.is_a? Hash
673
+ dir = dir.delete(:from) if dir.has_key? :from
674
+ end
675
+ if dir.include? '$'
676
+ dir = ConvertGlobalEnv[dir]
677
+ end
678
+ unless Dir.exist? dir
679
+ e 'It seems as if the directory at `'+dir+'` does not exist.'
680
+ end
681
+ all_the_images = get_images_from(dir)
682
+ all_the_images.each {|file|
683
+ file = rds(file)
684
+ h3 file, 'slateblue'
685
+ imgbr(
686
+ file,
687
+ optional_css
688
+ )
689
+ }
690
+ end; alias display_images_from display_all_images # === display_images_from
691
+ alias display_images display_all_images # === display_images
692
+
693
+ end; end