aboutsummaryrefslogtreecommitdiffstats
path: root/GWP_bs3_panel_shortcode.php
diff options
context:
space:
mode:
Diffstat (limited to 'GWP_bs3_panel_shortcode.php')
-rw-r--r--GWP_bs3_panel_shortcode.php115
1 files changed, 115 insertions, 0 deletions
diff --git a/GWP_bs3_panel_shortcode.php b/GWP_bs3_panel_shortcode.php
new file mode 100644
index 0000000..1ef3774
--- /dev/null
+++ b/GWP_bs3_panel_shortcode.php
@@ -0,0 +1,115 @@
+<?php
+class GWP_bs3_panel_shortcode{
+ /**
+ * $shortcode_tag
+ * holds the name of the shortcode tag
+ * @var string
+ */
+ public $shortcode_tag = 'bs3_panel';
+
+ /**
+ * __construct
+ * class constructor will set the needed filter and action hooks
+ *
+ * @param array $args
+ */
+ function __construct($args = array()){
+ //add shortcode
+ add_shortcode($this->shortcode_tag, array($this, 'shortcode_handler'));
+
+ if (is_admin()){
+ add_action('admin_head', array($this, 'admin_head'));
+ add_action('admin_enqueue_scripts', array($this , 'admin_enqueue_scripts'));
+ }
+ }
+
+ /**
+ * shortcode_handler
+ * @param array $atts shortcode attributes
+ * @param string $content shortcode content
+ * @return string
+ */
+ function shortcode_handler($atts , $content = null){
+ // Attributes
+ extract( shortcode_atts(
+ array(
+ 'url' => 'no',
+ 'footer' => 'no',
+ 'code' => 'webm',
+ ), $atts )
+ );
+
+ //make sure the panel type is a valid styled type if not revert to wemb
+ $panel_types = array('ogv','webm','mp4');
+ $type = in_array($type, $panel_types)? $type: 'webm';
+
+ //start panel markup
+ $output = '<div class="panel panel-'.$type.'">';
+
+ //check if panel has a header
+ if ('no' != $header)
+ $output .= '<div class="panel-heading">'.$header.'</div>';
+
+ //add panel body content and allow shortcode in it
+ $output .= '<div class="panel-body">'.trim(do_shortcode($content)).'</div>';
+
+ //check if panel has a footer
+ if ('no' != $footer)
+ $output .= '<div class="panel-footer">'.$footer.'</div>';
+
+ //add closing div tag
+ $output .= '</div>';
+
+ //return shortcode output
+ return $output;
+ }
+
+ /**
+ * admin_head
+ * calls your functions into the correct filters
+ * @return void
+ */
+ function admin_head() {
+ // check user permissions
+ if (!current_user_can('edit_posts') && !current_user_can('edit_pages')) {
+ return;
+ }
+
+ // check if WYSIWYG is enabled
+ if ('true' == get_user_option('rich_editing')) {
+ add_filter('mce_external_plugins', array($this ,'mce_external_plugins'));
+ add_filter('mce_buttons', array($this, 'mce_buttons'));
+ }
+ }
+
+ /**
+ * mce_external_plugins
+ * Adds our tinymce plugin
+ * @param array $plugin_array
+ * @return array
+ */
+ function mce_external_plugins($plugin_array) {
+ $plugin_array[$this->shortcode_tag] = plugins_url('librevideojs/js/mce-button.min.js' , __FILE__ );
+ return $plugin_array;
+ }
+
+ /**
+ * mce_buttons
+ * Adds our tinymce button
+ * @param array $buttons
+ * @return array
+ */
+ function mce_buttons($buttons) {
+ array_push($buttons, $this->shortcode_tag);
+ return $buttons;
+ }
+
+ /**
+ * admin_enqueue_scripts
+ * Used to enqueue custom styles
+ * @return void
+ */
+ function admin_enqueue_scripts() {
+ wp_enqueue_style('bs3_panel_shortcode', plugins_url('librevideojs/css/mce-button.css' , __FILE__));
+ }
+}