locomotive_cms 0.0.4 → 1.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (229) hide show
  1. data/Gemfile +15 -13
  2. data/README.textile +5 -4
  3. data/app/controllers/admin/api_contents_controller.rb +10 -1
  4. data/app/controllers/admin/base_controller.rb +2 -2
  5. data/app/controllers/admin/cross_domain_sessions_controller.rb +7 -4
  6. data/app/controllers/admin/current_sites_controller.rb +2 -0
  7. data/app/controllers/admin/imports_controller.rb +13 -19
  8. data/app/controllers/admin/installation_controller.rb +79 -0
  9. data/app/controllers/admin/pages_controller.rb +1 -1
  10. data/app/controllers/admin/passwords_controller.rb +2 -2
  11. data/app/controllers/admin/sessions_controller.rb +2 -2
  12. data/app/controllers/admin/sites_controller.rb +2 -0
  13. data/app/controllers/admin/theme_assets_controller.rb +1 -1
  14. data/app/controllers/application_controller.rb +1 -1
  15. data/app/helpers/admin/assets_helper.rb +0 -6
  16. data/app/helpers/admin/{login_helper.rb → box_helper.rb} +7 -3
  17. data/app/helpers/admin/custom_fields_helper.rb +2 -2
  18. data/app/models/asset_collection.rb +15 -3
  19. data/app/models/content_instance.rb +19 -0
  20. data/app/models/content_type.rb +21 -3
  21. data/app/models/extensions/page/tree.rb +63 -7
  22. data/app/models/page.rb +2 -0
  23. data/app/models/site.rb +15 -3
  24. data/app/uploaders/asset_uploader.rb +1 -1
  25. data/app/uploaders/theme_asset_uploader.rb +12 -1
  26. data/app/uploaders/theme_uploader.rb +19 -0
  27. data/app/views/admin/asset_collections/edit.html.haml +2 -2
  28. data/app/views/admin/asset_collections/new.html.haml +1 -1
  29. data/app/views/admin/assets/_form.html.haml +2 -2
  30. data/app/views/admin/content_types/_form.html.haml +2 -2
  31. data/app/views/admin/content_types/new.html.haml +1 -1
  32. data/app/views/admin/contents/_form.html.haml +2 -2
  33. data/app/views/admin/contents/index.html.haml +1 -1
  34. data/app/views/admin/cross_domain_sessions/new.html.haml +1 -1
  35. data/app/views/admin/current_sites/_form.html.haml +3 -3
  36. data/app/views/admin/current_sites/edit.html.haml +1 -1
  37. data/app/views/admin/errors/no_page.html.haml +1 -0
  38. data/app/views/admin/errors/no_site.html.haml +1 -0
  39. data/app/views/admin/imports/new.html.haml +11 -0
  40. data/app/views/admin/imports/show.html.haml +1 -1
  41. data/app/views/admin/installation/step_1.html.haml +24 -0
  42. data/app/views/admin/installation/step_2.html.haml +26 -0
  43. data/app/views/admin/installation/step_3.html.haml +23 -0
  44. data/app/views/{layouts/admin → admin/layouts}/application.html.haml +0 -0
  45. data/app/views/admin/layouts/box.html.haml +21 -0
  46. data/app/views/admin/layouts/error.html.haml +1 -0
  47. data/app/views/admin/my_accounts/edit.html.haml +1 -1
  48. data/app/views/admin/pages/_form.html.haml +2 -3
  49. data/app/views/admin/pages/_page.html.haml +4 -2
  50. data/app/views/admin/pages/index.html.haml +1 -1
  51. data/app/views/admin/passwords/edit.html.haml +2 -2
  52. data/app/views/admin/passwords/new.html.haml +2 -2
  53. data/app/views/admin/sessions/new.html.haml +2 -2
  54. data/app/views/admin/shared/_head.html.haml +4 -5
  55. data/app/views/admin/shared/menu/_contents.html.haml +1 -1
  56. data/app/views/admin/sites/_form.html.haml +3 -3
  57. data/app/views/admin/snippets/_form.html.haml +2 -2
  58. data/app/views/admin/theme_assets/_form.html.haml +2 -2
  59. data/app/views/admin/theme_assets/index.html.haml +1 -1
  60. data/config/application.rb +1 -3
  61. data/config/assets.yml +96 -0
  62. data/config/environments/development.rb +1 -6
  63. data/config/environments/production.rb +1 -1
  64. data/config/environments/test.rb +1 -5
  65. data/config/initializers/carrierwave.rb +17 -0
  66. data/config/initializers/locomotive.rb +14 -0
  67. data/config/locales/admin_ui_en.yml +33 -1
  68. data/config/locales/admin_ui_fr.yml +34 -1
  69. data/config/locales/default_en.yml +1 -0
  70. data/config/locales/default_fr.yml +1 -0
  71. data/config/locales/flash.en.yml +1 -0
  72. data/config/locales/flash.fr.yml +1 -0
  73. data/config/mongoid.yml +13 -5
  74. data/config/routes.rb +6 -1
  75. data/lib/generators/locomotive/install/install_generator.rb +18 -10
  76. data/lib/generators/locomotive/install/templates/README +23 -13
  77. data/lib/generators/locomotive/install/templates/locomotive.rb +15 -1
  78. data/lib/locomotive/carrierwave.rb +1 -0
  79. data/lib/locomotive/configuration.rb +3 -1
  80. data/lib/locomotive/custom_fields.rb +0 -1
  81. data/lib/locomotive/delayed_job.rb +1 -2
  82. data/lib/locomotive/engine.rb +24 -7
  83. data/lib/locomotive/heroku.rb +1 -0
  84. data/lib/locomotive/httparty/webservice.rb +12 -1
  85. data/lib/locomotive/import.rb +2 -0
  86. data/lib/locomotive/import/asset_collections.rb +40 -8
  87. data/lib/locomotive/import/assets.rb +20 -12
  88. data/lib/locomotive/import/base.rb +46 -0
  89. data/lib/locomotive/import/content_types.rb +51 -15
  90. data/lib/locomotive/import/job.rb +106 -11
  91. data/lib/locomotive/import/logger.rb +13 -0
  92. data/lib/locomotive/import/pages.rb +79 -26
  93. data/lib/locomotive/import/site.rb +3 -5
  94. data/lib/locomotive/import/snippets.rb +6 -8
  95. data/lib/locomotive/inherited_resources.rb +1 -0
  96. data/lib/locomotive/liquid/drops/asset_collections.rb +4 -4
  97. data/lib/locomotive/liquid/drops/contents.rb +21 -16
  98. data/lib/locomotive/liquid/drops/page.rb +4 -0
  99. data/lib/locomotive/liquid/filters/html.rb +15 -29
  100. data/lib/locomotive/liquid/tags/consume.rb +1 -1
  101. data/lib/locomotive/liquid/tags/nav.rb +48 -17
  102. data/lib/locomotive/liquid/tags/paginate.rb +3 -3
  103. data/lib/locomotive/middlewares/fonts.rb +3 -11
  104. data/lib/locomotive/misc_form_builder.rb +2 -7
  105. data/lib/locomotive/railties/tasks.rake +16 -0
  106. data/lib/locomotive/regexps.rb +1 -1
  107. data/lib/locomotive/render.rb +9 -3
  108. data/lib/locomotive/routing/site_dispatcher.rb +10 -6
  109. data/lib/locomotive/version.rb +1 -1
  110. data/public/images/admin/box/buttons/right_bg.png +0 -0
  111. data/public/javascripts/admin/aloha/VERSION.txt +1 -1
  112. data/public/javascripts/admin/aloha/aloha-nodeps.js +140 -101
  113. data/public/javascripts/admin/aloha/aloha.js +193 -105
  114. data/public/javascripts/admin/aloha/css/aloha.css +65 -4
  115. data/public/javascripts/admin/aloha/deps/prettyPhoto/resources/css/prettyPhoto.css +2 -2
  116. data/public/javascripts/admin/aloha/i18n/de.dict +2 -0
  117. data/public/javascripts/admin/aloha/i18n/en.dict +2 -0
  118. data/public/javascripts/admin/aloha/i18n/pl.dict +5 -0
  119. data/public/javascripts/admin/aloha/images/base.png +0 -0
  120. data/public/javascripts/admin/aloha/images/base_big.png +0 -0
  121. data/public/javascripts/admin/aloha/images/base_multi.png +0 -0
  122. data/public/javascripts/admin/aloha/images/fade_in.png +0 -0
  123. data/public/javascripts/admin/aloha/images/fade_out.png +0 -0
  124. data/public/javascripts/admin/aloha/images/gentics_logo.png +0 -0
  125. data/public/javascripts/admin/aloha/images/grabhandle.png +0 -0
  126. data/public/javascripts/admin/aloha/images/maximize.png +0 -0
  127. data/public/javascripts/admin/aloha/images/pin.png +0 -0
  128. data/public/javascripts/admin/aloha/images/removeformat.png +0 -0
  129. data/public/javascripts/admin/aloha/plugins/com.example.aloha.plugins.Product/examples/triSports.css +86 -0
  130. data/public/javascripts/admin/aloha/plugins/com.example.aloha.plugins.Product/examples/triSports.html +44 -0
  131. data/public/javascripts/admin/aloha/plugins/com.example.aloha.plugins.Product/i18n/de.dict +4 -0
  132. data/public/javascripts/admin/aloha/plugins/com.example.aloha.plugins.Product/i18n/en.dict +4 -0
  133. data/public/javascripts/admin/aloha/plugins/com.example.aloha.plugins.Product/i18n/fr.dict +4 -0
  134. data/public/javascripts/admin/aloha/plugins/com.example.aloha.plugins.Product/plugin.js +1 -0
  135. data/public/javascripts/admin/aloha/plugins/com.example.aloha.plugins.Product/product.js +1 -0
  136. data/public/javascripts/admin/aloha/plugins/com.example.aloha.plugins.Product/resources/2xu-wetsuit.jpg +0 -0
  137. data/public/javascripts/admin/aloha/plugins/com.example.aloha.plugins.Product/resources/asics-noosa.jpg +0 -0
  138. data/public/javascripts/admin/aloha/plugins/com.example.aloha.plugins.Product/resources/fivefingers-kso.jpg +0 -0
  139. data/public/javascripts/admin/aloha/plugins/com.example.aloha.plugins.Product/resources/kuota-kueen-k.jpg +0 -0
  140. data/public/javascripts/admin/aloha/plugins/com.example.aloha.plugins.Product/resources/mizuno-wave-musha2.jpg +0 -0
  141. data/public/javascripts/admin/aloha/plugins/com.example.aloha.plugins.Product/resources/product.css +69 -0
  142. data/public/javascripts/admin/aloha/plugins/com.example.aloha.plugins.Product/resources/product_button.gif +0 -0
  143. data/public/javascripts/admin/aloha/plugins/com.example.aloha.plugins.Product/resources/simplon-mrt.jpg +0 -0
  144. data/public/javascripts/admin/aloha/plugins/com.example.aloha.plugins.Product/resources/trek-fuel-ex.jpg +0 -0
  145. data/public/javascripts/admin/aloha/plugins/com.example.aloha.plugins.Product/resources/trisports.jpg +0 -0
  146. data/public/javascripts/admin/aloha/plugins/com.example.aloha.plugins.Product/resources/zoggs-predator.jpg +0 -0
  147. data/public/javascripts/admin/aloha/plugins/{com.example.aloha.DummySave → com.example.aloha.plugins.Save}/i18n/de.dict +0 -0
  148. data/public/javascripts/admin/aloha/plugins/{com.example.aloha.DummySave → com.example.aloha.plugins.Save}/i18n/en.dict +0 -0
  149. data/public/javascripts/admin/aloha/plugins/{com.example.aloha.DummySave → com.example.aloha.plugins.Save}/i18n/fi.dict +0 -0
  150. data/public/javascripts/admin/aloha/plugins/{com.example.aloha.DummySave → com.example.aloha.plugins.Save}/i18n/fr.dict +0 -0
  151. data/public/javascripts/admin/aloha/plugins/{com.example.aloha.DummySave → com.example.aloha.plugins.Save}/i18n/it.dict +0 -0
  152. data/public/javascripts/admin/aloha/plugins/{com.example.aloha.DummySave → com.example.aloha.plugins.Save}/plugin.js +0 -0
  153. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Abbr/examples/AlohaAbbr.css +48 -0
  154. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Abbr/examples/AlohaAbbr.html +69 -0
  155. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Abbr/i18n/de.dict +4 -0
  156. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Abbr/i18n/en.dict +4 -0
  157. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Abbr/plugin.js +7 -0
  158. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Format/i18n/pl.dict +30 -0
  159. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Format/plugin.js +1 -1
  160. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.HighlightEditables/plugin.js +1 -1
  161. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Link/LinkList.js +7 -0
  162. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Link/delicious.js +7 -0
  163. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Link/i18n/pl.dict +4 -0
  164. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Link/plugin.js +1 -1
  165. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.LinkChecker/css/LinkChecker.css +14 -0
  166. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.LinkChecker/examples/AlohaLinkChecker.css +49 -0
  167. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.LinkChecker/examples/AlohaLinkChecker.html +82 -0
  168. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.LinkChecker/i18n/en.dict +27 -0
  169. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.LinkChecker/plugin.js +7 -0
  170. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.LinkChecker/proxy.php +235 -0
  171. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.List/plugin.js +1 -1
  172. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Paste/plugin.js +7 -0
  173. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Paste/wordpastehandler.js +7 -0
  174. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.TOC/i18n/de.dict +1 -0
  175. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.TOC/i18n/en.dict +1 -0
  176. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.TOC/plugin.js +1 -1
  177. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Table/i18n/de.dict +2 -0
  178. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Table/i18n/en.dict +2 -0
  179. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Table/i18n/pl.dict +12 -0
  180. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Table/plugin.js +1 -1
  181. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Table/resources/table.css +28 -110
  182. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Table/resources/wai_green.png +0 -0
  183. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Table/resources/wai_red.png +0 -0
  184. data/public/javascripts/admin/asset_collections.js +11 -7
  185. data/public/javascripts/admin/contents.js +3 -1
  186. data/public/javascripts/admin/site.js +9 -3
  187. data/public/javascripts/admin/snippets.js +1 -1
  188. data/public/javascripts/admin/utils.js +5 -3
  189. data/public/stylesheets/admin/application.css +1 -1
  190. data/public/stylesheets/admin/box.css +5 -5
  191. data/public/stylesheets/admin/buttons.css +0 -5
  192. data/public/stylesheets/admin/formtastic_changes.css +5 -12
  193. data/public/stylesheets/admin/inline_editor.css +22 -5
  194. data/public/stylesheets/admin/installation.css +50 -0
  195. data/public/stylesheets/admin/layout.css +9 -4
  196. data/public/stylesheets/admin/safari.css +15 -0
  197. metadata +188 -131
  198. data/app/controllers/home_controller.rb +0 -7
  199. data/app/views/admin/snippets/index.html.haml +0 -15
  200. data/app/views/home/show.html.haml +0 -4
  201. data/app/views/layouts/admin/box.html.haml +0 -19
  202. data/app/views/layouts/application.html.haml +0 -7
  203. data/lib/generators/locomotive/copy_assets/copy_assets_generator.rb +0 -14
  204. data/public/javascripts/admin/aloha/plugins/com.example.aloha.DummyDC/i18n/de.dict +0 -2
  205. data/public/javascripts/admin/aloha/plugins/com.example.aloha.DummyDC/i18n/en.dict +0 -2
  206. data/public/javascripts/admin/aloha/plugins/com.example.aloha.DummyDC/i18n/eo.dict +0 -2
  207. data/public/javascripts/admin/aloha/plugins/com.example.aloha.DummyDC/i18n/fi.dict +0 -2
  208. data/public/javascripts/admin/aloha/plugins/com.example.aloha.DummyDC/i18n/fr.dict +0 -2
  209. data/public/javascripts/admin/aloha/plugins/com.example.aloha.DummyDC/i18n/it.dict +0 -2
  210. data/public/javascripts/admin/aloha/plugins/com.example.aloha.DummyDC/plugin.js +0 -7
  211. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.GCN/i18n/de.dict +0 -20
  212. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.GCN/i18n/en.dict +0 -20
  213. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.GCN/i18n/eo.dict +0 -16
  214. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.GCN/i18n/fi.dict +0 -20
  215. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.GCN/i18n/fr.dict +0 -16
  216. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.GCN/i18n/it.dict +0 -20
  217. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.GCN/plugin.js +0 -7
  218. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Link/css/jquery.autocomplete.css +0 -48
  219. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Link/deps/jquery.autocomplete.js +0 -1
  220. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Link/ressource.js +0 -7
  221. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Link/ressourcedummy.js +0 -7
  222. data/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Link/ressourceregistry.js +0 -7
  223. data/public/javascripts/admin/aloha/plugins/eu.iksproject.plugins.Loader/plugin.js +0 -1
  224. data/public/javascripts/admin/aloha/plugins/eu.iksproject.plugins.Person/i18n/en.dict +0 -2
  225. data/public/javascripts/admin/aloha/plugins/eu.iksproject.plugins.Person/i18n/fi.dict +0 -2
  226. data/public/javascripts/admin/aloha/plugins/eu.iksproject.plugins.Person/i18n/fr.dict +0 -2
  227. data/public/javascripts/admin/aloha/plugins/eu.iksproject.plugins.Person/person.css +0 -3
  228. data/public/javascripts/admin/aloha/plugins/eu.iksproject.plugins.Person/plugin.js +0 -1
  229. data/public/javascripts/admin/aloha/plugins/simpletable/plugin.js.deactivated +0 -2330
