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,48 @@
|
|
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
|
+
CKEDITOR.dialog.add( 'myDialog', function() {
|
7
|
+
return {
|
8
|
+
title: 'My Dialog',
|
9
|
+
minWidth: 400,
|
10
|
+
minHeight: 200,
|
11
|
+
contents: [
|
12
|
+
{
|
13
|
+
id: 'tab1',
|
14
|
+
label: 'First Tab',
|
15
|
+
title: 'First Tab',
|
16
|
+
elements: [
|
17
|
+
{
|
18
|
+
id: 'input1',
|
19
|
+
type: 'text',
|
20
|
+
label: 'Text Field'
|
21
|
+
},
|
22
|
+
{
|
23
|
+
id: 'select1',
|
24
|
+
type: 'select',
|
25
|
+
label: 'Select Field',
|
26
|
+
items: [
|
27
|
+
[ 'option1', 'value1' ],
|
28
|
+
[ 'option2', 'value2' ]
|
29
|
+
]
|
30
|
+
}
|
31
|
+
]
|
32
|
+
},
|
33
|
+
{
|
34
|
+
id: 'tab2',
|
35
|
+
label: 'Second Tab',
|
36
|
+
title: 'Second Tab',
|
37
|
+
elements: [
|
38
|
+
{
|
39
|
+
id: 'button1',
|
40
|
+
type: 'button',
|
41
|
+
label: 'Button Field'
|
42
|
+
}
|
43
|
+
]
|
44
|
+
}
|
45
|
+
]
|
46
|
+
};
|
47
|
+
} );
|
48
|
+
|
@@ -0,0 +1,190 @@
|
|
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>Using API to Customize Dialog Windows — 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="Using the JavaScript API to customize dialog windows">
|
13
|
+
<meta name="ckeditor-sample-group" content="Advanced Samples">
|
14
|
+
<meta name="ckeditor-sample-description" content="Using the dialog windows API to customize dialog windows without changing the original editor code.">
|
15
|
+
<style>
|
16
|
+
|
17
|
+
.cke_button__mybutton_icon
|
18
|
+
{
|
19
|
+
display: none !important;
|
20
|
+
}
|
21
|
+
|
22
|
+
.cke_button__mybutton_label
|
23
|
+
{
|
24
|
+
display: inline !important;
|
25
|
+
}
|
26
|
+
|
27
|
+
</style>
|
28
|
+
<script>
|
29
|
+
|
30
|
+
CKEDITOR.on( 'instanceCreated', function( ev ){
|
31
|
+
var editor = ev.editor;
|
32
|
+
|
33
|
+
// Listen for the "pluginsLoaded" event, so we are sure that the
|
34
|
+
// "dialog" plugin has been loaded and we are able to do our
|
35
|
+
// customizations.
|
36
|
+
editor.on( 'pluginsLoaded', function() {
|
37
|
+
|
38
|
+
// If our custom dialog has not been registered, do that now.
|
39
|
+
if ( !CKEDITOR.dialog.exists( 'myDialog' ) ) {
|
40
|
+
// We need to do the following trick to find out the dialog
|
41
|
+
// definition file URL path. In the real world, you would simply
|
42
|
+
// point to an absolute path directly, like "/mydir/mydialog.js".
|
43
|
+
var href = document.location.href.split( '/' );
|
44
|
+
href.pop();
|
45
|
+
href.push( 'assets/my_dialog.js' );
|
46
|
+
href = href.join( '/' );
|
47
|
+
|
48
|
+
// Finally, register the dialog.
|
49
|
+
CKEDITOR.dialog.add( 'myDialog', href );
|
50
|
+
}
|
51
|
+
|
52
|
+
// Register the command used to open the dialog.
|
53
|
+
editor.addCommand( 'myDialogCmd', new CKEDITOR.dialogCommand( 'myDialog' ) );
|
54
|
+
|
55
|
+
// Add the a custom toolbar buttons, which fires the above
|
56
|
+
// command..
|
57
|
+
editor.ui.add( 'MyButton', CKEDITOR.UI_BUTTON, {
|
58
|
+
label: 'My Dialog',
|
59
|
+
command: 'myDialogCmd'
|
60
|
+
});
|
61
|
+
});
|
62
|
+
});
|
63
|
+
|
64
|
+
// When opening a dialog, its "definition" is created for it, for
|
65
|
+
// each editor instance. The "dialogDefinition" event is then
|
66
|
+
// fired. We should use this event to make customizations to the
|
67
|
+
// definition of existing dialogs.
|
68
|
+
CKEDITOR.on( 'dialogDefinition', function( ev ) {
|
69
|
+
// Take the dialog name and its definition from the event data.
|
70
|
+
var dialogName = ev.data.name;
|
71
|
+
var dialogDefinition = ev.data.definition;
|
72
|
+
|
73
|
+
// Check if the definition is from the dialog we're
|
74
|
+
// interested on (the "Link" dialog).
|
75
|
+
if ( dialogName == 'myDialog' && ev.editor.name == 'editor2' ) {
|
76
|
+
// Get a reference to the "Link Info" tab.
|
77
|
+
var infoTab = dialogDefinition.getContents( 'tab1' );
|
78
|
+
|
79
|
+
// Add a new text field to the "tab1" tab page.
|
80
|
+
infoTab.add( {
|
81
|
+
type: 'text',
|
82
|
+
label: 'My Custom Field',
|
83
|
+
id: 'customField',
|
84
|
+
'default': 'Sample!',
|
85
|
+
validate: function() {
|
86
|
+
if ( ( /\d/ ).test( this.getValue() ) )
|
87
|
+
return 'My Custom Field must not contain digits';
|
88
|
+
}
|
89
|
+
});
|
90
|
+
|
91
|
+
// Remove the "select1" field from the "tab1" tab.
|
92
|
+
infoTab.remove( 'select1' );
|
93
|
+
|
94
|
+
// Set the default value for "input1" field.
|
95
|
+
var input1 = infoTab.get( 'input1' );
|
96
|
+
input1[ 'default' ] = 'www.example.com';
|
97
|
+
|
98
|
+
// Remove the "tab2" tab page.
|
99
|
+
dialogDefinition.removeContents( 'tab2' );
|
100
|
+
|
101
|
+
// Add a new tab to the "Link" dialog.
|
102
|
+
dialogDefinition.addContents( {
|
103
|
+
id: 'customTab',
|
104
|
+
label: 'My Tab',
|
105
|
+
accessKey: 'M',
|
106
|
+
elements: [
|
107
|
+
{
|
108
|
+
id: 'myField1',
|
109
|
+
type: 'text',
|
110
|
+
label: 'My Text Field'
|
111
|
+
},
|
112
|
+
{
|
113
|
+
id: 'myField2',
|
114
|
+
type: 'text',
|
115
|
+
label: 'Another Text Field'
|
116
|
+
}
|
117
|
+
]
|
118
|
+
});
|
119
|
+
|
120
|
+
// Provide the focus handler to start initial focus in "customField" field.
|
121
|
+
dialogDefinition.onFocus = function() {
|
122
|
+
var urlField = this.getContentElement( 'tab1', 'customField' );
|
123
|
+
urlField.select();
|
124
|
+
};
|
125
|
+
}
|
126
|
+
});
|
127
|
+
|
128
|
+
var config = {
|
129
|
+
extraPlugins: 'dialog',
|
130
|
+
toolbar: [ [ 'MyButton' ] ]
|
131
|
+
};
|
132
|
+
|
133
|
+
</script>
|
134
|
+
</head>
|
135
|
+
<body>
|
136
|
+
<h1 class="samples">
|
137
|
+
<a href="../../../samples/old/index.html">CKEditor Samples</a> » Using CKEditor Dialog API
|
138
|
+
</h1>
|
139
|
+
<div class="warning deprecated">
|
140
|
+
This sample is not maintained anymore. Check out the <a href="http://sdk.ckeditor.com/">brand new samples in CKEditor SDK</a>.
|
141
|
+
</div>
|
142
|
+
<div class="description">
|
143
|
+
<p>
|
144
|
+
This sample shows how to use the
|
145
|
+
<a class="samples" href="http://docs.ckeditor.com/#!/api/CKEDITOR.dialog">CKEditor Dialog API</a>
|
146
|
+
to customize CKEditor dialog windows without changing the original editor code.
|
147
|
+
The following customizations are being done in the example below:
|
148
|
+
</p>
|
149
|
+
<p>
|
150
|
+
For details on how to create this setup check the source code of this sample page.
|
151
|
+
</p>
|
152
|
+
</div>
|
153
|
+
<p>A custom dialog is added to the editors using the <code>pluginsLoaded</code> event, from an external <a target="_blank" href="assets/my_dialog.js">dialog definition file</a>:</p>
|
154
|
+
<ol>
|
155
|
+
<li><strong>Creating a custom dialog window</strong> – "My Dialog" dialog window opened with the "My Dialog" toolbar button.</li>
|
156
|
+
<li><strong>Creating a custom button</strong> – Add button to open the dialog with "My Dialog" toolbar button.</li>
|
157
|
+
</ol>
|
158
|
+
<textarea cols="80" id="editor1" name="editor1" rows="10"><p>This is some <strong>sample text</strong>. You are using <a href="http://ckeditor.com/">CKEditor</a>.</p></textarea>
|
159
|
+
<script>
|
160
|
+
// Replace the <textarea id="editor1"> with an CKEditor instance.
|
161
|
+
CKEDITOR.replace( 'editor1', config );
|
162
|
+
</script>
|
163
|
+
<p>The below editor modify the dialog definition of the above added dialog using the <code>dialogDefinition</code> event:</p>
|
164
|
+
<ol>
|
165
|
+
<li><strong>Adding dialog tab</strong> – Add new tab "My Tab" to dialog window.</li>
|
166
|
+
<li><strong>Removing a dialog window tab</strong> – Remove "Second Tab" page from the dialog window.</li>
|
167
|
+
<li><strong>Adding dialog window fields</strong> – Add "My Custom Field" to the dialog window.</li>
|
168
|
+
<li><strong>Removing dialog window field</strong> – Remove "Select Field" selection field from the dialog window.</li>
|
169
|
+
<li><strong>Setting default values for dialog window fields</strong> – Set default value of "Text Field" text field. </li>
|
170
|
+
<li><strong>Setup initial focus for dialog window</strong> – Put initial focus on "My Custom Field" text field. </li>
|
171
|
+
</ol>
|
172
|
+
<textarea cols="80" id="editor2" name="editor2" rows="10"><p>This is some <strong>sample text</strong>. You are using <a href="http://ckeditor.com/">CKEditor</a>.</p></textarea>
|
173
|
+
<script>
|
174
|
+
|
175
|
+
// Replace the <textarea id="editor1"> with an CKEditor instance.
|
176
|
+
CKEDITOR.replace( 'editor2', config );
|
177
|
+
|
178
|
+
</script>
|
179
|
+
<div id="footer">
|
180
|
+
<hr>
|
181
|
+
<p>
|
182
|
+
CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
|
183
|
+
</p>
|
184
|
+
<p id="copy">
|
185
|
+
Copyright © 2003-2015, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
|
186
|
+
Knabben. All rights reserved.
|
187
|
+
</p>
|
188
|
+
</div>
|
189
|
+
</body>
|
190
|
+
</html>
|
@@ -0,0 +1,144 @@
|
|
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>Replace DIV — CKEditor Sample</title>
|
10
|
+
<script src="../../ckeditor.js"></script>
|
11
|
+
<link href="sample.css" rel="stylesheet">
|
12
|
+
<style>
|
13
|
+
|
14
|
+
div.editable
|
15
|
+
{
|
16
|
+
border: solid 2px transparent;
|
17
|
+
padding-left: 15px;
|
18
|
+
padding-right: 15px;
|
19
|
+
}
|
20
|
+
|
21
|
+
div.editable:hover
|
22
|
+
{
|
23
|
+
border-color: black;
|
24
|
+
}
|
25
|
+
|
26
|
+
</style>
|
27
|
+
<script>
|
28
|
+
|
29
|
+
// Uncomment the following code to test the "Timeout Loading Method".
|
30
|
+
// CKEDITOR.loadFullCoreTimeout = 5;
|
31
|
+
|
32
|
+
window.onload = function() {
|
33
|
+
// Listen to the double click event.
|
34
|
+
if ( window.addEventListener )
|
35
|
+
document.body.addEventListener( 'dblclick', onDoubleClick, false );
|
36
|
+
else if ( window.attachEvent )
|
37
|
+
document.body.attachEvent( 'ondblclick', onDoubleClick );
|
38
|
+
|
39
|
+
};
|
40
|
+
|
41
|
+
function onDoubleClick( ev ) {
|
42
|
+
// Get the element which fired the event. This is not necessarily the
|
43
|
+
// element to which the event has been attached.
|
44
|
+
var element = ev.target || ev.srcElement;
|
45
|
+
|
46
|
+
// Find out the div that holds this element.
|
47
|
+
var name;
|
48
|
+
|
49
|
+
do {
|
50
|
+
element = element.parentNode;
|
51
|
+
}
|
52
|
+
while ( element && ( name = element.nodeName.toLowerCase() ) &&
|
53
|
+
( name != 'div' || element.className.indexOf( 'editable' ) == -1 ) && name != 'body' );
|
54
|
+
|
55
|
+
if ( name == 'div' && element.className.indexOf( 'editable' ) != -1 )
|
56
|
+
replaceDiv( element );
|
57
|
+
}
|
58
|
+
|
59
|
+
var editor;
|
60
|
+
|
61
|
+
function replaceDiv( div ) {
|
62
|
+
if ( editor )
|
63
|
+
editor.destroy();
|
64
|
+
|
65
|
+
editor = CKEDITOR.replace( div );
|
66
|
+
}
|
67
|
+
|
68
|
+
</script>
|
69
|
+
</head>
|
70
|
+
<body>
|
71
|
+
<h1 class="samples">
|
72
|
+
<a href="index.html">CKEditor Samples</a> » Replace DIV with CKEditor on the Fly
|
73
|
+
</h1>
|
74
|
+
<div class="warning deprecated">
|
75
|
+
This sample is not maintained anymore. Check out the <a href="http://sdk.ckeditor.com/">brand new samples in CKEditor SDK</a>.
|
76
|
+
</div>
|
77
|
+
<div class="description">
|
78
|
+
<p>
|
79
|
+
This sample shows how to automatically replace <code><div></code> elements
|
80
|
+
with a CKEditor instance on the fly, following user's doubleclick. The content
|
81
|
+
that was previously placed inside the <code><div></code> element will now
|
82
|
+
be moved into CKEditor editing area.
|
83
|
+
</p>
|
84
|
+
<p>
|
85
|
+
For details on how to create this setup check the source code of this sample page.
|
86
|
+
</p>
|
87
|
+
</div>
|
88
|
+
<p>
|
89
|
+
Double-click any of the following <code><div></code> elements to transform them into
|
90
|
+
editor instances.
|
91
|
+
</p>
|
92
|
+
<div class="editable">
|
93
|
+
<h3>
|
94
|
+
Part 1
|
95
|
+
</h3>
|
96
|
+
<p>
|
97
|
+
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi
|
98
|
+
semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna
|
99
|
+
rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla
|
100
|
+
nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce
|
101
|
+
eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus.
|
102
|
+
</p>
|
103
|
+
</div>
|
104
|
+
<div class="editable">
|
105
|
+
<h3>
|
106
|
+
Part 2
|
107
|
+
</h3>
|
108
|
+
<p>
|
109
|
+
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi
|
110
|
+
semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna
|
111
|
+
rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla
|
112
|
+
nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce
|
113
|
+
eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus.
|
114
|
+
</p>
|
115
|
+
<p>
|
116
|
+
Donec velit. Mauris massa. Vestibulum non nulla. Nam suscipit arcu nec elit. Phasellus
|
117
|
+
sollicitudin iaculis ante. Ut non mauris et sapien tincidunt adipiscing. Vestibulum
|
118
|
+
vitae leo. Suspendisse nec mi tristique nulla laoreet vulputate.
|
119
|
+
</p>
|
120
|
+
</div>
|
121
|
+
<div class="editable">
|
122
|
+
<h3>
|
123
|
+
Part 3
|
124
|
+
</h3>
|
125
|
+
<p>
|
126
|
+
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi
|
127
|
+
semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna
|
128
|
+
rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla
|
129
|
+
nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce
|
130
|
+
eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus.
|
131
|
+
</p>
|
132
|
+
</div>
|
133
|
+
<div id="footer">
|
134
|
+
<hr>
|
135
|
+
<p>
|
136
|
+
CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
|
137
|
+
</p>
|
138
|
+
<p id="copy">
|
139
|
+
Copyright © 2003-2015, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
|
140
|
+
Knabben. All rights reserved.
|
141
|
+
</p>
|
142
|
+
</div>
|
143
|
+
</body>
|
144
|
+
</html>
|
@@ -0,0 +1,106 @@
|
|
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>ENTER Key Configuration — CKEditor Sample</title>
|
10
|
+
<script src="../../../ckeditor.js"></script>
|
11
|
+
<link href="../../../samples/old/sample.css" rel="stylesheet">
|
12
|
+
<meta name="ckeditor-sample-name" content="Using the "Enter" key in CKEditor">
|
13
|
+
<meta name="ckeditor-sample-group" content="Advanced Samples">
|
14
|
+
<meta name="ckeditor-sample-description" content="Configuring the behavior of <em>Enter</em> and <em>Shift+Enter</em> keys.">
|
15
|
+
<script>
|
16
|
+
|
17
|
+
var editor;
|
18
|
+
|
19
|
+
function changeEnter() {
|
20
|
+
// If we already have an editor, let's destroy it first.
|
21
|
+
if ( editor )
|
22
|
+
editor.destroy( true );
|
23
|
+
|
24
|
+
// Create the editor again, with the appropriate settings.
|
25
|
+
editor = CKEDITOR.replace( 'editor1', {
|
26
|
+
extraPlugins: 'enterkey',
|
27
|
+
enterMode: Number( document.getElementById( 'xEnter' ).value ),
|
28
|
+
shiftEnterMode: Number( document.getElementById( 'xShiftEnter' ).value )
|
29
|
+
});
|
30
|
+
}
|
31
|
+
|
32
|
+
window.onload = changeEnter;
|
33
|
+
|
34
|
+
</script>
|
35
|
+
</head>
|
36
|
+
<body>
|
37
|
+
<h1 class="samples">
|
38
|
+
<a href="../../../samples/old/index.html">CKEditor Samples</a> » ENTER Key Configuration
|
39
|
+
</h1>
|
40
|
+
<div class="warning deprecated">
|
41
|
+
This sample is not maintained anymore. Check out its <a href="http://sdk.ckeditor.com/samples/enterkey.html">brand new version in CKEditor SDK</a>.
|
42
|
+
</div>
|
43
|
+
<div class="description">
|
44
|
+
<p>
|
45
|
+
This sample shows how to configure the <em>Enter</em> and <em>Shift+Enter</em> keys
|
46
|
+
to perform actions specified in the
|
47
|
+
<a class="samples" href="http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enterMode"><code>enterMode</code></a>
|
48
|
+
and <a class="samples" href="http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-shiftEnterMode"><code>shiftEnterMode</code></a>
|
49
|
+
parameters, respectively.
|
50
|
+
You can choose from the following options:
|
51
|
+
</p>
|
52
|
+
<ul class="samples">
|
53
|
+
<li><strong><code>ENTER_P</code></strong> – new <code><p></code> paragraphs are created;</li>
|
54
|
+
<li><strong><code>ENTER_BR</code></strong> – lines are broken with <code><br></code> elements;</li>
|
55
|
+
<li><strong><code>ENTER_DIV</code></strong> – new <code><div></code> blocks are created.</li>
|
56
|
+
</ul>
|
57
|
+
<p>
|
58
|
+
The sample code below shows how to configure CKEditor to create a <code><div></code> block when <em>Enter</em> key is pressed.
|
59
|
+
</p>
|
60
|
+
<pre class="samples">
|
61
|
+
CKEDITOR.replace( '<em>textarea_id</em>', {
|
62
|
+
<strong>enterMode: CKEDITOR.ENTER_DIV</strong>
|
63
|
+
});</pre>
|
64
|
+
<p>
|
65
|
+
Note that <code><em>textarea_id</em></code> in the code above is the <code>id</code> attribute of
|
66
|
+
the <code><textarea></code> element to be replaced.
|
67
|
+
</p>
|
68
|
+
</div>
|
69
|
+
<div style="float: left; margin-right: 20px">
|
70
|
+
When <em>Enter</em> is pressed:<br>
|
71
|
+
<select id="xEnter" onchange="changeEnter();">
|
72
|
+
<option selected="selected" value="1">Create a new <P> (recommended)</option>
|
73
|
+
<option value="3">Create a new <DIV></option>
|
74
|
+
<option value="2">Break the line with a <BR></option>
|
75
|
+
</select>
|
76
|
+
</div>
|
77
|
+
<div style="float: left">
|
78
|
+
When <em>Shift+Enter</em> is pressed:<br>
|
79
|
+
<select id="xShiftEnter" onchange="changeEnter();">
|
80
|
+
<option value="1">Create a new <P></option>
|
81
|
+
<option value="3">Create a new <DIV></option>
|
82
|
+
<option selected="selected" value="2">Break the line with a <BR> (recommended)</option>
|
83
|
+
</select>
|
84
|
+
</div>
|
85
|
+
<br style="clear: both">
|
86
|
+
<form action="../../../samples/sample_posteddata.php" method="post">
|
87
|
+
<p>
|
88
|
+
<br>
|
89
|
+
<textarea cols="80" id="editor1" name="editor1" rows="10">This is some <strong>sample text</strong>. You are using <a href="http://ckeditor.com/">CKEditor</a>.</textarea>
|
90
|
+
</p>
|
91
|
+
<p>
|
92
|
+
<input type="submit" value="Submit">
|
93
|
+
</p>
|
94
|
+
</form>
|
95
|
+
<div id="footer">
|
96
|
+
<hr>
|
97
|
+
<p>
|
98
|
+
CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
|
99
|
+
</p>
|
100
|
+
<p id="copy">
|
101
|
+
Copyright © 2003-2015, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
|
102
|
+
Knabben. All rights reserved.
|
103
|
+
</p>
|
104
|
+
</div>
|
105
|
+
</body>
|
106
|
+
</html>
|