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,55 @@
|
|
1
|
+
@font-face {
|
2
|
+
font-family: 'fontello';
|
3
|
+
src: url('../font/fontello.eot?89024372');
|
4
|
+
src: url('../font/fontello.eot?89024372#iefix') format('embedded-opentype'),
|
5
|
+
url('../font/fontello.woff?89024372') format('woff'),
|
6
|
+
url('../font/fontello.ttf?89024372') format('truetype'),
|
7
|
+
url('../font/fontello.svg?89024372#fontello') format('svg');
|
8
|
+
font-weight: normal;
|
9
|
+
font-style: normal;
|
10
|
+
}
|
11
|
+
/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
|
12
|
+
/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
|
13
|
+
/*
|
14
|
+
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
15
|
+
@font-face {
|
16
|
+
font-family: 'fontello';
|
17
|
+
src: url('../font/fontello.svg?89024372#fontello') format('svg');
|
18
|
+
}
|
19
|
+
}
|
20
|
+
*/
|
21
|
+
|
22
|
+
[class^="icon-"]:before, [class*=" icon-"]:before {
|
23
|
+
font-family: "fontello";
|
24
|
+
font-style: normal;
|
25
|
+
font-weight: normal;
|
26
|
+
speak: none;
|
27
|
+
|
28
|
+
display: inline-block;
|
29
|
+
text-decoration: inherit;
|
30
|
+
width: 1em;
|
31
|
+
margin-right: .2em;
|
32
|
+
text-align: center;
|
33
|
+
/* opacity: .8; */
|
34
|
+
|
35
|
+
/* For safety - reset parent styles, that can break glyph codes*/
|
36
|
+
font-variant: normal;
|
37
|
+
text-transform: none;
|
38
|
+
|
39
|
+
/* fix buttons height, for twitter bootstrap */
|
40
|
+
line-height: 1em;
|
41
|
+
|
42
|
+
/* Animation center compensation - margins should be symmetric */
|
43
|
+
/* remove if not needed */
|
44
|
+
margin-left: .2em;
|
45
|
+
|
46
|
+
/* you can be more comfortable with increased icons size */
|
47
|
+
/* font-size: 120%; */
|
48
|
+
|
49
|
+
/* Uncomment for 3D effect */
|
50
|
+
/* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
|
51
|
+
}
|
52
|
+
|
53
|
+
.icon-trash:before { content: '\e802'; } /* '' */
|
54
|
+
.icon-down-big:before { content: '\e800'; } /* '' */
|
55
|
+
.icon-up-big:before { content: '\e801'; } /* '' */
|
@@ -0,0 +1,28 @@
|
|
1
|
+
{
|
2
|
+
"name": "",
|
3
|
+
"css_prefix_text": "icon-",
|
4
|
+
"css_use_suffix": false,
|
5
|
+
"hinting": true,
|
6
|
+
"units_per_em": 1000,
|
7
|
+
"ascent": 850,
|
8
|
+
"glyphs": [
|
9
|
+
{
|
10
|
+
"uid": "f48ae54adfb27d8ada53d0fd9e34ee10",
|
11
|
+
"css": "trash-empty",
|
12
|
+
"code": 59392,
|
13
|
+
"src": "fontawesome"
|
14
|
+
},
|
15
|
+
{
|
16
|
+
"uid": "1c4068ed75209e21af36017df8871802",
|
17
|
+
"css": "down-big",
|
18
|
+
"code": 59393,
|
19
|
+
"src": "fontawesome"
|
20
|
+
},
|
21
|
+
{
|
22
|
+
"uid": "95376bf082bfec6ce06ea1cda7bd7ead",
|
23
|
+
"css": "up-big",
|
24
|
+
"code": 59394,
|
25
|
+
"src": "fontawesome"
|
26
|
+
}
|
27
|
+
]
|
28
|
+
}
|
Binary file
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<?xml version="1.0" standalone="no"?>
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg">
|
4
|
+
<metadata>Copyright (C) 2014 by original authors @ fontello.com</metadata>
|
5
|
+
<defs>
|
6
|
+
<font id="fontello" horiz-adv-x="1000" >
|
7
|
+
<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
|
8
|
+
<missing-glyph horiz-adv-x="1000" />
|
9
|
+
<glyph glyph-name="trash" unicode="" d="m286 439v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m143 0v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m142 0v-321q0-8-5-13t-12-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q7 0 12-5t5-13z m72-404v529h-500v-529q0-12 4-22t8-15t6-5h464q2 0 6 5t8 15t4 22z m-375 601h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q22 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" />
|
10
|
+
<glyph glyph-name="down-big" unicode="" d="m899 386q0-30-21-50l-363-364q-22-21-51-21q-29 0-50 21l-363 364q-21 20-21 50q0 29 21 51l41 41q22 21 51 21q29 0 50-21l164-164v393q0 29 21 50t51 22h71q29 0 50-22t21-50v-393l164 164q21 21 51 21q29 0 50-21l42-42q21-21 21-50z" horiz-adv-x="928.6" />
|
11
|
+
<glyph glyph-name="up-big" unicode="" d="m899 308q0-28-21-50l-42-42q-21-21-50-21q-30 0-51 21l-164 164v-393q0-29-20-47t-51-19h-71q-30 0-51 19t-21 47v393l-164-164q-20-21-50-21t-50 21l-42 42q-21 21-21 50q0 30 21 51l363 363q20 21 50 21q30 0 51-21l363-363q21-22 21-51z" horiz-adv-x="928.6" />
|
12
|
+
</font>
|
13
|
+
</defs>
|
14
|
+
</svg>
|
Binary file
|
Binary file
|
@@ -0,0 +1,446 @@
|
|
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
|
+
<!--[if IE 8]><html class="ie8"><![endif]-->
|
7
|
+
<!--[if gt IE 8]><html><![endif]-->
|
8
|
+
<!--[if !IE]><!--><html><!--<![endif]-->
|
9
|
+
<head>
|
10
|
+
<meta charset="utf-8">
|
11
|
+
<title>Toolbar Configurator</title>
|
12
|
+
<script src="../../ckeditor.js"></script>
|
13
|
+
<script>
|
14
|
+
if ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 )
|
15
|
+
CKEDITOR.tools.enableHtml5Elements( document );
|
16
|
+
</script>
|
17
|
+
<link rel="stylesheet" href="lib/codemirror/codemirror.css">
|
18
|
+
<link rel="stylesheet" href="lib/codemirror/show-hint.css">
|
19
|
+
<link rel="stylesheet" href="lib/codemirror/neo.css">
|
20
|
+
<link rel="stylesheet" href="css/fontello.css">
|
21
|
+
<link rel="stylesheet" href="../css/samples.css">
|
22
|
+
</head>
|
23
|
+
<body id="toolbar">
|
24
|
+
|
25
|
+
<nav class="navigation-a">
|
26
|
+
<div class="grid-container">
|
27
|
+
<ul class="navigation-a-left grid-width-70">
|
28
|
+
<li><a href="http://ckeditor.com">Project Homepage</a></li>
|
29
|
+
<li><a href="http://dev.ckeditor.com/">I found a bug</a></li>
|
30
|
+
<li><a href="http://github.com/ckeditor/ckeditor-dev" class="icon-pos-right icon-navigation-a-github">Fork CKEditor on GitHub</a></li>
|
31
|
+
</ul>
|
32
|
+
<ul class="navigation-a-right grid-width-30">
|
33
|
+
<li><a href="http://ckeditor.com/blog-list">CKEditor Blog</a></li>
|
34
|
+
</ul>
|
35
|
+
</div>
|
36
|
+
</nav>
|
37
|
+
|
38
|
+
<header class="header-a">
|
39
|
+
<div class="grid-container">
|
40
|
+
<h1 class="header-a-logo grid-width-30">
|
41
|
+
<a href="../index.html"><img src="../img/logo.png" alt="CKEditor Logo"></a>
|
42
|
+
</h1>
|
43
|
+
<nav class="navigation-b grid-width-70">
|
44
|
+
<ul>
|
45
|
+
<li><a href="../index.html" class="button-a">Start</a></li>
|
46
|
+
<li><a href="index.html" class="button-a button-a-background">Toolbar configurator</a></li>
|
47
|
+
</ul>
|
48
|
+
</nav>
|
49
|
+
</div>
|
50
|
+
</header>
|
51
|
+
|
52
|
+
<main>
|
53
|
+
<div class="adjoined-top">
|
54
|
+
<div class="grid-container">
|
55
|
+
<div class="content grid-width-100">
|
56
|
+
<div class="grid-container-nested">
|
57
|
+
<h1 class="grid-width-60">
|
58
|
+
Toolbar Configurator
|
59
|
+
<a href="#help-content" type="button" title="Configurator help" id="help" class="button-a button-a-background button-a-no-text icon-pos-left icon-question-mark">Help</a>
|
60
|
+
</h1>
|
61
|
+
|
62
|
+
<div class="grid-width-40 grid-switch-magic">
|
63
|
+
<div class="switch">
|
64
|
+
<span class="balloon-a balloon-a-se">Select configurator type</span>
|
65
|
+
<input type="radio" name="radio" data-num="1" id="radio-basic" />
|
66
|
+
<input type="radio" name="radio" data-num="2" id="radio-advanced" />
|
67
|
+
<label data-for="1" for="radio-basic">Basic</label>
|
68
|
+
<span class="switch-inner">
|
69
|
+
<span class="handler"></span>
|
70
|
+
</span>
|
71
|
+
<label data-for="2" for="radio-advanced">Advanced</label>
|
72
|
+
</div>
|
73
|
+
</div>
|
74
|
+
</div>
|
75
|
+
</div>
|
76
|
+
</div>
|
77
|
+
</div>
|
78
|
+
<div class="adjoined-bottom">
|
79
|
+
<div class="grid-container">
|
80
|
+
<div class="grid-width-100">
|
81
|
+
<div class="editors-container">
|
82
|
+
<div id="editor-basic"></div>
|
83
|
+
<div id="editor-advanced"></div>
|
84
|
+
</div>
|
85
|
+
</div>
|
86
|
+
</div>
|
87
|
+
</div>
|
88
|
+
|
89
|
+
<div class="grid-container configurator">
|
90
|
+
<div class="content grid-width-100">
|
91
|
+
<div class="configurator">
|
92
|
+
<div>
|
93
|
+
<div id="toolbarModifierWrapper"></div>
|
94
|
+
</div>
|
95
|
+
</div>
|
96
|
+
</div>
|
97
|
+
</div>
|
98
|
+
|
99
|
+
<div id="help-content">
|
100
|
+
<div class="grid-container">
|
101
|
+
<div class="grid-width-100">
|
102
|
+
<h2>What Am I Doing Here?</h2>
|
103
|
+
|
104
|
+
<div class="grid-container grid-container-nested">
|
105
|
+
<div class="basic">
|
106
|
+
<div class="grid-width-50">
|
107
|
+
<p>Arrange <a href="http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-toolbarGroups">toolbar groups</a>, toggle <a href="http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-removeButtons">button visibility</a> according to your needs and get your toolbar configuration.</p>
|
108
|
+
<p>You can replace the content of the <a href="../../config.js"><code>config.js</code></a> file with the generated configuration. If you already set some configuration options you will need to merge both configurations.</p>
|
109
|
+
</div>
|
110
|
+
<div class="grid-width-50">
|
111
|
+
<p>Read more about different ways of <a href="http://docs.ckeditor.com/#!/guide/dev_configuration">setting configuration</a> and do not forget about <strong>clearing browser cache</strong>.</p>
|
112
|
+
<p>Arranging toolbar groups is the recommended way of configuring the toolbar, but if you need more freedom you can use the <a href="#advanced">advanced configurator</a>.</p>
|
113
|
+
</div>
|
114
|
+
</div>
|
115
|
+
<div class="advanced" style="display: none;">
|
116
|
+
<div class="grid-width-50">
|
117
|
+
<p>With this code editor you can edit your <a href="http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-toolbar">toolbar configuration</a> live.</p>
|
118
|
+
<p>You can replace the content of the <a href="../../config.js"><code>config.js</code></a> file with the generated configuration. If you already set some configuration options you will need to merge both configurations.</p>
|
119
|
+
</div>
|
120
|
+
<div class="grid-width-50">
|
121
|
+
<p>Read more about different ways of <a href="http://docs.ckeditor.com/#!/guide/dev_configuration">setting configuration</a> and do not forget about <strong>clearing browser cache</strong>.</p>
|
122
|
+
</div>
|
123
|
+
</div>
|
124
|
+
</div>
|
125
|
+
|
126
|
+
<p class="grid-container grid-container-nested">
|
127
|
+
<button type="button" class="help-content-close grid-width-100 button-a button-a-background">Got it. Let's play!</button>
|
128
|
+
</p>
|
129
|
+
</div>
|
130
|
+
</div>
|
131
|
+
</div>
|
132
|
+
</main>
|
133
|
+
|
134
|
+
<footer class="footer-a grid-container">
|
135
|
+
<p class="grid-width-100">
|
136
|
+
CKEditor – The text editor for the Internet – <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
|
137
|
+
</p>
|
138
|
+
<p class="grid-width-100" id="copy">
|
139
|
+
Copyright © 2003-2015, <a class="samples" href="http://cksource.com/">CKSource</a> – Frederico Knabben. All rights reserved.
|
140
|
+
</p>
|
141
|
+
</footer>
|
142
|
+
|
143
|
+
<script src="lib/codemirror/codemirror.js"></script>
|
144
|
+
<script src="lib/codemirror/javascript.js"></script>
|
145
|
+
<script src="lib/codemirror/show-hint.js"></script>
|
146
|
+
|
147
|
+
<script src="js/fulltoolbareditor.js"></script>
|
148
|
+
<script src="js/abstracttoolbarmodifier.js"></script>
|
149
|
+
<script src="js/toolbarmodifier.js"></script>
|
150
|
+
<script src="js/toolbartextmodifier.js"></script>
|
151
|
+
<script src="../js/sf.js"></script>
|
152
|
+
|
153
|
+
<script>
|
154
|
+
( function() {
|
155
|
+
'use strict';
|
156
|
+
|
157
|
+
var mode = ( window.location.hash.substr( 1 ) === 'advanced' ) ? 'advanced' : 'basic',
|
158
|
+
configuratorSection = CKEDITOR.document.findOne( 'main > .grid-container.configurator' ),
|
159
|
+
basicInstruction = CKEDITOR.document.findOne( '#help-content .basic' ),
|
160
|
+
advancedInstruction = CKEDITOR.document.findOne( '#help-content .advanced' ),
|
161
|
+
|
162
|
+
// Configurator mode switcher.
|
163
|
+
modeSwitchBasic = CKEDITOR.document.getById( 'radio-basic' ),
|
164
|
+
modeSwitchAdvanced = CKEDITOR.document.getById( 'radio-advanced' );
|
165
|
+
|
166
|
+
// Initial setup
|
167
|
+
function updateSwitcher() {
|
168
|
+
if ( mode === 'advanced' ) {
|
169
|
+
modeSwitchAdvanced.$.checked = true;
|
170
|
+
} else {
|
171
|
+
modeSwitchBasic.$.checked = true;
|
172
|
+
}
|
173
|
+
}
|
174
|
+
|
175
|
+
updateSwitcher();
|
176
|
+
|
177
|
+
CKEDITOR.document.getWindow().on( 'hashchange', function( e ) {
|
178
|
+
var hash = window.location.hash.substr( 1 );
|
179
|
+
if ( !( hash === 'advanced' || hash === 'basic' ) ) {
|
180
|
+
return;
|
181
|
+
}
|
182
|
+
mode = hash;
|
183
|
+
onToolbarsDone( mode );
|
184
|
+
} );
|
185
|
+
|
186
|
+
CKEDITOR.document.getWindow().on( 'resize', function() {
|
187
|
+
updateToolbar( ( mode === 'basic' ? toolbarModifier : toolbarTextModifier )[ 'editorInstance' ] );
|
188
|
+
} );
|
189
|
+
|
190
|
+
function onRefresh( modifier ) {
|
191
|
+
modifier = modifier || this;
|
192
|
+
|
193
|
+
if ( mode === 'basic' && modifier instanceof ToolbarConfigurator.ToolbarTextModifier ) {
|
194
|
+
return;
|
195
|
+
}
|
196
|
+
|
197
|
+
// CodeMirror container becomes visible, so we need to refresh and to avoid rendering problems.
|
198
|
+
if ( mode === 'advanced' && modifier instanceof ToolbarConfigurator.ToolbarTextModifier ) {
|
199
|
+
modifier.codeContainer.refresh();
|
200
|
+
}
|
201
|
+
|
202
|
+
updateToolbar( modifier.editorInstance );
|
203
|
+
}
|
204
|
+
|
205
|
+
function updateToolbar( editor ) {
|
206
|
+
var editorContainer = editor.container;
|
207
|
+
|
208
|
+
// Not always editor is loaded.
|
209
|
+
if ( !editorContainer ) {
|
210
|
+
return;
|
211
|
+
}
|
212
|
+
|
213
|
+
var displayStyle = editorContainer.getStyle( 'display' );
|
214
|
+
|
215
|
+
editorContainer.setStyle( 'display', 'block' );
|
216
|
+
|
217
|
+
var newHeight = editorContainer.getSize( 'height' );
|
218
|
+
|
219
|
+
var newMarginTop = parseInt( editorContainer.getComputedStyle( 'margin-top' ), 10 );
|
220
|
+
newMarginTop = ( isNaN( newMarginTop ) ? 0 : Number( newMarginTop ) );
|
221
|
+
|
222
|
+
var newMarginBottom = parseInt( editorContainer.getComputedStyle( 'margin-bottom' ), 10 );
|
223
|
+
newMarginBottom = ( isNaN( newMarginBottom ) ? 0 : Number( newMarginBottom ) );
|
224
|
+
|
225
|
+
var result = newHeight + newMarginTop + newMarginBottom;
|
226
|
+
|
227
|
+
editorContainer.setStyle( 'display', displayStyle );
|
228
|
+
|
229
|
+
editor.container.getAscendant( 'div' ).setStyle( 'height', result + 'px' );
|
230
|
+
}
|
231
|
+
|
232
|
+
var toolbarModifier = new ToolbarConfigurator.ToolbarModifier( 'editor-basic' );
|
233
|
+
|
234
|
+
var done = 0;
|
235
|
+
toolbarModifier.init( onToolbarInit );
|
236
|
+
toolbarModifier.onRefresh = onRefresh;
|
237
|
+
|
238
|
+
CKEDITOR.document.getById( 'toolbarModifierWrapper' ).append( toolbarModifier.mainContainer );
|
239
|
+
|
240
|
+
var toolbarTextModifier = new ToolbarConfigurator.ToolbarTextModifier( 'editor-advanced' );
|
241
|
+
toolbarTextModifier.init( onToolbarInit );
|
242
|
+
toolbarTextModifier.onRefresh = onRefresh;
|
243
|
+
|
244
|
+
function onToolbarInit() {
|
245
|
+
if ( ++done === 2 ) {
|
246
|
+
onToolbarsDone();
|
247
|
+
|
248
|
+
positionSticky.watch( CKEDITOR.document.findOne( '.toolbar' ), function() {
|
249
|
+
return mode === 'advanced';
|
250
|
+
} );
|
251
|
+
}
|
252
|
+
}
|
253
|
+
|
254
|
+
function onToolbarsDone() {
|
255
|
+
if ( mode === 'basic' ) {
|
256
|
+
toggleModeBasic( false );
|
257
|
+
} else {
|
258
|
+
toggleModeAdvanced( false );
|
259
|
+
}
|
260
|
+
|
261
|
+
updateSwitcher();
|
262
|
+
|
263
|
+
setTimeout( function() {
|
264
|
+
CKEDITOR.document.findOne( '.editors-container' ).addClass( 'active' );
|
265
|
+
CKEDITOR.document.findOne( '#toolbarModifierWrapper' ).addClass( 'active' );
|
266
|
+
}, 200 );
|
267
|
+
}
|
268
|
+
|
269
|
+
CKEDITOR.document.getById( 'toolbarModifierWrapper' ).append( toolbarTextModifier.mainContainer );
|
270
|
+
|
271
|
+
function toogleModeSwitch( onElement, offElement, onModifier, offModifier ) {
|
272
|
+
onElement.addClass( 'fancy-button-active' );
|
273
|
+
offElement.removeClass( 'fancy-button-active' );
|
274
|
+
|
275
|
+
onModifier.showUI();
|
276
|
+
offModifier.hideUI();
|
277
|
+
}
|
278
|
+
|
279
|
+
function toggleModeBasic( callOnRefresh ) {
|
280
|
+
callOnRefresh = ( callOnRefresh !== false );
|
281
|
+
mode = 'basic';
|
282
|
+
window.location.hash = '#basic';
|
283
|
+
toogleModeSwitch( modeSwitchBasic, modeSwitchAdvanced, toolbarModifier, toolbarTextModifier );
|
284
|
+
|
285
|
+
configuratorSection.removeClass( 'freed-width' );
|
286
|
+
basicInstruction.show();
|
287
|
+
advancedInstruction.hide();
|
288
|
+
|
289
|
+
callOnRefresh && onRefresh( toolbarModifier );
|
290
|
+
}
|
291
|
+
|
292
|
+
function toggleModeAdvanced( callOnRefresh ) {
|
293
|
+
callOnRefresh = ( callOnRefresh !== false );
|
294
|
+
mode = 'advanced';
|
295
|
+
window.location.hash = '#advanced';
|
296
|
+
toogleModeSwitch( modeSwitchAdvanced, modeSwitchBasic, toolbarTextModifier, toolbarModifier );
|
297
|
+
|
298
|
+
configuratorSection.addClass( 'freed-width' );
|
299
|
+
advancedInstruction.show();
|
300
|
+
basicInstruction.hide();
|
301
|
+
|
302
|
+
callOnRefresh && onRefresh( toolbarTextModifier );
|
303
|
+
}
|
304
|
+
|
305
|
+
modeSwitchBasic.on( 'click', toggleModeBasic );
|
306
|
+
modeSwitchAdvanced.on( 'click', toggleModeAdvanced );
|
307
|
+
|
308
|
+
//
|
309
|
+
// Position:sticky for the toolbar.
|
310
|
+
//
|
311
|
+
|
312
|
+
// Will make elements behave like they were styled with position:sticky.
|
313
|
+
var positionSticky = {
|
314
|
+
// Store object: {
|
315
|
+
// element: CKEDITOR.dom.element, // Element which will float.
|
316
|
+
// placeholder: CKEDITOR.dom.element, // Placeholder which is place to prevent page bounce.
|
317
|
+
// isFixed: boolean // Whether element float now.
|
318
|
+
// }
|
319
|
+
watched: [],
|
320
|
+
|
321
|
+
active: [],
|
322
|
+
|
323
|
+
staticContainer: null,
|
324
|
+
|
325
|
+
init: function() {
|
326
|
+
var element = CKEDITOR.dom.element.createFromHtml(
|
327
|
+
'<div class="staticContainer">' +
|
328
|
+
'<div class="grid-container" >' +
|
329
|
+
'<div class="grid-width-100">' +
|
330
|
+
'<div class="inner"></div>' +
|
331
|
+
'</div>' +
|
332
|
+
'</div>' +
|
333
|
+
'</div>' );
|
334
|
+
|
335
|
+
this.staticContainer = element.findOne( '.inner' );
|
336
|
+
|
337
|
+
CKEDITOR.document.getBody().append( element );
|
338
|
+
},
|
339
|
+
|
340
|
+
watch: function( element, preventFunc ) {
|
341
|
+
this.watched.push( {
|
342
|
+
element: element,
|
343
|
+
placeholder: new CKEDITOR.dom.element( 'div' ),
|
344
|
+
isFixed: false,
|
345
|
+
preventFunc: preventFunc
|
346
|
+
} );
|
347
|
+
},
|
348
|
+
|
349
|
+
checkAll: function() {
|
350
|
+
for ( var i = 0; i < this.watched.length; i++ ) {
|
351
|
+
this.check( this.watched[ i ] );
|
352
|
+
}
|
353
|
+
},
|
354
|
+
|
355
|
+
check: function( element ) {
|
356
|
+
var isFixed = element.isFixed;
|
357
|
+
var shouldBeFixed = this.shouldBeFixed( element );
|
358
|
+
|
359
|
+
// Nothing to be done.
|
360
|
+
if ( isFixed === shouldBeFixed ) {
|
361
|
+
return;
|
362
|
+
}
|
363
|
+
|
364
|
+
var placeholder = element.placeholder;
|
365
|
+
|
366
|
+
if ( isFixed ) {
|
367
|
+
// Unfixing.
|
368
|
+
|
369
|
+
element.element.insertBefore( placeholder );
|
370
|
+
placeholder.remove();
|
371
|
+
|
372
|
+
element.element.removeStyle( 'margin' );
|
373
|
+
|
374
|
+
this.active.splice( CKEDITOR.tools.indexOf( this.active, element ), 1 );
|
375
|
+
|
376
|
+
} else {
|
377
|
+
// Fixing.
|
378
|
+
placeholder.setStyle( 'width', element.element.getSize( 'width' ) + 'px' );
|
379
|
+
placeholder.setStyle( 'height', element.element.getSize( 'height' ) + 'px' );
|
380
|
+
placeholder.setStyle( 'margin-bottom', element.element.getComputedStyle( 'margin-bottom' ) );
|
381
|
+
placeholder.setStyle( 'display', element.element.getComputedStyle( 'display' ) );
|
382
|
+
placeholder.insertAfter( element.element );
|
383
|
+
|
384
|
+
this.staticContainer.append( element.element );
|
385
|
+
|
386
|
+
this.active.push( element );
|
387
|
+
}
|
388
|
+
|
389
|
+
element.isFixed = !element.isFixed;
|
390
|
+
},
|
391
|
+
|
392
|
+
shouldBeFixed: function( element ) {
|
393
|
+
if ( element.preventFunc && element.preventFunc() ) {
|
394
|
+
return false;
|
395
|
+
}
|
396
|
+
|
397
|
+
// If element is already fixed we are checking it's placeholder.
|
398
|
+
var related = ( element.isFixed ? element.placeholder : element.element ),
|
399
|
+
clientRect = related.$.getBoundingClientRect(),
|
400
|
+
staticHeight = this.staticContainer.getSize('height' ),
|
401
|
+
elemHeight = element.element.getSize( 'height' );
|
402
|
+
|
403
|
+
if ( element.isFixed ) {
|
404
|
+
return ( clientRect.top + elemHeight < staticHeight );
|
405
|
+
} else {
|
406
|
+
return ( clientRect.top < staticHeight );
|
407
|
+
}
|
408
|
+
}
|
409
|
+
};
|
410
|
+
|
411
|
+
positionSticky.init();
|
412
|
+
|
413
|
+
CKEDITOR.document.getWindow().on( 'scroll',
|
414
|
+
new CKEDITOR.tools.eventsBuffer( 100, positionSticky.checkAll, positionSticky ).input
|
415
|
+
);
|
416
|
+
|
417
|
+
// Make the toolbar sticky.
|
418
|
+
positionSticky.watch( CKEDITOR.document.findOne( '.editors-container' ) );
|
419
|
+
|
420
|
+
// Help button and help-content.
|
421
|
+
( function() {
|
422
|
+
var helpButton = CKEDITOR.document.getById( 'help' ),
|
423
|
+
helpContent = CKEDITOR.document.getById( 'help-content' );
|
424
|
+
|
425
|
+
// Don't show help button on IE8 because it's unsupported by Pico Modal.
|
426
|
+
if ( CKEDITOR.env.ie && CKEDITOR.env.version == 8 ) {
|
427
|
+
helpButton.hide();
|
428
|
+
} else {
|
429
|
+
// Display help modal when the button is clicked.
|
430
|
+
helpButton.on( 'click', function( evt ) {
|
431
|
+
SF.modal( {
|
432
|
+
// Clone modal content from DOM.
|
433
|
+
content: helpContent.getHtml(),
|
434
|
+
|
435
|
+
afterCreate: function( modal ) {
|
436
|
+
// Enable modal content button to close the modal.
|
437
|
+
new CKEDITOR.dom.element( modal.modalElem() ).findOne( '.help-content-close' ).once( 'click', modal.close );
|
438
|
+
}
|
439
|
+
} ).show();
|
440
|
+
} );
|
441
|
+
}
|
442
|
+
} )();
|
443
|
+
} )();
|
444
|
+
</script>
|
445
|
+
</body>
|
446
|
+
</html>
|