@@ -0,0 +1,69 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
+ <title>Aloha, Abbreviations !</title>
6
+ <script>GENTICS_Aloha_base="../../../";</script>
7
+ <script type="text/javascript" src="../../../core/include.js"></script>
8
+ <script type="text/javascript" src="../../../plugins/com.gentics.aloha.plugins.Format/plugin.js"></script>
9
+ <script type="text/javascript" src="../plugin.js"></script>
10
+
11
+
12
+ <link rel="stylesheet" href="AlohaAbbr.css" />
13
+
14
+ <!-- turn an element into editable Aloha continuous text -->
15
+ <script type="text/javascript">
16
+ GENTICS.Aloha.settings = {
17
+ logLevels: {'error': true, 'warn': true, 'info': true, 'debug': false},
18
+ errorhandling : false,
19
+ ribbon: false,
20
+ "i18n": {
21
+ // let the system detect the users language
22
+ //"acceptLanguage": '<?=$_SERVER['HTTP_ACCEPT_LANGUAGE']?>'
23
+ "acceptLanguage": 'de-de,de;q=0.8,it;q=0.6,en-us;q=0.7,en;q=0.2'
24
+ },
25
+ "plugins": {
26
+ "com.gentics.aloha.plugins.Abbr": {
27
+ 'config': ['abbr']
28
+ }
29
+ }
30
+ };
31
+
32
+ $(document).ready(function() {
33
+ $('#content').aloha();
34
+ });
35
+ </script>
36
+ </head>
37
+ <body>
38
+ <div id="main">
39
+ <div id="bodyContent">
40
+ <div id="content" class="article">
41
+ <h1>Aloha</h1>
42
+ <h2>Etymology</h2>
43
+ <p>The word aloha derives from the Proto-Polynesian root <i>*qalofa</i>. It has cognates in other Polynesian languages, such as Samoan alofa
44
+ and Māori aroha, also meaning "love."</p>
45
+ <p><abbr title="Aloha Editor">AE</abbr> is the word's most advanced browser based <abbr title="Rich Text Editor">RTE</abbr> made with aloha passion.</p>
46
+ <p>A folk etymology claims that it derives from a compound of the Hawaiian words alo meaning "presence", "front", "face", or "share"; and
47
+ ha, meaning "breath of life" or "essence of life." Although alo does indeed mean "presence" etc., the word for breath is spelled with a macron
48
+ or kahakō over the a (hā) whereas the word aloha does not have a long a.</p>
49
+ <h2>Usage</h2>
50
+ <p>Before contact with the West, the words used for greeting were welina and anoai. Today, "aloha kakahiaka" is the phrase for "good
51
+ morning." "Aloha ʻauinalā" means "good afternoon" and "aloha ahiahi" means "good evening." "Aloha kākou" is a common form of "welcome to all."</p>
52
+ <p>In modern Hawaiʻi, numerous businesses have aloha in their names, with more than 3 pages of listings in the Oʻahu phone book alone.</p>
53
+ <h2>Trends</h2>
54
+ <p>Recent trends are popularizing the term elsewhere in the United States. Popular entertainer, Broadway star and Hollywood actress Bette
55
+ Midler, born in Honolulu, uses the greeting frequently in national appearances. The word was also used frequently in the hit television drama
56
+ Hawaii Five-O. In the influential 1982 film comedy Fast Times at Ridgemont High, the eccentric teacher Mr. Hand makes use of the greeting. The
57
+ Aloha Spirit is a major concept in Lilo and Stitch, a very popular Disney series of movies and TV shows, set in Hawaiʻi. The drama series Lost,
58
+ shot in Hawaiʻi, has a thank you note at the end of the credits saying "We thank the people of Hawaiʻi and their Aloha Spirit". Aloha is a term
59
+ also used in the Nickelodeon program Rocket Power.</p>
60
+ <ul>
61
+ <li>Arguably the most famous historical Hawaiian song, "Aloha ʻOe" was written by the last queen of Hawaii, Liliʻuokalani.</li>
62
+ <li>The term inspired the name of the ALOHA Protocol introduced in the 1970s by the University of Hawaii.</li>
63
+ <li>In Hawaii someone can be said to have or show aloha in the way they treat others; whether family, friend, neighbor or stranger.</li>
64
+ </ul>
65
+ </div>
66
+ </div>
67
+ </div>
68
+ </body>
69
+ </html>
@@ -0,0 +1,4 @@
1
+ floatingmenu.tab.abbr=Abkürzung
2
+ button.addabbr.tooltip=Abkürzung einfügen
3
+ button.abbr.tooltip=Als Abkürzung formatieren
4
+ newabbr.defaulttext=Abb
@@ -0,0 +1,4 @@
1
+ floatingmenu.tab.abbr=Abbreviation
2
+ button.addabbr.tooltip=insert abbreviation
3
+ button.abbr.tooltip=format as abbreviation
4
+ newabbr.defaulttext=Abbr
@@ -0,0 +1,7 @@
1
+ /*
2
+ * Aloha Editor
3
+ * Author & Copyright (c) 2010 Gentics Software GmbH
4
+ * aloha-sales@gentics.com
5
+ * Licensed unter the terms of http://www.aloha-editor.com/license.html
6
+ */
7
+ GENTICS.Aloha.Abbr=new GENTICS.Aloha.Plugin("com.gentics.aloha.plugins.Abbr");GENTICS.Aloha.Abbr.languages=["en","de"];GENTICS.Aloha.Abbr.config=["abbr"];GENTICS.Aloha.Abbr.init=function(){this.createButtons();this.subscribeEvents();this.bindInteractions()};GENTICS.Aloha.Abbr.createButtons=function(){var that=this;this.formatAbbrButton=new GENTICS.Aloha.ui.Button({iconClass:"GENTICS_button GENTICS_button_abbr",size:"small",onclick:function(){that.formatAbbr()},tooltip:this.i18n("button.abbr.tooltip"),toggle:true});GENTICS.Aloha.FloatingMenu.addButton("GENTICS.Aloha.continuoustext",this.formatAbbrButton,GENTICS.Aloha.i18n(GENTICS.Aloha,"floatingmenu.tab.format"),1);this.insertAbbrButton=new GENTICS.Aloha.ui.Button({iconClass:"GENTICS_button GENTICS_button_abbr",size:"small",onclick:function(){that.insertAbbr(false)},tooltip:this.i18n("button.addabbr.tooltip"),toggle:false});GENTICS.Aloha.FloatingMenu.addButton("GENTICS.Aloha.continuoustext",this.insertAbbrButton,GENTICS.Aloha.i18n(GENTICS.Aloha,"floatingmenu.tab.insert"),1);GENTICS.Aloha.FloatingMenu.createScope(this.getUID("abbr"),"GENTICS.Aloha.continuoustext");this.abbrField=new GENTICS.Aloha.ui.AttributeField({width:320});GENTICS.Aloha.FloatingMenu.addButton(this.getUID("abbr"),this.abbrField,this.i18n("floatingmenu.tab.abbr"),1)};GENTICS.Aloha.Abbr.bindInteractions=function(){var that=this;this.abbrField.addListener("blur",function(obj,event){if(this.getValue()==""){that.removeAbbr()}});for(var i=0;i<GENTICS.Aloha.editables.length;i++){GENTICS.Aloha.editables[i].obj.keydown(function(e){if(e.metaKey&&e.which==71){if(that.findAbbrMarkup()){GENTICS.Aloha.FloatingMenu.userActivatedTab=that.i18n("floatingmenu.tab.abbr");GENTICS.Aloha.FloatingMenu.doLayout();that.abbrField.focus()}else{that.insertAbbr()}return false}})}};GENTICS.Aloha.Abbr.subscribeEvents=function(){var that=this;GENTICS.Aloha.EventRegistry.subscribe(GENTICS.Aloha,"selectionChanged",function(event,rangeObject){if(GENTICS.Aloha.activeEditable){var config=that.getEditableConfig(GENTICS.Aloha.activeEditable.obj);if(jQuery.inArray("abbr",config)!=-1){that.formatAbbrButton.show();that.insertAbbrButton.show()}else{that.formatAbbrButton.hide();that.insertAbbrButton.hide();return}var foundMarkup=that.findAbbrMarkup(rangeObject);if(foundMarkup){that.insertAbbrButton.hide();that.formatAbbrButton.setPressed(true);GENTICS.Aloha.FloatingMenu.setScope(that.getUID("abbr"));that.abbrField.setTargetObject(foundMarkup,"title")}else{that.formatAbbrButton.setPressed(false);that.abbrField.setTargetObject(null)}GENTICS.Aloha.FloatingMenu.doLayout()}})};GENTICS.Aloha.Abbr.findAbbrMarkup=function(range){if(typeof range=="undefined"){var range=GENTICS.Aloha.Selection.getRangeObject()}if(GENTICS.Aloha.activeEditable){return range.findMarkup(function(){return this.nodeName.toLowerCase()=="abbr"},GENTICS.Aloha.activeEditable.obj)}else{return null}};GENTICS.Aloha.Abbr.formatAbbr=function(){var range=GENTICS.Aloha.Selection.getRangeObject();if(GENTICS.Aloha.activeEditable){if(this.findAbbrMarkup(range)){this.removeAbbr()}else{this.insertAbbr()}}};GENTICS.Aloha.Abbr.insertAbbr=function(extendToWord){if(this.findAbbrMarkup(range)){return}GENTICS.Aloha.FloatingMenu.userActivatedTab=this.i18n("floatingmenu.tab.abbr");var range=GENTICS.Aloha.Selection.getRangeObject();if(range.isCollapsed()&&extendToWord!=false){GENTICS.Utils.Dom.extendToWord(range)}if(range.isCollapsed()){var abbrText=this.i18n("newabbr.defaulttext");var newAbbr=jQuery('<abbr title="">'+abbrText+"</abbr>");GENTICS.Utils.Dom.insertIntoDOM(newAbbr,range,jQuery(GENTICS.Aloha.activeEditable.obj));range.startContainer=range.endContainer=newAbbr.contents().get(0);range.startOffset=0;range.endOffset=abbrText.length}else{var newAbbr=jQuery('<abbr title=""></abbr>');GENTICS.Utils.Dom.addMarkup(range,newAbbr,false)}range.select();this.abbrField.focus()};GENTICS.Aloha.Abbr.removeAbbr=function(){var range=GENTICS.Aloha.Selection.getRangeObject();var foundMarkup=this.findAbbrMarkup();if(foundMarkup){GENTICS.Utils.Dom.removeFromDOM(foundMarkup,range,true);GENTICS.Aloha.activeEditable.obj[0].focus();range.select()}};GENTICS.Aloha.Abbr.makeClean=function(obj){};
@@ -0,0 +1,30 @@
1
+ button.b.tooltip=Pogrubienie
2
+ button.i.tooltip=Kursywa
3
+ button.u.tooltip=Podkreślenie
4
+ button.cite.tooltip=Cytat
5
+ button.q.tooltip=
6
+ button.code.tooltip=Kod
7
+ button.abbr.tooltip=Skrót
8
+ button.del.tooltip=Przekreślenie
9
+ button.sub.tooltip=Indeks dolny
10
+ button.sup.tooltip=Indeks górny
11
+ button.p.tooltip=Paragraf
12
+ button.h1.tooltip=Nagłówek 1
13
+ button.h2.tooltip=Nagłówek 2
14
+ button.h3.tooltip=Nagłówek 3
15
+ button.h4.tooltip=Nagłówek 4
16
+ button.h5.tooltip=Nagłówek 5
17
+ button.h6.tooltip=Nagłówek 6
18
+ button.pre.tooltip=Tekst preformatowany
19
+ button.title.tooltip=Tytuł
20
+ button.removeFormat.tooltip=Usuń formatowanie
21
+ button.removeFormat.text=Usuń formatowanie
22
+ GENTICS_button_p=GENTICS_button_p
23
+ GENTICS_button_h1=GENTICS_button_h1
24
+ GENTICS_button_h2=GENTICS_button_h2
25
+ GENTICS_button_h3=GENTICS_button_h3
26
+ GENTICS_button_h4=GENTICS_button_h4
27
+ GENTICS_button_h5=GENTICS_button_h5
28
+ GENTICS_button_h6=GENTICS_button_h6
29
+ GENTICS_button_pre=GENTICS_button_pre
30
+ GENTICS_button_title=GENTICS_button_title
@@ -4,4 +4,4 @@
4
4
  * aloha-sales@gentics.com
5
5
  * Licensed unter the terms of http://www.aloha-editor.com/license.html
6
6
  */
7
- GENTICS.Aloha.Format=new GENTICS.Aloha.Plugin("com.gentics.aloha.plugins.Format");GENTICS.Aloha.Format.languages=["en","de","fr","eo","fi","ru","it"];GENTICS.Aloha.Format.config=["b","i","del","sub","sup","p","title","h1","h2","h3","h4","h5","h6","pre","removeFormat"];GENTICS.Aloha.Format.init=function(){this.initButtons();var that=this;GENTICS.Aloha.EventRegistry.subscribe(GENTICS.Aloha,"editableActivated",function(e,params){that.applyButtonConfig(params.editable.obj)})};GENTICS.Aloha.Format.applyButtonConfig=function(obj){config=this.getEditableConfig(obj);for(var button in this.buttons){if(jQuery.inArray(button,config)!=-1){this.buttons[button].button.show()}else{this.buttons[button].button.hide()}}for(var i in this.multiSplitItems){if(jQuery.inArray(this.multiSplitItems[i].name,config)!=-1){this.multiSplitButton.extButton.showItem(this.multiSplitItems[i].name)}else{this.multiSplitButton.extButton.hideItem(this.multiSplitItems[i].name)}}};GENTICS.Aloha.Format.initButtons=function(){var scope="GENTICS.Aloha.continuoustext";this.buttons={};var that=this;this.multiSplitItems=new Array();this.multiSplitButton;jQuery.each(GENTICS.Aloha.Format.config,function(j,button){switch(button){case"b":case"i":case"cite":case"q":case"code":case"abbr":case"del":case"sub":case"sup":that.buttons[button]={button:new GENTICS.Aloha.ui.Button({iconClass:"GENTICS_button GENTICS_button_"+button,size:"small",onclick:function(){if(GENTICS.Aloha.activeEditable){GENTICS.Aloha.activeEditable.obj[0].focus()}var markup=jQuery("<"+button+"></"+button+">");var rangeObject=GENTICS.Aloha.Selection.rangeObject;var foundMarkup=rangeObject.findMarkup(function(){return this.nodeName.toLowerCase()==markup.get(0).nodeName.toLowerCase()},GENTICS.Aloha.activeEditable.obj);if(foundMarkup){if(rangeObject.isCollapsed()){GENTICS.Utils.Dom.removeFromDOM(foundMarkup,rangeObject,true)}else{GENTICS.Utils.Dom.removeMarkup(rangeObject,markup,GENTICS.Aloha.activeEditable.obj)}}else{if(rangeObject.isCollapsed()){GENTICS.Utils.Dom.extendToWord(rangeObject)}GENTICS.Utils.Dom.addMarkup(rangeObject,markup)}rangeObject.select();return false},tooltip:that.i18n("button."+button+".tooltip"),toggle:true}),markup:jQuery("<"+button+"></"+button+">")};GENTICS.Aloha.FloatingMenu.addButton(scope,that.buttons[button].button,GENTICS.Aloha.i18n(GENTICS.Aloha,"floatingmenu.tab.format"),1);break;case"p":case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":case"pre":that.multiSplitItems.push({name:button,tooltip:that.i18n("button."+button+".tooltip"),iconClass:"GENTICS_button "+that.i18n("GENTICS_button_"+button),markup:jQuery("<"+button+"></"+button+">"),click:function(){if(GENTICS.Aloha.activeEditable){GENTICS.Aloha.activeEditable.obj[0].focus()}GENTICS.Aloha.Selection.changeMarkupOnSelection(jQuery("<"+button+"></"+button+">"))}});break;case"removeFormat":that.multiSplitItems.push({name:button,text:that.i18n("button."+button+".text"),tooltip:that.i18n("button."+button+".tooltip"),iconClass:"GENTICS_button GENTICS_button_"+button,wide:true,click:function(){GENTICS.Aloha.Format.removeFormat()}});break;default:GENTICS.Aloha.log("warn",this,'Button "'+button+'" is not defined');break}});if(this.multiSplitItems.length>0){this.multiSplitButton=new GENTICS.Aloha.ui.MultiSplitButton({items:this.multiSplitItems});GENTICS.Aloha.FloatingMenu.addButton(scope,this.multiSplitButton,GENTICS.Aloha.i18n(GENTICS.Aloha,"floatingmenu.tab.format"),3)}GENTICS.Aloha.EventRegistry.subscribe(GENTICS.Aloha,"selectionChanged",function(event,rangeObject){jQuery.each(that.buttons,function(index,button){for(var i=0;i<rangeObject.markupEffectiveAtStart.length;i++){var effectiveMarkup=rangeObject.markupEffectiveAtStart[i];if(GENTICS.Aloha.Selection.standardTextLevelSemanticsComparator(effectiveMarkup,button.markup)){button.button.setPressed(true);var statusWasSet=true}}if(!statusWasSet){button.button.setPressed(false)}});if(that.multiSplitItems.length>0){var foundMultiSplit=false;for(var i=0;i<rangeObject.markupEffectiveAtStart.length&&!foundMultiSplit;i++){var effectiveMarkup=rangeObject.markupEffectiveAtStart[i];for(var j=0;j<that.multiSplitItems.length&&!foundMultiSplit;j++){var multiSplitItem=that.multiSplitItems[j];if(!multiSplitItem.markup){continue}if(GENTICS.Aloha.Selection.standardTextLevelSemanticsComparator(effectiveMarkup,multiSplitItem.markup)){that.multiSplitButton.setActiveItem(multiSplitItem.name);foundMultiSplit=true}}}if(!foundMultiSplit){that.multiSplitButton.setActiveItem(null)}}})};GENTICS.Aloha.Format.removeFormat=function(){GENTICS.Aloha.Selection.changeMarkupOnSelection(jQuery("<p></p>"));var formats=["b","i","cite","q","code","abbr","del","sub","sup"];var rangeObject=GENTICS.Aloha.Selection.rangeObject;var startObj=jQuery(rangeObject.startContainer);var limitObj=jQuery(rangeObject.limitObject);if(rangeObject.isCollapsed()||startObj===limitObj){return}var parent=startObj.parent();while(parent.get(0)!==limitObj.get(0)){var index=formats.indexOf(parent.get(0).nodeName.toLowerCase());parent=parent.parent();if(index!=-1){GENTICS.Aloha.Selection.changeMarkupOnSelection(jQuery("<"+formats[index]+"></"+formats[index]+">"));formats.splice(index,1)}}for(var i in formats){GENTICS.Aloha.Selection.changeMarkupOnSelection(jQuery("<"+formats[i]+"></"+formats[i]+">"));GENTICS.Aloha.Selection.changeMarkupOnSelection(jQuery("<"+formats[i]+"></"+formats[i]+">"))}};GENTICS.Aloha.Format.toString=function(){return"com.gentics.aloha.plugins.Format"};
7
+ GENTICS.Aloha.Format=new GENTICS.Aloha.Plugin("com.gentics.aloha.plugins.Format");GENTICS.Aloha.Format.languages=["en","de","fr","eo","fi","ru","it","pl"];GENTICS.Aloha.Format.config=["b","i","del","sub","sup","p","title","h1","h2","h3","h4","h5","h6","pre","removeFormat"];GENTICS.Aloha.Format.init=function(){this.initButtons();var that=this;GENTICS.Aloha.EventRegistry.subscribe(GENTICS.Aloha,"editableActivated",function(e,params){that.applyButtonConfig(params.editable.obj)})};GENTICS.Aloha.Format.applyButtonConfig=function(obj){config=this.getEditableConfig(obj);for(var button in this.buttons){if(jQuery.inArray(button,config)!=-1){this.buttons[button].button.show()}else{this.buttons[button].button.hide()}}for(var i in this.multiSplitItems){if(jQuery.inArray(this.multiSplitItems[i].name,config)!=-1){this.multiSplitButton.extButton.showItem(this.multiSplitItems[i].name)}else{this.multiSplitButton.extButton.hideItem(this.multiSplitItems[i].name)}}};GENTICS.Aloha.Format.initButtons=function(){var scope="GENTICS.Aloha.continuoustext";this.buttons={};var that=this;this.multiSplitItems=new Array();this.multiSplitButton;jQuery.each(GENTICS.Aloha.Format.config,function(j,button){switch(button){case"b":case"i":case"cite":case"q":case"code":case"abbr":case"del":case"sub":case"sup":that.buttons[button]={button:new GENTICS.Aloha.ui.Button({iconClass:"GENTICS_button GENTICS_button_"+button,size:"small",onclick:function(){if(GENTICS.Aloha.activeEditable){GENTICS.Aloha.activeEditable.obj[0].focus()}var markup=jQuery("<"+button+"></"+button+">");var rangeObject=GENTICS.Aloha.Selection.rangeObject;var foundMarkup=rangeObject.findMarkup(function(){return this.nodeName.toLowerCase()==markup.get(0).nodeName.toLowerCase()},GENTICS.Aloha.activeEditable.obj);if(foundMarkup){if(rangeObject.isCollapsed()){GENTICS.Utils.Dom.removeFromDOM(foundMarkup,rangeObject,true)}else{GENTICS.Utils.Dom.removeMarkup(rangeObject,markup,GENTICS.Aloha.activeEditable.obj)}}else{if(rangeObject.isCollapsed()){GENTICS.Utils.Dom.extendToWord(rangeObject)}GENTICS.Utils.Dom.addMarkup(rangeObject,markup)}rangeObject.select();return false},tooltip:that.i18n("button."+button+".tooltip"),toggle:true}),markup:jQuery("<"+button+"></"+button+">")};GENTICS.Aloha.FloatingMenu.addButton(scope,that.buttons[button].button,GENTICS.Aloha.i18n(GENTICS.Aloha,"floatingmenu.tab.format"),1);break;case"p":case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":case"pre":that.multiSplitItems.push({name:button,tooltip:that.i18n("button."+button+".tooltip"),iconClass:"GENTICS_button "+that.i18n("GENTICS_button_"+button),markup:jQuery("<"+button+"></"+button+">"),click:function(){if(GENTICS.Aloha.activeEditable){GENTICS.Aloha.activeEditable.obj[0].focus()}GENTICS.Aloha.Selection.changeMarkupOnSelection(jQuery("<"+button+"></"+button+">"))}});break;case"removeFormat":that.multiSplitItems.push({name:button,text:that.i18n("button."+button+".text"),tooltip:that.i18n("button."+button+".tooltip"),iconClass:"GENTICS_button GENTICS_button_"+button,wide:true,click:function(){GENTICS.Aloha.Format.removeFormat()}});break;default:GENTICS.Aloha.log("warn",this,'Button "'+button+'" is not defined');break}});if(this.multiSplitItems.length>0){this.multiSplitButton=new GENTICS.Aloha.ui.MultiSplitButton({items:this.multiSplitItems});GENTICS.Aloha.FloatingMenu.addButton(scope,this.multiSplitButton,GENTICS.Aloha.i18n(GENTICS.Aloha,"floatingmenu.tab.format"),3)}GENTICS.Aloha.EventRegistry.subscribe(GENTICS.Aloha,"selectionChanged",function(event,rangeObject){jQuery.each(that.buttons,function(index,button){for(var i=0;i<rangeObject.markupEffectiveAtStart.length;i++){var effectiveMarkup=rangeObject.markupEffectiveAtStart[i];if(GENTICS.Aloha.Selection.standardTextLevelSemanticsComparator(effectiveMarkup,button.markup)){button.button.setPressed(true);var statusWasSet=true}}if(!statusWasSet){button.button.setPressed(false)}});if(that.multiSplitItems.length>0){var foundMultiSplit=false;for(var i=0;i<rangeObject.markupEffectiveAtStart.length&&!foundMultiSplit;i++){var effectiveMarkup=rangeObject.markupEffectiveAtStart[i];for(var j=0;j<that.multiSplitItems.length&&!foundMultiSplit;j++){var multiSplitItem=that.multiSplitItems[j];if(!multiSplitItem.markup){continue}if(GENTICS.Aloha.Selection.standardTextLevelSemanticsComparator(effectiveMarkup,multiSplitItem.markup)){that.multiSplitButton.setActiveItem(multiSplitItem.name);foundMultiSplit=true}}}if(!foundMultiSplit){that.multiSplitButton.setActiveItem(null)}}})};GENTICS.Aloha.Format.removeFormat=function(){GENTICS.Aloha.Selection.changeMarkupOnSelection(jQuery("<p></p>"));var formats=["b","i","cite","q","code","abbr","del","sub","sup"];var rangeObject=GENTICS.Aloha.Selection.rangeObject;var startObj=jQuery(rangeObject.startContainer);var limitObj=jQuery(rangeObject.limitObject);if(rangeObject.isCollapsed()||startObj===limitObj){return}var parent=startObj.parent();while(parent.get(0)!==limitObj.get(0)){var index=formats.indexOf(parent.get(0).nodeName.toLowerCase());parent=parent.parent();if(index!=-1){GENTICS.Aloha.Selection.changeMarkupOnSelection(jQuery("<"+formats[index]+"></"+formats[index]+">"));formats.splice(index,1)}}for(var i in formats){GENTICS.Aloha.Selection.changeMarkupOnSelection(jQuery("<"+formats[i]+"></"+formats[i]+">"));GENTICS.Aloha.Selection.changeMarkupOnSelection(jQuery("<"+formats[i]+"></"+formats[i]+">"))}};GENTICS.Aloha.Format.toString=function(){return"com.gentics.aloha.plugins.Format"};
@@ -4,4 +4,4 @@
4
4
  * aloha-sales@gentics.com
5
5
  * Licensed unter the terms of http://www.aloha-editor.com/license.html
6
6
  */
7
- GENTICS.Aloha.HighlightEditables=new GENTICS.Aloha.Plugin("com.gentics.aloha.plugins.highlighteditables");GENTICS.Aloha.HighlightEditables.init=function(){var that=this;GENTICS.Utils.Position.addMouseMoveCallback(function(){for(var i=0;i<GENTICS.Aloha.editables.length;i++){var editable=GENTICS.Aloha.editables[i].obj;if(!GENTICS.Aloha.activeEditable){editable.addClass("GENTICS_editable_highlight")}}});GENTICS.Utils.Position.addMouseStopCallback(function(){that.fade()});GENTICS.Aloha.EventRegistry.subscribe(GENTICS.Aloha,"editableActivated",function(jEvent,aEvent){aEvent.editable.obj.addClass("GENTICS_editable_active");that.fade()});GENTICS.Aloha.EventRegistry.subscribe(GENTICS.Aloha,"editableDeactivated",function(jEvent,aEvent){aEvent.editable.obj.removeClass("GENTICS_editable_active")})};GENTICS.Aloha.HighlightEditables.fade=function(){for(var i=0;i<GENTICS.Aloha.editables.length;i++){var editable=GENTICS.Aloha.editables[i].obj;if(editable.hasClass("GENTICS_editable_highlight")){editable.removeClass("GENTICS_editable_highlight").css("outline","5px solid #FFE767").animate({outlineWidth:"0px"},300,"swing",function(){jQuery(this).css("outline","")})}}};
7
+ GENTICS.Aloha.HighlightEditables=new GENTICS.Aloha.Plugin("com.gentics.aloha.plugins.highlighteditables");GENTICS.Aloha.HighlightEditables.init=function(){var that=this;GENTICS.Utils.Position.addMouseMoveCallback(function(){for(var i=0;i<GENTICS.Aloha.editables.length;i++){var editable=GENTICS.Aloha.editables[i];if(!GENTICS.Aloha.activeEditable&&!editable.isDisabled()){editable.obj.addClass("GENTICS_editable_highlight")}}});GENTICS.Utils.Position.addMouseStopCallback(function(){that.fade()});GENTICS.Aloha.EventRegistry.subscribe(GENTICS.Aloha,"editableActivated",function(jEvent,aEvent){aEvent.editable.obj.addClass("GENTICS_editable_active");that.fade()});GENTICS.Aloha.EventRegistry.subscribe(GENTICS.Aloha,"editableDeactivated",function(jEvent,aEvent){aEvent.editable.obj.removeClass("GENTICS_editable_active")})};GENTICS.Aloha.HighlightEditables.fade=function(){for(var i=0;i<GENTICS.Aloha.editables.length;i++){var editable=GENTICS.Aloha.editables[i].obj;if(editable.hasClass("GENTICS_editable_highlight")){editable.removeClass("GENTICS_editable_highlight").css("outline","5px solid #FFE767").animate({outlineWidth:"0px"},300,"swing",function(){jQuery(this).css("outline","")})}}};
@@ -0,0 +1,7 @@
1
+ /*
2
+ * Aloha Editor
3
+ * Author & Copyright (c) 2010 Gentics Software GmbH
4
+ * aloha-sales@gentics.com
5
+ * Licensed unter the terms of http://www.aloha-editor.com/license.html
6
+ */
7
+ if(!GENTICS.Aloha.Repositories){GENTICS.Aloha.Repositories={}}GENTICS.Aloha.Repositories.LinkList=new GENTICS.Aloha.Repository("com.gentics.aloha.repositories.LinkList");GENTICS.Aloha.Repositories.LinkList.settings.data=[{name:"Aloha Editor - The HTML5 Editor",url:"http://aloha-editor.com",type:"website"},{name:"Aloha Logo",url:"http://www.aloha-editor.com/images/aloha-editor-logo.png",type:"image"}];GENTICS.Aloha.Repositories.LinkList.folder=[];GENTICS.Aloha.Repositories.LinkList.init=function(){for(var i=0;i<this.settings.data.length;i++){var e=this.settings.data[i];e.repositoryId=this.repositoryId;e.id=e.id?e.id:e.url;var u=e.uri=this.parseUri(e.url);var path=this.addFolder("",u.host);var pathparts=u.path.split("/");for(j=0;j<pathparts.length;j++){if(pathparts[j]&&pathparts[j].lastIndexOf(".")<0){path=this.addFolder(path,pathparts[j])}}e.parentId=path;this.settings.data[i]=new GENTICS.Aloha.Repository.Document(e)}this.repositoryName="Linklist"};GENTICS.Aloha.Repositories.LinkList.addFolder=function(path,name){var type=path?"folder":"hostname";var p=path?path+"/"+name:name;if(name&&!this.folder[p]){this.folder[p]=new GENTICS.Aloha.Repository.Folder({id:p,name:(name)?name:p,parentId:path,type:"host",repositoryId:this.repositoryId})}return p};GENTICS.Aloha.Repositories.LinkList.query=function(p,callback){var d=this.settings.data.filter(function(e,i,a){var r=new RegExp(p.queryString,"i");var ret=false;return((!p.queryString||e.name.match(r)||e.url.match(r))&&(!p.objectTypeFilter||jQuery.inArray(e.type,p.objectTypeFilter)>-1)&&(!p.inFolderId||p.inFolderId==e.parentId))});callback.call(this,d)};GENTICS.Aloha.Repositories.LinkList.getChildren=function(p,callback){var d=[];for(e in this.folder){var l=this.folder[e].parentId;if(typeof this.folder[e]!="function"&&(this.folder[e].parentId==p.inFolderId||(!this.folder[e].parentId&&p.inFolderId==this.repositoryId))){d.push(this.folder[e])}}callback.call(this,d)};GENTICS.Aloha.Repositories.LinkList.parseUri=function(str){var o={strictMode:false,key:["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],q:{name:"queryKey",parser:/(?:^|&)([^&=]*)=?([^&]*)/g},parser:{strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/}},m=o.parser[o.strictMode?"strict":"loose"].exec(str),uri={},i=14;while(i--){uri[o.key[i]]=m[i]||""}uri[o.q.name]={};uri[o.key[12]].replace(o.q.parser,function($0,$1,$2){if($1){uri[o.q.name][$1]=$2}});return uri};
@@ -0,0 +1,7 @@
1
+ /*
2
+ * Aloha Editor
3
+ * Author & Copyright (c) 2010 Gentics Software GmbH
4
+ * aloha-sales@gentics.com
5
+ * Licensed unter the terms of http://www.aloha-editor.com/license.html
6
+ */
7
+ if(!GENTICS.Aloha.Repositories){GENTICS.Aloha.Repositories={}}GENTICS.Aloha.Repositories.delicious=new GENTICS.Aloha.Repository("com.gentics.aloha.repositories.delicious");GENTICS.Aloha.Repositories.delicious.settings.username="draftkraft";GENTICS.Aloha.Repositories.delicious.settings.weight=0.35;GENTICS.Aloha.Repositories.delicious.init=function(){var that=this;if(this.settings.weight+0.15>1){this.settings.weight=1-0.15}this.deliciousURL="http://feeds.delicious.com/v2/json/";if(this.settings.username){this.deliciousURL+=this.settings.username+"/";this.repositoryName="deliciuos/"+this.settings.username;this.tags=[];jQuery.ajax({type:"GET",dataType:"jsonp",url:"http://feeds.delicious.com/v2/json/tags/"+that.settings.username,success:function(data){for(var tag in data){that.tags.push(tag)}}})}else{this.repositoryName="deliciuos/"+popular;this.deliciousURL+="tag/"}};GENTICS.Aloha.Repositories.delicious.query=function(p,callback){var that=this;if(p.objectTypeFilter&&jQuery.inArray("website",p.objectTypeFilter)==-1){callback.call(this,[])}else{var tags=[];if(this.settings.username){var queryTags=p.queryString?p.queryString.split(" "):[];for(var i=0;i<queryTags.length;i++){var queryTag=queryTags[i].trim();if(jQuery.inArray(queryTag,that.tags)==-1){var newtags=that.tags.filter(function(e,i,a){var r=new RegExp(queryTag,"i");return(e.match(r))});if(newtags.length>0){tags.push(newtags[0])}}else{tags.push(queryTag)}}}else{tags=p.queryString.split(" ")}var folderTags=p.inFolderId?p.inFolderId.split("+"):[];jQuery.extend(tags,folderTags);if(p.queryString&&tags.length==0){callback.call(that,[]);return}jQuery.ajax({type:"GET",dataType:"jsonp",url:that.deliciousURL+tags.join("+"),success:function(data){var items=[];for(var i=0;i<data.length;i++){if(typeof data[i]!="function"){items.push(new GENTICS.Aloha.Repository.Document({id:data[i].u,name:data[i].d,repositoryId:that.repositoryId,type:"website",url:data[i].u,weight:that.settings.weight+(15-1)/100}))}}callback.call(that,items)}})}};GENTICS.Aloha.Repositories.delicious.getChildren=function(p,callback){var that=this;if(this.settings.username){var items=[];if(p.inFolderId==this.repositoryId){for(var i=0;i<this.tags.length;i++){if(typeof this.tags[i]!="function"){items.push(new GENTICS.Aloha.Repository.Folder({id:this.tags[i],name:this.tags[i],repositoryId:this.repositoryId,type:"tag",url:"http://feeds.delicious.com/v2/rss/tags/"+that.settings.username+"/"+this.tags[i]}))}}callback.call(this,items)}else{jQuery.ajax({type:"GET",dataType:"jsonp",url:"http://feeds.delicious.com/v2/json/tags/"+that.settings.username+"/"+p.inFolderId,success:function(data){var items=[];for(var tag in data){var id=(p.inFolderId)?p.inFolderId+"+"+tag:tag;if(typeof data[tag]!="function"){items.push(new GENTICS.Aloha.Repository.Folder({id:id,name:tag,repositoryId:that.repositoryId,type:"tag",url:"http://feeds.delicious.com/v2/rss/tags/"+that.settings.username+"/"+id,hasMoreItems:true}))}}callback.call(that,items)}})}}else{callback.call(this,[])}};
@@ -0,0 +1,4 @@
1
+ button.addlink.tooltip=Dodaj link
2
+ button.removelink.tooltip=Usuń link
3
+ newlink.defaulttext=Nowy link
4
+ floatingmenu.tab.link=Link
@@ -4,4 +4,4 @@
4
4
  * aloha-sales@gentics.com
5
5
  * Licensed unter the terms of http://www.aloha-editor.com/license.html
6
6
  */
7
- GENTICS.Aloha.Link=new GENTICS.Aloha.Plugin("com.gentics.aloha.plugins.Link");GENTICS.Aloha.Link.languages=["en","de","fr"];GENTICS.Aloha.Link.config=["a"];GENTICS.Aloha.Link.targetregex="";GENTICS.Aloha.Link.target="";GENTICS.Aloha.Link.cssclassregex="";GENTICS.Aloha.Link.cssclass="";GENTICS.Aloha.Link.mouseOverLink=null;GENTICS.Aloha.Link.ressource=null;GENTICS.Aloha.Link.init=function(){if(GENTICS.Aloha.Link.settings.targetregex!=undefined){GENTICS.Aloha.Link.targetregex=GENTICS.Aloha.Link.settings.targetregex}if(GENTICS.Aloha.Link.settings.target!=undefined){GENTICS.Aloha.Link.target=GENTICS.Aloha.Link.settings.target}if(GENTICS.Aloha.Link.settings.cssclassregex!=undefined){GENTICS.Aloha.Link.cssclassregex=GENTICS.Aloha.Link.settings.cssclassregex}if(GENTICS.Aloha.Link.settings.cssclass!=undefined){GENTICS.Aloha.Link.cssclass=GENTICS.Aloha.Link.settings.cssclass}if(GENTICS.Aloha.Link.settings.ressource!=undefined){GENTICS.Aloha.Link.ressource=GENTICS.Aloha.Link.settings.ressource}this.initButtons();this.subscribeEvents();this.bindInteractions()};GENTICS.Aloha.Link.initButtons=function(){var that=this;this.formatLinkButton=new GENTICS.Aloha.ui.Button({iconClass:"GENTICS_button GENTICS_button_a",size:"small",onclick:function(){that.formatLink()},tooltip:this.i18n("button.addlink.tooltip"),toggle:true});GENTICS.Aloha.FloatingMenu.addButton("GENTICS.Aloha.continuoustext",this.formatLinkButton,GENTICS.Aloha.i18n(GENTICS.Aloha,"floatingmenu.tab.format"),1);this.insertLinkButton=new GENTICS.Aloha.ui.Button({iconClass:"GENTICS_button GENTICS_button_a",size:"small",onclick:function(){that.insertLink(false)},tooltip:this.i18n("button.addlink.tooltip"),toggle:false});GENTICS.Aloha.FloatingMenu.addButton("GENTICS.Aloha.continuoustext",this.insertLinkButton,GENTICS.Aloha.i18n(GENTICS.Aloha,"floatingmenu.tab.insert"),1);GENTICS.Aloha.FloatingMenu.createScope(this.getUID("link"),"GENTICS.Aloha.continuoustext");this.srcFieldButton=new GENTICS.Aloha.Link.SrcField();GENTICS.Aloha.FloatingMenu.addButton(this.getUID("link"),this.srcFieldButton,this.i18n("floatingmenu.tab.link"),1);GENTICS.Aloha.FloatingMenu.addButton(this.getUID("link"),new GENTICS.Aloha.ui.Button({iconClass:"GENTICS_button GENTICS_button_a_remove",size:"small",onclick:function(){that.removeLink()},tooltip:this.i18n("button.removelink.tooltip")}),this.i18n("floatingmenu.tab.link"),1)};GENTICS.Aloha.Link.bindInteractions=function(){var that=this;for(var i=0;i<GENTICS.Aloha.editables.length;i++){GENTICS.Aloha.editables[i].obj.keydown(function(e){if((that.isCrtlDown||that.isMetaDown)&&e.which==76){if(that.findLinkMarkup()){GENTICS.Aloha.FloatingMenu.userActivatedTab=that.i18n("floatingmenu.tab.link");GENTICS.Aloha.FloatingMenu.doLayout();that.srcFieldButton.focus()}else{that.insertLink()}return false}});GENTICS.Aloha.editables[i].obj.find("a").each(function(i){jQuery(this).mouseenter(function(e){GENTICS.Aloha.Log.debug(GENTICS.Aloha.Link,"mouse over link.");that.mouseOverLink=this;that.updateMousePointer()});jQuery(this).mouseleave(function(e){GENTICS.Aloha.Log.debug(GENTICS.Aloha.Link,"mouse left link.");that.moseOverLink=null;that.updateMousePointer()});jQuery(this).click(function(e){if(e.metaKey||e.ctrlKey){GENTICS.Aloha.activeEditable.blur();setTimeout(function(){location.href=e.target},0);e.stopPropagation();return false}})})}jQuery(document).keyup(function(e){switch(e.which){case 17:GENTICS.Aloha.Log.debug(GENTICS.Aloha.Link,"ctrl up");that.isCtrlDown=false;that.updateMousePointer();break;case 91:that.isMetaLDown=false;if(!that.isMetaRDown){that.isMetaDown=false;GENTICS.Aloha.Log.debug(GENTICS.Aloha.Link,"meta up")}that.updateMousePointer();break;case 93:that.isMetaRDown=false;if(!that.isMetaLDown){that.isMetaDown=false;GENTICS.Aloha.Log.debug(GENTICS.Aloha.Link,"meta up")}that.updateMousePointer();break}});jQuery(document).keydown(function(e){switch(e.which){case 17:GENTICS.Aloha.Log.debug(GENTICS.Aloha.Link,"meta ctrl");that.isCtrlDown=true;that.updateMousePointer();break;case 91:GENTICS.Aloha.Log.debug(GENTICS.Aloha.Link,"meta down");that.isMetaLDown=true;that.isMetaDown=true;that.updateMousePointer();break;case 93:GENTICS.Aloha.Log.debug(GENTICS.Aloha.Link,"meta down");that.isMetaRDown=true;that.isMetaDown=true;that.updateMousePointer();break}})};GENTICS.Aloha.Link.updateMousePointer=function(){var that=this;if((that.isCrtlDown||that.isMetaDown)&&that.mouseOverLink!=null){GENTICS.Aloha.Log.debug(GENTICS.Aloha.Link,"set pointer");jQuery(that.mouseOverLink).removeClass("GENTICS_link_text");jQuery(that.mouseOverLink).addClass("GENTICS_link_pointer")}else{jQuery(that.mouseOverLink).removeClass("GENTICS_link_pointer");jQuery(that.mouseOverLink).addClass("GENTICS_link_text")}};GENTICS.Aloha.Link.subscribeEvents=function(){var that=this;GENTICS.Aloha.EventRegistry.subscribe(GENTICS.Aloha,"selectionChanged",function(event,rangeObject){if(GENTICS.Aloha.activeEditable){var config=that.getEditableConfig(GENTICS.Aloha.activeEditable.obj);if(jQuery.inArray("a",config)!=-1){that.formatLinkButton.show();that.insertLinkButton.show()}else{that.formatLinkButton.hide();that.insertLinkButton.hide();return}var foundMarkup=that.findLinkMarkup(rangeObject);if(foundMarkup){that.insertLinkButton.hide();that.formatLinkButton.setPressed(true);GENTICS.Aloha.FloatingMenu.setScope(that.getUID("link"));that.srcFieldButton.setAnchor(foundMarkup)}else{that.formatLinkButton.setPressed(false);that.srcFieldButton.setAnchor(null)}GENTICS.Aloha.FloatingMenu.doLayout()}})};GENTICS.Aloha.Link.findLinkMarkup=function(range){if(typeof range=="undefined"){var range=GENTICS.Aloha.Selection.getRangeObject()}return range.findMarkup(function(){return this.nodeName.toLowerCase()=="a"},GENTICS.Aloha.activeEditable.obj)};GENTICS.Aloha.Link.formatLink=function(){var that=this;var range=GENTICS.Aloha.Selection.getRangeObject();if(GENTICS.Aloha.activeEditable){if(that.findLinkMarkup(range)){that.removeLink()}else{that.insertLink()}}};GENTICS.Aloha.Link.insertLink=function(extendToWord){var that=this;if(that.findLinkMarkup(range)){return}GENTICS.Aloha.FloatingMenu.userActivatedTab=this.i18n("floatingmenu.tab.link");var range=GENTICS.Aloha.Selection.getRangeObject();if(range.isCollapsed()&&extendToWord!=false){GENTICS.Utils.Dom.extendToWord(range)}if(range.isCollapsed()){var linkText=this.i18n("newlink.defaulttext");var newLink=jQuery('<a href="#">'+linkText+"</a>");GENTICS.Utils.Dom.insertIntoDOM(newLink,range,jQuery(GENTICS.Aloha.activeEditable.obj));range.startContainer=range.endContainer=newLink.contents().get(0);range.startOffset=0;range.endOffset=linkText.length}else{var newLink=jQuery('<a href="#"></a>');GENTICS.Utils.Dom.addMarkup(range,newLink,false)}range.select();this.srcFieldButton.focus()};GENTICS.Aloha.Link.removeLink=function(){var that=this;var range=GENTICS.Aloha.Selection.getRangeObject();var foundMarkup=that.findLinkMarkup();if(foundMarkup){GENTICS.Utils.Dom.removeFromDOM(foundMarkup,range,true);GENTICS.Aloha.activeEditable.obj[0].focus();range.select()}};GENTICS.Aloha.Link.makeClean=function(obj){obj.find("a").each(function(){})};Ext.ux.LinkSrcButton=Ext.extend(Ext.Component,{wrapper:null,input:null,anchor:null,onRender:function(){var that=this;Ext.ux.LinkSrcButton.superclass.onRender.apply(this,arguments);this.wrapper=jQuery(this.el.dom);this.input=jQuery('<input id="GENTICS_Aloha_plugin_Link" type="text" style="width:300px">');if(GENTICS.Aloha.Link.settings.ressource||1==1){var data=[{id:1,text:"Link A",url:"/page1"},{id:2,text:"Link B",url:"/page2"},{id:3,text:"Link C",url:"/page3"},{id:4,text:"Link D",url:"/page4"}];this.input.autocomplete(data,{formatItem:function(item){return item.text+'<br /><i style="font-size:75%;color:#555">'+item.url+"</i>"}}).result(function(event,item){that.input.val(item.url);jQuery(that.anchor).attr("id",item.id)})}this.input.keyup(function(event){if(that.anchor){if(that.input.val().length>=2){jQuery(that.anchor).attr("href",that.input.val())}else{jQuery(that.anchor).attr("href","#")}}if(event.keyCode==13||event.keyCode==27){GENTICS.Aloha.activeEditable.obj[0].focus();GENTICS.Aloha.Selection.getRangeObject().select()}else{that.setAttribute(that.input.val(),"target",GENTICS.Aloha.Link.targetregex,GENTICS.Aloha.Link.target);that.setAttribute(that.input.val(),"class",GENTICS.Aloha.Link.cssclassregex,GENTICS.Aloha.Link.cssclass)}});this.input.blur(function(event){if(that.input.val()==""){GENTICS.Aloha.Link.removeLink()}});this.wrapper.append(this.input);if(this.getFocus){this.getFocus=undefined;this.input.select();this.input.focus()}},setAttribute:function(input,attr,regex,value){var that=this;if(typeof value!="undefined"){var setTarget=true;if(typeof regex!="undefined"){var regex=new RegExp(regex);if(input.match(regex)){setTarget=true}else{setTarget=false}}if(setTarget){jQuery(that.anchor).attr(attr,value)}else{jQuery(that.anchor).removeAttr(attr)}}},setAnchor:function(anchor){this.anchor=anchor;if(this.input){if(this.anchor){this.input.val(jQuery(this.anchor).attr("href"))}else{this.input.val("")}}},focus:function(){if(this.input){this.input.select();this.input.focus()}else{this.getFocus=true}}});Ext.reg("linksrcbutton",Ext.ux.LinkSrcButton);GENTICS.Aloha.Link.SrcField=function(){GENTICS.Aloha.ui.Button.apply(this,arguments)};GENTICS.Aloha.Link.SrcField.prototype=new GENTICS.Aloha.ui.Button();GENTICS.Aloha.Link.SrcField.prototype.getExtConfigProperties=function(){return{xtype:"linksrcbutton",id:this.id}};GENTICS.Aloha.Link.SrcField.prototype.setAnchor=function(anchor){if(this.extButton){this.extButton.setAnchor(anchor)}};GENTICS.Aloha.Link.SrcField.prototype.focus=function(){if(this.extButton){this.extButton.focus()}};
7
+ GENTICS.Aloha.Link=new GENTICS.Aloha.Plugin("com.gentics.aloha.plugins.Link");GENTICS.Aloha.Link.languages=["en","de","fr","ru","pl"];GENTICS.Aloha.Link.config=["a"];GENTICS.Aloha.Link.targetregex="";GENTICS.Aloha.Link.target="";GENTICS.Aloha.Link.cssclassregex="";GENTICS.Aloha.Link.cssclass="";GENTICS.Aloha.Link.objectTypeFilter=[];GENTICS.Aloha.Link.onHrefChange=null;GENTICS.Aloha.Link.init=function(){if(GENTICS.Aloha.Link.settings.targetregex!=undefined){GENTICS.Aloha.Link.targetregex=GENTICS.Aloha.Link.settings.targetregex}if(GENTICS.Aloha.Link.settings.target!=undefined){GENTICS.Aloha.Link.target=GENTICS.Aloha.Link.settings.target}if(GENTICS.Aloha.Link.settings.cssclassregex!=undefined){GENTICS.Aloha.Link.cssclassregex=GENTICS.Aloha.Link.settings.cssclassregex}if(GENTICS.Aloha.Link.settings.cssclass!=undefined){GENTICS.Aloha.Link.cssclass=GENTICS.Aloha.Link.settings.cssclass}if(GENTICS.Aloha.Link.settings.objectTypeFilter!=undefined){GENTICS.Aloha.Link.objectTypeFilter=GENTICS.Aloha.Link.settings.objectTypeFilter}if(GENTICS.Aloha.Link.settings.onHrefChange!=undefined){GENTICS.Aloha.Link.onHrefChange=GENTICS.Aloha.Link.settings.onHrefChange}this.createButtons();this.subscribeEvents();this.bindInteractions()};GENTICS.Aloha.Link.createButtons=function(){var that=this;this.formatLinkButton=new GENTICS.Aloha.ui.Button({iconClass:"GENTICS_button GENTICS_button_a",size:"small",onclick:function(){that.formatLink()},tooltip:this.i18n("button.addlink.tooltip"),toggle:true});GENTICS.Aloha.FloatingMenu.addButton("GENTICS.Aloha.continuoustext",this.formatLinkButton,GENTICS.Aloha.i18n(GENTICS.Aloha,"floatingmenu.tab.format"),1);this.insertLinkButton=new GENTICS.Aloha.ui.Button({iconClass:"GENTICS_button GENTICS_button_a",size:"small",onclick:function(){that.insertLink(false)},tooltip:this.i18n("button.addlink.tooltip"),toggle:false});GENTICS.Aloha.FloatingMenu.addButton("GENTICS.Aloha.continuoustext",this.insertLinkButton,GENTICS.Aloha.i18n(GENTICS.Aloha,"floatingmenu.tab.insert"),1);GENTICS.Aloha.FloatingMenu.createScope(this.getUID("link"),"GENTICS.Aloha.continuoustext");this.browser=new GENTICS.Aloha.ui.Browser();this.browser.setObjectTypeFilter(GENTICS.Aloha.Link.objectTypeFilter);this.browser.onSelect=function(item){that.hrefField.setItem(item);that.hrefChange()};this.repositoryButton=new GENTICS.Aloha.ui.Button({iconClass:"GENTICS_button_big GENTICS_button_tree",size:"large",onclick:function(){that.browser.show()},tooltip:this.i18n("button.addlink.tooltip"),toggle:false});GENTICS.Aloha.FloatingMenu.addButton(this.getUID("link"),this.repositoryButton,this.i18n("floatingmenu.tab.link"),1);this.hrefField=new GENTICS.Aloha.ui.AttributeField({width:320});this.hrefField.setObjectTypeFilter(GENTICS.Aloha.Link.objectTypeFilter);GENTICS.Aloha.FloatingMenu.addButton(this.getUID("link"),this.hrefField,this.i18n("floatingmenu.tab.link"),1);this.removeLinkButton=new GENTICS.Aloha.ui.Button({iconClass:"GENTICS_button GENTICS_button_a_remove",size:"small",onclick:function(){that.removeLink()},tooltip:this.i18n("button.removelink.tooltip")});GENTICS.Aloha.FloatingMenu.addButton(this.getUID("link"),this.removeLinkButton,this.i18n("floatingmenu.tab.link"),1)};GENTICS.Aloha.Link.bindInteractions=function(){var that=this;this.hrefField.addListener("keyup",function(obj,event){if(event.keyCode==27){var curval=that.hrefField.getQueryValue();if(curval[0]=="/"||curval.match(/^.*\.([a-z]){2,4}$/i)||curval[0]=="#"||curval.match(/^htt.*/i)){}else{}}that.hrefChange()});this.hrefField.addListener("blur",function(obj,event){if(this.getValue()==""){that.removeLink()}});for(var i=0;i<GENTICS.Aloha.editables.length;i++){GENTICS.Aloha.editables[i].obj.keydown(function(e){if(e.metaKey&&e.which==76){if(that.findLinkMarkup()){GENTICS.Aloha.FloatingMenu.userActivatedTab=that.i18n("floatingmenu.tab.link");GENTICS.Aloha.FloatingMenu.doLayout();that.hrefField.focus()}else{that.insertLink()}return false}});GENTICS.Aloha.editables[i].obj.find("a").each(function(i){jQuery(this).mouseenter(function(e){GENTICS.Aloha.Log.debug(GENTICS.Aloha.Link,"mouse over link.");that.mouseOverLink=this;that.updateMousePointer()});jQuery(this).mouseleave(function(e){GENTICS.Aloha.Log.debug(GENTICS.Aloha.Link,"mouse left link.");that.mouseOverLink=null;that.updateMousePointer()});jQuery(this).click(function(e){if(e.metaKey){GENTICS.Aloha.activeEditable.blur();setTimeout(function(){location.href=e.target},0);e.stopPropagation();return false}})})}jQuery(document).keydown(function(e){GENTICS.Aloha.Log.debug(GENTICS.Aloha.Link,"Meta key down.");that.metaKey=e.metaKey;that.updateMousePointer()});jQuery(document).keyup(function(e){GENTICS.Aloha.Log.debug(GENTICS.Aloha.Link,"Meta key up.");that.metaKey=e.metaKey;that.updateMousePointer()})};GENTICS.Aloha.Link.updateMousePointer=function(){if(this.metaKey&&this.mouseOverLink){GENTICS.Aloha.Log.debug(GENTICS.Aloha.Link,"set pointer");jQuery(this.mouseOverLink).removeClass("GENTICS_link_text");jQuery(this.mouseOverLink).addClass("GENTICS_link_pointer")}else{jQuery(this.mouseOverLink).removeClass("GENTICS_link_pointer");jQuery(this.mouseOverLink).addClass("GENTICS_link_text")}};GENTICS.Aloha.Link.subscribeEvents=function(){var that=this;GENTICS.Aloha.EventRegistry.subscribe(GENTICS.Aloha,"selectionChanged",function(event,rangeObject){if(GENTICS.Aloha.activeEditable){var config=that.getEditableConfig(GENTICS.Aloha.activeEditable.obj);if(jQuery.inArray("a",config)!=-1){that.formatLinkButton.show();that.insertLinkButton.show()}else{that.formatLinkButton.hide();that.insertLinkButton.hide();return}var foundMarkup=that.findLinkMarkup(rangeObject);if(foundMarkup){that.insertLinkButton.hide();that.formatLinkButton.setPressed(true);GENTICS.Aloha.FloatingMenu.setScope(that.getUID("link"));that.hrefField.setTargetObject(foundMarkup,"href")}else{that.formatLinkButton.setPressed(false);that.hrefField.setTargetObject(null)}GENTICS.Aloha.FloatingMenu.doLayout()}})};GENTICS.Aloha.Link.findLinkMarkup=function(range){if(typeof range=="undefined"){var range=GENTICS.Aloha.Selection.getRangeObject()}if(GENTICS.Aloha.activeEditable){return range.findMarkup(function(){return this.nodeName.toLowerCase()=="a"},GENTICS.Aloha.activeEditable.obj)}else{return null}};GENTICS.Aloha.Link.formatLink=function(){var range=GENTICS.Aloha.Selection.getRangeObject();if(GENTICS.Aloha.activeEditable){if(this.findLinkMarkup(range)){this.removeLink()}else{this.insertLink()}}};GENTICS.Aloha.Link.insertLink=function(extendToWord){if(this.findLinkMarkup(range)){return}GENTICS.Aloha.FloatingMenu.userActivatedTab=this.i18n("floatingmenu.tab.link");var range=GENTICS.Aloha.Selection.getRangeObject();if(range.isCollapsed()&&extendToWord!=false){GENTICS.Utils.Dom.extendToWord(range)}if(range.isCollapsed()){var linkText=this.i18n("newlink.defaulttext");var newLink=jQuery('<a href="">'+linkText+"</a>");GENTICS.Utils.Dom.insertIntoDOM(newLink,range,jQuery(GENTICS.Aloha.activeEditable.obj));range.startContainer=range.endContainer=newLink.contents().get(0);range.startOffset=0;range.endOffset=linkText.length}else{var newLink=jQuery('<a href=""></a>');GENTICS.Utils.Dom.addMarkup(range,newLink,false)}range.select();this.hrefField.focus();this.hrefChange()};GENTICS.Aloha.Link.removeLink=function(){var range=GENTICS.Aloha.Selection.getRangeObject();var foundMarkup=this.findLinkMarkup();if(foundMarkup){GENTICS.Utils.Dom.removeFromDOM(foundMarkup,range,true);GENTICS.Aloha.activeEditable.obj[0].focus();range.select()}};GENTICS.Aloha.Link.hrefChange=function(){this.hrefField.setAttribute("target",this.target,this.targetregex,this.hrefField.getQueryValue());this.hrefField.setAttribute("class",this.cssclass,this.cssclassregex,this.hrefField.getQueryValue());if(typeof this.onHrefChange=="function"){this.onHrefChange.call(this,this.hrefField.getTargetObject(),this.hrefField.getQueryValue(),this.hrefField.getItem())}GENTICS.Aloha.EventRegistry.trigger(new GENTICS.Aloha.Event("hrefChanged",GENTICS.Aloha,{obj:this.hrefField.getTargetObject(),href:this.hrefField.getQueryValue(),item:this.hrefField.getItem()}))};GENTICS.Aloha.Link.makeClean=function(obj){obj.find("a").each(function(){jQuery(this).removeClass("GENTICS_link_pointer");jQuery(this).removeClass("GENTICS_link_text")})};
@@ -0,0 +1,14 @@
1
+ /*!
2
+ * Aloha Editor
3
+ * Author & Copyright (c) 2010 Gentics Software GmbH
4
+ * aloha-sales@gentics.com
5
+ * Licensed unter the terms of http://www.aloha-editor.com/license.html
6
+ */
7
+
8
+ .GENTICS_link_error {
9
+ color: red !important;
10
+ }
11
+
12
+ .GENTICS_link_warn {
13
+ color: red !important;
14
+ }
@@ -0,0 +1,49 @@
1
+ body {
2
+ font-family: sans-serif;
3
+ }
4
+
5
+ body {
6
+ background-color: #ccc;
7
+ }
8
+
9
+ #bodyContent {
10
+ font-size:0.9em;
11
+ }
12
+
13
+ h1, h2, h3, h4, h5, h6 {
14
+ font-family: sans-serif;
15
+ padding-bottom:0.1em;
16
+ padding-top:0.5em;
17
+ }
18
+ h1 {
19
+ border-bottom:1px solid #AAAAAA;
20
+ }
21
+
22
+ h1 { font-size: 188%; }
23
+ h2 { font-size: 150%; }
24
+ h3 { font-size: 132%; }
25
+ h4 { font-size: 116%; }
26
+ h5 { font-size: 100%; }
27
+ h6 { font-size: 80%; }
28
+
29
+ #main {
30
+ width: 650px;
31
+ margin-top: 40px;
32
+ margin-left: auto ;
33
+ margin-right: auto ;
34
+ padding: 70px;
35
+ background-color: white;
36
+ border-radius: 1px;
37
+ -moz-border-radius: 1px;
38
+ box-shadow: 5px 5px rgba(0,0,0,0.3);
39
+ -webkit-box-shadow: 5px 5px rgba(0,0,0,0.3);
40
+ -moz-box-shadow: 5px 5px rgba(0,0,0,0.3);
41
+ }
42
+
43
+ .GENTICS_link_error {
44
+ color: red;
45
+ }
46
+
47
+ .GENTICS_link_warn {
48
+ color: orange;
49
+ }
@@ -0,0 +1,82 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
+ <title>Aloha, link checker!</title>
6
+ <script>GENTICS_Aloha_base="../../../";</script>
7
+ <script type="text/javascript" src="../../../core/include.js"></script>
8
+ <script type="text/javascript" src="../../../plugins/com.gentics.aloha.plugins.Link/plugin.js"></script>
9
+ <script type="text/javascript" src="../plugin.js"></script>
10
+
11
+
12
+ <link rel="stylesheet" href="AlohaLinkChecker.css" />
13
+
14
+ <!-- turn an element into editable Aloha continuous text -->
15
+ <script type="text/javascript">
16
+ GENTICS.Aloha.settings = {
17
+ logLevels: {'error': true, 'warn': true, 'info': true, 'debug': false},
18
+ errorhandling : false,
19
+ ribbon: false,
20
+ "i18n": {
21
+ // let the system detect the users language
22
+ //"acceptLanguage": '<?=$_SERVER['HTTP_ACCEPT_LANGUAGE']?>'
23
+ "acceptLanguage": 'de-de,de;q=0.8,it;q=0.6,en-us;q=0.7,en;q=0.2'
24
+ },
25
+ "plugins": {
26
+ "com.gentics.aloha.plugins.LinkChecker": {
27
+ 'config': ['a'],
28
+ // use a proxy when you call it through a webserver
29
+ // 'proxyUrl': 'http://localhost:8888/Sites/Aloha-Editor/WebContent/plugins/com.gentics.aloha.plugins.LinkChecker/proxy.php?url='
30
+ }
31
+ }
32
+ };
33
+
34
+ $(document).ready(function() {
35
+ $('#content').aloha();
36
+ });
37
+ </script>
38
+ <style type="text/css">
39
+
40
+ .GENTICS_link_error {
41
+ color: red;
42
+ }
43
+
44
+ .GENTICS_link_warn {
45
+ color: red;
46
+ }
47
+ </style>
48
+ </head>
49
+ <body>
50
+ <div id="main">
51
+ <div id="bodyContent">
52
+ <div id="content" class="article">
53
+ <h1>Aloha</h1>
54
+ <h2>Etymology</h2>
55
+ <p>The word <a href="http://en.wikipedia.org/wiki/Aloha" target="_blank" class="external">aloha</a> derives from the Proto-Polynesian root <i>*qalofa</i>. It has cognates in other Polynesian languages, such as Samoan alofa
56
+ and Māori aroha, also meaning "love."</p>
57
+ <p><a href="http://aloha-editor.com/invalid">invalid Aloha Editor</a> is the word's most advanced browser based Editor made with aloha passion.</p>
58
+ <p>A folk etymology claims that it derives from a compound of the <a href="http://en.wikipedia.org/wiki/Hawaii" target="_blank" class="external">Hawaiian</a> words alo meaning "presence", "front", "face", or "share"; and
59
+ ha, meaning "breath of life" or "essence of life." Although alo does indeed mean "presence" etc., the word for breath is spelled with a macron
60
+ or kahakō over the a (hā) whereas the word aloha does not have a long a.</p>
61
+ <p>Links are the web's <a title="Aloha Editor rocks." href="http://rocket-power.org/not-working">Rocket Power</a>.</p>
62
+ <h2>Usage</h2>
63
+ <p>Before contact with the West, the words used for greeting were welina and anoai. Today, "aloha kakahiaka" is the phrase for "good
64
+ morning." "Aloha ʻauinalā" means "good afternoon" and "aloha ahiahi" means "good evening." "Aloha kākou" is a common form of "welcome to all."</p>
65
+ <p>In modern Hawaiʻi, numerous businesses have aloha in their names, with more than 3 pages of listings in the Oʻahu phone book alone.</p>
66
+ <h2>Trends</h2>
67
+ <p>Recent trends are popularizing the term elsewhere in the United States. Popular entertainer, Broadway star and Hollywood actress Bette
68
+ Midler, born in Honolulu, uses the greeting frequently in national appearances. The word was also used frequently in the hit television drama
69
+ Hawaii Five-O. In the influential 1982 film comedy Fast Times at Ridgemont High, the eccentric teacher Mr. Hand makes use of the greeting. The
70
+ Aloha Spirit is a major concept in Lilo and Stitch, a very popular Disney series of movies and TV shows, set in Hawaiʻi. The drama series Lost,
71
+ shot in Hawaiʻi, has a thank you note at the end of the credits saying "We thank the people of Hawaiʻi and their Aloha Spirit". Aloha is a term
72
+ also used in the Nickelodeon program Rocket Power.</p>
73
+ <ul>
74
+ <li>Arguably the most famous historical Hawaiian song, "Aloha ʻOe" was written by the last queen of Hawaii, Liliʻuokalani.</li>
75
+ <li>The term inspired the name of the ALOHA Protocol introduced in the 1970s by the University of Hawaii.</li>
76
+ <li>In Hawaii someone can be said to have or show aloha in the way they treat others; whether family, friend, neighbor or stranger.</li>
77
+ </ul>
78
+ </div>
79
+ </div>
80
+ </div>
81
+ </body>
82
+ </html>
@@ -0,0 +1,27 @@
1
+
2
+ error.0=An Error occurred checking this URL.
3
+ error.400=Bad Request. The request cannot be fulfilled due to bad syntax.
4
+ error.401=Unauthorized. Authentication has failed or not yet been provided.
5
+ error.402=Payment Required.
6
+ error.403=Forbidden. The request was a legal request, but the server is refusing to respond to it.
7
+ error.404=Not Found. The requested resource could not be found, but may be available in the future.
8
+ error.405=Method Not Allowed.
9
+ error.406=Not Acceptable. Your browser does not support the content.
10
+ error.407=Proxy Authentication Required.
11
+ error.408=Request Timeout. The server timed out waiting for the request.
12
+ error.409=Conflict in the request.
13
+ error.410=This resource is gone.
14
+ error.411=Length Required by server. This Link may work in the browsers.
15
+ error.412=Precondition Failed. This Link may work in the browsers.
16
+ error.413=Request Entity Too Large. The request is larger than the server is willing or able to process.
17
+ error.414=Request-URI Too Long. The URI provided was too long for the server to process.
18
+ error.415=Unsupported Media Type. The request entity has a media type which the server or resource does not support.
19
+ error.416=Requested Range Not Satisfiable. The client has asked for a portion of the file, but the server cannot supply that portion.
20
+ error.417=Expectation Failed. The server cannot meet the requirements of your browser.
21
+ error.418=I'm a teapot. ;-)
22
+ error.500=Internal Server Error. A generic error message, given when no more specific message is suitable.
23
+ error.501=Not Implemented. The server either does not recognise the request method, or it lacks the ability to fulfill the request.
24
+ error.502=Bad Gateway. The server was acting as a gateway or proxy and received an invalid response from the upstream server.
25
+ error.503=Service Unavailable. The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.
26
+ error.504=Gateway Timeout. The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.
27
+ error.505=HTTP Version Not Supported. The server does not support the HTTP protocol version used in the request.
@@ -0,0 +1,7 @@
1
+ /*
2
+ * Aloha Editor
3
+ * Author & Copyright (c) 2010 Gentics Software GmbH
4
+ * aloha-sales@gentics.com
5
+ * Licensed unter the terms of http://www.aloha-editor.com/license.html
6
+ */
7
+ GENTICS.Aloha.LinkChecker=new GENTICS.Aloha.Plugin("com.gentics.aloha.plugins.LinkChecker");GENTICS.Aloha.LinkChecker.languages=["en"];GENTICS.Aloha.LinkChecker.errorCodes=[400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,500,501,502,503,504,505,506];GENTICS.Aloha.LinkChecker.warningCodes=[404,411,412,413,500,503,504,505];GENTICS.Aloha.LinkChecker.init=function(){this.proxyUrl=null;if(GENTICS.Aloha.LinkChecker.settings.proxyUrl!=undefined){this.proxyUrl=GENTICS.Aloha.LinkChecker.settings.proxyUrl}this.timer={};this.xhr={};var that=this;GENTICS.Aloha.EventRegistry.subscribe(GENTICS.Aloha,"editableActivated",function(jEvent,aEvent){aEvent.editable.obj.find("a").each(function(){that.checkLink(this,jQuery(this).attr("href"),0)})});GENTICS.Aloha.EventRegistry.subscribe(GENTICS.Aloha,"editableDeactivated",function(jEvent,aEvent){that.makeClean(aEvent.editable.obj)});GENTICS.Aloha.EventRegistry.subscribe(GENTICS.Aloha,"hrefChanged",function(jEvent,aEvent){that.checkLink(aEvent.obj,"hrefChanged")})};GENTICS.Aloha.LinkChecker.checkLink=function(obj,scope,delay,timeout){var that=this;var url=jQuery(obj).attr("href");var cleanUrl=url;if(typeof url=="string"&&!/^http/.test(url.toLowerCase())){this.makeCleanLink(obj);return}if(this.proxyUrl){url=this.proxyUrl+url}if(this.xhr[scope]){this.xhr[scope].abort();this.xhr[scope]=undefined}this.timer[scope]=this.urlExists(url,function(xhr){that.makeCleanLink(obj)},function(xhr){if(obj){if(jQuery.inArray(xhr.status,that.errorCodes)>=0){var e=xhr.status}else{var e="0"}var o=jQuery(obj);if(o.attr("title")&&!o.attr("data-invalid")){o.attr("data-title",o.attr("title"))}o.attr("data-invalid","true");o.attr("title",cleanUrl+". "+that.i18n("error."+e));if(jQuery.inArray(xhr.status,that.warningCodes)>=0){o.addClass("GENTICS_link_warn")}else{o.addClass("GENTICS_link_error")}}},scope,timeout,delay)};GENTICS.Aloha.LinkChecker.urlExists=function(url,successFunc,failureFunc,scope,timeout,delay){var that=this;clearTimeout(this.timer[scope]);delay=(delay!=null&&delay!=undefined)?delay:700;var newTimer=setTimeout(function(){that.xhr[scope]=jQuery.ajax({url:url,timeout:timeout?10000:timeout,type:"HEAD",complete:function(xhr){clearTimeout(newTimer);try{if(xhr.status<400){successFunc.call(this,xhr)}else{failureFunc.call(this,xhr)}}catch(e){failureFunc.call(this,{status:0})}}})},delay);return newTimer};GENTICS.Aloha.LinkChecker.makeCleanLink=function(obj){if(obj){var o=jQuery(obj);if(o.attr("data-title")){o.attr("title",o.attr("data-title"))}else{o.removeAttr("title")}o.removeAttr("data-title");o.removeAttr("data-invalid");o.removeClass("GENTICS_link_error");o.removeClass("GENTICS_link_warn")}};GENTICS.Aloha.LinkChecker.makeClean=function(editable){var that=this;editable.find("a").each(function(){that.makeCleanLink(this)})};GENTICS.Aloha.LinkChecker.urlencode=function(str){str=(str+"").toString();return encodeURIComponent(str).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/%20/g,"+")};
@@ -0,0 +1,235 @@
1
+ <?php
2
+ /**
3
+ * Gentics Aloha Editor AJAX Gateway
4
+ * Copyright (c) 2010 Gentics Software GmbH
5
+ * Licensed unter the terms of http://www.aloha-editor.com/license.html
6
+ * aloha-sales@gentics.com
7
+ * Author Haymo Meran h.meran@gentics.com
8
+ * Author Johannes Schüth j.schuet@gentics.com
9
+ * Author Tobias Steiner t.steiner@gentics.com
10
+ *
11
+ * Testing from the command line:
12
+ * function getallheaders(){return array('X-Gentics' => 'X');};
13
+ * https url example: https://google.com/adsense
14
+ *
15
+ */
16
+
17
+ // for debugging
18
+ //$_SERVER['SERVER_PROTOCOL'] = 'HTTP/1.0';
19
+ //$_SERVER['REQUEST_METHOD'] = 'HEAD';
20
+ //error_reporting(E_ALL);
21
+
22
+ $request = array(
23
+ 'method' => $_SERVER['REQUEST_METHOD'],
24
+ 'protocol' => $_SERVER['SERVER_PROTOCOL'],
25
+ 'headers' => getallheaders(),
26
+ //possibly use $HTTP_RAW_POST_DATA if available
27
+ 'payload' => http_build_query($_POST),
28
+ );
29
+
30
+ // read url parameter
31
+ if (array_key_exists('url', $_GET)) {
32
+ $request['url'] = urldecode($_GET['url']);
33
+ } else {
34
+ header("HTTP/1.0 400 Bad Request");
35
+ echo "Gentics AJAX Gateway failed because parameter url is missing.";
36
+ exit();
37
+ }
38
+
39
+ // check if link exists
40
+ $response = http_request($request);
41
+
42
+ // Note HEAD does not always work even if specified...
43
+ // We use HEAD for Linkchecking so we do a 2nd request.
44
+ if (strtoupper($method) == 'HEAD' && (int)$response['status'] >= 400 ) {
45
+
46
+ $request['method'] = 'GET';
47
+ $response = http_request($request);
48
+
49
+ //since we handle a HEAD, we don't need to proxy any contents
50
+ fclose($response['socket']);
51
+ $response['socket'] = null;
52
+ }
53
+
54
+ // forward each returned header...
55
+ foreach ($response['headers'] as $key => $value) {
56
+ header("$key: $value");
57
+ }
58
+
59
+ //there is no need to specify a content length since we don't do keep
60
+ //alive, and this can cause problems for integration (e.g. gzip output,
61
+ //which would change the content length)
62
+ header('Content-Length:');
63
+
64
+ // output the contents if any
65
+ if (null !== $response['socket']) {
66
+ fpassthru($response['socket']);
67
+ fclose($response['socket']);
68
+ }
69
+
70
+ exit;
71
+
72
+ /**
73
+ * Query an HTTP(S) URL with the given request parameters and return the
74
+ * response headers and status code. The socket is returned as well and
75
+ * will point to the begining of the response payload (after all headers
76
+ * have been read), and must be closed with fclose().
77
+ * @param $url the request URL
78
+ * @param $request the request method may optionally be overridden.
79
+ * @param $timeout connection and read timeout in seconds
80
+ */
81
+ function http_request($request, $timeout = 5) {
82
+
83
+ $url = $request['url'];
84
+ // Extract the hostname from url
85
+ $parts = parse_url($url);
86
+ if (array_key_exists('host', $parts)) {
87
+ $remote = $parts['host'];
88
+ } else {
89
+ return myErrorHandler("url ($url) has no host. Is it relative?");
90
+ }
91
+ if (array_key_exists('port', $parts)) {
92
+ $port = $parts['port'];
93
+ } else {
94
+ $port = 0;
95
+ }
96
+
97
+ // Beware that RFC2616 (HTTP/1.1) defines header fields as case-insensitive entities.
98
+ $request_headers = "";
99
+ foreach ($request['headers'] as $name => $value) {
100
+ switch (strtolower($name)) {
101
+ //ommit some headers
102
+ case "keep-alive":
103
+ case "connection":
104
+ case "cookie":
105
+ //TPDP: we don't handle any compressions encodings. this is only
106
+ //a problem if client communication is already compressed (which
107
+ //would double compress the content, once from the remote server
108
+ //to us, and once from us to the client, but the client would
109
+ //de-compress only once).
110
+ case "accept-encoding":
111
+ break;
112
+ // correct the host parameter
113
+ case "host":
114
+ $host_info = $remote;
115
+ if ($port) {
116
+ $host_info .= ':' . $port;
117
+ }
118
+ $request_headers .= "$name: $host_info\r\n";
119
+ break;
120
+ // forward all other headers
121
+ default:
122
+ $request_headers .= "$name: $value\r\n";
123
+ break;
124
+ }
125
+ }
126
+
127
+ //set fsockopen transport scheme, and the default port
128
+ switch (strtolower($parts['scheme'])) {
129
+ case 'https':
130
+ $scheme = 'ssl://';
131
+ if ( ! $port ) $port = 443;
132
+ break;
133
+ case 'http':
134
+ $scheme = '';
135
+ if ( ! $port ) $port = 80;
136
+ break;
137
+ default:
138
+ //some other transports are available but not really supported
139
+ //by this script: http://php.net/manual/en/transports.inet.php
140
+ $scheme = $parts['scheme'] . '://';
141
+ if ( ! $port ) {
142
+ return myErrorHandler("Unknown scheme ($scheme) and no port.");
143
+ }
144
+ break;
145
+ }
146
+
147
+ //we make the request with socket operations since we don't want to
148
+ //depend on the curl extension, and the higher level wrappers don't
149
+ //give us usable error information.
150
+ $sock = @fsockopen("$scheme$remote", $port, $errno, $errstr, $timeout);
151
+ if ( ! $sock ) {
152
+ return myErrorHandler("Unable to open URL ($url): $errstr");
153
+ }
154
+
155
+ //timeout in fsockopen is only for the connection, the following is
156
+ //for reading the content
157
+ stream_set_timeout($sock, $timeout);
158
+
159
+ //absolute url should only be specified for proxy requests
160
+ if (array_key_exists('path', $parts)) {
161
+ $path_info = $parts['path'];
162
+ } else {
163
+ $path_info = '/';
164
+ }
165
+
166
+ if (array_key_exists('query', $parts)) $path_info .= '?' . $parts['query'];
167
+ if (array_key_exists('fragment', $parts)) $path_info .= '#' . $parts['fragment'];
168
+
169
+ $out = $request["method"]." ".$path_info." ".$request["protocol"]."\r\n"
170
+ . $request_headers
171
+ . "Connection: Close\r\n\r\n";
172
+ fwrite($sock, $out);
173
+ fwrite($sock, $request['payload']);
174
+
175
+ $header_str = stream_get_line($sock, 1024*16, "\r\n\r\n");
176
+ $headers = http_parse_headers($header_str);
177
+
178
+ // get http status
179
+ preg_match('|HTTP/\d+\.\d+\s+(\d+)\s+.*|i',$headers[0],$match);
180
+ $status = $match[1];
181
+
182
+ return array('headers' => $headers, 'socket' => $sock, 'status' => $status);
183
+ }
184
+
185
+ /**
186
+ * Parses a string containing multiple HTTP header lines into an array
187
+ * of key => values.
188
+ * Inspired by HTTP::Daemon (CPAN).
189
+ */
190
+ function http_parse_headers($header_str) {
191
+ $headers = array();
192
+
193
+ //ignore leading blank lines
194
+ $header_str = preg_replace("/^(?:\x0D?\x0A)+/", '', $header_str);
195
+
196
+ while (preg_match("/^([^\x0A]*?)\x0D?(?:\x0A|\$)/", $header_str, $matches)) {
197
+ $header_str = substr($header_str, strlen($matches[0]));
198
+ $header_line = $matches[1];
199
+
200
+ if (empty($headers)) {
201
+ // the status line
202
+ $headers[] = $header_line;
203
+ }
204
+ elseif (preg_match('/^([^:\s]+)\s*:\s*(.*)/', $header_line, $matches)) {
205
+ if (isset($key)) {
206
+ //previous header is finished (was potentially multi-line)
207
+ $headers[$key] = $val;
208
+ }
209
+ list(,$key,$val) = $matches;
210
+ }
211
+ elseif (preg_match('/^\s+(.*)/', $header_line, $matches)) {
212
+ //continue a multi-line header
213
+ $val .= " ".$matches[1];
214
+ }
215
+ else {
216
+ //empty (possibly malformed) header signals the end of all headers
217
+ break;
218
+ }
219
+ }
220
+ if (isset($key)) {
221
+ $headers[$key] = $val;
222
+ }
223
+ return $headers;
224
+ }
225
+
226
+ function myErrorHandler($msg)
227
+ {
228
+ // 500 could be misleading...
229
+ // Should we return a special Error when a proxy error occurs?
230
+ header("HTTP/1.0 500 Internal Error");
231
+ echo "Gentics Aloha Editor AJAX Gateway Error: $msg";
232
+ exit();
233
+ }
234
+
235
+ //EOF