Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
services
t3o sites
common
t3olayout
Commits
2c851f25
Commit
2c851f25
authored
Feb 08, 2018
by
Thomas Löffler
Browse files
Adds plugin to CKEditor for embedding media
parent
48998a76
Changes
4
Hide whitespace changes
Inline
Side-by-side
Configuration/Yaml/Rte/Custom.yaml
View file @
2c851f25
...
...
@@ -10,8 +10,11 @@ editor:
externalPlugins
:
fontawesome
:
{
resource
:
"
EXT:t3olayout/Resources/Public/CKEditor/fontawesome/plugin.js"
}
indentblock
:
{
resource
:
"
EXT:t3olayout/Resources/Public/CKEditor/indentblock/plugin.js"
}
embed
:
{
resource
:
"
EXT:t3olayout/Resources/Public/CKEditor/embed/plugin.js"
}
config
:
embed_provider
:
"
//noembed.com/embed?url={url}&callback={callback}"
contentsCss
:
-
"
EXT:t3olayout/Resources/Public/JavaScript/CKEditor/fontawesome/vendor/css/font-awesome.min.css"
-
"
EXT:t3olayout/Resources/Public/Css/rte.min.css"
...
...
Resources/Public/CKEditor/embed/icons/embed.png
0 → 100644
View file @
2c851f25
389 Bytes
Resources/Public/CKEditor/embed/icons/hidpi/embed.png
0 → 100644
View file @
2c851f25
728 Bytes
Resources/Public/CKEditor/embed/plugin.js
0 → 100644
View file @
2c851f25
/**
* @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
(
function
()
{
'
use strict
'
;
CKEDITOR
.
plugins
.
add
(
'
embed
'
,
{
icons
:
'
embed
'
,
// %REMOVE_LINE_CORE%
hidpi
:
true
,
// %REMOVE_LINE_CORE%
requires
:
'
embedbase
'
,
init
:
function
(
editor
)
{
var
widgetDefinition
=
CKEDITOR
.
plugins
.
embedBase
.
createWidgetBaseDefinition
(
editor
);
if
(
!
editor
.
config
.
embed_provider
)
{
CKEDITOR
.
error
(
'
embed-no-provider-url
'
);
}
// Extend the base definition with additional properties.
CKEDITOR
.
tools
.
extend
(
widgetDefinition
,
{
// Use a dialog exposed by the embedbase plugin.
dialog
:
'
embedBase
'
,
button
:
editor
.
lang
.
embedbase
.
button
,
allowedContent
:
'
div[!data-oembed-url]
'
,
requiredContent
:
'
div[data-oembed-url]
'
,
providerUrl
:
new
CKEDITOR
.
template
(
editor
.
config
.
embed_provider
||
''
),
// The filter element callback actually allows all divs with data-oembed-url,
// so registering styles to the filter is virtually unnecessary because
// classes won't be filtered out. However, registering them will make filter.check() work
// which may be important in some cases.
styleToAllowedContentRules
:
function
(
style
)
{
// Retrieve classes defined in the style.
var
classes
=
style
.
getClassesArray
();
return
{
div
:
{
propertiesOnly
:
true
,
classes
:
classes
,
attributes
:
'
!data-oembed-url
'
}
};
},
upcast
:
function
(
el
,
data
)
{
if
(
el
.
name
==
'
div
'
&&
el
.
attributes
[
'
data-oembed-url
'
]
)
{
data
.
url
=
el
.
attributes
[
'
data-oembed-url
'
];
return
true
;
}
},
downcast
:
function
(
el
)
{
el
.
attributes
[
'
data-oembed-url
'
]
=
this
.
data
.
url
;
}
},
true
);
// Register the definition as 'embed' widget.
editor
.
widgets
.
add
(
'
embed
'
,
widgetDefinition
);
// Do not filter contents of the div[data-oembed-url] at all.
editor
.
filter
.
addElementCallback
(
function
(
el
)
{
if
(
'
data-oembed-url
'
in
el
.
attributes
)
{
return
CKEDITOR
.
FILTER_SKIP_TREE
;
}
}
);
}
}
);
}
)();
/**
* A template for the URL of the provider endpoint. This URL will be queried for each resource to be embedded.
*
* It uses the following parameters:
*
* * `url` – The URL of the requested media, e.g. `https://twitter.com/ckeditor/status/401373919157821441`.
* * `callback` – The name of the globally available callback used for JSONP requests.
*
* For example:
*
* config.embed_provider = '//example.com/api/oembed-proxy?resource-url={url}&callback={callback}';
*
* By default CKEditor does not use any provider, although there is a ready-to-use URL available via Iframely:
*
* config.embed_provider = '//ckeditor.iframe.ly/api/oembed?url={url}&callback={callback}'
*
* However, this endpoint contains certain limitations, e.g. it cannot embed Google Maps content.
* It is recommended to set up an account on the [Iframely](https://iframely.com/) service for
* better control over embedded content.
*
* Read more in the [documentation](#!/guide/dev_media_embed)
* and see the [SDK sample](https://sdk.ckeditor.com/samples/mediaembed.html).
*
* Refer to {@link CKEDITOR.plugins.embedBase.baseDefinition#providerUrl} for more information about content providers.
*
* **Important note:** Prior to version 4.7 this configuration option defaulted to the
* `//ckeditor.iframe.ly/api/oembed?url={url}&callback={callback}` string.
*
* @since 4.5
* @cfg {String} [embed_provider='']
* @member CKEDITOR.config
*/
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment