Plugin Directory

Changeset 898873


Ignore:
Timestamp:
04/20/2014 07:41:40 PM (12 years ago)
Author:
maor
Message:

Added support for opening links in new window

File:
1 edited

Legend:

Unmodified
Added
Removed
  • optimized-dropdown-menus/trunk/optimized-dm.php

    r888001 r898873  
    4242        $nav_menu = isset( $instance['nav_menu'] ) ? $instance['nav_menu'] : '';
    4343        $html5    = isset( $instance['html5'] ) ? $instance['html5'] : '';
     44        $newindow = isset( $instance['new_window'] ) ? $instance['new_window'] : '';
    4445
    4546        // Get menus
     
    7677            <label for="<?php echo $this->get_field_id( 'html5' ); ?>">&nbsp;<?php echo sprintf( _x( 'Use HTML5 %s element?', '<nav>', 'optimized_dd' ), '<code>&lt;nav&gt;</code>' ); ?></label>
    7778        </p>
     79        <p>
     80            <input class="checkbox" type="checkbox" <?php echo ($newindow == 'on') ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'new_window' ); ?>" name="<?php echo $this->get_field_name( 'new_window' ); ?>" />
     81            <label for="<?php echo $this->get_field_id( 'new_window' ); ?>">&nbsp;<?php _e( 'Open links in new window?', 'optimized_dd' ); ?></label>
     82        </p>
    7883        <?php
    7984    }
    8085
    8186    function update( $new_instance, $old_instance ) {
    82         $instance['title'] = $new_instance['title'];
    83         $instance['nav_menu'] = (int) $new_instance['nav_menu'];
    84         $instance['html5'] = $new_instance['html5'];
     87        $instance['title']      = $new_instance['title'];
     88        $instance['nav_menu']   = (int) $new_instance['nav_menu'];
     89        $instance['html5']      = $new_instance['html5'];
     90        $instance['new_window'] = $new_instance['new_window'];
    8591        return $instance;
    8692    }
     
    9298        if ( !$nav_menu )
    9399            return;
     100
     101        // links open in a new tab?
     102        $link_scope_css_class = ( isset( $instance['new_window'] ) && 'on' == $instance['new_window'] ) ? 'odm-new-window' : 'odm-self-window';
    94103
    95104        $instance['title'] = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
     
    104113            'menu' => $nav_menu,
    105114            'container' => (($instance['html5'] == 'on') ? 'nav' : 'div'),
    106             'container_class' => "odm-widget",
     115            'container_class' => "odm-widget $link_scope_css_class",
    107116            'menu_id' => "odm-{$nav_menu->term_id}-widget"
    108117        );
     
    154163            /* ref: https://gist.github.com/1918689 */
    155164            jQuery(document).ready(function($) {
    156                 $('.odm-widget ul').each(function(){
     165                var $widget = $('.odm-widget');
     166
     167                $('ul', $widget).each(function(){
    157168                  var list = $(this);
    158169                  var select = $(document.createElement('select'))
     
    167178                  list.remove();
    168179                  $(document.createElement('button'))
    169                     .attr('onclick','window.location.href=jQuery(\'#'+$(this).attr('id')+'\').val();')
     180                    .attr('onclick',
     181                        $widget.hasClass('odm-new-window')
     182                            ? 'window.open(jQuery(\'#'+$(this).attr('id')+'\').val(), \'_blank\');'
     183                            : 'window.location.href=jQuery(\'#'+$(this).attr('id')+'\').val();')
    170184                    .html('Go')
    171185                    .insertAfter(select);
Note: See TracChangeset for help on using the changeset viewer.