Version Description
Download this release
Release Info
Developer | andergmartins |
Plugin | EmbedPress – Embed Google Docs, YouTube, Maps, Vimeo, Wistia Videos & Upload PDF, PPT in Gutenberg & Elementor |
Version | 2.2.0 |
Comparing to | |
See all releases |
Code changes from version 2.1.6 to 2.2.0
- CONTRIBUTING.md +1 -1
- EmbedPress/AMP/Adapter/Reddit.php +11 -10
- EmbedPress/AMP/Adapter/Twitter.php +7 -6
- EmbedPress/AMP/EmbedHandler.php +6 -5
- EmbedPress/AutoLoader.php +20 -16
- EmbedPress/Compatibility.php +35 -0
- EmbedPress/Core.php +250 -88
- EmbedPress/CoreLegacy.php +415 -0
- EmbedPress/{Disabler.php → DisablerLegacy.php} +17 -15
- EmbedPress/Ends/Back/Handler.php +34 -29
- EmbedPress/Ends/Back/Settings.php +151 -129
- EmbedPress/Ends/Back/index.html +6 -6
- EmbedPress/Ends/Front/Handler.php +18 -15
- EmbedPress/Ends/Front/index.html +6 -6
- EmbedPress/Ends/Handler.php +11 -7
- EmbedPress/Ends/index.html +6 -6
- EmbedPress/Loader.php +37 -29
- EmbedPress/Plugins/Html/Field.php +28 -24
- EmbedPress/Plugins/Html/index.html +6 -6
- EmbedPress/Plugins/Plugin.php +40 -30
- EmbedPress/Plugins/index.html +6 -6
- EmbedPress/Providers/Giphy.php +10 -9
- EmbedPress/Providers/GoogleDocs.php +13 -11
- EmbedPress/Providers/GoogleMaps.php +8 -6
- EmbedPress/Providers/Twitch.php +42 -41
- EmbedPress/Providers/index.html +6 -6
- EmbedPress/RestAPI.php +51 -0
- EmbedPress/Shortcode.php +95 -80
- EmbedPress/ThirdParty/BeaverBuilder.php +11 -10
- EmbedPress/index.html +6 -6
- assets/css/font.css +69 -56
- assets/css/index.html +6 -6
- assets/css/preview.css +10 -10
- assets/css/vendor/bootstrap/bootstrap.css +1282 -819
- assets/css/vendor/bootstrap/bootstrap.css.map +13 -1
- assets/css/vendor/bootstrap/index.html +6 -6
- assets/css/vendor/index.html +6 -6
- assets/js/index.html +6 -6
- assets/js/preview.js +313 -317
- assets/js/settings.js +3 -3
- assets/js/vendor/bootstrap/bootstrap.js +327 -332
- assets/js/vendor/bootstrap/index.html +6 -6
- assets/js/vendor/index.html +6 -6
- autoloader.php +5 -5
- embedpress.php +23 -13
- includes.php +18 -18
- providers.php +6 -6
- readme.txt +16 -1
CONTRIBUTING.md
CHANGED
@@ -28,7 +28,7 @@ EmbedPress follows the [Semantic Versioning 2.0.0](http://semver.org), which mea
|
|
28 |
```
|
29 |
- `/includes.php` - Look for the line/code below and replace `x.x.x` with the new version.
|
30 |
```
|
31 |
-
define('
|
32 |
```
|
33 |
- `/embedpress.php` - Look for the line/code below and replace `x.x.x` with the new version.
|
34 |
```
|
28 |
```
|
29 |
- `/includes.php` - Look for the line/code below and replace `x.x.x` with the new version.
|
30 |
```
|
31 |
+
define('EMBEDPRESS_VERSION', "x.x.x");
|
32 |
```
|
33 |
- `/embedpress.php` - Look for the line/code below and replace `x.x.x` with the new version.
|
34 |
```
|
EmbedPress/AMP/Adapter/Reddit.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
namespace EmbedPress\AMP\Adapter;
|
3 |
|
4 |
|
@@ -15,7 +16,7 @@ namespace EmbedPress\AMP\Adapter;
|
|
15 |
* @abstract
|
16 |
*/
|
17 |
class Reddit
|
18 |
-
{
|
19 |
/**
|
20 |
* @var object
|
21 |
*/
|
@@ -40,12 +41,12 @@ class Reddit
|
|
40 |
/**
|
41 |
* The constructor.
|
42 |
*
|
43 |
-
* @param object
|
44 |
*/
|
45 |
public function __construct($parsedContent, $urlData, $attributes)
|
46 |
{
|
47 |
-
add_action(
|
48 |
-
|
49 |
$this->parsedContent = $parsedContent;
|
50 |
$this->urlData = $urlData;
|
51 |
$this->attributes = $attributes;
|
@@ -59,11 +60,11 @@ class Reddit
|
|
59 |
public function process()
|
60 |
{
|
61 |
// Check we have the required class
|
62 |
-
if (! class_exists('AMP_HTML_Utils')) {
|
63 |
return $this->parsedContent;
|
64 |
}
|
65 |
|
66 |
-
$defaults
|
67 |
'data-width' => 100,
|
68 |
'data-height' => 100,
|
69 |
];
|
@@ -71,13 +72,13 @@ class Reddit
|
|
71 |
|
72 |
$parsedContent = \AMP_HTML_Utils::build_tag(
|
73 |
'amp-reddit',
|
74 |
-
|
75 |
'data-src' => $this->urlData->originalContent,
|
76 |
'layout' => 'responsive',
|
77 |
'data-embedtype' => "post",
|
78 |
'width' => $attributes['data-width'],
|
79 |
'height' => $attributes['data-height'],
|
80 |
-
|
81 |
);
|
82 |
|
83 |
return $parsedContent;
|
@@ -88,10 +89,10 @@ class Reddit
|
|
88 |
*/
|
89 |
public function addScripts()
|
90 |
{
|
91 |
-
if ( ! defined(
|
92 |
echo '<script async custom-element="amp-reddit" src="https://cdn.ampproject.org/v0/amp-reddit-0.1.js"></script>';
|
93 |
|
94 |
-
define(
|
95 |
}
|
96 |
}
|
97 |
}
|
1 |
<?php
|
2 |
+
|
3 |
namespace EmbedPress\AMP\Adapter;
|
4 |
|
5 |
|
16 |
* @abstract
|
17 |
*/
|
18 |
class Reddit
|
19 |
+
{
|
20 |
/**
|
21 |
* @var object
|
22 |
*/
|
41 |
/**
|
42 |
* The constructor.
|
43 |
*
|
44 |
+
* @param object $urlData
|
45 |
*/
|
46 |
public function __construct($parsedContent, $urlData, $attributes)
|
47 |
{
|
48 |
+
add_action('amp_post_template_head', [$this, 'addScripts']);
|
49 |
+
|
50 |
$this->parsedContent = $parsedContent;
|
51 |
$this->urlData = $urlData;
|
52 |
$this->attributes = $attributes;
|
60 |
public function process()
|
61 |
{
|
62 |
// Check we have the required class
|
63 |
+
if ( ! class_exists('AMP_HTML_Utils')) {
|
64 |
return $this->parsedContent;
|
65 |
}
|
66 |
|
67 |
+
$defaults = [
|
68 |
'data-width' => 100,
|
69 |
'data-height' => 100,
|
70 |
];
|
72 |
|
73 |
$parsedContent = \AMP_HTML_Utils::build_tag(
|
74 |
'amp-reddit',
|
75 |
+
[
|
76 |
'data-src' => $this->urlData->originalContent,
|
77 |
'layout' => 'responsive',
|
78 |
'data-embedtype' => "post",
|
79 |
'width' => $attributes['data-width'],
|
80 |
'height' => $attributes['data-height'],
|
81 |
+
]
|
82 |
);
|
83 |
|
84 |
return $parsedContent;
|
89 |
*/
|
90 |
public function addScripts()
|
91 |
{
|
92 |
+
if ( ! defined('PPEMB_REDDIT_AMP_SCRIPT_LOADED')) {
|
93 |
echo '<script async custom-element="amp-reddit" src="https://cdn.ampproject.org/v0/amp-reddit-0.1.js"></script>';
|
94 |
|
95 |
+
define('PPEMB_REDDIT_AMP_SCRIPT_LOADED', 1);
|
96 |
}
|
97 |
}
|
98 |
}
|
EmbedPress/AMP/Adapter/Twitter.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
namespace EmbedPress\AMP\Adapter;
|
3 |
|
4 |
|
@@ -15,7 +16,7 @@ namespace EmbedPress\AMP\Adapter;
|
|
15 |
* @abstract
|
16 |
*/
|
17 |
class Twitter
|
18 |
-
{
|
19 |
/**
|
20 |
* @var object
|
21 |
*/
|
@@ -40,14 +41,14 @@ class Twitter
|
|
40 |
/**
|
41 |
* The constructor.
|
42 |
*
|
43 |
-
* @param object
|
44 |
*/
|
45 |
public function __construct($parsedContent, $urlData, $attributes)
|
46 |
{
|
47 |
if (class_exists('AMP_Twitter_Embed_Handler')) {
|
48 |
$this->ampEmbedHandler = new \AMP_Twitter_Embed_Handler;
|
49 |
|
50 |
-
add_action(
|
51 |
}
|
52 |
|
53 |
$this->parsedContent = $parsedContent;
|
@@ -63,7 +64,7 @@ class Twitter
|
|
63 |
public function process()
|
64 |
{
|
65 |
// Check we have the adapter set
|
66 |
-
if (! isset($this->ampEmbedHandler)) {
|
67 |
return $this->parsedContent;
|
68 |
}
|
69 |
|
@@ -81,10 +82,10 @@ class Twitter
|
|
81 |
*/
|
82 |
public function addScripts()
|
83 |
{
|
84 |
-
if ( ! defined(
|
85 |
echo '<script async custom-element="amp-twitter" src="https://cdn.ampproject.org/v0/amp-twitter-0.1.js"></script>';
|
86 |
|
87 |
-
define(
|
88 |
}
|
89 |
}
|
90 |
}
|
1 |
<?php
|
2 |
+
|
3 |
namespace EmbedPress\AMP\Adapter;
|
4 |
|
5 |
|
16 |
* @abstract
|
17 |
*/
|
18 |
class Twitter
|
19 |
+
{
|
20 |
/**
|
21 |
* @var object
|
22 |
*/
|
41 |
/**
|
42 |
* The constructor.
|
43 |
*
|
44 |
+
* @param object $urlData
|
45 |
*/
|
46 |
public function __construct($parsedContent, $urlData, $attributes)
|
47 |
{
|
48 |
if (class_exists('AMP_Twitter_Embed_Handler')) {
|
49 |
$this->ampEmbedHandler = new \AMP_Twitter_Embed_Handler;
|
50 |
|
51 |
+
add_action('amp_post_template_head', [$this, 'addScripts']);
|
52 |
}
|
53 |
|
54 |
$this->parsedContent = $parsedContent;
|
64 |
public function process()
|
65 |
{
|
66 |
// Check we have the adapter set
|
67 |
+
if ( ! isset($this->ampEmbedHandler)) {
|
68 |
return $this->parsedContent;
|
69 |
}
|
70 |
|
82 |
*/
|
83 |
public function addScripts()
|
84 |
{
|
85 |
+
if ( ! defined('PPEMB_TWITTER_AMP_SCRIPT_LOADED')) {
|
86 |
echo '<script async custom-element="amp-twitter" src="https://cdn.ampproject.org/v0/amp-twitter-0.1.js"></script>';
|
87 |
|
88 |
+
define('PPEMB_TWITTER_AMP_SCRIPT_LOADED', 1);
|
89 |
}
|
90 |
}
|
91 |
}
|
EmbedPress/AMP/EmbedHandler.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
namespace EmbedPress\AMP;
|
3 |
|
4 |
|
@@ -15,21 +16,21 @@ namespace EmbedPress\AMP;
|
|
15 |
* @abstract
|
16 |
*/
|
17 |
abstract class EmbedHandler
|
18 |
-
{
|
19 |
/**
|
20 |
* Process embeds to check if need to adapt for AMP pages. This is compatible
|
21 |
* witht the AMP plugin from Automattic.
|
22 |
*
|
23 |
-
* @param string
|
24 |
-
* @param object
|
25 |
-
* @param array
|
26 |
*
|
27 |
* @return object
|
28 |
*/
|
29 |
static function processParsedContent($parsedContent, $urlData, $attributes)
|
30 |
{
|
31 |
// Check if we don't have the AMP plugin installed to bypass
|
32 |
-
if (! class_exists('AMP_Base_Embed_Handler')) {
|
33 |
return $parsedContent;
|
34 |
}
|
35 |
|
1 |
<?php
|
2 |
+
|
3 |
namespace EmbedPress\AMP;
|
4 |
|
5 |
|
16 |
* @abstract
|
17 |
*/
|
18 |
abstract class EmbedHandler
|
19 |
+
{
|
20 |
/**
|
21 |
* Process embeds to check if need to adapt for AMP pages. This is compatible
|
22 |
* witht the AMP plugin from Automattic.
|
23 |
*
|
24 |
+
* @param string $parsedContent
|
25 |
+
* @param object $urlData
|
26 |
+
* @param array $attributes
|
27 |
*
|
28 |
* @return object
|
29 |
*/
|
30 |
static function processParsedContent($parsedContent, $urlData, $attributes)
|
31 |
{
|
32 |
// Check if we don't have the AMP plugin installed to bypass
|
33 |
+
if ( ! class_exists('AMP_Base_Embed_Handler')) {
|
34 |
return $parsedContent;
|
35 |
}
|
36 |
|
EmbedPress/AutoLoader.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
namespace EmbedPress;
|
3 |
|
4 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
@@ -24,7 +25,7 @@ class AutoLoader
|
|
24 |
*
|
25 |
* @var array
|
26 |
*/
|
27 |
-
protected static $prefixes =
|
28 |
|
29 |
/**
|
30 |
* Associative array of prefixes for loading specialized camelCase classes
|
@@ -36,7 +37,7 @@ class AutoLoader
|
|
36 |
*
|
37 |
* @var array
|
38 |
*/
|
39 |
-
protected static $camelPrefixes =
|
40 |
|
41 |
/**
|
42 |
* @since 1.0.0
|
@@ -54,7 +55,8 @@ class AutoLoader
|
|
54 |
* @access protected
|
55 |
* @static
|
56 |
*
|
57 |
-
* @param string $method
|
|
|
58 |
* @return void
|
59 |
*/
|
60 |
protected static function registerLoader($method)
|
@@ -63,7 +65,7 @@ class AutoLoader
|
|
63 |
static::$instance = new static();
|
64 |
}
|
65 |
|
66 |
-
spl_autoload_register(
|
67 |
}
|
68 |
|
69 |
/**
|
@@ -72,9 +74,9 @@ class AutoLoader
|
|
72 |
* @since 1.0.0
|
73 |
* @static
|
74 |
*
|
75 |
-
* @param string
|
76 |
-
* @param string
|
77 |
-
* @param bool
|
78 |
* appending it; this causes it to be searched first rather than last.
|
79 |
*
|
80 |
* @return void
|
@@ -99,7 +101,7 @@ class AutoLoader
|
|
99 |
|
100 |
// initialise the namespace prefix array
|
101 |
if (empty(self::$prefixes[$prefix])) {
|
102 |
-
self::$prefixes[$prefix] =
|
103 |
}
|
104 |
|
105 |
// retain the base directory for the namespace prefix
|
@@ -117,7 +119,7 @@ class AutoLoader
|
|
117 |
* @access protected
|
118 |
* @static
|
119 |
*
|
120 |
-
* @param string
|
121 |
*
|
122 |
* @return mixed The mapped file name on success, or boolean false on failure.
|
123 |
*/
|
@@ -146,8 +148,8 @@ class AutoLoader
|
|
146 |
* @access protected
|
147 |
* @static
|
148 |
*
|
149 |
-
* @param string
|
150 |
-
* @param string
|
151 |
*
|
152 |
* @return mixed False if no mapped file can be loaded | path that was loaded
|
153 |
*/
|
@@ -164,6 +166,7 @@ class AutoLoader
|
|
164 |
|
165 |
if (is_file($path)) {
|
166 |
require_once $path;
|
|
|
167 |
return $path;
|
168 |
}
|
169 |
}
|
@@ -181,15 +184,15 @@ class AutoLoader
|
|
181 |
* @since 1.0.0
|
182 |
* @static
|
183 |
*
|
184 |
-
* @param string
|
185 |
-
* @param string
|
186 |
*
|
187 |
* @return void
|
188 |
* @throws \Exception
|
189 |
*/
|
190 |
public static function registerCamelBase($prefix, $baseDir)
|
191 |
{
|
192 |
-
if (!is_dir($baseDir)) {
|
193 |
throw new \Exception("Cannot register '{$prefix}'. The requested base directory does not exist!'");
|
194 |
}
|
195 |
|
@@ -209,13 +212,13 @@ class AutoLoader
|
|
209 |
* @since 1.0.0
|
210 |
* @access protected
|
211 |
*
|
212 |
-
* @param string
|
213 |
*
|
214 |
* @return mixed Bool/string
|
215 |
*/
|
216 |
protected function loadCamelClass($class)
|
217 |
{
|
218 |
-
if (!class_exists($class)) {
|
219 |
foreach (self::$camelPrefixes as $prefix => $baseDir) {
|
220 |
if (strpos($class, $prefix) === 0) {
|
221 |
$parts = preg_split('/(?<=[a-z])(?=[A-Z])/x', substr($class, strlen($prefix)));
|
@@ -225,6 +228,7 @@ class AutoLoader
|
|
225 |
|
226 |
if (is_file($filePath)) {
|
227 |
require_once $filePath;
|
|
|
228 |
return $filePath;
|
229 |
}
|
230 |
}
|
1 |
<?php
|
2 |
+
|
3 |
namespace EmbedPress;
|
4 |
|
5 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
25 |
*
|
26 |
* @var array
|
27 |
*/
|
28 |
+
protected static $prefixes = [];
|
29 |
|
30 |
/**
|
31 |
* Associative array of prefixes for loading specialized camelCase classes
|
37 |
*
|
38 |
* @var array
|
39 |
*/
|
40 |
+
protected static $camelPrefixes = [];
|
41 |
|
42 |
/**
|
43 |
* @since 1.0.0
|
55 |
* @access protected
|
56 |
* @static
|
57 |
*
|
58 |
+
* @param string $method The method name which will be called.
|
59 |
+
*
|
60 |
* @return void
|
61 |
*/
|
62 |
protected static function registerLoader($method)
|
65 |
static::$instance = new static();
|
66 |
}
|
67 |
|
68 |
+
spl_autoload_register([static::$instance, $method]);
|
69 |
}
|
70 |
|
71 |
/**
|
74 |
* @since 1.0.0
|
75 |
* @static
|
76 |
*
|
77 |
+
* @param string $prefix The namespace prefix.
|
78 |
+
* @param string $baseDir A base directory for class files in the namespace.
|
79 |
+
* @param bool $prepend If true, prepend the base directory to the stack instead of
|
80 |
* appending it; this causes it to be searched first rather than last.
|
81 |
*
|
82 |
* @return void
|
101 |
|
102 |
// initialise the namespace prefix array
|
103 |
if (empty(self::$prefixes[$prefix])) {
|
104 |
+
self::$prefixes[$prefix] = [];
|
105 |
}
|
106 |
|
107 |
// retain the base directory for the namespace prefix
|
119 |
* @access protected
|
120 |
* @static
|
121 |
*
|
122 |
+
* @param string $class The fully-qualified class name.
|
123 |
*
|
124 |
* @return mixed The mapped file name on success, or boolean false on failure.
|
125 |
*/
|
148 |
* @access protected
|
149 |
* @static
|
150 |
*
|
151 |
+
* @param string $prefix The namespace prefix.
|
152 |
+
* @param string $className The relative class name.
|
153 |
*
|
154 |
* @return mixed False if no mapped file can be loaded | path that was loaded
|
155 |
*/
|
166 |
|
167 |
if (is_file($path)) {
|
168 |
require_once $path;
|
169 |
+
|
170 |
return $path;
|
171 |
}
|
172 |
}
|
184 |
* @since 1.0.0
|
185 |
* @static
|
186 |
*
|
187 |
+
* @param string $prefix
|
188 |
+
* @param string $baseDir
|
189 |
*
|
190 |
* @return void
|
191 |
* @throws \Exception
|
192 |
*/
|
193 |
public static function registerCamelBase($prefix, $baseDir)
|
194 |
{
|
195 |
+
if ( ! is_dir($baseDir)) {
|
196 |
throw new \Exception("Cannot register '{$prefix}'. The requested base directory does not exist!'");
|
197 |
}
|
198 |
|
212 |
* @since 1.0.0
|
213 |
* @access protected
|
214 |
*
|
215 |
+
* @param string $class
|
216 |
*
|
217 |
* @return mixed Bool/string
|
218 |
*/
|
219 |
protected function loadCamelClass($class)
|
220 |
{
|
221 |
+
if ( ! class_exists($class)) {
|
222 |
foreach (self::$camelPrefixes as $prefix => $baseDir) {
|
223 |
if (strpos($class, $prefix) === 0) {
|
224 |
$parts = preg_split('/(?<=[a-z])(?=[A-Z])/x', substr($class, strlen($prefix)));
|
228 |
|
229 |
if (is_file($filePath)) {
|
230 |
require_once $filePath;
|
231 |
+
|
232 |
return $filePath;
|
233 |
}
|
234 |
}
|
EmbedPress/Compatibility.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace EmbedPress;
|
4 |
+
|
5 |
+
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Class Compatibility.
|
9 |
+
*
|
10 |
+
* @package EmbedPress
|
11 |
+
* @author EmbedPress <help@embedpress.com>
|
12 |
+
* @copyright Copyright (C) 2018 EmbedPress. All rights reserved.
|
13 |
+
* @license GPLv2 or later
|
14 |
+
*/
|
15 |
+
class Compatibility
|
16 |
+
{
|
17 |
+
/**
|
18 |
+
* Returns true if is WordPress 5.x or any beta version.
|
19 |
+
*
|
20 |
+
* @return bool
|
21 |
+
*/
|
22 |
+
public static function isWordPress5()
|
23 |
+
{
|
24 |
+
global $wp_version;
|
25 |
+
|
26 |
+
return version_compare($wp_version, '5.0', '>=') || substr($wp_version, 0, 2) === '5.';
|
27 |
+
}
|
28 |
+
|
29 |
+
public static function isClassicalEditorActive()
|
30 |
+
{
|
31 |
+
$isActive = is_plugin_active('classic-editor/classic-editor.php');
|
32 |
+
|
33 |
+
return $isActive;
|
34 |
+
}
|
35 |
+
}
|
EmbedPress/Core.php
CHANGED
@@ -1,15 +1,14 @@
|
|
1 |
<?php
|
|
|
2 |
namespace EmbedPress;
|
3 |
|
4 |
-
use
|
5 |
-
use
|
6 |
-
use \EmbedPress\Ends\Back\Handler as EndHandlerAdmin;
|
7 |
-
use \EmbedPress\Ends\Front\Handler as EndHandlerPublic;
|
8 |
|
9 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
10 |
|
11 |
/**
|
12 |
-
* Entity that glues together all pieces that the plugin is made of
|
13 |
*
|
14 |
* @package EmbedPress
|
15 |
* @author EmbedPress <help@embedpress.com>
|
@@ -25,7 +24,7 @@ class Core
|
|
25 |
* @since 1.0.0
|
26 |
* @access protected
|
27 |
*
|
28 |
-
* @var string
|
29 |
*/
|
30 |
protected $pluginName;
|
31 |
|
@@ -35,7 +34,7 @@ class Core
|
|
35 |
* @since 1.0.0
|
36 |
* @access protected
|
37 |
*
|
38 |
-
* @var string
|
39 |
*/
|
40 |
protected $pluginVersion;
|
41 |
|
@@ -45,7 +44,7 @@ class Core
|
|
45 |
* @since 1.0.0
|
46 |
* @access protected
|
47 |
*
|
48 |
-
* @var \EmbedPress\Loader
|
49 |
*/
|
50 |
protected $loaderInstance;
|
51 |
|
@@ -58,7 +57,7 @@ class Core
|
|
58 |
*
|
59 |
* @var array
|
60 |
*/
|
61 |
-
private static $plugins =
|
62 |
|
63 |
/**
|
64 |
* Initialize the plugin and set its properties.
|
@@ -69,8 +68,8 @@ class Core
|
|
69 |
*/
|
70 |
public function __construct()
|
71 |
{
|
72 |
-
$this->pluginName
|
73 |
-
$this->pluginVersion =
|
74 |
|
75 |
$this->loaderInstance = new Loader();
|
76 |
}
|
@@ -122,37 +121,29 @@ class Core
|
|
122 |
{
|
123 |
global $wp_actions;
|
124 |
|
|
|
|
|
|
|
|
|
125 |
if (is_admin()) {
|
126 |
$plgSettings = self::getSettings();
|
127 |
|
128 |
-
$settingsClassNamespace = '
|
129 |
-
add_action('admin_menu',
|
130 |
-
add_action('admin_init',
|
131 |
unset($settingsClassNamespace);
|
132 |
|
133 |
-
add_filter('plugin_action_links_embedpress/embedpress.php',
|
134 |
-
|
135 |
-
add_action('admin_enqueue_scripts', array('\EmbedPress\Ends\Back\Handler', 'enqueueStyles'));
|
136 |
|
137 |
-
add_action('
|
138 |
-
add_action('init', array($this, 'configureTinyMCE'), 1);
|
139 |
|
140 |
$plgHandlerAdminInstance = new EndHandlerAdmin($this->getPluginName(), $this->getPluginVersion());
|
141 |
|
142 |
if ((bool)$plgSettings->enablePluginInAdmin) {
|
143 |
$this->loaderInstance->add_action('admin_enqueue_scripts', $plgHandlerAdminInstance, 'enqueueScripts');
|
144 |
}
|
145 |
-
|
146 |
-
$onAjaxCallbackName = "doShortcodeReceivedViaAjax";
|
147 |
-
$this->loaderInstance->add_action('wp_ajax_embedpress_do_ajax_request', $plgHandlerAdminInstance, $onAjaxCallbackName);
|
148 |
-
$this->loaderInstance->add_action('wp_ajax_nopriv_embedpress_do_ajax_request', $plgHandlerAdminInstance, $onAjaxCallbackName);
|
149 |
-
|
150 |
-
$this->loaderInstance->add_action('wp_ajax_embedpress_get_embed_url_info', $plgHandlerAdminInstance, "getUrlInfoViaAjax");
|
151 |
-
|
152 |
-
unset($onAjaxCallbackName, $plgHandlerAdminInstance);
|
153 |
} else {
|
154 |
-
add_action('init', array('\EmbedPress\Disabler', 'run'), 1);
|
155 |
-
|
156 |
$plgHandlerPublicInstance = new EndHandlerPublic($this->getPluginName(), $this->getPluginVersion());
|
157 |
|
158 |
$this->loaderInstance->add_action('wp_enqueue_scripts', $plgHandlerPublicInstance, 'enqueueScripts');
|
@@ -162,14 +153,201 @@ class Core
|
|
162 |
}
|
163 |
|
164 |
// Add support for embeds on AMP pages
|
165 |
-
add_filter('pp_embed_parsed_content',
|
166 |
|
167 |
// Add support for our embeds on Beaver Builder. Without this it only run the native embeds.
|
168 |
-
|
|
|
169 |
|
170 |
$this->loaderInstance->run();
|
171 |
}
|
172 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
173 |
/**
|
174 |
* Callback called right after the plugin has been activated.
|
175 |
*
|
@@ -180,7 +358,6 @@ class Core
|
|
180 |
*/
|
181 |
public static function onPluginActivationCallback()
|
182 |
{
|
183 |
-
add_filter('rewrite_rules_array', array('\EmbedPress\Disabler', 'disableDefaultEmbedRewriteRules'));
|
184 |
flush_rewrite_rules();
|
185 |
}
|
186 |
|
@@ -194,7 +371,6 @@ class Core
|
|
194 |
*/
|
195 |
public static function onPluginDeactivationCallback()
|
196 |
{
|
197 |
-
remove_filter('rewrite_rules_array', array('\EmbedPress\Disabler', 'disableDefaultEmbedRewriteRules'));
|
198 |
flush_rewrite_rules();
|
199 |
}
|
200 |
|
@@ -208,7 +384,7 @@ class Core
|
|
208 |
*/
|
209 |
public static function getAdditionalServiceProviders()
|
210 |
{
|
211 |
-
$additionalProvidersFilePath = EMBEDPRESS_PATH_BASE .'providers.php';
|
212 |
if (file_exists($additionalProvidersFilePath)) {
|
213 |
include $additionalProvidersFilePath;
|
214 |
|
@@ -217,7 +393,7 @@ class Core
|
|
217 |
}
|
218 |
}
|
219 |
|
220 |
-
return
|
221 |
}
|
222 |
|
223 |
/**
|
@@ -226,12 +402,28 @@ class Core
|
|
226 |
* @since 1.0.0
|
227 |
* @static
|
228 |
*
|
229 |
-
* @param string
|
|
|
230 |
* @return boolean
|
231 |
*/
|
232 |
public static function canServiceProviderBeResponsive($serviceProviderAlias)
|
233 |
{
|
234 |
-
return in_array($serviceProviderAlias,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
235 |
}
|
236 |
|
237 |
/**
|
@@ -246,11 +438,11 @@ class Core
|
|
246 |
{
|
247 |
$settings = get_option(EMBEDPRESS_PLG_NAME);
|
248 |
|
249 |
-
if (!isset($settings['enablePluginInAdmin'])) {
|
250 |
$settings['enablePluginInAdmin'] = true;
|
251 |
}
|
252 |
|
253 |
-
if (!isset($settings['enablePluginInFront'])) {
|
254 |
$settings['enablePluginInFront'] = true;
|
255 |
}
|
256 |
|
@@ -263,7 +455,8 @@ class Core
|
|
263 |
* @since 1.4.0
|
264 |
* @static
|
265 |
*
|
266 |
-
* @param array
|
|
|
267 |
* @return void
|
268 |
*/
|
269 |
public static function registerPlugin($pluginMeta)
|
@@ -274,24 +467,27 @@ class Core
|
|
274 |
return;
|
275 |
}
|
276 |
|
277 |
-
if (!isset(self::$plugins[$pluginMeta->slug])) {
|
278 |
-
AutoLoader::register($pluginMeta->namespace,
|
|
|
279 |
|
280 |
$plugin = "{$pluginMeta->namespace}\Plugin";
|
281 |
if (\defined("{$plugin}::SLUG") && $plugin::SLUG !== null) {
|
282 |
self::$plugins[$pluginMeta->slug] = $pluginMeta->namespace;
|
283 |
|
284 |
-
$bsFilePath = $plugin::PATH . EMBEDPRESS_PLG_NAME .'-'. $plugin::SLUG .'.php';
|
285 |
|
286 |
-
register_activation_hook($bsFilePath,
|
287 |
-
register_deactivation_hook($bsFilePath,
|
288 |
|
289 |
-
add_action('admin_init',
|
290 |
|
291 |
-
add_action(EMBEDPRESS_PLG_NAME .':'. $plugin::SLUG .':settings:register',
|
292 |
-
|
|
|
293 |
|
294 |
-
add_filter('plugin_action_links_embedpress-'. $plugin::SLUG .'/embedpress-'. $plugin::SLUG .'.php',
|
|
|
295 |
|
296 |
$plugin::registerEvents();
|
297 |
}
|
@@ -321,7 +517,8 @@ class Core
|
|
321 |
*/
|
322 |
public static function handleActionLinks($links, $file)
|
323 |
{
|
324 |
-
$settingsLink = '<a href="'. admin_url('admin.php?page=embedpress') .'" aria-label="'. __('Open settings page',
|
|
|
325 |
|
326 |
array_unshift($links, $settingsLink);
|
327 |
|
@@ -334,9 +531,9 @@ class Core
|
|
334 |
* @since 1.4.0
|
335 |
* @static
|
336 |
*
|
337 |
-
* @param boolean
|
338 |
-
* @param string
|
339 |
-
* @param string
|
340 |
*
|
341 |
* @return boolean
|
342 |
*/
|
@@ -348,39 +545,4 @@ class Core
|
|
348 |
|
349 |
return $isAllowed;
|
350 |
}
|
351 |
-
|
352 |
-
/**
|
353 |
-
* Add filters to configure the TinyMCE editor.
|
354 |
-
*
|
355 |
-
* @since 1.6.2
|
356 |
-
*/
|
357 |
-
public function configureTinyMCE()
|
358 |
-
{
|
359 |
-
add_filter('teeny_mce_before_init', array($this, 'hookOnPaste'));
|
360 |
-
add_filter('tiny_mce_before_init', array($this, 'hookOnPaste'));
|
361 |
-
}
|
362 |
-
|
363 |
-
/**
|
364 |
-
* Hook the onPaste methof to the paste_preprocess config in the editor.
|
365 |
-
*
|
366 |
-
* @since 1.6.2
|
367 |
-
*
|
368 |
-
* @param array $mceInit
|
369 |
-
*
|
370 |
-
* @return array
|
371 |
-
*/
|
372 |
-
public function hookOnPaste($mceInit)
|
373 |
-
{
|
374 |
-
$settings = self::getSettings();
|
375 |
-
|
376 |
-
if (isset($settings->enablePluginInAdmin) && $settings->enablePluginInAdmin) {
|
377 |
-
// We hook here because the onPaste is sometimes called after the content was already added to the editor.
|
378 |
-
// If you copy text from the editor and paste there, it will give no way to use a normal onPaste event hook
|
379 |
-
// to modify the input since it was already injected.
|
380 |
-
$mceInit['paste_preprocess'] = 'function (plugin, args) {EmbedPress.onPaste(plugin, args);}';
|
381 |
-
}
|
382 |
-
|
383 |
-
|
384 |
-
return $mceInit;
|
385 |
-
}
|
386 |
}
|
1 |
<?php
|
2 |
+
|
3 |
namespace EmbedPress;
|
4 |
|
5 |
+
use EmbedPress\Ends\Back\Handler as EndHandlerAdmin;
|
6 |
+
use EmbedPress\Ends\Front\Handler as EndHandlerPublic;
|
|
|
|
|
7 |
|
8 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
9 |
|
10 |
/**
|
11 |
+
* Entity that glues together all pieces that the plugin is made of, for WordPress 5+.
|
12 |
*
|
13 |
* @package EmbedPress
|
14 |
* @author EmbedPress <help@embedpress.com>
|
24 |
* @since 1.0.0
|
25 |
* @access protected
|
26 |
*
|
27 |
+
* @var string $pluginName The name of the plugin.
|
28 |
*/
|
29 |
protected $pluginName;
|
30 |
|
34 |
* @since 1.0.0
|
35 |
* @access protected
|
36 |
*
|
37 |
+
* @var string $pluginVersion The version of the plugin.
|
38 |
*/
|
39 |
protected $pluginVersion;
|
40 |
|
44 |
* @since 1.0.0
|
45 |
* @access protected
|
46 |
*
|
47 |
+
* @var \EmbedPress\Loader $pluginVersion The version of the plugin.
|
48 |
*/
|
49 |
protected $loaderInstance;
|
50 |
|
57 |
*
|
58 |
* @var array
|
59 |
*/
|
60 |
+
private static $plugins = [];
|
61 |
|
62 |
/**
|
63 |
* Initialize the plugin and set its properties.
|
68 |
*/
|
69 |
public function __construct()
|
70 |
{
|
71 |
+
$this->pluginName = EMBEDPRESS_PLG_NAME;
|
72 |
+
$this->pluginVersion = EMBEDPRESS_VERSION;
|
73 |
|
74 |
$this->loaderInstance = new Loader();
|
75 |
}
|
121 |
{
|
122 |
global $wp_actions;
|
123 |
|
124 |
+
add_filter('oembed_providers', [$this, 'addOEmbedProviders']);
|
125 |
+
add_action('rest_api_init', [$this, 'registerOEmbedRestRoutes']);
|
126 |
+
// add_filter('oembed_result', [$this, 'oembedResult'], 10, 3);
|
127 |
+
|
128 |
if (is_admin()) {
|
129 |
$plgSettings = self::getSettings();
|
130 |
|
131 |
+
$settingsClassNamespace = '\\EmbedPress\\Ends\\Back\\Settings';
|
132 |
+
add_action('admin_menu', [$settingsClassNamespace, 'registerMenuItem']);
|
133 |
+
add_action('admin_init', [$settingsClassNamespace, 'registerActions']);
|
134 |
unset($settingsClassNamespace);
|
135 |
|
136 |
+
add_filter('plugin_action_links_embedpress/embedpress.php', ['\\EmbedPress\\Core', 'handleActionLinks'], 10,
|
137 |
+
2);
|
|
|
138 |
|
139 |
+
add_action('admin_enqueue_scripts', ['\\EmbedPress\\Ends\\Back\\Handler', 'enqueueStyles']);
|
|
|
140 |
|
141 |
$plgHandlerAdminInstance = new EndHandlerAdmin($this->getPluginName(), $this->getPluginVersion());
|
142 |
|
143 |
if ((bool)$plgSettings->enablePluginInAdmin) {
|
144 |
$this->loaderInstance->add_action('admin_enqueue_scripts', $plgHandlerAdminInstance, 'enqueueScripts');
|
145 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
} else {
|
|
|
|
|
147 |
$plgHandlerPublicInstance = new EndHandlerPublic($this->getPluginName(), $this->getPluginVersion());
|
148 |
|
149 |
$this->loaderInstance->add_action('wp_enqueue_scripts', $plgHandlerPublicInstance, 'enqueueScripts');
|
153 |
}
|
154 |
|
155 |
// Add support for embeds on AMP pages
|
156 |
+
add_filter('pp_embed_parsed_content', ['\\EmbedPress\\AMP\\EmbedHandler', 'processParsedContent'], 10, 3);
|
157 |
|
158 |
// Add support for our embeds on Beaver Builder. Without this it only run the native embeds.
|
159 |
+
add_filter('fl_builder_before_render_shortcodes',
|
160 |
+
['\\EmbedPress\\ThirdParty\\BeaverBuilder', 'before_render_shortcodes']);
|
161 |
|
162 |
$this->loaderInstance->run();
|
163 |
}
|
164 |
|
165 |
+
public function oembedResult($html, $url, $args)
|
166 |
+
{
|
167 |
+
// apply_filters( 'oembed_result', $this->data2html( $data, $url ), $url, $args );
|
168 |
+
var_dump($html, $url, $args);
|
169 |
+
die;
|
170 |
+
|
171 |
+
return $html;
|
172 |
+
}
|
173 |
+
|
174 |
+
/**
|
175 |
+
* @param $providers
|
176 |
+
*
|
177 |
+
* @return mixed
|
178 |
+
*/
|
179 |
+
public function addOEmbedProviders($providers)
|
180 |
+
{
|
181 |
+
$newProviders = [
|
182 |
+
// Viddler
|
183 |
+
'#https?://(.+\.)?viddler\.com/v/.+#i' => 'viddler',
|
184 |
+
|
185 |
+
// Deviantart.com (http://www.deviantart.com)
|
186 |
+
'#https?://(.+\.)?deviantart\.com/art/.+#i' => 'devianart',
|
187 |
+
'#https?://(.+\.)?deviantart\.com/.+#i' => 'devianart',
|
188 |
+
'#https?://(.+\.)?deviantart\.com/.*/d.+#i' => 'devianart',
|
189 |
+
'#https?://(.+\.)?fav\.me/.+#i' => 'devianart',
|
190 |
+
'#https?://(.+\.)?sta\.sh/.+#i' => 'devianart',
|
191 |
+
|
192 |
+
// chirbit.com (http://www.chirbit.com/)
|
193 |
+
'#https?://(.+\.)?chirb\.it/.+#i' => 'chirbit',
|
194 |
+
|
195 |
+
|
196 |
+
// nfb.ca (http://www.nfb.ca/)
|
197 |
+
'#https?://(.+\.)?nfb\.ca/film/.+#i' => 'nfb',
|
198 |
+
|
199 |
+
// Dotsub (http://dotsub.com/)
|
200 |
+
'#https?://(.+\.)?dotsub\.com/view/.+#i' => 'dotsub',
|
201 |
+
|
202 |
+
// Rdio (http://rdio.com/)
|
203 |
+
'#https?://(.+\.)?rdio\.com/(artist|people)/.+#i' => 'rdio',
|
204 |
+
|
205 |
+
// Sapo Videos (http://videos.sapo.pt)
|
206 |
+
'#https?://(.+\.)?videos\.sapo\.pt/.+#i' => 'sapo',
|
207 |
+
|
208 |
+
// Official FM (http://official.fm)
|
209 |
+
'#https?://(.+\.)?official\.fm/(tracks|playlists)/.+#i' => 'officialfm',
|
210 |
+
|
211 |
+
// HuffDuffer (http://huffduffer.com)
|
212 |
+
'#https?://(.+\.)?huffduffer\.com/.+#i' => 'huffduffer',
|
213 |
+
|
214 |
+
// Shoudio (http://shoudio.com)
|
215 |
+
'#https?://(.+\.)?shoudio\.(com|io)/.+#i' => 'shoudio',
|
216 |
+
|
217 |
+
// Moby Picture (http://www.mobypicture.com)
|
218 |
+
'#https?://(.+\.)?mobypicture\.com/user/.+/view/.+#i' => 'mobypicture',
|
219 |
+
'#https?://(.+\.)?moby\.to/.+#i',
|
220 |
+
|
221 |
+
// 23HQ (http://www.23hq.com)
|
222 |
+
'#https?://(.+\.)?23hq\.com/.+/photo/.+#i' => '23hq',
|
223 |
+
|
224 |
+
// Cacoo (https://cacoo.com)
|
225 |
+
'#https?://(.+\.)?cacoo\.com/diagrams/.+#i' => 'cacoo',
|
226 |
+
|
227 |
+
// Dipity (http://www.dipity.com)
|
228 |
+
'#https?://(.+\.)?dipity\.com/.+#i' => 'dipity',
|
229 |
+
|
230 |
+
// Roomshare (http://roomshare.jp)
|
231 |
+
'#https?://(.+\.)?roomshare\.jp/(en/)?post/.+#i' => 'roomshare',
|
232 |
+
|
233 |
+
// Crowd Ranking (http://crowdranking.com)
|
234 |
+
'#https?://(.+\.)?c9ng\.com/.+#i' => 'crowd',
|
235 |
+
|
236 |
+
// CircuitLab (https://www.circuitlab.com/)
|
237 |
+
'#https?://(.+\.)?circuitlab\.com/circuit/.+#i' => 'circuitlab',
|
238 |
+
|
239 |
+
// Coub (http://coub.com/)
|
240 |
+
'#https?://(.+\.)?coub\.com/(view|embed)/.+#i' => 'coub',
|
241 |
+
|
242 |
+
// Ustream (http://www.ustream.tv)
|
243 |
+
'#https?://(.+\.)?ustream\.(tv|com)/.+#i' => 'ustream',
|
244 |
+
|
245 |
+
// Daily Mile (http://www.dailymile.com)
|
246 |
+
'#https?://(.+\.)?dailymile\.com/people/.+/entries/.+#i' => 'daily',
|
247 |
+
|
248 |
+
// Sketchfab (http://sketchfab.com)
|
249 |
+
'#https?://(.+\.)?sketchfab\.com/models/.+#i' => 'sketchfab',
|
250 |
+
'#https?://(.+\.)?sketchfab\.com/.+/folders/.+#i' => 'sketchfab',
|
251 |
+
|
252 |
+
// AudioSnaps (http://audiosnaps.com)
|
253 |
+
'#https?://(.+\.)?audiosnaps\.com/k/.+#i' => 'audiosnaps',
|
254 |
+
|
255 |
+
// RapidEngage (https://rapidengage.com)
|
256 |
+
'#https?://(.+\.)?rapidengage\.com/s/.+#i' => 'rapidengage',
|
257 |
+
|
258 |
+
// Getty Images (http://www.gettyimages.com/)
|
259 |
+
'#https?://(.+\.)?gty\.im/.+#i' => 'gettyimages',
|
260 |
+
'#https?://(.+\.)?gettyimages\.com/detail/photo/.+#i' => 'gettyimages',
|
261 |
+
|
262 |
+
// amCharts Live Editor (http://live.amcharts.com/)
|
263 |
+
'#https?://(.+\.)?live\.amcharts\.com/.+#i' => 'amcharts',
|
264 |
+
|
265 |
+
// Infogram (https://infogr.am/)
|
266 |
+
'#https?://(.+\.)?infogr\.am/.+#i' => 'infogram',
|
267 |
+
|
268 |
+
// ChartBlocks (http://www.chartblocks.com/)
|
269 |
+
'#https?://(.+\.)?public\.chartblocks\.com/c/.+#i' => 'chartblocks',
|
270 |
+
|
271 |
+
// ReleaseWire (http://www.releasewire.com/)
|
272 |
+
'#https?://(.+\.)?rwire\.com/.+#i' => 'releasewire',
|
273 |
+
|
274 |
+
// ShortNote (https://www.shortnote.jp/)
|
275 |
+
'#https?://(.+\.)?shortnote\.jp/view/notes/.+#i' => 'shortnote',
|
276 |
+
|
277 |
+
// EgliseInfo (http://egliseinfo.catholique.fr/)
|
278 |
+
'#https?://(.+\.)?egliseinfo\.catholique\.fr/.+#i' => 'egliseinfo',
|
279 |
+
|
280 |
+
// Silk (http://www.silk.co/)
|
281 |
+
'#https?://(.+\.)?silk\.co/explore/.+#i' => 'silk',
|
282 |
+
'#https?://(.+\.)?silk\.co/s/embed/.+#i' => 'silk',
|
283 |
+
|
284 |
+
// http://bambuser.com
|
285 |
+
'#https?://(.+\.)?bambuser\.com/v/.+#i' => 'bambuser',
|
286 |
+
|
287 |
+
// https://clyp.it
|
288 |
+
'#https?://(.+\.)?clyp\.it/.+#i' => 'clyp',
|
289 |
+
|
290 |
+
// https://gist.github.com
|
291 |
+
'#https?://(.+\.)?gist\.github\.com/.+#i' => 'github',
|
292 |
+
|
293 |
+
// https://portfolium.com
|
294 |
+
'#https?://(.+\.)?portfolium\.com/.+#i' => 'portfolium',
|
295 |
+
|
296 |
+
// http://rutube.ru
|
297 |
+
'#https?://(.+\.)?rutube\.ru/video/.+#i' => 'rutube',
|
298 |
+
|
299 |
+
// http://www.videojug.com
|
300 |
+
'#https?://(.+\.)?videojug\.com/.+#i' => 'videojug',
|
301 |
+
|
302 |
+
// https://vine.com
|
303 |
+
'#https?://(.+\.)?vine\.co/v/.+#i' => 'vine',
|
304 |
+
|
305 |
+
// Google Shortened Url
|
306 |
+
'#https?://(.+\.)?goo\.gl/.+#i' => 'google',
|
307 |
+
|
308 |
+
// Google Maps
|
309 |
+
'#https?://(.+\.)?google\.com/maps/.+#i' => 'googlemaps',
|
310 |
+
'#https?://(.+\.)?maps\.google\.com/.+#i' => 'googlemaps',
|
311 |
+
|
312 |
+
// Google Docs
|
313 |
+
'#https?://(.+\.)?docs\.google\.com/(.+/)?(document|presentation|spreadsheets|forms|drawings)/.+#i' => 'googledocs',
|
314 |
+
|
315 |
+
// Twitch.tv
|
316 |
+
'#https?://(.+\.)?twitch\.tv/.+#i' => 'twitch',
|
317 |
+
|
318 |
+
// Giphy
|
319 |
+
'#https?://(.+\.)?giphy\.com/gifs/.+#i' => 'giphy',
|
320 |
+
'#https?://(.+\.)?i\.giphy\.com/.+#i' => 'giphy',
|
321 |
+
'#https?://(.+\.)?gph\.is/.+#i' => 'giphy',
|
322 |
+
|
323 |
+
// Wistia
|
324 |
+
'#https?://(.+\.)?wistia\.com/medias/.+#i' => 'wistia',
|
325 |
+
'#https?://(.+\.)?fast\.wistia\.com/embed/medias/.+#i\.jsonp' => 'wistia',
|
326 |
+
];
|
327 |
+
|
328 |
+
foreach ($newProviders as $url => &$data) {
|
329 |
+
$data = [rest_url('embedpress/v1/oembed/' . $data), true];
|
330 |
+
}
|
331 |
+
|
332 |
+
$providers = array_merge($providers, $newProviders);
|
333 |
+
|
334 |
+
return $providers;
|
335 |
+
}
|
336 |
+
|
337 |
+
/**
|
338 |
+
* Register OEmbed Rest Routes
|
339 |
+
*/
|
340 |
+
public function registerOEmbedRestRoutes()
|
341 |
+
{
|
342 |
+
register_rest_route(
|
343 |
+
'embedpress/v1', '/oembed/(?P<provider>[a-zA-Z0-9\-]+)',
|
344 |
+
[
|
345 |
+
'methods' => \WP_REST_Server::READABLE,
|
346 |
+
'callback' => ['\\EmbedPress\\RestAPI', 'oembed'],
|
347 |
+
]
|
348 |
+
);
|
349 |
+
}
|
350 |
+
|
351 |
/**
|
352 |
* Callback called right after the plugin has been activated.
|
353 |
*
|
358 |
*/
|
359 |
public static function onPluginActivationCallback()
|
360 |
{
|
|
|
361 |
flush_rewrite_rules();
|
362 |
}
|
363 |
|
371 |
*/
|
372 |
public static function onPluginDeactivationCallback()
|
373 |
{
|
|
|
374 |
flush_rewrite_rules();
|
375 |
}
|
376 |
|
384 |
*/
|
385 |
public static function getAdditionalServiceProviders()
|
386 |
{
|
387 |
+
$additionalProvidersFilePath = EMBEDPRESS_PATH_BASE . 'providers.php';
|
388 |
if (file_exists($additionalProvidersFilePath)) {
|
389 |
include $additionalProvidersFilePath;
|
390 |
|
393 |
}
|
394 |
}
|
395 |
|
396 |
+
return [];
|
397 |
}
|
398 |
|
399 |
/**
|
402 |
* @since 1.0.0
|
403 |
* @static
|
404 |
*
|
405 |
+
* @param string $serviceProviderAlias The service's slug.
|
406 |
+
*
|
407 |
* @return boolean
|
408 |
*/
|
409 |
public static function canServiceProviderBeResponsive($serviceProviderAlias)
|
410 |
{
|
411 |
+
return in_array($serviceProviderAlias, [
|
412 |
+
"dailymotion",
|
413 |
+
"kickstarter",
|
414 |
+
"rutube",
|
415 |
+
"ted",
|
416 |
+
"vimeo",
|
417 |
+
"youtube",
|
418 |
+
"ustream",
|
419 |
+
"google-docs",
|
420 |
+
"animatron",
|
421 |
+
"amcharts",
|
422 |
+
"on-aol-com",
|
423 |
+
"animoto",
|
424 |
+
"videojug",
|
425 |
+
'issuu',
|
426 |
+
]);
|
427 |
}
|
428 |
|
429 |
/**
|
438 |
{
|
439 |
$settings = get_option(EMBEDPRESS_PLG_NAME);
|
440 |
|
441 |
+
if ( ! isset($settings['enablePluginInAdmin'])) {
|
442 |
$settings['enablePluginInAdmin'] = true;
|
443 |
}
|
444 |
|
445 |
+
if ( ! isset($settings['enablePluginInFront'])) {
|
446 |
$settings['enablePluginInFront'] = true;
|
447 |
}
|
448 |
|
455 |
* @since 1.4.0
|
456 |
* @static
|
457 |
*
|
458 |
+
* @param array $pluginMeta Associative array containing plugin's name, slug and namespace
|
459 |
+
*
|
460 |
* @return void
|
461 |
*/
|
462 |
public static function registerPlugin($pluginMeta)
|
467 |
return;
|
468 |
}
|
469 |
|
470 |
+
if ( ! isset(self::$plugins[$pluginMeta->slug])) {
|
471 |
+
AutoLoader::register($pluginMeta->namespace,
|
472 |
+
WP_PLUGIN_DIR . '/' . EMBEDPRESS_PLG_NAME . '-' . $pluginMeta->slug . '/' . $pluginMeta->name);
|
473 |
|
474 |
$plugin = "{$pluginMeta->namespace}\Plugin";
|
475 |
if (\defined("{$plugin}::SLUG") && $plugin::SLUG !== null) {
|
476 |
self::$plugins[$pluginMeta->slug] = $pluginMeta->namespace;
|
477 |
|
478 |
+
$bsFilePath = $plugin::PATH . EMBEDPRESS_PLG_NAME . '-' . $plugin::SLUG . '.php';
|
479 |
|
480 |
+
register_activation_hook($bsFilePath, [$plugin::NAMESPACE_STRING, 'onActivationCallback']);
|
481 |
+
register_deactivation_hook($bsFilePath, [$plugin::NAMESPACE_STRING, 'onDeactivationCallback']);
|
482 |
|
483 |
+
add_action('admin_init', [$plugin, 'onLoadAdminCallback']);
|
484 |
|
485 |
+
add_action(EMBEDPRESS_PLG_NAME . ':' . $plugin::SLUG . ':settings:register',
|
486 |
+
[$plugin, 'registerSettings']);
|
487 |
+
add_action(EMBEDPRESS_PLG_NAME . ':settings:render:tab', [$plugin, 'renderTab']);
|
488 |
|
489 |
+
add_filter('plugin_action_links_embedpress-' . $plugin::SLUG . '/embedpress-' . $plugin::SLUG . '.php',
|
490 |
+
[$plugin, 'handleActionLinks'], 10, 2);
|
491 |
|
492 |
$plugin::registerEvents();
|
493 |
}
|
517 |
*/
|
518 |
public static function handleActionLinks($links, $file)
|
519 |
{
|
520 |
+
$settingsLink = '<a href="' . admin_url('admin.php?page=embedpress') . '" aria-label="' . __('Open settings page',
|
521 |
+
'embedpress') . '">' . __('Settings', 'embedpress') . '</a>';
|
522 |
|
523 |
array_unshift($links, $settingsLink);
|
524 |
|
531 |
* @since 1.4.0
|
532 |
* @static
|
533 |
*
|
534 |
+
* @param boolean $isAllowed
|
535 |
+
* @param string $host
|
536 |
+
* @param string $url
|
537 |
*
|
538 |
* @return boolean
|
539 |
*/
|
545 |
|
546 |
return $isAllowed;
|
547 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
548 |
}
|
EmbedPress/CoreLegacy.php
ADDED
@@ -0,0 +1,415 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace EmbedPress;
|
4 |
+
|
5 |
+
use EmbedPress\Ends\Back\Handler as EndHandlerAdmin;
|
6 |
+
use EmbedPress\Ends\Front\Handler as EndHandlerPublic;
|
7 |
+
|
8 |
+
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Entity that glues together all pieces that the plugin is made of, for WordPress before 5.0.
|
12 |
+
*
|
13 |
+
* @package EmbedPress
|
14 |
+
* @author EmbedPress <help@embedpress.com>
|
15 |
+
* @copyright Copyright (C) 2018 EmbedPress. All rights reserved.
|
16 |
+
* @license GPLv2 or later
|
17 |
+
* @since 1.0.0
|
18 |
+
*/
|
19 |
+
class CoreLegacy
|
20 |
+
{
|
21 |
+
/**
|
22 |
+
* The name of the plugin.
|
23 |
+
*
|
24 |
+
* @since 1.0.0
|
25 |
+
* @access protected
|
26 |
+
*
|
27 |
+
* @var string $pluginName The name of the plugin.
|
28 |
+
*/
|
29 |
+
protected $pluginName;
|
30 |
+
|
31 |
+
/**
|
32 |
+
* The version of the plugin.
|
33 |
+
*
|
34 |
+
* @since 1.0.0
|
35 |
+
* @access protected
|
36 |
+
*
|
37 |
+
* @var string $pluginVersion The version of the plugin.
|
38 |
+
*/
|
39 |
+
protected $pluginVersion;
|
40 |
+
|
41 |
+
/**
|
42 |
+
* An instance of the plugin loader.
|
43 |
+
*
|
44 |
+
* @since 1.0.0
|
45 |
+
* @access protected
|
46 |
+
*
|
47 |
+
* @var \EmbedPress\Loader $pluginVersion The version of the plugin.
|
48 |
+
*/
|
49 |
+
protected $loaderInstance;
|
50 |
+
|
51 |
+
/**
|
52 |
+
* An associative array storing all registered/active EmbedPress plugins and their namespaces.
|
53 |
+
*
|
54 |
+
* @since 1.4.0
|
55 |
+
* @access private
|
56 |
+
* @static
|
57 |
+
*
|
58 |
+
* @var array
|
59 |
+
*/
|
60 |
+
private static $plugins = [];
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Initialize the plugin and set its properties.
|
64 |
+
*
|
65 |
+
* @since 1.0.0
|
66 |
+
*
|
67 |
+
* @return void
|
68 |
+
*/
|
69 |
+
public function __construct()
|
70 |
+
{
|
71 |
+
$this->pluginName = EMBEDPRESS_PLG_NAME;
|
72 |
+
$this->pluginVersion = EMBEDPRESS_VERSION;
|
73 |
+
|
74 |
+
$this->loaderInstance = new Loader();
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Method that retrieves the plugin name.
|
79 |
+
*
|
80 |
+
* @since 1.0.0
|
81 |
+
*
|
82 |
+
* @return string
|
83 |
+
*/
|
84 |
+
public function getPluginName()
|
85 |
+
{
|
86 |
+
return $this->pluginName;
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Method that retrieves the plugin version.
|
91 |
+
*
|
92 |
+
* @since 1.0.0
|
93 |
+
*
|
94 |
+
* @return string
|
95 |
+
*/
|
96 |
+
public function getPluginVersion()
|
97 |
+
{
|
98 |
+
return $this->pluginVersion;
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Method that retrieves the loader instance.
|
103 |
+
*
|
104 |
+
* @since 1.0.0
|
105 |
+
*
|
106 |
+
* @return \EmbedPress\Loader
|
107 |
+
*/
|
108 |
+
public function getLoader()
|
109 |
+
{
|
110 |
+
return $this->loaderInstance;
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Method responsible to connect all required hooks in order to make the plugin work.
|
115 |
+
*
|
116 |
+
* @since 1.0.0
|
117 |
+
*
|
118 |
+
* @return void
|
119 |
+
*/
|
120 |
+
public function initialize()
|
121 |
+
{
|
122 |
+
global $wp_actions;
|
123 |
+
|
124 |
+
if (is_admin()) {
|
125 |
+
$plgSettings = self::getSettings();
|
126 |
+
|
127 |
+
$settingsClassNamespace = '\\EmbedPress\\Ends\\Back\\Settings';
|
128 |
+
add_action('admin_menu', [$settingsClassNamespace, 'registerMenuItem']);
|
129 |
+
add_action('admin_init', [$settingsClassNamespace, 'registerActions']);
|
130 |
+
unset($settingsClassNamespace);
|
131 |
+
|
132 |
+
add_filter('plugin_action_links_embedpress/embedpress.php',
|
133 |
+
['\\EmbedPress\\CoreLegacy', 'handleActionLinks'], 10, 2);
|
134 |
+
|
135 |
+
add_action('admin_enqueue_scripts', ['\\EmbedPress\\Ends\\Back\\Handler', 'enqueueStyles']);
|
136 |
+
|
137 |
+
add_action('init', ['\\EmbedPress\\DisablerLegacy', 'run'], 1);
|
138 |
+
add_action('init', [$this, 'configureTinyMCE'], 1);
|
139 |
+
|
140 |
+
$plgHandlerAdminInstance = new EndHandlerAdmin($this->getPluginName(), $this->getPluginVersion());
|
141 |
+
|
142 |
+
if ((bool)$plgSettings->enablePluginInAdmin) {
|
143 |
+
$this->loaderInstance->add_action('admin_enqueue_scripts', $plgHandlerAdminInstance, 'enqueueScripts');
|
144 |
+
}
|
145 |
+
|
146 |
+
$onAjaxCallbackName = "doShortcodeReceivedViaAjax";
|
147 |
+
$this->loaderInstance->add_action('wp_ajax_embedpress_do_ajax_request', $plgHandlerAdminInstance,
|
148 |
+
$onAjaxCallbackName);
|
149 |
+
$this->loaderInstance->add_action('wp_ajax_nopriv_embedpress_do_ajax_request', $plgHandlerAdminInstance,
|
150 |
+
$onAjaxCallbackName);
|
151 |
+
|
152 |
+
$this->loaderInstance->add_action('wp_ajax_embedpress_get_embed_url_info', $plgHandlerAdminInstance,
|
153 |
+
"getUrlInfoViaAjax");
|
154 |
+
|
155 |
+
unset($onAjaxCallbackName, $plgHandlerAdminInstance);
|
156 |
+
} else {
|
157 |
+
add_action('init', ['\\EmbedPress\\DisablerLegacy', 'run'], 1);
|
158 |
+
|
159 |
+
$plgHandlerPublicInstance = new EndHandlerPublic($this->getPluginName(), $this->getPluginVersion());
|
160 |
+
|
161 |
+
$this->loaderInstance->add_action('wp_enqueue_scripts', $plgHandlerPublicInstance, 'enqueueScripts');
|
162 |
+
$this->loaderInstance->add_action('wp_enqueue_scripts', $plgHandlerPublicInstance, 'enqueueStyles');
|
163 |
+
|
164 |
+
unset($plgHandlerPublicInstance);
|
165 |
+
}
|
166 |
+
|
167 |
+
// Add support for embeds on AMP pages
|
168 |
+
add_filter('pp_embed_parsed_content', ['\\EmbedPress\\AMP\\EmbedHandler', 'processParsedContent'], 10, 3);
|
169 |
+
|
170 |
+
// Add support for our embeds on Beaver Builder. Without this it only run the native embeds.
|
171 |
+
add_filter('fl_builder_before_render_shortcodes',
|
172 |
+
['\\EmbedPress\\ThirdParty\\BeaverBuilder', 'before_render_shortcodes']);
|
173 |
+
|
174 |
+
$this->loaderInstance->run();
|
175 |
+
}
|
176 |
+
|
177 |
+
/**
|
178 |
+
* Callback called right after the plugin has been activated.
|
179 |
+
*
|
180 |
+
* @since 1.0.0
|
181 |
+
* @static
|
182 |
+
*
|
183 |
+
* @return void
|
184 |
+
*/
|
185 |
+
public static function onPluginActivationCallback()
|
186 |
+
{
|
187 |
+
add_filter('rewrite_rules_array', ['\\EmbedPress\\DisablerLegacy', 'disableDefaultEmbedRewriteRules']);
|
188 |
+
flush_rewrite_rules();
|
189 |
+
}
|
190 |
+
|
191 |
+
/**
|
192 |
+
* Callback called right after the plugin has been deactivated.
|
193 |
+
*
|
194 |
+
* @since 1.0.0
|
195 |
+
* @static
|
196 |
+
*
|
197 |
+
* @return void
|
198 |
+
*/
|
199 |
+
public static function onPluginDeactivationCallback()
|
200 |
+
{
|
201 |
+
remove_filter('rewrite_rules_array', ['\\EmbedPress\\DisablerLegacy', 'disableDefaultEmbedRewriteRules']);
|
202 |
+
flush_rewrite_rules();
|
203 |
+
}
|
204 |
+
|
205 |
+
/**
|
206 |
+
* Method that retrieves all additional service providers defined in the ~<plugin_root_path>/providers.php file.
|
207 |
+
*
|
208 |
+
* @since 1.0.0
|
209 |
+
* @static
|
210 |
+
*
|
211 |
+
* @return array
|
212 |
+
*/
|
213 |
+
public static function getAdditionalServiceProviders()
|
214 |
+
{
|
215 |
+
$additionalProvidersFilePath = EMBEDPRESS_PATH_BASE . 'providers.php';
|
216 |
+
if (file_exists($additionalProvidersFilePath)) {
|
217 |
+
include $additionalProvidersFilePath;
|
218 |
+
|
219 |
+
if (isset($additionalServiceProviders)) {
|
220 |
+
return $additionalServiceProviders;
|
221 |
+
}
|
222 |
+
}
|
223 |
+
|
224 |
+
return [];
|
225 |
+
}
|
226 |
+
|
227 |
+
/**
|
228 |
+
* Method that checks if an embed of a given service provider can be responsive.
|
229 |
+
*
|
230 |
+
* @since 1.0.0
|
231 |
+
* @static
|
232 |
+
*
|
233 |
+
* @param string $serviceProviderAlias The service's slug.
|
234 |
+
*
|
235 |
+
* @return boolean
|
236 |
+
*/
|
237 |
+
public static function canServiceProviderBeResponsive($serviceProviderAlias)
|
238 |
+
{
|
239 |
+
$providers = [
|
240 |
+
|
241 |
+
];
|
242 |
+
|
243 |
+
return in_array($serviceProviderAlias, [
|
244 |
+
"dailymotion",
|
245 |
+
"kickstarter",
|
246 |
+
"rutube",
|
247 |
+
"ted",
|
248 |
+
"vimeo",
|
249 |
+
"youtube",
|
250 |
+
"ustream",
|
251 |
+
"google-docs",
|
252 |
+
"animatron",
|
253 |
+
"amcharts",
|
254 |
+
"on-aol-com",
|
255 |
+
"animoto",
|
256 |
+
"videojug",
|
257 |
+
'issuu',
|
258 |
+
]);
|
259 |
+
}
|
260 |
+
|
261 |
+
/**
|
262 |
+
* Method that retrieves the plugin settings defined by the user.
|
263 |
+
*
|
264 |
+
* @since 1.0.0
|
265 |
+
* @static
|
266 |
+
*
|
267 |
+
* @return object
|
268 |
+
*/
|
269 |
+
public static function getSettings()
|
270 |
+
{
|
271 |
+
$settings = get_option(EMBEDPRESS_PLG_NAME);
|
272 |
+
|
273 |
+
if ( ! isset($settings['enablePluginInAdmin'])) {
|
274 |
+
$settings['enablePluginInAdmin'] = true;
|
275 |
+
}
|
276 |
+
|
277 |
+
if ( ! isset($settings['enablePluginInFront'])) {
|
278 |
+
$settings['enablePluginInFront'] = true;
|
279 |
+
}
|
280 |
+
|
281 |
+
return (object)$settings;
|
282 |
+
}
|
283 |
+
|
284 |
+
/**
|
285 |
+
* Method that register an EmbedPress plugin.
|
286 |
+
*
|
287 |
+
* @since 1.4.0
|
288 |
+
* @static
|
289 |
+
*
|
290 |
+
* @param array $pluginMeta Associative array containing plugin's name, slug and namespace
|
291 |
+
*
|
292 |
+
* @return void
|
293 |
+
*/
|
294 |
+
public static function registerPlugin($pluginMeta)
|
295 |
+
{
|
296 |
+
$pluginMeta = json_decode(json_encode($pluginMeta));
|
297 |
+
|
298 |
+
if (empty($pluginMeta->name) || empty($pluginMeta->slug) || empty($pluginMeta->namespace)) {
|
299 |
+
return;
|
300 |
+
}
|
301 |
+
|
302 |
+
if ( ! isset(self::$plugins[$pluginMeta->slug])) {
|
303 |
+
AutoLoader::register($pluginMeta->namespace,
|
304 |
+
WP_PLUGIN_DIR . '/' . EMBEDPRESS_PLG_NAME . '-' . $pluginMeta->slug . '/' . $pluginMeta->name);
|
305 |
+
|
306 |
+
$plugin = "{$pluginMeta->namespace}\Plugin";
|
307 |
+
if (\defined("{$plugin}::SLUG") && $plugin::SLUG !== null) {
|
308 |
+
self::$plugins[$pluginMeta->slug] = $pluginMeta->namespace;
|
309 |
+
|
310 |
+
$bsFilePath = $plugin::PATH . EMBEDPRESS_PLG_NAME . '-' . $plugin::SLUG . '.php';
|
311 |
+
|
312 |
+
register_activation_hook($bsFilePath, [$plugin::NAMESPACE_STRING, 'onActivationCallback']);
|
313 |
+
register_deactivation_hook($bsFilePath, [$plugin::NAMESPACE_STRING, 'onDeactivationCallback']);
|
314 |
+
|
315 |
+
add_action('admin_init', [$plugin, 'onLoadAdminCallback']);
|
316 |
+
|
317 |
+
add_action(EMBEDPRESS_PLG_NAME . ':' . $plugin::SLUG . ':settings:register',
|
318 |
+
[$plugin, 'registerSettings']);
|
319 |
+
add_action(EMBEDPRESS_PLG_NAME . ':settings:render:tab', [$plugin, 'renderTab']);
|
320 |
+
|
321 |
+
add_filter('plugin_action_links_embedpress-' . $plugin::SLUG . '/embedpress-' . $plugin::SLUG . '.php',
|
322 |
+
[$plugin, 'handleActionLinks'], 10, 2);
|
323 |
+
|
324 |
+
$plugin::registerEvents();
|
325 |
+
}
|
326 |
+
}
|
327 |
+
}
|
328 |
+
|
329 |
+
/**
|
330 |
+
* Retrieve all registered plugins.
|
331 |
+
*
|
332 |
+
* @since 1.4.0
|
333 |
+
* @static
|
334 |
+
*
|
335 |
+
* @return array
|
336 |
+
*/
|
337 |
+
public static function getPlugins()
|
338 |
+
{
|
339 |
+
return self::$plugins;
|
340 |
+
}
|
341 |
+
|
342 |
+
/**
|
343 |
+
* Handle links displayed below the plugin name in the WordPress Installed Plugins page.
|
344 |
+
*
|
345 |
+
* @since 1.4.0
|
346 |
+
* @static
|
347 |
+
*
|
348 |
+
* @return array
|
349 |
+
*/
|
350 |
+
public static function handleActionLinks($links, $file)
|
351 |
+
{
|
352 |
+
$settingsLink = '<a href="' . admin_url('admin.php?page=embedpress') . '" aria-label="' . __('Open settings page',
|
353 |
+
'embedpress') . '">' . __('Settings', 'embedpress') . '</a>';
|
354 |
+
|
355 |
+
array_unshift($links, $settingsLink);
|
356 |
+
|
357 |
+
return $links;
|
358 |
+
}
|
359 |
+
|
360 |
+
/**
|
361 |
+
* Method that ensures the API's url are whitelisted to WordPress external requests.
|
362 |
+
*
|
363 |
+
* @since 1.4.0
|
364 |
+
* @static
|
365 |
+
*
|
366 |
+
* @param boolean $isAllowed
|
367 |
+
* @param string $host
|
368 |
+
* @param string $url
|
369 |
+
*
|
370 |
+
* @return boolean
|
371 |
+
*/
|
372 |
+
public static function allowApiHost($isAllowed, $host, $url)
|
373 |
+
{
|
374 |
+
if ($host === EMBEDPRESS_LICENSES_API_HOST) {
|
375 |
+
$isAllowed = true;
|
376 |
+
}
|
377 |
+
|
378 |
+
return $isAllowed;
|
379 |
+
}
|
380 |
+
|
381 |
+
/**
|
382 |
+
* Add filters to configure the TinyMCE editor.
|
383 |
+
*
|
384 |
+
* @since 1.6.2
|
385 |
+
*/
|
386 |
+
public function configureTinyMCE()
|
387 |
+
{
|
388 |
+
add_filter('teeny_mce_before_init', [$this, 'hookOnPaste']);
|
389 |
+
add_filter('tiny_mce_before_init', [$this, 'hookOnPaste']);
|
390 |
+
}
|
391 |
+
|
392 |
+
/**
|
393 |
+
* Hook the onPaste methof to the paste_preprocess config in the editor.
|
394 |
+
*
|
395 |
+
* @since 1.6.2
|
396 |
+
*
|
397 |
+
* @param array $mceInit
|
398 |
+
*
|
399 |
+
* @return array
|
400 |
+
*/
|
401 |
+
public function hookOnPaste($mceInit)
|
402 |
+
{
|
403 |
+
$settings = self::getSettings();
|
404 |
+
|
405 |
+
if (isset($settings->enablePluginInAdmin) && $settings->enablePluginInAdmin) {
|
406 |
+
// We hook here because the onPaste is sometimes called after the content was already added to the editor.
|
407 |
+
// If you copy text from the editor and paste there, it will give no way to use a normal onPaste event hook
|
408 |
+
// to modify the input since it was already injected.
|
409 |
+
$mceInit['paste_preprocess'] = 'function (plugin, args) {EmbedPress.onPaste(plugin, args);}';
|
410 |
+
}
|
411 |
+
|
412 |
+
|
413 |
+
return $mceInit;
|
414 |
+
}
|
415 |
+
}
|
EmbedPress/{Disabler.php → DisablerLegacy.php}
RENAMED
@@ -1,7 +1,6 @@
|
|
1 |
<?php
|
2 |
-
namespace EmbedPress;
|
3 |
|
4 |
-
|
5 |
|
6 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
7 |
|
@@ -14,7 +13,7 @@ use \EmbedPress\Shortcode;
|
|
14 |
* @license GPLv2 or later
|
15 |
* @since 1.0.0
|
16 |
*/
|
17 |
-
class
|
18 |
{
|
19 |
/**
|
20 |
* Method that replaces the embed shortcodes.
|
@@ -31,7 +30,8 @@ class Disabler
|
|
31 |
}
|
32 |
|
33 |
/**
|
34 |
-
* Disable all actions/filters related to the embed. This is required to make sure our "shortcode" overrides the
|
|
|
35 |
*
|
36 |
* @since 1.0.0
|
37 |
* @access protected
|
@@ -44,7 +44,7 @@ class Disabler
|
|
44 |
global $wp, $wp_embed;
|
45 |
|
46 |
// Remove the embed query var.
|
47 |
-
$wp->public_query_vars = array_diff($wp->public_query_vars,
|
48 |
|
49 |
// Remove the REST API endpoint.
|
50 |
remove_action('rest_api_init', 'wp_oembed_register_route');
|
@@ -62,7 +62,7 @@ class Disabler
|
|
62 |
remove_action('wp_head', 'wp_oembed_add_host_js');
|
63 |
|
64 |
// Disable all TinyMCE plugins embed-related.
|
65 |
-
add_filter('tiny_mce_plugins',
|
66 |
|
67 |
remove_action('rest_api_init', 'wp_oembed_register_route');
|
68 |
|
@@ -77,26 +77,26 @@ class Disabler
|
|
77 |
wp_embed_unregister_handler("googlevideo");
|
78 |
|
79 |
// Remove all embeds rewrite rules.
|
80 |
-
add_filter('rewrite_rules_array',
|
81 |
|
82 |
// Disable the method that determines if default embed handlers should be loaded.
|
83 |
add_filter('wp_maybe_load_embeds', '__return_false');
|
84 |
|
85 |
// Disable the method that transform any URL from content to {@link WP_Embed::shortcode()}.
|
86 |
-
remove_filter('the_content',
|
87 |
-
remove_filter('the_content',
|
88 |
|
89 |
// Remove {@link WP_Embed::shortcode()} from execution.
|
90 |
remove_shortcode(EMBEDPRESS_SHORTCODE);
|
91 |
|
92 |
// Attempts to embed all URLs in a post.
|
93 |
-
add_filter('the_content',
|
94 |
|
95 |
wp_deregister_script('wp-embed');
|
96 |
|
97 |
-
add_filter('http_request_host_is_external',
|
98 |
|
99 |
-
add_action('tiny_mce_before_init',
|
100 |
}
|
101 |
|
102 |
/**
|
@@ -105,7 +105,8 @@ class Disabler
|
|
105 |
* @since 1.0.0
|
106 |
* @static
|
107 |
*
|
108 |
-
* @param array
|
|
|
109 |
* @return array
|
110 |
*/
|
111 |
public static function disableDefaultEmbedRewriteRules($rules)
|
@@ -127,12 +128,13 @@ class Disabler
|
|
127 |
* @since 1.0.0
|
128 |
* @static
|
129 |
*
|
130 |
-
* @param array
|
|
|
131 |
* @return array
|
132 |
*/
|
133 |
public static function disableDefaultEmbedTinyMCERelatedPlugins($plugins)
|
134 |
{
|
135 |
-
$blackListedPlugins =
|
136 |
|
137 |
return array_diff($plugins, $blackListedPlugins);
|
138 |
}
|
1 |
<?php
|
|
|
2 |
|
3 |
+
namespace EmbedPress;
|
4 |
|
5 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
6 |
|
13 |
* @license GPLv2 or later
|
14 |
* @since 1.0.0
|
15 |
*/
|
16 |
+
class DisablerLegacy
|
17 |
{
|
18 |
/**
|
19 |
* Method that replaces the embed shortcodes.
|
30 |
}
|
31 |
|
32 |
/**
|
33 |
+
* Disable all actions/filters related to the embed. This is required to make sure our "shortcode" overrides the
|
34 |
+
* WordPress one.
|
35 |
*
|
36 |
* @since 1.0.0
|
37 |
* @access protected
|
44 |
global $wp, $wp_embed;
|
45 |
|
46 |
// Remove the embed query var.
|
47 |
+
$wp->public_query_vars = array_diff($wp->public_query_vars, ["embed"]);
|
48 |
|
49 |
// Remove the REST API endpoint.
|
50 |
remove_action('rest_api_init', 'wp_oembed_register_route');
|
62 |
remove_action('wp_head', 'wp_oembed_add_host_js');
|
63 |
|
64 |
// Disable all TinyMCE plugins embed-related.
|
65 |
+
add_filter('tiny_mce_plugins', ['\\EmbedPress\\DisablerLegacy', 'disableDefaultEmbedTinyMCERelatedPlugins']);
|
66 |
|
67 |
remove_action('rest_api_init', 'wp_oembed_register_route');
|
68 |
|
77 |
wp_embed_unregister_handler("googlevideo");
|
78 |
|
79 |
// Remove all embeds rewrite rules.
|
80 |
+
add_filter('rewrite_rules_array', ['\\EmbedPress\\DisablerLegacy', 'disableDefaultEmbedRewriteRules']);
|
81 |
|
82 |
// Disable the method that determines if default embed handlers should be loaded.
|
83 |
add_filter('wp_maybe_load_embeds', '__return_false');
|
84 |
|
85 |
// Disable the method that transform any URL from content to {@link WP_Embed::shortcode()}.
|
86 |
+
remove_filter('the_content', [$wp_embed, 'run_shortcode'], 8);
|
87 |
+
remove_filter('the_content', [$wp_embed, 'autoembed'], 8);
|
88 |
|
89 |
// Remove {@link WP_Embed::shortcode()} from execution.
|
90 |
remove_shortcode(EMBEDPRESS_SHORTCODE);
|
91 |
|
92 |
// Attempts to embed all URLs in a post.
|
93 |
+
add_filter('the_content', ['\\EmbedPress\\Ends\\Front\\Handler', 'autoEmbedUrls']);
|
94 |
|
95 |
wp_deregister_script('wp-embed');
|
96 |
|
97 |
+
add_filter('http_request_host_is_external', ['\\EmbedPress\\CoreLegacy', 'allowApiHost'], 10, 3);
|
98 |
|
99 |
+
add_action('tiny_mce_before_init', ['\\EmbedPress\\Ends\\Front\\Handler', 'renderPreviewBoxInEditors']);
|
100 |
}
|
101 |
|
102 |
/**
|
105 |
* @since 1.0.0
|
106 |
* @static
|
107 |
*
|
108 |
+
* @param array $rules WordPress rewrite rules.
|
109 |
+
*
|
110 |
* @return array
|
111 |
*/
|
112 |
public static function disableDefaultEmbedRewriteRules($rules)
|
128 |
* @since 1.0.0
|
129 |
* @static
|
130 |
*
|
131 |
+
* @param array $plugins An array containing enabled plugins.
|
132 |
+
*
|
133 |
* @return array
|
134 |
*/
|
135 |
public static function disableDefaultEmbedTinyMCERelatedPlugins($plugins)
|
136 |
{
|
137 |
+
$blackListedPlugins = ["wpembed", "wpview"];
|
138 |
|
139 |
return array_diff($plugins, $blackListedPlugins);
|
140 |
}
|
EmbedPress/Ends/Back/Handler.php
CHANGED
@@ -1,10 +1,11 @@
|
|
1 |
<?php
|
|
|
2 |
namespace EmbedPress\Ends\Back;
|
3 |
|
4 |
-
use
|
5 |
-
use
|
6 |
-
use
|
7 |
-
use
|
8 |
|
9 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
10 |
|
@@ -34,28 +35,32 @@ class Handler extends EndHandlerAbstract
|
|
34 |
|
35 |
$urlSchemes = apply_filters('embedpress:getAdditionalURLSchemes', $this->getUrlSchemes());
|
36 |
|
37 |
-
wp_enqueue_script("bootbox-bootstrap", EMBEDPRESS_URL_ASSETS .'js/vendor/bootstrap/bootstrap.min.js',
|
38 |
-
|
39 |
-
wp_enqueue_script(
|
40 |
-
|
41 |
-
|
42 |
-
|
|
|
|
|
|
|
43 |
'versionUID' => $this->pluginVersion,
|
44 |
-
'debug' => true
|
45 |
-
|
46 |
'EMBEDPRESS_SHORTCODE' => EMBEDPRESS_SHORTCODE,
|
47 |
'EMBEDPRESS_URL_ASSETS' => EMBEDPRESS_URL_ASSETS,
|
48 |
-
'urlSchemes' => $urlSchemes
|
49 |
-
)
|
50 |
|
51 |
$installedPlugins = Core::getPlugins();
|
52 |
if (count($installedPlugins) > 0) {
|
53 |
foreach ($installedPlugins as $plgSlug => $plgNamespace) {
|
54 |
$plgScriptPathRelative = "assets/js/embedpress.{$plgSlug}.js";
|
55 |
-
$plgName
|
56 |
|
57 |
if (file_exists(WP_PLUGIN_DIR . "/{$plgName}/{$plgScriptPathRelative}")) {
|
58 |
-
wp_enqueue_script($plgName, plugins_url($plgName) .'/'. $plgScriptPathRelative,
|
|
|
59 |
}
|
60 |
}
|
61 |
}
|
@@ -86,9 +91,9 @@ class Handler extends EndHandlerAbstract
|
|
86 |
{
|
87 |
$subject = isset($_POST['subject']) ? $_POST['subject'] : "";
|
88 |
|
89 |
-
$response =
|
90 |
-
'data' => Shortcode::parseContent($subject, true)
|
91 |
-
|
92 |
|
93 |
header('Content-Type:application/json;charset=UTF-8');
|
94 |
echo json_encode($response);
|
@@ -107,16 +112,16 @@ class Handler extends EndHandlerAbstract
|
|
107 |
{
|
108 |
$url = isset($_GET['url']) ? trim($_GET['url']) : "";
|
109 |
|
110 |
-
$response =
|
111 |
'url' => $url,
|
112 |
-
'canBeResponsive' => false
|
113 |
-
|
114 |
|
115 |
-
if (
|
116 |
$embera = new Embera();
|
117 |
|
118 |
$additionalServiceProviders = Core::getAdditionalServiceProviders();
|
119 |
-
if (!empty($additionalServiceProviders)) {
|
120 |
foreach ($additionalServiceProviders as $serviceProviderClassName => $serviceProviderUrls) {
|
121 |
Shortcode::addServiceProvider($serviceProviderClassName, $serviceProviderUrls, $embera);
|
122 |
}
|
@@ -124,7 +129,7 @@ class Handler extends EndHandlerAbstract
|
|
124 |
|
125 |
$urlInfo = $embera->getUrlInfo($response['url']);
|
126 |
if (isset($urlInfo[$response['url']])) {
|
127 |
-
$urlInfo
|
128 |
$response['canBeResponsive'] = Core::canServiceProviderBeResponsive($urlInfo->provider_alias);
|
129 |
}
|
130 |
}
|
@@ -142,7 +147,7 @@ class Handler extends EndHandlerAbstract
|
|
142 |
*/
|
143 |
public function getUrlSchemes()
|
144 |
{
|
145 |
-
return
|
146 |
// PollDaddy
|
147 |
'*.polldaddy.com/s/*',
|
148 |
'*.polldaddy.com/poll/*',
|
@@ -355,7 +360,7 @@ class Handler extends EndHandlerAbstract
|
|
355 |
'gist.github.com/*/*',
|
356 |
|
357 |
// http://issuu.com
|
358 |
-
|
359 |
|
360 |
// https://portfolium.com
|
361 |
'portfolium.com/*',
|
@@ -406,7 +411,7 @@ class Handler extends EndHandlerAbstract
|
|
406 |
|
407 |
// Wistia
|
408 |
'*.wistia.com/medias/*',
|
409 |
-
'fast.wistia.com/embed/medias/*.jsonp'
|
410 |
-
|
411 |
}
|
412 |
}
|
1 |
<?php
|
2 |
+
|
3 |
namespace EmbedPress\Ends\Back;
|
4 |
|
5 |
+
use EmbedPress\Core;
|
6 |
+
use EmbedPress\Ends\Handler as EndHandlerAbstract;
|
7 |
+
use EmbedPress\Shortcode;
|
8 |
+
use Embera\Embera;
|
9 |
|
10 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
11 |
|
35 |
|
36 |
$urlSchemes = apply_filters('embedpress:getAdditionalURLSchemes', $this->getUrlSchemes());
|
37 |
|
38 |
+
wp_enqueue_script("bootbox-bootstrap", EMBEDPRESS_URL_ASSETS . 'js/vendor/bootstrap/bootstrap.min.js',
|
39 |
+
['jquery'], $this->pluginVersion, true);
|
40 |
+
wp_enqueue_script("bootbox", EMBEDPRESS_URL_ASSETS . 'js/vendor/bootbox.min.js',
|
41 |
+
['jquery', 'bootbox-bootstrap'], $this->pluginVersion, true);
|
42 |
+
wp_enqueue_script($this->pluginName, EMBEDPRESS_URL_ASSETS . 'js/preview.js', ['jquery', 'bootbox'],
|
43 |
+
$this->pluginVersion, true);
|
44 |
+
wp_localize_script($this->pluginName, '$data', [
|
45 |
+
'previewSettings' => [
|
46 |
+
'baseUrl' => get_site_url() . '/',
|
47 |
'versionUID' => $this->pluginVersion,
|
48 |
+
'debug' => true,
|
49 |
+
],
|
50 |
'EMBEDPRESS_SHORTCODE' => EMBEDPRESS_SHORTCODE,
|
51 |
'EMBEDPRESS_URL_ASSETS' => EMBEDPRESS_URL_ASSETS,
|
52 |
+
'urlSchemes' => $urlSchemes,
|
53 |
+
]);
|
54 |
|
55 |
$installedPlugins = Core::getPlugins();
|
56 |
if (count($installedPlugins) > 0) {
|
57 |
foreach ($installedPlugins as $plgSlug => $plgNamespace) {
|
58 |
$plgScriptPathRelative = "assets/js/embedpress.{$plgSlug}.js";
|
59 |
+
$plgName = "embedpress-{$plgSlug}";
|
60 |
|
61 |
if (file_exists(WP_PLUGIN_DIR . "/{$plgName}/{$plgScriptPathRelative}")) {
|
62 |
+
wp_enqueue_script($plgName, plugins_url($plgName) . '/' . $plgScriptPathRelative,
|
63 |
+
[$this->pluginName], $this->pluginVersion, true);
|
64 |
}
|
65 |
}
|
66 |
}
|
91 |
{
|
92 |
$subject = isset($_POST['subject']) ? $_POST['subject'] : "";
|
93 |
|
94 |
+
$response = [
|
95 |
+
'data' => Shortcode::parseContent($subject, true),
|
96 |
+
];
|
97 |
|
98 |
header('Content-Type:application/json;charset=UTF-8');
|
99 |
echo json_encode($response);
|
112 |
{
|
113 |
$url = isset($_GET['url']) ? trim($_GET['url']) : "";
|
114 |
|
115 |
+
$response = [
|
116 |
'url' => $url,
|
117 |
+
'canBeResponsive' => false,
|
118 |
+
];
|
119 |
|
120 |
+
if ( ! ! strlen($response['url'])) {
|
121 |
$embera = new Embera();
|
122 |
|
123 |
$additionalServiceProviders = Core::getAdditionalServiceProviders();
|
124 |
+
if ( ! empty($additionalServiceProviders)) {
|
125 |
foreach ($additionalServiceProviders as $serviceProviderClassName => $serviceProviderUrls) {
|
126 |
Shortcode::addServiceProvider($serviceProviderClassName, $serviceProviderUrls, $embera);
|
127 |
}
|
129 |
|
130 |
$urlInfo = $embera->getUrlInfo($response['url']);
|
131 |
if (isset($urlInfo[$response['url']])) {
|
132 |
+
$urlInfo = (object)$urlInfo[$response['url']];
|
133 |
$response['canBeResponsive'] = Core::canServiceProviderBeResponsive($urlInfo->provider_alias);
|
134 |
}
|
135 |
}
|
147 |
*/
|
148 |
public function getUrlSchemes()
|
149 |
{
|
150 |
+
return [
|
151 |
// PollDaddy
|
152 |
'*.polldaddy.com/s/*',
|
153 |
'*.polldaddy.com/poll/*',
|
360 |
'gist.github.com/*/*',
|
361 |
|
362 |
// http://issuu.com
|
363 |
+
'issuu.com/*',
|
364 |
|
365 |
// https://portfolium.com
|
366 |
'portfolium.com/*',
|
411 |
|
412 |
// Wistia
|
413 |
'*.wistia.com/medias/*',
|
414 |
+
'fast.wistia.com/embed/medias/*.jsonp',
|
415 |
+
];
|
416 |
}
|
417 |
}
|
EmbedPress/Ends/Back/Settings.php
CHANGED
@@ -1,7 +1,8 @@
|
|
1 |
<?php
|
|
|
2 |
namespace EmbedPress\Ends\Back;
|
3 |
|
4 |
-
use
|
5 |
|
6 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
7 |
|
@@ -24,9 +25,9 @@ class Settings
|
|
24 |
* @access private
|
25 |
* @static
|
26 |
*
|
27 |
-
* @var string
|
28 |
*/
|
29 |
-
private static $namespace = '
|
30 |
|
31 |
/**
|
32 |
* The plugin's unique identifier.
|
@@ -35,7 +36,7 @@ class Settings
|
|
35 |
* @access private
|
36 |
* @static
|
37 |
*
|
38 |
-
* @var string
|
39 |
*/
|
40 |
private static $identifier = "plg_embedpress";
|
41 |
|
@@ -46,7 +47,7 @@ class Settings
|
|
46 |
* @access private
|
47 |
* @static
|
48 |
*
|
49 |
-
* @var string
|
50 |
*/
|
51 |
private static $sectionAdminIdentifier = "embedpress_options_admin";
|
52 |
|
@@ -57,41 +58,18 @@ class Settings
|
|
57 |
* @access private
|
58 |
* @static
|
59 |
*
|
60 |
-
* @var string
|
61 |
*/
|
62 |
private static $sectionGroupIdentifier = "embedpress";
|
63 |
|
64 |
-
/**
|
65 |
-
* Map to all settings.
|
66 |
-
*
|
67 |
-
* @since 1.0.0
|
68 |
-
* @access private
|
69 |
-
* @static
|
70 |
-
*
|
71 |
-
* @var string $fieldMap
|
72 |
-
*/
|
73 |
-
private static $fieldMap = array(
|
74 |
-
'enablePluginInAdmin' => array(
|
75 |
-
'label' => "Load previews in the admin editor",
|
76 |
-
'section' => "admin"
|
77 |
-
),
|
78 |
-
'enablePluginInFront' => array(
|
79 |
-
'label' => "Load previews in the frontend editor",
|
80 |
-
'section' => "admin"
|
81 |
-
),
|
82 |
-
'forceFacebookLanguage' => array(
|
83 |
-
'label' => "Facebook embed language",
|
84 |
-
'section' => "admin"
|
85 |
-
)
|
86 |
-
);
|
87 |
-
|
88 |
/**
|
89 |
* Class constructor. This prevents the class being directly instantiated.
|
90 |
*
|
91 |
* @since 1.0.0
|
92 |
*/
|
93 |
public function __construct()
|
94 |
-
{
|
|
|
95 |
|
96 |
/**
|
97 |
* This prevents the class being cloned.
|
@@ -99,7 +77,8 @@ class Settings
|
|
99 |
* @since 1.0.0
|
100 |
*/
|
101 |
public function __clone()
|
102 |
-
{
|
|
|
103 |
|
104 |
/**
|
105 |
* Method that adds an sub-item for EmbedPress to the WordPress Settings menu.
|
@@ -109,7 +88,8 @@ class Settings
|
|
109 |
*/
|
110 |
public static function registerMenuItem()
|
111 |
{
|
112 |
-
add_menu_page('EmbedPress Settings', 'EmbedPress', 'manage_options', 'embedpress',
|
|
|
113 |
}
|
114 |
|
115 |
/**
|
@@ -127,18 +107,39 @@ class Settings
|
|
127 |
$activeTab = "";
|
128 |
}
|
129 |
|
130 |
-
if (!empty($activeTab) && has_action($action)) {
|
131 |
-
do_action($action,
|
132 |
'id' => self::$sectionAdminIdentifier,
|
133 |
-
'slug' => self::$identifier
|
134 |
-
)
|
135 |
} else {
|
136 |
-
register_setting(self::$sectionGroupIdentifier, self::$sectionGroupIdentifier,
|
|
|
137 |
|
138 |
add_settings_section(self::$sectionAdminIdentifier, '', null, self::$identifier);
|
139 |
|
140 |
-
|
141 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
142 |
}
|
143 |
}
|
144 |
}
|
@@ -146,23 +147,25 @@ class Settings
|
|
146 |
/**
|
147 |
* Returns true if the plugin is active
|
148 |
*
|
149 |
-
* @param string
|
150 |
*
|
151 |
* @return boolean
|
152 |
*/
|
153 |
-
protected static function is_plugin_active(
|
154 |
-
|
|
|
155 |
}
|
156 |
|
157 |
/**
|
158 |
* Returns true if the plugin is installed
|
159 |
*
|
160 |
-
* @param string
|
161 |
*
|
162 |
* @return boolean
|
163 |
*/
|
164 |
-
protected static function is_plugin_installed(
|
165 |
-
|
|
|
166 |
}
|
167 |
|
168 |
/**
|
@@ -176,16 +179,18 @@ class Settings
|
|
176 |
// Add the color picker css file
|
177 |
wp_enqueue_style('wp-color-picker');
|
178 |
// Include our custom jQuery file with WordPress Color Picker dependency
|
179 |
-
wp_enqueue_script('ep-settings', EMBEDPRESS_URL_ASSETS .'js/settings.js',
|
|
|
180 |
|
181 |
-
$activeTab
|
182 |
-
$settingsFieldsIdentifier
|
183 |
-
$settingsSectionsIdentifier = !empty($activeTab) ? "embedpress:{$activeTab}" : self::$identifier;
|
184 |
?>
|
185 |
<div id="embedpress-settings-wrapper">
|
186 |
<header>
|
187 |
<h1 class="pressshack-title">
|
188 |
-
<a href="//wordpress.org/plugins/embedpress" target="_blank" rel="noopener noreferrer"
|
|
|
189 |
EmbedPress
|
190 |
</a>
|
191 |
</h1>
|
@@ -195,13 +200,15 @@ class Settings
|
|
195 |
|
196 |
<div>
|
197 |
<h2 class="nav-tab-wrapper">
|
198 |
-
<a href="?page=embedpress"
|
|
|
199 |
General settings
|
200 |
</a>
|
201 |
|
202 |
<?php do_action('embedpress:settings:render:tab', $activeTab); ?>
|
203 |
|
204 |
-
<a href="?page=embedpress&tab=addons"
|
|
|
205 |
Add-ons
|
206 |
</a>
|
207 |
</h2>
|
@@ -217,73 +224,77 @@ class Settings
|
|
217 |
|
218 |
<?php if ($activeTab === 'addons') : ?>
|
219 |
<?php
|
220 |
-
$icons_base_path = plugins_url(
|
221 |
|
222 |
-
$addons =
|
223 |
-
'embedpress-youtube' =>
|
224 |
-
'title' => __(
|
225 |
-
'description' => __(
|
|
|
226 |
'available' => true,
|
227 |
-
'installed' => static::is_plugin_installed(
|
228 |
-
'active' => static::is_plugin_active(
|
229 |
-
|
230 |
-
'embedpress-vimeo'
|
231 |
-
'title' => __(
|
232 |
-
'description' => __(
|
233 |
'available' => true,
|
234 |
-
'installed' => static::is_plugin_installed(
|
235 |
-
'active' => static::is_plugin_active(
|
236 |
-
|
237 |
-
'embedpress-wistia'
|
238 |
-
'title' => __(
|
239 |
-
'description' => __(
|
240 |
'available' => true,
|
241 |
-
'installed' => static::is_plugin_installed(
|
242 |
-
'active' => static::is_plugin_active(
|
243 |
-
|
244 |
-
|
245 |
|
246 |
-
$args =
|
247 |
'addons' => $addons,
|
248 |
'icons_base_path' => $icons_base_path,
|
249 |
-
'labels' =>
|
250 |
-
'active' => __(
|
251 |
-
'installed' => __(
|
252 |
-
'get_pro_addons' => __(
|
253 |
-
'coming_soon' => __(
|
254 |
-
|
255 |
-
|
256 |
|
257 |
?>
|
258 |
<div class="ep-module-settings">
|
259 |
<ul class="ep-block-addons-items">
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
272 |
<?php else: ?>
|
273 |
-
<
|
274 |
-
|
275 |
-
|
|
|
|
|
276 |
<?php endif; ?>
|
277 |
<?php else: ?>
|
278 |
-
<
|
279 |
-
<span class="dashicons dashicons-cart"></span> <?php echo __( 'Get Pro Add-ons!', 'embedpress' ); ?>
|
280 |
-
</a>
|
281 |
<?php endif; ?>
|
282 |
-
|
283 |
-
|
284 |
-
<?php endif; ?>
|
285 |
-
</li>
|
286 |
-
<?php endforeach; ?>
|
287 |
</ul>
|
288 |
</div>
|
289 |
<?php endif; ?>
|
@@ -291,25 +302,36 @@ class Settings
|
|
291 |
|
292 |
<footer>
|
293 |
<p>
|
294 |
-
<a href="//wordpress.org/support/plugin/embedpress/reviews/#new-post" target="_blank"
|
|
|
|
|
|
|
|
|
|
|
|
|
295 |
</p>
|
296 |
<hr>
|
297 |
<nav>
|
298 |
<ul>
|
299 |
<li>
|
300 |
-
<a href="//embedpress.com" target="_blank" rel="noopener noreferrer"
|
|
|
301 |
</li>
|
302 |
<li>
|
303 |
-
<a href="//embedpress.com/docs/sources-support" target="_blank" rel="noopener noreferrer"
|
|
|
304 |
</li>
|
305 |
<li>
|
306 |
-
<a href="//embedpress.com/docs" target="_blank" rel="noopener noreferrer"
|
|
|
307 |
</li>
|
308 |
<li>
|
309 |
-
<a href="//embedpress.com/addons/" target="_blank" rel="noopener noreferrer"
|
|
|
310 |
</li>
|
311 |
<li>
|
312 |
-
<a href="//embedpress.com/contact" target="_blank" rel="noopener noreferrer"
|
|
|
313 |
</li>
|
314 |
<li>
|
315 |
<a href="//twitter.com/embedpress" target="_blank" rel="noopener noreferrer">
|
@@ -339,17 +361,17 @@ class Settings
|
|
339 |
* @since 1.0.0
|
340 |
* @static
|
341 |
*
|
342 |
-
* @param mixed
|
343 |
*
|
344 |
* @return array
|
345 |
*/
|
346 |
public static function validateForm($freshData)
|
347 |
{
|
348 |
-
$data =
|
349 |
-
'enablePluginInAdmin' => (bool)$freshData['enablePluginInAdmin'],
|
350 |
-
'enablePluginInFront' => (bool)$freshData['enablePluginInFront'],
|
351 |
-
'fbLanguage' => $freshData['fbLanguage']
|
352 |
-
|
353 |
|
354 |
return $data;
|
355 |
}
|
@@ -366,11 +388,11 @@ class Settings
|
|
366 |
|
367 |
$options = get_option(self::$sectionGroupIdentifier);
|
368 |
|
369 |
-
$options[$fieldName] = !isset($options[$fieldName]) ? true : (bool)$options[$fieldName];
|
370 |
|
371 |
-
echo '<label><input type="radio" id="'. $fieldName .'_0" name="'. self::$sectionGroupIdentifier .'['. $fieldName .']" value="0" '. (
|
372 |
echo " ";
|
373 |
-
echo '<label><input type="radio" id="'. $fieldName .'_1" name="'. self::$sectionGroupIdentifier .'['. $fieldName .']" value="1" '. ($options[$fieldName] ? "checked" : "") .' /> Yes</label>';
|
374 |
echo '<p class="description">Do you want EmbedPress to run here in the admin area? Disabling this <strong>will not</strong> affect your frontend embeds.</p>';
|
375 |
}
|
376 |
|
@@ -386,11 +408,11 @@ class Settings
|
|
386 |
|
387 |
$options = get_option(self::$sectionGroupIdentifier);
|
388 |
|
389 |
-
$options[$fieldName] = !isset($options[$fieldName]) ? true : (bool)$options[$fieldName];
|
390 |
|
391 |
-
echo '<label><input type="radio" id="'. $fieldName .'_0" name="'. self::$sectionGroupIdentifier .'['. $fieldName .']" value="0" '. (
|
392 |
echo " ";
|
393 |
-
echo '<label><input type="radio" id="'. $fieldName .'_1" name="'. self::$sectionGroupIdentifier .'['. $fieldName .']" value="1" '. ($options[$fieldName] ? "checked" : "") .' /> Yes</label>';
|
394 |
echo '<p class="description">Do you want EmbedPress to run within editors in frontend (if there\'s any)? Disabling this <strong>will not</strong> affect embeds seem by your regular users in frontend.</p>';
|
395 |
}
|
396 |
|
@@ -406,15 +428,15 @@ class Settings
|
|
406 |
|
407 |
$options = get_option(self::$sectionGroupIdentifier);
|
408 |
|
409 |
-
$options[$fieldName] = !isset($options[$fieldName]) ? "" : $options[$fieldName];
|
410 |
|
411 |
$facebookLocales = self::getFacebookAvailableLocales();
|
412 |
|
413 |
-
echo '<select name="'. self::$sectionGroupIdentifier .'['. $fieldName .']">';
|
414 |
echo '<option value="0">Automatic (by Facebook)</option>';
|
415 |
echo '<optgroup label="Available">';
|
416 |
foreach ($facebookLocales as $locale => $localeName) {
|
417 |
-
echo '<option value="'. $locale .'"'. ($options[$fieldName] === $locale ? ' selected' : '') .'>'. $localeName .'</option>';
|
418 |
}
|
419 |
echo '</optgroup>';
|
420 |
echo '</select>';
|
@@ -432,7 +454,7 @@ class Settings
|
|
432 |
*/
|
433 |
public static function getFacebookAvailableLocales()
|
434 |
{
|
435 |
-
$locales =
|
436 |
'af_ZA' => "Afrikaans",
|
437 |
'ak_GH' => "Akan",
|
438 |
'am_ET' => "Amharic",
|
@@ -574,8 +596,8 @@ class Settings
|
|
574 |
'zh_HK' => "Traditional Chinese (Hong Kong)",
|
575 |
'zh_TW' => "Traditional Chinese (Taiwan)",
|
576 |
'zu_ZA' => "Zulu",
|
577 |
-
'zz_TR' => "Zazaki"
|
578 |
-
|
579 |
|
580 |
return $locales;
|
581 |
}
|
1 |
<?php
|
2 |
+
|
3 |
namespace EmbedPress\Ends\Back;
|
4 |
|
5 |
+
use EmbedPress\Compatibility;
|
6 |
|
7 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
8 |
|
25 |
* @access private
|
26 |
* @static
|
27 |
*
|
28 |
+
* @var string $namespace
|
29 |
*/
|
30 |
+
private static $namespace = '\\EmbedPress\\Ends\\Back\\Settings';
|
31 |
|
32 |
/**
|
33 |
* The plugin's unique identifier.
|
36 |
* @access private
|
37 |
* @static
|
38 |
*
|
39 |
+
* @var string $identifier
|
40 |
*/
|
41 |
private static $identifier = "plg_embedpress";
|
42 |
|
47 |
* @access private
|
48 |
* @static
|
49 |
*
|
50 |
+
* @var string $sectionAdminIdentifier
|
51 |
*/
|
52 |
private static $sectionAdminIdentifier = "embedpress_options_admin";
|
53 |
|
58 |
* @access private
|
59 |
* @static
|
60 |
*
|
61 |
+
* @var string $sectionGroupIdentifier The name of the plugin.
|
62 |
*/
|
63 |
private static $sectionGroupIdentifier = "embedpress";
|
64 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
/**
|
66 |
* Class constructor. This prevents the class being directly instantiated.
|
67 |
*
|
68 |
* @since 1.0.0
|
69 |
*/
|
70 |
public function __construct()
|
71 |
+
{
|
72 |
+
}
|
73 |
|
74 |
/**
|
75 |
* This prevents the class being cloned.
|
77 |
* @since 1.0.0
|
78 |
*/
|
79 |
public function __clone()
|
80 |
+
{
|
81 |
+
}
|
82 |
|
83 |
/**
|
84 |
* Method that adds an sub-item for EmbedPress to the WordPress Settings menu.
|
88 |
*/
|
89 |
public static function registerMenuItem()
|
90 |
{
|
91 |
+
add_menu_page('EmbedPress Settings', 'EmbedPress', 'manage_options', 'embedpress',
|
92 |
+
[self::$namespace, 'renderForm'], null, 64);
|
93 |
}
|
94 |
|
95 |
/**
|
107 |
$activeTab = "";
|
108 |
}
|
109 |
|
110 |
+
if ( ! empty($activeTab) && has_action($action)) {
|
111 |
+
do_action($action, [
|
112 |
'id' => self::$sectionAdminIdentifier,
|
113 |
+
'slug' => self::$identifier,
|
114 |
+
]);
|
115 |
} else {
|
116 |
+
register_setting(self::$sectionGroupIdentifier, self::$sectionGroupIdentifier,
|
117 |
+
[self::$namespace, "validateForm"]);
|
118 |
|
119 |
add_settings_section(self::$sectionAdminIdentifier, '', null, self::$identifier);
|
120 |
|
121 |
+
$fieldMap = [];
|
122 |
+
if ( ! Compatibility::isWordPress5() || Compatibility::isClassicalEditorActive()) {
|
123 |
+
$fieldMap = [
|
124 |
+
'enablePluginInAdmin' => [
|
125 |
+
'label' => "Load previews in the admin editor",
|
126 |
+
'section' => "admin",
|
127 |
+
],
|
128 |
+
'enablePluginInFront' => [
|
129 |
+
'label' => "Load previews in the frontend editor",
|
130 |
+
'section' => "admin",
|
131 |
+
],
|
132 |
+
];
|
133 |
+
}
|
134 |
+
|
135 |
+
$fieldMap['forceFacebookLanguage'] = [
|
136 |
+
'label' => "Facebook embed language",
|
137 |
+
'section' => "admin",
|
138 |
+
];
|
139 |
+
|
140 |
+
foreach ($fieldMap as $fieldName => $field) {
|
141 |
+
add_settings_field($fieldName, $field['label'], [self::$namespace, "renderField_{$fieldName}"],
|
142 |
+
self::$identifier, self::${"section" . ucfirst($field['section']) . "Identifier"});
|
143 |
}
|
144 |
}
|
145 |
}
|
147 |
/**
|
148 |
* Returns true if the plugin is active
|
149 |
*
|
150 |
+
* @param string $plugin
|
151 |
*
|
152 |
* @return boolean
|
153 |
*/
|
154 |
+
protected static function is_plugin_active($plugin)
|
155 |
+
{
|
156 |
+
return is_plugin_active("{$plugin}/{$plugin}.php");
|
157 |
}
|
158 |
|
159 |
/**
|
160 |
* Returns true if the plugin is installed
|
161 |
*
|
162 |
+
* @param string $plugin
|
163 |
*
|
164 |
* @return boolean
|
165 |
*/
|
166 |
+
protected static function is_plugin_installed($plugin)
|
167 |
+
{
|
168 |
+
return file_exists(plugin_dir_path(EMBEDPRESS_ROOT) . "{$plugin}/{$plugin}.php");
|
169 |
}
|
170 |
|
171 |
/**
|
179 |
// Add the color picker css file
|
180 |
wp_enqueue_style('wp-color-picker');
|
181 |
// Include our custom jQuery file with WordPress Color Picker dependency
|
182 |
+
wp_enqueue_script('ep-settings', EMBEDPRESS_URL_ASSETS . 'js/settings.js', ['wp-color-picker'],
|
183 |
+
EMBEDPRESS_VERSION, true);
|
184 |
|
185 |
+
$activeTab = isset($_GET['tab']) ? strtolower($_GET['tab']) : "";
|
186 |
+
$settingsFieldsIdentifier = ! empty($activeTab) ? "embedpress:{$activeTab}" : self::$sectionGroupIdentifier;
|
187 |
+
$settingsSectionsIdentifier = ! empty($activeTab) ? "embedpress:{$activeTab}" : self::$identifier;
|
188 |
?>
|
189 |
<div id="embedpress-settings-wrapper">
|
190 |
<header>
|
191 |
<h1 class="pressshack-title">
|
192 |
+
<a href="//wordpress.org/plugins/embedpress" target="_blank" rel="noopener noreferrer"
|
193 |
+
title="EmbedPress">
|
194 |
EmbedPress
|
195 |
</a>
|
196 |
</h1>
|
200 |
|
201 |
<div>
|
202 |
<h2 class="nav-tab-wrapper">
|
203 |
+
<a href="?page=embedpress"
|
204 |
+
class="nav-tab<?php echo $activeTab === 'embedpress' || empty($activeTab) ? ' nav-tab-active' : ''; ?> ">
|
205 |
General settings
|
206 |
</a>
|
207 |
|
208 |
<?php do_action('embedpress:settings:render:tab', $activeTab); ?>
|
209 |
|
210 |
+
<a href="?page=embedpress&tab=addons"
|
211 |
+
class="nav-tab<?php echo $activeTab === 'addons' ? ' nav-tab-active' : ''; ?> ">
|
212 |
Add-ons
|
213 |
</a>
|
214 |
</h2>
|
224 |
|
225 |
<?php if ($activeTab === 'addons') : ?>
|
226 |
<?php
|
227 |
+
$icons_base_path = plugins_url('embedpress') . '/assets/images/';
|
228 |
|
229 |
+
$addons = [
|
230 |
+
'embedpress-youtube' => [
|
231 |
+
'title' => __('The YouTube Add-on for EmbedPress', 'embedpress'),
|
232 |
+
'description' => __('Get more features for your YouTube embeds in WordPress.',
|
233 |
+
'embedpress'),
|
234 |
'available' => true,
|
235 |
+
'installed' => static::is_plugin_installed('embedpress-youtube'),
|
236 |
+
'active' => static::is_plugin_active('embedpress-youtube'),
|
237 |
+
],
|
238 |
+
'embedpress-vimeo' => [
|
239 |
+
'title' => __('The Vimeo Add-on for EmbedPress', 'embedpress'),
|
240 |
+
'description' => __('Get more features for your Vimeo embeds in WordPress.', 'embedpress'),
|
241 |
'available' => true,
|
242 |
+
'installed' => static::is_plugin_installed('embedpress-vimeo'),
|
243 |
+
'active' => static::is_plugin_active('embedpress-vimeo'),
|
244 |
+
],
|
245 |
+
'embedpress-wistia' => [
|
246 |
+
'title' => __('The Wistia Add-on for EmbedPress', 'embedpress'),
|
247 |
+
'description' => __('Get more features for your Wistia embeds in WordPress.', 'embedpress'),
|
248 |
'available' => true,
|
249 |
+
'installed' => static::is_plugin_installed('embedpress-wistia'),
|
250 |
+
'active' => static::is_plugin_active('embedpress-wistia'),
|
251 |
+
],
|
252 |
+
];
|
253 |
|
254 |
+
$args = [
|
255 |
'addons' => $addons,
|
256 |
'icons_base_path' => $icons_base_path,
|
257 |
+
'labels' => [
|
258 |
+
'active' => __('Active', 'publishpress'),
|
259 |
+
'installed' => __('Installed', 'publishpress'),
|
260 |
+
'get_pro_addons' => __('Get Pro Add-ons!', 'publishpress'),
|
261 |
+
'coming_soon' => __('Coming soon', 'publishpress'),
|
262 |
+
],
|
263 |
+
];
|
264 |
|
265 |
?>
|
266 |
<div class="ep-module-settings">
|
267 |
<ul class="ep-block-addons-items">
|
268 |
+
<?php foreach ($addons as $name => $addon): ?>
|
269 |
+
<li class="ep-block-addons-item ">
|
270 |
+
<img src="<?php echo $icons_base_path . $name; ?>.jpg">
|
271 |
+
<h3><?php echo $addon['title']; ?></h3>
|
272 |
+
<p><?php echo $addon['description']; ?></p>
|
273 |
+
|
274 |
+
<?php if ($addon['available']): ?>
|
275 |
+
<?php if ($addon['installed']): ?>
|
276 |
+
<?php if ($addon['active']): ?>
|
277 |
+
<div>
|
278 |
+
<span class="dashicons dashicons-yes"></span><span><?php echo __('Active',
|
279 |
+
'embedpress'); ?></span>
|
280 |
+
</div>
|
281 |
+
<?php else: ?>
|
282 |
+
<div>
|
283 |
+
<span><?php echo __('Installed', 'embedpress'); ?></span>
|
284 |
+
</div>
|
285 |
+
<?php endif; ?>
|
286 |
<?php else: ?>
|
287 |
+
<a href="https://embedpress.com/embedpress-addons/"
|
288 |
+
class="button button-primary">
|
289 |
+
<span class="dashicons dashicons-cart"></span> <?php echo __('Get Pro Add-ons!',
|
290 |
+
'embedpress'); ?>
|
291 |
+
</a>
|
292 |
<?php endif; ?>
|
293 |
<?php else: ?>
|
294 |
+
<div><?php echo __('Coming soon', 'embedpress'); ?></div>
|
|
|
|
|
295 |
<?php endif; ?>
|
296 |
+
</li>
|
297 |
+
<?php endforeach; ?>
|
|
|
|
|
|
|
298 |
</ul>
|
299 |
</div>
|
300 |
<?php endif; ?>
|
302 |
|
303 |
<footer>
|
304 |
<p>
|
305 |
+
<a href="//wordpress.org/support/plugin/embedpress/reviews/#new-post" target="_blank"
|
306 |
+
rel="noopener noreferrer">If you like <strong>EmbedPress</strong> please leave us a <span
|
307 |
+
class="dashicons dashicons-star-filled"></span><span
|
308 |
+
class="dashicons dashicons-star-filled"></span><span
|
309 |
+
class="dashicons dashicons-star-filled"></span><span
|
310 |
+
class="dashicons dashicons-star-filled"></span><span
|
311 |
+
class="dashicons dashicons-star-filled"></span> rating. Thank you!</a>
|
312 |
</p>
|
313 |
<hr>
|
314 |
<nav>
|
315 |
<ul>
|
316 |
<li>
|
317 |
+
<a href="//embedpress.com" target="_blank" rel="noopener noreferrer"
|
318 |
+
title="About EmbedPress">About</a>
|
319 |
</li>
|
320 |
<li>
|
321 |
+
<a href="//embedpress.com/docs/sources-support" target="_blank" rel="noopener noreferrer"
|
322 |
+
title="List of supported sources by EmbedPress">Supported sources</a>
|
323 |
</li>
|
324 |
<li>
|
325 |
+
<a href="//embedpress.com/docs" target="_blank" rel="noopener noreferrer"
|
326 |
+
title="EmbedPress Documentation">Documentation</a>
|
327 |
</li>
|
328 |
<li>
|
329 |
+
<a href="//embedpress.com/addons/" target="_blank" rel="noopener noreferrer"
|
330 |
+
title="EmbedPress Add-Ons">Add-Ons</a>
|
331 |
</li>
|
332 |
<li>
|
333 |
+
<a href="//embedpress.com/contact" target="_blank" rel="noopener noreferrer"
|
334 |
+
title="Contact the EmbedPress team">Contact</a>
|
335 |
</li>
|
336 |
<li>
|
337 |
<a href="//twitter.com/embedpress" target="_blank" rel="noopener noreferrer">
|
361 |
* @since 1.0.0
|
362 |
* @static
|
363 |
*
|
364 |
+
* @param mixed $freshData Data received from the form.
|
365 |
*
|
366 |
* @return array
|
367 |
*/
|
368 |
public static function validateForm($freshData)
|
369 |
{
|
370 |
+
$data = [
|
371 |
+
'enablePluginInAdmin' => isset($freshData['enablePluginInAdmin']) ? (bool)$freshData['enablePluginInAdmin'] : true,
|
372 |
+
'enablePluginInFront' => isset($freshData['enablePluginInFront']) ? (bool)$freshData['enablePluginInFront'] : true,
|
373 |
+
'fbLanguage' => $freshData['fbLanguage'],
|
374 |
+
];
|
375 |
|
376 |
return $data;
|
377 |
}
|
388 |
|
389 |
$options = get_option(self::$sectionGroupIdentifier);
|
390 |
|
391 |
+
$options[$fieldName] = ! isset($options[$fieldName]) ? true : (bool)$options[$fieldName];
|
392 |
|
393 |
+
echo '<label><input type="radio" id="' . $fieldName . '_0" name="' . self::$sectionGroupIdentifier . '[' . $fieldName . ']" value="0" ' . (! $options[$fieldName] ? "checked" : "") . ' /> No</label>';
|
394 |
echo " ";
|
395 |
+
echo '<label><input type="radio" id="' . $fieldName . '_1" name="' . self::$sectionGroupIdentifier . '[' . $fieldName . ']" value="1" ' . ($options[$fieldName] ? "checked" : "") . ' /> Yes</label>';
|
396 |
echo '<p class="description">Do you want EmbedPress to run here in the admin area? Disabling this <strong>will not</strong> affect your frontend embeds.</p>';
|
397 |
}
|
398 |
|
408 |
|
409 |
$options = get_option(self::$sectionGroupIdentifier);
|
410 |
|
411 |
+
$options[$fieldName] = ! isset($options[$fieldName]) ? true : (bool)$options[$fieldName];
|
412 |
|
413 |
+
echo '<label><input type="radio" id="' . $fieldName . '_0" name="' . self::$sectionGroupIdentifier . '[' . $fieldName . ']" value="0" ' . (! $options[$fieldName] ? "checked" : "") . ' /> No</label>';
|
414 |
echo " ";
|
415 |
+
echo '<label><input type="radio" id="' . $fieldName . '_1" name="' . self::$sectionGroupIdentifier . '[' . $fieldName . ']" value="1" ' . ($options[$fieldName] ? "checked" : "") . ' /> Yes</label>';
|
416 |
echo '<p class="description">Do you want EmbedPress to run within editors in frontend (if there\'s any)? Disabling this <strong>will not</strong> affect embeds seem by your regular users in frontend.</p>';
|
417 |
}
|
418 |
|
428 |
|
429 |
$options = get_option(self::$sectionGroupIdentifier);
|
430 |
|
431 |
+
$options[$fieldName] = ! isset($options[$fieldName]) ? "" : $options[$fieldName];
|
432 |
|
433 |
$facebookLocales = self::getFacebookAvailableLocales();
|
434 |
|
435 |
+
echo '<select name="' . self::$sectionGroupIdentifier . '[' . $fieldName . ']">';
|
436 |
echo '<option value="0">Automatic (by Facebook)</option>';
|
437 |
echo '<optgroup label="Available">';
|
438 |
foreach ($facebookLocales as $locale => $localeName) {
|
439 |
+
echo '<option value="' . $locale . '"' . ($options[$fieldName] === $locale ? ' selected' : '') . '>' . $localeName . '</option>';
|
440 |
}
|
441 |
echo '</optgroup>';
|
442 |
echo '</select>';
|
454 |
*/
|
455 |
public static function getFacebookAvailableLocales()
|
456 |
{
|
457 |
+
$locales = [
|
458 |
'af_ZA' => "Afrikaans",
|
459 |
'ak_GH' => "Akan",
|
460 |
'am_ET' => "Amharic",
|
596 |
'zh_HK' => "Traditional Chinese (Hong Kong)",
|
597 |
'zh_TW' => "Traditional Chinese (Taiwan)",
|
598 |
'zu_ZA' => "Zulu",
|
599 |
+
'zz_TR' => "Zazaki",
|
600 |
+
];
|
601 |
|
602 |
return $locales;
|
603 |
}
|
EmbedPress/Ends/Back/index.html
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
</html>
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
+
<head>
|
4 |
+
<title>403 Forbidden</title>
|
5 |
+
</head>
|
6 |
+
<body>
|
7 |
+
<p>Directory access is forbidden.</p>
|
8 |
+
</body>
|
9 |
</html>
|
EmbedPress/Ends/Front/Handler.php
CHANGED
@@ -1,10 +1,11 @@
|
|
1 |
<?php
|
|
|
2 |
namespace EmbedPress\Ends\Front;
|
3 |
|
4 |
-
use
|
5 |
-
use
|
6 |
-
use
|
7 |
-
use
|
8 |
|
9 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
10 |
|
@@ -31,7 +32,7 @@ class Handler extends EndHandlerAbstract
|
|
31 |
*/
|
32 |
public static function enqueueStyles()
|
33 |
{
|
34 |
-
wp_enqueue_style(EMBEDPRESS_PLG_NAME, EMBEDPRESS_URL_ASSETS .'css/embedpress.css');
|
35 |
}
|
36 |
|
37 |
/**
|
@@ -40,23 +41,24 @@ class Handler extends EndHandlerAbstract
|
|
40 |
* @since 1.5.0
|
41 |
* @static
|
42 |
*
|
43 |
-
* @param string
|
44 |
*
|
45 |
* @return string The potentially modified content.
|
46 |
*/
|
47 |
public static function autoEmbedUrls($content)
|
48 |
{
|
49 |
// Replace line breaks from all HTML elements with placeholders.
|
50 |
-
$content = wp_replace_in_html_tags($content,
|
51 |
|
52 |
// Look for links in the content (not wrapped by shortcode)
|
53 |
if (preg_match('#(^|\s|>)https?://#i', $content)) {
|
54 |
-
$callbackFingerprint =
|
55 |
|
56 |
// Find URLs on their own line.
|
57 |
$content = preg_replace_callback('|^(\s*)(https?://[^\s<>"]+)(\s*)$|im', $callbackFingerprint, $content);
|
58 |
// Find URLs in their own paragraph.
|
59 |
-
$content = preg_replace_callback('|(<p(?: [^>]*)?>\s*)(https?://[^\s<>"]+)(\s*<\/p>)|i',
|
|
|
60 |
}
|
61 |
|
62 |
// Put the line breaks back.
|
@@ -69,12 +71,13 @@ class Handler extends EndHandlerAbstract
|
|
69 |
* @since 1.5.0
|
70 |
* @static
|
71 |
*
|
72 |
-
* @param array
|
73 |
*
|
74 |
* @return string The embed HTML on success, otherwise the original URL.
|
75 |
*/
|
76 |
-
public static function autoEmbedUrlsCallback($match)
|
77 |
-
|
|
|
78 |
|
79 |
return $match[1] . $return . $match[3];
|
80 |
}
|
@@ -85,7 +88,7 @@ class Handler extends EndHandlerAbstract
|
|
85 |
* @since 1.6.0
|
86 |
* @static
|
87 |
*
|
88 |
-
* @param string
|
89 |
*
|
90 |
* @return string The HTML which will be rendered as an editor, like TinyMCE
|
91 |
*/
|
@@ -93,8 +96,8 @@ class Handler extends EndHandlerAbstract
|
|
93 |
{
|
94 |
$plgSettings = Core::getSettings();
|
95 |
|
96 |
-
if (!is_admin() && (bool)$plgSettings->enablePluginInFront) {
|
97 |
-
$backEndHandler = new BackEndHandler(EMBEDPRESS_PLG_NAME,
|
98 |
|
99 |
$backEndHandler->enqueueScripts();
|
100 |
}
|
1 |
<?php
|
2 |
+
|
3 |
namespace EmbedPress\Ends\Front;
|
4 |
|
5 |
+
use EmbedPress\Core;
|
6 |
+
use EmbedPress\Ends\Back\Handler as BackEndHandler;
|
7 |
+
use EmbedPress\Ends\Handler as EndHandlerAbstract;
|
8 |
+
use EmbedPress\Shortcode;
|
9 |
|
10 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
11 |
|
32 |
*/
|
33 |
public static function enqueueStyles()
|
34 |
{
|
35 |
+
wp_enqueue_style(EMBEDPRESS_PLG_NAME, EMBEDPRESS_URL_ASSETS . 'css/embedpress.css');
|
36 |
}
|
37 |
|
38 |
/**
|
41 |
* @since 1.5.0
|
42 |
* @static
|
43 |
*
|
44 |
+
* @param string $content The content to be searched.
|
45 |
*
|
46 |
* @return string The potentially modified content.
|
47 |
*/
|
48 |
public static function autoEmbedUrls($content)
|
49 |
{
|
50 |
// Replace line breaks from all HTML elements with placeholders.
|
51 |
+
$content = wp_replace_in_html_tags($content, ["\n" => '<!-- embedpress-line-break -->']);
|
52 |
|
53 |
// Look for links in the content (not wrapped by shortcode)
|
54 |
if (preg_match('#(^|\s|>)https?://#i', $content)) {
|
55 |
+
$callbackFingerprint = ['\\EmbedPress\\Ends\\Front\\Handler', 'autoEmbedUrlsCallback'];
|
56 |
|
57 |
// Find URLs on their own line.
|
58 |
$content = preg_replace_callback('|^(\s*)(https?://[^\s<>"]+)(\s*)$|im', $callbackFingerprint, $content);
|
59 |
// Find URLs in their own paragraph.
|
60 |
+
$content = preg_replace_callback('|(<p(?: [^>]*)?>\s*)(https?://[^\s<>"]+)(\s*<\/p>)|i',
|
61 |
+
$callbackFingerprint, $content);
|
62 |
}
|
63 |
|
64 |
// Put the line breaks back.
|
71 |
* @since 1.5.0
|
72 |
* @static
|
73 |
*
|
74 |
+
* @param array $match A regex match array.
|
75 |
*
|
76 |
* @return string The embed HTML on success, otherwise the original URL.
|
77 |
*/
|
78 |
+
public static function autoEmbedUrlsCallback($match)
|
79 |
+
{
|
80 |
+
$return = Shortcode::do_shortcode([], $match[2]);
|
81 |
|
82 |
return $match[1] . $return . $match[3];
|
83 |
}
|
88 |
* @since 1.6.0
|
89 |
* @static
|
90 |
*
|
91 |
+
* @param string $editorHTML The HTML which will be rendered as an editor, like TinyMCE.
|
92 |
*
|
93 |
* @return string The HTML which will be rendered as an editor, like TinyMCE
|
94 |
*/
|
96 |
{
|
97 |
$plgSettings = Core::getSettings();
|
98 |
|
99 |
+
if ( ! is_admin() && (bool)$plgSettings->enablePluginInFront) {
|
100 |
+
$backEndHandler = new BackEndHandler(EMBEDPRESS_PLG_NAME, EMBEDPRESS_VERSION);
|
101 |
|
102 |
$backEndHandler->enqueueScripts();
|
103 |
}
|
EmbedPress/Ends/Front/index.html
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
</html>
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
+
<head>
|
4 |
+
<title>403 Forbidden</title>
|
5 |
+
</head>
|
6 |
+
<body>
|
7 |
+
<p>Directory access is forbidden.</p>
|
8 |
+
</body>
|
9 |
</html>
|
EmbedPress/Ends/Handler.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
namespace EmbedPress\Ends;
|
3 |
|
4 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
@@ -21,7 +22,7 @@ abstract class Handler
|
|
21 |
* @since 1.0.0
|
22 |
* @access private
|
23 |
*
|
24 |
-
* @var string
|
25 |
*/
|
26 |
protected $pluginName;
|
27 |
|
@@ -31,7 +32,7 @@ abstract class Handler
|
|
31 |
* @since 1.0.0
|
32 |
* @access private
|
33 |
*
|
34 |
-
* @var string
|
35 |
*/
|
36 |
protected $pluginVersion;
|
37 |
|
@@ -40,13 +41,14 @@ abstract class Handler
|
|
40 |
*
|
41 |
* @since 1.0.0
|
42 |
*
|
43 |
-
* @param string
|
44 |
-
* @param string
|
|
|
45 |
* @return void
|
46 |
*/
|
47 |
public function __construct($pluginName, $pluginVersion)
|
48 |
{
|
49 |
-
$this->pluginName
|
50 |
$this->pluginVersion = $pluginVersion;
|
51 |
}
|
52 |
|
@@ -58,7 +60,8 @@ abstract class Handler
|
|
58 |
* @return void
|
59 |
*/
|
60 |
public function enqueueScripts()
|
61 |
-
{
|
|
|
62 |
|
63 |
/**
|
64 |
* Method that register all stylesheets for the admin area.
|
@@ -69,5 +72,6 @@ abstract class Handler
|
|
69 |
* @return void
|
70 |
*/
|
71 |
public static function enqueueStyles()
|
72 |
-
{
|
|
|
73 |
}
|
1 |
<?php
|
2 |
+
|
3 |
namespace EmbedPress\Ends;
|
4 |
|
5 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
22 |
* @since 1.0.0
|
23 |
* @access private
|
24 |
*
|
25 |
+
* @var string $pluginName The name of the plugin.
|
26 |
*/
|
27 |
protected $pluginName;
|
28 |
|
32 |
* @since 1.0.0
|
33 |
* @access private
|
34 |
*
|
35 |
+
* @var string $pluginVersion The version of the plugin.
|
36 |
*/
|
37 |
protected $pluginVersion;
|
38 |
|
41 |
*
|
42 |
* @since 1.0.0
|
43 |
*
|
44 |
+
* @param string $pluginName - The name of the plugin.
|
45 |
+
* @param string $pluginVersion - The version of the plugin.
|
46 |
+
*
|
47 |
* @return void
|
48 |
*/
|
49 |
public function __construct($pluginName, $pluginVersion)
|
50 |
{
|
51 |
+
$this->pluginName = $pluginName;
|
52 |
$this->pluginVersion = $pluginVersion;
|
53 |
}
|
54 |
|
60 |
* @return void
|
61 |
*/
|
62 |
public function enqueueScripts()
|
63 |
+
{
|
64 |
+
}
|
65 |
|
66 |
/**
|
67 |
* Method that register all stylesheets for the admin area.
|
72 |
* @return void
|
73 |
*/
|
74 |
public static function enqueueStyles()
|
75 |
+
{
|
76 |
+
}
|
77 |
}
|
EmbedPress/Ends/index.html
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
</html>
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
+
<head>
|
4 |
+
<title>403 Forbidden</title>
|
5 |
+
</head>
|
6 |
+
<body>
|
7 |
+
<p>Directory access is forbidden.</p>
|
8 |
+
</body>
|
9 |
</html>
|
EmbedPress/Loader.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
namespace EmbedPress;
|
3 |
|
4 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
@@ -20,7 +21,7 @@ class Loader
|
|
20 |
* @since 1.0.0
|
21 |
* @access protected
|
22 |
*
|
23 |
-
* @var array
|
24 |
*/
|
25 |
protected $actions;
|
26 |
|
@@ -30,7 +31,7 @@ class Loader
|
|
30 |
* @since 1.0.0
|
31 |
* @access protected
|
32 |
*
|
33 |
-
* @var array $filters
|
34 |
*/
|
35 |
protected $filters;
|
36 |
|
@@ -43,8 +44,8 @@ class Loader
|
|
43 |
*/
|
44 |
public function __construct()
|
45 |
{
|
46 |
-
$this->actions =
|
47 |
-
$this->filters =
|
48 |
}
|
49 |
|
50 |
/**
|
@@ -52,11 +53,13 @@ class Loader
|
|
52 |
*
|
53 |
* @since 1.0.0
|
54 |
*
|
55 |
-
* @param string
|
56 |
-
* @param object
|
57 |
-
* @param string
|
58 |
-
* @param int
|
59 |
-
* @param int
|
|
|
|
|
60 |
* @return void
|
61 |
*/
|
62 |
public function add_action($hook, $component, $callback, $priority = 10, $accepted_args = 1)
|
@@ -69,11 +72,13 @@ class Loader
|
|
69 |
*
|
70 |
* @since 1.0.0
|
71 |
*
|
72 |
-
* @param string
|
73 |
-
* @param object
|
74 |
-
* @param string
|
75 |
-
* @param int
|
76 |
-
* @param int
|
|
|
|
|
77 |
* @return void
|
78 |
*/
|
79 |
public function add_filter($hook, $component, $callback, $priority = 10, $accepted_args = 1)
|
@@ -87,23 +92,24 @@ class Loader
|
|
87 |
* @since 1.0.0
|
88 |
* @access private
|
89 |
*
|
90 |
-
* @param array
|
91 |
-
* @param string
|
92 |
-
* @param object
|
93 |
-
* @param string
|
94 |
-
* @param int
|
95 |
-
* @param int
|
|
|
96 |
* @return array The collection of actions and filters registered with WordPress.
|
97 |
*/
|
98 |
private function add($hooks, $hook, $component, $callback, $priority, $accepted_args)
|
99 |
{
|
100 |
-
$hooks[] =
|
101 |
'hook' => $hook,
|
102 |
'component' => $component,
|
103 |
'callback' => $callback,
|
104 |
'priority' => $priority,
|
105 |
-
'accepted_args' => $accepted_args
|
106 |
-
|
107 |
|
108 |
return $hooks;
|
109 |
}
|
@@ -118,15 +124,17 @@ class Loader
|
|
118 |
public function run()
|
119 |
{
|
120 |
foreach ($this->filters as $hook) {
|
121 |
-
add_filter($hook['hook'],
|
122 |
-
$hook['component'],
|
123 |
-
|
|
|
124 |
}
|
125 |
|
126 |
foreach ($this->actions as $hook) {
|
127 |
-
add_action($hook['hook'],
|
128 |
-
$hook['component'],
|
129 |
-
|
|
|
130 |
}
|
131 |
}
|
132 |
}
|
1 |
<?php
|
2 |
+
|
3 |
namespace EmbedPress;
|
4 |
|
5 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
21 |
* @since 1.0.0
|
22 |
* @access protected
|
23 |
*
|
24 |
+
* @var array $actions The actions registered with WordPress to fire when the plugin loads.
|
25 |
*/
|
26 |
protected $actions;
|
27 |
|
31 |
* @since 1.0.0
|
32 |
* @access protected
|
33 |
*
|
34 |
+
* @var array $filters The filters registered with WordPress to fire when the plugin loads.
|
35 |
*/
|
36 |
protected $filters;
|
37 |
|
44 |
*/
|
45 |
public function __construct()
|
46 |
{
|
47 |
+
$this->actions = [];
|
48 |
+
$this->filters = [];
|
49 |
}
|
50 |
|
51 |
/**
|
53 |
*
|
54 |
* @since 1.0.0
|
55 |
*
|
56 |
+
* @param string $hook The name of the WordPress action that is being registered.
|
57 |
+
* @param object $component A reference to the instance of the object on which the action is defined.
|
58 |
+
* @param string $callback The name of the function definition on the $component.
|
59 |
+
* @param int $priority Optional. he priority at which the function should be fired. Default is 10.
|
60 |
+
* @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default
|
61 |
+
* is 1.
|
62 |
+
*
|
63 |
* @return void
|
64 |
*/
|
65 |
public function add_action($hook, $component, $callback, $priority = 10, $accepted_args = 1)
|
72 |
*
|
73 |
* @since 1.0.0
|
74 |
*
|
75 |
+
* @param string $hook The name of the WordPress filter that is being registered.
|
76 |
+
* @param object $component A reference to the instance of the object on which the filter is defined.
|
77 |
+
* @param string $callback The name of the function definition on the $component.
|
78 |
+
* @param int $priority Optional. he priority at which the function should be fired. Default is 10.
|
79 |
+
* @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default
|
80 |
+
* is 1.
|
81 |
+
*
|
82 |
* @return void
|
83 |
*/
|
84 |
public function add_filter($hook, $component, $callback, $priority = 10, $accepted_args = 1)
|
92 |
* @since 1.0.0
|
93 |
* @access private
|
94 |
*
|
95 |
+
* @param array $hooks The collection of hooks that is being registered (that is, actions or filters).
|
96 |
+
* @param string $hook The name of the WordPress filter that is being registered.
|
97 |
+
* @param object $component A reference to the instance of the object on which the filter is defined.
|
98 |
+
* @param string $callback The name of the function definition on the $component.
|
99 |
+
* @param int $priority The priority at which the function should be fired.
|
100 |
+
* @param int $accepted_args The number of arguments that should be passed to the $callback.
|
101 |
+
*
|
102 |
* @return array The collection of actions and filters registered with WordPress.
|
103 |
*/
|
104 |
private function add($hooks, $hook, $component, $callback, $priority, $accepted_args)
|
105 |
{
|
106 |
+
$hooks[] = [
|
107 |
'hook' => $hook,
|
108 |
'component' => $component,
|
109 |
'callback' => $callback,
|
110 |
'priority' => $priority,
|
111 |
+
'accepted_args' => $accepted_args,
|
112 |
+
];
|
113 |
|
114 |
return $hooks;
|
115 |
}
|
124 |
public function run()
|
125 |
{
|
126 |
foreach ($this->filters as $hook) {
|
127 |
+
add_filter($hook['hook'], [
|
128 |
+
$hook['component'],
|
129 |
+
$hook['callback'],
|
130 |
+
], $hook['priority'], $hook['accepted_args']);
|
131 |
}
|
132 |
|
133 |
foreach ($this->actions as $hook) {
|
134 |
+
add_action($hook['hook'], [
|
135 |
+
$hook['component'],
|
136 |
+
$hook['callback'],
|
137 |
+
], $hook['priority'], $hook['accepted_args']);
|
138 |
}
|
139 |
}
|
140 |
}
|
EmbedPress/Plugins/Html/Field.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
namespace EmbedPress\Plugins\Html;
|
3 |
|
4 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
@@ -12,7 +13,6 @@ namespace EmbedPress\Plugins\Html;
|
|
12 |
* @license GPLv2 or later
|
13 |
* @since 1.4.0
|
14 |
*/
|
15 |
-
|
16 |
class Field
|
17 |
{
|
18 |
/**
|
@@ -26,7 +26,7 @@ class Field
|
|
26 |
*/
|
27 |
protected static function text($value)
|
28 |
{
|
29 |
-
$html = '<input type="text" name="embedpress:{{slug}}[{{name}}]" class="{{classes}}" placeholder="{{placeholder}}" value="'. (string)$value .'">';
|
30 |
|
31 |
return $html;
|
32 |
}
|
@@ -42,7 +42,7 @@ class Field
|
|
42 |
*/
|
43 |
protected static function textarea($value)
|
44 |
{
|
45 |
-
$html = '<textarea name="embedpress:{{slug}}[{{name}}]" class="{{classes}}" placeholder="{{placeholder}}">'. (string)$value .'</textarea>';
|
46 |
|
47 |
return $html;
|
48 |
}
|
@@ -58,12 +58,12 @@ class Field
|
|
58 |
*/
|
59 |
protected static function radio($options, $value = null)
|
60 |
{
|
61 |
-
$html =
|
62 |
|
63 |
foreach ((array)$options as $optionValue => $optionLabel) {
|
64 |
$html[] = '<label>';
|
65 |
-
$html[] = '<input type="radio" name="embedpress:{{slug}}[{{name}}]" class="{{classes}}" value="'. $optionValue .'"'. ($value === $optionValue ? ' checked' : '') .'>';
|
66 |
-
$html[] = ' '. $optionLabel;
|
67 |
$html[] = '</label> ';
|
68 |
}
|
69 |
|
@@ -83,10 +83,10 @@ class Field
|
|
83 |
*/
|
84 |
protected static function select($options, $value = null)
|
85 |
{
|
86 |
-
$html =
|
87 |
|
88 |
foreach ((array)$options as $optionValue => $optionLabel) {
|
89 |
-
$html[] = '<option value="'. $optionValue .'"'. ($value === (string)$optionValue ? ' selected' : '') .'>'. $optionLabel .'</option>';
|
90 |
}
|
91 |
|
92 |
$html[] = '</select>';
|
@@ -102,7 +102,9 @@ class Field
|
|
102 |
* @since 1.4.0
|
103 |
* @static
|
104 |
*
|
105 |
-
* @param array
|
|
|
|
|
106 |
* @return void
|
107 |
*/
|
108 |
public static function render($params)
|
@@ -121,14 +123,14 @@ class Field
|
|
121 |
$value = isset($options[$field->slug]) ? $options[$field->slug] : (isset($field->default) ? $field->default : '');
|
122 |
}
|
123 |
|
124 |
-
if (in_array($field->type,
|
125 |
-
$html = self::radio(
|
126 |
0 => 'No',
|
127 |
-
1 => 'Yes'
|
128 |
-
|
129 |
-
}
|
130 |
$html = self::select((array)$field->options, (string)$value);
|
131 |
-
}
|
132 |
$html = self::textarea((string)$value);
|
133 |
} else {
|
134 |
$html = self::text((string)$value);
|
@@ -136,13 +138,15 @@ class Field
|
|
136 |
|
137 |
$html = str_replace('{{slug}}', $params['pluginSlug'], $html);
|
138 |
$html = str_replace('{{name}}', $field->slug, $html);
|
139 |
-
$html = str_replace('{{classes}}', implode(' ', (!empty($field->classes) ? (array)$field->classes :
|
140 |
-
|
|
|
|
|
141 |
|
142 |
$html .= wp_nonce_field("{$pluginSlug}:nonce", "{$pluginSlug}:nonce");
|
143 |
|
144 |
if ($field->slug === "license_key") {
|
145 |
-
$licenseStatusClass
|
146 |
$currentLicenseStatus = isset($options['license']['status']) ? trim(strtoupper($options['license']['status'])) : "";
|
147 |
switch ($currentLicenseStatus) {
|
148 |
case '':
|
@@ -168,7 +172,7 @@ class Field
|
|
168 |
$licenseStatusMessage = "Your license key has reached its activation limit";
|
169 |
break;
|
170 |
case 'VALID':
|
171 |
-
$licenseStatusClass
|
172 |
$licenseStatusMessage = "Activated";
|
173 |
break;
|
174 |
default:
|
@@ -176,19 +180,19 @@ class Field
|
|
176 |
break;
|
177 |
}
|
178 |
|
179 |
-
$html .= '<br/><br/><strong>Status: <span class="'. $licenseStatusClass .'">'. __($licenseStatusMessage) .'</span>.</strong><br/><br/>';
|
180 |
|
181 |
-
if (!(isset($options['license']['status']) && $options['license']['status'] === 'valid')) {
|
182 |
-
$html .= '<a href="'. EMBEDPRESS_LICENSES_MORE_INFO_URL .'" target="_blank" class="ep-small-link ep-small-spacing" rel="noopener noreferrer" style="display: inline-block; margin-left: 20px;" title="'. __('Click here to read more about licenses.') .'">' . __('More information') . '</a>';
|
183 |
$html .= '<br/><br/>';
|
184 |
}
|
185 |
|
186 |
$html .= '<hr>';
|
187 |
}
|
188 |
|
189 |
-
if (!empty($field->description)) {
|
190 |
$html .= '<br/>';
|
191 |
-
$html .= '<p class="description">'. $field->description .'</p>';
|
192 |
}
|
193 |
|
194 |
echo $html;
|
1 |
<?php
|
2 |
+
|
3 |
namespace EmbedPress\Plugins\Html;
|
4 |
|
5 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
13 |
* @license GPLv2 or later
|
14 |
* @since 1.4.0
|
15 |
*/
|
|
|
16 |
class Field
|
17 |
{
|
18 |
/**
|
26 |
*/
|
27 |
protected static function text($value)
|
28 |
{
|
29 |
+
$html = '<input type="text" name="embedpress:{{slug}}[{{name}}]" class="{{classes}}" placeholder="{{placeholder}}" value="' . (string)$value . '">';
|
30 |
|
31 |
return $html;
|
32 |
}
|
42 |
*/
|
43 |
protected static function textarea($value)
|
44 |
{
|
45 |
+
$html = '<textarea name="embedpress:{{slug}}[{{name}}]" class="{{classes}}" placeholder="{{placeholder}}">' . (string)$value . '</textarea>';
|
46 |
|
47 |
return $html;
|
48 |
}
|
58 |
*/
|
59 |
protected static function radio($options, $value = null)
|
60 |
{
|
61 |
+
$html = [];
|
62 |
|
63 |
foreach ((array)$options as $optionValue => $optionLabel) {
|
64 |
$html[] = '<label>';
|
65 |
+
$html[] = '<input type="radio" name="embedpress:{{slug}}[{{name}}]" class="{{classes}}" value="' . $optionValue . '"' . ($value === $optionValue ? ' checked' : '') . '>';
|
66 |
+
$html[] = ' ' . $optionLabel;
|
67 |
$html[] = '</label> ';
|
68 |
}
|
69 |
|
83 |
*/
|
84 |
protected static function select($options, $value = null)
|
85 |
{
|
86 |
+
$html = ['<select name="embedpress:{{slug}}[{{name}}]" class="{{classes}}">'];
|
87 |
|
88 |
foreach ((array)$options as $optionValue => $optionLabel) {
|
89 |
+
$html[] = '<option value="' . $optionValue . '"' . ($value === (string)$optionValue ? ' selected' : '') . '>' . $optionLabel . '</option>';
|
90 |
}
|
91 |
|
92 |
$html[] = '</select>';
|
102 |
* @since 1.4.0
|
103 |
* @static
|
104 |
*
|
105 |
+
* @param array $params There's two available keys: 'field' which holds the field schema; and 'pluginSlug' which
|
106 |
+
* represents the slug of the plugin where the field belongs to.
|
107 |
+
*
|
108 |
* @return void
|
109 |
*/
|
110 |
public static function render($params)
|
123 |
$value = isset($options[$field->slug]) ? $options[$field->slug] : (isset($field->default) ? $field->default : '');
|
124 |
}
|
125 |
|
126 |
+
if (in_array($field->type, ['bool', 'boolean'])) {
|
127 |
+
$html = self::radio([
|
128 |
0 => 'No',
|
129 |
+
1 => 'Yes',
|
130 |
+
], (int)$value);
|
131 |
+
} elseif (isset($field->options)) {
|
132 |
$html = self::select((array)$field->options, (string)$value);
|
133 |
+
} elseif (in_array($field->type, ['textarea'])) {
|
134 |
$html = self::textarea((string)$value);
|
135 |
} else {
|
136 |
$html = self::text((string)$value);
|
138 |
|
139 |
$html = str_replace('{{slug}}', $params['pluginSlug'], $html);
|
140 |
$html = str_replace('{{name}}', $field->slug, $html);
|
141 |
+
$html = str_replace('{{classes}}', implode(' ', (! empty($field->classes) ? (array)$field->classes : [])),
|
142 |
+
$html);
|
143 |
+
$html = str_replace('{{placeholder}}', (! empty($field->placeholder) ? (string)$field->placeholder : ""),
|
144 |
+
$html);
|
145 |
|
146 |
$html .= wp_nonce_field("{$pluginSlug}:nonce", "{$pluginSlug}:nonce");
|
147 |
|
148 |
if ($field->slug === "license_key") {
|
149 |
+
$licenseStatusClass = "ep-label-danger";
|
150 |
$currentLicenseStatus = isset($options['license']['status']) ? trim(strtoupper($options['license']['status'])) : "";
|
151 |
switch ($currentLicenseStatus) {
|
152 |
case '':
|
172 |
$licenseStatusMessage = "Your license key has reached its activation limit";
|
173 |
break;
|
174 |
case 'VALID':
|
175 |
+
$licenseStatusClass = "ep-label-success";
|
176 |
$licenseStatusMessage = "Activated";
|
177 |
break;
|
178 |
default:
|
180 |
break;
|
181 |
}
|
182 |
|
183 |
+
$html .= '<br/><br/><strong>Status: <span class="' . $licenseStatusClass . '">' . __($licenseStatusMessage) . '</span>.</strong><br/><br/>';
|
184 |
|
185 |
+
if ( ! (isset($options['license']['status']) && $options['license']['status'] === 'valid')) {
|
186 |
+
$html .= '<a href="' . EMBEDPRESS_LICENSES_MORE_INFO_URL . '" target="_blank" class="ep-small-link ep-small-spacing" rel="noopener noreferrer" style="display: inline-block; margin-left: 20px;" title="' . __('Click here to read more about licenses.') . '">' . __('More information') . '</a>';
|
187 |
$html .= '<br/><br/>';
|
188 |
}
|
189 |
|
190 |
$html .= '<hr>';
|
191 |
}
|
192 |
|
193 |
+
if ( ! empty($field->description)) {
|
194 |
$html .= '<br/>';
|
195 |
+
$html .= '<p class="description">' . $field->description . '</p>';
|
196 |
}
|
197 |
|
198 |
echo $html;
|
EmbedPress/Plugins/Html/index.html
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
</html>
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
+
<head>
|
4 |
+
<title>403 Forbidden</title>
|
5 |
+
</head>
|
6 |
+
<body>
|
7 |
+
<p>Directory access is forbidden.</p>
|
8 |
+
</body>
|
9 |
</html>
|
EmbedPress/Plugins/Plugin.php
CHANGED
@@ -1,9 +1,10 @@
|
|
1 |
<?php
|
|
|
2 |
namespace EmbedPress\Plugins;
|
3 |
|
4 |
use PublishPress\EDD_License\Core\Container as EDDContainer;
|
5 |
-
use PublishPress\EDD_License\Core\ServicesConfig as EDDServicesConfig;
|
6 |
use PublishPress\EDD_License\Core\Services as EDDServices;
|
|
|
7 |
|
8 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
9 |
|
@@ -38,7 +39,7 @@ abstract class Plugin
|
|
38 |
$config->setPluginVersion(static::VERSION);
|
39 |
$config->setEddItemId(static::EDD_ID);
|
40 |
$config->setPluginAuthor('EmbedPress');
|
41 |
-
$config->setPluginFile(EMBEDPRESS_PLG_NAME .'/'. EMBEDPRESS_PLG_NAME .'.php');
|
42 |
|
43 |
$services = new EDDServices($config);
|
44 |
|
@@ -75,7 +76,7 @@ abstract class Plugin
|
|
75 |
*/
|
76 |
protected static function isEmbedPressActive()
|
77 |
{
|
78 |
-
$isEmbedPressActive = is_plugin_active(EMBEDPRESS_PLG_NAME .'/'. EMBEDPRESS_PLG_NAME .'.php');
|
79 |
|
80 |
return $isEmbedPressActive;
|
81 |
}
|
@@ -87,13 +88,14 @@ abstract class Plugin
|
|
87 |
* @access protected
|
88 |
* @static
|
89 |
*
|
90 |
-
* @param string
|
|
|
91 |
* @return string
|
92 |
*/
|
93 |
protected static function getErrorMessage($err = '')
|
94 |
{
|
95 |
if ($err === 'ERR_MISSING_DEPENDENCY') {
|
96 |
-
return __('Please, <strong>install</strong> and <strong>activate <a href="https://wordpress.org/plugins/'. EMBEDPRESS_PLG_NAME .'" target="_blank" rel="noopener noreferrer">'. EMBEDPRESS .'</a></strong> plugin in order to make <em>'. EMBEDPRESS .' - '. static::NAME .'</em> to work.');
|
97 |
}
|
98 |
|
99 |
return $err;
|
@@ -109,8 +111,8 @@ abstract class Plugin
|
|
109 |
*/
|
110 |
public static function onLoadAdminCallback()
|
111 |
{
|
112 |
-
$pluginSignature = EMBEDPRESS_PLG_NAME .'-'. static::SLUG .'/'. EMBEDPRESS_PLG_NAME .'-'. static::SLUG .'.php';
|
113 |
-
if (is_admin() && !self::isEmbedPressActive() && is_plugin_active($pluginSignature)) {
|
114 |
deactivate_plugins($pluginSignature);
|
115 |
} else {
|
116 |
static::registerSettings();
|
@@ -147,7 +149,7 @@ abstract class Plugin
|
|
147 |
*/
|
148 |
public static function onDeactivationCallback()
|
149 |
{
|
150 |
-
delete_option(EMBEDPRESS_PLG_NAME .':'. static::SLUG);
|
151 |
}
|
152 |
|
153 |
/**
|
@@ -156,17 +158,18 @@ abstract class Plugin
|
|
156 |
* @since 1.4.0
|
157 |
* @static
|
158 |
*
|
159 |
-
* @param array
|
|
|
160 |
* @return array
|
161 |
*/
|
162 |
public static function validateForm($postData)
|
163 |
{
|
164 |
-
$pluginSlugNonce = EMBEDPRESS_PLG_NAME .':'. static::SLUG .':nonce';
|
165 |
-
if (!check_admin_referer($pluginSlugNonce, $pluginSlugNonce)) {
|
166 |
return;
|
167 |
}
|
168 |
|
169 |
-
$data =
|
170 |
|
171 |
$schema = static::getOptionsSchema();
|
172 |
foreach ($schema as $fieldSlug => $field) {
|
@@ -176,7 +179,8 @@ abstract class Plugin
|
|
176 |
$value = isset($field['default']) ? $field['default'] : null;
|
177 |
}
|
178 |
|
179 |
-
settype($value, isset($field['type']) && in_array(strtolower($field['type']),
|
|
|
180 |
|
181 |
$data[$fieldSlug] = $value;
|
182 |
}
|
@@ -197,6 +201,7 @@ abstract class Plugin
|
|
197 |
* @static
|
198 |
*
|
199 |
* @param array Data after validation.
|
|
|
200 |
* @return void
|
201 |
*/
|
202 |
public static function onAfterFormValidation(&$data)
|
@@ -216,7 +221,8 @@ abstract class Plugin
|
|
216 |
{
|
217 |
?>
|
218 |
|
219 |
-
<a href="?page=<?php echo EMBEDPRESS_PLG_NAME; ?>&tab=<?php echo static::SLUG; ?>"
|
|
|
220 |
|
221 |
<?php
|
222 |
}
|
@@ -231,10 +237,11 @@ abstract class Plugin
|
|
231 |
*/
|
232 |
public static function registerSettings()
|
233 |
{
|
234 |
-
$identifier = EMBEDPRESS_PLG_NAME .':'. static::SLUG;
|
235 |
|
236 |
-
register_setting($identifier, $identifier,
|
237 |
-
add_settings_section($identifier, EMBEDPRESS .' > '. static::NAME .' Settings',
|
|
|
238 |
|
239 |
self::registerSettingsFields();
|
240 |
}
|
@@ -249,16 +256,17 @@ abstract class Plugin
|
|
249 |
*/
|
250 |
public static function registerSettingsFields()
|
251 |
{
|
252 |
-
$identifier = EMBEDPRESS_PLG_NAME .':'. static::SLUG;
|
253 |
|
254 |
$schema = static::getOptionsSchema();
|
255 |
foreach ($schema as $fieldSlug => $field) {
|
256 |
$field['slug'] = $fieldSlug;
|
257 |
|
258 |
-
add_settings_field($fieldSlug, $field['label'],
|
259 |
-
|
260 |
-
|
261 |
-
|
|
|
262 |
}
|
263 |
}
|
264 |
|
@@ -285,20 +293,21 @@ abstract class Plugin
|
|
285 |
*/
|
286 |
public static function getOptions()
|
287 |
{
|
288 |
-
$options = (array)get_option(EMBEDPRESS_PLG_NAME .':'. static::SLUG);
|
289 |
if (empty($options) || (count($options) === 1 && empty($options[0]))) {
|
290 |
-
$options =
|
291 |
-
$schema
|
292 |
foreach ($schema as $fieldSlug => $field) {
|
293 |
$value = isset($field['default']) ? $field['default'] : "";
|
294 |
|
295 |
-
settype($value, isset($field['type']) && in_array(strtolower($field['type']),
|
|
|
296 |
|
297 |
if ($fieldSlug === "license_key") {
|
298 |
-
$options['license'] =
|
299 |
'key' => $value,
|
300 |
-
'status' => "missing"
|
301 |
-
|
302 |
} else {
|
303 |
$options[$fieldSlug] = $value;
|
304 |
}
|
@@ -318,7 +327,8 @@ abstract class Plugin
|
|
318 |
*/
|
319 |
public static function handleActionLinks($links, $file)
|
320 |
{
|
321 |
-
$settingsLink = '<a href="'. admin_url('admin.php?page='. EMBEDPRESS_PLG_NAME .'&tab='. static::SLUG) .'" aria-label="'. __('Open settings page',
|
|
|
322 |
|
323 |
array_unshift($links, $settingsLink);
|
324 |
|
1 |
<?php
|
2 |
+
|
3 |
namespace EmbedPress\Plugins;
|
4 |
|
5 |
use PublishPress\EDD_License\Core\Container as EDDContainer;
|
|
|
6 |
use PublishPress\EDD_License\Core\Services as EDDServices;
|
7 |
+
use PublishPress\EDD_License\Core\ServicesConfig as EDDServicesConfig;
|
8 |
|
9 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
10 |
|
39 |
$config->setPluginVersion(static::VERSION);
|
40 |
$config->setEddItemId(static::EDD_ID);
|
41 |
$config->setPluginAuthor('EmbedPress');
|
42 |
+
$config->setPluginFile(EMBEDPRESS_PLG_NAME . '/' . EMBEDPRESS_PLG_NAME . '.php');
|
43 |
|
44 |
$services = new EDDServices($config);
|
45 |
|
76 |
*/
|
77 |
protected static function isEmbedPressActive()
|
78 |
{
|
79 |
+
$isEmbedPressActive = is_plugin_active(EMBEDPRESS_PLG_NAME . '/' . EMBEDPRESS_PLG_NAME . '.php');
|
80 |
|
81 |
return $isEmbedPressActive;
|
82 |
}
|
88 |
* @access protected
|
89 |
* @static
|
90 |
*
|
91 |
+
* @param string $err The error code.
|
92 |
+
*
|
93 |
* @return string
|
94 |
*/
|
95 |
protected static function getErrorMessage($err = '')
|
96 |
{
|
97 |
if ($err === 'ERR_MISSING_DEPENDENCY') {
|
98 |
+
return __('Please, <strong>install</strong> and <strong>activate <a href="https://wordpress.org/plugins/' . EMBEDPRESS_PLG_NAME . '" target="_blank" rel="noopener noreferrer">' . EMBEDPRESS . '</a></strong> plugin in order to make <em>' . EMBEDPRESS . ' - ' . static::NAME . '</em> to work.');
|
99 |
}
|
100 |
|
101 |
return $err;
|
111 |
*/
|
112 |
public static function onLoadAdminCallback()
|
113 |
{
|
114 |
+
$pluginSignature = EMBEDPRESS_PLG_NAME . '-' . static::SLUG . '/' . EMBEDPRESS_PLG_NAME . '-' . static::SLUG . '.php';
|
115 |
+
if (is_admin() && ! self::isEmbedPressActive() && is_plugin_active($pluginSignature)) {
|
116 |
deactivate_plugins($pluginSignature);
|
117 |
} else {
|
118 |
static::registerSettings();
|
149 |
*/
|
150 |
public static function onDeactivationCallback()
|
151 |
{
|
152 |
+
delete_option(EMBEDPRESS_PLG_NAME . ':' . static::SLUG);
|
153 |
}
|
154 |
|
155 |
/**
|
158 |
* @since 1.4.0
|
159 |
* @static
|
160 |
*
|
161 |
+
* @param array $postData The data coming from the form via POST.
|
162 |
+
*
|
163 |
* @return array
|
164 |
*/
|
165 |
public static function validateForm($postData)
|
166 |
{
|
167 |
+
$pluginSlugNonce = EMBEDPRESS_PLG_NAME . ':' . static::SLUG . ':nonce';
|
168 |
+
if ( ! check_admin_referer($pluginSlugNonce, $pluginSlugNonce)) {
|
169 |
return;
|
170 |
}
|
171 |
|
172 |
+
$data = [];
|
173 |
|
174 |
$schema = static::getOptionsSchema();
|
175 |
foreach ($schema as $fieldSlug => $field) {
|
179 |
$value = isset($field['default']) ? $field['default'] : null;
|
180 |
}
|
181 |
|
182 |
+
settype($value, isset($field['type']) && in_array(strtolower($field['type']),
|
183 |
+
['bool', 'boolean', 'int', 'integer', 'float', 'string']) ? $field['type'] : 'string');
|
184 |
|
185 |
$data[$fieldSlug] = $value;
|
186 |
}
|
201 |
* @static
|
202 |
*
|
203 |
* @param array Data after validation.
|
204 |
+
*
|
205 |
* @return void
|
206 |
*/
|
207 |
public static function onAfterFormValidation(&$data)
|
221 |
{
|
222 |
?>
|
223 |
|
224 |
+
<a href="?page=<?php echo EMBEDPRESS_PLG_NAME; ?>&tab=<?php echo static::SLUG; ?>"
|
225 |
+
class="nav-tab<?php echo $activeTab === static::SLUG ? ' nav-tab-active' : ''; ?> "><?php echo static::NAME; ?></a>
|
226 |
|
227 |
<?php
|
228 |
}
|
237 |
*/
|
238 |
public static function registerSettings()
|
239 |
{
|
240 |
+
$identifier = EMBEDPRESS_PLG_NAME . ':' . static::SLUG;
|
241 |
|
242 |
+
register_setting($identifier, $identifier, [static::NAMESPACE_STRING, 'validateForm']);
|
243 |
+
add_settings_section($identifier, EMBEDPRESS . ' > ' . static::NAME . ' Settings',
|
244 |
+
[static::NAMESPACE_STRING, 'onAfterRegisterSettings'], $identifier);
|
245 |
|
246 |
self::registerSettingsFields();
|
247 |
}
|
256 |
*/
|
257 |
public static function registerSettingsFields()
|
258 |
{
|
259 |
+
$identifier = EMBEDPRESS_PLG_NAME . ':' . static::SLUG;
|
260 |
|
261 |
$schema = static::getOptionsSchema();
|
262 |
foreach ($schema as $fieldSlug => $field) {
|
263 |
$field['slug'] = $fieldSlug;
|
264 |
|
265 |
+
add_settings_field($fieldSlug, $field['label'], [__NAMESPACE__ . '\Html\Field', 'render'], $identifier,
|
266 |
+
$identifier, [
|
267 |
+
'pluginSlug' => static::SLUG,
|
268 |
+
'field' => $field,
|
269 |
+
]);
|
270 |
}
|
271 |
}
|
272 |
|
293 |
*/
|
294 |
public static function getOptions()
|
295 |
{
|
296 |
+
$options = (array)get_option(EMBEDPRESS_PLG_NAME . ':' . static::SLUG);
|
297 |
if (empty($options) || (count($options) === 1 && empty($options[0]))) {
|
298 |
+
$options = [];
|
299 |
+
$schema = static::getOptionsSchema();
|
300 |
foreach ($schema as $fieldSlug => $field) {
|
301 |
$value = isset($field['default']) ? $field['default'] : "";
|
302 |
|
303 |
+
settype($value, isset($field['type']) && in_array(strtolower($field['type']),
|
304 |
+
['bool', 'boolean', 'int', 'integer', 'float', 'string']) ? $field['type'] : 'string');
|
305 |
|
306 |
if ($fieldSlug === "license_key") {
|
307 |
+
$options['license'] = [
|
308 |
'key' => $value,
|
309 |
+
'status' => "missing",
|
310 |
+
];
|
311 |
} else {
|
312 |
$options[$fieldSlug] = $value;
|
313 |
}
|
327 |
*/
|
328 |
public static function handleActionLinks($links, $file)
|
329 |
{
|
330 |
+
$settingsLink = '<a href="' . admin_url('admin.php?page=' . EMBEDPRESS_PLG_NAME . '&tab=' . static::SLUG) . '" aria-label="' . __('Open settings page',
|
331 |
+
'embedpress-' . static::SLUG) . '">' . __('Settings', 'embedpress-' . static::SLUG) . '</a>';
|
332 |
|
333 |
array_unshift($links, $settingsLink);
|
334 |
|
EmbedPress/Plugins/index.html
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
</html>
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
+
<head>
|
4 |
+
<title>403 Forbidden</title>
|
5 |
+
</head>
|
6 |
+
<body>
|
7 |
+
<p>Directory access is forbidden.</p>
|
8 |
+
</body>
|
9 |
</html>
|
EmbedPress/Providers/Giphy.php
CHANGED
@@ -1,7 +1,8 @@
|
|
1 |
<?php
|
|
|
2 |
namespace EmbedPress\Providers;
|
3 |
|
4 |
-
use
|
5 |
|
6 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
7 |
|
@@ -53,20 +54,20 @@ class Giphy extends EmberaService
|
|
53 |
if (preg_match($this->urlRegexPattern, $url, $matches)) {
|
54 |
$gifId = count($matches) > 3 && strtolower($matches[3]) === ".gif" ? $matches[2] : $matches[1];
|
55 |
|
56 |
-
$html = ''.
|
57 |
-
|
58 |
-
'<img src="https://media.giphy.com/media/'. $gifId .'/giphy.gif" alt="" width="{width}" height="{height}">'.
|
59 |
-
|
60 |
|
61 |
-
$response =
|
62 |
'type' => 'image',
|
63 |
'provider_name' => 'Giphy',
|
64 |
'provider_url' => 'https://giphy.com',
|
65 |
'url' => $url,
|
66 |
-
'html' => $html
|
67 |
-
|
68 |
} else {
|
69 |
-
$response =
|
70 |
}
|
71 |
|
72 |
return $response;
|
1 |
<?php
|
2 |
+
|
3 |
namespace EmbedPress\Providers;
|
4 |
|
5 |
+
use Embera\Adapters\Service as EmberaService;
|
6 |
|
7 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
8 |
|
54 |
if (preg_match($this->urlRegexPattern, $url, $matches)) {
|
55 |
$gifId = count($matches) > 3 && strtolower($matches[3]) === ".gif" ? $matches[2] : $matches[1];
|
56 |
|
57 |
+
$html = '' .
|
58 |
+
'<a href="https://giphy.com/gifs/' . $gifId . '">' .
|
59 |
+
'<img src="https://media.giphy.com/media/' . $gifId . '/giphy.gif" alt="" width="{width}" height="{height}">' .
|
60 |
+
'</a>';
|
61 |
|
62 |
+
$response = [
|
63 |
'type' => 'image',
|
64 |
'provider_name' => 'Giphy',
|
65 |
'provider_url' => 'https://giphy.com',
|
66 |
'url' => $url,
|
67 |
+
'html' => $html,
|
68 |
+
];
|
69 |
} else {
|
70 |
+
$response = [];
|
71 |
}
|
72 |
|
73 |
return $response;
|
EmbedPress/Providers/GoogleDocs.php
CHANGED
@@ -1,7 +1,8 @@
|
|
1 |
<?php
|
|
|
2 |
namespace EmbedPress\Providers;
|
3 |
|
4 |
-
use
|
5 |
|
6 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
7 |
|
@@ -26,7 +27,8 @@ class GoogleDocs extends EmberaService
|
|
26 |
*/
|
27 |
public function validateUrl()
|
28 |
{
|
29 |
-
return preg_match('~http[s]?:\/\/((?:www\.)?docs\.google\.com\/(?:document|presentation|spreadsheets|forms|drawings)\/[a-z0-9\/\?=_\-\.\,&%\$#\@\!\+]*)~i',
|
|
|
30 |
}
|
31 |
|
32 |
/**
|
@@ -41,13 +43,13 @@ class GoogleDocs extends EmberaService
|
|
41 |
$iframeSrc = html_entity_decode($this->url);
|
42 |
|
43 |
// Check the type of document
|
44 |
-
preg_match('~google\.com/(document|presentation|spreadsheets|forms|drawings)/~i', $iframeSrc, $matches);
|
45 |
$type = $matches[1];
|
46 |
|
47 |
switch ($type) {
|
48 |
case 'document':
|
49 |
// Check if the url still doesn't have the embedded param, and add if needed
|
50 |
-
if (!preg_match('~([?&])embedded=true~i', $iframeSrc, $matches)) {
|
51 |
if (substr_count($iframeSrc, '?')) {
|
52 |
$iframeSrc .= '&embedded=true';
|
53 |
} else {
|
@@ -69,8 +71,8 @@ class GoogleDocs extends EmberaService
|
|
69 |
$query = $query[1];
|
70 |
$query = explode('&', $query);
|
71 |
|
72 |
-
if (!empty($query)) {
|
73 |
-
$hasWidgetParam
|
74 |
$hasHeadersParam = false;
|
75 |
|
76 |
foreach ($query as $param) {
|
@@ -81,11 +83,11 @@ class GoogleDocs extends EmberaService
|
|
81 |
}
|
82 |
}
|
83 |
|
84 |
-
if (
|
85 |
$iframeSrc .= '&widget=true';
|
86 |
}
|
87 |
|
88 |
-
if (
|
89 |
$iframeSrc .= '&headers=false';
|
90 |
}
|
91 |
}
|
@@ -105,13 +107,13 @@ class GoogleDocs extends EmberaService
|
|
105 |
$html = '<img src="' . $iframeSrc . '" width="960" height="720" />';
|
106 |
}
|
107 |
|
108 |
-
return
|
109 |
'type' => 'rich',
|
110 |
'provider_name' => 'Google Docs',
|
111 |
'provider_url' => 'https://docs.google.com',
|
112 |
'title' => 'Unknown title',
|
113 |
'html' => $html,
|
114 |
-
'wrapper_class' => 'ose-google-docs-' . $type
|
115 |
-
|
116 |
}
|
117 |
}
|
1 |
<?php
|
2 |
+
|
3 |
namespace EmbedPress\Providers;
|
4 |
|
5 |
+
use Embera\Adapters\Service as EmberaService;
|
6 |
|
7 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
8 |
|
27 |
*/
|
28 |
public function validateUrl()
|
29 |
{
|
30 |
+
return preg_match('~http[s]?:\/\/((?:www\.)?docs\.google\.com\/(?:.*/)?(?:document|presentation|spreadsheets|forms|drawings)\/[a-z0-9\/\?=_\-\.\,&%\$#\@\!\+]*)~i',
|
31 |
+
$this->url);
|
32 |
}
|
33 |
|
34 |
/**
|
43 |
$iframeSrc = html_entity_decode($this->url);
|
44 |
|
45 |
// Check the type of document
|
46 |
+
preg_match('~google\.com/(?:.+/)?(document|presentation|spreadsheets|forms|drawings)/~i', $iframeSrc, $matches);
|
47 |
$type = $matches[1];
|
48 |
|
49 |
switch ($type) {
|
50 |
case 'document':
|
51 |
// Check if the url still doesn't have the embedded param, and add if needed
|
52 |
+
if ( ! preg_match('~([?&])embedded=true~i', $iframeSrc, $matches)) {
|
53 |
if (substr_count($iframeSrc, '?')) {
|
54 |
$iframeSrc .= '&embedded=true';
|
55 |
} else {
|
71 |
$query = $query[1];
|
72 |
$query = explode('&', $query);
|
73 |
|
74 |
+
if ( ! empty($query)) {
|
75 |
+
$hasWidgetParam = false;
|
76 |
$hasHeadersParam = false;
|
77 |
|
78 |
foreach ($query as $param) {
|
83 |
}
|
84 |
}
|
85 |
|
86 |
+
if ( ! $hasWidgetParam) {
|
87 |
$iframeSrc .= '&widget=true';
|
88 |
}
|
89 |
|
90 |
+
if ( ! $hasHeadersParam) {
|
91 |
$iframeSrc .= '&headers=false';
|
92 |
}
|
93 |
}
|
107 |
$html = '<img src="' . $iframeSrc . '" width="960" height="720" />';
|
108 |
}
|
109 |
|
110 |
+
return [
|
111 |
'type' => 'rich',
|
112 |
'provider_name' => 'Google Docs',
|
113 |
'provider_url' => 'https://docs.google.com',
|
114 |
'title' => 'Unknown title',
|
115 |
'html' => $html,
|
116 |
+
'wrapper_class' => 'ose-google-docs-' . $type,
|
117 |
+
];
|
118 |
}
|
119 |
}
|
EmbedPress/Providers/GoogleMaps.php
CHANGED
@@ -1,7 +1,8 @@
|
|
1 |
<?php
|
|
|
2 |
namespace EmbedPress\Providers;
|
3 |
|
4 |
-
use
|
5 |
|
6 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
7 |
|
@@ -26,7 +27,8 @@ class GoogleMaps extends EmberaService
|
|
26 |
*/
|
27 |
public function validateUrl()
|
28 |
{
|
29 |
-
return preg_match('~http[s]?:\/\/(?:(?:(?:www\.|maps\.)?(?:google\.com?))|(?:goo\.gl))(?:\.[a-z]{2})?\/(?:maps\/)?([a-z0-9\/%,+\-_=!:@\.&*\$#?\']*)~i',
|
|
|
30 |
}
|
31 |
|
32 |
/**
|
@@ -45,19 +47,19 @@ class GoogleMaps extends EmberaService
|
|
45 |
$iframeSrc = $this->url;
|
46 |
} else {
|
47 |
// Extract coordinates and zoom from the url
|
48 |
-
if (preg_match('~@(-?[0-9\.]+,-?[0-9\.]+).+,([0-9\.]+z)~i', $this->url, $matches)) {
|
49 |
$iframeSrc = 'http://maps.google.com/maps?hl=en&ie=UTF8&ll=' . $matches[1] . '&spn=' . $matches[1] . '&t=m&z=' . round($matches[2]) . '&output=embed';
|
50 |
} else {
|
51 |
-
return
|
52 |
}
|
53 |
}
|
54 |
|
55 |
-
return
|
56 |
'type' => 'rich',
|
57 |
'provider_name' => 'Google Maps',
|
58 |
'provider_url' => 'https://maps.google.com',
|
59 |
'title' => 'Unknown title',
|
60 |
'html' => '<iframe width="600" height="450" src="' . $iframeSrc . '" frameborder="0"></iframe>',
|
61 |
-
|
62 |
}
|
63 |
}
|
1 |
<?php
|
2 |
+
|
3 |
namespace EmbedPress\Providers;
|
4 |
|
5 |
+
use Embera\Adapters\Service as EmberaService;
|
6 |
|
7 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
8 |
|
27 |
*/
|
28 |
public function validateUrl()
|
29 |
{
|
30 |
+
return preg_match('~http[s]?:\/\/(?:(?:(?:www\.|maps\.)?(?:google\.com?))|(?:goo\.gl))(?:\.[a-z]{2})?\/(?:maps\/)?(?:place\/)?(?:[a-z0-9\/%+\-_]*)?([a-z0-9\/%,+\-_=!:@\.&*\$#?\']*)~i',
|
31 |
+
$this->url);
|
32 |
}
|
33 |
|
34 |
/**
|
47 |
$iframeSrc = $this->url;
|
48 |
} else {
|
49 |
// Extract coordinates and zoom from the url
|
50 |
+
if (preg_match('~@(-?[0-9\.]+,-?[0-9\.]+).+,([0-9\.]+[a-z])~i', $this->url, $matches)) {
|
51 |
$iframeSrc = 'http://maps.google.com/maps?hl=en&ie=UTF8&ll=' . $matches[1] . '&spn=' . $matches[1] . '&t=m&z=' . round($matches[2]) . '&output=embed';
|
52 |
} else {
|
53 |
+
return [];
|
54 |
}
|
55 |
}
|
56 |
|
57 |
+
return [
|
58 |
'type' => 'rich',
|
59 |
'provider_name' => 'Google Maps',
|
60 |
'provider_url' => 'https://maps.google.com',
|
61 |
'title' => 'Unknown title',
|
62 |
'html' => '<iframe width="600" height="450" src="' . $iframeSrc . '" frameborder="0"></iframe>',
|
63 |
+
];
|
64 |
}
|
65 |
}
|
EmbedPress/Providers/Twitch.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
namespace EmbedPress\Providers;
|
3 |
|
4 |
use Embera\Adapters\Service as EmberaService;
|
@@ -39,28 +40,28 @@ class Twitch extends EmberaService
|
|
39 |
return preg_match($this->urlRegexPattern, $this->url);
|
40 |
}
|
41 |
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
protected function getType($url)
|
50 |
{
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
|
63 |
-
|
64 |
}
|
65 |
|
66 |
/**
|
@@ -72,10 +73,10 @@ class Twitch extends EmberaService
|
|
72 |
*/
|
73 |
public function fakeResponse()
|
74 |
{
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
|
80 |
if (preg_match("{$this->urlRegexPattern}i", $url, $matches)) {
|
81 |
$channelName = $matches[1];
|
@@ -83,40 +84,40 @@ class Twitch extends EmberaService
|
|
83 |
$type = $this->getType($url);
|
84 |
|
85 |
// Clip, channel, chat, collection, or video?
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
break;
|
91 |
-
|
92 |
-
case 'video':
|
93 |
-
$channelName = $matches[2];
|
94 |
-
$src = 'https://player.twitch.tv/?video=' . $channelName;
|
95 |
-
$attrs = 'scrolling="no" frameborder="0" allowfullscreen="true"';
|
96 |
break;
|
97 |
|
98 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
$src = 'https://player.twitch.tv/?channel=' . $channelName;
|
100 |
-
|
101 |
break;
|
102 |
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
}
|
108 |
|
109 |
$html = '<iframe src="' . $src . '" height="{height}" width="{width}" ' . $attrs . '></iframe>';
|
110 |
|
111 |
-
$response =
|
112 |
'type' => $type,
|
113 |
'provider_name' => 'Twitch',
|
114 |
'provider_url' => $providerUrl,
|
115 |
'url' => $url,
|
116 |
-
'html' => $html
|
117 |
-
|
118 |
} else {
|
119 |
-
$response =
|
120 |
}
|
121 |
|
122 |
return $response;
|
1 |
<?php
|
2 |
+
|
3 |
namespace EmbedPress\Providers;
|
4 |
|
5 |
use Embera\Adapters\Service as EmberaService;
|
40 |
return preg_match($this->urlRegexPattern, $this->url);
|
41 |
}
|
42 |
|
43 |
+
/**
|
44 |
+
* Return the type of the embed based on the URL.
|
45 |
+
*
|
46 |
+
* @param $url
|
47 |
+
*
|
48 |
+
* @return string
|
49 |
+
*/
|
50 |
protected function getType($url)
|
51 |
{
|
52 |
+
if (stristr($url, 'clips.twitch.tv')) {
|
53 |
+
return 'clip';
|
54 |
+
}
|
55 |
|
56 |
+
if (stristr($url, '/videos/')) {
|
57 |
+
return 'video';
|
58 |
+
}
|
59 |
|
60 |
+
if (preg_match('#/chat$#', $url)) {
|
61 |
+
return 'chat';
|
62 |
+
}
|
63 |
|
64 |
+
return 'channel';
|
65 |
}
|
66 |
|
67 |
/**
|
73 |
*/
|
74 |
public function fakeResponse()
|
75 |
{
|
76 |
+
$url = $this->getUrl();
|
77 |
+
$providerUrl = 'https://twitch.tv';
|
78 |
+
$html = '';
|
79 |
+
$src = '';
|
80 |
|
81 |
if (preg_match("{$this->urlRegexPattern}i", $url, $matches)) {
|
82 |
$channelName = $matches[1];
|
84 |
$type = $this->getType($url);
|
85 |
|
86 |
// Clip, channel, chat, collection, or video?
|
87 |
+
switch ($type) {
|
88 |
+
case 'clip':
|
89 |
+
$src = 'https://clips.twitch.tv/embed?clip=' . $channelName . '&autoplay=false';
|
90 |
+
$attrs = 'scrolling="no" frameborder="0" allowfullscreen="true"';
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
break;
|
92 |
|
93 |
+
case 'video':
|
94 |
+
$channelName = $matches[2];
|
95 |
+
$src = 'https://player.twitch.tv/?video=' . $channelName;
|
96 |
+
$attrs = 'scrolling="no" frameborder="0" allowfullscreen="true"';
|
97 |
+
break;
|
98 |
+
|
99 |
+
case 'channel':
|
100 |
$src = 'https://player.twitch.tv/?channel=' . $channelName;
|
101 |
+
$attrs = 'scrolling="no" frameborder="0" allowfullscreen="true"';
|
102 |
break;
|
103 |
|
104 |
+
case 'chat':
|
105 |
+
$src = 'http://www.twitch.tv/embed/' . $channelName . '/chat';
|
106 |
+
$attrs = 'scrolling="yes" frameborder="0" allowfullscreen="true" id="' . $channelName . '"';
|
107 |
+
break;
|
108 |
}
|
109 |
|
110 |
$html = '<iframe src="' . $src . '" height="{height}" width="{width}" ' . $attrs . '></iframe>';
|
111 |
|
112 |
+
$response = [
|
113 |
'type' => $type,
|
114 |
'provider_name' => 'Twitch',
|
115 |
'provider_url' => $providerUrl,
|
116 |
'url' => $url,
|
117 |
+
'html' => $html,
|
118 |
+
];
|
119 |
} else {
|
120 |
+
$response = [];
|
121 |
}
|
122 |
|
123 |
return $response;
|
EmbedPress/Providers/index.html
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
</html>
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
+
<head>
|
4 |
+
<title>403 Forbidden</title>
|
5 |
+
</head>
|
6 |
+
<body>
|
7 |
+
<p>Directory access is forbidden.</p>
|
8 |
+
</body>
|
9 |
</html>
|
EmbedPress/RestAPI.php
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace EmbedPress;
|
4 |
+
|
5 |
+
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Entity responsible for maintaining and registering all hooks that power the plugin.
|
9 |
+
*
|
10 |
+
* @package EmbedPress
|
11 |
+
* @author EmbedPress <help@embedpress.com>
|
12 |
+
* @copyright Copyright (C) 2018 EmbedPress. All rights reserved.
|
13 |
+
* @license GPLv2 or later
|
14 |
+
* @since 1.0.0
|
15 |
+
*/
|
16 |
+
class RestAPI
|
17 |
+
{
|
18 |
+
/**
|
19 |
+
* @param \WP_REST_Request $request
|
20 |
+
*/
|
21 |
+
public static function oembed($request)
|
22 |
+
{
|
23 |
+
$url = sanitize_url($request->get_param('url'));
|
24 |
+
|
25 |
+
if (empty($url)) {
|
26 |
+
return new \WP_Error('embedpress_invalid_url', 'Invalid Embed URL', ['status' => 404]);
|
27 |
+
}
|
28 |
+
|
29 |
+
$config = [];
|
30 |
+
$embera = new \Embera\Embera($config);
|
31 |
+
|
32 |
+
$additionalServiceProviders = Core::getAdditionalServiceProviders();
|
33 |
+
if ( ! empty($additionalServiceProviders)) {
|
34 |
+
foreach ($additionalServiceProviders as $serviceProviderClassName => $serviceProviderUrls) {
|
35 |
+
Shortcode::addServiceProvider($serviceProviderClassName, $serviceProviderUrls, $embera);
|
36 |
+
}
|
37 |
+
}
|
38 |
+
|
39 |
+
$urlInfo = $embera->getUrlInfo($url);
|
40 |
+
if (isset($urlInfo[$url])) {
|
41 |
+
$urlInfo = (object)$urlInfo[$url];
|
42 |
+
$response['canBeResponsive'] = Core::canServiceProviderBeResponsive($urlInfo->provider_alias);
|
43 |
+
}
|
44 |
+
|
45 |
+
if (empty($urlInfo)) {
|
46 |
+
return new \WP_Error('embedpress_invalid_url', 'Invalid Embed URL', ['status' => 404]);
|
47 |
+
}
|
48 |
+
|
49 |
+
return new \WP_REST_Response($urlInfo, 202);
|
50 |
+
}
|
51 |
+
}
|
EmbedPress/Shortcode.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
|
|
2 |
namespace EmbedPress;
|
3 |
|
4 |
-
use \
|
5 |
-
use
|
6 |
-
use \Embera\Formatter;
|
7 |
|
8 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
9 |
|
@@ -25,7 +25,7 @@ class Shortcode
|
|
25 |
* @access private
|
26 |
* @static
|
27 |
*
|
28 |
-
* @var string
|
29 |
*/
|
30 |
private static $oEmbedInstance = null;
|
31 |
|
@@ -40,7 +40,8 @@ class Shortcode
|
|
40 |
public static function register()
|
41 |
{
|
42 |
// Register the new shortcode for embeds.
|
43 |
-
add_shortcode(EMBEDPRESS_SHORTCODE,
|
|
|
44 |
}
|
45 |
|
46 |
/**
|
@@ -49,11 +50,12 @@ class Shortcode
|
|
49 |
* @since 1.0.0
|
50 |
* @static
|
51 |
*
|
52 |
-
* @param array
|
53 |
-
* @param string
|
|
|
54 |
* @return string
|
55 |
*/
|
56 |
-
public static function do_shortcode($attributes =
|
57 |
{
|
58 |
$embed = self::parseContent($subject, true, $attributes);
|
59 |
|
@@ -68,32 +70,34 @@ class Shortcode
|
|
68 |
*
|
69 |
* @param string The raw content that will be replaced.
|
70 |
* @param boolean Optional. If true, new lines at the end of the embeded code are stripped.
|
|
|
71 |
* @return string
|
72 |
*/
|
73 |
-
public static function parseContent($subject, $stripNewLine = false, $customAttributes =
|
74 |
{
|
75 |
-
if (!empty($subject)) {
|
76 |
if (empty($customAttributes)) {
|
77 |
$customAttributes = self::parseContentAttributesFromString($subject);
|
78 |
}
|
79 |
|
80 |
-
$content = preg_replace('/(\['. EMBEDPRESS_SHORTCODE .'(?:\]|.+?\])|\[\/'. EMBEDPRESS_SHORTCODE .'\])/i',
|
|
|
81 |
|
82 |
// Converts any special HTML entities back to characters.
|
83 |
$content = htmlspecialchars_decode($content);
|
84 |
|
85 |
// Check if the WP_oEmbed class is loaded
|
86 |
-
if (!self::$oEmbedInstance) {
|
87 |
-
require_once ABSPATH .'wp-includes/class-oembed.php';
|
88 |
|
89 |
self::$oEmbedInstance = _wp_oembed_get_object();
|
90 |
}
|
91 |
|
92 |
-
$emberaInstanceSettings =
|
93 |
-
'params' =>
|
94 |
-
|
95 |
|
96 |
-
$content_uid = md5(
|
97 |
|
98 |
$attributes = self::parseContentAttributes($customAttributes, $content_uid);
|
99 |
if (isset($attributes['width']) || isset($attributes['height'])) {
|
@@ -118,7 +122,7 @@ class Shortcode
|
|
118 |
$emberaInstance = new Embera($emberaInstanceSettings);
|
119 |
// Add support to the user's custom service providers
|
120 |
$additionalServiceProviders = Core::getAdditionalServiceProviders();
|
121 |
-
if (!empty($additionalServiceProviders)) {
|
122 |
foreach ($additionalServiceProviders as $serviceProviderClassName => $serviceProviderUrls) {
|
123 |
self::addServiceProvider($serviceProviderClassName, $serviceProviderUrls, $emberaInstance);
|
124 |
}
|
@@ -148,22 +152,22 @@ class Shortcode
|
|
148 |
}
|
149 |
|
150 |
// Transform all shortcode attributes into html form. I.e.: {foo: "joe"} -> foo="joe"
|
151 |
-
$attributesHtml =
|
152 |
foreach ($attributes as $attrName => $attrValue) {
|
153 |
-
$attributesHtml[] = $attrName .'="'. $attrValue .'"';
|
154 |
}
|
155 |
|
156 |
// Define the EmbedPress html template where the generated embed will be injected in
|
157 |
-
$embedTemplate = '<div '. implode(' ', $attributesHtml) .'>{html}</div>';
|
158 |
|
159 |
// Check if $content is a google shortened url and tries to extract from it which Google service it refers to.
|
160 |
if (preg_match('/http[s]?:\/\/goo\.gl\/(?:([a-z]+)\/)?[a-z0-9]+\/?$/i', $content, $matches)) {
|
161 |
// Fetch all headers from the short-url so we can know how to handle its original content depending on the service.
|
162 |
$headers = get_headers($content);
|
163 |
|
164 |
-
$supportedServicesHeadersPatterns =
|
165 |
-
'maps' => '/^Location:\s+(http[s]?:\/\/.+)$/i'
|
166 |
-
|
167 |
|
168 |
$service = isset($matches[1]) ? strtolower($matches[1]) : null;
|
169 |
// No specific service was found in the url.
|
@@ -182,9 +186,10 @@ class Shortcode
|
|
182 |
// Check if the Google service is supported atm.
|
183 |
if (isset($supportedServicesHeadersPatterns[$service])) {
|
184 |
// Tries to extract the url based on its headers.
|
185 |
-
$originalUrl = self::extractContentFromHeaderAsArray($supportedServicesHeadersPatterns[$service],
|
|
|
186 |
// Replace the shortened url with its original url if the specific header was found.
|
187 |
-
if (!empty($originalUrl)) {
|
188 |
$content = $originalUrl;
|
189 |
}
|
190 |
unset($originalUrl);
|
@@ -195,7 +200,7 @@ class Shortcode
|
|
195 |
|
196 |
// Facebook is a special case. WordPress will try to embed them using OEmbed, but they always end up embedding the profile page, regardless
|
197 |
// if the url was pointing to a photo, a post, etc. So, since Embera can embed only facebook-media/posts, we'll use it only for that.
|
198 |
-
if (isset($urlData->provider_name) && in_array($urlData->provider_name,
|
199 |
// Check if this is a Facebook profile url.
|
200 |
if (preg_match('/facebook\.com\/(?:[^\/]+?)\/?$/', $content, $match)) {
|
201 |
// Try to embed the url using WP's OSEmbed.
|
@@ -209,13 +214,13 @@ class Shortcode
|
|
209 |
$parsedContent = self::$oEmbedInstance->get_html($content, $attributes);
|
210 |
}
|
211 |
|
212 |
-
if (
|
213 |
-
if (!isset($emberaInstance)) {
|
214 |
// If the embed couldn't be generated, we'll try to use Embera's API
|
215 |
$emberaInstance = new Embera($emberaInstanceSettings);
|
216 |
// Add support to the user's custom service providers
|
217 |
$additionalServiceProviders = Core::getAdditionalServiceProviders();
|
218 |
-
if (!empty($additionalServiceProviders)) {
|
219 |
foreach ($additionalServiceProviders as $serviceProviderClassName => $serviceProviderUrls) {
|
220 |
self::addServiceProvider($serviceProviderClassName, $serviceProviderUrls, $emberaInstance);
|
221 |
}
|
@@ -240,26 +245,29 @@ class Shortcode
|
|
240 |
$parsedContent = str_replace("'", '"', $parsedContent);
|
241 |
|
242 |
// Replace the flag `{provider_alias}` which is used by Embera with the "ose-<serviceProviderAlias>". I.e: YouTube -> "ose-youtube"
|
243 |
-
$parsedContent = preg_replace('/((?:ose-)?\{provider_alias\})/i',
|
|
|
244 |
}
|
245 |
|
246 |
if (isset($urlData->provider_name) || (is_array($urlData) && isset($urlData[$content]['provider_name']))) {
|
247 |
// NFB seems to always return their embed code with all HTML entities into their applicable characters string.
|
248 |
if ((isset($urlData->provider_name) && strtoupper($urlData->provider_name) === "NATIONAL FILM BOARD OF CANADA") || (is_array($urlData) && isset($urlData[$content]['provider_name']) && strtoupper($urlData[$content]['provider_name']) === "NATIONAL FILM BOARD OF CANADA")) {
|
249 |
$parsedContent = html_entity_decode($parsedContent);
|
250 |
-
}
|
251 |
$plgSettings = Core::getSettings();
|
252 |
|
253 |
// Check if the user wants to force a certain language into Facebook embeds.
|
254 |
-
$locale = isset($plgSettings->fbLanguage) && !empty($plgSettings->fbLanguage) ? $plgSettings->fbLanguage : false;
|
255 |
-
if (
|
256 |
// Replace the automatically detected language by Facebook's API with the language chosen by the user.
|
257 |
-
$parsedContent = preg_replace('/\/[a-z]{2}\_[a-z]{2}\/sdk\.js/i', "/{$locale}/sdk.js",
|
|
|
258 |
}
|
259 |
|
260 |
// Make sure `adapt_container_width` parameter is set to false. Setting to true, as it is by default, might cause Facebook to render embeds inside editors (in admin) with only 180px wide.
|
261 |
if (is_admin()) {
|
262 |
-
$parsedContent = preg_replace('~data\-adapt\-container\-width=\"(?:true|1)\"~i',
|
|
|
263 |
}
|
264 |
|
265 |
unset($locale, $plgSettings);
|
@@ -271,7 +279,7 @@ class Shortcode
|
|
271 |
// This assure that the iframe has the same dimensions the user wants to
|
272 |
if (isset($emberaInstanceSettings['params']['width']) || isset($emberaInstanceSettings['params']['height'])) {
|
273 |
if (isset($emberaInstanceSettings['params']['width']) && isset($emberaInstanceSettings['params']['height'])) {
|
274 |
-
$customWidth
|
275 |
$customHeight = (int)$emberaInstanceSettings['params']['height'];
|
276 |
} else {
|
277 |
if (preg_match('~width="(\d+)"|width\s+:\s+(\d+)~i', $parsedContent, $matches)) {
|
@@ -286,30 +294,33 @@ class Shortcode
|
|
286 |
$iframeRatio = ceil($iframeWidth / $iframeHeight);
|
287 |
|
288 |
if (isset($emberaInstanceSettings['params']['width'])) {
|
289 |
-
$customWidth
|
290 |
$customHeight = ceil($customWidth / $iframeRatio);
|
291 |
} else {
|
292 |
$customHeight = (int)$emberaInstanceSettings['params']['height'];
|
293 |
-
$customWidth
|
294 |
}
|
295 |
}
|
296 |
}
|
297 |
|
298 |
if (isset($customWidth) && isset($customHeight)) {
|
299 |
if (preg_match('~width="(\d+)"~i', $parsedContent)) {
|
300 |
-
$parsedContent = preg_replace('~width="(\d+)"~i', 'width="'. $customWidth .'"',
|
|
|
301 |
}
|
302 |
|
303 |
if (preg_match('~height="(\d+)"~i', $parsedContent)) {
|
304 |
-
$parsedContent = preg_replace('~height="(\d+)"~i', 'height="'. $customHeight .'"',
|
|
|
305 |
}
|
306 |
|
307 |
if (preg_match('~width\s+:\s+(\d+)~i', $parsedContent)) {
|
308 |
-
$parsedContent = preg_replace('~width\s+:\s+(\d+)~i', 'width: '. $customWidth, $parseContent);
|
309 |
}
|
310 |
|
311 |
if (preg_match('~height\s+:\s+(\d+)~i', $parsedContent)) {
|
312 |
-
$parsedContent = preg_replace('~height\s+:\s+(\d+)~i', 'height: '. $customHeight,
|
|
|
313 |
}
|
314 |
}
|
315 |
}
|
@@ -320,12 +331,12 @@ class Shortcode
|
|
320 |
|
321 |
$parsedContent = apply_filters('pp_embed_parsed_content', $parsedContent, $urlData, $attributes);
|
322 |
|
323 |
-
if (!empty($parsedContent)) {
|
324 |
-
$embed = (object)array_merge((array)$urlData,
|
325 |
'attributes' => (object)$attributes,
|
326 |
'embed' => $parsedContent,
|
327 |
-
'url' => $content
|
328 |
-
)
|
329 |
|
330 |
$embed = apply_filters('embedpress:onAfterEmbed', $embed);
|
331 |
|
@@ -342,9 +353,10 @@ class Shortcode
|
|
342 |
* @since 1.0.0
|
343 |
* @static
|
344 |
*
|
345 |
-
* @param string
|
346 |
-
* @param string
|
347 |
-
* @param \Embera\Embera
|
|
|
348 |
* @return boolean
|
349 |
*/
|
350 |
public static function addServiceProvider($className, $reference, &$emberaInstance)
|
@@ -354,8 +366,8 @@ class Shortcode
|
|
354 |
}
|
355 |
|
356 |
if (is_string($reference)) {
|
357 |
-
$emberaInstance->addProvider($reference, EMBEDPRESS_NAMESPACE ."\\Providers\\{$className}");
|
358 |
-
}
|
359 |
foreach ($reference as $serviceProviderUrl) {
|
360 |
self::addServiceProvider($className, $serviceProviderUrl, $emberaInstance);
|
361 |
}
|
@@ -370,12 +382,13 @@ class Shortcode
|
|
370 |
* @since 1.0.0
|
371 |
* @static
|
372 |
*
|
373 |
-
* @param string
|
|
|
374 |
* @return array
|
375 |
*/
|
376 |
public static function parseContentAttributesFromString($subject)
|
377 |
{
|
378 |
-
$customAttributes =
|
379 |
if (preg_match('/\[embed\s*(.*?)\]/i', stripslashes($subject), $m)) {
|
380 |
if (preg_match_all('/(\!?\w+-?\w*)(?:="(.+?)")?/i', stripslashes($m[1]), $matches)) {
|
381 |
$attributes = $matches[1];
|
@@ -397,21 +410,22 @@ class Shortcode
|
|
397 |
* @access private
|
398 |
* @static
|
399 |
*
|
400 |
-
* @param array
|
401 |
-
* @param string
|
|
|
402 |
* @return array
|
403 |
*/
|
404 |
private static function parseContentAttributes(array $customAttributes, $content_uid = null)
|
405 |
{
|
406 |
-
$attributes =
|
407 |
-
'class' =>
|
408 |
-
|
409 |
|
410 |
-
$embedShouldBeResponsive
|
411 |
$embedShouldHaveCustomDimensions = false;
|
412 |
-
if (!empty($customAttributes)) {
|
413 |
if (isset($customAttributes['class'])) {
|
414 |
-
if (!empty($customAttributes['class'])) {
|
415 |
$customAttributes['class'] = explode(' ', $customAttributes['class']);
|
416 |
|
417 |
$attributes['class'] = array_merge($attributes['class'], $customAttributes['class']);
|
@@ -421,33 +435,33 @@ class Shortcode
|
|
421 |
}
|
422 |
|
423 |
if (isset($customAttributes['width'])) {
|
424 |
-
if (!empty($customAttributes['width'])) {
|
425 |
-
$attributes['width']
|
426 |
$embedShouldHaveCustomDimensions = true;
|
427 |
}
|
428 |
}
|
429 |
|
430 |
if (isset($customAttributes['height'])) {
|
431 |
-
if (!empty($customAttributes['height'])) {
|
432 |
-
$attributes['height']
|
433 |
$embedShouldHaveCustomDimensions = true;
|
434 |
}
|
435 |
}
|
436 |
|
437 |
-
if (!empty($customAttributes)) {
|
438 |
$attrNameDefaultPrefix = "data-";
|
439 |
foreach ($customAttributes as $attrName => $attrValue) {
|
440 |
if (is_numeric($attrName)) {
|
441 |
-
$attrName
|
442 |
$attrValue = "";
|
443 |
}
|
444 |
|
445 |
$attrName = str_replace($attrNameDefaultPrefix, "", $attrName);
|
446 |
|
447 |
-
if (!strlen($attrValue)) {
|
448 |
if ($attrName[0] === "!") {
|
449 |
$attrValue = "false";
|
450 |
-
$attrName
|
451 |
} else {
|
452 |
$attrValue = "true";
|
453 |
}
|
@@ -458,13 +472,13 @@ class Shortcode
|
|
458 |
}
|
459 |
|
460 |
// Check if there's any "responsive" parameter
|
461 |
-
$responsiveAttributes =
|
462 |
foreach ($responsiveAttributes as $responsiveAttr) {
|
463 |
if (isset($attributes[$responsiveAttr])) {
|
464 |
-
if (!strlen($attributes[$responsiveAttr])) { // If the parameter is passed but have no value, it will be true by default
|
465 |
$embedShouldBeResponsive = true;
|
466 |
} else {
|
467 |
-
$embedShouldBeResponsive = !self::valueIsFalse($attributes[$responsiveAttr]);
|
468 |
}
|
469 |
|
470 |
break;
|
@@ -475,11 +489,11 @@ class Shortcode
|
|
475 |
|
476 |
$attributes['class'][] = 'ose-{provider_alias}';
|
477 |
|
478 |
-
if (! empty($content_uid)) {
|
479 |
$attributes['class'][] = 'ose-uid-' . $content_uid;
|
480 |
}
|
481 |
|
482 |
-
if ($embedShouldBeResponsive &&
|
483 |
$attributes['class'][] = 'responsive';
|
484 |
} else {
|
485 |
$attributes['data-responsive'] = "false";
|
@@ -496,7 +510,8 @@ class Shortcode
|
|
496 |
* @since 1.0.0
|
497 |
* @static
|
498 |
*
|
499 |
-
* @param mixed
|
|
|
500 |
* @return boolean
|
501 |
*/
|
502 |
public static function valueIsFalse($subject)
|
@@ -524,8 +539,8 @@ class Shortcode
|
|
524 |
* @access private
|
525 |
* @static
|
526 |
*
|
527 |
-
* @param string
|
528 |
-
* @param array
|
529 |
*
|
530 |
* @return mixed
|
531 |
*/
|
@@ -565,7 +580,7 @@ class Shortcode
|
|
565 |
if (substr_count($key, '-')) {
|
566 |
unset($data->$key);
|
567 |
|
568 |
-
$key
|
569 |
$data->$key = $value;
|
570 |
}
|
571 |
}
|
@@ -574,7 +589,7 @@ class Shortcode
|
|
574 |
if (substr_count($key, '-')) {
|
575 |
unset($data[$key]);
|
576 |
|
577 |
-
$key
|
578 |
$data[$key] = $value;
|
579 |
}
|
580 |
}
|
1 |
<?php
|
2 |
+
|
3 |
namespace EmbedPress;
|
4 |
|
5 |
+
use Embera\Embera;
|
6 |
+
use Embera\Formatter;
|
|
|
7 |
|
8 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
9 |
|
25 |
* @access private
|
26 |
* @static
|
27 |
*
|
28 |
+
* @var string $oEmbedInstance
|
29 |
*/
|
30 |
private static $oEmbedInstance = null;
|
31 |
|
40 |
public static function register()
|
41 |
{
|
42 |
// Register the new shortcode for embeds.
|
43 |
+
add_shortcode(EMBEDPRESS_SHORTCODE, ['\\EmbedPress\\Shortcode', 'do_shortcode']);
|
44 |
+
add_shortcode('embed_oembed_html', ['\\EmbedPress\\Shortcode', 'do_shortcode']);
|
45 |
}
|
46 |
|
47 |
/**
|
50 |
* @since 1.0.0
|
51 |
* @static
|
52 |
*
|
53 |
+
* @param array $attributes Array of attributes
|
54 |
+
* @param string $subject The given string
|
55 |
+
*
|
56 |
* @return string
|
57 |
*/
|
58 |
+
public static function do_shortcode($attributes = [], $subject = null)
|
59 |
{
|
60 |
$embed = self::parseContent($subject, true, $attributes);
|
61 |
|
70 |
*
|
71 |
* @param string The raw content that will be replaced.
|
72 |
* @param boolean Optional. If true, new lines at the end of the embeded code are stripped.
|
73 |
+
*
|
74 |
* @return string
|
75 |
*/
|
76 |
+
public static function parseContent($subject, $stripNewLine = false, $customAttributes = [])
|
77 |
{
|
78 |
+
if ( ! empty($subject)) {
|
79 |
if (empty($customAttributes)) {
|
80 |
$customAttributes = self::parseContentAttributesFromString($subject);
|
81 |
}
|
82 |
|
83 |
+
$content = preg_replace('/(\[' . EMBEDPRESS_SHORTCODE . '(?:\]|.+?\])|\[\/' . EMBEDPRESS_SHORTCODE . '\])/i',
|
84 |
+
"", $subject);
|
85 |
|
86 |
// Converts any special HTML entities back to characters.
|
87 |
$content = htmlspecialchars_decode($content);
|
88 |
|
89 |
// Check if the WP_oEmbed class is loaded
|
90 |
+
if ( ! self::$oEmbedInstance) {
|
91 |
+
require_once ABSPATH . 'wp-includes/class-oembed.php';
|
92 |
|
93 |
self::$oEmbedInstance = _wp_oembed_get_object();
|
94 |
}
|
95 |
|
96 |
+
$emberaInstanceSettings = [
|
97 |
+
'params' => [],
|
98 |
+
];
|
99 |
|
100 |
+
$content_uid = md5($content);
|
101 |
|
102 |
$attributes = self::parseContentAttributes($customAttributes, $content_uid);
|
103 |
if (isset($attributes['width']) || isset($attributes['height'])) {
|
122 |
$emberaInstance = new Embera($emberaInstanceSettings);
|
123 |
// Add support to the user's custom service providers
|
124 |
$additionalServiceProviders = Core::getAdditionalServiceProviders();
|
125 |
+
if ( ! empty($additionalServiceProviders)) {
|
126 |
foreach ($additionalServiceProviders as $serviceProviderClassName => $serviceProviderUrls) {
|
127 |
self::addServiceProvider($serviceProviderClassName, $serviceProviderUrls, $emberaInstance);
|
128 |
}
|
152 |
}
|
153 |
|
154 |
// Transform all shortcode attributes into html form. I.e.: {foo: "joe"} -> foo="joe"
|
155 |
+
$attributesHtml = [];
|
156 |
foreach ($attributes as $attrName => $attrValue) {
|
157 |
+
$attributesHtml[] = $attrName . '="' . $attrValue . '"';
|
158 |
}
|
159 |
|
160 |
// Define the EmbedPress html template where the generated embed will be injected in
|
161 |
+
$embedTemplate = '<div ' . implode(' ', $attributesHtml) . '>{html}</div>';
|
162 |
|
163 |
// Check if $content is a google shortened url and tries to extract from it which Google service it refers to.
|
164 |
if (preg_match('/http[s]?:\/\/goo\.gl\/(?:([a-z]+)\/)?[a-z0-9]+\/?$/i', $content, $matches)) {
|
165 |
// Fetch all headers from the short-url so we can know how to handle its original content depending on the service.
|
166 |
$headers = get_headers($content);
|
167 |
|
168 |
+
$supportedServicesHeadersPatterns = [
|
169 |
+
'maps' => '/^Location:\s+(http[s]?:\/\/.+)$/i',
|
170 |
+
];
|
171 |
|
172 |
$service = isset($matches[1]) ? strtolower($matches[1]) : null;
|
173 |
// No specific service was found in the url.
|
186 |
// Check if the Google service is supported atm.
|
187 |
if (isset($supportedServicesHeadersPatterns[$service])) {
|
188 |
// Tries to extract the url based on its headers.
|
189 |
+
$originalUrl = self::extractContentFromHeaderAsArray($supportedServicesHeadersPatterns[$service],
|
190 |
+
$headers);
|
191 |
// Replace the shortened url with its original url if the specific header was found.
|
192 |
+
if ( ! empty($originalUrl)) {
|
193 |
$content = $originalUrl;
|
194 |
}
|
195 |
unset($originalUrl);
|
200 |
|
201 |
// Facebook is a special case. WordPress will try to embed them using OEmbed, but they always end up embedding the profile page, regardless
|
202 |
// if the url was pointing to a photo, a post, etc. So, since Embera can embed only facebook-media/posts, we'll use it only for that.
|
203 |
+
if (isset($urlData->provider_name) && in_array($urlData->provider_name, ['Facebook'])) {
|
204 |
// Check if this is a Facebook profile url.
|
205 |
if (preg_match('/facebook\.com\/(?:[^\/]+?)\/?$/', $content, $match)) {
|
206 |
// Try to embed the url using WP's OSEmbed.
|
214 |
$parsedContent = self::$oEmbedInstance->get_html($content, $attributes);
|
215 |
}
|
216 |
|
217 |
+
if ( ! $parsedContent) {
|
218 |
+
if ( ! isset($emberaInstance)) {
|
219 |
// If the embed couldn't be generated, we'll try to use Embera's API
|
220 |
$emberaInstance = new Embera($emberaInstanceSettings);
|
221 |
// Add support to the user's custom service providers
|
222 |
$additionalServiceProviders = Core::getAdditionalServiceProviders();
|
223 |
+
if ( ! empty($additionalServiceProviders)) {
|
224 |
foreach ($additionalServiceProviders as $serviceProviderClassName => $serviceProviderUrls) {
|
225 |
self::addServiceProvider($serviceProviderClassName, $serviceProviderUrls, $emberaInstance);
|
226 |
}
|
245 |
$parsedContent = str_replace("'", '"', $parsedContent);
|
246 |
|
247 |
// Replace the flag `{provider_alias}` which is used by Embera with the "ose-<serviceProviderAlias>". I.e: YouTube -> "ose-youtube"
|
248 |
+
$parsedContent = preg_replace('/((?:ose-)?\{provider_alias\})/i',
|
249 |
+
"ose-" . strtolower($urlData->provider_name), $parsedContent);
|
250 |
}
|
251 |
|
252 |
if (isset($urlData->provider_name) || (is_array($urlData) && isset($urlData[$content]['provider_name']))) {
|
253 |
// NFB seems to always return their embed code with all HTML entities into their applicable characters string.
|
254 |
if ((isset($urlData->provider_name) && strtoupper($urlData->provider_name) === "NATIONAL FILM BOARD OF CANADA") || (is_array($urlData) && isset($urlData[$content]['provider_name']) && strtoupper($urlData[$content]['provider_name']) === "NATIONAL FILM BOARD OF CANADA")) {
|
255 |
$parsedContent = html_entity_decode($parsedContent);
|
256 |
+
} elseif ((isset($urlData->provider_name) && strtoupper($urlData->provider_name) === "FACEBOOK") || (is_array($urlData) && isset($urlData[$content]['provider_name']) && strtoupper($urlData[$content]['provider_name']) === "FACEBOOK")) {
|
257 |
$plgSettings = Core::getSettings();
|
258 |
|
259 |
// Check if the user wants to force a certain language into Facebook embeds.
|
260 |
+
$locale = isset($plgSettings->fbLanguage) && ! empty($plgSettings->fbLanguage) ? $plgSettings->fbLanguage : false;
|
261 |
+
if ( ! ! $locale) {
|
262 |
// Replace the automatically detected language by Facebook's API with the language chosen by the user.
|
263 |
+
$parsedContent = preg_replace('/\/[a-z]{2}\_[a-z]{2}\/sdk\.js/i', "/{$locale}/sdk.js",
|
264 |
+
$parsedContent);
|
265 |
}
|
266 |
|
267 |
// Make sure `adapt_container_width` parameter is set to false. Setting to true, as it is by default, might cause Facebook to render embeds inside editors (in admin) with only 180px wide.
|
268 |
if (is_admin()) {
|
269 |
+
$parsedContent = preg_replace('~data\-adapt\-container\-width=\"(?:true|1)\"~i',
|
270 |
+
'data-adapt-container-width="0"', $parsedContent);
|
271 |
}
|
272 |
|
273 |
unset($locale, $plgSettings);
|
279 |
// This assure that the iframe has the same dimensions the user wants to
|
280 |
if (isset($emberaInstanceSettings['params']['width']) || isset($emberaInstanceSettings['params']['height'])) {
|
281 |
if (isset($emberaInstanceSettings['params']['width']) && isset($emberaInstanceSettings['params']['height'])) {
|
282 |
+
$customWidth = (int)$emberaInstanceSettings['params']['width'];
|
283 |
$customHeight = (int)$emberaInstanceSettings['params']['height'];
|
284 |
} else {
|
285 |
if (preg_match('~width="(\d+)"|width\s+:\s+(\d+)~i', $parsedContent, $matches)) {
|
294 |
$iframeRatio = ceil($iframeWidth / $iframeHeight);
|
295 |
|
296 |
if (isset($emberaInstanceSettings['params']['width'])) {
|
297 |
+
$customWidth = (int)$emberaInstanceSettings['params']['width'];
|
298 |
$customHeight = ceil($customWidth / $iframeRatio);
|
299 |
} else {
|
300 |
$customHeight = (int)$emberaInstanceSettings['params']['height'];
|
301 |
+
$customWidth = $iframeRatio * $customHeight;
|
302 |
}
|
303 |
}
|
304 |
}
|
305 |
|
306 |
if (isset($customWidth) && isset($customHeight)) {
|
307 |
if (preg_match('~width="(\d+)"~i', $parsedContent)) {
|
308 |
+
$parsedContent = preg_replace('~width="(\d+)"~i', 'width="' . $customWidth . '"',
|
309 |
+
$parsedContent);
|
310 |
}
|
311 |
|
312 |
if (preg_match('~height="(\d+)"~i', $parsedContent)) {
|
313 |
+
$parsedContent = preg_replace('~height="(\d+)"~i', 'height="' . $customHeight . '"',
|
314 |
+
$parsedContent);
|
315 |
}
|
316 |
|
317 |
if (preg_match('~width\s+:\s+(\d+)~i', $parsedContent)) {
|
318 |
+
$parsedContent = preg_replace('~width\s+:\s+(\d+)~i', 'width: ' . $customWidth, $parseContent);
|
319 |
}
|
320 |
|
321 |
if (preg_match('~height\s+:\s+(\d+)~i', $parsedContent)) {
|
322 |
+
$parsedContent = preg_replace('~height\s+:\s+(\d+)~i', 'height: ' . $customHeight,
|
323 |
+
$parseContent);
|
324 |
}
|
325 |
}
|
326 |
}
|
331 |
|
332 |
$parsedContent = apply_filters('pp_embed_parsed_content', $parsedContent, $urlData, $attributes);
|
333 |
|
334 |
+
if ( ! empty($parsedContent)) {
|
335 |
+
$embed = (object)array_merge((array)$urlData, [
|
336 |
'attributes' => (object)$attributes,
|
337 |
'embed' => $parsedContent,
|
338 |
+
'url' => $content,
|
339 |
+
]);
|
340 |
|
341 |
$embed = apply_filters('embedpress:onAfterEmbed', $embed);
|
342 |
|
353 |
* @since 1.0.0
|
354 |
* @static
|
355 |
*
|
356 |
+
* @param string $className The new SP class name.
|
357 |
+
* @param string $reference The new SP reference name.
|
358 |
+
* @param \Embera\Embera $emberaInstance The embera's instance where the SP will be registered in.
|
359 |
+
*
|
360 |
* @return boolean
|
361 |
*/
|
362 |
public static function addServiceProvider($className, $reference, &$emberaInstance)
|
366 |
}
|
367 |
|
368 |
if (is_string($reference)) {
|
369 |
+
$emberaInstance->addProvider($reference, EMBEDPRESS_NAMESPACE . "\\Providers\\{$className}");
|
370 |
+
} elseif (is_array($reference)) {
|
371 |
foreach ($reference as $serviceProviderUrl) {
|
372 |
self::addServiceProvider($className, $serviceProviderUrl, $emberaInstance);
|
373 |
}
|
382 |
* @since 1.0.0
|
383 |
* @static
|
384 |
*
|
385 |
+
* @param string $subject The given shortcoded string.
|
386 |
+
*
|
387 |
* @return array
|
388 |
*/
|
389 |
public static function parseContentAttributesFromString($subject)
|
390 |
{
|
391 |
+
$customAttributes = [];
|
392 |
if (preg_match('/\[embed\s*(.*?)\]/i', stripslashes($subject), $m)) {
|
393 |
if (preg_match_all('/(\!?\w+-?\w*)(?:="(.+?)")?/i', stripslashes($m[1]), $matches)) {
|
394 |
$attributes = $matches[1];
|
410 |
* @access private
|
411 |
* @static
|
412 |
*
|
413 |
+
* @param array $customAttributes The array containing the embed attributes.
|
414 |
+
* @param string $content_uid An optional string specifying a unique ID for the embed
|
415 |
+
*
|
416 |
* @return array
|
417 |
*/
|
418 |
private static function parseContentAttributes(array $customAttributes, $content_uid = null)
|
419 |
{
|
420 |
+
$attributes = [
|
421 |
+
'class' => ["embedpress-wrapper"],
|
422 |
+
];
|
423 |
|
424 |
+
$embedShouldBeResponsive = true;
|
425 |
$embedShouldHaveCustomDimensions = false;
|
426 |
+
if ( ! empty($customAttributes)) {
|
427 |
if (isset($customAttributes['class'])) {
|
428 |
+
if ( ! empty($customAttributes['class'])) {
|
429 |
$customAttributes['class'] = explode(' ', $customAttributes['class']);
|
430 |
|
431 |
$attributes['class'] = array_merge($attributes['class'], $customAttributes['class']);
|
435 |
}
|
436 |
|
437 |
if (isset($customAttributes['width'])) {
|
438 |
+
if ( ! empty($customAttributes['width'])) {
|
439 |
+
$attributes['width'] = (int)$customAttributes['width'];
|
440 |
$embedShouldHaveCustomDimensions = true;
|
441 |
}
|
442 |
}
|
443 |
|
444 |
if (isset($customAttributes['height'])) {
|
445 |
+
if ( ! empty($customAttributes['height'])) {
|
446 |
+
$attributes['height'] = (int)$customAttributes['height'];
|
447 |
$embedShouldHaveCustomDimensions = true;
|
448 |
}
|
449 |
}
|
450 |
|
451 |
+
if ( ! empty($customAttributes)) {
|
452 |
$attrNameDefaultPrefix = "data-";
|
453 |
foreach ($customAttributes as $attrName => $attrValue) {
|
454 |
if (is_numeric($attrName)) {
|
455 |
+
$attrName = $attrValue;
|
456 |
$attrValue = "";
|
457 |
}
|
458 |
|
459 |
$attrName = str_replace($attrNameDefaultPrefix, "", $attrName);
|
460 |
|
461 |
+
if ( ! strlen($attrValue)) {
|
462 |
if ($attrName[0] === "!") {
|
463 |
$attrValue = "false";
|
464 |
+
$attrName = substr($attrName, 1);
|
465 |
} else {
|
466 |
$attrValue = "true";
|
467 |
}
|
472 |
}
|
473 |
|
474 |
// Check if there's any "responsive" parameter
|
475 |
+
$responsiveAttributes = ["responsive", "data-responsive"];
|
476 |
foreach ($responsiveAttributes as $responsiveAttr) {
|
477 |
if (isset($attributes[$responsiveAttr])) {
|
478 |
+
if ( ! strlen($attributes[$responsiveAttr])) { // If the parameter is passed but have no value, it will be true by default
|
479 |
$embedShouldBeResponsive = true;
|
480 |
} else {
|
481 |
+
$embedShouldBeResponsive = ! self::valueIsFalse($attributes[$responsiveAttr]);
|
482 |
}
|
483 |
|
484 |
break;
|
489 |
|
490 |
$attributes['class'][] = 'ose-{provider_alias}';
|
491 |
|
492 |
+
if ( ! empty($content_uid)) {
|
493 |
$attributes['class'][] = 'ose-uid-' . $content_uid;
|
494 |
}
|
495 |
|
496 |
+
if ($embedShouldBeResponsive && ! $embedShouldHaveCustomDimensions) {
|
497 |
$attributes['class'][] = 'responsive';
|
498 |
} else {
|
499 |
$attributes['data-responsive'] = "false";
|
510 |
* @since 1.0.0
|
511 |
* @static
|
512 |
*
|
513 |
+
* @param mixed $subject The value to be checked.
|
514 |
+
*
|
515 |
* @return boolean
|
516 |
*/
|
517 |
public static function valueIsFalse($subject)
|
539 |
* @access private
|
540 |
* @static
|
541 |
*
|
542 |
+
* @param string $headerPattern Regex pattern the header and its value must match.
|
543 |
+
* @param array $headersList A list of headers resulted from a get_headers() call.
|
544 |
*
|
545 |
* @return mixed
|
546 |
*/
|
580 |
if (substr_count($key, '-')) {
|
581 |
unset($data->$key);
|
582 |
|
583 |
+
$key = str_replace('-', '_', $key);
|
584 |
$data->$key = $value;
|
585 |
}
|
586 |
}
|
589 |
if (substr_count($key, '-')) {
|
590 |
unset($data[$key]);
|
591 |
|
592 |
+
$key = str_replace('-', '_', $key);
|
593 |
$data[$key] = $value;
|
594 |
}
|
595 |
}
|
EmbedPress/ThirdParty/BeaverBuilder.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
namespace EmbedPress\ThirdParty;
|
3 |
|
4 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
@@ -24,20 +25,20 @@ class BeaverBuilder
|
|
24 |
*/
|
25 |
public static function before_render_shortcodes($content)
|
26 |
{
|
27 |
-
|
28 |
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
|
33 |
-
|
34 |
|
35 |
-
|
36 |
-
|
37 |
|
38 |
-
|
39 |
-
|
40 |
|
41 |
-
|
42 |
}
|
43 |
}
|
1 |
<?php
|
2 |
+
|
3 |
namespace EmbedPress\ThirdParty;
|
4 |
|
5 |
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
|
25 |
*/
|
26 |
public static function before_render_shortcodes($content)
|
27 |
{
|
28 |
+
global $shortcode_tags;
|
29 |
|
30 |
+
// Back up current registered shortcodes and clear them all out
|
31 |
+
$orig_shortcode_tags = $shortcode_tags;
|
32 |
+
remove_all_shortcodes();
|
33 |
|
34 |
+
add_shortcode(EMBEDPRESS_SHORTCODE, ['\\EmbedPress\\Shortcode', 'do_shortcode']);
|
35 |
|
36 |
+
// Do the shortcode (only the [embed] one is registered)
|
37 |
+
$content = do_shortcode($content, true);
|
38 |
|
39 |
+
// Put the original shortcodes back
|
40 |
+
$shortcode_tags = $orig_shortcode_tags;
|
41 |
|
42 |
+
return $content;
|
43 |
}
|
44 |
}
|
EmbedPress/index.html
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
</html>
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
+
<head>
|
4 |
+
<title>403 Forbidden</title>
|
5 |
+
</head>
|
6 |
+
<body>
|
7 |
+
<p>Directory access is forbidden.</p>
|
8 |
+
</body>
|
9 |
</html>
|
assets/css/font.css
CHANGED
@@ -7,15 +7,16 @@
|
|
7 |
*/
|
8 |
|
9 |
@font-face {
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
}
|
|
|
19 |
/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
|
20 |
/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
|
21 |
/*
|
@@ -27,68 +28,80 @@
|
|
27 |
}
|
28 |
*/
|
29 |
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
margin-right: .2em;
|
40 |
-
text-align: center;
|
41 |
-
/* opacity: .8; */
|
42 |
|
43 |
-
|
44 |
-
|
45 |
-
text-transform: none;
|
46 |
|
47 |
-
|
48 |
-
|
|
|
49 |
|
50 |
-
|
51 |
-
|
52 |
-
margin-left: .2em;
|
53 |
|
54 |
-
|
55 |
-
|
|
|
56 |
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
|
61 |
-
|
62 |
-
|
63 |
}
|
64 |
|
65 |
-
.embedpress-icon-
|
66 |
-
|
67 |
-
|
|
|
|
|
|
|
|
|
68 |
|
69 |
.embedpress-icon-reload {
|
70 |
-
|
71 |
-
|
|
|
|
|
|
|
|
|
72 |
}
|
73 |
-
.embedpress-icon-reload:before{content:'\0044';}
|
74 |
|
75 |
@-webkit-keyframes embedpress-spin {
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
}
|
|
|
85 |
@keyframes embedpress-spin {
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
}
|
7 |
*/
|
8 |
|
9 |
@font-face {
|
10 |
+
font-family: 'EmbedPress';
|
11 |
+
src: url('../fonts/embedpress.eot?80956116');
|
12 |
+
src: url('../fonts/embedpress.eot?80956116#iefix') format('embedded-opentype'),
|
13 |
+
url('../fonts/embedpress.woff?80956116') format('woff'),
|
14 |
+
url('../fonts/embedpress.ttf?80956116') format('truetype'),
|
15 |
+
url('../fonts/embedpress.svg?80956116#embedpress') format('svg');
|
16 |
+
font-weight: normal;
|
17 |
+
font-style: normal;
|
18 |
}
|
19 |
+
|
20 |
/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
|
21 |
/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
|
22 |
/*
|
28 |
}
|
29 |
*/
|
30 |
|
31 |
+
[class^="embedpress-icon-"]:before, [class*=" embedpress-icon-"]:before {
|
32 |
+
font-family: "EmbedPress";
|
33 |
+
font-style: normal;
|
34 |
+
font-weight: normal;
|
35 |
+
speak: none;
|
36 |
+
|
37 |
+
display: inline-block;
|
38 |
+
text-decoration: inherit;
|
39 |
+
width: 1em;
|
40 |
+
margin-right: .2em;
|
41 |
+
text-align: center;
|
42 |
+
/* opacity: .8; */
|
43 |
|
44 |
+
/* For safety - reset parent styles, that can break glyph codes*/
|
45 |
+
font-variant: normal;
|
46 |
+
text-transform: none;
|
|
|
|
|
|
|
47 |
|
48 |
+
/* fix buttons height, for twitter bootstrap */
|
49 |
+
line-height: 1em;
|
|
|
50 |
|
51 |
+
/* Animation center compensation - margins should be symmetric */
|
52 |
+
/* remove if not needed */
|
53 |
+
margin-left: .2em;
|
54 |
|
55 |
+
/* you can be more comfortable with increased icons size */
|
56 |
+
/* font-size: 120%; */
|
|
|
57 |
|
58 |
+
/* Font smoothing. That was taken from TWBS */
|
59 |
+
-webkit-font-smoothing: antialiased;
|
60 |
+
-moz-osx-font-smoothing: grayscale;
|
61 |
|
62 |
+
/* Uncomment for 3D effect */
|
63 |
+
/* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
|
64 |
+
}
|
65 |
|
66 |
+
.embedpress-icon-pencil:before {
|
67 |
+
content: '\0041';
|
68 |
}
|
69 |
|
70 |
+
.embedpress-icon-gear:before {
|
71 |
+
content: '\0042';
|
72 |
+
}
|
73 |
+
|
74 |
+
.embedpress-icon-x:before {
|
75 |
+
content: '\0043';
|
76 |
+
}
|
77 |
|
78 |
.embedpress-icon-reload {
|
79 |
+
-webkit-animation: embedpress-spin 2s infinite linear;
|
80 |
+
animation: embedpress-spin 2s infinite linear;
|
81 |
+
}
|
82 |
+
|
83 |
+
.embedpress-icon-reload:before {
|
84 |
+
content: '\0044';
|
85 |
}
|
|
|
86 |
|
87 |
@-webkit-keyframes embedpress-spin {
|
88 |
+
0% {
|
89 |
+
-webkit-transform: rotate(0deg);
|
90 |
+
transform: rotate(0deg);
|
91 |
+
}
|
92 |
+
100% {
|
93 |
+
-webkit-transform: rotate(359deg);
|
94 |
+
transform: rotate(359deg);
|
95 |
+
}
|
96 |
}
|
97 |
+
|
98 |
@keyframes embedpress-spin {
|
99 |
+
0% {
|
100 |
+
-webkit-transform: rotate(0deg);
|
101 |
+
transform: rotate(0deg);
|
102 |
+
}
|
103 |
+
100% {
|
104 |
+
-webkit-transform: rotate(359deg);
|
105 |
+
transform: rotate(359deg);
|
106 |
+
}
|
107 |
}
|
assets/css/index.html
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
</html>
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
+
<head>
|
4 |
+
<title>403 Forbidden</title>
|
5 |
+
</head>
|
6 |
+
<body>
|
7 |
+
<p>Directory access is forbidden.</p>
|
8 |
+
</body>
|
9 |
</html>
|
assets/css/preview.css
CHANGED
@@ -124,22 +124,22 @@
|
|
124 |
}
|
125 |
|
126 |
.modal {
|
127 |
-
|
128 |
}
|
129 |
|
130 |
@media screen and (min-width: 768px) {
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
}
|
138 |
|
139 |
.modal-dialog {
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
}
|
144 |
|
145 |
span.hidden {
|
124 |
}
|
125 |
|
126 |
.modal {
|
127 |
+
text-align: center;
|
128 |
}
|
129 |
|
130 |
@media screen and (min-width: 768px) {
|
131 |
+
.modal:before {
|
132 |
+
display: inline-block;
|
133 |
+
vertical-align: middle;
|
134 |
+
content: " ";
|
135 |
+
height: 100%;
|
136 |
+
}
|
137 |
}
|
138 |
|
139 |
.modal-dialog {
|
140 |
+
display: inline-block;
|
141 |
+
text-align: left;
|
142 |
+
vertical-align: middle;
|
143 |
}
|
144 |
|
145 |
span.hidden {
|
assets/css/vendor/bootstrap/bootstrap.css
CHANGED
@@ -8,177 +8,218 @@
|
|
8 |
*/
|
9 |
|
10 |
.embedpress-modal fieldset {
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
|
|
15 |
|
16 |
.embedpress-modal legend {
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
|
|
26 |
|
27 |
.embedpress-modal label {
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
|
|
32 |
|
33 |
.embedpress-modal input[type="search"] {
|
34 |
-
|
|
|
35 |
|
36 |
.embedpress-modal input[type="radio"],
|
37 |
.embedpress-modal input[type="checkbox"] {
|
38 |
-
|
39 |
-
|
40 |
-
|
|
|
41 |
|
42 |
.embedpress-modal input[type="file"] {
|
43 |
-
|
|
|
44 |
|
45 |
.embedpress-modal input[type="range"] {
|
46 |
-
|
47 |
-
|
|
|
48 |
|
49 |
.embedpress-modal select[multiple],
|
50 |
.embedpress-modal select[size] {
|
51 |
-
|
|
|
52 |
|
53 |
.embedpress-modal input[type="file"]:focus,
|
54 |
.embedpress-modal input[type="radio"]:focus,
|
55 |
.embedpress-modal input[type="checkbox"]:focus {
|
56 |
-
|
57 |
-
|
|
|
58 |
|
59 |
.embedpress-modal output {
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
|
|
65 |
|
66 |
.embedpress-modal .form-control {
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
|
|
|
|
81 |
border-color: #66afe9;
|
82 |
outline: 0;
|
83 |
-
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
|
84 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
color: #999;
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
|
|
92 |
border: 0;
|
93 |
-
background-color: transparent;
|
94 |
-
|
95 |
-
|
|
|
|
|
96 |
background-color: #eeeeee;
|
97 |
-
opacity: 1;
|
98 |
-
|
99 |
-
|
100 |
-
|
|
|
|
|
|
|
101 |
|
102 |
.embedpress-modal textarea.form-control {
|
103 |
-
|
|
|
104 |
|
105 |
.embedpress-modal input[type="search"] {
|
106 |
-
|
|
|
107 |
|
108 |
@media screen and (-webkit-min-device-pixel-ratio: 0) {
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
138 |
|
139 |
.embedpress-modal .form-group {
|
140 |
-
|
|
|
141 |
|
142 |
.embedpress-modal .radio,
|
143 |
.embedpress-modal .checkbox {
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
|
|
|
|
150 |
min-height: 20px;
|
151 |
padding-left: 20px;
|
152 |
margin-bottom: 0;
|
153 |
font-weight: normal;
|
154 |
-
cursor: pointer;
|
|
|
155 |
|
156 |
.embedpress-modal .radio input[type="radio"],
|
157 |
.embedpress-modal .radio-inline input[type="radio"],
|
158 |
.embedpress-modal .checkbox input[type="checkbox"],
|
159 |
.embedpress-modal .checkbox-inline input[type="checkbox"] {
|
160 |
-
|
161 |
-
|
162 |
-
|
|
|
163 |
|
164 |
.embedpress-modal .radio + .radio,
|
165 |
.embedpress-modal .checkbox + .checkbox {
|
166 |
-
|
|
|
167 |
|
168 |
.embedpress-modal .radio-inline,
|
169 |
.embedpress-modal .checkbox-inline {
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
|
|
177 |
|
178 |
.embedpress-modal .radio-inline + .radio-inline,
|
179 |
.embedpress-modal .checkbox-inline + .checkbox-inline {
|
180 |
-
|
181 |
-
|
|
|
182 |
|
183 |
.embedpress-modal input[type="radio"][disabled], .embedpress-modal input[type="radio"].disabled,
|
184 |
fieldset[disabled] .embedpress-modal input[type="radio"],
|
@@ -186,135 +227,161 @@ fieldset[disabled] .embedpress-modal input[type="radio"],
|
|
186 |
.embedpress-modal input[type="checkbox"].disabled,
|
187 |
fieldset[disabled]
|
188 |
.embedpress-modal input[type="checkbox"] {
|
189 |
-
|
|
|
190 |
|
191 |
.embedpress-modal .radio-inline.disabled,
|
192 |
fieldset[disabled] .embedpress-modal .radio-inline,
|
193 |
.embedpress-modal .checkbox-inline.disabled,
|
194 |
fieldset[disabled]
|
195 |
.embedpress-modal .checkbox-inline {
|
196 |
-
|
|
|
197 |
|
198 |
.embedpress-modal .radio.disabled label,
|
199 |
fieldset[disabled] .embedpress-modal .radio label,
|
200 |
.embedpress-modal .checkbox.disabled label,
|
201 |
fieldset[disabled]
|
202 |
.embedpress-modal .checkbox label {
|
203 |
-
|
|
|
204 |
|
205 |
.embedpress-modal .form-control-static {
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
|
|
|
|
211 |
padding-left: 0;
|
212 |
-
padding-right: 0;
|
|
|
213 |
|
214 |
.embedpress-modal .input-sm, .embedpress-modal .input-group-sm > .form-control, .embedpress-modal .input-group-sm > .input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > .btn {
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
|
|
220 |
|
221 |
.embedpress-modal select.input-sm, .embedpress-modal .input-group-sm > select.form-control, .embedpress-modal .input-group-sm > select.input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > select.btn {
|
222 |
-
|
223 |
-
|
|
|
224 |
|
225 |
.embedpress-modal textarea.input-sm, .embedpress-modal .input-group-sm > textarea.form-control, .embedpress-modal .input-group-sm > textarea.input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > textarea.btn,
|
226 |
.embedpress-modal select[multiple].input-sm, .embedpress-modal .input-group-sm > select[multiple].form-control, .embedpress-modal .input-group-sm > select[multiple].input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > select[multiple].btn {
|
227 |
-
|
|
|
228 |
|
229 |
.embedpress-modal .form-group-sm .form-control {
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
|
|
235 |
|
236 |
.embedpress-modal .form-group-sm select.form-control {
|
237 |
-
|
238 |
-
|
|
|
239 |
|
240 |
.embedpress-modal .form-group-sm textarea.form-control,
|
241 |
.embedpress-modal .form-group-sm select[multiple].form-control {
|
242 |
-
|
|
|
243 |
|
244 |
.embedpress-modal .form-group-sm .form-control-static {
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
|
|
250 |
|
251 |
.embedpress-modal .input-lg, .embedpress-modal .input-group-lg > .form-control, .embedpress-modal .input-group-lg > .input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > .btn {
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
|
|
257 |
|
258 |
.embedpress-modal select.input-lg, .embedpress-modal .input-group-lg > select.form-control, .embedpress-modal .input-group-lg > select.input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > select.btn {
|
259 |
-
|
260 |
-
|
|
|
261 |
|
262 |
.embedpress-modal textarea.input-lg, .embedpress-modal .input-group-lg > textarea.form-control, .embedpress-modal .input-group-lg > textarea.input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > textarea.btn,
|
263 |
.embedpress-modal select[multiple].input-lg, .embedpress-modal .input-group-lg > select[multiple].form-control, .embedpress-modal .input-group-lg > select[multiple].input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > select[multiple].btn {
|
264 |
-
|
|
|
265 |
|
266 |
.embedpress-modal .form-group-lg .form-control {
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
|
|
272 |
|
273 |
.embedpress-modal .form-group-lg select.form-control {
|
274 |
-
|
275 |
-
|
|
|
276 |
|
277 |
.embedpress-modal .form-group-lg textarea.form-control,
|
278 |
.embedpress-modal .form-group-lg select[multiple].form-control {
|
279 |
-
|
|
|
280 |
|
281 |
.embedpress-modal .form-group-lg .form-control-static {
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
|
|
287 |
|
288 |
.embedpress-modal .has-feedback {
|
289 |
-
|
290 |
-
|
291 |
-
|
|
|
|
|
|
|
292 |
|
293 |
.embedpress-modal .form-control-feedback {
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
|
|
304 |
|
305 |
.embedpress-modal .input-lg + .form-control-feedback, .embedpress-modal .input-group-lg > .form-control + .form-control-feedback, .embedpress-modal .input-group-lg > .input-group-addon + .form-control-feedback, .embedpress-modal .input-group-lg > .input-group-btn > .btn + .form-control-feedback,
|
306 |
.embedpress-modal .input-group-lg + .form-control-feedback,
|
307 |
.embedpress-modal .form-group-lg .form-control + .form-control-feedback {
|
308 |
-
|
309 |
-
|
310 |
-
|
|
|
311 |
|
312 |
.embedpress-modal .input-sm + .form-control-feedback, .embedpress-modal .input-group-sm > .form-control + .form-control-feedback, .embedpress-modal .input-group-sm > .input-group-addon + .form-control-feedback, .embedpress-modal .input-group-sm > .input-group-btn > .btn + .form-control-feedback,
|
313 |
.embedpress-modal .input-group-sm + .form-control-feedback,
|
314 |
.embedpress-modal .form-group-sm .form-control + .form-control-feedback {
|
315 |
-
|
316 |
-
|
317 |
-
|
|
|
318 |
|
319 |
.embedpress-modal .has-success .help-block,
|
320 |
.embedpress-modal .has-success .control-label,
|
@@ -326,22 +393,28 @@ fieldset[disabled]
|
|
326 |
.embedpress-modal .has-success.checkbox label,
|
327 |
.embedpress-modal .has-success.radio-inline label,
|
328 |
.embedpress-modal .has-success.checkbox-inline label {
|
329 |
-
|
|
|
330 |
|
331 |
.embedpress-modal .has-success .form-control {
|
332 |
-
|
333 |
-
|
334 |
-
|
|
|
|
|
335 |
border-color: #2b542c;
|
336 |
-
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
|
|
|
337 |
|
338 |
.embedpress-modal .has-success .input-group-addon {
|
339 |
-
|
340 |
-
|
341 |
-
|
|
|
342 |
|
343 |
.embedpress-modal .has-success .form-control-feedback {
|
344 |
-
|
|
|
345 |
|
346 |
.embedpress-modal .has-warning .help-block,
|
347 |
.embedpress-modal .has-warning .control-label,
|
@@ -353,22 +426,28 @@ fieldset[disabled]
|
|
353 |
.embedpress-modal .has-warning.checkbox label,
|
354 |
.embedpress-modal .has-warning.radio-inline label,
|
355 |
.embedpress-modal .has-warning.checkbox-inline label {
|
356 |
-
|
|
|
357 |
|
358 |
.embedpress-modal .has-warning .form-control {
|
359 |
-
|
360 |
-
|
361 |
-
|
|
|
|
|
362 |
border-color: #66512c;
|
363 |
-
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
|
|
|
364 |
|
365 |
.embedpress-modal .has-warning .input-group-addon {
|
366 |
-
|
367 |
-
|
368 |
-
|
|
|
369 |
|
370 |
.embedpress-modal .has-warning .form-control-feedback {
|
371 |
-
|
|
|
372 |
|
373 |
.embedpress-modal .has-error .help-block,
|
374 |
.embedpress-modal .has-error .control-label,
|
@@ -380,649 +459,879 @@ fieldset[disabled]
|
|
380 |
.embedpress-modal .has-error.checkbox label,
|
381 |
.embedpress-modal .has-error.radio-inline label,
|
382 |
.embedpress-modal .has-error.checkbox-inline label {
|
383 |
-
|
|
|
384 |
|
385 |
.embedpress-modal .has-error .form-control {
|
386 |
-
|
387 |
-
|
388 |
-
|
|
|
|
|
389 |
border-color: #843534;
|
390 |
-
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
|
|
|
391 |
|
392 |
.embedpress-modal .has-error .input-group-addon {
|
393 |
-
|
394 |
-
|
395 |
-
|
|
|
396 |
|
397 |
.embedpress-modal .has-error .form-control-feedback {
|
398 |
-
|
|
|
399 |
|
400 |
.embedpress-modal .has-feedback label ~ .form-control-feedback {
|
401 |
-
|
|
|
402 |
|
403 |
.embedpress-modal .has-feedback label.sr-only ~ .form-control-feedback {
|
404 |
-
|
|
|
405 |
|
406 |
.embedpress-modal .help-block {
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
|
|
411 |
|
412 |
@media (min-width: 768px) {
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
426 |
.embedpress-modal .form-inline .input-group .input-group-addon,
|
427 |
.embedpress-modal .form-inline .input-group .input-group-btn,
|
428 |
.embedpress-modal .form-inline .input-group .form-control {
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
441 |
.embedpress-modal .form-inline .radio label,
|
442 |
.embedpress-modal .form-inline .checkbox label {
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
450 |
|
451 |
.embedpress-modal .form-horizontal .radio,
|
452 |
.embedpress-modal .form-horizontal .checkbox,
|
453 |
.embedpress-modal .form-horizontal .radio-inline,
|
454 |
.embedpress-modal .form-horizontal .checkbox-inline {
|
455 |
-
|
456 |
-
|
457 |
-
|
|
|
458 |
|
459 |
.embedpress-modal .form-horizontal .radio,
|
460 |
.embedpress-modal .form-horizontal .checkbox {
|
461 |
-
|
|
|
462 |
|
463 |
.embedpress-modal .form-horizontal .form-group {
|
464 |
-
|
465 |
-
|
466 |
-
|
|
|
|
|
467 |
content: " ";
|
468 |
-
display: table;
|
469 |
-
|
470 |
-
|
|
|
|
|
|
|
471 |
|
472 |
@media (min-width: 768px) {
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
|
|
|
|
477 |
|
478 |
.embedpress-modal .form-horizontal .has-feedback .form-control-feedback {
|
479 |
-
|
|
|
480 |
|
481 |
@media (min-width: 768px) {
|
482 |
-
|
483 |
-
|
484 |
-
|
|
|
|
|
485 |
|
486 |
@media (min-width: 768px) {
|
487 |
-
|
488 |
-
|
489 |
-
|
|
|
|
|
490 |
|
491 |
.embedpress-modal .btn {
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
|
|
|
|
512 |
outline: 5px auto -webkit-focus-ring-color;
|
513 |
-
outline-offset: -2px;
|
514 |
-
|
|
|
|
|
515 |
color: #333;
|
516 |
-
text-decoration: none;
|
517 |
-
|
|
|
|
|
518 |
outline: 0;
|
519 |
background-image: none;
|
520 |
-
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
521 |
-
|
522 |
-
|
|
|
|
|
523 |
cursor: not-allowed;
|
524 |
opacity: 0.65;
|
525 |
filter: alpha(opacity=65);
|
526 |
-
box-shadow: none;
|
|
|
527 |
|
528 |
.embedpress-modal a.btn.disabled,
|
529 |
fieldset[disabled] .embedpress-modal a.btn {
|
530 |
-
|
|
|
531 |
|
532 |
.embedpress-modal .btn-default {
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
|
|
|
|
537 |
color: #333;
|
538 |
background-color: #e6e6e6;
|
539 |
-
border-color: #8c8c8c;
|
540 |
-
|
|
|
|
|
541 |
color: #333;
|
542 |
background-color: #e6e6e6;
|
543 |
-
border-color: #adadad;
|
544 |
-
|
545 |
-
|
|
|
|
|
546 |
color: #333;
|
547 |
background-color: #e6e6e6;
|
548 |
-
border-color: #adadad;
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
563 |
background-color: #fff;
|
564 |
-
border-color: #ccc;
|
565 |
-
|
|
|
|
|
566 |
color: #fff;
|
567 |
-
background-color: #333;
|
|
|
568 |
|
569 |
.embedpress-modal .btn-primary {
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
|
|
|
|
574 |
color: #fff;
|
575 |
background-color: #286090;
|
576 |
-
border-color: #122b40;
|
577 |
-
|
|
|
|
|
578 |
color: #fff;
|
579 |
background-color: #286090;
|
580 |
-
border-color: #204d74;
|
581 |
-
|
582 |
-
|
|
|
|
|
583 |
color: #fff;
|
584 |
background-color: #286090;
|
585 |
-
border-color: #204d74;
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
600 |
background-color: #337ab7;
|
601 |
-
border-color: #2e6da4;
|
602 |
-
|
|
|
|
|
603 |
color: #337ab7;
|
604 |
-
background-color: #fff;
|
|
|
605 |
|
606 |
.embedpress-modal .btn-success {
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
|
|
|
|
611 |
color: #fff;
|
612 |
background-color: #449d44;
|
613 |
-
border-color: #255625;
|
614 |
-
|
|
|
|
|
615 |
color: #fff;
|
616 |
background-color: #449d44;
|
617 |
-
border-color: #398439;
|
618 |
-
|
619 |
-
|
|
|
|
|
620 |
color: #fff;
|
621 |
background-color: #449d44;
|
622 |
-
border-color: #398439;
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
637 |
background-color: #5cb85c;
|
638 |
-
border-color: #4cae4c;
|
639 |
-
|
|
|
|
|
640 |
color: #5cb85c;
|
641 |
-
background-color: #fff;
|
|
|
642 |
|
643 |
.embedpress-modal .btn-info {
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
|
|
|
|
648 |
color: #fff;
|
649 |
background-color: #31b0d5;
|
650 |
-
border-color: #1b6d85;
|
651 |
-
|
|
|
|
|
652 |
color: #fff;
|
653 |
background-color: #31b0d5;
|
654 |
-
border-color: #269abc;
|
655 |
-
|
656 |
-
|
|
|
|
|
657 |
color: #fff;
|
658 |
background-color: #31b0d5;
|
659 |
-
border-color: #269abc;
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
674 |
background-color: #5bc0de;
|
675 |
-
border-color: #46b8da;
|
676 |
-
|
|
|
|
|
677 |
color: #5bc0de;
|
678 |
-
background-color: #fff;
|
|
|
679 |
|
680 |
.embedpress-modal .btn-warning {
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
|
|
|
|
685 |
color: #fff;
|
686 |
background-color: #ec971f;
|
687 |
-
border-color: #985f0d;
|
688 |
-
|
|
|
|
|
689 |
color: #fff;
|
690 |
background-color: #ec971f;
|
691 |
-
border-color: #d58512;
|
692 |
-
|
693 |
-
|
|
|
|
|
694 |
color: #fff;
|
695 |
background-color: #ec971f;
|
696 |
-
border-color: #d58512;
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
711 |
background-color: #f0ad4e;
|
712 |
-
border-color: #eea236;
|
713 |
-
|
|
|
|
|
714 |
color: #f0ad4e;
|
715 |
-
background-color: #fff;
|
|
|
716 |
|
717 |
.embedpress-modal .btn-danger {
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
|
|
|
|
722 |
color: #fff;
|
723 |
background-color: #c9302c;
|
724 |
-
border-color: #761c19;
|
725 |
-
|
|
|
|
|
726 |
color: #fff;
|
727 |
background-color: #c9302c;
|
728 |
-
border-color: #ac2925;
|
729 |
-
|
730 |
-
|
|
|
|
|
731 |
color: #fff;
|
732 |
background-color: #c9302c;
|
733 |
-
border-color: #ac2925;
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
748 |
background-color: #d9534f;
|
749 |
-
border-color: #d43f3a;
|
750 |
-
|
|
|
|
|
751 |
color: #d9534f;
|
752 |
-
background-color: #fff;
|
|
|
753 |
|
754 |
.embedpress-modal .btn-link {
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
|
|
|
|
760 |
background-color: transparent;
|
761 |
-
box-shadow: none;
|
762 |
-
|
763 |
-
|
764 |
-
|
|
|
|
|
|
|
|
|
765 |
color: #23527c;
|
766 |
text-decoration: underline;
|
767 |
-
background-color: transparent;
|
768 |
-
|
769 |
-
|
770 |
-
|
|
|
|
|
771 |
color: #777777;
|
772 |
-
text-decoration: none;
|
|
|
773 |
|
774 |
.embedpress-modal .btn-lg, .embedpress-modal .btn-group-lg > .btn {
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
|
|
779 |
|
780 |
.embedpress-modal .btn-sm, .embedpress-modal .btn-group-sm > .btn {
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
|
|
785 |
|
786 |
.embedpress-modal .btn-xs, .embedpress-modal .btn-group-xs > .btn {
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
|
|
791 |
|
792 |
.embedpress-modal .btn-block {
|
793 |
-
|
794 |
-
|
|
|
795 |
|
796 |
.embedpress-modal .btn-block + .btn-block {
|
797 |
-
|
|
|
798 |
|
799 |
.embedpress-modal input[type="submit"].btn-block,
|
800 |
.embedpress-modal input[type="reset"].btn-block,
|
801 |
.embedpress-modal input[type="button"].btn-block {
|
802 |
-
|
|
|
803 |
|
804 |
.embedpress-modal .btn-group,
|
805 |
.embedpress-modal .btn-group-vertical {
|
806 |
-
position: relative;
|
807 |
-
display: inline-block;
|
808 |
-
vertical-align: middle; }
|
809 |
-
.embedpress-modal .btn-group > .btn,
|
810 |
-
.embedpress-modal .btn-group-vertical > .btn {
|
811 |
position: relative;
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
819 |
|
820 |
.embedpress-modal .btn-group .btn + .btn,
|
821 |
.embedpress-modal .btn-group .btn + .btn-group,
|
822 |
.embedpress-modal .btn-group .btn-group + .btn,
|
823 |
.embedpress-modal .btn-group .btn-group + .btn-group {
|
824 |
-
|
|
|
825 |
|
826 |
.embedpress-modal .btn-toolbar {
|
827 |
-
|
828 |
-
|
|
|
|
|
829 |
content: " ";
|
830 |
-
display: table;
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
841 |
|
842 |
.embedpress-modal .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
|
843 |
-
|
|
|
844 |
|
845 |
.embedpress-modal .btn-group > .btn:first-child {
|
846 |
-
|
847 |
-
|
|
|
|
|
848 |
border-bottom-right-radius: 0;
|
849 |
-
border-top-right-radius: 0;
|
|
|
850 |
|
851 |
.embedpress-modal .btn-group > .btn:last-child:not(:first-child),
|
852 |
.embedpress-modal .btn-group > .dropdown-toggle:not(:first-child) {
|
853 |
-
|
854 |
-
|
|
|
855 |
|
856 |
.embedpress-modal .btn-group > .btn-group {
|
857 |
-
|
|
|
858 |
|
859 |
.embedpress-modal .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
|
860 |
-
|
|
|
861 |
|
862 |
.embedpress-modal .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
|
863 |
.embedpress-modal .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
|
864 |
-
|
865 |
-
|
|
|
866 |
|
867 |
.embedpress-modal .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
|
868 |
-
|
869 |
-
|
|
|
870 |
|
871 |
.embedpress-modal .btn-group .dropdown-toggle:active,
|
872 |
.embedpress-modal .btn-group.open .dropdown-toggle {
|
873 |
-
|
|
|
874 |
|
875 |
.embedpress-modal .btn-group > .btn + .dropdown-toggle {
|
876 |
-
|
877 |
-
|
|
|
878 |
|
879 |
.embedpress-modal .btn-group > .btn-lg + .dropdown-toggle, .embedpress-modal .btn-group-lg.btn-group > .btn + .dropdown-toggle {
|
880 |
-
|
881 |
-
|
|
|
882 |
|
883 |
.embedpress-modal .btn-group.open .dropdown-toggle {
|
884 |
-
|
885 |
-
|
886 |
-
|
|
|
|
|
|
|
887 |
|
888 |
.embedpress-modal .btn .caret {
|
889 |
-
|
|
|
890 |
|
891 |
.embedpress-modal .btn-lg .caret, .embedpress-modal .btn-group-lg > .btn .caret {
|
892 |
-
|
893 |
-
|
|
|
894 |
|
895 |
.embedpress-modal .dropup .btn-lg .caret, .embedpress-modal .dropup .btn-group-lg > .btn .caret {
|
896 |
-
|
|
|
897 |
|
898 |
.embedpress-modal .btn-group-vertical > .btn,
|
899 |
.embedpress-modal .btn-group-vertical > .btn-group,
|
900 |
.embedpress-modal .btn-group-vertical > .btn-group > .btn {
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
|
|
905 |
|
906 |
.embedpress-modal .btn-group-vertical > .btn-group:before, .embedpress-modal .btn-group-vertical > .btn-group:after {
|
907 |
-
|
908 |
-
|
|
|
909 |
|
910 |
.embedpress-modal .btn-group-vertical > .btn-group:after {
|
911 |
-
|
|
|
912 |
|
913 |
.embedpress-modal .btn-group-vertical > .btn-group > .btn {
|
914 |
-
|
|
|
915 |
|
916 |
.embedpress-modal .btn-group-vertical > .btn + .btn,
|
917 |
.embedpress-modal .btn-group-vertical > .btn + .btn-group,
|
918 |
.embedpress-modal .btn-group-vertical > .btn-group + .btn,
|
919 |
.embedpress-modal .btn-group-vertical > .btn-group + .btn-group {
|
920 |
-
|
921 |
-
|
|
|
922 |
|
923 |
.embedpress-modal .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
|
924 |
-
|
|
|
925 |
|
926 |
.embedpress-modal .btn-group-vertical > .btn:first-child:not(:last-child) {
|
927 |
-
|
928 |
-
|
929 |
-
|
930 |
-
|
|
|
931 |
|
932 |
.embedpress-modal .btn-group-vertical > .btn:last-child:not(:first-child) {
|
933 |
-
|
934 |
-
|
935 |
-
|
936 |
-
|
|
|
937 |
|
938 |
.embedpress-modal .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
|
939 |
-
|
|
|
940 |
|
941 |
.embedpress-modal .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
|
942 |
.embedpress-modal .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
|
943 |
-
|
944 |
-
|
|
|
945 |
|
946 |
.embedpress-modal .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
|
947 |
-
|
948 |
-
|
|
|
949 |
|
950 |
.embedpress-modal .btn-group-justified {
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
955 |
-
|
956 |
-
|
|
|
|
|
957 |
float: none;
|
958 |
display: table-cell;
|
959 |
-
width: 1%;
|
960 |
-
|
961 |
-
|
962 |
-
|
963 |
-
|
|
|
|
|
|
|
|
|
|
|
964 |
|
965 |
.embedpress-modal [data-toggle="buttons"] > .btn input[type="radio"],
|
966 |
.embedpress-modal [data-toggle="buttons"] > .btn input[type="checkbox"],
|
967 |
.embedpress-modal [data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
|
968 |
.embedpress-modal [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
|
969 |
-
|
970 |
-
|
971 |
-
|
|
|
972 |
|
973 |
.embedpress-modal .input-group {
|
974 |
-
|
975 |
-
|
976 |
-
|
977 |
-
|
|
|
|
|
978 |
float: none;
|
979 |
padding-left: 0;
|
980 |
-
padding-right: 0;
|
981 |
-
|
|
|
|
|
982 |
position: relative;
|
983 |
z-index: 2;
|
984 |
float: left;
|
985 |
width: 100%;
|
986 |
-
margin-bottom: 0;
|
987 |
-
|
988 |
-
|
|
|
|
|
|
|
989 |
|
990 |
.embedpress-modal .input-group-addon,
|
991 |
.embedpress-modal .input-group-btn,
|
992 |
.embedpress-modal .input-group .form-control {
|
993 |
-
|
994 |
-
|
995 |
-
|
996 |
-
|
997 |
-
|
|
|
|
|
|
|
998 |
|
999 |
.embedpress-modal .input-group-addon,
|
1000 |
.embedpress-modal .input-group-btn {
|
1001 |
-
|
1002 |
-
|
1003 |
-
|
|
|
1004 |
|
1005 |
.embedpress-modal .input-group-addon {
|
1006 |
-
|
1007 |
-
|
1008 |
-
|
1009 |
-
|
1010 |
-
|
1011 |
-
|
1012 |
-
|
1013 |
-
|
1014 |
-
|
1015 |
-
|
|
|
|
|
1016 |
padding: 5px 10px;
|
1017 |
font-size: 12px;
|
1018 |
-
border-radius: 3px;
|
1019 |
-
|
|
|
|
|
1020 |
padding: 10px 16px;
|
1021 |
font-size: 18px;
|
1022 |
-
border-radius: 6px;
|
1023 |
-
|
1024 |
-
|
1025 |
-
|
|
|
|
|
|
|
1026 |
|
1027 |
.embedpress-modal .input-group .form-control:first-child,
|
1028 |
.embedpress-modal .input-group-addon:first-child,
|
@@ -1031,11 +1340,13 @@ fieldset[disabled] .embedpress-modal a.btn {
|
|
1031 |
.embedpress-modal .input-group-btn:first-child > .dropdown-toggle,
|
1032 |
.embedpress-modal .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
|
1033 |
.embedpress-modal .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
|
1034 |
-
|
1035 |
-
|
|
|
1036 |
|
1037 |
.embedpress-modal .input-group-addon:first-child {
|
1038 |
-
|
|
|
1039 |
|
1040 |
.embedpress-modal .input-group .form-control:last-child,
|
1041 |
.embedpress-modal .input-group-addon:last-child,
|
@@ -1044,178 +1355,242 @@ fieldset[disabled] .embedpress-modal a.btn {
|
|
1044 |
.embedpress-modal .input-group-btn:last-child > .dropdown-toggle,
|
1045 |
.embedpress-modal .input-group-btn:first-child > .btn:not(:first-child),
|
1046 |
.embedpress-modal .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
|
1047 |
-
|
1048 |
-
|
|
|
1049 |
|
1050 |
.embedpress-modal .input-group-addon:last-child {
|
1051 |
-
|
|
|
1052 |
|
1053 |
.embedpress-modal .input-group-btn {
|
1054 |
-
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
|
1060 |
-
|
1061 |
-
|
1062 |
-
|
1063 |
-
|
1064 |
-
|
1065 |
-
|
1066 |
-
|
1067 |
-
|
1068 |
z-index: 2;
|
1069 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1070 |
|
1071 |
.embedpress-modal .close {
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
-
|
1077 |
-
|
1078 |
-
|
1079 |
-
|
1080 |
-
|
|
|
|
|
1081 |
color: #000;
|
1082 |
text-decoration: none;
|
1083 |
cursor: pointer;
|
1084 |
opacity: 0.5;
|
1085 |
-
filter: alpha(opacity=50);
|
|
|
1086 |
|
1087 |
.embedpress-modal button.close {
|
1088 |
-
|
1089 |
-
|
1090 |
-
|
1091 |
-
|
1092 |
-
|
|
|
1093 |
|
1094 |
.modal-open {
|
1095 |
-
|
|
|
1096 |
|
1097 |
.modal {
|
1098 |
-
|
1099 |
-
|
1100 |
-
|
1101 |
-
|
1102 |
-
|
1103 |
-
|
1104 |
-
|
1105 |
-
|
1106 |
-
|
1107 |
-
|
1108 |
-
|
|
|
|
|
1109 |
transform: translate(0, -25%);
|
1110 |
-
transition: transform 0.3s ease-out;
|
1111 |
-
|
1112 |
-
|
|
|
|
|
|
|
1113 |
|
1114 |
.modal-open .modal {
|
1115 |
-
|
1116 |
-
|
|
|
1117 |
|
1118 |
.modal-dialog {
|
1119 |
-
|
1120 |
-
|
1121 |
-
|
|
|
1122 |
|
1123 |
.modal-content {
|
1124 |
-
|
1125 |
-
|
1126 |
-
|
1127 |
-
|
1128 |
-
|
1129 |
-
|
1130 |
-
|
1131 |
-
|
|
|
1132 |
|
1133 |
.modal-backdrop {
|
1134 |
-
|
1135 |
-
|
1136 |
-
|
1137 |
-
|
1138 |
-
|
1139 |
-
|
1140 |
-
|
1141 |
-
|
|
|
|
|
1142 |
opacity: 0;
|
1143 |
-
filter: alpha(opacity=0);
|
1144 |
-
|
|
|
|
|
1145 |
opacity: 0.5;
|
1146 |
-
filter: alpha(opacity=50);
|
|
|
1147 |
|
1148 |
.modal-header {
|
1149 |
-
|
1150 |
-
|
1151 |
-
|
|
|
|
|
1152 |
content: " ";
|
1153 |
-
display: table;
|
1154 |
-
|
1155 |
-
|
|
|
|
|
|
|
1156 |
|
1157 |
.modal-header .close {
|
1158 |
-
|
|
|
1159 |
|
1160 |
.modal-title {
|
1161 |
-
|
1162 |
-
|
|
|
1163 |
|
1164 |
.modal-body {
|
1165 |
-
|
1166 |
-
|
|
|
1167 |
|
1168 |
.modal-footer {
|
1169 |
-
|
1170 |
-
|
1171 |
-
|
1172 |
-
|
|
|
|
|
1173 |
content: " ";
|
1174 |
-
display: table;
|
1175 |
-
|
1176 |
-
|
1177 |
-
|
|
|
|
|
|
|
|
|
1178 |
margin-left: 5px;
|
1179 |
-
margin-bottom: 0;
|
1180 |
-
|
1181 |
-
|
1182 |
-
|
1183 |
-
margin-left:
|
|
|
|
|
|
|
|
|
|
|
1184 |
|
1185 |
.modal-scrollbar-measure {
|
1186 |
-
|
1187 |
-
|
1188 |
-
|
1189 |
-
|
1190 |
-
|
|
|
1191 |
|
1192 |
@media (min-width: 768px) {
|
1193 |
-
|
1194 |
-
|
1195 |
-
|
1196 |
-
|
1197 |
-
|
1198 |
-
|
1199 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
1200 |
|
1201 |
@media (min-width: 992px) {
|
1202 |
-
|
1203 |
-
|
|
|
|
|
1204 |
|
1205 |
@-ms-viewport {
|
1206 |
-
|
|
|
1207 |
|
1208 |
.visible-xs {
|
1209 |
-
|
|
|
1210 |
|
1211 |
.visible-sm {
|
1212 |
-
|
|
|
1213 |
|
1214 |
.visible-md {
|
1215 |
-
|
|
|
1216 |
|
1217 |
.visible-lg {
|
1218 |
-
|
|
|
1219 |
|
1220 |
.visible-xs-block,
|
1221 |
.visible-xs-inline,
|
@@ -1229,148 +1604,236 @@ fieldset[disabled] .embedpress-modal a.btn {
|
|
1229 |
.visible-lg-block,
|
1230 |
.visible-lg-inline,
|
1231 |
.visible-lg-inline-block {
|
1232 |
-
|
|
|
1233 |
|
1234 |
@media (max-width: 767px) {
|
1235 |
-
|
1236 |
-
|
1237 |
-
|
1238 |
-
|
1239 |
-
|
1240 |
-
|
1241 |
-
|
1242 |
-
|
1243 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1244 |
|
1245 |
@media (max-width: 767px) {
|
1246 |
-
|
1247 |
-
|
|
|
|
|
1248 |
|
1249 |
@media (max-width: 767px) {
|
1250 |
-
|
1251 |
-
|
|
|
|
|
1252 |
|
1253 |
@media (max-width: 767px) {
|
1254 |
-
|
1255 |
-
|
|
|
|
|
1256 |
|
1257 |
@media (min-width: 768px) and (max-width: 991px) {
|
1258 |
-
|
1259 |
-
|
1260 |
-
|
1261 |
-
|
1262 |
-
|
1263 |
-
|
1264 |
-
|
1265 |
-
|
1266 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1267 |
|
1268 |
@media (min-width: 768px) and (max-width: 991px) {
|
1269 |
-
|
1270 |
-
|
|
|
|
|
1271 |
|
1272 |
@media (min-width: 768px) and (max-width: 991px) {
|
1273 |
-
|
1274 |
-
|
|
|
|
|
1275 |
|
1276 |
@media (min-width: 768px) and (max-width: 991px) {
|
1277 |
-
|
1278 |
-
|
|
|
|
|
1279 |
|
1280 |
@media (min-width: 992px) and (max-width: 1199px) {
|
1281 |
-
|
1282 |
-
|
1283 |
-
|
1284 |
-
|
1285 |
-
|
1286 |
-
|
1287 |
-
|
1288 |
-
|
1289 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1290 |
|
1291 |
@media (min-width: 992px) and (max-width: 1199px) {
|
1292 |
-
|
1293 |
-
|
|
|
|
|
1294 |
|
1295 |
@media (min-width: 992px) and (max-width: 1199px) {
|
1296 |
-
|
1297 |
-
|
|
|
|
|
1298 |
|
1299 |
@media (min-width: 992px) and (max-width: 1199px) {
|
1300 |
-
|
1301 |
-
|
|
|
|
|
1302 |
|
1303 |
@media (min-width: 1200px) {
|
1304 |
-
|
1305 |
-
|
1306 |
-
|
1307 |
-
|
1308 |
-
|
1309 |
-
|
1310 |
-
|
1311 |
-
|
1312 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1313 |
|
1314 |
@media (min-width: 1200px) {
|
1315 |
-
|
1316 |
-
|
|
|
|
|
1317 |
|
1318 |
@media (min-width: 1200px) {
|
1319 |
-
|
1320 |
-
|
|
|
|
|
1321 |
|
1322 |
@media (min-width: 1200px) {
|
1323 |
-
|
1324 |
-
|
|
|
|
|
1325 |
|
1326 |
@media (max-width: 767px) {
|
1327 |
-
|
1328 |
-
|
|
|
|
|
1329 |
|
1330 |
@media (min-width: 768px) and (max-width: 991px) {
|
1331 |
-
|
1332 |
-
|
|
|
|
|
1333 |
|
1334 |
@media (min-width: 992px) and (max-width: 1199px) {
|
1335 |
-
|
1336 |
-
|
|
|
|
|
1337 |
|
1338 |
@media (min-width: 1200px) {
|
1339 |
-
|
1340 |
-
|
|
|
|
|
1341 |
|
1342 |
.visible-print {
|
1343 |
-
|
|
|
1344 |
|
1345 |
@media print {
|
1346 |
-
|
1347 |
-
|
1348 |
-
|
1349 |
-
|
1350 |
-
|
1351 |
-
|
1352 |
-
|
1353 |
-
|
1354 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1355 |
|
1356 |
.visible-print-block {
|
1357 |
-
|
1358 |
-
|
|
|
|
|
1359 |
.visible-print-block {
|
1360 |
-
|
|
|
|
|
1361 |
|
1362 |
.visible-print-inline {
|
1363 |
-
|
1364 |
-
|
|
|
|
|
1365 |
.visible-print-inline {
|
1366 |
-
|
|
|
|
|
1367 |
|
1368 |
.visible-print-inline-block {
|
1369 |
-
|
1370 |
-
|
|
|
|
|
1371 |
.visible-print-inline-block {
|
1372 |
-
|
|
|
|
|
1373 |
|
1374 |
@media print {
|
1375 |
-
|
1376 |
-
|
|
|
|
8 |
*/
|
9 |
|
10 |
.embedpress-modal fieldset {
|
11 |
+
padding: 0;
|
12 |
+
margin: 0;
|
13 |
+
border: 0;
|
14 |
+
min-width: 0;
|
15 |
+
}
|
16 |
|
17 |
.embedpress-modal legend {
|
18 |
+
display: block;
|
19 |
+
width: 100%;
|
20 |
+
padding: 0;
|
21 |
+
margin-bottom: 20px;
|
22 |
+
font-size: 21px;
|
23 |
+
line-height: inherit;
|
24 |
+
color: #333333;
|
25 |
+
border: 0;
|
26 |
+
border-bottom: 1px solid #e5e5e5;
|
27 |
+
}
|
28 |
|
29 |
.embedpress-modal label {
|
30 |
+
display: inline-block;
|
31 |
+
max-width: 100%;
|
32 |
+
margin-bottom: 5px;
|
33 |
+
font-weight: bold;
|
34 |
+
}
|
35 |
|
36 |
.embedpress-modal input[type="search"] {
|
37 |
+
box-sizing: border-box;
|
38 |
+
}
|
39 |
|
40 |
.embedpress-modal input[type="radio"],
|
41 |
.embedpress-modal input[type="checkbox"] {
|
42 |
+
margin: 4px 0 0;
|
43 |
+
margin-top: 1px \9;
|
44 |
+
line-height: normal;
|
45 |
+
}
|
46 |
|
47 |
.embedpress-modal input[type="file"] {
|
48 |
+
display: block;
|
49 |
+
}
|
50 |
|
51 |
.embedpress-modal input[type="range"] {
|
52 |
+
display: block;
|
53 |
+
width: 100%;
|
54 |
+
}
|
55 |
|
56 |
.embedpress-modal select[multiple],
|
57 |
.embedpress-modal select[size] {
|
58 |
+
height: auto;
|
59 |
+
}
|
60 |
|
61 |
.embedpress-modal input[type="file"]:focus,
|
62 |
.embedpress-modal input[type="radio"]:focus,
|
63 |
.embedpress-modal input[type="checkbox"]:focus {
|
64 |
+
outline: 5px auto -webkit-focus-ring-color;
|
65 |
+
outline-offset: -2px;
|
66 |
+
}
|
67 |
|
68 |
.embedpress-modal output {
|
69 |
+
display: block;
|
70 |
+
padding-top: 7px;
|
71 |
+
font-size: 14px;
|
72 |
+
line-height: 1.42857;
|
73 |
+
color: #555555;
|
74 |
+
}
|
75 |
|
76 |
.embedpress-modal .form-control {
|
77 |
+
display: block;
|
78 |
+
width: 100%;
|
79 |
+
height: 34px;
|
80 |
+
padding: 6px 12px;
|
81 |
+
font-size: 14px;
|
82 |
+
line-height: 1.42857;
|
83 |
+
color: #555555;
|
84 |
+
background-color: #fff;
|
85 |
+
background-image: none;
|
86 |
+
border: 1px solid #ccc;
|
87 |
+
border-radius: 4px;
|
88 |
+
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
89 |
+
transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
|
90 |
+
}
|
91 |
+
|
92 |
+
.embedpress-modal .form-control:focus {
|
93 |
border-color: #66afe9;
|
94 |
outline: 0;
|
95 |
+
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
|
96 |
+
}
|
97 |
+
|
98 |
+
.embedpress-modal .form-control::-moz-placeholder {
|
99 |
+
color: #999;
|
100 |
+
opacity: 1;
|
101 |
+
}
|
102 |
+
|
103 |
+
.embedpress-modal .form-control:-ms-input-placeholder {
|
104 |
color: #999;
|
105 |
+
}
|
106 |
+
|
107 |
+
.embedpress-modal .form-control::-webkit-input-placeholder {
|
108 |
+
color: #999;
|
109 |
+
}
|
110 |
+
|
111 |
+
.embedpress-modal .form-control::-ms-expand {
|
112 |
border: 0;
|
113 |
+
background-color: transparent;
|
114 |
+
}
|
115 |
+
|
116 |
+
.embedpress-modal .form-control[disabled], .embedpress-modal .form-control[readonly],
|
117 |
+
fieldset[disabled] .embedpress-modal .form-control {
|
118 |
background-color: #eeeeee;
|
119 |
+
opacity: 1;
|
120 |
+
}
|
121 |
+
|
122 |
+
.embedpress-modal .form-control[disabled],
|
123 |
+
fieldset[disabled] .embedpress-modal .form-control {
|
124 |
+
cursor: not-allowed;
|
125 |
+
}
|
126 |
|
127 |
.embedpress-modal textarea.form-control {
|
128 |
+
height: auto;
|
129 |
+
}
|
130 |
|
131 |
.embedpress-modal input[type="search"] {
|
132 |
+
-webkit-appearance: none;
|
133 |
+
}
|
134 |
|
135 |
@media screen and (-webkit-min-device-pixel-ratio: 0) {
|
136 |
+
.embedpress-modal input[type="date"].form-control,
|
137 |
+
.embedpress-modal input[type="time"].form-control,
|
138 |
+
.embedpress-modal input[type="datetime-local"].form-control,
|
139 |
+
.embedpress-modal input[type="month"].form-control {
|
140 |
+
line-height: 34px;
|
141 |
+
}
|
142 |
+
|
143 |
+
.embedpress-modal input[type="date"].input-sm, .embedpress-modal .input-group-sm > input[type="date"].form-control, .embedpress-modal .input-group-sm > input[type="date"].input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > input[type="date"].btn,
|
144 |
+
.input-group-sm .embedpress-modal input[type="date"],
|
145 |
+
.embedpress-modal input[type="time"].input-sm, .embedpress-modal .input-group-sm > input[type="time"].form-control, .embedpress-modal .input-group-sm > input[type="time"].input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > input[type="time"].btn,
|
146 |
+
.input-group-sm
|
147 |
+
.embedpress-modal input[type="time"],
|
148 |
+
.embedpress-modal input[type="datetime-local"].input-sm, .embedpress-modal .input-group-sm > input[type="datetime-local"].form-control, .embedpress-modal .input-group-sm > input[type="datetime-local"].input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > input[type="datetime-local"].btn,
|
149 |
+
.input-group-sm
|
150 |
+
.embedpress-modal input[type="datetime-local"],
|
151 |
+
.embedpress-modal input[type="month"].input-sm, .embedpress-modal .input-group-sm > input[type="month"].form-control, .embedpress-modal .input-group-sm > input[type="month"].input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > input[type="month"].btn,
|
152 |
+
.input-group-sm
|
153 |
+
.embedpress-modal input[type="month"] {
|
154 |
+
line-height: 30px;
|
155 |
+
}
|
156 |
+
|
157 |
+
.embedpress-modal input[type="date"].input-lg, .embedpress-modal .input-group-lg > input[type="date"].form-control, .embedpress-modal .input-group-lg > input[type="date"].input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > input[type="date"].btn,
|
158 |
+
.input-group-lg .embedpress-modal input[type="date"],
|
159 |
+
.embedpress-modal input[type="time"].input-lg, .embedpress-modal .input-group-lg > input[type="time"].form-control, .embedpress-modal .input-group-lg > input[type="time"].input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > input[type="time"].btn,
|
160 |
+
.input-group-lg
|
161 |
+
.embedpress-modal input[type="time"],
|
162 |
+
.embedpress-modal input[type="datetime-local"].input-lg, .embedpress-modal .input-group-lg > input[type="datetime-local"].form-control, .embedpress-modal .input-group-lg > input[type="datetime-local"].input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > input[type="datetime-local"].btn,
|
163 |
+
.input-group-lg
|
164 |
+
.embedpress-modal input[type="datetime-local"],
|
165 |
+
.embedpress-modal input[type="month"].input-lg, .embedpress-modal .input-group-lg > input[type="month"].form-control, .embedpress-modal .input-group-lg > input[type="month"].input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > input[type="month"].btn,
|
166 |
+
.input-group-lg
|
167 |
+
.embedpress-modal input[type="month"] {
|
168 |
+
line-height: 46px;
|
169 |
+
}
|
170 |
+
}
|
171 |
|
172 |
.embedpress-modal .form-group {
|
173 |
+
margin-bottom: 15px;
|
174 |
+
}
|
175 |
|
176 |
.embedpress-modal .radio,
|
177 |
.embedpress-modal .checkbox {
|
178 |
+
position: relative;
|
179 |
+
display: block;
|
180 |
+
margin-top: 10px;
|
181 |
+
margin-bottom: 10px;
|
182 |
+
}
|
183 |
+
|
184 |
+
.embedpress-modal .radio label,
|
185 |
+
.embedpress-modal .checkbox label {
|
186 |
min-height: 20px;
|
187 |
padding-left: 20px;
|
188 |
margin-bottom: 0;
|
189 |
font-weight: normal;
|
190 |
+
cursor: pointer;
|
191 |
+
}
|
192 |
|
193 |
.embedpress-modal .radio input[type="radio"],
|
194 |
.embedpress-modal .radio-inline input[type="radio"],
|
195 |
.embedpress-modal .checkbox input[type="checkbox"],
|
196 |
.embedpress-modal .checkbox-inline input[type="checkbox"] {
|
197 |
+
position: absolute;
|
198 |
+
margin-left: -20px;
|
199 |
+
margin-top: 4px \9;
|
200 |
+
}
|
201 |
|
202 |
.embedpress-modal .radio + .radio,
|
203 |
.embedpress-modal .checkbox + .checkbox {
|
204 |
+
margin-top: -5px;
|
205 |
+
}
|
206 |
|
207 |
.embedpress-modal .radio-inline,
|
208 |
.embedpress-modal .checkbox-inline {
|
209 |
+
position: relative;
|
210 |
+
display: inline-block;
|
211 |
+
padding-left: 20px;
|
212 |
+
margin-bottom: 0;
|
213 |
+
vertical-align: middle;
|
214 |
+
font-weight: normal;
|
215 |
+
cursor: pointer;
|
216 |
+
}
|
217 |
|
218 |
.embedpress-modal .radio-inline + .radio-inline,
|
219 |
.embedpress-modal .checkbox-inline + .checkbox-inline {
|
220 |
+
margin-top: 0;
|
221 |
+
margin-left: 10px;
|
222 |
+
}
|
223 |
|
224 |
.embedpress-modal input[type="radio"][disabled], .embedpress-modal input[type="radio"].disabled,
|
225 |
fieldset[disabled] .embedpress-modal input[type="radio"],
|
227 |
.embedpress-modal input[type="checkbox"].disabled,
|
228 |
fieldset[disabled]
|
229 |
.embedpress-modal input[type="checkbox"] {
|
230 |
+
cursor: not-allowed;
|
231 |
+
}
|
232 |
|
233 |
.embedpress-modal .radio-inline.disabled,
|
234 |
fieldset[disabled] .embedpress-modal .radio-inline,
|
235 |
.embedpress-modal .checkbox-inline.disabled,
|
236 |
fieldset[disabled]
|
237 |
.embedpress-modal .checkbox-inline {
|
238 |
+
cursor: not-allowed;
|
239 |
+
}
|
240 |
|
241 |
.embedpress-modal .radio.disabled label,
|
242 |
fieldset[disabled] .embedpress-modal .radio label,
|
243 |
.embedpress-modal .checkbox.disabled label,
|
244 |
fieldset[disabled]
|
245 |
.embedpress-modal .checkbox label {
|
246 |
+
cursor: not-allowed;
|
247 |
+
}
|
248 |
|
249 |
.embedpress-modal .form-control-static {
|
250 |
+
padding-top: 7px;
|
251 |
+
padding-bottom: 7px;
|
252 |
+
margin-bottom: 0;
|
253 |
+
min-height: 34px;
|
254 |
+
}
|
255 |
+
|
256 |
+
.embedpress-modal .form-control-static.input-lg, .embedpress-modal .input-group-lg > .form-control-static.form-control, .embedpress-modal .input-group-lg > .form-control-static.input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > .form-control-static.btn, .embedpress-modal .form-control-static.input-sm, .embedpress-modal .input-group-sm > .form-control-static.form-control, .embedpress-modal .input-group-sm > .form-control-static.input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > .form-control-static.btn {
|
257 |
padding-left: 0;
|
258 |
+
padding-right: 0;
|
259 |
+
}
|
260 |
|
261 |
.embedpress-modal .input-sm, .embedpress-modal .input-group-sm > .form-control, .embedpress-modal .input-group-sm > .input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > .btn {
|
262 |
+
height: 30px;
|
263 |
+
padding: 5px 10px;
|
264 |
+
font-size: 12px;
|
265 |
+
line-height: 1.5;
|
266 |
+
border-radius: 3px;
|
267 |
+
}
|
268 |
|
269 |
.embedpress-modal select.input-sm, .embedpress-modal .input-group-sm > select.form-control, .embedpress-modal .input-group-sm > select.input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > select.btn {
|
270 |
+
height: 30px;
|
271 |
+
line-height: 30px;
|
272 |
+
}
|
273 |
|
274 |
.embedpress-modal textarea.input-sm, .embedpress-modal .input-group-sm > textarea.form-control, .embedpress-modal .input-group-sm > textarea.input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > textarea.btn,
|
275 |
.embedpress-modal select[multiple].input-sm, .embedpress-modal .input-group-sm > select[multiple].form-control, .embedpress-modal .input-group-sm > select[multiple].input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > select[multiple].btn {
|
276 |
+
height: auto;
|
277 |
+
}
|
278 |
|
279 |
.embedpress-modal .form-group-sm .form-control {
|
280 |
+
height: 30px;
|
281 |
+
padding: 5px 10px;
|
282 |
+
font-size: 12px;
|
283 |
+
line-height: 1.5;
|
284 |
+
border-radius: 3px;
|
285 |
+
}
|
286 |
|
287 |
.embedpress-modal .form-group-sm select.form-control {
|
288 |
+
height: 30px;
|
289 |
+
line-height: 30px;
|
290 |
+
}
|
291 |
|
292 |
.embedpress-modal .form-group-sm textarea.form-control,
|
293 |
.embedpress-modal .form-group-sm select[multiple].form-control {
|
294 |
+
height: auto;
|
295 |
+
}
|
296 |
|
297 |
.embedpress-modal .form-group-sm .form-control-static {
|
298 |
+
height: 30px;
|
299 |
+
min-height: 32px;
|
300 |
+
padding: 6px 10px;
|
301 |
+
font-size: 12px;
|
302 |
+
line-height: 1.5;
|
303 |
+
}
|
304 |
|
305 |
.embedpress-modal .input-lg, .embedpress-modal .input-group-lg > .form-control, .embedpress-modal .input-group-lg > .input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > .btn {
|
306 |
+
height: 46px;
|
307 |
+
padding: 10px 16px;
|
308 |
+
font-size: 18px;
|
309 |
+
line-height: 1.33333;
|
310 |
+
border-radius: 6px;
|
311 |
+
}
|
312 |
|
313 |
.embedpress-modal select.input-lg, .embedpress-modal .input-group-lg > select.form-control, .embedpress-modal .input-group-lg > select.input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > select.btn {
|
314 |
+
height: 46px;
|
315 |
+
line-height: 46px;
|
316 |
+
}
|
317 |
|
318 |
.embedpress-modal textarea.input-lg, .embedpress-modal .input-group-lg > textarea.form-control, .embedpress-modal .input-group-lg > textarea.input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > textarea.btn,
|
319 |
.embedpress-modal select[multiple].input-lg, .embedpress-modal .input-group-lg > select[multiple].form-control, .embedpress-modal .input-group-lg > select[multiple].input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > select[multiple].btn {
|
320 |
+
height: auto;
|
321 |
+
}
|
322 |
|
323 |
.embedpress-modal .form-group-lg .form-control {
|
324 |
+
height: 46px;
|
325 |
+
padding: 10px 16px;
|
326 |
+
font-size: 18px;
|
327 |
+
line-height: 1.33333;
|
328 |
+
border-radius: 6px;
|
329 |
+
}
|
330 |
|
331 |
.embedpress-modal .form-group-lg select.form-control {
|
332 |
+
height: 46px;
|
333 |
+
line-height: 46px;
|
334 |
+
}
|
335 |
|
336 |
.embedpress-modal .form-group-lg textarea.form-control,
|
337 |
.embedpress-modal .form-group-lg select[multiple].form-control {
|
338 |
+
height: auto;
|
339 |
+
}
|
340 |
|
341 |
.embedpress-modal .form-group-lg .form-control-static {
|
342 |
+
height: 46px;
|
343 |
+
min-height: 38px;
|
344 |
+
padding: 11px 16px;
|
345 |
+
font-size: 18px;
|
346 |
+
line-height: 1.33333;
|
347 |
+
}
|
348 |
|
349 |
.embedpress-modal .has-feedback {
|
350 |
+
position: relative;
|
351 |
+
}
|
352 |
+
|
353 |
+
.embedpress-modal .has-feedback .form-control {
|
354 |
+
padding-right: 42.5px;
|
355 |
+
}
|
356 |
|
357 |
.embedpress-modal .form-control-feedback {
|
358 |
+
position: absolute;
|
359 |
+
top: 0;
|
360 |
+
right: 0;
|
361 |
+
z-index: 2;
|
362 |
+
display: block;
|
363 |
+
width: 34px;
|
364 |
+
height: 34px;
|
365 |
+
line-height: 34px;
|
366 |
+
text-align: center;
|
367 |
+
pointer-events: none;
|
368 |
+
}
|
369 |
|
370 |
.embedpress-modal .input-lg + .form-control-feedback, .embedpress-modal .input-group-lg > .form-control + .form-control-feedback, .embedpress-modal .input-group-lg > .input-group-addon + .form-control-feedback, .embedpress-modal .input-group-lg > .input-group-btn > .btn + .form-control-feedback,
|
371 |
.embedpress-modal .input-group-lg + .form-control-feedback,
|
372 |
.embedpress-modal .form-group-lg .form-control + .form-control-feedback {
|
373 |
+
width: 46px;
|
374 |
+
height: 46px;
|
375 |
+
line-height: 46px;
|
376 |
+
}
|
377 |
|
378 |
.embedpress-modal .input-sm + .form-control-feedback, .embedpress-modal .input-group-sm > .form-control + .form-control-feedback, .embedpress-modal .input-group-sm > .input-group-addon + .form-control-feedback, .embedpress-modal .input-group-sm > .input-group-btn > .btn + .form-control-feedback,
|
379 |
.embedpress-modal .input-group-sm + .form-control-feedback,
|
380 |
.embedpress-modal .form-group-sm .form-control + .form-control-feedback {
|
381 |
+
width: 30px;
|
382 |
+
height: 30px;
|
383 |
+
line-height: 30px;
|
384 |
+
}
|
385 |
|
386 |
.embedpress-modal .has-success .help-block,
|
387 |
.embedpress-modal .has-success .control-label,
|
393 |
.embedpress-modal .has-success.checkbox label,
|
394 |
.embedpress-modal .has-success.radio-inline label,
|
395 |
.embedpress-modal .has-success.checkbox-inline label {
|
396 |
+
color: #3c763d;
|
397 |
+
}
|
398 |
|
399 |
.embedpress-modal .has-success .form-control {
|
400 |
+
border-color: #3c763d;
|
401 |
+
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
402 |
+
}
|
403 |
+
|
404 |
+
.embedpress-modal .has-success .form-control:focus {
|
405 |
border-color: #2b542c;
|
406 |
+
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
|
407 |
+
}
|
408 |
|
409 |
.embedpress-modal .has-success .input-group-addon {
|
410 |
+
color: #3c763d;
|
411 |
+
border-color: #3c763d;
|
412 |
+
background-color: #dff0d8;
|
413 |
+
}
|
414 |
|
415 |
.embedpress-modal .has-success .form-control-feedback {
|
416 |
+
color: #3c763d;
|
417 |
+
}
|
418 |
|
419 |
.embedpress-modal .has-warning .help-block,
|
420 |
.embedpress-modal .has-warning .control-label,
|
426 |
.embedpress-modal .has-warning.checkbox label,
|
427 |
.embedpress-modal .has-warning.radio-inline label,
|
428 |
.embedpress-modal .has-warning.checkbox-inline label {
|
429 |
+
color: #8a6d3b;
|
430 |
+
}
|
431 |
|
432 |
.embedpress-modal .has-warning .form-control {
|
433 |
+
border-color: #8a6d3b;
|
434 |
+
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
435 |
+
}
|
436 |
+
|
437 |
+
.embedpress-modal .has-warning .form-control:focus {
|
438 |
border-color: #66512c;
|
439 |
+
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
|
440 |
+
}
|
441 |
|
442 |
.embedpress-modal .has-warning .input-group-addon {
|
443 |
+
color: #8a6d3b;
|
444 |
+
border-color: #8a6d3b;
|
445 |
+
background-color: #fcf8e3;
|
446 |
+
}
|
447 |
|
448 |
.embedpress-modal .has-warning .form-control-feedback {
|
449 |
+
color: #8a6d3b;
|
450 |
+
}
|
451 |
|
452 |
.embedpress-modal .has-error .help-block,
|
453 |
.embedpress-modal .has-error .control-label,
|
459 |
.embedpress-modal .has-error.checkbox label,
|
460 |
.embedpress-modal .has-error.radio-inline label,
|
461 |
.embedpress-modal .has-error.checkbox-inline label {
|
462 |
+
color: #a94442;
|
463 |
+
}
|
464 |
|
465 |
.embedpress-modal .has-error .form-control {
|
466 |
+
border-color: #a94442;
|
467 |
+
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
468 |
+
}
|
469 |
+
|
470 |
+
.embedpress-modal .has-error .form-control:focus {
|
471 |
border-color: #843534;
|
472 |
+
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
|
473 |
+
}
|
474 |
|
475 |
.embedpress-modal .has-error .input-group-addon {
|
476 |
+
color: #a94442;
|
477 |
+
border-color: #a94442;
|
478 |
+
background-color: #f2dede;
|
479 |
+
}
|
480 |
|
481 |
.embedpress-modal .has-error .form-control-feedback {
|
482 |
+
color: #a94442;
|
483 |
+
}
|
484 |
|
485 |
.embedpress-modal .has-feedback label ~ .form-control-feedback {
|
486 |
+
top: 25px;
|
487 |
+
}
|
488 |
|
489 |
.embedpress-modal .has-feedback label.sr-only ~ .form-control-feedback {
|
490 |
+
top: 0;
|
491 |
+
}
|
492 |
|
493 |
.embedpress-modal .help-block {
|
494 |
+
display: block;
|
495 |
+
margin-top: 5px;
|
496 |
+
margin-bottom: 10px;
|
497 |
+
color: #737373;
|
498 |
+
}
|
499 |
|
500 |
@media (min-width: 768px) {
|
501 |
+
.embedpress-modal .form-inline .form-group {
|
502 |
+
display: inline-block;
|
503 |
+
margin-bottom: 0;
|
504 |
+
vertical-align: middle;
|
505 |
+
}
|
506 |
+
|
507 |
+
.embedpress-modal .form-inline .form-control {
|
508 |
+
display: inline-block;
|
509 |
+
width: auto;
|
510 |
+
vertical-align: middle;
|
511 |
+
}
|
512 |
+
|
513 |
+
.embedpress-modal .form-inline .form-control-static {
|
514 |
+
display: inline-block;
|
515 |
+
}
|
516 |
+
|
517 |
+
.embedpress-modal .form-inline .input-group {
|
518 |
+
display: inline-table;
|
519 |
+
vertical-align: middle;
|
520 |
+
}
|
521 |
+
|
522 |
.embedpress-modal .form-inline .input-group .input-group-addon,
|
523 |
.embedpress-modal .form-inline .input-group .input-group-btn,
|
524 |
.embedpress-modal .form-inline .input-group .form-control {
|
525 |
+
width: auto;
|
526 |
+
}
|
527 |
+
|
528 |
+
.embedpress-modal .form-inline .input-group > .form-control {
|
529 |
+
width: 100%;
|
530 |
+
}
|
531 |
+
|
532 |
+
.embedpress-modal .form-inline .control-label {
|
533 |
+
margin-bottom: 0;
|
534 |
+
vertical-align: middle;
|
535 |
+
}
|
536 |
+
|
537 |
+
.embedpress-modal .form-inline .radio,
|
538 |
+
.embedpress-modal .form-inline .checkbox {
|
539 |
+
display: inline-block;
|
540 |
+
margin-top: 0;
|
541 |
+
margin-bottom: 0;
|
542 |
+
vertical-align: middle;
|
543 |
+
}
|
544 |
+
|
545 |
.embedpress-modal .form-inline .radio label,
|
546 |
.embedpress-modal .form-inline .checkbox label {
|
547 |
+
padding-left: 0;
|
548 |
+
}
|
549 |
+
|
550 |
+
.embedpress-modal .form-inline .radio input[type="radio"],
|
551 |
+
.embedpress-modal .form-inline .checkbox input[type="checkbox"] {
|
552 |
+
position: relative;
|
553 |
+
margin-left: 0;
|
554 |
+
}
|
555 |
+
|
556 |
+
.embedpress-modal .form-inline .has-feedback .form-control-feedback {
|
557 |
+
top: 0;
|
558 |
+
}
|
559 |
+
}
|
560 |
|
561 |
.embedpress-modal .form-horizontal .radio,
|
562 |
.embedpress-modal .form-horizontal .checkbox,
|
563 |
.embedpress-modal .form-horizontal .radio-inline,
|
564 |
.embedpress-modal .form-horizontal .checkbox-inline {
|
565 |
+
margin-top: 0;
|
566 |
+
margin-bottom: 0;
|
567 |
+
padding-top: 7px;
|
568 |
+
}
|
569 |
|
570 |
.embedpress-modal .form-horizontal .radio,
|
571 |
.embedpress-modal .form-horizontal .checkbox {
|
572 |
+
min-height: 27px;
|
573 |
+
}
|
574 |
|
575 |
.embedpress-modal .form-horizontal .form-group {
|
576 |
+
margin-left: -15px;
|
577 |
+
margin-right: -15px;
|
578 |
+
}
|
579 |
+
|
580 |
+
.embedpress-modal .form-horizontal .form-group:before, .embedpress-modal .form-horizontal .form-group:after {
|
581 |
content: " ";
|
582 |
+
display: table;
|
583 |
+
}
|
584 |
+
|
585 |
+
.embedpress-modal .form-horizontal .form-group:after {
|
586 |
+
clear: both;
|
587 |
+
}
|
588 |
|
589 |
@media (min-width: 768px) {
|
590 |
+
.embedpress-modal .form-horizontal .control-label {
|
591 |
+
text-align: right;
|
592 |
+
margin-bottom: 0;
|
593 |
+
padding-top: 7px;
|
594 |
+
}
|
595 |
+
}
|
596 |
|
597 |
.embedpress-modal .form-horizontal .has-feedback .form-control-feedback {
|
598 |
+
right: 15px;
|
599 |
+
}
|
600 |
|
601 |
@media (min-width: 768px) {
|
602 |
+
.embedpress-modal .form-horizontal .form-group-lg .control-label {
|
603 |
+
padding-top: 11px;
|
604 |
+
font-size: 18px;
|
605 |
+
}
|
606 |
+
}
|
607 |
|
608 |
@media (min-width: 768px) {
|
609 |
+
.embedpress-modal .form-horizontal .form-group-sm .control-label {
|
610 |
+
padding-top: 6px;
|
611 |
+
font-size: 12px;
|
612 |
+
}
|
613 |
+
}
|
614 |
|
615 |
.embedpress-modal .btn {
|
616 |
+
display: inline-block;
|
617 |
+
margin-bottom: 0;
|
618 |
+
font-weight: normal;
|
619 |
+
text-align: center;
|
620 |
+
vertical-align: middle;
|
621 |
+
-ms-touch-action: manipulation;
|
622 |
+
touch-action: manipulation;
|
623 |
+
cursor: pointer;
|
624 |
+
background-image: none;
|
625 |
+
border: 1px solid transparent;
|
626 |
+
white-space: nowrap;
|
627 |
+
padding: 6px 12px;
|
628 |
+
font-size: 14px;
|
629 |
+
line-height: 1.42857;
|
630 |
+
border-radius: 4px;
|
631 |
+
-webkit-user-select: none;
|
632 |
+
-moz-user-select: none;
|
633 |
+
-ms-user-select: none;
|
634 |
+
user-select: none;
|
635 |
+
}
|
636 |
+
|
637 |
+
.embedpress-modal .btn:focus, .embedpress-modal .btn.focus, .embedpress-modal .btn:active:focus, .embedpress-modal .btn:active.focus, .embedpress-modal .btn.active:focus, .embedpress-modal .btn.active.focus {
|
638 |
outline: 5px auto -webkit-focus-ring-color;
|
639 |
+
outline-offset: -2px;
|
640 |
+
}
|
641 |
+
|
642 |
+
.embedpress-modal .btn:hover, .embedpress-modal .btn:focus, .embedpress-modal .btn.focus {
|
643 |
color: #333;
|
644 |
+
text-decoration: none;
|
645 |
+
}
|
646 |
+
|
647 |
+
.embedpress-modal .btn:active, .embedpress-modal .btn.active {
|
648 |
outline: 0;
|
649 |
background-image: none;
|
650 |
+
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
651 |
+
}
|
652 |
+
|
653 |
+
.embedpress-modal .btn.disabled, .embedpress-modal .btn[disabled],
|
654 |
+
fieldset[disabled] .embedpress-modal .btn {
|
655 |
cursor: not-allowed;
|
656 |
opacity: 0.65;
|
657 |
filter: alpha(opacity=65);
|
658 |
+
box-shadow: none;
|
659 |
+
}
|
660 |
|
661 |
.embedpress-modal a.btn.disabled,
|
662 |
fieldset[disabled] .embedpress-modal a.btn {
|
663 |
+
pointer-events: none;
|
664 |
+
}
|
665 |
|
666 |
.embedpress-modal .btn-default {
|
667 |
+
color: #333;
|
668 |
+
background-color: #fff;
|
669 |
+
border-color: #ccc;
|
670 |
+
}
|
671 |
+
|
672 |
+
.embedpress-modal .btn-default:focus, .embedpress-modal .btn-default.focus {
|
673 |
color: #333;
|
674 |
background-color: #e6e6e6;
|
675 |
+
border-color: #8c8c8c;
|
676 |
+
}
|
677 |
+
|
678 |
+
.embedpress-modal .btn-default:hover {
|
679 |
color: #333;
|
680 |
background-color: #e6e6e6;
|
681 |
+
border-color: #adadad;
|
682 |
+
}
|
683 |
+
|
684 |
+
.embedpress-modal .btn-default:active, .embedpress-modal .btn-default.active,
|
685 |
+
.open > .embedpress-modal .btn-default.dropdown-toggle {
|
686 |
color: #333;
|
687 |
background-color: #e6e6e6;
|
688 |
+
border-color: #adadad;
|
689 |
+
}
|
690 |
+
|
691 |
+
.embedpress-modal .btn-default:active:hover, .embedpress-modal .btn-default:active:focus, .embedpress-modal .btn-default:active.focus, .embedpress-modal .btn-default.active:hover, .embedpress-modal .btn-default.active:focus, .embedpress-modal .btn-default.active.focus,
|
692 |
+
.open > .embedpress-modal .btn-default.dropdown-toggle:hover,
|
693 |
+
.open > .embedpress-modal .btn-default.dropdown-toggle:focus,
|
694 |
+
.open > .embedpress-modal .btn-default.dropdown-toggle.focus {
|
695 |
+
color: #333;
|
696 |
+
background-color: #d4d4d4;
|
697 |
+
border-color: #8c8c8c;
|
698 |
+
}
|
699 |
+
|
700 |
+
.embedpress-modal .btn-default:active, .embedpress-modal .btn-default.active,
|
701 |
+
.open > .embedpress-modal .btn-default.dropdown-toggle {
|
702 |
+
background-image: none;
|
703 |
+
}
|
704 |
+
|
705 |
+
.embedpress-modal .btn-default.disabled:hover, .embedpress-modal .btn-default.disabled:focus, .embedpress-modal .btn-default.disabled.focus, .embedpress-modal .btn-default[disabled]:hover, .embedpress-modal .btn-default[disabled]:focus, .embedpress-modal .btn-default[disabled].focus,
|
706 |
+
fieldset[disabled] .embedpress-modal .btn-default:hover,
|
707 |
+
fieldset[disabled] .embedpress-modal .btn-default:focus,
|
708 |
+
fieldset[disabled] .embedpress-modal .btn-default.focus {
|
709 |
background-color: #fff;
|
710 |
+
border-color: #ccc;
|
711 |
+
}
|
712 |
+
|
713 |
+
.embedpress-modal .btn-default .badge {
|
714 |
color: #fff;
|
715 |
+
background-color: #333;
|
716 |
+
}
|
717 |
|
718 |
.embedpress-modal .btn-primary {
|
719 |
+
color: #fff;
|
720 |
+
background-color: #337ab7;
|
721 |
+
border-color: #2e6da4;
|
722 |
+
}
|
723 |
+
|
724 |
+
.embedpress-modal .btn-primary:focus, .embedpress-modal .btn-primary.focus {
|
725 |
color: #fff;
|
726 |
background-color: #286090;
|
727 |
+
border-color: #122b40;
|
728 |
+
}
|
729 |
+
|
730 |
+
.embedpress-modal .btn-primary:hover {
|
731 |
color: #fff;
|
732 |
background-color: #286090;
|
733 |
+
border-color: #204d74;
|
734 |
+
}
|
735 |
+
|
736 |
+
.embedpress-modal .btn-primary:active, .embedpress-modal .btn-primary.active,
|
737 |
+
.open > .embedpress-modal .btn-primary.dropdown-toggle {
|
738 |
color: #fff;
|
739 |
background-color: #286090;
|
740 |
+
border-color: #204d74;
|
741 |
+
}
|
742 |
+
|
743 |
+
.embedpress-modal .btn-primary:active:hover, .embedpress-modal .btn-primary:active:focus, .embedpress-modal .btn-primary:active.focus, .embedpress-modal .btn-primary.active:hover, .embedpress-modal .btn-primary.active:focus, .embedpress-modal .btn-primary.active.focus,
|
744 |
+
.open > .embedpress-modal .btn-primary.dropdown-toggle:hover,
|
745 |
+
.open > .embedpress-modal .btn-primary.dropdown-toggle:focus,
|
746 |
+
.open > .embedpress-modal .btn-primary.dropdown-toggle.focus {
|
747 |
+
color: #fff;
|
748 |
+
background-color: #204d74;
|
749 |
+
border-color: #122b40;
|
750 |
+
}
|
751 |
+
|
752 |
+
.embedpress-modal .btn-primary:active, .embedpress-modal .btn-primary.active,
|
753 |
+
.open > .embedpress-modal .btn-primary.dropdown-toggle {
|
754 |
+
background-image: none;
|
755 |
+
}
|
756 |
+
|
757 |
+
.embedpress-modal .btn-primary.disabled:hover, .embedpress-modal .btn-primary.disabled:focus, .embedpress-modal .btn-primary.disabled.focus, .embedpress-modal .btn-primary[disabled]:hover, .embedpress-modal .btn-primary[disabled]:focus, .embedpress-modal .btn-primary[disabled].focus,
|
758 |
+
fieldset[disabled] .embedpress-modal .btn-primary:hover,
|
759 |
+
fieldset[disabled] .embedpress-modal .btn-primary:focus,
|
760 |
+
fieldset[disabled] .embedpress-modal .btn-primary.focus {
|
761 |
background-color: #337ab7;
|
762 |
+
border-color: #2e6da4;
|
763 |
+
}
|
764 |
+
|
765 |
+
.embedpress-modal .btn-primary .badge {
|
766 |
color: #337ab7;
|
767 |
+
background-color: #fff;
|
768 |
+
}
|
769 |
|
770 |
.embedpress-modal .btn-success {
|
771 |
+
color: #fff;
|
772 |
+
background-color: #5cb85c;
|
773 |
+
border-color: #4cae4c;
|
774 |
+
}
|
775 |
+
|
776 |
+
.embedpress-modal .btn-success:focus, .embedpress-modal .btn-success.focus {
|
777 |
color: #fff;
|
778 |
background-color: #449d44;
|
779 |
+
border-color: #255625;
|
780 |
+
}
|
781 |
+
|
782 |
+
.embedpress-modal .btn-success:hover {
|
783 |
color: #fff;
|
784 |
background-color: #449d44;
|
785 |
+
border-color: #398439;
|
786 |
+
}
|
787 |
+
|
788 |
+
.embedpress-modal .btn-success:active, .embedpress-modal .btn-success.active,
|
789 |
+
.open > .embedpress-modal .btn-success.dropdown-toggle {
|
790 |
color: #fff;
|
791 |
background-color: #449d44;
|
792 |
+
border-color: #398439;
|
793 |
+
}
|
794 |
+
|
795 |
+
.embedpress-modal .btn-success:active:hover, .embedpress-modal .btn-success:active:focus, .embedpress-modal .btn-success:active.focus, .embedpress-modal .btn-success.active:hover, .embedpress-modal .btn-success.active:focus, .embedpress-modal .btn-success.active.focus,
|
796 |
+
.open > .embedpress-modal .btn-success.dropdown-toggle:hover,
|
797 |
+
.open > .embedpress-modal .btn-success.dropdown-toggle:focus,
|
798 |
+
.open > .embedpress-modal .btn-success.dropdown-toggle.focus {
|
799 |
+
color: #fff;
|
800 |
+
background-color: #398439;
|
801 |
+
border-color: #255625;
|
802 |
+
}
|
803 |
+
|
804 |
+
.embedpress-modal .btn-success:active, .embedpress-modal .btn-success.active,
|
805 |
+
.open > .embedpress-modal .btn-success.dropdown-toggle {
|
806 |
+
background-image: none;
|
807 |
+
}
|
808 |
+
|
809 |
+
.embedpress-modal .btn-success.disabled:hover, .embedpress-modal .btn-success.disabled:focus, .embedpress-modal .btn-success.disabled.focus, .embedpress-modal .btn-success[disabled]:hover, .embedpress-modal .btn-success[disabled]:focus, .embedpress-modal .btn-success[disabled].focus,
|
810 |
+
fieldset[disabled] .embedpress-modal .btn-success:hover,
|
811 |
+
fieldset[disabled] .embedpress-modal .btn-success:focus,
|
812 |
+
fieldset[disabled] .embedpress-modal .btn-success.focus {
|
813 |
background-color: #5cb85c;
|
814 |
+
border-color: #4cae4c;
|
815 |
+
}
|
816 |
+
|
817 |
+
.embedpress-modal .btn-success .badge {
|
818 |
color: #5cb85c;
|
819 |
+
background-color: #fff;
|
820 |
+
}
|
821 |
|
822 |
.embedpress-modal .btn-info {
|
823 |
+
color: #fff;
|
824 |
+
background-color: #5bc0de;
|
825 |
+
border-color: #46b8da;
|
826 |
+
}
|
827 |
+
|
828 |
+
.embedpress-modal .btn-info:focus, .embedpress-modal .btn-info.focus {
|
829 |
color: #fff;
|
830 |
background-color: #31b0d5;
|
831 |
+
border-color: #1b6d85;
|
832 |
+
}
|
833 |
+
|
834 |
+
.embedpress-modal .btn-info:hover {
|
835 |
color: #fff;
|
836 |
background-color: #31b0d5;
|
837 |
+
border-color: #269abc;
|
838 |
+
}
|
839 |
+
|
840 |
+
.embedpress-modal .btn-info:active, .embedpress-modal .btn-info.active,
|
841 |
+
.open > .embedpress-modal .btn-info.dropdown-toggle {
|
842 |
color: #fff;
|
843 |
background-color: #31b0d5;
|
844 |
+
border-color: #269abc;
|
845 |
+
}
|
846 |
+
|
847 |
+
.embedpress-modal .btn-info:active:hover, .embedpress-modal .btn-info:active:focus, .embedpress-modal .btn-info:active.focus, .embedpress-modal .btn-info.active:hover, .embedpress-modal .btn-info.active:focus, .embedpress-modal .btn-info.active.focus,
|
848 |
+
.open > .embedpress-modal .btn-info.dropdown-toggle:hover,
|
849 |
+
.open > .embedpress-modal .btn-info.dropdown-toggle:focus,
|
850 |
+
.open > .embedpress-modal .btn-info.dropdown-toggle.focus {
|
851 |
+
color: #fff;
|
852 |
+
background-color: #269abc;
|
853 |
+
border-color: #1b6d85;
|
854 |
+
}
|
855 |
+
|
856 |
+
.embedpress-modal .btn-info:active, .embedpress-modal .btn-info.active,
|
857 |
+
.open > .embedpress-modal .btn-info.dropdown-toggle {
|
858 |
+
background-image: none;
|
859 |
+
}
|
860 |
+
|
861 |
+
.embedpress-modal .btn-info.disabled:hover, .embedpress-modal .btn-info.disabled:focus, .embedpress-modal .btn-info.disabled.focus, .embedpress-modal .btn-info[disabled]:hover, .embedpress-modal .btn-info[disabled]:focus, .embedpress-modal .btn-info[disabled].focus,
|
862 |
+
fieldset[disabled] .embedpress-modal .btn-info:hover,
|
863 |
+
fieldset[disabled] .embedpress-modal .btn-info:focus,
|
864 |
+
fieldset[disabled] .embedpress-modal .btn-info.focus {
|
865 |
background-color: #5bc0de;
|
866 |
+
border-color: #46b8da;
|
867 |
+
}
|
868 |
+
|
869 |
+
.embedpress-modal .btn-info .badge {
|
870 |
color: #5bc0de;
|
871 |
+
background-color: #fff;
|
872 |
+
}
|
873 |
|
874 |
.embedpress-modal .btn-warning {
|
875 |
+
color: #fff;
|
876 |
+
background-color: #f0ad4e;
|
877 |
+
border-color: #eea236;
|
878 |
+
}
|
879 |
+
|
880 |
+
.embedpress-modal .btn-warning:focus, .embedpress-modal .btn-warning.focus {
|
881 |
color: #fff;
|
882 |
background-color: #ec971f;
|
883 |
+
border-color: #985f0d;
|
884 |
+
}
|
885 |
+
|
886 |
+
.embedpress-modal .btn-warning:hover {
|
887 |
color: #fff;
|
888 |
background-color: #ec971f;
|
889 |
+
border-color: #d58512;
|
890 |
+
}
|
891 |
+
|
892 |
+
.embedpress-modal .btn-warning:active, .embedpress-modal .btn-warning.active,
|
893 |
+
.open > .embedpress-modal .btn-warning.dropdown-toggle {
|
894 |
color: #fff;
|
895 |
background-color: #ec971f;
|
896 |
+
border-color: #d58512;
|
897 |
+
}
|
898 |
+
|
899 |
+
.embedpress-modal .btn-warning:active:hover, .embedpress-modal .btn-warning:active:focus, .embedpress-modal .btn-warning:active.focus, .embedpress-modal .btn-warning.active:hover, .embedpress-modal .btn-warning.active:focus, .embedpress-modal .btn-warning.active.focus,
|
900 |
+
.open > .embedpress-modal .btn-warning.dropdown-toggle:hover,
|
901 |
+
.open > .embedpress-modal .btn-warning.dropdown-toggle:focus,
|
902 |
+
.open > .embedpress-modal .btn-warning.dropdown-toggle.focus {
|
903 |
+
color: #fff;
|
904 |
+
background-color: #d58512;
|
905 |
+
border-color: #985f0d;
|
906 |
+
}
|
907 |
+
|
908 |
+
.embedpress-modal .btn-warning:active, .embedpress-modal .btn-warning.active,
|
909 |
+
.open > .embedpress-modal .btn-warning.dropdown-toggle {
|
910 |
+
background-image: none;
|
911 |
+
}
|
912 |
+
|
913 |
+
.embedpress-modal .btn-warning.disabled:hover, .embedpress-modal .btn-warning.disabled:focus, .embedpress-modal .btn-warning.disabled.focus, .embedpress-modal .btn-warning[disabled]:hover, .embedpress-modal .btn-warning[disabled]:focus, .embedpress-modal .btn-warning[disabled].focus,
|
914 |
+
fieldset[disabled] .embedpress-modal .btn-warning:hover,
|
915 |
+
fieldset[disabled] .embedpress-modal .btn-warning:focus,
|
916 |
+
fieldset[disabled] .embedpress-modal .btn-warning.focus {
|
917 |
background-color: #f0ad4e;
|
918 |
+
border-color: #eea236;
|
919 |
+
}
|
920 |
+
|
921 |
+
.embedpress-modal .btn-warning .badge {
|
922 |
color: #f0ad4e;
|
923 |
+
background-color: #fff;
|
924 |
+
}
|
925 |
|
926 |
.embedpress-modal .btn-danger {
|
927 |
+
color: #fff;
|
928 |
+
background-color: #d9534f;
|
929 |
+
border-color: #d43f3a;
|
930 |
+
}
|
931 |
+
|
932 |
+
.embedpress-modal .btn-danger:focus, .embedpress-modal .btn-danger.focus {
|
933 |
color: #fff;
|
934 |
background-color: #c9302c;
|
935 |
+
border-color: #761c19;
|
936 |
+
}
|
937 |
+
|
938 |
+
.embedpress-modal .btn-danger:hover {
|
939 |
color: #fff;
|
940 |
background-color: #c9302c;
|
941 |
+
border-color: #ac2925;
|
942 |
+
}
|
943 |
+
|
944 |
+
.embedpress-modal .btn-danger:active, .embedpress-modal .btn-danger.active,
|
945 |
+
.open > .embedpress-modal .btn-danger.dropdown-toggle {
|
946 |
color: #fff;
|
947 |
background-color: #c9302c;
|
948 |
+
border-color: #ac2925;
|
949 |
+
}
|
950 |
+
|
951 |
+
.embedpress-modal .btn-danger:active:hover, .embedpress-modal .btn-danger:active:focus, .embedpress-modal .btn-danger:active.focus, .embedpress-modal .btn-danger.active:hover, .embedpress-modal .btn-danger.active:focus, .embedpress-modal .btn-danger.active.focus,
|
952 |
+
.open > .embedpress-modal .btn-danger.dropdown-toggle:hover,
|
953 |
+
.open > .embedpress-modal .btn-danger.dropdown-toggle:focus,
|
954 |
+
.open > .embedpress-modal .btn-danger.dropdown-toggle.focus {
|
955 |
+
color: #fff;
|
956 |
+
background-color: #ac2925;
|
957 |
+
border-color: #761c19;
|
958 |
+
}
|
959 |
+
|
960 |
+
.embedpress-modal .btn-danger:active, .embedpress-modal .btn-danger.active,
|
961 |
+
.open > .embedpress-modal .btn-danger.dropdown-toggle {
|
962 |
+
background-image: none;
|
963 |
+
}
|
964 |
+
|
965 |
+
.embedpress-modal .btn-danger.disabled:hover, .embedpress-modal .btn-danger.disabled:focus, .embedpress-modal .btn-danger.disabled.focus, .embedpress-modal .btn-danger[disabled]:hover, .embedpress-modal .btn-danger[disabled]:focus, .embedpress-modal .btn-danger[disabled].focus,
|
966 |
+
fieldset[disabled] .embedpress-modal .btn-danger:hover,
|
967 |
+
fieldset[disabled] .embedpress-modal .btn-danger:focus,
|
968 |
+
fieldset[disabled] .embedpress-modal .btn-danger.focus {
|
969 |
background-color: #d9534f;
|
970 |
+
border-color: #d43f3a;
|
971 |
+
}
|
972 |
+
|
973 |
+
.embedpress-modal .btn-danger .badge {
|
974 |
color: #d9534f;
|
975 |
+
background-color: #fff;
|
976 |
+
}
|
977 |
|
978 |
.embedpress-modal .btn-link {
|
979 |
+
color: #337ab7;
|
980 |
+
font-weight: normal;
|
981 |
+
border-radius: 0;
|
982 |
+
}
|
983 |
+
|
984 |
+
.embedpress-modal .btn-link, .embedpress-modal .btn-link:active, .embedpress-modal .btn-link.active, .embedpress-modal .btn-link[disabled],
|
985 |
+
fieldset[disabled] .embedpress-modal .btn-link {
|
986 |
background-color: transparent;
|
987 |
+
box-shadow: none;
|
988 |
+
}
|
989 |
+
|
990 |
+
.embedpress-modal .btn-link, .embedpress-modal .btn-link:hover, .embedpress-modal .btn-link:focus, .embedpress-modal .btn-link:active {
|
991 |
+
border-color: transparent;
|
992 |
+
}
|
993 |
+
|
994 |
+
.embedpress-modal .btn-link:hover, .embedpress-modal .btn-link:focus {
|
995 |
color: #23527c;
|
996 |
text-decoration: underline;
|
997 |
+
background-color: transparent;
|
998 |
+
}
|
999 |
+
|
1000 |
+
.embedpress-modal .btn-link[disabled]:hover, .embedpress-modal .btn-link[disabled]:focus,
|
1001 |
+
fieldset[disabled] .embedpress-modal .btn-link:hover,
|
1002 |
+
fieldset[disabled] .embedpress-modal .btn-link:focus {
|
1003 |
color: #777777;
|
1004 |
+
text-decoration: none;
|
1005 |
+
}
|
1006 |
|
1007 |
.embedpress-modal .btn-lg, .embedpress-modal .btn-group-lg > .btn {
|
1008 |
+
padding: 10px 16px;
|
1009 |
+
font-size: 18px;
|
1010 |
+
line-height: 1.33333;
|
1011 |
+
border-radius: 6px;
|
1012 |
+
}
|
1013 |
|
1014 |
.embedpress-modal .btn-sm, .embedpress-modal .btn-group-sm > .btn {
|
1015 |
+
padding: 5px 10px;
|
1016 |
+
font-size: 12px;
|
1017 |
+
line-height: 1.5;
|
1018 |
+
border-radius: 3px;
|
1019 |
+
}
|
1020 |
|
1021 |
.embedpress-modal .btn-xs, .embedpress-modal .btn-group-xs > .btn {
|
1022 |
+
padding: 1px 5px;
|
1023 |
+
font-size: 12px;
|
1024 |
+
line-height: 1.5;
|
1025 |
+
border-radius: 3px;
|
1026 |
+
}
|
1027 |
|
1028 |
.embedpress-modal .btn-block {
|
1029 |
+
display: block;
|
1030 |
+
width: 100%;
|
1031 |
+
}
|
1032 |
|
1033 |
.embedpress-modal .btn-block + .btn-block {
|
1034 |
+
margin-top: 5px;
|
1035 |
+
}
|
1036 |
|
1037 |
.embedpress-modal input[type="submit"].btn-block,
|
1038 |
.embedpress-modal input[type="reset"].btn-block,
|
1039 |
.embedpress-modal input[type="button"].btn-block {
|
1040 |
+
width: 100%;
|
1041 |
+
}
|
1042 |
|
1043 |
.embedpress-modal .btn-group,
|
1044 |
.embedpress-modal .btn-group-vertical {
|
|
|
|
|
|
|
|
|
|
|
1045 |
position: relative;
|
1046 |
+
display: inline-block;
|
1047 |
+
vertical-align: middle;
|
1048 |
+
}
|
1049 |
+
|
1050 |
+
.embedpress-modal .btn-group > .btn,
|
1051 |
+
.embedpress-modal .btn-group-vertical > .btn {
|
1052 |
+
position: relative;
|
1053 |
+
float: left;
|
1054 |
+
}
|
1055 |
+
|
1056 |
+
.embedpress-modal .btn-group > .btn:hover, .embedpress-modal .btn-group > .btn:focus, .embedpress-modal .btn-group > .btn:active, .embedpress-modal .btn-group > .btn.active,
|
1057 |
+
.embedpress-modal .btn-group-vertical > .btn:hover,
|
1058 |
+
.embedpress-modal .btn-group-vertical > .btn:focus,
|
1059 |
+
.embedpress-modal .btn-group-vertical > .btn:active,
|
1060 |
+
.embedpress-modal .btn-group-vertical > .btn.active {
|
1061 |
+
z-index: 2;
|
1062 |
+
}
|
1063 |
|
1064 |
.embedpress-modal .btn-group .btn + .btn,
|
1065 |
.embedpress-modal .btn-group .btn + .btn-group,
|
1066 |
.embedpress-modal .btn-group .btn-group + .btn,
|
1067 |
.embedpress-modal .btn-group .btn-group + .btn-group {
|
1068 |
+
margin-left: -1px;
|
1069 |
+
}
|
1070 |
|
1071 |
.embedpress-modal .btn-toolbar {
|
1072 |
+
margin-left: -5px;
|
1073 |
+
}
|
1074 |
+
|
1075 |
+
.embedpress-modal .btn-toolbar:before, .embedpress-modal .btn-toolbar:after {
|
1076 |
content: " ";
|
1077 |
+
display: table;
|
1078 |
+
}
|
1079 |
+
|
1080 |
+
.embedpress-modal .btn-toolbar:after {
|
1081 |
+
clear: both;
|
1082 |
+
}
|
1083 |
+
|
1084 |
+
.embedpress-modal .btn-toolbar .btn,
|
1085 |
+
.embedpress-modal .btn-toolbar .btn-group,
|
1086 |
+
.embedpress-modal .btn-toolbar .input-group {
|
1087 |
+
float: left;
|
1088 |
+
}
|
1089 |
+
|
1090 |
+
.embedpress-modal .btn-toolbar > .btn,
|
1091 |
+
.embedpress-modal .btn-toolbar > .btn-group,
|
1092 |
+
.embedpress-modal .btn-toolbar > .input-group {
|
1093 |
+
margin-left: 5px;
|
1094 |
+
}
|
1095 |
|
1096 |
.embedpress-modal .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
|
1097 |
+
border-radius: 0;
|
1098 |
+
}
|
1099 |
|
1100 |
.embedpress-modal .btn-group > .btn:first-child {
|
1101 |
+
margin-left: 0;
|
1102 |
+
}
|
1103 |
+
|
1104 |
+
.embedpress-modal .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
|
1105 |
border-bottom-right-radius: 0;
|
1106 |
+
border-top-right-radius: 0;
|
1107 |
+
}
|
1108 |
|
1109 |
.embedpress-modal .btn-group > .btn:last-child:not(:first-child),
|
1110 |
.embedpress-modal .btn-group > .dropdown-toggle:not(:first-child) {
|
1111 |
+
border-bottom-left-radius: 0;
|
1112 |
+
border-top-left-radius: 0;
|
1113 |
+
}
|
1114 |
|
1115 |
.embedpress-modal .btn-group > .btn-group {
|
1116 |
+
float: left;
|
1117 |
+
}
|
1118 |
|
1119 |
.embedpress-modal .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
|
1120 |
+
border-radius: 0;
|
1121 |
+
}
|
1122 |
|
1123 |
.embedpress-modal .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
|
1124 |
.embedpress-modal .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
|
1125 |
+
border-bottom-right-radius: 0;
|
1126 |
+
border-top-right-radius: 0;
|
1127 |
+
}
|
1128 |
|
1129 |
.embedpress-modal .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
|
1130 |
+
border-bottom-left-radius: 0;
|
1131 |
+
border-top-left-radius: 0;
|
1132 |
+
}
|
1133 |
|
1134 |
.embedpress-modal .btn-group .dropdown-toggle:active,
|
1135 |
.embedpress-modal .btn-group.open .dropdown-toggle {
|
1136 |
+
outline: 0;
|
1137 |
+
}
|
1138 |
|
1139 |
.embedpress-modal .btn-group > .btn + .dropdown-toggle {
|
1140 |
+
padding-left: 8px;
|
1141 |
+
padding-right: 8px;
|
1142 |
+
}
|
1143 |
|
1144 |
.embedpress-modal .btn-group > .btn-lg + .dropdown-toggle, .embedpress-modal .btn-group-lg.btn-group > .btn + .dropdown-toggle {
|
1145 |
+
padding-left: 12px;
|
1146 |
+
padding-right: 12px;
|
1147 |
+
}
|
1148 |
|
1149 |
.embedpress-modal .btn-group.open .dropdown-toggle {
|
1150 |
+
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
1151 |
+
}
|
1152 |
+
|
1153 |
+
.embedpress-modal .btn-group.open .dropdown-toggle.btn-link {
|
1154 |
+
box-shadow: none;
|
1155 |
+
}
|
1156 |
|
1157 |
.embedpress-modal .btn .caret {
|
1158 |
+
margin-left: 0;
|
1159 |
+
}
|
1160 |
|
1161 |
.embedpress-modal .btn-lg .caret, .embedpress-modal .btn-group-lg > .btn .caret {
|
1162 |
+
border-width: 5px 5px 0;
|
1163 |
+
border-bottom-width: 0;
|
1164 |
+
}
|
1165 |
|
1166 |
.embedpress-modal .dropup .btn-lg .caret, .embedpress-modal .dropup .btn-group-lg > .btn .caret {
|
1167 |
+
border-width: 0 5px 5px;
|
1168 |
+
}
|
1169 |
|
1170 |
.embedpress-modal .btn-group-vertical > .btn,
|
1171 |
.embedpress-modal .btn-group-vertical > .btn-group,
|
1172 |
.embedpress-modal .btn-group-vertical > .btn-group > .btn {
|
1173 |
+
display: block;
|
1174 |
+
float: none;
|
1175 |
+
width: 100%;
|
1176 |
+
max-width: 100%;
|
1177 |
+
}
|
1178 |
|
1179 |
.embedpress-modal .btn-group-vertical > .btn-group:before, .embedpress-modal .btn-group-vertical > .btn-group:after {
|
1180 |
+
content: " ";
|
1181 |
+
display: table;
|
1182 |
+
}
|
1183 |
|
1184 |
.embedpress-modal .btn-group-vertical > .btn-group:after {
|
1185 |
+
clear: both;
|
1186 |
+
}
|
1187 |
|
1188 |
.embedpress-modal .btn-group-vertical > .btn-group > .btn {
|
1189 |
+
float: none;
|
1190 |
+
}
|
1191 |
|
1192 |
.embedpress-modal .btn-group-vertical > .btn + .btn,
|
1193 |
.embedpress-modal .btn-group-vertical > .btn + .btn-group,
|
1194 |
.embedpress-modal .btn-group-vertical > .btn-group + .btn,
|
1195 |
.embedpress-modal .btn-group-vertical > .btn-group + .btn-group {
|
1196 |
+
margin-top: -1px;
|
1197 |
+
margin-left: 0;
|
1198 |
+
}
|
1199 |
|
1200 |
.embedpress-modal .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
|
1201 |
+
border-radius: 0;
|
1202 |
+
}
|
1203 |
|
1204 |
.embedpress-modal .btn-group-vertical > .btn:first-child:not(:last-child) {
|
1205 |
+
border-top-right-radius: 4px;
|
1206 |
+
border-top-left-radius: 4px;
|
1207 |
+
border-bottom-right-radius: 0;
|
1208 |
+
border-bottom-left-radius: 0;
|
1209 |
+
}
|
1210 |
|
1211 |
.embedpress-modal .btn-group-vertical > .btn:last-child:not(:first-child) {
|
1212 |
+
border-top-right-radius: 0;
|
1213 |
+
border-top-left-radius: 0;
|
1214 |
+
border-bottom-right-radius: 4px;
|
1215 |
+
border-bottom-left-radius: 4px;
|
1216 |
+
}
|
1217 |
|
1218 |
.embedpress-modal .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
|
1219 |
+
border-radius: 0;
|
1220 |
+
}
|
1221 |
|
1222 |
.embedpress-modal .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
|
1223 |
.embedpress-modal .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
|
1224 |
+
border-bottom-right-radius: 0;
|
1225 |
+
border-bottom-left-radius: 0;
|
1226 |
+
}
|
1227 |
|
1228 |
.embedpress-modal .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
|
1229 |
+
border-top-right-radius: 0;
|
1230 |
+
border-top-left-radius: 0;
|
1231 |
+
}
|
1232 |
|
1233 |
.embedpress-modal .btn-group-justified {
|
1234 |
+
display: table;
|
1235 |
+
width: 100%;
|
1236 |
+
table-layout: fixed;
|
1237 |
+
border-collapse: separate;
|
1238 |
+
}
|
1239 |
+
|
1240 |
+
.embedpress-modal .btn-group-justified > .btn,
|
1241 |
+
.embedpress-modal .btn-group-justified > .btn-group {
|
1242 |
float: none;
|
1243 |
display: table-cell;
|
1244 |
+
width: 1%;
|
1245 |
+
}
|
1246 |
+
|
1247 |
+
.embedpress-modal .btn-group-justified > .btn-group .btn {
|
1248 |
+
width: 100%;
|
1249 |
+
}
|
1250 |
+
|
1251 |
+
.embedpress-modal .btn-group-justified > .btn-group .dropdown-menu {
|
1252 |
+
left: auto;
|
1253 |
+
}
|
1254 |
|
1255 |
.embedpress-modal [data-toggle="buttons"] > .btn input[type="radio"],
|
1256 |
.embedpress-modal [data-toggle="buttons"] > .btn input[type="checkbox"],
|
1257 |
.embedpress-modal [data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
|
1258 |
.embedpress-modal [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
|
1259 |
+
position: absolute;
|
1260 |
+
clip: rect(0, 0, 0, 0);
|
1261 |
+
pointer-events: none;
|
1262 |
+
}
|
1263 |
|
1264 |
.embedpress-modal .input-group {
|
1265 |
+
position: relative;
|
1266 |
+
display: table;
|
1267 |
+
border-collapse: separate;
|
1268 |
+
}
|
1269 |
+
|
1270 |
+
.embedpress-modal .input-group[class*="col-"] {
|
1271 |
float: none;
|
1272 |
padding-left: 0;
|
1273 |
+
padding-right: 0;
|
1274 |
+
}
|
1275 |
+
|
1276 |
+
.embedpress-modal .input-group .form-control {
|
1277 |
position: relative;
|
1278 |
z-index: 2;
|
1279 |
float: left;
|
1280 |
width: 100%;
|
1281 |
+
margin-bottom: 0;
|
1282 |
+
}
|
1283 |
+
|
1284 |
+
.embedpress-modal .input-group .form-control:focus {
|
1285 |
+
z-index: 3;
|
1286 |
+
}
|
1287 |
|
1288 |
.embedpress-modal .input-group-addon,
|
1289 |
.embedpress-modal .input-group-btn,
|
1290 |
.embedpress-modal .input-group .form-control {
|
1291 |
+
display: table-cell;
|
1292 |
+
}
|
1293 |
+
|
1294 |
+
.embedpress-modal .input-group-addon:not(:first-child):not(:last-child),
|
1295 |
+
.embedpress-modal .input-group-btn:not(:first-child):not(:last-child),
|
1296 |
+
.embedpress-modal .input-group .form-control:not(:first-child):not(:last-child) {
|
1297 |
+
border-radius: 0;
|
1298 |
+
}
|
1299 |
|
1300 |
.embedpress-modal .input-group-addon,
|
1301 |
.embedpress-modal .input-group-btn {
|
1302 |
+
width: 1%;
|
1303 |
+
white-space: nowrap;
|
1304 |
+
vertical-align: middle;
|
1305 |
+
}
|
1306 |
|
1307 |
.embedpress-modal .input-group-addon {
|
1308 |
+
padding: 6px 12px;
|
1309 |
+
font-size: 14px;
|
1310 |
+
font-weight: normal;
|
1311 |
+
line-height: 1;
|
1312 |
+
color: #555555;
|
1313 |
+
text-align: center;
|
1314 |
+
background-color: #eeeeee;
|
1315 |
+
border: 1px solid #ccc;
|
1316 |
+
border-radius: 4px;
|
1317 |
+
}
|
1318 |
+
|
1319 |
+
.embedpress-modal .input-group-addon.input-sm, .embedpress-modal .input-group-sm > .input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > .input-group-addon.btn {
|
1320 |
padding: 5px 10px;
|
1321 |
font-size: 12px;
|
1322 |
+
border-radius: 3px;
|
1323 |
+
}
|
1324 |
+
|
1325 |
+
.embedpress-modal .input-group-addon.input-lg, .embedpress-modal .input-group-lg > .input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > .input-group-addon.btn {
|
1326 |
padding: 10px 16px;
|
1327 |
font-size: 18px;
|
1328 |
+
border-radius: 6px;
|
1329 |
+
}
|
1330 |
+
|
1331 |
+
.embedpress-modal .input-group-addon input[type="radio"],
|
1332 |
+
.embedpress-modal .input-group-addon input[type="checkbox"] {
|
1333 |
+
margin-top: 0;
|
1334 |
+
}
|
1335 |
|
1336 |
.embedpress-modal .input-group .form-control:first-child,
|
1337 |
.embedpress-modal .input-group-addon:first-child,
|
1340 |
.embedpress-modal .input-group-btn:first-child > .dropdown-toggle,
|
1341 |
.embedpress-modal .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
|
1342 |
.embedpress-modal .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
|
1343 |
+
border-bottom-right-radius: 0;
|
1344 |
+
border-top-right-radius: 0;
|
1345 |
+
}
|
1346 |
|
1347 |
.embedpress-modal .input-group-addon:first-child {
|
1348 |
+
border-right: 0;
|
1349 |
+
}
|
1350 |
|
1351 |
.embedpress-modal .input-group .form-control:last-child,
|
1352 |
.embedpress-modal .input-group-addon:last-child,
|
1355 |
.embedpress-modal .input-group-btn:last-child > .dropdown-toggle,
|
1356 |
.embedpress-modal .input-group-btn:first-child > .btn:not(:first-child),
|
1357 |
.embedpress-modal .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
|
1358 |
+
border-bottom-left-radius: 0;
|
1359 |
+
border-top-left-radius: 0;
|
1360 |
+
}
|
1361 |
|
1362 |
.embedpress-modal .input-group-addon:last-child {
|
1363 |
+
border-left: 0;
|
1364 |
+
}
|
1365 |
|
1366 |
.embedpress-modal .input-group-btn {
|
1367 |
+
position: relative;
|
1368 |
+
font-size: 0;
|
1369 |
+
white-space: nowrap;
|
1370 |
+
}
|
1371 |
+
|
1372 |
+
.embedpress-modal .input-group-btn > .btn {
|
1373 |
+
position: relative;
|
1374 |
+
}
|
1375 |
+
|
1376 |
+
.embedpress-modal .input-group-btn > .btn + .btn {
|
1377 |
+
margin-left: -1px;
|
1378 |
+
}
|
1379 |
+
|
1380 |
+
.embedpress-modal .input-group-btn > .btn:hover, .embedpress-modal .input-group-btn > .btn:focus, .embedpress-modal .input-group-btn > .btn:active {
|
1381 |
z-index: 2;
|
1382 |
+
}
|
1383 |
+
|
1384 |
+
.embedpress-modal .input-group-btn:first-child > .btn,
|
1385 |
+
.embedpress-modal .input-group-btn:first-child > .btn-group {
|
1386 |
+
margin-right: -1px;
|
1387 |
+
}
|
1388 |
+
|
1389 |
+
.embedpress-modal .input-group-btn:last-child > .btn,
|
1390 |
+
.embedpress-modal .input-group-btn:last-child > .btn-group {
|
1391 |
+
z-index: 2;
|
1392 |
+
margin-left: -1px;
|
1393 |
+
}
|
1394 |
|
1395 |
.embedpress-modal .close {
|
1396 |
+
float: right;
|
1397 |
+
font-size: 21px;
|
1398 |
+
font-weight: bold;
|
1399 |
+
line-height: 1;
|
1400 |
+
color: #000;
|
1401 |
+
text-shadow: 0 1px 0 #fff;
|
1402 |
+
opacity: 0.2;
|
1403 |
+
filter: alpha(opacity=20);
|
1404 |
+
}
|
1405 |
+
|
1406 |
+
.embedpress-modal .close:hover, .embedpress-modal .close:focus {
|
1407 |
color: #000;
|
1408 |
text-decoration: none;
|
1409 |
cursor: pointer;
|
1410 |
opacity: 0.5;
|
1411 |
+
filter: alpha(opacity=50);
|
1412 |
+
}
|
1413 |
|
1414 |
.embedpress-modal button.close {
|
1415 |
+
padding: 0;
|
1416 |
+
cursor: pointer;
|
1417 |
+
background: transparent;
|
1418 |
+
border: 0;
|
1419 |
+
-webkit-appearance: none;
|
1420 |
+
}
|
1421 |
|
1422 |
.modal-open {
|
1423 |
+
overflow: hidden;
|
1424 |
+
}
|
1425 |
|
1426 |
.modal {
|
1427 |
+
display: none;
|
1428 |
+
overflow: hidden;
|
1429 |
+
position: fixed;
|
1430 |
+
top: 0;
|
1431 |
+
right: 0;
|
1432 |
+
bottom: 0;
|
1433 |
+
left: 0;
|
1434 |
+
z-index: 100010;
|
1435 |
+
-webkit-overflow-scrolling: touch;
|
1436 |
+
outline: 0;
|
1437 |
+
}
|
1438 |
+
|
1439 |
+
.modal.fade .modal-dialog {
|
1440 |
transform: translate(0, -25%);
|
1441 |
+
transition: transform 0.3s ease-out;
|
1442 |
+
}
|
1443 |
+
|
1444 |
+
.modal.in .modal-dialog {
|
1445 |
+
transform: translate(0, 0);
|
1446 |
+
}
|
1447 |
|
1448 |
.modal-open .modal {
|
1449 |
+
overflow-x: hidden;
|
1450 |
+
overflow-y: auto;
|
1451 |
+
}
|
1452 |
|
1453 |
.modal-dialog {
|
1454 |
+
position: relative;
|
1455 |
+
width: auto;
|
1456 |
+
margin: 10px;
|
1457 |
+
}
|
1458 |
|
1459 |
.modal-content {
|
1460 |
+
position: relative;
|
1461 |
+
background-color: #fff;
|
1462 |
+
border: 1px solid #999;
|
1463 |
+
border: 1px solid rgba(0, 0, 0, 0.2);
|
1464 |
+
border-radius: 6px;
|
1465 |
+
box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
|
1466 |
+
background-clip: padding-box;
|
1467 |
+
outline: 0;
|
1468 |
+
}
|
1469 |
|
1470 |
.modal-backdrop {
|
1471 |
+
position: fixed;
|
1472 |
+
top: 0;
|
1473 |
+
right: 0;
|
1474 |
+
bottom: 0;
|
1475 |
+
left: 0;
|
1476 |
+
z-index: 100001;
|
1477 |
+
background-color: #000;
|
1478 |
+
}
|
1479 |
+
|
1480 |
+
.modal-backdrop.fade {
|
1481 |
opacity: 0;
|
1482 |
+
filter: alpha(opacity=0);
|
1483 |
+
}
|
1484 |
+
|
1485 |
+
.modal-backdrop.in {
|
1486 |
opacity: 0.5;
|
1487 |
+
filter: alpha(opacity=50);
|
1488 |
+
}
|
1489 |
|
1490 |
.modal-header {
|
1491 |
+
padding: 15px;
|
1492 |
+
border-bottom: 1px solid #e5e5e5;
|
1493 |
+
}
|
1494 |
+
|
1495 |
+
.modal-header:before, .modal-header:after {
|
1496 |
content: " ";
|
1497 |
+
display: table;
|
1498 |
+
}
|
1499 |
+
|
1500 |
+
.modal-header:after {
|
1501 |
+
clear: both;
|
1502 |
+
}
|
1503 |
|
1504 |
.modal-header .close {
|
1505 |
+
margin-top: -2px;
|
1506 |
+
}
|
1507 |
|
1508 |
.modal-title {
|
1509 |
+
margin: 0;
|
1510 |
+
line-height: 1.42857;
|
1511 |
+
}
|
1512 |
|
1513 |
.modal-body {
|
1514 |
+
position: relative;
|
1515 |
+
padding: 15px;
|
1516 |
+
}
|
1517 |
|
1518 |
.modal-footer {
|
1519 |
+
padding: 15px;
|
1520 |
+
text-align: right;
|
1521 |
+
border-top: 1px solid #e5e5e5;
|
1522 |
+
}
|
1523 |
+
|
1524 |
+
.modal-footer:before, .modal-footer:after {
|
1525 |
content: " ";
|
1526 |
+
display: table;
|
1527 |
+
}
|
1528 |
+
|
1529 |
+
.modal-footer:after {
|
1530 |
+
clear: both;
|
1531 |
+
}
|
1532 |
+
|
1533 |
+
.modal-footer .btn + .btn {
|
1534 |
margin-left: 5px;
|
1535 |
+
margin-bottom: 0;
|
1536 |
+
}
|
1537 |
+
|
1538 |
+
.modal-footer .btn-group .btn + .btn {
|
1539 |
+
margin-left: -1px;
|
1540 |
+
}
|
1541 |
+
|
1542 |
+
.modal-footer .btn-block + .btn-block {
|
1543 |
+
margin-left: 0;
|
1544 |
+
}
|
1545 |
|
1546 |
.modal-scrollbar-measure {
|
1547 |
+
position: absolute;
|
1548 |
+
top: -9999px;
|
1549 |
+
width: 50px;
|
1550 |
+
height: 50px;
|
1551 |
+
overflow: scroll;
|
1552 |
+
}
|
1553 |
|
1554 |
@media (min-width: 768px) {
|
1555 |
+
.modal-dialog {
|
1556 |
+
width: 600px;
|
1557 |
+
margin: 30px auto;
|
1558 |
+
}
|
1559 |
+
|
1560 |
+
.modal-content {
|
1561 |
+
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
|
1562 |
+
}
|
1563 |
+
|
1564 |
+
.modal-sm {
|
1565 |
+
width: 300px;
|
1566 |
+
}
|
1567 |
+
}
|
1568 |
|
1569 |
@media (min-width: 992px) {
|
1570 |
+
.modal-lg {
|
1571 |
+
width: 900px;
|
1572 |
+
}
|
1573 |
+
}
|
1574 |
|
1575 |
@-ms-viewport {
|
1576 |
+
width: device-width;
|
1577 |
+
}
|
1578 |
|
1579 |
.visible-xs {
|
1580 |
+
display: none !important;
|
1581 |
+
}
|
1582 |
|
1583 |
.visible-sm {
|
1584 |
+
display: none !important;
|
1585 |
+
}
|
1586 |
|
1587 |
.visible-md {
|
1588 |
+
display: none !important;
|
1589 |
+
}
|
1590 |
|
1591 |
.visible-lg {
|
1592 |
+
display: none !important;
|
1593 |
+
}
|
1594 |
|
1595 |
.visible-xs-block,
|
1596 |
.visible-xs-inline,
|
1604 |
.visible-lg-block,
|
1605 |
.visible-lg-inline,
|
1606 |
.visible-lg-inline-block {
|
1607 |
+
display: none !important;
|
1608 |
+
}
|
1609 |
|
1610 |
@media (max-width: 767px) {
|
1611 |
+
.visible-xs {
|
1612 |
+
display: block !important;
|
1613 |
+
}
|
1614 |
+
|
1615 |
+
table.visible-xs {
|
1616 |
+
display: table !important;
|
1617 |
+
}
|
1618 |
+
|
1619 |
+
tr.visible-xs {
|
1620 |
+
display: table-row !important;
|
1621 |
+
}
|
1622 |
+
|
1623 |
+
th.visible-xs,
|
1624 |
+
td.visible-xs {
|
1625 |
+
display: table-cell !important;
|
1626 |
+
}
|
1627 |
+
}
|
1628 |
|
1629 |
@media (max-width: 767px) {
|
1630 |
+
.visible-xs-block {
|
1631 |
+
display: block !important;
|
1632 |
+
}
|
1633 |
+
}
|
1634 |
|
1635 |
@media (max-width: 767px) {
|
1636 |
+
.visible-xs-inline {
|
1637 |
+
display: inline !important;
|
1638 |
+
}
|
1639 |
+
}
|
1640 |
|
1641 |
@media (max-width: 767px) {
|
1642 |
+
.visible-xs-inline-block {
|
1643 |
+
display: inline-block !important;
|
1644 |
+
}
|
1645 |
+
}
|
1646 |
|
1647 |
@media (min-width: 768px) and (max-width: 991px) {
|
1648 |
+
.visible-sm {
|
1649 |
+
display: block !important;
|
1650 |
+
}
|
1651 |
+
|
1652 |
+
table.visible-sm {
|
1653 |
+
display: table !important;
|
1654 |
+
}
|
1655 |
+
|
1656 |
+
tr.visible-sm {
|
1657 |
+
display: table-row !important;
|
1658 |
+
}
|
1659 |
+
|
1660 |
+
th.visible-sm,
|
1661 |
+
td.visible-sm {
|
1662 |
+
display: table-cell !important;
|
1663 |
+
}
|
1664 |
+
}
|
1665 |
|
1666 |
@media (min-width: 768px) and (max-width: 991px) {
|
1667 |
+
.visible-sm-block {
|
1668 |
+
display: block !important;
|
1669 |
+
}
|
1670 |
+
}
|
1671 |
|
1672 |
@media (min-width: 768px) and (max-width: 991px) {
|
1673 |
+
.visible-sm-inline {
|
1674 |
+
display: inline !important;
|
1675 |
+
}
|
1676 |
+
}
|
1677 |
|
1678 |
@media (min-width: 768px) and (max-width: 991px) {
|
1679 |
+
.visible-sm-inline-block {
|
1680 |
+
display: inline-block !important;
|
1681 |
+
}
|
1682 |
+
}
|
1683 |
|
1684 |
@media (min-width: 992px) and (max-width: 1199px) {
|
1685 |
+
.visible-md {
|
1686 |
+
display: block !important;
|
1687 |
+
}
|
1688 |
+
|
1689 |
+
table.visible-md {
|
1690 |
+
display: table !important;
|
1691 |
+
}
|
1692 |
+
|
1693 |
+
tr.visible-md {
|
1694 |
+
display: table-row !important;
|
1695 |
+
}
|
1696 |
+
|
1697 |
+
th.visible-md,
|
1698 |
+
td.visible-md {
|
1699 |
+
display: table-cell !important;
|
1700 |
+
}
|
1701 |
+
}
|
1702 |
|
1703 |
@media (min-width: 992px) and (max-width: 1199px) {
|
1704 |
+
.visible-md-block {
|
1705 |
+
display: block !important;
|
1706 |
+
}
|
1707 |
+
}
|
1708 |
|
1709 |
@media (min-width: 992px) and (max-width: 1199px) {
|
1710 |
+
.visible-md-inline {
|
1711 |
+
display: inline !important;
|
1712 |
+
}
|
1713 |
+
}
|
1714 |
|
1715 |
@media (min-width: 992px) and (max-width: 1199px) {
|
1716 |
+
.visible-md-inline-block {
|
1717 |
+
display: inline-block !important;
|
1718 |
+
}
|
1719 |
+
}
|
1720 |
|
1721 |
@media (min-width: 1200px) {
|
1722 |
+
.visible-lg {
|
1723 |
+
display: block !important;
|
1724 |
+
}
|
1725 |
+
|
1726 |
+
table.visible-lg {
|
1727 |
+
display: table !important;
|
1728 |
+
}
|
1729 |
+
|
1730 |
+
tr.visible-lg {
|
1731 |
+
display: table-row !important;
|
1732 |
+
}
|
1733 |
+
|
1734 |
+
th.visible-lg,
|
1735 |
+
td.visible-lg {
|
1736 |
+
display: table-cell !important;
|
1737 |
+
}
|
1738 |
+
}
|
1739 |
|
1740 |
@media (min-width: 1200px) {
|
1741 |
+
.visible-lg-block {
|
1742 |
+
display: block !important;
|
1743 |
+
}
|
1744 |
+
}
|
1745 |
|
1746 |
@media (min-width: 1200px) {
|
1747 |
+
.visible-lg-inline {
|
1748 |
+
display: inline !important;
|
1749 |
+
}
|
1750 |
+
}
|
1751 |
|
1752 |
@media (min-width: 1200px) {
|
1753 |
+
.visible-lg-inline-block {
|
1754 |
+
display: inline-block !important;
|
1755 |
+
}
|
1756 |
+
}
|
1757 |
|
1758 |
@media (max-width: 767px) {
|
1759 |
+
.hidden-xs {
|
1760 |
+
display: none !important;
|
1761 |
+
}
|
1762 |
+
}
|
1763 |
|
1764 |
@media (min-width: 768px) and (max-width: 991px) {
|
1765 |
+
.hidden-sm {
|
1766 |
+
display: none !important;
|
1767 |
+
}
|
1768 |
+
}
|
1769 |
|
1770 |
@media (min-width: 992px) and (max-width: 1199px) {
|
1771 |
+
.hidden-md {
|
1772 |
+
display: none !important;
|
1773 |
+
}
|
1774 |
+
}
|
1775 |
|
1776 |
@media (min-width: 1200px) {
|
1777 |
+
.hidden-lg {
|
1778 |
+
display: none !important;
|
1779 |
+
}
|
1780 |
+
}
|
1781 |
|
1782 |
.visible-print {
|
1783 |
+
display: none !important;
|
1784 |
+
}
|
1785 |
|
1786 |
@media print {
|
1787 |
+
.visible-print {
|
1788 |
+
display: block !important;
|
1789 |
+
}
|
1790 |
+
|
1791 |
+
table.visible-print {
|
1792 |
+
display: table !important;
|
1793 |
+
}
|
1794 |
+
|
1795 |
+
tr.visible-print {
|
1796 |
+
display: table-row !important;
|
1797 |
+
}
|
1798 |
+
|
1799 |
+
th.visible-print,
|
1800 |
+
td.visible-print {
|
1801 |
+
display: table-cell !important;
|
1802 |
+
}
|
1803 |
+
}
|
1804 |
|
1805 |
.visible-print-block {
|
1806 |
+
display: none !important;
|
1807 |
+
}
|
1808 |
+
|
1809 |
+
@media print {
|
1810 |
.visible-print-block {
|
1811 |
+
display: block !important;
|
1812 |
+
}
|
1813 |
+
}
|
1814 |
|
1815 |
.visible-print-inline {
|
1816 |
+
display: none !important;
|
1817 |
+
}
|
1818 |
+
|
1819 |
+
@media print {
|
1820 |
.visible-print-inline {
|
1821 |
+
display: inline !important;
|
1822 |
+
}
|
1823 |
+
}
|
1824 |
|
1825 |
.visible-print-inline-block {
|
1826 |
+
display: none !important;
|
1827 |
+
}
|
1828 |
+
|
1829 |
+
@media print {
|
1830 |
.visible-print-inline-block {
|
1831 |
+
display: inline-block !important;
|
1832 |
+
}
|
1833 |
+
}
|
1834 |
|
1835 |
@media print {
|
1836 |
+
.hidden-print {
|
1837 |
+
display: none !important;
|
1838 |
+
}
|
1839 |
+
}
|
assets/css/vendor/bootstrap/bootstrap.css.map
CHANGED
@@ -1 +1,13 @@
|
|
1 |
-
{"version":3,"sources":["bootstrap.css"],"names":[],"mappings":"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","file":"bootstrap.css","sourcesContent":[".embedpress-modal fieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0; }\n\n.embedpress-modal legend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5; }\n\n.embedpress-modal label {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold; }\n\n.embedpress-modal input[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box; }\n\n.embedpress-modal input[type=\"radio\"],\n.embedpress-modal input[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal; }\n\n.embedpress-modal input[type=\"file\"] {\n display: block; }\n\n.embedpress-modal input[type=\"range\"] {\n display: block;\n width: 100%; }\n\n.embedpress-modal select[multiple],\n.embedpress-modal select[size] {\n height: auto; }\n\n.embedpress-modal input[type=\"file\"]:focus,\n.embedpress-modal input[type=\"radio\"]:focus,\n.embedpress-modal input[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px; }\n\n.embedpress-modal output {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857;\n color: #555555; }\n\n.embedpress-modal .form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857;\n color: #555555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; }\n .embedpress-modal .form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); }\n .embedpress-modal .form-control::-moz-placeholder {\n color: #999;\n opacity: 1; }\n .embedpress-modal .form-control:-ms-input-placeholder {\n color: #999; }\n .embedpress-modal .form-control::-webkit-input-placeholder {\n color: #999; }\n .embedpress-modal .form-control::-ms-expand {\n border: 0;\n background-color: transparent; }\n .embedpress-modal .form-control[disabled], .embedpress-modal .form-control[readonly],\n fieldset[disabled] .embedpress-modal .form-control {\n background-color: #eeeeee;\n opacity: 1; }\n .embedpress-modal .form-control[disabled],\n fieldset[disabled] .embedpress-modal .form-control {\n cursor: not-allowed; }\n\n.embedpress-modal textarea.form-control {\n height: auto; }\n\n.embedpress-modal input[type=\"search\"] {\n -webkit-appearance: none; }\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n .embedpress-modal input[type=\"date\"].form-control,\n .embedpress-modal input[type=\"time\"].form-control,\n .embedpress-modal input[type=\"datetime-local\"].form-control,\n .embedpress-modal input[type=\"month\"].form-control {\n line-height: 34px; }\n .embedpress-modal input[type=\"date\"].input-sm, .embedpress-modal .input-group-sm > input[type=\"date\"].form-control, .embedpress-modal .input-group-sm > input[type=\"date\"].input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > input[type=\"date\"].btn,\n .input-group-sm .embedpress-modal input[type=\"date\"],\n .embedpress-modal input[type=\"time\"].input-sm, .embedpress-modal .input-group-sm > input[type=\"time\"].form-control, .embedpress-modal .input-group-sm > input[type=\"time\"].input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > input[type=\"time\"].btn,\n .input-group-sm\n .embedpress-modal input[type=\"time\"],\n .embedpress-modal input[type=\"datetime-local\"].input-sm, .embedpress-modal .input-group-sm > input[type=\"datetime-local\"].form-control, .embedpress-modal .input-group-sm > input[type=\"datetime-local\"].input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > input[type=\"datetime-local\"].btn,\n .input-group-sm\n .embedpress-modal input[type=\"datetime-local\"],\n .embedpress-modal input[type=\"month\"].input-sm, .embedpress-modal .input-group-sm > input[type=\"month\"].form-control, .embedpress-modal .input-group-sm > input[type=\"month\"].input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > input[type=\"month\"].btn,\n .input-group-sm\n .embedpress-modal input[type=\"month\"] {\n line-height: 30px; }\n .embedpress-modal input[type=\"date\"].input-lg, .embedpress-modal .input-group-lg > input[type=\"date\"].form-control, .embedpress-modal .input-group-lg > input[type=\"date\"].input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > input[type=\"date\"].btn,\n .input-group-lg .embedpress-modal input[type=\"date\"],\n .embedpress-modal input[type=\"time\"].input-lg, .embedpress-modal .input-group-lg > input[type=\"time\"].form-control, .embedpress-modal .input-group-lg > input[type=\"time\"].input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > input[type=\"time\"].btn,\n .input-group-lg\n .embedpress-modal input[type=\"time\"],\n .embedpress-modal input[type=\"datetime-local\"].input-lg, .embedpress-modal .input-group-lg > input[type=\"datetime-local\"].form-control, .embedpress-modal .input-group-lg > input[type=\"datetime-local\"].input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > input[type=\"datetime-local\"].btn,\n .input-group-lg\n .embedpress-modal input[type=\"datetime-local\"],\n .embedpress-modal input[type=\"month\"].input-lg, .embedpress-modal .input-group-lg > input[type=\"month\"].form-control, .embedpress-modal .input-group-lg > input[type=\"month\"].input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > input[type=\"month\"].btn,\n .input-group-lg\n .embedpress-modal input[type=\"month\"] {\n line-height: 46px; } }\n\n.embedpress-modal .form-group {\n margin-bottom: 15px; }\n\n.embedpress-modal .radio,\n.embedpress-modal .checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px; }\n .embedpress-modal .radio label,\n .embedpress-modal .checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer; }\n\n.embedpress-modal .radio input[type=\"radio\"],\n.embedpress-modal .radio-inline input[type=\"radio\"],\n.embedpress-modal .checkbox input[type=\"checkbox\"],\n.embedpress-modal .checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9; }\n\n.embedpress-modal .radio + .radio,\n.embedpress-modal .checkbox + .checkbox {\n margin-top: -5px; }\n\n.embedpress-modal .radio-inline,\n.embedpress-modal .checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer; }\n\n.embedpress-modal .radio-inline + .radio-inline,\n.embedpress-modal .checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; }\n\n.embedpress-modal input[type=\"radio\"][disabled], .embedpress-modal input[type=\"radio\"].disabled,\nfieldset[disabled] .embedpress-modal input[type=\"radio\"],\n.embedpress-modal input[type=\"checkbox\"][disabled],\n.embedpress-modal input[type=\"checkbox\"].disabled,\nfieldset[disabled]\n.embedpress-modal input[type=\"checkbox\"] {\n cursor: not-allowed; }\n\n.embedpress-modal .radio-inline.disabled,\nfieldset[disabled] .embedpress-modal .radio-inline,\n.embedpress-modal .checkbox-inline.disabled,\nfieldset[disabled]\n.embedpress-modal .checkbox-inline {\n cursor: not-allowed; }\n\n.embedpress-modal .radio.disabled label,\nfieldset[disabled] .embedpress-modal .radio label,\n.embedpress-modal .checkbox.disabled label,\nfieldset[disabled]\n.embedpress-modal .checkbox label {\n cursor: not-allowed; }\n\n.embedpress-modal .form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px; }\n .embedpress-modal .form-control-static.input-lg, .embedpress-modal .input-group-lg > .form-control-static.form-control, .embedpress-modal .input-group-lg > .form-control-static.input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > .form-control-static.btn, .embedpress-modal .form-control-static.input-sm, .embedpress-modal .input-group-sm > .form-control-static.form-control, .embedpress-modal .input-group-sm > .form-control-static.input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > .form-control-static.btn {\n padding-left: 0;\n padding-right: 0; }\n\n.embedpress-modal .input-sm, .embedpress-modal .input-group-sm > .form-control, .embedpress-modal .input-group-sm > .input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px; }\n\n.embedpress-modal select.input-sm, .embedpress-modal .input-group-sm > select.form-control, .embedpress-modal .input-group-sm > select.input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > select.btn {\n height: 30px;\n line-height: 30px; }\n\n.embedpress-modal textarea.input-sm, .embedpress-modal .input-group-sm > textarea.form-control, .embedpress-modal .input-group-sm > textarea.input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > textarea.btn,\n.embedpress-modal select[multiple].input-sm, .embedpress-modal .input-group-sm > select[multiple].form-control, .embedpress-modal .input-group-sm > select[multiple].input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > select[multiple].btn {\n height: auto; }\n\n.embedpress-modal .form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px; }\n\n.embedpress-modal .form-group-sm select.form-control {\n height: 30px;\n line-height: 30px; }\n\n.embedpress-modal .form-group-sm textarea.form-control,\n.embedpress-modal .form-group-sm select[multiple].form-control {\n height: auto; }\n\n.embedpress-modal .form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5; }\n\n.embedpress-modal .input-lg, .embedpress-modal .input-group-lg > .form-control, .embedpress-modal .input-group-lg > .input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.33333;\n border-radius: 6px; }\n\n.embedpress-modal select.input-lg, .embedpress-modal .input-group-lg > select.form-control, .embedpress-modal .input-group-lg > select.input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > select.btn {\n height: 46px;\n line-height: 46px; }\n\n.embedpress-modal textarea.input-lg, .embedpress-modal .input-group-lg > textarea.form-control, .embedpress-modal .input-group-lg > textarea.input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > textarea.btn,\n.embedpress-modal select[multiple].input-lg, .embedpress-modal .input-group-lg > select[multiple].form-control, .embedpress-modal .input-group-lg > select[multiple].input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > select[multiple].btn {\n height: auto; }\n\n.embedpress-modal .form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.33333;\n border-radius: 6px; }\n\n.embedpress-modal .form-group-lg select.form-control {\n height: 46px;\n line-height: 46px; }\n\n.embedpress-modal .form-group-lg textarea.form-control,\n.embedpress-modal .form-group-lg select[multiple].form-control {\n height: auto; }\n\n.embedpress-modal .form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.33333; }\n\n.embedpress-modal .has-feedback {\n position: relative; }\n .embedpress-modal .has-feedback .form-control {\n padding-right: 42.5px; }\n\n.embedpress-modal .form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none; }\n\n.embedpress-modal .input-lg + .form-control-feedback, .embedpress-modal .input-group-lg > .form-control + .form-control-feedback, .embedpress-modal .input-group-lg > .input-group-addon + .form-control-feedback, .embedpress-modal .input-group-lg > .input-group-btn > .btn + .form-control-feedback,\n.embedpress-modal .input-group-lg + .form-control-feedback,\n.embedpress-modal .form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px; }\n\n.embedpress-modal .input-sm + .form-control-feedback, .embedpress-modal .input-group-sm > .form-control + .form-control-feedback, .embedpress-modal .input-group-sm > .input-group-addon + .form-control-feedback, .embedpress-modal .input-group-sm > .input-group-btn > .btn + .form-control-feedback,\n.embedpress-modal .input-group-sm + .form-control-feedback,\n.embedpress-modal .form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px; }\n\n.embedpress-modal .has-success .help-block,\n.embedpress-modal .has-success .control-label,\n.embedpress-modal .has-success .radio,\n.embedpress-modal .has-success .checkbox,\n.embedpress-modal .has-success .radio-inline,\n.embedpress-modal .has-success .checkbox-inline,\n.embedpress-modal .has-success.radio label,\n.embedpress-modal .has-success.checkbox label,\n.embedpress-modal .has-success.radio-inline label,\n.embedpress-modal .has-success.checkbox-inline label {\n color: #3c763d; }\n\n.embedpress-modal .has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }\n .embedpress-modal .has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; }\n\n.embedpress-modal .has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8; }\n\n.embedpress-modal .has-success .form-control-feedback {\n color: #3c763d; }\n\n.embedpress-modal .has-warning .help-block,\n.embedpress-modal .has-warning .control-label,\n.embedpress-modal .has-warning .radio,\n.embedpress-modal .has-warning .checkbox,\n.embedpress-modal .has-warning .radio-inline,\n.embedpress-modal .has-warning .checkbox-inline,\n.embedpress-modal .has-warning.radio label,\n.embedpress-modal .has-warning.checkbox label,\n.embedpress-modal .has-warning.radio-inline label,\n.embedpress-modal .has-warning.checkbox-inline label {\n color: #8a6d3b; }\n\n.embedpress-modal .has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }\n .embedpress-modal .has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; }\n\n.embedpress-modal .has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3; }\n\n.embedpress-modal .has-warning .form-control-feedback {\n color: #8a6d3b; }\n\n.embedpress-modal .has-error .help-block,\n.embedpress-modal .has-error .control-label,\n.embedpress-modal .has-error .radio,\n.embedpress-modal .has-error .checkbox,\n.embedpress-modal .has-error .radio-inline,\n.embedpress-modal .has-error .checkbox-inline,\n.embedpress-modal .has-error.radio label,\n.embedpress-modal .has-error.checkbox label,\n.embedpress-modal .has-error.radio-inline label,\n.embedpress-modal .has-error.checkbox-inline label {\n color: #a94442; }\n\n.embedpress-modal .has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }\n .embedpress-modal .has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; }\n\n.embedpress-modal .has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede; }\n\n.embedpress-modal .has-error .form-control-feedback {\n color: #a94442; }\n\n.embedpress-modal .has-feedback label ~ .form-control-feedback {\n top: 25px; }\n\n.embedpress-modal .has-feedback label.sr-only ~ .form-control-feedback {\n top: 0; }\n\n.embedpress-modal .help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373; }\n\n@media (min-width: 768px) {\n .embedpress-modal .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle; }\n .embedpress-modal .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle; }\n .embedpress-modal .form-inline .form-control-static {\n display: inline-block; }\n .embedpress-modal .form-inline .input-group {\n display: inline-table;\n vertical-align: middle; }\n .embedpress-modal .form-inline .input-group .input-group-addon,\n .embedpress-modal .form-inline .input-group .input-group-btn,\n .embedpress-modal .form-inline .input-group .form-control {\n width: auto; }\n .embedpress-modal .form-inline .input-group > .form-control {\n width: 100%; }\n .embedpress-modal .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle; }\n .embedpress-modal .form-inline .radio,\n .embedpress-modal .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle; }\n .embedpress-modal .form-inline .radio label,\n .embedpress-modal .form-inline .checkbox label {\n padding-left: 0; }\n .embedpress-modal .form-inline .radio input[type=\"radio\"],\n .embedpress-modal .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0; }\n .embedpress-modal .form-inline .has-feedback .form-control-feedback {\n top: 0; } }\n\n.embedpress-modal .form-horizontal .radio,\n.embedpress-modal .form-horizontal .checkbox,\n.embedpress-modal .form-horizontal .radio-inline,\n.embedpress-modal .form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px; }\n\n.embedpress-modal .form-horizontal .radio,\n.embedpress-modal .form-horizontal .checkbox {\n min-height: 27px; }\n\n.embedpress-modal .form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px; }\n .embedpress-modal .form-horizontal .form-group:before, .embedpress-modal .form-horizontal .form-group:after {\n content: \" \";\n display: table; }\n .embedpress-modal .form-horizontal .form-group:after {\n clear: both; }\n\n@media (min-width: 768px) {\n .embedpress-modal .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px; } }\n\n.embedpress-modal .form-horizontal .has-feedback .form-control-feedback {\n right: 15px; }\n\n@media (min-width: 768px) {\n .embedpress-modal .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px; } }\n\n@media (min-width: 768px) {\n .embedpress-modal .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px; } }\n\n.embedpress-modal .btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n .embedpress-modal .btn:focus, .embedpress-modal .btn.focus, .embedpress-modal .btn:active:focus, .embedpress-modal .btn:active.focus, .embedpress-modal .btn.active:focus, .embedpress-modal .btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px; }\n .embedpress-modal .btn:hover, .embedpress-modal .btn:focus, .embedpress-modal .btn.focus {\n color: #333;\n text-decoration: none; }\n .embedpress-modal .btn:active, .embedpress-modal .btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); }\n .embedpress-modal .btn.disabled, .embedpress-modal .btn[disabled],\n fieldset[disabled] .embedpress-modal .btn {\n cursor: not-allowed;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none; }\n\n.embedpress-modal a.btn.disabled,\nfieldset[disabled] .embedpress-modal a.btn {\n pointer-events: none; }\n\n.embedpress-modal .btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc; }\n .embedpress-modal .btn-default:focus, .embedpress-modal .btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c; }\n .embedpress-modal .btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad; }\n .embedpress-modal .btn-default:active, .embedpress-modal .btn-default.active,\n .open > .embedpress-modal .btn-default.dropdown-toggle {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad; }\n .embedpress-modal .btn-default:active:hover, .embedpress-modal .btn-default:active:focus, .embedpress-modal .btn-default:active.focus, .embedpress-modal .btn-default.active:hover, .embedpress-modal .btn-default.active:focus, .embedpress-modal .btn-default.active.focus,\n .open > .embedpress-modal .btn-default.dropdown-toggle:hover,\n .open > .embedpress-modal .btn-default.dropdown-toggle:focus,\n .open > .embedpress-modal .btn-default.dropdown-toggle.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c; }\n .embedpress-modal .btn-default:active, .embedpress-modal .btn-default.active,\n .open > .embedpress-modal .btn-default.dropdown-toggle {\n background-image: none; }\n .embedpress-modal .btn-default.disabled:hover, .embedpress-modal .btn-default.disabled:focus, .embedpress-modal .btn-default.disabled.focus, .embedpress-modal .btn-default[disabled]:hover, .embedpress-modal .btn-default[disabled]:focus, .embedpress-modal .btn-default[disabled].focus,\n fieldset[disabled] .embedpress-modal .btn-default:hover,\n fieldset[disabled] .embedpress-modal .btn-default:focus,\n fieldset[disabled] .embedpress-modal .btn-default.focus {\n background-color: #fff;\n border-color: #ccc; }\n .embedpress-modal .btn-default .badge {\n color: #fff;\n background-color: #333; }\n\n.embedpress-modal .btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4; }\n .embedpress-modal .btn-primary:focus, .embedpress-modal .btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40; }\n .embedpress-modal .btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74; }\n .embedpress-modal .btn-primary:active, .embedpress-modal .btn-primary.active,\n .open > .embedpress-modal .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #286090;\n border-color: #204d74; }\n .embedpress-modal .btn-primary:active:hover, .embedpress-modal .btn-primary:active:focus, .embedpress-modal .btn-primary:active.focus, .embedpress-modal .btn-primary.active:hover, .embedpress-modal .btn-primary.active:focus, .embedpress-modal .btn-primary.active.focus,\n .open > .embedpress-modal .btn-primary.dropdown-toggle:hover,\n .open > .embedpress-modal .btn-primary.dropdown-toggle:focus,\n .open > .embedpress-modal .btn-primary.dropdown-toggle.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40; }\n .embedpress-modal .btn-primary:active, .embedpress-modal .btn-primary.active,\n .open > .embedpress-modal .btn-primary.dropdown-toggle {\n background-image: none; }\n .embedpress-modal .btn-primary.disabled:hover, .embedpress-modal .btn-primary.disabled:focus, .embedpress-modal .btn-primary.disabled.focus, .embedpress-modal .btn-primary[disabled]:hover, .embedpress-modal .btn-primary[disabled]:focus, .embedpress-modal .btn-primary[disabled].focus,\n fieldset[disabled] .embedpress-modal .btn-primary:hover,\n fieldset[disabled] .embedpress-modal .btn-primary:focus,\n fieldset[disabled] .embedpress-modal .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4; }\n .embedpress-modal .btn-primary .badge {\n color: #337ab7;\n background-color: #fff; }\n\n.embedpress-modal .btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c; }\n .embedpress-modal .btn-success:focus, .embedpress-modal .btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625; }\n .embedpress-modal .btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439; }\n .embedpress-modal .btn-success:active, .embedpress-modal .btn-success.active,\n .open > .embedpress-modal .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #449d44;\n border-color: #398439; }\n .embedpress-modal .btn-success:active:hover, .embedpress-modal .btn-success:active:focus, .embedpress-modal .btn-success:active.focus, .embedpress-modal .btn-success.active:hover, .embedpress-modal .btn-success.active:focus, .embedpress-modal .btn-success.active.focus,\n .open > .embedpress-modal .btn-success.dropdown-toggle:hover,\n .open > .embedpress-modal .btn-success.dropdown-toggle:focus,\n .open > .embedpress-modal .btn-success.dropdown-toggle.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625; }\n .embedpress-modal .btn-success:active, .embedpress-modal .btn-success.active,\n .open > .embedpress-modal .btn-success.dropdown-toggle {\n background-image: none; }\n .embedpress-modal .btn-success.disabled:hover, .embedpress-modal .btn-success.disabled:focus, .embedpress-modal .btn-success.disabled.focus, .embedpress-modal .btn-success[disabled]:hover, .embedpress-modal .btn-success[disabled]:focus, .embedpress-modal .btn-success[disabled].focus,\n fieldset[disabled] .embedpress-modal .btn-success:hover,\n fieldset[disabled] .embedpress-modal .btn-success:focus,\n fieldset[disabled] .embedpress-modal .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c; }\n .embedpress-modal .btn-success .badge {\n color: #5cb85c;\n background-color: #fff; }\n\n.embedpress-modal .btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da; }\n .embedpress-modal .btn-info:focus, .embedpress-modal .btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85; }\n .embedpress-modal .btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc; }\n .embedpress-modal .btn-info:active, .embedpress-modal .btn-info.active,\n .open > .embedpress-modal .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc; }\n .embedpress-modal .btn-info:active:hover, .embedpress-modal .btn-info:active:focus, .embedpress-modal .btn-info:active.focus, .embedpress-modal .btn-info.active:hover, .embedpress-modal .btn-info.active:focus, .embedpress-modal .btn-info.active.focus,\n .open > .embedpress-modal .btn-info.dropdown-toggle:hover,\n .open > .embedpress-modal .btn-info.dropdown-toggle:focus,\n .open > .embedpress-modal .btn-info.dropdown-toggle.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85; }\n .embedpress-modal .btn-info:active, .embedpress-modal .btn-info.active,\n .open > .embedpress-modal .btn-info.dropdown-toggle {\n background-image: none; }\n .embedpress-modal .btn-info.disabled:hover, .embedpress-modal .btn-info.disabled:focus, .embedpress-modal .btn-info.disabled.focus, .embedpress-modal .btn-info[disabled]:hover, .embedpress-modal .btn-info[disabled]:focus, .embedpress-modal .btn-info[disabled].focus,\n fieldset[disabled] .embedpress-modal .btn-info:hover,\n fieldset[disabled] .embedpress-modal .btn-info:focus,\n fieldset[disabled] .embedpress-modal .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da; }\n .embedpress-modal .btn-info .badge {\n color: #5bc0de;\n background-color: #fff; }\n\n.embedpress-modal .btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236; }\n .embedpress-modal .btn-warning:focus, .embedpress-modal .btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d; }\n .embedpress-modal .btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512; }\n .embedpress-modal .btn-warning:active, .embedpress-modal .btn-warning.active,\n .open > .embedpress-modal .btn-warning.dropdown-toggle {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512; }\n .embedpress-modal .btn-warning:active:hover, .embedpress-modal .btn-warning:active:focus, .embedpress-modal .btn-warning:active.focus, .embedpress-modal .btn-warning.active:hover, .embedpress-modal .btn-warning.active:focus, .embedpress-modal .btn-warning.active.focus,\n .open > .embedpress-modal .btn-warning.dropdown-toggle:hover,\n .open > .embedpress-modal .btn-warning.dropdown-toggle:focus,\n .open > .embedpress-modal .btn-warning.dropdown-toggle.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d; }\n .embedpress-modal .btn-warning:active, .embedpress-modal .btn-warning.active,\n .open > .embedpress-modal .btn-warning.dropdown-toggle {\n background-image: none; }\n .embedpress-modal .btn-warning.disabled:hover, .embedpress-modal .btn-warning.disabled:focus, .embedpress-modal .btn-warning.disabled.focus, .embedpress-modal .btn-warning[disabled]:hover, .embedpress-modal .btn-warning[disabled]:focus, .embedpress-modal .btn-warning[disabled].focus,\n fieldset[disabled] .embedpress-modal .btn-warning:hover,\n fieldset[disabled] .embedpress-modal .btn-warning:focus,\n fieldset[disabled] .embedpress-modal .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236; }\n .embedpress-modal .btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff; }\n\n.embedpress-modal .btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a; }\n .embedpress-modal .btn-danger:focus, .embedpress-modal .btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19; }\n .embedpress-modal .btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925; }\n .embedpress-modal .btn-danger:active, .embedpress-modal .btn-danger.active,\n .open > .embedpress-modal .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925; }\n .embedpress-modal .btn-danger:active:hover, .embedpress-modal .btn-danger:active:focus, .embedpress-modal .btn-danger:active.focus, .embedpress-modal .btn-danger.active:hover, .embedpress-modal .btn-danger.active:focus, .embedpress-modal .btn-danger.active.focus,\n .open > .embedpress-modal .btn-danger.dropdown-toggle:hover,\n .open > .embedpress-modal .btn-danger.dropdown-toggle:focus,\n .open > .embedpress-modal .btn-danger.dropdown-toggle.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19; }\n .embedpress-modal .btn-danger:active, .embedpress-modal .btn-danger.active,\n .open > .embedpress-modal .btn-danger.dropdown-toggle {\n background-image: none; }\n .embedpress-modal .btn-danger.disabled:hover, .embedpress-modal .btn-danger.disabled:focus, .embedpress-modal .btn-danger.disabled.focus, .embedpress-modal .btn-danger[disabled]:hover, .embedpress-modal .btn-danger[disabled]:focus, .embedpress-modal .btn-danger[disabled].focus,\n fieldset[disabled] .embedpress-modal .btn-danger:hover,\n fieldset[disabled] .embedpress-modal .btn-danger:focus,\n fieldset[disabled] .embedpress-modal .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a; }\n .embedpress-modal .btn-danger .badge {\n color: #d9534f;\n background-color: #fff; }\n\n.embedpress-modal .btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0; }\n .embedpress-modal .btn-link, .embedpress-modal .btn-link:active, .embedpress-modal .btn-link.active, .embedpress-modal .btn-link[disabled],\n fieldset[disabled] .embedpress-modal .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none; }\n .embedpress-modal .btn-link, .embedpress-modal .btn-link:hover, .embedpress-modal .btn-link:focus, .embedpress-modal .btn-link:active {\n border-color: transparent; }\n .embedpress-modal .btn-link:hover, .embedpress-modal .btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent; }\n .embedpress-modal .btn-link[disabled]:hover, .embedpress-modal .btn-link[disabled]:focus,\n fieldset[disabled] .embedpress-modal .btn-link:hover,\n fieldset[disabled] .embedpress-modal .btn-link:focus {\n color: #777777;\n text-decoration: none; }\n\n.embedpress-modal .btn-lg, .embedpress-modal .btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.33333;\n border-radius: 6px; }\n\n.embedpress-modal .btn-sm, .embedpress-modal .btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px; }\n\n.embedpress-modal .btn-xs, .embedpress-modal .btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px; }\n\n.embedpress-modal .btn-block {\n display: block;\n width: 100%; }\n\n.embedpress-modal .btn-block + .btn-block {\n margin-top: 5px; }\n\n.embedpress-modal input[type=\"submit\"].btn-block,\n.embedpress-modal input[type=\"reset\"].btn-block,\n.embedpress-modal input[type=\"button\"].btn-block {\n width: 100%; }\n\n.embedpress-modal .btn-group,\n.embedpress-modal .btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; }\n .embedpress-modal .btn-group > .btn,\n .embedpress-modal .btn-group-vertical > .btn {\n position: relative;\n float: left; }\n .embedpress-modal .btn-group > .btn:hover, .embedpress-modal .btn-group > .btn:focus, .embedpress-modal .btn-group > .btn:active, .embedpress-modal .btn-group > .btn.active,\n .embedpress-modal .btn-group-vertical > .btn:hover,\n .embedpress-modal .btn-group-vertical > .btn:focus,\n .embedpress-modal .btn-group-vertical > .btn:active,\n .embedpress-modal .btn-group-vertical > .btn.active {\n z-index: 2; }\n\n.embedpress-modal .btn-group .btn + .btn,\n.embedpress-modal .btn-group .btn + .btn-group,\n.embedpress-modal .btn-group .btn-group + .btn,\n.embedpress-modal .btn-group .btn-group + .btn-group {\n margin-left: -1px; }\n\n.embedpress-modal .btn-toolbar {\n margin-left: -5px; }\n .embedpress-modal .btn-toolbar:before, .embedpress-modal .btn-toolbar:after {\n content: \" \";\n display: table; }\n .embedpress-modal .btn-toolbar:after {\n clear: both; }\n .embedpress-modal .btn-toolbar .btn,\n .embedpress-modal .btn-toolbar .btn-group,\n .embedpress-modal .btn-toolbar .input-group {\n float: left; }\n .embedpress-modal .btn-toolbar > .btn,\n .embedpress-modal .btn-toolbar > .btn-group,\n .embedpress-modal .btn-toolbar > .input-group {\n margin-left: 5px; }\n\n.embedpress-modal .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0; }\n\n.embedpress-modal .btn-group > .btn:first-child {\n margin-left: 0; }\n .embedpress-modal .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0; }\n\n.embedpress-modal .btn-group > .btn:last-child:not(:first-child),\n.embedpress-modal .btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0; }\n\n.embedpress-modal .btn-group > .btn-group {\n float: left; }\n\n.embedpress-modal .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0; }\n\n.embedpress-modal .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.embedpress-modal .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0; }\n\n.embedpress-modal .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0; }\n\n.embedpress-modal .btn-group .dropdown-toggle:active,\n.embedpress-modal .btn-group.open .dropdown-toggle {\n outline: 0; }\n\n.embedpress-modal .btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px; }\n\n.embedpress-modal .btn-group > .btn-lg + .dropdown-toggle, .embedpress-modal .btn-group-lg.btn-group > .btn + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px; }\n\n.embedpress-modal .btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); }\n .embedpress-modal .btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none; }\n\n.embedpress-modal .btn .caret {\n margin-left: 0; }\n\n.embedpress-modal .btn-lg .caret, .embedpress-modal .btn-group-lg > .btn .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0; }\n\n.embedpress-modal .dropup .btn-lg .caret, .embedpress-modal .dropup .btn-group-lg > .btn .caret {\n border-width: 0 5px 5px; }\n\n.embedpress-modal .btn-group-vertical > .btn,\n.embedpress-modal .btn-group-vertical > .btn-group,\n.embedpress-modal .btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%; }\n\n.embedpress-modal .btn-group-vertical > .btn-group:before, .embedpress-modal .btn-group-vertical > .btn-group:after {\n content: \" \";\n display: table; }\n\n.embedpress-modal .btn-group-vertical > .btn-group:after {\n clear: both; }\n\n.embedpress-modal .btn-group-vertical > .btn-group > .btn {\n float: none; }\n\n.embedpress-modal .btn-group-vertical > .btn + .btn,\n.embedpress-modal .btn-group-vertical > .btn + .btn-group,\n.embedpress-modal .btn-group-vertical > .btn-group + .btn,\n.embedpress-modal .btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0; }\n\n.embedpress-modal .btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0; }\n\n.embedpress-modal .btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0; }\n\n.embedpress-modal .btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px; }\n\n.embedpress-modal .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0; }\n\n.embedpress-modal .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.embedpress-modal .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0; }\n\n.embedpress-modal .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0; }\n\n.embedpress-modal .btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate; }\n .embedpress-modal .btn-group-justified > .btn,\n .embedpress-modal .btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%; }\n .embedpress-modal .btn-group-justified > .btn-group .btn {\n width: 100%; }\n .embedpress-modal .btn-group-justified > .btn-group .dropdown-menu {\n left: auto; }\n\n.embedpress-modal [data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n.embedpress-modal [data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n.embedpress-modal [data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n.embedpress-modal [data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none; }\n\n.embedpress-modal .input-group {\n position: relative;\n display: table;\n border-collapse: separate; }\n .embedpress-modal .input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0; }\n .embedpress-modal .input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0; }\n .embedpress-modal .input-group .form-control:focus {\n z-index: 3; }\n\n.embedpress-modal .input-group-addon,\n.embedpress-modal .input-group-btn,\n.embedpress-modal .input-group .form-control {\n display: table-cell; }\n .embedpress-modal .input-group-addon:not(:first-child):not(:last-child),\n .embedpress-modal .input-group-btn:not(:first-child):not(:last-child),\n .embedpress-modal .input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0; }\n\n.embedpress-modal .input-group-addon,\n.embedpress-modal .input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; }\n\n.embedpress-modal .input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #ccc;\n border-radius: 4px; }\n .embedpress-modal .input-group-addon.input-sm, .embedpress-modal .input-group-sm > .input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > .input-group-addon.btn {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px; }\n .embedpress-modal .input-group-addon.input-lg, .embedpress-modal .input-group-lg > .input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > .input-group-addon.btn {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px; }\n .embedpress-modal .input-group-addon input[type=\"radio\"],\n .embedpress-modal .input-group-addon input[type=\"checkbox\"] {\n margin-top: 0; }\n\n.embedpress-modal .input-group .form-control:first-child,\n.embedpress-modal .input-group-addon:first-child,\n.embedpress-modal .input-group-btn:first-child > .btn,\n.embedpress-modal .input-group-btn:first-child > .btn-group > .btn,\n.embedpress-modal .input-group-btn:first-child > .dropdown-toggle,\n.embedpress-modal .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.embedpress-modal .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0; }\n\n.embedpress-modal .input-group-addon:first-child {\n border-right: 0; }\n\n.embedpress-modal .input-group .form-control:last-child,\n.embedpress-modal .input-group-addon:last-child,\n.embedpress-modal .input-group-btn:last-child > .btn,\n.embedpress-modal .input-group-btn:last-child > .btn-group > .btn,\n.embedpress-modal .input-group-btn:last-child > .dropdown-toggle,\n.embedpress-modal .input-group-btn:first-child > .btn:not(:first-child),\n.embedpress-modal .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0; }\n\n.embedpress-modal .input-group-addon:last-child {\n border-left: 0; }\n\n.embedpress-modal .input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap; }\n .embedpress-modal .input-group-btn > .btn {\n position: relative; }\n .embedpress-modal .input-group-btn > .btn + .btn {\n margin-left: -1px; }\n .embedpress-modal .input-group-btn > .btn:hover, .embedpress-modal .input-group-btn > .btn:focus, .embedpress-modal .input-group-btn > .btn:active {\n z-index: 2; }\n .embedpress-modal .input-group-btn:first-child > .btn,\n .embedpress-modal .input-group-btn:first-child > .btn-group {\n margin-right: -1px; }\n .embedpress-modal .input-group-btn:last-child > .btn,\n .embedpress-modal .input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px; }\n\n.embedpress-modal .close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: 0.2;\n filter: alpha(opacity=20); }\n .embedpress-modal .close:hover, .embedpress-modal .close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50); }\n\n.embedpress-modal button.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none; }\n\n.modal-open {\n overflow: hidden; }\n\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0; }\n .modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out; }\n .modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0); }\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto; }\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px; }\n\n.modal-content {\n position: relative;\n background-color: #fff;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0; }\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000; }\n .modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0); }\n .modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50); }\n\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5; }\n .modal-header:before, .modal-header:after {\n content: \" \";\n display: table; }\n .modal-header:after {\n clear: both; }\n\n.modal-header .close {\n margin-top: -2px; }\n\n.modal-title {\n margin: 0;\n line-height: 1.42857; }\n\n.modal-body {\n position: relative;\n padding: 15px; }\n\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5; }\n .modal-footer:before, .modal-footer:after {\n content: \" \";\n display: table; }\n .modal-footer:after {\n clear: both; }\n .modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0; }\n .modal-footer .btn-group .btn + .btn {\n margin-left: -1px; }\n .modal-footer .btn-block + .btn-block {\n margin-left: 0; }\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll; }\n\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto; }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); }\n .modal-sm {\n width: 300px; } }\n\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px; } }\n\n@-ms-viewport {\n width: device-width; }\n\n.visible-xs {\n display: none !important; }\n\n.visible-sm {\n display: none !important; }\n\n.visible-md {\n display: none !important; }\n\n.visible-lg {\n display: none !important; }\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important; }\n\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important; }\n table.visible-xs {\n display: table !important; }\n tr.visible-xs {\n display: table-row !important; }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important; } }\n\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important; } }\n\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important; } }\n\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important; } }\n\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important; }\n table.visible-sm {\n display: table !important; }\n tr.visible-sm {\n display: table-row !important; }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important; } }\n\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important; } }\n\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important; } }\n\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important; } }\n\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important; }\n table.visible-md {\n display: table !important; }\n tr.visible-md {\n display: table-row !important; }\n th.visible-md,\n td.visible-md {\n display: table-cell !important; } }\n\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important; } }\n\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important; } }\n\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important; } }\n\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important; }\n table.visible-lg {\n display: table !important; }\n tr.visible-lg {\n display: table-row !important; }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important; } }\n\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important; } }\n\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important; } }\n\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important; } }\n\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important; } }\n\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important; } }\n\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important; } }\n\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important; } }\n\n.visible-print {\n display: none !important; }\n\n@media print {\n .visible-print {\n display: block !important; }\n table.visible-print {\n display: table !important; }\n tr.visible-print {\n display: table-row !important; }\n th.visible-print,\n td.visible-print {\n display: table-cell !important; } }\n\n.visible-print-block {\n display: none !important; }\n @media print {\n .visible-print-block {\n display: block !important; } }\n\n.visible-print-inline {\n display: none !important; }\n @media print {\n .visible-print-inline {\n display: inline !important; } }\n\n.visible-print-inline-block {\n display: none !important; }\n @media print {\n .visible-print-inline-block {\n display: inline-block !important; } }\n\n@media print {\n .hidden-print {\n display: none !important; } }\n"],"sourceRoot":"/source/"}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"version": 3,
|
3 |
+
"sources": [
|
4 |
+
"bootstrap.css"
|
5 |
+
],
|
6 |
+
"names": [],
|
7 |
+
"mappings": "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",
|
8 |
+
"file": "bootstrap.css",
|
9 |
+
"sourcesContent": [
|
10 |
+
".embedpress-modal fieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0; }\n\n.embedpress-modal legend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5; }\n\n.embedpress-modal label {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold; }\n\n.embedpress-modal input[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box; }\n\n.embedpress-modal input[type=\"radio\"],\n.embedpress-modal input[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal; }\n\n.embedpress-modal input[type=\"file\"] {\n display: block; }\n\n.embedpress-modal input[type=\"range\"] {\n display: block;\n width: 100%; }\n\n.embedpress-modal select[multiple],\n.embedpress-modal select[size] {\n height: auto; }\n\n.embedpress-modal input[type=\"file\"]:focus,\n.embedpress-modal input[type=\"radio\"]:focus,\n.embedpress-modal input[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px; }\n\n.embedpress-modal output {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857;\n color: #555555; }\n\n.embedpress-modal .form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857;\n color: #555555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; }\n .embedpress-modal .form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); }\n .embedpress-modal .form-control::-moz-placeholder {\n color: #999;\n opacity: 1; }\n .embedpress-modal .form-control:-ms-input-placeholder {\n color: #999; }\n .embedpress-modal .form-control::-webkit-input-placeholder {\n color: #999; }\n .embedpress-modal .form-control::-ms-expand {\n border: 0;\n background-color: transparent; }\n .embedpress-modal .form-control[disabled], .embedpress-modal .form-control[readonly],\n fieldset[disabled] .embedpress-modal .form-control {\n background-color: #eeeeee;\n opacity: 1; }\n .embedpress-modal .form-control[disabled],\n fieldset[disabled] .embedpress-modal .form-control {\n cursor: not-allowed; }\n\n.embedpress-modal textarea.form-control {\n height: auto; }\n\n.embedpress-modal input[type=\"search\"] {\n -webkit-appearance: none; }\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n .embedpress-modal input[type=\"date\"].form-control,\n .embedpress-modal input[type=\"time\"].form-control,\n .embedpress-modal input[type=\"datetime-local\"].form-control,\n .embedpress-modal input[type=\"month\"].form-control {\n line-height: 34px; }\n .embedpress-modal input[type=\"date\"].input-sm, .embedpress-modal .input-group-sm > input[type=\"date\"].form-control, .embedpress-modal .input-group-sm > input[type=\"date\"].input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > input[type=\"date\"].btn,\n .input-group-sm .embedpress-modal input[type=\"date\"],\n .embedpress-modal input[type=\"time\"].input-sm, .embedpress-modal .input-group-sm > input[type=\"time\"].form-control, .embedpress-modal .input-group-sm > input[type=\"time\"].input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > input[type=\"time\"].btn,\n .input-group-sm\n .embedpress-modal input[type=\"time\"],\n .embedpress-modal input[type=\"datetime-local\"].input-sm, .embedpress-modal .input-group-sm > input[type=\"datetime-local\"].form-control, .embedpress-modal .input-group-sm > input[type=\"datetime-local\"].input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > input[type=\"datetime-local\"].btn,\n .input-group-sm\n .embedpress-modal input[type=\"datetime-local\"],\n .embedpress-modal input[type=\"month\"].input-sm, .embedpress-modal .input-group-sm > input[type=\"month\"].form-control, .embedpress-modal .input-group-sm > input[type=\"month\"].input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > input[type=\"month\"].btn,\n .input-group-sm\n .embedpress-modal input[type=\"month\"] {\n line-height: 30px; }\n .embedpress-modal input[type=\"date\"].input-lg, .embedpress-modal .input-group-lg > input[type=\"date\"].form-control, .embedpress-modal .input-group-lg > input[type=\"date\"].input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > input[type=\"date\"].btn,\n .input-group-lg .embedpress-modal input[type=\"date\"],\n .embedpress-modal input[type=\"time\"].input-lg, .embedpress-modal .input-group-lg > input[type=\"time\"].form-control, .embedpress-modal .input-group-lg > input[type=\"time\"].input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > input[type=\"time\"].btn,\n .input-group-lg\n .embedpress-modal input[type=\"time\"],\n .embedpress-modal input[type=\"datetime-local\"].input-lg, .embedpress-modal .input-group-lg > input[type=\"datetime-local\"].form-control, .embedpress-modal .input-group-lg > input[type=\"datetime-local\"].input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > input[type=\"datetime-local\"].btn,\n .input-group-lg\n .embedpress-modal input[type=\"datetime-local\"],\n .embedpress-modal input[type=\"month\"].input-lg, .embedpress-modal .input-group-lg > input[type=\"month\"].form-control, .embedpress-modal .input-group-lg > input[type=\"month\"].input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > input[type=\"month\"].btn,\n .input-group-lg\n .embedpress-modal input[type=\"month\"] {\n line-height: 46px; } }\n\n.embedpress-modal .form-group {\n margin-bottom: 15px; }\n\n.embedpress-modal .radio,\n.embedpress-modal .checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px; }\n .embedpress-modal .radio label,\n .embedpress-modal .checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer; }\n\n.embedpress-modal .radio input[type=\"radio\"],\n.embedpress-modal .radio-inline input[type=\"radio\"],\n.embedpress-modal .checkbox input[type=\"checkbox\"],\n.embedpress-modal .checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9; }\n\n.embedpress-modal .radio + .radio,\n.embedpress-modal .checkbox + .checkbox {\n margin-top: -5px; }\n\n.embedpress-modal .radio-inline,\n.embedpress-modal .checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer; }\n\n.embedpress-modal .radio-inline + .radio-inline,\n.embedpress-modal .checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; }\n\n.embedpress-modal input[type=\"radio\"][disabled], .embedpress-modal input[type=\"radio\"].disabled,\nfieldset[disabled] .embedpress-modal input[type=\"radio\"],\n.embedpress-modal input[type=\"checkbox\"][disabled],\n.embedpress-modal input[type=\"checkbox\"].disabled,\nfieldset[disabled]\n.embedpress-modal input[type=\"checkbox\"] {\n cursor: not-allowed; }\n\n.embedpress-modal .radio-inline.disabled,\nfieldset[disabled] .embedpress-modal .radio-inline,\n.embedpress-modal .checkbox-inline.disabled,\nfieldset[disabled]\n.embedpress-modal .checkbox-inline {\n cursor: not-allowed; }\n\n.embedpress-modal .radio.disabled label,\nfieldset[disabled] .embedpress-modal .radio label,\n.embedpress-modal .checkbox.disabled label,\nfieldset[disabled]\n.embedpress-modal .checkbox label {\n cursor: not-allowed; }\n\n.embedpress-modal .form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px; }\n .embedpress-modal .form-control-static.input-lg, .embedpress-modal .input-group-lg > .form-control-static.form-control, .embedpress-modal .input-group-lg > .form-control-static.input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > .form-control-static.btn, .embedpress-modal .form-control-static.input-sm, .embedpress-modal .input-group-sm > .form-control-static.form-control, .embedpress-modal .input-group-sm > .form-control-static.input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > .form-control-static.btn {\n padding-left: 0;\n padding-right: 0; }\n\n.embedpress-modal .input-sm, .embedpress-modal .input-group-sm > .form-control, .embedpress-modal .input-group-sm > .input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px; }\n\n.embedpress-modal select.input-sm, .embedpress-modal .input-group-sm > select.form-control, .embedpress-modal .input-group-sm > select.input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > select.btn {\n height: 30px;\n line-height: 30px; }\n\n.embedpress-modal textarea.input-sm, .embedpress-modal .input-group-sm > textarea.form-control, .embedpress-modal .input-group-sm > textarea.input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > textarea.btn,\n.embedpress-modal select[multiple].input-sm, .embedpress-modal .input-group-sm > select[multiple].form-control, .embedpress-modal .input-group-sm > select[multiple].input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > select[multiple].btn {\n height: auto; }\n\n.embedpress-modal .form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px; }\n\n.embedpress-modal .form-group-sm select.form-control {\n height: 30px;\n line-height: 30px; }\n\n.embedpress-modal .form-group-sm textarea.form-control,\n.embedpress-modal .form-group-sm select[multiple].form-control {\n height: auto; }\n\n.embedpress-modal .form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5; }\n\n.embedpress-modal .input-lg, .embedpress-modal .input-group-lg > .form-control, .embedpress-modal .input-group-lg > .input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.33333;\n border-radius: 6px; }\n\n.embedpress-modal select.input-lg, .embedpress-modal .input-group-lg > select.form-control, .embedpress-modal .input-group-lg > select.input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > select.btn {\n height: 46px;\n line-height: 46px; }\n\n.embedpress-modal textarea.input-lg, .embedpress-modal .input-group-lg > textarea.form-control, .embedpress-modal .input-group-lg > textarea.input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > textarea.btn,\n.embedpress-modal select[multiple].input-lg, .embedpress-modal .input-group-lg > select[multiple].form-control, .embedpress-modal .input-group-lg > select[multiple].input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > select[multiple].btn {\n height: auto; }\n\n.embedpress-modal .form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.33333;\n border-radius: 6px; }\n\n.embedpress-modal .form-group-lg select.form-control {\n height: 46px;\n line-height: 46px; }\n\n.embedpress-modal .form-group-lg textarea.form-control,\n.embedpress-modal .form-group-lg select[multiple].form-control {\n height: auto; }\n\n.embedpress-modal .form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.33333; }\n\n.embedpress-modal .has-feedback {\n position: relative; }\n .embedpress-modal .has-feedback .form-control {\n padding-right: 42.5px; }\n\n.embedpress-modal .form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none; }\n\n.embedpress-modal .input-lg + .form-control-feedback, .embedpress-modal .input-group-lg > .form-control + .form-control-feedback, .embedpress-modal .input-group-lg > .input-group-addon + .form-control-feedback, .embedpress-modal .input-group-lg > .input-group-btn > .btn + .form-control-feedback,\n.embedpress-modal .input-group-lg + .form-control-feedback,\n.embedpress-modal .form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px; }\n\n.embedpress-modal .input-sm + .form-control-feedback, .embedpress-modal .input-group-sm > .form-control + .form-control-feedback, .embedpress-modal .input-group-sm > .input-group-addon + .form-control-feedback, .embedpress-modal .input-group-sm > .input-group-btn > .btn + .form-control-feedback,\n.embedpress-modal .input-group-sm + .form-control-feedback,\n.embedpress-modal .form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px; }\n\n.embedpress-modal .has-success .help-block,\n.embedpress-modal .has-success .control-label,\n.embedpress-modal .has-success .radio,\n.embedpress-modal .has-success .checkbox,\n.embedpress-modal .has-success .radio-inline,\n.embedpress-modal .has-success .checkbox-inline,\n.embedpress-modal .has-success.radio label,\n.embedpress-modal .has-success.checkbox label,\n.embedpress-modal .has-success.radio-inline label,\n.embedpress-modal .has-success.checkbox-inline label {\n color: #3c763d; }\n\n.embedpress-modal .has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }\n .embedpress-modal .has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; }\n\n.embedpress-modal .has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8; }\n\n.embedpress-modal .has-success .form-control-feedback {\n color: #3c763d; }\n\n.embedpress-modal .has-warning .help-block,\n.embedpress-modal .has-warning .control-label,\n.embedpress-modal .has-warning .radio,\n.embedpress-modal .has-warning .checkbox,\n.embedpress-modal .has-warning .radio-inline,\n.embedpress-modal .has-warning .checkbox-inline,\n.embedpress-modal .has-warning.radio label,\n.embedpress-modal .has-warning.checkbox label,\n.embedpress-modal .has-warning.radio-inline label,\n.embedpress-modal .has-warning.checkbox-inline label {\n color: #8a6d3b; }\n\n.embedpress-modal .has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }\n .embedpress-modal .has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; }\n\n.embedpress-modal .has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3; }\n\n.embedpress-modal .has-warning .form-control-feedback {\n color: #8a6d3b; }\n\n.embedpress-modal .has-error .help-block,\n.embedpress-modal .has-error .control-label,\n.embedpress-modal .has-error .radio,\n.embedpress-modal .has-error .checkbox,\n.embedpress-modal .has-error .radio-inline,\n.embedpress-modal .has-error .checkbox-inline,\n.embedpress-modal .has-error.radio label,\n.embedpress-modal .has-error.checkbox label,\n.embedpress-modal .has-error.radio-inline label,\n.embedpress-modal .has-error.checkbox-inline label {\n color: #a94442; }\n\n.embedpress-modal .has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }\n .embedpress-modal .has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; }\n\n.embedpress-modal .has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede; }\n\n.embedpress-modal .has-error .form-control-feedback {\n color: #a94442; }\n\n.embedpress-modal .has-feedback label ~ .form-control-feedback {\n top: 25px; }\n\n.embedpress-modal .has-feedback label.sr-only ~ .form-control-feedback {\n top: 0; }\n\n.embedpress-modal .help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373; }\n\n@media (min-width: 768px) {\n .embedpress-modal .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle; }\n .embedpress-modal .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle; }\n .embedpress-modal .form-inline .form-control-static {\n display: inline-block; }\n .embedpress-modal .form-inline .input-group {\n display: inline-table;\n vertical-align: middle; }\n .embedpress-modal .form-inline .input-group .input-group-addon,\n .embedpress-modal .form-inline .input-group .input-group-btn,\n .embedpress-modal .form-inline .input-group .form-control {\n width: auto; }\n .embedpress-modal .form-inline .input-group > .form-control {\n width: 100%; }\n .embedpress-modal .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle; }\n .embedpress-modal .form-inline .radio,\n .embedpress-modal .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle; }\n .embedpress-modal .form-inline .radio label,\n .embedpress-modal .form-inline .checkbox label {\n padding-left: 0; }\n .embedpress-modal .form-inline .radio input[type=\"radio\"],\n .embedpress-modal .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0; }\n .embedpress-modal .form-inline .has-feedback .form-control-feedback {\n top: 0; } }\n\n.embedpress-modal .form-horizontal .radio,\n.embedpress-modal .form-horizontal .checkbox,\n.embedpress-modal .form-horizontal .radio-inline,\n.embedpress-modal .form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px; }\n\n.embedpress-modal .form-horizontal .radio,\n.embedpress-modal .form-horizontal .checkbox {\n min-height: 27px; }\n\n.embedpress-modal .form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px; }\n .embedpress-modal .form-horizontal .form-group:before, .embedpress-modal .form-horizontal .form-group:after {\n content: \" \";\n display: table; }\n .embedpress-modal .form-horizontal .form-group:after {\n clear: both; }\n\n@media (min-width: 768px) {\n .embedpress-modal .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px; } }\n\n.embedpress-modal .form-horizontal .has-feedback .form-control-feedback {\n right: 15px; }\n\n@media (min-width: 768px) {\n .embedpress-modal .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px; } }\n\n@media (min-width: 768px) {\n .embedpress-modal .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px; } }\n\n.embedpress-modal .btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n .embedpress-modal .btn:focus, .embedpress-modal .btn.focus, .embedpress-modal .btn:active:focus, .embedpress-modal .btn:active.focus, .embedpress-modal .btn.active:focus, .embedpress-modal .btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px; }\n .embedpress-modal .btn:hover, .embedpress-modal .btn:focus, .embedpress-modal .btn.focus {\n color: #333;\n text-decoration: none; }\n .embedpress-modal .btn:active, .embedpress-modal .btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); }\n .embedpress-modal .btn.disabled, .embedpress-modal .btn[disabled],\n fieldset[disabled] .embedpress-modal .btn {\n cursor: not-allowed;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none; }\n\n.embedpress-modal a.btn.disabled,\nfieldset[disabled] .embedpress-modal a.btn {\n pointer-events: none; }\n\n.embedpress-modal .btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc; }\n .embedpress-modal .btn-default:focus, .embedpress-modal .btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c; }\n .embedpress-modal .btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad; }\n .embedpress-modal .btn-default:active, .embedpress-modal .btn-default.active,\n .open > .embedpress-modal .btn-default.dropdown-toggle {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad; }\n .embedpress-modal .btn-default:active:hover, .embedpress-modal .btn-default:active:focus, .embedpress-modal .btn-default:active.focus, .embedpress-modal .btn-default.active:hover, .embedpress-modal .btn-default.active:focus, .embedpress-modal .btn-default.active.focus,\n .open > .embedpress-modal .btn-default.dropdown-toggle:hover,\n .open > .embedpress-modal .btn-default.dropdown-toggle:focus,\n .open > .embedpress-modal .btn-default.dropdown-toggle.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c; }\n .embedpress-modal .btn-default:active, .embedpress-modal .btn-default.active,\n .open > .embedpress-modal .btn-default.dropdown-toggle {\n background-image: none; }\n .embedpress-modal .btn-default.disabled:hover, .embedpress-modal .btn-default.disabled:focus, .embedpress-modal .btn-default.disabled.focus, .embedpress-modal .btn-default[disabled]:hover, .embedpress-modal .btn-default[disabled]:focus, .embedpress-modal .btn-default[disabled].focus,\n fieldset[disabled] .embedpress-modal .btn-default:hover,\n fieldset[disabled] .embedpress-modal .btn-default:focus,\n fieldset[disabled] .embedpress-modal .btn-default.focus {\n background-color: #fff;\n border-color: #ccc; }\n .embedpress-modal .btn-default .badge {\n color: #fff;\n background-color: #333; }\n\n.embedpress-modal .btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4; }\n .embedpress-modal .btn-primary:focus, .embedpress-modal .btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40; }\n .embedpress-modal .btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74; }\n .embedpress-modal .btn-primary:active, .embedpress-modal .btn-primary.active,\n .open > .embedpress-modal .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #286090;\n border-color: #204d74; }\n .embedpress-modal .btn-primary:active:hover, .embedpress-modal .btn-primary:active:focus, .embedpress-modal .btn-primary:active.focus, .embedpress-modal .btn-primary.active:hover, .embedpress-modal .btn-primary.active:focus, .embedpress-modal .btn-primary.active.focus,\n .open > .embedpress-modal .btn-primary.dropdown-toggle:hover,\n .open > .embedpress-modal .btn-primary.dropdown-toggle:focus,\n .open > .embedpress-modal .btn-primary.dropdown-toggle.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40; }\n .embedpress-modal .btn-primary:active, .embedpress-modal .btn-primary.active,\n .open > .embedpress-modal .btn-primary.dropdown-toggle {\n background-image: none; }\n .embedpress-modal .btn-primary.disabled:hover, .embedpress-modal .btn-primary.disabled:focus, .embedpress-modal .btn-primary.disabled.focus, .embedpress-modal .btn-primary[disabled]:hover, .embedpress-modal .btn-primary[disabled]:focus, .embedpress-modal .btn-primary[disabled].focus,\n fieldset[disabled] .embedpress-modal .btn-primary:hover,\n fieldset[disabled] .embedpress-modal .btn-primary:focus,\n fieldset[disabled] .embedpress-modal .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4; }\n .embedpress-modal .btn-primary .badge {\n color: #337ab7;\n background-color: #fff; }\n\n.embedpress-modal .btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c; }\n .embedpress-modal .btn-success:focus, .embedpress-modal .btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625; }\n .embedpress-modal .btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439; }\n .embedpress-modal .btn-success:active, .embedpress-modal .btn-success.active,\n .open > .embedpress-modal .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #449d44;\n border-color: #398439; }\n .embedpress-modal .btn-success:active:hover, .embedpress-modal .btn-success:active:focus, .embedpress-modal .btn-success:active.focus, .embedpress-modal .btn-success.active:hover, .embedpress-modal .btn-success.active:focus, .embedpress-modal .btn-success.active.focus,\n .open > .embedpress-modal .btn-success.dropdown-toggle:hover,\n .open > .embedpress-modal .btn-success.dropdown-toggle:focus,\n .open > .embedpress-modal .btn-success.dropdown-toggle.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625; }\n .embedpress-modal .btn-success:active, .embedpress-modal .btn-success.active,\n .open > .embedpress-modal .btn-success.dropdown-toggle {\n background-image: none; }\n .embedpress-modal .btn-success.disabled:hover, .embedpress-modal .btn-success.disabled:focus, .embedpress-modal .btn-success.disabled.focus, .embedpress-modal .btn-success[disabled]:hover, .embedpress-modal .btn-success[disabled]:focus, .embedpress-modal .btn-success[disabled].focus,\n fieldset[disabled] .embedpress-modal .btn-success:hover,\n fieldset[disabled] .embedpress-modal .btn-success:focus,\n fieldset[disabled] .embedpress-modal .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c; }\n .embedpress-modal .btn-success .badge {\n color: #5cb85c;\n background-color: #fff; }\n\n.embedpress-modal .btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da; }\n .embedpress-modal .btn-info:focus, .embedpress-modal .btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85; }\n .embedpress-modal .btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc; }\n .embedpress-modal .btn-info:active, .embedpress-modal .btn-info.active,\n .open > .embedpress-modal .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc; }\n .embedpress-modal .btn-info:active:hover, .embedpress-modal .btn-info:active:focus, .embedpress-modal .btn-info:active.focus, .embedpress-modal .btn-info.active:hover, .embedpress-modal .btn-info.active:focus, .embedpress-modal .btn-info.active.focus,\n .open > .embedpress-modal .btn-info.dropdown-toggle:hover,\n .open > .embedpress-modal .btn-info.dropdown-toggle:focus,\n .open > .embedpress-modal .btn-info.dropdown-toggle.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85; }\n .embedpress-modal .btn-info:active, .embedpress-modal .btn-info.active,\n .open > .embedpress-modal .btn-info.dropdown-toggle {\n background-image: none; }\n .embedpress-modal .btn-info.disabled:hover, .embedpress-modal .btn-info.disabled:focus, .embedpress-modal .btn-info.disabled.focus, .embedpress-modal .btn-info[disabled]:hover, .embedpress-modal .btn-info[disabled]:focus, .embedpress-modal .btn-info[disabled].focus,\n fieldset[disabled] .embedpress-modal .btn-info:hover,\n fieldset[disabled] .embedpress-modal .btn-info:focus,\n fieldset[disabled] .embedpress-modal .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da; }\n .embedpress-modal .btn-info .badge {\n color: #5bc0de;\n background-color: #fff; }\n\n.embedpress-modal .btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236; }\n .embedpress-modal .btn-warning:focus, .embedpress-modal .btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d; }\n .embedpress-modal .btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512; }\n .embedpress-modal .btn-warning:active, .embedpress-modal .btn-warning.active,\n .open > .embedpress-modal .btn-warning.dropdown-toggle {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512; }\n .embedpress-modal .btn-warning:active:hover, .embedpress-modal .btn-warning:active:focus, .embedpress-modal .btn-warning:active.focus, .embedpress-modal .btn-warning.active:hover, .embedpress-modal .btn-warning.active:focus, .embedpress-modal .btn-warning.active.focus,\n .open > .embedpress-modal .btn-warning.dropdown-toggle:hover,\n .open > .embedpress-modal .btn-warning.dropdown-toggle:focus,\n .open > .embedpress-modal .btn-warning.dropdown-toggle.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d; }\n .embedpress-modal .btn-warning:active, .embedpress-modal .btn-warning.active,\n .open > .embedpress-modal .btn-warning.dropdown-toggle {\n background-image: none; }\n .embedpress-modal .btn-warning.disabled:hover, .embedpress-modal .btn-warning.disabled:focus, .embedpress-modal .btn-warning.disabled.focus, .embedpress-modal .btn-warning[disabled]:hover, .embedpress-modal .btn-warning[disabled]:focus, .embedpress-modal .btn-warning[disabled].focus,\n fieldset[disabled] .embedpress-modal .btn-warning:hover,\n fieldset[disabled] .embedpress-modal .btn-warning:focus,\n fieldset[disabled] .embedpress-modal .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236; }\n .embedpress-modal .btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff; }\n\n.embedpress-modal .btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a; }\n .embedpress-modal .btn-danger:focus, .embedpress-modal .btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19; }\n .embedpress-modal .btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925; }\n .embedpress-modal .btn-danger:active, .embedpress-modal .btn-danger.active,\n .open > .embedpress-modal .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925; }\n .embedpress-modal .btn-danger:active:hover, .embedpress-modal .btn-danger:active:focus, .embedpress-modal .btn-danger:active.focus, .embedpress-modal .btn-danger.active:hover, .embedpress-modal .btn-danger.active:focus, .embedpress-modal .btn-danger.active.focus,\n .open > .embedpress-modal .btn-danger.dropdown-toggle:hover,\n .open > .embedpress-modal .btn-danger.dropdown-toggle:focus,\n .open > .embedpress-modal .btn-danger.dropdown-toggle.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19; }\n .embedpress-modal .btn-danger:active, .embedpress-modal .btn-danger.active,\n .open > .embedpress-modal .btn-danger.dropdown-toggle {\n background-image: none; }\n .embedpress-modal .btn-danger.disabled:hover, .embedpress-modal .btn-danger.disabled:focus, .embedpress-modal .btn-danger.disabled.focus, .embedpress-modal .btn-danger[disabled]:hover, .embedpress-modal .btn-danger[disabled]:focus, .embedpress-modal .btn-danger[disabled].focus,\n fieldset[disabled] .embedpress-modal .btn-danger:hover,\n fieldset[disabled] .embedpress-modal .btn-danger:focus,\n fieldset[disabled] .embedpress-modal .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a; }\n .embedpress-modal .btn-danger .badge {\n color: #d9534f;\n background-color: #fff; }\n\n.embedpress-modal .btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0; }\n .embedpress-modal .btn-link, .embedpress-modal .btn-link:active, .embedpress-modal .btn-link.active, .embedpress-modal .btn-link[disabled],\n fieldset[disabled] .embedpress-modal .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none; }\n .embedpress-modal .btn-link, .embedpress-modal .btn-link:hover, .embedpress-modal .btn-link:focus, .embedpress-modal .btn-link:active {\n border-color: transparent; }\n .embedpress-modal .btn-link:hover, .embedpress-modal .btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent; }\n .embedpress-modal .btn-link[disabled]:hover, .embedpress-modal .btn-link[disabled]:focus,\n fieldset[disabled] .embedpress-modal .btn-link:hover,\n fieldset[disabled] .embedpress-modal .btn-link:focus {\n color: #777777;\n text-decoration: none; }\n\n.embedpress-modal .btn-lg, .embedpress-modal .btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.33333;\n border-radius: 6px; }\n\n.embedpress-modal .btn-sm, .embedpress-modal .btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px; }\n\n.embedpress-modal .btn-xs, .embedpress-modal .btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px; }\n\n.embedpress-modal .btn-block {\n display: block;\n width: 100%; }\n\n.embedpress-modal .btn-block + .btn-block {\n margin-top: 5px; }\n\n.embedpress-modal input[type=\"submit\"].btn-block,\n.embedpress-modal input[type=\"reset\"].btn-block,\n.embedpress-modal input[type=\"button\"].btn-block {\n width: 100%; }\n\n.embedpress-modal .btn-group,\n.embedpress-modal .btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; }\n .embedpress-modal .btn-group > .btn,\n .embedpress-modal .btn-group-vertical > .btn {\n position: relative;\n float: left; }\n .embedpress-modal .btn-group > .btn:hover, .embedpress-modal .btn-group > .btn:focus, .embedpress-modal .btn-group > .btn:active, .embedpress-modal .btn-group > .btn.active,\n .embedpress-modal .btn-group-vertical > .btn:hover,\n .embedpress-modal .btn-group-vertical > .btn:focus,\n .embedpress-modal .btn-group-vertical > .btn:active,\n .embedpress-modal .btn-group-vertical > .btn.active {\n z-index: 2; }\n\n.embedpress-modal .btn-group .btn + .btn,\n.embedpress-modal .btn-group .btn + .btn-group,\n.embedpress-modal .btn-group .btn-group + .btn,\n.embedpress-modal .btn-group .btn-group + .btn-group {\n margin-left: -1px; }\n\n.embedpress-modal .btn-toolbar {\n margin-left: -5px; }\n .embedpress-modal .btn-toolbar:before, .embedpress-modal .btn-toolbar:after {\n content: \" \";\n display: table; }\n .embedpress-modal .btn-toolbar:after {\n clear: both; }\n .embedpress-modal .btn-toolbar .btn,\n .embedpress-modal .btn-toolbar .btn-group,\n .embedpress-modal .btn-toolbar .input-group {\n float: left; }\n .embedpress-modal .btn-toolbar > .btn,\n .embedpress-modal .btn-toolbar > .btn-group,\n .embedpress-modal .btn-toolbar > .input-group {\n margin-left: 5px; }\n\n.embedpress-modal .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0; }\n\n.embedpress-modal .btn-group > .btn:first-child {\n margin-left: 0; }\n .embedpress-modal .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0; }\n\n.embedpress-modal .btn-group > .btn:last-child:not(:first-child),\n.embedpress-modal .btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0; }\n\n.embedpress-modal .btn-group > .btn-group {\n float: left; }\n\n.embedpress-modal .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0; }\n\n.embedpress-modal .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.embedpress-modal .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0; }\n\n.embedpress-modal .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0; }\n\n.embedpress-modal .btn-group .dropdown-toggle:active,\n.embedpress-modal .btn-group.open .dropdown-toggle {\n outline: 0; }\n\n.embedpress-modal .btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px; }\n\n.embedpress-modal .btn-group > .btn-lg + .dropdown-toggle, .embedpress-modal .btn-group-lg.btn-group > .btn + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px; }\n\n.embedpress-modal .btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); }\n .embedpress-modal .btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none; }\n\n.embedpress-modal .btn .caret {\n margin-left: 0; }\n\n.embedpress-modal .btn-lg .caret, .embedpress-modal .btn-group-lg > .btn .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0; }\n\n.embedpress-modal .dropup .btn-lg .caret, .embedpress-modal .dropup .btn-group-lg > .btn .caret {\n border-width: 0 5px 5px; }\n\n.embedpress-modal .btn-group-vertical > .btn,\n.embedpress-modal .btn-group-vertical > .btn-group,\n.embedpress-modal .btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%; }\n\n.embedpress-modal .btn-group-vertical > .btn-group:before, .embedpress-modal .btn-group-vertical > .btn-group:after {\n content: \" \";\n display: table; }\n\n.embedpress-modal .btn-group-vertical > .btn-group:after {\n clear: both; }\n\n.embedpress-modal .btn-group-vertical > .btn-group > .btn {\n float: none; }\n\n.embedpress-modal .btn-group-vertical > .btn + .btn,\n.embedpress-modal .btn-group-vertical > .btn + .btn-group,\n.embedpress-modal .btn-group-vertical > .btn-group + .btn,\n.embedpress-modal .btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0; }\n\n.embedpress-modal .btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0; }\n\n.embedpress-modal .btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0; }\n\n.embedpress-modal .btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px; }\n\n.embedpress-modal .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0; }\n\n.embedpress-modal .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.embedpress-modal .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0; }\n\n.embedpress-modal .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0; }\n\n.embedpress-modal .btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate; }\n .embedpress-modal .btn-group-justified > .btn,\n .embedpress-modal .btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%; }\n .embedpress-modal .btn-group-justified > .btn-group .btn {\n width: 100%; }\n .embedpress-modal .btn-group-justified > .btn-group .dropdown-menu {\n left: auto; }\n\n.embedpress-modal [data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n.embedpress-modal [data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n.embedpress-modal [data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n.embedpress-modal [data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none; }\n\n.embedpress-modal .input-group {\n position: relative;\n display: table;\n border-collapse: separate; }\n .embedpress-modal .input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0; }\n .embedpress-modal .input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0; }\n .embedpress-modal .input-group .form-control:focus {\n z-index: 3; }\n\n.embedpress-modal .input-group-addon,\n.embedpress-modal .input-group-btn,\n.embedpress-modal .input-group .form-control {\n display: table-cell; }\n .embedpress-modal .input-group-addon:not(:first-child):not(:last-child),\n .embedpress-modal .input-group-btn:not(:first-child):not(:last-child),\n .embedpress-modal .input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0; }\n\n.embedpress-modal .input-group-addon,\n.embedpress-modal .input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; }\n\n.embedpress-modal .input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #ccc;\n border-radius: 4px; }\n .embedpress-modal .input-group-addon.input-sm, .embedpress-modal .input-group-sm > .input-group-addon, .embedpress-modal .input-group-sm > .input-group-btn > .input-group-addon.btn {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px; }\n .embedpress-modal .input-group-addon.input-lg, .embedpress-modal .input-group-lg > .input-group-addon, .embedpress-modal .input-group-lg > .input-group-btn > .input-group-addon.btn {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px; }\n .embedpress-modal .input-group-addon input[type=\"radio\"],\n .embedpress-modal .input-group-addon input[type=\"checkbox\"] {\n margin-top: 0; }\n\n.embedpress-modal .input-group .form-control:first-child,\n.embedpress-modal .input-group-addon:first-child,\n.embedpress-modal .input-group-btn:first-child > .btn,\n.embedpress-modal .input-group-btn:first-child > .btn-group > .btn,\n.embedpress-modal .input-group-btn:first-child > .dropdown-toggle,\n.embedpress-modal .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.embedpress-modal .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0; }\n\n.embedpress-modal .input-group-addon:first-child {\n border-right: 0; }\n\n.embedpress-modal .input-group .form-control:last-child,\n.embedpress-modal .input-group-addon:last-child,\n.embedpress-modal .input-group-btn:last-child > .btn,\n.embedpress-modal .input-group-btn:last-child > .btn-group > .btn,\n.embedpress-modal .input-group-btn:last-child > .dropdown-toggle,\n.embedpress-modal .input-group-btn:first-child > .btn:not(:first-child),\n.embedpress-modal .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0; }\n\n.embedpress-modal .input-group-addon:last-child {\n border-left: 0; }\n\n.embedpress-modal .input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap; }\n .embedpress-modal .input-group-btn > .btn {\n position: relative; }\n .embedpress-modal .input-group-btn > .btn + .btn {\n margin-left: -1px; }\n .embedpress-modal .input-group-btn > .btn:hover, .embedpress-modal .input-group-btn > .btn:focus, .embedpress-modal .input-group-btn > .btn:active {\n z-index: 2; }\n .embedpress-modal .input-group-btn:first-child > .btn,\n .embedpress-modal .input-group-btn:first-child > .btn-group {\n margin-right: -1px; }\n .embedpress-modal .input-group-btn:last-child > .btn,\n .embedpress-modal .input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px; }\n\n.embedpress-modal .close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: 0.2;\n filter: alpha(opacity=20); }\n .embedpress-modal .close:hover, .embedpress-modal .close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50); }\n\n.embedpress-modal button.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none; }\n\n.modal-open {\n overflow: hidden; }\n\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0; }\n .modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out; }\n .modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0); }\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto; }\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px; }\n\n.modal-content {\n position: relative;\n background-color: #fff;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0; }\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000; }\n .modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0); }\n .modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50); }\n\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5; }\n .modal-header:before, .modal-header:after {\n content: \" \";\n display: table; }\n .modal-header:after {\n clear: both; }\n\n.modal-header .close {\n margin-top: -2px; }\n\n.modal-title {\n margin: 0;\n line-height: 1.42857; }\n\n.modal-body {\n position: relative;\n padding: 15px; }\n\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5; }\n .modal-footer:before, .modal-footer:after {\n content: \" \";\n display: table; }\n .modal-footer:after {\n clear: both; }\n .modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0; }\n .modal-footer .btn-group .btn + .btn {\n margin-left: -1px; }\n .modal-footer .btn-block + .btn-block {\n margin-left: 0; }\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll; }\n\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto; }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); }\n .modal-sm {\n width: 300px; } }\n\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px; } }\n\n@-ms-viewport {\n width: device-width; }\n\n.visible-xs {\n display: none !important; }\n\n.visible-sm {\n display: none !important; }\n\n.visible-md {\n display: none !important; }\n\n.visible-lg {\n display: none !important; }\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important; }\n\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important; }\n table.visible-xs {\n display: table !important; }\n tr.visible-xs {\n display: table-row !important; }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important; } }\n\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important; } }\n\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important; } }\n\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important; } }\n\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important; }\n table.visible-sm {\n display: table !important; }\n tr.visible-sm {\n display: table-row !important; }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important; } }\n\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important; } }\n\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important; } }\n\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important; } }\n\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important; }\n table.visible-md {\n display: table !important; }\n tr.visible-md {\n display: table-row !important; }\n th.visible-md,\n td.visible-md {\n display: table-cell !important; } }\n\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important; } }\n\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important; } }\n\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important; } }\n\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important; }\n table.visible-lg {\n display: table !important; }\n tr.visible-lg {\n display: table-row !important; }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important; } }\n\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important; } }\n\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important; } }\n\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important; } }\n\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important; } }\n\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important; } }\n\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important; } }\n\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important; } }\n\n.visible-print {\n display: none !important; }\n\n@media print {\n .visible-print {\n display: block !important; }\n table.visible-print {\n display: table !important; }\n tr.visible-print {\n display: table-row !important; }\n th.visible-print,\n td.visible-print {\n display: table-cell !important; } }\n\n.visible-print-block {\n display: none !important; }\n @media print {\n .visible-print-block {\n display: block !important; } }\n\n.visible-print-inline {\n display: none !important; }\n @media print {\n .visible-print-inline {\n display: inline !important; } }\n\n.visible-print-inline-block {\n display: none !important; }\n @media print {\n .visible-print-inline-block {\n display: inline-block !important; } }\n\n@media print {\n .hidden-print {\n display: none !important; } }\n"
|
11 |
+
],
|
12 |
+
"sourceRoot": "/source/"
|
13 |
+
}
|
assets/css/vendor/bootstrap/index.html
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
</html>
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
+
<head>
|
4 |
+
<title>403 Forbidden</title>
|
5 |
+
</head>
|
6 |
+
<body>
|
7 |
+
<p>Directory access is forbidden.</p>
|
8 |
+
</body>
|
9 |
</html>
|
assets/css/vendor/index.html
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
</html>
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
+
<head>
|
4 |
+
<title>403 Forbidden</title>
|
5 |
+
</head>
|
6 |
+
<body>
|
7 |
+
<p>Directory access is forbidden.</p>
|
8 |
+
</body>
|
9 |
</html>
|
assets/js/index.html
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
</html>
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
+
<head>
|
4 |
+
<title>403 Forbidden</title>
|
5 |
+
</head>
|
6 |
+
<body>
|
7 |
+
<p>Directory access is forbidden.</p>
|
8 |
+
</body>
|
9 |
</html>
|
assets/js/preview.js
CHANGED
@@ -5,32 +5,32 @@
|
|
5 |
* @license GPLv2 or later
|
6 |
* @since 1.0
|
7 |
*/
|
8 |
-
(function($, String, $data, undefined) {
|
9 |
-
|
10 |
|
11 |
-
$(window.document).ready(function() {
|
12 |
-
String.prototype.capitalizeFirstLetter = function() {
|
13 |
return this.charAt(0).toUpperCase() + this.slice(1);
|
14 |
-
}
|
15 |
|
16 |
-
String.prototype.isValidUrl = function() {
|
17 |
var rule = /^(https?|embedpresss?):\/\//i;
|
18 |
|
19 |
return rule.test(this.toString());
|
20 |
-
}
|
21 |
|
22 |
-
String.prototype.hasShortcode = function(shortcode) {
|
23 |
-
var shortcodeRule = new RegExp('\\['+ shortcode +'(?:\\]|.+?\\])',
|
24 |
return !!this.toString().match(shortcodeRule);
|
25 |
-
}
|
26 |
|
27 |
-
String.prototype.stripShortcode = function(shortcode) {
|
28 |
-
var stripRule = new RegExp('(\\['+ shortcode +'(?:\\]|.+?\\])|\\[\\/'+ shortcode +'\\])',
|
29 |
-
return this.toString().replace(stripRule,
|
30 |
-
}
|
31 |
|
32 |
-
String.prototype.setShortcodeAttribute = function(attr, value, shortcode, replaceInsteadOfMerge) {
|
33 |
-
replaceInsteadOfMerge = typeof replaceInsteadOfMerge ===
|
34 |
var subject = this.toString();
|
35 |
|
36 |
if (subject.hasShortcode(shortcode)) {
|
@@ -40,7 +40,7 @@
|
|
40 |
if (replaceInsteadOfMerge) {
|
41 |
attributes[attr] = value;
|
42 |
} else {
|
43 |
-
attributes[attr] +=
|
44 |
}
|
45 |
} else {
|
46 |
attributes[attr] = value;
|
@@ -52,7 +52,7 @@
|
|
52 |
parsedAttributes.push(attr + '="' + attributes[attr] + '"');
|
53 |
}
|
54 |
|
55 |
-
subject = '[' + shortcode + ' ' + parsedAttributes.join(
|
56 |
} else {
|
57 |
subject = '[' + shortcode + ']' + subject.stripShortcode(shortcode) + '[/' + shortcode + ']';
|
58 |
}
|
@@ -61,9 +61,9 @@
|
|
61 |
} else {
|
62 |
return subject;
|
63 |
}
|
64 |
-
}
|
65 |
|
66 |
-
String.prototype.getShortcodeAttributes = function(shortcode) {
|
67 |
var subject = this.toString();
|
68 |
if (subject.hasShortcode(shortcode)) {
|
69 |
var attributes = {};
|
@@ -76,12 +76,12 @@
|
|
76 |
var attrValue;
|
77 |
if (match[2] === undefined) {
|
78 |
// Prevent `class` property being empty an treated as a boolean param
|
79 |
-
if (attrName.toLowerCase() !==
|
80 |
if (attrName.indexOf('!') === 0) {
|
81 |
-
attrName = attrName.replace('!',
|
82 |
-
attrValue =
|
83 |
} else {
|
84 |
-
attrValue =
|
85 |
}
|
86 |
|
87 |
attributes[attrName] = attrValue;
|
@@ -89,7 +89,7 @@
|
|
89 |
} else {
|
90 |
attrValue = match[2];
|
91 |
if (attrValue.isBoolean()) {
|
92 |
-
attrValue = attrValue.isFalse() ?
|
93 |
}
|
94 |
|
95 |
attributes[attrName] = attrValue;
|
@@ -103,56 +103,56 @@
|
|
103 |
} else {
|
104 |
return {};
|
105 |
}
|
106 |
-
}
|
107 |
|
108 |
-
String.prototype.isBoolean = function() {
|
109 |
var subject = this.toString().trim().toLowerCase();
|
110 |
|
111 |
return subject.isTrue(false) || subject.isFalse();
|
112 |
};
|
113 |
|
114 |
-
String.prototype.isTrue = function(defaultValue) {
|
115 |
var subject = this.toString().trim().toLowerCase();
|
116 |
defaultValue = typeof defaultValue === undefined ? true : defaultValue;
|
117 |
|
118 |
switch (subject) {
|
119 |
-
case
|
120 |
-
defaultValue +=
|
121 |
return !defaultValue.isFalse();
|
122 |
-
case
|
123 |
-
case
|
124 |
-
case
|
125 |
-
case
|
126 |
-
case
|
127 |
return true;
|
128 |
default:
|
129 |
return false;
|
130 |
}
|
131 |
};
|
132 |
|
133 |
-
String.prototype.isFalse = function() {
|
134 |
var subject = this.toString().trim().toLowerCase();
|
135 |
|
136 |
switch (subject) {
|
137 |
-
case
|
138 |
-
case
|
139 |
-
case
|
140 |
-
case
|
141 |
-
case
|
142 |
-
case
|
143 |
-
case
|
144 |
return true;
|
145 |
default:
|
146 |
return false;
|
147 |
}
|
148 |
};
|
149 |
|
150 |
-
var SHORTCODE_REGEXP = new RegExp('\\[\/?'+ $data.EMBEDPRESS_SHORTCODE +'\\]',
|
151 |
|
152 |
-
var EmbedPress = function() {
|
153 |
var self = this;
|
154 |
|
155 |
-
var PLG_SYSTEM_ASSETS_CSS_PATH = $data.EMBEDPRESS_URL_ASSETS +
|
156 |
var PLG_CONTENT_ASSETS_CSS_PATH = PLG_SYSTEM_ASSETS_CSS_PATH;
|
157 |
|
158 |
/**
|
@@ -161,7 +161,7 @@
|
|
161 |
* @type Object
|
162 |
*/
|
163 |
self.params = {
|
164 |
-
baseUrl
|
165 |
versionUID: '0'
|
166 |
};
|
167 |
|
@@ -208,7 +208,7 @@
|
|
208 |
$(self.onReady);
|
209 |
};
|
210 |
|
211 |
-
self.addEvent = function(event, element, callback) {
|
212 |
if (typeof element.on !== 'undefined') {
|
213 |
element.on(event, callback);
|
214 |
} else {
|
@@ -218,28 +218,27 @@
|
|
218 |
}
|
219 |
};
|
220 |
|
221 |
-
self.isEmpty = function(list) {
|
222 |
return list.length === 0;
|
223 |
};
|
224 |
|
225 |
-
self.isDefined = function(attribute) {
|
226 |
return (typeof attribute !== 'undefined') && (attribute !== null);
|
227 |
-
}
|
228 |
|
229 |
-
self.makeId = function() {
|
230 |
-
var text =
|
231 |
-
var possible =
|
232 |
|
233 |
-
for(
|
234 |
text += possible.charAt(Math.floor(Math.random() * possible.length));
|
235 |
|
236 |
return text;
|
237 |
};
|
238 |
|
239 |
-
self.loadAsyncDynamicJsCodeFromElement = function(subject, wrapper, editorInstance)
|
240 |
-
{
|
241 |
subject = $(subject);
|
242 |
-
if (subject.prop('tagName').toLowerCase() ===
|
243 |
var scriptSrc = subject.attr('src') || null;
|
244 |
if (!scriptSrc) {
|
245 |
self.addScriptDeclaration(wrapper, subject.html(), editorInstance);
|
@@ -249,23 +248,23 @@
|
|
249 |
} else {
|
250 |
var innerScriptsList = $('script', subject);
|
251 |
if (innerScriptsList.length > 0) {
|
252 |
-
$.each(innerScriptsList, function(innerScriptIndex, innerScript) {
|
253 |
self.loadAsyncDynamicJsCodeFromElement(innerScript, wrapper, editorInstance);
|
254 |
});
|
255 |
}
|
256 |
}
|
257 |
-
}
|
258 |
|
259 |
/**
|
260 |
* Method executed on the document ready event
|
261 |
*
|
262 |
* @return void
|
263 |
*/
|
264 |
-
self.onReady = function() {
|
265 |
-
var findEditors = function() {
|
266 |
// Wait until the editor is available
|
267 |
var interval = window.setInterval(
|
268 |
-
function() {
|
269 |
var editorsFound = self.getEditors();
|
270 |
if (editorsFound.length) {
|
271 |
self.loadedEditors = editorsFound;
|
@@ -289,15 +288,15 @@
|
|
289 |
|
290 |
// Add support for the Beaver Builder.
|
291 |
if (typeof FLLightbox !== 'undefined') {
|
292 |
-
$.each(FLLightbox._instances, function(index) {
|
293 |
-
FLLightbox._instances[index].on('open', function() {
|
294 |
-
setTimeout(function() {
|
295 |
findEditors();
|
296 |
}, 500);
|
297 |
});
|
298 |
|
299 |
-
FLLightbox._instances[index].on('didHideLightbox', function() {
|
300 |
-
setTimeout(function() {
|
301 |
findEditors();
|
302 |
}, 500);
|
303 |
});
|
@@ -309,15 +308,15 @@
|
|
309 |
* Detects if tinymce object is available
|
310 |
* @return Boolean True, if available
|
311 |
*/
|
312 |
-
self.tinymceIsAvailable = function() {
|
313 |
-
return typeof window.tinymce === 'object' || typeof window.tinyMCE ===
|
314 |
-
}
|
315 |
|
316 |
/**
|
317 |
* Returns true if the controller panel is active
|
318 |
* @return Boolean True, if the controller panel is active
|
319 |
*/
|
320 |
-
self.controllerPanelIsActive = function() {
|
321 |
return typeof self.activeControllerPanel !== 'undefined' && self.activeControllerPanel !== null;
|
322 |
};
|
323 |
|
@@ -325,7 +324,7 @@
|
|
325 |
* Returns the editor
|
326 |
* @return Object The editor
|
327 |
*/
|
328 |
-
self.getEditors = function() {
|
329 |
if (!window.tinymce || !window.tinymce.editors || window.tinymce.editors.length === 0) {
|
330 |
return [];
|
331 |
}
|
@@ -341,13 +340,13 @@
|
|
341 |
* @param function onsuccess The callback called on success
|
342 |
* @return void
|
343 |
*/
|
344 |
-
self.getParsedContent = function(content, onsuccess) {
|
345 |
// Get the parsed content
|
346 |
$.ajax({
|
347 |
type: 'POST',
|
348 |
-
url: self.params.baseUrl +
|
349 |
data: {
|
350 |
-
action:
|
351 |
subject: content
|
352 |
},
|
353 |
success: onsuccess,
|
@@ -356,14 +355,14 @@
|
|
356 |
});
|
357 |
};
|
358 |
|
359 |
-
self.addStylesheet = function(url, editorInstance) {
|
360 |
var head = editorInstance.getDoc().getElementsByTagName('head')[0];
|
361 |
|
362 |
var $style = $('<link rel="stylesheet" type="text/css" href="' + url + '">');
|
363 |
$style.appendTo(head);
|
364 |
-
}
|
365 |
|
366 |
-
self.convertURLSchemeToPattern = function(scheme) {
|
367 |
var prefix = '(.*)((?:http|embedpress)s?:\\/\\/(?:www\\.)?',
|
368 |
suffix = '[\\/]?)(.*)',
|
369 |
pattern;
|
@@ -375,18 +374,18 @@
|
|
375 |
return prefix + scheme + suffix;
|
376 |
};
|
377 |
|
378 |
-
self.getProvidersURLPatterns = function() {
|
379 |
// @todo: Add option to disable/enable the providers
|
380 |
var patterns = [];
|
381 |
|
382 |
-
self.each($data.urlSchemes, function convertEachURLSchemesToPattern(scheme) {
|
383 |
patterns.push(self.convertURLSchemeToPattern(scheme));
|
384 |
});
|
385 |
|
386 |
return patterns;
|
387 |
};
|
388 |
|
389 |
-
self.addScript = function(source, callback, wrapper, editorInstance) {
|
390 |
var doc = editorInstance.getDoc();
|
391 |
|
392 |
if (typeof wrapper === 'undefined' || !wrapper) {
|
@@ -405,7 +404,7 @@
|
|
405 |
wrapper.append($script);
|
406 |
};
|
407 |
|
408 |
-
self.addScriptDeclaration = function(wrapper, declaration, editorInstance) {
|
409 |
var doc = editorInstance.getDoc(),
|
410 |
$script = $(doc.createElement('script'));
|
411 |
|
@@ -414,19 +413,19 @@
|
|
414 |
$script.text(declaration);
|
415 |
};
|
416 |
|
417 |
-
self.addURLsPlaceholder = function(node, url, editorInstance) {
|
418 |
var uid = self.makeId();
|
419 |
|
420 |
-
var wrapperClasses = [
|
421 |
|
422 |
var shortcodeAttributes = node.value.getShortcodeAttributes($data.EMBEDPRESS_SHORTCODE);
|
423 |
var customAttributes = shortcodeAttributes;
|
424 |
|
425 |
-
var customClasses =
|
426 |
if (!!Object.keys(shortcodeAttributes).length) {
|
427 |
-
var specialAttributes = [
|
428 |
// Iterates over each attribute of shortcodeAttributes to add the prefix "data-" if missing
|
429 |
-
var dataPrefix =
|
430 |
var prefixedShortcodeAttributes = [];
|
431 |
for (var attr in shortcodeAttributes) {
|
432 |
if (specialAttributes.indexOf(attr) === -1) {
|
@@ -436,8 +435,8 @@
|
|
436 |
prefixedShortcodeAttributes[attr] = shortcodeAttributes[attr];
|
437 |
}
|
438 |
} else {
|
439 |
-
attr = attr.replace(dataPrefix,
|
440 |
-
if (attr ===
|
441 |
wrapperClasses.push(shortcodeAttributes[attr]);
|
442 |
}
|
443 |
}
|
@@ -447,41 +446,41 @@
|
|
447 |
prefixedShortcodeAttributes = dataPrefix = null;
|
448 |
}
|
449 |
|
450 |
-
if ((
|
451 |
-
shortcodeAttributes['data-responsive'] =
|
452 |
}
|
453 |
|
454 |
var wrapper = new self.Node('div', 1);
|
455 |
var wrapperSettings = {
|
456 |
-
'class'
|
457 |
-
'data-url'
|
458 |
-
'data-uid'
|
459 |
-
'id'
|
460 |
'data-loading-text': 'Loading your embed...'
|
461 |
};
|
462 |
|
463 |
wrapperSettings = $.extend({}, wrapperSettings, shortcodeAttributes);
|
464 |
|
465 |
if (wrapperSettings.class.indexOf('is-loading') === -1) {
|
466 |
-
wrapperSettings.class +=
|
467 |
}
|
468 |
|
469 |
wrapper.attr(wrapperSettings);
|
470 |
|
471 |
var panel = new self.Node('div', 1);
|
472 |
panel.attr({
|
473 |
-
'id'
|
474 |
'class': 'embedpress_controller_panel embedpress_ignore_mouseout hidden'
|
475 |
});
|
476 |
wrapper.append(panel);
|
477 |
|
478 |
-
function createGhostNode(htmlTag, content) {
|
479 |
-
htmlTag = htmlTag ||
|
480 |
-
content = content ||
|
481 |
|
482 |
var ghostNode = new self.Node(htmlTag, 1);
|
483 |
ghostNode.attr({
|
484 |
-
'class':
|
485 |
});
|
486 |
|
487 |
var ghostText = new self.Node('#text', 3);
|
@@ -493,7 +492,7 @@
|
|
493 |
|
494 |
var editButton = new self.Node('div', 1);
|
495 |
editButton.attr({
|
496 |
-
'id'
|
497 |
'class': 'embedpress_ignore_mouseout embedpress_controller_button'
|
498 |
});
|
499 |
var editButtonIcon = new self.Node('div', 1);
|
@@ -506,7 +505,7 @@
|
|
506 |
|
507 |
var removeButton = new self.Node('div', 1);
|
508 |
removeButton.attr({
|
509 |
-
'id'
|
510 |
'class': 'embedpress_ignore_mouseout embedpress_controller_button'
|
511 |
});
|
512 |
var removeButtonIcon = new self.Node('div', 1);
|
@@ -522,39 +521,39 @@
|
|
522 |
node.replace(wrapper);
|
523 |
|
524 |
// Trigger the timeout which will load the content
|
525 |
-
window.setTimeout(function() {
|
526 |
self.parseContentAsync(uid, url, customAttributes, editorInstance);
|
527 |
}, 200);
|
528 |
|
529 |
return wrapper;
|
530 |
};
|
531 |
|
532 |
-
self.parseContentAsync = function(uid, url, customAttributes, editorInstance) {
|
533 |
-
customAttributes = typeof customAttributes ===
|
534 |
|
535 |
url = self.decodeEmbedURLSpecialChars(url, true, customAttributes);
|
536 |
var rawUrl = url.stripShortcode($data.EMBEDPRESS_SHORTCODE);
|
537 |
|
538 |
$(self).triggerHandler('EmbedPress.beforeEmbed', {
|
539 |
-
'url'
|
540 |
'meta': {
|
541 |
'attributes': customAttributes || {}
|
542 |
}
|
543 |
});
|
544 |
|
545 |
// Get the parsed embed code from the EmbedPress plugin
|
546 |
-
self.getParsedContent(url, function getParsedContentCallback(result) {
|
547 |
-
var embeddedContent = (typeof result.data ===
|
548 |
|
549 |
var $wrapper = $(self.getElementInContentById('embedpress_wrapper_' + uid, editorInstance));
|
550 |
var wrapperParent = $($wrapper.parent());
|
551 |
|
552 |
// Check if $wrapper was rendered inside a <p> element.
|
553 |
-
if (wrapperParent.prop('tagName') && wrapperParent.prop('tagName').toUpperCase() ===
|
554 |
wrapperParent.replaceWith($wrapper);
|
555 |
// Check if there's at least one "space" after $wrapper.
|
556 |
var nextSibling = $($wrapper).next();
|
557 |
-
if (!nextSibling.length || nextSibling.prop('tagName').toUpperCase() !==
|
558 |
//$('<p> </p>').insertAfter($wrapper);
|
559 |
}
|
560 |
nextSibling = null;
|
@@ -564,7 +563,7 @@
|
|
564 |
// Check if the url could not be embedded for some reason.
|
565 |
if (rawUrl === embeddedContent) {
|
566 |
// Echoes the raw url
|
567 |
-
$wrapper.replaceWith($('<p>'+ rawUrl +'</p>'));
|
568 |
return;
|
569 |
}
|
570 |
|
@@ -574,7 +573,7 @@
|
|
574 |
var $content;
|
575 |
try {
|
576 |
$content = $(embeddedContent);
|
577 |
-
} catch(err) {
|
578 |
// Fallback to a div, if the result is not a html markup, e.g. a url
|
579 |
$content = $('<div>');
|
580 |
$content.html(embeddedContent);
|
@@ -588,14 +587,14 @@
|
|
588 |
|
589 |
$wrapper.append(contentWrapper);
|
590 |
|
591 |
-
setTimeout(function() {
|
592 |
-
editorInstance.undoManager.transact(function() {
|
593 |
var iframe = editorInstance.getDoc().createElement('iframe');
|
594 |
iframe.src = tinymce.Env.ie ? 'javascript:""' : '';
|
595 |
iframe.frameBorder = '0';
|
596 |
iframe.allowTransparency = 'true';
|
597 |
iframe.scrolling = 'no';
|
598 |
-
iframe.class =
|
599 |
iframe.style.width = '100%';
|
600 |
|
601 |
contentWrapper.append(iframe);
|
@@ -608,29 +607,29 @@
|
|
608 |
|
609 |
var iframeDoc = iframeWindow.document;
|
610 |
|
611 |
-
$(iframe).load(function() {
|
612 |
var maximumChecksAllowed = 8;
|
613 |
var checkIndex = 0;
|
614 |
|
615 |
-
var checkerInterval = setInterval(function() {
|
616 |
if (checkIndex === maximumChecksAllowed) {
|
617 |
clearInterval(checkerInterval);
|
618 |
|
619 |
-
setTimeout(function() {
|
620 |
$wrapper.css('width', iframe.width);
|
621 |
$wrapper.css('height', iframe.height);
|
622 |
}, 100);
|
623 |
} else {
|
624 |
if (customAttributes.height) {
|
625 |
iframe.height = customAttributes.height;
|
626 |
-
iframe.style.height = customAttributes.height +'px';
|
627 |
} else {
|
628 |
iframe.height = $('body', iframeDoc).height();
|
629 |
}
|
630 |
|
631 |
if (customAttributes.width) {
|
632 |
iframe.width = customAttributes.width;
|
633 |
-
iframe.style.width = customAttributes.width +'px';
|
634 |
} else {
|
635 |
iframe.width = $('body', iframeDoc).width();
|
636 |
}
|
@@ -642,31 +641,31 @@
|
|
642 |
|
643 |
iframeDoc.open();
|
644 |
iframeDoc.write(
|
645 |
-
'<!DOCTYPE html>'+
|
646 |
-
'<html>'+
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
'</html>'
|
671 |
);
|
672 |
iframeDoc.close();
|
@@ -680,35 +679,35 @@
|
|
680 |
|
681 |
$wrapper.append($('<span class="wpview-end"></span>'));
|
682 |
|
683 |
-
if (result && result.data && typeof result.data ===
|
684 |
result.data.width = $($wrapper).width();
|
685 |
result.data.height = $($wrapper).height();
|
686 |
}
|
687 |
|
688 |
$(self).triggerHandler('EmbedPress.afterEmbed', {
|
689 |
-
'meta'
|
690 |
-
'url'
|
691 |
'wrapper': $wrapper
|
692 |
});
|
693 |
});
|
694 |
};
|
695 |
|
696 |
-
self.appendElementsIntoWrapper = function(elementsList, wrapper, editorInstance) {
|
697 |
if (elementsList.length > 0) {
|
698 |
-
$.each(elementsList, function appendElementIntoWrapper(elementIndex, element) {
|
699 |
// Check if the element is a script and do not add it now (if added here it wouldn't be executed)
|
700 |
if (element.tagName.toLowerCase() !== 'script') {
|
701 |
wrapper.append($(element));
|
702 |
|
703 |
if (element.tagName.toLowerCase() === 'iframe') {
|
704 |
-
$(element).ready(function() {
|
705 |
-
window.setTimeout(function() {
|
706 |
-
$.each(editorInstance.dom.select('div.embedpress_wrapper iframe'), function(elementIndex, iframe) {
|
707 |
self.fixIframeSize(iframe);
|
708 |
});
|
709 |
}, 300);
|
710 |
});
|
711 |
-
} else if (element.tagName.toLowerCase() ===
|
712 |
if ($('img', $(element)).length || $('blockquote', wrapper).length) {
|
713 |
// This ensures that the embed wrapper have the same width as its content
|
714 |
$($(element).parents('.embedpress_wrapper').get(0)).addClass('dynamic-width');
|
@@ -725,7 +724,7 @@
|
|
725 |
return wrapper;
|
726 |
};
|
727 |
|
728 |
-
self.encodeEmbedURLSpecialChars = function(content) {
|
729 |
if (content.match(SHORTCODE_REGEXP)) {
|
730 |
var subject = content.replace(SHORTCODE_REGEXP, '');
|
731 |
|
@@ -746,10 +745,10 @@
|
|
746 |
return content;
|
747 |
};
|
748 |
|
749 |
-
self.decodeEmbedURLSpecialChars = function(content, applyShortcode, attributes) {
|
750 |
var encodingRegexpRule = /embedpress(s?):\/\//;
|
751 |
-
applyShortcode = (typeof applyShortcode ===
|
752 |
-
attributes = (typeof attributes ===
|
753 |
|
754 |
var isEncoded = content.match(encodingRegexpRule);
|
755 |
|
@@ -757,11 +756,11 @@
|
|
757 |
content = content.replace(/embedpress(s?):\/\//, 'http$1://');
|
758 |
content = content.replace('::__at__::', '@').trim();
|
759 |
|
760 |
-
if (
|
761 |
var classesList = attributes.class.split(/\s/g);
|
762 |
var shouldRemoveDynamicWidthClass = false;
|
763 |
for (var classIndex = 0; classIndex < classesList.length; classIndex++) {
|
764 |
-
if (classesList[classIndex] ===
|
765 |
shouldRemoveDynamicWidthClass = classIndex;
|
766 |
break;
|
767 |
}
|
@@ -774,7 +773,7 @@
|
|
774 |
delete attributes.class;
|
775 |
}
|
776 |
|
777 |
-
attributes.class = classesList.join(
|
778 |
}
|
779 |
|
780 |
shouldRemoveDynamicWidthClass = classesList = classIndex = null;
|
@@ -789,19 +788,18 @@
|
|
789 |
attrValue = attributes[attrName];
|
790 |
|
791 |
// Prevent `class` property being empty an treated as a boolean param
|
792 |
-
if (attrName.toLowerCase() ===
|
793 |
-
|
794 |
-
}
|
795 |
-
else {
|
796 |
if (attrValue.isBoolean()) {
|
797 |
-
shortcode +=
|
798 |
if (attrValue.isFalse()) {
|
799 |
-
shortcode +=
|
800 |
}
|
801 |
|
802 |
-
shortcode += attrName
|
803 |
} else {
|
804 |
-
shortcode += ' '+ attrName +'="'+ attrValue +'"';
|
805 |
}
|
806 |
}
|
807 |
}
|
@@ -820,24 +818,24 @@
|
|
820 |
*
|
821 |
* @return void
|
822 |
*/
|
823 |
-
self.onFindEditor = function(editorInstance) {
|
824 |
-
self.each
|
825 |
self.extend = tinymce.extend;
|
826 |
-
self.JSON
|
827 |
-
self.Node
|
828 |
|
829 |
-
function onFindEditorCallback() {
|
830 |
$(window.document.getElementsByTagName('head')[0]).append($('<link rel="stylesheet" type="text/css" href="' + (PLG_SYSTEM_ASSETS_CSS_PATH + '/vendor/bootstrap/bootstrap.min.css?v=' + self.params.versionUID) + '">'));
|
831 |
|
832 |
self.addStylesheet(PLG_SYSTEM_ASSETS_CSS_PATH + '/font.css?v=' + self.params.versionUID, editorInstance, editorInstance);
|
833 |
self.addStylesheet(PLG_SYSTEM_ASSETS_CSS_PATH + '/preview.css?v=' + self.params.versionUID, editorInstance, editorInstance);
|
834 |
self.addStylesheet(PLG_CONTENT_ASSETS_CSS_PATH + '/embedpress.css?v=' + self.params.versionUID, editorInstance, editorInstance);
|
835 |
self.addEvent('nodechange', editorInstance, self.onNodeChange);
|
836 |
-
self.addEvent('keydown', editorInstance, function(e) {
|
837 |
self.onKeyDown(e, editorInstance);
|
838 |
});
|
839 |
|
840 |
-
var onUndoCallback = function(e) {
|
841 |
self.onUndo(e, editorInstance);
|
842 |
};
|
843 |
|
@@ -845,18 +843,18 @@
|
|
845 |
self.addEvent('undo', editorInstance.undoManager, onUndoCallback); // JCE
|
846 |
|
847 |
var doc = editorInstance.getDoc();
|
848 |
-
$(doc).on('mouseenter', '.embedpress_wrapper', function(e) {
|
849 |
self.onMouseEnter(e, editorInstance);
|
850 |
});
|
851 |
$(doc).on('mouseout', '.embedpress_wrapper', self.onMouseOut);
|
852 |
-
$(doc).on('mousedown', '.embedpress_wrapper > .embedpress_controller_panel', function(e) {
|
853 |
-
self.cancelEvent(e, editorInstance)
|
854 |
});
|
855 |
doc = null;
|
856 |
|
857 |
// Add the node filter that will convert the url into the preview box for the embed code
|
858 |
-
editorInstance.parser.addNodeFilter('#text', function addNodeFilterIntoParser(nodes, arg) {
|
859 |
-
self.each(nodes, function eachNodeInParser(node) {
|
860 |
// Stop if the node is "isolated". It would generate an error in the browser console and break.
|
861 |
if (node.parent === null && node.prev === null) {
|
862 |
return;
|
@@ -864,7 +862,6 @@
|
|
864 |
|
865 |
var subject = node.value.trim();
|
866 |
|
867 |
-
|
868 |
if (!subject.isValidUrl()) {
|
869 |
if (!subject.match(SHORTCODE_REGEXP)) {
|
870 |
return;
|
@@ -877,14 +874,13 @@
|
|
877 |
}
|
878 |
}
|
879 |
|
880 |
-
|
881 |
subject = node.value.stripShortcode($data.EMBEDPRESS_SHORTCODE).trim();
|
882 |
|
883 |
// These patterns need to have groups for the pre and post texts
|
884 |
// @TODO: maybe remove this list of URLs? Let the server side code decide what URL should be parsed
|
885 |
var patterns = self.getProvidersURLPatterns();
|
886 |
|
887 |
-
(function tryToMatchContentAgainstUrlPatternWithIndex(urlPatternIndex) {
|
888 |
if (urlPatternIndex < patterns.length) {
|
889 |
var urlPattern = patterns[urlPatternIndex];
|
890 |
var urlPatternRegex = new RegExp(urlPattern);
|
@@ -898,22 +894,22 @@
|
|
898 |
|
899 |
var wrapper = self.addURLsPlaceholder(node, url, editorInstance);
|
900 |
|
901 |
-
setTimeout(function() {
|
902 |
var doc = editorInstance.getDoc();
|
903 |
|
904 |
if (doc === null) {
|
905 |
return;
|
906 |
}
|
907 |
|
908 |
-
var previewWrapper = $(doc.querySelector('#'+ wrapper.attributes.map['id']));
|
909 |
var previewWrapperParent = $(previewWrapper.parent());
|
910 |
|
911 |
-
if (previewWrapperParent && previewWrapperParent.prop('tagName') && previewWrapperParent.prop('tagName').toUpperCase() ===
|
912 |
previewWrapperParent.replaceWith(previewWrapper);
|
913 |
}
|
914 |
|
915 |
var previewWrapperOlderSibling = previewWrapper.prev();
|
916 |
-
if (previewWrapperOlderSibling && previewWrapperOlderSibling.prop('tagName') && previewWrapperOlderSibling.prop('tagName').toUpperCase() ===
|
917 |
previewWrapperOlderSibling.remove();
|
918 |
} else {
|
919 |
if (typeof previewWrapperOlderSibling.html() !== 'undefined') {
|
@@ -926,7 +922,7 @@
|
|
926 |
}
|
927 |
|
928 |
var previewWrapperYoungerSibling = previewWrapper.next();
|
929 |
-
if (previewWrapperYoungerSibling && previewWrapperYoungerSibling.length && previewWrapperYoungerSibling.prop('tagName').toUpperCase() ===
|
930 |
if (!previewWrapperYoungerSibling.next().length && !previewWrapperYoungerSibling.html().replace(/\ \;/i, '').length) {
|
931 |
previewWrapperYoungerSibling.remove();
|
932 |
$('<p> </p>').insertAfter(previewWrapper);
|
@@ -935,7 +931,7 @@
|
|
935 |
$('<p> </p>').insertAfter(previewWrapper);
|
936 |
}
|
937 |
|
938 |
-
setTimeout(function() {
|
939 |
editorInstance.selection.select(editorInstance.getBody(), true);
|
940 |
editorInstance.selection.collapse(false);
|
941 |
}, 50);
|
@@ -950,29 +946,29 @@
|
|
950 |
});
|
951 |
|
952 |
// Add the filter that will convert the preview box/embed code back to the raw url
|
953 |
-
editorInstance.serializer.addNodeFilter('div', function addNodeFilterIntoSerializer(nodes, arg) {
|
954 |
-
self.each(nodes, function eachNodeInSerializer(node) {
|
955 |
// Stop if the node is "isolated". It would generate an error in the browser console and break.
|
956 |
if (node.parent === null && node.prev === null) {
|
957 |
return;
|
958 |
}
|
959 |
|
960 |
-
var nodeClasses = (node.attributes.map.class ||
|
961 |
-
var wrapperFactoryClasses = [
|
962 |
|
963 |
-
var isWrapped = nodeClasses.filter(function(n) {
|
964 |
return wrapperFactoryClasses.indexOf(n) != -1;
|
965 |
}).length > 0;
|
966 |
|
967 |
if (isWrapped) {
|
968 |
-
var factoryAttributes = [
|
969 |
var customAttributes = {};
|
970 |
-
var dataPrefix =
|
971 |
for (var attr in node.attributes.map) {
|
972 |
-
if (attr.toLowerCase() !==
|
973 |
if (factoryAttributes.indexOf(attr) < 0) {
|
974 |
// Remove the "data-" prefix for more readability
|
975 |
-
customAttributes[attr.replace(dataPrefix,
|
976 |
}
|
977 |
} else {
|
978 |
var customClasses = [];
|
@@ -984,7 +980,7 @@
|
|
984 |
}
|
985 |
|
986 |
if (!!customClasses.length) {
|
987 |
-
customAttributes.class = customClasses.join(
|
988 |
}
|
989 |
}
|
990 |
}
|
@@ -1002,10 +998,10 @@
|
|
1002 |
});
|
1003 |
});
|
1004 |
|
1005 |
-
editorInstance.serializer.addNodeFilter('p', function addNodeFilterIntoSerializer(nodes, arg) {
|
1006 |
-
self.each(nodes, function eachNodeInSerializer(node) {
|
1007 |
if (node.firstChild == node.lastChild) {
|
1008 |
-
if (node.firstChild &&
|
1009 |
node.remove();
|
1010 |
}
|
1011 |
}
|
@@ -1014,8 +1010,8 @@
|
|
1014 |
|
1015 |
//@todo:isthiseachreallynecessary?
|
1016 |
// Add event to reconfigure wrappers every time the content is loaded
|
1017 |
-
tinymce.each(tinymce.editors, function onEachEditor(editor) {
|
1018 |
-
self.addEvent('loadContent', editor, function onInitEditor(ed) {
|
1019 |
self.configureWrappers(editor);
|
1020 |
});
|
1021 |
});
|
@@ -1024,7 +1020,7 @@
|
|
1024 |
|
1025 |
// @todo: This is needed only for JCE, to fix the img placeholder. Try to find out a better approach to avoid the placeholder blink
|
1026 |
window.setTimeout(
|
1027 |
-
function afterTimeoutOnFindEditor() {
|
1028 |
/*
|
1029 |
* This is required because after load/refresh the page, the
|
1030 |
* onLoadContent is not being triggered automatically, so
|
@@ -1040,7 +1036,7 @@
|
|
1040 |
// Let's make sure the inner doc has been fully loaded first.
|
1041 |
var checkTimesLimit = 100;
|
1042 |
var checkIndex = 0;
|
1043 |
-
var statusCheckerInterval = setInterval(function() {
|
1044 |
if (checkIndex === checkTimesLimit) {
|
1045 |
clearInterval(statusCheckerInterval);
|
1046 |
alert('For some reason TinyMCE was not fully loaded yet. Please, refresh the page and try again.');
|
@@ -1056,7 +1052,7 @@
|
|
1056 |
}, 250);
|
1057 |
};
|
1058 |
|
1059 |
-
self.fixIframeSize = function(iframe) {
|
1060 |
var maxWidth = 480;
|
1061 |
if ($(iframe).width() > maxWidth && !$(iframe).data('size-fixed')) {
|
1062 |
var ratio = $(iframe).height() / $(iframe).width();
|
@@ -1067,7 +1063,7 @@
|
|
1067 |
|
1068 |
$(iframe).data('size-fixed', true);
|
1069 |
}
|
1070 |
-
}
|
1071 |
|
1072 |
/**
|
1073 |
* Function triggered on mouse enter the wrapper
|
@@ -1075,7 +1071,7 @@
|
|
1075 |
* @param object e The event
|
1076 |
* @return void
|
1077 |
*/
|
1078 |
-
self.onMouseEnter = function(e, editorInstance) {
|
1079 |
self.displayPreviewControllerPanel($(e.currentTarget), editorInstance);
|
1080 |
};
|
1081 |
|
@@ -1085,7 +1081,7 @@
|
|
1085 |
* @param object e The event
|
1086 |
* @return void
|
1087 |
*/
|
1088 |
-
self.onMouseOut = function(e) {
|
1089 |
// Check if the destiny is not a child element
|
1090 |
// Chrome
|
1091 |
if (self.isDefined(e.toElement)) {
|
@@ -1117,18 +1113,18 @@
|
|
1117 |
* @return void
|
1118 |
*/
|
1119 |
|
1120 |
-
self.onPaste = function(plugin, args) {
|
1121 |
var urlPatternRegex = new RegExp(/(https?):\/\/([w]{3}\.)?.+?(?:\s|$)/i);
|
1122 |
var urlPatternsList = self.getProvidersURLPatterns();
|
1123 |
|
1124 |
// Split the pasted content into separated lines.
|
1125 |
var contentLines = args.content.split(/\n/g) || [];
|
1126 |
-
contentLines = contentLines.map(function(line, itemIndex) {
|
1127 |
// Check if there's a url into `line`.
|
1128 |
if (line.match(urlPatternRegex)) {
|
1129 |
// Split the current line across its space-characters to isolate the url.
|
1130 |
let termsList = line.trim().split(/\s+/);
|
1131 |
-
termsList = termsList.map(function(term, termIndex) {
|
1132 |
// Check if the term into the current line is a url.
|
1133 |
var match = term.match(urlPatternRegex);
|
1134 |
if (match) {
|
@@ -1136,7 +1132,7 @@
|
|
1136 |
// Isolates that url from the rest of the content if the service is supported.
|
1137 |
var urlPattern = new RegExp(urlPatternsList[urlPatternIndex]);
|
1138 |
if (urlPattern.test(term)) {
|
1139 |
-
return '</p><p>'+ match[0] +'</p><p>';
|
1140 |
}
|
1141 |
}
|
1142 |
}
|
@@ -1156,7 +1152,7 @@
|
|
1156 |
var content = contentLines.join('');
|
1157 |
|
1158 |
if (content.replace(/<br>$/, '') !== args.content) {
|
1159 |
-
args.content = '<p>'+ args.content +'</p>';
|
1160 |
}
|
1161 |
};
|
1162 |
|
@@ -1169,22 +1165,22 @@
|
|
1169 |
* @param object e The event
|
1170 |
* @return void
|
1171 |
*/
|
1172 |
-
self.onNodeChange = function(e) {
|
1173 |
// Fix the clone parent on break lines issue
|
1174 |
// Check if a line break was added
|
1175 |
if (e.element.tagName === 'BR') {
|
1176 |
// Check one of the parent elements is a clonned embed wrapper
|
1177 |
if (e.parents.length > 0) {
|
1178 |
-
$.each(e.parents, function(index, parent) {
|
1179 |
if ($(parent).hasClass('embedpress_wrapper')) {
|
1180 |
// Remove the cloned wrapper and replace with a 'br' tag
|
1181 |
$(parent).replaceWith($('<br>'));
|
1182 |
}
|
1183 |
});
|
1184 |
}
|
1185 |
-
} else if (e.element.tagName ===
|
1186 |
if (e.parents.length > 0) {
|
1187 |
-
$.each(e.parents, function(index, parent) {
|
1188 |
parent = $(parent);
|
1189 |
if (parent.hasClass('embedpress_wrapper')) {
|
1190 |
var wrapper = $('.embedpress-wrapper', parent);
|
@@ -1197,14 +1193,14 @@
|
|
1197 |
}
|
1198 |
};
|
1199 |
|
1200 |
-
self.onKeyDown = function(e, editorInstance) {
|
1201 |
var node = editorInstance.selection.getNode();
|
1202 |
|
1203 |
if (e.keyCode == 8 || e.keyCode == 46) {
|
1204 |
if (node.nodeName.toLowerCase() === 'p') {
|
1205 |
var children = $(node).children();
|
1206 |
if (children.length > 0) {
|
1207 |
-
$.each(children, function() {
|
1208 |
// On delete, make sure to remove the wrapper and children, not only the wrapper
|
1209 |
if ($(this).hasClass('embedpress_wrapper') || $(this).hasClass('embedpress_ignore_mouseout')) {
|
1210 |
$(this).remove();
|
@@ -1245,9 +1241,9 @@
|
|
1245 |
}
|
1246 |
|
1247 |
return true;
|
1248 |
-
}
|
1249 |
|
1250 |
-
self.getWrapperFromChild = function(element) {
|
1251 |
// Is the wrapper
|
1252 |
if ($(element).hasClass('embedpress_wrapper')) {
|
1253 |
return element;
|
@@ -1262,12 +1258,12 @@
|
|
1262 |
return false;
|
1263 |
};
|
1264 |
|
1265 |
-
self.onUndo = function(e, editorInstance) {
|
1266 |
// Force re-render everything
|
1267 |
editorInstance.load();
|
1268 |
};
|
1269 |
|
1270 |
-
self.cancelEvent = function(e, editorInstance) {
|
1271 |
e.preventDefault();
|
1272 |
e.stopPropagation();
|
1273 |
editorInstance.dom.events.cancel();
|
@@ -1283,14 +1279,14 @@
|
|
1283 |
* @param Object e The event
|
1284 |
* @return void
|
1285 |
*/
|
1286 |
-
self.onClickEditButton = function(e, editorInstance) {
|
1287 |
// Prevent edition of the panel
|
1288 |
self.cancelEvent(e, editorInstance);
|
1289 |
|
1290 |
self.activeWrapperForModal = self.activeWrapper;
|
1291 |
|
1292 |
var $wrapper = self.activeWrapperForModal;
|
1293 |
-
var wrapperUid = $wrapper.prop('id').replace(
|
1294 |
|
1295 |
var customAttributes = {};
|
1296 |
|
@@ -1300,98 +1296,98 @@
|
|
1300 |
embedItem = null;
|
1301 |
}
|
1302 |
|
1303 |
-
$.each($embedInnerWrapper[0].attributes, function() {
|
1304 |
if (this.specified) {
|
1305 |
-
if (this.name !==
|
1306 |
-
customAttributes[this.name.replace('data-',
|
1307 |
}
|
1308 |
}
|
1309 |
});
|
1310 |
|
1311 |
-
var embedWidth = (((embedItem && embedItem.width()) || $embedInnerWrapper.data('width')) || $embedInnerWrapper.width()) ||
|
1312 |
-
var embedHeight = (((embedItem && embedItem.height()) || $embedInnerWrapper.data('height')) || $embedInnerWrapper.height()) ||
|
1313 |
|
1314 |
embedItem = $embedInnerWrapper = null;
|
1315 |
|
1316 |
$('<div class="loader-indicator"><i class="embedpress-icon-reload"></i></div>').appendTo($wrapper);
|
1317 |
|
1318 |
-
setTimeout(function() {
|
1319 |
$.ajax({
|
1320 |
-
type:
|
1321 |
-
url: self.params.baseUrl +
|
1322 |
data: {
|
1323 |
-
action:
|
1324 |
url: self.decodeEmbedURLSpecialChars($wrapper.data('url'), false)
|
1325 |
},
|
1326 |
-
beforeSend: function(request, requestSettings) {
|
1327 |
$('.loader-indicator', $wrapper).addClass('is-loading');
|
1328 |
},
|
1329 |
-
success: function(response) {
|
1330 |
if (!response) {
|
1331 |
bootbox.alert('Unable to get a valid response from the server.');
|
1332 |
return;
|
1333 |
}
|
1334 |
if (response.canBeResponsive) {
|
1335 |
var embedShouldBeResponsive = true;
|
1336 |
-
if (
|
1337 |
embedShouldBeResponsive = false;
|
1338 |
-
} else if (
|
1339 |
embedShouldBeResponsive = false;
|
1340 |
}
|
1341 |
}
|
1342 |
|
1343 |
bootbox.dialog({
|
1344 |
-
className:
|
1345 |
-
title:
|
1346 |
-
message: '<form id="form-'+ wrapperUid +'" embedpress>'+
|
1347 |
-
|
1348 |
-
|
1349 |
-
|
1350 |
-
|
1351 |
-
|
1352 |
-
|
1353 |
-
|
1354 |
-
|
1355 |
-
|
1356 |
-
|
1357 |
-
|
1358 |
-
|
1359 |
-
|
1360 |
-
|
1361 |
-
|
1362 |
-
|
1363 |
-
|
1364 |
-
|
1365 |
-
|
1366 |
-
|
1367 |
-
|
1368 |
-
|
1369 |
-
|
1370 |
-
|
1371 |
-
|
1372 |
-
|
1373 |
-
|
1374 |
-
|
1375 |
-
|
1376 |
-
|
1377 |
-
|
1378 |
-
|
1379 |
-
|
1380 |
-
|
1381 |
-
|
1382 |
buttons: {
|
1383 |
danger: {
|
1384 |
-
label:
|
1385 |
-
className:
|
1386 |
-
callback: function() {
|
1387 |
// do nothing
|
1388 |
self.activeWrapperForModal = null;
|
1389 |
}
|
1390 |
},
|
1391 |
success: {
|
1392 |
-
label:
|
1393 |
-
className:
|
1394 |
-
callback: function() {
|
1395 |
var $wrapper = self.activeWrapperForModal;
|
1396 |
|
1397 |
// Select the current wrapper as a base for the new element
|
@@ -1402,31 +1398,31 @@
|
|
1402 |
$wrapper.remove();
|
1403 |
|
1404 |
if (response.canBeResponsive) {
|
1405 |
-
if ($('#form-'+ wrapperUid +' input[name="input-responsive-'+ wrapperUid +'"]:checked').val().isFalse()) {
|
1406 |
-
var embedCustomWidth = $('#input-width-'+ wrapperUid).val();
|
1407 |
if (parseInt(embedCustomWidth) > 0) {
|
1408 |
customAttributes['width'] = embedCustomWidth;
|
1409 |
}
|
1410 |
|
1411 |
-
var embedCustomHeight = $('#input-height-'+ wrapperUid).val();
|
1412 |
if (parseInt(embedCustomHeight) > 0) {
|
1413 |
customAttributes['height'] = embedCustomHeight;
|
1414 |
}
|
1415 |
|
1416 |
-
customAttributes['responsive'] =
|
1417 |
} else {
|
1418 |
delete customAttributes['width'];
|
1419 |
delete customAttributes['height'];
|
1420 |
|
1421 |
-
customAttributes['responsive'] =
|
1422 |
}
|
1423 |
} else {
|
1424 |
-
var embedCustomWidth = $('#input-width-'+ wrapperUid).val();
|
1425 |
if (parseInt(embedCustomWidth) > 0) {
|
1426 |
customAttributes['width'] = embedCustomWidth;
|
1427 |
}
|
1428 |
|
1429 |
-
var embedCustomHeight = $('#input-height-'+ wrapperUid).val();
|
1430 |
if (parseInt(embedCustomHeight) > 0) {
|
1431 |
customAttributes['height'] = embedCustomHeight;
|
1432 |
}
|
@@ -1439,7 +1435,7 @@
|
|
1439 |
}
|
1440 |
}
|
1441 |
|
1442 |
-
var shortcode = '['+ $data.EMBEDPRESS_SHORTCODE + (customAttributesList.length > 0 ?
|
1443 |
// We do not directly replace the node because it was causing a bug on a second edit attempt
|
1444 |
editorInstance.execCommand('mceInsertContent', false, shortcode);
|
1445 |
|
@@ -1449,21 +1445,21 @@
|
|
1449 |
}
|
1450 |
});
|
1451 |
|
1452 |
-
$('form[embedpress]').on('change', 'input[type="radio"]', function(e) {
|
1453 |
var self = $(this);
|
1454 |
var form = self.parents('form[embedpress]');
|
1455 |
|
1456 |
$('input[type="integer"]', form).prop('disabled', self.val().isTrue());
|
1457 |
});
|
1458 |
},
|
1459 |
-
complete: function(request, textStatus) {
|
1460 |
$('.loader-indicator', $wrapper).removeClass('is-loading');
|
1461 |
|
1462 |
-
setTimeout(function() {
|
1463 |
$('.loader-indicator', $wrapper).remove();
|
1464 |
}, 350);
|
1465 |
},
|
1466 |
-
dataType:
|
1467 |
async: true
|
1468 |
});
|
1469 |
}, 200);
|
@@ -1478,7 +1474,7 @@
|
|
1478 |
* @param Object e The event
|
1479 |
* @return void
|
1480 |
*/
|
1481 |
-
self.onClickRemoveButton = function(e, editorInstance) {
|
1482 |
// Prevent edition of the panel
|
1483 |
self.cancelEvent(e, editorInstance);
|
1484 |
|
@@ -1490,22 +1486,22 @@
|
|
1490 |
return false;
|
1491 |
};
|
1492 |
|
1493 |
-
self.recursivelyAddClass = function(element, className) {
|
1494 |
-
$(element).children().each(function(index, child) {
|
1495 |
$(child).addClass(className);
|
1496 |
|
1497 |
var grandChild = $(child).children();
|
1498 |
if (grandChild.length > 0) {
|
1499 |
-
self.recursivelyAddClass(child, className)
|
1500 |
}
|
1501 |
});
|
1502 |
};
|
1503 |
|
1504 |
-
self.setInterval = function(callback, time, timeout) {
|
1505 |
-
var elapsed
|
1506 |
var iteraction = 0;
|
1507 |
|
1508 |
-
var interval = window.setInterval(function() {
|
1509 |
elapsed += time;
|
1510 |
iteraction++;
|
1511 |
|
@@ -1519,7 +1515,7 @@
|
|
1519 |
return interval;
|
1520 |
};
|
1521 |
|
1522 |
-
self.stopInterval = function(interval) {
|
1523 |
window.clearInterval(interval);
|
1524 |
interval = null;
|
1525 |
};
|
@@ -1528,9 +1524,9 @@
|
|
1528 |
* Configure unconfigured embed wrappers, adding events and css
|
1529 |
* @return void
|
1530 |
*/
|
1531 |
-
self.configureWrappers = function(editorInstance) {
|
1532 |
window.setTimeout(
|
1533 |
-
function configureWrappersTimeOut() {
|
1534 |
var doc = editorInstance.getDoc(),
|
1535 |
$wrapper = null;
|
1536 |
|
@@ -1543,17 +1539,17 @@
|
|
1543 |
// Check if the wrapper wasn't already configured
|
1544 |
if ($wrapper.data('configured') != true) {
|
1545 |
// A timeout was set to avoid block the content loading
|
1546 |
-
window.setTimeout(function() {
|
1547 |
// @todo: Check if we need a limit of levels to avoid use too much resources
|
1548 |
self.recursivelyAddClass($wrapper, 'embedpress_ignore_mouseout');
|
1549 |
}, 500);
|
1550 |
|
1551 |
// Fix the wrapper size. Wait until find the child iframe. L
|
1552 |
-
var interval = self.setInterval(function(iteraction) {
|
1553 |
var $childIframes = $wrapper.find('iframe');
|
1554 |
|
1555 |
if ($childIframes.length > 0) {
|
1556 |
-
$.each($childIframes, function(index, iframe) {
|
1557 |
// Facebook has more than one iframe, we need to ignore the Cross Domain Iframes
|
1558 |
if ($(iframe).attr('id') !== 'fb_xdm_frame_https'
|
1559 |
&& $(iframe).attr('id') !== 'fb_xdm_frame_http'
|
@@ -1579,7 +1575,7 @@
|
|
1579 |
*
|
1580 |
* @return void
|
1581 |
*/
|
1582 |
-
self.hidePreviewControllerPanel = function() {
|
1583 |
if (self.controllerPanelIsActive()) {
|
1584 |
$(self.activeControllerPanel).addClass('hidden');
|
1585 |
self.activeControllerPanel = null;
|
@@ -1593,7 +1589,7 @@
|
|
1593 |
* @param String id The element id
|
1594 |
* @return Element The found element or null, wrapped by jQuery
|
1595 |
*/
|
1596 |
-
self.getElementInContentById = function(id, editorInstance) {
|
1597 |
var doc = editorInstance.getDoc();
|
1598 |
|
1599 |
if (doc === null) {
|
@@ -1609,7 +1605,7 @@
|
|
1609 |
* @param element $wrapper The wrapper which will be activate
|
1610 |
* @return void
|
1611 |
*/
|
1612 |
-
self.displayPreviewControllerPanel = function($wrapper, editorInstance) {
|
1613 |
if (self.controllerPanelIsActive() && $wrapper !== self.activeWrapper) {
|
1614 |
self.hidePreviewControllerPanel();
|
1615 |
}
|
@@ -1622,11 +1618,11 @@
|
|
1622 |
var $editButton = self.getElementInContentById('embedpress_button_edit_' + uid, editorInstance);
|
1623 |
var $removeButton = self.getElementInContentById('embedpress_button_remove_' + uid, editorInstance);
|
1624 |
|
1625 |
-
self.addEvent('mousedown', $editButton, function(e) {
|
1626 |
self.onClickEditButton(e, editorInstance);
|
1627 |
});
|
1628 |
|
1629 |
-
self.addEvent('mousedown', $removeButton, function(e) {
|
1630 |
self.onClickRemoveButton(e, editorInstance);
|
1631 |
});
|
1632 |
|
5 |
* @license GPLv2 or later
|
6 |
* @since 1.0
|
7 |
*/
|
8 |
+
(function ($, String, $data, undefined) {
|
9 |
+
'use strict';
|
10 |
|
11 |
+
$(window.document).ready(function () {
|
12 |
+
String.prototype.capitalizeFirstLetter = function () {
|
13 |
return this.charAt(0).toUpperCase() + this.slice(1);
|
14 |
+
};
|
15 |
|
16 |
+
String.prototype.isValidUrl = function () {
|
17 |
var rule = /^(https?|embedpresss?):\/\//i;
|
18 |
|
19 |
return rule.test(this.toString());
|
20 |
+
};
|
21 |
|
22 |
+
String.prototype.hasShortcode = function (shortcode) {
|
23 |
+
var shortcodeRule = new RegExp('\\[' + shortcode + '(?:\\]|.+?\\])', 'ig');
|
24 |
return !!this.toString().match(shortcodeRule);
|
25 |
+
};
|
26 |
|
27 |
+
String.prototype.stripShortcode = function (shortcode) {
|
28 |
+
var stripRule = new RegExp('(\\[' + shortcode + '(?:\\]|.+?\\])|\\[\\/' + shortcode + '\\])', 'ig');
|
29 |
+
return this.toString().replace(stripRule, '');
|
30 |
+
};
|
31 |
|
32 |
+
String.prototype.setShortcodeAttribute = function (attr, value, shortcode, replaceInsteadOfMerge) {
|
33 |
+
replaceInsteadOfMerge = typeof replaceInsteadOfMerge === 'undefined' ? false : replaceInsteadOfMerge;
|
34 |
var subject = this.toString();
|
35 |
|
36 |
if (subject.hasShortcode(shortcode)) {
|
40 |
if (replaceInsteadOfMerge) {
|
41 |
attributes[attr] = value;
|
42 |
} else {
|
43 |
+
attributes[attr] += ' ' + value;
|
44 |
}
|
45 |
} else {
|
46 |
attributes[attr] = value;
|
52 |
parsedAttributes.push(attr + '="' + attributes[attr] + '"');
|
53 |
}
|
54 |
|
55 |
+
subject = '[' + shortcode + ' ' + parsedAttributes.join(' ') + ']' + subject.stripShortcode(shortcode) + '[/' + shortcode + ']';
|
56 |
} else {
|
57 |
subject = '[' + shortcode + ']' + subject.stripShortcode(shortcode) + '[/' + shortcode + ']';
|
58 |
}
|
61 |
} else {
|
62 |
return subject;
|
63 |
}
|
64 |
+
};
|
65 |
|
66 |
+
String.prototype.getShortcodeAttributes = function (shortcode) {
|
67 |
var subject = this.toString();
|
68 |
if (subject.hasShortcode(shortcode)) {
|
69 |
var attributes = {};
|
76 |
var attrValue;
|
77 |
if (match[2] === undefined) {
|
78 |
// Prevent `class` property being empty an treated as a boolean param
|
79 |
+
if (attrName.toLowerCase() !== 'class') {
|
80 |
if (attrName.indexOf('!') === 0) {
|
81 |
+
attrName = attrName.replace('!', '');
|
82 |
+
attrValue = 'false';
|
83 |
} else {
|
84 |
+
attrValue = 'true';
|
85 |
}
|
86 |
|
87 |
attributes[attrName] = attrValue;
|
89 |
} else {
|
90 |
attrValue = match[2];
|
91 |
if (attrValue.isBoolean()) {
|
92 |
+
attrValue = attrValue.isFalse() ? 'false' : 'true';
|
93 |
}
|
94 |
|
95 |
attributes[attrName] = attrValue;
|
103 |
} else {
|
104 |
return {};
|
105 |
}
|
106 |
+
};
|
107 |
|
108 |
+
String.prototype.isBoolean = function () {
|
109 |
var subject = this.toString().trim().toLowerCase();
|
110 |
|
111 |
return subject.isTrue(false) || subject.isFalse();
|
112 |
};
|
113 |
|
114 |
+
String.prototype.isTrue = function (defaultValue) {
|
115 |
var subject = this.toString().trim().toLowerCase();
|
116 |
defaultValue = typeof defaultValue === undefined ? true : defaultValue;
|
117 |
|
118 |
switch (subject) {
|
119 |
+
case '':
|
120 |
+
defaultValue += '';
|
121 |
return !defaultValue.isFalse();
|
122 |
+
case '1':
|
123 |
+
case 'true':
|
124 |
+
case 'on':
|
125 |
+
case 'yes':
|
126 |
+
case 'y':
|
127 |
return true;
|
128 |
default:
|
129 |
return false;
|
130 |
}
|
131 |
};
|
132 |
|
133 |
+
String.prototype.isFalse = function () {
|
134 |
var subject = this.toString().trim().toLowerCase();
|
135 |
|
136 |
switch (subject) {
|
137 |
+
case '0':
|
138 |
+
case 'false':
|
139 |
+
case 'off':
|
140 |
+
case 'no':
|
141 |
+
case 'n':
|
142 |
+
case 'nil':
|
143 |
+
case 'null':
|
144 |
return true;
|
145 |
default:
|
146 |
return false;
|
147 |
}
|
148 |
};
|
149 |
|
150 |
+
var SHORTCODE_REGEXP = new RegExp('\\[\/?' + $data.EMBEDPRESS_SHORTCODE + '\\]', 'gi');
|
151 |
|
152 |
+
var EmbedPress = function () {
|
153 |
var self = this;
|
154 |
|
155 |
+
var PLG_SYSTEM_ASSETS_CSS_PATH = $data.EMBEDPRESS_URL_ASSETS + 'css';
|
156 |
var PLG_CONTENT_ASSETS_CSS_PATH = PLG_SYSTEM_ASSETS_CSS_PATH;
|
157 |
|
158 |
/**
|
161 |
* @type Object
|
162 |
*/
|
163 |
self.params = {
|
164 |
+
baseUrl: '',
|
165 |
versionUID: '0'
|
166 |
};
|
167 |
|
208 |
$(self.onReady);
|
209 |
};
|
210 |
|
211 |
+
self.addEvent = function (event, element, callback) {
|
212 |
if (typeof element.on !== 'undefined') {
|
213 |
element.on(event, callback);
|
214 |
} else {
|
218 |
}
|
219 |
};
|
220 |
|
221 |
+
self.isEmpty = function (list) {
|
222 |
return list.length === 0;
|
223 |
};
|
224 |
|
225 |
+
self.isDefined = function (attribute) {
|
226 |
return (typeof attribute !== 'undefined') && (attribute !== null);
|
227 |
+
};
|
228 |
|
229 |
+
self.makeId = function () {
|
230 |
+
var text = '';
|
231 |
+
var possible = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
232 |
|
233 |
+
for (var i = 0; i < 5; i++)
|
234 |
text += possible.charAt(Math.floor(Math.random() * possible.length));
|
235 |
|
236 |
return text;
|
237 |
};
|
238 |
|
239 |
+
self.loadAsyncDynamicJsCodeFromElement = function (subject, wrapper, editorInstance) {
|
|
|
240 |
subject = $(subject);
|
241 |
+
if (subject.prop('tagName').toLowerCase() === 'script') {
|
242 |
var scriptSrc = subject.attr('src') || null;
|
243 |
if (!scriptSrc) {
|
244 |
self.addScriptDeclaration(wrapper, subject.html(), editorInstance);
|
248 |
} else {
|
249 |
var innerScriptsList = $('script', subject);
|
250 |
if (innerScriptsList.length > 0) {
|
251 |
+
$.each(innerScriptsList, function (innerScriptIndex, innerScript) {
|
252 |
self.loadAsyncDynamicJsCodeFromElement(innerScript, wrapper, editorInstance);
|
253 |
});
|
254 |
}
|
255 |
}
|
256 |
+
};
|
257 |
|
258 |
/**
|
259 |
* Method executed on the document ready event
|
260 |
*
|
261 |
* @return void
|
262 |
*/
|
263 |
+
self.onReady = function () {
|
264 |
+
var findEditors = function () {
|
265 |
// Wait until the editor is available
|
266 |
var interval = window.setInterval(
|
267 |
+
function () {
|
268 |
var editorsFound = self.getEditors();
|
269 |
if (editorsFound.length) {
|
270 |
self.loadedEditors = editorsFound;
|
288 |
|
289 |
// Add support for the Beaver Builder.
|
290 |
if (typeof FLLightbox !== 'undefined') {
|
291 |
+
$.each(FLLightbox._instances, function (index) {
|
292 |
+
FLLightbox._instances[index].on('open', function () {
|
293 |
+
setTimeout(function () {
|
294 |
findEditors();
|
295 |
}, 500);
|
296 |
});
|
297 |
|
298 |
+
FLLightbox._instances[index].on('didHideLightbox', function () {
|
299 |
+
setTimeout(function () {
|
300 |
findEditors();
|
301 |
}, 500);
|
302 |
});
|
308 |
* Detects if tinymce object is available
|
309 |
* @return Boolean True, if available
|
310 |
*/
|
311 |
+
self.tinymceIsAvailable = function () {
|
312 |
+
return typeof window.tinymce === 'object' || typeof window.tinyMCE === 'object';
|
313 |
+
};
|
314 |
|
315 |
/**
|
316 |
* Returns true if the controller panel is active
|
317 |
* @return Boolean True, if the controller panel is active
|
318 |
*/
|
319 |
+
self.controllerPanelIsActive = function () {
|
320 |
return typeof self.activeControllerPanel !== 'undefined' && self.activeControllerPanel !== null;
|
321 |
};
|
322 |
|
324 |
* Returns the editor
|
325 |
* @return Object The editor
|
326 |
*/
|
327 |
+
self.getEditors = function () {
|
328 |
if (!window.tinymce || !window.tinymce.editors || window.tinymce.editors.length === 0) {
|
329 |
return [];
|
330 |
}
|
340 |
* @param function onsuccess The callback called on success
|
341 |
* @return void
|
342 |
*/
|
343 |
+
self.getParsedContent = function (content, onsuccess) {
|
344 |
// Get the parsed content
|
345 |
$.ajax({
|
346 |
type: 'POST',
|
347 |
+
url: self.params.baseUrl + 'wp-admin/admin-ajax.php',
|
348 |
data: {
|
349 |
+
action: 'embedpress_do_ajax_request',
|
350 |
subject: content
|
351 |
},
|
352 |
success: onsuccess,
|
355 |
});
|
356 |
};
|
357 |
|
358 |
+
self.addStylesheet = function (url, editorInstance) {
|
359 |
var head = editorInstance.getDoc().getElementsByTagName('head')[0];
|
360 |
|
361 |
var $style = $('<link rel="stylesheet" type="text/css" href="' + url + '">');
|
362 |
$style.appendTo(head);
|
363 |
+
};
|
364 |
|
365 |
+
self.convertURLSchemeToPattern = function (scheme) {
|
366 |
var prefix = '(.*)((?:http|embedpress)s?:\\/\\/(?:www\\.)?',
|
367 |
suffix = '[\\/]?)(.*)',
|
368 |
pattern;
|
374 |
return prefix + scheme + suffix;
|
375 |
};
|
376 |
|
377 |
+
self.getProvidersURLPatterns = function () {
|
378 |
// @todo: Add option to disable/enable the providers
|
379 |
var patterns = [];
|
380 |
|
381 |
+
self.each($data.urlSchemes, function convertEachURLSchemesToPattern (scheme) {
|
382 |
patterns.push(self.convertURLSchemeToPattern(scheme));
|
383 |
});
|
384 |
|
385 |
return patterns;
|
386 |
};
|
387 |
|
388 |
+
self.addScript = function (source, callback, wrapper, editorInstance) {
|
389 |
var doc = editorInstance.getDoc();
|
390 |
|
391 |
if (typeof wrapper === 'undefined' || !wrapper) {
|
404 |
wrapper.append($script);
|
405 |
};
|
406 |
|
407 |
+
self.addScriptDeclaration = function (wrapper, declaration, editorInstance) {
|
408 |
var doc = editorInstance.getDoc(),
|
409 |
$script = $(doc.createElement('script'));
|
410 |
|
413 |
$script.text(declaration);
|
414 |
};
|
415 |
|
416 |
+
self.addURLsPlaceholder = function (node, url, editorInstance) {
|
417 |
var uid = self.makeId();
|
418 |
|
419 |
+
var wrapperClasses = ['embedpress_wrapper', 'embedpress_placeholder', 'wpview', 'wpview-wrap'];
|
420 |
|
421 |
var shortcodeAttributes = node.value.getShortcodeAttributes($data.EMBEDPRESS_SHORTCODE);
|
422 |
var customAttributes = shortcodeAttributes;
|
423 |
|
424 |
+
var customClasses = '';
|
425 |
if (!!Object.keys(shortcodeAttributes).length) {
|
426 |
+
var specialAttributes = ['class', 'href', 'data-href'];
|
427 |
// Iterates over each attribute of shortcodeAttributes to add the prefix "data-" if missing
|
428 |
+
var dataPrefix = 'data-';
|
429 |
var prefixedShortcodeAttributes = [];
|
430 |
for (var attr in shortcodeAttributes) {
|
431 |
if (specialAttributes.indexOf(attr) === -1) {
|
435 |
prefixedShortcodeAttributes[attr] = shortcodeAttributes[attr];
|
436 |
}
|
437 |
} else {
|
438 |
+
attr = attr.replace(dataPrefix, '');
|
439 |
+
if (attr === 'class') {
|
440 |
wrapperClasses.push(shortcodeAttributes[attr]);
|
441 |
}
|
442 |
}
|
446 |
prefixedShortcodeAttributes = dataPrefix = null;
|
447 |
}
|
448 |
|
449 |
+
if (('data-width' in shortcodeAttributes || 'data-height' in shortcodeAttributes) && 'data-responsive' in shortcodeAttributes) {
|
450 |
+
shortcodeAttributes['data-responsive'] = 'false';
|
451 |
}
|
452 |
|
453 |
var wrapper = new self.Node('div', 1);
|
454 |
var wrapperSettings = {
|
455 |
+
'class': Array.from(new Set(wrapperClasses)).join(' '),
|
456 |
+
'data-url': url,
|
457 |
+
'data-uid': uid,
|
458 |
+
'id': 'embedpress_wrapper_' + uid,
|
459 |
'data-loading-text': 'Loading your embed...'
|
460 |
};
|
461 |
|
462 |
wrapperSettings = $.extend({}, wrapperSettings, shortcodeAttributes);
|
463 |
|
464 |
if (wrapperSettings.class.indexOf('is-loading') === -1) {
|
465 |
+
wrapperSettings.class += ' is-loading';
|
466 |
}
|
467 |
|
468 |
wrapper.attr(wrapperSettings);
|
469 |
|
470 |
var panel = new self.Node('div', 1);
|
471 |
panel.attr({
|
472 |
+
'id': 'embedpress_controller_panel_' + uid,
|
473 |
'class': 'embedpress_controller_panel embedpress_ignore_mouseout hidden'
|
474 |
});
|
475 |
wrapper.append(panel);
|
476 |
|
477 |
+
function createGhostNode (htmlTag, content) {
|
478 |
+
htmlTag = htmlTag || 'span';
|
479 |
+
content = content || ' ';
|
480 |
|
481 |
var ghostNode = new self.Node(htmlTag, 1);
|
482 |
ghostNode.attr({
|
483 |
+
'class': 'hidden'
|
484 |
});
|
485 |
|
486 |
var ghostText = new self.Node('#text', 3);
|
492 |
|
493 |
var editButton = new self.Node('div', 1);
|
494 |
editButton.attr({
|
495 |
+
'id': 'embedpress_button_edit_' + uid,
|
496 |
'class': 'embedpress_ignore_mouseout embedpress_controller_button'
|
497 |
});
|
498 |
var editButtonIcon = new self.Node('div', 1);
|
505 |
|
506 |
var removeButton = new self.Node('div', 1);
|
507 |
removeButton.attr({
|
508 |
+
'id': 'embedpress_button_remove_' + uid,
|
509 |
'class': 'embedpress_ignore_mouseout embedpress_controller_button'
|
510 |
});
|
511 |
var removeButtonIcon = new self.Node('div', 1);
|
521 |
node.replace(wrapper);
|
522 |
|
523 |
// Trigger the timeout which will load the content
|
524 |
+
window.setTimeout(function () {
|
525 |
self.parseContentAsync(uid, url, customAttributes, editorInstance);
|
526 |
}, 200);
|
527 |
|
528 |
return wrapper;
|
529 |
};
|
530 |
|
531 |
+
self.parseContentAsync = function (uid, url, customAttributes, editorInstance) {
|
532 |
+
customAttributes = typeof customAttributes === 'undefined' ? {} : customAttributes;
|
533 |
|
534 |
url = self.decodeEmbedURLSpecialChars(url, true, customAttributes);
|
535 |
var rawUrl = url.stripShortcode($data.EMBEDPRESS_SHORTCODE);
|
536 |
|
537 |
$(self).triggerHandler('EmbedPress.beforeEmbed', {
|
538 |
+
'url': rawUrl,
|
539 |
'meta': {
|
540 |
'attributes': customAttributes || {}
|
541 |
}
|
542 |
});
|
543 |
|
544 |
// Get the parsed embed code from the EmbedPress plugin
|
545 |
+
self.getParsedContent(url, function getParsedContentCallback (result) {
|
546 |
+
var embeddedContent = (typeof result.data === 'object' ? result.data.embed : result.data).stripShortcode($data.EMBEDPRESS_SHORTCODE);
|
547 |
|
548 |
var $wrapper = $(self.getElementInContentById('embedpress_wrapper_' + uid, editorInstance));
|
549 |
var wrapperParent = $($wrapper.parent());
|
550 |
|
551 |
// Check if $wrapper was rendered inside a <p> element.
|
552 |
+
if (wrapperParent.prop('tagName') && wrapperParent.prop('tagName').toUpperCase() === 'P') {
|
553 |
wrapperParent.replaceWith($wrapper);
|
554 |
// Check if there's at least one "space" after $wrapper.
|
555 |
var nextSibling = $($wrapper).next();
|
556 |
+
if (!nextSibling.length || nextSibling.prop('tagName').toUpperCase() !== 'P') {
|
557 |
//$('<p> </p>').insertAfter($wrapper);
|
558 |
}
|
559 |
nextSibling = null;
|
563 |
// Check if the url could not be embedded for some reason.
|
564 |
if (rawUrl === embeddedContent) {
|
565 |
// Echoes the raw url
|
566 |
+
$wrapper.replaceWith($('<p>' + rawUrl + '</p>'));
|
567 |
return;
|
568 |
}
|
569 |
|
573 |
var $content;
|
574 |
try {
|
575 |
$content = $(embeddedContent);
|
576 |
+
} catch (err) {
|
577 |
// Fallback to a div, if the result is not a html markup, e.g. a url
|
578 |
$content = $('<div>');
|
579 |
$content.html(embeddedContent);
|
587 |
|
588 |
$wrapper.append(contentWrapper);
|
589 |
|
590 |
+
setTimeout(function () {
|
591 |
+
editorInstance.undoManager.transact(function () {
|
592 |
var iframe = editorInstance.getDoc().createElement('iframe');
|
593 |
iframe.src = tinymce.Env.ie ? 'javascript:""' : '';
|
594 |
iframe.frameBorder = '0';
|
595 |
iframe.allowTransparency = 'true';
|
596 |
iframe.scrolling = 'no';
|
597 |
+
iframe.class = 'wpview-sandbox';
|
598 |
iframe.style.width = '100%';
|
599 |
|
600 |
contentWrapper.append(iframe);
|
607 |
|
608 |
var iframeDoc = iframeWindow.document;
|
609 |
|
610 |
+
$(iframe).load(function () {
|
611 |
var maximumChecksAllowed = 8;
|
612 |
var checkIndex = 0;
|
613 |
|
614 |
+
var checkerInterval = setInterval(function () {
|
615 |
if (checkIndex === maximumChecksAllowed) {
|
616 |
clearInterval(checkerInterval);
|
617 |
|
618 |
+
setTimeout(function () {
|
619 |
$wrapper.css('width', iframe.width);
|
620 |
$wrapper.css('height', iframe.height);
|
621 |
}, 100);
|
622 |
} else {
|
623 |
if (customAttributes.height) {
|
624 |
iframe.height = customAttributes.height;
|
625 |
+
iframe.style.height = customAttributes.height + 'px';
|
626 |
} else {
|
627 |
iframe.height = $('body', iframeDoc).height();
|
628 |
}
|
629 |
|
630 |
if (customAttributes.width) {
|
631 |
iframe.width = customAttributes.width;
|
632 |
+
iframe.style.width = customAttributes.width + 'px';
|
633 |
} else {
|
634 |
iframe.width = $('body', iframeDoc).width();
|
635 |
}
|
641 |
|
642 |
iframeDoc.open();
|
643 |
iframeDoc.write(
|
644 |
+
'<!DOCTYPE html>' +
|
645 |
+
'<html>' +
|
646 |
+
'<head>' +
|
647 |
+
'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />' +
|
648 |
+
'<style>' +
|
649 |
+
'html {' +
|
650 |
+
'background: transparent;' +
|
651 |
+
'padding: 0;' +
|
652 |
+
'margin: 0;' +
|
653 |
+
'}' +
|
654 |
+
'body#wpview-iframe-sandbox {' +
|
655 |
+
'background: transparent;' +
|
656 |
+
'padding: 1px 0 !important;' +
|
657 |
+
'margin: -1px 0 0 !important;' +
|
658 |
+
'}' +
|
659 |
+
'body#wpview-iframe-sandbox:before,' +
|
660 |
+
'body#wpview-iframe-sandbox:after {' +
|
661 |
+
'display: none;' +
|
662 |
+
'content: "";' +
|
663 |
+
'}' +
|
664 |
+
'</style>' +
|
665 |
+
'</head>' +
|
666 |
+
'<body id="wpview-iframe-sandbox" class="' + editorInstance.getBody().className + '" style="display: inline-block;">' +
|
667 |
+
$content.html() +
|
668 |
+
'</body>' +
|
669 |
'</html>'
|
670 |
);
|
671 |
iframeDoc.close();
|
679 |
|
680 |
$wrapper.append($('<span class="wpview-end"></span>'));
|
681 |
|
682 |
+
if (result && result.data && typeof result.data === 'object') {
|
683 |
result.data.width = $($wrapper).width();
|
684 |
result.data.height = $($wrapper).height();
|
685 |
}
|
686 |
|
687 |
$(self).triggerHandler('EmbedPress.afterEmbed', {
|
688 |
+
'meta': result.data,
|
689 |
+
'url': rawUrl,
|
690 |
'wrapper': $wrapper
|
691 |
});
|
692 |
});
|
693 |
};
|
694 |
|
695 |
+
self.appendElementsIntoWrapper = function (elementsList, wrapper, editorInstance) {
|
696 |
if (elementsList.length > 0) {
|
697 |
+
$.each(elementsList, function appendElementIntoWrapper (elementIndex, element) {
|
698 |
// Check if the element is a script and do not add it now (if added here it wouldn't be executed)
|
699 |
if (element.tagName.toLowerCase() !== 'script') {
|
700 |
wrapper.append($(element));
|
701 |
|
702 |
if (element.tagName.toLowerCase() === 'iframe') {
|
703 |
+
$(element).ready(function () {
|
704 |
+
window.setTimeout(function () {
|
705 |
+
$.each(editorInstance.dom.select('div.embedpress_wrapper iframe'), function (elementIndex, iframe) {
|
706 |
self.fixIframeSize(iframe);
|
707 |
});
|
708 |
}, 300);
|
709 |
});
|
710 |
+
} else if (element.tagName.toLowerCase() === 'div') {
|
711 |
if ($('img', $(element)).length || $('blockquote', wrapper).length) {
|
712 |
// This ensures that the embed wrapper have the same width as its content
|
713 |
$($(element).parents('.embedpress_wrapper').get(0)).addClass('dynamic-width');
|
724 |
return wrapper;
|
725 |
};
|
726 |
|
727 |
+
self.encodeEmbedURLSpecialChars = function (content) {
|
728 |
if (content.match(SHORTCODE_REGEXP)) {
|
729 |
var subject = content.replace(SHORTCODE_REGEXP, '');
|
730 |
|
745 |
return content;
|
746 |
};
|
747 |
|
748 |
+
self.decodeEmbedURLSpecialChars = function (content, applyShortcode, attributes) {
|
749 |
var encodingRegexpRule = /embedpress(s?):\/\//;
|
750 |
+
applyShortcode = (typeof applyShortcode === 'undefined') ? true : applyShortcode;
|
751 |
+
attributes = (typeof attributes === 'undefined') ? {} : attributes;
|
752 |
|
753 |
var isEncoded = content.match(encodingRegexpRule);
|
754 |
|
756 |
content = content.replace(/embedpress(s?):\/\//, 'http$1://');
|
757 |
content = content.replace('::__at__::', '@').trim();
|
758 |
|
759 |
+
if ('class' in attributes) {
|
760 |
var classesList = attributes.class.split(/\s/g);
|
761 |
var shouldRemoveDynamicWidthClass = false;
|
762 |
for (var classIndex = 0; classIndex < classesList.length; classIndex++) {
|
763 |
+
if (classesList[classIndex] === 'dynamic-width') {
|
764 |
shouldRemoveDynamicWidthClass = classIndex;
|
765 |
break;
|
766 |
}
|
773 |
delete attributes.class;
|
774 |
}
|
775 |
|
776 |
+
attributes.class = classesList.join(' ');
|
777 |
}
|
778 |
|
779 |
shouldRemoveDynamicWidthClass = classesList = classIndex = null;
|
788 |
attrValue = attributes[attrName];
|
789 |
|
790 |
// Prevent `class` property being empty an treated as a boolean param
|
791 |
+
if (attrName.toLowerCase() === 'class' && !attrValue.length) {
|
792 |
+
|
793 |
+
} else {
|
|
|
794 |
if (attrValue.isBoolean()) {
|
795 |
+
shortcode += ' ';
|
796 |
if (attrValue.isFalse()) {
|
797 |
+
shortcode += '!';
|
798 |
}
|
799 |
|
800 |
+
shortcode += attrName;
|
801 |
} else {
|
802 |
+
shortcode += ' ' + attrName + '="' + attrValue + '"';
|
803 |
}
|
804 |
}
|
805 |
}
|
818 |
*
|
819 |
* @return void
|
820 |
*/
|
821 |
+
self.onFindEditor = function (editorInstance) {
|
822 |
+
self.each = tinymce.each;
|
823 |
self.extend = tinymce.extend;
|
824 |
+
self.JSON = tinymce.util.JSON;
|
825 |
+
self.Node = tinymce.html.Node;
|
826 |
|
827 |
+
function onFindEditorCallback () {
|
828 |
$(window.document.getElementsByTagName('head')[0]).append($('<link rel="stylesheet" type="text/css" href="' + (PLG_SYSTEM_ASSETS_CSS_PATH + '/vendor/bootstrap/bootstrap.min.css?v=' + self.params.versionUID) + '">'));
|
829 |
|
830 |
self.addStylesheet(PLG_SYSTEM_ASSETS_CSS_PATH + '/font.css?v=' + self.params.versionUID, editorInstance, editorInstance);
|
831 |
self.addStylesheet(PLG_SYSTEM_ASSETS_CSS_PATH + '/preview.css?v=' + self.params.versionUID, editorInstance, editorInstance);
|
832 |
self.addStylesheet(PLG_CONTENT_ASSETS_CSS_PATH + '/embedpress.css?v=' + self.params.versionUID, editorInstance, editorInstance);
|
833 |
self.addEvent('nodechange', editorInstance, self.onNodeChange);
|
834 |
+
self.addEvent('keydown', editorInstance, function (e) {
|
835 |
self.onKeyDown(e, editorInstance);
|
836 |
});
|
837 |
|
838 |
+
var onUndoCallback = function (e) {
|
839 |
self.onUndo(e, editorInstance);
|
840 |
};
|
841 |
|
843 |
self.addEvent('undo', editorInstance.undoManager, onUndoCallback); // JCE
|
844 |
|
845 |
var doc = editorInstance.getDoc();
|
846 |
+
$(doc).on('mouseenter', '.embedpress_wrapper', function (e) {
|
847 |
self.onMouseEnter(e, editorInstance);
|
848 |
});
|
849 |
$(doc).on('mouseout', '.embedpress_wrapper', self.onMouseOut);
|
850 |
+
$(doc).on('mousedown', '.embedpress_wrapper > .embedpress_controller_panel', function (e) {
|
851 |
+
self.cancelEvent(e, editorInstance);
|
852 |
});
|
853 |
doc = null;
|
854 |
|
855 |
// Add the node filter that will convert the url into the preview box for the embed code
|
856 |
+
editorInstance.parser.addNodeFilter('#text', function addNodeFilterIntoParser (nodes, arg) {
|
857 |
+
self.each(nodes, function eachNodeInParser (node) {
|
858 |
// Stop if the node is "isolated". It would generate an error in the browser console and break.
|
859 |
if (node.parent === null && node.prev === null) {
|
860 |
return;
|
862 |
|
863 |
var subject = node.value.trim();
|
864 |
|
|
|
865 |
if (!subject.isValidUrl()) {
|
866 |
if (!subject.match(SHORTCODE_REGEXP)) {
|
867 |
return;
|
874 |
}
|
875 |
}
|
876 |
|
|
|
877 |
subject = node.value.stripShortcode($data.EMBEDPRESS_SHORTCODE).trim();
|
878 |
|
879 |
// These patterns need to have groups for the pre and post texts
|
880 |
// @TODO: maybe remove this list of URLs? Let the server side code decide what URL should be parsed
|
881 |
var patterns = self.getProvidersURLPatterns();
|
882 |
|
883 |
+
(function tryToMatchContentAgainstUrlPatternWithIndex (urlPatternIndex) {
|
884 |
if (urlPatternIndex < patterns.length) {
|
885 |
var urlPattern = patterns[urlPatternIndex];
|
886 |
var urlPatternRegex = new RegExp(urlPattern);
|
894 |
|
895 |
var wrapper = self.addURLsPlaceholder(node, url, editorInstance);
|
896 |
|
897 |
+
setTimeout(function () {
|
898 |
var doc = editorInstance.getDoc();
|
899 |
|
900 |
if (doc === null) {
|
901 |
return;
|
902 |
}
|
903 |
|
904 |
+
var previewWrapper = $(doc.querySelector('#' + wrapper.attributes.map['id']));
|
905 |
var previewWrapperParent = $(previewWrapper.parent());
|
906 |
|
907 |
+
if (previewWrapperParent && previewWrapperParent.prop('tagName') && previewWrapperParent.prop('tagName').toUpperCase() === 'P') {
|
908 |
previewWrapperParent.replaceWith(previewWrapper);
|
909 |
}
|
910 |
|
911 |
var previewWrapperOlderSibling = previewWrapper.prev();
|
912 |
+
if (previewWrapperOlderSibling && previewWrapperOlderSibling.prop('tagName') && previewWrapperOlderSibling.prop('tagName').toUpperCase() === 'P' && !previewWrapperOlderSibling.html().replace(/\ \;/i, '').length) {
|
913 |
previewWrapperOlderSibling.remove();
|
914 |
} else {
|
915 |
if (typeof previewWrapperOlderSibling.html() !== 'undefined') {
|
922 |
}
|
923 |
|
924 |
var previewWrapperYoungerSibling = previewWrapper.next();
|
925 |
+
if (previewWrapperYoungerSibling && previewWrapperYoungerSibling.length && previewWrapperYoungerSibling.prop('tagName').toUpperCase() === 'P') {
|
926 |
if (!previewWrapperYoungerSibling.next().length && !previewWrapperYoungerSibling.html().replace(/\ \;/i, '').length) {
|
927 |
previewWrapperYoungerSibling.remove();
|
928 |
$('<p> </p>').insertAfter(previewWrapper);
|
931 |
$('<p> </p>').insertAfter(previewWrapper);
|
932 |
}
|
933 |
|
934 |
+
setTimeout(function () {
|
935 |
editorInstance.selection.select(editorInstance.getBody(), true);
|
936 |
editorInstance.selection.collapse(false);
|
937 |
}, 50);
|
946 |
});
|
947 |
|
948 |
// Add the filter that will convert the preview box/embed code back to the raw url
|
949 |
+
editorInstance.serializer.addNodeFilter('div', function addNodeFilterIntoSerializer (nodes, arg) {
|
950 |
+
self.each(nodes, function eachNodeInSerializer (node) {
|
951 |
// Stop if the node is "isolated". It would generate an error in the browser console and break.
|
952 |
if (node.parent === null && node.prev === null) {
|
953 |
return;
|
954 |
}
|
955 |
|
956 |
+
var nodeClasses = (node.attributes.map.class || '').split(' ');
|
957 |
+
var wrapperFactoryClasses = ['embedpress_wrapper', 'embedpress_placeholder', 'wpview', 'wpview-wrap'];
|
958 |
|
959 |
+
var isWrapped = nodeClasses.filter(function (n) {
|
960 |
return wrapperFactoryClasses.indexOf(n) != -1;
|
961 |
}).length > 0;
|
962 |
|
963 |
if (isWrapped) {
|
964 |
+
var factoryAttributes = ['id', 'style', 'data-loading-text', 'data-uid', 'data-url'];
|
965 |
var customAttributes = {};
|
966 |
+
var dataPrefix = 'data-';
|
967 |
for (var attr in node.attributes.map) {
|
968 |
+
if (attr.toLowerCase() !== 'class') {
|
969 |
if (factoryAttributes.indexOf(attr) < 0) {
|
970 |
// Remove the "data-" prefix for more readability
|
971 |
+
customAttributes[attr.replace(dataPrefix, '')] = node.attributes.map[attr];
|
972 |
}
|
973 |
} else {
|
974 |
var customClasses = [];
|
980 |
}
|
981 |
|
982 |
if (!!customClasses.length) {
|
983 |
+
customAttributes.class = customClasses.join(' ');
|
984 |
}
|
985 |
}
|
986 |
}
|
998 |
});
|
999 |
});
|
1000 |
|
1001 |
+
editorInstance.serializer.addNodeFilter('p', function addNodeFilterIntoSerializer (nodes, arg) {
|
1002 |
+
self.each(nodes, function eachNodeInSerializer (node) {
|
1003 |
if (node.firstChild == node.lastChild) {
|
1004 |
+
if (node.firstChild && 'value' in node.firstChild && (node.firstChild.value === ' ' || !node.firstChild.value.trim().length)) {
|
1005 |
node.remove();
|
1006 |
}
|
1007 |
}
|
1010 |
|
1011 |
//@todo:isthiseachreallynecessary?
|
1012 |
// Add event to reconfigure wrappers every time the content is loaded
|
1013 |
+
tinymce.each(tinymce.editors, function onEachEditor (editor) {
|
1014 |
+
self.addEvent('loadContent', editor, function onInitEditor (ed) {
|
1015 |
self.configureWrappers(editor);
|
1016 |
});
|
1017 |
});
|
1020 |
|
1021 |
// @todo: This is needed only for JCE, to fix the img placeholder. Try to find out a better approach to avoid the placeholder blink
|
1022 |
window.setTimeout(
|
1023 |
+
function afterTimeoutOnFindEditor () {
|
1024 |
/*
|
1025 |
* This is required because after load/refresh the page, the
|
1026 |
* onLoadContent is not being triggered automatically, so
|
1036 |
// Let's make sure the inner doc has been fully loaded first.
|
1037 |
var checkTimesLimit = 100;
|
1038 |
var checkIndex = 0;
|
1039 |
+
var statusCheckerInterval = setInterval(function () {
|
1040 |
if (checkIndex === checkTimesLimit) {
|
1041 |
clearInterval(statusCheckerInterval);
|
1042 |
alert('For some reason TinyMCE was not fully loaded yet. Please, refresh the page and try again.');
|
1052 |
}, 250);
|
1053 |
};
|
1054 |
|
1055 |
+
self.fixIframeSize = function (iframe) {
|
1056 |
var maxWidth = 480;
|
1057 |
if ($(iframe).width() > maxWidth && !$(iframe).data('size-fixed')) {
|
1058 |
var ratio = $(iframe).height() / $(iframe).width();
|
1063 |
|
1064 |
$(iframe).data('size-fixed', true);
|
1065 |
}
|
1066 |
+
};
|
1067 |
|
1068 |
/**
|
1069 |
* Function triggered on mouse enter the wrapper
|
1071 |
* @param object e The event
|
1072 |
* @return void
|
1073 |
*/
|
1074 |
+
self.onMouseEnter = function (e, editorInstance) {
|
1075 |
self.displayPreviewControllerPanel($(e.currentTarget), editorInstance);
|
1076 |
};
|
1077 |
|
1081 |
* @param object e The event
|
1082 |
* @return void
|
1083 |
*/
|
1084 |
+
self.onMouseOut = function (e) {
|
1085 |
// Check if the destiny is not a child element
|
1086 |
// Chrome
|
1087 |
if (self.isDefined(e.toElement)) {
|
1113 |
* @return void
|
1114 |
*/
|
1115 |
|
1116 |
+
self.onPaste = function (plugin, args) {
|
1117 |
var urlPatternRegex = new RegExp(/(https?):\/\/([w]{3}\.)?.+?(?:\s|$)/i);
|
1118 |
var urlPatternsList = self.getProvidersURLPatterns();
|
1119 |
|
1120 |
// Split the pasted content into separated lines.
|
1121 |
var contentLines = args.content.split(/\n/g) || [];
|
1122 |
+
contentLines = contentLines.map(function (line, itemIndex) {
|
1123 |
// Check if there's a url into `line`.
|
1124 |
if (line.match(urlPatternRegex)) {
|
1125 |
// Split the current line across its space-characters to isolate the url.
|
1126 |
let termsList = line.trim().split(/\s+/);
|
1127 |
+
termsList = termsList.map(function (term, termIndex) {
|
1128 |
// Check if the term into the current line is a url.
|
1129 |
var match = term.match(urlPatternRegex);
|
1130 |
if (match) {
|
1132 |
// Isolates that url from the rest of the content if the service is supported.
|
1133 |
var urlPattern = new RegExp(urlPatternsList[urlPatternIndex]);
|
1134 |
if (urlPattern.test(term)) {
|
1135 |
+
return '</p><p>' + match[0] + '</p><p>';
|
1136 |
}
|
1137 |
}
|
1138 |
}
|
1152 |
var content = contentLines.join('');
|
1153 |
|
1154 |
if (content.replace(/<br>$/, '') !== args.content) {
|
1155 |
+
args.content = '<p>' + args.content + '</p>';
|
1156 |
}
|
1157 |
};
|
1158 |
|
1165 |
* @param object e The event
|
1166 |
* @return void
|
1167 |
*/
|
1168 |
+
self.onNodeChange = function (e) {
|
1169 |
// Fix the clone parent on break lines issue
|
1170 |
// Check if a line break was added
|
1171 |
if (e.element.tagName === 'BR') {
|
1172 |
// Check one of the parent elements is a clonned embed wrapper
|
1173 |
if (e.parents.length > 0) {
|
1174 |
+
$.each(e.parents, function (index, parent) {
|
1175 |
if ($(parent).hasClass('embedpress_wrapper')) {
|
1176 |
// Remove the cloned wrapper and replace with a 'br' tag
|
1177 |
$(parent).replaceWith($('<br>'));
|
1178 |
}
|
1179 |
});
|
1180 |
}
|
1181 |
+
} else if (e.element.tagName === 'IFRAME') {
|
1182 |
if (e.parents.length > 0) {
|
1183 |
+
$.each(e.parents, function (index, parent) {
|
1184 |
parent = $(parent);
|
1185 |
if (parent.hasClass('embedpress_wrapper')) {
|
1186 |
var wrapper = $('.embedpress-wrapper', parent);
|
1193 |
}
|
1194 |
};
|
1195 |
|
1196 |
+
self.onKeyDown = function (e, editorInstance) {
|
1197 |
var node = editorInstance.selection.getNode();
|
1198 |
|
1199 |
if (e.keyCode == 8 || e.keyCode == 46) {
|
1200 |
if (node.nodeName.toLowerCase() === 'p') {
|
1201 |
var children = $(node).children();
|
1202 |
if (children.length > 0) {
|
1203 |
+
$.each(children, function () {
|
1204 |
// On delete, make sure to remove the wrapper and children, not only the wrapper
|
1205 |
if ($(this).hasClass('embedpress_wrapper') || $(this).hasClass('embedpress_ignore_mouseout')) {
|
1206 |
$(this).remove();
|
1241 |
}
|
1242 |
|
1243 |
return true;
|
1244 |
+
};
|
1245 |
|
1246 |
+
self.getWrapperFromChild = function (element) {
|
1247 |
// Is the wrapper
|
1248 |
if ($(element).hasClass('embedpress_wrapper')) {
|
1249 |
return element;
|
1258 |
return false;
|
1259 |
};
|
1260 |
|
1261 |
+
self.onUndo = function (e, editorInstance) {
|
1262 |
// Force re-render everything
|
1263 |
editorInstance.load();
|
1264 |
};
|
1265 |
|
1266 |
+
self.cancelEvent = function (e, editorInstance) {
|
1267 |
e.preventDefault();
|
1268 |
e.stopPropagation();
|
1269 |
editorInstance.dom.events.cancel();
|
1279 |
* @param Object e The event
|
1280 |
* @return void
|
1281 |
*/
|
1282 |
+
self.onClickEditButton = function (e, editorInstance) {
|
1283 |
// Prevent edition of the panel
|
1284 |
self.cancelEvent(e, editorInstance);
|
1285 |
|
1286 |
self.activeWrapperForModal = self.activeWrapper;
|
1287 |
|
1288 |
var $wrapper = self.activeWrapperForModal;
|
1289 |
+
var wrapperUid = $wrapper.prop('id').replace('embedpress_wrapper_', '');
|
1290 |
|
1291 |
var customAttributes = {};
|
1292 |
|
1296 |
embedItem = null;
|
1297 |
}
|
1298 |
|
1299 |
+
$.each($embedInnerWrapper[0].attributes, function () {
|
1300 |
if (this.specified) {
|
1301 |
+
if (this.name !== 'class') {
|
1302 |
+
customAttributes[this.name.replace('data-', '').toLowerCase()] = this.value;
|
1303 |
}
|
1304 |
}
|
1305 |
});
|
1306 |
|
1307 |
+
var embedWidth = (((embedItem && embedItem.width()) || $embedInnerWrapper.data('width')) || $embedInnerWrapper.width()) || '';
|
1308 |
+
var embedHeight = (((embedItem && embedItem.height()) || $embedInnerWrapper.data('height')) || $embedInnerWrapper.height()) || '';
|
1309 |
|
1310 |
embedItem = $embedInnerWrapper = null;
|
1311 |
|
1312 |
$('<div class="loader-indicator"><i class="embedpress-icon-reload"></i></div>').appendTo($wrapper);
|
1313 |
|
1314 |
+
setTimeout(function () {
|
1315 |
$.ajax({
|
1316 |
+
type: 'GET',
|
1317 |
+
url: self.params.baseUrl + 'wp-admin/admin-ajax.php',
|
1318 |
data: {
|
1319 |
+
action: 'embedpress_get_embed_url_info',
|
1320 |
url: self.decodeEmbedURLSpecialChars($wrapper.data('url'), false)
|
1321 |
},
|
1322 |
+
beforeSend: function (request, requestSettings) {
|
1323 |
$('.loader-indicator', $wrapper).addClass('is-loading');
|
1324 |
},
|
1325 |
+
success: function (response) {
|
1326 |
if (!response) {
|
1327 |
bootbox.alert('Unable to get a valid response from the server.');
|
1328 |
return;
|
1329 |
}
|
1330 |
if (response.canBeResponsive) {
|
1331 |
var embedShouldBeResponsive = true;
|
1332 |
+
if ('width' in customAttributes || 'height' in customAttributes) {
|
1333 |
embedShouldBeResponsive = false;
|
1334 |
+
} else if ('responsive' in customAttributes && customAttributes['responsive'].isFalse()) {
|
1335 |
embedShouldBeResponsive = false;
|
1336 |
}
|
1337 |
}
|
1338 |
|
1339 |
bootbox.dialog({
|
1340 |
+
className: 'embedpress-modal',
|
1341 |
+
title: 'Editing Embed properties',
|
1342 |
+
message: '<form id="form-' + wrapperUid + '" embedpress>' +
|
1343 |
+
'<div class="row">' +
|
1344 |
+
'<div class="col-md-12">' +
|
1345 |
+
'<div class="form-group">' +
|
1346 |
+
'<label for="input-url-' + wrapperUid + '">Url</label>' +
|
1347 |
+
'<input class="form-control" type="url" id="input-url-' + wrapperUid + '" value="' + self.decodeEmbedURLSpecialChars($wrapper.data('url'), false) + '">' +
|
1348 |
+
'</div>' +
|
1349 |
+
'</div>' +
|
1350 |
+
'</div>' +
|
1351 |
+
'<div class="row">' +
|
1352 |
+
(response.canBeResponsive ?
|
1353 |
+
'<div class="col-md-12">' +
|
1354 |
+
'<label>Responsive</label>' +
|
1355 |
+
'<div class="form-group">' +
|
1356 |
+
'<label class="radio-inline">' +
|
1357 |
+
'<input type="radio" name="input-responsive-' + wrapperUid + '" id="input-responsive-1-' + wrapperUid + '" value="1"' + (embedShouldBeResponsive ? ' checked="checked"' : '') + '> Yes' +
|
1358 |
+
'</label>' +
|
1359 |
+
'<label class="radio-inline">' +
|
1360 |
+
'<input type="radio" name="input-responsive-' + wrapperUid + '" id="input-responsive-0-' + wrapperUid + '" value="0"' + (!embedShouldBeResponsive ? ' checked="checked"' : '') + '> No' +
|
1361 |
+
'</label>' +
|
1362 |
+
'</div>' +
|
1363 |
+
'</div>' : '') +
|
1364 |
+
'<div class="col-md-6">' +
|
1365 |
+
'<div class="form-group">' +
|
1366 |
+
'<label for="input-width-' + wrapperUid + '">Width</label>' +
|
1367 |
+
'<input class="form-control" type="integer" id="input-width-' + wrapperUid + '" value="' + embedWidth + '"' + (embedShouldBeResponsive ? ' disabled' : '') + '>' +
|
1368 |
+
'</div>' +
|
1369 |
+
'</div>' +
|
1370 |
+
'<div class="col-md-6">' +
|
1371 |
+
'<div class="form-group">' +
|
1372 |
+
'<label for="input-height-' + wrapperUid + '">Height</label>' +
|
1373 |
+
'<input class="form-control" type="integer" id="input-height-' + wrapperUid + '" value="' + embedHeight + '"' + (embedShouldBeResponsive ? ' disabled' : '') + '>' +
|
1374 |
+
'</div>' +
|
1375 |
+
'</div>' +
|
1376 |
+
'</div>' +
|
1377 |
+
'</form>',
|
1378 |
buttons: {
|
1379 |
danger: {
|
1380 |
+
label: 'Cancel',
|
1381 |
+
className: 'btn-default',
|
1382 |
+
callback: function () {
|
1383 |
// do nothing
|
1384 |
self.activeWrapperForModal = null;
|
1385 |
}
|
1386 |
},
|
1387 |
success: {
|
1388 |
+
label: 'Save',
|
1389 |
+
className: 'btn-primary',
|
1390 |
+
callback: function () {
|
1391 |
var $wrapper = self.activeWrapperForModal;
|
1392 |
|
1393 |
// Select the current wrapper as a base for the new element
|
1398 |
$wrapper.remove();
|
1399 |
|
1400 |
if (response.canBeResponsive) {
|
1401 |
+
if ($('#form-' + wrapperUid + ' input[name="input-responsive-' + wrapperUid + '"]:checked').val().isFalse()) {
|
1402 |
+
var embedCustomWidth = $('#input-width-' + wrapperUid).val();
|
1403 |
if (parseInt(embedCustomWidth) > 0) {
|
1404 |
customAttributes['width'] = embedCustomWidth;
|
1405 |
}
|
1406 |
|
1407 |
+
var embedCustomHeight = $('#input-height-' + wrapperUid).val();
|
1408 |
if (parseInt(embedCustomHeight) > 0) {
|
1409 |
customAttributes['height'] = embedCustomHeight;
|
1410 |
}
|
1411 |
|
1412 |
+
customAttributes['responsive'] = 'false';
|
1413 |
} else {
|
1414 |
delete customAttributes['width'];
|
1415 |
delete customAttributes['height'];
|
1416 |
|
1417 |
+
customAttributes['responsive'] = 'true';
|
1418 |
}
|
1419 |
} else {
|
1420 |
+
var embedCustomWidth = $('#input-width-' + wrapperUid).val();
|
1421 |
if (parseInt(embedCustomWidth) > 0) {
|
1422 |
customAttributes['width'] = embedCustomWidth;
|
1423 |
}
|
1424 |
|
1425 |
+
var embedCustomHeight = $('#input-height-' + wrapperUid).val();
|
1426 |
if (parseInt(embedCustomHeight) > 0) {
|
1427 |
customAttributes['height'] = embedCustomHeight;
|
1428 |
}
|
1435 |
}
|
1436 |
}
|
1437 |
|
1438 |
+
var shortcode = '[' + $data.EMBEDPRESS_SHORTCODE + (customAttributesList.length > 0 ? ' ' + customAttributesList.join(' ') : '') + ']' + $('#input-url-' + wrapperUid).val() + '[/' + $data.EMBEDPRESS_SHORTCODE + ']';
|
1439 |
// We do not directly replace the node because it was causing a bug on a second edit attempt
|
1440 |
editorInstance.execCommand('mceInsertContent', false, shortcode);
|
1441 |
|
1445 |
}
|
1446 |
});
|
1447 |
|
1448 |
+
$('form[embedpress]').on('change', 'input[type="radio"]', function (e) {
|
1449 |
var self = $(this);
|
1450 |
var form = self.parents('form[embedpress]');
|
1451 |
|
1452 |
$('input[type="integer"]', form).prop('disabled', self.val().isTrue());
|
1453 |
});
|
1454 |
},
|
1455 |
+
complete: function (request, textStatus) {
|
1456 |
$('.loader-indicator', $wrapper).removeClass('is-loading');
|
1457 |
|
1458 |
+
setTimeout(function () {
|
1459 |
$('.loader-indicator', $wrapper).remove();
|
1460 |
}, 350);
|
1461 |
},
|
1462 |
+
dataType: 'json',
|
1463 |
async: true
|
1464 |
});
|
1465 |
}, 200);
|
1474 |
* @param Object e The event
|
1475 |
* @return void
|
1476 |
*/
|
1477 |
+
self.onClickRemoveButton = function (e, editorInstance) {
|
1478 |
// Prevent edition of the panel
|
1479 |
self.cancelEvent(e, editorInstance);
|
1480 |
|
1486 |
return false;
|
1487 |
};
|
1488 |
|
1489 |
+
self.recursivelyAddClass = function (element, className) {
|
1490 |
+
$(element).children().each(function (index, child) {
|
1491 |
$(child).addClass(className);
|
1492 |
|
1493 |
var grandChild = $(child).children();
|
1494 |
if (grandChild.length > 0) {
|
1495 |
+
self.recursivelyAddClass(child, className);
|
1496 |
}
|
1497 |
});
|
1498 |
};
|
1499 |
|
1500 |
+
self.setInterval = function (callback, time, timeout) {
|
1501 |
+
var elapsed = 0;
|
1502 |
var iteraction = 0;
|
1503 |
|
1504 |
+
var interval = window.setInterval(function () {
|
1505 |
elapsed += time;
|
1506 |
iteraction++;
|
1507 |
|
1515 |
return interval;
|
1516 |
};
|
1517 |
|
1518 |
+
self.stopInterval = function (interval) {
|
1519 |
window.clearInterval(interval);
|
1520 |
interval = null;
|
1521 |
};
|
1524 |
* Configure unconfigured embed wrappers, adding events and css
|
1525 |
* @return void
|
1526 |
*/
|
1527 |
+
self.configureWrappers = function (editorInstance) {
|
1528 |
window.setTimeout(
|
1529 |
+
function configureWrappersTimeOut () {
|
1530 |
var doc = editorInstance.getDoc(),
|
1531 |
$wrapper = null;
|
1532 |
|
1539 |
// Check if the wrapper wasn't already configured
|
1540 |
if ($wrapper.data('configured') != true) {
|
1541 |
// A timeout was set to avoid block the content loading
|
1542 |
+
window.setTimeout(function () {
|
1543 |
// @todo: Check if we need a limit of levels to avoid use too much resources
|
1544 |
self.recursivelyAddClass($wrapper, 'embedpress_ignore_mouseout');
|
1545 |
}, 500);
|
1546 |
|
1547 |
// Fix the wrapper size. Wait until find the child iframe. L
|
1548 |
+
var interval = self.setInterval(function (iteraction) {
|
1549 |
var $childIframes = $wrapper.find('iframe');
|
1550 |
|
1551 |
if ($childIframes.length > 0) {
|
1552 |
+
$.each($childIframes, function (index, iframe) {
|
1553 |
// Facebook has more than one iframe, we need to ignore the Cross Domain Iframes
|
1554 |
if ($(iframe).attr('id') !== 'fb_xdm_frame_https'
|
1555 |
&& $(iframe).attr('id') !== 'fb_xdm_frame_http'
|
1575 |
*
|
1576 |
* @return void
|
1577 |
*/
|
1578 |
+
self.hidePreviewControllerPanel = function () {
|
1579 |
if (self.controllerPanelIsActive()) {
|
1580 |
$(self.activeControllerPanel).addClass('hidden');
|
1581 |
self.activeControllerPanel = null;
|
1589 |
* @param String id The element id
|
1590 |
* @return Element The found element or null, wrapped by jQuery
|
1591 |
*/
|
1592 |
+
self.getElementInContentById = function (id, editorInstance) {
|
1593 |
var doc = editorInstance.getDoc();
|
1594 |
|
1595 |
if (doc === null) {
|
1605 |
* @param element $wrapper The wrapper which will be activate
|
1606 |
* @return void
|
1607 |
*/
|
1608 |
+
self.displayPreviewControllerPanel = function ($wrapper, editorInstance) {
|
1609 |
if (self.controllerPanelIsActive() && $wrapper !== self.activeWrapper) {
|
1610 |
self.hidePreviewControllerPanel();
|
1611 |
}
|
1618 |
var $editButton = self.getElementInContentById('embedpress_button_edit_' + uid, editorInstance);
|
1619 |
var $removeButton = self.getElementInContentById('embedpress_button_remove_' + uid, editorInstance);
|
1620 |
|
1621 |
+
self.addEvent('mousedown', $editButton, function (e) {
|
1622 |
self.onClickEditButton(e, editorInstance);
|
1623 |
});
|
1624 |
|
1625 |
+
self.addEvent('mousedown', $removeButton, function (e) {
|
1626 |
self.onClickRemoveButton(e, editorInstance);
|
1627 |
});
|
1628 |
|
assets/js/settings.js
CHANGED
@@ -5,10 +5,10 @@
|
|
5 |
* @license GPLv2 or later
|
6 |
* @since 1.7.0
|
7 |
*/
|
8 |
-
(function($) {
|
9 |
-
|
10 |
|
11 |
-
$(function() {
|
12 |
$('.color-field').wpColorPicker();
|
13 |
});
|
14 |
})(jQuery);
|
5 |
* @license GPLv2 or later
|
6 |
* @since 1.7.0
|
7 |
*/
|
8 |
+
(function ($) {
|
9 |
+
'use strict';
|
10 |
|
11 |
+
$(function () {
|
12 |
$('.color-field').wpColorPicker();
|
13 |
});
|
14 |
})(jQuery);
|
assets/js/vendor/bootstrap/bootstrap.js
CHANGED
@@ -9,14 +9,14 @@
|
|
9 |
* Config saved to config.json and https://gist.github.com/3388789be7b7c807ff47acdc21b4ef8f
|
10 |
*/
|
11 |
if (typeof jQuery === 'undefined') {
|
12 |
-
|
13 |
}
|
14 |
+function ($) {
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
}(jQuery);
|
21 |
|
22 |
/* ========================================================================
|
@@ -27,335 +27,331 @@ if (typeof jQuery === 'undefined') {
|
|
27 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
28 |
* ======================================================================== */
|
29 |
|
30 |
-
|
31 |
+function ($) {
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
|
|
|
|
56 |
|
57 |
-
|
|
|
58 |
|
59 |
-
|
60 |
-
|
|
|
|
|
|
|
61 |
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
show: true
|
66 |
-
}
|
67 |
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
|
72 |
-
|
73 |
-
var that = this
|
74 |
-
var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
|
75 |
|
76 |
-
|
77 |
|
78 |
-
|
79 |
|
80 |
-
|
|
|
|
|
81 |
|
82 |
-
|
83 |
-
|
84 |
-
this.$body.addClass('modal-open')
|
85 |
|
86 |
-
|
87 |
-
this.resize()
|
88 |
|
89 |
-
|
|
|
|
|
|
|
|
|
90 |
|
91 |
-
|
92 |
-
|
93 |
-
if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
|
94 |
-
})
|
95 |
-
})
|
96 |
|
97 |
-
|
98 |
-
|
|
|
99 |
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
|
104 |
-
|
105 |
-
.show()
|
106 |
-
.scrollTop(0)
|
107 |
|
108 |
-
|
|
|
|
|
109 |
|
110 |
-
|
111 |
-
that.$element[0].offsetWidth // force reflow
|
112 |
-
}
|
113 |
|
114 |
-
|
115 |
|
116 |
-
|
117 |
|
118 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
|
120 |
-
|
121 |
-
|
122 |
-
.one('bsTransitionEnd', function () {
|
123 |
-
that.$element.trigger('focus').trigger(e)
|
124 |
-
})
|
125 |
-
.emulateTransitionEnd(Modal.TRANSITION_DURATION) :
|
126 |
-
that.$element.trigger('focus').trigger(e)
|
127 |
-
})
|
128 |
-
}
|
129 |
|
130 |
-
|
131 |
-
if (e) e.preventDefault()
|
132 |
|
133 |
-
|
134 |
|
135 |
-
|
136 |
|
137 |
-
|
138 |
|
139 |
-
|
|
|
140 |
|
141 |
-
|
142 |
-
this.resize()
|
143 |
|
144 |
-
|
|
|
|
|
|
|
145 |
|
146 |
-
|
147 |
-
.removeClass('in')
|
148 |
-
.off('click.dismiss.bs.modal')
|
149 |
-
.off('mouseup.dismiss.bs.modal')
|
150 |
|
151 |
-
|
|
|
|
|
|
|
|
|
|
|
152 |
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
|
|
|
|
|
|
|
|
|
|
159 |
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
this.$element.trigger('focus')
|
168 |
}
|
169 |
-
|
170 |
-
}
|
171 |
-
|
172 |
-
Modal.prototype.escape = function () {
|
173 |
-
if (this.isShown && this.options.keyboard) {
|
174 |
-
this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
|
175 |
-
e.which == 27 && this.hide()
|
176 |
-
}, this))
|
177 |
-
} else if (!this.isShown) {
|
178 |
-
this.$element.off('keydown.dismiss.bs.modal')
|
179 |
-
}
|
180 |
-
}
|
181 |
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
}
|
188 |
-
}
|
189 |
-
|
190 |
-
Modal.prototype.hideModal = function () {
|
191 |
-
var that = this
|
192 |
-
this.$element.hide()
|
193 |
-
this.backdrop(function () {
|
194 |
-
that.$body.removeClass('modal-open')
|
195 |
-
that.resetAdjustments()
|
196 |
-
that.resetScrollbar()
|
197 |
-
that.$element.trigger('hidden.bs.modal')
|
198 |
-
})
|
199 |
-
}
|
200 |
-
|
201 |
-
Modal.prototype.removeBackdrop = function () {
|
202 |
-
this.$backdrop && this.$backdrop.remove()
|
203 |
-
this.$backdrop = null
|
204 |
-
}
|
205 |
-
|
206 |
-
Modal.prototype.backdrop = function (callback) {
|
207 |
-
var that = this
|
208 |
-
var animate = this.$element.hasClass('fade') ? 'fade' : ''
|
209 |
-
|
210 |
-
if (this.isShown && this.options.backdrop) {
|
211 |
-
var doAnimate = $.support.transition && animate
|
212 |
-
|
213 |
-
this.$backdrop = $(document.createElement('div'))
|
214 |
-
.addClass('modal-backdrop ' + animate)
|
215 |
-
.appendTo(this.$body)
|
216 |
-
|
217 |
-
this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
|
218 |
-
if (this.ignoreBackdropClick) {
|
219 |
-
this.ignoreBackdropClick = false
|
220 |
-
return
|
221 |
}
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
285 |
}
|
286 |
-
this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
|
287 |
-
this.scrollbarWidth = this.measureScrollbar()
|
288 |
-
}
|
289 |
-
|
290 |
-
Modal.prototype.setScrollbar = function () {
|
291 |
-
var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
|
292 |
-
this.originalBodyPad = document.body.style.paddingRight || ''
|
293 |
-
if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
|
294 |
-
}
|
295 |
-
|
296 |
-
Modal.prototype.resetScrollbar = function () {
|
297 |
-
this.$body.css('padding-right', this.originalBodyPad)
|
298 |
-
}
|
299 |
|
300 |
-
|
301 |
-
var scrollDiv = document.createElement('div')
|
302 |
-
scrollDiv.className = 'modal-scrollbar-measure'
|
303 |
-
this.$body.append(scrollDiv)
|
304 |
-
var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
|
305 |
-
this.$body[0].removeChild(scrollDiv)
|
306 |
-
return scrollbarWidth
|
307 |
-
}
|
308 |
|
|
|
|
|
309 |
|
310 |
-
|
311 |
-
|
312 |
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
|
318 |
|
319 |
-
|
320 |
-
|
321 |
-
else if (options.show) data.show(_relatedTarget)
|
322 |
-
})
|
323 |
-
}
|
324 |
|
325 |
-
|
|
|
|
|
|
|
|
|
326 |
|
327 |
-
|
328 |
-
$.fn.modal.Constructor = Modal
|
329 |
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
// MODAL DATA-API
|
341 |
-
// ==============
|
342 |
-
|
343 |
-
$(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
|
344 |
-
var $this = $(this)
|
345 |
-
var href = $this.attr('href')
|
346 |
-
var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
|
347 |
-
var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
|
348 |
-
|
349 |
-
if ($this.is('a')) e.preventDefault()
|
350 |
-
|
351 |
-
$target.one('show.bs.modal', function (showEvent) {
|
352 |
-
if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
|
353 |
-
$target.one('hidden.bs.modal', function () {
|
354 |
-
$this.is(':visible') && $this.trigger('focus')
|
355 |
-
})
|
356 |
-
})
|
357 |
-
Plugin.call($target, option, this)
|
358 |
-
})
|
359 |
|
360 |
}(jQuery);
|
361 |
|
@@ -367,54 +363,53 @@ if (typeof jQuery === 'undefined') {
|
|
367 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
368 |
* ======================================================================== */
|
369 |
|
370 |
-
|
371 |
+function ($) {
|
372 |
-
|
373 |
|
374 |
-
|
375 |
-
|
376 |
|
377 |
-
|
378 |
-
|
379 |
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
|
393 |
-
|
394 |
-
}
|
395 |
-
|
396 |
-
// http://blog.alexmaccaw.com/css-transitions
|
397 |
-
$.fn.emulateTransitionEnd = function (duration) {
|
398 |
-
var called = false
|
399 |
-
var $el = this
|
400 |
-
$(this).one('bsTransitionEnd', function () { called = true })
|
401 |
-
var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
|
402 |
-
setTimeout(callback, duration)
|
403 |
-
return this
|
404 |
-
}
|
405 |
-
|
406 |
-
$(function () {
|
407 |
-
$.support.transition = transitionEnd()
|
408 |
-
|
409 |
-
if (!$.support.transition) return
|
410 |
-
|
411 |
-
$.event.special.bsTransitionEnd = {
|
412 |
-
bindType: $.support.transition.end,
|
413 |
-
delegateType: $.support.transition.end,
|
414 |
-
handle: function (e) {
|
415 |
-
if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
|
416 |
-
}
|
417 |
}
|
418 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
419 |
|
420 |
}(jQuery);
|
9 |
* Config saved to config.json and https://gist.github.com/3388789be7b7c807ff47acdc21b4ef8f
|
10 |
*/
|
11 |
if (typeof jQuery === 'undefined') {
|
12 |
+
throw new Error('Bootstrap\'s JavaScript requires jQuery');
|
13 |
}
|
14 |
+function ($) {
|
15 |
+
'use strict';
|
16 |
+
var version = $.fn.jquery.split(' ')[0].split('.');
|
17 |
+
if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
|
18 |
+
throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4');
|
19 |
+
}
|
20 |
}(jQuery);
|
21 |
|
22 |
/* ========================================================================
|
27 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
28 |
* ======================================================================== */
|
29 |
|
|
|
30 |
+function ($) {
|
31 |
+
'use strict';
|
32 |
+
|
33 |
+
// MODAL CLASS DEFINITION
|
34 |
+
// ======================
|
35 |
+
|
36 |
+
var Modal = function (element, options) {
|
37 |
+
this.options = options;
|
38 |
+
this.$body = $(document.body);
|
39 |
+
this.$element = $(element);
|
40 |
+
this.$dialog = this.$element.find('.modal-dialog');
|
41 |
+
this.$backdrop = null;
|
42 |
+
this.isShown = null;
|
43 |
+
this.originalBodyPad = null;
|
44 |
+
this.scrollbarWidth = 0;
|
45 |
+
this.ignoreBackdropClick = false;
|
46 |
+
|
47 |
+
if (this.options.remote) {
|
48 |
+
this.$element
|
49 |
+
.find('.modal-content')
|
50 |
+
.load(this.options.remote, $.proxy(function () {
|
51 |
+
this.$element.trigger('loaded.bs.modal');
|
52 |
+
}, this));
|
53 |
+
}
|
54 |
+
};
|
55 |
+
|
56 |
+
Modal.VERSION = '3.3.7';
|
57 |
|
58 |
+
Modal.TRANSITION_DURATION = 300;
|
59 |
+
Modal.BACKDROP_TRANSITION_DURATION = 150;
|
60 |
|
61 |
+
Modal.DEFAULTS = {
|
62 |
+
backdrop: true,
|
63 |
+
keyboard: true,
|
64 |
+
show: true
|
65 |
+
};
|
66 |
|
67 |
+
Modal.prototype.toggle = function (_relatedTarget) {
|
68 |
+
return this.isShown ? this.hide() : this.show(_relatedTarget);
|
69 |
+
};
|
|
|
|
|
70 |
|
71 |
+
Modal.prototype.show = function (_relatedTarget) {
|
72 |
+
var that = this;
|
73 |
+
var e = $.Event('show.bs.modal', {relatedTarget: _relatedTarget});
|
74 |
|
75 |
+
this.$element.trigger(e);
|
|
|
|
|
76 |
|
77 |
+
if (this.isShown || e.isDefaultPrevented()) return;
|
78 |
|
79 |
+
this.isShown = true;
|
80 |
|
81 |
+
this.checkScrollbar();
|
82 |
+
this.setScrollbar();
|
83 |
+
this.$body.addClass('modal-open');
|
84 |
|
85 |
+
this.escape();
|
86 |
+
this.resize();
|
|
|
87 |
|
88 |
+
this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this));
|
|
|
89 |
|
90 |
+
this.$dialog.on('mousedown.dismiss.bs.modal', function () {
|
91 |
+
that.$element.one('mouseup.dismiss.bs.modal', function (e) {
|
92 |
+
if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true;
|
93 |
+
});
|
94 |
+
});
|
95 |
|
96 |
+
this.backdrop(function () {
|
97 |
+
var transition = $.support.transition && that.$element.hasClass('fade');
|
|
|
|
|
|
|
98 |
|
99 |
+
if (!that.$element.parent().length) {
|
100 |
+
that.$element.appendTo(that.$body); // don't move modals dom position
|
101 |
+
}
|
102 |
|
103 |
+
that.$element
|
104 |
+
.show()
|
105 |
+
.scrollTop(0);
|
106 |
|
107 |
+
that.adjustDialog();
|
|
|
|
|
108 |
|
109 |
+
if (transition) {
|
110 |
+
that.$element[0].offsetWidth; // force reflow
|
111 |
+
}
|
112 |
|
113 |
+
that.$element.addClass('in');
|
|
|
|
|
114 |
|
115 |
+
that.enforceFocus();
|
116 |
|
117 |
+
var e = $.Event('shown.bs.modal', {relatedTarget: _relatedTarget});
|
118 |
|
119 |
+
transition ?
|
120 |
+
that.$dialog // wait for modal to slide in
|
121 |
+
.one('bsTransitionEnd', function () {
|
122 |
+
that.$element.trigger('focus').trigger(e);
|
123 |
+
})
|
124 |
+
.emulateTransitionEnd(Modal.TRANSITION_DURATION) :
|
125 |
+
that.$element.trigger('focus').trigger(e);
|
126 |
+
});
|
127 |
+
};
|
128 |
|
129 |
+
Modal.prototype.hide = function (e) {
|
130 |
+
if (e) e.preventDefault();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
|
132 |
+
e = $.Event('hide.bs.modal');
|
|
|
133 |
|
134 |
+
this.$element.trigger(e);
|
135 |
|
136 |
+
if (!this.isShown || e.isDefaultPrevented()) return;
|
137 |
|
138 |
+
this.isShown = false;
|
139 |
|
140 |
+
this.escape();
|
141 |
+
this.resize();
|
142 |
|
143 |
+
$(document).off('focusin.bs.modal');
|
|
|
144 |
|
145 |
+
this.$element
|
146 |
+
.removeClass('in')
|
147 |
+
.off('click.dismiss.bs.modal')
|
148 |
+
.off('mouseup.dismiss.bs.modal');
|
149 |
|
150 |
+
this.$dialog.off('mousedown.dismiss.bs.modal');
|
|
|
|
|
|
|
151 |
|
152 |
+
$.support.transition && this.$element.hasClass('fade') ?
|
153 |
+
this.$element
|
154 |
+
.one('bsTransitionEnd', $.proxy(this.hideModal, this))
|
155 |
+
.emulateTransitionEnd(Modal.TRANSITION_DURATION) :
|
156 |
+
this.hideModal();
|
157 |
+
};
|
158 |
|
159 |
+
Modal.prototype.enforceFocus = function () {
|
160 |
+
$(document)
|
161 |
+
.off('focusin.bs.modal') // guard against infinite focus loop
|
162 |
+
.on('focusin.bs.modal', $.proxy(function (e) {
|
163 |
+
if (document !== e.target &&
|
164 |
+
this.$element[0] !== e.target &&
|
165 |
+
!this.$element.has(e.target).length) {
|
166 |
+
this.$element.trigger('focus');
|
167 |
+
}
|
168 |
+
}, this));
|
169 |
+
};
|
170 |
|
171 |
+
Modal.prototype.escape = function () {
|
172 |
+
if (this.isShown && this.options.keyboard) {
|
173 |
+
this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
|
174 |
+
e.which == 27 && this.hide();
|
175 |
+
}, this));
|
176 |
+
} else if (!this.isShown) {
|
177 |
+
this.$element.off('keydown.dismiss.bs.modal');
|
|
|
178 |
}
|
179 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
180 |
|
181 |
+
Modal.prototype.resize = function () {
|
182 |
+
if (this.isShown) {
|
183 |
+
$(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this));
|
184 |
+
} else {
|
185 |
+
$(window).off('resize.bs.modal');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
186 |
}
|
187 |
+
};
|
188 |
+
|
189 |
+
Modal.prototype.hideModal = function () {
|
190 |
+
var that = this;
|
191 |
+
this.$element.hide();
|
192 |
+
this.backdrop(function () {
|
193 |
+
that.$body.removeClass('modal-open');
|
194 |
+
that.resetAdjustments();
|
195 |
+
that.resetScrollbar();
|
196 |
+
that.$element.trigger('hidden.bs.modal');
|
197 |
+
});
|
198 |
+
};
|
199 |
+
|
200 |
+
Modal.prototype.removeBackdrop = function () {
|
201 |
+
this.$backdrop && this.$backdrop.remove();
|
202 |
+
this.$backdrop = null;
|
203 |
+
};
|
204 |
+
|
205 |
+
Modal.prototype.backdrop = function (callback) {
|
206 |
+
var that = this;
|
207 |
+
var animate = this.$element.hasClass('fade') ? 'fade' : '';
|
208 |
+
|
209 |
+
if (this.isShown && this.options.backdrop) {
|
210 |
+
var doAnimate = $.support.transition && animate;
|
211 |
+
|
212 |
+
this.$backdrop = $(document.createElement('div'))
|
213 |
+
.addClass('modal-backdrop ' + animate)
|
214 |
+
.appendTo(this.$body);
|
215 |
+
|
216 |
+
this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
|
217 |
+
if (this.ignoreBackdropClick) {
|
218 |
+
this.ignoreBackdropClick = false;
|
219 |
+
return;
|
220 |
+
}
|
221 |
+
if (e.target !== e.currentTarget) return;
|
222 |
+
this.options.backdrop == 'static'
|
223 |
+
? this.$element[0].focus()
|
224 |
+
: this.hide();
|
225 |
+
}, this));
|
226 |
+
|
227 |
+
if (doAnimate) this.$backdrop[0].offsetWidth; // force reflow
|
228 |
+
|
229 |
+
this.$backdrop.addClass('in');
|
230 |
+
|
231 |
+
if (!callback) return;
|
232 |
+
|
233 |
+
doAnimate ?
|
234 |
+
this.$backdrop
|
235 |
+
.one('bsTransitionEnd', callback)
|
236 |
+
.emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
|
237 |
+
callback();
|
238 |
+
|
239 |
+
} else if (!this.isShown && this.$backdrop) {
|
240 |
+
this.$backdrop.removeClass('in');
|
241 |
+
|
242 |
+
var callbackRemove = function () {
|
243 |
+
that.removeBackdrop();
|
244 |
+
callback && callback();
|
245 |
+
};
|
246 |
+
$.support.transition && this.$element.hasClass('fade') ?
|
247 |
+
this.$backdrop
|
248 |
+
.one('bsTransitionEnd', callbackRemove)
|
249 |
+
.emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
|
250 |
+
callbackRemove();
|
251 |
+
|
252 |
+
} else if (callback) {
|
253 |
+
callback();
|
254 |
+
}
|
255 |
+
};
|
256 |
+
|
257 |
+
// these following methods are used to handle overflowing modals
|
258 |
+
|
259 |
+
Modal.prototype.handleUpdate = function () {
|
260 |
+
this.adjustDialog();
|
261 |
+
};
|
262 |
+
|
263 |
+
Modal.prototype.adjustDialog = function () {
|
264 |
+
var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight;
|
265 |
+
|
266 |
+
this.$element.css({
|
267 |
+
paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
|
268 |
+
paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
|
269 |
+
});
|
270 |
+
};
|
271 |
+
|
272 |
+
Modal.prototype.resetAdjustments = function () {
|
273 |
+
this.$element.css({
|
274 |
+
paddingLeft: '',
|
275 |
+
paddingRight: ''
|
276 |
+
});
|
277 |
+
};
|
278 |
+
|
279 |
+
Modal.prototype.checkScrollbar = function () {
|
280 |
+
var fullWindowWidth = window.innerWidth;
|
281 |
+
if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
|
282 |
+
var documentElementRect = document.documentElement.getBoundingClientRect();
|
283 |
+
fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left);
|
284 |
+
}
|
285 |
+
this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth;
|
286 |
+
this.scrollbarWidth = this.measureScrollbar();
|
287 |
+
};
|
288 |
+
|
289 |
+
Modal.prototype.setScrollbar = function () {
|
290 |
+
var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10);
|
291 |
+
this.originalBodyPad = document.body.style.paddingRight || '';
|
292 |
+
if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth);
|
293 |
+
};
|
294 |
+
|
295 |
+
Modal.prototype.resetScrollbar = function () {
|
296 |
+
this.$body.css('padding-right', this.originalBodyPad);
|
297 |
+
};
|
298 |
+
|
299 |
+
Modal.prototype.measureScrollbar = function () { // thx walsh
|
300 |
+
var scrollDiv = document.createElement('div');
|
301 |
+
scrollDiv.className = 'modal-scrollbar-measure';
|
302 |
+
this.$body.append(scrollDiv);
|
303 |
+
var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
304 |
+
this.$body[0].removeChild(scrollDiv);
|
305 |
+
return scrollbarWidth;
|
306 |
+
};
|
307 |
+
|
308 |
+
// MODAL PLUGIN DEFINITION
|
309 |
+
// =======================
|
310 |
+
|
311 |
+
function Plugin (option, _relatedTarget) {
|
312 |
+
return this.each(function () {
|
313 |
+
var $this = $(this);
|
314 |
+
var data = $this.data('bs.modal');
|
315 |
+
var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option);
|
316 |
+
|
317 |
+
if (!data) $this.data('bs.modal', (data = new Modal(this, options)));
|
318 |
+
if (typeof option == 'string') data[option](_relatedTarget);
|
319 |
+
else if (options.show) data.show(_relatedTarget);
|
320 |
+
});
|
321 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
322 |
|
323 |
+
var old = $.fn.modal;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
324 |
|
325 |
+
$.fn.modal = Plugin;
|
326 |
+
$.fn.modal.Constructor = Modal;
|
327 |
|
328 |
+
// MODAL NO CONFLICT
|
329 |
+
// =================
|
330 |
|
331 |
+
$.fn.modal.noConflict = function () {
|
332 |
+
$.fn.modal = old;
|
333 |
+
return this;
|
334 |
+
};
|
|
|
335 |
|
336 |
+
// MODAL DATA-API
|
337 |
+
// ==============
|
|
|
|
|
|
|
338 |
|
339 |
+
$(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
|
340 |
+
var $this = $(this);
|
341 |
+
var href = $this.attr('href');
|
342 |
+
var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))); // strip for ie7
|
343 |
+
var option = $target.data('bs.modal') ? 'toggle' : $.extend({remote: !/#/.test(href) && href}, $target.data(), $this.data());
|
344 |
|
345 |
+
if ($this.is('a')) e.preventDefault();
|
|
|
346 |
|
347 |
+
$target.one('show.bs.modal', function (showEvent) {
|
348 |
+
if (showEvent.isDefaultPrevented()) return; // only register focus restorer if modal will actually get shown
|
349 |
+
$target.one('hidden.bs.modal', function () {
|
350 |
+
$this.is(':visible') && $this.trigger('focus');
|
351 |
+
});
|
352 |
+
});
|
353 |
+
Plugin.call($target, option, this);
|
354 |
+
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
355 |
|
356 |
}(jQuery);
|
357 |
|
363 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
364 |
* ======================================================================== */
|
365 |
|
|
|
366 |
+function ($) {
|
367 |
+
'use strict';
|
368 |
|
369 |
+
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
|
370 |
+
// ============================================================
|
371 |
|
372 |
+
function transitionEnd () {
|
373 |
+
var el = document.createElement('bootstrap');
|
374 |
|
375 |
+
var transEndEventNames = {
|
376 |
+
WebkitTransition: 'webkitTransitionEnd',
|
377 |
+
MozTransition: 'transitionend',
|
378 |
+
OTransition: 'oTransitionEnd otransitionend',
|
379 |
+
transition: 'transitionend'
|
380 |
+
};
|
381 |
|
382 |
+
for (var name in transEndEventNames) {
|
383 |
+
if (el.style[name] !== undefined) {
|
384 |
+
return {end: transEndEventNames[name]};
|
385 |
+
}
|
386 |
+
}
|
387 |
|
388 |
+
return false; // explicit for ie8 ( ._.)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
389 |
}
|
390 |
+
|
391 |
+
// http://blog.alexmaccaw.com/css-transitions
|
392 |
+
$.fn.emulateTransitionEnd = function (duration) {
|
393 |
+
var called = false;
|
394 |
+
var $el = this;
|
395 |
+
$(this).one('bsTransitionEnd', function () { called = true; });
|
396 |
+
var callback = function () { if (!called) $($el).trigger($.support.transition.end); };
|
397 |
+
setTimeout(callback, duration);
|
398 |
+
return this;
|
399 |
+
};
|
400 |
+
|
401 |
+
$(function () {
|
402 |
+
$.support.transition = transitionEnd();
|
403 |
+
|
404 |
+
if (!$.support.transition) return;
|
405 |
+
|
406 |
+
$.event.special.bsTransitionEnd = {
|
407 |
+
bindType: $.support.transition.end,
|
408 |
+
delegateType: $.support.transition.end,
|
409 |
+
handle: function (e) {
|
410 |
+
if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments);
|
411 |
+
}
|
412 |
+
};
|
413 |
+
});
|
414 |
|
415 |
}(jQuery);
|
assets/js/vendor/bootstrap/index.html
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
</html>
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
+
<head>
|
4 |
+
<title>403 Forbidden</title>
|
5 |
+
</head>
|
6 |
+
<body>
|
7 |
+
<p>Directory access is forbidden.</p>
|
8 |
+
</body>
|
9 |
</html>
|
assets/js/vendor/index.html
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
</html>
|
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
+
<head>
|
4 |
+
<title>403 Forbidden</title>
|
5 |
+
</head>
|
6 |
+
<body>
|
7 |
+
<p>Directory access is forbidden.</p>
|
8 |
+
</body>
|
9 |
</html>
|
autoloader.php
CHANGED
@@ -7,16 +7,16 @@
|
|
7 |
* @since 1.0.0
|
8 |
*/
|
9 |
|
10 |
-
use
|
11 |
|
12 |
defined('ABSPATH') or die("No direct script access allowed.");
|
13 |
|
14 |
-
$autoLoaderFullClassName = EMBEDPRESS_NAMESPACE .'\\'. EMBEDPRESS_AUTOLOADER_NAME;
|
15 |
-
if (!defined('EMBEDPRESS_IS_LOADED') || !class_exists($autoLoaderFullClassName)) {
|
16 |
define('EMBEDPRESS_IS_LOADED', true);
|
17 |
|
18 |
-
if (!class_exists($autoLoaderFullClassName)) {
|
19 |
-
require_once EMBEDPRESS_PATH_CORE . EMBEDPRESS_AUTOLOADER_NAME .'.php';
|
20 |
}
|
21 |
|
22 |
AutoLoader::register(str_replace('\\', "", EMBEDPRESS_NAMESPACE), EMBEDPRESS_PATH_CORE);
|
7 |
* @since 1.0.0
|
8 |
*/
|
9 |
|
10 |
+
use EmbedPress\AutoLoader;
|
11 |
|
12 |
defined('ABSPATH') or die("No direct script access allowed.");
|
13 |
|
14 |
+
$autoLoaderFullClassName = EMBEDPRESS_NAMESPACE . '\\' . EMBEDPRESS_AUTOLOADER_NAME;
|
15 |
+
if ( ! defined('EMBEDPRESS_IS_LOADED') || ! class_exists($autoLoaderFullClassName)) {
|
16 |
define('EMBEDPRESS_IS_LOADED', true);
|
17 |
|
18 |
+
if ( ! class_exists($autoLoaderFullClassName)) {
|
19 |
+
require_once EMBEDPRESS_PATH_CORE . EMBEDPRESS_AUTOLOADER_NAME . '.php';
|
20 |
}
|
21 |
|
22 |
AutoLoader::register(str_replace('\\', "", EMBEDPRESS_NAMESPACE), EMBEDPRESS_PATH_CORE);
|
embedpress.php
CHANGED
@@ -2,10 +2,11 @@
|
|
2 |
/**
|
3 |
* Plugin Name: EmbedPress
|
4 |
* Plugin URI: https://embedpress.com/
|
5 |
-
* Description: WordPress supports around 35 embed sources, but PublishPress Embeds adds over 40 more, including
|
6 |
-
*
|
7 |
-
* Author
|
8 |
-
*
|
|
|
9 |
* Text Domain: embedpress
|
10 |
* Domain Path: /languages
|
11 |
*
|
@@ -20,28 +21,37 @@
|
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
|
23 |
-
use
|
24 |
|
25 |
-
|
26 |
|
27 |
-
|
28 |
|
29 |
-
|
|
|
|
|
|
|
|
|
30 |
|
31 |
function onPluginActivationCallback()
|
32 |
{
|
33 |
-
Core::onPluginActivationCallback();
|
34 |
}
|
35 |
|
36 |
function onPluginDeactivationCallback()
|
37 |
{
|
38 |
-
Core::onPluginDeactivationCallback();
|
39 |
}
|
40 |
|
41 |
register_activation_hook(__FILE__, 'onPluginActivationCallback');
|
42 |
register_deactivation_hook(__FILE__, 'onPluginDeactivationCallback');
|
43 |
|
44 |
-
if (!is_plugin_active('gutenberg/gutenberg.php')) {
|
45 |
-
|
46 |
-
|
|
|
|
|
|
|
|
|
|
|
47 |
}
|
2 |
/**
|
3 |
* Plugin Name: EmbedPress
|
4 |
* Plugin URI: https://embedpress.com/
|
5 |
+
* Description: WordPress supports around 35 embed sources, but PublishPress Embeds adds over 40 more, including
|
6 |
+
* Facebook, Google Maps, Google Docs, UStream! Just use the URL!
|
7 |
+
* Author:EmbedPress
|
8 |
+
* Author URI:http://embedpress.com
|
9 |
+
* Version: 2.2.0
|
10 |
* Text Domain: embedpress
|
11 |
* Domain Path: /languages
|
12 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
|
24 |
+
use EmbedPress\Compatibility;
|
25 |
|
26 |
+
defined('ABSPATH') or die("No direct script access allowed.");
|
27 |
|
28 |
+
require_once plugin_dir_path(__FILE__) . 'includes.php';
|
29 |
|
30 |
+
include_once ABSPATH . 'wp-admin/includes/plugin.php';
|
31 |
+
|
32 |
+
if ( ! defined('EMBEDPRESS_IS_LOADED')) {
|
33 |
+
return;
|
34 |
+
}
|
35 |
|
36 |
function onPluginActivationCallback()
|
37 |
{
|
38 |
+
\EmbedPress\Core::onPluginActivationCallback();
|
39 |
}
|
40 |
|
41 |
function onPluginDeactivationCallback()
|
42 |
{
|
43 |
+
\EmbedPress\Core::onPluginDeactivationCallback();
|
44 |
}
|
45 |
|
46 |
register_activation_hook(__FILE__, 'onPluginActivationCallback');
|
47 |
register_deactivation_hook(__FILE__, 'onPluginDeactivationCallback');
|
48 |
|
49 |
+
if ( ! is_plugin_active('gutenberg/gutenberg.php')) {
|
50 |
+
if (Compatibility::isWordPress5() && ! Compatibility::isClassicalEditorActive()) {
|
51 |
+
$embedPressPlugin = new \EmbedPress\Core();
|
52 |
+
} else {
|
53 |
+
$embedPressPlugin = new \EmbedPress\CoreLegacy();
|
54 |
+
}
|
55 |
+
|
56 |
+
$embedPressPlugin->initialize();
|
57 |
}
|
includes.php
CHANGED
@@ -12,55 +12,55 @@ defined('ABSPATH') or die("No direct script access allowed.");
|
|
12 |
*/
|
13 |
|
14 |
|
15 |
-
if (!defined('EMBEDPRESS')) {
|
16 |
define('EMBEDPRESS', "EmbedPress");
|
17 |
}
|
18 |
|
19 |
-
if (!defined('EMBEDPRESS_PLG_NAME')) {
|
20 |
define('EMBEDPRESS_PLG_NAME', 'embedpress');
|
21 |
}
|
22 |
|
23 |
-
if (!defined('
|
24 |
-
define('
|
25 |
}
|
26 |
|
27 |
-
if (!defined('EMBEDPRESS_ROOT')) {
|
28 |
define('EMBEDPRESS_ROOT', dirname(__FILE__));
|
29 |
}
|
30 |
|
31 |
-
if (!defined('EMBEDPRESS_PATH_BASE')) {
|
32 |
define('EMBEDPRESS_PATH_BASE', plugin_dir_path(__FILE__));
|
33 |
}
|
34 |
|
35 |
-
if (!defined('EMBEDPRESS_PATH_CORE')) {
|
36 |
-
define('EMBEDPRESS_PATH_CORE', EMBEDPRESS_PATH_BASE ."EmbedPress/");
|
37 |
}
|
38 |
|
39 |
-
if (!defined('EMBEDPRESS_URL_ASSETS')) {
|
40 |
-
define('EMBEDPRESS_URL_ASSETS', plugins_url(EMBEDPRESS_PLG_NAME) ."/assets/");
|
41 |
}
|
42 |
|
43 |
-
if (!defined('EMBEDPRESS_NAMESPACE')) {
|
44 |
define('EMBEDPRESS_NAMESPACE', "\\EmbedPress");
|
45 |
}
|
46 |
|
47 |
-
if (!defined('EMBEDPRESS_AUTOLOADER_NAME')) {
|
48 |
define('EMBEDPRESS_AUTOLOADER_NAME', "AutoLoader");
|
49 |
}
|
50 |
|
51 |
-
if (!defined('EMBEDPRESS_SHORTCODE')) {
|
52 |
define('EMBEDPRESS_SHORTCODE', "embed");
|
53 |
}
|
54 |
|
55 |
-
if (!defined('EMBEDPRESS_LICENSES_API_HOST')) {
|
56 |
define('EMBEDPRESS_LICENSES_API_HOST', "embedpress.com");
|
57 |
}
|
58 |
|
59 |
-
if (!defined('EMBEDPRESS_LICENSES_API_URL')) {
|
60 |
define('EMBEDPRESS_LICENSES_API_URL', "https://embedpress.com");
|
61 |
}
|
62 |
|
63 |
-
if (!defined('EMBEDPRESS_LICENSES_MORE_INFO_URL')) {
|
64 |
define('EMBEDPRESS_LICENSES_MORE_INFO_URL', "https://embedpress.com/docs/activate-license");
|
65 |
}
|
66 |
|
@@ -72,6 +72,6 @@ if (file_exists(__DIR__ . '/vendor/autoload.php')) {
|
|
72 |
require_once __DIR__ . '/vendor/publishpress/wordpress-edd-license-integration/src/includes.php';
|
73 |
|
74 |
// Run the plugin autoload script
|
75 |
-
if (!defined('EMBEDPRESS_IS_LOADED')) {
|
76 |
-
require_once EMBEDPRESS_PATH_BASE ."autoloader.php";
|
77 |
}
|
12 |
*/
|
13 |
|
14 |
|
15 |
+
if ( ! defined('EMBEDPRESS')) {
|
16 |
define('EMBEDPRESS', "EmbedPress");
|
17 |
}
|
18 |
|
19 |
+
if ( ! defined('EMBEDPRESS_PLG_NAME')) {
|
20 |
define('EMBEDPRESS_PLG_NAME', 'embedpress');
|
21 |
}
|
22 |
|
23 |
+
if ( ! defined('EMBEDPRESS_VERSION')) {
|
24 |
+
define('EMBEDPRESS_VERSION', "2.2.0");
|
25 |
}
|
26 |
|
27 |
+
if ( ! defined('EMBEDPRESS_ROOT')) {
|
28 |
define('EMBEDPRESS_ROOT', dirname(__FILE__));
|
29 |
}
|
30 |
|
31 |
+
if ( ! defined('EMBEDPRESS_PATH_BASE')) {
|
32 |
define('EMBEDPRESS_PATH_BASE', plugin_dir_path(__FILE__));
|
33 |
}
|
34 |
|
35 |
+
if ( ! defined('EMBEDPRESS_PATH_CORE')) {
|
36 |
+
define('EMBEDPRESS_PATH_CORE', EMBEDPRESS_PATH_BASE . "EmbedPress/");
|
37 |
}
|
38 |
|
39 |
+
if ( ! defined('EMBEDPRESS_URL_ASSETS')) {
|
40 |
+
define('EMBEDPRESS_URL_ASSETS', plugins_url(EMBEDPRESS_PLG_NAME) . "/assets/");
|
41 |
}
|
42 |
|
43 |
+
if ( ! defined('EMBEDPRESS_NAMESPACE')) {
|
44 |
define('EMBEDPRESS_NAMESPACE', "\\EmbedPress");
|
45 |
}
|
46 |
|
47 |
+
if ( ! defined('EMBEDPRESS_AUTOLOADER_NAME')) {
|
48 |
define('EMBEDPRESS_AUTOLOADER_NAME', "AutoLoader");
|
49 |
}
|
50 |
|
51 |
+
if ( ! defined('EMBEDPRESS_SHORTCODE')) {
|
52 |
define('EMBEDPRESS_SHORTCODE', "embed");
|
53 |
}
|
54 |
|
55 |
+
if ( ! defined('EMBEDPRESS_LICENSES_API_HOST')) {
|
56 |
define('EMBEDPRESS_LICENSES_API_HOST', "embedpress.com");
|
57 |
}
|
58 |
|
59 |
+
if ( ! defined('EMBEDPRESS_LICENSES_API_URL')) {
|
60 |
define('EMBEDPRESS_LICENSES_API_URL', "https://embedpress.com");
|
61 |
}
|
62 |
|
63 |
+
if ( ! defined('EMBEDPRESS_LICENSES_MORE_INFO_URL')) {
|
64 |
define('EMBEDPRESS_LICENSES_MORE_INFO_URL', "https://embedpress.com/docs/activate-license");
|
65 |
}
|
66 |
|
72 |
require_once __DIR__ . '/vendor/publishpress/wordpress-edd-license-integration/src/includes.php';
|
73 |
|
74 |
// Run the plugin autoload script
|
75 |
+
if ( ! defined('EMBEDPRESS_IS_LOADED')) {
|
76 |
+
require_once EMBEDPRESS_PATH_BASE . "autoloader.php";
|
77 |
}
|
providers.php
CHANGED
@@ -14,9 +14,9 @@
|
|
14 |
* @since 1.0.0
|
15 |
*/
|
16 |
|
17 |
-
$additionalServiceProviders =
|
18 |
-
'GoogleMaps' =>
|
19 |
-
'GoogleDocs' =>
|
20 |
-
'Twitch' =>
|
21 |
-
'Giphy' =>
|
22 |
-
|
14 |
* @since 1.0.0
|
15 |
*/
|
16 |
|
17 |
+
$additionalServiceProviders = [
|
18 |
+
'GoogleMaps' => ["google.com", "google.com.*", "maps.google.com", "goo.gl", "google.co.*"],
|
19 |
+
'GoogleDocs' => ["docs.google.com"],
|
20 |
+
'Twitch' => ["twitch.tv", "clips.twitch.tv"],
|
21 |
+
'Giphy' => ["giphy.com", "i.giphy.com"],
|
22 |
+
];
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Author URI: https://embedpress.com
|
|
5 |
Tags: YouTube, Google, Facebook, Wistia, Vimeo
|
6 |
Requires at least: 4.6
|
7 |
Tested up to: 4.9.4
|
8 |
-
Stable tag: 2.
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -184,6 +184,21 @@ Not at all. You can set up everything your team needs without any coding knowled
|
|
184 |
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
185 |
and this project adheres to [Semantic Versioning](http://semver.org/).
|
186 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
187 |
= [2.1.5] - 2018-08-03 =
|
188 |
|
189 |
*Fixed:*
|
5 |
Tags: YouTube, Google, Facebook, Wistia, Vimeo
|
6 |
Requires at least: 4.6
|
7 |
Tested up to: 4.9.4
|
8 |
+
Stable tag: 2.2.0
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
184 |
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
185 |
and this project adheres to [Semantic Versioning](http://semver.org/).
|
186 |
|
187 |
+
= [2.2.0] - 2018-12-10 =
|
188 |
+
|
189 |
+
* Fixed compatibility with WordPress 5, Gutenberg, and WordPress 5 with Classic Editor;
|
190 |
+
* Removed useless settings for showing or hidding the preview panel when Gutenberg is used;
|
191 |
+
* Fixed Devianart embeds;
|
192 |
+
* Fixed Google Docs embeds;
|
193 |
+
* Fixed Google Maps embeds for urls from places;
|
194 |
+
* Changed the constant for plugin version from EMBEDPRESS_PLG_VERSION to EMBEDPRESS_VERSION;
|
195 |
+
|
196 |
+
= [2.1.6] - 2018-08-03 =
|
197 |
+
|
198 |
+
*Fixed:*
|
199 |
+
|
200 |
+
* Fixed a blank screen when Gutenberg is enabled - for now it disables if Gutenberg is enabled;
|
201 |
+
|
202 |
= [2.1.5] - 2018-08-03 =
|
203 |
|
204 |
*Fixed:*
|