tenon 1.0.76 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (175) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/ckeditor/CHANGES.md +987 -0
  3. data/app/assets/javascripts/ckeditor/LICENSE.md +1420 -0
  4. data/app/assets/javascripts/ckeditor/README.md +39 -0
  5. data/app/assets/javascripts/ckeditor/adapters/jquery.js +10 -0
  6. data/app/assets/javascripts/ckeditor/build-config.js +74 -0
  7. data/app/assets/javascripts/ckeditor/ckeditor.js +820 -0
  8. data/app/assets/javascripts/ckeditor/config.js +38 -0
  9. data/app/assets/javascripts/ckeditor/contents.css +132 -0
  10. data/app/assets/javascripts/ckeditor/lang/en.js +5 -0
  11. data/app/assets/javascripts/ckeditor/lang/fr-ca.js +5 -0
  12. data/app/assets/javascripts/ckeditor/plugins/clipboard/dialogs/paste.js +11 -0
  13. data/app/assets/javascripts/ckeditor/plugins/dialog/dialogDefinition.js +4 -0
  14. data/app/assets/javascripts/ckeditor/plugins/icons.png +0 -0
  15. data/app/assets/javascripts/ckeditor/plugins/icons_hidpi.png +0 -0
  16. data/app/assets/javascripts/ckeditor/plugins/link/dialogs/anchor.js +7 -0
  17. data/app/assets/javascripts/ckeditor/plugins/link/dialogs/link.js +26 -0
  18. data/app/assets/javascripts/ckeditor/plugins/link/images/anchor.png +0 -0
  19. data/app/assets/javascripts/ckeditor/plugins/link/images/hidpi/anchor.png +0 -0
  20. data/app/assets/javascripts/ckeditor/plugins/linktoasset/plugin.js +24 -0
  21. data/app/assets/javascripts/ckeditor/plugins/pastefromword/filter/default.js +32 -0
  22. data/app/assets/javascripts/ckeditor/plugins/sourcedialog/dialogs/sourcedialog.js +6 -0
  23. data/app/assets/javascripts/ckeditor/samples/css/samples.css +1640 -0
  24. data/app/assets/javascripts/ckeditor/samples/img/github-top.png +0 -0
  25. data/app/assets/javascripts/ckeditor/samples/img/header-bg.png +0 -0
  26. data/app/assets/javascripts/ckeditor/samples/img/header-separator.png +0 -0
  27. data/app/assets/javascripts/ckeditor/samples/img/logo.png +0 -0
  28. data/app/assets/javascripts/ckeditor/samples/img/navigation-tip.png +0 -0
  29. data/app/assets/javascripts/ckeditor/samples/index.html +128 -0
  30. data/app/assets/javascripts/ckeditor/samples/js/sample.js +53 -0
  31. data/app/assets/javascripts/ckeditor/samples/js/sf.js +17 -0
  32. data/app/assets/javascripts/ckeditor/samples/old/ajax.html +85 -0
  33. data/app/assets/javascripts/ckeditor/samples/old/api.html +210 -0
  34. data/app/assets/javascripts/ckeditor/samples/old/appendto.html +59 -0
  35. data/app/assets/javascripts/ckeditor/samples/old/assets/inlineall/logo.png +0 -0
  36. data/app/assets/javascripts/ckeditor/samples/old/assets/outputxhtml/outputxhtml.css +204 -0
  37. data/app/assets/javascripts/ckeditor/samples/old/assets/posteddata.php +59 -0
  38. data/app/assets/javascripts/ckeditor/samples/old/assets/sample.jpg +0 -0
  39. data/app/assets/javascripts/ckeditor/samples/old/assets/uilanguages/languages.js +7 -0
  40. data/app/assets/javascripts/ckeditor/samples/old/datafiltering.html +508 -0
  41. data/app/assets/javascripts/ckeditor/samples/old/dialog/assets/my_dialog.js +48 -0
  42. data/app/assets/javascripts/ckeditor/samples/old/dialog/dialog.html +190 -0
  43. data/app/assets/javascripts/ckeditor/samples/old/divreplace.html +144 -0
  44. data/app/assets/javascripts/ckeditor/samples/old/enterkey/enterkey.html +106 -0
  45. data/app/assets/javascripts/ckeditor/samples/old/index.html +125 -0
  46. data/app/assets/javascripts/ckeditor/samples/old/inlineall.html +314 -0
  47. data/app/assets/javascripts/ckeditor/samples/old/inlinebycode.html +124 -0
  48. data/app/assets/javascripts/ckeditor/samples/old/inlinetextarea.html +113 -0
  49. data/app/assets/javascripts/ckeditor/samples/old/jquery.html +103 -0
  50. data/app/assets/javascripts/ckeditor/samples/old/readonly.html +76 -0
  51. data/app/assets/javascripts/ckeditor/samples/old/replacebyclass.html +60 -0
  52. data/app/assets/javascripts/ckeditor/samples/old/replacebycode.html +59 -0
  53. data/app/assets/javascripts/ckeditor/samples/old/sample.css +357 -0
  54. data/app/assets/javascripts/ckeditor/samples/old/sample.js +50 -0
  55. data/app/assets/javascripts/ckeditor/samples/old/sample_posteddata.php +16 -0
  56. data/app/assets/javascripts/ckeditor/samples/old/sourcedialog/sourcedialog.html +121 -0
  57. data/app/assets/javascripts/ckeditor/samples/old/tabindex.html +78 -0
  58. data/app/assets/javascripts/ckeditor/samples/old/toolbar/toolbar.html +235 -0
  59. data/app/assets/javascripts/ckeditor/samples/old/uicolor.html +72 -0
  60. data/app/assets/javascripts/ckeditor/samples/old/uilanguages.html +122 -0
  61. data/app/assets/javascripts/ckeditor/samples/old/wysiwygarea/fullpage.html +80 -0
  62. data/app/assets/javascripts/ckeditor/samples/old/xhtmlstyle.html +234 -0
  63. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/css/fontello.css +55 -0
  64. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/LICENSE.txt +10 -0
  65. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/config.json +28 -0
  66. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/fontello.eot +0 -0
  67. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/fontello.svg +14 -0
  68. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/fontello.ttf +0 -0
  69. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/fontello.woff +0 -0
  70. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/index.html +446 -0
  71. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/js/abstracttoolbarmodifier.js +13 -0
  72. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/js/fulltoolbareditor.js +9 -0
  73. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/js/toolbarmodifier.js +33 -0
  74. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/js/toolbartextmodifier.js +14 -0
  75. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/LICENSE +19 -0
  76. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.css +325 -0
  77. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.js +288 -0
  78. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/javascript.js +25 -0
  79. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/neo.css +36 -0
  80. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.css +38 -0
  81. data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.js +16 -0
  82. data/app/assets/javascripts/ckeditor/skins/moono-dark/dialog.css +5 -0
  83. data/app/assets/javascripts/ckeditor/skins/moono-dark/dialog_ie.css +5 -0
  84. data/app/assets/javascripts/ckeditor/skins/moono-dark/dialog_ie7.css +5 -0
  85. data/app/assets/javascripts/ckeditor/skins/moono-dark/dialog_ie8.css +5 -0
  86. data/app/assets/javascripts/ckeditor/skins/moono-dark/dialog_iequirks.css +5 -0
  87. data/app/assets/javascripts/ckeditor/skins/moono-dark/editor.css +7 -0
  88. data/app/assets/javascripts/ckeditor/skins/moono-dark/editor_gecko.css +5 -0
  89. data/app/assets/javascripts/ckeditor/skins/moono-dark/editor_ie.css +5 -0
  90. data/app/assets/javascripts/ckeditor/skins/moono-dark/editor_ie7.css +5 -0
  91. data/app/assets/javascripts/ckeditor/skins/moono-dark/editor_ie8.css +5 -0
  92. data/app/assets/javascripts/ckeditor/skins/moono-dark/editor_iequirks.css +5 -0
  93. data/app/assets/javascripts/ckeditor/skins/moono-dark/icons.png +0 -0
  94. data/app/assets/javascripts/ckeditor/skins/moono-dark/icons_hidpi.png +0 -0
  95. data/app/assets/javascripts/ckeditor/skins/moono-dark/images/arrow.png +0 -0
  96. data/app/assets/javascripts/ckeditor/skins/moono-dark/images/close.png +0 -0
  97. data/app/assets/javascripts/ckeditor/skins/moono-dark/images/hidpi/close.png +0 -0
  98. data/app/assets/javascripts/ckeditor/skins/moono-dark/images/hidpi/lock-open.png +0 -0
  99. data/app/assets/javascripts/ckeditor/skins/moono-dark/images/hidpi/lock.png +0 -0
  100. data/app/assets/javascripts/ckeditor/skins/moono-dark/images/hidpi/refresh.png +0 -0
  101. data/app/assets/javascripts/ckeditor/skins/moono-dark/images/lock-open.png +0 -0
  102. data/app/assets/javascripts/ckeditor/skins/moono-dark/images/lock.png +0 -0
  103. data/app/assets/javascripts/ckeditor/skins/moono-dark/images/refresh.png +0 -0
  104. data/app/assets/javascripts/ckeditor/skins/moono-dark/readme.md +51 -0
  105. data/app/assets/javascripts/ckeditor/styles.js +111 -0
  106. data/app/assets/javascripts/tenon/features/editor.js.coffee +24 -0
  107. data/app/assets/javascripts/tenon/features/modal_windows.js.coffee +48 -21
  108. data/app/assets/javascripts/tenon/features/tenon_content/asset_link.js.coffee +9 -3
  109. data/app/assets/javascripts/tenon/features/tenon_content/editor.js.coffee +10 -3
  110. data/app/assets/javascripts/tenon/tenon.js +1 -2
  111. data/app/assets/javascripts/tenon/tenon_manifest.js +1 -1
  112. data/app/assets/stylesheets/tenon/{colors-custom.css.scss → colors-custom.scss} +0 -0
  113. data/app/assets/stylesheets/tenon/{colors-named.css.scss → colors-named.scss} +0 -0
  114. data/app/assets/stylesheets/tenon/{helpers.css.scss → helpers.scss} +0 -0
  115. data/app/assets/stylesheets/tenon/layout/{assets.css.scss → assets.scss} +0 -0
  116. data/app/assets/stylesheets/tenon/layout/{breakpoints.css.scss → breakpoints.scss} +0 -0
  117. data/app/assets/stylesheets/tenon/layout/{global.css.scss → global.scss} +0 -0
  118. data/app/assets/stylesheets/tenon/layout/{grid.css.scss → grid.scss} +0 -0
  119. data/app/assets/stylesheets/tenon/layout/{main-nav.css.scss → main-nav.scss} +0 -0
  120. data/app/assets/stylesheets/tenon/layout/{margins.css.scss → margins.scss} +0 -0
  121. data/app/assets/stylesheets/tenon/layout/{mobile.css.scss → mobile.scss} +0 -0
  122. data/app/assets/stylesheets/tenon/layout/{sidebar.css.scss → sidebar.scss} +0 -0
  123. data/app/assets/stylesheets/tenon/layout/{util-nav.css.scss → util-nav.scss} +0 -0
  124. data/app/assets/stylesheets/tenon/{mixins.css.scss → mixins.scss} +0 -0
  125. data/app/assets/stylesheets/tenon/{styleguide.css.scss → styleguide.scss} +0 -0
  126. data/app/assets/stylesheets/tenon/{tenon.css.scss → tenon.scss} +0 -0
  127. data/app/assets/stylesheets/tenon/{typography.css.scss → typography.scss} +0 -0
  128. data/app/assets/stylesheets/tenon/ui/{alerts.css.scss → alerts.scss} +0 -0
  129. data/app/assets/stylesheets/tenon/ui/{asset-attachment.css.scss → asset-attachment.scss} +0 -0
  130. data/app/assets/stylesheets/tenon/ui/{asset-cropping.css.scss → asset-cropping.scss} +0 -0
  131. data/app/assets/stylesheets/tenon/ui/{asset-uploads.css.scss → asset-uploads.scss} +0 -0
  132. data/app/assets/stylesheets/tenon/ui/{buttons.css.scss → buttons.scss} +0 -0
  133. data/app/assets/stylesheets/tenon/ui/{callouts.css.scss → callouts.scss} +0 -0
  134. data/app/assets/stylesheets/tenon/ui/{comments.css.scss → comments.scss} +0 -0
  135. data/app/assets/stylesheets/tenon/ui/{forms.css.scss → forms.scss} +16 -0
  136. data/app/assets/stylesheets/tenon/ui/{generic-loader.css.scss → generic-loader.scss} +0 -0
  137. data/app/assets/stylesheets/tenon/ui/{header-tools.css.scss → header-tools.scss} +0 -0
  138. data/app/assets/stylesheets/tenon/ui/{i18n.css.scss → i18n.scss} +0 -0
  139. data/app/assets/stylesheets/tenon/ui/{list-style-toggle.css.scss → list-style-toggle.scss} +0 -0
  140. data/app/assets/stylesheets/tenon/ui/{login.css.scss → login.scss} +0 -0
  141. data/app/assets/stylesheets/tenon/ui/{medium-editor.css.scss → medium-editor.scss} +0 -0
  142. data/app/assets/stylesheets/tenon/ui/{modals.css.scss → modals.scss} +0 -0
  143. data/app/assets/stylesheets/tenon/ui/{pagination.css.scss → pagination.scss} +0 -0
  144. data/app/assets/stylesheets/tenon/ui/{progress-bars.css.scss → progress-bars.scss} +0 -0
  145. data/app/assets/stylesheets/tenon/ui/{quick-search.css.scss → quick-search.scss} +0 -0
  146. data/app/assets/stylesheets/tenon/ui/{record-grids.css.scss → record-grids.scss} +0 -0
  147. data/app/assets/stylesheets/tenon/ui/{record-lists.css.scss → record-lists.scss} +0 -0
  148. data/app/assets/stylesheets/tenon/ui/{section-headers.css.scss → section-headers.scss} +0 -0
  149. data/app/assets/stylesheets/tenon/ui/{select2-custom.css.scss → select2-custom.scss} +0 -0
  150. data/app/assets/stylesheets/tenon/ui/{tables.css.scss → tables.scss} +0 -0
  151. data/app/assets/stylesheets/tenon/ui/{tabs.css.scss → tabs.scss} +0 -0
  152. data/app/assets/stylesheets/tenon/ui/{tenon-content-library.css.scss → tenon-content-library.scss} +0 -0
  153. data/app/assets/stylesheets/tenon/ui/{tenon-content-popped-out.css.scss → tenon-content-popped-out.scss} +0 -0
  154. data/app/assets/stylesheets/tenon/ui/{tenon-content.css.scss → tenon-content.scss} +0 -15
  155. data/app/assets/stylesheets/tenon/ui/{thinking.css.scss → thinking.scss} +0 -0
  156. data/app/assets/stylesheets/tenon/ui/{toolbox.css.scss → toolbox.scss} +0 -0
  157. data/app/assets/stylesheets/tenon/{z-indexes.css.scss → z-indexes.scss} +0 -0
  158. data/app/assets/stylesheets/{tenon_addons.css.scss → tenon_addons.scss} +0 -0
  159. data/app/form_builders/tenon/form_builder.rb +39 -19
  160. data/app/models/tenon/page.rb +6 -0
  161. data/app/views/tenon/fields/_asset.html.haml +32 -0
  162. data/app/views/tenon/fields/_rich_text.html.haml +8 -0
  163. data/app/views/tenon/galleries/_photo_fields.html.haml +2 -2
  164. data/app/views/tenon/posts/_form.html.haml +2 -5
  165. data/app/views/tenon/tenon_content/_row.html.haml +2 -2
  166. data/app/views/tenon/tenon_content/piece_types/form/_text.html.haml +2 -3
  167. data/lib/generators/tenon/scaffold/templates/view__form.html.haml +1 -1
  168. data/lib/tenon/version.rb +1 -1
  169. data/spec/controllers/tenon/pages_controller_spec.rb +1 -1
  170. data/vendor/assets/stylesheets/{bootstrap.css.scss → bootstrap.scss} +0 -0
  171. data/vendor/assets/stylesheets/{bootstrap.tables.css.scss → bootstrap.tables.scss} +0 -0
  172. data/vendor/assets/stylesheets/{jscrollpane.css.scss → jscrollpane.scss} +0 -0
  173. metadata +168 -63
  174. data/app/assets/javascripts/tenon/features/medium.js.coffee +0 -13
  175. data/app/views/tenon/shared/_asset_field.html.haml +0 -29
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
3
+ * For licensing, see LICENSE.md or http://ckeditor.com/license
4
+ */
5
+
6
+ // Tool scripts for the sample pages.
7
+ // This file can be ignored and is not required to make use of CKEditor.
8
+
9
+ ( function() {
10
+ CKEDITOR.on( 'instanceReady', function( ev ) {
11
+ // Check for sample compliance.
12
+ var editor = ev.editor,
13
+ meta = CKEDITOR.document.$.getElementsByName( 'ckeditor-sample-required-plugins' ),
14
+ requires = meta.length ? CKEDITOR.dom.element.get( meta[ 0 ] ).getAttribute( 'content' ).split( ',' ) : [],
15
+ missing = [],
16
+ i;
17
+
18
+ if ( requires.length ) {
19
+ for ( i = 0; i < requires.length; i++ ) {
20
+ if ( !editor.plugins[ requires[ i ] ] )
21
+ missing.push( '<code>' + requires[ i ] + '</code>' );
22
+ }
23
+
24
+ if ( missing.length ) {
25
+ var warn = CKEDITOR.dom.element.createFromHtml(
26
+ '<div class="warning">' +
27
+ '<span>To fully experience this demo, the ' + missing.join( ', ' ) + ' plugin' + ( missing.length > 1 ? 's are' : ' is' ) + ' required.</span>' +
28
+ '</div>'
29
+ );
30
+ warn.insertBefore( editor.container );
31
+ }
32
+ }
33
+
34
+ // Set icons.
35
+ var doc = new CKEDITOR.dom.document( document ),
36
+ icons = doc.find( '.button_icon' );
37
+
38
+ for ( i = 0; i < icons.count(); i++ ) {
39
+ var icon = icons.getItem( i ),
40
+ name = icon.getAttribute( 'data-icon' ),
41
+ style = CKEDITOR.skin.getIconStyle( name, ( CKEDITOR.lang.dir == 'rtl' ) );
42
+
43
+ icon.addClass( 'cke_button_icon' );
44
+ icon.addClass( 'cke_button__' + name + '_icon' );
45
+ icon.setAttribute( 'style', style );
46
+ icon.setStyle( 'float', 'none' );
47
+
48
+ }
49
+ } );
50
+ } )();
@@ -0,0 +1,16 @@
1
+ <?php /* <body><pre>
2
+
3
+ -------------------------------------------------------------------------------------------
4
+ CKEditor - Posted Data
5
+
6
+ We are sorry, but your Web server does not support the PHP language used in this script.
7
+
8
+ Please note that CKEditor can be used with any other server-side language than just PHP.
9
+ To save the content created with CKEditor you need to read the POST data on the server
10
+ side and write it to a file or the database.
11
+
12
+ Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
13
+ For licensing, see LICENSE.md or http://ckeditor.com/license
14
+ -------------------------------------------------------------------------------------------
15
+
16
+ </pre><div style="display:none"></body> */ include "assets/posteddata.php"; ?>
@@ -0,0 +1,121 @@
1
+ <!DOCTYPE html>
2
+ <!--
3
+ Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
4
+ For licensing, see LICENSE.md or http://ckeditor.com/license
5
+ -->
6
+ <html>
7
+ <head>
8
+ <meta charset="utf-8">
9
+ <title>Editing source code in a dialog &mdash; CKEditor Sample</title>
10
+ <script src="../../../ckeditor.js"></script>
11
+ <link rel="stylesheet" href="../../../samples/old/sample.css">
12
+ <meta name="ckeditor-sample-name" content="Editing source code in a dialog">
13
+ <meta name="ckeditor-sample-group" content="Plugins">
14
+ <meta name="ckeditor-sample-description" content="Editing HTML content of both inline and classic editor instances.">
15
+ <meta name="ckeditor-sample-isnew" content="1">
16
+ <style>
17
+
18
+ #editable
19
+ {
20
+ padding: 10px;
21
+ float: left;
22
+ }
23
+
24
+ </style>
25
+ </head>
26
+ <body>
27
+ <h1 class="samples">
28
+ <a href="../../../samples/old/index.html">CKEditor Samples</a> &raquo; Editing source code in a dialog
29
+ </h1>
30
+ <div class="warning deprecated">
31
+ This sample is not maintained anymore. Check out its <a href="http://sdk.ckeditor.com/samples/sourcearea.html">brand new version in CKEditor SDK</a>.
32
+ </div>
33
+ <div class="description">
34
+ <p>
35
+ <strong>Sourcedialog</strong> plugin provides an easy way to edit raw HTML content
36
+ of an editor, similarly to what is possible with <strong>Sourcearea</strong>
37
+ plugin for classic (<code>iframe</code>-based) instances but using dialogs. Thanks to that, it's also possible
38
+ to manipulate raw content of inline editor instances.
39
+ </p>
40
+ <p>
41
+ This plugin extends the toolbar with a button,
42
+ which opens a dialog window with a source code editor. It works with both classic
43
+ and inline instances. To enable this
44
+ plugin, basically add <code>extraPlugins: 'sourcedialog'</code> to editor's
45
+ config:
46
+ </p>
47
+ <pre class="samples">
48
+ // Inline editor.
49
+ CKEDITOR.inline( 'editable', {
50
+ <strong>extraPlugins: 'sourcedialog'</strong>
51
+ });
52
+
53
+ // Classic (iframe-based) editor.
54
+ CKEDITOR.replace( 'textarea_id', {
55
+ <strong>extraPlugins: 'sourcedialog'</strong>,
56
+ removePlugins: 'sourcearea'
57
+ });
58
+ </pre>
59
+ <p>
60
+ Note that you may want to include <code>removePlugins: 'sourcearea'</code>
61
+ in your config when using <strong>Sourcedialog</strong> in classic editor instances.
62
+ This prevents feature redundancy.
63
+ </p>
64
+ <p>
65
+ Note that <code>editable</code> in the code above is the <code>id</code>
66
+ attribute of the <code>&lt;div&gt;</code> element to be converted into an inline instance.
67
+ </p>
68
+ <p>
69
+ Note that <code><em>textarea_id</em></code> in the code above is the <code>id</code> attribute of
70
+ the <code>&lt;textarea&gt;</code> element to be replaced with CKEditor.
71
+ </p>
72
+ </div>
73
+ <div>
74
+ <label for="editor1">
75
+ Inline editor:
76
+ </label>
77
+ <div id="editor1" contenteditable="true" style="padding: 5px 20px;">
78
+ <p>This is some <strong>sample text</strong>. You are using <a href="http://ckeditor.com/">CKEditor</a>.</p>
79
+ </div>
80
+ </div>
81
+ <br>
82
+ <div>
83
+ <label for="editor2">
84
+ Classic editor:
85
+ </label>
86
+ <textarea cols="80" id="editor2" name="editor2" rows="10">
87
+ This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://ckeditor.com/"&gt;CKEditor&lt;/a&gt;.
88
+ </textarea>
89
+ </div>
90
+ <script>
91
+
92
+ // We need to turn off the automatic editor creation first.
93
+ CKEDITOR.disableAutoInline = true;
94
+
95
+ var config = {
96
+ toolbarGroups: [
97
+ { name: 'mode' },
98
+ { name: 'basicstyles' },
99
+ { name: 'links' }
100
+ ],
101
+ extraPlugins: 'sourcedialog',
102
+ removePlugins: 'sourcearea'
103
+ }
104
+
105
+ CKEDITOR.inline( 'editor1', config );
106
+ CKEDITOR.replace( 'editor2', config );
107
+
108
+ </script>
109
+ <div id="footer">
110
+ <hr>
111
+ <p>
112
+ CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">
113
+ http://ckeditor.com</a>
114
+ </p>
115
+ <p id="copy">
116
+ Copyright &copy; 2003-2015, <a class="samples" href="http://cksource.com/">CKSource</a>
117
+ - Frederico Knabben. All rights reserved.
118
+ </p>
119
+ </div>
120
+ </body>
121
+ </html>
@@ -0,0 +1,78 @@
1
+ <!DOCTYPE html>
2
+ <!--
3
+ Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
4
+ For licensing, see LICENSE.md or http://ckeditor.com/license
5
+ -->
6
+ <html>
7
+ <head>
8
+ <meta charset="utf-8">
9
+ <title>TAB Key-Based Navigation &mdash; CKEditor Sample</title>
10
+ <script src="../../ckeditor.js"></script>
11
+ <link href="sample.css" rel="stylesheet">
12
+ <style>
13
+
14
+ .cke_focused,
15
+ .cke_editable.cke_focused
16
+ {
17
+ outline: 3px dotted blue !important;
18
+ *border: 3px dotted blue !important; /* For IE7 */
19
+ }
20
+
21
+ </style>
22
+ <script>
23
+
24
+ CKEDITOR.on( 'instanceReady', function( evt ) {
25
+ var editor = evt.editor;
26
+ editor.setData( 'This editor has it\'s tabIndex set to <strong>' + editor.tabIndex + '</strong>' );
27
+
28
+ // Apply focus class name.
29
+ editor.on( 'focus', function() {
30
+ editor.container.addClass( 'cke_focused' );
31
+ });
32
+ editor.on( 'blur', function() {
33
+ editor.container.removeClass( 'cke_focused' );
34
+ });
35
+
36
+ // Put startup focus on the first editor in tab order.
37
+ if ( editor.tabIndex == 1 )
38
+ editor.focus();
39
+ });
40
+
41
+ </script>
42
+ </head>
43
+ <body>
44
+ <h1 class="samples">
45
+ <a href="index.html">CKEditor Samples</a> &raquo; TAB Key-Based Navigation
46
+ </h1>
47
+ <div class="warning deprecated">
48
+ This sample is not maintained anymore. Check out its <a href="http://sdk.ckeditor.com/samples/tabindex.html">brand new version in CKEditor SDK</a>.
49
+ </div>
50
+ <div class="description">
51
+ <p>
52
+ This sample shows how tab key navigation among editor instances is
53
+ affected by the <code>tabIndex</code> attribute from
54
+ the original page element. Use TAB key to move between the editors.
55
+ </p>
56
+ </div>
57
+ <p>
58
+ <textarea class="ckeditor" cols="80" id="editor4" rows="10" tabindex="1"></textarea>
59
+ </p>
60
+ <div class="ckeditor" contenteditable="true" id="editor1" tabindex="4"></div>
61
+ <p>
62
+ <textarea class="ckeditor" cols="80" id="editor2" rows="10" tabindex="2"></textarea>
63
+ </p>
64
+ <p>
65
+ <textarea class="ckeditor" cols="80" id="editor3" rows="10" tabindex="3"></textarea>
66
+ </p>
67
+ <div id="footer">
68
+ <hr>
69
+ <p>
70
+ CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
71
+ </p>
72
+ <p id="copy">
73
+ Copyright &copy; 2003-2015, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
74
+ Knabben. All rights reserved.
75
+ </p>
76
+ </div>
77
+ </body>
78
+ </html>
@@ -0,0 +1,235 @@
1
+ <!DOCTYPE html>
2
+ <!--
3
+ Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
4
+ For licensing, see LICENSE.md or http://ckeditor.com/license
5
+ -->
6
+ <html>
7
+ <head>
8
+ <meta charset="utf-8">
9
+ <title>Toolbar Configuration &mdash; CKEditor Sample</title>
10
+ <meta name="ckeditor-sample-name" content="Toolbar Configurations">
11
+ <meta name="ckeditor-sample-group" content="Advanced Samples">
12
+ <meta name="ckeditor-sample-description" content="Configuring CKEditor to display full or custom toolbar layout.">
13
+ <script src="../../../ckeditor.js"></script>
14
+ <link href="../../../samples/old/sample.css" rel="stylesheet">
15
+ </head>
16
+ <body>
17
+ <h1 class="samples">
18
+ <a href="../../../samples/old/index.html">CKEditor Samples</a> &raquo; Toolbar Configuration
19
+ </h1>
20
+ <div class="warning deprecated">
21
+ This sample is not maintained anymore. Check out the <a href="../../../samples/toolbarconfigurator/index.html#basic">brand new CKEditor Toolbar Configurator</a>.
22
+ </div>
23
+ <div class="description">
24
+ <p>
25
+ This sample page demonstrates editor with loaded <a href="#fullToolbar">full toolbar</a> (all registered buttons) and, if
26
+ current editor's configuration modifies default settings, also editor with <a href="#currentToolbar">modified toolbar</a>.
27
+ </p>
28
+
29
+ <p>Since CKEditor 4 there are two ways to configure toolbar buttons.</p>
30
+
31
+ <h2 class="samples">By <a href="http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-toolbar">config.toolbar</a></h2>
32
+
33
+ <p>
34
+ You can explicitly define which buttons are displayed in which groups and in which order.
35
+ This is the more precise setting, but less flexible. If newly added plugin adds its
36
+ own button you'll have to add it manually to your <code>config.toolbar</code> setting as well.
37
+ </p>
38
+
39
+ <p>To add a CKEditor instance with custom toolbar setting, insert the following JavaScript call to your code:</p>
40
+
41
+ <pre class="samples">
42
+ CKEDITOR.replace( <em>'textarea_id'</em>, {
43
+ <strong>toolbar:</strong> [
44
+ { name: 'document', items: [ 'Source', '-', 'NewPage', 'Preview', '-', 'Templates' ] }, // Defines toolbar group with name (used to create voice label) and items in 3 subgroups.
45
+ [ 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo' ], // Defines toolbar group without name.
46
+ '/', // Line break - next group will be placed in new line.
47
+ { name: 'basicstyles', items: [ 'Bold', 'Italic' ] }
48
+ ]
49
+ });</pre>
50
+
51
+ <h2 class="samples">By <a href="http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-toolbarGroups">config.toolbarGroups</a></h2>
52
+
53
+ <p>
54
+ You can define which groups of buttons (like e.g. <code>basicstyles</code>, <code>clipboard</code>
55
+ and <code>forms</code>) are displayed and in which order. Registered buttons are associated
56
+ with toolbar groups by <code>toolbar</code> property in their definition.
57
+ This setting's advantage is that you don't have to modify toolbar configuration
58
+ when adding/removing plugins which register their own buttons.
59
+ </p>
60
+
61
+ <p>To add a CKEditor instance with custom toolbar groups setting, insert the following JavaScript call to your code:</p>
62
+
63
+ <pre class="samples">
64
+ CKEDITOR.replace( <em>'textarea_id'</em>, {
65
+ <strong>toolbarGroups:</strong> [
66
+ { name: 'document', groups: [ 'mode', 'document' ] }, // Displays document group with its two subgroups.
67
+ { name: 'clipboard', groups: [ 'clipboard', 'undo' ] }, // Group's name will be used to create voice label.
68
+ '/', // Line break - next group will be placed in new line.
69
+ { name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
70
+ { name: 'links' }
71
+ ]
72
+
73
+ // NOTE: Remember to leave 'toolbar' property with the default value (null).
74
+ });</pre>
75
+ </div>
76
+
77
+ <div id="currentToolbar" style="display: none">
78
+ <h2 class="samples">Current toolbar configuration</h2>
79
+ <p>Below you can see editor with current toolbar definition.</p>
80
+ <textarea cols="80" id="editorCurrent" name="editorCurrent" rows="10">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://ckeditor.com/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
81
+ <pre id="editorCurrentCfg" class="samples"></pre>
82
+ </div>
83
+
84
+ <div id="fullToolbar">
85
+ <h2 class="samples">Full toolbar configuration</h2>
86
+ <p>Below you can see editor with full toolbar, generated automatically by the editor.</p>
87
+ <p>
88
+ <strong>Note</strong>: To create editor instance with full toolbar you don't have to set anything.
89
+ Just leave <code>toolbar</code> and <code>toolbarGroups</code> with the default, <code>null</code> values.
90
+ </p>
91
+ <textarea cols="80" id="editorFull" name="editorFull" rows="10">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://ckeditor.com/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
92
+ <pre id="editorFullCfg" class="samples"></pre>
93
+ </div>
94
+
95
+ <script>
96
+
97
+ (function() {
98
+ 'use strict';
99
+
100
+ var buttonsNames;
101
+
102
+ CKEDITOR.config.extraPlugins = 'toolbar';
103
+
104
+ CKEDITOR.on( 'instanceReady', function( evt ) {
105
+ var editor = evt.editor,
106
+ editorCurrent = editor.name == 'editorCurrent',
107
+ defaultToolbar = !( editor.config.toolbar || editor.config.toolbarGroups || editor.config.removeButtons ),
108
+ pre = CKEDITOR.document.getById( editor.name + 'Cfg' ),
109
+ output = '';
110
+
111
+ if ( editorCurrent ) {
112
+ // If default toolbar configuration has been modified, show "current toolbar" section.
113
+ if ( !defaultToolbar )
114
+ CKEDITOR.document.getById( 'currentToolbar' ).show();
115
+ else
116
+ return;
117
+ }
118
+
119
+ if ( !buttonsNames )
120
+ buttonsNames = createButtonsNamesHash( editor.ui.items );
121
+
122
+ // Toolbar isn't set explicitly, so it was created automatically from toolbarGroups.
123
+ if ( !editor.config.toolbar ) {
124
+ output +=
125
+ '// Toolbar configuration generated automatically by the editor based on config.toolbarGroups.\n' +
126
+ dumpToolbarConfiguration( editor ) +
127
+ '\n\n' +
128
+ '// Toolbar groups configuration.\n' +
129
+ dumpToolbarConfiguration( editor, true )
130
+ }
131
+ // Toolbar groups doesn't count in this case - print only toolbar.
132
+ else {
133
+ output += '// Toolbar configuration.\n' +
134
+ dumpToolbarConfiguration( editor );
135
+ }
136
+
137
+ // Recreate to avoid old IE from loosing whitespaces on filling <pre> content.
138
+ var preOutput = pre.getOuterHtml().replace( /(?=<\/)/, output );
139
+ CKEDITOR.dom.element.createFromHtml( preOutput ).replace( pre );
140
+ } );
141
+
142
+ CKEDITOR.replace( 'editorCurrent', { height: 100 } );
143
+ CKEDITOR.replace( 'editorFull', {
144
+ // Reset toolbar settings, so full toolbar will be generated automatically.
145
+ toolbar: null,
146
+ toolbarGroups: null,
147
+ removeButtons: null,
148
+ height: 100
149
+ } );
150
+
151
+ function dumpToolbarConfiguration( editor, printGroups ) {
152
+ var output = [],
153
+ toolbar = editor.toolbar;
154
+
155
+ for ( var i = 0; i < toolbar.length; ++i ) {
156
+ var group = dumpToolbarGroup( toolbar[ i ], printGroups );
157
+ if ( group )
158
+ output.push( group );
159
+ }
160
+
161
+ return 'config.toolbar' + ( printGroups ? 'Groups' : '' ) + ' = [\n\t' + output.join( ',\n\t' ) + '\n];';
162
+ }
163
+
164
+ function dumpToolbarGroup( group, printGroups ) {
165
+ var output = [];
166
+
167
+ if ( typeof group == 'string' )
168
+ return '\'' + group + '\'';
169
+ if ( CKEDITOR.tools.isArray( group ) )
170
+ return dumpToolbarItems( group );
171
+ // Skip group when printing entire toolbar configuration and there are no items in this group.
172
+ if ( !printGroups && !group.items )
173
+ return;
174
+
175
+ if ( group.name )
176
+ output.push( 'name: \'' + group.name + '\'' );
177
+
178
+ if ( group.groups )
179
+ output.push( 'groups: ' + dumpToolbarItems( group.groups ) );
180
+
181
+ if ( !printGroups )
182
+ output.push( 'items: ' + dumpToolbarItems( group.items ) );
183
+
184
+ return '{ ' + output.join( ', ' ) + ' }';
185
+ }
186
+
187
+ function dumpToolbarItems( items ) {
188
+ if ( typeof items == 'string' )
189
+ return '\'' + items + '\'';
190
+
191
+ var names = [],
192
+ i, item;
193
+
194
+ for ( var i = 0; i < items.length; ++i ) {
195
+ item = items[ i ];
196
+ if ( typeof item == 'string' )
197
+ names.push( item );
198
+ else {
199
+ if ( item.type == CKEDITOR.UI_SEPARATOR )
200
+ names.push( '-' );
201
+ else
202
+ names.push( buttonsNames[ item.name ] );
203
+ }
204
+ }
205
+
206
+ return '[ \'' + names.join( '\', \'' ) + '\' ]';
207
+ }
208
+
209
+ // Creates { 'lowercased': 'LowerCased' } buttons names hash.
210
+ function createButtonsNamesHash( items ) {
211
+ var hash = {},
212
+ name;
213
+
214
+ for ( name in items ) {
215
+ hash[ items[ name ].name ] = name;
216
+ }
217
+
218
+ return hash;
219
+ }
220
+
221
+ })();
222
+ </script>
223
+
224
+ <div id="footer">
225
+ <hr>
226
+ <p>
227
+ CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
228
+ </p>
229
+ <p id="copy">
230
+ Copyright &copy; 2003-2015, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
231
+ Knabben. All rights reserved.
232
+ </p>
233
+ </div>
234
+ </body>
235
+ </html>