Version Description
- Added shortcode feature.
- Multiple instances of the plugin on the same page.
- Added theme selector.
- Improved use of Iframe YouTube Player API (now synchronous).
- Added effect: hover on thumbnails to display a play button.
Download this release
Release Info
Developer | javitxu123 |
Plugin | Youtube Channel Gallery |
Version | 1.4 |
Comparing to | |
See all releases |
Code changes from version 1.0 to 1.4
- languages/youtube-channel-gallery-es_ES.mo +0 -0
- languages/youtube-channel-gallery-es_ES.po +54 -13
- readme.txt +31 -5
- scripts.js +15 -0
- youtube-channel-gallery.css → styles.css +9 -0
- youtube-channel-gallery.php +191 -181
languages/youtube-channel-gallery-es_ES.mo
CHANGED
Binary file
|
languages/youtube-channel-gallery-es_ES.po
CHANGED
@@ -7,8 +7,8 @@ msgid ""
|
|
7 |
msgstr ""
|
8 |
"Project-Id-Version: youtube-channel-gallery\n"
|
9 |
"Report-Msgid-Bugs-To: \n"
|
10 |
-
"POT-Creation-Date: 2012-07-
|
11 |
-
"PO-Revision-Date: 2012-07-
|
12 |
"Last-Translator: Javier <javierpose@gmail.com>\n"
|
13 |
"Language-Team: PoseLab <javierpose@gmail.com>\n"
|
14 |
"MIME-Version: 1.0\n"
|
@@ -23,50 +23,91 @@ msgstr ""
|
|
23 |
"X-Poedit-SourceCharset: utf-8\n"
|
24 |
"X-Poedit-SearchPath-0: .\n"
|
25 |
|
26 |
-
#: youtube-channel-gallery.php:
|
|
|
|
|
27 |
msgid "Youtube Channel Gallery"
|
28 |
msgstr "Galería de Canal de Youtube"
|
29 |
|
30 |
-
#: youtube-channel-gallery.php:
|
|
|
|
|
31 |
msgid "Show a youtube video and a gallery of thumbnails for a youtube channel"
|
32 |
msgstr "Muestra un vídeo y una galería de miniaturas de una canal de Youtube "
|
33 |
|
34 |
-
#: youtube-channel-gallery.php:
|
|
|
|
|
35 |
msgid "Title:"
|
36 |
msgstr "Título:"
|
37 |
|
38 |
-
#: youtube-channel-gallery.php:
|
|
|
|
|
39 |
msgid "YouTube user name:"
|
40 |
msgstr "Nombre de usuario de Youtube:"
|
41 |
|
42 |
-
#: youtube-channel-gallery.php:
|
|
|
|
|
43 |
msgid "Show link to channel:"
|
44 |
msgstr "Mostrar enlace al canal:"
|
45 |
|
46 |
-
#: youtube-channel-gallery.php:
|
|
|
|
|
47 |
msgid "Number of videos to show:"
|
48 |
msgstr "Número de vídeos a mostrar:"
|
49 |
|
50 |
-
#: youtube-channel-gallery.php:
|
|
|
|
|
51 |
msgid "Video width:"
|
52 |
msgstr "Ancho del vídeo:"
|
53 |
|
54 |
-
#: youtube-channel-gallery.php:
|
|
|
|
|
55 |
msgid "Thumbnail width:"
|
56 |
msgstr "Ancho de miniaturas:"
|
57 |
|
58 |
-
#: youtube-channel-gallery.php:
|
|
|
|
|
|
|
59 |
msgid "Thumbnail columns:"
|
60 |
msgstr "Columnas de las miniaturas:"
|
61 |
|
62 |
-
#: youtube-channel-gallery.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
msgid "Show more videos»"
|
64 |
msgstr "Ver más vídeos»"
|
65 |
|
66 |
-
#: youtube-channel-gallery.php:
|
|
|
|
|
67 |
msgid "There is no video to show."
|
68 |
msgstr "No hay ningún vídeo para mostrar."
|
69 |
|
|
|
|
|
|
|
|
|
70 |
#~ msgid "No post to duplicate has been supplied!"
|
71 |
#~ msgstr "No se facilitó ninguna entrada a copiar"
|
72 |
#~ msgid "Post creation failed, could not find original post:"
|
7 |
msgstr ""
|
8 |
"Project-Id-Version: youtube-channel-gallery\n"
|
9 |
"Report-Msgid-Bugs-To: \n"
|
10 |
+
"POT-Creation-Date: 2012-07-24 14:14+0100\n"
|
11 |
+
"PO-Revision-Date: 2012-07-24 14:15+0100\n"
|
12 |
"Last-Translator: Javier <javierpose@gmail.com>\n"
|
13 |
"Language-Team: PoseLab <javierpose@gmail.com>\n"
|
14 |
"MIME-Version: 1.0\n"
|
23 |
"X-Poedit-SourceCharset: utf-8\n"
|
24 |
"X-Poedit-SearchPath-0: .\n"
|
25 |
|
26 |
+
#: youtube-channel-gallery.php:44
|
27 |
+
#: pruebas/youtube-channel-gallery_bueno.php:46
|
28 |
+
#: pruebas/youtube-channel-gallery_bueno2.php:46
|
29 |
msgid "Youtube Channel Gallery"
|
30 |
msgstr "Galería de Canal de Youtube"
|
31 |
|
32 |
+
#: youtube-channel-gallery.php:45
|
33 |
+
#: pruebas/youtube-channel-gallery_bueno.php:47
|
34 |
+
#: pruebas/youtube-channel-gallery_bueno2.php:47
|
35 |
msgid "Show a youtube video and a gallery of thumbnails for a youtube channel"
|
36 |
msgstr "Muestra un vídeo y una galería de miniaturas de una canal de Youtube "
|
37 |
|
38 |
+
#: youtube-channel-gallery.php:100
|
39 |
+
#: pruebas/youtube-channel-gallery_bueno.php:109
|
40 |
+
#: pruebas/youtube-channel-gallery_bueno2.php:107
|
41 |
msgid "Title:"
|
42 |
msgstr "Título:"
|
43 |
|
44 |
+
#: youtube-channel-gallery.php:105
|
45 |
+
#: pruebas/youtube-channel-gallery_bueno.php:114
|
46 |
+
#: pruebas/youtube-channel-gallery_bueno2.php:112
|
47 |
msgid "YouTube user name:"
|
48 |
msgstr "Nombre de usuario de Youtube:"
|
49 |
|
50 |
+
#: youtube-channel-gallery.php:111
|
51 |
+
#: pruebas/youtube-channel-gallery_bueno.php:120
|
52 |
+
#: pruebas/youtube-channel-gallery_bueno2.php:118
|
53 |
msgid "Show link to channel:"
|
54 |
msgstr "Mostrar enlace al canal:"
|
55 |
|
56 |
+
#: youtube-channel-gallery.php:115
|
57 |
+
#: pruebas/youtube-channel-gallery_bueno.php:124
|
58 |
+
#: pruebas/youtube-channel-gallery_bueno2.php:122
|
59 |
msgid "Number of videos to show:"
|
60 |
msgstr "Número de vídeos a mostrar:"
|
61 |
|
62 |
+
#: youtube-channel-gallery.php:120
|
63 |
+
#: pruebas/youtube-channel-gallery_bueno.php:129
|
64 |
+
#: pruebas/youtube-channel-gallery_bueno2.php:127
|
65 |
msgid "Video width:"
|
66 |
msgstr "Ancho del vídeo:"
|
67 |
|
68 |
+
#: youtube-channel-gallery.php:125
|
69 |
+
#: pruebas/youtube-channel-gallery_bueno.php:134
|
70 |
+
#: pruebas/youtube-channel-gallery_bueno2.php:132
|
71 |
msgid "Thumbnail width:"
|
72 |
msgstr "Ancho de miniaturas:"
|
73 |
|
74 |
+
#: youtube-channel-gallery.php:130
|
75 |
+
#: pruebas/youtube-channel-gallery_bueno.php:139
|
76 |
+
#: pruebas/youtube-channel-gallery_bueno.php:144
|
77 |
+
#: pruebas/youtube-channel-gallery_bueno2.php:137
|
78 |
msgid "Thumbnail columns:"
|
79 |
msgstr "Columnas de las miniaturas:"
|
80 |
|
81 |
+
#: youtube-channel-gallery.php:135
|
82 |
+
#: pruebas/youtube-channel-gallery_bueno.php:149
|
83 |
+
msgid "Theme:"
|
84 |
+
msgstr "Tema:"
|
85 |
+
|
86 |
+
#: youtube-channel-gallery.php:137
|
87 |
+
#: pruebas/youtube-channel-gallery_bueno.php:151
|
88 |
+
msgid "Dark"
|
89 |
+
msgstr "Oscuro"
|
90 |
+
|
91 |
+
#: youtube-channel-gallery.php:138
|
92 |
+
msgid "Light"
|
93 |
+
msgstr "Claro"
|
94 |
+
|
95 |
+
#: youtube-channel-gallery.php:270
|
96 |
+
#: pruebas/youtube-channel-gallery_bueno.php:345
|
97 |
+
#: pruebas/youtube-channel-gallery_bueno2.php:315
|
98 |
msgid "Show more videos»"
|
99 |
msgstr "Ver más vídeos»"
|
100 |
|
101 |
+
#: youtube-channel-gallery.php:276
|
102 |
+
#: pruebas/youtube-channel-gallery_bueno.php:351
|
103 |
+
#: pruebas/youtube-channel-gallery_bueno2.php:321
|
104 |
msgid "There is no video to show."
|
105 |
msgstr "No hay ningún vídeo para mostrar."
|
106 |
|
107 |
+
#: pruebas/youtube-channel-gallery_bueno.php:152
|
108 |
+
msgid "Light:"
|
109 |
+
msgstr "Claro"
|
110 |
+
|
111 |
#~ msgid "No post to duplicate has been supplied!"
|
112 |
#~ msgstr "No se facilitó ninguna entrada a copiar"
|
113 |
#~ msgid "Post creation failed, could not find original post:"
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: http://poselab.com/
|
|
4 |
Tags: widget, gallery, youtube, channel, user
|
5 |
Requires at least: 2.8
|
6 |
Tested up to: 3.4.1
|
7 |
-
Stable tag: 1.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -18,6 +18,8 @@ Show a youtube video and a gallery of thumbnails for a youtube user channel.
|
|
18 |
* Display latest thumbnail videos from YouTube user channel.
|
19 |
* When you click on one of the thumbnails the video plays at the top.
|
20 |
* This plugin uses the YouTube IFrame player API that allows YouTube to serve an HTML5 player rather than a Flash player for mobile devices that do not support Flash.
|
|
|
|
|
21 |
|
22 |
= Widget fields: =
|
23 |
* Title: Widget Title.
|
@@ -27,6 +29,23 @@ Show a youtube video and a gallery of thumbnails for a youtube user channel.
|
|
27 |
* Video width: indicates the width of the video player.
|
28 |
* Thumbnail size: indicates the width of the thumbnails. The height is automatically generated.
|
29 |
* Thumbnail columns: assign a numeric class to each thumbnail based on the number of columns to apply styles to each column.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
|
31 |
= Demo: =
|
32 |
You can see a demo of the plugin at the following URL:
|
@@ -42,14 +61,14 @@ If you have created your own language pack, or have an update of an existing one
|
|
42 |
== Installation ==
|
43 |
|
44 |
1. Upload the *.zip copy of this plugin into your WordPress through your 'Plugin' admin page.
|
45 |
-
2. Activate the plugin through the 'Plugins' menu in WordPress
|
46 |
-
3. Place the widget in your desired sidebar through the "widgets" admin page
|
47 |
|
48 |
== Frequently Asked Questions ==
|
49 |
|
50 |
= Where is the “widgets” admin page? =
|
51 |
|
52 |
-
The “widgets” admin page is found in the administrator part (wp-admin) of your WordPress site. Go to Appearance > Widgets
|
53 |
|
54 |
= How do I find the YouTube user name? =
|
55 |
|
@@ -62,5 +81,12 @@ The username who uploaded a video to Youtube is located below each video, where
|
|
62 |
|
63 |
== Changelog ==
|
64 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
= 1.0 =
|
66 |
-
* Initial Release
|
4 |
Tags: widget, gallery, youtube, channel, user
|
5 |
Requires at least: 2.8
|
6 |
Tested up to: 3.4.1
|
7 |
+
Stable tag: 1.4
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
18 |
* Display latest thumbnail videos from YouTube user channel.
|
19 |
* When you click on one of the thumbnails the video plays at the top.
|
20 |
* This plugin uses the YouTube IFrame player API that allows YouTube to serve an HTML5 player rather than a Flash player for mobile devices that do not support Flash.
|
21 |
+
* You can choose to use this plugin as a widget or as a shortcode.
|
22 |
+
* You can use multiple instances of the plugin on the same page.
|
23 |
|
24 |
= Widget fields: =
|
25 |
* Title: Widget Title.
|
29 |
* Video width: indicates the width of the video player.
|
30 |
* Thumbnail size: indicates the width of the thumbnails. The height is automatically generated.
|
31 |
* Thumbnail columns: assign a numeric class to each thumbnail based on the number of columns to apply styles to each column.
|
32 |
+
* Theme: select the youtube player theme (dark or light).
|
33 |
+
|
34 |
+
= Shortcode syntax: =
|
35 |
+
If you want to use it as Shortcode:
|
36 |
+
|
37 |
+
`[Youtube_Channel_Gallery user="MaxonC4D" maxitems="3" theme="dark"]`
|
38 |
+
|
39 |
+
The attributes used in the shortcode are the same as the fields available in the widget, except the title field.
|
40 |
+
|
41 |
+
* user: YouTube user name (required).
|
42 |
+
* link: Show link to channel. Values: 0 or 1. (optional).
|
43 |
+
* maxitems: Number of videos to show (optional).
|
44 |
+
* videowidth: Video width (optional).
|
45 |
+
* thumbwidth: Thumbnail size (optional).
|
46 |
+
* thumbcolumns: Thumbnail columns (optional).
|
47 |
+
* theme: Theme. Values: dark or light (optional).
|
48 |
+
|
49 |
|
50 |
= Demo: =
|
51 |
You can see a demo of the plugin at the following URL:
|
61 |
== Installation ==
|
62 |
|
63 |
1. Upload the *.zip copy of this plugin into your WordPress through your 'Plugin' admin page.
|
64 |
+
2. Activate the plugin through the 'Plugins' menu in WordPress.
|
65 |
+
3. Place the widget in your desired sidebar through the "widgets" admin page.
|
66 |
|
67 |
== Frequently Asked Questions ==
|
68 |
|
69 |
= Where is the “widgets” admin page? =
|
70 |
|
71 |
+
The “widgets” admin page is found in the administrator part (wp-admin) of your WordPress site. Go to Appearance > Widgets.
|
72 |
|
73 |
= How do I find the YouTube user name? =
|
74 |
|
81 |
|
82 |
== Changelog ==
|
83 |
|
84 |
+
= 1.4 =
|
85 |
+
* Added shortcode feature.
|
86 |
+
* Multiple instances of the plugin on the same page.
|
87 |
+
* Added theme selector.
|
88 |
+
* Improved use of Iframe YouTube Player API (now synchronous).
|
89 |
+
* Added effect: hover on thumbnails to display a play button.
|
90 |
+
|
91 |
= 1.0 =
|
92 |
+
* Initial Release.
|
scripts.js
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
function ytcplayVideo (iframeid, youtubeid) {
|
2 |
+
if(window[iframeid].loadVideoById) {
|
3 |
+
window[iframeid].loadVideoById(youtubeid);
|
4 |
+
}else{
|
5 |
+
window[iframeid] = new YT.Player(iframeid, {
|
6 |
+
events: {
|
7 |
+
'onReady': function(){
|
8 |
+
window[iframeid].loadVideoById(youtubeid);
|
9 |
+
}
|
10 |
+
}
|
11 |
+
});
|
12 |
+
}
|
13 |
+
|
14 |
+
|
15 |
+
}
|
youtube-channel-gallery.css → styles.css
RENAMED
@@ -12,4 +12,13 @@ ul.ytcgallery li a{
|
|
12 |
border:1px solid #999;
|
13 |
background-position: center center;
|
14 |
background-repeat: no-repeat;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
}
|
12 |
border:1px solid #999;
|
13 |
background-position: center center;
|
14 |
background-repeat: no-repeat;
|
15 |
+
}
|
16 |
+
ul.ytcgallery li a .ytcplay{
|
17 |
+
background: url(img/play.png) -9999px -9999px no-repeat;
|
18 |
+
}
|
19 |
+
ul.ytcgallery li a:hover{
|
20 |
+
opacity: 0.75;
|
21 |
+
}
|
22 |
+
ul.ytcgallery li a:hover .ytcplay{
|
23 |
+
background-position: center center;
|
24 |
}
|
youtube-channel-gallery.php
CHANGED
@@ -5,7 +5,7 @@ Plugin URI: http://www.poselab.com/
|
|
5 |
Description: Show a youtube video and a gallery of thumbnails for a youtube channel.
|
6 |
Author: Javier Gómez Pose
|
7 |
Author URI: http://www.poselab.com/
|
8 |
-
Version: 1.
|
9 |
License: GPL2
|
10 |
|
11 |
Copyright 2010 Javier Gómez Pose (email : javierpose@gmail.com)
|
@@ -26,10 +26,9 @@ License: GPL2
|
|
26 |
|
27 |
|
28 |
|
29 |
-
|
30 |
-
class
|
31 |
-
|
32 |
-
*/
|
33 |
class YoutubeChannelGallery_Widget extends WP_Widget {
|
34 |
|
35 |
/**
|
@@ -48,7 +47,6 @@ class YoutubeChannelGallery_Widget extends WP_Widget {
|
|
48 |
|
49 |
// Load JavaScript and stylesheets
|
50 |
$this->register_scripts_and_styles();
|
51 |
-
|
52 |
}
|
53 |
|
54 |
/**
|
@@ -62,7 +60,7 @@ class YoutubeChannelGallery_Widget extends WP_Widget {
|
|
62 |
if ( ! empty( $title ) )
|
63 |
echo $before_title . $title . $after_title;
|
64 |
|
65 |
-
|
66 |
|
67 |
echo $after_widget;
|
68 |
}
|
@@ -73,13 +71,14 @@ class YoutubeChannelGallery_Widget extends WP_Widget {
|
|
73 |
public function update( $new_instance, $old_instance ) {
|
74 |
$instance = $old_instance;
|
75 |
$instance['title'] = strip_tags( $new_instance['title'] );
|
76 |
-
$instance['
|
77 |
|
78 |
-
$instance['
|
79 |
-
$instance['
|
80 |
-
$instance['
|
81 |
-
$instance['
|
82 |
-
$instance['
|
|
|
83 |
|
84 |
return $instance;
|
85 |
}
|
@@ -89,12 +88,13 @@ class YoutubeChannelGallery_Widget extends WP_Widget {
|
|
89 |
*/
|
90 |
public function form( $instance ) {
|
91 |
$title = esc_attr($instance['title']);
|
92 |
-
$
|
93 |
-
$
|
94 |
-
$
|
95 |
-
$
|
96 |
-
$
|
97 |
-
$
|
|
|
98 |
?>
|
99 |
<p>
|
100 |
<label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', 'youtube-channel-gallery' ); ?></label>
|
@@ -102,33 +102,41 @@ class YoutubeChannelGallery_Widget extends WP_Widget {
|
|
102 |
</p>
|
103 |
|
104 |
<p>
|
105 |
-
<label for="<?php echo $this->get_field_id( '
|
106 |
-
<input class="widefat" id="<?php echo $this->get_field_id( '
|
107 |
</p>
|
108 |
|
109 |
<p>
|
110 |
-
<input class="checkbox" type="checkbox" <?php checked( (bool) $instance['
|
111 |
-
<label for="<?php echo $this->get_field_id( '
|
112 |
</p>
|
113 |
|
114 |
<p>
|
115 |
-
<label for="
|
116 |
-
<input class="widefat" id="<?php echo $this->get_field_id( '
|
117 |
</p>
|
118 |
|
119 |
<p>
|
120 |
-
<label for="
|
121 |
-
<input class="widefat" id="<?php echo $this->get_field_id( '
|
122 |
</p>
|
123 |
|
124 |
<p>
|
125 |
-
<label for="
|
126 |
-
<input class="widefat" id="<?php echo $this->get_field_id( '
|
127 |
</p>
|
128 |
|
129 |
<p>
|
130 |
-
<label for="
|
131 |
-
<input class="widefat" id="<?php echo $this->get_field_id( '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
132 |
</p>
|
133 |
|
134 |
<?php
|
@@ -138,171 +146,173 @@ class YoutubeChannelGallery_Widget extends WP_Widget {
|
|
138 |
/*--------------------------------------------------*/
|
139 |
/* Private Functions
|
140 |
/*--------------------------------------------------*/
|
141 |
-
private function ytchag_rss_markup($instance){
|
142 |
-
|
143 |
-
//$instance variables
|
144 |
-
$ytchag_user = apply_filters('ytchag_user', $instance['ytchag_user']);
|
145 |
-
$ytchag_link = apply_filters('ytchag_link', $instance['ytchag_link']);
|
146 |
-
$ytchag_maxitems = apply_filters('ytchag_maxitems', $instance['ytchag_maxitems']);
|
147 |
-
$ytchag_video_width = apply_filters('ytchag_video_width', $instance['ytchag_video_width']);
|
148 |
-
$ytchag_thumb_width = apply_filters('ytchag_thumb_width', $instance['ytchag_thumb_width']);
|
149 |
-
$ytchag_thumb_columns = apply_filters('ytchag_thumb_columns', $instance['ytchag_thumb_columns']);
|
150 |
-
|
151 |
-
//defaults
|
152 |
-
$ytchag_video_width = ( $ytchag_video_width ) ? $ytchag_video_width : 250;
|
153 |
-
$ytchag_thumb_width = ( $ytchag_thumb_width ) ? $ytchag_thumb_width : 85;
|
154 |
-
$ytchag_thumb_columns = ( $ytchag_thumb_columns ) ? $ytchag_thumb_columns : 0;
|
155 |
-
|
156 |
-
//heights of video and thumbnail
|
157 |
-
$ytchag_video_heigh = round($ytchag_video_width/(16/9) + 32);
|
158 |
-
$ytchag_thumb_height = $ytchag_thumb_width*75/100; // 75% 'cos sizes of thumbnail in xml file are 480x360 and 120x90
|
159 |
-
|
160 |
-
if( $ytchag_user ) { // only if user name inserted
|
161 |
-
|
162 |
-
// links
|
163 |
-
$ytchag_rss_url = "http://gdata.youtube.com/feeds/api/users/" . $ytchag_user . "/uploads";
|
164 |
-
$ytchag_link_url = "http://www.youtube.com/user/" . $ytchag_user;
|
165 |
-
|
166 |
-
|
167 |
-
//RSS Feed
|
168 |
-
|
169 |
-
include_once(ABSPATH . WPINC . '/feed.php');
|
170 |
-
|
171 |
-
$rss = fetch_feed($ytchag_rss_url);
|
172 |
-
$maxitems = ( $ytchag_maxitems ) ? $ytchag_maxitems : 9;
|
173 |
-
$items = $rss->get_items(0, $maxitems);
|
174 |
-
|
175 |
-
|
176 |
-
if (!empty($items)) {
|
177 |
-
$i = 0;
|
178 |
-
$column = 0;
|
179 |
-
foreach ( $items as $item ) {
|
180 |
-
|
181 |
-
$url = $item->get_permalink();
|
182 |
-
$youtubeid = $this->youtubeid($url);
|
183 |
-
$title = $item->get_title();
|
184 |
-
|
185 |
-
if ($enclosure = $item->get_enclosure()){
|
186 |
-
|
187 |
-
//extract thumbnail
|
188 |
-
//-----------------
|
189 |
-
|
190 |
-
//thumbnail index in xml
|
191 |
-
$big = 0;
|
192 |
-
$small = 1;
|
193 |
-
$size = $small;
|
194 |
-
if($ytchag_thumb_width > '120'){
|
195 |
-
$size = $big;
|
196 |
-
}
|
197 |
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
204 |
}
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
//IFrame Player API
|
212 |
-
?>
|
213 |
-
<div id="ytcplayer" class="ytcplayer"></div>
|
214 |
-
<script>
|
215 |
-
var tag = document.createElement('script');
|
216 |
-
tag.src = 'http://www.youtube.com/player_api';
|
217 |
-
var firstScriptTag = document.getElementsByTagName('script')[0];
|
218 |
-
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
|
219 |
-
var player;
|
220 |
-
function onYouTubePlayerAPIReady() {
|
221 |
-
|
222 |
-
player = new YT.Player('ytcplayer', {
|
223 |
-
width: '<?php echo $ytchag_video_width; ?>',
|
224 |
-
height: '<?php echo $ytchag_video_heigh; ?>',
|
225 |
-
videoId: '<?php echo $youtubeid; ?>'
|
226 |
-
});
|
227 |
-
}
|
228 |
-
|
229 |
-
function onYouTubePlayerAPIReady2(other) {
|
230 |
-
player.stopVideo();
|
231 |
-
player.loadVideoById(other);
|
232 |
-
}
|
233 |
-
</script>
|
234 |
-
<ul class="ytcgallery">
|
235 |
-
|
236 |
-
<?php
|
237 |
-
} // if player end
|
238 |
-
$i++;
|
239 |
-
|
240 |
-
$column++;
|
241 |
-
// list of thumbnail videos
|
242 |
-
?>
|
243 |
-
<li class="ytccell-<?php echo $column; ?>">
|
244 |
-
<a class="db-yt-thumb" href="javascript: onYouTubePlayerAPIReady2('<?php echo $youtubeid; ?>');" alt="<?php echo $title; ?>" title="<?php echo $title; ?>" style="background-image: url(<?php echo $thumb; ?>); width: <?php echo $ytchag_thumb_width; ?>px; height: <?php echo $ytchag_thumb_height; ?>px">
|
245 |
-
<div class="db-yt-play"></div>
|
246 |
-
</a>
|
247 |
-
</li>
|
248 |
-
|
249 |
-
<?php
|
250 |
-
if($ytchag_thumb_columns !=0 && $column%$ytchag_thumb_columns === 0){
|
251 |
-
$column = 0;
|
252 |
}
|
253 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
254 |
?>
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
|
|
265 |
?>
|
266 |
-
|
267 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
268 |
}
|
|
|
|
|
|
|
|
|
269 |
}
|
|
|
270 |
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
|
278 |
-
// load css or js
|
279 |
-
private function register_scripts_and_styles() {
|
280 |
-
//$this->load_file(PLUGIN_NAME, '/' . PLUGIN_SLUG . '/js/admin.js', true);
|
281 |
-
$this->load_file('youtube-channel-gallery', '/' . 'youtube-channel-gallery' . '/youtube-channel-gallery.css');
|
282 |
-
}
|
283 |
|
284 |
-
//register css or js
|
285 |
-
private function load_file($name, $file_path, $is_script = false) {
|
286 |
-
$url = WP_PLUGIN_URL . $file_path;
|
287 |
-
$file = WP_PLUGIN_DIR . $file_path;
|
288 |
-
|
289 |
-
if(file_exists($file)) {
|
290 |
-
if($is_script) {
|
291 |
-
wp_register_script($name, $url);
|
292 |
-
wp_enqueue_script($name);
|
293 |
-
} else {
|
294 |
-
wp_register_style($name, $url);
|
295 |
-
wp_enqueue_style($name);
|
296 |
-
}
|
297 |
-
}
|
298 |
-
} // end load_file
|
299 |
|
|
|
|
|
|
|
300 |
|
|
|
301 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
302 |
|
303 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
304 |
|
305 |
-
// register YoutubeChannelGallery_Widget widget
|
306 |
-
add_action( 'widgets_init', create_function( '', 'register_widget( "YoutubeChannelGallery_Widget" );' ) );
|
307 |
|
|
|
|
|
|
|
308 |
?>
|
5 |
Description: Show a youtube video and a gallery of thumbnails for a youtube channel.
|
6 |
Author: Javier Gómez Pose
|
7 |
Author URI: http://www.poselab.com/
|
8 |
+
Version: 1.4
|
9 |
License: GPL2
|
10 |
|
11 |
Copyright 2010 Javier Gómez Pose (email : javierpose@gmail.com)
|
26 |
|
27 |
|
28 |
|
29 |
+
/**
|
30 |
+
* widget class.
|
31 |
+
*/
|
|
|
32 |
class YoutubeChannelGallery_Widget extends WP_Widget {
|
33 |
|
34 |
/**
|
47 |
|
48 |
// Load JavaScript and stylesheets
|
49 |
$this->register_scripts_and_styles();
|
|
|
50 |
}
|
51 |
|
52 |
/**
|
60 |
if ( ! empty( $title ) )
|
61 |
echo $before_title . $title . $after_title;
|
62 |
|
63 |
+
ytcg_rss_markup($instance);
|
64 |
|
65 |
echo $after_widget;
|
66 |
}
|
71 |
public function update( $new_instance, $old_instance ) {
|
72 |
$instance = $old_instance;
|
73 |
$instance['title'] = strip_tags( $new_instance['title'] );
|
74 |
+
$instance['ytcg_user'] = strip_tags( $new_instance['ytcg_user'] );
|
75 |
|
76 |
+
$instance['ytcg_link'] = $new_instance['ytcg_link'];
|
77 |
+
$instance['ytcg_maxitems'] = strip_tags( $new_instance['ytcg_maxitems'] );
|
78 |
+
$instance['ytcg_video_width'] = strip_tags( $new_instance['ytcg_video_width'] );
|
79 |
+
$instance['ytcg_thumb_width'] = strip_tags( $new_instance['ytcg_thumb_width'] );
|
80 |
+
$instance['ytcg_thumb_columns'] = strip_tags( $new_instance['ytcg_thumb_columns'] );
|
81 |
+
$instance['ytcg_theme'] = strip_tags( $new_instance['ytcg_theme'] );
|
82 |
|
83 |
return $instance;
|
84 |
}
|
88 |
*/
|
89 |
public function form( $instance ) {
|
90 |
$title = esc_attr($instance['title']);
|
91 |
+
$ytcg_user = strip_tags($instance['ytcg_user']);
|
92 |
+
$ytcg_link = esc_attr($instance['ytcg_link']);
|
93 |
+
$ytcg_maxitems = strip_tags($instance['ytcg_maxitems']);
|
94 |
+
$ytcg_video_width = strip_tags($instance['ytcg_video_width']);
|
95 |
+
$ytcg_thumb_width = strip_tags($instance['ytcg_thumb_width']);
|
96 |
+
$ytcg_thumb_columns = strip_tags($instance['ytcg_thumb_columns']);
|
97 |
+
$ytcg_theme = strip_tags($instance['ytcg_theme']);
|
98 |
?>
|
99 |
<p>
|
100 |
<label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', 'youtube-channel-gallery' ); ?></label>
|
102 |
</p>
|
103 |
|
104 |
<p>
|
105 |
+
<label for="<?php echo $this->get_field_id( 'ytcg_user' ); ?>"><?php _e( 'YouTube user name:', 'youtube-channel-gallery' ); ?></label>
|
106 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'ytcg_user' ); ?>" name="<?php echo $this->get_field_name( 'ytcg_user' ); ?>" type="text" value="<?php echo esc_attr( $ytcg_user ); ?>" />
|
107 |
</p>
|
108 |
|
109 |
<p>
|
110 |
+
<input class="checkbox" type="checkbox" <?php checked( (bool) $instance['ytcg_link'], true ); ?> id="<?php echo $this->get_field_id( 'ytcg_link' ); ?>" name="<?php echo $this->get_field_name( 'ytcg_link' ); ?>" />
|
111 |
+
<label for="<?php echo $this->get_field_id( 'ytcg_link' ); ?>"><?php _e('Show link to channel:', 'youtube-channel-gallery'); ?></label><br />
|
112 |
</p>
|
113 |
|
114 |
<p>
|
115 |
+
<label for="ytcg_maxitems"><?php _e( 'Number of videos to show:', 'youtube-channel-gallery' ); ?></label>
|
116 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'ytcg_maxitems' ); ?>" name="<?php echo $this->get_field_name( 'ytcg_maxitems' ); ?>" type="text" value="<?php echo esc_attr( $ytcg_maxitems ); ?>" />
|
117 |
</p>
|
118 |
|
119 |
<p>
|
120 |
+
<label for="ytcg_video_width"><?php _e( 'Video width:', 'youtube-channel-gallery' ); ?></label>
|
121 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'ytcg_video_width' ); ?>" name="<?php echo $this->get_field_name( 'ytcg_video_width' ); ?>" type="text" value="<?php echo esc_attr( $ytcg_video_width ); ?>" />
|
122 |
</p>
|
123 |
|
124 |
<p>
|
125 |
+
<label for="ytcg_thumb_width"><?php _e( 'Thumbnail width:', 'youtube-channel-gallery' ); ?></label>
|
126 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'ytcg_thumb_width' ); ?>" name="<?php echo $this->get_field_name( 'ytcg_thumb_width' ); ?>" type="text" value="<?php echo esc_attr( $ytcg_thumb_width ); ?>" />
|
127 |
</p>
|
128 |
|
129 |
<p>
|
130 |
+
<label for="ytcg_thumb_columns"><?php _e( 'Thumbnail columns:', 'youtube-channel-gallery' ); ?></label>
|
131 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'ytcg_thumb_columns' ); ?>" name="<?php echo $this->get_field_name( 'ytcg_thumb_columns' ); ?>" type="text" value="<?php echo esc_attr( $ytcg_thumb_columns ); ?>" />
|
132 |
+
</p>
|
133 |
+
|
134 |
+
<p>
|
135 |
+
<label for="ytcg_theme"><?php _e( 'Theme:', 'youtube-channel-gallery' ); ?></label>
|
136 |
+
<select class="widefat" id="<?php echo $this->get_field_id( 'ytcg_theme' ); ?>" name="<?php echo $this->get_field_name( 'ytcg_theme' ); ?>">
|
137 |
+
<option value="dark"<?php selected( $instance['ytcg_theme'], 'dark' ); ?>><?php _e( 'Dark', 'youtube-channel-gallery' ); ?></option>
|
138 |
+
<option value="light"<?php selected( $instance['ytcg_theme'], 'light' ); ?>><?php _e( 'Light', 'youtube-channel-gallery' ); ?></option>
|
139 |
+
</select>
|
140 |
</p>
|
141 |
|
142 |
<?php
|
146 |
/*--------------------------------------------------*/
|
147 |
/* Private Functions
|
148 |
/*--------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
|
150 |
+
|
151 |
+
// load css or js
|
152 |
+
private function register_scripts_and_styles() {
|
153 |
+
wp_enqueue_script('youtube_player_api', 'http://www.youtube.com/player_api', false, false, true);
|
154 |
+
wp_enqueue_script('youtube-channel-gallery', plugins_url('/scripts.js', __FILE__), false, false, true);
|
155 |
+
wp_enqueue_style('youtube-channel-gallery', plugins_url('/styles.css', __FILE__), false, false, 'all');
|
156 |
+
}
|
157 |
+
|
158 |
+
} // class YoutubeChannelGallery_Widget
|
159 |
+
|
160 |
+
// register YoutubeChannelGallery_Widget widget
|
161 |
+
add_action( 'widgets_init', create_function( '', 'register_widget( "YoutubeChannelGallery_Widget" );' ) );
|
162 |
+
|
163 |
+
|
164 |
+
|
165 |
+
/*--------------------------------------------------*/
|
166 |
+
/* Functions
|
167 |
+
/*--------------------------------------------------*/
|
168 |
+
|
169 |
+
function ytcg_rss_markup($instance){
|
170 |
+
|
171 |
+
//$instance variables
|
172 |
+
$ytcg_user = apply_filters('ytcg_user', $instance['ytcg_user']);
|
173 |
+
$ytcg_link = apply_filters('ytcg_link', $instance['ytcg_link']);
|
174 |
+
$ytcg_maxitems = apply_filters('ytcg_maxitems', $instance['ytcg_maxitems']);
|
175 |
+
$ytcg_video_width = apply_filters('ytcg_video_width', $instance['ytcg_video_width']);
|
176 |
+
$ytcg_thumb_width = apply_filters('ytcg_thumb_width', $instance['ytcg_thumb_width']);
|
177 |
+
$ytcg_thumb_columns = apply_filters('ytcg_thumb_columns', $instance['ytcg_thumb_columns']);
|
178 |
+
$ytcg_theme = apply_filters('ytcg_theme', $instance['ytcg_theme']);
|
179 |
+
|
180 |
+
//defaults
|
181 |
+
$ytcg_video_width = ( $ytcg_video_width ) ? $ytcg_video_width : 250;
|
182 |
+
$ytcg_thumb_width = ( $ytcg_thumb_width ) ? $ytcg_thumb_width : 85;
|
183 |
+
$ytcg_thumb_columns = ( $ytcg_thumb_columns ) ? $ytcg_thumb_columns : 0;
|
184 |
+
$ytcg_theme = ( $ytcg_theme ) ? $ytcg_theme : 'dark';
|
185 |
+
|
186 |
+
//heights of video and thumbnail
|
187 |
+
$ytcg_video_heigh = round($ytcg_video_width/(16/9) + 32);
|
188 |
+
$ytcg_thumb_height = $ytcg_thumb_width*75/100; // 75% 'cos sizes of thumbnail in xml file are 480x360 and 120x90
|
189 |
+
|
190 |
+
if( $ytcg_user ) { // only if user name inserted
|
191 |
+
|
192 |
+
// links
|
193 |
+
$ytcg_rss_url = "http://gdata.youtube.com/feeds/api/users/" . $ytcg_user . "/uploads";
|
194 |
+
$ytcg_link_url = "http://www.youtube.com/user/" . $ytcg_user;
|
195 |
+
|
196 |
+
|
197 |
+
//RSS Feed
|
198 |
+
|
199 |
+
include_once(ABSPATH . WPINC . '/feed.php');
|
200 |
+
|
201 |
+
$rss = fetch_feed($ytcg_rss_url);
|
202 |
+
$maxitems = ( $ytcg_maxitems ) ? $ytcg_maxitems : 9;
|
203 |
+
$items = $rss->get_items(0, $maxitems);
|
204 |
+
|
205 |
+
|
206 |
+
if (!empty($items)) {
|
207 |
+
$i = 0;
|
208 |
+
$column = 0;
|
209 |
+
foreach ( $items as $item ) {
|
210 |
+
|
211 |
+
$url = $item->get_permalink();
|
212 |
+
$youtubeid = youtubeid($url);
|
213 |
+
$title = $item->get_title();
|
214 |
+
|
215 |
+
if ($enclosure = $item->get_enclosure()){
|
216 |
+
|
217 |
+
//extract thumbnail
|
218 |
+
//-----------------
|
219 |
+
|
220 |
+
//thumbnail index in xml
|
221 |
+
$big = 0;
|
222 |
+
$small = 1;
|
223 |
+
$size = $small;
|
224 |
+
if($ytcg_thumb_width > '120'){
|
225 |
+
$size = $big;
|
226 |
}
|
227 |
+
|
228 |
+
$allThumbs = $enclosure->get_thumbnails();
|
229 |
+
foreach ($allThumbs as $index => $allThumb) {
|
230 |
+
if ($index == $size) {
|
231 |
+
$thumb = $allThumbs[$index];
|
232 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
233 |
}
|
234 |
+
}
|
235 |
+
|
236 |
+
//Show me the player: iframe player
|
237 |
+
if($i == 0) {
|
238 |
+
//count the plugin occurrences on page
|
239 |
+
STATIC $plugincount = 0;
|
240 |
+
$plugincount++;
|
241 |
+
?>
|
242 |
+
<iframe id="ytcplayer<?php echo $plugincount; ?>" type="text/html" width="250" height="200" src="http://www.youtube.com/embed/<?php echo $youtubeid; ?>?&autoplay=0&theme=<?php echo $ytcg_theme; ?>&enablejsapi=1&origin=<?php echo site_url(); ?>" frameborder="0"></iframe>
|
243 |
+
<ul class="ytcgallery">
|
244 |
+
|
245 |
+
<?php
|
246 |
+
} // if player end
|
247 |
+
$i++;
|
248 |
+
|
249 |
+
$column++;
|
250 |
+
// list of thumbnail videos
|
251 |
?>
|
252 |
+
<li class="ytccell-<?php echo $column; ?>">
|
253 |
+
<a class="ytcthumb" href="javascript: ytcplayVideo('ytcplayer<?php echo $plugincount; ?>', '<?php echo $youtubeid; ?>');" alt="<?php echo $title; ?>" title="<?php echo $title; ?>" style="background-image: url(<?php echo $thumb; ?>);">
|
254 |
+
<div class="ytcplay" style="width: <?php echo $ytcg_thumb_width; ?>px; height: <?php echo $ytcg_thumb_height; ?>px"></div>
|
255 |
+
</a>
|
256 |
+
</li>
|
257 |
+
|
258 |
+
<?php
|
259 |
+
if($ytcg_thumb_columns !=0 && $column%$ytcg_thumb_columns === 0){
|
260 |
+
$column = 0;
|
261 |
+
}
|
262 |
+
} //foreach end
|
263 |
?>
|
264 |
+
</ul>
|
265 |
<?php
|
266 |
+
//link to youtube.com gallery
|
267 |
+
if( $ytcg_link) {
|
268 |
+
?>
|
269 |
+
<a href="<?php echo $ytcg_link_url ?>" class="more"><?php _e('Show more videos»', 'youtube-channel-gallery') ?></a>
|
270 |
+
<?php
|
271 |
+
}
|
272 |
}
|
273 |
+
} else {
|
274 |
+
?>
|
275 |
+
<p class="empty"><?php _e('There is no video to show.', 'youtube-channel-gallery') ?></p>
|
276 |
+
<?php
|
277 |
}
|
278 |
+
}
|
279 |
|
280 |
+
//parse youtube url to extract id
|
281 |
+
function youtubeid($url) {
|
282 |
+
$url_string = parse_url($url, PHP_URL_QUERY);
|
283 |
+
parse_str($url_string, $args);
|
284 |
+
return isset($args['v']) ? $args['v'] : false;
|
285 |
+
}
|
286 |
|
|
|
|
|
|
|
|
|
|
|
287 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
288 |
|
289 |
+
/*--------------------------------------------------*/
|
290 |
+
/* Shortcode
|
291 |
+
/*--------------------------------------------------*/
|
292 |
|
293 |
+
function YoutubeChannelGallery_Shortcode($atts) {
|
294 |
|
295 |
+
extract( shortcode_atts( array(
|
296 |
+
'user' => '',
|
297 |
+
'link' => '0',
|
298 |
+
'maxitems' => '9',
|
299 |
+
'videowidth' => '280',
|
300 |
+
'thumbwidth' => '85',
|
301 |
+
'thumbcolumns' => '0',
|
302 |
+
'theme' => 'dark',
|
303 |
+
), $atts ) );
|
304 |
|
305 |
+
$instance['ytcg_user'] = $user;
|
306 |
+
|
307 |
+
$instance['ytcg_link'] = $link;
|
308 |
+
$instance['ytcg_maxitems'] = $maxitems;
|
309 |
+
$instance['ytcg_video_width'] = $videowidth;
|
310 |
+
$instance['ytcg_thumb_width'] = $thumbwidth;
|
311 |
+
$instance['ytcg_thumb_columns'] = $thumbcolumns;
|
312 |
+
$instance['ytcg_theme'] = $theme;
|
313 |
|
|
|
|
|
314 |
|
315 |
+
ytcg_rss_markup($instance);
|
316 |
+
}
|
317 |
+
add_shortcode('Youtube_Channel_Gallery', 'YoutubeChannelGallery_Shortcode');
|
318 |
?>
|