Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //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
- //error_reporting(E_ERROR);
- add_action('admin_head', 'widget_options_script');
- function widget_options_script() {
- ?>
- <script type="text/javascript" >
- jQuery(document).ready(function() {
- jQuery('.add_new_skypename').live("click", function(){
- 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>');
- });
- jQuery('.skypename_delete').live("click", function(){
- jQuery(this).parent().remove();
- });
- //Row
- jQuery('#radio_row').live('click', function() {
- jQuery('.expl').hide();
- jQuery('.expl_row').show();
- });
- //Board
- jQuery('#radio_board').live('click', function() {
- jQuery('.expl').hide();
- jQuery('.expl_board').show();
- });
- //Integrated
- jQuery('#radio_integrated').live('click', function() {
- //$('input[type=radio]').attr('checked', 'checked');
- jQuery('.expl').hide();
- jQuery('.expl_integrated').show();
- });
- })
- </script>
- <?php
- }
- class NSSP_Widget extends WP_Widget {
- function NSSP_Widget() {
- // Instantiate the parent object
- parent::WP_Widget( false,
- $name = __( 'Neat Skype Status PRO', GCI_TEXT_DOMAIN ),
- array( 'description' => __( 'Add many skype status icons', NSSP_TEXT_DOMAIN ) ) );
- }
- function widget( $args, $instance ) {
- // Widget output
- extract($args, EXTR_SKIP);
- echo $before_widget;
- //Get skype name from options first (and later replace if it was provided
- //mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
- //todo: get instance vals / args instead (only use global options for defaults, iff reqd)
- //orig:
- /*
- $options = get_option( NSSP_GENERAL_OPTIONS_NAME );
- extract($options);
- $skypenames = get_option('nssp_widget_skypenames');
- */
- $default_options = get_option( NSSP_GENERAL_OPTIONS_NAME );
- $default_widget_options = get_option('nssp_widget_options');
- $default_skypenames = get_option('nssp_widget_skypenames');
- $default_visible_names = get_option('nssp_widget_visible_names');
- $default_skype_click_actions = get_option('nssp_widget_skype_click_actions');
- $instance = wp_parse_args( (array) $instance,
- array( 'title' => '',
- 'widget_type' => 'row',
- 'style_class' => 'default.css',
- 'float_side' => 'left',
- 'floating' => 'static',
- 'position_h' => 1,
- 'position_v' => 200,
- //mod jrc 140912
- 'options' => ( (is_array($default_widget_options))? $default_widget_options: array() ),
- 'skypenames' => ( (is_array($default_skypenames))? $default_skypenames: array() ),
- 'visible_names' => ( (is_array($default_visible_names))? $default_visible_names: array() ),
- 'skype_click_actions' => ( (is_array($default_skype_click_actions))? $default_skype_click_actions: array() )
- //end mod jrc 140912
- ) );
- $skypenames = $instance['skypenames'];
- $visible_names = $instance['visible_names'];
- $skype_click_actions = $instance['skype_click_actions'];
- $widget_options = $instance['options'];
- //orig: extract($options);
- //end mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
- if (!empty($skypenames)){
- //mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
- /*orig:
- $skype_click_actions = get_option('nssp_widget_skype_click_actions');
- $visible_names = get_option('nssp_widget_visible_names');
- $widget_options = get_option('nssp_widget_options');
- */
- //mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
- echo '<div style="position:'.$instance['floating'].';'.$instance['float_side'].':'.$instance['position_h'].'px !important;top:'.$instance['position_v'].'px" class="skype_widget">';
- //Cycle through skypenames and get status HTML for each
- switch($instance['widget_type']){
- case 'row':
- echo '<div><label>'.$instance['title'].'</label><br>';
- foreach ($skypenames as $key=>$skypename){
- if (!empty($skypename)) {
- //Print the HTML for each skypename
- $statusHTML = nssp_getStatusHTML($skypename, $skype_click_actions[$key]);
- echo '<span class="nssp_skypebutton nssp_widget" data-visible_name="'.$visible_names[$key].'" title="'.$skypename.':'.$skype_click_actions[$key].'">'.$statusHTML.'</span>';
- }
- }
- echo '</div>';
- break;
- case 'board':
- echo '<div><label>'.$instance['title'].'</label><table>';
- foreach ($skypenames as $key=>$skypename){
- if (!empty($skypename)) {
- //Print the HTML for each skypename
- $statusHTML = nssp_getStatusHTML($skypename, $skype_click_actions[$key]);
- 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>';
- }
- }
- echo '</table></div>';
- break;
- case 'integrated':
- echo '<div class="nssp_integrated" ><label>'.$instance['title'].'</label><br>';
- foreach ($skypenames as $key=>$skypename){
- if (!empty($skypename)) {
- //Print the HTML for each skypename
- $statusHTML = nssp_getStatusHTML($skypename, $skype_click_actions[$key]);
- //display only the first skype status, hide others.
- 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>';
- }
- }
- echo '</div>';
- break;
- }
- echo '</div>';
- }
- echo $after_widget;
- }
- function update( $new_instance, $old_instance ) {
- //mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
- /*orig:
- update_option('nssp_widget_skypenames',$_REQUEST['skypenames']);
- update_option('nssp_widget_skype_click_actions',$_REQUEST['skype_click_actions']);
- update_option('nssp_widget_visible_names',$_REQUEST['visible_names']);
- update_option('nssp_widget_options',$_REQUEST['widget_options']);
- */
- //end mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
- //Save widget options
- $instance = $old_instance;
- $instance['title'] = $new_instance['title'];
- $instance['widget_type'] = $new_instance['widget_type'];
- $instance['floating'] = (isset($new_instance['floating']))?'fixed':'static';
- $instance['float_side'] = $new_instance['float_side'];
- $instance['position_h'] = intval($new_instance['position_h']);
- $instance['position_v'] = intval($new_instance['position_v']);
- //mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
- $instance['options'] = (!empty($new_instance['options'])) ? $new_instance['options'] : $_REQUEST['widget_options'] ;
- $instance['skypenames'] = (!empty($new_instance['skypenames'])) ? $new_instance['skypenames'] : $_REQUEST['skypenames'] ;
- $instance['visible_names'] = (!empty($new_instance['visible_names'])) ? $new_instance['visible_names'] : $_REQUEST['visible_names'] ;
- $instance['skype_click_actions'] = (!empty($new_instance['skype_click_actions'])) ? $new_instance['skype_click_actions'] : $_REQUEST['skype_click_actions'] ;
- //end mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
- return $instance;
- }
- function form( $instance ) {
- // Output admin widget options form
- //mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
- /*orig:
- $instance = wp_parse_args( (array) $instance,
- array( 'title' => '',
- 'widget_type' => 'row',
- 'style_class' => 'default.css',
- 'float_side' => 'left',
- 'floating' => 'static',
- 'position_h' => 1,
- 'position_v' => 200) );
- */
- //mod jrc 140912 - new structure:
- $default_widget_options = get_option('nssp_widget_options');
- //$skypename = $instance['skypename'];
- $default_skypenames = get_option('nssp_widget_skypenames');
- $default_visible_names = get_option('nssp_widget_visible_names');
- $default_skype_click_actions = get_option('nssp_widget_skype_click_actions');
- //end mod jrc 140912 - new structure:
- $instance = wp_parse_args( (array) $instance,
- array( 'title' => '',
- 'widget_type' => 'row',
- 'style_class' => 'default.css',
- 'float_side' => 'left',
- 'floating' => 'static',
- 'position_h' => 1,
- 'position_v' => 200,
- //mod jrc 140912
- 'options' => ( (!empty($default_widget_options))? $default_widget_options: array() ),
- 'skypenames' => ( (!empty($default_skypenames))? $default_skypenames: array() ),
- 'visible_names' => ( (!empty($default_visible_names))? $default_visible_names: array() ),
- 'skype_click_actions' => ( (!empty($default_skype_click_actions))? $default_skype_click_actions: array() )
- //end mod jrc 140912
- ) );
- //end mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
- //mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
- /*
- //$skypename = $instance['skypename'];
- $skypenames = get_option('nssp_widget_skypenames');
- $visible_names = get_option('nssp_widget_visible_names');
- $skype_click_actions = get_option('nssp_widget_skype_click_actions');
- $widget_options = get_option('nssp_widget_options');
- */
- $skypenames = $instance['skypenames'];
- $visible_names = $instance['visible_names'];
- $skype_click_actions = $instance['skype_click_actions'];
- $widget_options = $instance['widget_options'];
- //end mod jrc 140912: fix for MULTIPLE widgets - each needs OWN options!
- ?>
- <table class="type_table" >
- <tr>
- <td><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Widget title:'); ?></label> </td>
- <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>
- </tr>
- <tr><td style="width:50%;vertical-align:top;"><b>Type:</b><br>
- <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>
- <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>
- <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>
- </td>
- <td><b>Result:</b><br>
- <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>
- <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>
- <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>
- </td></tr>
- </table>
- <div ><table><tr><th><label>Name</label></th><th><label>skype</label></th><th><label >action</label></th><th></th></tr>
- <?php
- if (!empty($skypenames)){
- foreach ($skypenames as $key=>$skypename){
- ?>
- <tr>
- <td><input size="8" name="visible_names[]" type="text" value="<?php echo attribute_escape($visible_names[$key]); ?>"/></td>
- <td><input size="5" name="skypenames[]" type="text" value="<?php echo attribute_escape($skypenames[$key]); ?>"/></td>
- <td><select name="skype_click_actions[]">
- <option <?php selected($skype_click_actions[$key], 'call'); ?> value='call'>Call</option>
- <option <?php selected($skype_click_actions[$key], 'chat'); ?> value='chat'>Chat</option>
- <option <?php selected($skype_click_actions[$key], 'add'); ?> value='add'>Add</option>
- <option <?php selected($skype_click_actions[$key], 'userinfo'); ?> value='userinfo'>Profile</option>
- <option <?php selected($skype_click_actions[$key], 'voicemail'); ?> value='voicemail'>Vmail</option>
- <option <?php selected($skype_click_actions[$key], 'sendfile'); ?> value='sendfile'>File</option>
- <option <?php selected($skype_click_actions[$key], 'map'); ?> value='map'>Map</option>
- </select></td><td class="skypename_delete" ><label>X</label></td></tr>
- <?php
- }
- } else{
- ?>
- <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'>Vmail</option>
- <option value='sendfile'>File</option>
- <option value='map'>Map</option>
- </select></td><td class="skypename_delete" ><label>X</label></td></tr>
- <?php
- }
- ?>
- <tr class="add_new_skypename"><td colspan="4" ><label >Add new.. </label></td></tr>
- </table>
- <br>
- <div><label>Style:</label>
- <select name="widget_options[style_class]">
- <?php
- $files = scandir('../wp-content/plugins/neat-skype-status-pro/css/');
- foreach ($files as $num => $dir_name){
- if ($num > 1){
- $add = ($widget_options['style_class'] == $dir_name)?'selected':'';
- echo "<option $add value='$dir_name'>$dir_name</option>";
- }
- }
- ?>
- </select><br><br>
- <table style="text-align:right"><tr><td colspan="2">
- <label><input type="checkbox" <?php checked($instance['floating'], 'fixed'); ?> name="<?php echo $this->get_field_name('floating'); ?>" value="fixed" />Floating widget on</label>
- <label><input type="radio" <?php checked($instance['float_side'], 'left'); ?> name="<?php echo $this->get_field_name('float_side'); ?>" value="left"/>Left</label>
- <label><input type="radio" <?php checked($instance['float_side'], 'right'); ?> name="<?php echo $this->get_field_name('float_side'); ?>" value="right"/>Right</label>
- </td></tr>
- <tr><td>
- <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']; ?>" />
- </td></tr>
- <tr><td>
- <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']; ?>" />
- </td></tr>
- </table>
- </div><br>
- <?php
- echo '</div><a style="float:right" href="options-general.php?page=neat-skype-status-pro.php">' . __( 'Settings', NSSP_TEXT_DOMAIN ) . '</a><br>';
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement