',$this->get_field_id($field),esc_html__($caption),$this->get_field_id($field),$this->get_field_name($field),esc_attr($value)); } public function form_input_option($field,$caption,$value,$options){ foreach ($options as $option) { if ($option == $value) {$select = 'selected="selected"'; } else {$select = '';} $opthtml = sprintf('%s',$opthtml,$select,$option ); } printf('

',$this->get_field_id($field),esc_html__($caption),$this->get_field_id($field),$this->get_field_name($field),$opthtml); } public function form_input_checkbox($field,$caption,$value){ if ($value) { $checked = 'checked="checked"'; } printf ('

',$this->get_field_id($field),$this->get_field_name($field),$checked,$this->get_field_id($field),esc_html__($caption)); } } class TwitterBadgeWidget extends AGC_Widget_Base { function TwitterBadgeWidget() { //Constructor $widget_ops = array('classname' => 'TwitterBadgeWidget', 'description' => __('A widget to show twitter badge and latest tweet')); $this->WP_Widget('TwitterBadgeWidget', 'Twitter Badge Widget', $widget_ops); if ( is_active_widget( false, false, $this->id_base ) && !is_admin() ) { do_action( 'TB_QueueScripts'); } } function queuescripts(){ wp_enqueue_script("jquery"); wp_enqueue_script("TwitterBadgeScript",plugins_url('/twitterbadgescript.js', __FILE__)); wp_enqueue_script("TwitterWidgets","http://platform.twitter.com/widgets.js",array(),'',true); //A localised version of the relative time function wp_enqueue_script("LocRelativeTime",plugins_url('/loc_relative_time.js', __FILE__)); wp_localize_script("LocRelativeTime", 'RelTimeL10n', array( 'RelTSeconds' => __('less than a minute ago'), 'RelTMinute' => __( 'about a minute ago' ), 'RelTMinutes' => __('%s minutes ago'), 'RelTHour' => __('about an hour ago'), 'RelTHours' => __('%s hours ago'), 'RelTDay' => __('yesterday'), 'RelTDays' => __('%s day ago') ) ); wp_enqueue_style("TwitterBadgeStyle",plugins_url('/twitterbadge.css', __FILE__)); } function widget($args, $instance) { // prints the widget to the user extract($args, EXTR_SKIP); $Twitter_ID = empty($instance['Twitter_ID']) ? ' ' : apply_filters('widget_Twitter_ID', $instance['Twitter_ID']); $Count = absint(empty($instance['Count']) ? 1 : $instance['Count']); $title = apply_filters('widget_title', $instance['title']); $Format = empty($instance['Format']) ? 'Narrow' : $instance['Format']; $InteractiveFollow = (bool) $instance['InteractiveFollow']; $InteractiveCount = (bool) $instance['InteractiveCount']; $Lang = WPLANG == '' ? 'EN' : WPLANG; $widget_id = $args['widget_id']; $div_id = 'twitter_status_'.$widget_id; echo $before_widget; if ( !empty( $title ) ) { echo $before_title . $title . $after_title; }; do_action( 'TB_RenderTwitterBadge', $div_id,$title,$Format,$Twitter_ID,$Count,$InteractiveFollow,$InteractiveCount,$Lang ); echo $after_widget; } function render($div_id,$title,$Format,$Twitter_ID,$Count,$InteractiveFollow,$InteractiveCount,$Lang) { $Follow = sprintf(esc_html__('Follow @%s'), $Twitter_ID); $url = esc_url('http://www.twitter.com/'.$Twitter_ID); //See http://dev.twitter.com/doc/get/statuses/user_timeline for other parameters that can be used here. $jsonurl = esc_url('http://api.twitter.com/1/statuses/user_timeline.json?screen_name='.$Twitter_ID).'&callback=?&trim_user=true&include_entities=false'; if ($Count > 20) { $jsonurl = $jsonurl.'&count='.$Count; } //See http://dev.twitter.com/pages/follow_button //You can get the langage from //define ('WPLANG', 'fr_FR'); //Follow @Workshopshed // //Follow @Workshopshed // echo '
'; echo '
 
'; echo '
'; echo '
'.$Follow.'
'; echo '
'; //Use alias for Javascript to avoid conflicts with other plugins and themes //http://api.jquery.com/jQuery.noConflict/ echo ''; } function update($new_instance, $old_instance) { //save the widget $instance = $old_instance; $instance['title'] = strip_tags($new_instance['title']); $instance['Twitter_ID'] = strip_tags($new_instance['Twitter_ID']); $count = absint(strip_tags($new_instance['Count'])); if ($count > 200) { $count = 200;} if ($count < 1) { $count = 1;} $instance['Count'] = $count; $instance['Format'] = strip_tags($new_instance['Format']); $instance['InteractiveFollow'] = isset($new_instance['InteractiveFollow']); if ((bool) $instance['InteractiveFollow']){ $instance['InteractiveCount'] = isset($new_instance['InteractiveCount']); } else{ $instance['InteractiveCount'] = false; } return $instance; } function form($instance) { //widgetform in backend $instance = wp_parse_args( (array) $instance, array( 'title' => 'Twitter Badge Widget', 'Twitter_ID' => '','Count' => 1, 'Format' => 'Narrow', 'InteractiveFollow' => false, 'InteractiveCount' => false ) ); $title = strip_tags($instance['title']); $Twitter_ID = strip_tags($instance['Twitter_ID']); $Count = absint($instance['Count']); $Format = $instance['Format']; $InteractiveFollow = (bool) $instance['InteractiveFollow']; $InteractiveCount = (bool) $instance['InteractiveCount']; //Not sure about localising the data values here... //See Wickett widget for a technique for giving a user a number box with spin buttons $this->form_input_text('title','Title',$title); $this->form_input_text('Twitter_ID','Twitter User ID',$Twitter_ID); $this->form_input_text('Count','Number of tweets to display (default = 1)',$Count); $this->form_input_option('Format','Format',$Format,array ('Narrow','Wide')); echo ''; printf('
%s',esc_html__('Interactive Follow')); $this->form_input_checkbox('InteractiveFollow','Enable',$InteractiveFollow); $this->form_input_checkbox('InteractiveCount','Include count',$InteractiveCount); echo '
'; } } add_action( 'widgets_init', create_function('', 'return register_widget("TwitterBadgeWidget");') ); add_action( 'TB_RenderTwitterBadge', array('TwitterBadgeWidget', 'render'),10,8 ); add_action( 'TB_QueueScripts', array('TwitterBadgeWidget', 'queuescripts'),10,0 ); ?>