diff --git a/king-widgets/king-categories.php b/king-widgets/king-categories.php index 3ce2f1e..1433db2 100755 --- a/king-widgets/king-categories.php +++ b/king-widgets/king-categories.php @@ -1,6 +1,6 @@  1, // 'taxonomy' => 'category' ); - } /** * @desc the actual output of the widget diff --git a/king-widgets/king-text.php b/king-widgets/king-text.php index f975529..473c8cd 100644 --- a/king-widgets/king-text.php +++ b/king-widgets/king-text.php @@ -1,6 +1,6 @@ ', $text); - $partno = mt_rand(0, sizeof($textparts) - 1); - - if( !empty($show_category) ) - { - $post = $wp_query->post; - if ( in_category($category_id) ) - { - //if in category - echo ''."\n"; - echo $before_widget."\n"; - if(!empty($slide)) - { - king_height_slide('textslide'.$number,'text'.$number,1,'400'); - } - echo $before_widget_title."\n"; - echo $title ."\n"; - echo $after_widget_title."\n"; - if( !empty($use_php) ) - { - eval('?>'.$textparts[$partno]); - } - else - { - echo $textparts[$partno]; - } - echo $after_widget."\n"; - echo ''."\n"; - $already_out = 1; - } - }//end site area if - - // sitearea Output - if( !empty($show_on_site_area) ){ - if ( king_in_site_area($site_area, $site_area_id) && $already_out != 1) - { //if in the site area - echo ''."\n"; - echo $before_widget."\n"; - if(!empty($slide)) - { - king_height_slide('textslide'.$number,'text'.$number,1,'400'); - } - echo $before_widget_title."\n"; - echo $title ."\n"; - echo $after_widget_title."\n"; - if( !empty($use_php) ) - { - eval('?>'.$textparts[$partno]); - } - else - { - echo $textparts[$partno]; - } - echo $after_widget."\n"; - echo ''."\n"; - } - } - elseif(!empty($show_not_on_site_area)) - { - if (!king_in_site_area($site_area, $site_area_id) && $already_out != 1) - {# not in the site area - echo ''."\n"; - echo $before_widget."\n"; - if(!empty($slide)) - { - king_height_slide('textslide'.$number,'text'.$number,1,'400'); - } - echo $before_widget_title."\n"; - echo $title ."\n"; - echo $after_widget_title."\n"; - if( !empty($use_php) ) - { - eval('?>'.$textparts[$partno]); - } - else - { - echo $textparts[$partno]; - } - echo $after_widget."\n"; - echo ''."\n"; - } - } - - if(empty($show_not_on_site_area) && empty($show_on_site_area) && empty($show_category)) - {# alway show - echo ''."\n"; - echo $before_widget."\n"; - if(!empty($slide)){ - king_height_slide('textslide'.$number,'text'.$number,1,'400'); - } - echo $before_widget_title."\n"; - echo $title ."\n"; - echo $after_widget_title."\n"; - if( !empty($use_php) ) { - eval('?>'.$textparts[$partno]); - }else{ - echo $textparts[$partno]; - } - echo $after_widget."\n"; - echo ''."\n"; - } - } - - /** - * @desc Output of plugins edit form in the adminarea - * @author Georg Leciejewski - */ - function widget_king_text_control($number) { - - // Get our options and see if we're handling a form submission. - $options = $newoptions = get_option('widget_king_text'); - - if ( $_POST["king_text_submit_$number"] ) - { - //if defaults are choosen - if ( isset($_POST["king_text_defaults_$number"]) ) - { - /* no defaults atm */ - }elseif( $_POST["king_text_copy_$number"] !=='No' && $_POST["king_text_copy_$number"] != $number){ - $copy = $_POST["king_text_copy_$number"]; - $newoptions[$number] = array(); - foreach($options[$copy] as $key => $val){ - $newoptions[$number][$key] = $val; - } - }else{// insert new form values - - $newoptions[$number]['title'] = strip_tags(stripslashes($_POST["king_text_title_$number"])); - $newoptions[$number]['text'] = stripslashes($_POST["king_text_text_$number"]); - if ( !current_user_can('unfiltered_html') ) - $newoptions[$number]['text'] = stripslashes(wp_filter_post_kses($newoptions[$number]['text'])); - - $newoptions[$number]['use_php'] = isset($_POST["king_text_use_php_$number"]); - $newoptions[$number]['show_category'] = isset($_POST["king_text_showcategory_$number"]); - $newoptions[$number]['category_id'] = $_POST["king_text_category_id_$number"]; - $newoptions[$number]['slide'] = isset($_POST["king_text_slide_$number"]); - $newoptions[$number]['show_on_site_area'] = isset($_POST["king_text_show_on_site_area_$number"]); - $newoptions[$number]['show_not_on_site_area']= isset($_POST["king_text_show_not_on_site_area_$number"]); - $newoptions[$number]['site_area'] = $_POST["king_text_site_area_$number"]; - $newoptions[$number]['site_area_id'] = $_POST["king_text_site_area_id_$number"]; - $newoptions[$number]['before_widget'] = html_entity_decode($_POST["king_before_text_widget_$number"]); - $newoptions[$number]['after_widget'] = html_entity_decode($_POST["king_after_text_widget_$number"]); - $newoptions[$number]['before_widget_title'] = html_entity_decode($_POST["king_before_text_widget_title_$number"]); - $newoptions[$number]['after_widget_title'] = html_entity_decode($_POST["king_after_text_widget_title_$number"]); - - } - } - - if ( $options != $newoptions ) - { - $options = $newoptions; - update_option('widget_king_text', $options); - } +include_once (ABSPATH . 'wp-content/plugins/king-framework/lib/class-widget-form.php'); +require_once(ABSPATH . 'wp-content/plugins/king-framework/lib/king_widget_functions.php'); - $title = htmlspecialchars($options[$number]['title'], ENT_QUOTES); - $text = htmlspecialchars($options[$number]['text'], ENT_QUOTES); - $show_category = $options[$number]['show_category'] ? 'checked' : ''; - $category_id = $options[$number]['category_id']; - $use_php = $options[$number]['use_php'] ? 'checked' : ''; - $show_on_site_area = $options[$number]['show_on_site_area'] ? 'checked' : ''; - $show_not_on_site_area = $options[$number]['show_not_on_site_area'] ? 'checked' : ''; - $site_area = $options[$number]['site_area']; - $site_area_id = $options[$number]['site_area_id']; - $slide = !empty($options[$number]['slide'])? 'checked' : ''; - $before_widget = stripslashes(htmlentities($options[$number]['before_widget'])); - $after_widget = stripslashes(htmlentities($options[$number]['after_widget'])); - $before_widget_title= stripslashes(htmlentities($options[$number]['before_widget_title'])); - $after_widget_title = stripslashes(htmlentities($options[$number]['after_widget_title'])); - echo king_get_tab_start('text'.$number, array( - __('Basic Features', 'widgetKing'), - __('Show', 'widgetKing'), - __('HTML', 'widgetKing') - ) ); - # show title - echo king_get_textbox_p(array( - 'Label_Id_Name' =>"king_text_title_$number", - 'Description' => __('Title', 'widgetKing'), - 'Label_Title' => __('The title above your text menu', 'widgetKing'), - 'Value' => $title - )); - #use_php in textarea - echo king_get_checkbox_p(array( - 'Label_Id_Name' =>"king_text_use_php_$number", - 'Description' => __('Use PHP in Text', 'widgetKing'), - 'Label_Title' => __('If checked the inserted code is evaluated as php.PHP Code MUST be enclosed in <?php and ?> tags! You can also insert Wordpress Code if you have not found a Widget for it yet.', 'widgetKing'), - 'Value' =>$use_php)); - - # show child text - echo king_get_textarea_p(array( - 'Label_Id_Name' =>"king_text_text_$number", - 'Description' => __('Text or HTML', 'widgetKing'), - 'Label_Title' => __('Insert your Text Freely. This can be bannercode, images or whatever you like. The HTML gets stripped if you do not have the right to insert unfiltered html.', 'widgetKing'), - 'Value' => $text, - 'Class' =>'big' +/** + * Categories widget class + * + * @since 3.0.0 + */ +class WP_Widget_King_Text extends WP_Widget { + + function WP_Widget_King_Text() { + $widget_ops = array( 'classname' => 'widget_king_text', 'description' => __( "Better text widget with settings for php, where to show, widget html, import/export." ) ); + $this->WP_Widget('king_text', __('KingText'), $widget_ops); + } + + /** + * Output of the widget + * @param $args is an array of strings that help widgets to conform to + * the active theme: before_widget, before_title, after_widget, + * and after_title are the array keys. Default tags: li and h2. + * @param $opts + */ + function widget( $args, $opts ) { + global $wp_query; + extract( $args ); + $title = apply_filters('widget_title', empty( $opts['title'] ) ? '' : $opts['title'], $opts, $this->id_base); + + //take care of some escaped fields + $opts['before_widget'] = empty($opts['before_widget']) ? $before_widget : stripslashes($opts['before_widget']); + $opts['before_widget_title']= empty($opts['before_widget_title']) ? $before_title : stripslashes($opts['before_widget_title']); + $opts['after_widget_title'] = empty($opts['after_widget_title'] ) ? $after_title : stripslashes($opts['after_widget_title']) ; + $opts['after_widget'] = empty($opts['after_widget']) ? $after_widget : stripslashes($opts['after_widget']) ; + + $already_out = false; + + if( !empty($opts['show_category']) ) { + $post = $wp_query->post; + if ( king_in_category($opts['cat_ids']) ) { + $this->output($opts); + $already_out = true; + } + } + # sitearea Output + if( !empty($opts['show_on_site_area']) ) { + if ( king_in_site_area($opts['site_area'], $opts['site_area_id']) && !$already_out) { + # in the site area + $this->output($opts); + } + } elseif(!empty($opts['show_not_on_site_area'])) { + if (!king_in_site_area($opts['site_area'], $opts['site_area_id']) && !$already_out ) { + #not in the site area + $this->output($opts); + } + } + # always show + if( empty($opts['show_not_on_site_area']) && empty($opts['show_on_site_area']) && empty($opts['show_category']) ) { + $this->output($opts); + } + } + + /** + * Output the widgets settings form + */ + function form( $opts ) { + //get default settings + $opts = wp_parse_args( (array) $opts, $this->defaults() ); + $f = new WidgetForm(); + echo '
'; + # show title + echo $f->text (array( + 'name' => $this->get_field_name('title'), + 'id' => $this->get_field_id('title'), + 'descr' => __('Title', 'widgetKing'), + 'title' => __('The title above this widget', 'widgetKing'), + 'val' => esc_html($opts['title']) )); + + echo $f->checkbox(array( + 'name' => $this->get_field_name('use_php'), + 'id' => $this->get_field_id('use_php'), + 'descr' => __('Use PHP in Text', 'widgetKing'), + 'title' => __('If checked the inserted code is evaluated as php. PHP Code MUST be enclosed in <?php and ?> tags! You can also insert Wordpress Code if you have not found a Widget for it yet.', 'widgetKing'), + 'vale' => $use_php) ); +// if ( !current_user_can('unfiltered_html') ) +// $newoptions[$number]['text'] = stripslashes(wp_filter_post_kses($newoptions[$number]['text'])); + echo $f->textarea(array( + 'name' => $this->get_field_name('text'), + 'id' => $this->get_field_id('text'), + 'descr' => __('Text or HTML', 'widgetKing'), + 'title' => __('Insert your Text Freely. This can be bannercode, images or whatever you like. The HTML gets stripped if you do not have the right to insert unfiltered html.', 'widgetKing'), + 'val' => $opts['text'] )); - #copy - echo king_get_select_p(array( - 'Label_Id_Name' => "king_text_copy_$number", - 'Description' => __('Copy Settings from Widget No.', 'widgetKing'), - 'Label_Title' => __('Choose a Widget Number from which you want to copy the settings into this one. Make sure to choose the right widget, with some Options in it!', 'widgetKing'), - 'select_options'=> array('No','1', '2', '3', '4', '5', '6', '7', '8', '9','10','11','12','13','14','15','16','17','18','19'))); - - echo king_get_tab_section('text'.$number.'-1'); - # Where To Show Options Panel - widget_king_where_to_show('text',$number,$show_category,$category_id,$show_on_site_area,$show_not_on_site_area,$site_area,$site_area_id); - - echo king_get_tab_section('text'.$number.'-2'); - # Widget HTML - widget_king_htmloptions('text',$number,$before_widget,$before_widget_title,$after_widget_title,$after_widget); - - echo king_get_hidden("king_text_submit_$number",'1',"king_text_submit_$number"); - echo king_get_tab_end(); - } - - /** - * @desc takes the call from the number of boxes form and initiates new instances - * @author Georg Leciejewski - */ - function widget_king_text_setup() { - $options = $newoptions = get_option('widget_king_text'); - - if ( isset($_POST['king_text_number_submit']) ) { - $number = (int) $_POST['king_text_number']; - if ( $number > 20 ) $number = 20; - if ( $number < 1 ) $number = 1; - $newoptions['number'] = $number; - } - if ( $options != $newoptions ) { - $options = $newoptions; - update_option('widget_king_text', $options); - widget_king_text_register($options['number']); - } - } - - /** - * @desc Admin Form to select number of categories - * @author Georg Leciejewski - */ - function widget_king_text_page() { - $options = $newoptions = get_option('widget_king_text'); - echo king_get_start_form('wrap','','',$k_Method='post'); - ?> -

- '; - _e('How many Text Boxes would you like? ', 'widgetKing'); - echo king_get_select("king_text_number", $options['number'], array('1', '2', '3', '4', '5', '6', '7', '8', '9','10','11', '12', '13', '14', '15', '16', '17', '18','19','20'), 'king_text_number' ); - echo king_get_submit('king_text_number_submit','','king_text_number_submit'); - echo king_get_end_p(); - echo king_get_end_form (); - //echo ''; - } - - /** - * @desc Calls all other functions in this file initializing them - * @author Georg Leciejewski - */ - function widget_king_text_register() - { - - $options = get_option('widget_king_text'); - $number = $options['number']; - if ( $number < 1 ) $number = 1; - if ( $number > 20 ) $number = 20; - for ($i = 1; $i <= 20; $i++) { - $name = array('King Text %s', null, $i); - register_sidebar_widget($name, $i <= $number ? 'widget_king_text' : /* unregister */ '', $i); - register_widget_control($name, $i <= $number ? 'widget_king_text_control' : /* unregister */ '', 450, 400, $i); - } - - add_action('sidebar_admin_setup', 'widget_king_text_setup'); - add_action('sidebar_admin_page', 'widget_king_text_page'); - } - widget_king_text_register(); + echo '

'. __('Show', 'widgetKing') .'

'; + # Where To Show Options Panel + $f->where_to_show($this, $opts ); + echo '

'. __('HTML', 'widgetKing') .'

'; + # show html options + $f->html_opts($this, $opts ); + echo '

'. __('Import / Export', 'widgetKing') .'

'; + #import + $f->export_opts($this, $opts); + echo '
'; + + }#form + + + /** + * @desc the actual output of the widget + * @param array $data - widget options + */ + function output($data) { + echo ''."\n"; + echo $data['before_widget']."\n"; + echo $data['before_widget_title']."\n"; + echo $data['title'] ."\n"; + echo $data['after_widget_title']."\n"; + $use_php = $data['use_php'] ? 1 : 0; + + $textparts = explode('', $data['text']); + $partno = mt_rand(0, sizeof($textparts) - 1); -}# end init function + if( !empty($use_php) ) { + eval('?>'.$textparts[$partno]); + } + else { + echo $textparts[$partno]; + } + + echo $data['after_widget']."\n"; + echo ''."\n"; + return; + } + + /** + * Default options for the widget + * + */ + function defaults() { + return array( + 'use_php' => '', + //widget options + 'title' => '', + 'text' => '', + 'before_widget' => "
  • ", + 'after_widget' => addslashes("
  • "), + 'before_widget_title' => "

    ", + 'after_widget_title' => addslashes("