typo 4.1 → 4.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (251) hide show
  1. data/Rakefile +1 -1
  2. data/TODO-4.2 +14 -0
  3. data/TODO.MULTIUSERS +45 -0
  4. data/app/controllers/admin/base_controller.rb +18 -0
  5. data/app/controllers/admin/general_controller.rb +14 -0
  6. data/app/controllers/application.rb +2 -1
  7. data/app/controllers/articles_controller.rb +18 -21
  8. data/app/helpers/admin/base_helper.rb +4 -4
  9. data/app/helpers/admin/feedback_helper.rb +3 -3
  10. data/app/helpers/application_helper.rb +2 -6
  11. data/app/helpers/sidebar_helper.rb +2 -2
  12. data/app/models/blog.rb +9 -1
  13. data/app/models/category.rb +9 -9
  14. data/app/models/comment.rb +1 -1
  15. data/app/models/content_state/presumed_ham.rb +2 -2
  16. data/app/models/resource.rb +2 -0
  17. data/app/views/admin/categories/_categories.rhtml +10 -6
  18. data/app/views/admin/categories/edit.rhtml +3 -1
  19. data/app/views/admin/comments/_form.rhtml +3 -3
  20. data/app/views/admin/comments/list.rhtml +7 -5
  21. data/app/views/admin/comments/new.rhtml +3 -1
  22. data/app/views/admin/comments/show.rhtml +3 -1
  23. data/app/views/admin/content/_articles.rhtml +1 -1
  24. data/app/views/admin/content/_form.rhtml +4 -2
  25. data/app/views/admin/content/new.rhtml +1 -0
  26. data/app/views/admin/content/preview.rhtml +8 -8
  27. data/app/views/admin/feedback/_item.rhtml +3 -1
  28. data/app/views/admin/feedback/list.rhtml +4 -4
  29. data/app/views/admin/general/index.rhtml +14 -1
  30. data/app/views/admin/pages/_form.rhtml +1 -1
  31. data/app/views/admin/pages/destroy.rhtml +1 -1
  32. data/app/views/admin/pages/new.rhtml +1 -0
  33. data/app/views/admin/shared/_edit.rhtml +2 -2
  34. data/app/views/layouts/administration.rhtml +5 -2
  35. data/app/views/layouts/minimal.rhtml +134 -2
  36. data/config/boot.rb +1 -1
  37. data/config/environment.rb +11 -3
  38. data/config/environments/test.rb +0 -7
  39. data/config/routes.rb +3 -0
  40. data/db/migrate/004_add_sidebars.rb +21 -3
  41. data/db/migrate/056_create_notifications.rb +1 -1
  42. data/db/migrate/062_add_sitealizer_plugin.rb +18 -0
  43. data/db/schema.mysql-v3.sql +217 -0
  44. data/db/schema.mysql.sql +31 -5
  45. data/db/schema.postgresql.sql +31 -6
  46. data/db/schema.rb +17 -7
  47. data/db/schema.sqlite.sql +31 -6
  48. data/db/schema.sqlserver.sql +32 -6
  49. data/db/schema_version +1 -1
  50. data/lang/de_DE.rb +493 -0
  51. data/lang/fr_FR.rb +28 -4
  52. data/lang/ro_RO.rb +554 -0
  53. data/lib/tasks/release.rake +7 -7
  54. data/lib/typo_version.rb +1 -1
  55. data/public/images/sitealizer/bar.gif +0 -0
  56. data/public/images/sitealizer/uv.png +0 -0
  57. data/public/images/sitealizer/vh.png +0 -0
  58. data/public/javascripts/tiny_mce/blank.htm +9 -0
  59. data/public/javascripts/tiny_mce/langs/en.js +41 -0
  60. data/public/javascripts/tiny_mce/license.txt +504 -0
  61. data/public/javascripts/tiny_mce/themes/advanced/about.htm +52 -0
  62. data/public/javascripts/tiny_mce/themes/advanced/anchor.htm +33 -0
  63. data/public/javascripts/tiny_mce/themes/advanced/charmap.htm +53 -0
  64. data/public/javascripts/tiny_mce/themes/advanced/color_picker.htm +13 -0
  65. data/public/javascripts/tiny_mce/themes/advanced/css/editor_content.css +58 -0
  66. data/public/javascripts/tiny_mce/themes/advanced/css/editor_popup.css +331 -0
  67. data/public/javascripts/tiny_mce/themes/advanced/css/editor_ui.css +97 -0
  68. data/public/javascripts/tiny_mce/themes/advanced/docs/en/about.htm +31 -0
  69. data/public/javascripts/tiny_mce/themes/advanced/docs/en/common_buttons.htm +162 -0
  70. data/public/javascripts/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm +45 -0
  71. data/public/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif +0 -0
  72. data/public/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif +0 -0
  73. data/public/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif +0 -0
  74. data/public/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif +0 -0
  75. data/public/javascripts/tiny_mce/themes/advanced/docs/en/index.htm +27 -0
  76. data/public/javascripts/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm +32 -0
  77. data/public/javascripts/tiny_mce/themes/advanced/docs/en/insert_image_button.htm +65 -0
  78. data/public/javascripts/tiny_mce/themes/advanced/docs/en/insert_link_button.htm +33 -0
  79. data/public/javascripts/tiny_mce/themes/advanced/docs/en/insert_table_button.htm +71 -0
  80. data/public/javascripts/tiny_mce/themes/advanced/docs/en/style.css +28 -0
  81. data/public/javascripts/tiny_mce/themes/advanced/editor_template.js +1 -0
  82. data/public/javascripts/tiny_mce/themes/advanced/editor_template_src.js +1534 -0
  83. data/public/javascripts/tiny_mce/themes/advanced/image.htm +100 -0
  84. data/public/javascripts/tiny_mce/themes/advanced/images/anchor.gif +0 -0
  85. data/public/javascripts/tiny_mce/themes/advanced/images/anchor_symbol.gif +0 -0
  86. data/public/javascripts/tiny_mce/themes/advanced/images/backcolor.gif +0 -0
  87. data/public/javascripts/tiny_mce/themes/advanced/images/bold.gif +0 -0
  88. data/public/javascripts/tiny_mce/themes/advanced/images/bold_de_se.gif +0 -0
  89. data/public/javascripts/tiny_mce/themes/advanced/images/bold_es.gif +0 -0
  90. data/public/javascripts/tiny_mce/themes/advanced/images/bold_fr.gif +0 -0
  91. data/public/javascripts/tiny_mce/themes/advanced/images/bold_ru.gif +0 -0
  92. data/public/javascripts/tiny_mce/themes/advanced/images/bold_tw.gif +0 -0
  93. data/public/javascripts/tiny_mce/themes/advanced/images/browse.gif +0 -0
  94. data/public/javascripts/tiny_mce/themes/advanced/images/bullist.gif +0 -0
  95. data/public/javascripts/tiny_mce/themes/advanced/images/button_menu.gif +0 -0
  96. data/public/javascripts/tiny_mce/themes/advanced/images/buttons.gif +0 -0
  97. data/public/javascripts/tiny_mce/themes/advanced/images/cancel_button_bg.gif +0 -0
  98. data/public/javascripts/tiny_mce/themes/advanced/images/charmap.gif +0 -0
  99. data/public/javascripts/tiny_mce/themes/advanced/images/cleanup.gif +0 -0
  100. data/public/javascripts/tiny_mce/themes/advanced/images/close.gif +0 -0
  101. data/public/javascripts/tiny_mce/themes/advanced/images/code.gif +0 -0
  102. data/public/javascripts/tiny_mce/themes/advanced/images/color.gif +0 -0
  103. data/public/javascripts/tiny_mce/themes/advanced/images/copy.gif +0 -0
  104. data/public/javascripts/tiny_mce/themes/advanced/images/custom_1.gif +0 -0
  105. data/public/javascripts/tiny_mce/themes/advanced/images/cut.gif +0 -0
  106. data/public/javascripts/tiny_mce/themes/advanced/images/forecolor.gif +0 -0
  107. data/public/javascripts/tiny_mce/themes/advanced/images/help.gif +0 -0
  108. data/public/javascripts/tiny_mce/themes/advanced/images/hr.gif +0 -0
  109. data/public/javascripts/tiny_mce/themes/advanced/images/image.gif +0 -0
  110. data/public/javascripts/tiny_mce/themes/advanced/images/indent.gif +0 -0
  111. data/public/javascripts/tiny_mce/themes/advanced/images/insert_button_bg.gif +0 -0
  112. data/public/javascripts/tiny_mce/themes/advanced/images/italic.gif +0 -0
  113. data/public/javascripts/tiny_mce/themes/advanced/images/italic_de_se.gif +0 -0
  114. data/public/javascripts/tiny_mce/themes/advanced/images/italic_es.gif +0 -0
  115. data/public/javascripts/tiny_mce/themes/advanced/images/italic_ru.gif +0 -0
  116. data/public/javascripts/tiny_mce/themes/advanced/images/italic_tw.gif +0 -0
  117. data/public/javascripts/tiny_mce/themes/advanced/images/justifycenter.gif +0 -0
  118. data/public/javascripts/tiny_mce/themes/advanced/images/justifyfull.gif +0 -0
  119. data/public/javascripts/tiny_mce/themes/advanced/images/justifyleft.gif +0 -0
  120. data/public/javascripts/tiny_mce/themes/advanced/images/justifyright.gif +0 -0
  121. data/public/javascripts/tiny_mce/themes/advanced/images/link.gif +0 -0
  122. data/public/javascripts/tiny_mce/themes/advanced/images/menu_check.gif +0 -0
  123. data/public/javascripts/tiny_mce/themes/advanced/images/newdocument.gif +0 -0
  124. data/public/javascripts/tiny_mce/themes/advanced/images/numlist.gif +0 -0
  125. data/public/javascripts/tiny_mce/themes/advanced/images/opacity.png +0 -0
  126. data/public/javascripts/tiny_mce/themes/advanced/images/outdent.gif +0 -0
  127. data/public/javascripts/tiny_mce/themes/advanced/images/paste.gif +0 -0
  128. data/public/javascripts/tiny_mce/themes/advanced/images/redo.gif +0 -0
  129. data/public/javascripts/tiny_mce/themes/advanced/images/removeformat.gif +0 -0
  130. data/public/javascripts/tiny_mce/themes/advanced/images/separator.gif +0 -0
  131. data/public/javascripts/tiny_mce/themes/advanced/images/spacer.gif +0 -0
  132. data/public/javascripts/tiny_mce/themes/advanced/images/statusbar_resize.gif +0 -0
  133. data/public/javascripts/tiny_mce/themes/advanced/images/strikethrough.gif +0 -0
  134. data/public/javascripts/tiny_mce/themes/advanced/images/sub.gif +0 -0
  135. data/public/javascripts/tiny_mce/themes/advanced/images/sup.gif +0 -0
  136. data/public/javascripts/tiny_mce/themes/advanced/images/underline.gif +0 -0
  137. data/public/javascripts/tiny_mce/themes/advanced/images/underline_es.gif +0 -0
  138. data/public/javascripts/tiny_mce/themes/advanced/images/underline_fr.gif +0 -0
  139. data/public/javascripts/tiny_mce/themes/advanced/images/underline_ru.gif +0 -0
  140. data/public/javascripts/tiny_mce/themes/advanced/images/underline_tw.gif +0 -0
  141. data/public/javascripts/tiny_mce/themes/advanced/images/undo.gif +0 -0
  142. data/public/javascripts/tiny_mce/themes/advanced/images/unlink.gif +0 -0
  143. data/public/javascripts/tiny_mce/themes/advanced/images/visualaid.gif +0 -0
  144. data/public/javascripts/tiny_mce/themes/advanced/images/xp/tab_bg.gif +0 -0
  145. data/public/javascripts/tiny_mce/themes/advanced/images/xp/tab_end.gif +0 -0
  146. data/public/javascripts/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif +0 -0
  147. data/public/javascripts/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif +0 -0
  148. data/public/javascripts/tiny_mce/themes/advanced/images/xp/tabs_bg.gif +0 -0
  149. data/public/javascripts/tiny_mce/themes/advanced/jscripts/about.js +75 -0
  150. data/public/javascripts/tiny_mce/themes/advanced/jscripts/anchor.js +74 -0
  151. data/public/javascripts/tiny_mce/themes/advanced/jscripts/charmap.js +326 -0
  152. data/public/javascripts/tiny_mce/themes/advanced/jscripts/color_picker.js +108 -0
  153. data/public/javascripts/tiny_mce/themes/advanced/jscripts/image.js +81 -0
  154. data/public/javascripts/tiny_mce/themes/advanced/jscripts/link.js +70 -0
  155. data/public/javascripts/tiny_mce/themes/advanced/jscripts/source_editor.js +60 -0
  156. data/public/javascripts/tiny_mce/themes/advanced/langs/en.js +82 -0
  157. data/public/javascripts/tiny_mce/themes/advanced/link.htm +100 -0
  158. data/public/javascripts/tiny_mce/themes/advanced/source_editor.htm +32 -0
  159. data/public/javascripts/tiny_mce/tiny_mce.js +1 -0
  160. data/public/javascripts/tiny_mce/tiny_mce_popup.js +288 -0
  161. data/public/javascripts/tiny_mce/tiny_mce_src.js +7284 -0
  162. data/public/javascripts/tiny_mce/utils/editable_selects.js +61 -0
  163. data/public/javascripts/tiny_mce/utils/form_utils.js +210 -0
  164. data/public/javascripts/tiny_mce/utils/mclayer.js +210 -0
  165. data/public/javascripts/tiny_mce/utils/mctabs.js +74 -0
  166. data/public/javascripts/tiny_mce/utils/validate.js +219 -0
  167. data/public/stylesheets/administration.css +5 -1
  168. data/public/stylesheets/minimal.css +1 -0
  169. data/test/functional/admin/categories_controller_test.rb +2 -2
  170. data/test/functional/xml_controller_test.rb +72 -40
  171. data/test/test_helper.rb +1 -17
  172. data/test/unit/article_test.rb +1 -1
  173. data/test/unit/trigger_test.rb +1 -1
  174. data/themes/scribbish/views/articles/_comment.rhtml +13 -17
  175. data/themes/scribbish/views/articles/_comment_form.rhtml +7 -5
  176. data/themes/scribbish/views/articles/_comment_list.rhtml +7 -0
  177. data/themes/scribbish/views/articles/read.rhtml +1 -1
  178. data/vendor/plugins/aimpresence_sidebar/views/content.rhtml +1 -1
  179. data/vendor/plugins/archives_sidebar/views/content.rhtml +1 -1
  180. data/vendor/plugins/audioscrobbler_sidebar/MAINTAINERS +26 -0
  181. data/vendor/plugins/audioscrobbler_sidebar/MIT-LICENSE +21 -0
  182. data/vendor/plugins/audioscrobbler_sidebar/README +27 -0
  183. data/vendor/plugins/backpack_sidebar/MAINTAINERS +26 -0
  184. data/vendor/plugins/backpack_sidebar/MIT-LICENSE +21 -0
  185. data/vendor/plugins/backpack_sidebar/README +27 -0
  186. data/vendor/plugins/category_sidebar/views/content.rhtml +1 -1
  187. data/vendor/plugins/sitealizer/CHANGELOG +6 -0
  188. data/vendor/plugins/sitealizer/LICENSE +22 -0
  189. data/vendor/plugins/sitealizer/README +82 -0
  190. data/vendor/plugins/sitealizer/Rakefile +22 -0
  191. data/vendor/plugins/sitealizer/init.rb +24 -0
  192. data/vendor/plugins/sitealizer/install.rb +22 -0
  193. data/vendor/plugins/sitealizer/lib/app/assets/images/bar.gif +0 -0
  194. data/vendor/plugins/sitealizer/lib/app/assets/images/uv.png +0 -0
  195. data/vendor/plugins/sitealizer/lib/app/assets/images/vh.png +0 -0
  196. data/vendor/plugins/sitealizer/lib/app/controllers/sitealizer_controller.rb +118 -0
  197. data/vendor/plugins/sitealizer/lib/app/models/site_tracker.rb +145 -0
  198. data/vendor/plugins/sitealizer/lib/app/views/layouts/sitealizer.rhtml +66 -0
  199. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_browsers.rhtml +23 -0
  200. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_daily_stats.rhtml +67 -0
  201. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_hits_summary.rhtml +0 -0
  202. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_hosts.rhtml +21 -0
  203. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_keywords.rhtml +19 -0
  204. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_languages.rhtml +21 -0
  205. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_main_frame.rhtml +84 -0
  206. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_monthly_hits.rhtml +67 -0
  207. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_page_urls.rhtml +20 -0
  208. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_platforms.rhtml +21 -0
  209. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_referers.rhtml +22 -0
  210. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_robots.rhtml +19 -0
  211. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_search_engines.rhtml +19 -0
  212. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/hourly_stats.rhtml +39 -0
  213. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/index.rhtml +8 -0
  214. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/login.rhtml +20 -0
  215. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/menu.rhtml +74 -0
  216. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/referrer_stats.rhtml +20 -0
  217. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/search_stats.rhtml +25 -0
  218. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/summary.rhtml +22 -0
  219. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/visitor_info.rhtml +30 -0
  220. data/vendor/plugins/sitealizer/lib/config.yml +18 -0
  221. data/vendor/plugins/sitealizer/lib/sitealizer/parser.rb +347 -0
  222. data/vendor/plugins/sitealizer/lib/sitealizer.rb +78 -0
  223. data/vendor/plugins/sitealizer/lib/tasks/sitealizer.rake +36 -0
  224. data/vendor/plugins/sitealizer/test/fixtures/sitealizer.yml +89 -0
  225. data/vendor/plugins/sitealizer/test/sitealizer_controller_test.rb +208 -0
  226. data/vendor/plugins/sitealizer/test/sitealizer_parser_test.rb +169 -0
  227. data/vendor/plugins/sitealizer/test/test_helper.rb +7 -0
  228. data/vendor/plugins/tada_sidebar/MAINTAINERS +26 -0
  229. data/vendor/plugins/tada_sidebar/MIT-LICENSE +21 -0
  230. data/vendor/plugins/tada_sidebar/README +27 -0
  231. data/vendor/plugins/tag_sidebar/views/content.rhtml +1 -1
  232. data/vendor/plugins/tiny_mce/README +10 -0
  233. data/vendor/plugins/tiny_mce/Rakefile +22 -0
  234. data/vendor/plugins/tiny_mce/TODO +2 -0
  235. data/vendor/plugins/tiny_mce/changelog +1017 -0
  236. data/vendor/plugins/tiny_mce/init.rb +3 -0
  237. data/vendor/plugins/tiny_mce/install.rb +1 -0
  238. data/vendor/plugins/tiny_mce/lib/tiny_mce.rb +36 -0
  239. data/vendor/plugins/tiny_mce/lib/tiny_mce_helper.rb +48 -0
  240. data/vendor/plugins/tiny_mce/tasks/tiny_mce.rake +40 -0
  241. data/vendor/plugins/tiny_mce/test/helper_testcase.rb +38 -0
  242. data/vendor/plugins/tiny_mce/test/tiny_mce_helper_test.rb +67 -0
  243. data/vendor/plugins/tiny_mce/test/tiny_mce_test.rb +85 -0
  244. data/vendor/plugins/tiny_mce/tiny_mce_options.yml +121 -0
  245. data/vendor/plugins/xbox_sidebar/MAINTAINERS +26 -0
  246. data/vendor/plugins/xbox_sidebar/MIT-LICENSE +21 -0
  247. data/vendor/plugins/xbox_sidebar/README +27 -0
  248. data/vendor/plugins/xml_sidebar/lib/xml_sidebar.rb +1 -1
  249. data/vendor/plugins/xml_sidebar/views/content.rhtml +4 -4
  250. metadata +220 -4
  251. data/TODO-4.1 +0 -16
@@ -0,0 +1,61 @@
1
+ /**
2
+ * $Id: editable_selects.js 18 2006-06-29 14:11:23Z spocke $
3
+ *
4
+ * Makes select boxes editable.
5
+ *
6
+ * @author Moxiecode
7
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
8
+ */
9
+
10
+ var TinyMCE_EditableSelects = {
11
+ editSelectElm : null,
12
+
13
+ init : function() {
14
+ var nl = document.getElementsByTagName("select"), i, d = document, o;
15
+
16
+ for (i=0; i<nl.length; i++) {
17
+ if (nl[i].className.indexOf('mceEditableSelect') != -1) {
18
+ o = new Option('(value)', '__mce_add_custom__');
19
+
20
+ o.className = 'mceAddSelectValue';
21
+
22
+ nl[i].options[nl[i].options.length] = o;
23
+ nl[i].setAttribute('onchange', 'TinyMCE_EditableSelects.onChangeEditableSelect(this);');
24
+ }
25
+ }
26
+ },
27
+
28
+ onChangeEditableSelect : function(se) {
29
+ var d = document, ne;
30
+
31
+ if (se.options[se.selectedIndex].value == '__mce_add_custom__') {
32
+ ne = d.createElement("input");
33
+ ne.id = se.id + "_custom";
34
+ ne.name = se.name + "_custom";
35
+ ne.type = "text";
36
+
37
+ ne.style.width = se.clientWidth;
38
+ se.parentNode.insertBefore(ne, se);
39
+ se.style.display = 'none';
40
+ ne.focus();
41
+ ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;
42
+ TinyMCE_EditableSelects.editSelectElm = se;
43
+ }
44
+ },
45
+
46
+ onBlurEditableSelectInput : function() {
47
+ var se = TinyMCE_EditableSelects.editSelectElm;
48
+
49
+ if (se) {
50
+ if (se.previousSibling.value != '') {
51
+ addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value);
52
+ selectByValue(document.forms[0], se.id, se.previousSibling.value);
53
+ } else
54
+ selectByValue(document.forms[0], se.id, '');
55
+
56
+ se.style.display = 'inline';
57
+ se.parentNode.removeChild(se.previousSibling);
58
+ TinyMCE_EditableSelects.editSelectElm = null;
59
+ }
60
+ }
61
+ };
@@ -0,0 +1,210 @@
1
+ /**
2
+ * $Id: form_utils.js 43 2006-08-08 16:10:07Z spocke $
3
+ *
4
+ * Various form utilitiy functions.
5
+ *
6
+ * @author Moxiecode
7
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
8
+ */
9
+
10
+ var themeBaseURL = tinyMCE.baseURL + '/themes/' + tinyMCE.getParam("theme");
11
+
12
+ function getColorPickerHTML(id, target_form_element) {
13
+ var h = "";
14
+
15
+ h += '<a id="' + id + '_link" href="javascript:void(0);" onkeydown="pickColor(event,\'' + target_form_element +'\');" onmousedown="pickColor(event,\'' + target_form_element +'\');return false;">';
16
+ h += '<img id="' + id + '" src="' + themeBaseURL + '/images/color.gif"';
17
+ h += ' onmouseover="this.className=\'mceButtonOver\'"';
18
+ h += ' onmouseout="this.className=\'mceButtonNormal\'"';
19
+ h += ' onmousedown="this.className=\'mceButtonDown\'"';
20
+ h += ' width="20" height="16" border="0" title="' + tinyMCE.getLang('lang_browse') + '"';
21
+ h += ' class="mceButtonNormal" alt="' + tinyMCE.getLang('lang_browse') + '" /></a>';
22
+
23
+ return h;
24
+ }
25
+
26
+ function pickColor(e, target_form_element) {
27
+ if ((e.keyCode == 32 || e.keyCode == 13) || e.type == "mousedown")
28
+ tinyMCEPopup.pickColor(e, target_form_element);
29
+ }
30
+
31
+ function updateColor(img_id, form_element_id) {
32
+ document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value;
33
+ }
34
+
35
+ function setBrowserDisabled(id, state) {
36
+ var img = document.getElementById(id);
37
+ var lnk = document.getElementById(id + "_link");
38
+
39
+ if (lnk) {
40
+ if (state) {
41
+ lnk.setAttribute("realhref", lnk.getAttribute("href"));
42
+ lnk.removeAttribute("href");
43
+ tinyMCE.switchClass(img, 'mceButtonDisabled', true);
44
+ } else {
45
+ lnk.setAttribute("href", lnk.getAttribute("realhref"));
46
+ tinyMCE.switchClass(img, 'mceButtonNormal', false);
47
+ }
48
+ }
49
+ }
50
+
51
+ function getBrowserHTML(id, target_form_element, type, prefix) {
52
+ var option = prefix + "_" + type + "_browser_callback";
53
+ var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback"));
54
+ if (cb == null)
55
+ return "";
56
+
57
+ var html = "";
58
+
59
+ html += '<a id="' + id + '_link" href="javascript:openBrower(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;">';
60
+ html += '<img id="' + id + '" src="' + themeBaseURL + '/images/browse.gif"';
61
+ html += ' onmouseover="this.className=\'mceButtonOver\';"';
62
+ html += ' onmouseout="this.className=\'mceButtonNormal\';"';
63
+ html += ' onmousedown="this.className=\'mceButtonDown\';"';
64
+ html += ' width="20" height="18" border="0" title="' + tinyMCE.getLang('lang_browse') + '"';
65
+ html += ' class="mceButtonNormal" alt="' + tinyMCE.getLang('lang_browse') + '" /></a>';
66
+
67
+ return html;
68
+ }
69
+
70
+ function openBrower(img_id, target_form_element, type, option) {
71
+ var img = document.getElementById(img_id);
72
+
73
+ if (img.className != "mceButtonDisabled")
74
+ tinyMCEPopup.openBrowser(target_form_element, type, option);
75
+ }
76
+
77
+ function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
78
+ if (!form_obj || !form_obj.elements[field_name])
79
+ return;
80
+
81
+ var sel = form_obj.elements[field_name];
82
+
83
+ var found = false;
84
+ for (var i=0; i<sel.options.length; i++) {
85
+ var option = sel.options[i];
86
+
87
+ if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
88
+ option.selected = true;
89
+ found = true;
90
+ } else
91
+ option.selected = false;
92
+ }
93
+
94
+ if (!found && add_custom && value != '') {
95
+ var option = new Option(value, value);
96
+ option.selected = true;
97
+ sel.options[sel.options.length] = option;
98
+ sel.selectedIndex = sel.options.length - 1;
99
+ }
100
+
101
+ return found;
102
+ }
103
+
104
+ function getSelectValue(form_obj, field_name) {
105
+ var elm = form_obj.elements[field_name];
106
+
107
+ if (elm == null || elm.options == null)
108
+ return "";
109
+
110
+ return elm.options[elm.selectedIndex].value;
111
+ }
112
+
113
+ function addSelectValue(form_obj, field_name, name, value) {
114
+ var s = form_obj.elements[field_name];
115
+ var o = new Option(name, value);
116
+ s.options[s.options.length] = o;
117
+ }
118
+
119
+ function addClassesToList(list_id, specific_option) {
120
+ // Setup class droplist
121
+ var styleSelectElm = document.getElementById(list_id);
122
+ var styles = tinyMCE.getParam('theme_advanced_styles', false);
123
+ styles = tinyMCE.getParam(specific_option, styles);
124
+
125
+ if (styles) {
126
+ var stylesAr = styles.split(';');
127
+
128
+ for (var i=0; i<stylesAr.length; i++) {
129
+ if (stylesAr != "") {
130
+ var key, value;
131
+
132
+ key = stylesAr[i].split('=')[0];
133
+ value = stylesAr[i].split('=')[1];
134
+
135
+ styleSelectElm.options[styleSelectElm.length] = new Option(key, value);
136
+ }
137
+ }
138
+ } else {
139
+ // Use auto impored classes
140
+ var csses = tinyMCE.getCSSClasses(tinyMCE.getWindowArg('editor_id'));
141
+ for (var i=0; i<csses.length; i++)
142
+ styleSelectElm.options[styleSelectElm.length] = new Option(csses[i], csses[i]);
143
+ }
144
+ }
145
+
146
+ function isVisible(element_id) {
147
+ var elm = document.getElementById(element_id);
148
+
149
+ return elm && elm.style.display != "none";
150
+ }
151
+
152
+ function convertRGBToHex(col) {
153
+ var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
154
+
155
+ var rgb = col.replace(re, "$1,$2,$3").split(',');
156
+ if (rgb.length == 3) {
157
+ r = parseInt(rgb[0]).toString(16);
158
+ g = parseInt(rgb[1]).toString(16);
159
+ b = parseInt(rgb[2]).toString(16);
160
+
161
+ r = r.length == 1 ? '0' + r : r;
162
+ g = g.length == 1 ? '0' + g : g;
163
+ b = b.length == 1 ? '0' + b : b;
164
+
165
+ return "#" + r + g + b;
166
+ }
167
+
168
+ return col;
169
+ }
170
+
171
+ function convertHexToRGB(col) {
172
+ if (col.indexOf('#') != -1) {
173
+ col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
174
+
175
+ r = parseInt(col.substring(0, 2), 16);
176
+ g = parseInt(col.substring(2, 4), 16);
177
+ b = parseInt(col.substring(4, 6), 16);
178
+
179
+ return "rgb(" + r + "," + g + "," + b + ")";
180
+ }
181
+
182
+ return col;
183
+ }
184
+
185
+ function trimSize(size) {
186
+ return size.replace(new RegExp('[^0-9%]', 'gi'), '');
187
+ }
188
+
189
+ function getCSSSize(size) {
190
+ size = trimSize(size);
191
+
192
+ if (size == "")
193
+ return "";
194
+
195
+ return size.indexOf('%') != -1 ? size : size + "px";
196
+ }
197
+
198
+ function getStyle(elm, attrib, style) {
199
+ var val = tinyMCE.getAttrib(elm, attrib);
200
+
201
+ if (val != '')
202
+ return '' + val;
203
+
204
+ if (typeof(style) == 'undefined')
205
+ style = attrib;
206
+
207
+ val = eval('elm.style.' + style);
208
+
209
+ return val == null ? '' : '' + val;
210
+ }
@@ -0,0 +1,210 @@
1
+ /**
2
+ * $Id: mclayer.js 18 2006-06-29 14:11:23Z spocke $
3
+ *
4
+ * Moxiecode floating layer script.
5
+ *
6
+ * @author Moxiecode
7
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
8
+ */
9
+
10
+ function MCLayer(id) {
11
+ this.id = id;
12
+ this.settings = new Array();
13
+ this.blockerElement = null;
14
+ this.isMSIE = navigator.appName == "Microsoft Internet Explorer";
15
+ this.events = false;
16
+ this.autoHideCallback = null;
17
+ }
18
+
19
+ MCLayer.prototype = {
20
+ moveRelativeTo : function(re, p, a) {
21
+ var rep = this.getAbsPosition(re);
22
+ var w = parseInt(re.offsetWidth);
23
+ var h = parseInt(re.offsetHeight);
24
+ var x, y;
25
+
26
+ switch (p) {
27
+ case "tl":
28
+ break;
29
+
30
+ case "tr":
31
+ x = rep.absLeft + w;
32
+ y = rep.absTop;
33
+ break;
34
+
35
+ case "bl":
36
+ break;
37
+
38
+ case "br":
39
+ break;
40
+ }
41
+
42
+ this.moveTo(x, y);
43
+ },
44
+
45
+ moveBy : function(dx, dy) {
46
+ var e = this.getElement();
47
+ var x = parseInt(e.style.left);
48
+ var y = parseInt(e.style.top);
49
+
50
+ e.style.left = (x + dx) + "px";
51
+ e.style.top = (y + dy) + "px";
52
+
53
+ this.updateBlocker();
54
+ },
55
+
56
+ moveTo : function(x, y) {
57
+ var e = this.getElement();
58
+
59
+ e.style.left = x + "px";
60
+ e.style.top = y + "px";
61
+
62
+ this.updateBlocker();
63
+ },
64
+
65
+ show : function() {
66
+ MCLayer.visibleLayer = this;
67
+
68
+ this.getElement().style.display = 'block';
69
+ this.updateBlocker();
70
+ },
71
+
72
+ hide : function() {
73
+ this.getElement().style.display = 'none';
74
+ this.updateBlocker();
75
+ },
76
+
77
+ setAutoHide : function(s, cb) {
78
+ this.autoHideCallback = cb;
79
+ this.registerEventHandlers();
80
+ },
81
+
82
+ getElement : function() {
83
+ return document.getElementById(this.id);
84
+ },
85
+
86
+ updateBlocker : function() {
87
+ if (!this.isMSIE)
88
+ return;
89
+
90
+ var e = this.getElement();
91
+ var b = this.getBlocker();
92
+ var x = this.parseInt(e.style.left);
93
+ var y = this.parseInt(e.style.top);
94
+ var w = this.parseInt(e.offsetWidth);
95
+ var h = this.parseInt(e.offsetHeight);
96
+
97
+ b.style.left = x + 'px';
98
+ b.style.top = y + 'px';
99
+ b.style.width = w + 'px';
100
+ b.style.height = h + 'px';
101
+ b.style.display = e.style.display;
102
+ },
103
+
104
+ getBlocker : function() {
105
+ if (!this.blockerElement) {
106
+ var d = document, b = d.createElement("iframe");
107
+
108
+ b.style.cssText = 'display: none; left: 0px; position: absolute; top: 0';
109
+ b.src = 'javascript:false;';
110
+ b.frameBorder = '0';
111
+ b.scrolling = 'no';
112
+
113
+ d.body.appendChild(b);
114
+ this.blockerElement = b;
115
+ }
116
+
117
+ return this.blockerElement;
118
+ },
119
+
120
+ getAbsPosition : function(n) {
121
+ var p = {absLeft : 0, absTop : 0};
122
+
123
+ while (n) {
124
+ p.absLeft += n.offsetLeft;
125
+ p.absTop += n.offsetTop;
126
+ n = n.offsetParent;
127
+ }
128
+
129
+ return p;
130
+ },
131
+
132
+ registerEventHandlers : function() {
133
+ if (!this.events) {
134
+ var d = document;
135
+
136
+ this.addEvent(d, 'mousedown', MCLayer.prototype.onMouseDown);
137
+
138
+ this.events = true;
139
+ }
140
+ },
141
+
142
+ addEvent : function(o, n, h) {
143
+ if (o.attachEvent)
144
+ o.attachEvent("on" + n, h);
145
+ else
146
+ o.addEventListener(n, h, false);
147
+ },
148
+
149
+ onMouseDown : function(e) {
150
+ e = typeof(e) == "undefined" ? window.event : e;
151
+ var b = document.body;
152
+ var l = MCLayer.visibleLayer;
153
+
154
+ if (l) {
155
+ var mx = l.isMSIE ? e.clientX + b.scrollLeft : e.pageX;
156
+ var my = l.isMSIE ? e.clientY + b.scrollTop : e.pageY;
157
+ var el = l.getElement();
158
+ var x = parseInt(el.style.left);
159
+ var y = parseInt(el.style.top);
160
+ var w = parseInt(el.offsetWidth);
161
+ var h = parseInt(el.offsetHeight);
162
+
163
+ if (!(mx > x && mx < x + w && my > y && my < y + h)) {
164
+ MCLayer.visibleLayer = null;
165
+
166
+ if (l.autoHideCallback && l.autoHideCallback(l, e, mx, my))
167
+ return true;
168
+
169
+ l.hide();
170
+ }
171
+ }
172
+ },
173
+
174
+ addCSSClass : function(e, c) {
175
+ this.removeCSSClass(e, c);
176
+ var a = this.explode(' ', e.className);
177
+ a[a.length] = c;
178
+ e.className = a.join(' ');
179
+ },
180
+
181
+ removeCSSClass : function(e, c) {
182
+ var a = this.explode(' ', e.className), i;
183
+
184
+ for (i=0; i<a.length; i++) {
185
+ if (a[i] == c)
186
+ a[i] = '';
187
+ }
188
+
189
+ e.className = a.join(' ');
190
+ },
191
+
192
+ explode : function(d, s) {
193
+ var ar = s.split(d);
194
+ var oar = new Array();
195
+
196
+ for (var i = 0; i<ar.length; i++) {
197
+ if (ar[i] != "")
198
+ oar[oar.length] = ar[i];
199
+ }
200
+
201
+ return oar;
202
+ },
203
+
204
+ parseInt : function(s) {
205
+ if (s == null || s == '')
206
+ return 0;
207
+
208
+ return parseInt(s);
209
+ }
210
+ }
@@ -0,0 +1,74 @@
1
+ /**
2
+ * $Id: mctabs.js 18 2006-06-29 14:11:23Z spocke $
3
+ *
4
+ * Moxiecode DHTML Tabs script.
5
+ *
6
+ * @author Moxiecode
7
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
8
+ */
9
+
10
+ function MCTabs() {
11
+ this.settings = new Array();
12
+ };
13
+
14
+ MCTabs.prototype.init = function(settings) {
15
+ this.settings = settings;
16
+ };
17
+
18
+ MCTabs.prototype.getParam = function(name, default_value) {
19
+ var value = null;
20
+
21
+ value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
22
+
23
+ // Fix bool values
24
+ if (value == "true" || value == "false")
25
+ return (value == "true");
26
+
27
+ return value;
28
+ };
29
+
30
+ MCTabs.prototype.displayTab = function(tab_id, panel_id) {
31
+ var panelElm = document.getElementById(panel_id);
32
+ var panelContainerElm = panelElm ? panelElm.parentNode : null;
33
+ var tabElm = document.getElementById(tab_id);
34
+ var tabContainerElm = tabElm ? tabElm.parentNode : null;
35
+ var selectionClass = this.getParam('selection_class', 'current');
36
+
37
+ if (tabElm && tabContainerElm) {
38
+ var nodes = tabContainerElm.childNodes;
39
+
40
+ // Hide all other tabs
41
+ for (var i=0; i<nodes.length; i++) {
42
+ if (nodes[i].nodeName == "LI")
43
+ nodes[i].className = '';
44
+ }
45
+
46
+ // Show selected tab
47
+ tabElm.className = 'current';
48
+ }
49
+
50
+ if (panelElm && panelContainerElm) {
51
+ var nodes = panelContainerElm.childNodes;
52
+
53
+ // Hide all other panels
54
+ for (var i=0; i<nodes.length; i++) {
55
+ if (nodes[i].nodeName == "DIV")
56
+ nodes[i].className = 'panel';
57
+ }
58
+
59
+ // Show selected panel
60
+ panelElm.className = 'current';
61
+ }
62
+ };
63
+
64
+ MCTabs.prototype.getAnchor = function() {
65
+ var pos, url = document.location.href;
66
+
67
+ if ((pos = url.lastIndexOf('#')) != -1)
68
+ return url.substring(pos + 1);
69
+
70
+ return "";
71
+ };
72
+
73
+ // Global instance
74
+ var mcTabs = new MCTabs();