Advertisement
rcain

wordpress neat-skype-status-pro plugin nssp-widget.php fixes

Sep 14th, 2012
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 15.61 KB | None | 0 0
  1. <?php
  2. //mod jrc 140912 - modded so as to correctly save, retrieve. render multiple widget instances (esp for use with widget-logic plugin, thence play noce with WPML plugin/multi-language environments ) -  see my mod mod marks below
  3.  
  4. //error_reporting(E_ERROR);
  5. add_action('admin_head', 'widget_options_script');
  6. function widget_options_script() {
  7. ?>
  8. <script type="text/javascript" >
  9. jQuery(document).ready(function() {
  10.     jQuery('.add_new_skypename').live("click", function(){
  11.         jQuery(this).before('<tr><td><input size="8" name="visible_names[]" type="text" value=""/></td><td><input  size="5" name="skypenames[]" type="text" value=""></td><td><select name="skype_click_actions[]"><option selected="selected" value="call">Call</option><option value="chat">Chat</option><option value="add">Add</option><option value="userinfo">Profile</option><option value="voicemail">V-mail</option><option value="sendfile">File</option><option  value="map">Map</option></select></td><td class="skypename_delete"><label>X</label></td></tr>');
  12.     });
  13.    
  14.     jQuery('.skypename_delete').live("click", function(){
  15.         jQuery(this).parent().remove();
  16.     });
  17.    
  18.     //Row
  19.    
  20.     jQuery('#radio_row').live('click', function() {
  21.         jQuery('.expl').hide();
  22.         jQuery('.expl_row').show();
  23.     });
  24.    
  25.     //Board
  26.    
  27.     jQuery('#radio_board').live('click', function() {
  28.         jQuery('.expl').hide();
  29.         jQuery('.expl_board').show();
  30.     });
  31.    
  32.     //Integrated
  33.    
  34.     jQuery('#radio_integrated').live('click', function() {
  35.         //$('input[type=radio]').attr('checked', 'checked');
  36.         jQuery('.expl').hide();
  37.         jQuery('.expl_integrated').show();
  38.     });
  39. })
  40. </script>
  41. <?php
  42. }
  43. class NSSP_Widget extends WP_Widget {
  44.     function NSSP_Widget() {
  45.         // Instantiate the parent object
  46.         parent::WP_Widget( false,
  47.             $name = __( 'Neat Skype Status PRO', GCI_TEXT_DOMAIN ),
  48.             array( 'description' => __( 'Add many skype status icons', NSSP_TEXT_DOMAIN ) ) );
  49.     }
  50.     function widget( $args, $instance ) {
  51.         // Widget output
  52.  
  53.         extract($args, EXTR_SKIP);
  54.         echo $before_widget;
  55.        
  56.         //Get skype name from options first (and later replace if it was provided
  57.  
  58. //mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
  59. //todo: get instance vals / args instead (only use global options for defaults, iff reqd)
  60. //orig:
  61. /*
  62.         $options = get_option( NSSP_GENERAL_OPTIONS_NAME );
  63.         extract($options);
  64.         $skypenames = get_option('nssp_widget_skypenames');
  65. */
  66.  
  67.         $default_options = get_option( NSSP_GENERAL_OPTIONS_NAME );
  68.         $default_widget_options = get_option('nssp_widget_options');
  69.         $default_skypenames = get_option('nssp_widget_skypenames');
  70.         $default_visible_names = get_option('nssp_widget_visible_names');
  71.         $default_skype_click_actions = get_option('nssp_widget_skype_click_actions');
  72.  
  73.         $instance = wp_parse_args( (array) $instance,
  74.             array(  'title' => '',
  75.                     'widget_type' => 'row',
  76.                     'style_class' => 'default.css',
  77.                     'float_side' => 'left',
  78.                     'floating' => 'static',
  79.                     'position_h' => 1,
  80.                     'position_v' => 200,
  81. //mod jrc 140912                   
  82.                     'options' => ( (is_array($default_widget_options))? $default_widget_options: array() ),
  83.                     'skypenames' => ( (is_array($default_skypenames))? $default_skypenames:  array() ),
  84.                     'visible_names' => ( (is_array($default_visible_names))? $default_visible_names:  array() ),
  85.                     'skype_click_actions' => ( (is_array($default_skype_click_actions))? $default_skype_click_actions:  array() )
  86. //end mod jrc 140912
  87.                     ) );
  88.        
  89.        
  90.         $skypenames = $instance['skypenames'];
  91.         $visible_names = $instance['visible_names'];
  92.         $skype_click_actions = $instance['skype_click_actions'];
  93.         $widget_options = $instance['options'];
  94.  
  95. //orig:     extract($options);     
  96. //end mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
  97.  
  98.         if (!empty($skypenames)){
  99. //mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
  100. /*orig:
  101.             $skype_click_actions = get_option('nssp_widget_skype_click_actions');
  102.             $visible_names = get_option('nssp_widget_visible_names');
  103.             $widget_options = get_option('nssp_widget_options');
  104. */
  105. //mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
  106.  
  107.             echo '<div style="position:'.$instance['floating'].';'.$instance['float_side'].':'.$instance['position_h'].'px !important;top:'.$instance['position_v'].'px" class="skype_widget">';
  108.             //Cycle through skypenames and get status HTML for each
  109.             switch($instance['widget_type']){
  110.                 case 'row':
  111.                     echo '<div><label>'.$instance['title'].'</label><br>';
  112.                     foreach ($skypenames as $key=>$skypename){
  113.                         if (!empty($skypename)) {
  114.                             //Print the HTML for each skypename
  115.                             $statusHTML = nssp_getStatusHTML($skypename, $skype_click_actions[$key]);
  116.                             echo '<span class="nssp_skypebutton nssp_widget" data-visible_name="'.$visible_names[$key].'" title="'.$skypename.':'.$skype_click_actions[$key].'">'.$statusHTML.'</span>';
  117.                         }
  118.                     }
  119.                     echo '</div>';
  120.                     break;
  121.                
  122.                 case 'board':
  123.                     echo '<div><label>'.$instance['title'].'</label><table>';
  124.                     foreach ($skypenames as $key=>$skypename){
  125.                         if (!empty($skypename)) {
  126.                             //Print the HTML for each skypename
  127.                             $statusHTML = nssp_getStatusHTML($skypename, $skype_click_actions[$key]);
  128.                             echo '<tr><td><span class="nssp_skypebutton nssp_widget" data-visible_name="'.$visible_names[$key].'" title="'.$skypename.':'.$skype_click_actions[$key].'">'.$statusHTML.'</span></td><td>'.$visible_names[$key].'</td></tr>';
  129.                         }
  130.                     }
  131.                     echo '</table></div>';
  132.                     break;
  133.                
  134.                 case 'integrated':
  135.                     echo '<div class="nssp_integrated" ><label>'.$instance['title'].'</label><br>';
  136.                     foreach ($skypenames as $key=>$skypename){
  137.                         if (!empty($skypename)) {
  138.                             //Print the HTML for each skypename
  139.                             $statusHTML = nssp_getStatusHTML($skypename, $skype_click_actions[$key]);
  140.                             //display only the first skype status, hide others.
  141.                             echo '<span '.(($key)?('style="display:none"'):('')).' class="nssp_skypebutton nssp_widget nssp_int" data-visible_name="'.$visible_names[$key].'" title="'.$skypename.':'.$skype_click_actions[$key].'">'.$statusHTML.'</span>';
  142.                         }
  143.                     }
  144.                     echo '</div>';
  145.                     break;
  146.             }
  147.             echo '</div>';
  148.        
  149.         }
  150.         echo $after_widget;
  151.    
  152.     }
  153.  
  154.     function update( $new_instance, $old_instance ) {
  155.        
  156. //mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!                   
  157. /*orig:        
  158.        
  159.         update_option('nssp_widget_skypenames',$_REQUEST['skypenames']);
  160.         update_option('nssp_widget_skype_click_actions',$_REQUEST['skype_click_actions']);
  161.         update_option('nssp_widget_visible_names',$_REQUEST['visible_names']);
  162.        
  163.         update_option('nssp_widget_options',$_REQUEST['widget_options']);
  164. */
  165. //end mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
  166.  
  167.         //Save widget options
  168.         $instance = $old_instance;
  169.             $instance['title'] = $new_instance['title'];
  170.             $instance['widget_type'] = $new_instance['widget_type'];
  171.            
  172.             $instance['floating'] = (isset($new_instance['floating']))?'fixed':'static';
  173.             $instance['float_side'] = $new_instance['float_side'];
  174.            
  175.             $instance['position_h'] = intval($new_instance['position_h']);
  176.             $instance['position_v'] = intval($new_instance['position_v']);
  177.  
  178. //mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
  179.             $instance['options'] = (!empty($new_instance['options'])) ? $new_instance['options'] : $_REQUEST['widget_options'] ;
  180.             $instance['skypenames'] = (!empty($new_instance['skypenames'])) ? $new_instance['skypenames'] : $_REQUEST['skypenames'] ;
  181.             $instance['visible_names'] = (!empty($new_instance['visible_names'])) ? $new_instance['visible_names'] : $_REQUEST['visible_names'] ;
  182.             $instance['skype_click_actions'] = (!empty($new_instance['skype_click_actions'])) ? $new_instance['skype_click_actions'] : $_REQUEST['skype_click_actions'] ;
  183. //end mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
  184.  
  185.         return $instance;
  186.     }
  187.  
  188.     function form( $instance ) {
  189.         // Output admin widget options form
  190.  
  191. //mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
  192. /*orig:
  193.         $instance = wp_parse_args( (array) $instance,
  194.             array(  'title' => '',
  195.                     'widget_type' => 'row',
  196.                     'style_class' => 'default.css',
  197.                     'float_side' => 'left',
  198.                     'floating' => 'static',
  199.                     'position_h' => 1,
  200.                     'position_v' => 200) );
  201. */
  202.  
  203. //mod jrc 140912 - new structure:
  204.         $default_widget_options = get_option('nssp_widget_options');
  205.         //$skypename = $instance['skypename'];
  206.         $default_skypenames = get_option('nssp_widget_skypenames');
  207.         $default_visible_names = get_option('nssp_widget_visible_names');
  208.         $default_skype_click_actions = get_option('nssp_widget_skype_click_actions');
  209. //end mod jrc 140912 - new structure:
  210.  
  211.  
  212.         $instance = wp_parse_args( (array) $instance,
  213.             array(  'title' => '',
  214.                     'widget_type' => 'row',
  215.                     'style_class' => 'default.css',
  216.                     'float_side' => 'left',
  217.                     'floating' => 'static',
  218.                     'position_h' => 1,
  219.                     'position_v' => 200,
  220. //mod jrc 140912                   
  221.                     'options' => ( (!empty($default_widget_options))? $default_widget_options: array() ),
  222.                     'skypenames' => ( (!empty($default_skypenames))? $default_skypenames:  array() ),
  223.                     'visible_names' => ( (!empty($default_visible_names))? $default_visible_names:  array() ),
  224.                     'skype_click_actions' => ( (!empty($default_skype_click_actions))? $default_skype_click_actions:  array() )
  225. //end mod jrc 140912
  226.                     ) );
  227. //end mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!       
  228.  
  229. //mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!       
  230. /*
  231.         //$skypename = $instance['skypename'];
  232.         $skypenames = get_option('nssp_widget_skypenames');
  233.         $visible_names = get_option('nssp_widget_visible_names');
  234.         $skype_click_actions = get_option('nssp_widget_skype_click_actions');
  235.         $widget_options = get_option('nssp_widget_options');
  236. */
  237.  
  238.         $skypenames = $instance['skypenames'];
  239.         $visible_names = $instance['visible_names'];
  240.         $skype_click_actions = $instance['skype_click_actions'];
  241.         $widget_options = $instance['widget_options'];
  242.  
  243. //end mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!       
  244.         ?>
  245.         <table class="type_table" >  
  246.         <tr>
  247.        
  248.         <td><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Widget title:'); ?></label> </td>
  249.         <td><input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $instance['title']; ?>" /></td>
  250.        
  251.         </tr>
  252.         <tr><td style="width:50%;vertical-align:top;"><b>Type:</b><br>
  253.        
  254.         <label id="radio_row"> <input type="radio" <?php if(($instance['widget_type'] == 'row') || empty($instance['widget_type'])) echo 'checked="checked"';?> name="<?php echo $this->get_field_name('widget_type'); ?>" value="row"/>Row</label><br>
  255.        
  256.         <label id="radio_board" ><input type="radio" <?php checked($instance['widget_type'], 'board'); ?> name="<?php echo $this->get_field_name('widget_type'); ?>" value="board" />Board</label><br>
  257.        
  258.         <label id="radio_integrated" ><input type="radio" <?php checked($instance['widget_type'], 'integrated'); ?> name="<?php echo $this->get_field_name('widget_type'); ?>" value="integrated"/>Integrated</label>
  259.        
  260.         </td>
  261.         <td><b>Result:</b><br>
  262.         <span class="expl expl_row" <?php if(!($instance['widget_type'] == 'row')) echo 'style="display:none"'; ?>>Widget <b>filled</b> with icons from left to right with breaks. Can be used to display a lot of icons.</span>
  263.         <span class="expl expl_board" <?php if(!($instance['widget_type'] == 'board')) echo 'style="display:none"'; ?>>Icons with visible name in <b>each line</b>. Can be used for nice representation.</span>
  264.         <span class="expl expl_integrated" <?php if(!($instance['widget_type'] == 'integrated')) echo 'style="display:none"'; ?>>One icon that changes automatically to display status for skype contact who is found online</span>
  265.         </td></tr>
  266.        
  267.         </table>
  268.         <div ><table><tr><th><label>Name</label></th><th><label>skype</label></th><th><label >action</label></th><th></th></tr>
  269.         <?php
  270.         if (!empty($skypenames)){
  271.             foreach ($skypenames as $key=>$skypename){
  272.             ?>
  273.             <tr>
  274.             <td><input size="8" name="visible_names[]" type="text" value="<?php echo attribute_escape($visible_names[$key]); ?>"/></td>
  275.             <td><input size="5" name="skypenames[]" type="text" value="<?php echo attribute_escape($skypenames[$key]); ?>"/></td>
  276.             <td><select name="skype_click_actions[]">
  277.                 <option <?php selected($skype_click_actions[$key], 'call'); ?> value='call'>Call</option>
  278.                 <option <?php selected($skype_click_actions[$key], 'chat'); ?> value='chat'>Chat</option>
  279.                 <option <?php selected($skype_click_actions[$key], 'add'); ?> value='add'>Add</option>
  280.                 <option <?php selected($skype_click_actions[$key], 'userinfo'); ?> value='userinfo'>Profile</option>
  281.                 <option <?php selected($skype_click_actions[$key], 'voicemail'); ?> value='voicemail'>Vmail</option>
  282.                 <option <?php selected($skype_click_actions[$key], 'sendfile'); ?> value='sendfile'>File</option>
  283.                 <option <?php selected($skype_click_actions[$key], 'map'); ?> value='map'>Map</option>
  284.             </select></td><td class="skypename_delete" ><label>X</label></td></tr>
  285.             <?php
  286.             }
  287.         } else{
  288.             ?>
  289.             <tr>
  290.             <td><input size="8" name="visible_names[]" type="text" value=""/></td>
  291.             <td><input size="5" name="skypenames[]" type="text" value=""/></td>
  292.             <td><select name="skype_click_actions[]">
  293.                 <option selected="selected" value='call'>Call</option>
  294.                 <option  value='chat'>Chat</option>
  295.                 <option  value='add'>Add</option>
  296.                 <option  value='userinfo'>Profile</option>
  297.                 <option  value='voicemail'>Vmail</option>
  298.                 <option  value='sendfile'>File</option>
  299.                 <option  value='map'>Map</option>
  300.             </select></td><td class="skypename_delete" ><label>X</label></td></tr>
  301.             <?php
  302.         }
  303.         ?>
  304.            
  305.             <tr class="add_new_skypename"><td colspan="4" ><label >Add new.. </label></td></tr>
  306.             </table>
  307.         <br>
  308.         <div><label>Style:</label>     
  309.         <select name="widget_options[style_class]">
  310.         <?php
  311.             $files = scandir('../wp-content/plugins/neat-skype-status-pro/css/');
  312.             foreach ($files as $num => $dir_name){
  313.                 if ($num > 1){
  314.                     $add = ($widget_options['style_class'] == $dir_name)?'selected':'';
  315.                     echo "<option $add value='$dir_name'>$dir_name</option>";
  316.                 }
  317.             }
  318.            
  319.         ?>
  320.         </select><br><br>
  321.         <table style="text-align:right"><tr><td colspan="2">
  322.         <label><input type="checkbox" <?php checked($instance['floating'], 'fixed'); ?> name="<?php echo $this->get_field_name('floating'); ?>" value="fixed" />Floating widget on</label>
  323.        
  324.         <label><input type="radio" <?php checked($instance['float_side'], 'left'); ?> name="<?php echo $this->get_field_name('float_side'); ?>" value="left"/>Left</label>
  325.        
  326.         <label><input type="radio" <?php checked($instance['float_side'], 'right'); ?> name="<?php echo $this->get_field_name('float_side'); ?>" value="right"/>Right</label>
  327.         </td></tr>
  328.        
  329.         <tr><td>
  330.         <label for="<?php echo $this->get_field_id('position_h'); ?>"><?php _e('Horizontal position:'); ?></label></td><td> <input size="4" id="<?php echo $this->get_field_id('position_h'); ?>" name="<?php echo $this->get_field_name('position_h'); ?>" type="text" value="<?php echo $instance['position_h']; ?>" />
  331.         </td></tr>
  332.         <tr><td>
  333.        
  334.         <label for="<?php echo $this->get_field_id('position_v'); ?>"><?php _e('Vertical position:'); ?></label> </td><td><input size="4" id="<?php echo $this->get_field_id('position_v'); ?>" name="<?php echo $this->get_field_name('position_v'); ?>" type="text" value="<?php echo $instance['position_v']; ?>" />
  335.         </td></tr>
  336.         </table>
  337.        
  338.         </div><br>
  339.        
  340.         <?php
  341.         echo '</div><a style="float:right" href="options-general.php?page=neat-skype-status-pro.php">' . __( 'Settings', NSSP_TEXT_DOMAIN ) . '</a><br>';
  342.          
  343.     }
  344. }
  345. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement