tenon 1.0.76 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/ckeditor/CHANGES.md +987 -0
- data/app/assets/javascripts/ckeditor/LICENSE.md +1420 -0
- data/app/assets/javascripts/ckeditor/README.md +39 -0
- data/app/assets/javascripts/ckeditor/adapters/jquery.js +10 -0
- data/app/assets/javascripts/ckeditor/build-config.js +74 -0
- data/app/assets/javascripts/ckeditor/ckeditor.js +820 -0
- data/app/assets/javascripts/ckeditor/config.js +38 -0
- data/app/assets/javascripts/ckeditor/contents.css +132 -0
- data/app/assets/javascripts/ckeditor/lang/en.js +5 -0
- data/app/assets/javascripts/ckeditor/lang/fr-ca.js +5 -0
- data/app/assets/javascripts/ckeditor/plugins/clipboard/dialogs/paste.js +11 -0
- data/app/assets/javascripts/ckeditor/plugins/dialog/dialogDefinition.js +4 -0
- data/app/assets/javascripts/ckeditor/plugins/icons.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/icons_hidpi.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/link/dialogs/anchor.js +7 -0
- data/app/assets/javascripts/ckeditor/plugins/link/dialogs/link.js +26 -0
- data/app/assets/javascripts/ckeditor/plugins/link/images/anchor.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/link/images/hidpi/anchor.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/linktoasset/plugin.js +24 -0
- data/app/assets/javascripts/ckeditor/plugins/pastefromword/filter/default.js +32 -0
- data/app/assets/javascripts/ckeditor/plugins/sourcedialog/dialogs/sourcedialog.js +6 -0
- data/app/assets/javascripts/ckeditor/samples/css/samples.css +1640 -0
- data/app/assets/javascripts/ckeditor/samples/img/github-top.png +0 -0
- data/app/assets/javascripts/ckeditor/samples/img/header-bg.png +0 -0
- data/app/assets/javascripts/ckeditor/samples/img/header-separator.png +0 -0
- data/app/assets/javascripts/ckeditor/samples/img/logo.png +0 -0
- data/app/assets/javascripts/ckeditor/samples/img/navigation-tip.png +0 -0
- data/app/assets/javascripts/ckeditor/samples/index.html +128 -0
- data/app/assets/javascripts/ckeditor/samples/js/sample.js +53 -0
- data/app/assets/javascripts/ckeditor/samples/js/sf.js +17 -0
- data/app/assets/javascripts/ckeditor/samples/old/ajax.html +85 -0
- data/app/assets/javascripts/ckeditor/samples/old/api.html +210 -0
- data/app/assets/javascripts/ckeditor/samples/old/appendto.html +59 -0
- data/app/assets/javascripts/ckeditor/samples/old/assets/inlineall/logo.png +0 -0
- data/app/assets/javascripts/ckeditor/samples/old/assets/outputxhtml/outputxhtml.css +204 -0
- data/app/assets/javascripts/ckeditor/samples/old/assets/posteddata.php +59 -0
- data/app/assets/javascripts/ckeditor/samples/old/assets/sample.jpg +0 -0
- data/app/assets/javascripts/ckeditor/samples/old/assets/uilanguages/languages.js +7 -0
- data/app/assets/javascripts/ckeditor/samples/old/datafiltering.html +508 -0
- data/app/assets/javascripts/ckeditor/samples/old/dialog/assets/my_dialog.js +48 -0
- data/app/assets/javascripts/ckeditor/samples/old/dialog/dialog.html +190 -0
- data/app/assets/javascripts/ckeditor/samples/old/divreplace.html +144 -0
- data/app/assets/javascripts/ckeditor/samples/old/enterkey/enterkey.html +106 -0
- data/app/assets/javascripts/ckeditor/samples/old/index.html +125 -0
- data/app/assets/javascripts/ckeditor/samples/old/inlineall.html +314 -0
- data/app/assets/javascripts/ckeditor/samples/old/inlinebycode.html +124 -0
- data/app/assets/javascripts/ckeditor/samples/old/inlinetextarea.html +113 -0
- data/app/assets/javascripts/ckeditor/samples/old/jquery.html +103 -0
- data/app/assets/javascripts/ckeditor/samples/old/readonly.html +76 -0
- data/app/assets/javascripts/ckeditor/samples/old/replacebyclass.html +60 -0
- data/app/assets/javascripts/ckeditor/samples/old/replacebycode.html +59 -0
- data/app/assets/javascripts/ckeditor/samples/old/sample.css +357 -0
- data/app/assets/javascripts/ckeditor/samples/old/sample.js +50 -0
- data/app/assets/javascripts/ckeditor/samples/old/sample_posteddata.php +16 -0
- data/app/assets/javascripts/ckeditor/samples/old/sourcedialog/sourcedialog.html +121 -0
- data/app/assets/javascripts/ckeditor/samples/old/tabindex.html +78 -0
- data/app/assets/javascripts/ckeditor/samples/old/toolbar/toolbar.html +235 -0
- data/app/assets/javascripts/ckeditor/samples/old/uicolor.html +72 -0
- data/app/assets/javascripts/ckeditor/samples/old/uilanguages.html +122 -0
- data/app/assets/javascripts/ckeditor/samples/old/wysiwygarea/fullpage.html +80 -0
- data/app/assets/javascripts/ckeditor/samples/old/xhtmlstyle.html +234 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/css/fontello.css +55 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/LICENSE.txt +10 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/config.json +28 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/fontello.eot +0 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/fontello.svg +14 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/fontello.ttf +0 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/fontello.woff +0 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/index.html +446 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/js/abstracttoolbarmodifier.js +13 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/js/fulltoolbareditor.js +9 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/js/toolbarmodifier.js +33 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/js/toolbartextmodifier.js +14 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/LICENSE +19 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.css +325 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.js +288 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/javascript.js +25 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/neo.css +36 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.css +38 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.js +16 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/dialog.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/dialog_ie.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/dialog_ie7.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/dialog_ie8.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/dialog_iequirks.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/editor.css +7 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/editor_gecko.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/editor_ie.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/editor_ie7.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/editor_ie8.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/editor_iequirks.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/icons.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/icons_hidpi.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/images/arrow.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/images/close.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/images/hidpi/close.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/images/hidpi/lock-open.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/images/hidpi/lock.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/images/hidpi/refresh.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/images/lock-open.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/images/lock.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/images/refresh.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moono-dark/readme.md +51 -0
- data/app/assets/javascripts/ckeditor/styles.js +111 -0
- data/app/assets/javascripts/tenon/features/editor.js.coffee +24 -0
- data/app/assets/javascripts/tenon/features/modal_windows.js.coffee +48 -21
- data/app/assets/javascripts/tenon/features/tenon_content/asset_link.js.coffee +9 -3
- data/app/assets/javascripts/tenon/features/tenon_content/editor.js.coffee +10 -3
- data/app/assets/javascripts/tenon/tenon.js +1 -2
- data/app/assets/javascripts/tenon/tenon_manifest.js +1 -1
- data/app/assets/stylesheets/tenon/{colors-custom.css.scss → colors-custom.scss} +0 -0
- data/app/assets/stylesheets/tenon/{colors-named.css.scss → colors-named.scss} +0 -0
- data/app/assets/stylesheets/tenon/{helpers.css.scss → helpers.scss} +0 -0
- data/app/assets/stylesheets/tenon/layout/{assets.css.scss → assets.scss} +0 -0
- data/app/assets/stylesheets/tenon/layout/{breakpoints.css.scss → breakpoints.scss} +0 -0
- data/app/assets/stylesheets/tenon/layout/{global.css.scss → global.scss} +0 -0
- data/app/assets/stylesheets/tenon/layout/{grid.css.scss → grid.scss} +0 -0
- data/app/assets/stylesheets/tenon/layout/{main-nav.css.scss → main-nav.scss} +0 -0
- data/app/assets/stylesheets/tenon/layout/{margins.css.scss → margins.scss} +0 -0
- data/app/assets/stylesheets/tenon/layout/{mobile.css.scss → mobile.scss} +0 -0
- data/app/assets/stylesheets/tenon/layout/{sidebar.css.scss → sidebar.scss} +0 -0
- data/app/assets/stylesheets/tenon/layout/{util-nav.css.scss → util-nav.scss} +0 -0
- data/app/assets/stylesheets/tenon/{mixins.css.scss → mixins.scss} +0 -0
- data/app/assets/stylesheets/tenon/{styleguide.css.scss → styleguide.scss} +0 -0
- data/app/assets/stylesheets/tenon/{tenon.css.scss → tenon.scss} +0 -0
- data/app/assets/stylesheets/tenon/{typography.css.scss → typography.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{alerts.css.scss → alerts.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{asset-attachment.css.scss → asset-attachment.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{asset-cropping.css.scss → asset-cropping.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{asset-uploads.css.scss → asset-uploads.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{buttons.css.scss → buttons.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{callouts.css.scss → callouts.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{comments.css.scss → comments.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{forms.css.scss → forms.scss} +16 -0
- data/app/assets/stylesheets/tenon/ui/{generic-loader.css.scss → generic-loader.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{header-tools.css.scss → header-tools.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{i18n.css.scss → i18n.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{list-style-toggle.css.scss → list-style-toggle.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{login.css.scss → login.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{medium-editor.css.scss → medium-editor.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{modals.css.scss → modals.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{pagination.css.scss → pagination.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{progress-bars.css.scss → progress-bars.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{quick-search.css.scss → quick-search.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{record-grids.css.scss → record-grids.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{record-lists.css.scss → record-lists.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{section-headers.css.scss → section-headers.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{select2-custom.css.scss → select2-custom.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{tables.css.scss → tables.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{tabs.css.scss → tabs.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{tenon-content-library.css.scss → tenon-content-library.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{tenon-content-popped-out.css.scss → tenon-content-popped-out.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{tenon-content.css.scss → tenon-content.scss} +0 -15
- data/app/assets/stylesheets/tenon/ui/{thinking.css.scss → thinking.scss} +0 -0
- data/app/assets/stylesheets/tenon/ui/{toolbox.css.scss → toolbox.scss} +0 -0
- data/app/assets/stylesheets/tenon/{z-indexes.css.scss → z-indexes.scss} +0 -0
- data/app/assets/stylesheets/{tenon_addons.css.scss → tenon_addons.scss} +0 -0
- data/app/form_builders/tenon/form_builder.rb +39 -19
- data/app/models/tenon/page.rb +6 -0
- data/app/views/tenon/fields/_asset.html.haml +32 -0
- data/app/views/tenon/fields/_rich_text.html.haml +8 -0
- data/app/views/tenon/galleries/_photo_fields.html.haml +2 -2
- data/app/views/tenon/posts/_form.html.haml +2 -5
- data/app/views/tenon/tenon_content/_row.html.haml +2 -2
- data/app/views/tenon/tenon_content/piece_types/form/_text.html.haml +2 -3
- data/lib/generators/tenon/scaffold/templates/view__form.html.haml +1 -1
- data/lib/tenon/version.rb +1 -1
- data/spec/controllers/tenon/pages_controller_spec.rb +1 -1
- data/vendor/assets/stylesheets/{bootstrap.css.scss → bootstrap.scss} +0 -0
- data/vendor/assets/stylesheets/{bootstrap.tables.css.scss → bootstrap.tables.scss} +0 -0
- data/vendor/assets/stylesheets/{jscrollpane.css.scss → jscrollpane.scss} +0 -0
- metadata +168 -63
- data/app/assets/javascripts/tenon/features/medium.js.coffee +0 -13
- 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 — 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> » 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><div></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><textarea></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 <strong>sample text</strong>. You are using <a href="http://ckeditor.com/">CKEditor</a>.
|
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 © 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 — 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> » 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 © 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 — 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> » 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"><p>This is some <strong>sample text</strong>. You are using <a href="http://ckeditor.com/">CKEditor</a>.</p></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"><p>This is some <strong>sample text</strong>. You are using <a href="http://ckeditor.com/">CKEditor</a>.</p></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 © 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>
|