PluginProbe
iframe / trunk
iframe vtrunk
trunk 1.0.0 1.1.0 1.2.0 1.3.0 1.4.0 1.5.0 1.6.0 1.7 1.8 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 4.0 4.1 4.2 4.3 All 35 releases
← All changes | iframe.php +91 -72 2.0trunk View file →
@@ -1,85 +1,104 @@
1 1 <?php
2 2 /*
3 3 Plugin Name: iframe
4 -Plugin URI: http://web-profile.com.ua/wordpress/plugins/iframe/
5 -Description: Plugin shows iframe with [iframe src="http://player.vimeo.com/video/3261363" width="100%" height="480"] shortcode.
6 -Version: 2.0
4 +Plugin URI: http://wordpress.org/plugins/iframe/
5 +Description: [iframe src="http://www.youtube.com/embed/7_nAZQt9qu0" width="100%" height="500"] shortcode
6 +Version: 6.0
7 7 Author: webvitaly
8 -Author Email: webvitaly(at)gmail.com
9 -Author URI: http://web-profile.com.ua/wordpress/
8 +Author URI: http://web-profile.net/wordpress/plugins/
9 +License: GPLv3
10 10 */
11 11
12 -if ( !function_exists( 'iframe_embed_shortcode' ) ) :
12 +if ( ! defined( 'ABSPATH' ) ) { // Avoid direct calls to this file and prevent full path disclosure
13 + exit;
14 +}
13 15
14 - function iframe_enqueue_script() {
15 - wp_enqueue_script( 'jquery' );
16 +define('IFRAME_PLUGIN_VERSION', '6.0');
17 +
18 +// Load settings page functionality
19 +require_once( plugin_dir_path( __FILE__ ) . 'iframe-settings.php' );
20 +
21 +
22 +function iframe_plugin_add_shortcode_cb( $atts ) {
23 + // Get plugin settings
24 + $settings = iframe_plugin_get_settings();
25 +
26 + $defaults = array(
27 + //'src' => 'http://www.youtube.com/embed/7_nAZQt9qu0',
28 + 'width' => '100%',
29 + 'height' => '500',
30 + 'scrolling' => 'yes',
31 + 'class' => 'iframe-class',
32 + 'frameborder' => '0',
33 + 'loading' => $settings['loading'] // Global setting from settings array
34 + );
35 +
36 + if ( ! is_array( $atts ) ) {
37 + $atts = array();
16 38 }
17 - add_action('wp_enqueue_scripts', 'iframe_enqueue_script');
18 -
19 - function iframe_embed_shortcode($atts, $content = null) {
20 - $defaults = array(
21 - 'width' => '100%',
22 - 'height' => '480',
23 - 'scrolling' => 'no',
24 - 'class' => 'iframe-class'
25 - );
26 - // add defaults
27 - foreach ($defaults as $default => $value) {
28 - if (!array_key_exists($default, $atts)) {
29 - $atts[$default] = $value;
30 - }
39 +
40 + foreach ( $defaults as $default => $value ) { // add defaults
41 + if ( ! @array_key_exists( $default, $atts ) ) { // mute warning with "@" when no params at all
42 + $atts[$default] = $value;
31 43 }
32 - // special case maps
33 - $src_cut = substr($atts["src"], 0, 35);
34 - if(strpos($src_cut, 'maps.google' )){
35 - $atts["src"] .= '&output=embed';
44 + }
45 +
46 + $html = "\n".'<!-- iframe plugin v.'.IFRAME_PLUGIN_VERSION.' wordpress.org/plugins/iframe/ -->'."\n";
47 + $html .= '<iframe';
48 + foreach( $atts as $attr => $value ) {
49 + if ( strtolower($attr) == 'src' ) { // sanitize url
50 + $value = esc_url( $value );
36 51 }
37 - $html = '';
38 - $same_height_as = $atts["same_height_as"];
39 - if( $same_height_as != '' ){
40 - $atts["same_height_as"] = '';
41 - if( $same_height_as != 'content' ){ // we are setting the height of the iframe like as target element
42 - if( $same_height_as == 'document' || $same_height_as == 'window' ){ // remove quotes for window or document selectors
43 - $target_selector = $same_height_as;
44 - }else{
45 - $target_selector = '"' . $same_height_as . '"';
46 - }
47 - $html .= '
48 - <script>
49 - jQuery(document).ready(function($) {
50 - var target_height = $(' . $target_selector . ').height();
51 - $("iframe.' . $atts["class"] . '").height(target_height);
52 - //alert(target_height);
53 - });
54 - </script>
55 - ';
56 - }else{ // set the actual height of the iframe (show all content of the iframe without scroll)
57 - $html .= '
58 - <script>
59 - jQuery(document).ready(function($) {
60 - $("iframe.' . $atts["class"] . '").bind("load", function() {
61 - var embed_height = $(this).contents().find("body").height();
62 - $(this).height(embed_height);
63 - });
64 - });
65 - </script>
66 - ';
67 - }
52 +
53 + // Remove 'srcdoc' attribute
54 + if ( strtolower($attr) == 'srcdoc' ) {
55 + continue;
68 56 }
69 - $html .= "\n".'<!-- powered by Iframe plugin ver.2.0 (wordpress.org/extend/plugins/iframe/) -->'."\n";
70 - $html .= '<iframe';
71 - foreach ($atts as $attr => $value) {
72 - if( $attr != 'same_height_as' ){ // remove some attributes
73 - if( $value != '' ) { // adding all attributes
74 - $html .= ' ' . $attr . '="' . $value . '"';
75 - } else { // adding empty attributes
76 - $html .= ' ' . $attr;
77 - }
78 - }
57 +
58 + // Skip attributes starting with "on". Examples: onload, onmouseover, onfocus, onpageshow, onclick
59 + if ( strpos( strtolower( $attr ), 'on' ) === 0 ) {
60 + continue;
79 61 }
80 - $html .= '></iframe>';
81 - return $html;
62 +
63 + // Skip loading attribute if set to 'none' (browser default)
64 + if ( strtolower($attr) == 'loading' && strtolower($value) == 'none' ) {
65 + continue;
66 + }
67 +
68 + if ($value !== '') { // adding all attributes
69 + $html .= ' ' . esc_attr($attr) . '="' . esc_attr($value) . '"';
70 + } else { // adding empty attributes
71 + $html .= ' ' . esc_attr($attr);
72 + }
82 73 }
83 - add_shortcode('iframe', 'iframe_embed_shortcode');
84 -
85 -endif;
74 + $html .= '></iframe>'."\n";
75 +
76 + if ( isset( $atts["same_height_as"] ) ) {
77 + $html .= '
78 + <script>
79 + document.addEventListener("DOMContentLoaded", function(){
80 + var target_element, iframe_element;
81 + iframe_element = document.querySelector("iframe.' . esc_attr( $atts["class"] ) . '");
82 + target_element = document.querySelector("' . esc_attr( $atts["same_height_as"] ) . '");
83 + iframe_element.style.height = target_element.offsetHeight + "px";
84 + });
85 + </script>
86 + ';
87 + }
88 +
89 + return $html;
90 +}
91 +add_shortcode( 'iframe', 'iframe_plugin_add_shortcode_cb' );
92 +
93 +
94 +function iframe_plugin_row_meta_cb( $links, $file ) {
95 + if ( $file == plugin_basename( __FILE__ ) ) {
96 + $row_meta = array(
97 + 'support' => '<a href="http://web-profile.net/wordpress/plugins/iframe/" target="_blank">' . __( 'Iframe', 'iframe' ) . '</a>',
98 + 'donate' => '<a href="http://web-profile.net/donate/" target="_blank">' . __( 'Donate', 'iframe' ) . '</a>'
99 + );
100 + $links = array_merge( $links, $row_meta );
101 + }
102 + return (array) $links;
103 +}
104 +add_filter( 'plugin_row_meta', 'iframe_plugin_row_meta_cb', 10, 2 );