Plugin Directory

Changeset 2124183


Ignore:
Timestamp:
07/16/2019 07:43:13 PM (6 years ago)
Author:
supercleanse
Message:

Pretty Links 3.0

Location:
pretty-link/trunk
Files:
69 added
9 deleted
55 edited

Legend:

Unmodified
Added
Removed
  • pretty-link/trunk/app/controllers/PrliAppController.php

    r2023089 r2124183  
    22
    33class PrliAppController extends PrliBaseController {
     4  public $screens;
     5
     6  public function __construct() {
     7    $this->screens = array(
     8      'add-edit' => 'pretty-link',
     9      'list'     => 'edit-pretty-link',
     10      'category' => 'edit-pretty-link-category',
     11      'tag'      => 'edit-pretty-link-tag',
     12      'clicks'   => 'pretty-links_page_pretty-link-clicks',
     13      'reports'  => 'pretty-links_page_plp-reports',
     14      'tools'    => 'pretty-links_page_pretty-link-tools',
     15      'options'  => 'pretty-links_page_pretty-link-options',
     16      'imp-exp'  => 'pretty-links_page_plp-import-export',
     17      'activate' => 'pretty-links_page_pretty-link-updates'
     18    );
     19  }
     20
    421  public function load_hooks() {
    522    global $prli_options;
    623
    7     add_action('init', array($this, 'parse_standalone_request'));
     24    add_action('init', array($this, 'parse_standalone_request'), 15); // Later so that the category taxonomy exists for the custom bookmarklet
    825    add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts'));
    926    add_action('admin_menu', array($this, 'menu'), 3); //Hooking in earlier - there's a plugin out there somewhere breaking this action for later plugins
    1027
     28    add_action('custom_menu_order', array($this,'admin_menu_order'));
     29    add_action('menu_order', array($this,'admin_menu_order'));
     30    add_action('menu_order', array($this,'admin_submenu_order'));
     31
    1132    //Where the magic happens when not in wp-admin nor !GET request
    1233    if($_SERVER["REQUEST_METHOD"] == 'GET' && !is_admin()) {
    13       add_action('plugins_loaded', array($this, 'redirect'), 1); // Redirect
     34      add_action('init', array($this, 'redirect'), 1); // Redirect
    1435    }
    1536
     
    2445
    2546    add_filter( 'plugin_action_links_' . PRLI_PLUGIN_SLUG, array($this,'add_plugin_action_links') );
     47
     48    add_action('in_admin_header', array($this,'pl_admin_header'), 0);
     49
     50    // Admin footer text.
     51    add_filter( 'admin_footer_text', array( $this, 'admin_footer' ), 1, 2 );
     52  }
     53
     54  public function pl_admin_header() {
     55    global $current_screen;
     56
     57    if($this->on_pretty_link_page()) {
     58      ?>
     59      <div id="pl-admin-header"><img class="pl-logo" src="<?php echo PRLI_IMAGES_URL . '/pretty-links-logo-color-white.svg'; ?>" /></div>
     60      <?php
     61    }
     62  }
     63
     64  private function on_pretty_link_page() {
     65    global $current_screen;
     66    return (isset($current_screen->id) && strpos($current_screen->id,'pretty-link') !== false);
    2667  }
    2768
     
    2970    global $prli_options, $plp_options, $plp_update;
    3071
     72    $this->admin_separator();
     73
    3174    $role = 'manage_options';
    32     if(isset($plp_options->min_role))
     75    if(isset($plp_options->min_role)) {
    3376      $role = $plp_options->min_role;
    34 
    35     $prli_menu_hook = add_menu_page(
    36       __('Pretty Links | Manage Pretty Links', 'pretty-link'),
    37       __('Pretty Links', 'pretty-link'),
    38       $role, 'pretty-link',
    39       'PrliLinksController::route',
    40       PRLI_IMAGES_URL.'/pretty-link-small.png'
    41     );
    42 
    43     $prli_menu_hook = add_submenu_page(
    44       'pretty-link',
    45       __('Pretty Links | Manage Pretty Links', 'pretty-link'),
    46       __('Pretty Links', 'pretty-link'),
    47       $role, 'pretty-link',
    48       'PrliLinksController::route'
    49     );
    50 
    51     $prli_add_links_menu_hook = add_submenu_page(
    52       'pretty-link',
    53       __('Pretty Links | Add New Link', 'pretty-link'),
    54       __('Add New Link', 'pretty-link'),
    55       $role, 'add-new-pretty-link',
    56       'PrliLinksController::new_link'
    57     );
    58 
    59     $groups_ctrl = new PrliGroupsController();
    60     add_submenu_page(
    61       'pretty-link',
    62       __('Pretty Links | Groups', 'pretty-link'),
    63       __('Groups', 'pretty-link'),
    64       $role, 'pretty-link-groups',
    65       array( $groups_ctrl, 'route' )
    66     );
     77    }
     78
     79    $pl_link_cpt = PrliLink::$cpt;
     80
     81    if(!$plp_update->is_installed()) {
     82      add_submenu_page(
     83        "edit.php?post_type={$pl_link_cpt}",
     84        esc_html__('Link Categories [Pro Only]', 'pretty-link'),
     85        esc_html__('Categories [Pro]', 'pretty-link'),
     86        $role,
     87        "https://prettylinks.com/pl/main-menu/upgrade?categories",
     88        false
     89      );
     90      add_submenu_page(
     91        "edit.php?post_type={$pl_link_cpt}",
     92        esc_html__('Link Tags [Pro Only]', 'pretty-link'),
     93        esc_html__('Tags [Pro]', 'pretty-link'),
     94        $role,
     95        "https://prettylinks.com/pl/main-menu/upgrade?tags",
     96        false
     97      );
     98      add_submenu_page(
     99        "edit.php?post_type={$pl_link_cpt}",
     100        esc_html__('Link Reports [Pro Only]', 'pretty-link'),
     101        esc_html__('Reports [Pro]', 'pretty-link'),
     102        $role,
     103        "https://prettylinks.com/pl/main-menu/upgrade?reports",
     104        false
     105      );
     106      add_submenu_page(
     107        "edit.php?post_type={$pl_link_cpt}",
     108        esc_html__('Import / Export [Pro Only]', 'pretty-link'),
     109        esc_html__('Import / Export [Pro]', 'pretty-link'),
     110        $role,
     111        "https://prettylinks.com/pl/main-menu/upgrade?import-export",
     112        false
     113      );
     114    }
    67115
    68116    if( isset($prli_options->extended_tracking) and $prli_options->extended_tracking != 'count' ) {
    69117      $clicks_ctrl = new PrliClicksController();
    70       add_submenu_page(
    71         'pretty-link',
    72         __('Pretty Links | Clicks', 'pretty-link'),
    73         __('Clicks', 'pretty-link'),
    74         $role, 'pretty-link-clicks',
    75         array( $clicks_ctrl, 'route' )
    76       );
     118      add_submenu_page( "edit.php?post_type={$pl_link_cpt}", esc_html__('Pretty Links | Clicks', 'pretty-link'), esc_html__('Clicks', 'pretty-link'), $role, 'pretty-link-clicks', array( $clicks_ctrl, 'route' ) );
    77119    }
    78120
    79121    $routes_ctrl = new PrliToolsController();
    80     add_submenu_page(
    81       'pretty-link',
    82       __('Pretty Links | Tools', 'pretty-link'),
    83       __('Tools', 'pretty-link'),
    84       $role, 'pretty-link-tools',
    85       array($routes_ctrl,'route')
    86     );
     122    add_submenu_page( "edit.php?post_type={$pl_link_cpt}", esc_html__('Pretty Links | Tools', 'pretty-link'), esc_html__('Tools', 'pretty-link'), $role, 'pretty-link-tools', array($routes_ctrl,'route') );
    87123
    88124    $options_ctrl = new PrliOptionsController();
    89     add_submenu_page(
    90       'pretty-link',
    91       __('Pretty Links | Options', 'pretty-link'),
    92       __('Options', 'pretty-link'),
    93       $role, 'pretty-link-options',
    94       array( $options_ctrl, 'route' )
    95     );
     125    add_submenu_page( "edit.php?post_type={$pl_link_cpt}", esc_html__('Pretty Links | Options', 'pretty-link'), esc_html__('Options', 'pretty-link'), $role, 'pretty-link-options', array( $options_ctrl, 'route' ));
    96126
    97127    if(!defined('PRETTYLINK_LICENSE_KEY') && class_exists('PrliUpdateController')) {
    98128      if($plp_update->is_installed_and_activated()) {
    99         add_submenu_page( 'pretty-link', __('Activate Pro', 'pretty-link'), __('Activate Pro', 'pretty-link'), $role, 'pretty-link-updates', array($plp_update, 'route'));
     129        add_submenu_page( "edit.php?post_type={$pl_link_cpt}", esc_html__('Activate', 'pretty-link'), esc_html__('Activate', 'pretty-link'), $role, 'pretty-link-updates', array($plp_update, 'route'));
    100130      }
    101131      else if($plp_update->is_installed()) {
    102         add_submenu_page( 'pretty-link', __('Activate Pro', 'pretty-link'), '<span class="prli-menu-red"><b>'.__('Activate Pro', 'pretty-link').'</b></span>', $role, 'pretty-link-updates', array($plp_update, 'route'));
     132        add_submenu_page( "edit.php?post_type={$pl_link_cpt}", esc_html__('Activate', 'pretty-link'), '<span class="prli-menu-red"><b>'.esc_html__('Activate', 'pretty-link').'</b></span>', $role, 'pretty-link-updates', array($plp_update, 'route'));
    103133      }
    104134      else {
    105         add_submenu_page( 'pretty-link', __('Upgrade to Pro', 'pretty-link'), '<span class="prli-menu-red"><b>'.__('Upgrade to Pro', 'pretty-link').'</b></span>', $role, 'pretty-link-updates', array($plp_update, 'route'));
    106       }
    107     }
     135        add_submenu_page( "edit.php?post_type={$pl_link_cpt}", esc_html__('Upgrade', 'pretty-link'), '<span class="prli-menu-red"><b>'.esc_html__('Upgrade', 'pretty-link').'</b></span>', $role, 'pretty-link-updates', array($plp_update, 'route'));
     136      }
     137    }
     138
     139    $onboarding_ctrl = new PrliOnboardingController();
     140    add_submenu_page('options.php', __('Welcome', 'pretty-link'), null, $role, 'pretty-link-welcome', array($onboarding_ctrl, 'welcome_route'));
     141    add_submenu_page('options.php', __("What's New", 'pretty-link'), null, $role, 'pretty-link-update', array($onboarding_ctrl, 'update_route'));
     142  }
     143
     144  /**
     145   * Add a separator to the WordPress admin menus
     146   */
     147  public function admin_separator()
     148  {
     149    global $menu;
     150
     151    // Prevent duplicate separators when no core menu items exist
     152    if(!PrliUtils::is_admin()) { return; }
     153
     154    $menu[] = array('', 'read', 'separator-pretty-link', '', 'wp-menu-separator pretty-link');
     155  }
     156
     157  /*
     158   * Move our custom separator above our admin menu
     159   *
     160   * @param array $menu_order Menu Order
     161   * @return array Modified menu order
     162   */
     163  public function admin_menu_order($menu_order) {
     164    if(!$menu_order) {
     165      return true;
     166    }
     167
     168    if(!is_array($menu_order)) {
     169      return $menu_order;
     170    }
     171
     172    // Initialize our custom order array
     173    $new_menu_order = array();
     174
     175    // Menu values
     176    $second_sep   = 'separator2';
     177    $pl_link_cpt = PrliLink::$cpt;
     178    $custom_menus = array('separator-pretty-link', "edit.php?post_type={$pl_link_cpt}");
     179
     180    // Loop through menu order and do some rearranging
     181    foreach($menu_order as $item) {
     182      // Position Pretty Links menu above appearance
     183      if($second_sep == $item) {
     184        // Add our custom menus
     185        foreach($custom_menus as $custom_menu) {
     186          if(array_search($custom_menu, $menu_order)) {
     187            $new_menu_order[] = $custom_menu;
     188          }
     189        }
     190        // Add the appearance separator
     191        $new_menu_order[] = $second_sep;
     192      // Skip our menu items down below
     193      }
     194      elseif(!in_array($item, $custom_menus)) {
     195        $new_menu_order[] = $item;
     196      }
     197    }
     198
     199    // Return our custom order
     200    return $new_menu_order;
     201  }
     202
     203  //Organize the CPT's in our submenu
     204  public function admin_submenu_order($menu_order) {
     205    global $submenu;
     206
     207    static $run = false;
     208
     209    //no sense in running this everytime the hook gets called
     210    if($run) { return $menu_order; }
     211
     212    $pl_link_cpt = PrliLink::$cpt;
     213    $slug = "edit.php?post_type={$pl_link_cpt}";
     214
     215    //just return if there's no pretty-link menu available for the current screen
     216    if(!isset($submenu[$slug])) { return $menu_order; }
     217
     218    $run = true;
     219    $new_order = array();
     220
     221    $categories_ctax = class_exists('PlpLinkCategoriesController') ? PlpLinkCategoriesController::$ctax : 'pretty-link-category';
     222    $tags_ctax = class_exists('PlpLinkTagsController') ? PlpLinkTagsController::$ctax : 'pretty-link-tag';
     223
     224    $include_array = array(
     225      $slug,
     226      "post-new.php?post_type={$pl_link_cpt}",
     227      "edit-tags.php?taxonomy={$categories_ctax}&amp;post_type={$pl_link_cpt}",
     228      'https://prettylinks.com/pl/main-menu/upgrade?categories',
     229      "edit-tags.php?taxonomy={$tags_ctax}&amp;post_type={$pl_link_cpt}",
     230      'https://prettylinks.com/pl/main-menu/upgrade?tags',
     231      'pretty-link-clicks',
     232      'plp-reports',
     233      'https://prettylinks.com/pl/main-menu/upgrade?reports',
     234      'pretty-link-tools',
     235      'pretty-link-options',
     236      'plp-import-export',
     237      'https://prettylinks.com/pl/main-menu/upgrade?import-export',
     238      'pretty-link-updates'
     239    );
     240
     241    $i = (count($include_array) - 1);
     242
     243    foreach($submenu[$slug] as $sub) {
     244      $include_order = array_search($sub[2], $include_array);
     245
     246      if(false !== $include_order) {
     247        $new_order[$include_order] = $sub;
     248      }
     249      else {
     250        $new_order[$i++] = $sub;
     251      }
     252    }
     253
     254    ksort($new_order);
     255
     256    $submenu[$slug] = $new_order;
     257
     258    return $menu_order;
    108259  }
    109260
     
    114265
    115266    if($plp_update->is_installed_and_activated()) {
    116       $pllinks[] = '<a href="https://prettylinks.com/pl/plugin-actions/activated/docs" target="_blank">'.__('Docs', 'pretty-link').'</a>';
    117       $pllinks[] = '<a href="'. esc_url( get_admin_url(null, 'admin.php?page=pretty-link-updates') ) .'">'.__('Activate', 'pretty-link').'</a>';
     267      $pllinks[] = '<a href="https://prettylinks.com/pl/plugin-actions/activated/docs" target="_blank">'.esc_html__('Docs', 'pretty-link').'</a>';
     268      $pllinks[] = '<a href="'. esc_url( get_admin_url(null, 'admin.php?page=pretty-link-updates') ) .'">'.esc_html__('Activate', 'pretty-link').'</a>';
    118269    }
    119270    else if($plp_update->is_installed()) {
    120       $pllinks[] = '<a href="'. esc_url( get_admin_url(null, 'admin.php?page=pretty-link-updates') ) .'" class="prli-menu-green">'.__('Activate Pro License', 'pretty-link').'</a>';
    121       $pllinks[] = '<a href="https://prettylinks.com/pl/plugin-actions/installed/buy" target="_blank" class="prli-menu-red">'.__('Buy', 'pretty-link').'</a>';
    122       $pllinks[] = '<a href="https://prettylinks.com/pl/plugin-actions/installed/docs" target="_blank">'.__('Docs', 'pretty-link').'</a>';
     271      $pllinks[] = '<a href="'. esc_url( get_admin_url(null, 'admin.php?page=pretty-link-updates') ) .'" class="prli-menu-green">'.esc_html__('Activate Pro License', 'pretty-link').'</a>';
     272      $pllinks[] = '<a href="https://prettylinks.com/pl/plugin-actions/installed/buy" target="_blank" class="prli-menu-red">'.esc_html__('Buy', 'pretty-link').'</a>';
     273      $pllinks[] = '<a href="https://prettylinks.com/pl/plugin-actions/installed/docs" target="_blank">'.esc_html__('Docs', 'pretty-link').'</a>';
    123274    }
    124275    else {
    125       $pllinks[] = '<a href="https://prettylinks.com/pl/plugin-actions/lite/upgrade" class="prli-menu-red" target="_blank">'.__('Upgrade to Pro', 'pretty-link').'</a>';
    126       $pllinks[] = '<a href="'. esc_url( get_admin_url(null, 'admin.php?page=pretty-link-updates') ) .'" class="prli-menu-green">'.__('Activate Pro License', 'pretty-link').'</a>';
    127       $pllinks[] = '<a href="https://prettylinks.com/pl/plugin-actions/lite/docs" target="_blank">'.__('Docs', 'pretty-link').'</a>';
     276      $pllinks[] = '<a href="https://prettylinks.com/pl/plugin-actions/lite/upgrade" class="prli-menu-red" target="_blank">'.esc_html__('Upgrade to Pro', 'pretty-link').'</a>';
     277      $pllinks[] = '<a href="'. esc_url( get_admin_url(null, 'admin.php?page=pretty-link-updates') ) .'" class="prli-menu-green">'.esc_html__('Activate Pro License', 'pretty-link').'</a>';
     278      $pllinks[] = '<a href="https://prettylinks.com/pl/plugin-actions/lite/docs" target="_blank">'.esc_html__('Docs', 'pretty-link').'</a>';
    128279    }
    129280
     
    132283
    133284  public function enqueue_admin_scripts($hook) {
    134     global $wp_version;
    135 
    136     wp_enqueue_style( 'prli-fontello-animation',
    137                       PRLI_VENDOR_LIB_URL.'/fontello/css/animation.css',
    138                       array(), PRLI_VERSION );
     285    global $wp_version, $current_screen;
     286
    139287    wp_enqueue_style( 'prli-fontello-pretty-link',
    140288                      PRLI_VENDOR_LIB_URL.'/fontello/css/pretty-link.css',
    141                       array('prli-fontello-animation'), PRLI_VERSION );
     289                      array(), PRLI_VERSION );
     290
     291    if (version_compare($wp_version, '5.2', '>=')) {
     292      wp_enqueue_script(
     293        'pretty-link-richtext-format',
     294        PRLI_JS_URL . '/editor.js',
     295        ['wp-editor', 'wp-i18n', 'wp-element', 'wp-compose', 'wp-components'],
     296        PRLI_VERSION,
     297        true
     298      );
     299
     300      wp_localize_script('pretty-link-richtext-format', 'plEditor', array(
     301        'homeUrl' => trailingslashit(get_home_url())
     302      ));
     303    }
    142304
    143305    // If we're in 3.8 now then use a font for the admin image
     
    147309    }
    148310
    149     $wp_scripts = new WP_Scripts();
    150     $ui = $wp_scripts->query('jquery-ui-core');
    151     $url = "//ajax.googleapis.com/ajax/libs/jqueryui/{$ui->ver}/themes/smoothness/jquery-ui.css";
    152 
    153     if(strstr($hook, 'pretty-link') !== false) {
    154       wp_register_style('pl-ui-smoothness', $url);
    155       wp_register_style('prli-simplegrid', PRLI_CSS_URL.'/simplegrid.css', array(), PRLI_VERSION);
    156       wp_register_style('prli-social', PRLI_CSS_URL.'/social_buttons.css', array(), PRLI_VERSION);
     311    $is_pl_page           = $this->is_pretty_link_page();
     312    $is_link_page         = $this->is_pretty_link_link_page();
     313    $is_link_listing_page = $this->is_pretty_link_listing_page();
     314    $is_link_edit_page    = $this->is_pretty_link_edit_page();
     315    $is_link_new_page     = $this->is_pretty_link_new_page();
     316
     317    if( $is_pl_page || $is_link_page ) {
     318      $prli_admin_shared_prereqs = array( 'wp-pointer' );
     319
     320      if(!$is_link_listing_page) {
     321        wp_register_style('pl-ui-smoothness', PRLI_VENDOR_LIB_URL.'/jquery-ui/jquery-ui.min.css', array(), '1.11.4');
     322        wp_register_style('prli-simplegrid', PRLI_CSS_URL.'/simplegrid.css', array(), PRLI_VERSION);
     323        wp_register_style('prli-social', PRLI_CSS_URL.'/social_buttons.css', array(), PRLI_VERSION);
     324
     325        $prli_admin_shared_prereqs = array_merge(
     326          $prli_admin_shared_prereqs,
     327          array(
     328            'pl-ui-smoothness',
     329            'prli-simplegrid',
     330            'prli-social',
     331          )
     332        );
     333      }
     334
    157335      wp_enqueue_style(
    158336        'prli-admin-shared',
    159337        PRLI_CSS_URL.'/admin_shared.css',
    160         array(
    161           'pl-ui-smoothness',
    162           'wp-pointer',
    163           'prli-simplegrid',
    164           'prli-social',
    165         ),
     338        $prli_admin_shared_prereqs,
    166339        PRLI_VERSION
    167340      );
     
    192365        PRLI_VERSION
    193366      );
    194     }
    195 
    196     if( in_array( $hook, array( 'toplevel_page_pretty-link', 'pretty-links_page_add-new-pretty-link' ) ) ) {
     367
     368      if($is_link_edit_page || $is_link_new_page) {
     369        global $prli_link, $post;
     370
     371        $link_id = $prli_link->get_link_from_cpt($post->ID);
     372
     373        $args = array( 'args' => array(
     374          'id' => $link_id,
     375          'action' => 'validate_pretty_link',
     376          'security' => wp_create_nonce( 'validate_pretty_link' ),
     377          'update' => __('Update', 'pretty-link') // Use default text domain
     378        ) );
     379
     380        wp_enqueue_script( 'prli-link-form', PRLI_JS_URL . '/admin_link_form.js', array(), PRLI_VERSION);
     381        wp_localize_script( 'prli-link-form', 'PrliLinkValidation', $args );
     382      }
     383    }
     384
     385    if($current_screen->post_type == PrliLink::$cpt) {
    197386      wp_enqueue_style( 'prli-admin-links', PRLI_CSS_URL . '/prli-admin-links.css', array(), PRLI_VERSION );
    198387      //wp_enqueue_script( 'jquery-clippy', PRLI_JS_URL . '/jquery.clippy.js', array('jquery'), PRLI_VERSION );
     
    205394
    206395      wp_enqueue_script( 'prli-admin-link-list', PRLI_JS_URL . '/admin_link_list.js', array('jquery','clipboard-js','jquery-tooltipster'), PRLI_VERSION );
    207       //wp_localize_script( 'prli-admin-link-list', 'PrliLink', array('clippy_url' => PRLI_JS_URL.'/clippy.swf') );
    208     }
    209 
    210     if( $hook === 'pretty-links_page_pretty-link-groups' ) {
    211       wp_enqueue_style('pl-groups', PRLI_CSS_URL.'/admin_groups.css', null, PRLI_VERSION);
    212       wp_enqueue_script('pl-groups', PRLI_JS_URL.'/admin_groups.js', array('jquery'), PRLI_VERSION);
    213     }
    214 
    215     if( $hook === 'pretty-links_page_pretty-link-options' ) {
     396      $links_js_obj = array(
     397        'reset_str' => __('Are you sure you want to reset your Pretty Link? This will delete all of the statistical data about this Pretty Link in your database.', 'pretty-link'),
     398        'reset_security' => wp_create_nonce('reset_pretty_link')
     399      );
     400      wp_localize_script( 'prli-admin-link-list', 'PrliLinkList', $links_js_obj );
     401    }
     402
     403    if( preg_match('/_page_pretty-link-options$/', $hook) ) {
    216404      wp_enqueue_style('pl-options', PRLI_CSS_URL.'/admin_options.css', null, PRLI_VERSION);
    217405      wp_enqueue_script('pl-options', PRLI_JS_URL.'/admin_options.js', array('jquery'), PRLI_VERSION);
    218406    }
    219407
    220     if(in_array($hook, array(
    221         'toplevel_page_pretty-link',
    222         'pretty-links_page_add-new-pretty-link',
    223         'pretty-links_page_pretty-link-tools',
    224         'pretty-links_page_pretty-link-options'
    225        ))) {
     408    if( preg_match('/_page_pretty-link-tools$/', $hook) ||
     409        preg_match('/_page_pretty-link-options$/', $hook) ||
     410        $current_screen->post_type == PrliLink::$cpt ) {
    226411      wp_enqueue_style('pl-settings-table', PRLI_CSS_URL.'/settings_table.css', null, PRLI_VERSION);
    227412      wp_enqueue_script('pl-settings-table', PRLI_JS_URL.'/settings_table.js', array('jquery'), PRLI_VERSION);
    228413    }
    229414
    230     if( $hook === 'pretty-links_page_pretty-link-clicks' ) {
     415    if( preg_match('/_page_pretty-link-clicks$/', $hook) ) {
    231416      wp_enqueue_script('google-visualization-api', 'https://www.gstatic.com/charts/loader.js', null, PRLI_VERSION);
    232417      wp_enqueue_style('pl-reports', PRLI_CSS_URL.'/admin_reports.css', null, PRLI_VERSION);
     
    235420    }
    236421
    237     do_action('prli_load_admin_scripts', $hook);
     422
     423    $page_vars = compact('is_pl_page', 'is_link_page', 'is_link_listing_page', 'is_link_edit_page', 'is_link_new_page');
     424    do_action('prli_load_admin_scripts', $hook, $page_vars);
    238425  }
    239426
     
    260447
    261448    if($prli_db->should_install()) {
     449      // For some reason, install gets called multiple times so we're basically
     450      // adding a mutex here (ala a transient) to ensure this only gets run once
     451      $is_installing = get_transient('prli_installing');
     452      if($is_installing) {
     453        return;
     454      }
     455      else {
     456        // 30 minutes
     457        set_transient('prli_installing', 1, 60*30);
     458      }
     459
    262460      @ignore_user_abort(true);
    263461      @set_time_limit(0);
    264462      $prli_db->prli_install();
    265     }
    266 
    267     // Install Pro DB maybe
    268     if($plp_update->is_installed() && $prli_utils->should_install_pro_db()) {
    269       @ignore_user_abort(true);
    270       @set_time_limit(0);
    271       $prli_utils->install_pro_db();
     463
     464      delete_transient('prli_installing');
    272465    }
    273466  }
     
    282475      ?>
    283476
    284       <div class="updated notice notice-success"><p><strong><?php printf(__('You\'re almost done!<br/>%1$sFinish your Re-Install of Pretty Links Pro%2$s', 'pretty-link'), '<a href="'.$reinstall_url.'">', '</a>'); ?></strong></p></div>
     477      <div class="updated notice notice-success">
     478        <p>
     479          <strong>
     480            <?php
     481              printf(
     482                // translators: %1$s: br tag, %2$s: open link tag, %3$s: close link tag
     483                esc_html__('You\'re almost done!%1$s%2$sFinish your Re-Install of Pretty Links Pro%3$s', 'pretty-link'),
     484                '<br>',
     485                '<a href="'.esc_url($reinstall_url).'">',
     486                '</a>'
     487              );
     488            ?>
     489          </strong>
     490        </p>
     491      </div>
    285492      <?php
    286493    }
     
    289496      $prli_utils->uninstall_pro();
    290497      ?>
    291       <div class="updated notice notice-success is-dismissible"><p><strong><?php _e('Pretty Links Pro Successfully Uninstalled.' , 'pretty-link'); ?></strong></p></div>
     498      <div class="updated notice notice-success is-dismissible"><p><strong><?php esc_html_e('Pretty Links Pro Successfully Uninstalled.' , 'pretty-link'); ?></strong></p></div>
    292499      <?php
    293500    }
     
    331538  /********* DASHBOARD WIDGET ***********/
    332539  public function dashboard_widget_function() {
    333     global $prli_group,$prli_link,$prli_blogurl;
    334 
    335     $groups = $prli_group->getAll('',' ORDER BY name');
    336     $values = PrliLinksController::setup_new_vars($groups);
     540    global $prli_link, $prli_blogurl;
     541
     542    wp_enqueue_script('prli-quick-create', PRLI_JS_URL . '/quick_create.js', array('jquery'), PRLI_VERSION, true);
     543
     544    wp_localize_script('prli-quick-create', 'PrliQuickCreate', array(
     545      'nonce' => wp_create_nonce('prli_quick_create'),
     546      'ajaxUrl' => admin_url('admin-ajax.php'),
     547      'invalidServerResponse' => __('Invalid server response', 'pretty-link'),
     548      'ajaxError' => __('Ajax error', 'pretty-link')
     549    ));
    337550
    338551    require_once(PRLI_VIEWS_PATH . '/widgets/widget.php');
     
    350563
    351564    if(current_user_can($role)) {
    352       wp_add_dashboard_widget('prli_dashboard_widget', __('Pretty Link Quick Add', 'pretty-link'), array($this,'dashboard_widget_function'));
     565      wp_add_dashboard_widget('prli_dashboard_widget', esc_html__('Pretty Link Quick Add', 'pretty-link'), array($this,'dashboard_widget_function'));
    353566
    354567      // Globalize the metaboxes array, this holds all the widgets for wp-admin
     
    438651    update_option('prli_about_notice_version',PRLI_VERSION);
    439652  }
     653
     654  /**
     655   * When user is on a Pretty Links related admin page, display footer text
     656   * that graciously asks them to rate us.
     657   *
     658   * @since 1.4.0
     659   *
     660   * @param string $text
     661   *
     662   * @return string
     663   */
     664  public function admin_footer($text) {
     665    global $current_screen;
     666
     667    if(!empty($current_screen->id) && $this->is_pretty_link_page()) {
     668      $url  = 'https://prettylinks.com/pl/footer/review';
     669      $text = sprintf(
     670        wp_kses(
     671          /* translators: $1$s - Pretty Links plugin name; $2$s - WP.org review link; $3$s - WP.org review link. */
     672          __('Enjoying %1$s? Please rate <a href="%2$s" target="_blank" rel="noopener noreferrer">&#9733;&#9733;&#9733;&#9733;&#9733;</a> on <a href="%3$s" target="_blank" rel="noopener">WordPress.org</a> to help us spread the word. Thanks from the Pretty Links team!', 'pretty-link'),
     673          array(
     674            'a' => array(
     675              'href'   => array(),
     676              'target' => array(),
     677              'rel'    => array(),
     678            ),
     679          )
     680        ),
     681        '<strong>Pretty Links</strong>',
     682        $url,
     683        $url
     684      );
     685    }
     686
     687    return $text;
     688  }
     689
     690  private function get_screen_id($hook=null) {
     691    if(is_null($hook)) {
     692      $screen = get_current_screen();
     693      $hook = $screen->id;
     694    }
     695
     696    return $hook;
     697  }
     698
     699  public function is_pretty_link_page() {
     700    $hook = $this->get_screen_id();
     701    return (strstr($hook, 'pretty-link') !== false);
     702  }
     703
     704  public function is_pretty_link_link_page() {
     705    $hook = $this->get_screen_id();
     706    return in_array($hook, array($this->screens['add-edit'],$this->screens['list']));
     707  }
     708
     709  public function is_pretty_link_listing_page() {
     710    $hook = $this->get_screen_id();
     711    return ($hook == $this->screens['list']);
     712  }
     713
     714  public function is_pretty_link_edit_page() {
     715    $hook = $this->get_screen_id();
     716    return ($hook == $this->screens['add-edit']);
     717  }
     718
     719  public function is_pretty_link_edit_tags() {
     720    $hook = $this->get_screen_id();
     721    return ($hook == $this->screens['tag']);
     722  }
     723
     724  public function is_pretty_link_new_page() {
     725    $hook = $this->get_screen_id();
     726    return ($hook == $this->screens['add-edit']);
     727  }
    440728}
  • pretty-link/trunk/app/controllers/PrliClicksController.php

    r2108490 r2124183  
    4545
    4646  public function admin_page() {
    47     global $wpdb, $prli_options, $prli_click, $prli_group, $prli_link, $prli_utils, $page_size;
     47    global $wpdb, $prli_options, $prli_click, $prli_link, $prli_utils, $page_size;
    4848
    4949    $page_params = '';
    5050
    5151    $params = $prli_click->get_params_array();
    52     $page_size = (isset($_REQUEST['size']) && is_numeric($_REQUEST['size']) && !empty($_REQUEST['size']))?$_REQUEST['size']:10;
     52    $page_size = (isset($_REQUEST['size']) && is_numeric($_REQUEST['size']) && !empty($_REQUEST['size']))?(int)$_REQUEST['size']:10;
    5353    $current_page = $params['paged'];
    5454
     
    9595      $where_clause .= $wpdb->prepare(" AND cl.vuid=%s",$params['vuid']);
    9696      $page_params .= "&vuid={$params['vuid']}";
    97     }
    98     else if(!empty($params['group'])) {
    99       $group = $prli_group->getOne($params['group']);
    100       $link_name = __('Group: ', 'pretty-link') . esc_html($group->name);
    101       $where_clause .= $wpdb->prepare(" AND cl.link_id IN (SELECT id FROM {$prli_link->table_name} WHERE group_id=%d)",$params['group']);
    102       $page_params .= "&group={$params['group']}";
    10397    }
    10498    else {
     
    134128
    135129  public function click_report() {
    136     global $wpdb, $prli_click, $prli_group, $prli_link;
     130    global $wpdb, $prli_click, $prli_link;
    137131
    138132    if(isset($_GET['l'])) {
    139       $l = PrliClicksHelper::esc_spreadsheet_cell( $_GET['l'] );
     133      $l = (int) $_GET['l'];
    140134      $where_clause = $wpdb->prepare(" link_id=%d",$l );
    141135      $link_name = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}prli_links WHERE id=%d",$l));
     
    143137    }
    144138    else if(isset($_GET['ip'])) {
    145       $ip = PrliClicksHelper::esc_spreadsheet_cell( $_GET['ip'] );
    146       $link_name = "ip_addr_{$ip}";
    147       $where_clause = $wpdb->prepare(" cl.ip=%s",$ip);
     139      $ip = stripslashes($_GET['ip']);
     140      if (filter_var($ip, FILTER_VALIDATE_IP)) {
     141        $ip = PrliClicksHelper::esc_spreadsheet_cell($ip);
     142        $link_name = "ip_addr_{$ip}";
     143        $where_clause = $wpdb->prepare(" cl.ip=%s", $ip);
     144      }
    148145    }
    149146    else if(isset($_GET['vuid'])) {
    150       $vuid = PrliClicksHelper::esc_spreadsheet_cell( $_GET['vuid'] );
     147      $vuid = sanitize_key(stripslashes($_GET['vuid']));
    151148      $link_name = "visitor_{$vuid}";
    152149      $where_clause = $wpdb->prepare(" cl.vuid=%s",$vuid);
    153150    }
    154     else if(isset($_GET['group'])) {
    155       $group_val = PrliClicksHelper::esc_spreadsheet_cell( $_GET['group'] );
    156       $group = $prli_group->getOne($group_val);
    157       $link_name = "group_{$group->name}";
    158       $where_clause .= $wpdb->prepare(" cl.link_id IN (SELECT id FROM {$prli_link->table_name} WHERE group_id=%d)", $group_val);
    159     }
    160151    else {
    161152      $link_name = "all_links";
     
    168159    $record_count = $prli_click->getRecordCount($where_clause);
    169160    $page_count   = (int)ceil($record_count / $this->max_rows_per_file);
    170     $prli_page = esc_html($_GET['prli_page']);
     161    $prli_page = isset($_GET['prli_page']) ? (int) $_GET['prli_page'] : 1;
    171162    $hmin = 0;
    172163
     
    194185
    195186    if(isset($_GET['l'])) {
    196       $l = PrliClicksHelper::esc_spreadsheet_cell( $_GET['l'] );
     187      $l = (int) $_GET['l'];
    197188      $where_clause = $wpdb->prepare(' link_id=%d', $l);
    198189      $link_name = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}prli_links WHERE id=%d", $l));
     
    201192    }
    202193    else if(isset($_GET['ip'])) {
    203       $ip = PrliClicksHelper::esc_spreadsheet_cell( $_GET['ip'] );
    204       $link_name = "ip_addr_{$ip}";
    205       $where_clause = $wpdb->prepare(' cl.ip=%s', $ip);
    206       $param_string .= "ip={$ip}";
     194      $ip = stripslashes($_GET['ip']);
     195      if (filter_var($ip, FILTER_VALIDATE_IP)) {
     196        $ip = PrliClicksHelper::esc_spreadsheet_cell($_GET['ip']);
     197        $link_name = "ip_addr_{$ip}";
     198        $where_clause = $wpdb->prepare(' cl.ip=%s', $ip);
     199        $param_string .= "ip={$ip}";
     200      }
    207201    }
    208202    else if(isset($_GET['vuid'])) {
    209       $vuid = PrliClicksHelper::esc_spreadsheet_cell( $_GET['vuid'] );
     203      $vuid = sanitize_key(stripslashes($_GET['vuid']));
    210204      $link_name = "visitor_{$vuid}";
    211205      $where_clause = $wpdb->prepare(' cl.vuid=%s', $vuid);
    212206      $param_string .= "vuid={$vuid}";
    213207    }
    214     else if(isset($_GET['group'])) {
    215       $group_val = PrliClicksHelper::esc_spreadsheet_cell( $_GET['group'] );
    216       $group = $prli_group->getOne($group_val);
    217       $link_name = "group_{$group->name}";
    218       $where_clause .= $wpdb->prepare(" cl.link_id IN (SELECT id FROM {$prli_link->table_name} WHERE group_id=%d)", $group_val);
    219       $param_string .= "group={$group_val}";
    220     }
    221208    else {
    222209      $link_name = 'all_links';
  • pretty-link/trunk/app/controllers/PrliLinksController.php

    r2078274 r2124183  
    33class PrliLinksController extends PrliBaseController {
    44  public function load_hooks() {
    5     // nothing yet
     5    add_action( 'init', array($this, 'register_post_type'), 0);
    66    add_filter( 'cron_schedules', array($this,'intervals') );
    77    add_action( 'prli_cleanup_visitor_locks_worker', array($this,'cleanup_visitor_locks') );
    88    add_action( 'admin_init', array($this,'maybe_cleanup_visitor_locks') );
     9    add_action( 'pre_get_posts', array($this, 'set_custom_post_types_admin_order') );
     10    add_action( 'save_post', array($this, 'save_cpt_link') );
     11    add_action( 'deleted_post', array($this, 'delete_cpt_link') );
     12    add_action( 'transition_post_status', array($this, 'transition_cpt_status'), 10, 3 );
     13    add_action( 'transition_post_status', array($this, 'transition_cpt_status'), 10, 3 );
     14    add_action( 'wp_ajax_validate_pretty_link', array($this,'ajax_validate_pretty_link') );
     15    add_action( 'wp_ajax_reset_pretty_link', array($this,'ajax_reset_pretty_link') );
     16    add_action( 'wp_ajax_prli_quick_create', array($this, 'ajax_quick_create'));
     17
     18    // Legacy Groups Filter
     19    add_action( 'restrict_manage_posts', array($this,'filter_links_by_legacy_groups') );
     20    add_filter( 'posts_join', array($this,'join_links_to_posts') );
     21    add_filter( 'posts_where', array($this,'where_links_belong_to_legacy_group') );
     22
     23    // Alter Quick Links Menu (subsubsub)
     24    add_filter( 'views_edit-'.PrliLink::$cpt, array($this,'modify_quick_links') );
     25
     26    // Sort links by custom columns
     27    add_action( 'posts_orderby', array($this, 'custom_link_sort_orderby') );
     28
     29    add_action('manage_'.PrliLink::$cpt.'_posts_custom_column', array($this,'custom_columns'), 10, 2);
     30    add_filter('manage_edit-'.PrliLink::$cpt.'_columns', array($this,'columns'));
     31    add_filter('manage_edit-'.PrliLink::$cpt.'_sortable_columns', array($this,'sortable_columns'));
     32
     33    add_filter('post_row_actions', array($this, 'add_row_actions'), 10, 2);
    934
    1035    if(!($snapshot_timestamp = wp_next_scheduled('prli_cleanup_visitor_locks_worker'))) {
     
    1338  }
    1439
    15   public static function route() {
    16     $action = (isset($_REQUEST['action'])?$_REQUEST['action']:null);
    17     $params = self::get_params_array();
    18 
    19     // "new()" has its own submenu so we don't need a route for it here
    20     switch($action) {
    21       // POST ACTIONS
    22       case 'quick-create':
    23         return self::quick_create_link($params);
    24       case 'create':
    25         return self::create_link($params);
    26       case 'bulk-update':
    27         return self::bulk_update_links($params);
    28       case 'update':
    29         return self::update_link($params);
    30       case 'reset':
    31         return self::reset_link($params);
    32       case 'destroy':
    33         return self::destroy_link($params);
    34       case 'bulk-destroy':
    35         return self::bulk_destroy_links($params);
    36 
    37       // GET ACTIONS
    38       case 'edit':
    39         return self::edit_link($params);
    40       default:
    41         return self::list_links($params);
    42     }
    43   }
    44 
    45   public static function list_links($params) {
    46     global $wpdb, $prli_group;
    47 
    48     if(!empty($params['message']))
    49       $prli_message = $params['message'];
    50     else if(empty($params['group']))
    51       $prli_message = PrliUtils::get_main_message();
    52     else
    53       $prli_message = __("Links in Group: ", 'pretty-link') . $wpdb->get_var("SELECT name FROM " . $prli_group->table_name . " WHERE id=".$params['group']);
    54 
    55     self::display_links_list($params, $prli_message);
    56   }
    57 
    58   public static function new_link($params) {
    59     global $prli_group;
    60     $groups = $prli_group->getAll('',' ORDER BY name');
    61     $values = self::setup_new_vars($groups);
    62 
    63     require_once PRLI_VIEWS_PATH . '/links/new.php';
    64   }
    65 
    66   public static function quick_create_link($params) {
    67     global $prli_link, $prli_group, $prli_options;
    68 
    69     if ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'update-options' ) ) {
    70       die( 'Security Check' );
    71     }
    72 
    73     $params = self::get_params_array();
    74     $errors = $prli_link->validate($_POST);
    75 
    76     if( count($errors) > 0 )
    77     {
    78       $groups = $prli_group->getAll('',' ORDER BY name');
    79       $values = self::setup_new_vars($groups);
    80       require_once PRLI_VIEWS_PATH . '/links/new.php';
    81     }
    82     else
    83     {
    84       unset($_POST['param_forwarding']);
    85 
    86       $_POST['param_struct'] = '';
    87       $_POST['name'] = '';
    88       $_POST['description'] = '';
    89       if( $prli_options->link_track_me )
    90         $_POST['track_me'] = 'on';
    91       if( $prli_options->link_nofollow )
    92         $_POST['nofollow'] = 'on';
    93 
    94       $_POST['redirect_type'] = $prli_options->link_redirect_type;
    95 
    96       $record = $prli_link->create( $_POST );
    97 
    98       $prli_message = __("Your Pretty Link was Successfully Created", 'pretty-link');
    99       self::display_links_list($params, $prli_message, '', 1);
    100     }
    101   }
    102 
    103   public static function create_link($params) {
    104     global $prli_link, $prli_group;
    105 
    106     if ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'update-options' ) ) {
    107       die( 'Security Check' );
    108     }
    109 
    110     $errors = $prli_link->validate($_POST);
    111 
    112     $errors = apply_filters( "prli_validate_link", $errors );
    113 
    114     if(count($errors) > 0) {
    115       $groups = $prli_group->getAll('',' ORDER BY name');
    116       $values = self::setup_new_vars($groups);
    117       require_once PRLI_VIEWS_PATH . '/links/new.php';
     40  public function register_post_type() {
     41    $args = array(
     42      'labels' => array(
     43        'name'               => esc_html__('Pretty Links', 'pretty-link'),
     44        'singular_name'      => esc_html__('Pretty Link', 'pretty-link'),
     45        'add_new_item'       => esc_html__('Add New Pretty Link', 'pretty-link'),
     46        'edit_item'          => esc_html__('Edit Pretty Link', 'pretty-link'),
     47        'new_item'           => esc_html__('New Pretty Link', 'pretty-link'),
     48        'view_item'          => esc_html__('View Pretty Link', 'pretty-link'),
     49        'search_items'       => esc_html__('Search Pretty Links', 'pretty-link'),
     50        'not_found'          => esc_html__('No Pretty Links found', 'pretty-link'),
     51        'not_found_in_trash' => esc_html__('No Pretty Links found in Trash', 'pretty-link'),
     52        'parent_item_colon'  => esc_html__('Parent Pretty Link:', 'pretty-link')
     53      ),
     54      'public' => false,
     55      'menu_position' => 55,
     56      'show_ui' => true,
     57      'show_in_admin_bar' => true,
     58      'exclude_from_search' => true,
     59      'can_export' => false,
     60      'capability_type' => 'page',
     61      'hierarchical' => false,
     62      'register_meta_box_cb' => array($this, 'add_meta_boxes'),
     63      'rewrite' => false,
     64      'supports' => array('title')
     65    );
     66
     67    $plp_update = new PrliUpdateController();
     68
     69    if($plp_update->is_installed()) {
     70      $args['taxonomies'] = array(
     71        PlpLinkCategoriesController::$ctax,
     72        PlpLinkTagsController::$ctax,
     73      );
     74    }
     75
     76    register_post_type( PrliLink::$cpt, $args );
     77  }
     78
     79  /** Ensures that the CPT Links will list properly by post_date DESC */
     80  public function set_custom_post_types_admin_order($wp_query) {
     81    if( is_admin() && isset($wp_query->query['post_type']) ) {
     82      // Get the post type from the query
     83      $post_type = $wp_query->query['post_type'];
     84
     85      if( $post_type == PrliLink::$cpt ) {
     86        $wp_query->set( 'orderby', 'post_date' );
     87        $wp_query->set( 'order', 'DESC' );
     88      }
     89    }
     90  }
     91
     92  public function add_meta_boxes() {
     93    global $post_id, $prli_link;
     94
     95    add_meta_box(
     96      'pretty-link-settings',
     97      esc_html__('Pretty Link Settings', 'pretty-link'),
     98      array($this, 'link_meta_box'), PrliLink::$cpt,
     99      'normal', 'high'
     100    );
     101
     102    remove_meta_box('slugdiv', PrliLink::$cpt, 'normal');
     103  }
     104
     105  public function link_meta_box($post, $args) {
     106    global $prli_link, $pagenow;
     107
     108    if($pagenow==='post-new.php') {
     109      $values = $this->setup_new_vars();
    118110    }
    119111    else {
    120       $record = $prli_link->create( $_POST );
    121 
    122       do_action('prli_update_link', $record);
    123 
    124       $prli_message = __("Your Pretty Link was Successfully Created", 'pretty-link');
    125       self::display_links_list($params, $prli_message, '', 1);
    126     }
    127   }
    128 
    129   public static function edit_link($params) {
    130     global $prli_group, $prli_link;
    131 
    132     $groups = $prli_group->getAll('',' ORDER BY name');
    133 
    134     $record = $prli_link->getOne( $params['id'] );
    135     $values = self::setup_edit_vars($groups,$record);
    136     $id = $params['id'];
    137     require_once(PRLI_VIEWS_PATH . '/links/edit.php');
    138   }
    139 
    140   public static function update_link($params) {
    141     global $prli_link, $prli_group;
    142 
    143     if ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'update-options' ) ) {
    144       die( 'Security Check' );
    145     }
    146 
    147     $errors = $prli_link->validate($_POST);
    148     $id = $_POST['id'];
    149 
    150     $errors = apply_filters( "prli_validate_link", $errors );
    151 
    152     if( count($errors) > 0 ) {
    153       $groups = $prli_group->getAll('',' ORDER BY name');
    154       $record = $prli_link->getOne( $params['id'] );
    155       $values = self::setup_edit_vars($groups,$record);
    156       require_once(PRLI_VIEWS_PATH . '/links/edit.php');
    157     }
    158     else {
    159       $record = $prli_link->update( $_POST['id'], $_POST );
    160 
    161       do_action('prli_update_link', $id);
    162 
    163       $prli_message = __('Your Pretty Link was Successfully Updated', 'pretty-link');
    164       self::display_links_list($params, $prli_message, '', 1);
    165     }
    166   }
    167 
    168   public static function bulk_update_links() {
    169     global $prli_link;
    170     if(wp_verify_nonce($_REQUEST['_wpnonce'],'prli_bulk_update') and isset($_REQUEST['ids'])) {
    171 
    172       $ids = $_REQUEST['ids'];
    173       $params = $_REQUEST['bu'];
    174 
    175       $prli_link->bulk_update( $ids, $params );
    176       do_action('prli-bulk-action-update',$ids,$params);
    177 
    178       $message = __('Your links were updated successfully', 'pretty-link');
    179 
    180       //self::display_links_list(self::get_params_array(),$message);
    181 
    182       // We're going to redirect here to avoid having a big nasty url that
    183       // can cause problems when doing several activities in a row.
    184 
    185       // Scrub message, action, _wpnonce, ids & bu vars from the arguments and redirect
    186       $request_uri = preg_replace( '#\&(message|action|_wpnonce|ids|bu\[[^\]]*?\])=[^\&]*#', '', $_SERVER['REQUEST_URI'] );
    187 
    188       // we assume here that some arguments are set ... if not this value is meaningless anyway
    189       $request_uri .= '&message=' . urlencode($message);
    190       $redirect_url = 'http' . (empty($_SERVER['HTTPS'])?'':'s') . '://' . $_SERVER['HTTP_HOST'] . $request_uri;
    191 
    192       require PRLI_VIEWS_PATH . '/shared/jsredirect.php';
    193     }
    194     else {
    195       wp_die(__('You are unauthorized to view this page.', 'pretty-link'));
    196     }
    197   }
    198 
    199   public static function reset_link($params) {
    200     global $prli_link;
    201 
    202     if ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'link-actions' ) ) {
    203       die( 'Security Check' );
    204     }
    205 
    206     $prli_link->reset( $params['id'] );
    207     $prli_message = __("Your Pretty Link was Successfully Reset", 'pretty-link');
    208     self::display_links_list($params, $prli_message, '', 1);
    209   }
    210 
    211   public static function destroy_link($params) {
    212     global $prli_link;
    213 
    214     if ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'link-actions' ) ) {
    215       die( 'Security Check' );
    216     }
    217 
    218     $prli_link->destroy( $params['id'] );
    219     $prli_message = __("Your Pretty Link was Successfully Destroyed", 'pretty-link');
    220     self::display_links_list($params, $prli_message, '', 1);
    221   }
    222 
    223   public static function bulk_destroy_links($params) {
    224     global $prli_link;
    225     if(wp_verify_nonce($_REQUEST['_wpnonce'],'prli_bulk_update') and isset($_REQUEST['ids'])) {
    226       $ids = explode(',', $_REQUEST['ids']);
    227 
    228       foreach($ids as $id) {
    229         $prli_link->destroy( $id );
    230       }
    231 
    232       $message = __('Your links were deleted successfully', 'pretty-link');
    233 
    234       //self::display_links_list($params,$message);
    235       // Scrub message, action, _wpnonce, ids & bu vars from the arguments and redirect
    236       $request_uri = preg_replace( '#\&(message|action|_wpnonce|ids|bu\[[^\]]*?\])=[^\&]*#', '', $_SERVER['REQUEST_URI'] );
    237 
    238       // we assume here that some arguments are set ... if not this value is meaningless anyway
    239       $request_uri .= '&message=' . urlencode($message);
    240       $redirect_url = 'http' . (empty($_SERVER['HTTPS'])?'':'s') . '://' . $_SERVER['HTTP_HOST'] . $request_uri;
    241 
    242       require PRLI_VIEWS_PATH . '/shared/jsredirect.php';
    243     }
    244     else {
    245       wp_die(__('You are unauthorized to view this page.', 'pretty-link'));
    246     }
    247   }
    248 
    249   public static function display_links_list($params, $prli_message, $page_params_ov = false, $current_page_ov = false) {
    250     global $wpdb, $prli_utils, $prli_click, $prli_group, $prli_link, $page_size, $prli_options;
    251 
    252     $controller_file = basename(__FILE__);
    253 
    254     $where_clause = '';
    255     $page_params  = '';
    256     $group_param = '';
    257 
    258     $page_size = (isset($_REQUEST['size']) && is_numeric($_REQUEST['size']) && !empty($_REQUEST['size']))?$_REQUEST['size']:10;
    259 
    260     if(!empty($params['group'])) {
    261       $where_clause = " group_id=" . $params['group'];
    262       $group_param = "&group={$params['group']}";
    263       $page_params = "&group=" . $params['group'];
    264     }
    265 
    266     $link_vars = self::get_link_sort_vars($params, $where_clause);
    267 
    268     if($current_page_ov)
    269       $current_page = $current_page_ov;
    270     else
    271       $current_page = $params['paged'];
    272 
    273     if($page_params_ov)
    274       $page_params .= $page_params_ov;
    275     else
    276       $page_params .= $link_vars['page_params'];
    277 
    278     $sort_str = $link_vars['sort_str'];
    279     $sdir_str = $link_vars['sdir_str'];
    280     $search_str = $link_vars['search_str'];
    281 
    282     $record_count = $prli_link->getRecordCount($link_vars['where_clause']);
    283     $page_count = $prli_link->getPageCount($page_size,$link_vars['where_clause']);
    284     $links = $prli_link->getPage($current_page,$page_size,$link_vars['where_clause'],$link_vars['order_by']);
    285     $page_last_record = $prli_utils->getLastRecordNum($record_count,$current_page,$page_size);
    286     $page_first_record = $prli_utils->getFirstRecordNum($record_count,$current_page,$page_size);
    287 
    288     require_once(PRLI_VIEWS_PATH . '/links/list.php');
    289   }
    290 
    291   public static function get_link_sort_vars($params,$where_clause = '')
    292   {
    293     $order_by = '';
    294     $page_params = '';
    295 
    296     // These will have to work with both get and post
    297     $sort_str = $params['sort'];
    298     $sdir_str = $params['sdir'];
    299     $search_str = $params['search'];
    300 
    301     // Insert search string
    302     if(!empty($search_str))
    303     {
    304       $search_params = explode(" ", $search_str);
    305 
    306       foreach($search_params as $search_param)
    307       {
    308         if(!empty($where_clause))
    309           $where_clause .= " AND";
    310 
    311         $where_clause .= " (li.name like '%$search_param%' OR li.slug like '%$search_param%' OR li.url like '%$search_param%' OR li.created_at like '%$search_param%')";
    312       }
    313 
    314       $page_params .="&search=$search_str";
    315     }
    316 
    317     // make sure page params stay correct
    318     if(!empty($sort_str))
    319       $page_params .="&sort=$sort_str";
    320 
    321     if(!empty($sdir_str))
    322       $page_params .= "&sdir=$sdir_str";
    323 
    324     // Add order by clause
    325     switch($sort_str)
    326     {
    327       case "name":
    328       case "clicks":
    329       case "group_name":
    330       case "slug":
    331         $order_by .= " ORDER BY $sort_str";
    332         break;
    333       default:
    334         $order_by .= " ORDER BY created_at";
    335     }
    336 
    337     // Toggle ascending / descending
    338     if((empty($sort_str) and empty($sdir_str)) or $sdir_str == 'desc')
    339     {
    340       $order_by .= ' DESC';
    341       $sdir_str = 'desc';
    342     }
    343     else
    344       $sdir_str = 'asc';
    345 
    346     return array('order_by' => $order_by,
    347                  'sort_str' => $sort_str,
    348                  'sdir_str' => $sdir_str,
    349                  'search_str' => $search_str,
    350                  'where_clause' => $where_clause,
    351                  'page_params' => $page_params);
    352   }
    353 
    354   // Set defaults and grab get or post of each possible param
    355   public static function get_params_array() {
    356     return array(
    357        'action'     => (isset($_REQUEST['action'])?$_REQUEST['action']:'list'),
    358        'regenerate' => (isset($_REQUEST['regenerate'])?$_REQUEST['regenerate']:'false'),
    359        'id'         => (isset($_REQUEST['id'])?$_REQUEST['id']:''),
    360        'group_name' => (isset($_REQUEST['group_name'])?$_REQUEST['group_name']:''),
    361        'paged'      => (isset($_REQUEST['paged'])?$_REQUEST['paged']:1),
    362        'group'      => (isset($_REQUEST['group'])?(int)$_REQUEST['group']:''),
    363        'search'     => (isset($_REQUEST['search'])?$_REQUEST['search']:''),
    364        'sort'       => (isset($_REQUEST['sort'])?$_REQUEST['sort']:''),
    365        'sdir'       => (isset($_REQUEST['sdir'])?$_REQUEST['sdir']:''),
    366        'message'    => (isset($_REQUEST['message'])?sanitize_text_field($_REQUEST['message']):'')
    367     );
    368   }
    369 
    370   public static function setup_new_vars($groups) {
     112      $id = $prli_link->get_link_from_cpt($post->ID);
     113      $link = $prli_link->getOne($id);
     114      $values = $this->setup_edit_vars($link);
     115    }
     116    require PRLI_VIEWS_PATH . '/links/form.php';
     117  }
     118
     119  public function setup_new_vars() {
    371120    global $prli_link, $prli_options;
    372121
    373122    $values = array();
    374     $values['url'] =  (isset($_REQUEST['url'])?$_REQUEST['url']:'');
    375     $values['slug'] = (isset($_REQUEST['slug'])?$_REQUEST['slug']:$prli_link->generateValidSlug());
    376     $values['name'] = htmlspecialchars((isset($_REQUEST['name'])?stripslashes($_REQUEST['name']):''));
    377     $values['description'] = htmlspecialchars((isset($_REQUEST['description'])?stripslashes($_REQUEST['description']):''));
    378 
    379     $values['track_me'] = (((isset($_REQUEST['track_me']) and $_REQUEST['track_me'] == 'on') or (!isset($_REQUEST['track_me']) and $prli_options->link_track_me == '1'))?'checked="true"':'');
    380     $values['nofollow'] = (((isset($_REQUEST['nofollow']) and $_REQUEST['nofollow'] == 'on') or (!isset($_REQUEST['nofollow']) and $prli_options->link_nofollow == '1'))?'checked="true"':'');
     123    $values['url'] =  (isset($_REQUEST['url'])?esc_url_raw(trim(stripslashes($_REQUEST['url']))):'');
     124    $values['slug'] = (isset($_REQUEST['slug'])?sanitize_text_field(stripslashes($_REQUEST['slug'])):$prli_link->generateValidSlug());
     125    $values['name'] = (isset($_REQUEST['name'])?sanitize_text_field(stripslashes($_REQUEST['name'])):'');
     126    $values['description'] = (isset($_REQUEST['description'])?sanitize_textarea_field(stripslashes($_REQUEST['description'])):'');
     127
     128    $values['track_me'] = ((isset($_REQUEST['track_me']) and $_REQUEST['track_me'] == 'on') or (!isset($_REQUEST['track_me']) and $prli_options->link_track_me == '1'));
     129    $values['nofollow'] = ((isset($_REQUEST['nofollow']) and $_REQUEST['nofollow'] == 'on') or (!isset($_REQUEST['nofollow']) and $prli_options->link_nofollow == '1'));
    381130
    382131    $values['redirect_type'] = array();
    383     $values['redirect_type']['307'] = (((isset($_REQUEST['redirect_type']) and $_REQUEST['redirect_type'] == '307') or (!isset($_REQUEST['redirect_type']) and $prli_options->link_redirect_type == '307'))?'selected="selected"':'');
    384     $values['redirect_type']['302'] = (((isset($_REQUEST['redirect_type']) and $_REQUEST['redirect_type'] == '302') or (!isset($_REQUEST['redirect_type']) and $prli_options->link_redirect_type == '302'))?'selected="selected"':'');
    385     $values['redirect_type']['301'] = (((isset($_REQUEST['redirect_type']) and $_REQUEST['redirect_type'] == '301') or (!isset($_REQUEST['redirect_type']) and $prli_options->link_redirect_type == '301'))?'selected="selected"':'');
    386     $values['redirect_type']['prettybar'] = (((isset($_REQUEST['redirect_type']) and $_REQUEST['redirect_type'] == 'prettybar') or (!isset($_REQUEST['redirect_type']) and $prli_options->link_redirect_type == 'prettybar'))?'selected="selected"':'');
    387     $values['redirect_type']['cloak'] = (((isset($_REQUEST['redirect_type']) and $_REQUEST['redirect_type'] == 'cloak') or (!isset($_REQUEST['redirect_type']) and $prli_options->link_redirect_type == 'cloak'))?'selected="selected"':'');
    388     $values['redirect_type']['pixel'] = (((isset($_REQUEST['redirect_type']) and $_REQUEST['redirect_type'] == 'pixel') or (!isset($_REQUEST['redirect_type']) and $prli_options->link_redirect_type == 'pixel'))?'selected="selected"':'');
    389     $values['redirect_type']['metarefresh'] = (((isset($_REQUEST['redirect_type']) and $_REQUEST['redirect_type'] == 'metarefresh') or (!isset($_REQUEST['redirect_type']) and $prli_options->link_redirect_type == 'metarefresh'))?'selected="selected"':'');
    390     $values['redirect_type']['javascript'] = (((isset($_REQUEST['redirect_type']) and $_REQUEST['redirect_type'] == 'javascript') or (!isset($_REQUEST['redirect_type']) and $prli_options->link_redirect_type == 'javascript'))?'selected="selected"':'');
     132    $values['redirect_type']['307'] = (((isset($_REQUEST['redirect_type']) and $_REQUEST['redirect_type'] == '307') or (!isset($_REQUEST['redirect_type']) and $prli_options->link_redirect_type == '307'))?' selected="selected"':'');
     133    $values['redirect_type']['302'] = (((isset($_REQUEST['redirect_type']) and $_REQUEST['redirect_type'] == '302') or (!isset($_REQUEST['redirect_type']) and $prli_options->link_redirect_type == '302'))?' selected="selected"':'');
     134    $values['redirect_type']['301'] = (((isset($_REQUEST['redirect_type']) and $_REQUEST['redirect_type'] == '301') or (!isset($_REQUEST['redirect_type']) and $prli_options->link_redirect_type == '301'))?' selected="selected"':'');
     135    $values['redirect_type']['prettybar'] = (((isset($_REQUEST['redirect_type']) and $_REQUEST['redirect_type'] == 'prettybar') or (!isset($_REQUEST['redirect_type']) and $prli_options->link_redirect_type == 'prettybar'))?' selected="selected"':'');
     136    $values['redirect_type']['cloak'] = (((isset($_REQUEST['redirect_type']) and $_REQUEST['redirect_type'] == 'cloak') or (!isset($_REQUEST['redirect_type']) and $prli_options->link_redirect_type == 'cloak'))?' selected="selected"':'');
     137    $values['redirect_type']['pixel'] = (((isset($_REQUEST['redirect_type']) and $_REQUEST['redirect_type'] == 'pixel') or (!isset($_REQUEST['redirect_type']) and $prli_options->link_redirect_type == 'pixel'))?' selected="selected"':'');
     138    $values['redirect_type']['metarefresh'] = (((isset($_REQUEST['redirect_type']) and $_REQUEST['redirect_type'] == 'metarefresh') or (!isset($_REQUEST['redirect_type']) and $prli_options->link_redirect_type == 'metarefresh'))?' selected="selected"':'');
     139    $values['redirect_type']['javascript'] = (((isset($_REQUEST['redirect_type']) and $_REQUEST['redirect_type'] == 'javascript') or (!isset($_REQUEST['redirect_type']) and $prli_options->link_redirect_type == 'javascript'))?' selected="selected"':'');
    391140
    392141    $values['groups'] = array();
    393142
    394     if(is_array($groups)) {
    395       foreach($groups as $group) {
    396         $values['groups'][] = array(
    397           'id' => $group->id,
    398           'value' => ((isset($_REQUEST['group_id']) && $_REQUEST['group_id'] == $group->id)?' selected="true"':''),
    399           'name' => $group->name
    400         );
    401       }
    402     }
    403 
    404143    $values['param_forwarding'] = isset($_REQUEST['param_forwarding']);
    405     $values['delay'] = (isset($_REQUEST['delay']) ? $_REQUEST['delay'] : 0);
     144    $values['delay'] = (isset($_REQUEST['delay']) ? (int) $_REQUEST['delay'] : 0);
    406145
    407146    if(isset($_REQUEST['google_tracking'])) {
    408       $values['google_tracking'] = ' checked=checked';
     147      $values['google_tracking'] = true;
    409148    }
    410149    else {
     
    412151      if( $plp_update->is_installed() ) {
    413152        global $plp_options;
    414         $values['google_tracking'] = $plp_options->google_tracking?' checked=checked':'';
     153        $values['google_tracking'] = $plp_options->google_tracking?true:false;
    415154      }
    416155      else {
    417         $values['google_tracking'] = '';
     156        $values['google_tracking'] = false;
    418157      }
    419158    }
     
    422161  }
    423162
    424   public static function setup_edit_vars($groups,$record) {
     163  public function setup_edit_vars($record) {
    425164    global $prli_link, $prli_link_meta;
    426165
    427166    $values = array();
    428     $values['url'] =  ((isset($_REQUEST['url']) and $record == null)?$_REQUEST['url']:$record->url);
    429     $values['slug'] = ((isset($_REQUEST['slug']) and $record == null)?$_REQUEST['slug']:$record->slug);
    430     $values['name'] = htmlspecialchars(stripslashes(((isset($_REQUEST['name']) and $record == null)?$_REQUEST['name']:$record->name)));
    431     $values['description'] = htmlspecialchars(stripslashes(((isset($_REQUEST['description']) and $record == null)?$_REQUEST['description']:$record->description)));
    432     $values['track_me'] = (((isset($_REQUEST['track_me']) or $record->track_me) and ((isset($_REQUEST['track_me']) and $_REQUEST['track_me'] == 'on') or $record->track_me == 1))?'checked="true"':'');
    433     $values['nofollow'] = (((isset($_REQUEST['nofollow']) and $_REQUEST['nofollow'] == 'on') or (isset($record->nofollow) && $record->nofollow == 1))?'checked="true"':'');
     167    $values['link_id'] = $record->id;
     168    $values['url'] =  ((isset($_REQUEST['url']) and $record == null)?esc_url_raw(trim(stripslashes($_REQUEST['url']))):stripslashes($record->url));
     169    $values['slug'] = ((isset($_REQUEST['slug']) and $record == null)?sanitize_text_field(stripslashes($_REQUEST['slug'])):stripslashes($record->slug));
     170    $values['name'] = ((isset($_REQUEST['name']) and $record == null)?sanitize_text_field(stripslashes($_REQUEST['name'])):stripslashes($record->name));
     171    $values['description'] = ((isset($_REQUEST['description']) and $record == null)?sanitize_textarea_field(stripslashes($_REQUEST['description'])):stripslashes($record->description));
     172    $values['track_me'] = ((isset($_REQUEST['track_me']) or $record->track_me) and ((isset($_REQUEST['track_me']) and $_REQUEST['track_me'] == 'on') or $record->track_me == 1));
     173    $values['nofollow'] = ((isset($_REQUEST['nofollow']) and $_REQUEST['nofollow'] == 'on') or (isset($record->nofollow) && $record->nofollow == 1));
    434174
    435175    $values['groups'] = array();
    436     foreach($groups as $group) {
    437       $values['groups'][] = array( 'id' => $group->id,
    438                                    'value' => (((isset($_REQUEST['group_id']) and ($_REQUEST['group_id'] == $group->id)) or ($record->group_id == $group->id))?' selected="true"':''),
    439                                    'name' => $group->name );
    440     }
    441176
    442177    $values['param_forwarding'] = (isset($_REQUEST['param_forwarding']) || !(empty($record->param_forwarding) || $record->param_forwarding=='off'));
     
    453188
    454189    if(isset($_REQUEST['delay'])) {
    455       $values['delay'] = $_REQUEST['delay'];
     190      $values['delay'] = (int) $_REQUEST['delay'];
    456191    }
    457192    else {
     
    460195
    461196    if(isset($_REQUEST['google_tracking'])) {
    462       $values['google_tracking'] = ' checked=checked';
     197      $values['google_tracking'] = true;
    463198    }
    464199    else {
    465       $values['google_tracking'] = (($prli_link_meta->get_link_meta($record->id, 'google_tracking', true) == 1)?' checked=checked':'');
     200      $values['google_tracking'] = (($prli_link_meta->get_link_meta($record->id, 'google_tracking', true) == 1)?true:false);
    466201    }
    467202
    468203    return $values;
     204  }
     205
     206  public static function save_cpt_link() {
     207    global $post, $post_id, $typenow, $prli_link, $prli_group;
     208
     209    # Skip ajax
     210    if(defined('DOING_AJAX')) {
     211      return $post_id;
     212    }
     213
     214    # Skip non-post requests & non-admin requests
     215    if(!PrliUtils::is_post_request() || !PrliUtils::is_admin()) {
     216      return $post_id;
     217    }
     218
     219    # Please only run this code when we're dealing with a Link CPT
     220    if($typenow !== PrliLink::$cpt) {
     221      return $post_id;
     222    }
     223
     224    # Verify nonce
     225    if(!wp_verify_nonce(isset($_POST[PrliLink::$nonce_str]) ? $_POST[PrliLink::$nonce_str] : '', PrliLink::$nonce_str . wp_salt())) {
     226      return $post_id;
     227    }
     228
     229    $link_id = isset($_POST['link_id']) ? (int) $_POST['link_id'] : 0;
     230
     231    $_POST['name'] = $_POST['post_title'];
     232    $_POST['link_cpt_id'] = $post->ID;
     233
     234    if($link_id) {
     235      $link_id = $prli_link->update( $link_id, $_POST );
     236    }
     237    else {
     238      $link_id = $prli_link->create( $_POST );
     239    }
     240
     241    do_action('prli_update_link', $link_id);
     242  }
     243
     244  public function transition_cpt_status( $new_status, $old_status, $post ) {
     245    global $prli_link;
     246
     247    if( $new_status != $old_status ) {
     248      $link_id = $prli_link->get_link_from_cpt($post->ID);
     249
     250      if(empty($link_id)) { return; }
     251
     252      $link = $prli_link->getOne($link_id);
     253
     254      if( $new_status == 'publish' ) {
     255        $prli_link->enable_link($link_id);
     256      }
     257      else {
     258        $prli_link->disable_link($link_id);
     259      }
     260    }
     261  }
     262
     263  public static function delete_cpt_link($post_id) {
     264    global $prli_link;
     265
     266    $link_id = $prli_link->get_link_from_cpt($post_id);
     267
     268    if(empty($link_id)) { return; }
     269
     270    // CPT is already deleted by now so don't try again
     271    return $prli_link->destroy($link_id, 'dont_delete_cpt');
    469272  }
    470273
     
    521324    $schedules['prli_cleanup_visitor_locks_interval'] = array(
    522325      'interval' => HOUR_IN_SECONDS,
    523       'display' => __('Pretty Link Cleanup Visitor Locks', 'pretty-link'),
     326      'display' => esc_html__('Pretty Link Cleanup Visitor Locks', 'pretty-link'),
    524327    );
    525328
    526329    return $schedules;
    527330  }
     331
     332  public function ajax_validate_pretty_link() {
     333    global $prli_link;
     334
     335    check_ajax_referer('validate_pretty_link','security');
     336
     337    if(!PrliUtils::is_post_request()) {
     338      PrliUtils::exit_with_status(403,esc_html__('Forbidden', 'pretty-link'));
     339    }
     340
     341    $id = isset($_POST['id']) ? (int) $_POST['id'] : 0;
     342    $errors = $prli_link->validate($_POST, $id);
     343
     344    $errors = apply_filters('prli_validate_link', $errors);
     345
     346    $message = esc_html__('Success!', 'pretty-link');
     347    if(!empty($errors)) {
     348      $message = '<div>' . esc_html__('Fix the following errors:', 'pretty-link') . '</div><ul>';
     349      foreach($errors as $error) {
     350        $message .= "<li>{$error}</li>";
     351      }
     352      $message .= '</ul>';
     353    }
     354
     355    $response = array(
     356      'valid' => empty($errors),
     357      'message' => $message
     358    );
     359
     360    PrliUtils::exit_with_status(200,json_encode($response));
     361  }
     362
     363  public function columns($columns) {
     364    if(isset($_REQUEST['post_status']) && $_REQUEST['post_status'] == 'trash') {
     365      return $columns;
     366    }
     367
     368    global $plp_update;
     369
     370    $categories_label = esc_html__('Categories', 'pretty-link');
     371    $tags_label       = esc_html__('Tags', 'pretty-link');
     372    $keywords_label   = esc_html__('Keywords', 'pretty-link');
     373
     374    if ($plp_update->is_installed()) {
     375      $category_key = 'taxonomy-pretty-link-category';
     376      $tag_key = 'taxonomy-pretty-link-tag';
     377    } else {
     378      $category_key = 'pro-pretty-link-category';
     379      $tag_key = 'pro-pretty-link-tag';
     380      $categories_label = $categories_label . ' ' .
     381        PrliAppHelper::pro_only_feature_indicator(
     382          'link-list-categories-column-header',
     383          __('Pro', 'pretty-link'),
     384          __('Upgrade to a Pretty Links premium plan to get Link Categories', 'pretty-link')
     385        );
     386      $tags_label = $tags_label . ' ' .
     387        PrliAppHelper::pro_only_feature_indicator(
     388          'link-list-tags-column-header',
     389          __('Pro', 'pretty-link'),
     390          __('Upgrade to a Pretty Links premium plan to get Link Tags', 'pretty-link')
     391        );
     392      $keywords_label = $keywords_label . ' ' .
     393        PrliAppHelper::pro_only_feature_indicator(
     394          'link-list-keywords-column-header',
     395          __('Pro', 'pretty-link'),
     396          __('Upgrade to a Pretty Links premium plan to get Keyword Replacements', 'pretty-link')
     397        );
     398    }
     399
     400    $columns = array(
     401      'cb' => '<input type="checkbox" />',
     402      'settings' => esc_html__('Settings', 'pretty-link'),
     403      'title' => esc_html__('Link Title', 'pretty-link'),
     404      //'slug' => esc_html__('Slug', 'pretty-link'),
     405      //'target' => esc_html__('Target', 'pretty-link'),
     406      $category_key => $categories_label,
     407      $tag_key => $tags_label,
     408      'keywords' => $keywords_label,
     409      'clicks' => esc_html__('Clicks', 'pretty-link'),
     410      'date' => esc_html__('Date', 'pretty-link'),
     411      'links' => esc_html__('Pretty Links', 'pretty-link')
     412    );
     413
     414    return $columns;
     415  }
     416
     417  public function sortable_columns($columns) {
     418    if(isset($_REQUEST['post_status']) && $_REQUEST['post_status'] == 'trash') {
     419      return $columns;
     420    }
     421
     422    $columns['title'] = 'title';
     423    $columns['slug'] = 'slug';
     424    $columns['date'] = 'date';
     425
     426    return $columns;
     427  }
     428
     429  public function custom_columns($column, $post_id) {
     430    global $prli_link, $prli_blogurl;
     431
     432    $link_id = $prli_link->get_link_from_cpt($post_id);
     433    $link = $prli_link->getOne($link_id, OBJECT, true);
     434
     435    // This will happen if the link is trashed
     436    if(empty($link)) { return $column; }
     437
     438    $struct = PrliUtils::get_permalink_pre_slug_uri();
     439    $pretty_link_url = "{$prli_blogurl}{$struct}{$link->slug}";
     440
     441    if(!empty($link)) {
     442      if('settings' == $column) {
     443        PrliLinksHelper::link_list_icons($link);
     444      }
     445      elseif('keywords' == $column) {
     446        $pro_only = apply_filters(
     447          'prli_link_column_keywords',
     448          '—',
     449          $link_id
     450        );
     451        echo $pro_only;
     452      }
     453      elseif('pro-pretty-link-category' == $column) {
     454        $pro_only = apply_filters(
     455          'prli_link_column_categories',
     456          '—',
     457          $link_id
     458        );
     459        echo $pro_only;
     460      }
     461      elseif('pro-pretty-link-tag' == $column) {
     462        $pro_only = apply_filters(
     463          'prli_link_column_tags',
     464          '—',
     465          $link_id
     466        );
     467        echo $pro_only;
     468      }
     469      elseif('clicks' == $column) {
     470        PrliLinksHelper::link_list_clicks($link);
     471      }
     472      elseif('links' == $column) {
     473        PrliLinksHelper::link_list_url_clipboard($link);
     474      }
     475      elseif('slug' == $column) {
     476        echo esc_html(stripslashes($link->slug));
     477      }
     478      elseif('target' == $column) {
     479        echo esc_url($link->url);
     480      }
     481    }
     482  }
     483
     484  /**
     485  * Append row actions to list page
     486  * @see add_filter('post_row_actions')
     487  * @param array $actions Current row actions
     488  * @param WP_Post current Post
     489  * @return array filtered row actions
     490  */
     491  public function add_row_actions($actions, $post) {
     492    global $prli_link;
     493
     494    if($post->post_type === PrliLink::$cpt) {
     495      $id = $prli_link->get_link_from_cpt($post->ID);
     496      $link = $prli_link->getOne($id);
     497
     498      if(empty($link)) { return $actions; }
     499
     500      $new_actions = array();
     501      $new_actions['edit']  = $actions['edit'];
     502      $new_actions['reset'] = PrliLinksHelper::link_action_reset($link, __('Reset', 'pretty-link'));
     503
     504      if( $link->redirect_type !== 'pixel' ) {
     505        $new_actions['tweet'] = PrliLinksHelper::link_action_tweet($link, __('Tweet', 'pretty-link'));
     506        $new_actions['email'] = PrliLinksHelper::link_action_email($link, __('Email', 'pretty-link'));
     507        $new_actions['url']   = PrliLinksHelper::link_action_visit_target($link, __('Target &raquo;', 'pretty-link'));
     508        $new_actions['pl']    = PrliLinksHelper::link_action_visit_pretty_link($link, __('Pretty Link &raquo;', 'pretty-link'));
     509      }
     510
     511      $plp_update = new PrliUpdateController();
     512
     513      if($plp_update->is_installed()) {
     514        global $plp_options, $prli_link_meta;
     515
     516        if ($plp_options->generate_qr_codes) {
     517          $plp_links_ctrl = new PlpLinksController();
     518          $new_actions['qr'] = $plp_links_ctrl->qr_code_link($link->id);
     519        }
     520
     521        $dynamic_redirection = $prli_link_meta->get_link_meta($link->id, 'prli_dynamic_redirection', true);
     522
     523        if ($dynamic_redirection == 'rotate') {
     524          $enable_split_test = $prli_link_meta->get_link_meta($link->id, 'prli-enable-split-test', true);
     525
     526          if ($enable_split_test) {
     527            $new_actions['report'] = sprintf(
     528              '<a href="%s" title="%s">%s</a>',
     529              esc_url(admin_url('admin.php?page=plp-reports&action=display-split-test-report&id=') . $link->id),
     530              esc_attr__('View Split Test Report', 'pretty-link'),
     531              esc_html__('View Split Test Report', 'pretty-link')
     532            );
     533          }
     534        }
     535      }
     536
     537      $new_actions['trash'] = $actions['trash'];
     538      $actions = $new_actions;
     539    }
     540
     541    return $actions;
     542  }
     543
     544  public function ajax_reset_pretty_link() {
     545    global $prli_link;
     546
     547    check_ajax_referer('reset_pretty_link','security');
     548
     549    if(!PrliUtils::is_post_request()) {
     550      PrliUtils::exit_with_status(403,esc_html__('Forbidden', 'pretty-link'));
     551    }
     552
     553    $prli_link->reset( $_POST['id'] );
     554
     555    $response = array(
     556      'message' => esc_html__("Your Pretty Link was Successfully Reset", 'pretty-link')
     557    );
     558
     559    PrliUtils::exit_with_status(200,json_encode($response));
     560  }
     561
     562  public function ajax_quick_create() {
     563    if (!PrliUtils::is_post_request() || !isset($_POST['url'], $_POST['slug']) || !is_string($_POST['url']) || !is_string($_POST['slug'])) {
     564      wp_send_json_error(array('message' => __('Bad request', 'pretty-link')));
     565    }
     566
     567    if (!PrliUtils::is_authorized()) {
     568      wp_send_json_error(array('message' => __('Insufficient permissions', 'pretty-link')));
     569    }
     570
     571    if (!check_ajax_referer('prli_quick_create', false, false)) {
     572      wp_send_json_error(array('message' => __('Security check failed', 'pretty-link')));
     573    }
     574
     575    global $prli_link, $prli_options;
     576
     577    $errors = $prli_link->validate($_POST);
     578
     579    if (count($errors)) {
     580      wp_send_json_error(array('message' => $errors[0]));
     581    }
     582
     583    $_POST['redirect_type'] = $prli_options->link_redirect_type;
     584
     585    if ($prli_options->link_track_me) {
     586      $_POST['track_me'] = 'on';
     587    }
     588
     589    if ($prli_options->link_nofollow) {
     590      $_POST['nofollow'] = 'on';
     591    }
     592
     593    $link_id = $prli_link->create($_POST);
     594    $link = $prli_link->getOne($link_id);
     595
     596    if (!$link) {
     597      wp_send_json_error(array('message' => __('An error occurred creating the link', 'pretty-link')));
     598    }
     599
     600    wp_send_json_success([
     601      'redirect' => esc_url_raw(sprintf(admin_url('post.php?post=%d&action=edit'), $link->link_cpt_id))
     602    ]);
     603  }
     604
     605  /**
     606   * Filter groups if the user is running the free version of Pretty Links
     607   *
     608   * @since 1.1.0
     609   * @return void
     610   */
     611  public function filter_links_by_legacy_groups() {
     612    global $typenow, $wp_query, $prli_link, $plp_update;
     613
     614    if( $typenow == PrliLink::$cpt && !$plp_update->is_installed() ) {
     615      $groups = $prli_link->get_all_legacy_groups();
     616
     617      if(empty($groups)) { return; }
     618
     619      $current_group = 'all';
     620      if( isset( $_GET['group'] ) && is_numeric( $_GET['group'] ) ) {
     621        $current_group = (int) $_GET['group']; // Check if option has been selected
     622      }
     623
     624      ?>
     625      <select name="group" id="group">
     626        <option
     627          value="all"
     628          <?php selected( 'all', $current_group ); ?>>
     629            <?php esc_html_e( 'All Groups (Legacy)', 'pretty-link' ); ?>
     630        </option>
     631        <?php foreach( $groups as $group ): ?>
     632          <option
     633            value="<?php echo esc_attr( $group->id ); ?>"
     634            <?php selected( $group->id, $current_group ); ?>>
     635              <?php echo esc_html( stripslashes($group->name) ); ?>
     636          </option>
     637        <?php endforeach; ?>
     638      </select>
     639      <?php
     640    }
     641  }
     642
     643  // Join for searching link groups
     644  public function join_links_to_posts($join) {
     645    global $wp_query, $wpdb, $typenow;
     646
     647    if( $typenow == PrliLink::$cpt &&
     648        ( ( isset($_GET['orderby']) && isset($_GET['order']) ) ||
     649          empty($wp_query->query_vars['s']) ) ) {
     650      $join .= "JOIN {$wpdb->prefix}prli_links AS li ON {$wpdb->posts}.ID = li.link_cpt_id ";
     651    }
     652
     653    return $join;
     654  }
     655
     656  // Where clause for searching link groups
     657  public function where_links_belong_to_legacy_group( $where ) {
     658    global $wp_query, $wpdb, $typenow;
     659
     660    if( $typenow == PrliLink::$cpt &&
     661        isset($_GET['group']) &&
     662        is_numeric($_GET['group']) &&
     663        empty($wp_query->query_vars['s']) ) {
     664        // possible because we've already joined the links to posts
     665        $where .= $wpdb->prepare(" AND li.group_id=%d", (int) $_GET['group']);
     666    }
     667
     668    return $where;
     669  }
     670
     671  // Only keep the All & Trash quick links
     672  public function modify_quick_links($views) {
     673    $view_keys = array_keys($views);
     674    $keep_keys = array('all','trash');
     675
     676    foreach($view_keys as $view_key) {
     677      if(!in_array($view_key,$keep_keys)) {
     678        unset($views[$view_key]);
     679      }
     680    }
     681
     682    return $views;
     683  }
     684
     685  // Add custom sort orderbys
     686  public function custom_link_sort_orderby($orderby) {
     687    global $wp_query, $wpdb, $typenow;
     688
     689    if( $typenow == PrliLink::$cpt &&
     690        isset($_GET['orderby']) && isset($_GET['order']) ) {
     691
     692      $order = strtoupper($_GET['order'])=='ASC' ? 'ASC' : 'DESC';
     693
     694      if($_GET['orderby']=='slug') {
     695        $orderby = "
     696          li.slug {$order}
     697        ";
     698      }
     699      elseif($_GET['orderby']=='date') {
     700        $orderby = "
     701          li.created_at {$order}
     702        ";
     703      }
     704      elseif($_GET['orderby']=='title') {
     705        $orderby = "
     706          li.name {$order}
     707        ";
     708      }
     709    }
     710
     711    return $orderby;
     712  }
     713
    528714}
    529715
  • pretty-link/trunk/app/controllers/PrliLocalApiController.php

    r1572224 r2124183  
    3131   * @param string $description Optional, description for the Pretty Link.
    3232   *
    33    * @param integer $group_id Optional, the group that this link will be placed in.
     33   * @param integer $group_id DEPRECATED Optional, the group that this link will be placed in.
    3434   *                          If this value isn't set then the link will not be
    3535   *                          placed in a group.
     
    6060                                    $name = '',
    6161                                    $description = '',
    62                                     $group_id = 0,
     62                                    $group_id = 0, // deprecated
    6363                                    $track_me = '',
    6464                                    $nofollow = '',
     
    7676    $values['name']             = $name;
    7777    $values['description']      = $description;
    78     $values['group_id']         = $group_id;
    7978    $values['redirect_type']    = (($redirect_type == '')?$prli_options->link_redirect_type:$redirect_type);
    8079    $values['nofollow']         = (($nofollow === '')?$prli_options->link_nofollow:$nofollow);
     
    112111                                      $name = -1,
    113112                                      $description = -1,
    114                                       $group_id = '',
     113                                      $group_id = '', // deprecated
    115114                                      $track_me = '',
    116115                                      $nofollow = '',
     
    137136    $values['name']             = (($name == -1)?$record->name:$name);
    138137    $values['description']      = (($description == -1)?$record->description:$description);
    139     $values['group_id']         = (($group_id === '')?$record->group_id:$group_id);
    140138    $values['redirect_type']    = (($redirect_type == '')?$record->redirect_type:$redirect_type);
    141139    $values['nofollow']         = (($nofollow === '')?$record->nofollow:$nofollow);
     
    143141    $values['param_forwarding'] = !empty($param_forwarding);
    144142    $values['param_struct']     = (($param_struct == -1)?$record->param_struct:$param_struct);
     143    $values['link_cpt_id']      = $record->link_cpt_id;
    145144
    146145    // make array look like $_POST
     
    150149      unset($values['track_me']);
    151150
    152     $prli_error_messages = $prli_link->validate( $values );
     151    $prli_error_messages = $prli_link->validate( $values, $id );
    153152
    154153    if( count($prli_error_messages) == 0 )
     
    167166
    168167  /**
    169    * Get all the pretty link groups in an array suitable for creating a select box.
     168   * DEPRECATED: Get all the pretty link groups in an array suitable for creating a select box.
    170169   *
    171170   * @return bool (false if failure) | array A numerical array of associative arrays
     
    174173   */
    175174  public function get_all_groups() {
    176     global $prli_group;
    177     $groups = $prli_group->getAll('',' ORDER BY gr.name', ARRAY_A);
    178     return $groups;
     175    return array();
    179176  }
    180177
     
    224221    global $prli_link,$prli_blogurl;
    225222
    226     if($pretty_link = $prli_link->getOne($id))
    227       return "{$prli_blogurl}".PrliUtils::get_permalink_pre_slug_uri()."{$pretty_link->slug}";
     223    $pretty_link = $prli_link->getOne($id);
     224
     225    if($pretty_link) {
     226      return $prli_blogurl.PrliUtils::get_permalink_pre_slug_uri().$pretty_link->slug;
     227    }
    228228
    229229    return false;
     
    246246                                  $name = '',
    247247                                  $description = '',
    248                                   $group_id = 0,
     248                                  $group_id = 0, // deprecated
    249249                                  $track_me = '',
    250250                                  $nofollow = '',
     
    257257                                    $name,
    258258                                    $description,
    259                                     $group_id,
     259                                    $group_id, // deprecated
    260260                                    $track_me,
    261261                                    $nofollow,
     
    270270                                  $name = -1,
    271271                                  $description = -1,
    272                                   $group_id = '',
     272                                  $group_id = '', // deprecated
    273273                                  $track_me = '',
    274274                                  $nofollow = '',
     
    282282                                    $name,
    283283                                    $description,
    284                                     $group_id,
     284                                    $group_id, // deprecated
    285285                                    $track_me,
    286286                                    $nofollow,
     
    290290}
    291291
     292/** DEPRECATED **/
    292293function prli_get_all_groups() {
    293   $ctrl = new PrliLocalApiController();
    294   return $ctrl->get_all_groups();
     294  return array();
    295295}
    296296
  • pretty-link/trunk/app/controllers/PrliOptionsController.php

    r1572224 r2124183  
    7777
    7878    if( !empty($params[ $whitelist_ips ]) && !preg_match( "#^[ \t]*((\d{1,3}|\*)\.(\d{1,3}|\*)\.(\d{1,3}|\*)\.(\d{1,3}|\*)|([0-9a-fA-F]{1,4}|\*):([0-9a-fA-F]{1,4}|\*):([0-9a-fA-F]{1,4}|\*):([0-9a-fA-F]{1,4}|\*):([0-9a-fA-F]{1,4}|\*):([0-9a-fA-F]{1,4}|\*):([0-9a-fA-F]{1,4}|\*):([0-9a-fA-F]{1,4}|\*))([ \t]*,[ \t]*((\d{1,3}|\*)\.(\d{1,3}|\*)\.(\d{1,3}|\*)\.(\d{1,3}|\*)|([0-9a-fA-F]{1,4}|\*):([0-9a-fA-F]{1,4}|\*):([0-9a-fA-F]{1,4}|\*):([0-9a-fA-F]{1,4}|\*):([0-9a-fA-F]{1,4}|\*):([0-9a-fA-F]{1,4}|\*):([0-9a-fA-F]{1,4}|\*):([0-9a-fA-F]{1,4}|\*)))*$#", $params[ $whitelist_ips ] ) ) {
    79       $errors[] = __('Whitlist IP Addresses must be a comma separated list of IPv4 or IPv6 addresses or ranges.', 'pretty-link');
     79      $errors[] = __('Whitelist IP Addresses must be a comma separated list of IPv4 or IPv6 addresses or ranges.', 'pretty-link');
    8080    }
    8181
     
    8989
    9090    // Read their posted value
    91     $prli_options->prli_exclude_ips = stripslashes($params[ $prli_exclude_ips ]);
    92     $prli_options->whitelist_ips = stripslashes($params[ $whitelist_ips ]);
     91    $prli_options->prli_exclude_ips = isset($params[ $prli_exclude_ips ]) && is_string($params[ $prli_exclude_ips ]) ? sanitize_text_field(stripslashes($params[ $prli_exclude_ips ])) : '';
     92    $prli_options->whitelist_ips = isset($params[ $whitelist_ips ]) && is_string($params[ $whitelist_ips ]) ? sanitize_text_field(stripslashes($params[ $whitelist_ips ])) : '';
    9393    $prli_options->filter_robots = (int)isset($params[ $filter_robots ]);
    94     $prli_options->extended_tracking = stripslashes($params[ $extended_tracking ]);
     94    $prli_options->extended_tracking = isset($params[ $extended_tracking ]) && is_string($params[ $extended_tracking ]) ? sanitize_key(stripslashes($params[ $extended_tracking ])) : 'normal';
    9595    $prli_options->link_track_me = (int)isset($params[ $link_track_me ]);
    9696    $prli_options->link_prefix = (int)isset($params[ $link_prefix ]);
    9797    $prli_options->auto_trim_clicks = (int)isset($params[ $auto_trim_clicks ]);
    9898    $prli_options->link_nofollow = (int)isset($params[ $link_nofollow ]);
    99     $prli_options->link_redirect_type = $params[ $link_redirect_type ];
     99    $prli_options->link_redirect_type = isset($params[ $link_redirect_type ]) && is_string($params[ $link_redirect_type ]) ? sanitize_key(stripslashes($params[ $link_redirect_type ])) : '307';
    100100
    101101    do_action('prli-update-options', $params);
  • pretty-link/trunk/app/controllers/PrliPopupController.php

    r1602151 r2124183  
    22
    33class PrliPopupController extends PrliBaseController {
    4   public $popup_css, $popup_js, $popups;
    5 
     4  public $popups;
    65  public function __construct() {
    7     $cdn_base = 'https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/';
    8     $this->popup_css = "{$cdn_base}/magnific-popup.min.css";
    9     $this->popup_js  = "{$cdn_base}/jquery.magnific-popup.min.js";
    10 
    116    // This is an array of the currently defined popups ...
    127    // used to validate that the popup specified actually exists
    138    $this->popups = array(
    149      'rating' => array(
    15         'after_usage' => true,
     10        'after_usage' => array(
     11          'links' => 1,
     12          'clicks' => 5
     13        ),
     14        'user_popup' => true,
     15        'lite_only_popup' => false,
     16        'delay' => WEEK_IN_SECONDS,
     17        'delay_after_last_popup' => DAY_IN_SECONDS,
     18      ),
     19      'upgrade' => array(
     20        'after_usage' => array(
     21          'links' => 3,
     22          'clicks' => 5
     23        ),
    1624        'user_popup' => true,
    1725        'lite_only_popup' => true,
    18         'delay' => MONTH_IN_SECONDS,
    19         'delay_after_last_popup' => WEEK_IN_SECONDS,
    20       ),
    21       'upgrade' => array(
    22         'after_usage' => true,
    23         'user_popup' => true,
    24         'lite_only_popup' => true,
    25         'delay' => MONTH_IN_SECONDS,
    26         'delay_after_last_popup' => WEEK_IN_SECONDS,
     26        'delay' => 2*WEEK_IN_SECONDS,
     27        'delay_after_last_popup' => DAY_IN_SECONDS,
    2728      ),
    2829    );
     
    4243
    4344  public function enqueue_admin_scripts($hook) {
    44     if(strstr($hook, 'pretty-link') !== false) {
    45       wp_register_style('prli-magnific-popup', $this->popup_css);
     45    if($this->on_pretty_link_page()) {
     46      wp_register_style('prli-magnific-popup', PRLI_VENDOR_LIB_URL . '/magnific-popup/magnific-popup.min.css', array(), '1.1.0');
    4647      wp_enqueue_style(
    4748        'prli-admin-popup',
     
    5152      );
    5253
    53       wp_register_script('prli-magnific-popup', $this->popup_js, array('jquery'));
     54      wp_register_script('prli-magnific-popup', PRLI_VENDOR_LIB_URL . '/magnific-popup/jquery.magnific-popup.min.js', array('jquery'), '1.1.0', true);
    5455      wp_enqueue_script(
    5556        'prli-admin-popup',
     
    6768
    6869  private function on_pretty_link_page() {
    69     $screen = get_current_screen();
    70     return (isset($screen->parent_base) && $screen->parent_base=='pretty-link');
     70    global $current_screen;
     71    return (isset($current_screen->id) && strpos($current_screen->id,'pretty-link') !== false);
    7172  }
    7273
    7374  public function display_popups() {
    7475    if(!$this->on_pretty_link_page()) { return; }
     76
     77    // Bail on update/welcome page
     78    if (isset($_GET['page']) && ($_GET['page'] == 'pretty-link-welcome' || $_GET['page'] == 'pretty-link-update')) { return;}
    7579
    7680    // If this isn't a Pretty Link authorized user then bail
     
    140144
    141145  private function is_popup_delayed($popup) {
    142     if(!$this->is_valid_popup($popup)) { $return; }
     146    if(!$this->is_valid_popup($popup)) { return; }
    143147
    144148    if($this->popups[$popup]['user_popup']) {
     
    152156
    153157  private function is_popup_stopped($popup) {
    154     if(!$this->is_valid_popup($popup)) { $return; }
     158    if(!$this->is_valid_popup($popup)) { return; }
    155159
    156160    if($this->popups[$popup]['user_popup']) {
     
    189193    }
    190194
    191     if($this->popups[$popup]['after_usage']) {
     195    if(false !== $this->popups[$popup]['after_usage']) {
     196      $usage = $this->popups[$popup]['after_usage'];
    192197      $click_count = PrliClick::get_count();
    193       $first_click_date = PrliClick::get_first_date();
    194198      $link_count = PrliLink::get_count();
    195       $first_link_date = PrliClick::get_first_date();
    196 
    197       // Make sure user has been using Pretty Link for at least a month
    198       $month_ago = time() - MONTH_IN_SECONDS;
    199 
    200       if( $click_count < 10 ||
    201           ($first_click_date!==false && strtotime($first_click_date) > $month_ago) ||
    202           $link_count < 3 ||
    203           strtotime($first_link_date) > $month_ago ) {
     199
     200      if( $click_count < $usage['clicks'] || $link_count < $usage['links'] ) {
    204201        return false;
    205202      }
  • pretty-link/trunk/app/controllers/PrliPostsController.php

    r1925455 r2124183  
    5959    }
    6060
     61    wp_register_style('prli-ui-smoothness', PRLI_VENDOR_LIB_URL.'/jquery-ui/jquery-ui.min.css', array(), '1.11.4');
     62    wp_register_style('prli-tinymce-popup-form', PRLI_CSS_URL . '/tinymce_form_popup.css', array('prli-ui-smoothness'), PRLI_VERSION);
     63
     64    $css = sprintf('.ui-autocomplete-loading {
     65      background: white url(%s) right center no-repeat;
     66    }
     67    .ui-autocomplete {
     68      max-height: 200px;
     69      overflow-y: auto;
     70      overflow-x: hidden;
     71      width: 510px !important;
     72    }', esc_url(admin_url('images/wpspin_light.gif')));
     73
     74    wp_add_inline_style('prli-tinymce-popup-form', $css);
     75
     76    wp_register_script(
     77      'prli-tinymce-popup-form',
     78      PRLI_JS_URL . '/tinymce_form_popup.js',
     79      array(
     80        'jquery',
     81        'jquery-ui-core',
     82        'jquery-ui-widget',
     83        'jquery-ui-position',
     84        'jquery-ui-menu',
     85        'jquery-ui-autocomplete',
     86        'jquery-ui-accordion'
     87      ),
     88      PRLI_VERSION,
     89      true
     90    );
     91
     92    wp_localize_script('prli-tinymce-popup-form', 'prliTinymceL10n', array(
     93      'prli_selected_text' => '',
     94      'home_url' => $home_url,
     95      'default_redirect' => $default_redirect,
     96      'default_nofollow' => $default_nofollow,
     97      'default_tracking' => $default_tracking,
     98      'ajaxurl' => admin_url('admin-ajax.php')
     99    ));
     100
    61101    require(PRLI_VIEWS_PATH.'/shared/tinymce_form_popup.php');
    62102    die();
     
    70110    }
    71111
    72     $slug = trim(stripslashes($_POST['slug']));
     112    $slug = sanitize_text_field(stripslashes($_POST['slug']));
    73113
    74114    //Can't end in a slash
    75     if(substr($slug, -1) == '/' || $slug[0] == '/' || preg_match('/\s/', $slug) || !PrliUtils::slugIsAvailable($slug)) {
     115    if(substr($slug, -1) == '/' || $slug[0] == '/' || preg_match('/\s/', $slug) || is_wp_error(PrliUtils::is_slug_available($slug))) {
    76116      echo "false";
    77117      die();
     
    98138    //Using the local API Yo
    99139    $id = prli_create_pretty_link(
    100             stripslashes($_POST['target']),
    101             stripslashes($_POST['slug']),
     140            esc_url_raw(trim(stripslashes($_POST['target']))),
     141            sanitize_text_field(stripslashes($_POST['slug'])),
    102142            '', //Name
    103143            '', //Desc
     
    105145            (int)($_POST['tracking'] == 'enabled'),
    106146            (int)($_POST['nofollow'] == 'enabled'),
    107             $_POST['redirect']
     147            sanitize_key(stripslashes($_POST['redirect']))
    108148          );
    109149
     
    124164
    125165    $return = array();
    126     $term = '%' . rawurldecode(stripslashes($_GET['term'])) . '%';
    127     $q = "SELECT * FROM {$prli_link->table_name} WHERE slug LIKE %s OR name LIKE %s OR url LIKE %s LIMIT 20";
     166    $term = '%' . $wpdb->esc_like(sanitize_text_field(stripslashes($_GET['term']))) . '%';
     167    $q = "SELECT * FROM {$prli_link->table_name} WHERE link_status='enabled' AND (slug LIKE %s OR name LIKE %s OR url LIKE %s) LIMIT 20";
    128168    $q = $wpdb->prepare($q, $term, $term, $term);
    129169    $results = $wpdb->get_results($q, ARRAY_A);
     
    141181        }
    142182
     183        $pretty_link = prli_get_pretty_link_url($result['id']);
     184
    143185        $return[] = array(
    144                       'value'     => (empty($result['name']))?$result['slug']:$alt_name,
    145                       'slug'      => $result['slug'],
    146                       'target'    => $result['url'],
    147                       'title'     => $result['name'], //Not used currently, but we may want this at some point
    148                       'nofollow'  => (int)$result['nofollow']
    149                     );
     186          'pretty_url' => (empty($pretty_link) ? home_url() : $pretty_link),
     187          'value'      => (empty($result['name']))?$result['slug']:$alt_name,
     188          'slug'       => $result['slug'],
     189          'target'     => $result['url'],
     190          'title'      => $result['name'], //Not used currently, but we may want this at some point
     191          'nofollow'   => (int)$result['nofollow']
     192        );
    150193      }
    151194
  • pretty-link/trunk/app/controllers/PrliReportsController.php

    r1572224 r2124183  
    3232    $link_id = $params['l'];
    3333    $type = $params['type'];
    34     $group = $params['group'];
     34    $group = '';
    3535    $show_chart = (!isset($_GET['ip']) and !isset($_GET['vuid']));
    3636
  • pretty-link/trunk/app/controllers/PrliToolsController.php

    r1572224 r2124183  
    4646    global $prli_options, $prli_blogurl, $prli_link, $plp_update;
    4747
    48     $redirect_type = esc_html((isset($_GET['rt']) and $_GET['rt'] != '-1')?$_GET['rt']:'');
    49     $track = esc_html((isset($_GET['trk']) and $_GET['trk'] != '-1')?$_GET['trk']:'');
    50     $group = esc_html((isset($_GET['grp']) and $_GET['grp'] != '-1')?$_GET['grp']:'');
     48    $redirect_type = isset($_GET['rt']) && is_string($_GET['rt']) && $_GET['rt'] != '-1' ? sanitize_key(stripslashes($_GET['rt'])) : '';
     49    $track = isset($_GET['trk']) && is_numeric($_GET['trk']) && $_GET['trk'] != '-1' ? (int) $_GET['trk'] : '';
     50    $category = isset($_GET['ct']) && is_numeric($_GET['ct']) && $_GET['ct'] != '-1' ? (int) $_GET['ct'] : '';
    5151
    52     $result = prli_create_pretty_link( esc_url_raw($target_url, array('http','https')), '', '', '', $group, $track, '', $redirect_type );
     52    $result = prli_create_pretty_link( esc_url_raw($target_url, array('http','https')), '', '', '', 0, $track, '', $redirect_type );
    5353
    5454    $plink = $prli_link->getOne($result);
     55
     56    if ($plp_update->is_installed() && $category) {
     57      wp_set_object_terms($plink->link_cpt_id, $category, PlpLinkCategoriesController::$ctax);
     58    }
     59
    5560    $target_url = $plink->url;
    5661    $target_url_title = $plink->name;
  • pretty-link/trunk/app/controllers/PrliUpdateController.php

    r1800524 r2124183  
    7070  public function process_form() {
    7171    if(!isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'],'activation_form')) {
    72       wp_die(_e('Why you creepin\'?', 'pretty-link'));
     72      wp_die(__('Why you creepin\'?', 'pretty-link'));
    7373    }
    7474
     
    173173
    174174        $message = $act['message'];
    175         $callback = create_function( '', '$message = "'.$message.'"; ' .
    176                                      'require(PRLI_VIEWS_PATH."/admin/errors.php");' );
     175        $callback = function() use ($message) { require(PRLI_VIEWS_PATH."/admin/errors.php"); };
    177176      }
    178177      catch(Exception $e) {
    179         $callback = create_function( '', '$error = "'.$e->getMessage().'"; ' .
    180                                      'require(PRLI_VIEWS_PATH."/admin/update/activation_warning.php");' );
     178        $error = $e->getMessage();
     179        $callback = function() use ($error) { require(PRLI_VIEWS_PATH."/admin/update/activation_warning.php"); };
    181180      }
    182181
     
    304303  public function queue_button() {
    305304    ?>
    306     <a href="<?php echo admin_url('admin.php?page=pretty-link-options&action=queue&_wpnonce=' . wp_create_nonce('PrliUpdateController::manually_queue_update')); ?>" class="button"><?php _e('Check for Update', 'pretty-link')?></a>
     305    <a href="<?php echo esc_url(admin_url('admin.php?page=pretty-link-options&action=queue&_wpnonce=' . wp_create_nonce('PrliUpdateController::manually_queue_update'))); ?>" class="button"><?php esc_html_e('Check for Update', 'pretty-link')?></a>
    307306    <?php
    308307  }
     
    393392
    394393  public function enqueue_scripts($hook) {
    395     if($hook == 'pretty-links_page_pretty-link-updates') {
     394    if(preg_match('/_page_pretty-link-updates$/', $hook)) {
    396395      wp_register_style('prli-settings-table', PRLI_CSS_URL.'/settings_table.css', array(), PRLI_VERSION);
    397396      wp_enqueue_style('prli-activate-css', PRLI_CSS_URL.'/admin-activate.css', array('prli-settings-table'), PRLI_VERSION);
  • pretty-link/trunk/app/helpers/PrliAppHelper.php

    r1572224 r2124183  
    88  public static function info_tooltip($id, $title, $info) {
    99    ?>
    10     <span id="prli-tooltip-<?php echo $id; ?>" class="prli-tooltip">
     10    <span id="prli-tooltip-<?php echo esc_attr($id); ?>" class="prli-tooltip">
    1111      <span><i class="pl-icon pl-icon-info-circled pl-16"></i></span>
    1212      <span class="prli-data-title prli-hidden"><?php echo $title; ?></span>
     
    1616  }
    1717
    18   public static function groups_dropdown( $field_name, $value='', $include_blank=true ) {
    19     ?>
    20     <select name="<?php echo $field_name; ?>">
     18  public static function pro_only_feature_indicator($feature='', $label=null, $title=null) {
     19    $feature = esc_url_raw( empty($feature) ? '' : "?{$feature}" );
     20    $label = esc_html( is_null($label) ? __('Pro', 'pretty-link') : $label );
     21    $title = esc_attr( is_null($title) ? __('Upgrade to Pro to unlock this feature', 'pretty-link') : $title );
    2122
    22     <?php if( $include_blank ): ?>
    23       <option value=""><?php _e('None', 'pretty-link'); ?></option>
    24     <?php endif; ?>
    25 
    26     <?php
    27       $groups = prli_get_all_groups();
    28       if(is_array($groups)) {
    29         foreach($groups as $group) {
    30           ?>
    31           <option value="<?php echo $group['id']; ?>" <?php selected($value, $group['id']); ?>><?php echo $group['name']; ?></option>
    32           <?php
    33         }
    34       }
    35     ?>
    36 
    37     </select>
    38     <?php
     23    return sprintf(
     24      '<span class="prli-pro-only-indicator" title="%1$s"><a href="https://prettylinks.com/pl/pro-feature-indicator/upgrade%2$s">%3$s</a></span>',
     25      $title,
     26      $feature,
     27      $label
     28    );
    3929  }
    4030}
  • pretty-link/trunk/app/helpers/PrliClicksHelper.php

    r2108490 r2124183  
    1717    // Insert search string
    1818    if(!empty($search_str)) {
    19       $search_params = explode(' ', esc_html($search_str));
     19      $search_params = explode(' ', $search_str);
    2020
    2121      $first_pass = true;
  • pretty-link/trunk/app/helpers/PrliLinksHelper.php

    r2078274 r2124183  
    33class PrliLinksHelper {
    44
    5   public static function groups_dropdown($fieldname, $value='', $extra_options=array(), $classes='') {
    6     global $prli_group;
    7     $groups = $prli_group->getAll();
    8 
    9     $idname = preg_match('#^.*\[(.*?)\]$#',$fieldname,$matches)?$matches[1]:$fieldname;
    10 
    11     ?>
    12     <select id="<?php echo esc_html($idname); ?>" name="<?php echo esc_html($fieldname); ?>" class="<?php echo $classes; ?>">
    13       <?php if( empty($extra_options) ): ?>
    14         <option><?php _e('None', 'pretty-link'); ?>&nbsp;</option>
    15       <?php else:
    16               foreach($extra_options as $exoptkey => $exoptval): ?>
    17                 <option value="<?php echo $exoptval; ?>"><?php echo $exoptkey; ?>&nbsp;</option>
    18       <?php   endforeach;
    19             endif; ?>
    20       <?php foreach($groups as $group): ?>
    21         <?php $selected = ($value==$group->id)?' selected="selected"':''; ?>
    22         <option value="<?php echo $group->id; ?>"<?php echo $selected; ?>><?php echo $group->name; ?>&nbsp;</option>
    23       <?php endforeach; ?>
    24     </select>
    25     <?php
    26   }
    27 
    285  public static function redirect_type_dropdown($fieldname, $value='', $extra_options=array(), $classes='') {
    296    $idname = preg_match('#^.*\[(.*?)\]$#',$fieldname,$matches)?$matches[1]:$fieldname;
    307    ?>
    31     <select id="<?php echo $idname; ?>" name="<?php echo $fieldname; ?>" class="<?php echo $classes; ?>">
     8    <select id="<?php echo esc_attr($idname); ?>" name="<?php echo esc_attr($fieldname); ?>" class="<?php echo esc_attr($classes); ?>">
    329      <?php if( !empty($extra_options) ): ?>
    3310        <?php foreach( $extra_options as $exoptkey => $exoptval ): ?>
    34           <option value="<?php echo $exoptval; ?>"><?php echo $exoptkey; ?>&nbsp;</option>
     11          <option value="<?php echo esc_attr($exoptval); ?>"><?php echo esc_html($exoptkey); ?>&nbsp;</option>
    3512        <?php endforeach; ?>
    3613      <?php endif; ?>
    37       <option value="307" <?php selected((int)$value,(int)307); ?>><?php _e('307 (Temporary)', 'pretty-link') ?>&nbsp;</option>
    38       <option value="302" <?php selected((int)$value,(int)302); ?>><?php _e('302 (Temporary)', 'pretty-link') ?>&nbsp;</option>
    39       <option value="301" <?php selected((int)$value,(int)301); ?>><?php _e('301 (Permanent)', 'pretty-link') ?>&nbsp;</option>
     14      <option value="307" <?php selected((int)$value,(int)307); ?>><?php esc_html_e('307 (Temporary)', 'pretty-link') ?>&nbsp;</option>
     15      <option value="302" <?php selected((int)$value,(int)302); ?>><?php esc_html_e('302 (Temporary)', 'pretty-link') ?>&nbsp;</option>
     16      <option value="301" <?php selected((int)$value,(int)301); ?>><?php esc_html_e('301 (Permanent)', 'pretty-link') ?>&nbsp;</option>
    4017      <?php do_action('prli_redirection_types', array(), $value); ?>
    4118    </select>
    42     <?php
    43   }
    44 
    45   public static function bulk_action_dropdown() {
    46     ?>
    47     <div class="prli_bulk_action_dropdown">
    48       <select class="prli_bulk_action">
    49         <option value="-1"><?php _e('Bulk Actions', 'pretty-link'); ?>&nbsp;</option>
    50         <option value="edit"><?php _e('Edit', 'pretty-link'); ?>&nbsp;</option>
    51         <option value="delete"><?php _e('Delete', 'pretty-link'); ?>&nbsp;</option>
    52       </select>
    53       <a href="javascript:" class="prli_bulk_action_apply button button-primary" data-confmsg="<?php _e('Are you sure you want to delete the selected links?', 'pretty-link'); ?>" data-url="<?php echo admin_url('admin.php'); ?>" data-wpnonce="<?php echo wp_create_nonce('prli_bulk_update'); ?>" style="display:inline-block;margin:0;"><?php _e('Apply', 'pretty-link'); ?></a>
    54     </div>
    55     <?php
    56   }
    57 
    58   public static function bulk_action_checkbox_dropdown($input_name, $input_title, $classes='') {
    59     $idname = preg_match('#^.*\[(.*?)\]$#',$input_name,$matches)?$matches[1]:$input_name;
    60     ?>
    61       <div class="bacheck-title"><?php echo $input_title; ?></div>
    62       <select name="<?php echo $input_name; ?>" class="<?php echo $classes; ?>" id="<?php echo $idname; ?>">
    63         <option value="##nochange##"><?php _e('- No Change -', 'pretty-link'); ?>&nbsp;</option>
    64         <option value="off"><?php _e('Off', 'pretty-link'); ?>&nbsp;</option>
    65         <option value="on"><?php _e('On', 'pretty-link'); ?>&nbsp;</option>
    66       </select>
    6719    <?php
    6820  }
     
    7325    switch( $link->redirect_type ):
    7426      case 'prettybar': ?>
    75         <i title="<?php _e('PrettyBar Redirection', 'pretty-link'); ?>" class="pl-icon-star pl-list-icon"></i><?php
     27        <i title="<?php esc_attr_e('PrettyBar Redirection', 'pretty-link'); ?>" class="pl-icon-star pl-list-icon"></i><?php
    7628        break;
    7729      case 'cloak': ?>
    78         <i title="<?php _e('Cloaked Redirection', 'pretty-link'); ?>" class="pl-icon-cloak pl-list-icon"></i><?php
     30        <i title="<?php esc_attr_e('Cloaked Redirection', 'pretty-link'); ?>" class="pl-icon-cloak pl-list-icon"></i><?php
    7931        break;
    8032      case 'pixel': ?>
    81         <i title="<?php _e('Pixel Tracking Redirection', 'pretty-link'); ?>" class="pl-icon-eye-off pl-list-icon"></i><?php
     33        <i title="<?php esc_attr_e('Pixel Tracking Redirection', 'pretty-link'); ?>" class="pl-icon-eye-off pl-list-icon"></i><?php
    8234        break;
    8335      case 'metarefresh': ?>
    84         <i title="<?php _e('Meta Refresh Redirection', 'pretty-link'); ?>" class="pl-icon-cw pl-list-icon"></i><?php
     36        <i title="<?php esc_attr_e('Meta Refresh Redirection', 'pretty-link'); ?>" class="pl-icon-cw pl-list-icon"></i><?php
    8537        break;
    8638      case 'javascript': ?>
    87         <i title="<?php _e('Javascript Redirection', 'pretty-link'); ?>" class="pl-icon-code pl-list-icon"></i><?php
     39        <i title="<?php esc_attr_e('Javascript Redirection', 'pretty-link'); ?>" class="pl-icon-code pl-list-icon"></i><?php
    8840        break;
    8941      case '307': ?>
    90         <i title="<?php _e('Temporary (307) Redirection', 'pretty-link'); ?>" class="pl-icon-307 pl-list-icon"></i><?php
     42        <i title="<?php esc_attr_e('Temporary (307) Redirection', 'pretty-link'); ?>" class="pl-icon-307 pl-list-icon"></i><?php
    9143        break;
    9244      case '302': /* Using 307 Icon for now */ ?>
    93         <i title="<?php _e('Temporary (302) Redirection', 'pretty-link'); ?>" class="pl-icon-307 pl-list-icon"></i><?php
     45        <i title="<?php esc_attr_e('Temporary (302) Redirection', 'pretty-link'); ?>" class="pl-icon-307 pl-list-icon"></i><?php
    9446        break;
    9547      case '301': ?>
    96         <i title="<?php _e('Permanent (301) Redirection', 'pretty-link'); ?>" class="pl-icon-301 pl-list-icon"></i><?php
     48        <i title="<?php esc_attr_e('Permanent (301) Redirection', 'pretty-link'); ?>" class="pl-icon-301 pl-list-icon"></i><?php
    9749    endswitch;
    9850
    9951    if( $link->nofollow ): ?>
    100       <i title="<?php _e('Nofollow Enabled', 'pretty-link'); ?>" class="pl-icon-cancel-circled pl-list-icon"></i><?php
     52      <i title="<?php esc_attr_e('Nofollow Enabled', 'pretty-link'); ?>" class="pl-icon-cancel-circled pl-list-icon"></i><?php
    10153    endif;
    10254
    10355    if(!empty($link->param_forwarding) && $link->param_forwarding != 'off'): ?>
    104       <i title="<?php _e('Parameter Forwarding Enabled', 'pretty-link'); ?>" class="pl-icon-forward pl-list-icon"></i><?php
     56      <i title="<?php esc_attr_e('Parameter Forwarding Enabled', 'pretty-link'); ?>" class="pl-icon-forward pl-list-icon"></i><?php
    10557    endif;
    10658
     
    11365    $link_nonce = wp_create_nonce( 'link-actions' );
    11466    ?>
    115     <a href="<?php echo admin_url('admin.php?page=pretty-link&action=edit&id=' . $link->id); ?>" title="<?php printf( __('Edit %s', 'pretty-link'), $link->slug ); ?>"><i class="pl-list-icon pl-icon-edit"></i></a>
    116     <a href="<?php echo admin_url("admin.php?page=pretty-link&action=destroy&id={$link->id}&_wpnonce={$link_nonce}"); ?>" onclick="return confirm('<?php printf( __('Are you sure you want to delete your %s Pretty Link? This will delete the Pretty Link and all of the statistical data about it in your database.', 'pretty-link'), $link->name ); ?>');" title="<?php printf( __('Delete %s', 'pretty-link'), $link->slug ); ?>"><i class="pl-list-icon pl-icon-cancel"></i></a>
    117     <a href="<?php echo admin_url("admin.php?page=pretty-link&action=reset&id={$link->id}&_wpnonce={$link_nonce}"); ?>" onclick="return confirm('<?php printf( __('Are you sure you want to reset your %s Pretty Link? This will delete all of the statistical data about this Pretty Link in your database.', 'pretty-link'), $link->name ); ?>');" title="<?php printf( __('Reset %s', 'pretty-link'), $link->name ); ?>"><i class="pl-list-icon pl-icon-reply"></i></a>
     67    <a href="<?php echo esc_url(admin_url('admin.php?page=pretty-link&action=edit&id=' . $link->id)); ?>" title="<?php echo esc_html(sprintf(__('Edit %s', 'pretty-link'), $link->slug)); ?>"><i class="pl-list-icon pl-icon-edit"></i></a>
     68    <a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link&action=destroy&id={$link->id}&_wpnonce={$link_nonce}")); ?>" onclick="return confirm('<?php echo esc_attr(sprintf(__('Are you sure you want to delete your %s Pretty Link? This will delete the Pretty Link and all of the statistical data about it in your database.', 'pretty-link'), $link->name)); ?>');" title="<?php echo esc_attr(sprintf(__('Delete %s', 'pretty-link'), $link->slug)); ?>"><i class="pl-list-icon pl-icon-cancel"></i></a>
     69    <a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link&action=reset&id={$link->id}&_wpnonce={$link_nonce}")); ?>" onclick="return confirm('<?php echo esc_attr(sprintf(__('Are you sure you want to reset your %s Pretty Link? This will delete all of the statistical data about this Pretty Link in your database.', 'pretty-link'), $link->name)); ?>');" title="<?php echo esc_attr(sprintf(__('Reset %s', 'pretty-link'), $link->name)); ?>"><i class="pl-list-icon pl-icon-reply"></i></a>
    11870    <?php
    11971      if( $link->track_me and $prli_options->extended_tracking!='count' ):
    120         ?><a href="<?php echo admin_url("admin.php?page=pretty-link-clicks&l={$link->id}"); ?>" title="<?php printf( __('View clicks for %s', 'pretty-link'), $link->slug ); ?>"><i class="pl-list-icon pl-icon-chart-line"></i></a><?php
     72        ?><a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-clicks&l={$link->id}")); ?>" title="<?php echo esc_attr(sprintf(__('View clicks for %s', 'pretty-link'), $link->slug)); ?>"><i class="pl-list-icon pl-icon-chart-line"></i></a><?php
    12173        do_action('prli-link-action',$link->id);
    12274      endif;
    12375
    12476      if( $link->redirect_type != 'pixel' ):
    125         ?><a href="http://twitter.com/home?status=<?php echo $pretty_link_url; ?>" target="_blank" title="<?php printf( __('Post %s to Twitter', 'pretty-link'), $pretty_link_url ); ?>"><i class="pl-list-icon pl-icon-twitter"></i></a>
    126         <a href="mailto:?subject=Pretty Link&body=<?php echo $pretty_link_url; ?>" target="_blank" title="<?php printf( __('Send %s in an Email', 'pretty-link'), $pretty_link_url ); ?>"><i class="pl-list-icon pl-icon-mail"></i></a><?php
     77        ?><a href="<?php echo esc_url('https://twitter.com/intent/tweet?url=' . urlencode($pretty_link_url)); ?>" target="_blank" title="<?php echo esc_attr(sprintf(__('Post %s to Twitter', 'pretty-link'), $pretty_link_url)); ?>"><i class="pl-list-icon pl-icon-twitter"></i></a>
     78        <a href="<?php echo esc_url('mailto:?subject=Pretty Link&body=' . urlencode($pretty_link_url)); ?>" target="_blank" title="<?php echo esc_attr(sprintf(__('Send %s in an Email', 'pretty-link'), $pretty_link_url)); ?>"><i class="pl-list-icon pl-icon-mail"></i></a><?php
    12779      endif;
    12880    ?>
    12981
    13082    <?php if( $link->redirect_type != 'pixel' ): ?>
    131       <a href="<?php echo $link->url; ?>" target="_blank" title="<?php printf( 'Visit Target URL: %s in a New Window', $link->url ); ?>"><i class="pl-icon-link-ext pl-list-icon"></i></a>
    132       <a href="<?php echo $pretty_link_url; ?>" target="_blank" title="<?php printf( 'Visit Short URL: %s in a New Window', $pretty_link_url ); ?>"><i class="pl-icon-link-ext pl-list-icon"></i></a><?php
     83      <a href="<?php echo esc_url($link->url); ?>" target="_blank" title="<?php echo esc_attr(sprintf(__('Visit Target URL: %s in a New Window', 'pretty-link'), $link->url)); ?>"><i class="pl-icon-link-ext pl-list-icon"></i></a>
     84      <a href="<?php echo esc_url($pretty_link_url); ?>" target="_blank" title="<?php echo esc_attr(sprintf( __('Visit Short URL: %s in a New Window', 'pretty-link'), $pretty_link_url)); ?>"><i class="pl-icon-link-ext pl-list-icon"></i></a><?php
    13385    endif;
    13486
    13587    do_action('prli-special-link-action',$link->id);
    13688  }
     89
     90  public static function link_list_clicks($link) {
     91    global $prli_options;
     92
     93    if($link->track_me) {
     94      $clicks = ( empty($link->clicks) ? 0 : $link->clicks );
     95      $uniques = ( empty($link->uniques) ? 0 : $link->uniques );
     96      $click_str = "{$clicks}/{$uniques}";
     97
     98      if($prli_options->extended_tracking !== 'count') {
     99        ?>
     100          <a href="<?php echo esc_url(admin_url( "admin.php?page=pretty-link-clicks&l={$link->id}" )); ?>"
     101             id="link_clicks_<?php echo esc_attr($link->id); ?>"
     102             title="<?php echo esc_attr(sprintf(__('%d Clicks / %d Uniques', 'pretty-link'), $clicks, $uniques)); ?>"><?php echo esc_html($click_str); ?></a>
     103        <?php
     104      }
     105      else {
     106        echo esc_html($click_str);
     107      }
     108    }
     109    else {
     110      ?>
     111      <img src="<?php echo PRLI_IMAGES_URL.'/not_tracking.png'; ?>" title="<?php esc_attr_e('This link isn\'t being tracked', 'pretty-link'); ?>" />
     112      <?php
     113    }
     114  }
     115
     116  public static function link_list_url_clipboard($link) {
     117    global $prli_link;
     118
     119    $pretty_link_url = $prli_link->get_pretty_link_url($link->slug, true);
     120
     121    ?>
     122      <input type='text'
     123             readonly="true"
     124             style="width: 65%;"
     125             onclick='this.select();'
     126             onfocus='this.select();'
     127             value="<?php echo esc_attr($pretty_link_url); ?>" />
     128        <span class="list-clipboard prli-clipboard">
     129          <i class="pl-icon-clipboard pl-list-icon icon-clipboardjs"
     130             data-clipboard-text="<?php echo esc_url($pretty_link_url); ?>"></i>
     131        </span>
     132        <?php if( 0 ): // $link->redirect_type !== 'pixel' ): ?>
     133          <div style="font-size: 8px;"
     134               title="<?php echo esc_url($link->url); ?>">
     135            <strong><?php esc_html_e('Target URL:', 'pretty-link'); ?></strong>
     136            <?php echo esc_html(substr($link->url,0,47) . ((strlen($link->url) >= 47)?'...':'')); ?>
     137          </div>
     138        <?php endif;
     139  }
     140
     141  public static function link_action_reset($link, $title) {
     142    ob_start();
     143    ?>
     144      <a href=""
     145         data-id="<?php echo esc_attr($link->id); ?>"
     146         class="prli_reset_pretty_link"
     147         title="<?php echo esc_attr(sprintf( __('Reset %s', 'pretty-link'), $link->name )); ?>"><?php echo esc_html($title); ?></a>
     148    <?php
     149
     150    return ob_get_clean();
     151  }
     152
     153  public static function link_action_tweet($link, $title) {
     154    ob_start();
     155    ?>
     156      <a href="<?php echo esc_url('https://twitter.com/intent/tweet?url=' . urlencode($link->pretty_url)); ?>"
     157         target="_blank"
     158         title="<?php echo esc_attr(sprintf( __('Post %s to Twitter', 'pretty-link'), $link->pretty_url )); ?>"><?php echo esc_html($title); ?></a>
     159    <?php
     160
     161    return ob_get_clean();
     162  }
     163
     164  public static function link_action_email($link, $title) {
     165    ob_start();
     166    ?>
     167      <a href="<?php echo esc_url('mailto:?subject=' . rawurlencode(__('Pretty Link', 'pretty-link')) . '&body=' . rawurlencode($link->pretty_url)); ?>"
     168         target="_blank"
     169         title="<?php echo esc_attr(sprintf( __('Send %s in an Email', 'pretty-link'), $link->pretty_url )); ?>"><?php echo esc_html($title); ?></a>
     170    <?php
     171
     172    return ob_get_clean();
     173  }
     174
     175  public static function link_action_visit_target($link, $title) {
     176    ob_start();
     177    ?>
     178      <a href="<?php echo esc_url($link->url); ?>"
     179         target="_blank"
     180         title="<?php echo esc_attr(sprintf(__('Visit Target URL: %s in a New Window', 'pretty-link'), $link->url)); ?>"><?php echo esc_html($title); ?></a>
     181    <?php
     182
     183    return ob_get_clean();
     184  }
     185
     186  public static function link_action_visit_pretty_link($link, $title) {
     187    ob_start();
     188    ?>
     189      <a href="<?php echo esc_url($link->pretty_url); ?>"
     190         target="_blank"
     191         title="<?php echo esc_attr(sprintf(__('Visit Short URL: %s in a New Window', 'pretty-link'), $link->pretty_url)); ?>"><?php echo esc_html($title); ?></a>
     192    <?php
     193
     194    return ob_get_clean();
     195  }
    137196}
    138197
  • pretty-link/trunk/app/models/PrliClick.php

    r1601826 r2124183  
    232232
    233233  public function setupClickLineGraph($start_timestamp, $end_timestamp, $link_id = "all", $type = "all", $group = '', $title_only = false) {
    234     global $wpdb, $prli_utils, $prli_link, $prli_group;
    235 
    236     if(!empty($group)) {
    237       $link_slug = sprintf(__("group: '%s'", 'pretty-link'),$wpdb->get_var($wpdb->prepare("SELECT name FROM {$prli_group->table_name} WHERE id = %d", $group)));
    238     }
    239     else if($link_id == 'all') {
     234    global $wpdb, $prli_utils, $prli_link;
     235
     236    if($link_id == 'all') {
    240237      $link_slug = __('all links', 'pretty-link');
    241238    }
     
    269266  public function get_params_array() {
    270267    $values = array(
    271        'paged'  => (isset($_GET['paged'])?$_GET['paged']:(isset($_POST['paged'])?$_POST['paged']:1)),
     268       'paged'  => (isset($_GET['paged'])?(int)$_GET['paged']:(isset($_POST['paged'])?(int)$_POST['paged']:1)),
    272269       'l'      => (isset($_GET['l'])?(int)$_GET['l']:(isset($_POST['l'])?(int)$_POST['l']:'all')),
    273        'group'  => (isset($_GET['group'])?$_GET['group']:(isset($_POST['group'])?$_POST['group']:'')),
    274        'ip'     => (isset($_GET['ip'])?$_GET['ip']:(isset($_POST['ip'])?$_POST['ip']:'')),
    275        'vuid'   => (isset($_GET['vuid'])?$_GET['vuid']:(isset($_POST['vuid'])?$_POST['vuid']:'')),
    276        'sdate'  => (isset($_GET['sdate'])?$_GET['sdate']:(isset($_POST['sdate'])?$_POST['sdate']:'')),
    277        'edate'  => (isset($_GET['edate'])?$_GET['edate']:(isset($_POST['edate'])?$_POST['edate']:'')),
    278        'type'   => (isset($_GET['type'])?$_GET['type']:(isset($_POST['type'])?$_POST['type']:'all')),
    279        'search' => (isset($_GET['search'])?$_GET['search']:(isset($_POST['search'])?$_POST['search']:'')),
    280        'sort'   => (isset($_GET['sort'])?$_GET['sort']:(isset($_POST['sort'])?$_POST['sort']:'')),
    281        'sdir'   => (isset($_GET['sdir'])?$_GET['sdir']:(isset($_POST['sdir'])?$_POST['sdir']:''))
     270       'group'  => (isset($_GET['group'])?(int)$_GET['group']:(isset($_POST['group'])?(int)$_POST['group']:'')),
     271       'ip'     => sanitize_text_field(stripslashes(isset($_GET['ip'])?$_GET['ip']:(isset($_POST['ip'])?$_POST['ip']:''))),
     272       'vuid'   => sanitize_key(stripslashes(isset($_GET['vuid'])?$_GET['vuid']:(isset($_POST['vuid'])?$_POST['vuid']:''))),
     273       'sdate'  => sanitize_text_field(stripslashes(isset($_GET['sdate'])?$_GET['sdate']:(isset($_POST['sdate'])?$_POST['sdate']:''))),
     274       'edate'  => sanitize_text_field(stripslashes(isset($_GET['edate'])?$_GET['edate']:(isset($_POST['edate'])?$_POST['edate']:''))),
     275       'type'   => sanitize_text_field(stripslashes(isset($_GET['type'])?$_GET['type']:(isset($_POST['type'])?$_POST['type']:'all'))),
     276       'search' => sanitize_text_field(stripslashes(isset($_GET['search'])?$_GET['search']:(isset($_POST['search'])?$_POST['search']:''))),
     277       'sort'   => sanitize_key(stripslashes(isset($_GET['sort'])?$_GET['sort']:(isset($_POST['sort'])?$_POST['sort']:''))),
     278       'sdir'   => sanitize_key(stripslashes(isset($_GET['sdir'])?$_GET['sdir']:(isset($_POST['sdir'])?$_POST['sdir']:'')))
    282279    );
    283280
  • pretty-link/trunk/app/models/PrliDb.php

    r1925455 r2124183  
    2727    global $wpdb, $prli_utils, $plp_update, $prli_db_version;
    2828
     29    $wpdb->query('SET SQL_BIG_SELECTS=1'); //This may be getting set back to 0 when SET MAX_JOIN_SIZE is executed
     30    $wpdb->query('SET MAX_JOIN_SIZE=18446744073709551615');
     31    //$wpdb->query('SET GLOBAL innodb_large_prefix=1'); //Will fail on some installs without proper privileges still
     32
    2933    // This was introduced in WordPress 3.5
    3034    // $char_col = $wpdb->get_charset_collate(); //This doesn't work for most non english setups
     
    4852    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    4953
    50     //Fix for large indexes
    51     $wpdb->query("SET GLOBAL innodb_large_prefix=1");
    52 
    5354    /* Create/Upgrade Clicks (Clicks) Table */
    5455    $sql = "CREATE TABLE {$this->clicks} (
     
    6970              PRIMARY KEY  (id),
    7071              KEY link_id (link_id),
    71               KEY ip (ip),
    72               KEY browser (browser),
    73               KEY btype (btype),
    74               KEY bversion (bversion),
    75               KEY os (os),
    76               KEY referer (referer),
    77               KEY host (host),
    78               KEY uri (uri),
     72              KEY ip (ip(191)),
     73              KEY browser (browser(191)),
     74              KEY btype (btype(191)),
     75              KEY bversion (bversion(191)),
     76              KEY os (os(191)),
     77              KEY referer (referer(191)),
     78              KEY host (host(191)),
     79              KEY uri (uri(191)),
    7980              KEY robot (robot),
    8081              KEY first_click (first_click),
     
    9899              param_struct varchar(255) default NULL,
    99100              redirect_type varchar(255) default '307',
     101              link_status varchar(64) default 'enabled',
    100102              created_at datetime NOT NULL,
    101103              updated_at datetime default NULL,
    102104              group_id int(11) default NULL,
     105              link_cpt_id int(11) default 0,
    103106              PRIMARY KEY  (id),
     107              KEY link_cpt_id (link_cpt_id),
    104108              KEY group_id (group_id),
    105               KEY name (name),
     109              KEY link_status (link_status),
    106110              KEY nofollow (nofollow),
    107111              KEY track_me (track_me),
    108               KEY param_forwarding (param_forwarding),
    109               KEY param_struct (param_struct),
    110               KEY redirect_type (redirect_type),
    111               KEY slug (slug),
     112              KEY param_forwarding (param_forwarding(191)),
     113              KEY redirect_type (redirect_type(191)),
     114              KEY slug (slug(191)),
    112115              KEY created_at (created_at),
    113116              KEY updated_at (updated_at)
     
    116119    dbDelta($sql);
    117120
    118     /* Create/Upgrade Groups Table */
    119     $sql = "CREATE TABLE {$this->groups} (
    120               id int(11) NOT NULL auto_increment,
    121               name varchar(255) default NULL,
    122               description text default NULL,
    123               created_at datetime NOT NULL,
    124               PRIMARY KEY  (id),
    125               KEY name (name)
    126             ) {$char_col};";
    127 
    128     dbDelta($sql);
    129 
    130     /* Create/Upgrade Groups Table */
    131121    $sql = "CREATE TABLE {$this->linkmeta} (
    132122              id int(11) NOT NULL auto_increment,
     
    137127              created_at datetime NOT NULL,
    138128              PRIMARY KEY  (id),
    139               KEY meta_key (meta_key),
     129              KEY meta_key (meta_key(191)),
    140130              KEY link_id (link_id)
    141131            ) {$char_col};";
     
    155145    update_option('prli_db_version', $prli_db_version);
    156146  }
     147
     148  public function table_exists($table) {
     149    global $wpdb;
     150    $q = $wpdb->prepare('SHOW TABLES LIKE %s', $table);
     151    $table_res = $wpdb->get_var($q);
     152    return (strtolower($table_res) == strtolower($table));
     153  }
    157154}
  • pretty-link/trunk/app/models/PrliGroup.php

    r1572224 r2124183  
    2727    global $wpdb;
    2828
    29     $query = 'UPDATE ' . $this->table_name .
    30                 ' SET name=\'' . $values['name'] . '\', ' .
    31                     ' description=\'' . $values['description'] . '\' ' .
    32                 ' WHERE id='.$id;
     29    $query = "UPDATE {$this->table_name} SET name = %s, description = %s WHERE id = %d";
     30    $query = $wpdb->prepare($query, $values['name'], $values['description'], $id);
    3331    $query_results = $wpdb->query($query);
    3432    return $query_results;
     
    3735  public function destroy( $id )
    3836  {
    39     //require_once(PRLI_MODELS_PATH.'/models.inc.php');
    4037    global $wpdb, $prli_link;
    4138
    4239    // Disconnect the links from this group
    43     $query = 'UPDATE ' . $prli_link->table_name .
    44                 ' SET group_id = NULL ' .
    45                 ' WHERE group_id='.$id;
    46     $query_results = $wpdb->query($query);
     40    $query = $wpdb->prepare("UPDATE {$prli_link->table_name} SET group_id = NULL WHERE group_id = %d", $id);
     41    $wpdb->query($query);
    4742
    48     $destroy = 'DELETE FROM ' . $this->table_name .  ' WHERE id=' . $id;
     43    $destroy = $wpdb->prepare("DELETE FROM {$this->table_name} WHERE id = %d", $id);
    4944    return $wpdb->query($destroy);
    5045  }
     
    9994  {
    10095    $values = array(
    101        'action'     => (isset($_GET['action'])?$_GET['action']:(isset($_POST['action'])?$_POST['action']:'list')),
    102        'id'         => (isset($_GET['id'])?$_GET['id']:(isset($_POST['id'])?$_POST['id']:'')),
    103        'paged'      => (isset($_GET['paged'])?$_GET['paged']:(isset($_POST['paged'])?$_POST['paged']:1)),
    104        'group'      => (isset($_GET['group'])?$_GET['group']:(isset($_POST['group'])?$_POST['group']:'')),
    105        'search'     => (isset($_GET['search'])?$_GET['search']:(isset($_POST['search'])?$_POST['search']:'')),
    106        'sort'       => (isset($_GET['sort'])?$_GET['sort']:(isset($_POST['sort'])?$_POST['sort']:'')),
    107        'sdir'       => (isset($_GET['sdir'])?$_GET['sdir']:(isset($_POST['sdir'])?$_POST['sdir']:''))
     96       'action'     => sanitize_key(stripslashes(isset($_GET['action'])?$_GET['action']:(isset($_POST['action'])?$_POST['action']:'list'))),
     97       'id'         => (isset($_GET['id'])?(int)$_GET['id']:(isset($_POST['id'])?(int)$_POST['id']:'')),
     98       'paged'      => (isset($_GET['paged'])?(int)$_GET['paged']:(isset($_POST['paged'])?(int)$_POST['paged']:1)),
     99       'group'      => (isset($_GET['group'])?(int)$_GET['group']:(isset($_POST['group'])?(int)$_POST['group']:'')),
     100       'search'     => sanitize_text_field(stripslashes(isset($_GET['search'])?$_GET['search']:(isset($_POST['search'])?$_POST['search']:''))),
     101       'sort'       => sanitize_key(stripslashes(isset($_GET['sort'])?$_GET['sort']:(isset($_POST['sort'])?$_POST['sort']:''))),
     102       'sdir'       => sanitize_key(stripslashes(isset($_GET['sdir'])?$_GET['sdir']:(isset($_POST['sdir'])?$_POST['sdir']:'')))
    108103    );
    109104
     
    117112    $errors = array();
    118113    if( empty($values['name']) )
    119       $errors[] = "Group must have a name.";
     114      $errors[] = __('Group must have a name.', 'pretty-link');
    120115
    121116    return $errors;
  • pretty-link/trunk/app/models/PrliLink.php

    r1925455 r2124183  
    44class PrliLink {
    55  public $table_name;
     6  public static $cpt = 'pretty-link';
     7  public static $nonce_str = 'pretty-link-nonce';
    68
    79  public function __construct() {
     
    1214  public static function get_count() {
    1315    global $wpdb, $prli_link;
    14     $q = "SELECT COUNT(*) FROM {$prli_link->table_name}";
     16    $q = "SELECT COUNT(*) FROM {$prli_link->table_name} WHERE link_status='enabled'";
    1517    return $wpdb->get_var($q);
    1618  }
     
    1820  public static function get_first_date() {
    1921    global $wpdb, $prli_link;
    20     $q = "SELECT min(created_at) FROM {$prli_link->table_name}";
     22    $q = "SELECT min(created_at) FROM {$prli_link->table_name} WHERE link_status='enabled'";
    2123    return $wpdb->get_var($q);
    2224  }
     
    2527      global $wpdb, $prli_link_meta;
    2628
    27       $now = date('Y-m-d H:i:s');
    28 
    29       if($values['redirect_type'] == 'pixel') {
    30         $values['name'] = (!empty($values['name'])?$values['name']:$values['slug']);
    31       }
    32       else {
    33         $values['name'] = (!empty($values['name'])?$values['name']:PrliUtils::get_page_title($values['url'],$values['slug']));
    34       }
    35 
    36       // We no longer handle this: 'param_struct,'.
    37       $query_str = "
    38         INSERT INTO {$this->table_name} (
    39           url,
    40           slug,
    41           name,
    42           param_forwarding,
    43           redirect_type,
    44           description,
    45           track_me,
    46           nofollow,
    47           group_id,
    48           created_at,
    49           updated_at
    50         )
    51         VALUES (%s,%s,%s,%s,%s,%s,%d,%d,%d,%s,%s)
    52       ";
    53 
    54       $query = $wpdb->prepare(
    55         $query_str,
    56         $values['url'],
    57         $values['slug'],
    58         $values['name'],
    59         (isset($values['param_forwarding']) && !empty($values['param_forwarding']))?1:0,
    60         // We no longer handle this: $values['param_struct'],
    61         $values['redirect_type'],
    62         $values['description'],
    63         (isset($values['track_me']) && !empty($values['track_me']))?1:0,
    64         (isset($values['nofollow']) && !empty($values['nofollow']))?1:0,
    65         (isset($values['group_id'])?(int)$values['group_id']:'NULL'),
    66         $now, $now
    67       );
    68 
    69       $query_results = $wpdb->query($query);
     29      $now = current_time('mysql');
     30
     31      $values = $this->sanitize($values);
     32      $values['created_at'] = $values['updated_at'] = $now;
     33
     34      if($values['link_cpt_id'] == 0) { ## Autocreate CPT
     35
     36        $post_id = $this->create_cpt_for_link($values['name'], $now, $now);
     37
     38        if($post_id == 0 || is_wp_error($post_id)) {
     39          error_log("Unable to create CPT Post for Link");
     40        }
     41
     42        $values['link_cpt_id'] = $post_id;
     43      }
     44
     45      if(empty($values['name'])) {
     46        if($values['redirect_type'] == 'pixel') {
     47          $values['name'] = $values['slug'];
     48        }
     49        else {
     50          $values['name'] = PrliUtils::get_page_title($values['url'],$values['slug']);
     51        }
     52
     53        // Update the post_title field directly so we don't activate the action
     54        // that ultimately calls this function lest we get into an infinite loop
     55        $q = $wpdb->prepare("UPDATE {$wpdb->posts} SET post_title=%s WHERE ID=%d", $values['name'], $values['link_cpt_id']);
     56        $wpdb->query($q);
     57      }
     58
     59      $query_results = $wpdb->insert($this->table_name, $values);
    7060
    7161      $link_id = ($query_results ? $wpdb->insert_id : false);
     
    7666      }
    7767
     68      $this->update_cpt_title($values['link_cpt_id'], $values['name']);
     69      $this->update_cpt_status($values['link_cpt_id']);
     70      $this->update_cpt_post_date($values['link_cpt_id'], $now);
     71
    7872      do_action('prli-create-link', $link_id, $values);
    7973
     
    8276
    8377    public function update( $id, $values ) {
     78      global $wpdb, $prli_link;
     79
     80      $now = current_time('mysql');
     81
     82      $values = $this->sanitize($values);
     83      $values['updated_at'] = $now;
     84
     85      $title = isset($values['name'])?trim($values['name']):'';
     86
     87      if(empty($title)) {
     88        error_log("REDIRECT TYPE: " . $values['redirect_type']);
     89        if($values['redirect_type'] == 'pixel') {
     90          $title = $values['slug'];
     91        }
     92        else {
     93          $title = PrliUtils::get_page_title($values['url'],$values['slug']);
     94        }
     95      }
     96
     97      $query_results = $wpdb->update($this->table_name, $values, array('id' => $id));
     98
     99      $link = $this->getOne($id);
     100      $this->update_cpt_title($link->link_cpt_id, $title);
     101      $this->update_cpt_status($link->link_cpt_id);
     102      $this->update_cpt_post_modified($link->link_cpt_id, $now);
     103
     104      return $id;
     105    }
     106
     107    public function disable_link($id) {
     108      return $this->update_link_status( $id, 'disabled' );
     109    }
     110
     111    public function enable_link($id) {
     112      return $this->update_link_status( $id, 'enabled' );
     113    }
     114
     115    public function update_link_status( $id, $link_status='enabled' ) {
    84116      global $wpdb;
    85117
    86       $now = date('Y-m-d H:i:s');
    87 
    88       if($values['redirect_type'] == 'pixel') {
    89         $values['name'] = (!empty($values['name'])?$values['name']:$values['slug']);
    90       }
    91       else {
    92         $values['name'] = (!empty($values['name'])?$values['name']:PrliUtils::get_page_title($values['url'],$values['slug']));
    93       }
    94 
    95       // 'param_struct=%s, ' .
    96       $query_str = "
    97         UPDATE {$this->table_name}
    98            SET url=%s,
    99                slug=%s,
    100                name=%s,
    101                param_forwarding=%s,
    102                redirect_type=%s,
    103                description=%s,
    104                track_me=%d,
    105                nofollow=%d,
    106                group_id=%d,
    107                updated_at=%s
    108          WHERE id=%d
    109       ";
    110 
    111       // isset($values['param_struct'])?$values['param_struct']:'',
    112       $query = $wpdb->prepare(
    113         $query_str,
    114         isset($values['url'])?$values['url']:'',
    115         isset($values['slug'])?$values['slug']:'',
    116         isset($values['name'])?$values['name']:'',
    117         (isset($values['param_forwarding']) && !empty($values['param_forwarding']))?1:0,
    118         isset($values['redirect_type'])?$values['redirect_type']:'',
    119         isset($values['description'])?$values['description']:'',
    120         (isset($values['track_me']) && !empty($values['track_me']))?1:0,
    121         (isset($values['nofollow']) && !empty($values['nofollow']))?1:0,
    122         (isset($values['group_id'])?(int)$values['group_id']:'NULL'),
    123         $now, $id
     118      $q = $wpdb->prepare("
     119          UPDATE {$this->table_name}
     120             SET link_status=%s
     121           WHERE id=%d
     122        ",
     123        $link_status,
     124        $id
    124125      );
    125126
    126       $query_results = $wpdb->query($query);
    127 
    128       return $query_results;
    129     }
    130 
    131     public function bulk_update($ids, $values) {
    132       if(!empty($ids) && is_array($values) && !empty($values)) {
    133         global $wpdb;
    134 
    135         $now    = date('Y-m-d H:i:s');
    136         $sets   = array();
    137         $query  = $wpdb->prepare("UPDATE {$this->table_name} SET updated_at=%s ", $now);
    138 
    139         $link_columns = array(
    140                           'name',
    141                           'description',
    142                           'url',
    143                           'slug',
    144                           'nofollow',
    145                           'track_me',
    146                           'param_forwarding',
    147                           'param_struct',
    148                           'redirect_type',
    149                           'group_id'
    150                         );
    151 
    152         foreach($values as $lnkkey => $lnkval) {
    153           // make sure this is an option contained in the links table
    154           if(in_array($lnkkey, $link_columns)) {
    155             // check to see if this is a checkbox
    156             if(in_array(strtolower($lnkval), array('on','off'))) {
    157               $sets[] = $wpdb->prepare("{$lnkkey}=%d", (strtolower($lnkval)=='on'));
    158             }
    159             else {
    160               $sets[] = $wpdb->prepare("{$lnkkey}=%s", $lnkval);
    161             }
    162           }
    163         }
    164 
    165         if(!empty($sets)) {
    166           $query .= ', ';
    167           $query .= implode(',', $sets);
    168         }
    169 
    170         if(preg_match('/,/',$ids)) {
    171           $query .= " WHERE id IN ({$ids})";
    172         }
    173         else {
    174           $query .= $wpdb->prepare(" WHERE id=%d", $ids);
    175         }
    176 
    177         $query_results = $wpdb->query($query);
    178 
    179         return $query_results;
    180       }
    181 
    182       return false;
     127      return $wpdb->query($q);
    183128    }
    184129
     
    186131      global $wpdb;
    187132
    188       $query = 'UPDATE ' . $this->table_name .
    189                   ' SET group_id=' . (isset($value)?$group_id:'NULL') .
    190                   ' WHERE id='.$id;
     133      if (isset($value)) {
     134        $query = $wpdb->prepare(
     135          "UPDATE {$this->table_name} SET group_id = %d WHERE id = %d",
     136          $group_id,
     137          $id
     138        );
     139      } else {
     140        $query = $wpdb->prepare(
     141          "UPDATE {$this->table_name} SET group_id = NULL WHERE id = %d",
     142          $id
     143        );
     144      }
     145
    191146      $query_results = $wpdb->query($query);
    192147
     
    194149    }
    195150
    196     public function destroy($id) {
    197       //require_once(PRLI_MODELS_PATH.'/models.inc.php');
     151    public function destroy($id, $delete_mode='delete_cpt') {
    198152      global $wpdb, $prli_click, $prli_link_meta;
    199153
    200154      do_action('prli_delete_link', $id);
     155
     156      $link = $this->getOne($id);
     157      if($delete_mode=='delete_cpt' && $link->link_cpt_id > 0) {
     158        wp_delete_post($link->link_cpt_id, true);
     159      }
     160
    201161      $metas = $wpdb->prepare("DELETE FROM {$prli_link_meta->table_name} WHERE link_id=%d",$id);
    202162      $reset = $wpdb->prepare("DELETE FROM {$prli_click->table_name} WHERE link_id=%d",$id);
     
    210170
    211171    public function reset($id) {
    212       //require_once(PRLI_MODELS_PATH.'/models.inc.php');
    213172      global $wpdb, $prli_click, $prli_link_meta;
    214173
     
    221180    }
    222181
    223     public function getOneFromSlug( $slug, $return_type = OBJECT, $include_stats = false ) {
    224       global $wpdb, $prli_click, $prli_options, $prli_link_meta;
    225 
    226       static $cached;
    227 
    228       if(!isset($cached)) { $cached = array(); }
    229 
    230       if(!$include_stats && isset($cached[$slug])) {
    231         return $cached[$slug];
    232       }
    233       elseif($include_stats && isset($cached[$slug]['stats'])) {
    234         return $cached[$slug]['stats'];
    235       }
     182    public function getOneFromSlug( $slug, $return_type = OBJECT, $include_stats = false, $exclude_disabled=true ) {
     183      return $this->get_one_by( 'slug', $slug, $return_type, $include_stats, $exclude_disabled );
     184    }
     185
     186    public function getOne( $id, $return_type = OBJECT, $include_stats = false, $exclude_disabled=true ) {
     187      return $this->get_one_by( 'id', $id, $return_type, $include_stats, $exclude_disabled );
     188    }
     189
     190    public function get_one_by( $field='id', $val, $return_type = OBJECT, $include_stats = false, $exclude_disabled=true ) {
     191      global $wpdb, $prli_click, $prli_options, $prli_link_meta, $prli_blogurl;
     192
     193      $struct = PrliUtils::get_permalink_pre_slug_uri();
    236194
    237195      if($include_stats) {
    238         $query = 'SELECT li.*, ';
     196        $query = "SELECT li.*, CONCAT(\"{$prli_blogurl}\",\"{$struct}\",li.slug) AS pretty_url, ";
     197
     198        $op = $prli_click->get_exclude_where_clause( ' AND' );
    239199
    240200        if($prli_options->extended_tracking != 'count') {
    241           $query .= '(SELECT COUNT(*) FROM ' . $prli_click->table_name . ' cl ' .
    242                         'WHERE cl.link_id = li.id' . $prli_click->get_exclude_where_clause( ' AND' ) . ') as clicks, ' .
    243                     '(SELECT COUNT(*) FROM ' . $prli_click->table_name . ' cl ' .
    244                         'WHERE cl.link_id = li.id ' .
    245                         'AND cl.first_click <> 0' . $prli_click->get_exclude_where_clause( ' AND' ) . ') as uniques ';
     201          $query .= "
     202            (
     203              SELECT COUNT(*)
     204                FROM {$prli_click->table_name} AS cl
     205               WHERE cl.link_id = li.id
     206               {$op}
     207            ) as clicks,
     208            (
     209              SELECT COUNT(*) FROM {$prli_click->table_name} AS cl
     210               WHERE cl.link_id = li.id
     211                 AND cl.first_click <> 0
     212                {$op}
     213            ) as uniques
     214          ";
    246215        }
    247216        else {
    248           $query .= '(SELECT lm.meta_value FROM ' . $prli_link_meta->table_name . ' lm ' .
    249                         'WHERE lm.meta_key="static-clicks" AND lm.link_id=li.id LIMIT 1) as clicks, ' .
    250                     '(SELECT lm.meta_value FROM ' . $prli_link_meta->table_name . ' lm ' .
    251                         'WHERE lm.meta_key="static-uniques" AND lm.link_id=li.id LIMIT 1) as uniques ';
    252         }
    253 
    254         $query .= "FROM {$this->table_name} li " .
    255                   'WHERE slug=%s';
     217          $query .= "
     218            (
     219              SELECT lm.meta_value
     220                FROM {$prli_link_meta->table_name} AS lm
     221               WHERE lm.meta_key=\"static-clicks\"
     222                 AND lm.link_id=li.id LIMIT 1
     223            ) as clicks,
     224            (
     225              SELECT lm.meta_value FROM {$prli_link_meta->table_name} AS lm
     226               WHERE lm.meta_key=\"static-uniques\"
     227                 AND lm.link_id=li.id
     228               LIMIT 1
     229            ) as uniques
     230          ";
     231        }
    256232      }
    257233      else {
    258         $query = "SELECT * FROM {$this->table_name} WHERE slug=%s";
    259       }
    260 
    261       $query  = $wpdb->prepare($query, $slug);
    262       $link   = $wpdb->get_row($query, $return_type);
     234        $query = "SELECT li.*, CONCAT(\"{$prli_blogurl}\",\"{$struct}\",li.slug) AS pretty_url";
     235      }
     236
     237      $query .= "
     238        FROM {$this->table_name} AS li
     239        WHERE {$field}=%s
     240      ";
     241
     242      if($exclude_disabled) {
     243        $query .= "
     244            AND link_status='enabled'
     245        ";
     246      }
     247
     248      $query = $wpdb->prepare($query, $val);
     249      $link  = $wpdb->get_row($query, $return_type);
    263250
    264251      //get_row returns a null if not found - we don't want nulls
     
    270257      }
    271258
    272       //Cache this to prevent multiple queries
    273       if(!$include_stats) {
    274         $cached[$slug] = $link;
    275       }
    276       else {
    277         $cached[$slug]['stats'] = $link;
    278       }
    279 
    280259      return $link;
    281260    }
    282261
    283     public function getOne( $id, $return_type = OBJECT, $include_stats = false ) {
    284       global $wpdb, $prli_click, $prli_link_meta, $prli_options;
    285 
    286       if(!isset($id) or empty($id)) { return false; }
    287 
    288       static $cached;
    289 
    290       if(!isset($cached)) { $cached = array(); }
    291 
    292       if(!$include_stats && isset($cached[$id])) {
    293         return $cached[$id];
    294       }
    295 
    296       if($include_stats) {
    297         $query = 'SELECT li.*, ';
    298 
    299         if($prli_options->extended_tracking != 'count') {
    300           $query .= '(SELECT COUNT(*) FROM ' . $prli_click->table_name . ' cl ' .
    301                         'WHERE cl.link_id = li.id' . $prli_click->get_exclude_where_clause( ' AND' ) . ') as clicks, ' .
    302                     '(SELECT COUNT(*) FROM ' . $prli_click->table_name . ' cl ' .
    303                         'WHERE cl.link_id = li.id ' .
    304                         'AND cl.first_click <> 0' . $prli_click->get_exclude_where_clause( ' AND' ) . ') as uniques ';
    305         }
    306         else {
    307           $query .= '(SELECT lm.meta_value FROM ' . $prli_link_meta->table_name . ' lm ' .
    308                         'WHERE lm.meta_key="static-clicks" AND lm.link_id=li.id LIMIT 1) as clicks, ' .
    309                     '(SELECT lm.meta_value FROM ' . $prli_link_meta->table_name . ' lm ' .
    310                         'WHERE lm.meta_key="static-uniques" AND lm.link_id=li.id LIMIT 1) as uniques ';
    311         }
    312 
    313         $query .= 'FROM ' . $this->table_name . ' li ' .
    314                   'WHERE id=%d';
    315       }
    316       else {
    317         $query = "SELECT * FROM {$this->table_name} WHERE id=%d";
    318       }
    319 
    320       $query  = $wpdb->prepare($query, $id);
    321       $link   = $wpdb->get_row($query, $return_type);
    322 
    323       if($include_stats and $link and $prli_options->extended_tracking == 'count') {
    324         $link->clicks  = $prli_link_meta->get_link_meta($link->id,'static-clicks',true);
    325         $link->uniques = $prli_link_meta->get_link_meta($link->id,'static-uniques',true);
    326       }
    327 
    328       //Cache this to prevent multiple queries
    329       if(!$include_stats) {
    330         $cached[$id] = $link;
    331       }
    332 
    333       return $link;
    334     }
    335 
    336     public function find_first_target_url($target_url)
    337     {
     262    public function find_first_target_url($target_url) {
    338263      global $wpdb;
    339       $query_str = "SELECT id FROM {$this->table_name} WHERE url=%s LIMIT 1";
     264      $query_str = "SELECT id FROM {$this->table_name} WHERE link_status='enabled' AND url=%s LIMIT 1";
    340265      $query = $wpdb->prepare($query_str,$target_url);
    341266      return $wpdb->get_var($query);
     
    345270    {
    346271      global $wpdb;
    347       $query_str = "SELECT * FROM {$this->table_name} WHERE url=%s LIMIT 1";
     272      $query_str = "SELECT * FROM {$this->table_name} WHERE link_status='enabled' AND url=%s LIMIT 1";
    348273      $query = $wpdb->prepare($query_str,$target_url);
    349274      $pretty_link = $wpdb->get_row($query);
     
    381306        {
    382307          // Match longest slug -- this is the most common
    383           $params = (isset($match_val[3])?$match_val[3]:'');
     308          $pretty_link_params = (isset($match_val[3])?$match_val[3]:'');
    384309          if( $pretty_link_found = $this->is_pretty_link_slug( $match_val[2] ) )
    385             return compact('pretty_link_found','pretty_link_params');
     310            return compact('pretty_link_found');
    386311
    387312          // Trim down the matched link
     
    397322            $new_match_str ="#^{$subdir_str}({$struct})({$matched_link})(.*?)?$#";
    398323
    399             $params = (isset($match_val[3])?$match_val:'');
     324            $pretty_link_params = (isset($match_val[3])?$match_val:'');
    400325            if( $pretty_link_found = $this->is_pretty_link_slug( $match_val[2] ) )
    401               return compact('pretty_link_found','pretty_link_params');
     326              return compact('pretty_link_found');
    402327
    403328            // Trim down the matched link and try again
     
    410335    }
    411336
    412     public function is_pretty_link_slug($slug)
    413     {
     337    public function is_pretty_link_slug($slug) {
    414338      return apply_filters('prli-check-if-slug', $this->getOneFromSlug( rawurldecode($slug) ), rawurldecode($slug));
    415339    }
     
    417341    public function get_link_min( $id, $return_type = OBJECT ) {
    418342      global $wpdb, $prli_link_meta;
    419       $query_str = "SELECT * FROM {$this->table_name} WHERE id=%d";
     343      $query_str = "SELECT * FROM {$this->table_name} WHERE link_status='enabled' AND id=%d";
    420344      $query = $wpdb->prepare($query_str, $id);
    421345      $res = $wpdb->get_row($query, $return_type);
     
    430354    }
    431355
    432     public function getAll($where = '', $order_by = '', $return_type = OBJECT, $include_stats = false)
    433     {
    434       global $wpdb, $prli_click, $prli_group, $prli_link_meta, $prli_options, $prli_utils;
    435 
    436       if($include_stats)
    437       {
    438         $query = 'SELECT li.*, ';
    439         if($prli_options->extended_tracking != 'count')
    440         {
    441           $query .= '(SELECT COUNT(*) FROM ' . $prli_click->table_name . ' cl ' .
    442                         'WHERE cl.link_id = li.id' . $prli_click->get_exclude_where_clause( ' AND' ) . ') as clicks, ' .
    443                     '(SELECT COUNT(*) FROM ' . $prli_click->table_name . ' cl ' .
    444                         'WHERE cl.link_id = li.id ' .
    445                         'AND cl.first_click <> 0' . $prli_click->get_exclude_where_clause( ' AND' ) . ') as uniques, ';
     356    public function getAll($where = '', $order_by = '', $return_type = OBJECT, $include_stats = false) {
     357      global $wpdb, $prli_click, $prli_group, $prli_link_meta, $prli_options, $prli_utils, $prli_blogurl;
     358
     359      $struct = PrliUtils::get_permalink_pre_slug_regex();
     360
     361      $op = $prli_click->get_exclude_where_clause( ' AND' );
     362
     363      if($include_stats) {
     364        $query = "SELECT li.*, CONCAT(\"{$prli_blogurl}\",\"{$struct}\",li.slug) AS pretty_url, ";
     365        if($prli_options->extended_tracking != 'count') {
     366          $query .= "
     367            (
     368              SELECT COUNT(*)
     369                FROM {$prli_click->table_name} AS cl
     370               WHERE cl.link_id = li.id
     371                {$op}
     372            ) as clicks,
     373            (
     374              SELECT COUNT(*)
     375                FROM {$prli_click->table_name} AS cl
     376               WHERE cl.link_id = li.id
     377                 AND cl.first_click <> 0
     378               {$op}
     379            ) as uniques
     380          ";
    446381        }
    447382        else
    448383        {
    449           $query .= '(SELECT lm.meta_value FROM ' . $prli_link_meta->table_name . ' lm ' .
    450                         'WHERE lm.meta_key="static-clicks" AND lm.link_id=li.id LIMIT 1) as clicks, ' .
    451                     '(SELECT lm.meta_value FROM ' . $prli_link_meta->table_name . ' lm ' .
    452                         'WHERE lm.meta_key="static-uniques" AND lm.link_id=li.id LIMIT 1) as uniques, ';
    453         }
    454         $query .= 'gr.name as group_name ' .
    455                  'FROM '. $this->table_name . ' li ' .
    456                  'LEFT OUTER JOIN ' . $prli_group->table_name . ' gr ON li.group_id=gr.id' .
    457                  $prli_utils->prepend_and_or_where(' WHERE', $where) . $order_by;
    458       }
    459       else
    460       {
    461         $query = "SELECT li.*, gr.name as group_name FROM {$this->table_name} li " .
    462                  'LEFT OUTER JOIN ' . $prli_group->table_name . ' gr ON li.group_id=gr.id' .
    463                  $prli_utils->prepend_and_or_where(' WHERE', $where) . $order_by;
    464       }
     384          $query .= "
     385            (
     386              SELECT lm.meta_value
     387                FROM {$prli_link_meta->table_name} AS lm
     388               WHERE lm.meta_key=\"static-clicks\"
     389                 AND lm.link_id=li.id
     390               LIMIT 1
     391            ) as clicks,
     392            (
     393              SELECT lm.meta_value
     394                FROM {$prli_link_meta->table_name} AS lm
     395               WHERE lm.meta_key=\"static-uniques\"
     396                 AND lm.link_id=li.id
     397               LIMIT 1
     398            ) as uniques
     399          ";
     400        }
     401      }
     402      else {
     403        $query = "SELECT li.*,CONCAT(\"{$prli_blogurl}\",\"{$struct}\",li.slug) AS pretty_url ";
     404      }
     405
     406      $query .= "FROM {$this->table_name} AS li
     407       WHERE li.link_status='enabled'
     408             " . $prli_utils->prepend_and_or_where(' AND', $where) .
     409             $order_by;
    465410
    466411      return $wpdb->get_results($query, $return_type);
    467     }
    468 
    469     // Pagination Methods
    470     public function getRecordCount($where="")
    471     {
    472       global $wpdb, $prli_utils;
    473       $query = 'SELECT COUNT(*) FROM ' . $this->table_name . ' li' . $prli_utils->prepend_and_or_where(' WHERE', $where);
    474       return $wpdb->get_var($query);
    475     }
    476 
    477     public function getPageCount($p_size, $where="")
    478     {
    479       return ceil((int)$this->getRecordCount($where) / (int)$p_size);
    480     }
    481 
    482     public function getPage($current_p,$p_size, $where = "", $order_by = '', $return_type = OBJECT)
    483     {
    484       global $wpdb, $prli_click, $prli_utils, $prli_group, $prli_link_meta, $prli_options;
    485       $end_index = $current_p * $p_size;
    486       $start_index = $end_index - $p_size;
    487       $query = 'SELECT li.*, ';
    488       if($prli_options->extended_tracking != 'count')
    489       {
    490         $query .= '(SELECT COUNT(*) FROM ' . $prli_click->table_name . ' cl ' .
    491                       'WHERE cl.link_id = li.id' . $prli_click->get_exclude_where_clause( ' AND' ) . ') as clicks, ' .
    492                   '(SELECT COUNT(*) FROM ' . $prli_click->table_name . ' cl ' .
    493                       'WHERE cl.link_id = li.id ' .
    494                       'AND cl.first_click <> 0' . $prli_click->get_exclude_where_clause( ' AND' ) . ') as uniques, ';
    495       }
    496       else
    497       {
    498         $query .= '(SELECT lm.meta_value FROM ' . $prli_link_meta->table_name . ' lm ' .
    499                       'WHERE lm.meta_key="static-clicks" AND lm.link_id=li.id LIMIT 1) as clicks, ' .
    500                   '(SELECT lm.meta_value FROM ' . $prli_link_meta->table_name . ' lm ' .
    501                       'WHERE lm.meta_key="static-uniques" AND lm.link_id=li.id LIMIT 1) as uniques, ';
    502       }
    503       $query .= 'gr.name as group_name ' .
    504                'FROM ' . $this->table_name . ' li ' .
    505                'LEFT OUTER JOIN ' . $prli_group->table_name . ' gr ON li.group_id=gr.id' .
    506                $prli_utils->prepend_and_or_where(' WHERE', $where) . $order_by . ' ' .
    507                'LIMIT ' . $start_index . ',' . $p_size . ';';
    508       $results = $wpdb->get_results($query, $return_type);
    509       return $results;
    510412    }
    511413
     
    525427      $slug = $slug_prefix . PrliUtils::gen_random_string($num_chars);
    526428
     429      // Intentionally not checking to see if link is enabled or disabled
    527430      $query = "SELECT slug FROM {$this->table_name}";
    528431      $slugs = $wpdb->get_col($query,0);
     
    530433      // It is highly unlikely that we'll ever see 2 identical random slugs
    531434      // but just in case, here's some code to prevent collisions
    532       while(in_array($slug, $slugs) or !PrliUtils::slugIsAvailable($slug))
     435      while(in_array($slug, $slugs) || is_wp_error(PrliUtils::is_slug_available($slug))) {
    533436        $slug = $slug_prefix . PrliUtils::gen_random_string($num_chars);
     437      }
    534438
    535439      return apply_filters('prli-auto-generated-slug', $slug, $slugs, $num_chars);
    536440    }
    537441
    538     public function get_pretty_link_url($slug)
    539     {
     442    public function get_pretty_link_url($slug, $esc_url=false) {
    540443      global $prli_blogurl;
    541444
    542445      $link = $this->getOneFromSlug($slug);
     446      $pretty_link_url = $prli_blogurl . PrliUtils::get_permalink_pre_slug_uri() . $link->slug;
     447      if($esc_url) {
     448        $pretty_link_url = esc_url($pretty_link_url);
     449      }
     450      else {
     451        $pretty_link_url = $pretty_link_url;
     452      }
    543453
    544454      if( ( !isset($link->param_forwarding) || empty($link->param_forwarding) || $link->param_forwarding=='off' ) &&
    545455          ( isset($link->redirect_type) && $link->redirect_type == 'pixel' ) ) {
    546         return '&lt;img src="'.$prli_blogurl.PrliUtils::get_permalink_pre_slug_uri().$link->slug.'" width="1" height="1" style="display: none" &gt;';
     456        return '&lt;img src="'.$pretty_link_url.'" width="1" height="1" style="display: none" /&gt;';
    547457      }
    548458      else {
    549         return $prli_blogurl . PrliUtils::get_permalink_pre_slug_uri() . $link->slug;
    550       }
    551     }
    552 
    553     public function validate( $values )
     459        return $pretty_link_url;
     460      }
     461    }
     462
     463    /**
     464     * Sanitize the given link options and return them
     465     *
     466     * @param  array $values
     467     * @return array
     468     */
     469    public function sanitize($values)
     470    {
     471      $sanitized = array(
     472        'redirect_type' => isset($values['redirect_type']) && is_string($values['redirect_type']) ? sanitize_key($values['redirect_type']) : '307',
     473        'url' => isset($values['url']) && is_string($values['url']) ? esc_url_raw(trim($values['url'])) : '',
     474        'slug' => isset($values['slug']) && is_string($values['slug']) ? sanitize_text_field($values['slug']) : '',
     475        'name' => isset($values['name']) && is_string($values['name']) ? sanitize_text_field($values['name']) : '',
     476        'description' => isset($values['description']) && is_string($values['description']) ? sanitize_textarea_field($values['description']) : '',
     477        'group_id' => isset($values['group_id']) && is_numeric($values['group_id']) ? (int) $values['group_id'] : null,
     478        'nofollow' => isset($values['nofollow']) ? 1 : 0,
     479        'param_forwarding' => isset($values['param_forwarding']) ? 1 : 0,
     480        'track_me' => isset($values['track_me']) ? 1 : 0,
     481        'link_cpt_id' => isset($values['link_cpt_id']) && is_numeric($values['link_cpt_id']) ? (int) $values['link_cpt_id'] : 0
     482      );
     483
     484      return $sanitized;
     485    }
     486
     487    public function validate( $values , $id = null )
    554488    {
    555489      global $wpdb, $prli_utils, $prli_blogurl;
     490
     491      $values = $this->sanitize($values);
    556492
    557493      $errors = array();
     
    560496      }
    561497
    562       if( $values['slug'] == null || $values['slug'] == '' ) {
    563         $errors[] = __("Pretty Link can't be blank", 'pretty-link');
    564       }
    565 
    566498      if( $values['url'] == $prli_blogurl.PrliUtils::get_permalink_pre_slug_uri().$values['slug'] ) {
    567499        $errors[] = __("Target URL must be different than the Pretty Link", 'pretty-link');
     
    580512      }
    581513
    582       $id = isset($values['id'])?$values['id']:null;
    583       if( !$prli_utils->slugIsAvailable($values['slug'],$id) ) {
    584         $errors[] = __("This Pretty Link Slug is already taken. Check to make sure it isn't being used by another pretty link, post, page, category or tag slug. If none of these are true then check to see that this slug isn't the name of a file in the root folder of your wordpress install.", 'pretty-link');
     514      $slug_is_available = PrliUtils::is_slug_available($values['slug'],$id);
     515      if(is_wp_error($slug_is_available)) {
     516        $errors[] = $slug_is_available->get_error_message();
    585517      }
    586518
     
    600532      if(empty($urls)) { return false; }
    601533
    602       $decoded_urls = array_map( create_function( '$url', 'return html_entity_decode(rawurldecode($url));' ), $urls );
     534      $decoded_urls = array_map(
     535        function($url) {
     536          return html_entity_decode(rawurldecode($url));
     537        },
     538        $urls
     539      );
    603540
    604541      // Filter out urls that are already Pretty Links
     
    608545        SELECT CONCAT(%s, li.slug) AS pretty_url
    609546          FROM {$this->table_name} AS li
    610          WHERE li.slug {$where}
     547         WHERE li.link_status='enabled'
     548           AND li.slug {$where}
    611549      ";
    612550      $query = $wpdb->prepare($query, $prli_blogurl.PrliUtils::get_permalink_pre_slug_uri());
     
    617555      if(empty($decoded_urls)) { return false; }
    618556
    619       $where = "IN (" . implode( ',', array_map( create_function( '$url', 'return "\"{$url}\"";' ), $decoded_urls ) ) . ")";
     557      $where = "IN (" . implode( ',', array_map(
     558        function($url) {
     559          return "\"{$url}\"";
     560        },
     561        $decoded_urls ) ) . ")";
    620562
    621563      $query = "
     
    623565               CONCAT(%s, li.slug) AS pretty_url
    624566          FROM {$this->table_name} AS li
    625          WHERE li.url {$where}
     567         WHERE li.link_status='enabled'
     568           AND li.url {$where}
    626569      ";
    627570      $query = $wpdb->prepare($query, $prli_blogurl.PrliUtils::get_permalink_pre_slug_uri());
     
    657600      return "javascript:location.href='{$site_url}/index.php?action=prli_bookmarklet&k={$prli_options->bookmarklet_auth}&target_url='+escape(location.href);";
    658601    }
     602
     603  public function get_link_from_cpt($cpt_id) {
     604    global $wpdb;
     605
     606    $q = $wpdb->prepare("
     607        SELECT id
     608          FROM {$this->table_name}
     609         WHERE link_cpt_id=%d
     610      ",
     611      $cpt_id
     612    );
     613
     614    $link_id = $wpdb->get_var($q);
     615
     616    if(empty($link_id)) {
     617      $link_id = 0;
     618    }
     619
     620    return $link_id;
     621  }
     622
     623  public function update_link_cpt($link_id, $cpt_id) {
     624    global $wpdb;
     625
     626    $q = $wpdb->prepare("
     627        UPDATE {$this->table_name}
     628           SET link_cpt_id=%d
     629         WHERE id=%d
     630      ",
     631      $cpt_id, $link_id
     632    );
     633
     634    return $wpdb->get_var($q);
     635  }
     636
     637  /** We do this directly in the database because wp_insert_post is very slow */
     638  public function create_cpt_for_link($title, $created_at, $updated_at) {
     639    global $wpdb;
     640
     641    $inserted = $wpdb->insert(
     642      $wpdb->posts,
     643      array(
     644        'post_title' => stripslashes($title),
     645        'post_type' => PrliLink::$cpt,
     646        'post_status' => 'publish',
     647        'post_date' => $created_at,
     648        'post_date_gmt' => get_gmt_from_date($created_at),
     649        'post_modified' => $updated_at,
     650        'post_modified_gmt' => get_gmt_from_date($updated_at),
     651        'comment_status' => 'closed',
     652        'ping_status' => 'closed'
     653      ),
     654      array('%s','%s','%s','%s','%s','%s','%s')
     655    );
     656
     657    return $inserted ? $wpdb->insert_id : false;
     658  }
     659
     660  public function update_cpt_title($cpt_id, $title) {
     661    global $wpdb;
     662
     663    $q = $wpdb->prepare("
     664        UPDATE {$wpdb->posts}
     665           SET `post_title` = %s
     666         WHERE `ID` = %d
     667           AND `post_type` = %s
     668      ",
     669      stripslashes($title),
     670      $cpt_id,
     671      PrliLink::$cpt
     672    );
     673
     674    return $wpdb->query($q);
     675  }
     676
     677  public function update_cpt_status($cpt_id, $status='publish') {
     678    global $wpdb;
     679
     680    $q = $wpdb->prepare("
     681        UPDATE {$wpdb->posts}
     682           SET `post_status` = %s
     683         WHERE `ID` = %d
     684           AND `post_type` = %s
     685      ",
     686      $status,
     687      $cpt_id,
     688      PrliLink::$cpt
     689    );
     690
     691    return $wpdb->query($q);
     692  }
     693
     694  public function update_cpt_post_date($cpt_id, $now=false) {
     695    global $wpdb;
     696
     697    if(empty($now)) {
     698      $now = current_time('mysql');
     699    }
     700
     701    $wpdb->update(
     702      $wpdb->posts,
     703      array(
     704        'post_date' => $now,
     705        'post_date_gmt' => get_gmt_from_date($now)
     706      ),
     707      array(
     708        'ID' => $cpt_id,
     709        'post_type' => PrliLink::$cpt
     710      ),
     711      array('%s', '%s'),
     712      array('%d', '%s')
     713    );
     714  }
     715
     716  public function update_cpt_post_modified($cpt_id, $now=false) {
     717    global $wpdb;
     718
     719    if(empty($now)) {
     720      $now = current_time('mysql');
     721    }
     722
     723    $wpdb->update(
     724      $wpdb->posts,
     725      array(
     726        'post_modified' => $now,
     727        'post_modified_gmt' => get_gmt_from_date($now)
     728      ),
     729      array(
     730        'ID' => $cpt_id,
     731        'post_type' => PrliLink::$cpt
     732      ),
     733      array('%s', '%s'),
     734      array('%d', '%s')
     735    );
     736  }
     737
     738  /** For legacy handling of groups filter */
     739  public function get_all_legacy_groups() {
     740    global $wpdb;
     741
     742    $prli_db = new PrliDb();
     743
     744    $groups_table = "{$wpdb->prefix}prli_groups";
     745    $groups = array();
     746
     747    if($prli_db->table_exists($groups_table)) {
     748      $q = "SELECT * FROM {$groups_table} ORDER BY `name`";
     749      $groups = $wpdb->get_results($q);
     750    }
     751
     752    return $groups;
     753  }
    659754}
    660755
  • pretty-link/trunk/app/models/PrliOptions.php

    r1572224 r2124183  
    197197        $this->prettybar_color = '';
    198198    }
    199     else if(!preg_match('/^#/',$this->prettybar_color)) {
     199    else if($this->prettybar_color && !preg_match('/^#/',$this->prettybar_color)) {
    200200      $this->prettybar_color = '#' . $this->prettybar_color;
    201201    }
     
    209209        $this->prettybar_text_color = '000000';
    210210    }
    211     else if(!preg_match('/^#/',$this->prettybar_text_color)) {
     211    else if($this->prettybar_text_color && !preg_match('/^#/',$this->prettybar_text_color)) {
    212212      $this->prettybar_text_color = '#' . $this->prettybar_text_color;
    213213    }
     
    221221        $this->prettybar_link_color = '0000ee';
    222222    }
    223     else if(!preg_match('/^#/',$this->prettybar_link_color)) {
     223    else if($this->prettybar_link_color && !preg_match('/^#/',$this->prettybar_link_color)) {
    224224      $this->prettybar_link_color = '#' . $this->prettybar_link_color;
    225225    }
     
    233233        $this->prettybar_hover_color = 'ababab';
    234234    }
    235     else if(!preg_match('/^#/',$this->prettybar_hover_color)) {
     235    else if($this->prettybar_hover_color && !preg_match('/^#/',$this->prettybar_hover_color)) {
    236236      $this->prettybar_hover_color = '#' . $this->prettybar_hover_color;
    237237    }
     
    245245        $this->prettybar_visited_color = '551a8b';
    246246    }
    247     else if(!preg_match('/^#/',$this->prettybar_visited_color)) {
     247    else if($this->prettybar_visited_color && !preg_match('/^#/',$this->prettybar_visited_color)) {
    248248      $this->prettybar_visited_color = '#' . $this->prettybar_visited_color;
    249249    }
  • pretty-link/trunk/app/models/PrliUtils.php

    r2108490 r2124183  
    8484  }
    8585
    86   public static function get_url_from_slug( $slug ) {
    87     global $prli_blogurl;
    88     return $prli_blogurl . self::get_permalink_pre_slug_uri() . $slug;
    89   }
    90 
    9186  public static function debug_log($message) {
    9287    if(defined('WP_DEBUG') && WP_DEBUG) {
     
    9590  }
    9691
    97   public static function slugIsAvailable( $slug, $id = '' ) {
     92  public static function is_slug_available( $slug, $id = '' ) {
     93    self::debug_log("*** In Slug is available for {$slug} & id=[{$id}]");
    9894    global $wp_rewrite, $prli_link;
    99     $url = self::get_url_from_slug($slug);
     95    $url = self::get_pretty_link_url($slug);
    10096
    10197    if(empty($slug)) {
    102       self::debug_log('SlugIsAvailable: $slug was empty');
    103       return false;
     98      $error = __('The Slug can\'t be empty', 'pretty-link');
     99      self::debug_log("slug_empty: {$error}");
     100      return new WP_Error('slug_empty', $error);
    104101    }
    105102
     
    107104    $filepath = ABSPATH . $slug;
    108105    if( file_exists($filepath) ) {
    109       self::debug_log('SlugIsAvailable: There\'s already a file at: ' . $filepath);
    110       return false;
     106      $error = sprintf(__('There\'s a file this slug conflicts with: %s', 'pretty-link'), $filepath);
     107      self::debug_log("slug_not_available: {$error}");
     108      return new WP_Error('slug_not_available', $error);
    111109    }
    112110
    113111    // Check other Pretty Links
    114     if( empty($id) ) {
    115       $this_link = $prli_link->getOneFromSlug( $slug );
    116       if( $this_link != false ) {
    117         self::debug_log('SlugIsAvailable: There\'s already pretty link for slug: ' . $slug);
    118         return false;
    119       }
    120     }
    121     else {
    122       $this_link = $prli_link->getOne( $id );
    123       $slug_link = $prli_link->getOneFromSlug( $slug );
    124 
    125       // check to see if the link is just being updated with the same slug
    126       if( !empty($this_link) && !empty($slug_link) && $this_link->id === $slug_link->id ) {
    127         return true;
    128       }
    129     }
    130 
    131     // Check Rewrite Rules
    132     $rules = $wp_rewrite->wp_rewrite_rules();
    133     //self::debug_log('SlugIsAvailable: Rewrite Rules: ' . self::object_to_string($rules));
    134     //unset($rules['([^/]+)(/[0-9]+)?/?$']); //Pretty sure this may nullify all the work below, but it's causing too many false positives somehow
    135 
    136     foreach( $rules as $pattern => $query ) {
    137       // just looking for the beginning of the pattern
    138       if(isset($pattern[0]) && $pattern[0] != '^') { $pattern = '^' . $pattern; }
    139 
    140       if( preg_match( "!{$pattern}!", $slug, $matches ) ) {
    141         // Got a match.
    142         // Trim the query of everything up to the '?'. (copied from url_to_postid)
    143         $query = preg_replace("!^.+\?!", '', $query);
    144 
    145         // Substitute the substring matches into the query. (copied from url_to_postid)
    146         $query = addslashes(WP_MatchesMapRegex::apply($query, $matches));
    147 
    148         // Filter out non-public query vars (copied from url_to_postid)
    149         global $wp;
    150         parse_str( $query, $query_vars );
    151         $query = array();
    152 
    153         foreach ( (array) $query_vars as $key => $value ) {
    154           if ( in_array( $key, $wp->public_query_vars ) ) {
    155             $query[$key] = $value;
    156             if ( isset( $post_type_query_vars[$key] ) ) {
    157               $query['post_type'] = $post_type_query_vars[$key];
    158               $query['name'] = $value;
    159             }
    160           }
    161         }
    162 
    163         // Do this query bro
    164         $wpq = new WP_Query( $query );
    165 
    166         // If we have a resolved post (applicable for tag, category & author pages too) then it's taken
    167         if( isset($wpq->post) && isset($wpq->posts) && !empty($wpq->posts) ) {
    168           self::debug_log('SlugIsAvailable: The path resolved to a post in wp rewrite rules for pattern: /'.$pattern.'/ query: '.self::object_to_string($query));
    169           self::debug_log(self::object_to_string($wpq->post));
    170           return false;
    171         }
     112    $slug_link = $prli_link->getOneFromSlug( $slug );
     113    self::debug_log(print_r($slug_link,true));
     114    if(!empty($slug_link) && ($id != $slug_link->id)) {
     115      $error = sprintf(__('This Pretty Link Slug is already taken. There\'s already another pretty link with this slug: %s', 'pretty-link'), $slug);
     116      self::debug_log("slug_not_available: {$error}");
     117      return new WP_Error('slug_not_available', $error);
     118    }
     119
     120    // Check any other URLs
     121    $resp = wp_remote_head($url);
     122
     123    self::debug_log("****** wp_remote_head returned: " . print_r($resp, true));
     124
     125    if(!is_wp_error($resp)) {
     126      if($resp['headers'] instanceof Requests_Utility_CaseInsensitiveDictionary) {
     127        $resp_headers = $resp['headers']->getAll();
     128      }
     129      else {
     130        $resp_headers = $resp['headers'];
     131      }
     132      if($resp['response']['code'] == 200) {
     133        $error = sprintf(__('This Pretty Link Slug is already taken. The path resolved to URL: %s', 'pretty-link'), $url);
     134      }
     135      else if(in_array($resp['response']['code'], array(301,302,307)) &&
     136              isset($resp_headers['location']) &&
     137              preg_match('!^' . preg_quote($url,'!') . '/?$!', $resp_headers['location'])) {
     138        $error = sprintf(__('This Pretty Link Slug is already taken. The path redirected to URL: %s', 'pretty-link'), $resp_headers['location']);
     139      }
     140
     141      if(isset($error)) {
     142        self::debug_log("slug_not_available: {$error}");
     143        return new WP_Error('slug_not_available', $error);
    172144      }
    173145    }
     
    252224    global $wpdb, $prli_click, $prli_options, $prli_link, $plp_update;
    253225
    254     $query = "SELECT * FROM ".$prli_link->table_name." WHERE slug='$slug' LIMIT 1";
     226    $query = $wpdb->prepare("
     227        SELECT *
     228          FROM {$prli_link->table_name}
     229         WHERE slug=%s
     230           AND link_status='enabled'
     231         LIMIT 1
     232      ",
     233      $slug
     234    );
     235
    255236    $pretty_link = $wpdb->get_row($query);
    256237    $pretty_link_target = apply_filters( 'prli_target_url', array( 'url' => $pretty_link->url, 'link_id' => $pretty_link->id, 'redirect_type' => $pretty_link->redirect_type ) );
     
    544525  }
    545526
    546   public function should_install_pro_db() {
    547     global $plp_db_version;
    548     $old_pro_db_version = get_option('prlipro_db_version');
    549 
    550     if($plp_db_version != $old_pro_db_version) { return true; }
    551 
    552     return false;
    553   }
    554 
    555   public function install_pro_db() {
    556     global $wpdb, $plp_db_version;
    557 
    558     $upgrade_path = ABSPATH . 'wp-admin/includes/upgrade.php';
    559     require_once($upgrade_path);
    560 
    561     // Pretty Links Pro Tables
    562     $keywords_table         = "{$wpdb->prefix}prli_keywords";
    563     $post_keywords_table    = "{$wpdb->prefix}prli_post_keywords";
    564     $post_urls_table        = "{$wpdb->prefix}prli_post_urls";
    565     $reports_table          = "{$wpdb->prefix}prli_reports";
    566     $report_links_table     = "{$wpdb->prefix}prli_report_links";
    567     $link_rotations_table   = "{$wpdb->prefix}prli_link_rotations";
    568     $clicks_rotations_table = "{$wpdb->prefix}prli_clicks_rotations";
    569 
    570     // This was introduced in WordPress 3.5
    571     // $char_col = $wpdb->get_charset_collate(); //This doesn't work for most non english setups
    572     $char_col = "";
    573     $collation = $wpdb->get_row("SHOW FULL COLUMNS FROM {$wpdb->posts} WHERE field = 'post_content'");
    574 
    575     if(isset($collation->Collation)) {
    576       $charset = explode('_', $collation->Collation);
    577 
    578       if(is_array($charset) && count($charset) > 1) {
    579         $charset = $charset[0]; //Get the charset from the collation
    580         $char_col = "DEFAULT CHARACTER SET {$charset} COLLATE {$collation->Collation}";
    581       }
    582     }
    583 
    584     //Fine we'll try it your way this time
    585     if(empty($char_col)) { $char_col = $wpdb->get_charset_collate(); }
    586 
    587     //Fix for large indexes
    588     $wpdb->query("SET GLOBAL innodb_large_prefix=1");
    589 
    590     /* Create/Upgrade Keywords Table */
    591     $sql = "
    592       CREATE TABLE {$keywords_table} (
    593         id int(11) NOT NULL auto_increment,
    594         text varchar(255) NOT NULL,
    595         link_id int(11) NOT NULL,
    596         created_at datetime NOT NULL,
    597         PRIMARY KEY  (id),
    598         KEY link_id (link_id),
    599         KEY text (text)
    600       ) {$char_col};
    601     ";
    602 
    603     dbDelta($sql);
    604 
    605     /* Create/Upgrade Keywords Table */
    606     $sql = "
    607       CREATE TABLE {$post_keywords_table} (
    608         id int(11) NOT NULL auto_increment,
    609         keyword_id int(11) NOT NULL,
    610         post_id int(11) NOT NULL,
    611         PRIMARY KEY  (id),
    612         KEY keyword_id (keyword_id),
    613         KEY post_id (post_id),
    614         UNIQUE KEY post_keyword_index (keyword_id,post_id)
    615       ) {$char_col};
    616     ";
    617 
    618     dbDelta($sql);
    619 
    620     /* Create/Upgrade URLs Table */
    621     $sql = "
    622       CREATE TABLE {$post_urls_table} (
    623         id int(11) NOT NULL auto_increment,
    624         url_id int(11) NOT NULL,
    625         post_id int(11) NOT NULL,
    626         PRIMARY KEY  (id),
    627         KEY url_id (url_id),
    628         KEY post_id (post_id),
    629         UNIQUE KEY post_url_index (url_id,post_id)
    630       ) {$char_col};
    631     ";
    632 
    633     dbDelta($sql);
    634 
    635     /* Create/Upgrade Reports Table */
    636     $sql = "
    637       CREATE TABLE {$reports_table} (
    638         id int(11) NOT NULL auto_increment,
    639         name varchar(255) NOT NULL,
    640         goal_link_id int(11) default NULL,
    641         created_at datetime NOT NULL,
    642         PRIMARY KEY  (id),
    643         KEY goal_link_id (goal_link_id),
    644         KEY name (name)
    645       ) {$char_col};
    646     ";
    647 
    648     dbDelta($sql);
    649 
    650     /* Create/Upgrade Reports Table */
    651     $sql = "
    652       CREATE TABLE {$report_links_table} (
    653         id int(11) NOT NULL auto_increment,
    654         report_id int(11) NOT NULL,
    655         link_id int(11) NOT NULL,
    656         created_at datetime NOT NULL,
    657         PRIMARY KEY  (id),
    658         KEY report_id (report_id),
    659         KEY link_id (link_id)
    660       ) {$char_col};
    661     ";
    662 
    663     dbDelta($sql);
    664 
    665     /* Create/Upgrade Link Rotations Table */
    666     $sql = "
    667       CREATE TABLE {$link_rotations_table} (
    668         id int(11) NOT NULL auto_increment,
    669         url varchar(255) default NULL,
    670         weight int(11) default 0,
    671         r_index int(11) default 0,
    672         link_id int(11) NOT NULL,
    673         created_at datetime NOT NULL,
    674         PRIMARY KEY  (id),
    675         KEY link_id (link_id),
    676         KEY url (url),
    677         KEY weight (weight),
    678         KEY r_index (r_index)
    679       ) {$char_col};
    680     ";
    681 
    682     dbDelta($sql);
    683 
    684     /* Create/Upgrade Clicks / Rotations Table */
    685     $sql = "
    686       CREATE TABLE {$clicks_rotations_table} (
    687         id int(11) NOT NULL auto_increment,
    688         click_id int(11) NOT NULL,
    689         link_id int(11) NOT NULL,
    690         url text NOT NULL,
    691         PRIMARY KEY  (id),
    692         KEY click_id (click_id),
    693         KEY link_id (link_id)
    694       ) {$char_col};
    695     ";
    696 
    697     dbDelta($sql);
    698 
    699     /***** SAVE DB VERSION *****/
    700     update_option('prlipro_db_version', $plp_db_version);
    701   }
    702 
    703527  // be careful with this one -- I use it to forceably reinstall pretty link pro
    704528  public function delete_dir($dir) {
     
    794618      if(!empty($char_col))
    795619      {
    796         $prli_table_names = array( "{$wpdb->prefix}prli_groups",
    797                                    "{$wpdb->prefix}prli_clicks",
     620        $prli_table_names = array( "{$wpdb->prefix}prli_clicks",
    798621                                   "{$wpdb->prefix}prli_links",
    799622                                   "{$wpdb->prefix}prli_link_metas",
     
    805628                                   "{$wpdb->prefix}prli_clicks_rotations" );
    806629
     630        $prli_db = new PrliDb();
     631        if ($prli_db->table_exists("{$wpdb->prefix}prli_groups")) {
     632          $prli_table_names[] = "{$wpdb->prefix}prli_groups";
     633        }
     634
    807635        foreach($prli_table_names as $prli_table_name)
    808636        {
     
    869697      $query = $wpdb->prepare($query,'prli-url-aliases');
    870698      $results = $wpdb->query($query);
     699    }
     700
     701    if($db_version && $db_version < 19) {
     702      // Get 1000 links at a time
     703      $q = "
     704        SELECT *
     705          FROM {$prli_link->table_name}
     706         WHERE link_cpt_id IS NULL
     707            OR link_cpt_id <= 0
     708         ORDER BY created_at DESC
     709         LIMIT 1000
     710      ";
     711
     712      $count_q = "
     713        SELECT COUNT(*)
     714          FROM {$prli_link->table_name}
     715         WHERE link_cpt_id IS NULL
     716            OR link_cpt_id <= 0
     717      ";
     718
     719      while(0 < ($count = $wpdb->get_var($count_q))) {
     720
     721        $links = $wpdb->get_results($q);
     722
     723        // Loop through Links in Link Table
     724        foreach($links as $link) {
     725          // If there's already a CPT associated then continue
     726          if($link->link_cpt_id > 0) {
     727            continue;
     728          }
     729
     730          $cpt_id = $prli_link->create_cpt_for_link($link->name, $link->created_at, $link->updated_at);
     731
     732          if($cpt_id == false) {
     733            PrliUtils::debug_log("Unable to create CPT Post for Link (Migration)");
     734          }
     735
     736          // update the link db record with the Link CPT ID
     737          $prli_link->update_link_cpt($link->id, $cpt_id);
     738        }
     739      }
    871740    }
    872741  }
     
    1007876  }
    1008877
     878  /** Attempt to get a page title from the target url */
    1009879  public static function get_page_title($url, $slug='') {
    1010880    $title = '';
     
    1020890    // Look for <title>(.*?)</title> in the text
    1021891    if($data and preg_match('#<title>[\s\n\r]*?(.*?)[\s\n\r]*?</title>#im', $data, $matches)) {
    1022       $title = trim($matches[1]);
     892      $title = html_entity_decode(trim($matches[1]));
    1023893    }
    1024894
     
    1043913  public static function is_url($str) {
    1044914    //For now we're not going to validate this - there's too many possible protocols/schemes to validate now
    1045     return true;
    1046915
    1047916    // This uses the @diegoperini URL matching regex adapted for PHP from https://gist.github.com/dperini/729294
    1048     // return preg_match('_^(?::/?/?)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]-*)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]-*)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,}))\.?)(?::\d{2,5})?(?:[/?#]\S*)?$_iuS', $str);
     917    //return apply_filters('prli_is_valid_url', preg_match('%^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\x{00a1}-\x{ffff}][a-z0-9\x{00a1}-\x{ffff}_-]{0,62})?[a-z0-9\x{00a1}-\x{ffff}]\.)+(?:[a-z\x{00a1}-\x{ffff}]{2,})\.?))(?::\d{2,5})?(?:[/?#]\S*)?$%iuS', $str));
    1049918
    1050919    //Let's see how PHP's built in validator does instead?
    1051920    //return apply_filters('prli_is_valid_url', (filter_var($str, FILTER_VALIDATE_URL) !== FALSE), $str);
     921    //
     922
     923    // Let's just make sure there's a mailto: or // somewhere here
     924    return apply_filters('prli_is_valid_url', preg_match('%(^mailto:|//)%', $str));
    1052925  }
    1053926
     
    1060933  }
    1061934
    1062   public static function get_plp_permalink($link) {
    1063     global $prli_blogurl;
    1064 
     935  public static function get_pretty_link_url($slug, $path_only=false) {
    1065936    $struct = PrliUtils::get_permalink_pre_slug_uri();
    1066937
    1067     if(isset($link->slug))
    1068       return "{$prli_blogurl}{$struct}{$link->slug}";
    1069     else
    1070       return false;
     938    if(isset($slug)) {
     939      $path = "{$struct}{$slug}";
     940      return ($path_only ? $path : home_url($path));
     941    }
     942
     943    return false;
    1071944  }
    1072945
     
    12301103    // Set the default message
    12311104    if(empty($message)) {
    1232       $message = sprintf( __( 'Get started by %1$sadding a URL%2$s that you want to turn into a pretty link.<br/>' .
    1233                               'Come back to see how many times it was clicked.' , 'pretty-link' ),
    1234                           '<a href="' . admin_url( 'admin.php?page=add-new-pretty-link' ) . '">', '</a>' );
     1105      $message = sprintf(
     1106        // translators: %1$s: open link tag, %2$s: close link tag, %3$s: br tag
     1107        esc_html__( 'Get started by %1$sadding a URL%2$s that you want to turn into a pretty link.%3$sCome back to see how many times it was clicked.' , 'pretty-link' ),
     1108        '<a href="' . esc_url(admin_url( 'admin.php?page=add-new-pretty-link' )) . '">',
     1109        '</a>',
     1110        '<br>'
     1111      );
    12351112    }
    12361113
     
    13881265    return self::ts_to_mysql_date(time(),$format);
    13891266  }
     1267
     1268  public static function is_post_request() {
     1269    if(isset($_SERVER['REQUEST_METHOD'])) {
     1270      return (strtolower($_SERVER['REQUEST_METHOD']) == 'post');
     1271    }
     1272    else {
     1273      return (isset($_POST) && !empty($_POST));
     1274    }
     1275  }
     1276
     1277  public static function is_get_request() {
     1278    if(isset($_SERVER['REQUEST_METHOD'])) {
     1279      return (strtolower($_SERVER['REQUEST_METHOD']) == 'get');
     1280    }
     1281    else {
     1282      return (!isset($_GET) || empty($_GET));
     1283    }
     1284  }
     1285
     1286  /**
     1287   * Sanitize the HTML in the given string
     1288   *
     1289   * @param   string  $value
     1290   * @return  string
     1291   */
     1292  public static function sanitize_html($value) {
     1293    return current_user_can('unfiltered_html') ? $value : wp_kses_post($value);
     1294  }
     1295
     1296  /**
     1297   * Ensure the given number $x is between $min and $max inclusive
     1298   *
     1299   * @param   mixed  $x
     1300   * @param   mixed  $min
     1301   * @param   mixed  $max
     1302   * @return  mixed
     1303   */
     1304  public static function clamp($x, $min, $max) {
     1305    return min(max($x, $min), $max);
     1306  }
    13901307}
    13911308
  • pretty-link/trunk/app/views/admin/errors.php

    r1572224 r2124183  
    55    <ul>
    66      <?php foreach($errors as $error): ?>
    7         <li><strong><?php _e('ERROR', 'pretty-link'); ?></strong>: <?php print $error; ?></li>
     7        <li><strong><?php esc_html_e('ERROR', 'pretty-link'); ?></strong>: <?php echo esc_html($error); ?></li>
    88      <?php endforeach; ?>
    99    </ul>
     
    1212<?php if( isset($message) and !empty($message) ): ?>
    1313  <div class="updated notice notice-success is-dismissible">
    14     <p><?php echo $message; ?></p>
     14    <p><?php echo esc_html($message); ?></p>
    1515  </div>
    1616<?php endif; ?>
  • pretty-link/trunk/app/views/admin/popups/rating.php

    r1601826 r2124183  
    11<?php if(!defined('ABSPATH')) {die('You are not allowed to call this page directly.');} ?>
     2
     3<?php $plp_update = new PrliUpdateController(); ?>
    24
    35<div id="prli-rating-popup" class="mfp-hide prli-popup prli-auto-open">
    46  <p><img src="<?php echo PRLI_IMAGES_URL . '/pl-logo-horiz-RGB.svg'; ?>" width="200" height="32" /></p>
    5   <div>&nbsp;</div>
    6   <h2><?php _e('Rate Pretty Link', 'pretty-link'); ?></h2>
    7   <p><?php _e('If you enjoy using Pretty Link would you mind taking a moment to rate it on WordPress.org? It won\'t take more than a minute.', 'pretty-link'); ?></p>
    8   <p><?php _e('Thanks for your support!', 'pretty-link'); ?></p>
    9   <div>&nbsp;</div>
    10   <div>&nbsp;</div>
     7  <div id="prli-rating-stage-one">
     8    <center><h2><?php esc_html_e('Are you enjoying using Pretty Links?', 'pretty-link'); ?></h2></center>
     9    <div>&nbsp;</div>
    1110
    12   <center>
    13     <button data-popup="rating" class="prli-delay-popup button"><?php _e('Remind Me Later', 'pretty-link'); ?></button>
    14     <button data-popup="rating" data-href="https://wordpress.org/plugins/pretty-link/" class="prli-delay-popup button-primary"><?php _e('Review Pretty Link', 'pretty-link'); ?></button>
     11    <center>
     12      <button data-popup="rating" class="prli-rating-enjoy-yes-popup button-primary"><?php esc_html_e('Yes', 'pretty-link'); ?></button>
     13      <button data-popup="rating" class="prli-rating-enjoy-no-popup button"><?php esc_html_e('No', 'pretty-link'); ?></button>
     14    </center>
     15  </div>
     16  <div id="prli-rating-stage-two-yes" class="prli-hidden">
     17    <h2><?php esc_html_e('Rate Pretty Links', 'pretty-link'); ?></h2>
     18    <p><?php esc_html_e('If you enjoy using Pretty Links would you mind taking a moment to rate it on WordPress.org? It won\'t take more than a minute.', 'pretty-link'); ?></p>
     19    <p><?php esc_html_e('Thanks for your support!', 'pretty-link'); ?></p>
    1520    <div>&nbsp;</div>
    16     <a href="" data-popup="rating" class="prli-stop-popup"><?php _e('Never Remind Me Again', 'pretty-link'); ?></a>
    17   </center>
     21    <div>&nbsp;</div>
     22
     23    <center>
     24      <button data-popup="rating" class="prli-delay-popup button"><?php esc_html_e('Remind Me Later', 'pretty-link'); ?></button>
     25      <button data-popup="rating" data-href="https://prettylinks.com/pl/footer/review" class="prli-stop-popup button-primary"><?php esc_html_e('Review Pretty Links', 'pretty-link'); ?></button>
     26    </center>
     27  </div>
     28  <div id="prli-rating-stage-two-no" class="prli-hidden">
     29    <h2><?php esc_html_e('Leave Feedback', 'pretty-link'); ?></h2>
     30    <p><?php esc_html_e('To help us improve Pretty Links, would you mind taking a moment to leave feedback?', 'pretty-link'); ?></p>
     31    <p><?php esc_html_e('Thanks for your support!', 'pretty-link'); ?></p>
     32    <div>&nbsp;</div>
     33    <div>&nbsp;</div>
     34
     35    <center>
     36      <button data-popup="rating" class="prli-delay-popup button"><?php esc_html_e('Remind Me Later', 'pretty-link'); ?></button>
     37      <a href="https://prettylinks.com/feedback/" target="_blank" class="prli-leave-feedback button-primary"><?php esc_html_e('Leave Feedback', 'pretty-link'); ?></a>
     38      <?php if($plp_update->is_installed()): ?>
     39        <div>&nbsp;</div>
     40        <a href="" data-popup="rating" class="prli-stop-popup"><?php esc_html_e('Never Remind Me Again', 'pretty-link'); ?></a>
     41      <?php endif; ?>
     42    </center>
     43  </div>
    1844
    1945</div>
  • pretty-link/trunk/app/views/admin/popups/upgrade.php

    r1722928 r2124183  
    22
    33<div id="prli-upgrade-popup" class="mfp-hide prli-popup prli-auto-open">
    4   <p><img src="<?php echo PRLI_IMAGES_URL . '/pl-logo-horiz-RGB.svg'; ?>" width="200" height="32" /></p>
     4  <p><img src="<?php echo esc_url(PRLI_IMAGES_URL . '/pl-logo-horiz-RGB.svg'); ?>" width="200" height="32" /></p>
    55  <div>&nbsp;</div>
    6   <h2><?php _e('Upgrade Pretty Link PRO', 'pretty-link'); ?></h2>
    7   <p><?php _e('Upgrading will enable you to:', 'pretty-link'); ?><br/>
     6  <h2><?php esc_html_e('Upgrade to Pretty Links PRO', 'pretty-link'); ?></h2>
     7  <p><?php esc_html_e('Unlock Pretty Links\' PRO features and you\'ll be able to:', 'pretty-link'); ?><br/>
    88    <ul>
    9       <li>&nbsp;&nbsp;&nbsp;&bullet;&nbsp;<?php _e('Auto-replace keywords throughout your site with Pretty Links', 'pretty-link'); ?></li>
    10       <li>&nbsp;&nbsp;&nbsp;&bullet;&nbsp;<?php _e('Protect your affiliate links by using Cloaked Redirects', 'pretty-link'); ?></li>
    11       <li>&nbsp;&nbsp;&nbsp;&bullet;&nbsp;<?php _e('Redirect based on a visitor\'s location', 'pretty-link'); ?></li>
    12       <li>&nbsp;&nbsp;&nbsp;&bullet;&nbsp;<?php _e('Auto-prettylink your Pages &amp; Posts', 'pretty-link'); ?></li>
    13       <li>&nbsp;&nbsp;&nbsp;&bullet;&nbsp;<?php _e('Find out what works and what doesn\'t by split testing your links', 'pretty-link'); ?></li>
    14       <li>&nbsp;&nbsp;&nbsp;&bullet;&nbsp;<?php _e('And much, much more!', 'pretty-link'); ?></li>
     9      <li>&nbsp;&nbsp;&nbsp;&bullet;&nbsp;<?php esc_html_e('Monetize existing content with automated Pretty Link placement', 'pretty-link'); ?></li>
     10      <li>&nbsp;&nbsp;&nbsp;&bullet;&nbsp;<?php esc_html_e('Redirect with cloaking, Javascript or Meta-refresh', 'pretty-link'); ?></li>
     11      <li>&nbsp;&nbsp;&nbsp;&bullet;&nbsp;<?php esc_html_e('Redirect by location, time, device or rotation', 'pretty-link'); ?></li>
     12      <li>&nbsp;&nbsp;&nbsp;&bullet;&nbsp;<?php esc_html_e('Expire your Pretty Links', 'pretty-link'); ?></li>
     13      <li>&nbsp;&nbsp;&nbsp;&bullet;&nbsp;<?php esc_html_e('Split-test your Pretty Links', 'pretty-link'); ?></li>
     14      <li>&nbsp;&nbsp;&nbsp;&bullet;&nbsp;<?php esc_html_e('And much, much more!', 'pretty-link'); ?></li>
    1515    </ul>
    1616  </p>
    17   <p><?php _e('Plus, upgrading is fast, easy and won\'t disrupt any of your existing links or data. And there\'s even a 14 day money back guarantee.', 'pretty-link'); ?></p>
    18   <p><?php _e('We think you\'ll love it!', 'pretty-link'); ?></p>
     17  <p><?php esc_html_e('Plus, upgrading is fast, easy and won\'t disrupt any of your existing links or data.', 'pretty-link'); ?></p>
     18  <p><?php esc_html_e('We think you\'ll love it!', 'pretty-link'); ?></p>
    1919  <div>&nbsp;</div>
    2020  <div>&nbsp;</div>
    2121
    2222  <center>
    23     <button data-popup="upgrade" class="prli-delay-popup button"><?php _e('Remind Me Later', 'pretty-link'); ?></button>
    24     <button data-popup="upgrade" data-href="https://prettylinks.com/pl/popup/upgrade" class="prli-delay-popup button-primary"><?php _e('Upgrade to Pretty Links Pro', 'pretty-link'); ?></button>
    25     <div>&nbsp;</div>
    26     <a href="" data-popup="upgrade" class="prli-stop-popup"><?php _e('Never Remind Me Again', 'pretty-link'); ?></a>
     23    <button data-popup="upgrade" data-href="https://prettylinks.com/pl/popup/upgrade" class="prli-delay-popup button-primary"><?php esc_html_e('Upgrade to Pretty Links Pro', 'pretty-link'); ?></button>
     24    <button data-popup="upgrade" class="prli-delay-popup button"><?php esc_html_e('Maybe Later', 'pretty-link'); ?></button>
    2725  </center>
    2826
  • pretty-link/trunk/app/views/admin/update/activation_warning.php

    r1722928 r2124183  
    22<?php global $plp_update; ?>
    33<?php if(defined('PRETTYLINK_LICENSE_KEY') && isset($error)): ?>
    4   <div class="prli-red-notice"><?php printf(__('Error with PRETTYLINK_LICENSE_KEY: %s', 'pretty-link'), $error); ?></div>
     4  <div class="prli-red-notice">
     5    <?php
     6      printf(
     7        esc_html__('Error with PRETTYLINK_LICENSE_KEY: %s', 'pretty-link'),
     8        esc_html($error)
     9      );
     10    ?>
     11  </div>
    512<?php elseif($plp_update->was_activated_with_username_and_password()): ?>
    613  <div class="prli-red-notice">
    7     <h2><?php _e('Pretty Links Pro isn\'t able to get critical automatic updates', 'pretty-link'); ?></h2>
    8     <p><?php _e('It looks like you used to have Pretty Links Pro activated with a username and password but now you need a license key to activate it.', 'pretty-link'); ?></p>
    9     <p><strong><?php printf(__('You can get your license key by logging in at %1$sPrettyLinkPro.com.%2$s', 'pretty-link'), '<a href="https://prettylinks.com/activation-warning/account" target="_blank">','</a>'); ?></strong></p>
    10     <p><?php printf(__('After you paste your license key on the %1$s"Pretty Link" -> "Activate Pro" admin page,%2$s you\'ll start getting updates again.', 'pretty-link'), '<a href="'.$plp_update->activate_page_url().'">','</a>'); ?></p>
     14    <h2><?php esc_html_e('Pretty Links Pro isn\'t able to get critical automatic updates', 'pretty-link'); ?></h2>
     15    <p><?php esc_html_e('It looks like you used to have Pretty Links Pro activated with a username and password but now you need a license key to activate it.', 'pretty-link'); ?></p>
     16    <p>
     17      <strong>
     18        <?php
     19          printf(
     20            // translators: %1$s: open link tag, %2$s: close link tag
     21            esc_html__('You can get your license key by logging in at %1$sPrettyLinkPro.com.%2$s', 'pretty-link'),
     22            '<a href="https://prettylinks.com/activation-warning/account" target="_blank">',
     23            '</a>'
     24          );
     25        ?>
     26      </strong>
     27    </p>
     28    <p>
     29      <?php
     30        printf(
     31          // translators: %1$s: open link tag, %2$s: close link tag
     32          esc_html__('After you paste your license key on the %1$s"Pretty Link" -> "Activate Pro" admin page,%2$s you\'ll start getting updates again.', 'pretty-link'),
     33          sprintf('<a href="%s">', esc_url($plp_update->activate_page_url())),
     34          '</a>'
     35        );
     36      ?>
     37    </p>
    1138  </div>
    1239<?php else: ?>
    1340  <div class="prli-red-notice">
    14     <h2><?php _e('Pretty Links Pro isn\'t able to get critical automatic updates', 'pretty-link'); ?></h2>
    15     <p><strong><?php printf(__('You can retrieve or purchase a license key at %1$sPrettyLinkPro.com%2$s to enable automatic updates today.', 'pretty-link'), '<a href="https://prettylinks.com/pl/activation-warning/buy" target="_blank">','</a>'); ?></strong></p>
    16     <p><?php printf(__('After you paste your license key on the %1$s"Pretty Link" -> "Activate Pro" admin page,%2$s you\'ll start getting automatic updates.', 'pretty-link'), '<a href="'.$plp_update->activate_page_url().'">','</a>'); ?></p>
     41    <h2><?php esc_html_e('Pretty Links Pro isn\'t able to get critical automatic updates', 'pretty-link'); ?></h2>
     42    <p>
     43      <strong>
     44        <?php
     45          printf(
     46            // translators: %1$s: open link tag, %2$s: close link tag
     47            esc_html__('You can retrieve or purchase a license key at %1$sPrettyLinks.com%2$s to enable automatic updates today.', 'pretty-link'),
     48            '<a href="https://prettylinks.com/pl/activation-warning/buy" target="_blank">',
     49            '</a>'
     50          );
     51        ?>
     52      </strong>
     53    </p>
     54    <p>
     55      <?php
     56        printf(
     57          // translators: %1$s: open link tag, %2$s: close link tag
     58          esc_html__('After you paste your license key on the %1$s"Pretty Links" -> "Activate Pro" admin page,%2$s you\'ll start getting automatic updates.', 'pretty-link'),
     59          sprintf('<a href="%s">', esc_url($plp_update->activate_page_url())),
     60          '</a>'
     61        );
     62      ?>
     63    </p>
    1764  </div>
    1865<?php endif; ?>
    19 
  • pretty-link/trunk/app/views/admin/update/addon_popup.php

    r1722928 r2124183  
    22
    33<div class="prli-admin-notice prli-auto-open mfp-hide prli-white-popup prli-popup-leftalign">
    4   <h2 class="prli_error" style="text-align: center !important; padding-bottom: 15px !important; padding-top: 15px !important"><i class="mp-icon-attention"> </i> <?php _e('ACTION REQUIRED', 'pretty-link'); ?></h2>
    5   <p><?php printf(__('The %s features in your Pretty Link options have been moved from Pretty Link into a separate plugin.', 'pretty-link'), $a->name); ?></p>
    6   <p><?php __('Why you ask? Well, it\'s to streamline and increase the performance of Pretty Link for you.', 'pretty-link'); ?></p>
     4  <h2 class="prli_error" style="text-align: center !important; padding-bottom: 15px !important; padding-top: 15px !important"><i class="mp-icon-attention"> </i> <?php esc_html_e('ACTION REQUIRED', 'pretty-link'); ?></h2>
     5  <p><?php echo esc_html(sprintf(__('The %s features in your Pretty Link options have been moved from Pretty Link into a separate plugin.', 'pretty-link'), $a->name)); ?></p>
     6  <p><?php esc_html_e('Why you ask? Well, it\'s to streamline and increase the performance of Pretty Link for you.', 'pretty-link'); ?></p>
    77
    88  <?php if($installed): ?>
    9     <p><?php printf(__('And good for you, it looks like you\'ve already got the %1$s Add-on installed. Just click the "Activate %2$s Add-on" button below and you\'ll get all these features back now.', 'pretty-link'), $a->name, $a->name); ?></p>
     9    <p><?php echo esc_html(sprintf(__('And good for you, it looks like you\'ve already got the %1$s Add-on installed. Just click the "Activate %2$s Add-on" button below and you\'ll get all these features back now.', 'pretty-link'), $a->name, $a->name)); ?></p>
    1010  <?php else: ?>
    11     <p><?php printf(__('Luckily it\'s easy to get these features back now. Just click the "Install %s Add-on" button below.', 'pretty-link'), $a->name); ?></p>
    12     <p><?php printf(__('If you have problems with the auto-install please refer to %1$sthe user manual%2$s for manual install instructions.', 'pretty-link'), '<a href="https://prettylinks.com/pl/addon-popup/um/manual-installation" target="_blank">', '</a>'); ?></p>
     11    <p><?php echo esc_html(sprintf(__('Luckily it\'s easy to get these features back now. Just click the "Install %s Add-on" button below.', 'pretty-link'), $a->name)); ?></p>
     12    <p>
     13      <?php
     14        printf(
     15          // translators: %1$s: open link tag, %2$s: close link tag
     16          esc_html__('If you have problems with the auto-install please refer to %1$sthe user manual%2$s for manual install instructions.', 'pretty-link'),
     17          '<a href="https://prettylinks.com/pl/addon-popup/um/manual-installation" target="_blank">',
     18          '</a>'
     19        );
     20      ?>
     21    </p>
    1322  <?php endif; ?>
    1423  <br/>
    1524  <center>
    16     <div data-addon="<?php echo $k; ?>">
     25    <div data-addon="<?php echo esc_attr($k); ?>">
    1726      <?php if($installed): ?>
    18         <button data-href="<?php echo MeprAddonsHelper::activate_url("pretty-link-{$k}/main.php"); ?>" class="prli-btn prli-left-margin prli-addon-activate"><?php printf(__('Activate %s Add-on', 'pretty-link'), $a->name); ?></button>
     27        <button data-href="<?php echo esc_url(MeprAddonsHelper::activate_url("pretty-link-{$k}/main.php")); ?>" class="prli-btn prli-left-margin prli-addon-activate"><?php echo esc_html(sprintf(__('Activate %s Add-on', 'pretty-link'), $a->name)); ?></button>
    1928      <?php else: ?>
    20         <button data-href="<?php echo MeprAddonsHelper::install_url('pretty-link-'.$k); ?>" class="prli-btn prli-left-margin prli-addon-install"><?php printf(__('Install %s Add-on', 'pretty-link'), $a->name); ?></button>
     29        <button data-href="<?php echo esc_url(MeprAddonsHelper::install_url('pretty-link-'.$k)); ?>" class="prli-btn prli-left-margin prli-addon-install"><?php echo esc_html(sprintf(__('Install %s Add-on', 'pretty-link'), $a->name)); ?></button>
    2130      <?php endif; ?>
    22       <button class="prli-btn prli-left-margin prli-addon-stop-notices"><?php _e('Don\'t Show This Message Again', 'pretty-link'); ?></button>
     31      <button class="prli-btn prli-left-margin prli-addon-stop-notices"><?php esc_html_e('Don\'t Show This Message Again', 'pretty-link'); ?></button>
    2332    </div>
    2433  </center>
  • pretty-link/trunk/app/views/admin/update/addons.php

    r1572224 r2124183  
    11<?php if(!defined('ABSPATH')) {die('You are not allowed to call this page directly.');} ?>
    22
    3 <div class="prli-page-title"><?php _e('Pretty Link Add-ons', 'pretty-link'); ?></div>
     3<div class="prli-page-title"><?php esc_html_e('Pretty Link Add-ons', 'pretty-link'); ?></div>
    44
    55<?php $addons = PrliUpdateController::addons(true); ?>
    66
    77<?php if(empty($addons)): ?>
    8   <h3><?php _e('There were no Add-ons found for your license or lack thereof...', 'pretty-link'); ?></h3>
     8  <h3><?php esc_html_e('There were no Add-ons found for your license or lack thereof...', 'pretty-link'); ?></h3>
    99<?php else: ?>
    1010  <table class="widefat">
     
    1212    <thead>
    1313      <tr>
    14         <th><?php _e('Add-on', 'pretty-link'); ?></th>
    15         <th><?php _e('Description', 'pretty-link'); ?></th>
    16         <th><?php _e('Install', 'pretty-link'); ?></th>
     14        <th><?php esc_html_e('Add-on', 'pretty-link'); ?></th>
     15        <th><?php esc_html_e('Description', 'pretty-link'); ?></th>
     16        <th><?php esc_html_e('Install', 'pretty-link'); ?></th>
    1717      </tr>
    1818    </thead>
     
    3737            <?php
    3838
    39               echo isset($info->extra_info->list_title) ? $info->extra_info->list_title : $info->product_name;
     39              echo esc_html(isset($info->extra_info->list_title) ? $info->extra_info->list_title : $info->product_name);
    4040
    4141              if($update_available) {
    42                 echo ' ' . __('(Update Available)', 'pretty-link');
     42                echo ' ' . esc_html__('(Update Available)', 'pretty-link');
    4343              }
    4444            ?>
    4545            </strong>
    4646          </td>
    47           <td><?php echo $info->extra_info->description; ?></td>
     47          <td><?php echo esc_html($info->extra_info->description); ?></td>
    4848          <td>
    4949            <?php if($installed && $active): ?>
    50               <a class="button" href="" style="pointer-events: none;" disabled><?php _e('Installed & Active', 'pretty-link'); ?></a>
     50              <a class="button" href="" style="pointer-events: none;" disabled><?php esc_html_e('Installed & Active', 'pretty-link'); ?></a>
    5151            <?php elseif($installed && !$active): ?>
    52               <a class="button" href="" style="pointer-events: none;" disabled><?php _e('Installed & Inactive', 'pretty-link'); ?></a>
     52              <a class="button" href="" style="pointer-events: none;" disabled><?php esc_html_e('Installed & Inactive', 'pretty-link'); ?></a>
    5353            <?php else: ?>
    54               <a class="button button-primary" href="<?php echo PrliAddonsHelper::install_url($slug); ?>"><?php _e('Install', 'pretty-link'); ?></a>
     54              <a class="button button-primary" href="<?php echo esc_url(PrliAddonsHelper::install_url($slug)); ?>"><?php esc_html_e('Install', 'pretty-link'); ?></a>
    5555            <?php endif; ?>
    5656          </td>
  • pretty-link/trunk/app/views/admin/update/edge_updates.php

    r1722928 r2124183  
    11<?php if(!defined('ABSPATH')) {die('You are not allowed to call this page directly.');} ?>
    22<?php global $plp_update; ?>
    3 <div id="<?php echo $plp_update->edge_updates_str; ?>-wrap">
    4   <input type="checkbox" id="<?php echo $plp_update->edge_updates_str; ?>" data-nonce="<?php echo wp_create_nonce('wp-edge-updates'); ?>" <?php checked($plp_update->edge_updates); ?>/>&nbsp;<?php _e('Include Pretty Links Pro edge (development) releases in automatic updates (not recommended for production websites)', 'pretty-link'); ?> <img src="<?php echo PRLI_IMAGES_URL . '/square-loader.gif'; ?>" alt="<?php _e('Loading...', 'pretty-link'); ?>" class="prli_loader" />
     3<div id="<?php echo esc_attr($plp_update->edge_updates_str); ?>-wrap">
     4  <input type="checkbox" id="<?php echo esc_attr($plp_update->edge_updates_str); ?>" data-nonce="<?php echo esc_attr(wp_create_nonce('wp-edge-updates')); ?>" <?php checked($plp_update->edge_updates); ?>/>&nbsp;<?php esc_html_e('Include Pretty Links Pro edge (development) releases in automatic updates (not recommended for production websites)', 'pretty-link'); ?> <img src="<?php echo esc_url(PRLI_IMAGES_URL . '/square-loader.gif'); ?>" alt="<?php esc_attr_e('Loading...', 'pretty-link'); ?>" class="prli_loader" />
    55</div>
    66
  • pretty-link/trunk/app/views/admin/update/license.php

    r1722928 r2124183  
    11<?php if(!defined('ABSPATH')) {die('You are not allowed to call this page directly.');} ?>
    2 <?php global $plp_update; ?>
     2<?php
     3global $plp_update;
     4$mothership_license_str = isset($_POST[$plp_update->mothership_license_str]) ? sanitize_key($_POST[$plp_update->mothership_license_str]) : $plp_update->mothership_license;
     5?>
    36
    4 <div class="prli-page-title"><?php _e('Pretty Links Pro License', 'pretty-link'); ?></div>
     7<div class="prli-page-title"><?php esc_html_e('Pretty Links Pro License', 'pretty-link'); ?></div>
    58
    69<?php if( !isset($li) or empty($li) ): ?>
    7   <p class="description"><?php printf(__('You must have a License Key to enable automatic updates for Pretty Links Pro. If you don\'t have a License please go to %1$s to get one. If you do have a license you can login at %2$s to manage your licenses and site activations.', 'pretty-link'), '<a href="https://prettylinks.com/pl/license-alert/buy">prettylinks.com</a>', '<a href="https://prettylinks.com/pl/license-alert/login">prettylinks.com/login</a>'); ?></p>
     10  <p class="description">
     11    <?php
     12      printf(
     13        // translators: %1$s: link to pro site, %2$s: link to pro site login page
     14        esc_html__('You must have a License Key to enable automatic updates for Pretty Links Pro. If you don\'t have a License please go to %1$s to get one. If you do have a license you can login at %2$s to manage your licenses and site activations.', 'pretty-link'),
     15        '<a href="https://prettylinks.com/pl/license-alert/buy">prettylinks.com</a>',
     16        '<a href="https://prettylinks.com/pl/license-alert/login">prettylinks.com/login</a>'
     17      );
     18    ?>
     19  </p>
    820  <form name="activation_form" method="post" action="">
    921    <?php wp_nonce_field('activation_form'); ?>
     
    1123    <table class="form-table">
    1224      <tr class="form-field">
    13         <td valign="top" width="225px"><?php _e('Enter Your Pretty Links Pro License Key:', 'pretty-link'); ?></td>
     25        <td valign="top" width="225px"><?php esc_html_e('Enter Your Pretty Links Pro License Key:', 'pretty-link'); ?></td>
    1426        <td>
    15           <input type="text" name="<?php echo $plp_update->mothership_license_str; ?>" value="<?php echo (isset($_POST[$plp_update->mothership_license_str])?$_POST[$plp_update->mothership_license_str]:$plp_update->mothership_license); ?>"/>
     27          <input type="text" name="<?php echo esc_attr($plp_update->mothership_license_str); ?>" value="<?php echo esc_attr($mothership_license_str); ?>"/>
    1628        </td>
    1729      </tr>
    1830    </table>
    1931    <p class="submit">
    20       <input type="submit" name="Submit" class="button button-primary" value="<?php printf(__('Activate License Key on %s', 'pretty-link'), PrliUtils::site_domain()); ?>" />
     32      <input type="submit" name="Submit" class="button button-primary" value="<?php echo esc_attr(sprintf(__('Activate License Key on %s', 'pretty-link'), PrliUtils::site_domain())); ?>" />
    2133    </p>
    2234  </form>
     
    2537    <div>&nbsp;</div>
    2638
    27     <div class="prli-page-title"><?php _e('Upgrade to Pro', 'pretty-link'); ?></div>
     39    <div class="prli-page-title"><?php esc_html_e('Upgrade to Pro', 'pretty-link'); ?></div>
    2840
    2941    <div>
    30       <?php printf(__('It looks like you haven\'t %1$supgraded to Pretty Links Pro%2$s yet. Here are just a few things you could be doing with pro:', 'pretty-link'),'<a href="https://prettylinks.com/pl/license-alert/upgrade" target="_blank">','</a>') ?>
     42      <?php
     43        printf(
     44          // translators: %1$s: open link tag, %2$s: close link tag
     45          esc_html__('It looks like you haven\'t %1$supgraded to Pretty Links Pro%2$s yet. Here are just a few things you could be doing with pro:', 'pretty-link'),
     46          '<a href="https://prettylinks.com/pl/license-alert/upgrade" target="_blank">',
     47          '</a>'
     48        );
     49      ?>
    3150    </div>
    3251
     
    3453
    3554    <ul style="padding-left: 25px;">
    36       <li>&bullet; <?php _e('Auto-replace keywords throughout your site with Pretty Links', 'pretty-link'); ?></li>
    37       <li>&bullet; <?php _e('Protect your affiliate links by using Cloaked Redirects', 'pretty-link'); ?></li>
    38       <li>&bullet; <?php _e('Redirect based on a visitor\'s location', 'pretty-link'); ?></li>
    39       <li>&bullet; <?php _e('Auto-prettylink your Pages &amp; Posts', 'pretty-link'); ?></li>
    40       <li>&bullet; <?php _e('Find out what works and what doesn\'t by split testing your links', 'pretty-link'); ?></li>
    41       <li>&bullet; <?php _e('And much, much more!', 'pretty-link'); ?></li>
     55      <li>&bullet; <?php esc_html_e('Auto-replace keywords throughout your site with Pretty Links', 'pretty-link'); ?></li>
     56      <li>&bullet; <?php esc_html_e('Protect your affiliate links by using Cloaked Redirects', 'pretty-link'); ?></li>
     57      <li>&bullet; <?php esc_html_e('Redirect based on a visitor\'s location', 'pretty-link'); ?></li>
     58      <li>&bullet; <?php esc_html_e('Auto-prettylink your Pages &amp; Posts', 'pretty-link'); ?></li>
     59      <li>&bullet; <?php esc_html_e('Find out what works and what doesn\'t by split testing your links', 'pretty-link'); ?></li>
     60      <li>&bullet; <?php esc_html_e('And much, much more!', 'pretty-link'); ?></li>
    4261    </ul>
    4362
    4463    <div>&nbsp;</div>
    45     <div><?php _e('Plus, upgrading is fast, easy and won\'t disrupt any of your existing links or data. And there\'s even a 14 day money back guarantee.', 'pretty-link'); ?></div>
     64    <div><?php esc_html_e('Plus, upgrading is fast, easy and won\'t disrupt any of your existing links or data. And there\'s even a 14 day money back guarantee.', 'pretty-link'); ?></div>
    4665    <div>&nbsp;</div>
    47     <div><?php _e('We think you\'ll love it!', 'pretty-link'); ?></div>
     66    <div><?php esc_html_e('We think you\'ll love it!', 'pretty-link'); ?></div>
    4867    <div>&nbsp;</div>
    49     <div><a href="https://prettylinks.com/pl/license-alert/upgrade-1" class="button button-primary"><?php _e('Upgrade to Pro today!', 'pretty-link'); ?></a></div>
     68    <div><a href="https://prettylinks.com/pl/license-alert/upgrade-1" class="button button-primary"><?php esc_html_e('Upgrade to Pro today!', 'pretty-link'); ?></a></div>
    5069  <?php endif; ?>
    5170<?php else: ?>
    5271  <div class="prli-license-active">
    53     <div><h4><?php _e('Active License Key Information:', 'pretty-link'); ?></h4></div>
     72    <div><h4><?php esc_html_e('Active License Key Information:', 'pretty-link'); ?></h4></div>
    5473    <table>
    5574      <tr>
    56         <td><?php _e('License Key:', 'pretty-link'); ?></td>
    57         <td>********-****-****-****-<?php echo substr($li['license_key']['license'], -12); ?></td>
     75        <td><?php esc_html_e('License Key:', 'pretty-link'); ?></td>
     76        <td>********-****-****-****-<?php echo esc_html(substr($li['license_key']['license'], -12)); ?></td>
    5877      </tr>
    5978      <tr>
    60         <td><?php _e('Status:', 'pretty-link'); ?></td>
    61         <td><?php printf(__('<b>Active on %s</b>', 'pretty-link'), PrliUtils::site_domain()); ?></td>
     79        <td><?php esc_html_e('Status:', 'pretty-link'); ?></td>
     80        <td><b><?php echo esc_html(sprintf(__('Active on %s', 'pretty-link'), PrliUtils::site_domain())); ?></b></td>
    6281      </tr>
    6382      <tr>
    64         <td><?php _e('Product:', 'pretty-link'); ?></td>
    65         <td><?php echo $li['product_name']; ?></td>
     83        <td><?php esc_html_e('Product:', 'pretty-link'); ?></td>
     84        <td><?php echo esc_html($li['product_name']); ?></td>
    6685      </tr>
    6786      <tr>
    68         <td><?php _e('Activations:', 'pretty-link'); ?></td>
    69         <td><?php printf('<b>%1$d of %2$s</b> sites have been activated with this license key', $li['activation_count'], ucwords($li['max_activations'])); ?></td>
     87        <td><?php esc_html_e('Activations:', 'pretty-link'); ?></td>
     88        <td>
     89          <?php
     90            printf(
     91              // translators: %1$s: open b tag, %2$s: close b tag, %3$d: current activation count, %4$s: max activations
     92              esc_html__('%1$s%3$d of %4$s%2$s sites have been activated with this license key', 'pretty-link'),
     93              '<b>',
     94              '</b>',
     95              esc_html($li['activation_count']),
     96              esc_html(ucwords($li['max_activations']))
     97            );
     98          ?>
     99        </td>
    70100      </tr>
    71101    </table>
    72     <div class="prli-deactivate-button"><a href="<?php echo admin_url('admin.php?page=pretty-link-updates&action=deactivate&_wpnonce='.wp_create_nonce('pretty-link_deactivate')); ?>" class="button button-primary" onclick="return confirm('<?php printf(__("Are you sure? Pretty Links Pro will not be functional on %s if this License Key is deactivated.", 'pretty-link'), PrliUtils::site_domain()); ?>');"><?php printf(__('Deactivate License Key on %s', 'pretty-link'), PrliUtils::site_domain()); ?></a></div>
     102    <div class="prli-deactivate-button"><a href="<?php echo esc_url(admin_url('admin.php?page=pretty-link-updates&action=deactivate&_wpnonce='.wp_create_nonce('pretty-link_deactivate'))); ?>" class="button button-primary" onclick="return confirm('<?php echo esc_attr(sprintf(__("Are you sure? Pretty Links Pro will not be functional on %s if this License Key is deactivated.", 'pretty-link'), PrliUtils::site_domain())); ?>');"><?php echo esc_html(sprintf(__('Deactivate License Key on %s', 'pretty-link'), PrliUtils::site_domain())); ?></a></div>
    73103  </div>
    74104  <?php if(!$this->is_installed()): ?>
    75     <div><a href="<?php echo $this->update_plugin_url(); ?>" class="button button-primary"><?php _e('Upgrade plugin to Pro', 'pretty-link'); ?></a></div>
     105    <div><a href="<?php echo esc_url($this->update_plugin_url()); ?>" class="button button-primary"><?php esc_html_e('Upgrade plugin to Pro', 'pretty-link'); ?></a></div>
    76106    <div>&nbsp;</div>
    77107  <?php endif; ?>
    78108  <?php require(PRLI_VIEWS_PATH.'/admin/update/edge_updates.php'); ?>
    79109  <br/>
    80   <div id="prli-version-string"><?php printf(__("You're currently running version %s of Pretty Links Pro", 'pretty-link'), '<b>'.PRLI_VERSION.'</b>'); ?></div>
     110  <div id="prli-version-string"><?php printf(esc_html__("You're currently running version %s of Pretty Links Pro", 'pretty-link'), '<b>'.esc_html(PRLI_VERSION).'</b>'); ?></div>
    81111<?php endif; ?>
    82112
  • pretty-link/trunk/app/views/admin/update/ui.php

    r1722928 r2124183  
    11<?php if(!defined('ABSPATH')) {die('You are not allowed to call this page directly.');} ?>
    22<div class="wrap">
    3   <?php echo PrliAppHelper::page_title(__('Activate Pretty Links Pro', 'pretty-link')); ?>
     3  <?php PrliAppHelper::page_title(__('Activate Pretty Links Pro', 'pretty-link')); ?>
    44  <?php require(PRLI_VIEWS_PATH.'/admin/errors.php'); ?>
    55
     
    1414      <td class="prli-settings-table-nav">
    1515        <ul class="prli-sidebar-nav">
    16           <li><a data-id="license"><?php _e('License', 'pretty-link'); ?></a></li>
    17           <!-- <li><a data-id="addons"><?php _e('Add-Ons', 'pretty-link'); ?></a></li> -->
     16          <li><a data-id="license"><?php esc_html_e('License', 'pretty-link'); ?></a></li>
     17          <!-- <li><a data-id="addons"><?php esc_html_e('Add-Ons', 'pretty-link'); ?></a></li> -->
    1818          <?php do_action('prli_updates_nav_items'); ?>
    1919        </ul>
  • pretty-link/trunk/app/views/clicks/csv_download.php

    r1572224 r2124183  
    11<?php if(!defined('ABSPATH')) {die('You are not allowed to call this page directly.');} ?>
    22<div class="wrap">
    3   <?php echo PrliAppHelper::page_title(__('Download Clicks', 'pretty-link')); ?>
    4   <span style="font-size: 14px; font-weight: bold;">For <?php echo stripslashes($link_name); ?>: </span>
     3  <?php PrliAppHelper::page_title(__('Download Clicks', 'pretty-link')); ?>
     4  <span style="font-size: 14px; font-weight: bold;"><?php echo esc_html(sprintf(__('For %s', 'pretty-link'), stripslashes($link_name))); ?></span>
    55
    6   <h3><?php _e('Click Reports:', 'pretty-link'); ?></h3>
    7   <span class="description"><?php printf( __('All clicks on %s', 'pretty-link'), stripslashes($link_name) ); ?></span>
     6  <h3><?php esc_html_e('Click Reports:', 'pretty-link'); ?></h3>
     7  <span class="description"><?php echo esc_html(sprintf(__('All clicks on %s', 'pretty-link'), stripslashes($link_name))); ?></span>
    88  <br/>
    99  <ul>
     
    2626
    2727      ?>
    28       <li><a href="<?php echo $hit_report_url . $hit_param_delim; ?>prli_page=<?php echo $i; ?>"><?php echo $report_label; ?></a></li>
     28      <li><a href="<?php echo esc_url($hit_report_url . $hit_param_delim . 'prli_page=' . $i); ?>"><?php echo esc_html($report_label); ?></a></li>
    2929      <?php
    3030    }
  • pretty-link/trunk/app/views/clicks/list.php

    r2108490 r2124183  
    22
    33<div class="wrap">
    4   <?php echo PrliAppHelper::page_title(__('Clicks', 'pretty-link')); ?>
     4  <?php PrliAppHelper::page_title(__('Clicks', 'pretty-link')); ?>
    55  <br/>
    6   <span style="font-size: 14px;"><?php echo __('For', 'pretty-link').' '.stripslashes($link_name); ?>: </span>
     6  <span style="font-size: 14px;"><?php echo esc_html(sprintf(__('For %s', 'pretty-link'), stripslashes($link_name))); ?>: </span>
    77  <?php
    88  // Don't show this sheesh if we're displaying the vuid or ip grouping
    99  if(empty($params['ip']) and empty($params['vuid'])) {
    1010    ?>
    11     <a href="#" class="filter_toggle button button-primary" style="vertical-align:middle;"><?php _e('Customize Report', 'pretty-link'); ?></a>
     11    <a href="#" class="filter_toggle button button-primary" style="vertical-align:middle;"><?php esc_html_e('Customize Report', 'pretty-link'); ?></a>
    1212    <?php
    1313  }
     
    1616<?php
    1717  if(!empty($params['l']) && $params['l'] != 'all') {
    18     echo '<br/><a href="'.admin_url("admin.php?page=pretty-link-clicks").'">&laquo '.__("Back to Links", 'pretty-link').'</a>';
     18    echo '<br/><a href="'.esc_url(admin_url("admin.php?page=pretty-link-clicks")).'">&laquo; '.esc_html__("Back to Links", 'pretty-link').'</a>';
    1919  }
    2020  else if(!empty($params['ip']) || !empty($params['vuid'])) {
    21     echo '<br/><a href="'.admin_url('admin.php?page=pretty-link-clicks').'">&laquo '.__("Back to Clicks", 'pretty-link').'</a>';
     21    echo '<br/><a href="'.esc_url(admin_url('admin.php?page=pretty-link-clicks')).'">&laquo; '.esc_html__("Back to Clicks", 'pretty-link').'</a>';
    2222  }
    2323
     
    2828  <form class="form-fields" name="form2" method="post" action="">
    2929    <?php wp_nonce_field('prli-reports'); ?>
    30     <span><?php _e('Type:', 'pretty-link'); ?></span>&nbsp;
     30    <span><?php esc_html_e('Type:', 'pretty-link'); ?></span>&nbsp;
    3131    <select id="type" name="type" style="display: inline;">
    32       <option value="all"<?php selected(empty($params['type']) || $params['type'] == 'all'); ?>><?php _e('All Clicks', 'pretty-link'); ?>&nbsp;</option>
    33       <option value="unique"<?php selected($params['type'] == 'unique'); ?>><?php _e('Unique Clicks', 'pretty-link'); ?>&nbsp;</option>
     32      <option value="all"<?php selected(empty($params['type']) || $params['type'] == 'all'); ?>><?php esc_html_e('All Clicks', 'pretty-link'); ?>&nbsp;</option>
     33      <option value="unique"<?php selected($params['type'] == 'unique'); ?>><?php esc_html_e('Unique Clicks', 'pretty-link'); ?>&nbsp;</option>
    3434    </select>
    3535    <br/>
    3636    <br/>
    37     <span><?php _e('Date Range:', 'pretty-link'); ?></span>
     37    <span><?php esc_html_e('Date Range:', 'pretty-link'); ?></span>
    3838    <div id="dateselectors" style="display: inline;">
    39       <input type="text" name="sdate" id="sdate" value="<?php echo $params['sdate']; ?>" style="display:inline;"/>&nbsp;<?php _e('to', 'pretty-link'); ?>&nbsp;<input type="text" name="edate" id="edate" value="<?php echo $params['edate']; ?>" style="display:inline;"/>
     39      <input type="text" name="sdate" id="sdate" value="<?php echo esc_attr($params['sdate']); ?>" style="display:inline;"/>&nbsp;<?php esc_html_e('to', 'pretty-link'); ?>&nbsp;<input type="text" name="edate" id="edate" value="<?php echo esc_attr($params['edate']); ?>" style="display:inline;"/>
    4040    </div>
    4141    <br/>
    4242    <br/>
    43     <div class="submit" style="display: inline;"><input type="submit" name="Submit" value="Customize" class="button button-primary" /> &nbsp; <a href="#" class="filter_toggle button"><?php _e('Cancel', 'pretty-link'); ?></a></div>
     43    <div class="submit" style="display: inline;"><input type="submit" name="Submit" value="<?php esc_attr_e('Customize', 'pretty-link'); ?>" class="button button-primary" /> &nbsp; <a href="#" class="filter_toggle button"><?php esc_html_e('Cancel', 'pretty-link'); ?></a></div>
    4444  </form>
    4545</div>
     
    5757      <?php wp_nonce_field('prli-clicks'); ?>
    5858
    59       <input type="hidden" name="sort" id="sort" value="<?php echo $sort_str; ?>" />
    60       <input type="hidden" name="sdir" id="sort" value="<?php echo $sdir_str; ?>" />
     59      <input type="hidden" name="sort" id="sort" value="<?php echo esc_attr($sort_str); ?>" />
     60      <input type="hidden" name="sdir" id="sort" value="<?php echo esc_attr($sdir_str); ?>" />
    6161      <input type="text" name="search" id="search" value="<?php echo esc_attr($search_str); ?>" style="display:inline;"/>
    62       <div class="submit" style="display: inline;"><input class="button button-primary" type="submit" name="Submit" value="Search Clicks"/>
     62      <div class="submit" style="display: inline;"><input class="button button-primary" type="submit" name="Submit" value="<?php esc_attr_e('Search Clicks', 'pretty-link'); ?>"/>
    6363      <?php if(!empty($search_str)): ?>
    64         &nbsp; <a href="<?php echo admin_url('admin.php?page=pretty-link-clicks'.(!empty($params['l'])?'&l='.$params['l']:'')); ?>" class="button"><?php _e('Reset', 'pretty-link'); ?></a>
     64        &nbsp; <a href="<?php echo esc_url(admin_url('admin.php?page=pretty-link-clicks'.(!empty($params['l'])?'&l='.$params['l']:''))); ?>" class="button"><?php esc_html_e('Reset', 'pretty-link'); ?></a>
    6565      <?php endif; ?>
    6666      </div>
     
    7171    <tr>
    7272    <?php if( isset($prli_options->extended_tracking) and $prli_options->extended_tracking == "extended" ) { ?>
    73       <th class="manage-column" width="5%"><a href="<?php echo admin_url("admin.php?page=pretty-link-clicks{$sort_params}&sort=btype".(($sort_str == 'btype' and $sdir_str == 'asc')?'&sdir=desc':'')); ?>"><?php _e('Browser', 'pretty-link'); echo (($sort_str == 'btype')?'&nbsp;&nbsp;&nbsp;<img src="'.PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png').'"/>':'') ?></a>
     73      <th class="manage-column" width="5%"><a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-clicks{$sort_params}&sort=btype".(($sort_str == 'btype' and $sdir_str == 'asc')?'&sdir=desc':''))); ?>"><?php esc_html_e('Browser', 'pretty-link'); echo (($sort_str == 'btype')?'&nbsp;&nbsp;&nbsp;<img src="'.esc_url(PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png')).'"/>':'') ?></a>
    7474      </th>
    75       <th class="manage-column" width="5%"><a href="<?php echo admin_url("admin.php?page=pretty-link-clicks{$sort_params}&sort=os".(($sort_str == 'os' and $sdir_str == 'asc')?'&sdir=desc':'')); ?>"><?php _e('OS', 'pretty-link'); echo (($sort_str == 'btype')?'&nbsp;&nbsp;&nbsp;<img src="'.PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png').'"/>':'') ?></a>
     75      <th class="manage-column" width="5%"><a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-clicks{$sort_params}&sort=os".(($sort_str == 'os' and $sdir_str == 'asc')?'&sdir=desc':''))); ?>"><?php esc_html_e('OS', 'pretty-link'); echo (($sort_str == 'btype')?'&nbsp;&nbsp;&nbsp;<img src="'.esc_url(PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png')).'"/>':'') ?></a>
    7676      </th>
    7777    <?php } ?>
    7878      <th class="manage-column" width="12%">
    79         <a href="<?php echo admin_url("admin.php?page=pretty-link-clicks{$sort_params}&sort=ip".(($sort_str == 'ip' and $sdir_str == 'asc')?'&sdir=desc':'')); ?>"><?php _e('IP', 'pretty-link'); echo (($sort_str == 'ip')?'&nbsp;&nbsp;&nbsp;<img src="'.PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png').'"/>':'') ?></a>
     79        <a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-clicks{$sort_params}&sort=ip".(($sort_str == 'ip' and $sdir_str == 'asc')?'&sdir=desc':''))); ?>"><?php esc_html_e('IP', 'pretty-link'); echo (($sort_str == 'ip')?'&nbsp;&nbsp;&nbsp;<img src="'.esc_url(PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png')).'"/>':'') ?></a>
    8080      </th>
    8181    <?php if( isset($prli_options->extended_tracking) and $prli_options->extended_tracking == "extended" ) { ?>
    8282      <th class="manage-column" width="12%">
    83         <a href="<?php echo admin_url("admin.php?page=pretty-link-clicks{$sort_params}&sort=vuid".(($sort_str == 'vuid' and $sdir_str == 'asc')?'&sdir=desc':'')); ?>"><?php _e('Visitor', 'pretty-link'); echo (($sort_str == 'vuid')?'&nbsp;&nbsp;&nbsp;<img src="'.PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png').'"/>':'') ?></a>
     83        <a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-clicks{$sort_params}&sort=vuid".(($sort_str == 'vuid' and $sdir_str == 'asc')?'&sdir=desc':''))); ?>"><?php esc_html_e('Visitor', 'pretty-link'); echo (($sort_str == 'vuid')?'&nbsp;&nbsp;&nbsp;<img src="'.esc_url(PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png')).'"/>':'') ?></a>
    8484      </th>
    8585    <?php } ?>
    8686      <th class="manage-column" width="13%">
    87         <a href="<?php echo admin_url("admin.php?page=pretty-link-clicks{$sort_params}&sort=created_at".(($sort_str == 'created_at' and $sdir_str == 'asc')?'&sdir=desc':'')); ?>"><?php _e('Timestamp', 'pretty-link'); echo ((empty($sort_str) or $sort_str == 'created_at')?'&nbsp;&nbsp;&nbsp;<img src="'.PRLI_IMAGES_URL.'/'.((empty($sort_str) or $sdir_str == 'desc')?'arrow_down.png':'arrow_up.png').'"/>':'') ?></a>
     87        <a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-clicks{$sort_params}&sort=created_at".(($sort_str == 'created_at' and $sdir_str == 'asc')?'&sdir=desc':''))); ?>"><?php esc_html_e('Timestamp', 'pretty-link'); echo ((empty($sort_str) or $sort_str == 'created_at')?'&nbsp;&nbsp;&nbsp;<img src="'.esc_url(PRLI_IMAGES_URL.'/'.((empty($sort_str) or $sdir_str == 'desc')?'arrow_down.png':'arrow_up.png')).'"/>':'') ?></a>
    8888      </th>
    8989    <?php if( isset($prli_options->extended_tracking) and $prli_options->extended_tracking == "extended" ) { ?>
    9090      <th class="manage-column" width="16%">
    91         <a href="<?php echo admin_url("admin.php?page=pretty-link-clicks{$sort_params}&sort=host".(($sort_str == 'host' and $sdir_str == 'asc')?'&sdir=desc':'')); ?>"><?php _e('Host', 'pretty-link'); echo (($sort_str == 'host')?'&nbsp;&nbsp;&nbsp;<img src="'.PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png').'"/>':'') ?></a>
     91        <a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-clicks{$sort_params}&sort=host".(($sort_str == 'host' and $sdir_str == 'asc')?'&sdir=desc':''))); ?>"><?php esc_html_e('Host', 'pretty-link'); echo (($sort_str == 'host')?'&nbsp;&nbsp;&nbsp;<img src="'.esc_url(PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png')).'"/>':'') ?></a>
    9292      </th>
    9393    <?php } ?>
    9494      <th class="manage-column" width="16%">
    95         <a href="?page=<?php echo admin_url("admin.php?page=pretty-link-clicks{$sort_params}&sort=uri".(($sort_str == 'uri' and $sdir_str == 'asc')?'&sdir=desc':'')); ?>"><?php _e('URI', 'pretty-link'); echo (($sort_str == 'uri')?'&nbsp;&nbsp;&nbsp;<img src="'.PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png').'"/>':'') ?></a>
     95        <a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-clicks{$sort_params}&sort=uri".(($sort_str == 'uri' and $sdir_str == 'asc')?'&sdir=desc':''))); ?>"><?php esc_html_e('URI', 'pretty-link'); echo (($sort_str == 'uri')?'&nbsp;&nbsp;&nbsp;<img src="'.esc_url(PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png')).'"/>':'') ?></a>
    9696      </th>
    9797      <th class="manage-column" width="16%">
    98         <a href="<?php echo admin_url("admin.php?page=pretty-link-clicks{$sort_params}&sort=referer".(($sort_str == 'referer' and $sdir_str == 'asc')?'&sdir=desc':'')); ?>"><?php _e('Referrer', 'pretty-link'); echo (($sort_str == 'referer')?'&nbsp;&nbsp;&nbsp;<img src="'.PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png').'"/>':'') ?></a>
     98        <a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-clicks{$sort_params}&sort=referer".(($sort_str == 'referer' and $sdir_str == 'asc')?'&sdir=desc':''))); ?>"><?php esc_html_e('Referrer', 'pretty-link'); echo (($sort_str == 'referer')?'&nbsp;&nbsp;&nbsp;<img src="'.esc_url(PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png')).'"/>':'') ?></a>
    9999      </th>
    100100      <th class="manage-column" width="13%">
    101         <a href="<?php echo admin_url("admin.php?page=pretty-link-clicks{$sort_params}&sort=link".(($sort_str == 'link' and $sdir_str == 'asc')?'&sdir=desc':'')); ?>"><?php _e('Link', 'pretty-link'); echo (($sort_str == 'link')?'&nbsp;&nbsp;&nbsp;<img src="'.PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png').'"/>':'') ?></a>
     101        <a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-clicks{$sort_params}&sort=link".(($sort_str == 'link' and $sdir_str == 'asc')?'&sdir=desc':''))); ?>"><?php esc_html_e('Link', 'pretty-link'); echo (($sort_str == 'link')?'&nbsp;&nbsp;&nbsp;<img src="'.esc_url(PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png')).'"/>':'') ?></a>
    102102      </th>
    103103    </tr>
     
    109109      ?>
    110110    <tr>
    111       <td colspan="8"><?php _e('No Clicks have been recorded yet', 'pretty-link'); ?></td>
     111      <td colspan="8"><?php esc_html_e('No Clicks have been recorded yet', 'pretty-link'); ?></td>
    112112    </tr>
    113113    <?php
     
    120120
    121121      ?>
    122       <tr id="record_<?php echo $click->id; ?>" class="<?php echo $alternate; ?>">
     122      <tr id="record_<?php echo esc_attr($click->id); ?>" class="<?php echo esc_attr($alternate); ?>">
    123123
    124124      <?php if( isset($prli_options->extended_tracking) and $prli_options->extended_tracking == "extended" ): ?>
     
    130130
    131131          <?php if(false===$browser_image): ?>
    132             <span style="font-size: 16px; cursor: pointer;" title="<?php echo $click->btype; ?>"><strong>?</strong></span>
     132            <span style="font-size: 16px; cursor: pointer;" title="<?php echo esc_attr($click->btype); ?>"><strong>?</strong></span>
    133133          <?php else: ?>
    134             <img src="<?php echo esc_html(PRLI_BROWSER_URL); ?>/<?php echo $browser_image; ?>" alt="<?php echo $click->btype . " v" . $click->bversion; ?>" title="<?php echo $click->btype . " v" . $click->bversion; ?>" width="16px" height="16px" style="width: 16px; height: 16px;" />
     134            <img src="<?php echo esc_url(PRLI_BROWSER_URL . '/' . $browser_image); ?>" alt="<?php echo esc_attr($click->btype . " v" . $click->bversion); ?>" title="<?php echo esc_attr($click->btype . " v" . $click->bversion); ?>" width="16px" height="16px" style="width: 16px; height: 16px;" />
    135135          <?php endif; ?>
    136136        </td>
     
    138138        <td>
    139139          <?php if(false===$os_image): ?>
    140             <span style="font-size: 16px; cursor: pointer;" title="<?php echo $click->os; ?>"><strong>?</strong></span>
     140            <span style="font-size: 16px; cursor: pointer;" title="<?php echo esc_attr($click->os); ?>"><strong>?</strong></span>
    141141          <?php else: ?>
    142             <img src="<?php echo esc_html(PRLI_OS_URL); ?>/<?php echo $os_image; ?>" alt="<?php echo $click->os; ?>" title="<?php echo $click->os; ?>" width="16px" height="16px" style="width: 16px; height: 16px;" /></td>
     142            <img src="<?php echo esc_url(PRLI_OS_URL . '/' . $os_image); ?>" alt="<?php echo esc_attr($click->os); ?>" title="<?php echo esc_attr($click->os); ?>" width="16px" height="16px" style="width: 16px; height: 16px;" /></td>
    143143          <?php endif; ?>
    144144        </td>
    145145      <?php endif; ?>
    146146
    147         <?php $click_ip = esc_attr( $click->ip ); ?>
    148 
    149         <td><a href="<?php echo admin_url("admin.php?page=pretty-link-clicks&ip={$click_ip}"); ?>" title="<?php printf(__('View All Activity for IP Address: %s', 'pretty-link'), $click_ip); ?>"><?php echo $click_ip; ?> (<?php echo $click->ip_count; ?>)</a></td>
     147        <td><a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-clicks&ip={$click->ip}")); ?>" title="<?php echo esc_attr(sprintf(__('View All Activity for IP Address: %s', 'pretty-link'), $click->ip)); ?>"><?php echo esc_html($click->ip); ?> (<?php echo esc_html($click->ip_count); ?>)</a></td>
    150148
    151149      <?php if( isset($prli_options->extended_tracking) and $prli_options->extended_tracking == "extended" ): ?>
    152         <td><a href="<?php echo admin_url("admin.php?page=pretty-link-clicks&vuid={$click->vuid}") ?>" title="<?php printf(__('View All Activity for Visitor: %s', 'pretty-link'), $click->vuid); ?>"><?php echo $click->vuid; ?><?php echo (($click->vuid != null)?" ($click->vuid_count)":''); ?></a></td>
     150        <td><a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-clicks&vuid={$click->vuid}")); ?>" title="<?php echo esc_attr(sprintf(__('View All Activity for Visitor: %s', 'pretty-link'), $click->vuid)); ?>"><?php echo esc_html($click->vuid); ?><?php echo (($click->vuid != null)?" (".esc_html($click->vuid_count).")":''); ?></a></td>
    153151      <?php endif; ?>
    154152
    155         <td><?php echo $click->created_at; ?></td>
     153        <td><?php echo esc_html($click->created_at); ?></td>
    156154
    157155      <?php if( isset($prli_options->extended_tracking) and $prli_options->extended_tracking == "extended" ): ?>
    158         <td><?php echo $click->host; ?></td>
     156        <td><?php echo esc_html($click->host); ?></td>
    159157      <?php endif; ?>
    160158
    161         <td><?php echo $click->uri; ?></td>
    162         <td><a href="<?php echo esc_attr( $click->referer ); ?>"><?php echo esc_attr( $click->referer ); ?></a></td>
    163         <td><a href="<?php echo admin_url("admin.php?page=pretty-link-clicks&l={$click->link_id}"); ?>" title="<?php printf(__('View clicks for %s', 'pretty-link'), stripslashes($click->link_name)); ?>"><?php echo stripslashes($click->link_name); ?></a></td>
     159        <td><?php echo esc_html($click->uri); ?></td>
     160        <td><a href="<?php echo esc_url( $click->referer ); ?>"><?php echo esc_html( $click->referer ); ?></a></td>
     161        <td><a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-clicks&l={$click->link_id}")); ?>" title="<?php echo esc_attr(sprintf(__('View clicks for %s', 'pretty-link'), stripslashes($click->link_name))); ?>"><?php echo esc_html(stripslashes($click->link_name)); ?></a></td>
    164162      </tr>
    165163      <?php
     
    171169    <tr>
    172170    <?php if( isset($prli_options->extended_tracking) and $prli_options->extended_tracking == "extended" ) { ?>
    173       <th class="manage-column"><?php _e('Browser', 'pretty-link'); ?></th>
    174       <th class="manage-column"><?php _e('OS', 'pretty-link'); ?></th>
     171      <th class="manage-column"><?php esc_html_e('Browser', 'pretty-link'); ?></th>
     172      <th class="manage-column"><?php esc_html_e('OS', 'pretty-link'); ?></th>
    175173    <?php } ?>
    176       <th class="manage-column"><?php _e('IP', 'pretty-link'); ?></th>
     174      <th class="manage-column"><?php esc_html_e('IP', 'pretty-link'); ?></th>
    177175    <?php if( isset($prli_options->extended_tracking) and $prli_options->extended_tracking == "extended" ) { ?>
    178       <th class="manage-column"><?php _e('Visitor', 'pretty-link'); ?></th>
     176      <th class="manage-column"><?php esc_html_e('Visitor', 'pretty-link'); ?></th>
    179177    <?php } ?>
    180       <th class="manage-column"><?php _e('Timestamp', 'pretty-link'); ?></th>
     178      <th class="manage-column"><?php esc_html_e('Timestamp', 'pretty-link'); ?></th>
    181179    <?php if( isset($prli_options->extended_tracking) and $prli_options->extended_tracking == "extended" ) { ?>
    182       <th class="manage-column"><?php _e('Host', 'pretty-link'); ?></th>
     180      <th class="manage-column"><?php esc_html_e('Host', 'pretty-link'); ?></th>
    183181    <?php } ?>
    184       <th class="manage-column"><?php _e('URI', 'pretty-link'); ?></th>
    185       <th class="manage-column"><?php _e('Referrer', 'pretty-link'); ?></th>
    186       <th class="manage-column"><?php _e('Link', 'pretty-link'); ?></th>
     182      <th class="manage-column"><?php esc_html_e('URI', 'pretty-link'); ?></th>
     183      <th class="manage-column"><?php esc_html_e('Referrer', 'pretty-link'); ?></th>
     184      <th class="manage-column"><?php esc_html_e('Link', 'pretty-link'); ?></th>
    187185    </tr>
    188186    </tfoot>
     
    190188
    191189<br/>
    192 <a href="<?php echo admin_url("admin.php?page=pretty-link-clicks&action=csv{$page_params}"); ?>" class="button button-primary"><?php _e('Download CSV', 'pretty-link'); ?> (<?php echo stripslashes($link_name); ?>)</a>
     190<a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-clicks&action=csv{$page_params}")); ?>" class="button button-primary"><?php esc_html_e('Download CSV', 'pretty-link'); ?> (<?php echo esc_html(stripslashes($link_name)); ?>)</a>
    193191
    194192<?php
  • pretty-link/trunk/app/views/groups/edit.php

    r1572224 r2124183  
    1 <?php if(!defined('ABSPATH')) die('You are not allowed to call this page directly.'); ?>
     1<?php
     2if(!defined('ABSPATH')) {
     3  die('You are not allowed to call this page directly.');
     4}
    25
     6$name = stripslashes(isset($values['name']) && empty($record) ? $values['name'] : $record->name);
     7$description = stripslashes(isset($values['description']) && empty($record) ? $values['description'] : $record->description);
     8?>
    39<div class="wrap">
    4   <?php echo PrliAppHelper::page_title(__('Edit Group', 'pretty-link')); ?>
     10  <?php PrliAppHelper::page_title(__('Edit Group', 'pretty-link')); ?>
    511
    612  <?php require(PRLI_VIEWS_PATH.'/shared/errors.php'); ?>
    713
    8   <form name="form1" method="post" action="<?php echo admin_url("admin.php?page=pretty-link-groups"); ?>">
     14  <form name="form1" method="post" action="<?php echo esc_url(admin_url("admin.php?page=pretty-link-groups")); ?>">
    915    <input type="hidden" name="action" value="update">
    10     <input type="hidden" name="id" value="<?php echo $id; ?>">
     16    <input type="hidden" name="id" value="<?php echo esc_attr($id); ?>">
    1117    <?php wp_nonce_field('update-options'); ?>
    1218
    1319    <table class="form-table">
    1420      <tr class="form-field">
    15         <td width="75px" valign="top"><?php _e('Name:', 'pretty-link'); ?> </td>
    16         <td><input type="text" name="name" value="<?php echo htmlspecialchars(stripslashes(((isset($_POST['name']) and $record == null)?$_POST['name']:$record->name))); ?>" size="75">
    17           <br/><span class="setting-description"><?php _e("This is how you'll identify your Group.", 'pretty-link'); ?></span></td>
     21        <td width="75px" valign="top"><?php esc_html_e('Name:', 'pretty-link'); ?> </td>
     22        <td><input type="text" name="name" value="<?php echo esc_attr($name); ?>" size="75">
     23          <br/><span class="setting-description"><?php esc_html_e("This is how you'll identify your Group.", 'pretty-link'); ?></span></td>
    1824      </tr>
    1925      <tr class="form-field">
    20         <td valign="top"><?php _e('Description:', 'pretty-link'); ?> </td>
    21         <td><textarea style="height: 100px;" name="description"><?php echo ((isset($_POST['description']) and $record == null)?$_POST['description']:$record->description); ?></textarea>
    22         <br/><span class="setting-description"><?php _e('A Description of this group.', 'pretty-link'); ?></span></td>
     26        <td valign="top"><?php esc_html_e('Description:', 'pretty-link'); ?> </td>
     27        <td><textarea style="height: 100px;" name="description"><?php echo esc_textarea($description); ?></textarea>
     28        <br/><span class="setting-description"><?php esc_html_e('A Description of this group.', 'pretty-link'); ?></span></td>
    2329      </tr>
    2430      <tr class="form-field" valign="top">
    25         <td valign="top"><?php _e('Links:', 'pretty-link'); ?> </td>
     31        <td valign="top"><?php esc_html_e('Links:', 'pretty-link'); ?> </td>
    2632        <td valign="top">
    2733          <div style="height: 400px; width: 95%; border: 1px solid #8cbdd5; overflow: auto;">
    2834            <table width="100%" cellspacing="0">
    2935              <thead style="background-color: #dedede; padding: 0px; margin: 0px; line-height: 8px; font-size: 14px;">
    30                 <th style="padding-left: 5px; margin: 0px; width: 50%; min-width: 50%;"><strong><?php _e('Name', 'pretty-link'); ?></strong></th>
    31                 <th style="padding-left: 5px; margin: 0px; width: 50%; min-width: 50%;"><strong><?php _e('Current Group', 'pretty-link'); ?></strong></th>
     36                <th style="padding-left: 5px; margin: 0px; width: 50%; min-width: 50%;"><strong><?php esc_html_e('Name', 'pretty-link'); ?></strong></th>
     37                <th style="padding-left: 5px; margin: 0px; width: 50%; min-width: 50%;"><strong><?php esc_html_e('Current Group', 'pretty-link'); ?></strong></th>
    3238              </thead>
    3339              <?php
     
    3743                ?>
    3844                <tr style="line-height: 15px; font-size: 12px;<?php echo (($i%2)?' background-color: #efefef;':''); ?>">
    39                   <td style="min-width: 50%; width: 50%"><input type="checkbox" style="display:inline;width: 15px; padding: 0; margin: 0; float: left; text-align: left;" name="link[<?php echo $link->id; ?>]" <?php echo (((isset($_POST['link'][$link->id]) and $_POST['link'][$link->id] == 'on') or (empty($_POST) and $link->group_id == $record->id))?'checked="true"':''); ?>/><span>&nbsp;<?php echo htmlspecialchars(stripslashes($link->name)) . " <strong>(" . $link->slug . ")</strong>"; ?></span></td>
    40                   <td style="min-width: 50%; width: 50%"><?php echo htmlspecialchars(stripslashes($link->group_name)); ?></td>
     45                  <td style="min-width: 50%; width: 50%">
     46                    <input type="checkbox" style="display:inline;width: 15px; padding: 0; margin: 0; float: left; text-align: left;" name="link[<?php echo esc_attr($link->id); ?>]" <?php echo (((isset($_POST['link'][$link->id]) and $_POST['link'][$link->id] == 'on') or (empty($_POST) and !empty($record) && $link->group_id == $record->id))?'checked="true"':''); ?>/>
     47                    <span><?php echo esc_html(stripslashes($link->name)) . " <strong>(" . esc_html(stripslashes($link->slug)) . ")</strong>"; ?></span>
     48                  </td>
     49                  <td style="min-width: 50%; width: 50%"><?php echo esc_html(stripslashes($link->group_name)); ?></td>
    4150                </tr>
    4251                <?php
     
    4655            </table>
    4756          </div>
    48           <span class="setting-description"><?php _e('Select some links for this group. <strong>Note: each link can only be in one group at a time.</strong>', 'pretty-link'); ?></span>
     57          <span class="setting-description">
     58            <?php
     59              printf(
     60                // translators: %1$s: open strong tag, %2$s close strong tag
     61                esc_html__('Select some links for this group. %1$sNote: each link can only be in one group at a time.%2$s', 'pretty-link'),
     62                '<strong>',
     63                '</strong>'
     64              );
     65            ?>
     66          </span>
    4967        </td>
    5068      </tr>
     
    5270
    5371    <p class="submit">
    54       <input type="submit" class="button button-primary" name="submit" value="<?php _e('Update', 'pretty-link'); ?>" /> &nbsp; <a href="<?php echo admin_url('admin.php?page=pretty-link-groups'); ?>" class="button"><?php _e('Cancel', 'pretty-link'); ?></a>
     72      <input type="submit" class="button button-primary" name="submit" value="<?php esc_attr_e('Update', 'pretty-link'); ?>" /> &nbsp; <a href="<?php echo esc_url(admin_url('admin.php?page=pretty-link-groups')); ?>" class="button"><?php esc_html_e('Cancel', 'pretty-link'); ?></a>
    5573    </p>
    5674  </form>
  • pretty-link/trunk/app/views/groups/list.php

    r1572224 r2124183  
    44?>
    55<div class="wrap">
    6   <?php echo PrliAppHelper::page_title(__('Groups', 'pretty-link')); ?>
    7   <a href="<?php echo admin_url('admin.php?page=pretty-link-groups&action=new'); ?>" class="page-title-action"><?php _e('Add Group', 'pretty-link'); ?></a>
     6  <?php PrliAppHelper::page_title(__('Groups', 'pretty-link')); ?>
     7  <a href="<?php echo esc_url(admin_url('admin.php?page=pretty-link-groups&action=new')); ?>" class="page-title-action"><?php esc_html_e('Add Group', 'pretty-link'); ?></a>
    88  <hr class="wp-header-end">
    99
     
    1515    <form class="form-fields" name="group_form" method="post" action="">
    1616      <?php wp_nonce_field('prli-groups'); ?>
    17       <input type="hidden" name="sort" id="sort" value="<?php echo $sort_str; ?>" />
    18       <input type="hidden" name="sdir" id="sort" value="<?php echo $sdir_str; ?>" />
     17      <input type="hidden" name="sort" id="sort" value="<?php echo esc_attr($sort_str); ?>" />
     18      <input type="hidden" name="sdir" id="sort" value="<?php echo esc_attr($sdir_str); ?>" />
    1919      <input type="text" name="search" id="search" value="<?php echo esc_attr($search_str); ?>" style="display:inline;"/>
    20       <div class="submit" style="display: inline;"><input class="button button-primary" type="submit" name="Submit" value="Search"/>
     20      <div class="submit" style="display: inline;"><input class="button button-primary" type="submit" name="Submit" value="<?php esc_attr_e('Search', 'pretty-link'); ?>"/>
    2121      <?php
    2222      if(!empty($search_str)) {
    2323        ?>
    24         &nbsp; <a href="<?php echo admin_url("admin.php?page=pretty-link-groups"); ?>" class="button"><?php _e('Reset', 'pretty-link'); ?></a>
     24        &nbsp; <a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-groups")); ?>" class="button"><?php esc_html_e('Reset', 'pretty-link'); ?></a>
    2525        <?php
    2626      }
     
    3737    <thead>
    3838    <tr>
    39       <th class="manage-column" width="50%"><a href="<?php echo admin_url('admin.php?page=pretty-link-groups&sort=name'.(($sort_str == 'name' && $sdir_str == 'asc')?'&sdir=desc':'')); ?>"><?php _e('Name', 'pretty-link'); echo (($sort_str == 'name')?'&nbsp;&nbsp;&nbsp;<img src="'.PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png').'"/>':'') ?></a></th>
    40       <th class="manage-column" width="20%"><a href="<?php echo admin_url('admin.php?page=pretty-link-groups&sort=link_count'.(($sort_str == 'link_count' && $sdir_str == 'asc')?'&sdir=desc':'')); ?>"><?php _e('Links', 'pretty-link'); echo (($sort_str == 'link_count')?'&nbsp;&nbsp;&nbsp;<img src="'.PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png').'"/>':'') ?></a></th>
    41       <th class="manage-column" width="30%"><a href="<?php echo admin_url('admin.php?page=pretty-link-groups&sort=created_at'.(($sort_str == 'created_at' and $sdir_str == 'asc')?'&sdir=desc':'')); ?>"><?php _e('Created', 'pretty-link'); echo ((empty($sort_str) or $sort_str == 'created_at')?'&nbsp;&nbsp;&nbsp;<img src="'.PRLI_IMAGES_URL.'/'.((empty($sort_str) or $sdir_str == 'desc')?'arrow_down.png':'arrow_up.png').'"/>':'') ?></a></th>
     39      <th class="manage-column" width="50%">
     40        <a href="<?php echo esc_url(admin_url('admin.php?page=pretty-link-groups&sort=name'.(($sort_str == 'name' && $sdir_str == 'asc')?'&sdir=desc':''))); ?>">
     41          <?php esc_html_e('Name', 'pretty-link'); echo (($sort_str == 'name')?'&nbsp;&nbsp;&nbsp;<img src="'.esc_url(PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png')).'"/>':'') ?>
     42        </a>
     43      </th>
     44      <th class="manage-column" width="20%">
     45        <a href="<?php echo esc_url(admin_url('admin.php?page=pretty-link-groups&sort=link_count'.(($sort_str == 'link_count' && $sdir_str == 'asc')?'&sdir=desc':''))); ?>">
     46          <?php esc_html_e('Links', 'pretty-link'); echo (($sort_str == 'link_count')?'&nbsp;&nbsp;&nbsp;<img src="'.esc_url(PRLI_IMAGES_URL.'/'.(($sdir_str == 'desc')?'arrow_down.png':'arrow_up.png')).'"/>':'') ?>
     47        </a>
     48      </th>
     49      <th class="manage-column" width="30%">
     50        <a href="<?php echo esc_url(admin_url('admin.php?page=pretty-link-groups&sort=created_at'.(($sort_str == 'created_at' and $sdir_str == 'asc')?'&sdir=desc':''))); ?>">
     51          <?php esc_html_e('Created', 'pretty-link'); echo ((empty($sort_str) or $sort_str == 'created_at')?'&nbsp;&nbsp;&nbsp;<img src="'.esc_url(PRLI_IMAGES_URL.'/'.((empty($sort_str) or $sdir_str == 'desc')?'arrow_down.png':'arrow_up.png')).'"/>':'') ?>
     52        </a>
     53      </th>
    4254    </tr>
    4355    </thead>
     
    4860      ?>
    4961    <tr>
    50       <td colspan="5"><?php _e('No Pretty Link Groups were found', 'pretty-link'); ?></td>
     62      <td colspan="5"><?php esc_html_e('No Pretty Link Groups were found', 'pretty-link'); ?></td>
    5163    </tr>
    5264    <?php
     
    5971      $alternate = ( $row_index++ % 2 ? '' : 'alternate' );
    6072      ?>
    61       <tr id="record_<?php echo $group->id; ?>" class="<?php echo $alternate; ?>">
     73      <tr id="record_<?php echo esc_attr($group->id); ?>" class="<?php echo $alternate; ?>">
    6274        <td class="edit_group">
    63         <a class="group_name" href="<?php echo admin_url("admin.php?page=pretty-link-groups&action=edit&id={$group->id}"); ?>" title="<?php printf(__('Edit %s', 'pretty-link'), htmlspecialchars(stripslashes($group->name))); ?>"><?php echo htmlspecialchars(stripslashes($group->name)); ?></a>
     75        <a class="group_name" href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-groups&action=edit&id={$group->id}")); ?>" title="<?php echo esc_attr(sprintf(__('Edit %s', 'pretty-link'), stripslashes($group->name))); ?>"><?php echo esc_html(stripslashes($group->name)); ?></a>
    6476          <br/>
    6577          <div class="group_actions">
    66             <a href="<?php echo admin_url("admin.php?page=pretty-link-groups&action=edit&id={$group->id}"); ?>" title="<?php printf(__('Edit %s', 'pretty-link'), htmlspecialchars(stripslashes($group->name))); ?>"><?php _e('Edit', 'pretty-link'); ?></a>&nbsp;|
    67             <a href="<?php echo admin_url("admin.php?page=pretty-link-groups&action=destroy&id={$group->id}"); ?>"  onclick="return confirm('<?php printf(__('Are you sure you want to delete your %s Pretty Link Group?', 'pretty-link'), htmlspecialchars(stripslashes($group->name))); ?>');" title="Delete <?php echo htmlspecialchars(stripslashes($group->name)); ?>"><?php _e('Delete', 'pretty-link'); ?></a>&nbsp;|
    68             <a href="<?php echo admin_url("admin.php?page=pretty-link&group={$group->id}"); ?>" title="View links in <?php echo htmlspecialchars(stripslashes($group->name)); ?>"><?php _e('Links', 'pretty-link'); ?></a>&nbsp;|
    69             <a href="<?php echo admin_url( "admin.php?page=pretty-link-clicks&group={$group->id}" ); ?>" title="<?php printf(__('View hits in %s', 'pretty-link'), htmlspecialchars(stripslashes($group->name))); ?>"><?php _e('Clicks', 'pretty-link'); ?></a>
     78            <a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-groups&action=edit&id={$group->id}")); ?>" title="<?php echo esc_attr(sprintf(__('Edit %s', 'pretty-link'), stripslashes($group->name))); ?>"><?php esc_html_e('Edit', 'pretty-link'); ?></a>&nbsp;|
     79            <a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-groups&action=destroy&id={$group->id}")); ?>"  onclick="return confirm('<?php echo esc_attr(sprintf(__('Are you sure you want to delete your %s Pretty Link Group?', 'pretty-link'), stripslashes($group->name))); ?>');" title="<?php echo esc_attr(sprintf(__('Delete %s', 'pretty-link'), stripslashes($group->name))); ?>"><?php esc_html_e('Delete', 'pretty-link'); ?></a>&nbsp;|
     80            <a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link&group={$group->id}")); ?>" title="<?php echo esc_attr(sprintf(__('View links in %s', 'pretty-link'), stripslashes($group->name))); ?>"><?php esc_html_e('Links', 'pretty-link'); ?></a>&nbsp;|
     81            <a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-clicks&group={$group->id}")); ?>" title="<?php echo esc_attr(sprintf(__('View hits in %s', 'pretty-link'), stripslashes($group->name))); ?>"><?php esc_html_e('Clicks', 'pretty-link'); ?></a>
    7082          </div>
    7183        </td>
    72         <td><a href="<?php echo admin_url("admin.php?page=pretty-link&group={$group->id}"); ?>" title="View links in <?php echo htmlspecialchars(stripslashes($group->name)); ?>"><?php echo $group->link_count; ?></a></td>
    73         <td><?php echo $group->created_at; ?></td>
     84        <td><a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link&group={$group->id}")); ?>" title="<?php echo esc_attr(sprintf(__('View links in %s', 'pretty-link'), stripslashes($group->name))); ?>"><?php echo esc_html($group->link_count); ?></a></td>
     85        <td><?php echo esc_html($group->created_at); ?></td>
    7486      </tr>
    7587      <?php
     
    7991    <tfoot>
    8092    <tr>
    81       <th class="manage-column"><?php _e('Name', 'pretty-link'); ?></th>
    82       <th class="manage-column"><?php _e('Links', 'pretty-link'); ?></th>
    83       <th class="manage-column"><?php _e('Created', 'pretty-link'); ?></th>
     93      <th class="manage-column"><?php esc_html_e('Name', 'pretty-link'); ?></th>
     94      <th class="manage-column"><?php esc_html_e('Links', 'pretty-link'); ?></th>
     95      <th class="manage-column"><?php esc_html_e('Created', 'pretty-link'); ?></th>
    8496    </tr>
    8597    </tfoot>
  • pretty-link/trunk/app/views/groups/new.php

    r1800524 r2124183  
    33  die('You are not allowed to call this page directly.');
    44
    5   $name = isset($_POST['name']) ? esc_html($_POST['name']) : '';
     5  $name = isset($_POST['name']) ? sanitize_text_field(stripslashes($_POST['name'])) : '';
     6  $description = isset($_POST['description']) ? sanitize_textarea_field(stripslashes($_POST['description'])) : '';
    67?>
    78
    89<div class="wrap">
    9   <?php echo PrliAppHelper::page_title(__('New Group', 'pretty-link')); ?>
     10  <?php PrliAppHelper::page_title(__('New Group', 'pretty-link')); ?>
    1011
    1112  <?php
     
    1314  ?>
    1415
    15   <form name="form1" method="post" action="<?php echo admin_url("admin.php?page=pretty-link-groups"); ?>">
     16  <form name="form1" method="post" action="<?php echo esc_url(admin_url("admin.php?page=pretty-link-groups")); ?>">
    1617  <input type="hidden" name="action" value="create">
    1718  <?php wp_nonce_field('update-options'); ?>
     
    1920  <table class="form-table">
    2021    <tr class="form-field">
    21       <td width="75px" valign="top"><?php _e('Name*:', 'pretty-link'); ?> </td>
    22       <td><input type="text" name="name" value="<?php echo $name; ?>" size="75">
    23         <br/><span class="setting-description"><?php _e("This is how you'll identify your Group.", 'pretty-link'); ?></span></td>
     22      <td width="75px" valign="top"><?php esc_html_e('Name*:', 'pretty-link'); ?> </td>
     23      <td><input type="text" name="name" value="<?php echo esc_attr($name); ?>" size="75">
     24        <br/><span class="setting-description"><?php esc_html_e("This is how you'll identify your Group.", 'pretty-link'); ?></span></td>
    2425    </tr>
    2526    <tr class="form-field">
    26       <td valign="top"><?php _e('Description:', 'pretty-link'); ?> </td>
    27       <td><textarea style="height: 100px;" name="description"><?php echo ((isset($_POST['description']))?sanitize_textarea_field($_POST['description']):''); ?></textarea>
    28       <br/><span class="setting-description"><?php _e('A Description of this group.', 'pretty-link'); ?></span></td>
     27      <td valign="top"><?php esc_html_e('Description:', 'pretty-link'); ?> </td>
     28      <td><textarea style="height: 100px;" name="description"><?php echo esc_textarea($description) ?></textarea>
     29      <br/><span class="setting-description"><?php esc_html_e('A Description of this group.', 'pretty-link'); ?></span></td>
    2930    </tr>
    3031    <tr class="form-field" valign="top">
    31       <td valign="top"><?php _e('Links:', 'pretty-link'); ?> </td>
     32      <td valign="top"><?php esc_html_e('Links:', 'pretty-link'); ?> </td>
    3233      <td valign="top">
    3334        <div style="height: 400px; width: 95%; border: 1px solid #8cbdd5; overflow: auto;">
    3435          <table width="100%" cellspacing="0">
    3536            <thead style="background-color: #dedede; padding: 0px; margin: 0px; line-height: 8px; font-size: 14px;">
    36               <th width="50%" style="padding-left: 5px; margin: 0px;"><strong><?php _e('Name', 'pretty-link'); ?></strong></th>
    37               <th width="50%" style="padding-left: 5px; margin: 0px;"><strong><?php _e('Current Group', 'pretty-link'); ?></strong></th>
     37              <th width="50%" style="padding-left: 5px; margin: 0px;"><strong><?php esc_html_e('Name', 'pretty-link'); ?></strong></th>
     38              <th width="50%" style="padding-left: 5px; margin: 0px;"><strong><?php esc_html_e('Current Group', 'pretty-link'); ?></strong></th>
    3839            </thead>
    3940            <?php
     
    4243              ?>
    4344              <tr style="line-height: 15px; font-size: 12px;<?php echo (($i%2)?' background-color: #efefef;':''); ?>">
    44                 <td style="min-width: 50%; width: 50%;"><input type="checkbox" style="width: 15px;" name="link[<?php echo $link->id; ?>]" <?php echo ((isset($_POST['link'][$link->id]) and $_POST['link'][$link->id] == 'on')?'checked="true"':''); ?>/>&nbsp;<?php echo htmlspecialchars(stripslashes($link->name)) . " <strong>(" . $link->slug . ")</strong>"; ?></td>
    45                 <td style="min-width: 50%; width: 50%;"><?php echo htmlspecialchars(stripslashes($link->group_name)); ?></td>
     45                <td style="min-width: 50%; width: 50%;">
     46                  <input type="checkbox" style="width: 15px;" name="link[<?php echo esc_attr($link->id); ?>]" <?php echo ((isset($_POST['link'][$link->id]) and $_POST['link'][$link->id] == 'on')?'checked="true"':''); ?>/>
     47                  <?php echo esc_html(stripslashes($link->name)) . " <strong>(" . esc_html(stripslashes($link->slug)) . ")</strong>"; ?>
     48                </td>
     49                <td style="min-width: 50%; width: 50%;"><?php echo esc_html(stripslashes($link->group_name)); ?></td>
    4650              </tr>
    4751              <?php
     
    5054          </table>
    5155        </div>
    52         <span class="setting-description"><?php _e('Select some links for this group. <strong>Note: each link can only be in one group at a time.</strong>', 'pretty-link'); ?></span>
     56        <span class="setting-description">
     57          <?php
     58            printf(
     59              // translators: %1$s: open strong tag, %2$s close strong tag
     60              esc_html__('Select some links for this group. %1$sNote: each link can only be in one group at a time.%2$s', 'pretty-link'),
     61              '<strong>',
     62              '</strong>'
     63            );
     64          ?>
     65        </span>
    5366      </td>
    5467    </tr>
     
    5669
    5770  <p class="submit">
    58   <input type="submit" class="button button-primary" name="submit" value="<?php _e('Create', 'pretty-link'); ?>" /> &nbsp; <a href="<?php echo admin_url("admin.php?page=pretty-link-groups"); ?>" class="button"><?php _e('Cancel', 'pretty-link'); ?></a>
     71  <input type="submit" class="button button-primary" name="submit" value="<?php esc_attr_e('Create', 'pretty-link'); ?>" /> &nbsp; <a href="<?php echo esc_url(admin_url("admin.php?page=pretty-link-groups")); ?>" class="button"><?php esc_html_e('Cancel', 'pretty-link'); ?></a>
    5972  </p>
    6073
  • pretty-link/trunk/app/views/links/form.php

    r1722928 r2124183  
    11<?php if(!defined('ABSPATH')) { die('You are not allowed to call this page directly.'); } ?>
    22
    3 <table class="form-table">
    4   <tr>
    5     <th scope="row">
    6       <?php _e('Redirection*', 'pretty-link'); ?>
    7       <?php PrliAppHelper::info_tooltip(
    8               'prli-link-options-redirection-type',
    9               __('Redirection Type', 'pretty-link'),
    10               __('This is the method of redirection for your link.', 'pretty-link')
    11             ); ?>
    12     </th>
    13     <td>
    14       <select id="redirect_type" name="redirect_type" style="padding: 0px; margin: 0px;">
    15         <option value="307"<?php echo esc_html($values['redirect_type']['307']); ?>><?php _e("307 (Temporary)", 'pretty-link') ?>&nbsp;</option>
    16         <option value="302"<?php echo esc_html($values['redirect_type']['302']); ?>><?php _e("302 (Temporary)", 'pretty-link') ?>&nbsp;</option>
    17         <option value="301"<?php echo esc_html($values['redirect_type']['301']); ?>><?php _e("301 (Permanent)", 'pretty-link') ?>&nbsp;</option>
    18         <?php do_action('prli_redirection_types', $values, false); ?>
    19       </select>
    20       <?php
    21         global $plp_update;
    22         if(!$plp_update->is_installed()) {
    23           ?>
    24           <p class="description"><?php printf(__('Make your life easier by upgrading to %1$sPretty Links Pro%2$s -- get more redirection types, speed, automations and <b>results from your links</b> by %1$sgoing pro today!%2$s', 'pretty-link'),'<a href="https://prettylinks.com/pl/link-form/upgrade" target="_blank">','</a>') ?></p>
    25           <?php
    26         } ?>
    27     </td>
    28   </tr>
    29   <tr id="prli_target_url">
    30     <th scope="row">
    31       <?php _e('Target URL*', 'pretty-link'); ?>
    32       <?php PrliAppHelper::info_tooltip(
    33               'prli-link-options-target-url',
    34               __('Target URL', 'pretty-link'),
    35               __('This is the URL that your Pretty Link will redirect to.', 'pretty-link')
    36             ); ?>
    37     </th>
    38     <td>
    39       <textarea class="large-text" name="url"><?php echo esc_html($values['url'],ENT_COMPAT,'UTF-8'); ?></textarea>
     3<?php
     4  if(isset($values['link_id']) && $values['link_id'] > 0) {
     5    ?>
     6      <input type="hidden" name="link_id" value="<?php echo esc_attr($values['link_id']); ?>" />
     7    <?php
     8  }
     9
     10  $link_nonce = wp_create_nonce(PrliLink::$nonce_str . wp_salt());
     11?>
     12
     13<input type="hidden" name="<?php echo esc_attr(PrliLink::$nonce_str); ?>" value="<?php echo esc_attr($link_nonce); ?>" />
     14
     15<div id="pretty_link_errors" class="prli-hidden">
     16  <p><!-- This is where our errors will show up --></p>
     17</div>
     18
     19<table class="prli-settings-table">
     20  <tr class="prli-mobile-nav">
     21    <td colspan="2">
     22      <a href="" class="prli-toggle-nav"><i class="pl-icon-menu"> </i></a>
    4023    </td>
    4124  </tr>
    4225  <tr>
    43     <th scope="row">
    44       <?php _e('Pretty Link*', 'pretty-link'); ?>
    45       <?php PrliAppHelper::info_tooltip(
    46               'prli-link-options-slug',
    47               __('Pretty Link', 'pretty-link'),
    48               __('This is how your pretty link will appear. You can edit the Pretty Link slug here.', 'pretty-link')
    49             ); ?>
    50     </th>
    51     <td>
    52       <strong><?php global $prli_blogurl; echo esc_html($prli_blogurl); ?></strong>/<input type="text" name="slug" class="regular-text" value="<?php echo esc_attr($values['slug']); ?>" />
     26    <td class="prli-settings-table-nav">
     27      <ul class="prli-sidebar-nav">
     28        <li><a data-id="basic"><?php esc_html_e('Basic', 'pretty-link'); ?></a></li>
     29        <li><a data-id="advanced"><?php esc_html_e('Advanced', 'pretty-link'); ?></a></li>
     30        <li><a data-id="pro"><?php esc_html_e('Pro', 'pretty-link'); ?></a></li>
     31        <?php do_action('prli_admin_link_nav'); ?>
     32      </ul>
    5333    </td>
    54   </tr>
    55   <tr>
    56     <th scope="row">
    57       <?php _e('Title', 'pretty-link'); ?>
    58       <?php PrliAppHelper::info_tooltip(
    59               'prli-link-options-name',
    60               __('Title', 'pretty-link'),
    61               __('Leave this blank and Pretty Link will attempt to detect the title from the target url. Alternatively you can enter a custom title here.', 'pretty-link')
    62             ); ?>
    63     </th>
    64     <td>
    65       <input type="text" name="name" class="large-text" value="<?php echo esc_attr($values['name']); ?>" />
    66     </td>
    67   </tr>
    68   <tr>
    69     <th scope="row">
    70       <?php _e('Notes', 'pretty-link'); ?>
    71       <?php PrliAppHelper::info_tooltip(
    72               'prli-link-options-notes',
    73               __('Notes', 'pretty-link'),
    74               __('This is a field where you can enter notes about a particular link. This notes field is mainly for your own link management needs. It isn\'t currently used anywhere on the front end.', 'pretty-link')
    75             ); ?>
    76     </th>
    77     <td>
    78       <textarea class="large-text" name="description"><?php echo esc_html($values['description'],ENT_COMPAT,'UTF-8'); ?></textarea>
     34    <td class="prli-settings-table-pages">
     35      <div class="prli-page" id="basic">
     36        <?php require(PRLI_VIEWS_PATH . '/links/form_basic.php'); ?>
     37      </div>
     38      <div class="prli-page" id="advanced">
     39        <?php require(PRLI_VIEWS_PATH . '/links/form_advanced.php'); ?>
     40      </div>
     41      <div class="prli-page" id="pro">
     42        <?php require(PRLI_VIEWS_PATH . '/links/form_pro.php'); ?>
     43      </div>
    7944    </td>
    8045  </tr>
    8146</table>
    8247
    83 <div class="prli-sub-box-white">
    84   <h3 class="prli-page-title"><a href="" class="prli-toggle-link" data-box="prli-link-advanced-options"><?php _e('Advanced Options', 'pretty-link'); ?></a></h3>
    85   <div class="prli-sub-box prli-link-advanced-options prli-hidden">
    86     <div class="prli-arrow prli-gray prli-up prli-sub-box-arrow"> </div>
    87     <table class="form-table" id="prli-link-advanced-options-box">
    88       <tbody>
    89         <tr>
    90           <th scope="row">
    91             <?php _e('Group', 'pretty-link'); ?>
    92             <?php PrliAppHelper::info_tooltip(
    93                     'prli-link-options-group',
    94                     __('Link Group', 'pretty-link'),
    95                     __('Select a Group for this Link', 'pretty-link')
    96                   ); ?>
    97           </th>
    98           <td>
    99             <select name="group_id" id="group_dropdown" style="padding: 0px; margin: 0px;">
    100               <option><?php _e("None", 'pretty-link') ?></option>
    101               <?php
    102                 foreach($values['groups'] as $group) {
    103               ?>
    104                   <option value="<?php echo esc_attr($group['id']); ?>"<?php echo esc_html($group['value']); ?>><?php echo esc_html($group['name']); ?>&nbsp;</option>
    105               <?php
    106                 }
    107               ?>
    108             </select>
    109             <input class="defaultText" id="add_group_textbox" title="<?php _e('Add a New Group', 'pretty-link') ?>" type="text" prli_nonce="<?php echo wp_create_nonce('prli-add-new-group'); ?>" style="vertical-align:middle;" /><div id="add_group_message"></div>
    110           </td>
    111         </tr>
    112         <tr>
    113           <th scope="row">
    114             <?php _e('No Follow', 'pretty-link'); ?>
    115             <?php PrliAppHelper::info_tooltip(
    116                     'prli-link-options-nofollow',
    117                     __('Nofollow Link', 'pretty-link'),
    118                     __('Add a nofollow and noindex to this link\'s http redirect header', 'pretty-link')
    119                   ); ?>
    120           </th>
    121           <td>
    122             <input type="checkbox" name="nofollow" <?php echo esc_html($values['nofollow']); ?>/>
    123           </td>
    124         </tr>
    125         <tr id="prli_time_delay" style="display: none">
    126           <th scope="row">
    127             <?php _e('Delay Redirect', 'pretty-link'); ?>
    128             <?php PrliAppHelper::info_tooltip(
    129                     'prli-link-delay-redirect',
    130                     __('Delay Redirect', 'pretty-link'),
    131                     __('Time in seconds to wait before redirecting', 'pretty-link')
    132                   ); ?>
    133           </th>
    134           <td>
    135             <input type="number" name="delay" class="small-text" value="<?php echo esc_attr($values['delay']); ?>" />
    136           </td>
    137         </tr>
    138         <tr>
    139           <th scope="row">
    140             <?php _e("Parameter Forwarding", 'pretty-link') ?>
    141             <?php PrliAppHelper::info_tooltip(
    142                     'prli-link-parameter-forwarding',
    143                     __('Parameter Forwarding', 'pretty-link'),
    144                     __('Forward parameters passed to this link onto the Target URL', 'pretty-link')
    145                   ); ?>
    146           </th>
    147           <td>
    148             <input type="checkbox" name="param_forwarding" id="param_forwarding" <?php echo checked($values['param_forwarding']); ?> />
    149           </td>
    150         </tr>
    151         <tr>
    152           <th scope="row">
    153             <?php _e("Tracking", 'pretty-link') ?>
    154             <?php PrliAppHelper::info_tooltip(
    155                     'prli-link-tracking-options',
    156                     __('Tracking', 'pretty-link'),
    157                     __('Enable Pretty Link\'s built-in hit (click) tracking', 'pretty-link')
    158                   ); ?>
    159           </th>
    160           <td>
    161             <input type="checkbox" name="track_me" <?php echo esc_html($values['track_me']); ?> />
    162           </td>
    163         </tr>
    164         <tr id="prli_google_analytics" style="display: none">
    165           <th scope="row">
    166             <?php _e('Google Analytics', 'pretty-link'); ?>
    167             <?php PrliAppHelper::info_tooltip(
    168                     'prli-link-ga',
    169                     __('Google Analytics Tracking', 'pretty-link'),
    170                     __('Requires the Google Analyticator, Google Analytics by MonsterInsights (formerly Yoast) or Google Analytics Plugin installed and configured for this to work.', 'pretty-link')
    171                   ); ?>
    172           </th>
    173           <td>
    174             <?php
    175             global $plp_update;
    176             if($plp_update->is_installed()):
    177               if($ga_info = PlpUtils::ga_installed()):
    178                 ?>
    179                 <input type="checkbox" name="google_tracking" <?php echo esc_html($values['google_tracking']); ?> />
    180                 <p class="description"><?php printf(__('It appears that <strong>%s</strong> is currently installed. Pretty Link will attempt to use its settings to track this link.', 'pretty-link'), $ga_info['name']); ?></p>
    181                 <?php
    182               else:
    183                 ?>
    184                   <input type="hidden" name="google_tracking" value="" />
    185                   <p class="description"><strong><?php _e('No Google Analytics Plugin is currently installed. Pretty Link cannot track links using Google Analytics until one is.', 'pretty-link'); ?></strong></p>
    186                 <?php
    187               endif;
    188             endif;
    189             ?>
    190           </td>
    191         </tr>
    192       </tbody>
    193     </table>
    194   </div>
    195 </div>
    196 <div>&nbsp;</div>
    197 <div class="prli-sub-box-white">
    198   <h3><a href="" class="prli-toggle-link" data-box="prli-link-pro-options"><?php _e('Pro Options', 'pretty-link'); ?></a></h3>
    199   <div class="prli-sub-box prli-link-pro-options prli-hidden">
    200     <div class="prli-arrow prli-gray prli-up prli-sub-box-arrow"> </div>
    201     <?php
    202       global $plp_update;
    203       if($plp_update->is_installed()) {
    204         ?>
    205         <table class="form-table" id="prli-link-pro-options-box">
    206         <?php
    207 
    208         $id = isset($id)?$id:false;
    209         // Add stuff to the form here
    210         do_action('prli_link_fields',$id);
    211 
    212         ?>
    213         </table>
    214         <?php
    215       }
    216       else {
    217       ?>
    218         <h2><?php _e('Oops!', 'pretty-link'); ?></h2>
    219 
    220         <div>
    221           <?php printf(__('It looks like you haven\'t %1$supgraded to Pretty Links Pro%2$s yet. Here are just a few things you could be doing with pro:', 'pretty-link'),'<a href="https://prettylinks.com/pl/link-form/upgrade-1" target="_blank">','</a>') ?>
    222         </div>
    223         <div>&nbsp;</div>
    224         <ul style="padding-left: 25px;">
    225           <li>&bullet; <?php _e('Auto-replace keywords throughout your site with Pretty Links', 'pretty-link'); ?></li>
    226           <li>&bullet; <?php _e('Protect your affiliate links by using Cloaked Redirects', 'pretty-link'); ?></li>
    227           <li>&bullet; <?php _e('Redirect based on a visitor\'s location', 'pretty-link'); ?></li>
    228           <li>&bullet; <?php _e('Auto-prettylink your Pages &amp; Posts', 'pretty-link'); ?></li>
    229           <li>&bullet; <?php _e('Find out what works and what doesn\'t by split testing your links', 'pretty-link'); ?></li>
    230           <li>&bullet; <?php _e('And much, much more!', 'pretty-link'); ?></li>
    231         </ul>
    232         <div>&nbsp;</div>
    233         <div><?php _e('Plus, upgrading is fast, easy and won\'t disrupt any of your existing links or data. And there\'s even a 14 day money back guarantee.', 'pretty-link'); ?></div>
    234         <div>&nbsp;</div>
    235         <div><?php _e('We think you\'ll love it!', 'pretty-link'); ?></div>
    236         <div>&nbsp;</div>
    237         <div><a href="https://prettylinks.com/pl/link-form/upgrade-2" class="button button-primary"><?php _e('Upgrade to Pro today!', 'pretty-link'); ?></a></div>
    238       <?php
    239       }
    240     ?>
    241   </div>
    242 </div>
    243 
  • pretty-link/trunk/app/views/options/form.php

    r1722928 r2124183  
    11<?php if(!defined('ABSPATH')) { die('You are not allowed to call this page directly.'); } ?>
    22<div class="wrap">
    3   <?php echo PrliAppHelper::page_title(__('Options', 'pretty-link')); ?>
    4   <a href="https://prettylinks.com/user-manual-2" class="page-title-action"><?php _e('User Manual', 'pretty-link'); ?></a>
     3  <?php PrliAppHelper::page_title(esc_html__('Options', 'pretty-link')); ?>
     4  <a href="https://prettylinks.com/user-manual-2" class="page-title-action"><?php esc_html_e('User Manual', 'pretty-link'); ?></a>
    55  <hr class="wp-header-end">
    66
     
    1010      global $prli_siteurl;
    1111      ?>
    12         <div class="error"><p><strong><?php _e('WordPress Must be Configured:', 'pretty-link'); ?></strong> <?php _e("Pretty Link won't work until you select a Permalink Structure other than 'Default'", 'pretty-link'); ?> ... <a href="<?php echo $prli_siteurl; ?>/wp-admin/options-permalink.php"><?php _e('Permalink Settings', 'pretty-link'); ?></a></p></div>
     12        <div class="error">
     13          <p>
     14            <?php
     15              printf(
     16              // translators: %1$s: open strong tag, %2$s: close strong tag
     17                esc_html__('%1$sWordPress Must be Configured:%2$s Pretty Links won\'t work until you select a Permalink Structure other than \'Default\'', 'pretty-link'),
     18                '<strong>',
     19                '</strong>'
     20              );
     21            ?>
     22            ... <a href="<?php echo esc_url(admin_url('options-permalink.php')); ?>"><?php esc_html_e('Permalink Settings', 'pretty-link'); ?></a>
     23          </p>
     24        </div>
    1325      <?php
    1426    }
     
    2133  <?php endif; ?>
    2234
    23   <form name="form1" id="prli-options" method="post" action="<?php echo admin_url('/admin.php?page=pretty-link-options'); ?>">
    24     <input type="hidden" name="<?php echo $hidden_field_name; ?>" value="Y">
     35  <form name="form1" id="prli-options" method="post" action="<?php echo esc_url(admin_url('/admin.php?page=pretty-link-options')); ?>">
     36    <input type="hidden" name="<?php echo esc_attr($hidden_field_name); ?>" value="Y">
    2537    <?php wp_nonce_field('update-options'); ?>
    2638
     
    3547          <ul class="prli-sidebar-nav">
    3648            <?php if($plp_update->is_installed()): ?>
    37               <li><a data-id="general"><?php _e('General', 'pretty-link'); ?></a></li>
     49              <li><a data-id="general"><?php esc_html_e('General', 'pretty-link'); ?></a></li>
    3850            <?php endif; ?>
    39             <li><a data-id="links"><?php _e('Links', 'pretty-link'); ?></a></li>
    40             <li><a data-id="reporting"><?php _e('Reporting', 'pretty-link'); ?></a></li>
     51            <li><a data-id="links"><?php esc_html_e('Links', 'pretty-link'); ?></a></li>
     52            <li><a data-id="reporting"><?php esc_html_e('Reporting', 'pretty-link'); ?></a></li>
     53            <li><a data-id="replacements"><?php esc_html_e('Replacements', 'pretty-link'); ?></a></li>
     54            <li><a data-id="auto-create"><?php esc_html_e('Auto-Create Links', 'pretty-link'); ?></a></li>
     55            <li><a data-id="prettybar"><?php esc_html_e('Pretty Bar', 'pretty-link'); ?></a></li>
     56            <li><a data-id="social"><?php esc_html_e('Social', 'pretty-link'); ?></a></li>
     57            <li><a data-id="public-links"><?php esc_html_e('Public', 'pretty-link'); ?></a></li>
    4158            <?php do_action('prli_admin_options_nav'); ?>
    4259          </ul>
     
    4562          <?php if($plp_update->is_installed()): ?>
    4663            <div class="prli-page" id="general">
    47               <div class="prli-page-title"><?php _e('General Options', 'pretty-link'); ?></div>
     64              <div class="prli-page-title"><?php esc_html_e('General Options', 'pretty-link'); ?></div>
    4865              <?php do_action('prli_admin_general_options'); ?>
    4966            </div>
     
    5168
    5269          <div class="prli-page" id="links">
    53             <div class="prli-page-title"><?php _e('Default Link Options', 'pretty-link'); ?></div>
     70            <div class="prli-page-title"><?php esc_html_e('Default Link Options', 'pretty-link'); ?></div>
    5471            <table class="form-table">
    5572              <tbody>
    5673                <tr valign="top">
    5774                  <th scope="row">
    58                     <label for="<?php echo $link_redirect_type; ?>"><?php _e('Redirection Type', 'pretty-link') ?></label>
     75                    <label for="<?php echo esc_attr($link_redirect_type); ?>"><?php esc_html_e('Redirection', 'pretty-link') ?></label>
    5976                    <?php PrliAppHelper::info_tooltip('prli-options-default-link-redirection',
    60                                                       __('Redirection Type', 'pretty-link'),
    61                                                       __('Select the type of redirection you want your newly created links to have.', 'pretty-link'));
     77                                                      esc_html__('Redirection Type', 'pretty-link'),
     78                                                      esc_html__('Select the type of redirection you want your newly created links to have.', 'pretty-link'));
    6279                    ?>
    6380                  </th>
    6481                  <td>
    6582                    <?php PrliLinksHelper::redirect_type_dropdown($link_redirect_type, $prli_options->link_redirect_type); ?>
     83                    <?php
     84                      global $plp_update;
     85                      if(!$plp_update->is_installed()) {
     86                        ?>
     87                        <p class="description"><?php printf(esc_html__('Get cloaked redirects, Javascript redirects and more when you %1$sUpgrade to PRO%2$s', 'pretty-link'),'<a href="https://prettylinks.com/pl/link-form/upgrade" target="_blank">','</a>') ?></p>
     88                        <?php
     89                      }
     90                    ?>
    6691                  </td>
    6792                </tr>
    6893                <tr valign="top">
    6994                  <th scope="row">
    70                     <label for="<?php echo $link_track_me; ?>"><?php _e('Enable Tracking', 'pretty-link'); ?></label>
     95                    <label for="<?php echo esc_attr($link_track_me); ?>"><?php esc_html_e('Enable Tracking', 'pretty-link'); ?></label>
    7196                    <?php PrliAppHelper::info_tooltip('prli-options-track-link',
    72                                                       __('Enable Tracking', 'pretty-link'),
    73                                                       __('Default all new links to be tracked.', 'pretty-link'));
     97                                                      esc_html__('Enable Tracking', 'pretty-link'),
     98                                                      esc_html__('Default all new links to be tracked.', 'pretty-link'));
    7499                    ?>
    75100                  </th>
    76101                  <td>
    77                     <input type="checkbox" name="<?php echo $link_track_me; ?>" <?php checked($prli_options->link_track_me != 0); ?>/>
     102                    <input type="checkbox" name="<?php echo esc_attr($link_track_me); ?>" <?php checked($prli_options->link_track_me != 0); ?>/>
    78103                  </td>
    79104                </tr>
    80105                <tr valign="top">
    81106                  <th scope="row">
    82                     <label for="<?php echo $link_nofollow; ?>"><?php _e('Enable No Follow', 'pretty-link'); ?></label>
     107                    <label for="<?php echo esc_attr($link_nofollow); ?>"><?php esc_html_e('Enable No Follow', 'pretty-link'); ?></label>
    83108                    <?php PrliAppHelper::info_tooltip('prli-options-add-nofollow',
    84                                                       __('Add No Follow', 'pretty-link'),
    85                                                       __('Add the \'nofollow\' attribute by default to new links.', 'pretty-link'));
     109                                                      esc_html__('Add No Follow', 'pretty-link'),
     110                                                      esc_html__('Add the \'nofollow\' attribute by default to new links.', 'pretty-link'));
    86111                    ?>
    87112                  </th>
    88113                  <td>
    89                     <input type="checkbox" name="<?php echo $link_nofollow; ?>" <?php checked($prli_options->link_nofollow != 0); ?>/>
     114                    <input type="checkbox" name="<?php echo esc_attr($link_nofollow); ?>" <?php checked($prli_options->link_nofollow != 0); ?>/>
    90115                  </td>
    91116                </tr>
    92117                <tr valign="top">
    93118                  <th scope="row">
    94                     <label for="<?php echo $link_prefix; ?>"><?php _e('Enable Permalink Fix', 'pretty-link'); ?></label>
     119                    <label for="<?php echo esc_attr($link_prefix); ?>"><?php esc_html_e('Enable Permalink Fix', 'pretty-link'); ?></label>
    95120                    <?php PrliAppHelper::info_tooltip('prli-options-use-prefix-permalinks',
    96                                                       __('Use fix for index.php Permalink Structure', 'pretty-link'),
    97                                                       __("This option should ONLY be checked if you have elements in your permalink structure that must be present in any link on your site. For example, some WordPress installs don't have the benefit of full rewrite capabilities and in this case you'd need an index.php included in each link (http://example.com/index.php/mycoolslug instead of http://example.com/mycoolslug). If this is the case for you then check this option but the vast majority of users will want to keep this unchecked.", 'pretty-link'));
     121                                                      esc_html__('Use fix for index.php Permalink Structure', 'pretty-link'),
     122                                                      esc_html__("This option should ONLY be checked if you have elements in your permalink structure that must be present in any link on your site. For example, some WordPress installs don't have the benefit of full rewrite capabilities and in this case you'd need an index.php included in each link (http://example.com/index.php/mycoolslug instead of http://example.com/mycoolslug). If this is the case for you then check this option but the vast majority of users will want to keep this unchecked.", 'pretty-link'));
    98123                    ?>
    99124                  </th>
    100125                  <td>
    101                     <input type="checkbox" name="<?php echo $link_prefix; ?>" <?php checked($prli_options->link_prefix != 0); ?>/>
    102                   </td>
    103                 </tr>
     126                    <input type="checkbox" name="<?php echo esc_attr($link_prefix); ?>" <?php checked($prli_options->link_prefix != 0); ?>/>
     127                  </td>
     128                </tr>
     129
     130                <?php if(!$plp_update->is_installed()): ?>
     131
     132                  <tr valign="top" class="prli-pro-only">
     133                    <th scope="row">
     134                      <label><?php esc_html_e('Base Slug Prefix', 'pretty-link'); ?></label>
     135                      <?php PrliAppHelper::info_tooltip('prli-base-slug-prefix',
     136                        esc_html__('Base Slug Prefix', 'pretty-link'),
     137                        sprintf(
     138                          // translators: %1$s: open b tag, %2$s close b tag
     139                          esc_html__('Use this to prefix all newly generated pretty links with a directory of your choice. For example set to %1$sout%2$s to make your pretty links look like http://site.com/%1$sout%2$s/xyz. Changing this option will NOT affect existing pretty links. If you do not wish to use a directory prefix, leave this text field blank. Whatever you type here will be sanitized and modified to ensure it is URL-safe. So %1$sHello World%2$s might get changed to something like %1$shello-world%2$s instead. Lowercase letters, numbers, dashes, and underscores are allowed.', 'pretty-link'),
     140                          '<b>',
     141                          '</b>'
     142                        ));
     143                      ?>
     144                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-base-slug-prefix'); ?>
     145                    </th>
     146                    <td>
     147                      <input type="text" class="regular-text" disabled />
     148                    </td>
     149                  </tr>
     150
     151                  <tr valign="top" class="prli-pro-only">
     152                    <th scope="row">
     153                      <label><?php esc_html_e('Slug Character Count', 'pretty-link'); ?></label>
     154                      <?php PrliAppHelper::info_tooltip('prli-num-slug-chars',
     155                        esc_html__('Slug Character Count', 'pretty-link'),
     156                        esc_html__("The number of characters to use when auto-generating a random slug for pretty links. The default is 4. You cannot use less than 2.", 'pretty-link'));
     157                      ?>
     158                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-slug-character-count'); ?>
     159                    </th>
     160                    <td>
     161                      <input type="number" min="2" disabled value="4" />
     162                    </td>
     163                  </tr>
     164
     165                  <tr valign="top" class="prli-pro-only">
     166                    <th scope="row">
     167                      <label><?php esc_html_e('Enable Google Analytics', 'pretty-link') ?></label>
     168                      <?php PrliAppHelper::info_tooltip('prli-options-use-ga', esc_html__('Enable Google Analytics', 'pretty-link'),
     169                        esc_html__("Requires Google Analyticator, Google Analytics by MonsterInsights (formerly Yoast), or the Google Analytics Plugin to be installed and configured on your site.", 'pretty-link'));
     170                      ?>
     171                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-google-analytics'); ?>
     172                    </th>
     173                    <td>
     174                      <input type="checkbox" disabled />
     175                    </td>
     176                  </tr>
     177
     178                  <tr valign="top" class="prli-pro-only">
     179                    <th scope="row">
     180                      <label><?php printf(esc_html__('Enable %sQR Codes%s', 'pretty-link'), '<a href="http://en.wikipedia.org/wiki/QR_code">', '</a>'); ?></label>
     181                      <?php PrliAppHelper::info_tooltip('prli-options-generate-qr-codes',
     182                        esc_html__('Generate QR Codes', 'pretty-link'),
     183                        esc_html__("This will enable a link in your pretty link admin that will allow you to automatically download a QR Code for each individual Pretty Link.", 'pretty-link'));
     184                      ?>
     185                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-qr-codes'); ?>
     186                    </th>
     187                    <td>
     188                      <input type="checkbox" disabled />
     189                    </td>
     190                  </tr>
     191
     192                  <tr valign="top" class="prli-pro-only">
     193                    <th scope="row">
     194                      <label><?php esc_html_e('Global Head Scripts', 'pretty-link'); ?></label>
     195                      <?php PrliAppHelper::info_tooltip('prli-options-global-head-scripts',
     196                        esc_html__('Global Head Scripts', 'pretty-link'),
     197                        sprintf(
     198                          // translators: %1$s: br tag, %2$s: open b tag, %3$s close b tag
     199                          esc_html__('Useful for adding Google Analytics tracking, Facebook retargeting pixels, or any other kind of tracking script to the HTML head.%1$s%1$sWhat you enter in this box will be applied to all supported pretty links.%1$s%1$s%2$sNOTE:%3$s This does NOT work with 301, 302 and 307 type redirects.', 'pretty-link'),
     200                          '<br>',
     201                          '<b>',
     202                          '</b>'
     203                        ));
     204                      ?>
     205                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-global-head-scripts'); ?>
     206                    </th>
     207                    <td>
     208                      <textarea class="large-text" disabled></textarea>
     209                    </td>
     210                  </tr>
     211
     212                <?php endif; ?>
     213
    104214                <?php do_action('prli_custom_link_options'); ?>
    105215              </tbody>
     
    108218
    109219          <div class="prli-page" id="reporting">
    110             <div class="prli-page-title"><?php _e('Reporting Options', 'pretty-link'); ?></div>
     220            <div class="prli-page-title"><?php esc_html_e('Reporting Options', 'pretty-link'); ?></div>
    111221            <table class="form-table">
    112222              <tbody>
    113223                <tr valign="top">
    114224                  <th scope="row">
    115                     <?php _e('Tracking Style', 'pretty-link'); ?>
     225                    <?php esc_html_e('Tracking Style', 'pretty-link'); ?>
    116226                    <?php PrliAppHelper::info_tooltip('prli-options-tracking-style',
    117                                                       __('Tracking Style', 'pretty-link'),
    118                                                       __("Changing your tracking style can affect the accuracy of your existing statistics. Extended mode must be used for Conversion reporting.", 'pretty-link'));
     227                                                      esc_html__('Tracking Style', 'pretty-link'),
     228                                                      esc_html__("Changing your tracking style can affect the accuracy of your existing statistics. Extended mode must be used for Conversion reporting.", 'pretty-link'));
    119229                    ?>
    120230                  </th>
    121231                  <td>
    122                     <input type="radio" name="<?php echo $extended_tracking; ?>" value="normal" <?php checked($prli_options->extended_tracking,'normal'); ?>/><span class="prli-radio-text"><?php _e('Normal Tracking', 'pretty-link'); ?></span><br/><br/>
    123                     <input type="radio" name="<?php echo $extended_tracking; ?>" value="extended"<?php checked($prli_options->extended_tracking,'extended'); ?>/><span class="prli-radio-text"><?php _e('Extended Tracking (more stats / slower performance)', 'pretty-link'); ?></span><br/><br/>
    124                     <input type="radio" name="<?php echo $extended_tracking; ?>" value="count"<?php checked($prli_options->extended_tracking,'count'); ?>/><span class="prli-radio-text"><?php _e('Simple Click Count Tracking (less stats / faster performance)', 'pretty-link'); ?></span><br/>
     232                    <input type="radio" name="<?php echo esc_attr($extended_tracking); ?>" value="normal" <?php checked($prli_options->extended_tracking,'normal'); ?>/><span class="prli-radio-text"><?php esc_html_e('Normal Tracking', 'pretty-link'); ?></span><br/><br/>
     233                    <input type="radio" name="<?php echo esc_attr($extended_tracking); ?>" value="extended"<?php checked($prli_options->extended_tracking,'extended'); ?>/><span class="prli-radio-text"><?php esc_html_e('Extended Tracking (more stats / slower performance)', 'pretty-link'); ?></span><br/><br/>
     234                    <input type="radio" name="<?php echo esc_attr($extended_tracking); ?>" value="count"<?php checked($prli_options->extended_tracking,'count'); ?>/><span class="prli-radio-text"><?php esc_html_e('Simple Click Count Tracking (less stats / faster performance)', 'pretty-link'); ?></span><br/>
    125235                  </td>
    126236                </tr>
    127237                <tr valign="top">
    128238                  <th scope="row">
    129                     <label for="<?php echo $prli_exclude_ips; ?>">
    130                       <?php _e('Excluded IP Addresses:', 'pretty-link'); ?>
     239                    <label for="<?php echo esc_attr($prli_exclude_ips); ?>">
     240                      <?php esc_html_e('Excluded IP Addresses:', 'pretty-link'); ?>
    131241                      <?php PrliAppHelper::info_tooltip('prli-options-excluded-ips',
    132                                                         __('Excluded IP Addresses', 'pretty-link'),
    133                                                         sprintf(__("Enter IP Addresses or IP Ranges you want to exclude from your Click data and Stats. Each IP Address should be separated by commas. Example: 192.168.0.1, 192.168.2.1, 192.168.3.4 or 192.168.*.*<br/><br/><strong>FYI, your current IP address is %s.", 'pretty-link'), $prli_utils->get_current_client_ip()));
    134                       ?>
    135                     </label>
    136                   </th>
    137                   <td>
    138                     <input type="text" name="<?php echo $prli_exclude_ips; ?>" class="regular-text" value="<?php echo $prli_options->prli_exclude_ips; ?>">
     242                                                        esc_html__('Excluded IP Addresses', 'pretty-link'),
     243                                                        esc_html__('Enter IP Addresses or IP Ranges you want to exclude from your Click data and Stats. Each IP Address should be separated by commas. Example: 192.168.0.1, 192.168.2.1, 192.168.3.4 or 192.168.*.*', 'pretty-link') .
     244                                                        sprintf(
     245                                                          '<br/><br/><strong>%s</strong>',
     246                                                          esc_html(sprintf(__('FYI, your current IP address is %s.', 'pretty-link'), $prli_utils->get_current_client_ip()))
     247                                                        ));
     248                      ?>
     249                    </label>
     250                  </th>
     251                  <td>
     252                    <input type="text" name="<?php echo esc_attr($prli_exclude_ips); ?>" class="regular-text" value="<?php echo esc_attr($prli_options->prli_exclude_ips); ?>">
    139253                  </td>
    140254                </tr>
    141255                <tr valign="top">
    142256                  <th scope="row">
    143                     <?php _e('Auto-Trim Clicks', 'pretty-link'); ?>
     257                    <?php esc_html_e('Auto-Trim Clicks', 'pretty-link'); ?>
    144258                    <?php PrliAppHelper::info_tooltip('prli-options-auto-trim-clicks',
    145                                                       __('Automatically Trim Clicks', 'pretty-link'),
    146                                                       __("Will automatically delete all hits older than 90 days. We strongly recommend doing this to keep your database performance up. This will permanently delete this click data, and is not undo-able. ", 'pretty-link'));
     259                                                      esc_html__('Automatically Trim Clicks', 'pretty-link'),
     260                                                      esc_html__("Will automatically delete all hits older than 90 days. We strongly recommend doing this to keep your database performance up. This will permanently delete this click data, and is not undo-able. ", 'pretty-link'));
    147261                    ?>
    148262                  </th>
    149263                  <td>
    150                     <input type="checkbox" name="<?php echo $auto_trim_clicks; ?>" <?php checked($prli_options->auto_trim_clicks != 0); ?> />
     264                    <input type="checkbox" name="<?php echo esc_attr($auto_trim_clicks); ?>" <?php checked($prli_options->auto_trim_clicks != 0); ?> />
    151265                  </td>
    152266                </tr>
    153267                <tr valign="top">
    154268                  <th scope="row">
    155                     <?php _e('Filter Robots', 'pretty-link'); ?>
     269                    <?php esc_html_e('Filter Robots', 'pretty-link'); ?>
    156270                    <?php PrliAppHelper::info_tooltip('prli-options-filter-robots',
    157                                                       __('Filter Robots', 'pretty-link'),
    158                                                       __("Filter known Robots and unidentifiable browser clients from your click data, stats and reports. Works best if Tracking Style above is set to 'Extended Tracking'.", 'pretty-link'));
     271                                                      esc_html__('Filter Robots', 'pretty-link'),
     272                                                      esc_html__("Filter known Robots and unidentifiable browser clients from your click data, stats and reports. Works best if Tracking Style above is set to 'Extended Tracking'.", 'pretty-link'));
    159273                    ?>
    160274                  </th>
    161275                  <td>
    162                     <input type="checkbox" class="prli-toggle-checkbox" data-box="prli-whitelist-ips" name="<?php echo $filter_robots; ?>" <?php checked($prli_options->filter_robots != 0); ?> />
     276                    <input type="checkbox" class="prli-toggle-checkbox" data-box="prli-whitelist-ips" name="<?php echo esc_attr($filter_robots); ?>" <?php checked($prli_options->filter_robots != 0); ?> />
    163277                  </td>
    164278                </tr>
     
    171285                  <tr valign="top">
    172286                    <th scope="row">
    173                       <label for="<?php echo $whitelist_ips; ?>">
    174                         <?php _e('Whitelist IP Addresses', 'pretty-link'); ?>
     287                      <label for="<?php echo esc_attr($whitelist_ips); ?>">
     288                        <?php esc_html_e('Whitelist IP Addresses', 'pretty-link'); ?>
    175289                        <?php PrliAppHelper::info_tooltip('prli-options-whitelist-ips',
    176                                                           __('Whiltelist IP Addresses', 'pretty-link'),
    177                                                           __("Enter IP Addresses or IP Ranges you want to always include in your Click data and Stats even if they are flagged as robots. Each IP Address should be separated by commas. Example: 192.168.0.1, 192.168.2.1, 192.168.3.4 or 192.168.*.*", 'pretty-link'));
     290                                                          esc_html__('Whitelist IP Addresses', 'pretty-link'),
     291                                                          esc_html__("Enter IP Addresses or IP Ranges you want to always include in your Click data and Stats even if they are flagged as robots. Each IP Address should be separated by commas. Example: 192.168.0.1, 192.168.2.1, 192.168.3.4 or 192.168.*.*", 'pretty-link'));
    178292                        ?>
    179293                      </label>
    180294                    </th>
    181                     <td><input type="text" name="<?php echo $whitelist_ips; ?>" class="regular-text" value="<?php echo $prli_options->whitelist_ips; ?>"></td>
     295                    <td><input type="text" name="<?php echo esc_attr($whitelist_ips); ?>" class="regular-text" value="<?php echo esc_attr($prli_options->whitelist_ips); ?>"></td>
    182296                  </tr>
    183297                </tbody>
     
    186300          </div>
    187301
     302          <?php if(!$plp_update->is_installed()): ?>
     303
     304            <div class="prli-page" id="replacements">
     305              <div class="prli-page-title"><?php esc_html_e('Keyword &amp; URL Auto Replacements Options', 'pretty-link'); ?></div>
     306
     307              <table class="form-table">
     308                <tbody>
     309                <tr valign="top" class="prli-pro-only">
     310                  <th scope="row">
     311                    <label>
     312                      <?php esc_html_e('Enable Replacements', 'pretty-link'); ?>
     313                      <?php PrliAppHelper::info_tooltip('prli-keyword-replacement',
     314                        esc_html__('Enable Keyword and URL Auto Replacement', 'pretty-link'),
     315                        esc_html__('If checked, this will enable you to automatically replace keywords and/or URLs on your blog with pretty links. You will specify the specific keywords and urls from your Pretty Link edit page.', 'pretty-link'));
     316                      ?>
     317                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-enable-replacements'); ?>
     318                    </label>
     319                  </th>
     320                  <td>
     321                    <input class="prli-toggle-checkbox" type="checkbox" checked disabled />
     322                  </td>
     323                </tr>
     324                </tbody>
     325              </table>
     326
     327              <div class="prli-sub-box pretty-link-keyword-replacement-options">
     328                <div class="prli-arrow prli-gray prli-up prli-sub-box-arrow"> </div>
     329                <table class="form-table">
     330                  <tbody>
     331                  <tr valign="top" class="prli-pro-only">
     332                    <th scope="row">
     333                      <label>
     334                        <?php esc_html_e('Thresholds', 'pretty-link'); ?>
     335                        <?php PrliAppHelper::info_tooltip('prli-keyword-replacement-thresholds',
     336                          esc_html__('Set Keyword Replacement Thresholds', 'pretty-link'),
     337                          esc_html__('Don\'t want to have too many keyword replacements per page? Select to set some reasonable keyword replacement thresholds.', 'pretty-link'));
     338                        ?>
     339                        <?php echo PrliAppHelper::pro_only_feature_indicator('option-replacement-thresholds'); ?>
     340                      </label>
     341                    </th>
     342                    <td>
     343                      <input class="prli-toggle-checkbox" type="checkbox" disabled />
     344                    </td>
     345                  </tr>
     346                  </tbody>
     347                </table>
     348                <table class="form-table">
     349                  <tbody>
     350                    <tr valign="top" class="prli-pro-only">
     351                      <th scope="row">
     352                        <label>
     353                          <?php esc_html_e('Open in New Window', 'pretty-link'); ?>
     354                          <?php PrliAppHelper::info_tooltip('prli-keyword-replacement-thresholds',
     355                            esc_html__('Open Keyword Replacement Links in New Window', 'pretty-link'),
     356                            sprintf(
     357                              // translators: %1$s: open strong tag, %2$s: close strong tag
     358                              esc_html__('Ensure that these keyword replacement links are opened in a separate window. %1$sNote:%2$s This does not apply to url replacements--only keyword replacements.', 'pretty-link'),
     359                              '<strong>',
     360                              '</strong>'
     361                            ));
     362                          ?>
     363                          <?php echo PrliAppHelper::pro_only_feature_indicator('option-replacement-new-window'); ?>
     364                        </label>
     365                      </th>
     366                      <td>
     367                        <input type="checkbox" disabled />
     368                      </td>
     369                    </tr>
     370                    <tr valign="top" class="prli-pro-only">
     371                      <th scope="row">
     372                        <label>
     373                          <?php esc_html_e('Add No Follows', 'pretty-link'); ?>
     374                          <?php PrliAppHelper::info_tooltip('prli-keyword-links-nofollow',
     375                            esc_html__('Add \'nofollow\' attribute to all Keyword Pretty Links', 'pretty-link'),
     376                            sprintf(
     377                              // translators: %1$s: open code tag, %2$s: close code tag, %3$s: open strong tag, %4$s close strong tag
     378                              esc_html__('This adds the html %1$sNOFOLLOW%2$s attribute to all keyword replacement links. %3$sNote:%4$s This does not apply to url replacements--only keyword replacements.', 'pretty-link'),
     379                              '<code>',
     380                              '</code>',
     381                              '<strong>',
     382                              '</strong>'
     383                            ));
     384                          ?>
     385                          <?php echo PrliAppHelper::pro_only_feature_indicator('option-replacement-no-follows'); ?>
     386                        </label>
     387                      </th>
     388                      <td>
     389                        <input type="checkbox" disabled />
     390                      </td>
     391                    </tr>
     392                    <tr valign="top" class="prli-pro-only">
     393                      <th scope="row">
     394                        <label>
     395                          <?php esc_html_e('Custom CSS', 'pretty-link'); ?>
     396                          <?php PrliAppHelper::info_tooltip('prli-keyword-custom-css',
     397                            esc_html__('Add custom CSS to your keyword replacement links', 'pretty-link'),
     398                            sprintf(
     399                              // translators: %1$s: open strong tag, %2$s: close strong tag
     400                              esc_html__('Add some custom formatting to your keyword pretty link replacements. %1$sNote:%2$s This does not apply to url replacements--only keyword replacements.', 'pretty-link'),
     401                              '<strong>',
     402                              '</strong>'
     403                            ));
     404                          ?>
     405                          <?php echo PrliAppHelper::pro_only_feature_indicator('option-replacement-custom-css'); ?>
     406                        </label>
     407                      </th>
     408                      <td>
     409                        <input type="text" class="regular-text" disabled />
     410                      </td>
     411                    </tr>
     412                    <tr valign="top" class="prli-pro-only">
     413                      <th valign="row">
     414                        <label>
     415                          <?php esc_html_e('Custom Hover CSS', 'pretty-link'); ?>
     416                          <?php PrliAppHelper::info_tooltip('prli-keyword-custom-hover-css',
     417                            esc_html__('Add custom hover CSS to your keyword replacement links', 'pretty-link'),
     418                            sprintf(
     419                              // translators: %1$s: open strong tag, %2$s: close strong tag
     420                              esc_html__('Add some custom formatting to the hover attribute of your keyword pretty links. %1$sNote%2$s: This does not apply to url replacements--only keyword replacements.', 'pretty-link'),
     421                              '<strong>',
     422                              '</strong>'
     423                            ));
     424                          ?>
     425                          <?php echo PrliAppHelper::pro_only_feature_indicator('option-replacement-custom-hover-css'); ?>
     426                        </label>
     427                      </th>
     428                      <td>
     429                        <input type="text" class="regular-text" disabled />
     430                      </td>
     431                    </tr>
     432                    <tr valign="top" class="prli-pro-only">
     433                      <th valign="row">
     434                        <label>
     435                          <?php esc_html_e('Link to Disclosures', 'pretty-link'); ?>
     436                          <?php PrliAppHelper::info_tooltip(
     437                            'prlipro-link-to-disclosures',
     438                            esc_html__('Automatically Add a Link to Disclosures', 'pretty-link'),
     439                            esc_html__('When enabled, this will add a link to your official affiliate link disclosure page to any page, post or custom post type that have any keyword or URL replacements. You\'ll also be able to customize the URL and position of the disclosure link.', 'pretty-link')
     440                          );
     441                          ?>
     442                          <?php echo PrliAppHelper::pro_only_feature_indicator('option-replacement-link-to-disclosures'); ?>
     443                        </label>
     444                      </th>
     445                      <td>
     446                        <input type="checkbox" class="prli-toggle-checkbox" disabled />
     447                      </td>
     448                    </tr>
     449                    <tr valign="top" class="prli-pro-only">
     450                      <th valign="row">
     451                        <label>
     452                          <?php esc_html_e('Keyword Disclosures', 'pretty-link'); ?>
     453                          <?php PrliAppHelper::info_tooltip(
     454                            'prlipro-enable-keyword-link-disclosures',
     455                            esc_html__('Automatically Add Affiliate Link Disclosures to Keyword Replacements', 'pretty-link'),
     456                            sprintf(
     457                              // translators: %1$s: open b tag, %2$s close b tag
     458                              esc_html__('When enabled, this will add an affiliate link disclosure next to each one of your keyword replacements. %1$sNote:%2$s This does not apply to url replacements--only keyword replacements.', 'pretty-link'),
     459                              '<b>',
     460                              '</b>'
     461                            )
     462                          );
     463                          ?>
     464                          <?php echo PrliAppHelper::pro_only_feature_indicator('option-replacement-keyword-disclosures'); ?>
     465                        </label>
     466                      </th>
     467                      <td>
     468                        <input type="checkbox" class="prli-toggle-checkbox" disabled />
     469                      </td>
     470                    </tr>
     471                    <tr valign="top" class="prli-pro-only">
     472                      <th valign="row">
     473                        <label>
     474                          <?php esc_html_e('Replace All URLs', 'pretty-link'); ?>
     475                          <?php PrliAppHelper::info_tooltip('prli-replace-urls',
     476                            esc_html__('Replace All non-Pretty Link URLs With Pretty Link URLs', 'pretty-link'),
     477                            esc_html__('This feature will take each url it finds and create or use an existing pretty link pointing to the url and replace it with the pretty link.', 'pretty-link'));
     478                          ?>
     479                          <?php echo PrliAppHelper::pro_only_feature_indicator('option-replacement-replace-urls'); ?>
     480                        </label>
     481                      </th>
     482                      <td>
     483                        <input type="checkbox" class="prli-toggle-checkbox" disabled />
     484                      </td>
     485                    </tr>
     486                    <tr valign="top" class="prli-pro-only">
     487                      <th valign="row">
     488                        <label>
     489                          <?php esc_html_e('Replace in Comments', 'pretty-link'); ?>
     490                          <?php PrliAppHelper::info_tooltip('prli-replace-in-comments',
     491                            esc_html__('Replace Keywords and URLs in Comments', 'pretty-link'),
     492                            esc_html__('This option will enable the keyword / URL replacement routine to run in Comments.', 'pretty-link'));
     493                          ?>
     494                          <?php echo PrliAppHelper::pro_only_feature_indicator('option-replacement-replace-in-comments'); ?>
     495                        </label>
     496                      </th>
     497                      <td>
     498                        <input type="checkbox" disabled />
     499                      </td>
     500                    </tr>
     501                    <tr valign="top" class="prli-pro-only">
     502                      <th valign="row">
     503                        <label>
     504                          <?php esc_html_e('Replace in Feeds', 'pretty-link'); ?>
     505                          <?php PrliAppHelper::info_tooltip('prli-replace-in-feeds',
     506                            esc_html__('Replace Keywords and URLs in Feeds', 'pretty-link'),
     507                            sprintf(
     508                              // translators: %1$s: br tag, %2$s open strong tag, %3$s: close strong tag
     509                              esc_html__('This option will enable the keyword / URL replacement routine to run in RSS Feeds.%1$s%2$sNote:%3$s This option can slow the load speed of your RSS feed -- unless used in conjunction with a caching plugin like W3 Total Cache or WP Super Cache.%1$s%2$sNote #2%3$s This option will only work if you have "Full Text" selected in your General WordPress Reading settings.%1$s%2$sNote #3:%3$s If this option is used along with "Replace Keywords and URLs in Comments" then your post comment feeds will have keywords replaced in them as well.', 'pretty-link'),
     510                              '<br>',
     511                              '<strong>',
     512                              '</strong>'
     513                            ));
     514                          ?>
     515                          <?php echo PrliAppHelper::pro_only_feature_indicator('option-replacement-replace-in-feeds'); ?>
     516                        </label>
     517                      </th>
     518                      <td>
     519                        <input type="checkbox" disabled />
     520                      </td>
     521                    </tr>
     522                    <tr valign="top" class="prli-pro-only">
     523                      <th valign="row">
     524                        <label>
     525                          <?php esc_html_e('Index Replacements', 'pretty-link'); ?>
     526                          <?php PrliAppHelper::info_tooltip('plp-index-keywords',
     527                            esc_html__('Index Replacements', 'pretty-link'),
     528                            sprintf(
     529                              // translators: %1$s: br tag, %2$s open strong tag, %3$s: close strong tag
     530                              esc_html__('This feature will index all of your keyword & URL replacements to dramatically improve performance.%1$s%1$sIf your site has a large number of replacements and/or posts then this feature may increase the load on your server temporarily and your replacements may not show up on your posts for a day or two initially (until all posts are indexed).%1$s%1$s%2$sNote:%3$s this feature requires the use of wp-cron.', 'pretty-link'),
     531                              '<br>',
     532                              '<strong>',
     533                              '</strong>'
     534                            ));
     535                          ?>
     536                          <?php echo PrliAppHelper::pro_only_feature_indicator('option-replacement-index'); ?>
     537                        </label>
     538                      </th>
     539                      <td>
     540                        <input type="checkbox" class="prli-toggle-checkbox" disabled />
     541                      </td>
     542                    </tr>
     543                  </tbody>
     544                </table>
     545              </div>
     546            </div>
     547
     548            <div class="prli-page" id="auto-create">
     549              <div class="prli-page-title"><?php esc_html_e('Auto-Create Shortlink Options', 'pretty-link'); ?></div>
     550
     551              <table class="form-table">
     552                <tbody>
     553                  <tr valign="top" class="prli-pro-only">
     554                    <th scope="row">
     555                      <label>
     556                        <?php esc_html_e('Post Shortlinks', 'pretty-link'); ?>
     557                        <?php
     558                        PrliAppHelper::info_tooltip("prli-post-auto",
     559                          esc_html__('Create Pretty Links for Posts', 'pretty-link'),
     560                          esc_html__('Automatically Create a Pretty Link for each of your published Posts', 'pretty-link')
     561                        );
     562                        ?>
     563                        <?php echo PrliAppHelper::pro_only_feature_indicator('option-auto-create-post'); ?>
     564                      </label>
     565                    </th>
     566                    <td>
     567                      <input class="prli-toggle-checkbox" type="checkbox" disabled />
     568                    </td>
     569                  </tr>
     570                  <tr valign="top" class="prli-pro-only">
     571                    <th scope="row">
     572                      <label>
     573                        <?php esc_html_e('Page Shortlinks', 'pretty-link'); ?>
     574                        <?php
     575                        PrliAppHelper::info_tooltip("prli-page-auto",
     576                          esc_html__('Create Pretty Links for Pages', 'pretty-link'),
     577                          esc_html__('Automatically Create a Pretty Link for each of your published Pages', 'pretty-link')
     578                        );
     579                        ?>
     580                        <?php echo PrliAppHelper::pro_only_feature_indicator('option-auto-create-page'); ?>
     581                      </label>
     582                    </th>
     583                    <td>
     584                      <input class="prli-toggle-checkbox" type="checkbox" disabled />
     585                    </td>
     586                  </tr>
     587                </tbody>
     588              </table>
     589
     590            </div>
     591
     592            <div class="prli-page" id="prettybar">
     593              <div class="prli-page-title"><?php esc_html_e('Pretty Bar Options', 'pretty-link'); ?></div>
     594              <table class="form-table">
     595                <tbody>
     596                <tr valign="top" class="prli-pro-only">
     597                  <th scope="row">
     598                    <label>
     599                      <?php esc_html_e('Image URL', 'pretty-link'); ?>
     600                      <?php PrliAppHelper::info_tooltip('prli-prettybar-image-url',
     601                        esc_html__('Pretty Bar Image URL', 'pretty-link'),
     602                        esc_html__('If set, this will replace the logo image on the Pretty Bar. The image that this URL references should be 48x48 Pixels to fit.', 'pretty-link'));
     603                      ?>
     604                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-prettybar-image'); ?>
     605                    </label>
     606                  </th>
     607                  <td>
     608                    <input type="text" class="large-text" disabled />
     609                  </td>
     610                </tr>
     611                <tr valign="top" class="prli-pro-only">
     612                  <th scope="row">
     613                    <label>
     614                      <?php esc_html_e('Background Image URL', 'pretty-link'); ?>
     615                      <?php PrliAppHelper::info_tooltip('prli-prettybar-background-image-url',
     616                        esc_html__('Pretty Bar Background Image URL', 'pretty-link'),
     617                        esc_html__('If set, this will replace the background image on Pretty Bar. The image that this URL references should be 65px tall - this image will be repeated horizontally across the bar.', 'pretty-link'));
     618                      ?>
     619                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-prettybar-background-image'); ?>
     620                    </label>
     621                  </th>
     622                  <td>
     623                    <input type="text" class="large-text" disabled />
     624                  </td>
     625                </tr>
     626                <tr valign="top" class="prli-pro-only">
     627                  <th scope="row">
     628                    <label>
     629                      <?php esc_html_e('Background Color', 'pretty-link'); ?>
     630                      <?php PrliAppHelper::info_tooltip('prli-prettybar-color',
     631                        esc_html__('Pretty Bar Background Color', 'pretty-link'),
     632                        esc_html__('This will alter the background color of the Pretty Bar if you haven\'t specified a Pretty Bar background image.', 'pretty-link'));
     633                      ?>
     634                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-prettybar-background-color'); ?>
     635                    </label>
     636                  </th>
     637                  <td>
     638                    <input type="text" class="plp-colorpicker" size="8" disabled />
     639                  </td>
     640                </tr>
     641                <tr valign="top" class="prli-pro-only">
     642                  <th scope="row">
     643                    <label>
     644                      <?php esc_html_e('Text Color', 'pretty-link'); ?>
     645                      <?php PrliAppHelper::info_tooltip('prli-prettybar-text-color',
     646                        esc_html__('Pretty Bar Text Color', 'pretty-link'),
     647                        sprintf(
     648                          // translators: %1$s: open code tag, %2$s: close code tag
     649                          esc_html__('If not set, this defaults to black (RGB value %1$s#000000%2$s) but you can change it to whatever color you like.', 'pretty-link'),
     650                          '<code>',
     651                          '</code>'
     652                        ));
     653                      ?>
     654                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-prettybar-text-color'); ?>
     655                    </label>
     656                  </th>
     657                  <td>
     658                    <input type="text" class="plp-colorpicker" size="8" disabled />
     659                  </td>
     660                </tr>
     661                <tr valign="top" class="prli-pro-only">
     662                  <th scope="row">
     663                    <label>
     664                      <?php esc_html_e('Link Color', 'pretty-link'); ?>
     665                      <?php PrliAppHelper::info_tooltip('prli-prettybar-link-color',
     666                        esc_html__('Pretty Bar Link Color', 'pretty-link'),
     667                        sprintf(
     668                          // translators: %1$s: open code tag, %2$s: close code tag
     669                          esc_html__('If not set, this defaults to blue (RGB value %1$s#0000ee%2$s) but you can change it to whatever color you like.', 'pretty-link'),
     670                          '<code>',
     671                          '</code>'
     672                        ));
     673                      ?>
     674                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-prettybar-link-color'); ?>
     675                    </label>
     676                  </th>
     677                  <td>
     678                    <input type="text" class="plp-colorpicker" size="8" disabled />
     679                  </td>
     680                </tr>
     681                <tr valign="top" class="prli-pro-only">
     682                  <th scope="row">
     683                    <label>
     684                      <?php esc_html_e('Link Hover Color', 'pretty-link'); ?>
     685                      <?php PrliAppHelper::info_tooltip('prli-prettybar-link-hover-color',
     686                        esc_html__('Pretty Bar Link Hover Color', 'pretty-link'),
     687                        sprintf(
     688                          // translators: %1$s: open code tag, %2$s: close code tag
     689                          esc_html__('If not set, this defaults to RGB value %1$s#ababab%2$s but you can change it to whatever color you like.', 'pretty-link'),
     690                          '<code>',
     691                          '</code>'
     692                        ));
     693                      ?>
     694                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-prettybar-link-hover-color'); ?>
     695                    </label>
     696                  </th>
     697                  <td>
     698                    <input type="text" class="plp-colorpicker" size="8" disabled />
     699                  </td>
     700                </tr>
     701                <tr valign="top" class="prli-pro-only">
     702                  <th scope="row">
     703                    <label>
     704                      <?php esc_html_e('Visited Link Color', 'pretty-link'); ?>
     705                      <?php PrliAppHelper::info_tooltip('prli-prettybar-visited-link-color',
     706                        esc_html__('Pretty Bar Visited Link Color', 'pretty-link'),
     707                        sprintf(
     708                          // translators: %1$s: open code tag, %2$s: close code tag
     709                          esc_html__('If not set, this defaults to RGB value %1$s#551a8b%2$s but you can change it to whatever color you like.', 'pretty-link'),
     710                          '<code>',
     711                          '</code>'
     712                        ));
     713                      ?>
     714                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-prettybar-link-visited-color'); ?>
     715                    </label>
     716                  </th>
     717                  <td>
     718                    <input type="text" class="plp-colorpicker" size="8" disabled />
     719                  </td>
     720                </tr>
     721                <tr valign="top" class="prli-pro-only">
     722                  <th scope="row">
     723                    <label>
     724                      <?php esc_html_e('Title Char Limit', 'pretty-link'); ?>
     725                      <?php PrliAppHelper::info_tooltip('prli-prettybar-title-char-limit',
     726                        esc_html__('Pretty Bar Title Char Limit', 'pretty-link'),
     727                        sprintf(
     728                          // translators: %1$s: open code tag, %2$s: close code tag
     729                          esc_html__('If your Website has a long title then you may need to adjust this value so that it will all fit on the Pretty Bar. It is recommended that you keep this value to %1$s30%2$s characters or less so the Pretty Bar\'s format looks good across different browsers and screen resolutions.', 'pretty-link'),
     730                          '<code>',
     731                          '</code>'
     732                        ));
     733                      ?>
     734                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-prettybar-title-char-limit'); ?>
     735                    </label>
     736                  </th>
     737                  <td>
     738                    <input type="text" size="4" disabled />
     739                  </td>
     740                </tr>
     741                <tr valign="top" class="prli-pro-only">
     742                  <th scope="row">
     743                    <label>
     744                      <?php esc_html_e('Description Char Limit', 'pretty-link'); ?>
     745                      <?php PrliAppHelper::info_tooltip('prli-prettybar-desc-char-limit',
     746                        esc_html__('Pretty Bar Description Char Limit', 'pretty-link'),
     747                        sprintf(
     748                          // translators: %1$s: open code tag, %2$s: close code tag
     749                          esc_html__('If your Website has a long Description (tagline) then you may need to adjust this value so that it will all fit on the Pretty Bar. It is recommended that you keep this value to %1$s40%2$s characters or less so the Pretty Bar\'s format looks good across different browsers and screen resolutions.', 'pretty-link'),
     750                          '<code>',
     751                          '</code>'
     752                        ));
     753                      ?>
     754                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-prettybar-description-char-limit'); ?>
     755                    </label>
     756                  </th>
     757                  <td>
     758                    <input type="text" size="4" disabled />
     759                  </td>
     760                </tr>
     761                <tr valign="top" class="prli-pro-only">
     762                  <th scope="row">
     763                    <label>
     764                      <?php esc_html_e('Target URL Char Limit', 'pretty-link'); ?>
     765                      <?php PrliAppHelper::info_tooltip('prli-prettybar-target-url-char-limit',
     766                        esc_html__('Pretty Bar Target URL Char Limit', 'pretty-link'),
     767                        sprintf(
     768                          // translators: %1$s: open code tag, %2$s: close code tag
     769                          esc_html__('If you link to a lot of large Target URLs you may want to adjust this value. It is recommended that you keep this value to %1$s40%2$s or below so the Pretty Bar\'s format looks good across different browsers and URL sizes', 'pretty-link'),
     770                          '<code>',
     771                          '</code>'
     772                        ));
     773                      ?>
     774                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-prettybar-target-url-char-limit'); ?>
     775                    </label>
     776                  </th>
     777                  <td>
     778                    <input type="text" size="4" disabled />
     779                  </td>
     780                </tr>
     781                <tr valign="top" class="prli-pro-only">
     782                  <th scope="row">
     783                    <label>
     784                      <?php esc_html_e('Show Title', 'pretty-link'); ?>
     785                      <?php PrliAppHelper::info_tooltip('prli-prettybar-show-title',
     786                        esc_html__('Pretty Bar Show Title', 'pretty-link'),
     787                        esc_html__('Make sure this is checked if you want the title of your blog (and link) to show up on the Pretty Bar.', 'pretty-link'));
     788                      ?>
     789                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-prettybar-show-title'); ?>
     790                    </label>
     791                  </th>
     792                  <td>
     793                    <input type="checkbox" disabled />
     794                  </td>
     795                </tr>
     796                <tr valign="top" class="prli-pro-only">
     797                  <th scope="row">
     798                    <label>
     799                      <?php esc_html_e('Show Description', 'pretty-link'); ?>
     800                      <?php PrliAppHelper::info_tooltip('prli-prettybar-show-description',
     801                        esc_html__('Pretty Bar Show Description', 'pretty-link'),
     802                        esc_html__('Make sure this is checked if you want your site description to show up on the Pretty Bar.', 'pretty-link'));
     803                      ?>
     804                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-prettybar-show-description'); ?>
     805                    </label>
     806                  </th>
     807                  <td>
     808                    <input type="checkbox" disabled />
     809                  </td>
     810                </tr>
     811                <tr valign="top" class="prli-pro-only">
     812                  <th scope="row">
     813                    <label>
     814                      <?php esc_html_e('Show Share Links', 'pretty-link'); ?>
     815                      <?php PrliAppHelper::info_tooltip('prli-prettybar-show-share-links',
     816                        esc_html__('Pretty Bar Show Share Links', 'pretty-link'),
     817                        esc_html__('Make sure this is checked if you want "share links" to show up on the Pretty Bar.', 'pretty-link'));
     818                      ?>
     819                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-prettybar-show-share-links'); ?>
     820                    </label>
     821                  </th>
     822                  <td>
     823                    <input type="checkbox" disabled />
     824                  </td>
     825                </tr>
     826                <tr valign="top" class="prli-pro-only">
     827                  <th scope="row">
     828                    <label>
     829                      <?php esc_html_e('Show Target URL', 'pretty-link'); ?>
     830                      <?php PrliAppHelper::info_tooltip('prli-prettybar-show-target-url-links',
     831                        esc_html__('Pretty Bar Show Target URL Links', 'pretty-link'),
     832                        esc_html__('Make sure this is checked if you want a link displaying the Target URL to show up on the Pretty Bar.', 'pretty-link'));
     833                      ?>
     834                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-prettybar-show-target-url'); ?>
     835                    </label>
     836                  </th>
     837                  <td>
     838                    <input type="checkbox" disabled />
     839                  </td>
     840                </tr>
     841                <tr valign="top" class="prli-pro-only">
     842                  <th scope="row">
     843                    <label>
     844                      <?php esc_html_e('Hide Attribution Link', 'pretty-link'); ?>
     845                      <?php PrliAppHelper::info_tooltip('prli-prettybar-hide-attrib-link',
     846                        esc_html__('Hide Attribution Link', 'pretty-link'),
     847                        sprintf(
     848                          // translators: %1$s: br tag, %2$s: open strong tag, %3$s close strong tag, %4$s open em tag, %5$s close em tag, %6$s open link tag, %7$s close link tag
     849                          esc_html__('Check this to hide the pretty link attribution link on the pretty bar.%1$s%1$s%2$sWait, before you do this, you might want to leave this un-checked and set the alternate URL of this link to your %4$sPretty Links Pro%5$s %6$sAffiliate URL%7$s to earn a few bucks while you are at it.%3$s', 'pretty-link'),
     850                          '<br>',
     851                          '<strong>',
     852                          '</strong>',
     853                          '<em>',
     854                          '</em>',
     855                          '<a href="https://prettylinks.com/plp/options/aff-attribution">',
     856                          '</a>'
     857                        ));
     858                      ?>
     859                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-prettybar-hide-attrib-link'); ?>
     860                    </label>
     861                  </th>
     862                  <td>
     863                    <input type="checkbox" class="prli-toggle-checkbox" disabled />
     864                  </td>
     865                </tr>
     866                </tbody>
     867              </table>
     868
     869              <div class="prli-sub-box prettybar-attrib-url">
     870                <div class="prli-arrow prli-gray prli-up prli-sub-box-arrow"> </div>
     871                <table class="form-table">
     872                  <tbody>
     873                  <tr valign="top" class="prli-pro-only">
     874                    <th scope="row">
     875                      <label>
     876                        <?php esc_html_e('Attribution URL', 'pretty-link'); ?>
     877                        <?php PrliAppHelper::info_tooltip('prli-prettybar-attribution-url',
     878                          esc_html__('Alternate Pretty Bar Attribution URL', 'pretty-link'),
     879                          sprintf(
     880                            // translators: %1$s open em tag, %2$s close em tag, %3$s open link tag, %4$s close link tag
     881                            esc_html__('If set, this will replace the Pretty Bars attribution URL. This is a very good place to put your %1$sPretty Links Pro%2$s %3$sAffiliate Link%4$s.', 'pretty-link'),
     882                            '<em>',
     883                            '</em>',
     884                            '<a href="https://prettylinks.com/plp/options/aff-attribution-2">',
     885                            '</a>'
     886                          ));
     887                        ?>
     888                        <?php echo PrliAppHelper::pro_only_feature_indicator('option-prettybar-attrib-url'); ?>
     889                      </label>
     890                    </th>
     891                    <td>
     892                      <input type="text" class="regular-text" disabled />
     893                    </td>
     894                  </tr>
     895                  </tbody>
     896                </table>
     897              </div>
     898            </div>
     899
     900            <div class="prli-page" id="social">
     901              <div class="prli-page-title"><?php esc_html_e('Social Buttons Options', 'pretty-link'); ?></div>
     902              <label class="prli-label prli-pro-only">
     903                <?php esc_html_e('Buttons', 'pretty-link'); ?>
     904                <?php PrliAppHelper::info_tooltip('prli-social-buttons',
     905                  esc_html__('Social Buttons', 'pretty-link'),
     906                  sprintf(
     907                    // translators: %1$s: br tag, %2$s open code tag, %3$s close code tag
     908                    esc_html__('Select which buttons you want to be visible on the Social Buttons Bar.%1$s%1$s%2$sNote:%3$s In order for the Social Buttons Bar to be visible on Pages and or Posts, you must first enable it in the "Page &amp; Post Options" section above.', 'pretty-link'),
     909                    '<br>',
     910                    '<code>',
     911                    '</code>'
     912                  ));
     913                ?>
     914                <?php echo PrliAppHelper::pro_only_feature_indicator('option-social-buttons'); ?>
     915              </label>
     916              <ul class="prli-social-button-checkboxes">
     917                <?php foreach(array('facebook', 'twitter', 'gplus', 'pinterest', 'linkedin', 'reddit', 'stumbleupon', 'digg', 'email') as $b) : ?>
     918                  <li class="pl-social-<?php echo esc_attr($b); ?>-button">
     919                    <input type="checkbox" disabled />
     920                    <i class="pl-icon-<?php echo esc_attr($b); ?>"> </i>
     921                  </li>
     922                <?php endforeach; ?>
     923              </ul>
     924              <br/>
     925              <table class="form-table">
     926                <tbody>
     927                <tr valign="top" class="prli-pro-only">
     928                  <th scope="row">
     929                    <label>
     930                      <?php esc_html_e('Buttons Placement', 'pretty-link'); ?>
     931                      <?php PrliAppHelper::info_tooltip('prli-social-buttons-placement',
     932                        esc_html__('Social Buttons Placement', 'pretty-link'),
     933                        sprintf(
     934                          // translators: %1$s: br tag, %2$s open code tag, %3$s close code tag
     935                          esc_html__('This determines where your Social Buttons Placement should appear in relation to content on Pages and/or Posts.%1$s%1$s%2$sNote:%3$s If you want this bar to appear then you must enable it in the "Auto-Create Links" section above.', 'pretty-link'),
     936                          '<br>',
     937                          '<code>',
     938                          '</code>'
     939                        ));
     940                      ?>
     941                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-social-buttons-placement'); ?>
     942                    </label>
     943                  </th>
     944                  <td>
     945                    <input type="radio" value="top" disabled /><span class="prli-radio-text"><?php esc_html_e('Top', 'pretty-link'); ?></span><br/><br/>
     946                    <input type="radio" value="bottom" checked disabled /><span class="prli-radio-text"><?php esc_html_e('Bottom', 'pretty-link'); ?></span><br/><br/>
     947                    <input type="radio" value="top-and-bottom" disabled /><span class="prli-radio-text"><?php esc_html_e('Top and Bottom', 'pretty-link'); ?></span><br/><br/>
     948                    <input type="radio" value="none" disabled /><span class="prli-radio-text"><?php esc_html_e('None', 'pretty-link'); ?></span>
     949                    <?php PrliAppHelper::info_tooltip('prli-social-buttons-placement-none',
     950                      esc_html__('Social Buttons Manual Placement', 'pretty-link'),
     951                      sprintf(
     952                        // translators: %1$s: example shortcode, %2$s: example template tag
     953                        esc_html__('If you select none, you can still show your Social Buttons by manually adding the %1$s shortcode to your blog posts or %2$s template tag to your WordPress Theme.', 'pretty-link'),
     954                        '<code>[social_buttons_bar]</code>',
     955                        '<code>&lt;?php the_social_buttons_bar(); ?&gt;</code>'
     956                      ));
     957                    ?>
     958                  </td>
     959                </tr>
     960                </tbody>
     961              </table>
     962
     963            </div>
     964
     965            <div class="prli-page" id="public-links">
     966              <div class="prli-page-title"><?php esc_html_e('Public Links Creation Options', 'pretty-link'); ?></div>
     967              <table class="form-table">
     968                <tbody>
     969                <tr valign="top" class="prli-pro-only">
     970                  <th scope="row">
     971                    <label>
     972                      <?php esc_html_e('Enable Public Links', 'pretty-link'); ?>
     973                      <?php PrliAppHelper::info_tooltip('prli-enable-public-link-creation',
     974                        esc_html__('Enable Public Link Creation on this Site', 'pretty-link'),
     975                        sprintf(
     976                          esc_html__('This option will give you the ability to turn your website into a link shortening service for your users. Once selected, you can enable the Pretty Links Pro Sidebar Widget or just display the link creation form with the %s shortcode in any post or page on your website.', 'pretty-link'),
     977                          '<code>[prli_create_form]</code>'
     978                        ));
     979                      ?>
     980                      <?php echo PrliAppHelper::pro_only_feature_indicator('option-enable-public-link-creation'); ?>
     981                    </label>
     982                  </th>
     983                  <td>
     984                    <input class="prli-toggle-checkbox" type="checkbox" disabled />
     985                  </td>
     986                </tr>
     987                </tbody>
     988              </table>
     989            </div>
     990
     991          <?php endif; ?>
     992
    188993          <?php do_action('prli_admin_options_pages'); ?>
    189994        </td>
     
    192997
    193998    <p class="submit">
    194       <input type="submit" name="submit" class="button button-primary" value="<?php _e('Update', 'pretty-link') ?>" />
     999      <input type="submit" name="submit" class="button button-primary" value="<?php esc_attr_e('Update', 'pretty-link') ?>" />
    1951000    </p>
    1961001
  • pretty-link/trunk/app/views/shared/errors.php

    r1572224 r2124183  
    1010    {
    1111      ?>
    12       <li><strong><?php _e('ERROR', 'pretty-link'); ?></strong>: <?php echo esc_html($error); ?></li>
     12      <li><strong><?php esc_html_e('ERROR', 'pretty-link'); ?></strong>: <?php echo esc_html($error); ?></li>
    1313      <?php
    1414    }
  • pretty-link/trunk/app/views/shared/link-table-nav.php

    r1592844 r2124183  
    22
    33$curr_size  = (isset($_REQUEST['size']))?(int)$_REQUEST['size']:10;
    4 $curr_url   = esc_html($_REQUEST['page'].$page_params);
     4$curr_url   = sanitize_text_field($_REQUEST['page']) . $page_params;
    55$group      = (isset($_REQUEST['group']))?(int)$_REQUEST['group']:'';
    66$sort       = (isset($_REQUEST['sort']))?sanitize_text_field($_REQUEST['sort']):'';
     
    1111if($page_count > 1) {
    1212    ?>
    13   <div class="tablenav"<?php echo (isset($navstyle)?" style=\"$navstyle\"":''); ?>>
    14     <div class='tablenav-pages'>
     13  <div class="tablenav"<?php echo (isset($navstyle)?' style="'.esc_attr($navstyle).'"':''); ?>>
     14    <div class="tablenav-pages">
    1515      <span class="displaying-num">
    16         <?php
    17           _e('Displaying', 'pretty-link');
    18           echo " $page_first_record&#8211;$page_last_record of $record_count";
    19         ?>
     16        <?php echo esc_html(sprintf(__('Displaying %1$s&#8211;%2$s of %3$s', 'pretty-link'), $page_first_record, $page_last_record, $record_count)); ?>
    2017      </span>
    2118
     
    2421      if($current_page > 1) {
    2522        ?>
    26         <a class='prev page-numbers' href='?page=<?php echo $curr_url; ?>&paged=<?php echo ($current_page-1); ?>&size=<?php echo $curr_size; ?>'>&laquo;</a>
     23        <a class="prev page-numbers" href="<?php echo esc_url('?page=' . $curr_url . '&paged=' . ($current_page-1) . '&size=' . $curr_size); ?>">&laquo;</a>
    2724        <?php
    2825      }
     
    3128      if($current_page==1) {
    3229        ?>
    33         <a class='page-numbers disabled' href="#">1</a>
     30        <a class="page-numbers disabled" href="#">1</a>
    3431        <?php
    3532      }
    3633      else {
    3734        ?>
    38         <a class='page-numbers' href='?page=<?php echo $curr_url; ?>&paged=1&size=<?php echo $curr_size; ?>'>1</a>
     35        <a class="page-numbers" href="<?php echo esc_url('?page=' . $curr_url . '&paged=1&size=' . $curr_size); ?>">1</a>
    3936        <?php
    4037      }
     
    4340      if($current_page >= 5) {
    4441        ?>
    45         <span class='page-numbers dots'>...</span>
     42        <span class="page-numbers dots">...</span>
    4643        <?php
    4744      }
     
    5350        if($current_page==$i) {
    5451          ?>
    55           <a class='page-numbers disabled' href="#"><?php echo $i; ?></a>
     52          <a class="page-numbers disabled" href="#"><?php echo esc_html($i); ?></a>
    5653          <?php
    5754        }
    5855        else {
    5956          ?>
    60           <a class='page-numbers' href='?page=<?php echo $curr_url; ?>&paged=<?php echo $i; ?>&size=<?php echo $curr_size; ?>'><?php echo $i; ?></a>
     57          <a class="page-numbers" href="<?php echo esc_url('?page=' . $curr_url . '&paged=' . $i . '&size=' . $curr_size); ?>"><?php echo esc_html($i); ?></a>
    6158          <?php
    6259        }
     
    6663      if($current_page < ($page_count - 3)) {
    6764        ?>
    68         <span class='page-numbers dots'>...</span>
     65        <span class="page-numbers dots">...</span>
    6966        <?php
    7067      }
     
    7370      if($current_page == $page_count) {
    7471        ?>
    75         <a class='page-numbers disabled' href="#"><?php echo $page_count; ?></a>
     72        <a class="page-numbers disabled" href="#"><?php echo esc_html($page_count); ?></a>
    7673        <?php
    7774      }
    7875      else {
    7976        ?>
    80         <a class='page-numbers' href='?page=<?php echo $curr_url; ?>&paged=<?php echo $page_count; ?>&size=<?php echo $curr_size; ?>'><?php echo $page_count; ?></a>
     77        <a class="page-numbers" href="<?php echo esc_url('?page=' . $curr_url . '&paged=' . $page_count . '&size=' . $curr_size); ?>"><?php echo esc_html($page_count); ?></a>
    8178        <?php
    8279      }
     
    8582      if($current_page < $page_count) {
    8683        ?>
    87         <a class='next page-numbers' href='?page=<?php echo $curr_url; ?>&paged=<?php echo ($current_page + 1); ?>&size=<?php echo $curr_size; ?>'>&raquo;</a>
     84        <a class="next page-numbers" href="<?php echo esc_url('?page=' . $curr_url . '&paged=' . ($current_page + 1) . '&size=' . $curr_size); ?>">&raquo;</a>
    8885        <?php
    8986      }
    9087      ?>
    91       <select class="prli-page-size" data-url="<?php echo admin_url("admin.php?page=pretty-link&paged=1&sort={$sort}&sdir={$sdir}&group={$group}&search={$search}&size="); ?>">
     88      <select class="prli-page-size" data-url="<?php echo esc_url(admin_url("admin.php?page=pretty-link&paged=1&sort={$sort}&sdir={$sdir}&group={$group}&search={$search}&size=")); ?>">
    9289        <option value="10" selected="selected">10</option>
    9390        <option value="25" <?php if($curr_size == 25) echo 'selected="selected"'; ?>>25</option>
     
    105102  ?>
    106103  <div class="tablenav"<?php echo (isset($navstyle)?" style=\"$navstyle\"":''); ?>>
    107     <div class='tablenav-pages'>
    108       <span class="displaying-num"><?php _e('Displaying', 'pretty-link'); ?> <?php echo "$page_first_record&#8211;$page_last_record of $record_count"; ?></span>
    109       <select class="prli-page-size" data-url="<?php echo admin_url("admin.php?page=pretty-link&paged=1&sort={$sort}&sdir={$sdir}&group={$group}&search={$search}&size="); ?>">
     104    <div class="tablenav-pages">
     105      <span class="displaying-num">
     106        <?php echo esc_html(sprintf(__('Displaying %1$s&#8211;%2$s of %3$s', 'pretty-link'), $page_first_record, $page_last_record, $record_count)); ?>
     107      </span>
     108      <select class="prli-page-size" data-url="<?php echo esc_url(admin_url("admin.php?page=pretty-link&paged=1&sort={$sort}&sdir={$sdir}&group={$group}&search={$search}&size=")); ?>">
    110109        <option value="10" selected="selected">10</option>
    111110        <option value="25" <?php if($curr_size == 25) echo 'selected="selected"'; ?>>25</option>
  • pretty-link/trunk/app/views/shared/nav.php

    r1722928 r2124183  
    44
    55if($plp_update->is_installed()) {
    6   $support_link = "&nbsp;|&nbsp;<a href=\"https://prettylinks.com/pl/nav/um\" target=\"_blank\">" . __('Pro Manual', 'pretty-link') . '</a>';
     6  $support_link = "&nbsp;|&nbsp;<a href=\"https://prettylinks.com/pl/nav/um\" target=\"_blank\">" . esc_html__('Pro Manual', 'pretty-link') . '</a>';
    77}
    88else {
    9   $support_link = "&nbsp;|&nbsp;<a href=\"https://prettylinks.com/pl/nav/upgrade\" target=\"_blank\">" . __('Upgrade to Pro', 'pretty-link') . '</a>';
     9  $support_link = "&nbsp;|&nbsp;<a href=\"https://prettylinks.com/pl/nav/upgrade\" target=\"_blank\">" . esc_html__('Upgrade to Pro', 'pretty-link') . '</a>';
    1010}
    1111
    1212?>
    1313<p class="prli-shared-header">
    14   <span><?php _e('Connect:', 'pretty-link'); ?></span>
     14  <span><?php esc_html_e('Connect:', 'pretty-link'); ?></span>
    1515  <a href="http://twitter.com/blairwilli"><img src="<?php echo PRLI_IMAGES_URL; ?>/twitter_32.png" class="prli-icon" /></a>
    1616  <a href="http://www.facebook.com/pages/Pretty-Link/283252860401"><img src="<?php echo PRLI_IMAGES_URL; ?>/facebook_32.png" class="prli-icon" /></a>
    1717  <br/>
    18   <?php _e('Get Help:', 'pretty-link'); ?>
    19   <a href="http://blairwilliams.com/xba" target="_blank"><?php _e('Tutorials', 'pretty-link'); ?></a>
     18  <?php esc_html_e('Get Help:', 'pretty-link'); ?>
     19  <a href="http://blairwilliams.com/xba" target="_blank"><?php esc_html_e('Tutorials', 'pretty-link'); ?></a>
    2020  <?php echo $support_link; ?>
    2121</p>
  • pretty-link/trunk/app/views/shared/public_link.php

    r1925455 r2124183  
    11<?php if(!defined('ABSPATH')) die('You are not allowed to call this page directly.');
    22
    3 // Escape all variables used on this page
    4 $pretty_link_id   = esc_html( $pretty_link_id );
    5 $target_url_raw   = esc_url_raw( $target_url, array('http','https') );
    6 $target_url       = esc_url( $target_url, array('http','https') );
    7 $pretty_link_raw  = esc_url_raw( $pretty_link, array('http','https') );
    8 $pretty_link      = esc_url( $pretty_link, array('http','https') );
    9 $prli_blogurl_raw = esc_url_raw( $prli_blogurl, array('http','https') );
    10 $prli_blogurl     = esc_url( $prli_blogurl, array('http','https') );
    11 $target_url_title = esc_html( $target_url_title );
    12 
     3global $plp_update;
    134$target_url_display = substr($target_url,0,50) . ((strlen($target_url)>50)?"...":'');
    145
    15 global $plp_update;
     6wp_register_style('tooltipster', PRLI_CSS_URL . '/tooltipster.bundle.min.css', array(), '4.2.6');
     7wp_register_style('tooltipster-sidetip', PRLI_CSS_URL . '/tooltipster-sideTip-borderless.min.css', array('tooltipster'), '4.2.6');
     8wp_register_style('prli-animation', PRLI_VENDOR_LIB_URL.'/fontello/css/animation.css', array(), PRLI_VERSION);
     9wp_register_style('prli-icons', PRLI_VENDOR_LIB_URL.'/fontello/css/pretty-link.css', array(), PRLI_VERSION);
     10wp_register_style('prli-social-buttons', PRLI_CSS_URL . '/social_buttons.css', array(), PRLI_VERSION);
     11wp_register_style('prli-public-link', PRLI_CSS_URL . '/public_link.css', array('tooltipster', 'tooltipster-sidetip', 'prli-animation', 'prli-icons', 'prli-social-buttons'), PRLI_VERSION);
    1612
     13wp_register_script('clipboard-js', PRLI_JS_URL . '/clipboard.min.js', array(), '2.0.0');
     14wp_register_script('tooltipster', PRLI_JS_URL . '/tooltipster.bundle.min.js', array('jquery'), '4.2.6');
     15wp_register_script('prli-admin-link-list', PRLI_JS_URL . '/admin_link_list.js', array('jquery', 'clipboard-js', 'tooltipster'), PRLI_VERSION);
    1716?>
    1817<!DOCTYPE html>
     
    2120    <meta charset="UTF-8">
    2221
    23     <title><?php _e('Here is your Pretty Link', 'pretty-link'); ?></title>
     22    <title><?php esc_html_e('Here is your Pretty Link', 'pretty-link'); ?></title>
    2423
    25     <link rel="stylesheet" href="<?php echo PRLI_CSS_URL . '/tooltipster.bundle.min.css'; ?>" type="text/css" media="all" />
    26     <link rel="stylesheet" href="<?php echo PRLI_CSS_URL . '/tooltipster-sideTip-borderless.min.css'; ?>" type="text/css" media="all" />
    27     <link rel="stylesheet" href="<?php echo PRLI_VENDOR_LIB_URL.'/fontello/css/animation.css'; ?>" type="text/css" media="all" />
    28     <link rel="stylesheet" href="<?php echo PRLI_VENDOR_LIB_URL.'/fontello/css/pretty-link.css'; ?>" type="text/css" media="all" />
    29     <link rel="stylesheet" href="<?php echo PRLI_CSS_URL . '/social_buttons.css'; ?>" type="text/css" media="all" />
    30     <link rel="stylesheet" href="<?php echo PRLI_CSS_URL . '/public_link.css'; ?>" type="text/css" media="all" />
    31 
    32     <script type="text/javascript" src="<?php echo site_url('/wp-includes/js/jquery/jquery.js'); ?>"></script>
    33     <script type="text/javascript" src="<?php echo PRLI_JS_URL . '/clipboard.min.js'; ?>"></script>
    34     <script type="text/javascript" src="<?php echo PRLI_JS_URL . '/tooltipster.bundle.min.js'; ?>"></script>
    35     <script type="text/javascript" src="<?php echo PRLI_JS_URL . '/admin_link_list.js'; ?>"></script>
     24    <?php wp_print_styles('prli-public-link'); ?>
    3625  </head>
    3726  <body>
     
    3928
    4029    <div class="prli-public-wrap">
    41       <div class="prli-public-label"><em><?php _e('Here\'s your pretty link for', 'pretty-link'); ?></em></div>
    42       <div class="prli-public-name"><?php echo $target_url_title; ?></div>
    43       <div class="prli-public-target">(<span title="<?php echo $target_url; ?>"><?php echo $target_url_display; ?></span>)</div>
     30      <div class="prli-public-label"><em><?php esc_html_e('Here\'s your pretty link for', 'pretty-link'); ?></em></div>
     31      <div class="prli-public-name"><?php echo esc_html($target_url_title); ?></div>
     32      <div class="prli-public-target">(<span title="<?php echo esc_url($target_url); ?>"><?php echo esc_html($target_url_display); ?></span>)</div>
    4433
    4534      <div class="prli-public-pretty-link">
    46         <span class="prli-public-pretty-link-display"><a href="<?php echo $pretty_link_raw; ?>"><?php echo $pretty_link; ?></a></span>
    47         <span class="prli-clipboardjs prli-public-pretty-link-copy"><i class="pl-icon-clipboard pl-list-icon icon-clipboardjs" data-clipboard-text="<?php echo $pretty_link_raw; ?>"></i></span>
     35        <span class="prli-public-pretty-link-display"><a href="<?php echo esc_url($pretty_link); ?>"><?php echo esc_url($pretty_link); ?></a></span>
     36        <span class="prli-clipboardjs prli-public-pretty-link-copy"><i class="pl-icon-clipboard pl-list-icon icon-clipboardjs" data-clipboard-text="<?php echo esc_url($pretty_link); ?>"></i></span>
    4837      </div>
    4938    </div>
    5039
    5140    <?php if( $plp_update->is_installed() ): ?>
    52       <div class="prli-public-social"><?php _e('send this link to:', 'pretty-link'); ?></div>
     41      <div class="prli-public-social"><?php esc_html_e('send this link to:', 'pretty-link'); ?></div>
    5342      <?php echo PlpSocialButtonsHelper::get_social_buttons_bar($pretty_link_id); ?>
    5443    <?php endif; ?>
    5544
    56     <div class="prli-public-back"><a href="<?php echo $target_url_raw; ?>">&laquo; <?php _e('back', 'pretty-link'); ?></a></div>
     45    <div class="prli-public-back"><a href="<?php echo esc_url($target_url); ?>">&laquo; <?php esc_html_e('back', 'pretty-link'); ?></a></div>
     46
     47    <?php wp_print_scripts('prli-admin-link-list'); ?>
    5748  </body>
    5849</html>
  • pretty-link/trunk/app/views/shared/table-nav.php

    r1572224 r2124183  
    22<?php
    33
    4   $curr_size = isset($_REQUEST['size']) ? $_REQUEST['size'] : 10;
    5   $curr_url = esc_html($_REQUEST['page'].$page_params);
     4  $curr_size = isset($_REQUEST['size']) ? (int) $_REQUEST['size'] : 10;
     5  $curr_url = sanitize_text_field($_REQUEST['page']) . $page_params;
    66
    77  // Only show the pager bar if there is more than 1 page
     
    99  {
    1010      ?>
    11     <div class="tablenav"<?php echo (isset($navstyle)?" style=\"" . esc_html($navstyle) . "\"":''); ?>>
    12       <div class='tablenav-pages'><span class="displaying-num"><?php _e('Displaying', 'pretty-link'); ?> <?php echo esc_html("$page_first_record&#8211;$page_last_record of $record_count"); ?></span>
     11    <div class="tablenav"<?php echo (isset($navstyle)?' style="' . esc_html($navstyle) . '"':''); ?>>
     12      <div class="tablenav-pages">
     13        <span class="displaying-num">
     14          <?php echo esc_html(sprintf(__('Displaying %1$s&#8211;%2$s of %3$s', 'pretty-link'), $page_first_record, $page_last_record, $record_count)); ?>
     15        </span>
    1316
    1417        <?php
     
    1720        {
    1821          ?>
    19           <a class='prev page-numbers' href='?page=<?php echo $curr_url; ?>&paged=<?php print($current_page-1); ?>'>&laquo;</a>
     22          <a class="prev page-numbers" href="<?php echo esc_url('?page=' . $curr_url . '&paged=' . ($current_page-1)); ?>">&laquo;</a>
    2023          <?php
    2124        }
     
    2528        {
    2629          ?>
    27           <a class='page-numbers disabled' href="#">1</a>
     30          <a class="page-numbers disabled" href="#">1</a>
    2831          <?php
    2932        }
     
    3134        {
    3235          ?>
    33           <a class='page-numbers' href='?page=<?php echo $curr_url; ?>&paged=1'>1</a>
     36          <a class="page-numbers" href="<?php echo esc_url('?page=' . $curr_url . '&paged=1'); ?>">1</a>
    3437          <?php
    3538        }
     
    3942        {
    4043          ?>
    41           <span class='page-numbers dots'>...</span>
     44          <span class="page-numbers dots">...</span>
    4245          <?php
    4346        }
     
    5154          {
    5255            ?>
    53             <a class='page-numbers disabled' href="#"><?php echo esc_html($i); ?></a>
     56            <a class="page-numbers disabled" href="#"><?php echo esc_html($i); ?></a>
    5457            <?php
    5558          }
     
    5760          {
    5861            ?>
    59             <a class='page-numbers' href='?page=<?php echo $curr_url; ?>&paged=<?php echo esc_html($i); ?>'><?php echo esc_html($i); ?></a>
     62            <a class="page-numbers" href="<?php echo esc_url('?page=' . $curr_url . '&paged=' . $i); ?>"><?php echo esc_html($i); ?></a>
    6063            <?php
    6164          }
     
    6669        {
    6770          ?>
    68           <span class='page-numbers dots'>...</span>
     71          <span class="page-numbers dots">...</span>
    6972          <?php
    7073        }
     
    7477        {
    7578          ?>
    76           <a class='page-numbers disabled' href="#"><?php echo esc_html($page_count); ?></a>
     79          <a class="page-numbers disabled" href="#"><?php echo esc_html($page_count); ?></a>
    7780          <?php
    7881        }
     
    8083        {
    8184          ?>
    82           <a class='page-numbers' href='?page=<?php echo $curr_url; ?>&paged=<?php echo esc_html($page_count); ?>'><?php echo esc_html($page_count); ?></a>
     85          <a class="page-numbers" href="<?php echo esc_url('?page=' . $curr_url . '&paged=' . $page_count); ?>"><?php echo esc_html($page_count); ?></a>
    8386          <?php
    8487        }
     
    8891        {
    8992          ?>
    90           <a class='next page-numbers' href='?page=<?php echo $curr_url; ?>&paged=<?php print($current_page + 1); ?>'>&raquo;</a>
     93          <a class="next page-numbers" href="<?php echo esc_url('?page=' . $curr_url . '&paged=' . ($current_page + 1)); ?>">&raquo;</a>
    9194          <?php
    9295        }
  • pretty-link/trunk/app/views/shared/tinymce_form_popup.php

    r1683659 r2124183  
    22<html xmlns="http://www.w3.org/1999/xhtml">
    33  <head>
    4     <title><?php _e('Insert Pretty Link', 'pretty-link'); ?></title>
    5     <style type="text/css">
    6       .ui-autocomplete-loading {
    7         background: white url("<?php echo admin_url('images/wpspin_light.gif'); ?>") right center no-repeat;
    8       }
    9       .ui-autocomplete {
    10         max-height: 200px;
    11         overflow-y: auto;
    12         overflow-x: hidden;
    13         width: 510px !important;
    14       }
    15     </style>
    16     <link rel="stylesheet" href="<?php echo PRLI_CSS_URL . '/tinymce_form_popup.css'; ?>" type="text/css" media="all" />
    17     <link rel="stylesheet" href="https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" type="text/css" media="all" />
    18     <script language="javascript" type="text/javascript" src="<?php echo includes_url('/js/jquery/jquery.js'); ?>"></script>
    19     <script language="javascript" type="text/javascript" src="<?php echo includes_url('/js/jquery/ui/core.min.js'); ?>"></script>
    20     <script language="javascript" type="text/javascript" src="<?php echo includes_url('/js/jquery/ui/widget.min.js'); ?>"></script>
    21     <script language="javascript" type="text/javascript" src="<?php echo includes_url('/js/jquery/ui/position.min.js'); ?>"></script>
    22     <script language="javascript" type="text/javascript" src="<?php echo includes_url('/js/jquery/ui/menu.min.js'); ?>"></script>
    23     <script language="javascript" type="text/javascript" src="<?php echo includes_url('/js/jquery/ui/autocomplete.min.js'); ?>"></script>
    24     <script language="javascript" type="text/javascript" src="<?php echo includes_url('/js/jquery/ui/accordion.min.js'); ?>"></script>
    25     <script type="text/javascript">
    26       //Setting up some JS variables for the tinymce_form_popup.js file
    27       //Doing this here becuase I have access to PHP
    28       var prli_selected_text  = ''; //Updated on PrliPopUpHandler.init
    29       var home_url            = '<?php echo $home_url; ?>';
    30       var default_redirect    = '<?php echo $default_redirect; ?>';
    31       var default_nofollow    = '<?php echo $default_nofollow; ?>';
    32       var default_tracking    = '<?php echo $default_tracking; ?>';
    33       var ajaxurl             = '<?php echo admin_url('admin-ajax.php'); ?>';
    34     </script>
    35     <script language="javascript" type="text/javascript" src="<?php echo PRLI_JS_URL . '/tinymce_form_popup.js'; ?>"></script>
     4    <title><?php esc_html_e('Insert Pretty Link', 'pretty-link'); ?></title>
     5    <?php wp_print_styles('prli-tinymce-popup-form'); ?>
    366  </head>
    377  <body>
    388    <div id="errors"></div>
    399    <div id="prli_accordion">
    40       <h3><?php _e('Create New Pretty Link', 'pretty-link'); ?></h3>
     10      <h3><?php esc_html_e('Create New Pretty Link', 'pretty-link'); ?></h3>
    4111      <div class="prlitinymce-options">
    4212        <div class="prlitinymce-options-row">
    43           <label><?php _e('Target URL', 'pretty-link'); ?>:</label>
     13          <label><?php esc_html_e('Target URL', 'pretty-link'); ?>:</label>
    4414          <input type="text" name="prli_insert_link_target" id="prli_insert_link_target" value="" />
    4515        </div>
    4616        <div class="prlitinymce-options-row">
    47           <label><?php _e('Slug', 'pretty-link'); ?>:</label>
    48           <input type="text" name="prli_insert_link_slug" id="prli_insert_link_slug" value="<?php echo $random_slug; ?>" />
    49           <span id="prlitinymce-thinking" class="prlitinymce-hidden"><img src="<?php echo admin_url('images/wpspin_light.gif'); ?>" /></span>
    50           <span id="prlitinymce-good-slug" class="prlitinymce-hidden"><small><?php _e('valid', 'pretty-link'); ?></small></span>
    51           <span id="prlitinymce-bad-slug" class="prlitinymce-hidden"><small><?php _e('invalid', 'pretty-link'); ?></small></span>
     17          <label><?php esc_html_e('Slug', 'pretty-link'); ?>:</label>
     18          <input type="text" name="prli_insert_link_slug" id="prli_insert_link_slug" value="<?php echo esc_attr($random_slug); ?>" />
     19          <span id="prlitinymce-thinking" class="prlitinymce-hidden"><img src="<?php echo esc_url(admin_url('images/wpspin_light.gif')); ?>" /></span>
     20          <span id="prlitinymce-good-slug" class="prlitinymce-hidden"><small><?php esc_html_e('valid', 'pretty-link'); ?></small></span>
     21          <span id="prlitinymce-bad-slug" class="prlitinymce-hidden"><small><?php esc_html_e('invalid', 'pretty-link'); ?></small></span>
    5222          <input type="hidden" name="prli_is_valid_slug" id="prli_is_valid_slug" value="good" />
    5323        </div>
    5424        <div class="prlitinymce-options-row">
    55           <label><?php _e('Link Text', 'pretty-link'); ?>:</label>
     25          <label><?php esc_html_e('Link Text', 'pretty-link'); ?>:</label>
    5626          <input type="text" name="prli_insert_link_link_text" id="prli_insert_link_link_text" value="" />
    5727        </div>
    5828        <div class="prlitinymce-options-row">
    59           <label><?php _e('Redirect Type', 'pretty-link'); ?>:</label>
     29          <label><?php esc_html_e('Redirect Type', 'pretty-link'); ?>:</label>
    6030          <select name="prli_insert_link_redirect" id="prli_insert_link_redirect">
    61             <option value="default"><?php _e('Default', 'pretty-link'); ?></option>
    62             <option value="307"><?php _e('307 (Temporary)', 'pretty-link'); ?></option>
    63             <option value="302"><?php _e('302 (Temporary)', 'pretty-link'); ?></option>
    64             <option value="301"><?php _e('301 (Permanent)', 'pretty-link'); ?></option>
     31            <option value="default"><?php esc_html_e('Default', 'pretty-link'); ?></option>
     32            <option value="307"><?php esc_html_e('307 (Temporary)', 'pretty-link'); ?></option>
     33            <option value="302"><?php esc_html_e('302 (Temporary)', 'pretty-link'); ?></option>
     34            <option value="301"><?php esc_html_e('301 (Permanent)', 'pretty-link'); ?></option>
    6535            <?php global $plp_update; ?>
    6636            <?php if($plp_update->is_installed()): ?>
    67               <option value="prettybar"><?php _e('Pretty Bar', 'pretty-link'); ?></option>
    68               <option value="cloak"><?php _e('Cloaked', 'pretty-link'); ?></option>
    69               <option value="pixel"><?php _e('Pixel', 'pretty-link'); ?></option>
    70               <option value="metarefresh"><?php _e('Meta Refresh', 'pretty-link'); ?></option>
    71               <option value="javascript"><?php _e('Javascript', 'pretty-link'); ?></option>
     37              <option value="prettybar"><?php esc_html_e('Pretty Bar', 'pretty-link'); ?></option>
     38              <option value="cloak"><?php esc_html_e('Cloaked', 'pretty-link'); ?></option>
     39              <option value="pixel"><?php esc_html_e('Pixel', 'pretty-link'); ?></option>
     40              <option value="metarefresh"><?php esc_html_e('Meta Refresh', 'pretty-link'); ?></option>
     41              <option value="javascript"><?php esc_html_e('Javascript', 'pretty-link'); ?></option>
    7242            <?php endif; ?>
    7343          </select>
    7444        </div>
    7545        <div class="prlitinymce-options-row">
    76           <label><?php _e('Nofollow', 'pretty-link'); ?>:</label>
     46          <label><?php esc_html_e('Nofollow', 'pretty-link'); ?>:</label>
    7747          <select name="prli_insert_link_nofollow" id="prli_insert_link_nofollow">
    78             <option value="default"><?php _e('Default', 'pretty-link'); ?></option>
    79             <option value="enabled"><?php _e('Enabled', 'pretty-link'); ?></option>
    80             <option value="disabled"><?php _e('Disabled', 'pretty-link'); ?></option>
     48            <option value="default"><?php esc_html_e('Default', 'pretty-link'); ?></option>
     49            <option value="enabled"><?php esc_html_e('Enabled', 'pretty-link'); ?></option>
     50            <option value="disabled"><?php esc_html_e('Disabled', 'pretty-link'); ?></option>
    8151          </select>
    8252        </div>
    8353        <div class="prlitinymce-options-row">
    84           <label><?php _e('Tracking', 'pretty-link'); ?>:</label>
     54          <label><?php esc_html_e('Tracking', 'pretty-link'); ?>:</label>
    8555          <select name="prli_insert_link_tracking" id="prli_insert_link_tracking">
    86             <option value="default"><?php _e('Default', 'pretty-link'); ?></option>
    87             <option value="enabled"><?php _e('Enabled', 'pretty-link'); ?></option>
    88             <option value="disabled"><?php _e('Disabled', 'pretty-link'); ?></option>
     56            <option value="default"><?php esc_html_e('Default', 'pretty-link'); ?></option>
     57            <option value="enabled"><?php esc_html_e('Enabled', 'pretty-link'); ?></option>
     58            <option value="disabled"><?php esc_html_e('Disabled', 'pretty-link'); ?></option>
    8959          </select>
    9060        </div>
    9161        <div class="prlitinymce-options-row">
    9262          <label>&nbsp;</label>
    93           <input type="checkbox" name="prli_insert_link_new_tab" id="prli_insert_link_new_tab" /> <?php _e('Open this Pretty Link in a new window/tab', 'pretty-link'); ?>
     63          <input type="checkbox" name="prli_insert_link_new_tab" id="prli_insert_link_new_tab" /> <?php esc_html_e('Open this Pretty Link in a new window/tab', 'pretty-link'); ?>
    9464        </div>
    9565        <div class="prlitinymce-options-row" id="prlitinymce-insert">
    96           <a href="javascript:PrliPopUpHandler.insert_new()" class="prli_button"><?php _e('Insert New Pretty Link', 'pretty-link'); ?></a>
    97           <span id="insert_loading" class="prlitinymce-hidden"><img src="<?php echo includes_url('/js/thickbox/loadingAnimation.gif'); ?>" width="150" /></span>
     66          <a href="javascript:PrliPopUpHandler.insert_new()" class="prli_button"><?php esc_html_e('Insert New Pretty Link', 'pretty-link'); ?></a>
     67          <span id="insert_loading" class="prlitinymce-hidden"><img src="<?php echo esc_url(includes_url('/js/thickbox/loadingAnimation.gif')); ?>" width="150" /></span>
    9868        </div>
    9969      </div>
    100       <h3><?php _e("Use Existing Pretty Link", 'pretty-link'); ?></h3>
     70      <h3><?php esc_html_e("Use Existing Pretty Link", 'pretty-link'); ?></h3>
    10171      <div id="prlitinymce-search-area" class="prlitinymce-options">
    102         <input type="text" name="prli_search_box" id="prli_search_box" value="" placeholder="<?php _e('Search by Slug, Title, or Target URL...', 'pretty-link'); ?>" />
     72        <input type="text" name="prli_search_box" id="prli_search_box" value="" placeholder="<?php esc_attr_e('Search by Slug, Title, or Target URL...', 'pretty-link'); ?>" />
    10373        <div class="prlitinymce-options-row">
    104           <label class="lefty"><?php _e('Target URL', 'pretty-link'); ?>:</label>
    105           <small id="existing_link_target" class="righty"><?php _e('None', 'pretty-link'); ?></small>
     74          <label class="lefty"><?php esc_html_e('Target URL', 'pretty-link'); ?>:</label>
     75          <small id="existing_link_target" class="righty"><?php esc_html_e('None', 'pretty-link'); ?></small>
    10676        </div>
    10777        <div class="prlitinymce-options-row">
    108           <label class="lefty"><?php _e('Pretty Link', 'pretty-link'); ?>:</label>
    109           <small id="existing_link_slug" class="righty"><?php _e('None', 'pretty-link'); ?></small>
     78          <label class="lefty"><?php esc_html_e('Pretty Link', 'pretty-link'); ?>:</label>
     79          <small id="existing_link_slug" class="righty"><?php esc_html_e('None', 'pretty-link'); ?></small>
    11080        </div>
    11181        <div class="prlitinymce-options-row">
    112           <label><?php _e('Link Text', 'pretty-link'); ?>:</label>
     82          <label><?php esc_html_e('Link Text', 'pretty-link'); ?>:</label>
    11383          <input type="text" name="existing_link_link_text" id="existing_link_link_text" value="" />
    11484        </div>
    11585        <div class="prlitinymce-options-row">
    11686          <label>&nbsp;</label>
    117           <input type="checkbox" name="existing_link_new_tab" id="existing_link_new_tab" /> <?php _e('Open this Pretty Link in a new window/tab', 'pretty-link'); ?>
     87          <input type="checkbox" name="existing_link_new_tab" id="existing_link_new_tab" /> <?php esc_html_e('Open this Pretty Link in a new window/tab', 'pretty-link'); ?>
    11888        </div>
    11989        <div class="prlitinymce-options-row" id="existing_link_insert">
    12090          <input type="hidden" name="existing_link_nofollow" id="existing_link_nofollow" value="0" />
    121           <a href="javascript:PrliPopUpHandler.insert_existing()" class="prli_button"><?php _e('Insert Existing Pretty Link', 'pretty-link'); ?></a>
     91          <a href="javascript:PrliPopUpHandler.insert_existing()" class="prli_button"><?php esc_html_e('Insert Existing Pretty Link', 'pretty-link'); ?></a>
    12292        </div>
    12393      </div>
    12494    </div>
     95    <?php wp_print_scripts('prli-tinymce-popup-form'); ?>
    12596  </body>
    12697</html>
  • pretty-link/trunk/app/views/shared/title_text.php

    r1572224 r2124183  
    11<?php if(!defined('ABSPATH')) { die('You are not allowed to call this page directly.'); } ?>
    2 <div class="prli_admin_branding"></div>
    32<h1 class="wp-heading-inline" style="margin-bottom:15px;"><?php echo esc_html($page_title); ?></h1>
  • pretty-link/trunk/app/views/tools/form.php

    r1572224 r2124183  
    11<?php if(!defined('ABSPATH')) { die('You are not allowed to call this page directly.'); } ?>
    22<div class="wrap">
    3   <?php echo PrliAppHelper::page_title(__('Tools', 'pretty-link')); ?>
     3  <?php PrliAppHelper::page_title(__('Tools', 'pretty-link')); ?>
    44
    55  <?php if($update_message): ?>
     
    1616      <td class="prli-settings-table-nav">
    1717        <ul class="prli-sidebar-nav">
    18           <li><a data-id="bookmarklet"><?php _e('Bookmarklet', 'pretty-link'); ?></a></li>
    19           <li><a data-id="trim"><?php _e('Trim Clicks', 'pretty-link'); ?></a></li>
     18          <li><a data-id="bookmarklet"><?php esc_html_e('Bookmarklet', 'pretty-link'); ?></a></li>
     19          <li><a data-id="trim"><?php esc_html_e('Trim Clicks', 'pretty-link'); ?></a></li>
    2020          <?php do_action('prli_admin_tools_nav'); ?>
    2121        </ul>
     
    2323      <td class="prli-settings-table-pages">
    2424        <div class="prli-page" id="bookmarklet">
    25           <div class="prli-page-title"><?php _e('Bookmarklet', 'pretty-link'); ?></div>
    26           <strong><a class="button button-primary" href="<?php echo PrliLink::bookmarklet_link(); ?>" style="vertical-align:middle;"><?php _e('Get Pretty Link', 'pretty-link'); ?></a></strong>&nbsp;&nbsp;
     25          <div class="prli-page-title"><?php esc_html_e('Bookmarklet', 'pretty-link'); ?></div>
     26          <strong><a class="button button-primary" href="<?php echo PrliLink::bookmarklet_link(); ?>" style="vertical-align:middle;"><?php esc_html_e('Get Pretty Link', 'pretty-link'); ?></a></strong>&nbsp;&nbsp;
    2727          <?php PrliAppHelper::info_tooltip( 'prli-bookmarklet-instructions',
    28                                              __('Install Pretty Link Bookmarklet', 'pretty-link'),
    29                                              __('Just drag this "Get PrettyLink" link to your toolbar to install the bookmarklet. As you browse the web, you can just click this bookmarklet to create a pretty link from the current url you\'re looking at. <a href="http://blairwilliams.com/pretty-link-bookmarklet/">(more help)</a>', 'pretty-link') );
     28                                             esc_html__('Install Pretty Link Bookmarklet', 'pretty-link'),
     29                                             sprintf(
     30                                               // translators: %1$s: open link tag, %2$s close link tag
     31                                               esc_html__('Just drag this "Get PrettyLink" link to your toolbar to install the bookmarklet. As you browse the web, you can just click this bookmarklet to create a pretty link from the current url you\'re looking at. %1$s(more help)%2$s', 'pretty-link'),
     32                                               '<a href="http://blairwilliams.com/pretty-link-bookmarklet/">',
     33                                               '</a>'
     34                                             ));
    3035          ?>
    31           <br/><br/><a href="javascript:toggle_iphone_instructions()"><strong><?php _e('Show iPhone Bookmarklet Instructions', 'pretty-link'); ?></strong></a>
     36          <br/><br/><a href="javascript:toggle_iphone_instructions()"><strong><?php esc_html_e('Show iPhone Bookmarklet Instructions', 'pretty-link'); ?></strong></a>
    3237          <br/><br/>
    3338          <div class="prli-sub-box iphone_instructions" style="display: none">
    3439            <div class="prli-arrow prli-gray prli-up prli-sub-box-arrow"> </div>
    35             <?php _e('<strong>Note:</strong> iPhone users can install this bookmarklet in their Safari to create Pretty Links with the following steps:', 'pretty-link'); ?><br/>
     40            <?php
     41              printf(
     42                // translators: %1$s: open strong tag, %2$s close strong tag
     43                esc_html__('%1$sNote:%2$s iPhone users can install this bookmarklet in their Safari to create Pretty Links with the following steps:', 'pretty-link'),
     44                '<strong>',
     45                '</strong>'
     46              );
     47            ?><br/>
    3648            <ol>
    37               <li><?php _e('Copy this text:', 'pretty-link'); ?><br/><input type="text" value="<?php echo PrliLink::bookmarklet_link(); ?>" /></li>
    38               <li><?php _e('Tap the + button at the bottom of the screen', 'pretty-link'); ?></li>
    39               <li><?php _e('Choose to share the page, then click on "Bookmark". We recommend saving it in your Favorites folder. Rename your bookmark to "Get PrettyLink" (or whatever you want) and then "Save"', 'pretty-link'); ?></li>
    40               <li><?php _e('Navigate through your Bookmarks until you find the new bookmark and click "Edit"', 'pretty-link'); ?></li>
    41               <li><?php _e('Delete all the text from the address', 'pretty-link'); ?></li>
    42               <li><?php _e('Paste the text you copied in Step 1 into the address field', 'pretty-link'); ?></li>
    43               <li><?php _e('To save the changes hit "Bookmarks" and <strong>you\'re done!', 'pretty-link'); ?></strong> <?php _e('Now when you find a page you want to save off as a Pretty Link, just click the "Bookmarks" icon at the bottom of the screen and select your "Get PrettyLink" bookmarklet.', 'pretty-link'); ?></li>
     49              <li><?php esc_html_e('Copy this text:', 'pretty-link'); ?><br/><input type="text" value="<?php echo esc_attr(PrliLink::bookmarklet_link()); ?>" /></li>
     50              <li><?php esc_html_e('Tap the + button at the bottom of the screen', 'pretty-link'); ?></li>
     51              <li><?php esc_html_e('Choose to share the page, then click on "Bookmark". We recommend saving it in your Favorites folder. Rename your bookmark to "Get PrettyLink" (or whatever you want) and then "Save"', 'pretty-link'); ?></li>
     52              <li><?php esc_html_e('Navigate through your Bookmarks until you find the new bookmark and click "Edit"', 'pretty-link'); ?></li>
     53              <li><?php esc_html_e('Delete all the text from the address', 'pretty-link'); ?></li>
     54              <li><?php esc_html_e('Paste the text you copied in Step 1 into the address field', 'pretty-link'); ?></li>
     55              <li>
     56                <?php
     57                  printf(
     58                    // translators: %1$s: open strong tag, %2$s close strong tag
     59                    esc_html__('To save the changes hit "Bookmarks" and %1$syou\'re done!%2$s', 'pretty-link'),
     60                    '<strong>',
     61                    '</strong>'
     62                  );
     63                ?>
     64                <?php esc_html_e('Now when you find a page you want to save off as a Pretty Link, just click the "Bookmarks" icon at the bottom of the screen and select your "Get PrettyLink" bookmarklet.', 'pretty-link'); ?>
     65              </li>
    4466            </ol>
    4567          </div>
    4668        </div>
    4769        <div class="prli-page" id="trim">
    48           <div class="prli-page-title"><?php _e('Trim Clicks', 'pretty-link'); ?></div>
     70          <div class="prli-page-title"><?php esc_html_e('Trim Clicks', 'pretty-link'); ?></div>
    4971          <?php if($prli_options->auto_trim_clicks): ?>
    50             <p><em><?php _e('Pretty Link is already automatically trimming Clicks older than 90 days. Although not necessary, you can still use the buttons below to force click trimming.', 'pretty-link'); ?></em></p>
     72            <p><em><?php esc_html_e('Pretty Link is already automatically trimming Clicks older than 90 days. Although not necessary, you can still use the buttons below to force click trimming.', 'pretty-link'); ?></em></p>
    5173          <?php endif; ?>
    5274          <?php if($prli_options->extended_tracking != 'count'): ?>
    53             <a class="button" href="<?php echo admin_url('admin.php?page=pretty-link-tools&action=clear_30day_clicks'); ?>" onclick="return confirm('<?php _e('***WARNING*** If you click OK you will delete ALL of the Click data that is older than 30 days. Your data will be gone forever -- no way to retreive it. Do not click OK unless you are absolutely sure you want to delete this data because there is no going back!', 'pretty-link'); ?>');"><?php _e('Delete Clicks older than 30 days', 'pretty-link'); ?></a>&nbsp;&nbsp;
     75            <a class="button" href="<?php echo esc_url(admin_url('admin.php?page=pretty-link-tools&action=clear_30day_clicks')); ?>" onclick="return confirm('<?php esc_attr_e('***WARNING*** If you click OK you will delete ALL of the Click data that is older than 30 days. Your data will be gone forever -- no way to retreive it. Do not click OK unless you are absolutely sure you want to delete this data because there is no going back!', 'pretty-link'); ?>');"><?php esc_html_e('Delete Clicks older than 30 days', 'pretty-link'); ?></a>&nbsp;&nbsp;
    5476            <?php PrliAppHelper::info_tooltip( 'prli-clear-clicks-30',
    55                                                __('Clear clicks 30 days or older', 'pretty-link'),
    56                                                __('This will clear all clicks in your database that are older than 30 days.', 'pretty-link') ); ?>
     77                                               esc_html__('Clear clicks 30 days or older', 'pretty-link'),
     78                                               esc_html__('This will clear all clicks in your database that are older than 30 days.', 'pretty-link') ); ?>
    5779            <div>&nbsp;</div>
    58             <a class="button" href="<?php echo admin_url('admin.php?page=pretty-link-tools&action=clear_90day_clicks'); ?>" onclick="return confirm('<?php _e('***WARNING*** If you click OK you will delete ALL of the Click data that is older than 90 days. Your data will be gone forever -- no way to retreive it. Do not click OK unless you are absolutely sure you want to delete this data because there is no going back!', 'pretty-link'); ?>');"><?php _e('Delete Clicks older than 90 days', 'pretty-link'); ?></a>&nbsp;&nbsp;
     80            <a class="button" href="<?php echo esc_url(admin_url('admin.php?page=pretty-link-tools&action=clear_90day_clicks')); ?>" onclick="return confirm('<?php esc_attr_e('***WARNING*** If you click OK you will delete ALL of the Click data that is older than 90 days. Your data will be gone forever -- no way to retreive it. Do not click OK unless you are absolutely sure you want to delete this data because there is no going back!', 'pretty-link'); ?>');"><?php esc_html_e('Delete Clicks older than 90 days', 'pretty-link'); ?></a>&nbsp;&nbsp;
    5981            <?php PrliAppHelper::info_tooltip( 'prli-clear-clicks-90',
    60                                                 __('Clear clicks 90 days or older', 'pretty-link'),
    61                                                 __('This will clear all clicks in your database that are older than 90 days.', 'pretty-link') ); ?>
     82                                                esc_html__('Clear clicks 90 days or older', 'pretty-link'),
     83                                                esc_html__('This will clear all clicks in your database that are older than 90 days.', 'pretty-link') ); ?>
    6284            <div>&nbsp;</div>
    6385          <?php endif; ?>
    6486
    65           <a class="button button-primary" href="<?php echo admin_url('admin.php?page=pretty-link-tools&action=clear_all_clicks'); ?>" onclick="return confirm('<?php _e('***WARNING*** If you click OK you will delete ALL of the Click data in your Database. Your data will be gone forever -- no way to retreive it. Do not click OK unless you are absolutely sure you want to delete all your data because there is no going back!', 'pretty-link'); ?>');"><?php _e('Delete All Clicks', 'pretty-link'); ?></a>&nbsp;&nbsp;
     87          <a class="button button-primary" href="<?php echo esc_url(admin_url('admin.php?page=pretty-link-tools&action=clear_all_clicks')); ?>" onclick="return confirm('<?php esc_attr_e('***WARNING*** If you click OK you will delete ALL of the Click data in your Database. Your data will be gone forever -- no way to retreive it. Do not click OK unless you are absolutely sure you want to delete all your data because there is no going back!', 'pretty-link'); ?>');"><?php esc_html_e('Delete All Clicks', 'pretty-link'); ?></a>&nbsp;&nbsp;
    6688          <?php PrliAppHelper::info_tooltip( 'prli-clear-all-clicks',
    67                                               __('Clear all clicks', 'pretty-link'),
    68                                               __('Seriously, only click this link if you want to delete all the Click data in your database.', 'pretty-link') ); ?>
     89                                              esc_html__('Clear all clicks', 'pretty-link'),
     90                                              esc_html__('Seriously, only click this link if you want to delete all the Click data in your database.', 'pretty-link') ); ?>
    6991        </div>
    7092
  • pretty-link/trunk/app/views/widgets/widget.php

    r1722928 r2124183  
    22<div class="wrap">
    33  <p style="text-align: left;">
    4     <a href="https://prettylinks.com/pl/widget/buy"><img style="border: 0px;" src="<?php echo PRLI_IMAGES_URL . '/pl-logo-horiz-RGB.svg'; ?>" width="75%" /></a>
     4    <a href="https://prettylinks.com/pl/widget/buy"><img style="border: 0px;" src="<?php echo esc_url(PRLI_IMAGES_URL . '/pl-logo-horiz-RGB.svg'); ?>" width="75%" /></a>
    55  </p>
    66
    7   <form name="form1" method="post" action="<?php echo admin_url("admin.php?page=pretty-link"); ?>">
    8   <input type="hidden" name="action" value="quick-create">
    9   <?php wp_nonce_field('update-options'); ?>
     7  <form id="prli-quick-create" method="post">
     8    <div id="prli-quick-create-error" class="hidden"></div>
     9    <table class="form-table">
     10      <tr class="form-field">
     11        <td valign="top"><?php esc_html_e("Target URL", 'pretty-link'); ?></td>
     12        <td><input type="text" id="prli-quick-create-url" name="url" value="" size="75">
     13      </tr>
     14      <tr>
     15        <td valign="top"><?php esc_html_e("Pretty Link", 'pretty-link'); ?></td>
     16        <td><strong><?php echo esc_html($prli_blogurl); ?></strong>/<input type="text" id="prli-quick-create-slug" name="slug" value="<?php echo esc_attr($prli_link->generateValidSlug()); ?>">
     17      </tr>
     18    </table>
    1019
    11   <table class="form-table">
    12     <tr class="form-field">
    13       <td valign="top"><?php _e("Target URL", 'pretty-link'); ?></td>
    14       <td><input type="text" name="url" value="" size="75">
    15     </tr>
    16     <tr>
    17       <td valign="top"><?php _e("Pretty Link", 'pretty-link'); ?></td>
    18       <td><strong><?php echo esc_html($prli_blogurl); ?></strong>/<input type="text" name="slug" value="<?php echo $prli_link->generateValidSlug(); ?>">
    19     </tr>
    20   </table>
    21 
    22   <p class="submit">
    23     <input type="submit" name="Submit" value="Create" class="button button-primary" />
    24   </p>
     20    <p class="submit">
     21      <input type="submit" name="Submit" value="<?php esc_attr_e('Create', 'pretty-link'); ?>" class="button button-primary" />
     22      <span id="prli-quick-create-loading" class="hidden"><img src="<?php echo PRLI_IMAGES_URL . '/square-loader.gif'; ?>" alt="<?php esc_attr_e('Loading...', 'pretty-link'); ?>"></span>
     23    </p>
    2524  </form>
    2625</div>
  • pretty-link/trunk/css/admin_shared.css

    r1572224 r2124183  
    9393}
    9494
    95 .prli-hidden {
     95.prli-hidden, .prli_hidden {
    9696  display: none;
    9797}
     
    114114
    115115.prli_admin_branding {
    116   /* background: url(../images/pl-logo-horiz-RGB.png) no-repeat; */
    117116  float: right !important;
    118117  padding-right: 25px !important;
     
    123122}
    124123
     124/*
    125125.tablenav .tablenav-pages a.disabled ,
    126126.tablenav .tablenav-pages a.disabled:hover {
     
    130130  color:#fff;
    131131}
     132*/
    132133
    133134.prli-red {
     
    139140}
    140141
     142#wpcontent #pl-admin-header {
     143  margin-left: -20px;
     144  padding: 15px;
     145  padding-left: 22px;
     146  background-image: url("../images/pretty-links-plugin-header.jpg");
     147  background-repeat: repeat;
     148  background-size: 1200px 75px;
     149  min-height: 36px;
     150  /* border-bottom: 2px solid #00cee6; */
     151}
     152#wpcontent #pl-admin-header img.pl-logo {
     153  height: 36px;
     154}
     155
     156.mfp-bg.mfp-prli {
     157  z-index: 100002;
     158}
     159.mfp-wrap.mfp-prli {
     160  z-index: 100003;
     161}
     162.mfp-wrap.mfp-prli .mfp-preloader {
     163  z-index: 100004;
     164}
     165.mfp-wrap.mfp-prli .mfp-content {
     166  z-index: 100005;
     167}
     168.prli-bullet-list {
     169  list-style: disc;
     170  margin-left: 2em;
     171}
     172.prli-welcome,
     173.prli-update {
     174  position: relative;
     175  max-width: 1200px;
     176  margin: 25px 40px 0 20px;
     177  font-size: 15px;
     178}
     179.prli-update {
     180  max-width: 890px;
     181}
     182.prli-welcome h1,
     183.prli-update h1 {
     184  margin: .2em 0 0 0;
     185  padding: 0;
     186  color: #32373c;
     187  line-height: 1.2;
     188  font-size: 2.8em;
     189  font-weight: 400;
     190}
     191.prli-welcome h1 {
     192  margin-right: 280px;
     193}
     194.prli-update h1 {
     195  margin-bottom: 0.6em;
     196}
     197.prli-welcome p,
     198.prli-update p {
     199  font-size: 16px;
     200  line-height: 1.5;
     201}
     202.prli-welcome .prli-welcome-about {
     203  font-size: 19px;
     204  line-height: 1.6;
     205  margin: 1em 0 1em 0;
     206}
     207.prli-welcome-badge {
     208  /*
     209   * position: absolute;
     210   * top: 0;
     211   * right: 0;
     212   */
     213  width: 230px;
     214  padding: 15px 15px 15px 0;
     215  float: left;
     216}
     217.prli-welcome img,
     218.prli-update img {
     219  max-width: 100%;
     220}
     221.prli-welcome hr {
     222  border: 0;
     223  height: 0;
     224  margin: 5em 0 0;
     225  border-top: 1px solid rgba(0, 0, 0, .1);
     226}
     227/*
     228.prli-center-section {
     229  max-width: 890px;
     230  margin: 40px auto 0 auto;
     231}
     232*/
     233p.prli-welcome-step {
     234  display: block;
     235  height: 160px;
     236  font-weight: 900;
     237  font-size: 18px;
     238  margin-left: 25px;
     239}
     240p.prli-welcome-step img {
     241  width: 160px !important;
     242  height: 160px !important;
     243  padding: 5px !important;
     244  margin-right: 15px !important;
     245  float: left;
     246  border: 1px solid #444444;
     247}
     248.prli-row {
     249  display: -ms-grid;
     250  display: grid;
     251}
     252.prli-row.prli-2-columns {
     253  -ms-grid-columns: 1fr 1fr;
     254  grid-template-columns: 1fr 1fr;
     255}
     256.prli-row.prli-2-columns.prli-is-wider-left {
     257  -ms-grid-columns: 2fr 1fr;
     258  grid-template-columns: 2fr 1fr;
     259}
     260.prli-row.prli-2-columns.prli-is-wider-right {
     261  -ms-grid-columns: 1fr 2fr;
     262  grid-template-columns: 1fr 2fr;
     263}
     264.prli-column {
     265  margin-right: 20px;
     266  margin-left: 20px;
     267}
     268.prli-column :first-child {
     269  margin-top: 0;
     270}
     271.prli-column.prli-align-vertically {
     272  align-self: center;
     273}
     274.prli-welcome .prli-column img {
     275  padding: 20px;
     276}
     277.prli-welcome h2,
     278.prli-update h2 {
     279  margin: 0 0 .6em;
     280  font-size: 1.6em;
     281  line-height: 1.5;
     282}
     283.prli-welcome h3 {
     284  margin: 1.25em 0 .6em;
     285  font-size: 1.4em;
     286  line-height: 1.5;
     287}
     288.prli-welcome ol li img {
     289  display: block;
     290  margin: 30px 0;
     291}
     292.prli-welcome ol li:last-child img {
     293  margin-bottom: 0;
     294}
     295.prli-button-section {
     296  text-align: center;
     297}
     298.prli-welcome .prli-button-section a {
     299  padding: 15px 40px;
     300  height: auto;
     301  font-size: 17px;
     302  line-height: 1.5;
     303}
     304.prli-update .prli-image-popup {
     305  display: block;
     306}
     307@media screen and (max-width: 782px) {
     308  .prli-welcome,
     309  .prli-update {
     310    margin-right: 30px;
     311  }
     312  .prli-welcome-badge {
     313    position: relative;
     314    width: 100%;
     315    margin-bottom: 1.5em;
     316  }
     317  .prli-welcome h1,
     318  .prli-welcome .prli-welcome-about {
     319    margin-right: 0;
     320  }
     321}
     322
     323.prli-position-relative {
     324  position: relative;
     325}
  • pretty-link/trunk/css/menu-styles.css

    r1663493 r2124183  
    66}
    77
    8 #toplevel_page_pretty-link div.wp-menu-image img {
     8.menu-icon-pretty-link div.wp-menu-image img {
    99  display: none;
    1010}
    1111
    12 #toplevel_page_pretty-link div.wp-menu-image:before {
     12.menu-icon-pretty-link div.wp-menu-image:before {
    1313  /* content: "\e843"; */
    1414  content: "\e844";
  • pretty-link/trunk/css/prli-admin-links.css

    r1925455 r2124183  
    11#options-table {
    22  width: 100%;
    3   margin-top: 10px;
    4 }
    5 
     3  margin-top: 10px; }
    64#pro-options-table {
    75  width: 100%;
     
    2119  color: #a1a1a1;
    2220  font-style: italic;
    23 }
    24 
    25 .link_row {
    26   min-height: 75px;
    27   height: 75px;
    28 }
    29 
    30 .link_actions {
    31   display: none;
    3221}
    3322
     
    5746}
    5847
    59 .bacheck-title {
    60   display: inline-block;
    61   width: 100px !important;
    62 }
    63 
    64 .inline-edit-col-left, .inline-edit-col-center, .inline-edit-col-right {
    65   width: 33% !important;
    66 }
    67 
    68 /*
    69 .keyword-replacements {
    70   width: 45%;
    71   clear: none !important;
    72 }
    73 */
    74 
    7548.advanced-link-options {
    7649  width: 100%;
     
    8255}
    8356
     57.post-type-pretty-link #pretty_link_errors {
     58  background: #fff;
     59  border: 1px solid rgba(0,0,0,.125);
     60  border-left: 4px solid #dc3232;
     61  box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1);
     62  margin: 5px 0 15px;
     63  padding: 5px 12px;
     64}
     65
     66.post-type-pretty-link #submitdiv #misc-publishing-actions,
     67.post-type-pretty-link #submitdiv #minor-publishing-actions {
     68  display: none;
     69}
     70
     71.column-settings {
     72  width: 10% !important;
     73}
     74
     75.column-title {
     76  width: 25% !important;
     77}
     78
     79.column-taxonomy-pretty-link-category,
     80.column-pro-pretty-link-category {
     81  width: 10% !important;
     82}
     83
     84.column-taxonomy-pretty-link-tag,
     85.column-pro-pretty-link-tag {
     86  width: 10% !important;
     87}
     88
     89.column-keywords {
     90  width: 15% !important;
     91}
     92
     93.column-clicks {
     94  width: 5% !important;
     95}
     96
     97.column-date {
     98  width: 10% !important;
     99}
     100
     101.column-links {
     102  width: 25% !important;
     103}
     104
     105.column-slug {
     106  width: 15% !important;
     107}
     108
     109.column-target {
     110  width: 15% !important;
     111}
     112
     113#pretty-link-settings.postbox .inside,
     114#pretty-link-settings.postbox .prli-settings-table {
     115  padding: 0;
     116  margin: 0;
     117}
     118
     119#pretty-link-settings.postbox .prli-settings-table {
     120  width: 100%;
     121}
     122
     123#pretty-link-settings.postbox .prli-settings-table-pages {
     124  padding-top: 0;
     125}
     126
     127#pretty-link-settings.postbox h2.hndle {
     128  color: white;
     129  background-color: #444;
     130  border-bottom: none;
     131}
     132
     133#pretty-link-settings.postbox button.handlediv {
     134  height: 35px;
     135}
     136
     137table.wp-list-table .prli-pro-only-indicator a {
     138  /* position: absolute; */
     139  /* right: 10px; */
     140  /* top: 20px; */
     141  color: #fff;
     142  background: #0074a2;
     143  font-size: 10px;
     144  line-height: 1.3;
     145  text-transform: uppercase;
     146  padding: 2px 3px;
     147  -webkit-border-radius: 3px;
     148  -moz-border-radius: 3px;
     149  border-radius: 3px;
     150  text-decoration: none;
     151}
     152
     153table.wp-list-table .prli-pro-only-indicator a:hover {
     154  background: #3390b5;
     155}
     156
     157@media screen and (max-width: 782px) {
     158  .wp-list-table .type-pretty-link .column-settings,
     159  .wp-list-table .type-pretty-link.is-expanded .column-settings {
     160    display: table-cell !important;
     161  }
     162  .wp-list-table .type-pretty-link .column-settings:before {
     163    content: "" !important;
     164  }
     165  .wp-list-table .type-pretty-link .column-links {
     166    text-align: inherit;
     167  }
     168  .wp-list-table .type-pretty-link .column-links input {
     169    width: calc(100% - 30px) !important;
     170  }
     171}
     172
  • pretty-link/trunk/css/settings_table.css

    r1572224 r2124183  
    6262}
    6363
     64table.prli-settings-table .form-table th {
     65  width: 225px;
     66}
     67
    6468table.prli-settings-table td.prli-settings-table-pages {
    6569  width: 100%;
     
    8690}
    8791
     92table.prli-settings-table tr.prli-pro-only th,
     93table.prli-settings-table label.prli-pro-only {
     94  position: relative;
     95  padding-right: 40px;
     96}
     97
     98table.prli-settings-table tr.prli-pro-only input[type=checkbox]:disabled {
     99  opacity: 1;
     100}
     101
     102table.prli-settings-table .prli-pro-only-indicator {
     103  position: absolute;
     104  right: 10px;
     105  top: 20px;
     106}
     107
     108table.prli-settings-table .prli-pro-only-indicator a {
     109  color: #fff;
     110  background: #0074a2;
     111  font-size: 10px;
     112  line-height: 1.3;
     113  text-transform: uppercase;
     114  padding: 2px 3px;
     115  -webkit-border-radius: 3px;
     116  -moz-border-radius: 3px;
     117  border-radius: 3px;
     118  text-decoration: none;
     119}
     120
     121table.prli-settings-table .prli-pro-only-indicator a:hover {
     122  background: #3390b5;
     123}
     124
     125table.prli-settings-table label.prli-pro-only .prli-pro-only-indicator {
     126  top: 0;
     127}
     128
    88129.prli-sub-box {
    89130  background-color: #f1f1f1;
     
    101142
    102143label.prli-label {
    103   font-weight: bold;
     144  font-weight: 600;
    104145  font-size: 14px;
    105146  color: #222;
     
    185226    padding: 0 15px;
    186227  }
    187 }
    188 
     228  table.prli-settings-table .prli-pro-only-indicator {
     229    top: 10px;
     230  }
     231}
     232
  • pretty-link/trunk/i18n/pretty-link.pot

    r2108490 r2124183  
    1 # Copyright (C) 2019 Pretty Links
    2 # This file is distributed under the same license as the Pretty Links package.
     1# Copyright (C) 2019 Blair Williams
     2# This file is distributed under the same license as the Pretty Links plugin.
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: Pretty Links 2.1.10\n"
     5"Project-Id-Version: Pretty Links 3.0.0\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/pretty-link\n"
    7 "POT-Creation-Date: 2019-06-18 23:07:00+00:00\n"
     7"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
     8"Language-Team: LANGUAGE <[email protected]>\n"
    89"MIME-Version: 1.0\n"
    910"Content-Type: text/plain; charset=UTF-8\n"
    1011"Content-Transfer-Encoding: 8bit\n"
    11 "PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
    12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
    13 "Language-Team: LANGUAGE <[email protected]>\n"
    14 
    15 #: app/controllers/PrliAppController.php:36
    16 #: app/controllers/PrliAppController.php:45
    17 msgid "Pretty Links | Manage Pretty Links"
    18 msgstr ""
    19 
    20 #. #-#-#-#-#  pretty-link.pot (Pretty Links 2.1.10)  #-#-#-#-#
    21 #. Plugin Name of the plugin/theme
    22 #: app/controllers/PrliAppController.php:37
    23 #: app/controllers/PrliAppController.php:46 app/views/links/list.php:12
     12"POT-Creation-Date: 2019-07-16T13:21:15-06:00\n"
     13"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
     14"X-Generator: WP-CLI 2.2.0\n"
     15"X-Domain: pretty-link\n"
     16
     17#. Plugin Name of the plugin
     18#: pro/app/views/links/prettybar.php:68
     19#: app/controllers/PrliLinksController.php:43
     20#: app/controllers/PrliLinksController.php:411
    2421msgid "Pretty Links"
    2522msgstr ""
    2623
    27 #: app/controllers/PrliAppController.php:53
    28 msgid "Pretty Links | Add New Link"
    29 msgstr ""
    30 
    31 #: app/controllers/PrliAppController.php:54
    32 msgid "Add New Link"
    33 msgstr ""
    34 
    35 #: app/controllers/PrliAppController.php:62
    36 msgid "Pretty Links | Groups"
    37 msgstr ""
    38 
    39 #: app/controllers/PrliAppController.php:63 app/views/groups/list.php:6
    40 msgid "Groups"
    41 msgstr ""
    42 
    43 #: app/controllers/PrliAppController.php:72
    44 msgid "Pretty Links | Clicks"
    45 msgstr ""
    46 
    47 #: app/controllers/PrliAppController.php:73 app/models/PrliClick.php:259
    48 #: app/views/clicks/list.php:4 app/views/groups/list.php:69
    49 #: pro/app/helpers/PlpPostsHelper.php:61 pro/app/views/links/form.php:36
    50 #: pro/app/views/links/form.php:48 pro/app/views/reports/custom-report.php:31
    51 #: pro/app/views/reports/custom-report.php:64
     24#. Plugin URI of the plugin
     25msgid "https://prettylinks.com/pl/plugin-uri"
     26msgstr ""
     27
     28#. Description of the plugin
     29msgid "Shrink, track and share any URL on the Internet from your WordPress website!"
     30msgstr ""
     31
     32#. Author of the plugin
     33msgid "Blair Williams"
     34msgstr ""
     35
     36#. Author URI of the plugin
     37msgid "http://blairwilliams.com"
     38msgstr ""
     39
     40#: pro/app/helpers/PlpLinksHelper.php:18
     41#: pro/app/views/links/form.php:226
     42msgid "weight:"
     43msgstr ""
     44
     45#: pro/app/helpers/PlpPostsHelper.php:19
     46msgid "Hide Social Buttons on this post."
     47msgstr ""
     48
     49#: pro/app/helpers/PlpPostsHelper.php:26
     50msgid "Disable Keyword Replacements on this post."
     51msgstr ""
     52
     53#: pro/app/helpers/PlpPostsHelper.php:44
     54msgid "A Pretty Link will be created on Publish"
     55msgstr ""
     56
     57#: pro/app/helpers/PlpPostsHelper.php:61
     58#: pro/app/views/links/form.php:39
     59#: pro/app/views/links/form.php:49
    5260#: pro/app/views/reports/split-test-report.php:28
    5361#: pro/app/views/reports/split-test-report.php:60
     62#: pro/app/views/reports/custom-report.php:31
     63#: pro/app/views/reports/custom-report.php:64
     64#: app/models/PrliClick.php:256
     65#: app/views/groups/list.php:81
     66#: app/views/clicks/list.php:4
     67#: app/controllers/PrliLinksController.php:409
     68#: app/controllers/PrliAppController.php:118
    5469msgid "Clicks"
    5570msgstr ""
    5671
    57 #: app/controllers/PrliAppController.php:82
    58 msgid "Pretty Links | Tools"
    59 msgstr ""
    60 
    61 #: app/controllers/PrliAppController.php:83 app/views/tools/form.php:3
     72#: pro/app/helpers/PlpPostsHelper.php:63
     73#: pro/app/views/reports/split-test-report.php:29
     74#: pro/app/views/reports/split-test-report.php:61
     75#: pro/app/views/reports/custom-report.php:32
     76#: pro/app/views/reports/custom-report.php:65
     77msgid "Uniques"
     78msgstr ""
     79
     80#: pro/app/helpers/PlpPostsHelper.php:66
     81#: app/models/PrliClick.php:251
     82msgid "Pretty Link:"
     83msgstr ""
     84
     85#: pro/app/helpers/PlpPostsHelper.php:68
     86msgid "edit"
     87msgstr ""
     88
     89#: pro/app/helpers/PlpPostsHelper.php:70
     90msgid "Visit Pretty Link:"
     91msgstr ""
     92
     93#: pro/app/helpers/PlpPostsHelper.php:70
     94msgid "in a New Window"
     95msgstr ""
     96
     97#: pro/app/helpers/PlpPostsHelper.php:70
     98msgid "visit"
     99msgstr ""
     100
     101#: pro/app/helpers/PlpPostsHelper.php:76
     102msgid "A Pretty Link hasn't been generated for this entry yet. Click \"Update Post\" to generate."
     103msgstr ""
     104
     105#: pro/app/helpers/PlpPublicLinksHelper.php:6
     106#: pro/app/controllers/PlpPublicLinksController.php:106
     107msgid "Enter a URL:"
     108msgstr ""
     109
     110#: pro/app/helpers/PlpPublicLinksHelper.php:7
     111#: pro/app/controllers/PlpPublicLinksController.php:107
     112#: pro/app/widgets/PlpPublicLinksWidget.php:61
     113msgid "Shrink"
     114msgstr ""
     115
     116#: pro/app/models/PlpUtils.php:36
     117msgid "Google Analyticator"
     118msgstr ""
     119
     120#: pro/app/models/PlpUtils.php:39
     121msgid "Google Analytics by MonsterInsights"
     122msgstr ""
     123
     124#: pro/app/models/PlpUtils.php:42
     125#: pro/app/views/links/bulk-edit.php:10
     126#: app/views/links/form_advanced.php:58
     127msgid "Google Analytics"
     128msgstr ""
     129
     130#: pro/app/models/PlpOptions.php:99
     131msgid "Facebook"
     132msgstr ""
     133
     134#: pro/app/models/PlpOptions.php:106
     135msgid "Twitter"
     136msgstr ""
     137
     138#: pro/app/models/PlpOptions.php:113
     139msgid "Google+"
     140msgstr ""
     141
     142#: pro/app/models/PlpOptions.php:120
     143msgid "Pinterest"
     144msgstr ""
     145
     146#: pro/app/models/PlpOptions.php:127
     147msgid "LinkedIn"
     148msgstr ""
     149
     150#: pro/app/models/PlpOptions.php:134
     151msgid "Reddit"
     152msgstr ""
     153
     154#: pro/app/models/PlpOptions.php:141
     155msgid "StumbleUpon"
     156msgstr ""
     157
     158#: pro/app/models/PlpOptions.php:148
     159msgid "Digg"
     160msgstr ""
     161
     162#: pro/app/models/PlpOptions.php:155
     163#: app/controllers/PrliLinksController.php:506
     164msgid "Email"
     165msgstr ""
     166
     167#: pro/app/models/PlpOptions.php:238
     168msgid "Affiliate Link Disclosures"
     169msgstr ""
     170
     171#: pro/app/models/PlpOptions.php:247
     172msgid "(aff)"
     173msgstr ""
     174
     175#: pro/app/models/PlpReport.php:150
     176msgid "Report must have a name."
     177msgstr ""
     178
     179#: pro/app/models/PlpReport.php:154
     180msgid "At least one link must be selected for analysis."
     181msgstr ""
     182
     183#: pro/app/models/PlpReport.php:259
     184msgid "Pretty Links Pro: Clicks for"
     185msgstr ""
     186
     187#: pro/app/models/PlpReport.php:259
     188msgid "report between"
     189msgstr ""
     190
     191#: pro/app/models/PlpReport.php:259
     192#: pro/app/models/PlpReport.php:400
     193#: app/models/PrliClick.php:251
     194msgid "and"
     195msgstr ""
     196
     197#: pro/app/models/PlpReport.php:266
     198#: pro/app/models/PlpReport.php:275
     199#: app/views/clicks/list.php:101
     200#: app/views/clicks/list.php:184
     201msgid "Link"
     202msgstr ""
     203
     204#: pro/app/models/PlpReport.php:266
     205#: pro/app/models/PlpReport.php:275
     206#: pro/app/models/PlpReport.php:412
     207#: pro/app/models/PlpReport.php:419
     208#: app/views/clicks/list.php:32
     209msgid "All Clicks"
     210msgstr ""
     211
     212#: pro/app/models/PlpReport.php:266
     213#: pro/app/models/PlpReport.php:275
     214#: pro/app/models/PlpReport.php:412
     215#: pro/app/models/PlpReport.php:419
     216#: app/views/clicks/list.php:33
     217msgid "Unique Clicks"
     218msgstr ""
     219
     220#: pro/app/models/PlpReport.php:266
     221#: pro/app/models/PlpReport.php:412
     222#: pro/app/views/reports/split-test-report.php:31
     223#: pro/app/views/reports/split-test-report.php:63
     224#: pro/app/views/reports/custom-report.php:34
     225#: pro/app/views/reports/custom-report.php:67
     226msgid "Conversions"
     227msgstr ""
     228
     229#: pro/app/models/PlpReport.php:400
     230msgid "Pretty Links Pro: Split Report for"
     231msgstr ""
     232
     233#: pro/app/models/PlpReport.php:400
     234#: app/models/PrliClick.php:251
     235msgid "between"
     236msgstr ""
     237
     238#: pro/app/models/PlpReport.php:412
     239#: pro/app/models/PlpReport.php:419
     240#: pro/app/views/links/form.php:199
     241#: app/views/links/form_pro.php:95
     242msgid "Rotation"
     243msgstr ""
     244
     245#: pro/app/views/links/link-options.php:3
     246#: pro/app/views/links/link-options.php:5
     247#: app/views/options/form.php:134
     248#: app/views/options/form.php:136
     249msgid "Base Slug Prefix"
     250msgstr ""
     251
     252#. translators: %1$s: open b tag, %2$s close b tag
     253#: pro/app/views/links/link-options.php:8
     254#: app/views/options/form.php:139
     255msgid "Use this to prefix all newly generated pretty links with a directory of your choice. For example set to %1$sout%2$s to make your pretty links look like http://site.com/%1$sout%2$s/xyz. Changing this option will NOT affect existing pretty links. If you do not wish to use a directory prefix, leave this text field blank. Whatever you type here will be sanitized and modified to ensure it is URL-safe. So %1$sHello World%2$s might get changed to something like %1$shello-world%2$s instead. Lowercase letters, numbers, dashes, and underscores are allowed."
     256msgstr ""
     257
     258#: pro/app/views/links/link-options.php:21
     259#: pro/app/views/links/link-options.php:23
     260#: app/views/options/form.php:153
     261#: app/views/options/form.php:155
     262msgid "Slug Character Count"
     263msgstr ""
     264
     265#: pro/app/views/links/link-options.php:24
     266#: app/views/options/form.php:156
     267msgid "The number of characters to use when auto-generating a random slug for pretty links. The default is 4. You cannot use less than 2."
     268msgstr ""
     269
     270#: pro/app/views/links/link-options.php:34
     271#: pro/app/views/links/link-options.php:35
     272#: app/views/options/form.php:167
     273#: app/views/options/form.php:168
     274msgid "Enable Google Analytics"
     275msgstr ""
     276
     277#: pro/app/views/links/link-options.php:36
     278#: app/views/options/form.php:169
     279msgid "Requires Google Analyticator, Google Analytics by MonsterInsights (formerly Yoast), or the Google Analytics Plugin to be installed and configured on your site."
     280msgstr ""
     281
     282#. translators: %1s: open link tag, %2$s: close link tag
     283#: pro/app/views/links/link-options.php:50
     284msgid "Enable %1sQR Codes%2$s"
     285msgstr ""
     286
     287#: pro/app/views/links/link-options.php:57
     288#: app/views/options/form.php:182
     289msgid "Generate QR Codes"
     290msgstr ""
     291
     292#: pro/app/views/links/link-options.php:58
     293#: app/views/options/form.php:183
     294msgid "This will enable a link in your pretty link admin that will allow you to automatically download a QR Code for each individual Pretty Link."
     295msgstr ""
     296
     297#: pro/app/views/links/link-options.php:68
     298#: pro/app/views/links/link-options.php:70
     299#: app/views/options/form.php:194
     300#: app/views/options/form.php:196
     301msgid "Global Head Scripts"
     302msgstr ""
     303
     304#. translators: %1$s: br tag, %2$s: open b tag, %3$s close b tag
     305#: pro/app/views/links/link-options.php:73
     306#: app/views/options/form.php:199
     307msgid "Useful for adding Google Analytics tracking, Facebook retargeting pixels, or any other kind of tracking script to the HTML head.%1$s%1$sWhat you enter in this box will be applied to all supported pretty links.%1$s%1$s%2$sNOTE:%3$s This does NOT work with 301, 302 and 307 type redirects."
     308msgstr ""
     309
     310#: pro/app/views/links/form.php:6
     311#: app/views/links/form_pro.php:15
     312msgid "Expire"
     313msgstr ""
     314
     315#: pro/app/views/links/form.php:9
     316#: app/views/links/form_pro.php:18
     317msgid "Expire Link"
     318msgstr ""
     319
     320#: pro/app/views/links/form.php:10
     321#: app/views/links/form_pro.php:19
     322msgid "Set this link to expire after a specific date or number of clicks."
     323msgstr ""
     324
     325#: pro/app/views/links/form.php:23
     326msgid "Expire After"
     327msgstr ""
     328
     329#: pro/app/views/links/form.php:26
     330msgid "Expiration Type"
     331msgstr ""
     332
     333#. translators: %1$s: br tag, %2$s: open b tag, %3$s close b tag
     334#: pro/app/views/links/form.php:29
     335msgid "Select the type of expiration you want for this link.%1$s%1$s%2$sDate%3$s Select this option if you'd like to expire your link after a certain date.%1%s%1$s%2$sClicks%3$s: Select this option to expire this link after it has been clicked a specific number of times."
     336msgstr ""
     337
     338#: pro/app/views/links/form.php:38
     339#: pro/app/views/links/form.php:73
     340#: app/models/PrliClick.php:256
     341#: app/controllers/PrliLinksController.php:410
     342msgid "Date"
     343msgstr ""
     344
     345#: pro/app/views/links/form.php:52
     346msgid "Number of Clicks"
     347msgstr ""
     348
     349#. translators: %1$s: br tag, %2$s: open b tag, %3$s close b tag
     350#: pro/app/views/links/form.php:55
     351msgid "Enter the number of times this link can be clicked before it expires.%1$s%1$s%2$sNote: Expirations based on clicks wouldn't work properly if you had tracking turned off for this link so as long as this is set to Clicks, Pretty Link will ensure tracking is turned on for this link as well.%3$s"
     352msgstr ""
     353
     354#: pro/app/views/links/form.php:76
     355msgid "Expiration Date"
     356msgstr ""
     357
     358#: pro/app/views/links/form.php:77
     359msgid "Enter a date here in the format YYYY-MM-DD to set when this link should expire."
     360msgstr ""
     361
     362#: pro/app/views/links/form.php:91
     363msgid "Expired Redirect"
     364msgstr ""
     365
     366#: pro/app/views/links/form.php:94
     367msgid "Redirect to URL when Expired"
     368msgstr ""
     369
     370#. translators: %1$s: br tag, %2$s: open b tag, %3$s close b tag
     371#: pro/app/views/links/form.php:97
     372msgid "When this link expires, do you want to redirect to a specific URL. You can use this to redirect to a page you've setup to indicate that the link is expired.%1$s%1$s%2$sNote: If this is not set the link will throw a 404 error when expired%3$s."
     373msgstr ""
     374
     375#: pro/app/views/links/form.php:114
     376#: pro/app/views/options/form.php:187
     377msgid "URL"
     378msgstr ""
     379
     380#: pro/app/views/links/form.php:117
     381msgid "Expired URL"
     382msgstr ""
     383
     384#: pro/app/views/links/form.php:118
     385msgid "This is the URL that this link will redirect to after the expiration date above."
     386msgstr ""
     387
     388#: pro/app/views/links/form.php:133
     389#: app/views/links/form_pro.php:30
     390#: app/controllers/PrliLinksController.php:372
     391msgid "Keywords"
     392msgstr ""
     393
     394#: pro/app/views/links/form.php:136
     395#: app/views/links/form_pro.php:33
     396msgid "Auto-Replace Keywords"
     397msgstr ""
     398
     399#: pro/app/views/links/form.php:137
     400msgid "Enter a comma separated list of keywords / keyword phrases that you'd like to replace with this link in your Posts &amp; Pages."
     401msgstr ""
     402
     403#: pro/app/views/links/form.php:145
     404#: app/views/links/form_pro.php:44
     405msgid "URL Replacements"
     406msgstr ""
     407
     408#: pro/app/views/links/form.php:148
     409#: app/views/links/form_pro.php:47
     410msgid "Auto-Replace URLs"
     411msgstr ""
     412
     413#. translators: %1$s: open code tag, %2$s: close code tag
     414#: pro/app/views/links/form.php:151
     415msgid "Enter a comma separated list of the URLs that you'd like to replace with this Pretty Link in your Posts &amp; Pages. These must be formatted as URLs for example: %1$shttp://example.com%2$s or %1$shttp://example.com?product_id=53%2$s"
     416msgstr ""
     417
     418#: pro/app/views/links/form.php:167
     419#: pro/app/views/links/form.php:170
     420#: app/views/links/form_pro.php:64
     421#: app/views/links/form_pro.php:67
     422msgid "Head Scripts"
     423msgstr ""
     424
     425#. translators: %1$s: br tag, %2$s: open b tag, %3$s close b tag
     426#: pro/app/views/links/form.php:173
     427#: app/views/links/form_pro.php:70
     428msgid "Useful for adding Google Analytics tracking, Facebook retargeting pixels, or any other kind of tracking script to the HTML head for this pretty link.%1$s%1$sThese scripts will be in addition to any global one's you've defined in the options.%1$s%1$s%2$sNOTE:%3$s This does NOT work with 301, 302 and 307 type redirects."
     429msgstr ""
     430
     431#: pro/app/views/links/form.php:189
     432#: app/views/links/form_pro.php:84
     433msgid "Dynamic Redirection"
     434msgstr ""
     435
     436#: pro/app/views/links/form.php:192
     437#: app/views/links/form_pro.php:87
     438msgid "Dynamic Redirection Options"
     439msgstr ""
     440
     441#: pro/app/views/links/form.php:193
     442#: app/views/links/form_pro.php:88
     443msgid "These powerful options are available to give you dynamic control over redirection for this pretty link."
     444msgstr ""
     445
     446#: pro/app/views/links/form.php:198
     447#: pro/app/views/options/form.php:812
     448#: pro/app/views/options/autocreate.php:44
     449#: pro/app/views/tools/generator.php:37
     450#: pro/app/widgets/PlpPublicLinksWidget.php:94
     451#: app/views/links/form_pro.php:94
     452#: app/views/shared/tinymce_form_popup.php:75
     453#: app/views/shared/tinymce_form_popup.php:79
     454#: app/views/options/form.php:948
     455msgid "None"
     456msgstr ""
     457
     458#: pro/app/views/links/form.php:200
     459#: app/views/links/form_pro.php:96
     460msgid "Geographic"
     461msgstr ""
     462
     463#: pro/app/views/links/form.php:201
     464#: app/views/links/form_pro.php:97
     465msgid "Technology"
     466msgstr ""
     467
     468#: pro/app/views/links/form.php:202
     469#: app/views/links/form_pro.php:98
     470msgid "Time"
     471msgstr ""
     472
     473#: pro/app/views/links/form.php:211
     474#: pro/app/views/links/form.php:214
     475msgid "Target URL Rotations"
     476msgstr ""
     477
     478#. translators: %1$s: open code tag, %2$s: close code tag
     479#: pro/app/views/links/form.php:217
     480msgid "Enter the Target URLs that you'd like to rotate through when this Pretty Link is Clicked. These must be formatted as URLs example: %1$shttp://example.com%2$s or %1$shttp://example.com?product_id=53%2$s"
     481msgstr ""
     482
     483#: pro/app/views/links/form.php:225
     484msgid "Target URL (above)"
     485msgstr ""
     486
     487#: pro/app/views/links/form.php:237
     488msgid "Add Link Rotation"
     489msgstr ""
     490
     491#: pro/app/views/links/form.php:242
     492msgid "Split Test"
     493msgstr ""
     494
     495#: pro/app/views/links/form.php:245
     496msgid "Split Test This Link"
     497msgstr ""
     498
     499#: pro/app/views/links/form.php:246
     500msgid "Split testing will enable you to track the effectiveness of several links against each other. This works best when you have multiple link rotation URLs entered."
     501msgstr ""
     502
     503#: pro/app/views/links/form.php:260
     504#: pro/app/views/reports/list.php:37
     505#: pro/app/views/reports/list.php:87
     506msgid "Goal Link"
     507msgstr ""
     508
     509#: pro/app/views/links/form.php:263
     510msgid "Goal Link for Split Test"
     511msgstr ""
     512
     513#: pro/app/views/links/form.php:264
     514msgid "This is the goal link for your split test."
     515msgstr ""
     516
     517#: pro/app/views/links/form.php:275
     518msgid "id: %1$s | slug: %3$s | name: %2$s"
     519msgstr ""
     520
     521#: pro/app/views/links/form.php:293
     522#: pro/app/views/links/form.php:296
     523msgid "Geographic Redirects"
     524msgstr ""
     525
     526#: pro/app/views/links/form.php:297
     527msgid "This will enable you to setup specific target urls that this pretty link will redirect to based on the country of the person visiting the url."
     528msgstr ""
     529
     530#: pro/app/views/links/form.php:302
     531#: pro/app/views/links/form.php:316
     532#: pro/app/views/links/form.php:336
     533msgid "Add"
     534msgstr ""
     535
     536#: pro/app/views/links/form.php:307
     537#: pro/app/views/links/form.php:310
     538msgid "Technology Redirects"
     539msgstr ""
     540
     541#: pro/app/views/links/form.php:311
     542msgid "This will allow you to redirect based on your visitor's device, operating system and/or browser"
     543msgstr ""
     544
     545#: pro/app/views/links/form.php:321
     546#: pro/app/views/links/form.php:324
     547msgid "Time Period Redirects"
     548msgstr ""
     549
     550#. translators: %1$s: br tag, %2$s: open b tag, %3$s close b tag
     551#: pro/app/views/links/form.php:327
     552msgid "This will allow you to redirect based on the time period in which your visitor visits this link.%1$s%1$s%2$sNote: If your visitor doesn't visit the link during any of the specified time periods set here, they'll simply be redirected to the main target url.%3$s"
     553msgstr ""
     554
     555#: pro/app/views/links/bulk-edit.php:6
     556msgid "Advanced Link Options"
     557msgstr ""
     558
     559#: pro/app/views/links/cloaked-redirect.php:19
     560msgid "Your browser does not support frames."
     561msgstr ""
     562
     563#: pro/app/views/links/link-has-expired.php:9
     564msgid "Link Not Found"
     565msgstr ""
     566
     567#: pro/app/views/links/link-has-expired.php:23
     568msgid "Sorry, this link has expired"
     569msgstr ""
     570
     571#: pro/app/views/links/time_row.php:13
     572msgid "Start Time:"
     573msgstr ""
     574
     575#: pro/app/views/links/time_row.php:16
     576msgid "Start of Time Period"
     577msgstr ""
     578
     579#: pro/app/views/links/time_row.php:17
     580msgid "This is where you'll enter the beginning of the time period for this redirect"
     581msgstr ""
     582
     583#: pro/app/views/links/time_row.php:26
     584msgid "End Time:"
     585msgstr ""
     586
     587#: pro/app/views/links/time_row.php:29
     588msgid "End of Time Period"
     589msgstr ""
     590
     591#: pro/app/views/links/time_row.php:30
     592msgid "This is where you'll enter the end of the time period for this redirect"
     593msgstr ""
     594
     595#: pro/app/views/links/time_row.php:39
     596#: pro/app/views/links/tech_row.php:85
     597#: pro/app/views/links/geo_row.php:25
     598msgid "URL:"
     599msgstr ""
     600
     601#: pro/app/views/links/time_row.php:42
     602msgid "Time Period Redirect URL"
     603msgstr ""
     604
     605#: pro/app/views/links/time_row.php:43
     606msgid "This is the URL that this Pretty Link will redirect to when the visitor visits the link in the associated time period."
     607msgstr ""
     608
     609#: pro/app/views/links/time_row.php:52
     610#: pro/app/views/links/tech_row.php:98
     611#: pro/app/views/links/geo_row.php:38
     612msgid "Remove"
     613msgstr ""
     614
     615#: pro/app/views/links/tech_row.php:14
     616msgid "Device:"
     617msgstr ""
     618
     619#: pro/app/views/links/tech_row.php:17
     620msgid "Technology Redirection Device"
     621msgstr ""
     622
     623#. translators: %1$s: open b tag, %2$s: close b tag, %3$s: br tag
     624#: pro/app/views/links/tech_row.php:20
     625msgid "%1$sDesktop%2$s will match on any conventional laptop or desktop computer.%3$s%3$s%1$sMobile%2$s will match on any phone, tablet or other portable device.%3$s%3$s%1$sPhone%2$s will match on any phone or similarly small device.%3$s%3$s%1$sTablet%2$s will match on any tablet sized device."
     626msgstr ""
     627
     628#: pro/app/views/links/tech_row.php:29
     629#: pro/app/views/links/tech_row.php:48
     630#: pro/app/views/links/tech_row.php:68
     631msgid "Any"
     632msgstr ""
     633
     634#: pro/app/views/links/tech_row.php:30
     635msgid "Desktop"
     636msgstr ""
     637
     638#: pro/app/views/links/tech_row.php:31
     639msgid "Mobile"
     640msgstr ""
     641
     642#: pro/app/views/links/tech_row.php:32
     643msgid "Phone"
     644msgstr ""
     645
     646#: pro/app/views/links/tech_row.php:33
     647msgid "Tablet"
     648msgstr ""
     649
     650#: pro/app/views/links/tech_row.php:39
     651msgid "Operating System:"
     652msgstr ""
     653
     654#: pro/app/views/links/tech_row.php:42
     655msgid "Technology Redirection OS"
     656msgstr ""
     657
     658#: pro/app/views/links/tech_row.php:43
     659msgid "Use this dropdown to select which Operating System this redirect will match on."
     660msgstr ""
     661
     662#: pro/app/views/links/tech_row.php:49
     663#: pro/app/views/links/tech_row.php:70
     664msgid "Android"
     665msgstr ""
     666
     667#: pro/app/views/links/tech_row.php:50
     668msgid "iOS"
     669msgstr ""
     670
     671#: pro/app/views/links/tech_row.php:51
     672msgid "Linux"
     673msgstr ""
     674
     675#: pro/app/views/links/tech_row.php:52
     676msgid "Mac"
     677msgstr ""
     678
     679#: pro/app/views/links/tech_row.php:53
     680msgid "Windows"
     681msgstr ""
     682
     683#: pro/app/views/links/tech_row.php:59
     684msgid "Browser:"
     685msgstr ""
     686
     687#: pro/app/views/links/tech_row.php:62
     688msgid "Technology Redirection Browser"
     689msgstr ""
     690
     691#: pro/app/views/links/tech_row.php:63
     692msgid "Use this dropdown to select which Browser this redirect will match on."
     693msgstr ""
     694
     695#: pro/app/views/links/tech_row.php:69
     696msgid "Amazon Silk"
     697msgstr ""
     698
     699#: pro/app/views/links/tech_row.php:71
     700msgid "Chrome"
     701msgstr ""
     702
     703#: pro/app/views/links/tech_row.php:72
     704msgid "Chromium"
     705msgstr ""
     706
     707#: pro/app/views/links/tech_row.php:73
     708msgid "Edge"
     709msgstr ""
     710
     711#: pro/app/views/links/tech_row.php:74
     712msgid "Firefox"
     713msgstr ""
     714
     715#: pro/app/views/links/tech_row.php:75
     716msgid "Internet Explorer"
     717msgstr ""
     718
     719#: pro/app/views/links/tech_row.php:76
     720msgid "Kindle"
     721msgstr ""
     722
     723#: pro/app/views/links/tech_row.php:77
     724msgid "Opera"
     725msgstr ""
     726
     727#: pro/app/views/links/tech_row.php:78
     728msgid "Opera Coast"
     729msgstr ""
     730
     731#: pro/app/views/links/tech_row.php:79
     732msgid "Safari"
     733msgstr ""
     734
     735#: pro/app/views/links/tech_row.php:88
     736msgid "Technology Redirection URL"
     737msgstr ""
     738
     739#: pro/app/views/links/tech_row.php:89
     740msgid "This is the URL that this Pretty Link will redirect to if the visitor's device, os and browser match the settings here."
     741msgstr ""
     742
     743#: pro/app/views/links/prettybar.php:46
     744msgid "You're viewing: %s"
     745msgstr ""
     746
     747#: pro/app/views/links/prettybar.php:46
     748msgid "Viewing: %s"
     749msgstr ""
     750
     751#: pro/app/views/links/prettybar.php:51
     752msgid "Share on Twitter"
     753msgstr ""
     754
     755#: pro/app/views/links/prettybar.php:68
     756msgid "Powered by"
     757msgstr ""
     758
     759#: pro/app/views/links/geo_row.php:12
     760msgid "Countries:"
     761msgstr ""
     762
     763#: pro/app/views/links/geo_row.php:15
     764msgid "Technology Redirection Countries"
     765msgstr ""
     766
     767#: pro/app/views/links/geo_row.php:16
     768msgid "This is a comma-separated list of countries that this redirect will match on. Just start typing a country's name and an autocomplete dropdown will appear to select from. Once a country is selected, feel free to start typing the name of another country. You can add as many as you'd like this redirect to match on"
     769msgstr ""
     770
     771#: pro/app/views/links/geo_row.php:28
     772msgid "Geographic Redirection URL"
     773msgstr ""
     774
     775#: pro/app/views/links/geo_row.php:29
     776msgid "This is the URL that this Pretty Link will redirect to if the visitor's country match the settings here."
     777msgstr ""
     778
     779#: pro/app/views/public/form.php:28
     780msgid "ERROR:"
     781msgstr ""
     782
     783#: pro/app/views/reports/edit.php:7
     784msgid "Edit Link Report"
     785msgstr ""
     786
     787#: pro/app/views/reports/edit.php:18
     788#: app/views/groups/edit.php:21
     789msgid "Name:"
     790msgstr ""
     791
     792#: pro/app/views/reports/edit.php:20
     793#: pro/app/views/reports/new.php:19
     794msgid "This is how you'll identify your Report."
     795msgstr ""
     796
     797#: pro/app/views/reports/edit.php:26
     798#: pro/app/views/reports/new.php:26
     799msgid "Select Links to Analyze in this Report:"
     800msgstr ""
     801
     802#: pro/app/views/reports/edit.php:36
     803#: pro/app/views/reports/new.php:36
     804msgid "Select some links to be analyzed in this report."
     805msgstr ""
     806
     807#: pro/app/views/reports/edit.php:39
     808#: pro/app/views/reports/new.php:39
     809msgid "Select Your Goal Link (optional):"
     810msgstr ""
     811
     812#: pro/app/views/reports/edit.php:44
     813#: pro/app/views/reports/list.php:32
     814#: pro/app/views/reports/list.php:86
     815#: pro/app/views/reports/new.php:44
     816#: app/views/groups/edit.php:36
     817#: app/views/groups/list.php:41
     818#: app/views/groups/list.php:93
     819#: app/views/groups/new.php:37
     820msgid "Name"
     821msgstr ""
     822
     823#: pro/app/views/reports/edit.php:60
     824#: pro/app/views/reports/new.php:60
     825msgid "If you want to enable conversion tracking in this report then select a goal link."
     826msgstr ""
     827
     828#: pro/app/views/reports/edit.php:66
     829#: app/views/options/form.php:999
     830#: app/views/groups/edit.php:72
     831#: app/controllers/PrliAppController.php:377
     832msgid "Update"
     833msgstr ""
     834
     835#: pro/app/views/reports/edit.php:66
     836#: pro/app/views/reports/split-test-report.php:19
     837#: pro/app/views/reports/custom-report.php:22
     838#: pro/app/views/reports/new.php:66
     839#: app/views/groups/edit.php:72
     840#: app/views/groups/new.php:71
     841#: app/views/clicks/list.php:43
     842msgid "Cancel"
     843msgstr ""
     844
     845#: pro/app/views/reports/list.php:4
     846#: pro/app/views/reports/reports.php:7
     847msgid "Link Reports"
     848msgstr ""
     849
     850#: pro/app/views/reports/list.php:5
     851msgid "Add Report"
     852msgstr ""
     853
     854#: pro/app/views/reports/list.php:18
     855#: app/views/groups/list.php:20
     856msgid "Search"
     857msgstr ""
     858
     859#: pro/app/views/reports/list.php:20
     860#: app/views/groups/list.php:24
     861#: app/views/clicks/list.php:64
     862#: app/controllers/PrliLinksController.php:502
     863msgid "Reset"
     864msgstr ""
     865
     866#: pro/app/views/reports/list.php:42
     867#: pro/app/views/reports/list.php:88
     868#: app/views/options/form.php:51
     869#: app/views/groups/list.php:46
     870#: app/views/groups/list.php:80
     871#: app/views/groups/list.php:94
     872msgid "Links"
     873msgstr ""
     874
     875#: pro/app/views/reports/list.php:47
     876#: pro/app/views/reports/list.php:89
     877#: app/views/groups/list.php:51
     878#: app/views/groups/list.php:95
     879msgid "Created"
     880msgstr ""
     881
     882#: pro/app/views/reports/list.php:57
     883msgid "No Pretty Link Reports were found"
     884msgstr ""
     885
     886#: pro/app/views/reports/list.php:68
     887#: pro/app/views/reports/list.php:71
     888#: app/helpers/PrliLinksHelper.php:67
     889#: app/views/groups/list.php:75
     890#: app/views/groups/list.php:78
     891msgid "Edit %s"
     892msgstr ""
     893
     894#: pro/app/views/reports/list.php:71
     895#: app/views/groups/list.php:78
     896msgid "Edit"
     897msgstr ""
     898
     899#: pro/app/views/reports/list.php:72
     900msgid "Are you sure you want to delete your %s Pretty Link Report?"
     901msgstr ""
     902
     903#: pro/app/views/reports/list.php:72
     904#: app/helpers/PrliLinksHelper.php:68
     905#: app/views/groups/list.php:79
     906msgid "Delete %s"
     907msgstr ""
     908
     909#: pro/app/views/reports/list.php:72
     910#: app/views/groups/list.php:79
     911msgid "Delete"
     912msgstr ""
     913
     914#: pro/app/views/reports/list.php:73
     915msgid "View report for %s"
     916msgstr ""
     917
     918#: pro/app/views/reports/list.php:73
     919msgid "View"
     920msgstr ""
     921
     922#: pro/app/views/reports/split-test-report.php:4
     923msgid "Link Split-Test Report"
     924msgstr ""
     925
     926#: pro/app/views/reports/split-test-report.php:5
     927msgid "For Link:"
     928msgstr ""
     929
     930#: pro/app/views/reports/split-test-report.php:7
     931msgid "Goal Link:"
     932msgstr ""
     933
     934#: pro/app/views/reports/split-test-report.php:9
     935#: app/views/clicks/list.php:18
     936msgid "Back to Links"
     937msgstr ""
     938
     939#: pro/app/views/reports/split-test-report.php:9
     940#: pro/app/views/reports/custom-report.php:12
     941#: app/views/clicks/list.php:11
     942msgid "Customize Report"
     943msgstr ""
     944
     945#: pro/app/views/reports/split-test-report.php:13
     946#: pro/app/views/reports/custom-report.php:16
     947#: app/views/clicks/list.php:37
     948msgid "Date Range:"
     949msgstr ""
     950
     951#: pro/app/views/reports/split-test-report.php:19
     952#: pro/app/views/reports/custom-report.php:22
     953#: app/views/clicks/list.php:43
     954msgid "Customize"
     955msgstr ""
     956
     957#: pro/app/views/reports/split-test-report.php:27
     958msgid "Link Rotation URL"
     959msgstr ""
     960
     961#: pro/app/views/reports/split-test-report.php:32
     962#: pro/app/views/reports/split-test-report.php:64
     963#: pro/app/views/reports/custom-report.php:35
     964#: pro/app/views/reports/custom-report.php:68
     965msgid "Conv Rate"
     966msgstr ""
     967
     968#: pro/app/views/reports/split-test-report.php:59
     969msgid "Rotation URL"
     970msgstr ""
     971
     972#: pro/app/views/reports/custom-report.php:7
     973msgid "Link Report"
     974msgstr ""
     975
     976#: pro/app/views/reports/custom-report.php:8
     977msgid "Report:"
     978msgstr ""
     979
     980#: pro/app/views/reports/custom-report.php:10
     981msgid "For Goal Link:"
     982msgstr ""
     983
     984#: pro/app/views/reports/custom-report.php:30
     985#: pro/app/views/reports/custom-report.php:63
     986msgid "Link Name"
     987msgstr ""
     988
     989#: pro/app/views/reports/reports.php:4
     990#: pro/app/controllers/PlpReportsController.php:15
     991msgid "Reports"
     992msgstr ""
     993
     994#: pro/app/views/reports/new.php:7
     995msgid "Add Link Report"
     996msgstr ""
     997
     998#: pro/app/views/reports/new.php:17
     999#: app/views/groups/new.php:22
     1000msgid "Name*:"
     1001msgstr ""
     1002
     1003#: pro/app/views/reports/new.php:66
     1004#: app/views/groups/new.php:71
     1005#: app/views/widgets/widget.php:21
     1006msgid "Create"
     1007msgstr ""
     1008
     1009#: pro/app/views/options/form.php:4
     1010#: app/views/options/form.php:305
     1011msgid "Keyword &amp; URL Auto Replacements Options"
     1012msgstr ""
     1013
     1014#: pro/app/views/options/form.php:13
     1015#: app/views/options/form.php:312
     1016msgid "Enable Replacements"
     1017msgstr ""
     1018
     1019#: pro/app/views/options/form.php:15
     1020#: app/views/options/form.php:314
     1021msgid "Enable Keyword and URL Auto Replacement"
     1022msgstr ""
     1023
     1024#: pro/app/views/options/form.php:16
     1025#: app/views/options/form.php:315
     1026msgid "If checked, this will enable you to automatically replace keywords and/or URLs on your blog with pretty links. You will specify the specific keywords and urls from your Pretty Link edit page."
     1027msgstr ""
     1028
     1029#: pro/app/views/options/form.php:34
     1030#: app/views/options/form.php:334
     1031msgid "Thresholds"
     1032msgstr ""
     1033
     1034#: pro/app/views/options/form.php:36
     1035#: app/views/options/form.php:336
     1036msgid "Set Keyword Replacement Thresholds"
     1037msgstr ""
     1038
     1039#: pro/app/views/options/form.php:37
     1040#: app/views/options/form.php:337
     1041msgid "Don't want to have too many keyword replacements per page? Select to set some reasonable keyword replacement thresholds."
     1042msgstr ""
     1043
     1044#: pro/app/views/options/form.php:54
     1045msgid "Max Keywords"
     1046msgstr ""
     1047
     1048#: pro/app/views/options/form.php:56
     1049msgid "Set Maximum Keywords per Page"
     1050msgstr ""
     1051
     1052#: pro/app/views/options/form.php:57
     1053msgid "Maximum number of unique keyword / keyphrases you can replace with Pretty Links per page."
     1054msgstr ""
     1055
     1056#: pro/app/views/options/form.php:68
     1057msgid "Max Replacements"
     1058msgstr ""
     1059
     1060#: pro/app/views/options/form.php:70
     1061msgid "Set Maximum Replacements per Keyword"
     1062msgstr ""
     1063
     1064#: pro/app/views/options/form.php:71
     1065msgid "Maximum number of Pretty Link replacements per Keyword / Keyphrase."
     1066msgstr ""
     1067
     1068#: pro/app/views/options/form.php:87
     1069#: app/views/options/form.php:353
     1070msgid "Open in New Window"
     1071msgstr ""
     1072
     1073#: pro/app/views/options/form.php:89
     1074#: app/views/options/form.php:355
     1075msgid "Open Keyword Replacement Links in New Window"
     1076msgstr ""
     1077
     1078#. translators: %1$s: open strong tag, %2$s: close strong tag
     1079#: pro/app/views/options/form.php:92
     1080#: app/views/options/form.php:358
     1081msgid "Ensure that these keyword replacement links are opened in a separate window. %1$sNote:%2$s This does not apply to url replacements--only keyword replacements."
     1082msgstr ""
     1083
     1084#: pro/app/views/options/form.php:106
     1085#: app/views/options/form.php:373
     1086msgid "Add No Follows"
     1087msgstr ""
     1088
     1089#: pro/app/views/options/form.php:108
     1090#: app/views/options/form.php:375
     1091msgid "Add 'nofollow' attribute to all Keyword Pretty Links"
     1092msgstr ""
     1093
     1094#. translators: %1$s: open code tag, %2$s: close code tag, %3$s: open strong tag, %4$s close strong tag
     1095#: pro/app/views/options/form.php:111
     1096#: app/views/options/form.php:378
     1097msgid "This adds the html %1$sNOFOLLOW%2$s attribute to all keyword replacement links. %3$sNote:%4$s This does not apply to url replacements--only keyword replacements."
     1098msgstr ""
     1099
     1100#: pro/app/views/options/form.php:127
     1101#: app/views/options/form.php:395
     1102msgid "Custom CSS"
     1103msgstr ""
     1104
     1105#: pro/app/views/options/form.php:129
     1106#: app/views/options/form.php:397
     1107msgid "Add custom CSS to your keyword replacement links"
     1108msgstr ""
     1109
     1110#. translators: %1$s: open strong tag, %2$s: close strong tag
     1111#: pro/app/views/options/form.php:132
     1112#: app/views/options/form.php:400
     1113msgid "Add some custom formatting to your keyword pretty link replacements. %1$sNote:%2$s This does not apply to url replacements--only keyword replacements."
     1114msgstr ""
     1115
     1116#: pro/app/views/options/form.php:146
     1117#: app/views/options/form.php:415
     1118msgid "Custom Hover CSS"
     1119msgstr ""
     1120
     1121#: pro/app/views/options/form.php:148
     1122#: app/views/options/form.php:417
     1123msgid "Add custom hover CSS to your keyword replacement links"
     1124msgstr ""
     1125
     1126#. translators: %1$s: open strong tag, %2$s: close strong tag
     1127#: pro/app/views/options/form.php:151
     1128#: app/views/options/form.php:420
     1129msgid "Add some custom formatting to the hover attribute of your keyword pretty links. %1$sNote%2$s: This does not apply to url replacements--only keyword replacements."
     1130msgstr ""
     1131
     1132#: pro/app/views/options/form.php:165
     1133#: app/views/options/form.php:435
     1134msgid "Link to Disclosures"
     1135msgstr ""
     1136
     1137#: pro/app/views/options/form.php:168
     1138#: app/views/options/form.php:438
     1139msgid "Automatically Add a Link to Disclosures"
     1140msgstr ""
     1141
     1142#: pro/app/views/options/form.php:169
     1143#: app/views/options/form.php:439
     1144msgid "When enabled, this will add a link to your official affiliate link disclosure page to any page, post or custom post type that have any keyword or URL replacements. You'll also be able to customize the URL and position of the disclosure link."
     1145msgstr ""
     1146
     1147#: pro/app/views/options/form.php:190
     1148msgid "Disclosures Link URL"
     1149msgstr ""
     1150
     1151#: pro/app/views/options/form.php:191
     1152msgid "This is the URL of the page that contains your official affiliate link disclosures. This URL will be used in the link that will be generated."
     1153msgstr ""
     1154
     1155#: pro/app/views/options/form.php:202
     1156msgid "Text"
     1157msgstr ""
     1158
     1159#: pro/app/views/options/form.php:205
     1160msgid "Disclosures Link Text"
     1161msgstr ""
     1162
     1163#: pro/app/views/options/form.php:206
     1164msgid "This is the text of the link to your disclosures. This text will be visible to your visitors when the link is displayed."
     1165msgstr ""
     1166
     1167#: pro/app/views/options/form.php:217
     1168msgid "Position"
     1169msgstr ""
     1170
     1171#: pro/app/views/options/form.php:220
     1172msgid "Disclosures Link Position"
     1173msgstr ""
     1174
     1175#: pro/app/views/options/form.php:221
     1176msgid "This is the position of the link to your disclosures in relation to your post content."
     1177msgstr ""
     1178
     1179#: pro/app/views/options/form.php:227
     1180#: pro/app/views/options/form.php:810
     1181#: app/views/options/form.php:946
     1182msgid "Bottom"
     1183msgstr ""
     1184
     1185#: pro/app/views/options/form.php:228
     1186#: pro/app/views/options/form.php:809
     1187#: app/views/options/form.php:945
     1188msgid "Top"
     1189msgstr ""
     1190
     1191#: pro/app/views/options/form.php:229
     1192#: pro/app/views/options/form.php:811
     1193#: app/views/options/form.php:947
     1194msgid "Top and Bottom"
     1195msgstr ""
     1196
     1197#: pro/app/views/options/form.php:241
     1198#: app/views/options/form.php:452
     1199msgid "Keyword Disclosures"
     1200msgstr ""
     1201
     1202#: pro/app/views/options/form.php:244
     1203#: app/views/options/form.php:455
     1204msgid "Automatically Add Affiliate Link Disclosures to Keyword Replacements"
     1205msgstr ""
     1206
     1207#. translators: %1$s: open b tag, %2$s close b tag
     1208#: pro/app/views/options/form.php:247
     1209#: app/views/options/form.php:458
     1210msgid "When enabled, this will add an affiliate link disclosure next to each one of your keyword replacements. %1$sNote:%2$s This does not apply to url replacements--only keyword replacements."
     1211msgstr ""
     1212
     1213#: pro/app/views/options/form.php:268
     1214msgid "Disclosure Text"
     1215msgstr ""
     1216
     1217#: pro/app/views/options/form.php:271
     1218msgid "Keyword Link Disclosure Text"
     1219msgstr ""
     1220
     1221#: pro/app/views/options/form.php:272
     1222msgid "This is the text that will be added after each keyword replacement to indicate that the link is an affiliate link."
     1223msgstr ""
     1224
     1225#: pro/app/views/options/form.php:288
     1226#: app/views/options/form.php:474
     1227msgid "Replace All URLs"
     1228msgstr ""
     1229
     1230#: pro/app/views/options/form.php:290
     1231#: app/views/options/form.php:476
     1232msgid "Replace All non-Pretty Link URLs With Pretty Link URLs"
     1233msgstr ""
     1234
     1235#: pro/app/views/options/form.php:291
     1236#: app/views/options/form.php:477
     1237msgid "This feature will take each url it finds and create or use an existing pretty link pointing to the url and replace it with the pretty link."
     1238msgstr ""
     1239
     1240#: pro/app/views/options/form.php:308
     1241msgid "Domain Blacklist"
     1242msgstr ""
     1243
     1244#: pro/app/views/options/form.php:310
     1245msgid "Do not replace links from these domains"
     1246msgstr ""
     1247
     1248#. translators: %1$s: br tag, %2$s: open b tag, %3$s: close b tag
     1249#: pro/app/views/options/form.php:313
     1250msgid "Any links on your site which point to domains you define here will not be replaced automatically with Pretty Links. Place one domain per line.%1$s%1$sYou MUST enter http:// or https:// in front of the domain names and do NOT include any /'s or other text after the domain name.%1$s%1$sProper entry example:%1$s%2$shttps://www.google.com%3$s%1$s%2$shttp://mysite.org%3$s%1$s%1$sImproperly entered domains will be removed upon saving the Options."
     1251msgstr ""
     1252
     1253#: pro/app/views/options/form.php:333
     1254#: app/views/options/form.php:489
     1255msgid "Replace in Comments"
     1256msgstr ""
     1257
     1258#: pro/app/views/options/form.php:335
     1259#: app/views/options/form.php:491
     1260msgid "Replace Keywords and URLs in Comments"
     1261msgstr ""
     1262
     1263#: pro/app/views/options/form.php:336
     1264#: app/views/options/form.php:492
     1265msgid "This option will enable the keyword / URL replacement routine to run in Comments."
     1266msgstr ""
     1267
     1268#: pro/app/views/options/form.php:347
     1269#: app/views/options/form.php:504
     1270msgid "Replace in Feeds"
     1271msgstr ""
     1272
     1273#: pro/app/views/options/form.php:349
     1274#: app/views/options/form.php:506
     1275msgid "Replace Keywords and URLs in Feeds"
     1276msgstr ""
     1277
     1278#. translators: %1$s: br tag, %2$s open strong tag, %3$s: close strong tag
     1279#: pro/app/views/options/form.php:352
     1280#: app/views/options/form.php:509
     1281msgid "This option will enable the keyword / URL replacement routine to run in RSS Feeds.%1$s%2$sNote:%3$s This option can slow the load speed of your RSS feed -- unless used in conjunction with a caching plugin like W3 Total Cache or WP Super Cache.%1$s%2$sNote #2%3$s This option will only work if you have \"Full Text\" selected in your General WordPress Reading settings.%1$s%2$sNote #3:%3$s If this option is used along with \"Replace Keywords and URLs in Comments\" then your post comment feeds will have keywords replaced in them as well."
     1282msgstr ""
     1283
     1284#: pro/app/views/options/form.php:367
     1285#: pro/app/views/options/form.php:369
     1286#: app/views/options/form.php:525
     1287#: app/views/options/form.php:527
     1288msgid "Index Replacements"
     1289msgstr ""
     1290
     1291#. translators: %1$s: br tag, %2$s open strong tag, %3$s: close strong tag
     1292#: pro/app/views/options/form.php:372
     1293#: app/views/options/form.php:530
     1294msgid "This feature will index all of your keyword & URL replacements to dramatically improve performance.%1$s%1$sIf your site has a large number of replacements and/or posts then this feature may increase the load on your server temporarily and your replacements may not show up on your posts for a day or two initially (until all posts are indexed).%1$s%1$s%2$sNote:%3$s this feature requires the use of wp-cron."
     1295msgstr ""
     1296
     1297#: pro/app/views/options/form.php:393
     1298#: pro/app/views/options/form.php:395
     1299msgid "Keyword Index Status"
     1300msgstr ""
     1301
     1302#: pro/app/views/options/form.php:396
     1303msgid "This shows how many posts have keywords indexed for and are ready for replacement."
     1304msgstr ""
     1305
     1306#: pro/app/views/options/form.php:404
     1307#: pro/app/views/options/form.php:427
     1308msgid "%1$s out of %2$s Posts Indexed"
     1309msgstr ""
     1310
     1311#: pro/app/views/options/form.php:408
     1312#: pro/app/views/options/form.php:431
     1313msgid "%1$s out of %2$s Comments Indexed"
     1314msgstr ""
     1315
     1316#: pro/app/views/options/form.php:416
     1317msgid "URL Index Status"
     1318msgstr ""
     1319
     1320#: pro/app/views/options/form.php:418
     1321msgid "URL Replacements Index Status"
     1322msgstr ""
     1323
     1324#: pro/app/views/options/form.php:419
     1325msgid "This shows how many posts have url replacements indexed for and are ready for replacement."
     1326msgstr ""
     1327
     1328#: pro/app/views/options/form.php:447
     1329#: app/views/options/form.php:549
     1330msgid "Auto-Create Shortlink Options"
     1331msgstr ""
     1332
     1333#: pro/app/views/options/form.php:468
     1334#: app/views/options/form.php:593
     1335msgid "Pretty Bar Options"
     1336msgstr ""
     1337
     1338#: pro/app/views/options/form.php:474
     1339#: app/views/options/form.php:599
     1340msgid "Image URL"
     1341msgstr ""
     1342
     1343#: pro/app/views/options/form.php:476
     1344#: app/views/options/form.php:601
     1345msgid "Pretty Bar Image URL"
     1346msgstr ""
     1347
     1348#: pro/app/views/options/form.php:477
     1349#: app/views/options/form.php:602
     1350msgid "If set, this will replace the logo image on the Pretty Bar. The image that this URL references should be 48x48 Pixels to fit."
     1351msgstr ""
     1352
     1353#: pro/app/views/options/form.php:488
     1354#: app/views/options/form.php:614
     1355msgid "Background Image URL"
     1356msgstr ""
     1357
     1358#: pro/app/views/options/form.php:490
     1359#: app/views/options/form.php:616
     1360msgid "Pretty Bar Background Image URL"
     1361msgstr ""
     1362
     1363#: pro/app/views/options/form.php:491
     1364#: app/views/options/form.php:617
     1365msgid "If set, this will replace the background image on Pretty Bar. The image that this URL references should be 65px tall - this image will be repeated horizontally across the bar."
     1366msgstr ""
     1367
     1368#: pro/app/views/options/form.php:502
     1369#: app/views/options/form.php:629
     1370msgid "Background Color"
     1371msgstr ""
     1372
     1373#: pro/app/views/options/form.php:504
     1374#: app/views/options/form.php:631
     1375msgid "Pretty Bar Background Color"
     1376msgstr ""
     1377
     1378#: pro/app/views/options/form.php:505
     1379#: app/views/options/form.php:632
     1380msgid "This will alter the background color of the Pretty Bar if you haven't specified a Pretty Bar background image."
     1381msgstr ""
     1382
     1383#: pro/app/views/options/form.php:516
     1384#: app/views/options/form.php:644
     1385msgid "Text Color"
     1386msgstr ""
     1387
     1388#: pro/app/views/options/form.php:518
     1389#: app/views/options/form.php:646
     1390msgid "Pretty Bar Text Color"
     1391msgstr ""
     1392
     1393#. translators: %1$s: open code tag, %2$s: close code tag
     1394#: pro/app/views/options/form.php:521
     1395#: app/views/options/form.php:649
     1396msgid "If not set, this defaults to black (RGB value %1$s#000000%2$s) but you can change it to whatever color you like."
     1397msgstr ""
     1398
     1399#: pro/app/views/options/form.php:535
     1400#: app/views/options/form.php:664
     1401msgid "Link Color"
     1402msgstr ""
     1403
     1404#: pro/app/views/options/form.php:537
     1405#: app/views/options/form.php:666
     1406msgid "Pretty Bar Link Color"
     1407msgstr ""
     1408
     1409#. translators: %1$s: open code tag, %2$s: close code tag
     1410#: pro/app/views/options/form.php:540
     1411#: app/views/options/form.php:669
     1412msgid "If not set, this defaults to blue (RGB value %1$s#0000ee%2$s) but you can change it to whatever color you like."
     1413msgstr ""
     1414
     1415#: pro/app/views/options/form.php:554
     1416#: app/views/options/form.php:684
     1417msgid "Link Hover Color"
     1418msgstr ""
     1419
     1420#: pro/app/views/options/form.php:556
     1421#: app/views/options/form.php:686
     1422msgid "Pretty Bar Link Hover Color"
     1423msgstr ""
     1424
     1425#. translators: %1$s: open code tag, %2$s: close code tag
     1426#: pro/app/views/options/form.php:559
     1427#: app/views/options/form.php:689
     1428msgid "If not set, this defaults to RGB value %1$s#ababab%2$s but you can change it to whatever color you like."
     1429msgstr ""
     1430
     1431#: pro/app/views/options/form.php:573
     1432#: app/views/options/form.php:704
     1433msgid "Visited Link Color"
     1434msgstr ""
     1435
     1436#: pro/app/views/options/form.php:575
     1437#: app/views/options/form.php:706
     1438msgid "Pretty Bar Visited Link Color"
     1439msgstr ""
     1440
     1441#. translators: %1$s: open code tag, %2$s: close code tag
     1442#: pro/app/views/options/form.php:578
     1443#: app/views/options/form.php:709
     1444msgid "If not set, this defaults to RGB value %1$s#551a8b%2$s but you can change it to whatever color you like."
     1445msgstr ""
     1446
     1447#: pro/app/views/options/form.php:592
     1448#: app/views/options/form.php:724
     1449msgid "Title Char Limit"
     1450msgstr ""
     1451
     1452#: pro/app/views/options/form.php:594
     1453#: app/views/options/form.php:726
     1454msgid "Pretty Bar Title Char Limit"
     1455msgstr ""
     1456
     1457#. translators: %1$s: open code tag, %2$s: close code tag
     1458#: pro/app/views/options/form.php:597
     1459#: app/views/options/form.php:729
     1460msgid "If your Website has a long title then you may need to adjust this value so that it will all fit on the Pretty Bar. It is recommended that you keep this value to %1$s30%2$s characters or less so the Pretty Bar's format looks good across different browsers and screen resolutions."
     1461msgstr ""
     1462
     1463#: pro/app/views/options/form.php:611
     1464#: app/views/options/form.php:744
     1465msgid "Description Char Limit"
     1466msgstr ""
     1467
     1468#: pro/app/views/options/form.php:613
     1469#: app/views/options/form.php:746
     1470msgid "Pretty Bar Description Char Limit"
     1471msgstr ""
     1472
     1473#. translators: %1$s: open code tag, %2$s: close code tag
     1474#: pro/app/views/options/form.php:616
     1475#: app/views/options/form.php:749
     1476msgid "If your Website has a long Description (tagline) then you may need to adjust this value so that it will all fit on the Pretty Bar. It is recommended that you keep this value to %1$s40%2$s characters or less so the Pretty Bar's format looks good across different browsers and screen resolutions."
     1477msgstr ""
     1478
     1479#: pro/app/views/options/form.php:630
     1480#: app/views/options/form.php:764
     1481msgid "Target URL Char Limit"
     1482msgstr ""
     1483
     1484#: pro/app/views/options/form.php:632
     1485#: app/views/options/form.php:766
     1486msgid "Pretty Bar Target URL Char Limit"
     1487msgstr ""
     1488
     1489#. translators: %1$s: open code tag, %2$s: close code tag
     1490#: pro/app/views/options/form.php:635
     1491#: app/views/options/form.php:769
     1492msgid "If you link to a lot of large Target URLs you may want to adjust this value. It is recommended that you keep this value to %1$s40%2$s or below so the Pretty Bar's format looks good across different browsers and URL sizes"
     1493msgstr ""
     1494
     1495#: pro/app/views/options/form.php:649
     1496#: app/views/options/form.php:784
     1497msgid "Show Title"
     1498msgstr ""
     1499
     1500#: pro/app/views/options/form.php:651
     1501#: app/views/options/form.php:786
     1502msgid "Pretty Bar Show Title"
     1503msgstr ""
     1504
     1505#: pro/app/views/options/form.php:652
     1506#: app/views/options/form.php:787
     1507msgid "Make sure this is checked if you want the title of your blog (and link) to show up on the Pretty Bar."
     1508msgstr ""
     1509
     1510#: pro/app/views/options/form.php:663
     1511#: app/views/options/form.php:799
     1512msgid "Show Description"
     1513msgstr ""
     1514
     1515#: pro/app/views/options/form.php:665
     1516#: app/views/options/form.php:801
     1517msgid "Pretty Bar Show Description"
     1518msgstr ""
     1519
     1520#: pro/app/views/options/form.php:666
     1521#: app/views/options/form.php:802
     1522msgid "Make sure this is checked if you want your site description to show up on the Pretty Bar."
     1523msgstr ""
     1524
     1525#: pro/app/views/options/form.php:677
     1526#: app/views/options/form.php:814
     1527msgid "Show Share Links"
     1528msgstr ""
     1529
     1530#: pro/app/views/options/form.php:679
     1531#: app/views/options/form.php:816
     1532msgid "Pretty Bar Show Share Links"
     1533msgstr ""
     1534
     1535#: pro/app/views/options/form.php:680
     1536#: app/views/options/form.php:817
     1537msgid "Make sure this is checked if you want \"share links\" to show up on the Pretty Bar."
     1538msgstr ""
     1539
     1540#: pro/app/views/options/form.php:691
     1541#: app/views/options/form.php:829
     1542msgid "Show Target URL"
     1543msgstr ""
     1544
     1545#: pro/app/views/options/form.php:693
     1546#: app/views/options/form.php:831
     1547msgid "Pretty Bar Show Target URL Links"
     1548msgstr ""
     1549
     1550#: pro/app/views/options/form.php:694
     1551#: app/views/options/form.php:832
     1552msgid "Make sure this is checked if you want a link displaying the Target URL to show up on the Pretty Bar."
     1553msgstr ""
     1554
     1555#: pro/app/views/options/form.php:705
     1556#: pro/app/views/options/form.php:707
     1557#: app/views/options/form.php:844
     1558#: app/views/options/form.php:846
     1559msgid "Hide Attribution Link"
     1560msgstr ""
     1561
     1562#. translators: %1$s: br tag, %2$s: open strong tag, %3$s close strong tag, %4$s open em tag, %5$s close em tag, %6$s open link tag, %7$s close link tag
     1563#: pro/app/views/options/form.php:710
     1564#: app/views/options/form.php:849
     1565msgid "Check this to hide the pretty link attribution link on the pretty bar.%1$s%1$s%2$sWait, before you do this, you might want to leave this un-checked and set the alternate URL of this link to your %4$sPretty Links Pro%5$s %6$sAffiliate URL%7$s to earn a few bucks while you are at it.%3$s"
     1566msgstr ""
     1567
     1568#: pro/app/views/options/form.php:736
     1569#: app/views/options/form.php:876
     1570msgid "Attribution URL"
     1571msgstr ""
     1572
     1573#: pro/app/views/options/form.php:738
     1574#: app/views/options/form.php:878
     1575msgid "Alternate Pretty Bar Attribution URL"
     1576msgstr ""
     1577
     1578#. translators: %1$s open em tag, %2$s close em tag, %3$s open link tag, %4$s close link tag
     1579#: pro/app/views/options/form.php:741
     1580#: app/views/options/form.php:881
     1581msgid "If set, this will replace the Pretty Bars attribution URL. This is a very good place to put your %1$sPretty Links Pro%2$s %3$sAffiliate Link%4$s."
     1582msgstr ""
     1583
     1584#: pro/app/views/options/form.php:760
     1585#: app/views/options/form.php:901
     1586msgid "Social Buttons Options"
     1587msgstr ""
     1588
     1589#: pro/app/views/options/form.php:763
     1590#: app/views/options/form.php:903
     1591msgid "Buttons"
     1592msgstr ""
     1593
     1594#: pro/app/views/options/form.php:765
     1595#: app/views/options/form.php:905
     1596msgid "Social Buttons"
     1597msgstr ""
     1598
     1599#. translators: %1$s: br tag, %2$s open code tag, %3$s close code tag
     1600#: pro/app/views/options/form.php:768
     1601#: app/views/options/form.php:908
     1602msgid "Select which buttons you want to be visible on the Social Buttons Bar.%1$s%1$s%2$sNote:%3$s In order for the Social Buttons Bar to be visible on Pages and or Posts, you must first enable it in the \"Page &amp; Post Options\" section above."
     1603msgstr ""
     1604
     1605#: pro/app/views/options/form.php:795
     1606#: app/views/options/form.php:930
     1607msgid "Buttons Placement"
     1608msgstr ""
     1609
     1610#: pro/app/views/options/form.php:797
     1611#: app/views/options/form.php:932
     1612msgid "Social Buttons Placement"
     1613msgstr ""
     1614
     1615#. translators: %1$s: br tag, %2$s open code tag, %3$s close code tag
     1616#: pro/app/views/options/form.php:800
     1617#: app/views/options/form.php:935
     1618msgid "This determines where your Social Buttons Placement should appear in relation to content on Pages and/or Posts.%1$s%1$s%2$sNote:%3$s If you want this bar to appear then you must enable it in the \"Auto-Create Links\" section above."
     1619msgstr ""
     1620
     1621#: pro/app/views/options/form.php:814
     1622#: app/views/options/form.php:950
     1623msgid "Social Buttons Manual Placement"
     1624msgstr ""
     1625
     1626#. translators: %1$s: example shortcode, %2$s: example template tag
     1627#: pro/app/views/options/form.php:817
     1628#: app/views/options/form.php:953
     1629msgid "If you select none, you can still show your Social Buttons by manually adding the %1$s shortcode to your blog posts or %2$s template tag to your WordPress Theme."
     1630msgstr ""
     1631
     1632#: pro/app/views/options/form.php:845
     1633#: app/views/options/form.php:966
     1634msgid "Public Links Creation Options"
     1635msgstr ""
     1636
     1637#: pro/app/views/options/form.php:851
     1638#: app/views/options/form.php:972
     1639msgid "Enable Public Links"
     1640msgstr ""
     1641
     1642#: pro/app/views/options/form.php:853
     1643#: app/views/options/form.php:974
     1644msgid "Enable Public Link Creation on this Site"
     1645msgstr ""
     1646
     1647#: pro/app/views/options/form.php:855
     1648#: app/views/options/form.php:976
     1649msgid "This option will give you the ability to turn your website into a link shortening service for your users. Once selected, you can enable the Pretty Links Pro Sidebar Widget or just display the link creation form with the %s shortcode in any post or page on your website."
     1650msgstr ""
     1651
     1652#: pro/app/views/options/form.php:874
     1653msgid "Use Display Page"
     1654msgstr ""
     1655
     1656#: pro/app/views/options/form.php:876
     1657msgid "Use Public Link Display Page"
     1658msgstr ""
     1659
     1660#: pro/app/views/options/form.php:877
     1661msgid "When a link is created using the public form, the user is typically redirected to a simple page displaying their new pretty link. But, you can specify a page that you want them to be redirected to on your website, using your branding instead by selecting this box and entering the url of the page you want them to go to."
     1662msgstr ""
     1663
     1664#: pro/app/views/options/form.php:894
     1665msgid "Display Page"
     1666msgstr ""
     1667
     1668#: pro/app/views/options/form.php:896
     1669msgid "Public Pretty Link Creation Display URL"
     1670msgstr ""
     1671
     1672#: pro/app/views/options/form.php:898
     1673msgid "To set this up, create a new page on your WordPress site and make sure the %s appears somewhere on this page -- otherwise the link will never get created. Once this page is created, just enter the full URL to it here. Make sure this URL does not end with a slash (/)."
     1674msgstr ""
     1675
     1676#: pro/app/views/options/autocreate.php:7
     1677msgid "%s Shortlinks"
     1678msgstr ""
     1679
     1680#: pro/app/views/options/autocreate.php:10
     1681msgid "Create Pretty Links for %s"
     1682msgstr ""
     1683
     1684#: pro/app/views/options/autocreate.php:11
     1685msgid "Automatically Create a Pretty Link for each of your published %s"
     1686msgstr ""
     1687
     1688#: pro/app/views/options/autocreate.php:30
     1689msgid "Category"
     1690msgstr ""
     1691
     1692#: pro/app/views/options/autocreate.php:33
     1693msgid "%s Auto Link Category"
     1694msgstr ""
     1695
     1696#: pro/app/views/options/autocreate.php:34
     1697msgid "Category that Pretty Links for %s will be automatically added to."
     1698msgstr ""
     1699
     1700#: pro/app/views/options/autocreate.php:51
     1701msgid "Add a New Category"
     1702msgstr ""
     1703
     1704#: pro/app/views/options/autocreate.php:57
     1705msgid "Show Social Buttons"
     1706msgstr ""
     1707
     1708#: pro/app/views/options/autocreate.php:60
     1709msgid "Show Social Buttons on %s"
     1710msgstr ""
     1711
     1712#: pro/app/views/options/autocreate.php:61
     1713msgid "If this button is checked then you'll have the ability to include a social buttons bar on your %s."
     1714msgstr ""
     1715
     1716#: pro/app/views/options/general.php:8
     1717msgid "Use Shortlink URL"
     1718msgstr ""
     1719
     1720#: pro/app/views/options/general.php:10
     1721msgid "Use an Alternate Shortlink URL"
     1722msgstr ""
     1723
     1724#: pro/app/views/options/general.php:11
     1725msgid "Use this option if you want to substitute your actual blog's url with another URL. You must have another valid domain name pointing to this WordPress install before you enable this option. If you are using this option to just get rid of the www in the beginning of your url that is fine -- just make sure your domain works without the www before enabling this option."
     1726msgstr ""
     1727
     1728#: pro/app/views/options/general.php:28
     1729#: pro/app/views/options/general.php:30
     1730msgid "Shortlink URL"
     1731msgstr ""
     1732
     1733#: pro/app/views/options/general.php:31
     1734msgid "Enter a valid base url that points at this WordPress install. Make sure this URL does not end with a slash (/)."
     1735msgstr ""
     1736
     1737#: pro/app/views/options/general.php:47
     1738msgid "Minimum Admin Role"
     1739msgstr ""
     1740
     1741#: pro/app/views/options/general.php:49
     1742msgid "Set Minimum Role Required To Access Pretty Link"
     1743msgstr ""
     1744
     1745#: pro/app/views/options/general.php:50
     1746msgid "Use this option to set the minimum role of users who can access the Admin interface for Pretty Link."
     1747msgstr ""
     1748
     1749#: pro/app/views/options/general.php:56
     1750msgid "Administrator"
     1751msgstr ""
     1752
     1753#: pro/app/views/options/general.php:57
     1754msgid "Editor"
     1755msgstr ""
     1756
     1757#: pro/app/views/options/general.php:58
     1758msgid "Author"
     1759msgstr ""
     1760
     1761#: pro/app/views/options/general.php:59
     1762msgid "Contributor"
     1763msgstr ""
     1764
     1765#: pro/app/views/options/general.php:60
     1766msgid "Subscriber"
     1767msgstr ""
     1768
     1769#: pro/app/views/tools/nav.php:3
     1770msgid "Custom Bookmarklet"
     1771msgstr ""
     1772
     1773#: pro/app/views/tools/generator.php:6
     1774msgid "Custom Bookmarklet:"
     1775msgstr ""
     1776
     1777#: pro/app/views/tools/generator.php:7
     1778#: pro/app/views/tools/generator.php:17
     1779#: app/views/tools/form.php:26
     1780msgid "Get Pretty Link"
     1781msgstr ""
     1782
     1783#: pro/app/views/tools/generator.php:9
     1784msgid "Customize Pretty Link Bookmarklet"
     1785msgstr ""
     1786
     1787#: pro/app/views/tools/generator.php:10
     1788msgid "Alter the options below to customize this Bookmarklet. As you modify the label, redirect type, tracking and category, you will see this bookmarklet update -- when the settings are how you want them, drag the bookmarklet into your toolbar. You can create as many bookmarklets as you want each with different settings."
     1789msgstr ""
     1790
     1791#: pro/app/views/tools/generator.php:13
     1792#: pro/app/widgets/PlpPublicLinksWidget.php:66
     1793msgid "Pretty Link Options"
     1794msgstr ""
     1795
     1796#: pro/app/views/tools/generator.php:16
     1797msgid "Label:"
     1798msgstr ""
     1799
     1800#: pro/app/views/tools/generator.php:20
     1801#: pro/app/widgets/PlpPublicLinksWidget.php:68
     1802msgid "Redirection:"
     1803msgstr ""
     1804
     1805#: pro/app/views/tools/generator.php:21
     1806#: pro/app/views/tools/generator.php:26
     1807#: pro/app/widgets/PlpPublicLinksWidget.php:70
     1808#: pro/app/widgets/PlpPublicLinksWidget.php:82
     1809#: app/views/shared/tinymce_form_popup.php:31
     1810#: app/views/shared/tinymce_form_popup.php:48
     1811#: app/views/shared/tinymce_form_popup.php:56
     1812msgid "Default"
     1813msgstr ""
     1814
     1815#: pro/app/views/tools/generator.php:24
     1816msgid "Tracking:"
     1817msgstr ""
     1818
     1819#: pro/app/views/tools/generator.php:27
     1820#: pro/app/widgets/PlpPublicLinksWidget.php:83
     1821#: app/views/admin/popups/rating.php:12
     1822msgid "Yes"
     1823msgstr ""
     1824
     1825#: pro/app/views/tools/generator.php:28
     1826#: pro/app/widgets/PlpPublicLinksWidget.php:84
     1827#: app/views/admin/popups/rating.php:13
     1828msgid "No"
     1829msgstr ""
     1830
     1831#: pro/app/views/tools/generator.php:32
     1832#: pro/app/widgets/PlpPublicLinksWidget.php:89
     1833msgid "Category:"
     1834msgstr ""
     1835
     1836#: pro/app/views/import-export/form.php:4
     1837msgid "Import / Export Links"
     1838msgstr ""
     1839
     1840#: pro/app/views/import-export/form.php:9
     1841#: pro/app/views/import-export/form.php:12
     1842msgid "Export Pretty Links"
     1843msgstr ""
     1844
     1845#: pro/app/views/import-export/form.php:13
     1846msgid "Export Links to a CSV File"
     1847msgstr ""
     1848
     1849#: pro/app/views/import-export/form.php:17
     1850msgid "Export"
     1851msgstr ""
     1852
     1853#: pro/app/views/import-export/form.php:22
     1854#: pro/app/views/import-export/form.php:25
     1855msgid "Import Pretty Links"
     1856msgstr ""
     1857
     1858#: pro/app/views/import-export/form.php:27
     1859msgid "There are two ways to import a file.%1$s%1$s1) Importing to update existing links and%1$s%1$s2) Importing to generate new links. When Importing to generate new links, you must delete the \"id\" column from the CSV before importing. If the \"id\" column is present, Pretty Links Pro will attempt to update existing links."
     1860msgstr ""
     1861
     1862#: pro/app/views/import-export/form.php:39
     1863msgid "Import"
     1864msgstr ""
     1865
     1866#: pro/app/views/import-export/form.php:42
     1867msgid "Links Import File"
     1868msgstr ""
     1869
     1870#: pro/app/views/import-export/form.php:43
     1871msgid "Select a file that has been formatted as a Pretty Link CSV import file and click \"Import\""
     1872msgstr ""
     1873
     1874#: pro/app/views/import-export/form.php:51
     1875msgid "Import/Export Help"
     1876msgstr ""
     1877
     1878#: pro/app/views/import-export/import.php:4
     1879msgid "Import Results"
     1880msgstr ""
     1881
     1882#: pro/app/views/import-export/import.php:5
     1883msgid "Total Rows: %s"
     1884msgstr ""
     1885
     1886#: pro/app/views/import-export/import.php:7
     1887msgid "%s Pretty Links were Successfully Created"
     1888msgstr ""
     1889
     1890#: pro/app/views/import-export/import.php:8
     1891msgid "%s Pretty Links were Successfully Updated"
     1892msgstr ""
     1893
     1894#: pro/app/views/import-export/import.php:13
     1895msgid "Pretty Links were unable to be Created: %s"
     1896msgstr ""
     1897
     1898#: pro/app/views/import-export/import.php:17
     1899msgid "Error(s) for Pretty Link with Slug: %s"
     1900msgstr ""
     1901
     1902#: pro/app/views/import-export/import.php:32
     1903msgid "Pretty Links were unable to be Updated: %s"
     1904msgstr ""
     1905
     1906#: pro/app/views/import-export/import.php:36
     1907msgid "Error(s) for Pretty Link with id: %s"
     1908msgstr ""
     1909
     1910#: pro/app/controllers/PlpLinksController.php:195
     1911msgid "Your URL Replacements must be formatted as a comma separated list of properly formatted URLs (http[s]://example.com/whatever)"
     1912msgstr ""
     1913
     1914#: pro/app/controllers/PlpLinksController.php:206
     1915msgid "Date must be valid and formatted YYYY-MM-DD."
     1916msgstr ""
     1917
     1918#: pro/app/controllers/PlpLinksController.php:218
     1919msgid "Expire Clicks must be a number greater than zero."
     1920msgstr ""
     1921
     1922#: pro/app/controllers/PlpLinksController.php:225
     1923msgid "Expired URL must be a valid URL."
     1924msgstr ""
     1925
     1926#: pro/app/controllers/PlpLinksController.php:237
     1927msgid "Your URL Rotations must all be properly formatted URLs."
     1928msgstr ""
     1929
     1930#: pro/app/controllers/PlpLinksController.php:246
     1931msgid "Your Link Rotation Weights must add up to 100%."
     1932msgstr ""
     1933
     1934#: pro/app/controllers/PlpLinksController.php:256
     1935msgid "Your Geographic Redirect URLs must all be properly formatted."
     1936msgstr ""
     1937
     1938#: pro/app/controllers/PlpLinksController.php:260
     1939msgid "Your Geographic Redirects URLs must not be empty."
     1940msgstr ""
     1941
     1942#: pro/app/controllers/PlpLinksController.php:264
     1943msgid "Your Geographic Redirect Countries must not be empty."
     1944msgstr ""
     1945
     1946#: pro/app/controllers/PlpLinksController.php:275
     1947msgid "Your Technology Redirect URLs must all be properly formatted."
     1948msgstr ""
     1949
     1950#: pro/app/controllers/PlpLinksController.php:279
     1951msgid "Your Technology Redirects URLs must not be empty."
     1952msgstr ""
     1953
     1954#: pro/app/controllers/PlpLinksController.php:290
     1955msgid "Your Time Period Redirect URLs must all be properly formatted."
     1956msgstr ""
     1957
     1958#: pro/app/controllers/PlpLinksController.php:294
     1959msgid "Your Time Period Redirects URLs must not be empty."
     1960msgstr ""
     1961
     1962#: pro/app/controllers/PlpLinksController.php:299
     1963msgid "Your Time Period Redirect start time must not be empty."
     1964msgstr ""
     1965
     1966#: pro/app/controllers/PlpLinksController.php:302
     1967msgid "Your Time Period Redirect start time must be a properly formatted date."
     1968msgstr ""
     1969
     1970#: pro/app/controllers/PlpLinksController.php:308
     1971msgid "Your Time Period Redirect end time must not be empty."
     1972msgstr ""
     1973
     1974#: pro/app/controllers/PlpLinksController.php:311
     1975msgid "Your Time Period Redirect end time must be a properly formatted date."
     1976msgstr ""
     1977
     1978#: pro/app/controllers/PlpLinksController.php:319
     1979msgid "Your Time Period Redirect start time must come before the end time."
     1980msgstr ""
     1981
     1982#: pro/app/controllers/PlpLinksController.php:327
     1983msgid "Delay Redirect must be a number"
     1984msgstr ""
     1985
     1986#: pro/app/controllers/PlpLinksController.php:623
     1987#: pro/app/controllers/PlpLinksController.php:668
     1988#: app/views/shared/tinymce_form_popup.php:37
     1989#: app/views/options/form.php:55
     1990msgid "Pretty Bar"
     1991msgstr ""
     1992
     1993#: pro/app/controllers/PlpLinksController.php:624
     1994#: app/views/shared/tinymce_form_popup.php:38
     1995msgid "Cloaked"
     1996msgstr ""
     1997
     1998#: pro/app/controllers/PlpLinksController.php:625
     1999#: pro/app/controllers/PlpLinksController.php:670
     2000#: app/views/shared/tinymce_form_popup.php:39
     2001msgid "Pixel"
     2002msgstr ""
     2003
     2004#: pro/app/controllers/PlpLinksController.php:626
     2005#: pro/app/controllers/PlpLinksController.php:671
     2006#: app/views/shared/tinymce_form_popup.php:40
     2007msgid "Meta Refresh"
     2008msgstr ""
     2009
     2010#: pro/app/controllers/PlpLinksController.php:627
     2011#: pro/app/controllers/PlpLinksController.php:672
     2012#: app/views/shared/tinymce_form_popup.php:41
     2013msgid "Javascript"
     2014msgstr ""
     2015
     2016#: pro/app/controllers/PlpLinksController.php:669
     2017#: pro/app/widgets/PlpPublicLinksWidget.php:75
     2018msgid "Cloak"
     2019msgstr ""
     2020
     2021#: pro/app/controllers/PlpLinksController.php:734
     2022msgid "View QR Code for this link: %s"
     2023msgstr ""
     2024
     2025#: pro/app/controllers/PlpLinksController.php:734
     2026#: pro/app/controllers/PlpLinksController.php:738
     2027msgid "QR Code"
     2028msgstr ""
     2029
     2030#: pro/app/controllers/PlpLinksController.php:738
     2031msgid "Download QR Code for this link: %s"
     2032msgstr ""
     2033
     2034#: pro/app/controllers/PlpLinksController.php:811
     2035msgid "This link expired on %1$s and will now cause a 404 error when visited"
     2036msgstr ""
     2037
     2038#: pro/app/controllers/PlpLinksController.php:814
     2039msgid "This link expired on %1$s and now redirects to %2$s"
     2040msgstr ""
     2041
     2042#: pro/app/controllers/PlpLinksController.php:818
     2043msgid "This link is set to expire after the date %s"
     2044msgstr ""
     2045
     2046#: pro/app/controllers/PlpLinksController.php:829
     2047msgid "This link expired after %d clicks and will now cause a 404 error when visited"
     2048msgstr ""
     2049
     2050#: pro/app/controllers/PlpLinksController.php:832
     2051msgid "This link expired after %1$d clicks and now redirects to %2$s"
     2052msgstr ""
     2053
     2054#: pro/app/controllers/PlpLinksController.php:836
     2055msgid "This link is set to expire after %d clicks"
     2056msgstr ""
     2057
     2058#: pro/app/controllers/PlpLinksController.php:844
     2059msgid "This link has additional Target URL rotations"
     2060msgstr ""
     2061
     2062#: pro/app/controllers/PlpLinksController.php:847
     2063msgid "This link has additional Geographic Target URLs"
     2064msgstr ""
     2065
     2066#: pro/app/controllers/PlpLinksController.php:850
     2067msgid "This link has additional Technology Dependent Conditional Target URLs"
     2068msgstr ""
     2069
     2070#: pro/app/controllers/PlpLinksController.php:855
     2071msgid "A Time Period Redirect is currently active for this link. When visited it will currently redirect to %s rather than the Target URL unless the link is expired."
     2072msgstr ""
     2073
     2074#: pro/app/controllers/PlpLinksController.php:859
     2075msgid "Time Period Redirects have been setup for this link but the current time is not within any of them currently."
     2076msgstr ""
     2077
     2078#: pro/app/controllers/PlpKeywordsController.php:68
     2079msgid "Pretty Link Post Build Index"
     2080msgstr ""
     2081
     2082#: pro/app/controllers/PlpLinkCategoriesController.php:13
     2083msgctxt "taxonomy general name"
     2084msgid "Link Categories"
     2085msgstr ""
     2086
     2087#: pro/app/controllers/PlpLinkCategoriesController.php:14
     2088msgctxt "taxonomy singular name"
     2089msgid "Link Category"
     2090msgstr ""
     2091
     2092#: pro/app/controllers/PlpLinkCategoriesController.php:15
     2093msgid "Search Link Categories"
     2094msgstr ""
     2095
     2096#: pro/app/controllers/PlpLinkCategoriesController.php:16
     2097msgid "All Link Categories"
     2098msgstr ""
     2099
     2100#: pro/app/controllers/PlpLinkCategoriesController.php:17
     2101msgid "Parent Link Category"
     2102msgstr ""
     2103
     2104#: pro/app/controllers/PlpLinkCategoriesController.php:18
     2105msgid "Parent Link Category:"
     2106msgstr ""
     2107
     2108#: pro/app/controllers/PlpLinkCategoriesController.php:19
     2109msgid "Edit Link Category"
     2110msgstr ""
     2111
     2112#: pro/app/controllers/PlpLinkCategoriesController.php:20
     2113msgid "Update Link Category"
     2114msgstr ""
     2115
     2116#: pro/app/controllers/PlpLinkCategoriesController.php:21
     2117msgid "Add New Link Category"
     2118msgstr ""
     2119
     2120#: pro/app/controllers/PlpLinkCategoriesController.php:22
     2121msgid "New Link Category Name"
     2122msgstr ""
     2123
     2124#: pro/app/controllers/PlpLinkCategoriesController.php:23
     2125#: app/controllers/PrliLinksController.php:370
     2126msgid "Categories"
     2127msgstr ""
     2128
     2129#: pro/app/controllers/PlpPrettyBarController.php:50
     2130msgid "Logo Image URL must be a correctly formatted URL"
     2131msgstr ""
     2132
     2133#: pro/app/controllers/PlpPrettyBarController.php:54
     2134msgid "Background Image URL must be a correctly formatted URL"
     2135msgstr ""
     2136
     2137#: pro/app/controllers/PlpPrettyBarController.php:60
     2138msgid "PrettyBar Background Color must be an actual RGB Value"
     2139msgstr ""
     2140
     2141#: pro/app/controllers/PlpPrettyBarController.php:64
     2142msgid "PrettyBar Text Color must be an actual RGB Value"
     2143msgstr ""
     2144
     2145#: pro/app/controllers/PlpPrettyBarController.php:68
     2146msgid "PrettyBar Link Color must be an actual RGB Value"
     2147msgstr ""
     2148
     2149#: pro/app/controllers/PlpPrettyBarController.php:72
     2150#: pro/app/controllers/PlpPrettyBarController.php:76
     2151msgid "PrettyBar Hover Color must be an actual RGB Value"
     2152msgstr ""
     2153
     2154#: pro/app/controllers/PlpPrettyBarController.php:80
     2155msgid "PrettyBar Title Character Limit must not be blank"
     2156msgstr ""
     2157
     2158#: pro/app/controllers/PlpPrettyBarController.php:84
     2159msgid "PrettyBar Description Character Limit must not be blank"
     2160msgstr ""
     2161
     2162#: pro/app/controllers/PlpPrettyBarController.php:88
     2163msgid "PrettyBar Link Character Limit must not be blank"
     2164msgstr ""
     2165
     2166#: pro/app/controllers/PlpPrettyBarController.php:92
     2167msgid "PrettyBar Title Character Limit must be a number"
     2168msgstr ""
     2169
     2170#: pro/app/controllers/PlpPrettyBarController.php:96
     2171msgid "PrettyBar Description Character Limit must be a number"
     2172msgstr ""
     2173
     2174#: pro/app/controllers/PlpPrettyBarController.php:100
     2175msgid "PrettyBar Link Character Limit must be a number"
     2176msgstr ""
     2177
     2178#: pro/app/controllers/PlpPostsController.php:50
     2179msgid "Pretty Links Pro"
     2180msgstr ""
     2181
     2182#: pro/app/controllers/PlpPostsController.php:54
     2183msgid "Pretty Links Pro Options"
     2184msgstr ""
     2185
     2186#: pro/app/controllers/PlpPostsController.php:139
     2187#: pro/app/controllers/PlpPostsController.php:155
     2188#: pro/app/controllers/PlpPostsController.php:236
     2189#: pro/app/controllers/PlpPostsController.php:249
     2190msgid "Untitled"
     2191msgstr ""
     2192
     2193#: pro/app/controllers/PlpReportsController.php:14
     2194msgid "Pretty Links Pro | Reports"
     2195msgstr ""
     2196
     2197#: pro/app/controllers/PlpReportsController.php:51
     2198msgid "Create a custom link report and analyze your data."
     2199msgstr ""
     2200
     2201#: pro/app/controllers/PlpReportsController.php:94
     2202msgid "Your Pretty Link Report was Successfully Created"
     2203msgstr ""
     2204
     2205#: pro/app/controllers/PlpReportsController.php:130
     2206msgid "Your Pretty Link Report was Successfully Updated"
     2207msgstr ""
     2208
     2209#: pro/app/controllers/PlpReportsController.php:139
     2210msgid "Your Pretty Link Report was Successfully Deleted"
     2211msgstr ""
     2212
     2213#: pro/app/controllers/PlpAppController.php:169
     2214msgid "ERROR: Your Pretty Link was unable to be created"
     2215msgstr ""
     2216
     2217#: pro/app/controllers/PlpAppController.php:173
     2218msgid "Unauthorized"
     2219msgstr ""
     2220
     2221#: pro/app/controllers/PlpPublicLinksController.php:37
     2222#: app/controllers/PrliLinksController.php:572
     2223msgid "Security check failed"
     2224msgstr ""
     2225
     2226#: pro/app/controllers/PlpLinkTagsController.php:13
     2227msgctxt "taxonomy general name"
     2228msgid "Link Tags"
     2229msgstr ""
     2230
     2231#: pro/app/controllers/PlpLinkTagsController.php:14
     2232msgctxt "taxonomy singular name"
     2233msgid "Link Tag"
     2234msgstr ""
     2235
     2236#: pro/app/controllers/PlpLinkTagsController.php:15
     2237msgid "Search Link Tags"
     2238msgstr ""
     2239
     2240#: pro/app/controllers/PlpLinkTagsController.php:16
     2241msgid "All Link Tags"
     2242msgstr ""
     2243
     2244#: pro/app/controllers/PlpLinkTagsController.php:19
     2245msgid "Edit Link Tag"
     2246msgstr ""
     2247
     2248#: pro/app/controllers/PlpLinkTagsController.php:20
     2249msgid "Update Link Tag"
     2250msgstr ""
     2251
     2252#: pro/app/controllers/PlpLinkTagsController.php:21
     2253msgid "Add New Link Tag"
     2254msgstr ""
     2255
     2256#: pro/app/controllers/PlpLinkTagsController.php:22
     2257msgid "New Link Tag Name"
     2258msgstr ""
     2259
     2260#: pro/app/controllers/PlpLinkTagsController.php:23
     2261msgid "Separate Link Tags with commas"
     2262msgstr ""
     2263
     2264#: pro/app/controllers/PlpLinkTagsController.php:24
     2265msgid "Add or remove Link Tags"
     2266msgstr ""
     2267
     2268#: pro/app/controllers/PlpLinkTagsController.php:25
     2269msgid "Choose from the most used Link Tags"
     2270msgstr ""
     2271
     2272#: pro/app/controllers/PlpLinkTagsController.php:26
     2273msgid "No Link Tags found."
     2274msgstr ""
     2275
     2276#: pro/app/controllers/PlpLinkTagsController.php:27
     2277#: app/controllers/PrliLinksController.php:371
     2278msgid "Tags"
     2279msgstr ""
     2280
     2281#: pro/app/controllers/PlpImportExportController.php:14
     2282msgid "Pretty Links Pro | Import / Export"
     2283msgstr ""
     2284
     2285#: pro/app/controllers/PlpImportExportController.php:15
     2286msgid "Import / Export"
     2287msgstr ""
     2288
     2289#: pro/app/controllers/PlpOptionsController.php:97
     2290msgid "Keywords Per Page is required"
     2291msgstr ""
     2292
     2293#: pro/app/controllers/PlpOptionsController.php:101
     2294msgid "Keyword Links Per Page is required"
     2295msgstr ""
     2296
     2297#: pro/app/controllers/PlpOptionsController.php:106
     2298msgid "You need to enter a valid Pretty Link Base URL now that you have selected \"Use an alternate base url for your Pretty Links\""
     2299msgstr ""
     2300
     2301#: pro/app/controllers/PlpOptionsController.php:111
     2302msgid "You need to enter a valid Public Link Display URL now that you have selected \"Use a custom public link display page\""
     2303msgstr ""
     2304
     2305#: pro/app/controllers/PlpOptionsController.php:117
     2306msgid "Pretty Bar Attribution URL must be a correctly formatted URL"
     2307msgstr ""
     2308
     2309#: pro/app/widgets/PlpPublicLinksWidget.php:11
     2310msgid "Create a Short URL"
     2311msgstr ""
     2312
     2313#: pro/app/widgets/PlpPublicLinksWidget.php:13
     2314msgid "Displays a form to create a Pretty Link."
     2315msgstr ""
     2316
     2317#: pro/app/widgets/PlpPublicLinksWidget.php:60
     2318msgid "Enter a URL:&nbsp;"
     2319msgstr ""
     2320
     2321#: pro/app/widgets/PlpPublicLinksWidget.php:64
     2322msgid "Label Text:"
     2323msgstr ""
     2324
     2325#: pro/app/widgets/PlpPublicLinksWidget.php:65
     2326msgid "Button Text:"
     2327msgstr ""
     2328
     2329#: pro/app/widgets/PlpPublicLinksWidget.php:65
     2330msgid "if left blank, no button will display"
     2331msgstr ""
     2332
     2333#: pro/app/widgets/PlpPublicLinksWidget.php:71
     2334msgid "Permanent/301"
     2335msgstr ""
     2336
     2337#: pro/app/widgets/PlpPublicLinksWidget.php:72
     2338msgid "Temporary/302"
     2339msgstr ""
     2340
     2341#: pro/app/widgets/PlpPublicLinksWidget.php:73
     2342msgid "Temporary/307"
     2343msgstr ""
     2344
     2345#: pro/app/widgets/PlpPublicLinksWidget.php:74
     2346msgid "PrettyBar"
     2347msgstr ""
     2348
     2349#: pro/app/widgets/PlpPublicLinksWidget.php:80
     2350msgid "Tracking Enabled:"
     2351msgstr ""
     2352
     2353#: pro/i18n/countries.php:5
     2354msgid "Afghanistan"
     2355msgstr ""
     2356
     2357#: pro/i18n/countries.php:6
     2358msgid "&#197;land Islands"
     2359msgstr ""
     2360
     2361#: pro/i18n/countries.php:7
     2362msgid "Albania"
     2363msgstr ""
     2364
     2365#: pro/i18n/countries.php:8
     2366msgid "Algeria"
     2367msgstr ""
     2368
     2369#: pro/i18n/countries.php:9
     2370msgid "Andorra"
     2371msgstr ""
     2372
     2373#: pro/i18n/countries.php:10
     2374msgid "Angola"
     2375msgstr ""
     2376
     2377#: pro/i18n/countries.php:11
     2378msgid "Anguilla"
     2379msgstr ""
     2380
     2381#: pro/i18n/countries.php:12
     2382msgid "Antarctica"
     2383msgstr ""
     2384
     2385#: pro/i18n/countries.php:13
     2386msgid "Antigua and Barbuda"
     2387msgstr ""
     2388
     2389#: pro/i18n/countries.php:14
     2390msgid "Argentina"
     2391msgstr ""
     2392
     2393#: pro/i18n/countries.php:15
     2394msgid "Armenia"
     2395msgstr ""
     2396
     2397#: pro/i18n/countries.php:16
     2398msgid "Aruba"
     2399msgstr ""
     2400
     2401#: pro/i18n/countries.php:17
     2402msgid "Australia"
     2403msgstr ""
     2404
     2405#: pro/i18n/countries.php:18
     2406msgid "Austria"
     2407msgstr ""
     2408
     2409#: pro/i18n/countries.php:19
     2410msgid "Azerbaijan"
     2411msgstr ""
     2412
     2413#: pro/i18n/countries.php:20
     2414msgid "Bahamas"
     2415msgstr ""
     2416
     2417#: pro/i18n/countries.php:21
     2418msgid "Bahrain"
     2419msgstr ""
     2420
     2421#: pro/i18n/countries.php:22
     2422msgid "Bangladesh"
     2423msgstr ""
     2424
     2425#: pro/i18n/countries.php:23
     2426msgid "Barbados"
     2427msgstr ""
     2428
     2429#: pro/i18n/countries.php:24
     2430msgid "Belarus"
     2431msgstr ""
     2432
     2433#: pro/i18n/countries.php:25
     2434msgid "Belgium"
     2435msgstr ""
     2436
     2437#: pro/i18n/countries.php:26
     2438msgid "Belau"
     2439msgstr ""
     2440
     2441#: pro/i18n/countries.php:27
     2442msgid "Belize"
     2443msgstr ""
     2444
     2445#: pro/i18n/countries.php:28
     2446msgid "Benin"
     2447msgstr ""
     2448
     2449#: pro/i18n/countries.php:29
     2450msgid "Bermuda"
     2451msgstr ""
     2452
     2453#: pro/i18n/countries.php:30
     2454msgid "Bhutan"
     2455msgstr ""
     2456
     2457#: pro/i18n/countries.php:31
     2458msgid "Bolivia"
     2459msgstr ""
     2460
     2461#: pro/i18n/countries.php:32
     2462msgid "Bonaire, Saint Eustatius and Saba"
     2463msgstr ""
     2464
     2465#: pro/i18n/countries.php:33
     2466msgid "Bosnia and Herzegovina"
     2467msgstr ""
     2468
     2469#: pro/i18n/countries.php:34
     2470msgid "Botswana"
     2471msgstr ""
     2472
     2473#: pro/i18n/countries.php:35
     2474msgid "Bouvet Island"
     2475msgstr ""
     2476
     2477#: pro/i18n/countries.php:36
     2478msgid "Brazil"
     2479msgstr ""
     2480
     2481#: pro/i18n/countries.php:37
     2482msgid "British Indian Ocean Territory"
     2483msgstr ""
     2484
     2485#: pro/i18n/countries.php:38
     2486msgid "British Virgin Islands"
     2487msgstr ""
     2488
     2489#: pro/i18n/countries.php:39
     2490msgid "Brunei"
     2491msgstr ""
     2492
     2493#: pro/i18n/countries.php:40
     2494msgid "Bulgaria"
     2495msgstr ""
     2496
     2497#: pro/i18n/countries.php:41
     2498msgid "Burkina Faso"
     2499msgstr ""
     2500
     2501#: pro/i18n/countries.php:42
     2502msgid "Burundi"
     2503msgstr ""
     2504
     2505#: pro/i18n/countries.php:43
     2506msgid "Cambodia"
     2507msgstr ""
     2508
     2509#: pro/i18n/countries.php:44
     2510msgid "Cameroon"
     2511msgstr ""
     2512
     2513#: pro/i18n/countries.php:45
     2514msgid "Canada"
     2515msgstr ""
     2516
     2517#: pro/i18n/countries.php:46
     2518msgid "Cape Verde"
     2519msgstr ""
     2520
     2521#: pro/i18n/countries.php:47
     2522msgid "Cayman Islands"
     2523msgstr ""
     2524
     2525#: pro/i18n/countries.php:48
     2526msgid "Central African Republic"
     2527msgstr ""
     2528
     2529#: pro/i18n/countries.php:49
     2530msgid "Chad"
     2531msgstr ""
     2532
     2533#: pro/i18n/countries.php:50
     2534msgid "Chile"
     2535msgstr ""
     2536
     2537#: pro/i18n/countries.php:51
     2538msgid "China"
     2539msgstr ""
     2540
     2541#: pro/i18n/countries.php:52
     2542msgid "Christmas Island"
     2543msgstr ""
     2544
     2545#: pro/i18n/countries.php:53
     2546msgid "Cocos/Keeling Islands"
     2547msgstr ""
     2548
     2549#: pro/i18n/countries.php:54
     2550msgid "Colombia"
     2551msgstr ""
     2552
     2553#: pro/i18n/countries.php:55
     2554msgid "Comoros"
     2555msgstr ""
     2556
     2557#: pro/i18n/countries.php:56
     2558msgid "Congo (Brazzaville)"
     2559msgstr ""
     2560
     2561#: pro/i18n/countries.php:57
     2562msgid "Congo (Kinshasa)"
     2563msgstr ""
     2564
     2565#: pro/i18n/countries.php:58
     2566msgid "Cook Islands"
     2567msgstr ""
     2568
     2569#: pro/i18n/countries.php:59
     2570msgid "Costa Rica"
     2571msgstr ""
     2572
     2573#: pro/i18n/countries.php:60
     2574msgid "Croatia"
     2575msgstr ""
     2576
     2577#: pro/i18n/countries.php:61
     2578msgid "Cuba"
     2579msgstr ""
     2580
     2581#: pro/i18n/countries.php:62
     2582msgid "Cura&Ccedil;ao"
     2583msgstr ""
     2584
     2585#: pro/i18n/countries.php:63
     2586msgid "Cyprus"
     2587msgstr ""
     2588
     2589#: pro/i18n/countries.php:64
     2590msgid "Czech Republic"
     2591msgstr ""
     2592
     2593#: pro/i18n/countries.php:65
     2594msgid "Denmark"
     2595msgstr ""
     2596
     2597#: pro/i18n/countries.php:66
     2598msgid "Djibouti"
     2599msgstr ""
     2600
     2601#: pro/i18n/countries.php:67
     2602msgid "Dominica"
     2603msgstr ""
     2604
     2605#: pro/i18n/countries.php:68
     2606msgid "Dominican Republic"
     2607msgstr ""
     2608
     2609#: pro/i18n/countries.php:69
     2610msgid "Ecuador"
     2611msgstr ""
     2612
     2613#: pro/i18n/countries.php:70
     2614msgid "Egypt"
     2615msgstr ""
     2616
     2617#: pro/i18n/countries.php:71
     2618msgid "El Salvador"
     2619msgstr ""
     2620
     2621#: pro/i18n/countries.php:72
     2622msgid "Equatorial Guinea"
     2623msgstr ""
     2624
     2625#: pro/i18n/countries.php:73
     2626msgid "Eritrea"
     2627msgstr ""
     2628
     2629#: pro/i18n/countries.php:74
     2630msgid "Estonia"
     2631msgstr ""
     2632
     2633#: pro/i18n/countries.php:75
     2634msgid "Ethiopia"
     2635msgstr ""
     2636
     2637#: pro/i18n/countries.php:76
     2638msgid "Falkland Islands"
     2639msgstr ""
     2640
     2641#: pro/i18n/countries.php:77
     2642msgid "Faroe Islands"
     2643msgstr ""
     2644
     2645#: pro/i18n/countries.php:78
     2646msgid "Fiji"
     2647msgstr ""
     2648
     2649#: pro/i18n/countries.php:79
     2650msgid "Finland"
     2651msgstr ""
     2652
     2653#: pro/i18n/countries.php:80
     2654msgid "France"
     2655msgstr ""
     2656
     2657#: pro/i18n/countries.php:81
     2658msgid "French Guiana"
     2659msgstr ""
     2660
     2661#: pro/i18n/countries.php:82
     2662msgid "French Polynesia"
     2663msgstr ""
     2664
     2665#: pro/i18n/countries.php:83
     2666msgid "French Southern Territories"
     2667msgstr ""
     2668
     2669#: pro/i18n/countries.php:84
     2670msgid "Gabon"
     2671msgstr ""
     2672
     2673#: pro/i18n/countries.php:85
     2674msgid "Gambia"
     2675msgstr ""
     2676
     2677#: pro/i18n/countries.php:86
     2678msgid "Georgia"
     2679msgstr ""
     2680
     2681#: pro/i18n/countries.php:87
     2682msgid "Germany"
     2683msgstr ""
     2684
     2685#: pro/i18n/countries.php:88
     2686msgid "Ghana"
     2687msgstr ""
     2688
     2689#: pro/i18n/countries.php:89
     2690msgid "Gibraltar"
     2691msgstr ""
     2692
     2693#: pro/i18n/countries.php:90
     2694msgid "Greece"
     2695msgstr ""
     2696
     2697#: pro/i18n/countries.php:91
     2698msgid "Greenland"
     2699msgstr ""
     2700
     2701#: pro/i18n/countries.php:92
     2702msgid "Grenada"
     2703msgstr ""
     2704
     2705#: pro/i18n/countries.php:93
     2706msgid "Guadeloupe"
     2707msgstr ""
     2708
     2709#: pro/i18n/countries.php:94
     2710msgid "Guatemala"
     2711msgstr ""
     2712
     2713#: pro/i18n/countries.php:95
     2714msgid "Guernsey"
     2715msgstr ""
     2716
     2717#: pro/i18n/countries.php:96
     2718msgid "Guinea"
     2719msgstr ""
     2720
     2721#: pro/i18n/countries.php:97
     2722msgid "Guinea-Bissau"
     2723msgstr ""
     2724
     2725#: pro/i18n/countries.php:98
     2726msgid "Guyana"
     2727msgstr ""
     2728
     2729#: pro/i18n/countries.php:99
     2730msgid "Haiti"
     2731msgstr ""
     2732
     2733#: pro/i18n/countries.php:100
     2734msgid "Heard Island and McDonald Islands"
     2735msgstr ""
     2736
     2737#: pro/i18n/countries.php:101
     2738msgid "Honduras"
     2739msgstr ""
     2740
     2741#: pro/i18n/countries.php:102
     2742msgid "Hong Kong"
     2743msgstr ""
     2744
     2745#: pro/i18n/countries.php:103
     2746msgid "Hungary"
     2747msgstr ""
     2748
     2749#: pro/i18n/countries.php:104
     2750msgid "Iceland"
     2751msgstr ""
     2752
     2753#: pro/i18n/countries.php:105
     2754msgid "India"
     2755msgstr ""
     2756
     2757#: pro/i18n/countries.php:106
     2758msgid "Indonesia"
     2759msgstr ""
     2760
     2761#: pro/i18n/countries.php:107
     2762msgid "Iran"
     2763msgstr ""
     2764
     2765#: pro/i18n/countries.php:108
     2766msgid "Iraq"
     2767msgstr ""
     2768
     2769#: pro/i18n/countries.php:109
     2770msgid "Republic of Ireland"
     2771msgstr ""
     2772
     2773#: pro/i18n/countries.php:110
     2774msgid "Isle of Man"
     2775msgstr ""
     2776
     2777#: pro/i18n/countries.php:111
     2778msgid "Israel"
     2779msgstr ""
     2780
     2781#: pro/i18n/countries.php:112
     2782msgid "Italy"
     2783msgstr ""
     2784
     2785#: pro/i18n/countries.php:113
     2786msgid "Ivory Coast"
     2787msgstr ""
     2788
     2789#: pro/i18n/countries.php:114
     2790msgid "Jamaica"
     2791msgstr ""
     2792
     2793#: pro/i18n/countries.php:115
     2794msgid "Japan"
     2795msgstr ""
     2796
     2797#: pro/i18n/countries.php:116
     2798msgid "Jersey"
     2799msgstr ""
     2800
     2801#: pro/i18n/countries.php:117
     2802msgid "Jordan"
     2803msgstr ""
     2804
     2805#: pro/i18n/countries.php:118
     2806msgid "Kazakhstan"
     2807msgstr ""
     2808
     2809#: pro/i18n/countries.php:119
     2810msgid "Kenya"
     2811msgstr ""
     2812
     2813#: pro/i18n/countries.php:120
     2814msgid "Kiribati"
     2815msgstr ""
     2816
     2817#: pro/i18n/countries.php:121
     2818msgid "Kuwait"
     2819msgstr ""
     2820
     2821#: pro/i18n/countries.php:122
     2822msgid "Kyrgyzstan"
     2823msgstr ""
     2824
     2825#: pro/i18n/countries.php:123
     2826msgid "Laos"
     2827msgstr ""
     2828
     2829#: pro/i18n/countries.php:124
     2830msgid "Latvia"
     2831msgstr ""
     2832
     2833#: pro/i18n/countries.php:125
     2834msgid "Lebanon"
     2835msgstr ""
     2836
     2837#: pro/i18n/countries.php:126
     2838msgid "Lesotho"
     2839msgstr ""
     2840
     2841#: pro/i18n/countries.php:127
     2842msgid "Liberia"
     2843msgstr ""
     2844
     2845#: pro/i18n/countries.php:128
     2846msgid "Libya"
     2847msgstr ""
     2848
     2849#: pro/i18n/countries.php:129
     2850msgid "Liechtenstein"
     2851msgstr ""
     2852
     2853#: pro/i18n/countries.php:130
     2854msgid "Lithuania"
     2855msgstr ""
     2856
     2857#: pro/i18n/countries.php:131
     2858msgid "Luxembourg"
     2859msgstr ""
     2860
     2861#: pro/i18n/countries.php:132
     2862msgid "Macao S.A.R., China"
     2863msgstr ""
     2864
     2865#: pro/i18n/countries.php:133
     2866msgid "Macedonia"
     2867msgstr ""
     2868
     2869#: pro/i18n/countries.php:134
     2870msgid "Madagascar"
     2871msgstr ""
     2872
     2873#: pro/i18n/countries.php:135
     2874msgid "Malawi"
     2875msgstr ""
     2876
     2877#: pro/i18n/countries.php:136
     2878msgid "Malaysia"
     2879msgstr ""
     2880
     2881#: pro/i18n/countries.php:137
     2882msgid "Maldives"
     2883msgstr ""
     2884
     2885#: pro/i18n/countries.php:138
     2886msgid "Mali"
     2887msgstr ""
     2888
     2889#: pro/i18n/countries.php:139
     2890msgid "Malta"
     2891msgstr ""
     2892
     2893#: pro/i18n/countries.php:140
     2894msgid "Marshall Islands"
     2895msgstr ""
     2896
     2897#: pro/i18n/countries.php:141
     2898msgid "Martinique"
     2899msgstr ""
     2900
     2901#: pro/i18n/countries.php:142
     2902msgid "Mauritania"
     2903msgstr ""
     2904
     2905#: pro/i18n/countries.php:143
     2906msgid "Mauritius"
     2907msgstr ""
     2908
     2909#: pro/i18n/countries.php:144
     2910msgid "Mayotte"
     2911msgstr ""
     2912
     2913#: pro/i18n/countries.php:145
     2914msgid "Mexico"
     2915msgstr ""
     2916
     2917#: pro/i18n/countries.php:146
     2918msgid "Micronesia"
     2919msgstr ""
     2920
     2921#: pro/i18n/countries.php:147
     2922msgid "Moldova"
     2923msgstr ""
     2924
     2925#: pro/i18n/countries.php:148
     2926msgid "Monaco"
     2927msgstr ""
     2928
     2929#: pro/i18n/countries.php:149
     2930msgid "Mongolia"
     2931msgstr ""
     2932
     2933#: pro/i18n/countries.php:150
     2934msgid "Montenegro"
     2935msgstr ""
     2936
     2937#: pro/i18n/countries.php:151
     2938msgid "Montserrat"
     2939msgstr ""
     2940
     2941#: pro/i18n/countries.php:152
     2942msgid "Morocco"
     2943msgstr ""
     2944
     2945#: pro/i18n/countries.php:153
     2946msgid "Mozambique"
     2947msgstr ""
     2948
     2949#: pro/i18n/countries.php:154
     2950msgid "Myanmar"
     2951msgstr ""
     2952
     2953#: pro/i18n/countries.php:155
     2954msgid "Namibia"
     2955msgstr ""
     2956
     2957#: pro/i18n/countries.php:156
     2958msgid "Nauru"
     2959msgstr ""
     2960
     2961#: pro/i18n/countries.php:157
     2962msgid "Nepal"
     2963msgstr ""
     2964
     2965#: pro/i18n/countries.php:158
     2966msgid "Netherlands"
     2967msgstr ""
     2968
     2969#: pro/i18n/countries.php:159
     2970msgid "Netherlands Antilles"
     2971msgstr ""
     2972
     2973#: pro/i18n/countries.php:160
     2974msgid "New Caledonia"
     2975msgstr ""
     2976
     2977#: pro/i18n/countries.php:161
     2978msgid "New Zealand"
     2979msgstr ""
     2980
     2981#: pro/i18n/countries.php:162
     2982msgid "Nicaragua"
     2983msgstr ""
     2984
     2985#: pro/i18n/countries.php:163
     2986msgid "Niger"
     2987msgstr ""
     2988
     2989#: pro/i18n/countries.php:164
     2990msgid "Nigeria"
     2991msgstr ""
     2992
     2993#: pro/i18n/countries.php:165
     2994msgid "Niue"
     2995msgstr ""
     2996
     2997#: pro/i18n/countries.php:166
     2998msgid "Norfolk Island"
     2999msgstr ""
     3000
     3001#: pro/i18n/countries.php:167
     3002msgid "North Korea"
     3003msgstr ""
     3004
     3005#: pro/i18n/countries.php:168
     3006msgid "Norway"
     3007msgstr ""
     3008
     3009#: pro/i18n/countries.php:169
     3010msgid "Oman"
     3011msgstr ""
     3012
     3013#: pro/i18n/countries.php:170
     3014msgid "Pakistan"
     3015msgstr ""
     3016
     3017#: pro/i18n/countries.php:171
     3018msgid "Palestinian Territory"
     3019msgstr ""
     3020
     3021#: pro/i18n/countries.php:172
     3022msgid "Panama"
     3023msgstr ""
     3024
     3025#: pro/i18n/countries.php:173
     3026msgid "Papua New Guinea"
     3027msgstr ""
     3028
     3029#: pro/i18n/countries.php:174
     3030msgid "Paraguay"
     3031msgstr ""
     3032
     3033#: pro/i18n/countries.php:175
     3034msgid "Peru"
     3035msgstr ""
     3036
     3037#: pro/i18n/countries.php:176
     3038msgid "Philippines"
     3039msgstr ""
     3040
     3041#: pro/i18n/countries.php:177
     3042msgid "Pitcairn"
     3043msgstr ""
     3044
     3045#: pro/i18n/countries.php:178
     3046msgid "Poland"
     3047msgstr ""
     3048
     3049#: pro/i18n/countries.php:179
     3050msgid "Portugal"
     3051msgstr ""
     3052
     3053#: pro/i18n/countries.php:180
     3054msgid "Qatar"
     3055msgstr ""
     3056
     3057#: pro/i18n/countries.php:181
     3058msgid "Reunion"
     3059msgstr ""
     3060
     3061#: pro/i18n/countries.php:182
     3062msgid "Romania"
     3063msgstr ""
     3064
     3065#: pro/i18n/countries.php:183
     3066msgid "Russia"
     3067msgstr ""
     3068
     3069#: pro/i18n/countries.php:184
     3070msgid "Rwanda"
     3071msgstr ""
     3072
     3073#: pro/i18n/countries.php:185
     3074msgid "Saint Barth&eacute;lemy"
     3075msgstr ""
     3076
     3077#: pro/i18n/countries.php:186
     3078msgid "Saint Helena"
     3079msgstr ""
     3080
     3081#: pro/i18n/countries.php:187
     3082msgid "Saint Kitts and Nevis"
     3083msgstr ""
     3084
     3085#: pro/i18n/countries.php:188
     3086msgid "Saint Lucia"
     3087msgstr ""
     3088
     3089#: pro/i18n/countries.php:189
     3090msgid "Saint Martin (French part)"
     3091msgstr ""
     3092
     3093#: pro/i18n/countries.php:190
     3094msgid "Saint Martin (Dutch part)"
     3095msgstr ""
     3096
     3097#: pro/i18n/countries.php:191
     3098msgid "Saint Pierre and Miquelon"
     3099msgstr ""
     3100
     3101#: pro/i18n/countries.php:192
     3102msgid "Saint Vincent and the Grenadines"
     3103msgstr ""
     3104
     3105#: pro/i18n/countries.php:193
     3106msgid "San Marino"
     3107msgstr ""
     3108
     3109#: pro/i18n/countries.php:194
     3110msgid "S&atilde;o Tom&eacute; and Pr&iacute;ncipe"
     3111msgstr ""
     3112
     3113#: pro/i18n/countries.php:195
     3114msgid "Saudi Arabia"
     3115msgstr ""
     3116
     3117#: pro/i18n/countries.php:196
     3118msgid "Senegal"
     3119msgstr ""
     3120
     3121#: pro/i18n/countries.php:197
     3122msgid "Serbia"
     3123msgstr ""
     3124
     3125#: pro/i18n/countries.php:198
     3126msgid "Seychelles"
     3127msgstr ""
     3128
     3129#: pro/i18n/countries.php:199
     3130msgid "Sierra Leone"
     3131msgstr ""
     3132
     3133#: pro/i18n/countries.php:200
     3134msgid "Singapore"
     3135msgstr ""
     3136
     3137#: pro/i18n/countries.php:201
     3138msgid "Slovakia"
     3139msgstr ""
     3140
     3141#: pro/i18n/countries.php:202
     3142msgid "Slovenia"
     3143msgstr ""
     3144
     3145#: pro/i18n/countries.php:203
     3146msgid "Solomon Islands"
     3147msgstr ""
     3148
     3149#: pro/i18n/countries.php:204
     3150msgid "Somalia"
     3151msgstr ""
     3152
     3153#: pro/i18n/countries.php:205
     3154msgid "South Africa"
     3155msgstr ""
     3156
     3157#: pro/i18n/countries.php:206
     3158msgid "South Georgia/Sandwich Islands"
     3159msgstr ""
     3160
     3161#: pro/i18n/countries.php:207
     3162msgid "South Korea"
     3163msgstr ""
     3164
     3165#: pro/i18n/countries.php:208
     3166msgid "South Sudan"
     3167msgstr ""
     3168
     3169#: pro/i18n/countries.php:209
     3170msgid "Spain"
     3171msgstr ""
     3172
     3173#: pro/i18n/countries.php:210
     3174msgid "Sri Lanka"
     3175msgstr ""
     3176
     3177#: pro/i18n/countries.php:211
     3178msgid "Sudan"
     3179msgstr ""
     3180
     3181#: pro/i18n/countries.php:212
     3182msgid "Suriname"
     3183msgstr ""
     3184
     3185#: pro/i18n/countries.php:213
     3186msgid "Svalbard and Jan Mayen"
     3187msgstr ""
     3188
     3189#: pro/i18n/countries.php:214
     3190msgid "Swaziland"
     3191msgstr ""
     3192
     3193#: pro/i18n/countries.php:215
     3194msgid "Sweden"
     3195msgstr ""
     3196
     3197#: pro/i18n/countries.php:216
     3198msgid "Switzerland"
     3199msgstr ""
     3200
     3201#: pro/i18n/countries.php:217
     3202msgid "Syria"
     3203msgstr ""
     3204
     3205#: pro/i18n/countries.php:218
     3206msgid "Taiwan"
     3207msgstr ""
     3208
     3209#: pro/i18n/countries.php:219
     3210msgid "Tajikistan"
     3211msgstr ""
     3212
     3213#: pro/i18n/countries.php:220
     3214msgid "Tanzania"
     3215msgstr ""
     3216
     3217#: pro/i18n/countries.php:221
     3218msgid "Thailand"
     3219msgstr ""
     3220
     3221#: pro/i18n/countries.php:222
     3222msgid "Timor-Leste"
     3223msgstr ""
     3224
     3225#: pro/i18n/countries.php:223
     3226msgid "Togo"
     3227msgstr ""
     3228
     3229#: pro/i18n/countries.php:224
     3230msgid "Tokelau"
     3231msgstr ""
     3232
     3233#: pro/i18n/countries.php:225
     3234msgid "Tonga"
     3235msgstr ""
     3236
     3237#: pro/i18n/countries.php:226
     3238msgid "Trinidad and Tobago"
     3239msgstr ""
     3240
     3241#: pro/i18n/countries.php:227
     3242msgid "Tunisia"
     3243msgstr ""
     3244
     3245#: pro/i18n/countries.php:228
     3246msgid "Turkey"
     3247msgstr ""
     3248
     3249#: pro/i18n/countries.php:229
     3250msgid "Turkmenistan"
     3251msgstr ""
     3252
     3253#: pro/i18n/countries.php:230
     3254msgid "Turks and Caicos Islands"
     3255msgstr ""
     3256
     3257#: pro/i18n/countries.php:231
     3258msgid "Tuvalu"
     3259msgstr ""
     3260
     3261#: pro/i18n/countries.php:232
     3262msgid "Uganda"
     3263msgstr ""
     3264
     3265#: pro/i18n/countries.php:233
     3266msgid "Ukraine"
     3267msgstr ""
     3268
     3269#: pro/i18n/countries.php:234
     3270msgid "United Arab Emirates"
     3271msgstr ""
     3272
     3273#: pro/i18n/countries.php:235
     3274msgid "United Kingdom (UK)"
     3275msgstr ""
     3276
     3277#: pro/i18n/countries.php:236
     3278msgid "United States"
     3279msgstr ""
     3280
     3281#: pro/i18n/countries.php:237
     3282msgid "Uruguay"
     3283msgstr ""
     3284
     3285#: pro/i18n/countries.php:238
     3286msgid "Uzbekistan"
     3287msgstr ""
     3288
     3289#: pro/i18n/countries.php:239
     3290msgid "Vanuatu"
     3291msgstr ""
     3292
     3293#: pro/i18n/countries.php:240
     3294msgid "Vatican"
     3295msgstr ""
     3296
     3297#: pro/i18n/countries.php:241
     3298msgid "Venezuela"
     3299msgstr ""
     3300
     3301#: pro/i18n/countries.php:242
     3302msgid "Vietnam"
     3303msgstr ""
     3304
     3305#: pro/i18n/countries.php:243
     3306msgid "Wallis and Futuna"
     3307msgstr ""
     3308
     3309#: pro/i18n/countries.php:244
     3310msgid "Western Sahara"
     3311msgstr ""
     3312
     3313#: pro/i18n/countries.php:245
     3314msgid "Western Samoa"
     3315msgstr ""
     3316
     3317#: pro/i18n/countries.php:246
     3318msgid "Yemen"
     3319msgstr ""
     3320
     3321#: pro/i18n/countries.php:247
     3322msgid "Zambia"
     3323msgstr ""
     3324
     3325#: pro/i18n/countries.php:248
     3326msgid "Zimbabwe"
     3327msgstr ""
     3328
     3329#: app/helpers/PrliAppHelper.php:20
     3330#: app/views/links/form.php:30
     3331#: app/controllers/PrliLinksController.php:383
     3332#: app/controllers/PrliLinksController.php:389
     3333#: app/controllers/PrliLinksController.php:395
     3334msgid "Pro"
     3335msgstr ""
     3336
     3337#: app/helpers/PrliAppHelper.php:21
     3338msgid "Upgrade to Pro to unlock this feature"
     3339msgstr ""
     3340
     3341#: app/helpers/PrliLinksHelper.php:14
     3342#: app/views/links/form_basic.php:15
     3343#: app/views/shared/tinymce_form_popup.php:32
     3344msgid "307 (Temporary)"
     3345msgstr ""
     3346
     3347#: app/helpers/PrliLinksHelper.php:15
     3348#: app/views/links/form_basic.php:16
     3349#: app/views/shared/tinymce_form_popup.php:33
     3350msgid "302 (Temporary)"
     3351msgstr ""
     3352
     3353#: app/helpers/PrliLinksHelper.php:16
     3354#: app/views/links/form_basic.php:17
     3355#: app/views/shared/tinymce_form_popup.php:34
     3356msgid "301 (Permanent)"
     3357msgstr ""
     3358
     3359#: app/helpers/PrliLinksHelper.php:27
     3360msgid "PrettyBar Redirection"
     3361msgstr ""
     3362
     3363#: app/helpers/PrliLinksHelper.php:30
     3364msgid "Cloaked Redirection"
     3365msgstr ""
     3366
     3367#: app/helpers/PrliLinksHelper.php:33
     3368msgid "Pixel Tracking Redirection"
     3369msgstr ""
     3370
     3371#: app/helpers/PrliLinksHelper.php:36
     3372msgid "Meta Refresh Redirection"
     3373msgstr ""
     3374
     3375#: app/helpers/PrliLinksHelper.php:39
     3376msgid "Javascript Redirection"
     3377msgstr ""
     3378
     3379#: app/helpers/PrliLinksHelper.php:42
     3380msgid "Temporary (307) Redirection"
     3381msgstr ""
     3382
     3383#: app/helpers/PrliLinksHelper.php:45
     3384msgid "Temporary (302) Redirection"
     3385msgstr ""
     3386
     3387#: app/helpers/PrliLinksHelper.php:48
     3388msgid "Permanent (301) Redirection"
     3389msgstr ""
     3390
     3391#: app/helpers/PrliLinksHelper.php:52
     3392msgid "Nofollow Enabled"
     3393msgstr ""
     3394
     3395#: app/helpers/PrliLinksHelper.php:56
     3396msgid "Parameter Forwarding Enabled"
     3397msgstr ""
     3398
     3399#: app/helpers/PrliLinksHelper.php:68
     3400msgid "Are you sure you want to delete your %s Pretty Link? This will delete the Pretty Link and all of the statistical data about it in your database."
     3401msgstr ""
     3402
     3403#: app/helpers/PrliLinksHelper.php:69
     3404msgid "Are you sure you want to reset your %s Pretty Link? This will delete all of the statistical data about this Pretty Link in your database."
     3405msgstr ""
     3406
     3407#: app/helpers/PrliLinksHelper.php:69
     3408#: app/helpers/PrliLinksHelper.php:147
     3409msgid "Reset %s"
     3410msgstr ""
     3411
     3412#: app/helpers/PrliLinksHelper.php:72
     3413#: app/views/clicks/list.php:161
     3414msgid "View clicks for %s"
     3415msgstr ""
     3416
     3417#: app/helpers/PrliLinksHelper.php:77
     3418#: app/helpers/PrliLinksHelper.php:158
     3419msgid "Post %s to Twitter"
     3420msgstr ""
     3421
     3422#: app/helpers/PrliLinksHelper.php:78
     3423#: app/helpers/PrliLinksHelper.php:169
     3424msgid "Send %s in an Email"
     3425msgstr ""
     3426
     3427#: app/helpers/PrliLinksHelper.php:83
     3428#: app/helpers/PrliLinksHelper.php:180
     3429msgid "Visit Target URL: %s in a New Window"
     3430msgstr ""
     3431
     3432#: app/helpers/PrliLinksHelper.php:84
     3433#: app/helpers/PrliLinksHelper.php:191
     3434msgid "Visit Short URL: %s in a New Window"
     3435msgstr ""
     3436
     3437#: app/helpers/PrliLinksHelper.php:102
     3438msgid "%d Clicks / %d Uniques"
     3439msgstr ""
     3440
     3441#: app/helpers/PrliLinksHelper.php:111
     3442msgid "This link isn't being tracked"
     3443msgstr ""
     3444
     3445#: app/helpers/PrliLinksHelper.php:135
     3446msgid "Target URL:"
     3447msgstr ""
     3448
     3449#: app/helpers/PrliLinksHelper.php:167
     3450#: app/views/links/form_basic.php:48
     3451#: app/views/shared/tinymce_form_popup.php:78
     3452#: app/views/widgets/widget.php:15
     3453#: app/controllers/PrliLinksController.php:44
     3454msgid "Pretty Link"
     3455msgstr ""
     3456
     3457#: app/models/PrliUtils.php:88
     3458msgid "*** Pretty Links Debug: %s"
     3459msgstr ""
     3460
     3461#: app/models/PrliUtils.php:98
     3462msgid "The Slug can't be empty"
     3463msgstr ""
     3464
     3465#: app/models/PrliUtils.php:106
     3466msgid "There's a file this slug conflicts with: %s"
     3467msgstr ""
     3468
     3469#: app/models/PrliUtils.php:115
     3470msgid "This Pretty Link Slug is already taken. There's already another pretty link with this slug: %s"
     3471msgstr ""
     3472
     3473#: app/models/PrliUtils.php:133
     3474msgid "This Pretty Link Slug is already taken. The path resolved to URL: %s"
     3475msgstr ""
     3476
     3477#: app/models/PrliUtils.php:138
     3478msgid "This Pretty Link Slug is already taken. The path redirected to URL: %s"
     3479msgstr ""
     3480
     3481#. translators: %1$s: open link tag, %2$s: close link tag, %3$s: br tag
     3482#: app/models/PrliUtils.php:1107
     3483msgid "Get started by %1$sadding a URL%2$s that you want to turn into a pretty link.%3$sCome back to see how many times it was clicked."
     3484msgstr ""
     3485
     3486#: app/models/PrliLink.php:495
     3487msgid "Target URL can't be blank"
     3488msgstr ""
     3489
     3490#: app/models/PrliLink.php:499
     3491msgid "Target URL must be different than the Pretty Link"
     3492msgstr ""
     3493
     3494#: app/models/PrliLink.php:503
     3495msgid "Link URL must be a correctly formatted url"
     3496msgstr ""
     3497
     3498#: app/models/PrliLink.php:507
     3499msgid "Pretty Link slugs must not contain question marks, ampersands or number signs."
     3500msgstr ""
     3501
     3502#: app/models/PrliLink.php:511
     3503msgid "Pretty Link slugs must not end with a slash (\"/\")"
     3504msgstr ""
     3505
     3506#: app/models/PrliClick.php:237
     3507msgid "all links"
     3508msgstr ""
     3509
     3510#: app/models/PrliClick.php:244
     3511msgid "All clicks"
     3512msgstr ""
     3513
     3514#: app/models/PrliClick.php:247
     3515msgid "Unique hits"
     3516msgstr ""
     3517
     3518#: app/models/PrliClick.php:251
     3519msgid "on"
     3520msgstr ""
     3521
     3522#: app/models/PrliGroup.php:114
     3523msgid "Group must have a name."
     3524msgstr ""
     3525
     3526#: app/views/links/form_advanced.php:6
     3527msgid "No Follow"
     3528msgstr ""
     3529
     3530#: app/views/links/form_advanced.php:9
     3531msgid "Nofollow Link"
     3532msgstr ""
     3533
     3534#: app/views/links/form_advanced.php:10
     3535msgid "Add a nofollow and noindex to this link's http redirect header"
     3536msgstr ""
     3537
     3538#: app/views/links/form_advanced.php:19
     3539#: app/views/links/form_advanced.php:22
     3540msgid "Delay Redirect"
     3541msgstr ""
     3542
     3543#: app/views/links/form_advanced.php:23
     3544msgid "Time in seconds to wait before redirecting"
     3545msgstr ""
     3546
     3547#: app/views/links/form_advanced.php:32
     3548#: app/views/links/form_advanced.php:35
     3549msgid "Parameter Forwarding"
     3550msgstr ""
     3551
     3552#: app/views/links/form_advanced.php:36
     3553msgid "Forward parameters passed to this link onto the Target URL"
     3554msgstr ""
     3555
     3556#: app/views/links/form_advanced.php:45
     3557#: app/views/links/form_advanced.php:48
     3558#: app/views/shared/tinymce_form_popup.php:54
     3559msgid "Tracking"
     3560msgstr ""
     3561
     3562#: app/views/links/form_advanced.php:49
     3563msgid "Enable Pretty Link's built-in hit (click) tracking"
     3564msgstr ""
     3565
     3566#: app/views/links/form_advanced.php:61
     3567msgid "Google Analytics Tracking"
     3568msgstr ""
     3569
     3570#: app/views/links/form_advanced.php:62
     3571msgid "Requires the Google Analyticator, Google Analytics by MonsterInsights (formerly Yoast) or Google Analytics Plugin installed and configured for this to work."
     3572msgstr ""
     3573
     3574#: app/views/links/form_advanced.php:75
     3575msgid "It appears that %s is currently installed. Pretty Link will attempt to use its settings to track this link."
     3576msgstr ""
     3577
     3578#: app/views/links/form_advanced.php:84
     3579msgid "No Google Analytics Plugin is currently installed. Pretty Link cannot track links using Google Analytics until one is."
     3580msgstr ""
     3581
     3582#: app/views/links/form.php:28
     3583msgid "Basic"
     3584msgstr ""
     3585
     3586#: app/views/links/form.php:29
     3587msgid "Advanced"
     3588msgstr ""
     3589
     3590#: app/views/links/form_basic.php:6
     3591msgid "Redirection*"
     3592msgstr ""
     3593
     3594#: app/views/links/form_basic.php:9
     3595#: app/views/options/form.php:77
     3596msgid "Redirection Type"
     3597msgstr ""
     3598
     3599#: app/views/links/form_basic.php:10
     3600msgid "This is the method of redirection for your link."
     3601msgstr ""
     3602
     3603#: app/views/links/form_basic.php:24
     3604#: app/views/options/form.php:87
     3605msgid "Get cloaked redirects, Javascript redirects and more when you %1$sUpgrade to PRO%2$s"
     3606msgstr ""
     3607
     3608#: app/views/links/form_basic.php:32
     3609msgid "Target URL*"
     3610msgstr ""
     3611
     3612#: app/views/links/form_basic.php:35
     3613#: app/views/shared/tinymce_form_popup.php:13
     3614#: app/views/shared/tinymce_form_popup.php:74
     3615#: app/views/widgets/widget.php:11
     3616msgid "Target URL"
     3617msgstr ""
     3618
     3619#: app/views/links/form_basic.php:36
     3620msgid "This is the URL that your Pretty Link will redirect to."
     3621msgstr ""
     3622
     3623#: app/views/links/form_basic.php:45
     3624msgid "Pretty Link*"
     3625msgstr ""
     3626
     3627#: app/views/links/form_basic.php:49
     3628msgid "This is how your pretty link will appear. You can edit the Pretty Link slug here."
     3629msgstr ""
     3630
     3631#: app/views/links/form_basic.php:58
     3632#: app/views/links/form_basic.php:61
     3633msgid "Notes"
     3634msgstr ""
     3635
     3636#: app/views/links/form_basic.php:62
     3637msgid "This is a field where you can enter notes about a particular link. This notes field is mainly for your own link management needs. It isn't currently used anywhere on the front end."
     3638msgstr ""
     3639
     3640#: app/views/links/form_pro.php:34
     3641msgid "Enter a comma separated list of keywords / keyword phrases that you'd like to replace with this link in your Posts & Pages."
     3642msgstr ""
     3643
     3644#. translators: %1$s: open code tag, %2$s: close code tag
     3645#: app/views/links/form_pro.php:50
     3646msgid "Enter a comma separated list of the URLs that you'd like to replace with this Pretty Link in your Posts & Pages. These must be formatted as URLs for example: %1$shttp://example.com%2$s or %1$shttp://example.com?product_id=53%2$s"
     3647msgstr ""
     3648
     3649#: app/views/shared/nav.php:6
     3650msgid "Pro Manual"
     3651msgstr ""
     3652
     3653#: app/views/shared/nav.php:9
     3654#: app/views/admin/update/license.php:39
     3655#: app/views/admin/onboarding/welcome.php:116
     3656#: app/controllers/PrliAppController.php:276
     3657msgid "Upgrade to Pro"
     3658msgstr ""
     3659
     3660#: app/views/shared/nav.php:14
     3661msgid "Connect:"
     3662msgstr ""
     3663
     3664#: app/views/shared/nav.php:18
     3665msgid "Get Help:"
     3666msgstr ""
     3667
     3668#: app/views/shared/nav.php:19
     3669msgid "Tutorials"
     3670msgstr ""
     3671
     3672#: app/views/shared/public_link.php:22
     3673msgid "Here is your Pretty Link"
     3674msgstr ""
     3675
     3676#: app/views/shared/public_link.php:30
     3677msgid "Here's your pretty link for"
     3678msgstr ""
     3679
     3680#: app/views/shared/public_link.php:41
     3681msgid "send this link to:"
     3682msgstr ""
     3683
     3684#: app/views/shared/public_link.php:45
     3685msgid "back"
     3686msgstr ""
     3687
     3688#: app/views/shared/table-nav.php:14
     3689#: app/views/shared/link-table-nav.php:16
     3690#: app/views/shared/link-table-nav.php:106
     3691msgid "Displaying %1$s&#8211;%2$s of %3$s"
     3692msgstr ""
     3693
     3694#: app/views/shared/tinymce_form_popup.php:4
     3695msgid "Insert Pretty Link"
     3696msgstr ""
     3697
     3698#: app/views/shared/tinymce_form_popup.php:10
     3699#: js/editor/components/link-editor/index.js:377
     3700#: js/editor.js:12
     3701msgid "Create New Pretty Link"
     3702msgstr ""
     3703
     3704#: app/views/shared/tinymce_form_popup.php:17
     3705msgid "Slug"
     3706msgstr ""
     3707
     3708#: app/views/shared/tinymce_form_popup.php:20
     3709msgid "valid"
     3710msgstr ""
     3711
     3712#: app/views/shared/tinymce_form_popup.php:21
     3713msgid "invalid"
     3714msgstr ""
     3715
     3716#: app/views/shared/tinymce_form_popup.php:25
     3717#: app/views/shared/tinymce_form_popup.php:82
     3718msgid "Link Text"
     3719msgstr ""
     3720
     3721#: app/views/shared/tinymce_form_popup.php:29
     3722msgid "Redirect Type"
     3723msgstr ""
     3724
     3725#: app/views/shared/tinymce_form_popup.php:46
     3726msgid "Nofollow"
     3727msgstr ""
     3728
     3729#: app/views/shared/tinymce_form_popup.php:49
     3730#: app/views/shared/tinymce_form_popup.php:57
     3731msgid "Enabled"
     3732msgstr ""
     3733
     3734#: app/views/shared/tinymce_form_popup.php:50
     3735#: app/views/shared/tinymce_form_popup.php:58
     3736msgid "Disabled"
     3737msgstr ""
     3738
     3739#: app/views/shared/tinymce_form_popup.php:63
     3740#: app/views/shared/tinymce_form_popup.php:87
     3741msgid "Open this Pretty Link in a new window/tab"
     3742msgstr ""
     3743
     3744#: app/views/shared/tinymce_form_popup.php:66
     3745msgid "Insert New Pretty Link"
     3746msgstr ""
     3747
     3748#: app/views/shared/tinymce_form_popup.php:70
     3749msgid "Use Existing Pretty Link"
     3750msgstr ""
     3751
     3752#: app/views/shared/tinymce_form_popup.php:72
     3753msgid "Search by Slug, Title, or Target URL..."
     3754msgstr ""
     3755
     3756#: app/views/shared/tinymce_form_popup.php:91
     3757msgid "Insert Existing Pretty Link"
     3758msgstr ""
     3759
     3760#: app/views/shared/errors.php:12
     3761#: app/views/admin/errors.php:7
     3762msgid "ERROR"
     3763msgstr ""
     3764
     3765#: app/views/admin/popups/upgrade.php:6
     3766msgid "Upgrade to Pretty Links PRO"
     3767msgstr ""
     3768
     3769#: app/views/admin/popups/upgrade.php:7
     3770msgid "Unlock Pretty Links' PRO features and you'll be able to:"
     3771msgstr ""
     3772
     3773#: app/views/admin/popups/upgrade.php:9
     3774msgid "Monetize existing content with automated Pretty Link placement"
     3775msgstr ""
     3776
     3777#: app/views/admin/popups/upgrade.php:10
     3778msgid "Redirect with cloaking, Javascript or Meta-refresh"
     3779msgstr ""
     3780
     3781#: app/views/admin/popups/upgrade.php:11
     3782msgid "Redirect by location, time, device or rotation"
     3783msgstr ""
     3784
     3785#: app/views/admin/popups/upgrade.php:12
     3786msgid "Expire your Pretty Links"
     3787msgstr ""
     3788
     3789#: app/views/admin/popups/upgrade.php:13
     3790msgid "Split-test your Pretty Links"
     3791msgstr ""
     3792
     3793#: app/views/admin/popups/upgrade.php:14
     3794#: app/views/admin/update/license.php:60
     3795msgid "And much, much more!"
     3796msgstr ""
     3797
     3798#: app/views/admin/popups/upgrade.php:17
     3799msgid "Plus, upgrading is fast, easy and won't disrupt any of your existing links or data."
     3800msgstr ""
     3801
     3802#: app/views/admin/popups/upgrade.php:18
     3803#: app/views/admin/update/license.php:66
     3804msgid "We think you'll love it!"
     3805msgstr ""
     3806
     3807#: app/views/admin/popups/upgrade.php:23
     3808msgid "Upgrade to Pretty Links Pro"
     3809msgstr ""
     3810
     3811#: app/views/admin/popups/upgrade.php:24
     3812msgid "Maybe Later"
     3813msgstr ""
     3814
     3815#: app/views/admin/popups/rating.php:8
     3816msgid "Are you enjoying using Pretty Links?"
     3817msgstr ""
     3818
     3819#: app/views/admin/popups/rating.php:17
     3820msgid "Rate Pretty Links"
     3821msgstr ""
     3822
     3823#: app/views/admin/popups/rating.php:18
     3824msgid "If you enjoy using Pretty Links would you mind taking a moment to rate it on WordPress.org? It won't take more than a minute."
     3825msgstr ""
     3826
     3827#: app/views/admin/popups/rating.php:19
     3828#: app/views/admin/popups/rating.php:31
     3829msgid "Thanks for your support!"
     3830msgstr ""
     3831
     3832#: app/views/admin/popups/rating.php:24
     3833#: app/views/admin/popups/rating.php:36
     3834msgid "Remind Me Later"
     3835msgstr ""
     3836
     3837#: app/views/admin/popups/rating.php:25
     3838msgid "Review Pretty Links"
     3839msgstr ""
     3840
     3841#: app/views/admin/popups/rating.php:29
     3842#: app/views/admin/popups/rating.php:37
     3843msgid "Leave Feedback"
     3844msgstr ""
     3845
     3846#: app/views/admin/popups/rating.php:30
     3847msgid "To help us improve Pretty Links, would you mind taking a moment to leave feedback?"
     3848msgstr ""
     3849
     3850#: app/views/admin/popups/rating.php:40
     3851msgid "Never Remind Me Again"
     3852msgstr ""
     3853
     3854#: app/views/admin/update/addons.php:3
     3855msgid "Pretty Link Add-ons"
     3856msgstr ""
     3857
     3858#: app/views/admin/update/addons.php:8
     3859msgid "There were no Add-ons found for your license or lack thereof..."
     3860msgstr ""
     3861
     3862#: app/views/admin/update/addons.php:14
     3863msgid "Add-on"
     3864msgstr ""
     3865
     3866#: app/views/admin/update/addons.php:15
     3867msgid "Description"
     3868msgstr ""
     3869
     3870#: app/views/admin/update/addons.php:16
     3871#: app/views/admin/update/addons.php:54
     3872msgid "Install"
     3873msgstr ""
     3874
     3875#: app/views/admin/update/addons.php:42
     3876msgid "(Update Available)"
     3877msgstr ""
     3878
     3879#: app/views/admin/update/addons.php:50
     3880msgid "Installed & Active"
     3881msgstr ""
     3882
     3883#: app/views/admin/update/addons.php:52
     3884msgid "Installed & Inactive"
     3885msgstr ""
     3886
     3887#: app/views/admin/update/license.php:7
     3888msgid "Pretty Links Pro License"
     3889msgstr ""
     3890
     3891#. translators: %1$s: link to pro site, %2$s: link to pro site login page
     3892#: app/views/admin/update/license.php:14
     3893msgid "You must have a License Key to enable automatic updates for Pretty Links Pro. If you don't have a License please go to %1$s to get one. If you do have a license you can login at %2$s to manage your licenses and site activations."
     3894msgstr ""
     3895
     3896#: app/views/admin/update/license.php:25
     3897msgid "Enter Your Pretty Links Pro License Key:"
     3898msgstr ""
     3899
     3900#: app/views/admin/update/license.php:32
     3901msgid "Activate License Key on %s"
     3902msgstr ""
     3903
     3904#. translators: %1$s: open link tag, %2$s: close link tag
     3905#: app/views/admin/update/license.php:45
     3906msgid "It looks like you haven't %1$supgraded to Pretty Links Pro%2$s yet. Here are just a few things you could be doing with pro:"
     3907msgstr ""
     3908
     3909#: app/views/admin/update/license.php:55
     3910msgid "Auto-replace keywords throughout your site with Pretty Links"
     3911msgstr ""
     3912
     3913#: app/views/admin/update/license.php:56
     3914msgid "Protect your affiliate links by using Cloaked Redirects"
     3915msgstr ""
     3916
     3917#: app/views/admin/update/license.php:57
     3918msgid "Redirect based on a visitor's location"
     3919msgstr ""
     3920
     3921#: app/views/admin/update/license.php:58
     3922msgid "Auto-prettylink your Pages &amp; Posts"
     3923msgstr ""
     3924
     3925#: app/views/admin/update/license.php:59
     3926msgid "Find out what works and what doesn't by split testing your links"
     3927msgstr ""
     3928
     3929#: app/views/admin/update/license.php:64
     3930msgid "Plus, upgrading is fast, easy and won't disrupt any of your existing links or data. And there's even a 14 day money back guarantee."
     3931msgstr ""
     3932
     3933#: app/views/admin/update/license.php:68
     3934msgid "Upgrade to Pro today!"
     3935msgstr ""
     3936
     3937#: app/views/admin/update/license.php:72
     3938msgid "Active License Key Information:"
     3939msgstr ""
     3940
     3941#: app/views/admin/update/license.php:75
     3942msgid "License Key:"
     3943msgstr ""
     3944
     3945#: app/views/admin/update/license.php:79
     3946msgid "Status:"
     3947msgstr ""
     3948
     3949#: app/views/admin/update/license.php:80
     3950msgid "Active on %s"
     3951msgstr ""
     3952
     3953#: app/views/admin/update/license.php:83
     3954msgid "Product:"
     3955msgstr ""
     3956
     3957#: app/views/admin/update/license.php:87
     3958msgid "Activations:"
     3959msgstr ""
     3960
     3961#. translators: %1$s: open b tag, %2$s: close b tag, %3$d: current activation count, %4$s: max activations
     3962#: app/views/admin/update/license.php:92
     3963msgid "%1$s%3$d of %4$s%2$s sites have been activated with this license key"
     3964msgstr ""
     3965
     3966#: app/views/admin/update/license.php:102
     3967msgid "Are you sure? Pretty Links Pro will not be functional on %s if this License Key is deactivated."
     3968msgstr ""
     3969
     3970#: app/views/admin/update/license.php:102
     3971msgid "Deactivate License Key on %s"
     3972msgstr ""
     3973
     3974#: app/views/admin/update/license.php:105
     3975msgid "Upgrade plugin to Pro"
     3976msgstr ""
     3977
     3978#: app/views/admin/update/license.php:110
     3979msgid "You're currently running version %s of Pretty Links Pro"
     3980msgstr ""
     3981
     3982#: app/views/admin/update/addon_popup.php:4
     3983msgid "ACTION REQUIRED"
     3984msgstr ""
     3985
     3986#: app/views/admin/update/addon_popup.php:5
     3987msgid "The %s features in your Pretty Link options have been moved from Pretty Link into a separate plugin."
     3988msgstr ""
     3989
     3990#: app/views/admin/update/addon_popup.php:6
     3991msgid "Why you ask? Well, it's to streamline and increase the performance of Pretty Link for you."
     3992msgstr ""
     3993
     3994#: app/views/admin/update/addon_popup.php:9
     3995msgid "And good for you, it looks like you've already got the %1$s Add-on installed. Just click the \"Activate %2$s Add-on\" button below and you'll get all these features back now."
     3996msgstr ""
     3997
     3998#: app/views/admin/update/addon_popup.php:11
     3999msgid "Luckily it's easy to get these features back now. Just click the \"Install %s Add-on\" button below."
     4000msgstr ""
     4001
     4002#. translators: %1$s: open link tag, %2$s: close link tag
     4003#: app/views/admin/update/addon_popup.php:16
     4004msgid "If you have problems with the auto-install please refer to %1$sthe user manual%2$s for manual install instructions."
     4005msgstr ""
     4006
     4007#: app/views/admin/update/addon_popup.php:27
     4008msgid "Activate %s Add-on"
     4009msgstr ""
     4010
     4011#: app/views/admin/update/addon_popup.php:29
     4012msgid "Install %s Add-on"
     4013msgstr ""
     4014
     4015#: app/views/admin/update/addon_popup.php:31
     4016msgid "Don't Show This Message Again"
     4017msgstr ""
     4018
     4019#: app/views/admin/update/ui.php:3
     4020msgid "Activate Pretty Links Pro"
     4021msgstr ""
     4022
     4023#: app/views/admin/update/ui.php:16
     4024msgid "License"
     4025msgstr ""
     4026
     4027#: app/views/admin/update/ui.php:17
     4028msgid "Add-Ons"
     4029msgstr ""
     4030
     4031#: app/views/admin/update/edge_updates.php:4
     4032msgid "Include Pretty Links Pro edge (development) releases in automatic updates (not recommended for production websites)"
     4033msgstr ""
     4034
     4035#: app/views/admin/update/edge_updates.php:4
     4036#: app/views/widgets/widget.php:22
     4037msgid "Loading..."
     4038msgstr ""
     4039
     4040#: app/views/admin/update/activation_warning.php:7
     4041msgid "Error with PRETTYLINK_LICENSE_KEY: %s"
     4042msgstr ""
     4043
     4044#: app/views/admin/update/activation_warning.php:14
     4045#: app/views/admin/update/activation_warning.php:41
     4046msgid "Pretty Links Pro isn't able to get critical automatic updates"
     4047msgstr ""
     4048
     4049#: app/views/admin/update/activation_warning.php:15
     4050msgid "It looks like you used to have Pretty Links Pro activated with a username and password but now you need a license key to activate it."
     4051msgstr ""
     4052
     4053#. translators: %1$s: open link tag, %2$s: close link tag
     4054#: app/views/admin/update/activation_warning.php:21
     4055msgid "You can get your license key by logging in at %1$sPrettyLinkPro.com.%2$s"
     4056msgstr ""
     4057
     4058#. translators: %1$s: open link tag, %2$s: close link tag
     4059#: app/views/admin/update/activation_warning.php:32
     4060msgid "After you paste your license key on the %1$s\"Pretty Link\" -> \"Activate Pro\" admin page,%2$s you'll start getting updates again."
     4061msgstr ""
     4062
     4063#. translators: %1$s: open link tag, %2$s: close link tag
     4064#: app/views/admin/update/activation_warning.php:47
     4065msgid "You can retrieve or purchase a license key at %1$sPrettyLinks.com%2$s to enable automatic updates today."
     4066msgstr ""
     4067
     4068#. translators: %1$s: open link tag, %2$s: close link tag
     4069#: app/views/admin/update/activation_warning.php:58
     4070msgid "After you paste your license key on the %1$s\"Pretty Links\" -> \"Activate Pro\" admin page,%2$s you'll start getting automatic updates."
     4071msgstr ""
     4072
     4073#: app/views/admin/onboarding/welcome.php:4
     4074#: app/views/admin/onboarding/welcome.php:7
     4075msgid "Welcome to Pretty Links!"
     4076msgstr ""
     4077
     4078#: app/views/admin/onboarding/welcome.php:10
     4079msgid "Congratulations, you've just installed the most powerful link management platform for WordPress on Earth!"
     4080msgstr ""
     4081
     4082#: app/views/admin/onboarding/welcome.php:11
     4083msgid "With Pretty Links, you'll no longer need to manage links from a spreadsheet and you'll be able to maximize the visibility of your links - these benefits (and more) will make it possible to make more money from your content like never before!"
     4084msgstr ""
     4085
     4086#: app/views/admin/onboarding/welcome.php:17
     4087msgid "Getting Started"
     4088msgstr ""
     4089
     4090#: app/views/admin/onboarding/welcome.php:18
     4091msgid "Start by creating your first Pretty Link:"
     4092msgstr ""
     4093
     4094#: app/views/admin/onboarding/welcome.php:24
     4095msgid "Click \"Add New Link\""
     4096msgstr ""
     4097
     4098#: app/views/admin/onboarding/welcome.php:25
     4099msgid "1. Click \"Add New Link\""
     4100msgstr ""
     4101
     4102#: app/views/admin/onboarding/welcome.php:28
     4103msgid "Enter the URL of your Affiliate Link"
     4104msgstr ""
     4105
     4106#: app/views/admin/onboarding/welcome.php:29
     4107msgid "2. Enter the URL of your Affiliate Link"
     4108msgstr ""
     4109
     4110#: app/views/admin/onboarding/welcome.php:32
     4111msgid "Customize your Pretty Link Slug"
     4112msgstr ""
     4113
     4114#: app/views/admin/onboarding/welcome.php:33
     4115msgid "3. Customize your Pretty Link Slug"
     4116msgstr ""
     4117
     4118#: app/views/admin/onboarding/welcome.php:36
     4119msgid "Click \"Update\""
     4120msgstr ""
     4121
     4122#: app/views/admin/onboarding/welcome.php:37
     4123msgid "4. Click \"Update\""
     4124msgstr ""
     4125
     4126#: app/views/admin/onboarding/welcome.php:40
     4127msgid "Copy the Pretty Link URL"
     4128msgstr ""
     4129
     4130#: app/views/admin/onboarding/welcome.php:41
     4131msgid "5. Copy the Pretty Link URL"
     4132msgstr ""
     4133
     4134#: app/views/admin/onboarding/welcome.php:45
     4135msgid "Wasn't that easy? Now, you can use this link wherever you want!"
     4136msgstr ""
     4137
     4138#: app/views/admin/onboarding/welcome.php:53
     4139msgid "The Power of Pretty Links Pro"
     4140msgstr ""
     4141
     4142#: app/views/admin/onboarding/welcome.php:54
     4143msgid "There are many reasons that premium users of Pretty Links are able to take their business to the next level:"
     4144msgstr ""
     4145
     4146#: app/views/admin/onboarding/welcome.php:59
     4147#: app/views/admin/onboarding/welcome.php:64
     4148msgid "Automated, Site-Wide Link Placement (Keyword Replacement)"
     4149msgstr ""
     4150
     4151#: app/views/admin/onboarding/welcome.php:60
     4152msgid "Imagine if you never had to hand-edit links, copy and paste from a spreadsheet, or actively have to keep up with you links ever again. Well that time has come! Now with Pretty Links, all you have to do is create your links and let Pretty Links do the rest!"
     4153msgstr ""
     4154
     4155#: app/views/admin/onboarding/welcome.php:61
     4156msgid "Pretty Links will scan your content for the keywords or URLs that you want to target and will replace them with Pretty Links automatically! This will save you tons of time so you can focus on growing your business!"
     4157msgstr ""
     4158
     4159#: app/views/admin/onboarding/welcome.php:70
     4160#: app/views/admin/onboarding/welcome.php:73
     4161msgid "Categories & Tags"
     4162msgstr ""
     4163
     4164#: app/views/admin/onboarding/welcome.php:74
     4165msgid "When you are dealing with a large number of links, it can be easy to be overwhelmed and confused by which links to you planned to use where. It's now easier than ever to organize your links and group them any way that you like for ultimate productivity and monetization!"
     4166msgstr ""
     4167
     4168#: app/views/admin/onboarding/welcome.php:80
     4169#: app/views/admin/onboarding/welcome.php:85
     4170msgid "Advanced Redirect Types"
     4171msgstr ""
     4172
     4173#: app/views/admin/onboarding/welcome.php:81
     4174msgid "Lite users can take advantage of 301 & 302 server side redirects but our pro users can also redirect with cloaking, JavaScript, Meta-refresh and more."
     4175msgstr ""
     4176
     4177#: app/views/admin/onboarding/welcome.php:82
     4178msgid "So if you have social media links, a landing page, or a new page or post you'd like to redirect your customers to, this feature will definitely come in handy!"
     4179msgstr ""
     4180
     4181#: app/views/admin/onboarding/welcome.php:91
     4182#: app/views/admin/onboarding/welcome.php:94
     4183msgid "Dynamic Redirect Types"
     4184msgstr ""
     4185
     4186#: app/views/admin/onboarding/welcome.php:95
     4187msgid "Would you like your Pretty Link to redirect somewhere custom depending on what country your user is in, device they're using, time they're clicking the link or just randomly? Our pro users can do this easily with our Dynamic Redirections!"
     4188msgstr ""
     4189
     4190#: app/views/admin/onboarding/welcome.php:96
     4191msgid "This feature is excellent if you are running a time-sensitive sales, want to create custom content for you customers, create stellar landing pages for customers in different countries!"
     4192msgstr ""
     4193
     4194#: app/views/admin/onboarding/welcome.php:102
     4195#: app/views/admin/onboarding/welcome.php:106
     4196msgid "Import and Export Links"
     4197msgstr ""
     4198
     4199#: app/views/admin/onboarding/welcome.php:103
     4200msgid "Export your links to a spreadsheet or import them en masse - our pro users can do this with ease. Simply download your spreadsheet, upload to WordPress, and your links are automatically added to Pretty Links!"
     4201msgstr ""
     4202
     4203#: app/views/admin/onboarding/welcome.php:111
     4204msgid "The list goes on and on"
     4205msgstr ""
     4206
     4207#: app/views/admin/onboarding/welcome.php:112
     4208msgid "Our premium editions of Pretty Links are a HUGE upgrade from Lite. Don’t miss out on our critical PRO benefits!"
     4209msgstr ""
     4210
     4211#: app/views/admin/onboarding/welcome.php:117
     4212msgid "Upgrade NOW and get 50% off of your subscription!!!"
     4213msgstr ""
     4214
     4215#: app/views/admin/onboarding/update.php:4
     4216#: app/views/admin/onboarding/update.php:7
     4217msgid "Get Some Quick Wins with Pretty Links 3.0!"
     4218msgstr ""
     4219
     4220#. translators: %1$s: open strong tag, %2$s: close strong tag
     4221#: app/views/admin/onboarding/update.php:14
     4222msgid "We hope you know that here at Pretty Links, we work every day to deliver amazing tools for business owners to help them %1$swin more%2$s. We want our customers to make more money, easier through superior affiliate link strategy and management."
     4223msgstr ""
     4224
     4225#. translators: %1$s: open strong tag, %2$s: close strong tag
     4226#: app/views/admin/onboarding/update.php:25
     4227msgid "That's why today, we're excited to announce that we're rolling out a major, new release. This release won't deliver any huge, new features but rather a set of incremental features & fixes that will %1$sinstantly give you some well deserved quick wins%2$s in your business."
     4228msgstr ""
     4229
     4230#. translators: %1$s: open strong tag, %2$s: close strong tag
     4231#: app/views/admin/onboarding/update.php:36
     4232msgid "That's why we're calling Pretty Links 3.0 - %1$sQuick Wins!%2$s"
     4233msgstr ""
     4234
     4235#: app/views/admin/onboarding/update.php:43
     4236msgid "What Changes Can You Expect, Exactly?"
     4237msgstr ""
     4238
     4239#: app/views/admin/onboarding/update.php:45
     4240msgid "Check out these solid improvements that will make your experience with Pretty Links better in almost every way:"
     4241msgstr ""
     4242
     4243#. translators: %1$s: open strong tag, %2$s: close strong tag
     4244#: app/views/admin/onboarding/update.php:53
     4245msgid "%1$sAn all-new Link Editor%2$s - We've completely overhauled our link editing experience. Our new, power-packed link editor will make creating and managing your affiliate links easier than ever before!"
     4246msgstr ""
     4247
     4248#: app/views/admin/onboarding/update.php:61
     4249#: app/views/admin/onboarding/update.php:62
     4250#: app/views/admin/onboarding/update.php:66
     4251#: app/views/admin/onboarding/update.php:67
     4252msgid "An all-new Link Editor"
     4253msgstr ""
     4254
     4255#. translators: %1$s: open strong tag, %2$s: close strong tag
     4256#: app/views/admin/onboarding/update.php:77
     4257msgid "%1$sAll new Link Listing%2$s - Gone is the clumsy, old Link Listing feature! You’ll now be able to send links to the \"Trash,\" customize what columns you see in your listing with \"Screen Options\" and change the number of rows displayed."
     4258msgstr ""
     4259
     4260#: app/views/admin/onboarding/update.php:85
     4261#: app/views/admin/onboarding/update.php:86
     4262msgid "All new Link Listing"
     4263msgstr ""
     4264
     4265#. translators: %1$s: open strong tag, %2$s: close strong tag
     4266#: app/views/admin/onboarding/update.php:96
     4267msgid "%1$sCustomizable Links Tags / Categories (Pro Only)%2$s - Once you upgrade to Quick Wins, you'll be able to categorize and tag your pretty links! This is a long-requested feature that will help you organize your links and group them any way that you'd like to for ultimate productivity and monetization!"
     4268msgstr ""
     4269
     4270#: app/views/admin/onboarding/update.php:104
     4271#: app/views/admin/onboarding/update.php:105
     4272msgid "Customizable Links Tags / Categories (Pro Only)"
     4273msgstr ""
     4274
     4275#. translators: %1$s: open strong tag, %2$s: close strong tag
     4276#: app/views/admin/onboarding/update.php:115
     4277msgid "%1$sGutenberg Block Link Integration%2$s - You can now use your Pretty Links directly inside the Gutenberg Paragraph Block. All you have to do is select the \"Pretty Link\" button from your Paragraph Block's formatting bar then you can search and insert Pretty Links instantly!"
     4278msgstr ""
     4279
     4280#: app/views/admin/onboarding/update.php:123
     4281#: app/views/admin/onboarding/update.php:124
     4282msgid "Gutenberg Block Link Integration"
     4283msgstr ""
     4284
     4285#: app/views/admin/onboarding/update.php:133
     4286msgid "Tons of Fixes and Enhancements"
     4287msgstr ""
     4288
     4289#: app/views/admin/onboarding/update.php:135
     4290msgid "In addition to these streamlined, new features we’ve made hundreds of enhancements and numerous small fixes. Pretty Links Quick Wins is going to make your link experience easier, faster, more secure and more capable than ever before!"
     4291msgstr ""
     4292
     4293#. translators: %1$s: open strong tag, %2$s: close strong tag
     4294#: app/views/admin/onboarding/update.php:141
     4295msgid "We're excited for you to start winning more today with %1$sPretty Link Quick Wins!%2$s"
     4296msgstr ""
     4297
     4298#: app/views/options/form.php:3
     4299#: app/controllers/PrliAppController.php:125
     4300msgid "Options"
     4301msgstr ""
     4302
     4303#: app/views/options/form.php:4
     4304msgid "User Manual"
     4305msgstr ""
     4306
     4307#. translators: %1$s: open strong tag, %2$s: close strong tag
     4308#: app/views/options/form.php:17
     4309msgid "%1$sWordPress Must be Configured:%2$s Pretty Links won't work until you select a Permalink Structure other than 'Default'"
     4310msgstr ""
     4311
     4312#: app/views/options/form.php:22
     4313msgid "Permalink Settings"
     4314msgstr ""
     4315
     4316#: app/views/options/form.php:49
     4317msgid "General"
     4318msgstr ""
     4319
     4320#: app/views/options/form.php:52
     4321msgid "Reporting"
     4322msgstr ""
     4323
     4324#: app/views/options/form.php:53
     4325msgid "Replacements"
     4326msgstr ""
     4327
     4328#: app/views/options/form.php:54
     4329msgid "Auto-Create Links"
     4330msgstr ""
     4331
     4332#: app/views/options/form.php:56
     4333msgid "Social"
     4334msgstr ""
     4335
     4336#: app/views/options/form.php:57
     4337msgid "Public"
     4338msgstr ""
     4339
     4340#: app/views/options/form.php:64
     4341msgid "General Options"
     4342msgstr ""
     4343
     4344#: app/views/options/form.php:70
     4345msgid "Default Link Options"
     4346msgstr ""
     4347
     4348#: app/views/options/form.php:75
     4349msgid "Redirection"
     4350msgstr ""
     4351
     4352#: app/views/options/form.php:78
     4353msgid "Select the type of redirection you want your newly created links to have."
     4354msgstr ""
     4355
     4356#: app/views/options/form.php:95
     4357#: app/views/options/form.php:97
     4358msgid "Enable Tracking"
     4359msgstr ""
     4360
     4361#: app/views/options/form.php:98
     4362msgid "Default all new links to be tracked."
     4363msgstr ""
     4364
     4365#: app/views/options/form.php:107
     4366msgid "Enable No Follow"
     4367msgstr ""
     4368
     4369#: app/views/options/form.php:109
     4370msgid "Add No Follow"
     4371msgstr ""
     4372
     4373#: app/views/options/form.php:110
     4374msgid "Add the 'nofollow' attribute by default to new links."
     4375msgstr ""
     4376
     4377#: app/views/options/form.php:119
     4378msgid "Enable Permalink Fix"
     4379msgstr ""
     4380
     4381#: app/views/options/form.php:121
     4382msgid "Use fix for index.php Permalink Structure"
     4383msgstr ""
     4384
     4385#: app/views/options/form.php:122
     4386msgid "This option should ONLY be checked if you have elements in your permalink structure that must be present in any link on your site. For example, some WordPress installs don't have the benefit of full rewrite capabilities and in this case you'd need an index.php included in each link (http://example.com/index.php/mycoolslug instead of http://example.com/mycoolslug). If this is the case for you then check this option but the vast majority of users will want to keep this unchecked."
     4387msgstr ""
     4388
     4389#: app/views/options/form.php:180
     4390msgid "Enable %sQR Codes%s"
     4391msgstr ""
     4392
     4393#: app/views/options/form.php:220
     4394msgid "Reporting Options"
     4395msgstr ""
     4396
     4397#: app/views/options/form.php:225
     4398#: app/views/options/form.php:227
     4399msgid "Tracking Style"
     4400msgstr ""
     4401
     4402#: app/views/options/form.php:228
     4403msgid "Changing your tracking style can affect the accuracy of your existing statistics. Extended mode must be used for Conversion reporting."
     4404msgstr ""
     4405
     4406#: app/views/options/form.php:232
     4407msgid "Normal Tracking"
     4408msgstr ""
     4409
     4410#: app/views/options/form.php:233
     4411msgid "Extended Tracking (more stats / slower performance)"
     4412msgstr ""
     4413
     4414#: app/views/options/form.php:234
     4415msgid "Simple Click Count Tracking (less stats / faster performance)"
     4416msgstr ""
     4417
     4418#: app/views/options/form.php:240
     4419msgid "Excluded IP Addresses:"
     4420msgstr ""
     4421
     4422#: app/views/options/form.php:242
     4423msgid "Excluded IP Addresses"
     4424msgstr ""
     4425
     4426#: app/views/options/form.php:243
     4427msgid "Enter IP Addresses or IP Ranges you want to exclude from your Click data and Stats. Each IP Address should be separated by commas. Example: 192.168.0.1, 192.168.2.1, 192.168.3.4 or 192.168.*.*"
     4428msgstr ""
     4429
     4430#: app/views/options/form.php:246
     4431msgid "FYI, your current IP address is %s."
     4432msgstr ""
     4433
     4434#: app/views/options/form.php:257
     4435msgid "Auto-Trim Clicks"
     4436msgstr ""
     4437
     4438#: app/views/options/form.php:259
     4439msgid "Automatically Trim Clicks"
     4440msgstr ""
     4441
     4442#: app/views/options/form.php:260
     4443msgid "Will automatically delete all hits older than 90 days. We strongly recommend doing this to keep your database performance up. This will permanently delete this click data, and is not undo-able. "
     4444msgstr ""
     4445
     4446#: app/views/options/form.php:269
     4447#: app/views/options/form.php:271
     4448msgid "Filter Robots"
     4449msgstr ""
     4450
     4451#: app/views/options/form.php:272
     4452msgid "Filter known Robots and unidentifiable browser clients from your click data, stats and reports. Works best if Tracking Style above is set to 'Extended Tracking'."
     4453msgstr ""
     4454
     4455#: app/views/options/form.php:288
     4456#: app/views/options/form.php:290
     4457msgid "Whitelist IP Addresses"
     4458msgstr ""
     4459
     4460#: app/views/options/form.php:291
     4461msgid "Enter IP Addresses or IP Ranges you want to always include in your Click data and Stats even if they are flagged as robots. Each IP Address should be separated by commas. Example: 192.168.0.1, 192.168.2.1, 192.168.3.4 or 192.168.*.*"
     4462msgstr ""
     4463
     4464#: app/views/options/form.php:556
     4465msgid "Post Shortlinks"
     4466msgstr ""
     4467
     4468#: app/views/options/form.php:559
     4469msgid "Create Pretty Links for Posts"
     4470msgstr ""
     4471
     4472#: app/views/options/form.php:560
     4473msgid "Automatically Create a Pretty Link for each of your published Posts"
     4474msgstr ""
     4475
     4476#: app/views/options/form.php:573
     4477msgid "Page Shortlinks"
     4478msgstr ""
     4479
     4480#: app/views/options/form.php:576
     4481msgid "Create Pretty Links for Pages"
     4482msgstr ""
     4483
     4484#: app/views/options/form.php:577
     4485msgid "Automatically Create a Pretty Link for each of your published Pages"
     4486msgstr ""
     4487
     4488#: app/views/groups/edit.php:10
     4489msgid "Edit Group"
     4490msgstr ""
     4491
     4492#: app/views/groups/edit.php:23
     4493#: app/views/groups/new.php:24
     4494msgid "This is how you'll identify your Group."
     4495msgstr ""
     4496
     4497#: app/views/groups/edit.php:26
     4498#: app/views/groups/new.php:27
     4499msgid "Description:"
     4500msgstr ""
     4501
     4502#: app/views/groups/edit.php:28
     4503#: app/views/groups/new.php:29
     4504msgid "A Description of this group."
     4505msgstr ""
     4506
     4507#: app/views/groups/edit.php:31
     4508#: app/views/groups/new.php:32
     4509msgid "Links:"
     4510msgstr ""
     4511
     4512#: app/views/groups/edit.php:37
     4513#: app/views/groups/new.php:38
     4514msgid "Current Group"
     4515msgstr ""
     4516
     4517#. translators: %1$s: open strong tag, %2$s close strong tag
     4518#: app/views/groups/edit.php:61
     4519#: app/views/groups/new.php:60
     4520msgid "Select some links for this group. %1$sNote: each link can only be in one group at a time.%2$s"
     4521msgstr ""
     4522
     4523#: app/views/groups/list.php:6
     4524msgid "Groups"
     4525msgstr ""
     4526
     4527#: app/views/groups/list.php:7
     4528msgid "Add Group"
     4529msgstr ""
     4530
     4531#: app/views/groups/list.php:62
     4532msgid "No Pretty Link Groups were found"
     4533msgstr ""
     4534
     4535#: app/views/groups/list.php:79
     4536msgid "Are you sure you want to delete your %s Pretty Link Group?"
     4537msgstr ""
     4538
     4539#: app/views/groups/list.php:80
     4540#: app/views/groups/list.php:84
     4541msgid "View links in %s"
     4542msgstr ""
     4543
     4544#: app/views/groups/list.php:81
     4545msgid "View hits in %s"
     4546msgstr ""
     4547
     4548#: app/views/groups/new.php:10
     4549msgid "New Group"
     4550msgstr ""
     4551
     4552#: app/views/tools/form.php:3
     4553#: app/controllers/PrliAppController.php:122
    624554msgid "Tools"
    634555msgstr ""
    644556
    65 #: app/controllers/PrliAppController.php:91
    66 msgid "Pretty Links | Options"
    67 msgstr ""
    68 
    69 #: app/controllers/PrliAppController.php:92 app/views/options/form.php:3
    70 msgid "Options"
    71 msgstr ""
    72 
    73 #: app/controllers/PrliAppController.php:99
    74 #: app/controllers/PrliAppController.php:102
    75 msgid "Activate Pro"
    76 msgstr ""
    77 
    78 #: app/controllers/PrliAppController.php:105
    79 #: app/controllers/PrliAppController.php:125
    80 #: app/views/admin/update/license.php:27 app/views/shared/nav.php:9
    81 msgid "Upgrade to Pro"
    82 msgstr ""
    83 
    84 #: app/controllers/PrliAppController.php:116
    85 #: app/controllers/PrliAppController.php:122
    86 #: app/controllers/PrliAppController.php:127
    87 msgid "Docs"
    88 msgstr ""
    89 
    90 #: app/controllers/PrliAppController.php:117
    91 msgid "Activate"
    92 msgstr ""
    93 
    94 #: app/controllers/PrliAppController.php:120
    95 #: app/controllers/PrliAppController.php:126
    96 msgid "Activate Pro License"
    97 msgstr ""
    98 
    99 #: app/controllers/PrliAppController.php:121
    100 msgid "Buy"
    101 msgstr ""
    102 
    103 #: app/controllers/PrliAppController.php:284
    104 msgid ""
    105 "You're almost done!<br/>%1$sFinish your Re-Install of Pretty Links Pro%2$s"
    106 msgstr ""
    107 
    108 #: app/controllers/PrliAppController.php:291
    109 msgid "Pretty Links Pro Successfully Uninstalled."
    110 msgstr ""
    111 
    112 #: app/controllers/PrliAppController.php:352
    113 msgid "Pretty Link Quick Add"
    114 msgstr ""
    115 
    116 #: app/controllers/PrliAppController.php:391
    117 msgid ""
    118 "Your Pretty Links Pro installation isn't quite complete yet. "
    119 "%1$sAutomatically Upgrade to Enable Pretty Links Pro%2$s"
    120 msgstr ""
    121 
    122 #: app/controllers/PrliAppController.php:412
    123 msgid ""
    124 "Your Pretty Links Pro installation isn't quite complete yet.<br/>"
    125 "%1$sAutomatically Upgrade to Enable Pretty Links Pro%2$s"
     4557#: app/views/tools/form.php:18
     4558#: app/views/tools/form.php:25
     4559msgid "Bookmarklet"
     4560msgstr ""
     4561
     4562#: app/views/tools/form.php:19
     4563#: app/views/tools/form.php:70
     4564msgid "Trim Clicks"
     4565msgstr ""
     4566
     4567#: app/views/tools/form.php:28
     4568msgid "Install Pretty Link Bookmarklet"
     4569msgstr ""
     4570
     4571#. translators: %1$s: open link tag, %2$s close link tag
     4572#: app/views/tools/form.php:31
     4573msgid "Just drag this \"Get PrettyLink\" link to your toolbar to install the bookmarklet. As you browse the web, you can just click this bookmarklet to create a pretty link from the current url you're looking at. %1$s(more help)%2$s"
     4574msgstr ""
     4575
     4576#: app/views/tools/form.php:36
     4577msgid "Show iPhone Bookmarklet Instructions"
     4578msgstr ""
     4579
     4580#. translators: %1$s: open strong tag, %2$s close strong tag
     4581#: app/views/tools/form.php:43
     4582msgid "%1$sNote:%2$s iPhone users can install this bookmarklet in their Safari to create Pretty Links with the following steps:"
     4583msgstr ""
     4584
     4585#: app/views/tools/form.php:49
     4586msgid "Copy this text:"
     4587msgstr ""
     4588
     4589#: app/views/tools/form.php:50
     4590msgid "Tap the + button at the bottom of the screen"
     4591msgstr ""
     4592
     4593#: app/views/tools/form.php:51
     4594msgid "Choose to share the page, then click on \"Bookmark\". We recommend saving it in your Favorites folder. Rename your bookmark to \"Get PrettyLink\" (or whatever you want) and then \"Save\""
     4595msgstr ""
     4596
     4597#: app/views/tools/form.php:52
     4598msgid "Navigate through your Bookmarks until you find the new bookmark and click \"Edit\""
     4599msgstr ""
     4600
     4601#: app/views/tools/form.php:53
     4602msgid "Delete all the text from the address"
     4603msgstr ""
     4604
     4605#: app/views/tools/form.php:54
     4606msgid "Paste the text you copied in Step 1 into the address field"
     4607msgstr ""
     4608
     4609#. translators: %1$s: open strong tag, %2$s close strong tag
     4610#: app/views/tools/form.php:59
     4611msgid "To save the changes hit \"Bookmarks\" and %1$syou're done!%2$s"
     4612msgstr ""
     4613
     4614#: app/views/tools/form.php:64
     4615msgid "Now when you find a page you want to save off as a Pretty Link, just click the \"Bookmarks\" icon at the bottom of the screen and select your \"Get PrettyLink\" bookmarklet."
     4616msgstr ""
     4617
     4618#: app/views/tools/form.php:72
     4619msgid "Pretty Link is already automatically trimming Clicks older than 90 days. Although not necessary, you can still use the buttons below to force click trimming."
     4620msgstr ""
     4621
     4622#: app/views/tools/form.php:75
     4623msgid "***WARNING*** If you click OK you will delete ALL of the Click data that is older than 30 days. Your data will be gone forever -- no way to retreive it. Do not click OK unless you are absolutely sure you want to delete this data because there is no going back!"
     4624msgstr ""
     4625
     4626#: app/views/tools/form.php:75
     4627msgid "Delete Clicks older than 30 days"
     4628msgstr ""
     4629
     4630#: app/views/tools/form.php:77
     4631msgid "Clear clicks 30 days or older"
     4632msgstr ""
     4633
     4634#: app/views/tools/form.php:78
     4635msgid "This will clear all clicks in your database that are older than 30 days."
     4636msgstr ""
     4637
     4638#: app/views/tools/form.php:80
     4639msgid "***WARNING*** If you click OK you will delete ALL of the Click data that is older than 90 days. Your data will be gone forever -- no way to retreive it. Do not click OK unless you are absolutely sure you want to delete this data because there is no going back!"
     4640msgstr ""
     4641
     4642#: app/views/tools/form.php:80
     4643msgid "Delete Clicks older than 90 days"
     4644msgstr ""
     4645
     4646#: app/views/tools/form.php:82
     4647msgid "Clear clicks 90 days or older"
     4648msgstr ""
     4649
     4650#: app/views/tools/form.php:83
     4651msgid "This will clear all clicks in your database that are older than 90 days."
     4652msgstr ""
     4653
     4654#: app/views/tools/form.php:87
     4655msgid "***WARNING*** If you click OK you will delete ALL of the Click data in your Database. Your data will be gone forever -- no way to retreive it. Do not click OK unless you are absolutely sure you want to delete all your data because there is no going back!"
     4656msgstr ""
     4657
     4658#: app/views/tools/form.php:87
     4659msgid "Delete All Clicks"
     4660msgstr ""
     4661
     4662#: app/views/tools/form.php:89
     4663msgid "Clear all clicks"
     4664msgstr ""
     4665
     4666#: app/views/tools/form.php:90
     4667msgid "Seriously, only click this link if you want to delete all the Click data in your database."
     4668msgstr ""
     4669
     4670#: app/views/clicks/list.php:6
     4671#: app/views/clicks/csv_download.php:4
     4672msgid "For %s"
     4673msgstr ""
     4674
     4675#: app/views/clicks/list.php:21
     4676msgid "Back to Clicks"
     4677msgstr ""
     4678
     4679#: app/views/clicks/list.php:30
     4680msgid "Type:"
     4681msgstr ""
     4682
     4683#: app/views/clicks/list.php:39
     4684msgid "to"
     4685msgstr ""
     4686
     4687#: app/views/clicks/list.php:62
     4688msgid "Search Clicks"
     4689msgstr ""
     4690
     4691#: app/views/clicks/list.php:73
     4692#: app/views/clicks/list.php:171
     4693msgid "Browser"
     4694msgstr ""
     4695
     4696#: app/views/clicks/list.php:75
     4697#: app/views/clicks/list.php:172
     4698msgid "OS"
     4699msgstr ""
     4700
     4701#: app/views/clicks/list.php:79
     4702#: app/views/clicks/list.php:174
     4703msgid "IP"
     4704msgstr ""
     4705
     4706#: app/views/clicks/list.php:83
     4707#: app/views/clicks/list.php:176
     4708msgid "Visitor"
     4709msgstr ""
     4710
     4711#: app/views/clicks/list.php:87
     4712#: app/views/clicks/list.php:178
     4713msgid "Timestamp"
     4714msgstr ""
     4715
     4716#: app/views/clicks/list.php:91
     4717#: app/views/clicks/list.php:180
     4718msgid "Host"
     4719msgstr ""
     4720
     4721#: app/views/clicks/list.php:95
     4722#: app/views/clicks/list.php:182
     4723msgid "URI"
     4724msgstr ""
     4725
     4726#: app/views/clicks/list.php:98
     4727#: app/views/clicks/list.php:183
     4728msgid "Referrer"
     4729msgstr ""
     4730
     4731#: app/views/clicks/list.php:111
     4732msgid "No Clicks have been recorded yet"
     4733msgstr ""
     4734
     4735#: app/views/clicks/list.php:147
     4736msgid "View All Activity for IP Address: %s"
     4737msgstr ""
     4738
     4739#: app/views/clicks/list.php:150
     4740msgid "View All Activity for Visitor: %s"
     4741msgstr ""
     4742
     4743#: app/views/clicks/list.php:190
     4744msgid "Download CSV"
     4745msgstr ""
     4746
     4747#: app/views/clicks/csv_download.php:3
     4748msgid "Download Clicks"
     4749msgstr ""
     4750
     4751#: app/views/clicks/csv_download.php:6
     4752msgid "Click Reports:"
     4753msgstr ""
     4754
     4755#: app/views/clicks/csv_download.php:7
     4756msgid "All clicks on %s"
     4757msgstr ""
     4758
     4759#: app/views/clicks/csv_download.php:24
     4760msgid "Clicks %d-%d (%d Records)"
     4761msgstr ""
     4762
     4763#: app/controllers/PrliUpdateController.php:72
     4764msgid "Why you creepin'?"
     4765msgstr ""
     4766
     4767#: app/controllers/PrliUpdateController.php:305
     4768msgid "Check for Update"
     4769msgstr ""
     4770
     4771#: app/controllers/PrliUpdateController.php:374
     4772msgid "You had an HTTP error connecting to Caseproof's Mothership API"
     4773msgstr ""
     4774
     4775#: app/controllers/PrliUpdateController.php:386
     4776msgid "Your License Key was invalid"
     4777msgstr ""
     4778
     4779#: app/controllers/PrliUpdateController.php:412
     4780msgid "You do not have access."
     4781msgstr ""
     4782
     4783#: app/controllers/PrliUpdateController.php:416
     4784msgid "Edge updates couldn't be updated."
     4785msgstr ""
     4786
     4787#: app/controllers/PrliToolsController.php:94
     4788msgid "Click Database was Cleared."
     4789msgstr ""
     4790
     4791#: app/controllers/PrliToolsController.php:100
     4792msgid "Clicks older than %1$d days (%2$d Clicks) were deleted"
     4793msgstr ""
     4794
     4795#: app/controllers/PrliToolsController.php:103
     4796msgid "No clicks older than %1$d days were found, so nothing was deleted"
    1264797msgstr ""
    1274798
     
    1344805msgstr ""
    1354806
    136 #: app/controllers/PrliClicksController.php:100
    137 msgid "Group: "
    138 msgstr ""
    139 
    140 #: app/controllers/PrliClicksController.php:105
     4807#: app/controllers/PrliClicksController.php:99
    1414808msgid "All Links"
    142 msgstr ""
    143 
    144 #: app/controllers/PrliGroupsController.php:40
    145 msgid "Cannot add group because current user is not authorized."
    146 msgstr ""
    147 
    148 #: app/controllers/PrliGroupsController.php:45
    149 msgid "An unknown error occurred when creating your group."
    150 msgstr ""
    151 
    152 #: app/controllers/PrliGroupsController.php:54
    153 msgid "Group Created"
    154 msgstr ""
    155 
    156 #: app/controllers/PrliGroupsController.php:61
    157 msgid "A name must be specified for your new group name"
    158 msgstr ""
    159 
    160 #: app/controllers/PrliGroupsController.php:66
    161 msgid "Cannot add group because security nonce failed"
    162 msgstr ""
    163 
    164 #: app/controllers/PrliGroupsController.php:76
    165 msgid "Create a group and use it to organize your Pretty Links."
    166 msgstr ""
    167 
    168 #: app/controllers/PrliGroupsController.php:100
    169 msgid "Your Pretty Link Group was Successfully Created"
    170 msgstr ""
    171 
    172 #: app/controllers/PrliGroupsController.php:130
    173 msgid "Your Pretty Link Group was Successfully Updated"
    174 msgstr ""
    175 
    176 #: app/controllers/PrliGroupsController.php:139
    177 msgid "Your Pretty Link Group was Successfully Deleted"
    178 msgstr ""
    179 
    180 #: app/controllers/PrliLinksController.php:53
    181 msgid "Links in Group: "
    182 msgstr ""
    183 
    184 #: app/controllers/PrliLinksController.php:98
    185 #: app/controllers/PrliLinksController.php:124
    186 msgid "Your Pretty Link was Successfully Created"
    187 msgstr ""
    188 
    189 #: app/controllers/PrliLinksController.php:163
    190 msgid "Your Pretty Link was Successfully Updated"
    191 msgstr ""
    192 
    193 #: app/controllers/PrliLinksController.php:178
    194 msgid "Your links were updated successfully"
    195 msgstr ""
    196 
    197 #: app/controllers/PrliLinksController.php:195
    198 #: app/controllers/PrliLinksController.php:245
    199 msgid "You are unauthorized to view this page."
    200 msgstr ""
    201 
    202 #: app/controllers/PrliLinksController.php:207
    203 msgid "Your Pretty Link was Successfully Reset"
    204 msgstr ""
    205 
    206 #: app/controllers/PrliLinksController.php:219
    207 msgid "Your Pretty Link was Successfully Destroyed"
    208 msgstr ""
    209 
    210 #: app/controllers/PrliLinksController.php:232
    211 msgid "Your links were deleted successfully"
    212 msgstr ""
    213 
    214 #: app/controllers/PrliLinksController.php:523
    215 msgid "Pretty Link Cleanup Visitor Locks"
    216 msgstr ""
    217 
    218 #: app/controllers/PrliLocalApiController.php:101
    219 #: app/controllers/PrliLocalApiController.php:160
    220 msgid "An error prevented your Pretty Link from being created"
    221 msgstr ""
    222 
    223 #: app/controllers/PrliLocalApiController.php:125
    224 msgid "Pretty Link ID must be set for successful update."
    225 msgstr ""
    226 
    227 #: app/controllers/PrliOptionsController.php:61
    228 msgid "Options saved."
    229 msgstr ""
    230 
    231 #: app/controllers/PrliOptionsController.php:75
    232 msgid ""
    233 "Excluded IP Addresses must be a comma separated list of IPv4 or IPv6 "
    234 "addresses or ranges."
    235 msgstr ""
    236 
    237 #: app/controllers/PrliOptionsController.php:79
    238 msgid ""
    239 "Whitlist IP Addresses must be a comma separated list of IPv4 or IPv6 "
    240 "addresses or ranges."
    241 msgstr ""
    242 
    243 #: app/controllers/PrliPopupController.php:62
    244 msgid "An unknown error occurred."
    245 msgstr ""
    246 
    247 #: app/controllers/PrliPopupController.php:89
    248 msgid "Forbidden"
    249 msgstr ""
    250 
    251 #: app/controllers/PrliPopupController.php:93
    252 msgid "Must specify a popup"
    253 msgstr ""
    254 
    255 #: app/controllers/PrliPopupController.php:99
    256 msgid "Invalid popup"
    257 msgstr ""
    258 
    259 #: app/controllers/PrliPopupController.php:104
    260 msgid "The popup was successfully delayed"
    261 msgstr ""
    262 
    263 #: app/controllers/PrliPopupController.php:108
    264 msgid "The popup was successfully stopped"
    265 msgstr ""
    266 
    267 #: app/controllers/PrliToolsController.php:89
    268 msgid "Click Database was Cleared."
    269 msgstr ""
    270 
    271 #: app/controllers/PrliToolsController.php:95
    272 msgid "Clicks older than %1$d days (%2$d Clicks) were deleted"
    273 msgstr ""
    274 
    275 #: app/controllers/PrliToolsController.php:98
    276 msgid "No clicks older than %1$d days were found, so nothing was deleted"
    277 msgstr ""
    278 
    279 #: app/controllers/PrliUpdateController.php:72
    280 msgid "Why you creepin'?"
    281 msgstr ""
    282 
    283 #: app/controllers/PrliUpdateController.php:306
    284 msgid "Check for Update"
    285 msgstr ""
    286 
    287 #: app/controllers/PrliUpdateController.php:375
    288 msgid "You had an HTTP error connecting to Caseproof's Mothership API"
    289 msgstr ""
    290 
    291 #: app/controllers/PrliUpdateController.php:387
    292 msgid "Your License Key was invalid"
    293 msgstr ""
    294 
    295 #: app/controllers/PrliUpdateController.php:413
    296 msgid "You do not have access."
    297 msgstr ""
    298 
    299 #: app/controllers/PrliUpdateController.php:417
    300 msgid "Edge updates couldn't be updated."
    3014809msgstr ""
    3024810
     
    3734881msgstr ""
    3744882
    375 #: app/helpers/PrliAppHelper.php:23 app/helpers/PrliLinksHelper.php:14
    376 #: app/views/links/form.php:100 app/views/shared/tinymce_form_popup.php:105
    377 #: app/views/shared/tinymce_form_popup.php:109 pro/app/views/links/form.php:185
    378 #: pro/app/views/options/form.php:703 pro/app/views/tools/generator.php:35
    379 #: pro/app/widgets/PlpPublicLinksWidget.php:80
    380 msgid "None"
    381 msgstr ""
    382 
    383 #: app/helpers/PrliLinksHelper.php:37 app/views/links/form.php:15
    384 #: app/views/shared/tinymce_form_popup.php:62
    385 msgid "307 (Temporary)"
    386 msgstr ""
    387 
    388 #: app/helpers/PrliLinksHelper.php:38 app/views/links/form.php:16
    389 #: app/views/shared/tinymce_form_popup.php:63
    390 msgid "302 (Temporary)"
    391 msgstr ""
    392 
    393 #: app/helpers/PrliLinksHelper.php:39 app/views/links/form.php:17
    394 #: app/views/shared/tinymce_form_popup.php:64
    395 msgid "301 (Permanent)"
    396 msgstr ""
    397 
    398 #: app/helpers/PrliLinksHelper.php:49
    399 msgid "Bulk Actions"
    400 msgstr ""
    401 
    402 #: app/helpers/PrliLinksHelper.php:50 app/views/groups/list.php:66
    403 #: pro/app/views/reports/list.php:55
    404 msgid "Edit"
    405 msgstr ""
    406 
    407 #: app/helpers/PrliLinksHelper.php:51 app/views/groups/list.php:67
    408 #: pro/app/views/reports/list.php:56
    409 msgid "Delete"
    410 msgstr ""
    411 
    412 #: app/helpers/PrliLinksHelper.php:53
    413 msgid "Are you sure you want to delete the selected links?"
    414 msgstr ""
    415 
    416 #: app/helpers/PrliLinksHelper.php:53
    417 msgid "Apply"
    418 msgstr ""
    419 
    420 #: app/helpers/PrliLinksHelper.php:63 app/views/links/list.php:77
    421 #: app/views/links/list.php:80
    422 msgid "- No Change -"
    423 msgstr ""
    424 
    425 #: app/helpers/PrliLinksHelper.php:64
    426 msgid "Off"
    427 msgstr ""
    428 
    429 #: app/helpers/PrliLinksHelper.php:65
    430 msgid "On"
    431 msgstr ""
    432 
    433 #: app/helpers/PrliLinksHelper.php:75
    434 msgid "PrettyBar Redirection"
    435 msgstr ""
    436 
    437 #: app/helpers/PrliLinksHelper.php:78
    438 msgid "Cloaked Redirection"
    439 msgstr ""
    440 
    441 #: app/helpers/PrliLinksHelper.php:81
    442 msgid "Pixel Tracking Redirection"
    443 msgstr ""
    444 
    445 #: app/helpers/PrliLinksHelper.php:84
    446 msgid "Meta Refresh Redirection"
    447 msgstr ""
    448 
    449 #: app/helpers/PrliLinksHelper.php:87
    450 msgid "Javascript Redirection"
    451 msgstr ""
    452 
    453 #: app/helpers/PrliLinksHelper.php:90
    454 msgid "Temporary (307) Redirection"
    455 msgstr ""
    456 
    457 #: app/helpers/PrliLinksHelper.php:93
    458 msgid "Temporary (302) Redirection"
    459 msgstr ""
    460 
    461 #: app/helpers/PrliLinksHelper.php:96
    462 msgid "Permanent (301) Redirection"
    463 msgstr ""
    464 
    465 #: app/helpers/PrliLinksHelper.php:100
    466 msgid "Nofollow Enabled"
    467 msgstr ""
    468 
    469 #: app/helpers/PrliLinksHelper.php:104
    470 msgid "Parameter Forwarding Enabled"
    471 msgstr ""
    472 
    473 #: app/helpers/PrliLinksHelper.php:115 app/views/groups/list.php:63
    474 #: app/views/groups/list.php:66
    475 msgid "Edit %s"
    476 msgstr ""
    477 
    478 #: app/helpers/PrliLinksHelper.php:116
    479 msgid ""
    480 "Are you sure you want to delete your %s Pretty Link? This will delete the "
    481 "Pretty Link and all of the statistical data about it in your database."
    482 msgstr ""
    483 
    484 #: app/helpers/PrliLinksHelper.php:116
    485 msgid "Delete %s"
    486 msgstr ""
    487 
    488 #: app/helpers/PrliLinksHelper.php:117
    489 msgid ""
    490 "Are you sure you want to reset your %s Pretty Link? This will delete all of "
    491 "the statistical data about this Pretty Link in your database."
    492 msgstr ""
    493 
    494 #: app/helpers/PrliLinksHelper.php:117
    495 msgid "Reset %s"
    496 msgstr ""
    497 
    498 #: app/helpers/PrliLinksHelper.php:120 app/views/clicks/list.php:163
    499 msgid "View clicks for %s"
    500 msgstr ""
    501 
    502 #: app/helpers/PrliLinksHelper.php:125
    503 msgid "Post %s to Twitter"
    504 msgstr ""
    505 
    506 #: app/helpers/PrliLinksHelper.php:126
    507 msgid "Send %s in an Email"
    508 msgstr ""
    509 
    510 #: app/models/PrliClick.php:237
    511 msgid "group: '%s'"
    512 msgstr ""
    513 
    514 #: app/models/PrliClick.php:240
    515 msgid "all links"
    516 msgstr ""
    517 
    518 #: app/models/PrliClick.php:247
    519 msgid "All clicks"
    520 msgstr ""
    521 
    522 #: app/models/PrliClick.php:250
    523 msgid "Unique hits"
    524 msgstr ""
    525 
    526 #: app/models/PrliClick.php:254 pro/app/helpers/PlpPostsHelper.php:66
    527 msgid "Pretty Link:"
    528 msgstr ""
    529 
    530 #: app/models/PrliClick.php:254
    531 msgid "on"
    532 msgstr ""
    533 
    534 #: app/models/PrliClick.php:254 pro/app/models/PlpReport.php:385
    535 msgid "between"
    536 msgstr ""
    537 
    538 #: app/models/PrliClick.php:254 pro/app/models/PlpReport.php:244
    539 #: pro/app/models/PlpReport.php:385
    540 msgid "and"
    541 msgstr ""
    542 
    543 #: app/models/PrliClick.php:259 pro/app/views/links/form.php:35
    544 #: pro/app/views/links/form.php:68
    545 msgid "Date"
    546 msgstr ""
    547 
    548 #: app/models/PrliLink.php:559
    549 msgid "Target URL can't be blank"
    550 msgstr ""
    551 
    552 #: app/models/PrliLink.php:563
    553 msgid "Pretty Link can't be blank"
    554 msgstr ""
    555 
    556 #: app/models/PrliLink.php:567
    557 msgid "Target URL must be different than the Pretty Link"
    558 msgstr ""
    559 
    560 #: app/models/PrliLink.php:571
    561 msgid "Link URL must be a correctly formatted url"
    562 msgstr ""
    563 
    564 #: app/models/PrliLink.php:575
    565 msgid ""
    566 "Pretty Link slugs must not contain question marks, ampersands or number "
    567 "signs."
    568 msgstr ""
    569 
    570 #: app/models/PrliLink.php:579
    571 msgid "Pretty Link slugs must not end with a slash (\"/\")"
    572 msgstr ""
    573 
    574 #: app/models/PrliLink.php:584
    575 msgid ""
    576 "This Pretty Link Slug is already taken. Check to make sure it isn't being "
    577 "used by another pretty link, post, page, category or tag slug. If none of "
    578 "these are true then check to see that this slug isn't the name of a file in "
    579 "the root folder of your wordpress install."
    580 msgstr ""
    581 
    582 #: app/models/PrliUtils.php:93
    583 msgid "*** Pretty Links Debug: %s"
    584 msgstr ""
    585 
    586 #: app/views/admin/errors.php:7 app/views/shared/errors.php:12
    587 msgid "ERROR"
    588 msgstr ""
    589 
    590 #: app/views/admin/popups/rating.php:6
    591 msgid "Rate Pretty Link"
    592 msgstr ""
    593 
    594 #: app/views/admin/popups/rating.php:7
    595 msgid ""
    596 "If you enjoy using Pretty Link would you mind taking a moment to rate it on "
    597 "WordPress.org? It won't take more than a minute."
    598 msgstr ""
    599 
    600 #: app/views/admin/popups/rating.php:8
    601 msgid "Thanks for your support!"
    602 msgstr ""
    603 
    604 #: app/views/admin/popups/rating.php:13 app/views/admin/popups/upgrade.php:23
    605 msgid "Remind Me Later"
    606 msgstr ""
    607 
    608 #: app/views/admin/popups/rating.php:14
    609 msgid "Review Pretty Link"
    610 msgstr ""
    611 
    612 #: app/views/admin/popups/rating.php:16 app/views/admin/popups/upgrade.php:26
    613 msgid "Never Remind Me Again"
    614 msgstr ""
    615 
    616 #: app/views/admin/popups/upgrade.php:6
    617 msgid "Upgrade Pretty Link PRO"
    618 msgstr ""
    619 
    620 #: app/views/admin/popups/upgrade.php:7
    621 msgid "Upgrading will enable you to:"
    622 msgstr ""
    623 
    624 #: app/views/admin/popups/upgrade.php:9 app/views/admin/update/license.php:36
    625 #: app/views/links/form.php:225
    626 msgid "Auto-replace keywords throughout your site with Pretty Links"
    627 msgstr ""
    628 
    629 #: app/views/admin/popups/upgrade.php:10 app/views/admin/update/license.php:37
    630 #: app/views/links/form.php:226
    631 msgid "Protect your affiliate links by using Cloaked Redirects"
    632 msgstr ""
    633 
    634 #: app/views/admin/popups/upgrade.php:11 app/views/admin/update/license.php:38
    635 #: app/views/links/form.php:227
    636 msgid "Redirect based on a visitor's location"
    637 msgstr ""
    638 
    639 #: app/views/admin/popups/upgrade.php:12 app/views/admin/update/license.php:39
    640 #: app/views/links/form.php:228
    641 msgid "Auto-prettylink your Pages &amp; Posts"
    642 msgstr ""
    643 
    644 #: app/views/admin/popups/upgrade.php:13 app/views/admin/update/license.php:40
    645 #: app/views/links/form.php:229
    646 msgid "Find out what works and what doesn't by split testing your links"
    647 msgstr ""
    648 
    649 #: app/views/admin/popups/upgrade.php:14 app/views/admin/update/license.php:41
    650 #: app/views/links/form.php:230
    651 msgid "And much, much more!"
    652 msgstr ""
    653 
    654 #: app/views/admin/popups/upgrade.php:17 app/views/admin/update/license.php:45
    655 #: app/views/links/form.php:233
    656 msgid ""
    657 "Plus, upgrading is fast, easy and won't disrupt any of your existing links "
    658 "or data. And there's even a 14 day money back guarantee."
    659 msgstr ""
    660 
    661 #: app/views/admin/popups/upgrade.php:18 app/views/admin/update/license.php:47
    662 #: app/views/links/form.php:235
    663 msgid "We think you'll love it!"
    664 msgstr ""
    665 
    666 #: app/views/admin/popups/upgrade.php:24
    667 msgid "Upgrade to Pretty Links Pro"
    668 msgstr ""
    669 
    670 #: app/views/admin/update/activation_warning.php:4
    671 msgid "Error with PRETTYLINK_LICENSE_KEY: %s"
    672 msgstr ""
    673 
    674 #: app/views/admin/update/activation_warning.php:7
    675 #: app/views/admin/update/activation_warning.php:14
    676 msgid "Pretty Links Pro isn't able to get critical automatic updates"
    677 msgstr ""
    678 
    679 #: app/views/admin/update/activation_warning.php:8
    680 msgid ""
    681 "It looks like you used to have Pretty Links Pro activated with a username "
    682 "and password but now you need a license key to activate it."
    683 msgstr ""
    684 
    685 #: app/views/admin/update/activation_warning.php:9
    686 msgid ""
    687 "You can get your license key by logging in at %1$sPrettyLinkPro.com.%2$s"
    688 msgstr ""
    689 
    690 #: app/views/admin/update/activation_warning.php:10
    691 msgid ""
    692 "After you paste your license key on the %1$s\"Pretty Link\" -> \"Activate Pro"
    693 "\" admin page,%2$s you'll start getting updates again."
    694 msgstr ""
    695 
    696 #: app/views/admin/update/activation_warning.php:15
    697 msgid ""
    698 "You can retrieve or purchase a license key at %1$sPrettyLinkPro.com%2$s to "
    699 "enable automatic updates today."
    700 msgstr ""
    701 
    702 #: app/views/admin/update/activation_warning.php:16
    703 msgid ""
    704 "After you paste your license key on the %1$s\"Pretty Link\" -> \"Activate Pro"
    705 "\" admin page,%2$s you'll start getting automatic updates."
    706 msgstr ""
    707 
    708 #: app/views/admin/update/addon_popup.php:4
    709 msgid "ACTION REQUIRED"
    710 msgstr ""
    711 
    712 #: app/views/admin/update/addon_popup.php:5
    713 msgid ""
    714 "The %s features in your Pretty Link options have been moved from Pretty Link "
    715 "into a separate plugin."
    716 msgstr ""
    717 
    718 #: app/views/admin/update/addon_popup.php:6
    719 msgid ""
    720 "Why you ask? Well, it's to streamline and increase the performance of Pretty "
    721 "Link for you."
    722 msgstr ""
    723 
    724 #: app/views/admin/update/addon_popup.php:9
    725 msgid ""
    726 "And good for you, it looks like you've already got the %1$s Add-on "
    727 "installed. Just click the \"Activate %2$s Add-on\" button below and you'll "
    728 "get all these features back now."
    729 msgstr ""
    730 
    731 #: app/views/admin/update/addon_popup.php:11
    732 msgid ""
    733 "Luckily it's easy to get these features back now. Just click the \"Install "
    734 "%s Add-on\" button below."
    735 msgstr ""
    736 
    737 #: app/views/admin/update/addon_popup.php:12
    738 msgid ""
    739 "If you have problems with the auto-install please refer to %1$sthe user "
    740 "manual%2$s for manual install instructions."
    741 msgstr ""
    742 
    743 #: app/views/admin/update/addon_popup.php:18
    744 msgid "Activate %s Add-on"
    745 msgstr ""
    746 
    747 #: app/views/admin/update/addon_popup.php:20
    748 msgid "Install %s Add-on"
    749 msgstr ""
    750 
    751 #: app/views/admin/update/addon_popup.php:22
    752 msgid "Don't Show This Message Again"
    753 msgstr ""
    754 
    755 #: app/views/admin/update/addons.php:3
    756 msgid "Pretty Link Add-ons"
    757 msgstr ""
    758 
    759 #: app/views/admin/update/addons.php:8
    760 msgid "There were no Add-ons found for your license or lack thereof..."
    761 msgstr ""
    762 
    763 #: app/views/admin/update/addons.php:14
    764 msgid "Add-on"
    765 msgstr ""
    766 
    767 #: app/views/admin/update/addons.php:15
    768 msgid "Description"
    769 msgstr ""
    770 
    771 #: app/views/admin/update/addons.php:16 app/views/admin/update/addons.php:54
    772 msgid "Install"
    773 msgstr ""
    774 
    775 #: app/views/admin/update/addons.php:42
    776 msgid "(Update Available)"
    777 msgstr ""
    778 
    779 #: app/views/admin/update/addons.php:50
    780 msgid "Installed & Active"
    781 msgstr ""
    782 
    783 #: app/views/admin/update/addons.php:52
    784 msgid "Installed & Inactive"
    785 msgstr ""
    786 
    787 #: app/views/admin/update/edge_updates.php:4
    788 msgid ""
    789 "Include Pretty Links Pro edge (development) releases in automatic updates "
    790 "(not recommended for production websites)"
    791 msgstr ""
    792 
    793 #: app/views/admin/update/edge_updates.php:4
    794 msgid "Loading..."
    795 msgstr ""
    796 
    797 #: app/views/admin/update/license.php:4
    798 msgid "Pretty Links Pro License"
    799 msgstr ""
    800 
    801 #: app/views/admin/update/license.php:7
    802 msgid ""
    803 "You must have a License Key to enable automatic updates for Pretty Links "
    804 "Pro. If you don't have a License please go to %1$s to get one. If you do "
    805 "have a license you can login at %2$s to manage your licenses and site "
    806 "activations."
    807 msgstr ""
    808 
    809 #: app/views/admin/update/license.php:13
    810 msgid "Enter Your Pretty Links Pro License Key:"
    811 msgstr ""
    812 
    813 #: app/views/admin/update/license.php:20
    814 msgid "Activate License Key on %s"
    815 msgstr ""
    816 
    817 #: app/views/admin/update/license.php:30 app/views/links/form.php:221
    818 msgid ""
    819 "It looks like you haven't %1$supgraded to Pretty Links Pro%2$s yet. Here are "
    820 "just a few things you could be doing with pro:"
    821 msgstr ""
    822 
    823 #: app/views/admin/update/license.php:49 app/views/links/form.php:237
    824 msgid "Upgrade to Pro today!"
    825 msgstr ""
    826 
    827 #: app/views/admin/update/license.php:53
    828 msgid "Active License Key Information:"
    829 msgstr ""
    830 
    831 #: app/views/admin/update/license.php:56
    832 msgid "License Key:"
    833 msgstr ""
    834 
    835 #: app/views/admin/update/license.php:60
    836 msgid "Status:"
    837 msgstr ""
    838 
    839 #: app/views/admin/update/license.php:61
    840 msgid "<b>Active on %s</b>"
    841 msgstr ""
    842 
    843 #: app/views/admin/update/license.php:64
    844 msgid "Product:"
    845 msgstr ""
    846 
    847 #: app/views/admin/update/license.php:68
    848 msgid "Activations:"
    849 msgstr ""
    850 
    851 #: app/views/admin/update/license.php:72
    852 msgid ""
    853 "Are you sure? Pretty Links Pro will not be functional on %s if this License "
    854 "Key is deactivated."
    855 msgstr ""
    856 
    857 #: app/views/admin/update/license.php:72
    858 msgid "Deactivate License Key on %s"
    859 msgstr ""
    860 
    861 #: app/views/admin/update/license.php:75
    862 msgid "Upgrade plugin to Pro"
    863 msgstr ""
    864 
    865 #: app/views/admin/update/license.php:80
    866 msgid "You're currently running version %s of Pretty Links Pro"
    867 msgstr ""
    868 
    869 #: app/views/admin/update/ui.php:3
    870 msgid "Activate Pretty Links Pro"
    871 msgstr ""
    872 
    873 #: app/views/admin/update/ui.php:16
    874 msgid "License"
    875 msgstr ""
    876 
    877 #: app/views/admin/update/ui.php:17
    878 msgid "Add-Ons"
    879 msgstr ""
    880 
    881 #: app/views/clicks/csv_download.php:3
    882 msgid "Download Clicks"
    883 msgstr ""
    884 
    885 #: app/views/clicks/csv_download.php:6
    886 msgid "Click Reports:"
    887 msgstr ""
    888 
    889 #: app/views/clicks/csv_download.php:7
    890 msgid "All clicks on %s"
    891 msgstr ""
    892 
    893 #: app/views/clicks/csv_download.php:24
    894 msgid "Clicks %d-%d (%d Records)"
    895 msgstr ""
    896 
    897 #: app/views/clicks/list.php:6
    898 msgid "For"
    899 msgstr ""
    900 
    901 #: app/views/clicks/list.php:11 pro/app/views/reports/custom-report.php:12
    902 #: pro/app/views/reports/split-test-report.php:9
    903 msgid "Customize Report"
    904 msgstr ""
    905 
    906 #: app/views/clicks/list.php:18 pro/app/views/reports/split-test-report.php:9
    907 msgid "Back to Links"
    908 msgstr ""
    909 
    910 #: app/views/clicks/list.php:21
    911 msgid "Back to Clicks"
    912 msgstr ""
    913 
    914 #: app/views/clicks/list.php:30
    915 msgid "Type:"
    916 msgstr ""
    917 
    918 #: app/views/clicks/list.php:32 pro/app/models/PlpReport.php:251
    919 #: pro/app/models/PlpReport.php:260 pro/app/models/PlpReport.php:397
    920 #: pro/app/models/PlpReport.php:404
    921 msgid "All Clicks"
    922 msgstr ""
    923 
    924 #: app/views/clicks/list.php:33 pro/app/models/PlpReport.php:251
    925 #: pro/app/models/PlpReport.php:260 pro/app/models/PlpReport.php:397
    926 #: pro/app/models/PlpReport.php:404
    927 msgid "Unique Clicks"
    928 msgstr ""
    929 
    930 #: app/views/clicks/list.php:37 pro/app/views/reports/custom-report.php:16
    931 #: pro/app/views/reports/split-test-report.php:13
    932 msgid "Date Range:"
    933 msgstr ""
    934 
    935 #: app/views/clicks/list.php:39
    936 msgid "to"
    937 msgstr ""
    938 
    939 #: app/views/clicks/list.php:43 app/views/groups/edit.php:54
    940 #: app/views/groups/new.php:58 app/views/links/edit.php:16
    941 #: app/views/links/list.php:93 app/views/links/new.php:15
    942 #: pro/app/views/reports/custom-report.php:22
    943 #: pro/app/views/reports/edit.php:109 pro/app/views/reports/new.php:109
    944 msgid "Cancel"
    945 msgstr ""
    946 
    947 #: app/views/clicks/list.php:64 app/views/groups/list.php:24
    948 #: app/views/links/list.php:36 pro/app/views/reports/list.php:20
    949 msgid "Reset"
    950 msgstr ""
    951 
    952 #: app/views/clicks/list.php:73 app/views/clicks/list.php:173
    953 msgid "Browser"
    954 msgstr ""
    955 
    956 #: app/views/clicks/list.php:75 app/views/clicks/list.php:174
    957 msgid "OS"
    958 msgstr ""
    959 
    960 #: app/views/clicks/list.php:79 app/views/clicks/list.php:176
    961 msgid "IP"
    962 msgstr ""
    963 
    964 #: app/views/clicks/list.php:83 app/views/clicks/list.php:178
    965 msgid "Visitor"
    966 msgstr ""
    967 
    968 #: app/views/clicks/list.php:87 app/views/clicks/list.php:180
    969 msgid "Timestamp"
    970 msgstr ""
    971 
    972 #: app/views/clicks/list.php:91 app/views/clicks/list.php:182
    973 msgid "Host"
    974 msgstr ""
    975 
    976 #: app/views/clicks/list.php:95 app/views/clicks/list.php:184
    977 msgid "URI"
    978 msgstr ""
    979 
    980 #: app/views/clicks/list.php:98 app/views/clicks/list.php:185
    981 msgid "Referrer"
    982 msgstr ""
    983 
    984 #: app/views/clicks/list.php:101 app/views/clicks/list.php:186
    985 #: pro/app/models/PlpReport.php:251 pro/app/models/PlpReport.php:260
    986 msgid "Link"
    987 msgstr ""
    988 
    989 #: app/views/clicks/list.php:111
    990 msgid "No Clicks have been recorded yet"
    991 msgstr ""
    992 
    993 #: app/views/clicks/list.php:149
    994 msgid "View All Activity for IP Address: %s"
    995 msgstr ""
    996 
    997 #: app/views/clicks/list.php:152
    998 msgid "View All Activity for Visitor: %s"
    999 msgstr ""
    1000 
    1001 #: app/views/clicks/list.php:192
    1002 msgid "Download CSV"
    1003 msgstr ""
    1004 
    1005 #: app/views/groups/edit.php:4
    1006 msgid "Edit Group"
    1007 msgstr ""
    1008 
    1009 #: app/views/groups/edit.php:15 pro/app/views/reports/edit.php:15
    1010 msgid "Name:"
    1011 msgstr ""
    1012 
    1013 #: app/views/groups/edit.php:17 app/views/groups/new.php:23
    1014 msgid "This is how you'll identify your Group."
    1015 msgstr ""
    1016 
    1017 #: app/views/groups/edit.php:20 app/views/groups/new.php:26
    1018 msgid "Description:"
    1019 msgstr ""
    1020 
    1021 #: app/views/groups/edit.php:22 app/views/groups/new.php:28
    1022 msgid "A Description of this group."
    1023 msgstr ""
    1024 
    1025 #: app/views/groups/edit.php:25 app/views/groups/new.php:31
    1026 msgid "Links:"
    1027 msgstr ""
    1028 
    1029 #: app/views/groups/edit.php:30 app/views/groups/list.php:39
    1030 #: app/views/groups/list.php:81 app/views/groups/new.php:36
    1031 #: app/views/links/list.php:52 app/views/links/list.php:153
    1032 #: pro/app/views/reports/edit.php:85 pro/app/views/reports/list.php:30
    1033 #: pro/app/views/reports/list.php:70 pro/app/views/reports/new.php:85
    1034 msgid "Name"
    1035 msgstr ""
    1036 
    1037 #: app/views/groups/edit.php:31 app/views/groups/new.php:37
    1038 msgid "Current Group"
    1039 msgstr ""
    1040 
    1041 #: app/views/groups/edit.php:48 app/views/groups/new.php:52
    1042 msgid ""
    1043 "Select some links for this group. <strong>Note: each link can only be in one "
    1044 "group at a time.</strong>"
    1045 msgstr ""
    1046 
    1047 #: app/views/groups/edit.php:54 app/views/links/edit.php:16
    1048 #: app/views/links/list.php:94 app/views/options/form.php:194
    1049 #: pro/app/views/reports/edit.php:109
    1050 msgid "Update"
    1051 msgstr ""
    1052 
    1053 #: app/views/groups/list.php:7
    1054 msgid "Add Group"
    1055 msgstr ""
    1056 
    1057 #: app/views/groups/list.php:40 app/views/groups/list.php:68
    1058 #: app/views/groups/list.php:82 app/views/links/list.php:57
    1059 #: app/views/links/list.php:158 app/views/options/form.php:39
    1060 #: pro/app/views/reports/list.php:32 pro/app/views/reports/list.php:72
    1061 msgid "Links"
    1062 msgstr ""
    1063 
    1064 #: app/views/groups/list.php:41 app/views/groups/list.php:83
    1065 #: app/views/links/list.php:56 app/views/links/list.php:157
    1066 #: pro/app/views/reports/list.php:33 pro/app/views/reports/list.php:73
    1067 msgid "Created"
    1068 msgstr ""
    1069 
    1070 #: app/views/groups/list.php:50
    1071 msgid "No Pretty Link Groups were found"
    1072 msgstr ""
    1073 
    1074 #: app/views/groups/list.php:67
    1075 msgid "Are you sure you want to delete your %s Pretty Link Group?"
    1076 msgstr ""
    1077 
    1078 #: app/views/groups/list.php:69
    1079 msgid "View hits in %s"
    1080 msgstr ""
    1081 
    1082 #: app/views/groups/new.php:9
    1083 msgid "New Group"
    1084 msgstr ""
    1085 
    1086 #: app/views/groups/new.php:21 pro/app/views/reports/new.php:14
    1087 msgid "Name*:"
    1088 msgstr ""
    1089 
    1090 #: app/views/groups/new.php:58 app/views/links/new.php:15
    1091 msgid "Create"
    1092 msgstr ""
    1093 
    1094 #: app/views/links/edit.php:4
    1095 msgid "Edit Link"
    1096 msgstr ""
    1097 
    1098 #: app/views/links/form.php:6
    1099 msgid "Redirection*"
    1100 msgstr ""
    1101 
    1102 #: app/views/links/form.php:9 app/views/options/form.php:58
    1103 #: app/views/options/form.php:60
    1104 msgid "Redirection Type"
    1105 msgstr ""
    1106 
    1107 #: app/views/links/form.php:10
    1108 msgid "This is the method of redirection for your link."
    1109 msgstr ""
    1110 
    1111 #: app/views/links/form.php:24
    1112 msgid ""
    1113 "Make your life easier by upgrading to %1$sPretty Links Pro%2$s -- get more "
    1114 "redirection types, speed, automations and <b>results from your links</b> by "
    1115 "%1$sgoing pro today!%2$s"
    1116 msgstr ""
    1117 
    1118 #: app/views/links/form.php:31
    1119 msgid "Target URL*"
    1120 msgstr ""
    1121 
    1122 #: app/views/links/form.php:34 app/views/shared/tinymce_form_popup.php:43
    1123 #: app/views/shared/tinymce_form_popup.php:104 app/views/widgets/widget.php:13
    1124 msgid "Target URL"
    1125 msgstr ""
    1126 
    1127 #: app/views/links/form.php:35
    1128 msgid "This is the URL that your Pretty Link will redirect to."
    1129 msgstr ""
    1130 
    1131 #: app/views/links/form.php:44
    1132 msgid "Pretty Link*"
    1133 msgstr ""
    1134 
    1135 #: app/views/links/form.php:47 app/views/shared/tinymce_form_popup.php:108
    1136 #: app/views/widgets/widget.php:17 pro/app/views/links/prettybar.php:191
    1137 msgid "Pretty Link"
    1138 msgstr ""
    1139 
    1140 #: app/views/links/form.php:48
    1141 msgid ""
    1142 "This is how your pretty link will appear. You can edit the Pretty Link slug "
    1143 "here."
    1144 msgstr ""
    1145 
    1146 #: app/views/links/form.php:57 app/views/links/form.php:60
    1147 msgid "Title"
    1148 msgstr ""
    1149 
    1150 #: app/views/links/form.php:61
    1151 msgid ""
    1152 "Leave this blank and Pretty Link will attempt to detect the title from the "
    1153 "target url. Alternatively you can enter a custom title here."
    1154 msgstr ""
    1155 
    1156 #: app/views/links/form.php:70 app/views/links/form.php:73
    1157 msgid "Notes"
    1158 msgstr ""
    1159 
    1160 #: app/views/links/form.php:74
    1161 msgid ""
    1162 "This is a field where you can enter notes about a particular link. This "
    1163 "notes field is mainly for your own link management needs. It isn't currently "
    1164 "used anywhere on the front end."
    1165 msgstr ""
    1166 
    1167 #: app/views/links/form.php:84
    1168 msgid "Advanced Options"
    1169 msgstr ""
    1170 
    1171 #: app/views/links/form.php:91 app/views/links/list.php:55
    1172 #: app/views/links/list.php:79 app/views/links/list.php:156
    1173 #: pro/app/views/options/autocreate.php:30 pro/app/views/reports/edit.php:86
    1174 #: pro/app/views/reports/new.php:86
    1175 msgid "Group"
    1176 msgstr ""
    1177 
    1178 #: app/views/links/form.php:94
    1179 msgid "Link Group"
    1180 msgstr ""
    1181 
    1182 #: app/views/links/form.php:95
    1183 msgid "Select a Group for this Link"
    1184 msgstr ""
    1185 
    1186 #: app/views/links/form.php:109 pro/app/views/options/autocreate.php:41
    1187 msgid "Add a New Group"
    1188 msgstr ""
    1189 
    1190 #: app/views/links/form.php:114
    1191 msgid "No Follow"
    1192 msgstr ""
    1193 
    1194 #: app/views/links/form.php:117
    1195 msgid "Nofollow Link"
    1196 msgstr ""
    1197 
    1198 #: app/views/links/form.php:118
    1199 msgid "Add a nofollow and noindex to this link's http redirect header"
    1200 msgstr ""
    1201 
    1202 #: app/views/links/form.php:127 app/views/links/form.php:130
    1203 msgid "Delay Redirect"
    1204 msgstr ""
    1205 
    1206 #: app/views/links/form.php:131
    1207 msgid "Time in seconds to wait before redirecting"
    1208 msgstr ""
    1209 
    1210 #: app/views/links/form.php:140 app/views/links/form.php:143
    1211 msgid "Parameter Forwarding"
    1212 msgstr ""
    1213 
    1214 #: app/views/links/form.php:144
    1215 msgid "Forward parameters passed to this link onto the Target URL"
    1216 msgstr ""
    1217 
    1218 #: app/views/links/form.php:153 app/views/links/form.php:156
    1219 #: app/views/shared/tinymce_form_popup.php:84
    1220 msgid "Tracking"
    1221 msgstr ""
    1222 
    1223 #: app/views/links/form.php:157
    1224 msgid "Enable Pretty Link's built-in hit (click) tracking"
    1225 msgstr ""
    1226 
    1227 #: app/views/links/form.php:166 pro/app/models/PlpUtils.php:42
    1228 #: pro/app/views/links/bulk-edit.php:10
    1229 msgid "Google Analytics"
    1230 msgstr ""
    1231 
    1232 #: app/views/links/form.php:169
    1233 msgid "Google Analytics Tracking"
    1234 msgstr ""
    1235 
    1236 #: app/views/links/form.php:170
    1237 msgid ""
    1238 "Requires the Google Analyticator, Google Analytics by MonsterInsights "
    1239 "(formerly Yoast) or Google Analytics Plugin installed and configured for "
    1240 "this to work."
    1241 msgstr ""
    1242 
    1243 #: app/views/links/form.php:180
    1244 msgid ""
    1245 "It appears that <strong>%s</strong> is currently installed. Pretty Link will "
    1246 "attempt to use its settings to track this link."
    1247 msgstr ""
    1248 
    1249 #: app/views/links/form.php:185
    1250 msgid ""
    1251 "No Google Analytics Plugin is currently installed. Pretty Link cannot track "
    1252 "links using Google Analytics until one is."
    1253 msgstr ""
    1254 
    1255 #: app/views/links/form.php:198
    1256 msgid "Pro Options"
    1257 msgstr ""
    1258 
    1259 #: app/views/links/form.php:218
    1260 msgid "Oops!"
    1261 msgstr ""
    1262 
    1263 #: app/views/links/list.php:13 app/views/links/new.php:4
    1264 msgid "Add Pretty Link"
    1265 msgstr ""
    1266 
    1267 #: app/views/links/list.php:19
    1268 msgid ""
    1269 "WordPress Must be Configured:</strong> Pretty Link won't work until you "
    1270 "select a Permalink Structure other than 'Default'"
    1271 msgstr ""
    1272 
    1273 #: app/views/links/list.php:19 app/views/options/form.php:12
    1274 msgid "Permalink Settings"
    1275 msgstr ""
    1276 
    1277 #: app/views/links/list.php:45
    1278 msgid "Back to Groups"
    1279 msgstr ""
    1280 
    1281 #: app/views/links/list.php:54 app/views/links/list.php:155
    1282 msgid "Clicks / Uniq"
    1283 msgstr ""
    1284 
    1285 #: app/views/links/list.php:68
    1286 msgid "Bulk Edit"
    1287 msgstr ""
    1288 
    1289 #: app/views/links/list.php:75
    1290 msgid "Basic Link Options"
    1291 msgstr ""
    1292 
    1293 #: app/views/links/list.php:76 app/views/shared/tinymce_form_popup.php:59
    1294 msgid "Redirect Type"
    1295 msgstr ""
    1296 
    1297 #: app/views/links/list.php:82
    1298 msgid "Track"
    1299 msgstr ""
    1300 
    1301 #: app/views/links/list.php:84 app/views/shared/tinymce_form_popup.php:76
    1302 msgid "Nofollow"
    1303 msgstr ""
    1304 
    1305 #: app/views/links/list.php:86
    1306 msgid "Forward Params"
    1307 msgstr ""
    1308 
    1309 #: app/views/links/list.php:94
    1310 msgid "Bulk Update"
    1311 msgstr ""
    1312 
    1313 #: app/views/links/list.php:104
    1314 msgid "No Pretty Links were found, %sCreate One%s"
    1315 msgstr ""
    1316 
    1317 #: app/views/links/list.php:143
    1318 msgid "Target URL:"
    1319 msgstr ""
    1320 
    1321 #: app/views/options/form.php:4
    1322 msgid "User Manual"
    1323 msgstr ""
    1324 
    1325 #: app/views/options/form.php:12
    1326 msgid "WordPress Must be Configured:"
    1327 msgstr ""
    1328 
    1329 #: app/views/options/form.php:12
    1330 msgid ""
    1331 "Pretty Link won't work until you select a Permalink Structure other than "
    1332 "'Default'"
    1333 msgstr ""
    1334 
    1335 #: app/views/options/form.php:37
    1336 msgid "General"
    1337 msgstr ""
    1338 
    1339 #: app/views/options/form.php:40
    1340 msgid "Reporting"
    1341 msgstr ""
    1342 
    1343 #: app/views/options/form.php:47
    1344 msgid "General Options"
    1345 msgstr ""
    1346 
    1347 #: app/views/options/form.php:53
    1348 msgid "Default Link Options"
    1349 msgstr ""
    1350 
    1351 #: app/views/options/form.php:61
    1352 msgid ""
    1353 "Select the type of redirection you want your newly created links to have."
    1354 msgstr ""
    1355 
    1356 #: app/views/options/form.php:70 app/views/options/form.php:72
    1357 msgid "Enable Tracking"
    1358 msgstr ""
    1359 
    1360 #: app/views/options/form.php:73
    1361 msgid "Default all new links to be tracked."
    1362 msgstr ""
    1363 
    1364 #: app/views/options/form.php:82
    1365 msgid "Enable No Follow"
    1366 msgstr ""
    1367 
    1368 #: app/views/options/form.php:84
    1369 msgid "Add No Follow"
    1370 msgstr ""
    1371 
    1372 #: app/views/options/form.php:85
    1373 msgid "Add the 'nofollow' attribute by default to new links."
    1374 msgstr ""
    1375 
    1376 #: app/views/options/form.php:94
    1377 msgid "Enable Permalink Fix"
    1378 msgstr ""
    1379 
    1380 #: app/views/options/form.php:96
    1381 msgid "Use fix for index.php Permalink Structure"
    1382 msgstr ""
    1383 
    1384 #: app/views/options/form.php:97
    1385 msgid ""
    1386 "This option should ONLY be checked if you have elements in your permalink "
    1387 "structure that must be present in any link on your site. For example, some "
    1388 "WordPress installs don't have the benefit of full rewrite capabilities and "
    1389 "in this case you'd need an index.php included in each link (http://example."
    1390 "com/index.php/mycoolslug instead of http://example.com/mycoolslug). If this "
    1391 "is the case for you then check this option but the vast majority of users "
    1392 "will want to keep this unchecked."
    1393 msgstr ""
    1394 
    1395 #: app/views/options/form.php:110
    1396 msgid "Reporting Options"
    1397 msgstr ""
    1398 
    1399 #: app/views/options/form.php:115 app/views/options/form.php:117
    1400 msgid "Tracking Style"
    1401 msgstr ""
    1402 
    1403 #: app/views/options/form.php:118
    1404 msgid ""
    1405 "Changing your tracking style can affect the accuracy of your existing "
    1406 "statistics. Extended mode must be used for Conversion reporting."
    1407 msgstr ""
    1408 
    1409 #: app/views/options/form.php:122
    1410 msgid "Normal Tracking"
    1411 msgstr ""
    1412 
    1413 #: app/views/options/form.php:123
    1414 msgid "Extended Tracking (more stats / slower performance)"
    1415 msgstr ""
    1416 
    1417 #: app/views/options/form.php:124
    1418 msgid "Simple Click Count Tracking (less stats / faster performance)"
    1419 msgstr ""
    1420 
    1421 #: app/views/options/form.php:130
    1422 msgid "Excluded IP Addresses:"
    1423 msgstr ""
    1424 
    1425 #: app/views/options/form.php:132
    1426 msgid "Excluded IP Addresses"
    1427 msgstr ""
    1428 
    1429 #: app/views/options/form.php:133
    1430 msgid ""
    1431 "Enter IP Addresses or IP Ranges you want to exclude from your Click data and "
    1432 "Stats. Each IP Address should be separated by commas. Example: 192.168.0.1, "
    1433 "192.168.2.1, 192.168.3.4 or 192.168.*.*<br/><br/><strong>FYI, your current "
    1434 "IP address is %s."
    1435 msgstr ""
    1436 
    1437 #: app/views/options/form.php:143
    1438 msgid "Auto-Trim Clicks"
    1439 msgstr ""
    1440 
    1441 #: app/views/options/form.php:145
    1442 msgid "Automatically Trim Clicks"
    1443 msgstr ""
    1444 
    1445 #: app/views/options/form.php:146
    1446 msgid ""
    1447 "Will automatically delete all hits older than 90 days. We strongly recommend "
    1448 "doing this to keep your database performance up. This will permanently "
    1449 "delete this click data, and is not undo-able. "
    1450 msgstr ""
    1451 
    1452 #: app/views/options/form.php:155 app/views/options/form.php:157
    1453 msgid "Filter Robots"
    1454 msgstr ""
    1455 
    1456 #: app/views/options/form.php:158
    1457 msgid ""
    1458 "Filter known Robots and unidentifiable browser clients from your click data, "
    1459 "stats and reports. Works best if Tracking Style above is set to 'Extended "
    1460 "Tracking'."
    1461 msgstr ""
    1462 
    1463 #: app/views/options/form.php:174
    1464 msgid "Whitelist IP Addresses"
    1465 msgstr ""
    1466 
    1467 #: app/views/options/form.php:176
    1468 msgid "Whiltelist IP Addresses"
    1469 msgstr ""
    1470 
    1471 #: app/views/options/form.php:177
    1472 msgid ""
    1473 "Enter IP Addresses or IP Ranges you want to always include in your Click "
    1474 "data and Stats even if they are flagged as robots. Each IP Address should be "
    1475 "separated by commas. Example: 192.168.0.1, 192.168.2.1, 192.168.3.4 or "
    1476 "192.168.*.*"
    1477 msgstr ""
    1478 
    1479 #: app/views/shared/link-table-nav.php:17
    1480 #: app/views/shared/link-table-nav.php:108 app/views/shared/table-nav.php:12
    1481 msgid "Displaying"
    1482 msgstr ""
    1483 
    1484 #: app/views/shared/nav.php:6
    1485 msgid "Pro Manual"
    1486 msgstr ""
    1487 
    1488 #: app/views/shared/nav.php:14
    1489 msgid "Connect:"
    1490 msgstr ""
    1491 
    1492 #: app/views/shared/nav.php:18
    1493 msgid "Get Help:"
    1494 msgstr ""
    1495 
    1496 #: app/views/shared/nav.php:19
    1497 msgid "Tutorials"
    1498 msgstr ""
    1499 
    1500 #: app/views/shared/public_link.php:23
    1501 msgid "Here is your Pretty Link"
    1502 msgstr ""
    1503 
    1504 #: app/views/shared/public_link.php:41
    1505 msgid "Here's your pretty link for"
    1506 msgstr ""
    1507 
    1508 #: app/views/shared/public_link.php:52
    1509 msgid "send this link to:"
    1510 msgstr ""
    1511 
    1512 #: app/views/shared/public_link.php:56
    1513 msgid "back"
    1514 msgstr ""
    1515 
    1516 #: app/views/shared/tinymce_form_popup.php:4
    1517 msgid "Insert Pretty Link"
    1518 msgstr ""
    1519 
    1520 #: app/views/shared/tinymce_form_popup.php:40
    1521 msgid "Create New Pretty Link"
    1522 msgstr ""
    1523 
    1524 #: app/views/shared/tinymce_form_popup.php:47
    1525 msgid "Slug"
    1526 msgstr ""
    1527 
    1528 #: app/views/shared/tinymce_form_popup.php:50
    1529 msgid "valid"
    1530 msgstr ""
    1531 
    1532 #: app/views/shared/tinymce_form_popup.php:51
    1533 msgid "invalid"
    1534 msgstr ""
    1535 
    1536 #: app/views/shared/tinymce_form_popup.php:55
    1537 #: app/views/shared/tinymce_form_popup.php:112
    1538 msgid "Link Text"
    1539 msgstr ""
    1540 
    1541 #: app/views/shared/tinymce_form_popup.php:61
    1542 #: app/views/shared/tinymce_form_popup.php:78
    1543 #: app/views/shared/tinymce_form_popup.php:86
    1544 #: pro/app/views/tools/generator.php:22 pro/app/views/tools/generator.php:27
    1545 #: pro/app/widgets/PlpPublicLinksWidget.php:59
    1546 #: pro/app/widgets/PlpPublicLinksWidget.php:71
    1547 msgid "Default"
    1548 msgstr ""
    1549 
    1550 #: app/views/shared/tinymce_form_popup.php:67
    1551 #: pro/app/controllers/PlpLinksController.php:628
    1552 #: pro/app/controllers/PlpLinksController.php:667
    1553 #: pro/app/views/options/nav.php:5
    1554 msgid "Pretty Bar"
    1555 msgstr ""
    1556 
    1557 #: app/views/shared/tinymce_form_popup.php:68
    1558 #: pro/app/controllers/PlpLinksController.php:629
    1559 msgid "Cloaked"
    1560 msgstr ""
    1561 
    1562 #: app/views/shared/tinymce_form_popup.php:69
    1563 #: pro/app/controllers/PlpLinksController.php:630
    1564 #: pro/app/controllers/PlpLinksController.php:669
    1565 msgid "Pixel"
    1566 msgstr ""
    1567 
    1568 #: app/views/shared/tinymce_form_popup.php:70
    1569 #: pro/app/controllers/PlpLinksController.php:631
    1570 #: pro/app/controllers/PlpLinksController.php:670
    1571 msgid "Meta Refresh"
    1572 msgstr ""
    1573 
    1574 #: app/views/shared/tinymce_form_popup.php:71
    1575 #: pro/app/controllers/PlpLinksController.php:632
    1576 #: pro/app/controllers/PlpLinksController.php:671
    1577 msgid "Javascript"
    1578 msgstr ""
    1579 
    1580 #: app/views/shared/tinymce_form_popup.php:79
    1581 #: app/views/shared/tinymce_form_popup.php:87
    1582 msgid "Enabled"
    1583 msgstr ""
    1584 
    1585 #: app/views/shared/tinymce_form_popup.php:80
    1586 #: app/views/shared/tinymce_form_popup.php:88
    1587 msgid "Disabled"
    1588 msgstr ""
    1589 
    1590 #: app/views/shared/tinymce_form_popup.php:93
    1591 #: app/views/shared/tinymce_form_popup.php:117
    1592 msgid "Open this Pretty Link in a new window/tab"
    1593 msgstr ""
    1594 
    1595 #: app/views/shared/tinymce_form_popup.php:96
    1596 msgid "Insert New Pretty Link"
    1597 msgstr ""
    1598 
    1599 #: app/views/shared/tinymce_form_popup.php:100
    1600 msgid "Use Existing Pretty Link"
    1601 msgstr ""
    1602 
    1603 #: app/views/shared/tinymce_form_popup.php:102
    1604 msgid "Search by Slug, Title, or Target URL..."
    1605 msgstr ""
    1606 
    1607 #: app/views/shared/tinymce_form_popup.php:121
    1608 msgid "Insert Existing Pretty Link"
    1609 msgstr ""
    1610 
    1611 #: app/views/tools/form.php:18 app/views/tools/form.php:25
    1612 msgid "Bookmarklet"
    1613 msgstr ""
    1614 
    1615 #: app/views/tools/form.php:19 app/views/tools/form.php:48
    1616 msgid "Trim Clicks"
    1617 msgstr ""
    1618 
    1619 #: app/views/tools/form.php:26 pro/app/views/tools/generator.php:7
    1620 #: pro/app/views/tools/generator.php:17
    1621 msgid "Get Pretty Link"
    1622 msgstr ""
    1623 
    1624 #: app/views/tools/form.php:28
    1625 msgid "Install Pretty Link Bookmarklet"
    1626 msgstr ""
    1627 
    1628 #: app/views/tools/form.php:29
    1629 msgid ""
    1630 "Just drag this \"Get PrettyLink\" link to your toolbar to install the "
    1631 "bookmarklet. As you browse the web, you can just click this bookmarklet to "
    1632 "create a pretty link from the current url you're looking at. <a href="
    1633 "\"http://blairwilliams.com/pretty-link-bookmarklet/\">(more help)</a>"
    1634 msgstr ""
    1635 
    1636 #: app/views/tools/form.php:31
    1637 msgid "Show iPhone Bookmarklet Instructions"
    1638 msgstr ""
    1639 
    1640 #: app/views/tools/form.php:35
    1641 msgid ""
    1642 "<strong>Note:</strong> iPhone users can install this bookmarklet in their "
    1643 "Safari to create Pretty Links with the following steps:"
    1644 msgstr ""
    1645 
    1646 #: app/views/tools/form.php:37
    1647 msgid "Copy this text:"
    1648 msgstr ""
    1649 
    1650 #: app/views/tools/form.php:38
    1651 msgid "Tap the + button at the bottom of the screen"
    1652 msgstr ""
    1653 
    1654 #: app/views/tools/form.php:39
    1655 msgid ""
    1656 "Choose to share the page, then click on \"Bookmark\". We recommend saving it "
    1657 "in your Favorites folder. Rename your bookmark to \"Get PrettyLink\" (or "
    1658 "whatever you want) and then \"Save\""
    1659 msgstr ""
    1660 
    1661 #: app/views/tools/form.php:40
    1662 msgid ""
    1663 "Navigate through your Bookmarks until you find the new bookmark and click "
    1664 "\"Edit\""
    1665 msgstr ""
    1666 
    1667 #: app/views/tools/form.php:41
    1668 msgid "Delete all the text from the address"
    1669 msgstr ""
    1670 
    1671 #: app/views/tools/form.php:42
    1672 msgid "Paste the text you copied in Step 1 into the address field"
    1673 msgstr ""
    1674 
    1675 #: app/views/tools/form.php:43
    1676 msgid "To save the changes hit \"Bookmarks\" and <strong>you're done!"
    1677 msgstr ""
    1678 
    1679 #: app/views/tools/form.php:43
    1680 msgid ""
    1681 "Now when you find a page you want to save off as a Pretty Link, just click "
    1682 "the \"Bookmarks\" icon at the bottom of the screen and select your \"Get "
    1683 "PrettyLink\" bookmarklet."
    1684 msgstr ""
    1685 
    1686 #: app/views/tools/form.php:50
    1687 msgid ""
    1688 "Pretty Link is already automatically trimming Clicks older than 90 days. "
    1689 "Although not necessary, you can still use the buttons below to force click "
    1690 "trimming."
    1691 msgstr ""
    1692 
    1693 #: app/views/tools/form.php:53
    1694 msgid ""
    1695 "***WARNING*** If you click OK you will delete ALL of the Click data that is "
    1696 "older than 30 days. Your data will be gone forever -- no way to retreive it. "
    1697 "Do not click OK unless you are absolutely sure you want to delete this data "
    1698 "because there is no going back!"
    1699 msgstr ""
    1700 
    1701 #: app/views/tools/form.php:53
    1702 msgid "Delete Clicks older than 30 days"
    1703 msgstr ""
    1704 
    1705 #: app/views/tools/form.php:55
    1706 msgid "Clear clicks 30 days or older"
    1707 msgstr ""
    1708 
    1709 #: app/views/tools/form.php:56
    1710 msgid ""
    1711 "This will clear all clicks in your database that are older than 30 days."
    1712 msgstr ""
    1713 
    1714 #: app/views/tools/form.php:58
    1715 msgid ""
    1716 "***WARNING*** If you click OK you will delete ALL of the Click data that is "
    1717 "older than 90 days. Your data will be gone forever -- no way to retreive it. "
    1718 "Do not click OK unless you are absolutely sure you want to delete this data "
    1719 "because there is no going back!"
    1720 msgstr ""
    1721 
    1722 #: app/views/tools/form.php:58
    1723 msgid "Delete Clicks older than 90 days"
    1724 msgstr ""
    1725 
    1726 #: app/views/tools/form.php:60
    1727 msgid "Clear clicks 90 days or older"
    1728 msgstr ""
    1729 
    1730 #: app/views/tools/form.php:61
    1731 msgid ""
    1732 "This will clear all clicks in your database that are older than 90 days."
    1733 msgstr ""
    1734 
    1735 #: app/views/tools/form.php:65
    1736 msgid ""
    1737 "***WARNING*** If you click OK you will delete ALL of the Click data in your "
    1738 "Database. Your data will be gone forever -- no way to retreive it. Do not "
    1739 "click OK unless you are absolutely sure you want to delete all your data "
    1740 "because there is no going back!"
    1741 msgstr ""
    1742 
    1743 #: app/views/tools/form.php:65
    1744 msgid "Delete All Clicks"
    1745 msgstr ""
    1746 
    1747 #: app/views/tools/form.php:67
    1748 msgid "Clear all clicks"
    1749 msgstr ""
    1750 
    1751 #: app/views/tools/form.php:68
    1752 msgid ""
    1753 "Seriously, only click this link if you want to delete all the Click data in "
    1754 "your database."
    1755 msgstr ""
    1756 
    1757 #: pro/app/controllers/PlpAppController.php:165
    1758 msgid "ERROR: Your Pretty Link was unable to be created"
    1759 msgstr ""
    1760 
    1761 #: pro/app/controllers/PlpAppController.php:169
    1762 msgid "Unauthorized"
    1763 msgstr ""
    1764 
    1765 #: pro/app/controllers/PlpImportExportController.php:12
    1766 msgid "Pretty Links Pro | Import/Export"
    1767 msgstr ""
    1768 
    1769 #: pro/app/controllers/PlpImportExportController.php:13
    1770 msgid "Pro Import/Export"
    1771 msgstr ""
    1772 
    1773 #: pro/app/controllers/PlpKeywordsController.php:70
    1774 msgid "Pretty Link Post Build Index"
    1775 msgstr ""
    1776 
    1777 #: pro/app/controllers/PlpKeywordsController.php:485
    1778 #: pro/app/views/links/form.php:128
    1779 msgid "Keywords"
    1780 msgstr ""
    1781 
    1782 #: pro/app/controllers/PlpLinksController.php:213
    1783 msgid ""
    1784 "Your URL Replacements must be formatted as a comma separated list of "
    1785 "properly formatted URLs (http[s]://example.com/whatever)"
    1786 msgstr ""
    1787 
    1788 #: pro/app/controllers/PlpLinksController.php:224
    1789 msgid "Date must be valid and formatted YYYY-MM-DD."
    1790 msgstr ""
    1791 
    1792 #: pro/app/controllers/PlpLinksController.php:236
    1793 msgid "Expire Clicks must be a number greater than zero."
    1794 msgstr ""
    1795 
    1796 #: pro/app/controllers/PlpLinksController.php:243
    1797 msgid "Expired URL must be a valid URL."
    1798 msgstr ""
    1799 
    1800 #: pro/app/controllers/PlpLinksController.php:255
    1801 msgid "Your URL Rotations must all be properly formatted URLs."
    1802 msgstr ""
    1803 
    1804 #: pro/app/controllers/PlpLinksController.php:264
    1805 msgid "Your Link Rotation Weights must add up to 100%."
    1806 msgstr ""
    1807 
    1808 #: pro/app/controllers/PlpLinksController.php:274
    1809 msgid "Your Geographic Redirect URLs must all be properly formatted."
    1810 msgstr ""
    1811 
    1812 #: pro/app/controllers/PlpLinksController.php:278
    1813 msgid "Your Geographic Redirects URLs must not be empty."
    1814 msgstr ""
    1815 
    1816 #: pro/app/controllers/PlpLinksController.php:282
    1817 msgid "Your Geographic Redirect Countries must not be empty."
    1818 msgstr ""
    1819 
    1820 #: pro/app/controllers/PlpLinksController.php:293
    1821 msgid "Your Technology Redirect URLs must all be properly formatted."
    1822 msgstr ""
    1823 
    1824 #: pro/app/controllers/PlpLinksController.php:297
    1825 msgid "Your Technology Redirects URLs must not be empty."
    1826 msgstr ""
    1827 
    1828 #: pro/app/controllers/PlpLinksController.php:308
    1829 msgid "Your Time Period Redirect URLs must all be properly formatted."
    1830 msgstr ""
    1831 
    1832 #: pro/app/controllers/PlpLinksController.php:312
    1833 msgid "Your Time Period Redirects URLs must not be empty."
    1834 msgstr ""
    1835 
    1836 #: pro/app/controllers/PlpLinksController.php:317
    1837 msgid "Your Time Period Redirect start time must not be empty."
    1838 msgstr ""
    1839 
    1840 #: pro/app/controllers/PlpLinksController.php:320
    1841 msgid "Your Time Period Redirect start time must be a properly formatted date."
    1842 msgstr ""
    1843 
    1844 #: pro/app/controllers/PlpLinksController.php:326
    1845 msgid "Your Time Period Redirect end time must not be empty."
    1846 msgstr ""
    1847 
    1848 #: pro/app/controllers/PlpLinksController.php:329
    1849 msgid "Your Time Period Redirect end time must be a properly formatted date."
    1850 msgstr ""
    1851 
    1852 #: pro/app/controllers/PlpLinksController.php:337
    1853 msgid "Your Time Period Redirect start time must come before the end time."
    1854 msgstr ""
    1855 
    1856 #: pro/app/controllers/PlpLinksController.php:345
    1857 msgid "Delay Redirect must be a number"
    1858 msgstr ""
    1859 
    1860 #: pro/app/controllers/PlpLinksController.php:668
    1861 #: pro/app/widgets/PlpPublicLinksWidget.php:64
    1862 msgid "Cloak"
    1863 msgstr ""
    1864 
    1865 #: pro/app/controllers/PlpLinksController.php:736
    1866 msgid "View QR Code for this link: %s"
    1867 msgstr ""
    1868 
    1869 #: pro/app/controllers/PlpLinksController.php:740
    1870 msgid "Download QR Code for this link: %s"
    1871 msgstr ""
    1872 
    1873 #: pro/app/controllers/PlpLinksController.php:811
    1874 msgid "This link expired on %1$s and will now cause a 404 error when visited"
    1875 msgstr ""
    1876 
    1877 #: pro/app/controllers/PlpLinksController.php:814
    1878 msgid "This link expired on %1$s and now redirects to %2$s"
    1879 msgstr ""
    1880 
    1881 #: pro/app/controllers/PlpLinksController.php:818
    1882 msgid "This link is set to expire after the date %s"
    1883 msgstr ""
    1884 
    1885 #: pro/app/controllers/PlpLinksController.php:829
    1886 msgid ""
    1887 "This link expired after %d clicks and will now cause a 404 error when visited"
    1888 msgstr ""
    1889 
    1890 #: pro/app/controllers/PlpLinksController.php:832
    1891 msgid "This link expired after %1$d clicks and now redirects to %2$s"
    1892 msgstr ""
    1893 
    1894 #: pro/app/controllers/PlpLinksController.php:836
    1895 msgid "This link is set to expire after %d clicks"
    1896 msgstr ""
    1897 
    1898 #: pro/app/controllers/PlpLinksController.php:844
    1899 msgid "This link has additional Target URL rotations"
    1900 msgstr ""
    1901 
    1902 #: pro/app/controllers/PlpLinksController.php:847
    1903 msgid "This link has additional Geographic Target URLs"
    1904 msgstr ""
    1905 
    1906 #: pro/app/controllers/PlpLinksController.php:850
    1907 msgid "This link has additional Technology Dependent Conditional Target URLs"
    1908 msgstr ""
    1909 
    1910 #: pro/app/controllers/PlpLinksController.php:855
    1911 msgid ""
    1912 "A Time Period Redirect is currently active for this link. When visited it "
    1913 "will currently redirect to %s rather than the Target URL unless the link is "
    1914 "expired."
    1915 msgstr ""
    1916 
    1917 #: pro/app/controllers/PlpLinksController.php:859
    1918 msgid ""
    1919 "Time Period Redirects have been setup for this link but the current time is "
    1920 "not within any of them currently."
    1921 msgstr ""
    1922 
    1923 #: pro/app/controllers/PlpOptionsController.php:102
    1924 msgid "Keywords Per Page is required"
    1925 msgstr ""
    1926 
    1927 #: pro/app/controllers/PlpOptionsController.php:106
    1928 msgid "Keyword Links Per Page is required"
    1929 msgstr ""
    1930 
    1931 #: pro/app/controllers/PlpOptionsController.php:111
    1932 msgid ""
    1933 "You need to enter a valid Pretty Link Base URL now that you have selected "
    1934 "\"Use an alternate base url for your Pretty Links\""
    1935 msgstr ""
    1936 
    1937 #: pro/app/controllers/PlpOptionsController.php:116
    1938 msgid ""
    1939 "You need to enter a valid Public Link Display URL now that you have selected "
    1940 "\"Use a custom public link display page\""
    1941 msgstr ""
    1942 
    1943 #: pro/app/controllers/PlpOptionsController.php:122
    1944 msgid "Pretty Bar Attribution URL must be a correctly formatted URL"
    1945 msgstr ""
    1946 
    1947 #: pro/app/controllers/PlpPostsController.php:50
    1948 msgid "Pretty Links Pro"
    1949 msgstr ""
    1950 
    1951 #: pro/app/controllers/PlpPostsController.php:54
    1952 msgid "Pretty Links Pro Options"
    1953 msgstr ""
    1954 
    1955 #: pro/app/controllers/PlpPrettyBarController.php:50
    1956 msgid "Logo Image URL must be a correctly formatted URL"
    1957 msgstr ""
    1958 
    1959 #: pro/app/controllers/PlpPrettyBarController.php:54
    1960 msgid "Background Image URL must be a correctly formatted URL"
    1961 msgstr ""
    1962 
    1963 #: pro/app/controllers/PlpPrettyBarController.php:60
    1964 msgid "PrettyBar Background Color must be an actual RGB Value"
    1965 msgstr ""
    1966 
    1967 #: pro/app/controllers/PlpPrettyBarController.php:64
    1968 msgid "PrettyBar Text Color must be an actual RGB Value"
    1969 msgstr ""
    1970 
    1971 #: pro/app/controllers/PlpPrettyBarController.php:68
    1972 msgid "PrettyBar Link Color must be an actual RGB Value"
    1973 msgstr ""
    1974 
    1975 #: pro/app/controllers/PlpPrettyBarController.php:72
    1976 #: pro/app/controllers/PlpPrettyBarController.php:76
    1977 msgid "PrettyBar Hover Color must be an actual RGB Value"
    1978 msgstr ""
    1979 
    1980 #: pro/app/controllers/PlpPrettyBarController.php:80
    1981 msgid "PrettyBar Title Character Limit must not be blank"
    1982 msgstr ""
    1983 
    1984 #: pro/app/controllers/PlpPrettyBarController.php:84
    1985 msgid "PrettyBar Description Character Limit must not be blank"
    1986 msgstr ""
    1987 
    1988 #: pro/app/controllers/PlpPrettyBarController.php:88
    1989 msgid "PrettyBar Link Character Limit must not be blank"
    1990 msgstr ""
    1991 
    1992 #: pro/app/controllers/PlpPrettyBarController.php:92
    1993 msgid "PrettyBar Title Character Limit must be a number"
    1994 msgstr ""
    1995 
    1996 #: pro/app/controllers/PlpPrettyBarController.php:96
    1997 msgid "PrettyBar Description Character Limit must be a number"
    1998 msgstr ""
    1999 
    2000 #: pro/app/controllers/PlpPrettyBarController.php:100
    2001 msgid "PrettyBar Link Character Limit must be a number"
    2002 msgstr ""
    2003 
    2004 #: pro/app/controllers/PlpPublicLinksController.php:98
    2005 #: pro/app/helpers/PlpPublicLinksHelper.php:6
    2006 msgid "Enter a URL:"
    2007 msgstr ""
    2008 
    2009 #: pro/app/controllers/PlpPublicLinksController.php:99
    2010 #: pro/app/helpers/PlpPublicLinksHelper.php:7
    2011 msgid "Shrink"
    2012 msgstr ""
    2013 
    2014 #: pro/app/controllers/PlpReportsController.php:12
    2015 msgid "Pretty Links Pro | Reports"
    2016 msgstr ""
    2017 
    2018 #: pro/app/controllers/PlpReportsController.php:13
    2019 msgid "Pro Reports"
    2020 msgstr ""
    2021 
    2022 #: pro/app/controllers/PlpReportsController.php:49
    2023 msgid "Create a custom link report and analyze your data."
    2024 msgstr ""
    2025 
    2026 #: pro/app/controllers/PlpReportsController.php:60
    2027 msgid "View the Split Test Report for %s"
    2028 msgstr ""
    2029 
    2030 #: pro/app/controllers/PlpReportsController.php:86
    2031 msgid "Your Pretty Link Report was Successfully Created"
    2032 msgstr ""
    2033 
    2034 #: pro/app/controllers/PlpReportsController.php:116
    2035 msgid "Your Pretty Link Report was Successfully Updated"
    2036 msgstr ""
    2037 
    2038 #: pro/app/controllers/PlpReportsController.php:125
    2039 msgid "Your Pretty Link Report was Successfully Deleted"
    2040 msgstr ""
    2041 
    2042 #: pro/app/helpers/PlpLinksHelper.php:18 pro/app/views/links/form.php:209
    2043 msgid "weight:"
    2044 msgstr ""
    2045 
    2046 #: pro/app/helpers/PlpPostsHelper.php:19
    2047 msgid "Hide Social Buttons on this post."
    2048 msgstr ""
    2049 
    2050 #: pro/app/helpers/PlpPostsHelper.php:26
    2051 msgid "Disable Keyword Replacements on this post."
    2052 msgstr ""
    2053 
    2054 #: pro/app/helpers/PlpPostsHelper.php:44
    2055 msgid "A Pretty Link will be created on Publish"
    2056 msgstr ""
    2057 
    2058 #: pro/app/helpers/PlpPostsHelper.php:63
    2059 #: pro/app/views/reports/custom-report.php:32
    2060 #: pro/app/views/reports/custom-report.php:65
    2061 #: pro/app/views/reports/split-test-report.php:29
    2062 #: pro/app/views/reports/split-test-report.php:61
    2063 msgid "Uniques"
    2064 msgstr ""
    2065 
    2066 #: pro/app/helpers/PlpPostsHelper.php:68
    2067 msgid "edit"
    2068 msgstr ""
    2069 
    2070 #: pro/app/helpers/PlpPostsHelper.php:70
    2071 msgid "Visit Pretty Link:"
    2072 msgstr ""
    2073 
    2074 #: pro/app/helpers/PlpPostsHelper.php:70
    2075 msgid "in a New Window"
    2076 msgstr ""
    2077 
    2078 #: pro/app/helpers/PlpPostsHelper.php:70
    2079 msgid "visit"
    2080 msgstr ""
    2081 
    2082 #: pro/app/helpers/PlpPostsHelper.php:76
    2083 msgid ""
    2084 "A Pretty Link hasn't been generated for this entry yet. Click \"Update Post"
    2085 "\" to generate."
    2086 msgstr ""
    2087 
    2088 #: pro/app/models/PlpOptions.php:99
    2089 msgid "Facebook"
    2090 msgstr ""
    2091 
    2092 #: pro/app/models/PlpOptions.php:106
    2093 msgid "Twitter"
    2094 msgstr ""
    2095 
    2096 #: pro/app/models/PlpOptions.php:113
    2097 msgid "Google+"
    2098 msgstr ""
    2099 
    2100 #: pro/app/models/PlpOptions.php:120
    2101 msgid "Pinterest"
    2102 msgstr ""
    2103 
    2104 #: pro/app/models/PlpOptions.php:127
    2105 msgid "LinkedIn"
    2106 msgstr ""
    2107 
    2108 #: pro/app/models/PlpOptions.php:134
    2109 msgid "Reddit"
    2110 msgstr ""
    2111 
    2112 #: pro/app/models/PlpOptions.php:141
    2113 msgid "StumbleUpon"
    2114 msgstr ""
    2115 
    2116 #: pro/app/models/PlpOptions.php:148
    2117 msgid "Digg"
    2118 msgstr ""
    2119 
    2120 #: pro/app/models/PlpOptions.php:155
    2121 msgid "Email"
    2122 msgstr ""
    2123 
    2124 #: pro/app/models/PlpOptions.php:238
    2125 msgid "Affiliate Link Disclosures"
    2126 msgstr ""
    2127 
    2128 #: pro/app/models/PlpOptions.php:247
    2129 msgid "(aff)"
    2130 msgstr ""
    2131 
    2132 #: pro/app/models/PlpPostOptions.php:33
    2133 msgid "This pretty link slug is already taken, please choose a different one"
    2134 msgstr ""
    2135 
    2136 #: pro/app/models/PlpReport.php:149
    2137 msgid "Report must have a name."
    2138 msgstr ""
    2139 
    2140 #: pro/app/models/PlpReport.php:153
    2141 msgid "At least one link must be selected for analysis."
    2142 msgstr ""
    2143 
    2144 #: pro/app/models/PlpReport.php:244
    2145 msgid "Pretty Links Pro: Clicks for"
    2146 msgstr ""
    2147 
    2148 #: pro/app/models/PlpReport.php:244
    2149 msgid "report between"
    2150 msgstr ""
    2151 
    2152 #: pro/app/models/PlpReport.php:251 pro/app/models/PlpReport.php:397
    2153 #: pro/app/views/reports/custom-report.php:34
    2154 #: pro/app/views/reports/custom-report.php:67
    2155 #: pro/app/views/reports/split-test-report.php:31
    2156 #: pro/app/views/reports/split-test-report.php:63
    2157 msgid "Conversions"
    2158 msgstr ""
    2159 
    2160 #: pro/app/models/PlpReport.php:385
    2161 msgid "Pretty Links Pro: Split Report for"
    2162 msgstr ""
    2163 
    2164 #: pro/app/models/PlpReport.php:397 pro/app/models/PlpReport.php:404
    2165 #: pro/app/views/links/form.php:186
    2166 msgid "Rotation"
    2167 msgstr ""
    2168 
    2169 #: pro/app/models/PlpUtils.php:36
    2170 msgid "Google Analyticator"
    2171 msgstr ""
    2172 
    2173 #: pro/app/models/PlpUtils.php:39
    2174 msgid "Google Analytics by MonsterInsights"
    2175 msgstr ""
    2176 
    2177 #: pro/app/views/import-export/form.php:4
    2178 msgid "Import / Export Links"
    2179 msgstr ""
    2180 
    2181 #: pro/app/views/import-export/form.php:9
    2182 #: pro/app/views/import-export/form.php:12
    2183 msgid "Export Pretty Links"
    2184 msgstr ""
    2185 
    2186 #: pro/app/views/import-export/form.php:13
    2187 msgid "Export Links to a CSV File"
    2188 msgstr ""
    2189 
    2190 #: pro/app/views/import-export/form.php:17
    2191 msgid "Export"
    2192 msgstr ""
    2193 
    2194 #: pro/app/views/import-export/form.php:22
    2195 #: pro/app/views/import-export/form.php:25
    2196 msgid "Import Pretty Links"
    2197 msgstr ""
    2198 
    2199 #: pro/app/views/import-export/form.php:26
    2200 msgid ""
    2201 "There are two ways to import a file.<br/><br/>1) Importing to update "
    2202 "existing links and<br/><br/>2) Importing to generate new links. When "
    2203 "Importing to generate new links, you must delete the \"id\" column from the "
    2204 "CSV before importing. If the \"id\" column is present, Pretty Links Pro will "
    2205 "attempt to update existing links."
    2206 msgstr ""
    2207 
    2208 #: pro/app/views/import-export/form.php:36
    2209 msgid "Import"
    2210 msgstr ""
    2211 
    2212 #: pro/app/views/import-export/form.php:39
    2213 msgid "Links Import File"
    2214 msgstr ""
    2215 
    2216 #: pro/app/views/import-export/form.php:40
    2217 msgid ""
    2218 "Select a file that has been formatted as a Pretty Link CSV import file and "
    2219 "click \"Import\""
    2220 msgstr ""
    2221 
    2222 #: pro/app/views/import-export/form.php:48
    2223 msgid "Import/Export Help"
    2224 msgstr ""
    2225 
    2226 #: pro/app/views/import-export/import.php:4
    2227 msgid "Import Results"
    2228 msgstr ""
    2229 
    2230 #: pro/app/views/import-export/import.php:5
    2231 msgid "Total Rows:"
    2232 msgstr ""
    2233 
    2234 #: pro/app/views/import-export/import.php:7
    2235 msgid "Pretty Links were Successfully Created"
    2236 msgstr ""
    2237 
    2238 #: pro/app/views/import-export/import.php:8
    2239 msgid "Pretty Links were Successfully Updated"
    2240 msgstr ""
    2241 
    2242 #: pro/app/views/import-export/import.php:13
    2243 msgid "Pretty Links were unable to be Created:"
    2244 msgstr ""
    2245 
    2246 #: pro/app/views/import-export/import.php:17
    2247 msgid "Error(s) for Pretty Link with Slug:"
    2248 msgstr ""
    2249 
    2250 #: pro/app/views/import-export/import.php:32
    2251 msgid "Pretty Links were unable to be Updated:"
    2252 msgstr ""
    2253 
    2254 #: pro/app/views/import-export/import.php:36
    2255 msgid "Error(s) for Pretty Link with id:"
    2256 msgstr ""
    2257 
    2258 #: pro/app/views/links/bulk-edit.php:6
    2259 msgid "Advanced Link Options"
    2260 msgstr ""
    2261 
    2262 #: pro/app/views/links/cloaked-redirect.php:36
    2263 msgid "Your browser does not support frames."
    2264 msgstr ""
    2265 
    2266 #: pro/app/views/links/form.php:7
    2267 msgid "Expire"
    2268 msgstr ""
    2269 
    2270 #: pro/app/views/links/form.php:10
    2271 msgid "Expire Link"
    2272 msgstr ""
    2273 
    2274 #: pro/app/views/links/form.php:11
    2275 msgid "Set this link to expire after a specific date or number of clicks."
    2276 msgstr ""
    2277 
    2278 #: pro/app/views/links/form.php:26
    2279 msgid "Expire After"
    2280 msgstr ""
    2281 
    2282 #: pro/app/views/links/form.php:29
    2283 msgid "Expiration Type"
    2284 msgstr ""
    2285 
    2286 #: pro/app/views/links/form.php:30
    2287 msgid ""
    2288 "Select the type of expiration you want for this link.<br/><br/><b>Date</b> "
    2289 "Select this option if you'd like to expire your link after a certain date."
    2290 "<br/><br/><b>Clicks</b>: Select this option to expire this link after it has "
    2291 "been clicked a specific number of times."
    2292 msgstr ""
    2293 
    2294 #: pro/app/views/links/form.php:51
    2295 msgid "Number of Clicks"
    2296 msgstr ""
    2297 
    2298 #: pro/app/views/links/form.php:52
    2299 msgid ""
    2300 "Enter the number of times this link can be clicked before it expires.<br/"
    2301 "><br/><b>Note: Expirations based on clicks wouldn't work properly if you had "
    2302 "tracking turned off for this link so as long as this is set to Clicks, "
    2303 "Pretty Link will ensure tracking is turned on for this link as well.</b>"
    2304 msgstr ""
    2305 
    2306 #: pro/app/views/links/form.php:71
    2307 msgid "Expiration Date"
    2308 msgstr ""
    2309 
    2310 #: pro/app/views/links/form.php:72
    2311 msgid ""
    2312 "Enter a date here in the format YYYY-MM-DD to set when this link should "
    2313 "expire."
    2314 msgstr ""
    2315 
    2316 #: pro/app/views/links/form.php:88
    2317 msgid "Expired Redirect"
    2318 msgstr ""
    2319 
    2320 #: pro/app/views/links/form.php:91
    2321 msgid "Redirect to URL when Expired"
    2322 msgstr ""
    2323 
    2324 #: pro/app/views/links/form.php:92
    2325 msgid ""
    2326 "When this link expires, do you want to redirect to a specific URL. You can "
    2327 "use this to redirect to a page you've setup to indicate that the link is "
    2328 "expired.<br/><br/><b>Note: If this is not set the link will throw a 404 "
    2329 "error when expired</b>."
    2330 msgstr ""
    2331 
    2332 #: pro/app/views/links/form.php:107 pro/app/views/options/form.php:165
    2333 msgid "URL"
    2334 msgstr ""
    2335 
    2336 #: pro/app/views/links/form.php:110
    2337 msgid "Expired URL"
    2338 msgstr ""
    2339 
    2340 #: pro/app/views/links/form.php:111
    2341 msgid ""
    2342 "This is the URL that this link will redirect to after the expiration date "
    2343 "above."
    2344 msgstr ""
    2345 
    2346 #: pro/app/views/links/form.php:131
    2347 msgid "Auto-Replace Keywords"
    2348 msgstr ""
    2349 
    2350 #: pro/app/views/links/form.php:132
    2351 msgid ""
    2352 "Enter a comma separated list of keywords / keyword phrases that you'd like "
    2353 "to replace with this link in your Posts &amp; Pages."
    2354 msgstr ""
    2355 
    2356 #: pro/app/views/links/form.php:140
    2357 msgid "URL Replacements"
    2358 msgstr ""
    2359 
    2360 #: pro/app/views/links/form.php:143
    2361 msgid "Auto-Replace URLs"
    2362 msgstr ""
    2363 
    2364 #: pro/app/views/links/form.php:144
    2365 msgid ""
    2366 "Enter a comma separated list of the URLs that you'd like to replace with "
    2367 "this Pretty Link in your Posts &amp; Pages. These must be formatted as URLs "
    2368 "for example: <code>http://example.com</code> or <code>http://example.com?"
    2369 "product_id=53</code>"
    2370 msgstr ""
    2371 
    2372 #: pro/app/views/links/form.php:159 pro/app/views/links/form.php:162
    2373 msgid "Head Scripts"
    2374 msgstr ""
    2375 
    2376 #: pro/app/views/links/form.php:163
    2377 msgid ""
    2378 "Useful for adding Google Analytics tracking, Facebook retargeting pixels, or "
    2379 "any other kind of tracking script to the HTML head for this pretty link.<br/"
    2380 "><br/>These scripts will be in addition to any global one's you've defined "
    2381 "in the options.<br/><br/><b>NOTE:</b> This does NOT work with 301, 302 and "
    2382 "307 type redirects."
    2383 msgstr ""
    2384 
    2385 #: pro/app/views/links/form.php:176
    2386 msgid "Dynamic Redirection"
    2387 msgstr ""
    2388 
    2389 #: pro/app/views/links/form.php:179
    2390 msgid "Dynamic Redirection Options"
    2391 msgstr ""
    2392 
    2393 #: pro/app/views/links/form.php:180
    2394 msgid ""
    2395 "These powerful options are available to give you dynamic control over "
    2396 "redirection for this pretty link."
    2397 msgstr ""
    2398 
    2399 #: pro/app/views/links/form.php:187
    2400 msgid "Geographic"
    2401 msgstr ""
    2402 
    2403 #: pro/app/views/links/form.php:188
    2404 msgid "Technology"
    2405 msgstr ""
    2406 
    2407 #: pro/app/views/links/form.php:189
    2408 msgid "Time"
    2409 msgstr ""
    2410 
    2411 #: pro/app/views/links/form.php:199 pro/app/views/links/form.php:202
    2412 msgid "Target URL Rotations"
    2413 msgstr ""
    2414 
    2415 #: pro/app/views/links/form.php:203
    2416 msgid ""
    2417 "Enter the Target URLs that you'd like to rotate through when this Pretty "
    2418 "Link is Clicked. These must be formatted as URLs example: <code>http://"
    2419 "example.com</code> or <code>http://example.com?product_id=53</code>"
    2420 msgstr ""
    2421 
    2422 #: pro/app/views/links/form.php:208
    2423 msgid "Target URL (above)"
    2424 msgstr ""
    2425 
    2426 #: pro/app/views/links/form.php:220
    2427 msgid "Add Link Rotation"
    2428 msgstr ""
    2429 
    2430 #: pro/app/views/links/form.php:226
    2431 msgid "Split Test"
    2432 msgstr ""
    2433 
    2434 #: pro/app/views/links/form.php:229
    2435 msgid "Split Test This Link"
    2436 msgstr ""
    2437 
    2438 #: pro/app/views/links/form.php:230
    2439 msgid ""
    2440 "Split testing will enable you to track the effectiveness of several links "
    2441 "against each other. This works best when you have multiple link rotation "
    2442 "URLs entered."
    2443 msgstr ""
    2444 
    2445 #: pro/app/views/links/form.php:246 pro/app/views/reports/list.php:31
    2446 #: pro/app/views/reports/list.php:71
    2447 msgid "Goal Link"
    2448 msgstr ""
    2449 
    2450 #: pro/app/views/links/form.php:249
    2451 msgid "Goal Link for Split Test"
    2452 msgstr ""
    2453 
    2454 #: pro/app/views/links/form.php:250
    2455 msgid "This is the goal link for your split test."
    2456 msgstr ""
    2457 
    2458 #: pro/app/views/links/form.php:261
    2459 msgid "id: %1$s | slug: %3$s | name: %2$s%4$s"
    2460 msgstr ""
    2461 
    2462 #: pro/app/views/links/form.php:281 pro/app/views/links/form.php:284
    2463 msgid "Geographic Redirects"
    2464 msgstr ""
    2465 
    2466 #: pro/app/views/links/form.php:285
    2467 msgid ""
    2468 "This will enable you to setup specific target urls that this pretty link "
    2469 "will redirect to based on the country of the person visiting the url."
    2470 msgstr ""
    2471 
    2472 #: pro/app/views/links/form.php:290 pro/app/views/links/form.php:304
    2473 #: pro/app/views/links/form.php:318
    2474 msgid "Add"
    2475 msgstr ""
    2476 
    2477 #: pro/app/views/links/form.php:295 pro/app/views/links/form.php:298
    2478 msgid "Technology Redirects"
    2479 msgstr ""
    2480 
    2481 #: pro/app/views/links/form.php:299
    2482 msgid ""
    2483 "This will allow you to redirect based on your visitor's device, operating "
    2484 "system and/or browser"
    2485 msgstr ""
    2486 
    2487 #: pro/app/views/links/form.php:309 pro/app/views/links/form.php:312
    2488 msgid "Time Period Redirects"
    2489 msgstr ""
    2490 
    2491 #: pro/app/views/links/form.php:313
    2492 msgid ""
    2493 "This will allow you to redirect based on the time period in which your "
    2494 "visitor visits this link.<br/><br/><b>Note: If your visitor doesn't visit "
    2495 "the link during any of the specified time periods set here, they'll simply "
    2496 "be redirected to the main target url.</b>"
    2497 msgstr ""
    2498 
    2499 #: pro/app/views/links/geo_row.php:12
    2500 msgid "Countries:"
    2501 msgstr ""
    2502 
    2503 #: pro/app/views/links/geo_row.php:15
    2504 msgid "Technology Redirection Countries"
    2505 msgstr ""
    2506 
    2507 #: pro/app/views/links/geo_row.php:16
    2508 msgid ""
    2509 "This is a comma-separated list of countries that this redirect will match "
    2510 "on. Just start typing a country's name and an autocomplete dropdown will "
    2511 "appear to select from. Once a country is selected, feel free to start typing "
    2512 "the name of another country. You can add as many as you'd like this redirect "
    2513 "to match on"
    2514 msgstr ""
    2515 
    2516 #: pro/app/views/links/geo_row.php:25 pro/app/views/links/tech_row.php:79
    2517 #: pro/app/views/links/time_row.php:39
    2518 msgid "URL:"
    2519 msgstr ""
    2520 
    2521 #: pro/app/views/links/geo_row.php:28
    2522 msgid "Geographic Redirection URL"
    2523 msgstr ""
    2524 
    2525 #: pro/app/views/links/geo_row.php:29
    2526 msgid ""
    2527 "This is the URL that this Pretty Link will redirect to if the visitor's "
    2528 "country match the settings here."
    2529 msgstr ""
    2530 
    2531 #: pro/app/views/links/geo_row.php:38 pro/app/views/links/tech_row.php:92
    2532 #: pro/app/views/links/time_row.php:52
    2533 msgid "Remove"
    2534 msgstr ""
    2535 
    2536 #: pro/app/views/links/link-has-expired.php:9
    2537 msgid "Link Not Found"
    2538 msgstr ""
    2539 
    2540 #: pro/app/views/links/link-has-expired.php:33
    2541 msgid "Sorry, this link has expired"
    2542 msgstr ""
    2543 
    2544 #: pro/app/views/links/link-options.php:3
    2545 #: pro/app/views/links/link-options.php:5
    2546 msgid "Base Slug Prefix"
    2547 msgstr ""
    2548 
    2549 #: pro/app/views/links/link-options.php:6
    2550 msgid ""
    2551 "Use this to prefix all newly generated pretty links with a directory of your "
    2552 "choice. For example set to <b>out</b> to make your pretty links look like "
    2553 "http://site.com/<b>out</b>/xyz. Changing this option will NOT affect "
    2554 "existing pretty links. If you do not wish to use a directory prefix, leave "
    2555 "this text field blank. Whatever you type here will be sanitized and modified "
    2556 "to ensure it is URL-safe. So <b>Hello World</b> might get changed to "
    2557 "something like <b>hello-world</b> instead. Lowercase letters, numbers, "
    2558 "dashes, and underscores are allowed."
    2559 msgstr ""
    2560 
    2561 #: pro/app/views/links/link-options.php:16
    2562 #: pro/app/views/links/link-options.php:18
    2563 msgid "Slug Character Count"
    2564 msgstr ""
    2565 
    2566 #: pro/app/views/links/link-options.php:19
    2567 msgid ""
    2568 "The number of characters to use when auto-generating a random slug for "
    2569 "pretty links. The default is 4. You cannot use less than 2."
    2570 msgstr ""
    2571 
    2572 #: pro/app/views/links/link-options.php:29
    2573 #: pro/app/views/links/link-options.php:30
    2574 msgid "Enable Google Analytics"
    2575 msgstr ""
    2576 
    2577 #: pro/app/views/links/link-options.php:31
    2578 msgid ""
    2579 "Requires Google Analyticator, Google Analytics by MonsterInsights (formerly "
    2580 "Yoast), or the Google Analytics Plugin to be installed and configured on "
    2581 "your site."
    2582 msgstr ""
    2583 
    2584 #: pro/app/views/links/link-options.php:41
    2585 msgid "Enable %sQR Codes%s"
    2586 msgstr ""
    2587 
    2588 #: pro/app/views/links/link-options.php:43
    2589 msgid "Generate QR Codes"
    2590 msgstr ""
    2591 
    2592 #: pro/app/views/links/link-options.php:44
    2593 msgid ""
    2594 "This will enable a link in your pretty link admin that will allow you to "
    2595 "automatically download a QR Code for each individual Pretty Link."
    2596 msgstr ""
    2597 
    2598 #: pro/app/views/links/link-options.php:54
    2599 #: pro/app/views/links/link-options.php:56
    2600 msgid "Global Head Scripts"
    2601 msgstr ""
    2602 
    2603 #: pro/app/views/links/link-options.php:57
    2604 msgid ""
    2605 "Useful for adding Google Analytics tracking, Facebook retargeting pixels, or "
    2606 "any other kind of tracking script to the HTML head.<br/><br/>What you enter "
    2607 "in this box will be applied to all supported pretty links.<br/><br/><b>NOTE:"
    2608 "</b> This does NOT work with 301, 302 and 307 type redirects."
    2609 msgstr ""
    2610 
    2611 #: pro/app/views/links/prettybar.php:174
    2612 msgid "Share on Twitter"
    2613 msgstr ""
    2614 
    2615 #: pro/app/views/links/prettybar.php:191
    2616 msgid "Powered by"
    2617 msgstr ""
    2618 
    2619 #: pro/app/views/links/tech_row.php:14
    2620 msgid "Device:"
    2621 msgstr ""
    2622 
    2623 #: pro/app/views/links/tech_row.php:17
    2624 msgid "Technology Redirection Device"
    2625 msgstr ""
    2626 
    2627 #: pro/app/views/links/tech_row.php:18
    2628 msgid ""
    2629 "<b>Desktop</b> will match on any conventional laptop or desktop computer.<br/"
    2630 "><br/><b>Mobile</b> will match on any phone, tablet or other portable device."
    2631 "<br/><br/><b>Phone</b> will match on any phone or similarly small device.<br/"
    2632 "><br/><b>Tablet</b> will match on any tablet sized device."
    2633 msgstr ""
    2634 
    2635 #: pro/app/views/links/tech_row.php:23 pro/app/views/links/tech_row.php:42
    2636 #: pro/app/views/links/tech_row.php:62
    2637 msgid "Any"
    2638 msgstr ""
    2639 
    2640 #: pro/app/views/links/tech_row.php:24
    2641 msgid "Desktop"
    2642 msgstr ""
    2643 
    2644 #: pro/app/views/links/tech_row.php:25
    2645 msgid "Mobile"
    2646 msgstr ""
    2647 
    2648 #: pro/app/views/links/tech_row.php:26
    2649 msgid "Phone"
    2650 msgstr ""
    2651 
    2652 #: pro/app/views/links/tech_row.php:27
    2653 msgid "Tablet"
    2654 msgstr ""
    2655 
    2656 #: pro/app/views/links/tech_row.php:33
    2657 msgid "Operating System:"
    2658 msgstr ""
    2659 
    2660 #: pro/app/views/links/tech_row.php:36
    2661 msgid "Technology Redirection OS"
    2662 msgstr ""
    2663 
    2664 #: pro/app/views/links/tech_row.php:37
    2665 msgid ""
    2666 "Use this dropdown to select which Operating System this redirect will match "
    2667 "on."
    2668 msgstr ""
    2669 
    2670 #: pro/app/views/links/tech_row.php:43 pro/app/views/links/tech_row.php:64
    2671 msgid "Android"
    2672 msgstr ""
    2673 
    2674 #: pro/app/views/links/tech_row.php:44
    2675 msgid "iOS"
    2676 msgstr ""
    2677 
    2678 #: pro/app/views/links/tech_row.php:45
    2679 msgid "Linux"
    2680 msgstr ""
    2681 
    2682 #: pro/app/views/links/tech_row.php:46
    2683 msgid "Mac"
    2684 msgstr ""
    2685 
    2686 #: pro/app/views/links/tech_row.php:47
    2687 msgid "Windows"
    2688 msgstr ""
    2689 
    2690 #: pro/app/views/links/tech_row.php:53
    2691 msgid "Browser:"
    2692 msgstr ""
    2693 
    2694 #: pro/app/views/links/tech_row.php:56
    2695 msgid "Technology Redirection Browser"
    2696 msgstr ""
    2697 
    2698 #: pro/app/views/links/tech_row.php:57
    2699 msgid "Use this dropdown to select which Browser this redirect will match on."
    2700 msgstr ""
    2701 
    2702 #: pro/app/views/links/tech_row.php:63
    2703 msgid "Amazon Silk"
    2704 msgstr ""
    2705 
    2706 #: pro/app/views/links/tech_row.php:65
    2707 msgid "Chrome"
    2708 msgstr ""
    2709 
    2710 #: pro/app/views/links/tech_row.php:66
    2711 msgid "Chromium"
    2712 msgstr ""
    2713 
    2714 #: pro/app/views/links/tech_row.php:67
    2715 msgid "Edge"
    2716 msgstr ""
    2717 
    2718 #: pro/app/views/links/tech_row.php:68
    2719 msgid "Firefox"
    2720 msgstr ""
    2721 
    2722 #: pro/app/views/links/tech_row.php:69
    2723 msgid "Internet Explorer"
    2724 msgstr ""
    2725 
    2726 #: pro/app/views/links/tech_row.php:70
    2727 msgid "Kindle"
    2728 msgstr ""
    2729 
    2730 #: pro/app/views/links/tech_row.php:71
    2731 msgid "Opera"
    2732 msgstr ""
    2733 
    2734 #: pro/app/views/links/tech_row.php:72
    2735 msgid "Opera Coast"
    2736 msgstr ""
    2737 
    2738 #: pro/app/views/links/tech_row.php:73
    2739 msgid "Safari"
    2740 msgstr ""
    2741 
    2742 #: pro/app/views/links/tech_row.php:82
    2743 msgid "Technology Redirection URL"
    2744 msgstr ""
    2745 
    2746 #: pro/app/views/links/tech_row.php:83
    2747 msgid ""
    2748 "This is the URL that this Pretty Link will redirect to if the visitor's "
    2749 "device, os and browser match the settings here."
    2750 msgstr ""
    2751 
    2752 #: pro/app/views/links/time_row.php:13
    2753 msgid "Start Time:"
    2754 msgstr ""
    2755 
    2756 #: pro/app/views/links/time_row.php:16
    2757 msgid "Start of Time Period"
    2758 msgstr ""
    2759 
    2760 #: pro/app/views/links/time_row.php:17
    2761 msgid ""
    2762 "This is where you'll enter the beginning of the time period for this redirect"
    2763 msgstr ""
    2764 
    2765 #: pro/app/views/links/time_row.php:26
    2766 msgid "End Time:"
    2767 msgstr ""
    2768 
    2769 #: pro/app/views/links/time_row.php:29
    2770 msgid "End of Time Period"
    2771 msgstr ""
    2772 
    2773 #: pro/app/views/links/time_row.php:30
    2774 msgid "This is where you'll enter the end of the time period for this redirect"
    2775 msgstr ""
    2776 
    2777 #: pro/app/views/links/time_row.php:42
    2778 msgid "Time Period Redirect URL"
    2779 msgstr ""
    2780 
    2781 #: pro/app/views/links/time_row.php:43
    2782 msgid ""
    2783 "This is the URL that this Pretty Link will redirect to when the visitor "
    2784 "visits the link in the associated time period."
    2785 msgstr ""
    2786 
    2787 #: pro/app/views/options/autocreate.php:7
    2788 msgid "%s Shortlinks"
    2789 msgstr ""
    2790 
    2791 #: pro/app/views/options/autocreate.php:10
    2792 msgid "Create Pretty Links for %s"
    2793 msgstr ""
    2794 
    2795 #: pro/app/views/options/autocreate.php:11
    2796 msgid "Automatically Create a Pretty Link for each of your published %s"
    2797 msgstr ""
    2798 
    2799 #: pro/app/views/options/autocreate.php:33
    2800 msgid "%s Auto Link Group"
    2801 msgstr ""
    2802 
    2803 #: pro/app/views/options/autocreate.php:34
    2804 msgid "Group that Pretty Links for %s will be automatically added to."
    2805 msgstr ""
    2806 
    2807 #: pro/app/views/options/autocreate.php:47
    2808 msgid "Show Social Buttons"
    2809 msgstr ""
    2810 
    2811 #: pro/app/views/options/autocreate.php:50
    2812 msgid "Show Social Buttons on %s"
    2813 msgstr ""
    2814 
    2815 #: pro/app/views/options/autocreate.php:51
    2816 msgid ""
    2817 "If this button is checked then you'll have the ability to include a social "
    2818 "buttons bar on your %s."
    2819 msgstr ""
    2820 
    2821 #: pro/app/views/options/form.php:4
    2822 msgid "Keyword &amp; URL Auto Replacements Options"
    2823 msgstr ""
    2824 
    2825 #: pro/app/views/options/form.php:13
    2826 msgid "Enable Replacements"
    2827 msgstr ""
    2828 
    2829 #: pro/app/views/options/form.php:15
    2830 msgid "Enable Keyword and URL Auto Replacement"
    2831 msgstr ""
    2832 
    2833 #: pro/app/views/options/form.php:16
    2834 msgid ""
    2835 "If checked, this will enable you to automatically replace keywords and/or "
    2836 "URLs on your blog with pretty links. You will specify the specific keywords "
    2837 "and urls from your Pretty Link edit page."
    2838 msgstr ""
    2839 
    2840 #: pro/app/views/options/form.php:34
    2841 msgid "Thresholds"
    2842 msgstr ""
    2843 
    2844 #: pro/app/views/options/form.php:36
    2845 msgid "Set Keyword Replacement Thresholds"
    2846 msgstr ""
    2847 
    2848 #: pro/app/views/options/form.php:37
    2849 msgid ""
    2850 "Don't want to have too many keyword replacements per page? Select to set "
    2851 "some reasonable keyword replacement thresholds."
    2852 msgstr ""
    2853 
    2854 #: pro/app/views/options/form.php:54
    2855 msgid "Max Keywords"
    2856 msgstr ""
    2857 
    2858 #: pro/app/views/options/form.php:56
    2859 msgid "Set Maximum Keywords per Page"
    2860 msgstr ""
    2861 
    2862 #: pro/app/views/options/form.php:57
    2863 msgid ""
    2864 "Maximum number of unique keyword / keyphrases you can replace with Pretty "
    2865 "Links per page."
    2866 msgstr ""
    2867 
    2868 #: pro/app/views/options/form.php:68
    2869 msgid "Max Replacements"
    2870 msgstr ""
    2871 
    2872 #: pro/app/views/options/form.php:70
    2873 msgid "Set Maximum Replacements per Keyword"
    2874 msgstr ""
    2875 
    2876 #: pro/app/views/options/form.php:71
    2877 msgid "Maximum number of Pretty Link replacements per Keyword / Keyphrase."
    2878 msgstr ""
    2879 
    2880 #: pro/app/views/options/form.php:87
    2881 msgid "Open in New Window"
    2882 msgstr ""
    2883 
    2884 #: pro/app/views/options/form.php:89
    2885 msgid "Open Keyword Replacement Links in New Window"
    2886 msgstr ""
    2887 
    2888 #: pro/app/views/options/form.php:90
    2889 msgid ""
    2890 "Ensure that these keyword replacement links are opened in a separate window. "
    2891 "<strong>Note:</strong> This does not apply to url replacements--only keyword "
    2892 "replacements."
    2893 msgstr ""
    2894 
    2895 #: pro/app/views/options/form.php:101
    2896 msgid "Add No Follows"
    2897 msgstr ""
    2898 
    2899 #: pro/app/views/options/form.php:103
    2900 msgid "Add 'nofollow' attribute to all Keyword Pretty Links"
    2901 msgstr ""
    2902 
    2903 #: pro/app/views/options/form.php:104
    2904 msgid ""
    2905 "This adds the html <code>NOFOLLOW</code> attribute to all keyword "
    2906 "replacement links. <strong>Note:</strong> This does not apply to url "
    2907 "replacements--only keyword replacements."
    2908 msgstr ""
    2909 
    2910 #: pro/app/views/options/form.php:115
    2911 msgid "Custom CSS"
    2912 msgstr ""
    2913 
    2914 #: pro/app/views/options/form.php:117
    2915 msgid "Add custom CSS to your keyword replacement links"
    2916 msgstr ""
    2917 
    2918 #: pro/app/views/options/form.php:118
    2919 msgid ""
    2920 "Add some custom formatting to your keyword pretty link replacements. "
    2921 "<strong>Note:</strong> This does not apply to url replacements--only keyword "
    2922 "replacements."
    2923 msgstr ""
    2924 
    2925 #: pro/app/views/options/form.php:129
    2926 msgid "Custom Hover CSS"
    2927 msgstr ""
    2928 
    2929 #: pro/app/views/options/form.php:131
    2930 msgid "Add custom hover CSS to your keyword replacement links"
    2931 msgstr ""
    2932 
    2933 #: pro/app/views/options/form.php:132
    2934 msgid ""
    2935 "Add some custom formatting to the hover attribute of your keyword pretty "
    2936 "links. <strong>Note:</strong> This does not apply to url replacements--only "
    2937 "keyword replacements."
    2938 msgstr ""
    2939 
    2940 #: pro/app/views/options/form.php:143
    2941 msgid "Link to Disclosures"
    2942 msgstr ""
    2943 
    2944 #: pro/app/views/options/form.php:146
    2945 msgid "Automatically Add a Link to Disclosures"
    2946 msgstr ""
    2947 
    2948 #: pro/app/views/options/form.php:147
    2949 msgid ""
    2950 "When enabled, this will add a link to your official affiliate link "
    2951 "disclosure page to any page, post or custom post type that have any keyword "
    2952 "or URL replacements. You'll also be able to customize the URL and position "
    2953 "of the disclosure link."
    2954 msgstr ""
    2955 
    2956 #: pro/app/views/options/form.php:168
    2957 msgid "Disclosures Link URL"
    2958 msgstr ""
    2959 
    2960 #: pro/app/views/options/form.php:169
    2961 msgid ""
    2962 "This is the URL of the page that contains your official affiliate link "
    2963 "disclosures. This URL will be used in the link that will be generated."
    2964 msgstr ""
    2965 
    2966 #: pro/app/views/options/form.php:180
    2967 msgid "Text"
    2968 msgstr ""
    2969 
    2970 #: pro/app/views/options/form.php:183
    2971 msgid "Disclosures Link Text"
    2972 msgstr ""
    2973 
    2974 #: pro/app/views/options/form.php:184
    2975 msgid ""
    2976 "This is the text of the link to your disclosures. This text will be visible "
    2977 "to your visitors when the link is displayed."
    2978 msgstr ""
    2979 
    2980 #: pro/app/views/options/form.php:195
    2981 msgid "Position"
    2982 msgstr ""
    2983 
    2984 #: pro/app/views/options/form.php:198
    2985 msgid "Disclosures Link Position"
    2986 msgstr ""
    2987 
    2988 #: pro/app/views/options/form.php:199
    2989 msgid ""
    2990 "This is the position of the link to your disclosures in relation to your "
    2991 "post content."
    2992 msgstr ""
    2993 
    2994 #: pro/app/views/options/form.php:205 pro/app/views/options/form.php:701
    2995 msgid "Bottom"
    2996 msgstr ""
    2997 
    2998 #: pro/app/views/options/form.php:206 pro/app/views/options/form.php:700
    2999 msgid "Top"
    3000 msgstr ""
    3001 
    3002 #: pro/app/views/options/form.php:207 pro/app/views/options/form.php:702
    3003 msgid "Top and Bottom"
    3004 msgstr ""
    3005 
    3006 #: pro/app/views/options/form.php:219
    3007 msgid "Keyword Disclosures"
    3008 msgstr ""
    3009 
    3010 #: pro/app/views/options/form.php:222
    3011 msgid "Automatically Add Affiliate Link Disclosures to Keyword Replacements"
    3012 msgstr ""
    3013 
    3014 #: pro/app/views/options/form.php:223
    3015 msgid ""
    3016 "When enabled, this will add an affiliate link disclosure next to each one of "
    3017 "your keyword replacements. <b>Note:</b> This does not apply to url "
    3018 "replacements--only keyword replacements."
    3019 msgstr ""
    3020 
    3021 #: pro/app/views/options/form.php:241
    3022 msgid "Disclosure Text"
    3023 msgstr ""
    3024 
    3025 #: pro/app/views/options/form.php:244
    3026 msgid "Keyword Link Disclosure Text"
    3027 msgstr ""
    3028 
    3029 #: pro/app/views/options/form.php:245
    3030 msgid ""
    3031 "This is the text that will be added after each keyword replacement to "
    3032 "indicate that the link is an affiliate link."
    3033 msgstr ""
    3034 
    3035 #: pro/app/views/options/form.php:261
    3036 msgid "Replace All URLs"
    3037 msgstr ""
    3038 
    3039 #: pro/app/views/options/form.php:263
    3040 msgid "Replace All non-Pretty Link URLs With Pretty Link URLs"
    3041 msgstr ""
    3042 
    3043 #: pro/app/views/options/form.php:264
    3044 msgid ""
    3045 "This feature will take each url it finds and create or use an existing "
    3046 "pretty link pointing to the url and replace it with the pretty link."
    3047 msgstr ""
    3048 
    3049 #: pro/app/views/options/form.php:281
    3050 msgid "Domain Blacklist"
    3051 msgstr ""
    3052 
    3053 #: pro/app/views/options/form.php:283
    3054 msgid "Do not replace links from these domains"
    3055 msgstr ""
    3056 
    3057 #: pro/app/views/options/form.php:284
    3058 msgid ""
    3059 "Any links on your site which point to domains you define here will not be "
    3060 "replaced automatically with Pretty Links. Place one domain per line.<br/><br/"
    3061 ">You MUST enter http:// or https:// in front of the domain names and do NOT "
    3062 "include any /'s or other text after the domain name.<br/><br/>Proper entry "
    3063 "example:<br/><b>https://www.google.com</b><br/><b>http://mysite.org</b><br/"
    3064 "><br/>Improperly entered domains will be removed upon saving the Options."
    3065 msgstr ""
    3066 
    3067 #: pro/app/views/options/form.php:300
    3068 msgid "Replace in Comments"
    3069 msgstr ""
    3070 
    3071 #: pro/app/views/options/form.php:302
    3072 msgid "Replace Keywords and URLs in Comments"
    3073 msgstr ""
    3074 
    3075 #: pro/app/views/options/form.php:303
    3076 msgid ""
    3077 "This option will enable the keyword / URL replacement routine to run in "
    3078 "Comments."
    3079 msgstr ""
    3080 
    3081 #: pro/app/views/options/form.php:314
    3082 msgid "Replace in Feeds"
    3083 msgstr ""
    3084 
    3085 #: pro/app/views/options/form.php:316
    3086 msgid "Replace Keywords and URLs in Feeds"
    3087 msgstr ""
    3088 
    3089 #: pro/app/views/options/form.php:317
    3090 msgid ""
    3091 "This option will enable the keyword / URL replacement routine to run in RSS "
    3092 "Feeds.<br/><strong>Note:</strong> This option can slow the load speed of "
    3093 "your RSS feed -- unless used in conjunction with a caching plugin like W3 "
    3094 "Total Cache or WP Super Cache.<br/><strong>Note #2</strong> This option will "
    3095 "only work if you have \"Full Text\" selected in your General WordPress "
    3096 "Reading settings.<br/><strong>Note #3:</strong> If this option is used along "
    3097 "with \"Replace Keywords and URLs in Comments\" then your post comment feeds "
    3098 "will have keywords replaced in them as well."
    3099 msgstr ""
    3100 
    3101 #: pro/app/views/options/form.php:328 pro/app/views/options/form.php:330
    3102 msgid "Index Replacements"
    3103 msgstr ""
    3104 
    3105 #: pro/app/views/options/form.php:331
    3106 msgid ""
    3107 "This feature will index all of your keyword & URL replacements to "
    3108 "dramatically improve performance.<br/><br/>If your site has a large number "
    3109 "of replacements and/or posts then this feature may increase the load on your "
    3110 "server temporarily and your replacements may not show up on your posts for a "
    3111 "day or two initially (until all posts are indexed).<br/><br/><strong>Note:</"
    3112 "strong> this feature requires the use of wp-cron."
    3113 msgstr ""
    3114 
    3115 #: pro/app/views/options/form.php:348 pro/app/views/options/form.php:350
    3116 msgid "Keyword Index Status"
    3117 msgstr ""
    3118 
    3119 #: pro/app/views/options/form.php:351
    3120 msgid ""
    3121 "This shows how many posts have keywords indexed for and are ready for "
    3122 "replacement."
    3123 msgstr ""
    3124 
    3125 #: pro/app/views/options/form.php:359 pro/app/views/options/form.php:382
    3126 msgid "%1$s out of %2$s Posts Indexed"
    3127 msgstr ""
    3128 
    3129 #: pro/app/views/options/form.php:363 pro/app/views/options/form.php:386
    3130 msgid "%1$s out of %2$s Comments Indexed"
    3131 msgstr ""
    3132 
    3133 #: pro/app/views/options/form.php:371
    3134 msgid "URL Index Status"
    3135 msgstr ""
    3136 
    3137 #: pro/app/views/options/form.php:373
    3138 msgid "URL Replacements Index Status"
    3139 msgstr ""
    3140 
    3141 #: pro/app/views/options/form.php:374
    3142 msgid ""
    3143 "This shows how many posts have url replacements indexed for and are ready "
    3144 "for replacement."
    3145 msgstr ""
    3146 
    3147 #: pro/app/views/options/form.php:402
    3148 msgid "Auto-Create Shortlink Options"
    3149 msgstr ""
    3150 
    3151 #: pro/app/views/options/form.php:423
    3152 msgid "Pretty Bar Options"
    3153 msgstr ""
    3154 
    3155 #: pro/app/views/options/form.php:429
    3156 msgid "Image URL"
    3157 msgstr ""
    3158 
    3159 #: pro/app/views/options/form.php:431
    3160 msgid "Pretty Bar Image URL"
    3161 msgstr ""
    3162 
    3163 #: pro/app/views/options/form.php:432
    3164 msgid ""
    3165 "If set, this will replace the logo image on the Pretty Bar. The image that "
    3166 "this URL references should be 48x48 Pixels to fit."
    3167 msgstr ""
    3168 
    3169 #: pro/app/views/options/form.php:443
    3170 msgid "Background Image URL"
    3171 msgstr ""
    3172 
    3173 #: pro/app/views/options/form.php:445
    3174 msgid "Pretty Bar Background Image URL"
    3175 msgstr ""
    3176 
    3177 #: pro/app/views/options/form.php:446
    3178 msgid ""
    3179 "If set, this will replace the background image on Pretty Bar. The image that "
    3180 "this URL references should be 65px tall - this image will be repeated "
    3181 "horizontally across the bar."
    3182 msgstr ""
    3183 
    3184 #: pro/app/views/options/form.php:457
    3185 msgid "Background Color"
    3186 msgstr ""
    3187 
    3188 #: pro/app/views/options/form.php:459
    3189 msgid "Pretty Bar Background Color"
    3190 msgstr ""
    3191 
    3192 #: pro/app/views/options/form.php:460
    3193 msgid ""
    3194 "This will alter the background color of the Pretty Bar if you haven't "
    3195 "specified a Pretty Bar background image."
    3196 msgstr ""
    3197 
    3198 #: pro/app/views/options/form.php:471
    3199 msgid "Text Color"
    3200 msgstr ""
    3201 
    3202 #: pro/app/views/options/form.php:473
    3203 msgid "Pretty Bar Text Color"
    3204 msgstr ""
    3205 
    3206 #: pro/app/views/options/form.php:474
    3207 msgid ""
    3208 "If not set, this defaults to black (RGB value <code>#000000</code>) but you "
    3209 "can change it to whatever color you like."
    3210 msgstr ""
    3211 
    3212 #: pro/app/views/options/form.php:485
    3213 msgid "Link Color"
    3214 msgstr ""
    3215 
    3216 #: pro/app/views/options/form.php:487
    3217 msgid "Pretty Bar Link Color"
    3218 msgstr ""
    3219 
    3220 #: pro/app/views/options/form.php:488
    3221 msgid ""
    3222 "If not set, this defaults to blue (RGB value <code>#0000ee</code>) but you "
    3223 "can change it to whatever color you like."
    3224 msgstr ""
    3225 
    3226 #: pro/app/views/options/form.php:499
    3227 msgid "Link Hover Color"
    3228 msgstr ""
    3229 
    3230 #: pro/app/views/options/form.php:501
    3231 msgid "Pretty Bar Link Hover Color"
    3232 msgstr ""
    3233 
    3234 #: pro/app/views/options/form.php:502
    3235 msgid ""
    3236 "If not set, this defaults to RGB value <code>#ababab</code> but you can "
    3237 "change it to whatever color you like."
    3238 msgstr ""
    3239 
    3240 #: pro/app/views/options/form.php:513
    3241 msgid "Visited Link Color"
    3242 msgstr ""
    3243 
    3244 #: pro/app/views/options/form.php:515
    3245 msgid "Pretty Bar Visited Link Color"
    3246 msgstr ""
    3247 
    3248 #: pro/app/views/options/form.php:516
    3249 msgid ""
    3250 "If not set, this defaults to RGB value <code>#551a8b</code> but you can "
    3251 "change it to whatever color you like."
    3252 msgstr ""
    3253 
    3254 #: pro/app/views/options/form.php:527
    3255 msgid "Title Char Limit"
    3256 msgstr ""
    3257 
    3258 #: pro/app/views/options/form.php:529
    3259 msgid "Pretty Bar Title Char Limit"
    3260 msgstr ""
    3261 
    3262 #: pro/app/views/options/form.php:530
    3263 msgid ""
    3264 "If your Website has a long title then you may need to adjust this value so "
    3265 "that it will all fit on the Pretty Bar. It is recommended that you keep this "
    3266 "value to <code>30</code> characters or less so the Pretty Bar's format looks "
    3267 "good across different browsers and screen resolutions."
    3268 msgstr ""
    3269 
    3270 #: pro/app/views/options/form.php:541
    3271 msgid "Description Char Limit"
    3272 msgstr ""
    3273 
    3274 #: pro/app/views/options/form.php:543
    3275 msgid "Pretty Bar Description Char Limit"
    3276 msgstr ""
    3277 
    3278 #: pro/app/views/options/form.php:544
    3279 msgid ""
    3280 "If your Website has a long Description (tagline) then you may need to adjust "
    3281 "this value so that it will all fit on the Pretty Bar. It is recommended that "
    3282 "you keep this value to <code>40</code> characters or less so the Pretty "
    3283 "Bar's format looks good across different browsers and screen resolutions."
    3284 msgstr ""
    3285 
    3286 #: pro/app/views/options/form.php:555
    3287 msgid "Target URL Char Limit"
    3288 msgstr ""
    3289 
    3290 #: pro/app/views/options/form.php:557
    3291 msgid "Pretty Bar Target URL Char Limit"
    3292 msgstr ""
    3293 
    3294 #: pro/app/views/options/form.php:558
    3295 msgid ""
    3296 "If you link to a lot of large Target URLs you may want to adjust this value. "
    3297 "It is recommended that you keep this value to <code>40</code> or below so "
    3298 "the Pretty Bar's format looks good across different browsers and URL sizes"
    3299 msgstr ""
    3300 
    3301 #: pro/app/views/options/form.php:569
    3302 msgid "Show Title"
    3303 msgstr ""
    3304 
    3305 #: pro/app/views/options/form.php:571
    3306 msgid "Pretty Bar Show Title"
    3307 msgstr ""
    3308 
    3309 #: pro/app/views/options/form.php:572
    3310 msgid ""
    3311 "Make sure this is checked if you want the title of your blog (and link) to "
    3312 "show up on the Pretty Bar."
    3313 msgstr ""
    3314 
    3315 #: pro/app/views/options/form.php:583
    3316 msgid "Show Description"
    3317 msgstr ""
    3318 
    3319 #: pro/app/views/options/form.php:585
    3320 msgid "Pretty Bar Show Description"
    3321 msgstr ""
    3322 
    3323 #: pro/app/views/options/form.php:586
    3324 msgid ""
    3325 "Make sure this is checked if you want your site description to show up on "
    3326 "the Pretty Bar."
    3327 msgstr ""
    3328 
    3329 #: pro/app/views/options/form.php:597
    3330 msgid "Show Share Links"
    3331 msgstr ""
    3332 
    3333 #: pro/app/views/options/form.php:599
    3334 msgid "Pretty Bar Show Share Links"
    3335 msgstr ""
    3336 
    3337 #: pro/app/views/options/form.php:600
    3338 msgid ""
    3339 "Make sure this is checked if you want \"share links\" to show up on the "
    3340 "Pretty Bar."
    3341 msgstr ""
    3342 
    3343 #: pro/app/views/options/form.php:611
    3344 msgid "Show Target URL"
    3345 msgstr ""
    3346 
    3347 #: pro/app/views/options/form.php:613
    3348 msgid "Pretty Bar Show Target URL Links"
    3349 msgstr ""
    3350 
    3351 #: pro/app/views/options/form.php:614
    3352 msgid ""
    3353 "Make sure this is checked if you want a link displaying the Target URL to "
    3354 "show up on the Pretty Bar."
    3355 msgstr ""
    3356 
    3357 #: pro/app/views/options/form.php:625 pro/app/views/options/form.php:627
    3358 msgid "Hide Attribution Link"
    3359 msgstr ""
    3360 
    3361 #: pro/app/views/options/form.php:628
    3362 msgid ""
    3363 "Check this to hide the pretty link attribution link on the pretty bar.<br/"
    3364 "><br/><strong>Wait, before you do this, you might want to leave this un-"
    3365 "checked and set the alternate URL of this link to your <em>Pretty Links Pro</"
    3366 "em> <a href=\"https://prettylinks.com/plp/options/aff-attribution"
    3367 "\">Affiliate URL</a> to earn a few bucks while you are at it."
    3368 msgstr ""
    3369 
    3370 #: pro/app/views/options/form.php:646
    3371 msgid "Attribution URL"
    3372 msgstr ""
    3373 
    3374 #: pro/app/views/options/form.php:648
    3375 msgid "Alternate Pretty Bar Attribution URL"
    3376 msgstr ""
    3377 
    3378 #: pro/app/views/options/form.php:649
    3379 msgid ""
    3380 "If set, this will replace the Pretty Bars attribution URL. This is a very "
    3381 "good place to put your <em>Pretty Links Pro</em> <a href=\"https://"
    3382 "prettylinks.com/plp/options/aff-attribution-2\">Affiliate Link</a>."
    3383 msgstr ""
    3384 
    3385 #: pro/app/views/options/form.php:663
    3386 msgid "Social Buttons Options"
    3387 msgstr ""
    3388 
    3389 #: pro/app/views/options/form.php:666
    3390 msgid "Buttons"
    3391 msgstr ""
    3392 
    3393 #: pro/app/views/options/form.php:668
    3394 msgid "Social Buttons"
    3395 msgstr ""
    3396 
    3397 #: pro/app/views/options/form.php:669
    3398 msgid ""
    3399 "Select which buttons you want to be visible on the Social Buttons Bar.<br/"
    3400 "><br/><code>Note:</code> In order for the Social Buttons Bar to be visible "
    3401 "on Pages and or Posts, you must first enable it in the \"Page &amp; Post "
    3402 "Options\" section above."
    3403 msgstr ""
    3404 
    3405 #: pro/app/views/options/form.php:692
    3406 msgid "Buttons Placement"
    3407 msgstr ""
    3408 
    3409 #: pro/app/views/options/form.php:694
    3410 msgid "Social Buttons Placement"
    3411 msgstr ""
    3412 
    3413 #: pro/app/views/options/form.php:695
    3414 msgid ""
    3415 "This determines where your Social Buttons Placement should appear in "
    3416 "relation to content on Pages and/or Posts.<br/><br/><code>Note:</code> If "
    3417 "you want this bar to appear then you must enable it in the \"Page and Post "
    3418 "Options\" above."
    3419 msgstr ""
    3420 
    3421 #: pro/app/views/options/form.php:705
    3422 msgid "Social Buttons Manual Placement"
    3423 msgstr ""
    3424 
    3425 #: pro/app/views/options/form.php:706
    3426 msgid ""
    3427 "If you select none, you can still show your Social Buttons by manually "
    3428 "adding the <code>[social_buttons_bar]</code> shortcode to your blog posts or "
    3429 "<code>&lt;?php the_social_buttons_bar(); ?&gt;</code> template tag to your "
    3430 "WordPress Theme."
    3431 msgstr ""
    3432 
    3433 #: pro/app/views/options/form.php:731
    3434 msgid "Public Links Creation Options"
    3435 msgstr ""
    3436 
    3437 #: pro/app/views/options/form.php:737
    3438 msgid "Enable Public Links"
    3439 msgstr ""
    3440 
    3441 #: pro/app/views/options/form.php:739
    3442 msgid "Enable Public Link Creation on this Site"
    3443 msgstr ""
    3444 
    3445 #: pro/app/views/options/form.php:740
    3446 msgid ""
    3447 "This option will give you the ability to turn your website into a link "
    3448 "shortening service for your users. Once selected, you can enable the Pretty "
    3449 "Links Pro Sidebar Widget or just display the link creation form with the "
    3450 "<code>[prli_create_form]</code> shortcode in any post or page on your "
    3451 "website."
    3452 msgstr ""
    3453 
    3454 #: pro/app/views/options/form.php:757
    3455 msgid "Use Display Page"
    3456 msgstr ""
    3457 
    3458 #: pro/app/views/options/form.php:759
    3459 msgid "Use Public Link Display Page"
    3460 msgstr ""
    3461 
    3462 #: pro/app/views/options/form.php:760
    3463 msgid ""
    3464 "When a link is created using the public form, the user is typically "
    3465 "redirected to a simple page displaying their new pretty link. But, you can "
    3466 "specify a page that you want them to be redirected to on your website, using "
    3467 "your branding instead by selecting this box and entering the url of the page "
    3468 "you want them to go to."
    3469 msgstr ""
    3470 
    3471 #: pro/app/views/options/form.php:777
    3472 msgid "Display Page"
    3473 msgstr ""
    3474 
    3475 #: pro/app/views/options/form.php:779
    3476 msgid "Public Pretty Link Creation Display URL"
    3477 msgstr ""
    3478 
    3479 #: pro/app/views/options/form.php:780
    3480 msgid ""
    3481 "To set this up, create a new page on your WordPress site and make sure the "
    3482 "<code>[prli_create_display]</code> appears somewhere on this page -- "
    3483 "otherwise the link will never get created. Once this page is created, just "
    3484 "enter the full URL to it here. Make sure this URL does npt end with a slash "
    3485 "(/)."
    3486 msgstr ""
    3487 
    3488 #: pro/app/views/options/general.php:8
    3489 msgid "Use Shortlink URL"
    3490 msgstr ""
    3491 
    3492 #: pro/app/views/options/general.php:10
    3493 msgid "Use an Alternate Shortlink URL"
    3494 msgstr ""
    3495 
    3496 #: pro/app/views/options/general.php:11
    3497 msgid ""
    3498 "Use this option if you want to substitute your actual blog's url with "
    3499 "another URL. You must have another valid domain name pointing to this "
    3500 "WordPress install before you enable this option. If you are using this "
    3501 "option to just get rid of the www in the beginning of your url that is fine "
    3502 "-- just make sure your domain works without the www before enabling this "
    3503 "option."
    3504 msgstr ""
    3505 
    3506 #: pro/app/views/options/general.php:28 pro/app/views/options/general.php:30
    3507 msgid "Shortlink URL"
    3508 msgstr ""
    3509 
    3510 #: pro/app/views/options/general.php:31
    3511 msgid ""
    3512 "Enter a valid base url that points at this WordPress install. Make sure this "
    3513 "URL does not end with a slash (/)."
    3514 msgstr ""
    3515 
    3516 #: pro/app/views/options/general.php:47
    3517 msgid "Minimum Admin Role"
    3518 msgstr ""
    3519 
    3520 #: pro/app/views/options/general.php:49
    3521 msgid "Set Minimum Role Required To Access Pretty Link"
    3522 msgstr ""
    3523 
    3524 #: pro/app/views/options/general.php:50
    3525 msgid ""
    3526 "Use this option to set the minimum role of users who can access the Admin "
    3527 "interface for Pretty Link."
    3528 msgstr ""
    3529 
    3530 #: pro/app/views/options/general.php:56
    3531 msgid "Administrator"
    3532 msgstr ""
    3533 
    3534 #: pro/app/views/options/general.php:57
    3535 msgid "Editor"
    3536 msgstr ""
    3537 
    3538 #: pro/app/views/options/general.php:58
    3539 msgid "Author"
    3540 msgstr ""
    3541 
    3542 #: pro/app/views/options/general.php:59
    3543 msgid "Contributor"
    3544 msgstr ""
    3545 
    3546 #: pro/app/views/options/general.php:60
    3547 msgid "Subscriber"
    3548 msgstr ""
    3549 
    3550 #: pro/app/views/options/nav.php:3
    3551 msgid "Replacements"
    3552 msgstr ""
    3553 
    3554 #: pro/app/views/options/nav.php:4
    3555 msgid "Auto-Create Links"
    3556 msgstr ""
    3557 
    3558 #: pro/app/views/options/nav.php:6
    3559 msgid "Social"
    3560 msgstr ""
    3561 
    3562 #: pro/app/views/options/nav.php:7
    3563 msgid "Public"
    3564 msgstr ""
    3565 
    3566 #: pro/app/views/public/form.php:30
    3567 msgid "ERROR:"
    3568 msgstr ""
    3569 
    3570 #: pro/app/views/reports/custom-report.php:7
    3571 msgid "Link Report"
    3572 msgstr ""
    3573 
    3574 #: pro/app/views/reports/custom-report.php:8
    3575 msgid "Report:"
    3576 msgstr ""
    3577 
    3578 #: pro/app/views/reports/custom-report.php:10
    3579 msgid "For Goal Link:"
    3580 msgstr ""
    3581 
    3582 #: pro/app/views/reports/custom-report.php:30
    3583 #: pro/app/views/reports/custom-report.php:63
    3584 msgid "Link Name"
    3585 msgstr ""
    3586 
    3587 #: pro/app/views/reports/custom-report.php:35
    3588 #: pro/app/views/reports/custom-report.php:68
    3589 #: pro/app/views/reports/split-test-report.php:32
    3590 #: pro/app/views/reports/split-test-report.php:64
    3591 msgid "Conv Rate"
    3592 msgstr ""
    3593 
    3594 #: pro/app/views/reports/edit.php:4
    3595 msgid "Edit Link Report"
    3596 msgstr ""
    3597 
    3598 #: pro/app/views/reports/edit.php:17 pro/app/views/reports/new.php:16
    3599 msgid "This is how you'll identify your Report."
    3600 msgstr ""
    3601 
    3602 #: pro/app/views/reports/edit.php:23 pro/app/views/reports/new.php:23
    3603 msgid "Select Links to Analyze in this Report:"
    3604 msgstr ""
    3605 
    3606 #: pro/app/views/reports/edit.php:77 pro/app/views/reports/new.php:77
    3607 msgid "Select some links to be analyzed in this report."
    3608 msgstr ""
    3609 
    3610 #: pro/app/views/reports/edit.php:80 pro/app/views/reports/new.php:80
    3611 msgid "Select Your Goal Link (optional):"
    3612 msgstr ""
    3613 
    3614 #: pro/app/views/reports/edit.php:103 pro/app/views/reports/new.php:103
    3615 msgid ""
    3616 "If you want to enable conversion tracking in this report then select a goal "
    3617 "link."
    3618 msgstr ""
    3619 
    3620 #: pro/app/views/reports/list.php:4 pro/app/views/reports/reports.php:7
    3621 msgid "Link Reports"
    3622 msgstr ""
    3623 
    3624 #: pro/app/views/reports/list.php:5
    3625 msgid "Add Report"
    3626 msgstr ""
    3627 
    3628 #: pro/app/views/reports/list.php:41
    3629 msgid "No Pretty Link Reports were found"
    3630 msgstr ""
    3631 
    3632 #: pro/app/views/reports/list.php:57
    3633 msgid "View"
    3634 msgstr ""
    3635 
    3636 #: pro/app/views/reports/new.php:4
    3637 msgid "Add Link Report"
    3638 msgstr ""
    3639 
    3640 #: pro/app/views/reports/reports.php:4
    3641 msgid "Reports"
    3642 msgstr ""
    3643 
    3644 #: pro/app/views/reports/split-test-report.php:4
    3645 msgid "Link Split-Test Report"
    3646 msgstr ""
    3647 
    3648 #: pro/app/views/reports/split-test-report.php:5
    3649 msgid "For Link:"
    3650 msgstr ""
    3651 
    3652 #: pro/app/views/reports/split-test-report.php:7
    3653 msgid "Goal Link:"
    3654 msgstr ""
    3655 
    3656 #: pro/app/views/reports/split-test-report.php:27
    3657 msgid "Link Rotation URL"
    3658 msgstr ""
    3659 
    3660 #: pro/app/views/reports/split-test-report.php:59
    3661 msgid "Rotation URL"
    3662 msgstr ""
    3663 
    3664 #: pro/app/views/tools/generator.php:6
    3665 msgid "Custom Bookmarklet:"
    3666 msgstr ""
    3667 
    3668 #: pro/app/views/tools/generator.php:9
    3669 msgid "Customize Pretty Link Bookmarklet"
    3670 msgstr ""
    3671 
    3672 #: pro/app/views/tools/generator.php:10
    3673 msgid ""
    3674 "Alter the options below to customize this Bookmarklet. As you modify the "
    3675 "label, redirect type, tracking and group, you will see this bookmarklet "
    3676 "update -- when the settings are how you want them, drag the bookmarklet into "
    3677 "your toolbar. You can create as many bookmarklets as you want each with "
    3678 "different settings."
    3679 msgstr ""
    3680 
    3681 #: pro/app/views/tools/generator.php:13
    3682 #: pro/app/widgets/PlpPublicLinksWidget.php:55
    3683 msgid "Pretty Link Options"
    3684 msgstr ""
    3685 
    3686 #: pro/app/views/tools/generator.php:16
    3687 msgid "Label:"
    3688 msgstr ""
    3689 
    3690 #: pro/app/views/tools/generator.php:21
    3691 #: pro/app/widgets/PlpPublicLinksWidget.php:57
    3692 msgid "Redirection:"
    3693 msgstr ""
    3694 
    3695 #: pro/app/views/tools/generator.php:25
    3696 msgid "Tracking:"
    3697 msgstr ""
    3698 
    3699 #: pro/app/views/tools/generator.php:28
    3700 #: pro/app/widgets/PlpPublicLinksWidget.php:72
    3701 msgid "Yes"
    3702 msgstr ""
    3703 
    3704 #: pro/app/views/tools/generator.php:29
    3705 #: pro/app/widgets/PlpPublicLinksWidget.php:73
    3706 msgid "No"
    3707 msgstr ""
    3708 
    3709 #: pro/app/views/tools/generator.php:33
    3710 #: pro/app/widgets/PlpPublicLinksWidget.php:78
    3711 msgid "Group:"
    3712 msgstr ""
    3713 
    3714 #: pro/app/views/tools/nav.php:3
    3715 msgid "Custom Bookmarklet"
    3716 msgstr ""
    3717 
    3718 #: pro/app/widgets/PlpPublicLinksWidget.php:7
    3719 msgid "Create a Short URL"
    3720 msgstr ""
    3721 
    3722 #: pro/app/widgets/PlpPublicLinksWidget.php:53
    3723 msgid "Label Text:"
    3724 msgstr ""
    3725 
    3726 #: pro/app/widgets/PlpPublicLinksWidget.php:54
    3727 msgid "Button Text:"
    3728 msgstr ""
    3729 
    3730 #: pro/app/widgets/PlpPublicLinksWidget.php:54
    3731 msgid "if left blank, no button will display"
    3732 msgstr ""
    3733 
    3734 #: pro/app/widgets/PlpPublicLinksWidget.php:60
    3735 msgid "Permanent/301"
    3736 msgstr ""
    3737 
    3738 #: pro/app/widgets/PlpPublicLinksWidget.php:61
    3739 msgid "Temporary/302"
    3740 msgstr ""
    3741 
    3742 #: pro/app/widgets/PlpPublicLinksWidget.php:62
    3743 msgid "Temporary/307"
    3744 msgstr ""
    3745 
    3746 #: pro/app/widgets/PlpPublicLinksWidget.php:63
    3747 msgid "PrettyBar"
    3748 msgstr ""
    3749 
    3750 #: pro/app/widgets/PlpPublicLinksWidget.php:69
    3751 msgid "Tracking Enabled:"
    3752 msgstr ""
    3753 
    3754 #: pro/i18n/countries.php:5
    3755 msgid "Afghanistan"
    3756 msgstr ""
    3757 
    3758 #: pro/i18n/countries.php:6
    3759 msgid "&#197;land Islands"
    3760 msgstr ""
    3761 
    3762 #: pro/i18n/countries.php:7
    3763 msgid "Albania"
    3764 msgstr ""
    3765 
    3766 #: pro/i18n/countries.php:8
    3767 msgid "Algeria"
    3768 msgstr ""
    3769 
    3770 #: pro/i18n/countries.php:9
    3771 msgid "Andorra"
    3772 msgstr ""
    3773 
    3774 #: pro/i18n/countries.php:10
    3775 msgid "Angola"
    3776 msgstr ""
    3777 
    3778 #: pro/i18n/countries.php:11
    3779 msgid "Anguilla"
    3780 msgstr ""
    3781 
    3782 #: pro/i18n/countries.php:12
    3783 msgid "Antarctica"
    3784 msgstr ""
    3785 
    3786 #: pro/i18n/countries.php:13
    3787 msgid "Antigua and Barbuda"
    3788 msgstr ""
    3789 
    3790 #: pro/i18n/countries.php:14
    3791 msgid "Argentina"
    3792 msgstr ""
    3793 
    3794 #: pro/i18n/countries.php:15
    3795 msgid "Armenia"
    3796 msgstr ""
    3797 
    3798 #: pro/i18n/countries.php:16
    3799 msgid "Aruba"
    3800 msgstr ""
    3801 
    3802 #: pro/i18n/countries.php:17
    3803 msgid "Australia"
    3804 msgstr ""
    3805 
    3806 #: pro/i18n/countries.php:18
    3807 msgid "Austria"
    3808 msgstr ""
    3809 
    3810 #: pro/i18n/countries.php:19
    3811 msgid "Azerbaijan"
    3812 msgstr ""
    3813 
    3814 #: pro/i18n/countries.php:20
    3815 msgid "Bahamas"
    3816 msgstr ""
    3817 
    3818 #: pro/i18n/countries.php:21
    3819 msgid "Bahrain"
    3820 msgstr ""
    3821 
    3822 #: pro/i18n/countries.php:22
    3823 msgid "Bangladesh"
    3824 msgstr ""
    3825 
    3826 #: pro/i18n/countries.php:23
    3827 msgid "Barbados"
    3828 msgstr ""
    3829 
    3830 #: pro/i18n/countries.php:24
    3831 msgid "Belarus"
    3832 msgstr ""
    3833 
    3834 #: pro/i18n/countries.php:25
    3835 msgid "Belgium"
    3836 msgstr ""
    3837 
    3838 #: pro/i18n/countries.php:26
    3839 msgid "Belau"
    3840 msgstr ""
    3841 
    3842 #: pro/i18n/countries.php:27
    3843 msgid "Belize"
    3844 msgstr ""
    3845 
    3846 #: pro/i18n/countries.php:28
    3847 msgid "Benin"
    3848 msgstr ""
    3849 
    3850 #: pro/i18n/countries.php:29
    3851 msgid "Bermuda"
    3852 msgstr ""
    3853 
    3854 #: pro/i18n/countries.php:30
    3855 msgid "Bhutan"
    3856 msgstr ""
    3857 
    3858 #: pro/i18n/countries.php:31
    3859 msgid "Bolivia"
    3860 msgstr ""
    3861 
    3862 #: pro/i18n/countries.php:32
    3863 msgid "Bonaire, Saint Eustatius and Saba"
    3864 msgstr ""
    3865 
    3866 #: pro/i18n/countries.php:33
    3867 msgid "Bosnia and Herzegovina"
    3868 msgstr ""
    3869 
    3870 #: pro/i18n/countries.php:34
    3871 msgid "Botswana"
    3872 msgstr ""
    3873 
    3874 #: pro/i18n/countries.php:35
    3875 msgid "Bouvet Island"
    3876 msgstr ""
    3877 
    3878 #: pro/i18n/countries.php:36
    3879 msgid "Brazil"
    3880 msgstr ""
    3881 
    3882 #: pro/i18n/countries.php:37
    3883 msgid "British Indian Ocean Territory"
    3884 msgstr ""
    3885 
    3886 #: pro/i18n/countries.php:38
    3887 msgid "British Virgin Islands"
    3888 msgstr ""
    3889 
    3890 #: pro/i18n/countries.php:39
    3891 msgid "Brunei"
    3892 msgstr ""
    3893 
    3894 #: pro/i18n/countries.php:40
    3895 msgid "Bulgaria"
    3896 msgstr ""
    3897 
    3898 #: pro/i18n/countries.php:41
    3899 msgid "Burkina Faso"
    3900 msgstr ""
    3901 
    3902 #: pro/i18n/countries.php:42
    3903 msgid "Burundi"
    3904 msgstr ""
    3905 
    3906 #: pro/i18n/countries.php:43
    3907 msgid "Cambodia"
    3908 msgstr ""
    3909 
    3910 #: pro/i18n/countries.php:44
    3911 msgid "Cameroon"
    3912 msgstr ""
    3913 
    3914 #: pro/i18n/countries.php:45
    3915 msgid "Canada"
    3916 msgstr ""
    3917 
    3918 #: pro/i18n/countries.php:46
    3919 msgid "Cape Verde"
    3920 msgstr ""
    3921 
    3922 #: pro/i18n/countries.php:47
    3923 msgid "Cayman Islands"
    3924 msgstr ""
    3925 
    3926 #: pro/i18n/countries.php:48
    3927 msgid "Central African Republic"
    3928 msgstr ""
    3929 
    3930 #: pro/i18n/countries.php:49
    3931 msgid "Chad"
    3932 msgstr ""
    3933 
    3934 #: pro/i18n/countries.php:50
    3935 msgid "Chile"
    3936 msgstr ""
    3937 
    3938 #: pro/i18n/countries.php:51
    3939 msgid "China"
    3940 msgstr ""
    3941 
    3942 #: pro/i18n/countries.php:52
    3943 msgid "Christmas Island"
    3944 msgstr ""
    3945 
    3946 #: pro/i18n/countries.php:53
    3947 msgid "Cocos/Keeling Islands"
    3948 msgstr ""
    3949 
    3950 #: pro/i18n/countries.php:54
    3951 msgid "Colombia"
    3952 msgstr ""
    3953 
    3954 #: pro/i18n/countries.php:55
    3955 msgid "Comoros"
    3956 msgstr ""
    3957 
    3958 #: pro/i18n/countries.php:56
    3959 msgid "Congo (Brazzaville)"
    3960 msgstr ""
    3961 
    3962 #: pro/i18n/countries.php:57
    3963 msgid "Congo (Kinshasa)"
    3964 msgstr ""
    3965 
    3966 #: pro/i18n/countries.php:58
    3967 msgid "Cook Islands"
    3968 msgstr ""
    3969 
    3970 #: pro/i18n/countries.php:59
    3971 msgid "Costa Rica"
    3972 msgstr ""
    3973 
    3974 #: pro/i18n/countries.php:60
    3975 msgid "Croatia"
    3976 msgstr ""
    3977 
    3978 #: pro/i18n/countries.php:61
    3979 msgid "Cuba"
    3980 msgstr ""
    3981 
    3982 #: pro/i18n/countries.php:62
    3983 msgid "Cura&Ccedil;ao"
    3984 msgstr ""
    3985 
    3986 #: pro/i18n/countries.php:63
    3987 msgid "Cyprus"
    3988 msgstr ""
    3989 
    3990 #: pro/i18n/countries.php:64
    3991 msgid "Czech Republic"
    3992 msgstr ""
    3993 
    3994 #: pro/i18n/countries.php:65
    3995 msgid "Denmark"
    3996 msgstr ""
    3997 
    3998 #: pro/i18n/countries.php:66
    3999 msgid "Djibouti"
    4000 msgstr ""
    4001 
    4002 #: pro/i18n/countries.php:67
    4003 msgid "Dominica"
    4004 msgstr ""
    4005 
    4006 #: pro/i18n/countries.php:68
    4007 msgid "Dominican Republic"
    4008 msgstr ""
    4009 
    4010 #: pro/i18n/countries.php:69
    4011 msgid "Ecuador"
    4012 msgstr ""
    4013 
    4014 #: pro/i18n/countries.php:70
    4015 msgid "Egypt"
    4016 msgstr ""
    4017 
    4018 #: pro/i18n/countries.php:71
    4019 msgid "El Salvador"
    4020 msgstr ""
    4021 
    4022 #: pro/i18n/countries.php:72
    4023 msgid "Equatorial Guinea"
    4024 msgstr ""
    4025 
    4026 #: pro/i18n/countries.php:73
    4027 msgid "Eritrea"
    4028 msgstr ""
    4029 
    4030 #: pro/i18n/countries.php:74
    4031 msgid "Estonia"
    4032 msgstr ""
    4033 
    4034 #: pro/i18n/countries.php:75
    4035 msgid "Ethiopia"
    4036 msgstr ""
    4037 
    4038 #: pro/i18n/countries.php:76
    4039 msgid "Falkland Islands"
    4040 msgstr ""
    4041 
    4042 #: pro/i18n/countries.php:77
    4043 msgid "Faroe Islands"
    4044 msgstr ""
    4045 
    4046 #: pro/i18n/countries.php:78
    4047 msgid "Fiji"
    4048 msgstr ""
    4049 
    4050 #: pro/i18n/countries.php:79
    4051 msgid "Finland"
    4052 msgstr ""
    4053 
    4054 #: pro/i18n/countries.php:80
    4055 msgid "France"
    4056 msgstr ""
    4057 
    4058 #: pro/i18n/countries.php:81
    4059 msgid "French Guiana"
    4060 msgstr ""
    4061 
    4062 #: pro/i18n/countries.php:82
    4063 msgid "French Polynesia"
    4064 msgstr ""
    4065 
    4066 #: pro/i18n/countries.php:83
    4067 msgid "French Southern Territories"
    4068 msgstr ""
    4069 
    4070 #: pro/i18n/countries.php:84
    4071 msgid "Gabon"
    4072 msgstr ""
    4073 
    4074 #: pro/i18n/countries.php:85
    4075 msgid "Gambia"
    4076 msgstr ""
    4077 
    4078 #: pro/i18n/countries.php:86
    4079 msgid "Georgia"
    4080 msgstr ""
    4081 
    4082 #: pro/i18n/countries.php:87
    4083 msgid "Germany"
    4084 msgstr ""
    4085 
    4086 #: pro/i18n/countries.php:88
    4087 msgid "Ghana"
    4088 msgstr ""
    4089 
    4090 #: pro/i18n/countries.php:89
    4091 msgid "Gibraltar"
    4092 msgstr ""
    4093 
    4094 #: pro/i18n/countries.php:90
    4095 msgid "Greece"
    4096 msgstr ""
    4097 
    4098 #: pro/i18n/countries.php:91
    4099 msgid "Greenland"
    4100 msgstr ""
    4101 
    4102 #: pro/i18n/countries.php:92
    4103 msgid "Grenada"
    4104 msgstr ""
    4105 
    4106 #: pro/i18n/countries.php:93
    4107 msgid "Guadeloupe"
    4108 msgstr ""
    4109 
    4110 #: pro/i18n/countries.php:94
    4111 msgid "Guatemala"
    4112 msgstr ""
    4113 
    4114 #: pro/i18n/countries.php:95
    4115 msgid "Guernsey"
    4116 msgstr ""
    4117 
    4118 #: pro/i18n/countries.php:96
    4119 msgid "Guinea"
    4120 msgstr ""
    4121 
    4122 #: pro/i18n/countries.php:97
    4123 msgid "Guinea-Bissau"
    4124 msgstr ""
    4125 
    4126 #: pro/i18n/countries.php:98
    4127 msgid "Guyana"
    4128 msgstr ""
    4129 
    4130 #: pro/i18n/countries.php:99
    4131 msgid "Haiti"
    4132 msgstr ""
    4133 
    4134 #: pro/i18n/countries.php:100
    4135 msgid "Heard Island and McDonald Islands"
    4136 msgstr ""
    4137 
    4138 #: pro/i18n/countries.php:101
    4139 msgid "Honduras"
    4140 msgstr ""
    4141 
    4142 #: pro/i18n/countries.php:102
    4143 msgid "Hong Kong"
    4144 msgstr ""
    4145 
    4146 #: pro/i18n/countries.php:103
    4147 msgid "Hungary"
    4148 msgstr ""
    4149 
    4150 #: pro/i18n/countries.php:104
    4151 msgid "Iceland"
    4152 msgstr ""
    4153 
    4154 #: pro/i18n/countries.php:105
    4155 msgid "India"
    4156 msgstr ""
    4157 
    4158 #: pro/i18n/countries.php:106
    4159 msgid "Indonesia"
    4160 msgstr ""
    4161 
    4162 #: pro/i18n/countries.php:107
    4163 msgid "Iran"
    4164 msgstr ""
    4165 
    4166 #: pro/i18n/countries.php:108
    4167 msgid "Iraq"
    4168 msgstr ""
    4169 
    4170 #: pro/i18n/countries.php:109
    4171 msgid "Republic of Ireland"
    4172 msgstr ""
    4173 
    4174 #: pro/i18n/countries.php:110
    4175 msgid "Isle of Man"
    4176 msgstr ""
    4177 
    4178 #: pro/i18n/countries.php:111
    4179 msgid "Israel"
    4180 msgstr ""
    4181 
    4182 #: pro/i18n/countries.php:112
    4183 msgid "Italy"
    4184 msgstr ""
    4185 
    4186 #: pro/i18n/countries.php:113
    4187 msgid "Ivory Coast"
    4188 msgstr ""
    4189 
    4190 #: pro/i18n/countries.php:114
    4191 msgid "Jamaica"
    4192 msgstr ""
    4193 
    4194 #: pro/i18n/countries.php:115
    4195 msgid "Japan"
    4196 msgstr ""
    4197 
    4198 #: pro/i18n/countries.php:116
    4199 msgid "Jersey"
    4200 msgstr ""
    4201 
    4202 #: pro/i18n/countries.php:117
    4203 msgid "Jordan"
    4204 msgstr ""
    4205 
    4206 #: pro/i18n/countries.php:118
    4207 msgid "Kazakhstan"
    4208 msgstr ""
    4209 
    4210 #: pro/i18n/countries.php:119
    4211 msgid "Kenya"
    4212 msgstr ""
    4213 
    4214 #: pro/i18n/countries.php:120
    4215 msgid "Kiribati"
    4216 msgstr ""
    4217 
    4218 #: pro/i18n/countries.php:121
    4219 msgid "Kuwait"
    4220 msgstr ""
    4221 
    4222 #: pro/i18n/countries.php:122
    4223 msgid "Kyrgyzstan"
    4224 msgstr ""
    4225 
    4226 #: pro/i18n/countries.php:123
    4227 msgid "Laos"
    4228 msgstr ""
    4229 
    4230 #: pro/i18n/countries.php:124
    4231 msgid "Latvia"
    4232 msgstr ""
    4233 
    4234 #: pro/i18n/countries.php:125
    4235 msgid "Lebanon"
    4236 msgstr ""
    4237 
    4238 #: pro/i18n/countries.php:126
    4239 msgid "Lesotho"
    4240 msgstr ""
    4241 
    4242 #: pro/i18n/countries.php:127
    4243 msgid "Liberia"
    4244 msgstr ""
    4245 
    4246 #: pro/i18n/countries.php:128
    4247 msgid "Libya"
    4248 msgstr ""
    4249 
    4250 #: pro/i18n/countries.php:129
    4251 msgid "Liechtenstein"
    4252 msgstr ""
    4253 
    4254 #: pro/i18n/countries.php:130
    4255 msgid "Lithuania"
    4256 msgstr ""
    4257 
    4258 #: pro/i18n/countries.php:131
    4259 msgid "Luxembourg"
    4260 msgstr ""
    4261 
    4262 #: pro/i18n/countries.php:132
    4263 msgid "Macao S.A.R., China"
    4264 msgstr ""
    4265 
    4266 #: pro/i18n/countries.php:133
    4267 msgid "Macedonia"
    4268 msgstr ""
    4269 
    4270 #: pro/i18n/countries.php:134
    4271 msgid "Madagascar"
    4272 msgstr ""
    4273 
    4274 #: pro/i18n/countries.php:135
    4275 msgid "Malawi"
    4276 msgstr ""
    4277 
    4278 #: pro/i18n/countries.php:136
    4279 msgid "Malaysia"
    4280 msgstr ""
    4281 
    4282 #: pro/i18n/countries.php:137
    4283 msgid "Maldives"
    4284 msgstr ""
    4285 
    4286 #: pro/i18n/countries.php:138
    4287 msgid "Mali"
    4288 msgstr ""
    4289 
    4290 #: pro/i18n/countries.php:139
    4291 msgid "Malta"
    4292 msgstr ""
    4293 
    4294 #: pro/i18n/countries.php:140
    4295 msgid "Marshall Islands"
    4296 msgstr ""
    4297 
    4298 #: pro/i18n/countries.php:141
    4299 msgid "Martinique"
    4300 msgstr ""
    4301 
    4302 #: pro/i18n/countries.php:142
    4303 msgid "Mauritania"
    4304 msgstr ""
    4305 
    4306 #: pro/i18n/countries.php:143
    4307 msgid "Mauritius"
    4308 msgstr ""
    4309 
    4310 #: pro/i18n/countries.php:144
    4311 msgid "Mayotte"
    4312 msgstr ""
    4313 
    4314 #: pro/i18n/countries.php:145
    4315 msgid "Mexico"
    4316 msgstr ""
    4317 
    4318 #: pro/i18n/countries.php:146
    4319 msgid "Micronesia"
    4320 msgstr ""
    4321 
    4322 #: pro/i18n/countries.php:147
    4323 msgid "Moldova"
    4324 msgstr ""
    4325 
    4326 #: pro/i18n/countries.php:148
    4327 msgid "Monaco"
    4328 msgstr ""
    4329 
    4330 #: pro/i18n/countries.php:149
    4331 msgid "Mongolia"
    4332 msgstr ""
    4333 
    4334 #: pro/i18n/countries.php:150
    4335 msgid "Montenegro"
    4336 msgstr ""
    4337 
    4338 #: pro/i18n/countries.php:151
    4339 msgid "Montserrat"
    4340 msgstr ""
    4341 
    4342 #: pro/i18n/countries.php:152
    4343 msgid "Morocco"
    4344 msgstr ""
    4345 
    4346 #: pro/i18n/countries.php:153
    4347 msgid "Mozambique"
    4348 msgstr ""
    4349 
    4350 #: pro/i18n/countries.php:154
    4351 msgid "Myanmar"
    4352 msgstr ""
    4353 
    4354 #: pro/i18n/countries.php:155
    4355 msgid "Namibia"
    4356 msgstr ""
    4357 
    4358 #: pro/i18n/countries.php:156
    4359 msgid "Nauru"
    4360 msgstr ""
    4361 
    4362 #: pro/i18n/countries.php:157
    4363 msgid "Nepal"
    4364 msgstr ""
    4365 
    4366 #: pro/i18n/countries.php:158
    4367 msgid "Netherlands"
    4368 msgstr ""
    4369 
    4370 #: pro/i18n/countries.php:159
    4371 msgid "Netherlands Antilles"
    4372 msgstr ""
    4373 
    4374 #: pro/i18n/countries.php:160
    4375 msgid "New Caledonia"
    4376 msgstr ""
    4377 
    4378 #: pro/i18n/countries.php:161
    4379 msgid "New Zealand"
    4380 msgstr ""
    4381 
    4382 #: pro/i18n/countries.php:162
    4383 msgid "Nicaragua"
    4384 msgstr ""
    4385 
    4386 #: pro/i18n/countries.php:163
    4387 msgid "Niger"
    4388 msgstr ""
    4389 
    4390 #: pro/i18n/countries.php:164
    4391 msgid "Nigeria"
    4392 msgstr ""
    4393 
    4394 #: pro/i18n/countries.php:165
    4395 msgid "Niue"
    4396 msgstr ""
    4397 
    4398 #: pro/i18n/countries.php:166
    4399 msgid "Norfolk Island"
    4400 msgstr ""
    4401 
    4402 #: pro/i18n/countries.php:167
    4403 msgid "North Korea"
    4404 msgstr ""
    4405 
    4406 #: pro/i18n/countries.php:168
    4407 msgid "Norway"
    4408 msgstr ""
    4409 
    4410 #: pro/i18n/countries.php:169
    4411 msgid "Oman"
    4412 msgstr ""
    4413 
    4414 #: pro/i18n/countries.php:170
    4415 msgid "Pakistan"
    4416 msgstr ""
    4417 
    4418 #: pro/i18n/countries.php:171
    4419 msgid "Palestinian Territory"
    4420 msgstr ""
    4421 
    4422 #: pro/i18n/countries.php:172
    4423 msgid "Panama"
    4424 msgstr ""
    4425 
    4426 #: pro/i18n/countries.php:173
    4427 msgid "Papua New Guinea"
    4428 msgstr ""
    4429 
    4430 #: pro/i18n/countries.php:174
    4431 msgid "Paraguay"
    4432 msgstr ""
    4433 
    4434 #: pro/i18n/countries.php:175
    4435 msgid "Peru"
    4436 msgstr ""
    4437 
    4438 #: pro/i18n/countries.php:176
    4439 msgid "Philippines"
    4440 msgstr ""
    4441 
    4442 #: pro/i18n/countries.php:177
    4443 msgid "Pitcairn"
    4444 msgstr ""
    4445 
    4446 #: pro/i18n/countries.php:178
    4447 msgid "Poland"
    4448 msgstr ""
    4449 
    4450 #: pro/i18n/countries.php:179
    4451 msgid "Portugal"
    4452 msgstr ""
    4453 
    4454 #: pro/i18n/countries.php:180
    4455 msgid "Qatar"
    4456 msgstr ""
    4457 
    4458 #: pro/i18n/countries.php:181
    4459 msgid "Reunion"
    4460 msgstr ""
    4461 
    4462 #: pro/i18n/countries.php:182
    4463 msgid "Romania"
    4464 msgstr ""
    4465 
    4466 #: pro/i18n/countries.php:183
    4467 msgid "Russia"
    4468 msgstr ""
    4469 
    4470 #: pro/i18n/countries.php:184
    4471 msgid "Rwanda"
    4472 msgstr ""
    4473 
    4474 #: pro/i18n/countries.php:185
    4475 msgid "Saint Barth&eacute;lemy"
    4476 msgstr ""
    4477 
    4478 #: pro/i18n/countries.php:186
    4479 msgid "Saint Helena"
    4480 msgstr ""
    4481 
    4482 #: pro/i18n/countries.php:187
    4483 msgid "Saint Kitts and Nevis"
    4484 msgstr ""
    4485 
    4486 #: pro/i18n/countries.php:188
    4487 msgid "Saint Lucia"
    4488 msgstr ""
    4489 
    4490 #: pro/i18n/countries.php:189
    4491 msgid "Saint Martin (French part)"
    4492 msgstr ""
    4493 
    4494 #: pro/i18n/countries.php:190
    4495 msgid "Saint Martin (Dutch part)"
    4496 msgstr ""
    4497 
    4498 #: pro/i18n/countries.php:191
    4499 msgid "Saint Pierre and Miquelon"
    4500 msgstr ""
    4501 
    4502 #: pro/i18n/countries.php:192
    4503 msgid "Saint Vincent and the Grenadines"
    4504 msgstr ""
    4505 
    4506 #: pro/i18n/countries.php:193
    4507 msgid "San Marino"
    4508 msgstr ""
    4509 
    4510 #: pro/i18n/countries.php:194
    4511 msgid "S&atilde;o Tom&eacute; and Pr&iacute;ncipe"
    4512 msgstr ""
    4513 
    4514 #: pro/i18n/countries.php:195
    4515 msgid "Saudi Arabia"
    4516 msgstr ""
    4517 
    4518 #: pro/i18n/countries.php:196
    4519 msgid "Senegal"
    4520 msgstr ""
    4521 
    4522 #: pro/i18n/countries.php:197
    4523 msgid "Serbia"
    4524 msgstr ""
    4525 
    4526 #: pro/i18n/countries.php:198
    4527 msgid "Seychelles"
    4528 msgstr ""
    4529 
    4530 #: pro/i18n/countries.php:199
    4531 msgid "Sierra Leone"
    4532 msgstr ""
    4533 
    4534 #: pro/i18n/countries.php:200
    4535 msgid "Singapore"
    4536 msgstr ""
    4537 
    4538 #: pro/i18n/countries.php:201
    4539 msgid "Slovakia"
    4540 msgstr ""
    4541 
    4542 #: pro/i18n/countries.php:202
    4543 msgid "Slovenia"
    4544 msgstr ""
    4545 
    4546 #: pro/i18n/countries.php:203
    4547 msgid "Solomon Islands"
    4548 msgstr ""
    4549 
    4550 #: pro/i18n/countries.php:204
    4551 msgid "Somalia"
    4552 msgstr ""
    4553 
    4554 #: pro/i18n/countries.php:205
    4555 msgid "South Africa"
    4556 msgstr ""
    4557 
    4558 #: pro/i18n/countries.php:206
    4559 msgid "South Georgia/Sandwich Islands"
    4560 msgstr ""
    4561 
    4562 #: pro/i18n/countries.php:207
    4563 msgid "South Korea"
    4564 msgstr ""
    4565 
    4566 #: pro/i18n/countries.php:208
    4567 msgid "South Sudan"
    4568 msgstr ""
    4569 
    4570 #: pro/i18n/countries.php:209
    4571 msgid "Spain"
    4572 msgstr ""
    4573 
    4574 #: pro/i18n/countries.php:210
    4575 msgid "Sri Lanka"
    4576 msgstr ""
    4577 
    4578 #: pro/i18n/countries.php:211
    4579 msgid "Sudan"
    4580 msgstr ""
    4581 
    4582 #: pro/i18n/countries.php:212
    4583 msgid "Suriname"
    4584 msgstr ""
    4585 
    4586 #: pro/i18n/countries.php:213
    4587 msgid "Svalbard and Jan Mayen"
    4588 msgstr ""
    4589 
    4590 #: pro/i18n/countries.php:214
    4591 msgid "Swaziland"
    4592 msgstr ""
    4593 
    4594 #: pro/i18n/countries.php:215
    4595 msgid "Sweden"
    4596 msgstr ""
    4597 
    4598 #: pro/i18n/countries.php:216
    4599 msgid "Switzerland"
    4600 msgstr ""
    4601 
    4602 #: pro/i18n/countries.php:217
    4603 msgid "Syria"
    4604 msgstr ""
    4605 
    4606 #: pro/i18n/countries.php:218
    4607 msgid "Taiwan"
    4608 msgstr ""
    4609 
    4610 #: pro/i18n/countries.php:219
    4611 msgid "Tajikistan"
    4612 msgstr ""
    4613 
    4614 #: pro/i18n/countries.php:220
    4615 msgid "Tanzania"
    4616 msgstr ""
    4617 
    4618 #: pro/i18n/countries.php:221
    4619 msgid "Thailand"
    4620 msgstr ""
    4621 
    4622 #: pro/i18n/countries.php:222
    4623 msgid "Timor-Leste"
    4624 msgstr ""
    4625 
    4626 #: pro/i18n/countries.php:223
    4627 msgid "Togo"
    4628 msgstr ""
    4629 
    4630 #: pro/i18n/countries.php:224
    4631 msgid "Tokelau"
    4632 msgstr ""
    4633 
    4634 #: pro/i18n/countries.php:225
    4635 msgid "Tonga"
    4636 msgstr ""
    4637 
    4638 #: pro/i18n/countries.php:226
    4639 msgid "Trinidad and Tobago"
    4640 msgstr ""
    4641 
    4642 #: pro/i18n/countries.php:227
    4643 msgid "Tunisia"
    4644 msgstr ""
    4645 
    4646 #: pro/i18n/countries.php:228
    4647 msgid "Turkey"
    4648 msgstr ""
    4649 
    4650 #: pro/i18n/countries.php:229
    4651 msgid "Turkmenistan"
    4652 msgstr ""
    4653 
    4654 #: pro/i18n/countries.php:230
    4655 msgid "Turks and Caicos Islands"
    4656 msgstr ""
    4657 
    4658 #: pro/i18n/countries.php:231
    4659 msgid "Tuvalu"
    4660 msgstr ""
    4661 
    4662 #: pro/i18n/countries.php:232
    4663 msgid "Uganda"
    4664 msgstr ""
    4665 
    4666 #: pro/i18n/countries.php:233
    4667 msgid "Ukraine"
    4668 msgstr ""
    4669 
    4670 #: pro/i18n/countries.php:234
    4671 msgid "United Arab Emirates"
    4672 msgstr ""
    4673 
    4674 #: pro/i18n/countries.php:235
    4675 msgid "United Kingdom (UK)"
    4676 msgstr ""
    4677 
    4678 #: pro/i18n/countries.php:236
    4679 msgid "United States"
    4680 msgstr ""
    4681 
    4682 #: pro/i18n/countries.php:237
    4683 msgid "Uruguay"
    4684 msgstr ""
    4685 
    4686 #: pro/i18n/countries.php:238
    4687 msgid "Uzbekistan"
    4688 msgstr ""
    4689 
    4690 #: pro/i18n/countries.php:239
    4691 msgid "Vanuatu"
    4692 msgstr ""
    4693 
    4694 #: pro/i18n/countries.php:240
    4695 msgid "Vatican"
    4696 msgstr ""
    4697 
    4698 #: pro/i18n/countries.php:241
    4699 msgid "Venezuela"
    4700 msgstr ""
    4701 
    4702 #: pro/i18n/countries.php:242
    4703 msgid "Vietnam"
    4704 msgstr ""
    4705 
    4706 #: pro/i18n/countries.php:243
    4707 msgid "Wallis and Futuna"
    4708 msgstr ""
    4709 
    4710 #: pro/i18n/countries.php:244
    4711 msgid "Western Sahara"
    4712 msgstr ""
    4713 
    4714 #: pro/i18n/countries.php:245
    4715 msgid "Western Samoa"
    4716 msgstr ""
    4717 
    4718 #: pro/i18n/countries.php:246
    4719 msgid "Yemen"
    4720 msgstr ""
    4721 
    4722 #: pro/i18n/countries.php:247
    4723 msgid "Zambia"
    4724 msgstr ""
    4725 
    4726 #: pro/i18n/countries.php:248
    4727 msgid "Zimbabwe"
    4728 msgstr ""
    4729 
    4730 #: script/i18n/pomo/sample/app.php:56
    4731 msgid "Welcome %s!"
    4732 msgstr ""
    4733 
    4734 #: script/i18n/pomo/sample/app.php:60
    4735 msgid "A string with low priority!"
    4736 msgstr ""
    4737 
    4738 #: script/i18n/pomo/sample/app.php:62
    4739 msgid "Bye\n"
    4740 msgstr ""
    4741 
    4742 #. Plugin URI of the plugin/theme
    4743 msgid "https://prettylinks.com/pl/plugin-uri"
    4744 msgstr ""
    4745 
    4746 #. Description of the plugin/theme
    4747 msgid ""
    4748 "Shrink, track and share any URL on the Internet from your WordPress website!"
    4749 msgstr ""
    4750 
    4751 #. Author of the plugin/theme
    4752 msgid "Blair Williams"
    4753 msgstr ""
    4754 
    4755 #. Author URI of the plugin/theme
    4756 msgid "http://blairwilliams.com"
    4757 msgstr ""
     4883#: app/controllers/PrliOptionsController.php:61
     4884msgid "Options saved."
     4885msgstr ""
     4886
     4887#: app/controllers/PrliOptionsController.php:75
     4888msgid "Excluded IP Addresses must be a comma separated list of IPv4 or IPv6 addresses or ranges."
     4889msgstr ""
     4890
     4891#: app/controllers/PrliOptionsController.php:79
     4892msgid "Whitelist IP Addresses must be a comma separated list of IPv4 or IPv6 addresses or ranges."
     4893msgstr ""
     4894
     4895#: app/controllers/PrliPopupController.php:63
     4896msgid "An unknown error occurred."
     4897msgstr ""
     4898
     4899#: app/controllers/PrliPopupController.php:93
     4900#: app/controllers/PrliLinksController.php:338
     4901#: app/controllers/PrliLinksController.php:550
     4902msgid "Forbidden"
     4903msgstr ""
     4904
     4905#: app/controllers/PrliPopupController.php:97
     4906msgid "Must specify a popup"
     4907msgstr ""
     4908
     4909#: app/controllers/PrliPopupController.php:103
     4910msgid "Invalid popup"
     4911msgstr ""
     4912
     4913#: app/controllers/PrliPopupController.php:108
     4914msgid "The popup was successfully delayed"
     4915msgstr ""
     4916
     4917#: app/controllers/PrliPopupController.php:112
     4918msgid "The popup was successfully stopped"
     4919msgstr ""
     4920
     4921#: app/controllers/PrliLocalApiController.php:100
     4922#: app/controllers/PrliLocalApiController.php:159
     4923msgid "An error prevented your Pretty Link from being created"
     4924msgstr ""
     4925
     4926#: app/controllers/PrliLocalApiController.php:124
     4927msgid "Pretty Link ID must be set for successful update."
     4928msgstr ""
     4929
     4930#: app/controllers/PrliLinksController.php:45
     4931msgid "Add New Pretty Link"
     4932msgstr ""
     4933
     4934#: app/controllers/PrliLinksController.php:46
     4935msgid "Edit Pretty Link"
     4936msgstr ""
     4937
     4938#: app/controllers/PrliLinksController.php:47
     4939#: js/editor/components/link-editor/index.js:324
     4940#: js/editor.js:12
     4941msgid "New Pretty Link"
     4942msgstr ""
     4943
     4944#: app/controllers/PrliLinksController.php:48
     4945msgid "View Pretty Link"
     4946msgstr ""
     4947
     4948#: app/controllers/PrliLinksController.php:49
     4949msgid "Search Pretty Links"
     4950msgstr ""
     4951
     4952#: app/controllers/PrliLinksController.php:50
     4953msgid "No Pretty Links found"
     4954msgstr ""
     4955
     4956#: app/controllers/PrliLinksController.php:51
     4957msgid "No Pretty Links found in Trash"
     4958msgstr ""
     4959
     4960#: app/controllers/PrliLinksController.php:52
     4961msgid "Parent Pretty Link:"
     4962msgstr ""
     4963
     4964#: app/controllers/PrliLinksController.php:97
     4965msgid "Pretty Link Settings"
     4966msgstr ""
     4967
     4968#: app/controllers/PrliLinksController.php:326
     4969msgid "Pretty Link Cleanup Visitor Locks"
     4970msgstr ""
     4971
     4972#: app/controllers/PrliLinksController.php:346
     4973msgid "Success!"
     4974msgstr ""
     4975
     4976#: app/controllers/PrliLinksController.php:348
     4977msgid "Fix the following errors:"
     4978msgstr ""
     4979
     4980#: app/controllers/PrliLinksController.php:384
     4981msgid "Upgrade to a Pretty Links premium plan to get Link Categories"
     4982msgstr ""
     4983
     4984#: app/controllers/PrliLinksController.php:390
     4985msgid "Upgrade to a Pretty Links premium plan to get Link Tags"
     4986msgstr ""
     4987
     4988#: app/controllers/PrliLinksController.php:396
     4989msgid "Upgrade to a Pretty Links premium plan to get Keyword Replacements"
     4990msgstr ""
     4991
     4992#: app/controllers/PrliLinksController.php:402
     4993msgid "Settings"
     4994msgstr ""
     4995
     4996#: app/controllers/PrliLinksController.php:403
     4997msgid "Link Title"
     4998msgstr ""
     4999
     5000#: app/controllers/PrliLinksController.php:505
     5001msgid "Tweet"
     5002msgstr ""
     5003
     5004#: app/controllers/PrliLinksController.php:507
     5005msgid "Target &raquo;"
     5006msgstr ""
     5007
     5008#: app/controllers/PrliLinksController.php:508
     5009msgid "Pretty Link &raquo;"
     5010msgstr ""
     5011
     5012#: app/controllers/PrliLinksController.php:530
     5013#: app/controllers/PrliLinksController.php:531
     5014msgid "View Split Test Report"
     5015msgstr ""
     5016
     5017#: app/controllers/PrliLinksController.php:556
     5018msgid "Your Pretty Link was Successfully Reset"
     5019msgstr ""
     5020
     5021#: app/controllers/PrliLinksController.php:564
     5022msgid "Bad request"
     5023msgstr ""
     5024
     5025#: app/controllers/PrliLinksController.php:568
     5026msgid "Insufficient permissions"
     5027msgstr ""
     5028
     5029#: app/controllers/PrliLinksController.php:597
     5030msgid "An error occurred creating the link"
     5031msgstr ""
     5032
     5033#: app/controllers/PrliLinksController.php:629
     5034msgid "All Groups (Legacy)"
     5035msgstr ""
     5036
     5037#: app/controllers/PrliAppController.php:84
     5038msgid "Link Categories [Pro Only]"
     5039msgstr ""
     5040
     5041#: app/controllers/PrliAppController.php:85
     5042msgid "Categories [Pro]"
     5043msgstr ""
     5044
     5045#: app/controllers/PrliAppController.php:92
     5046msgid "Link Tags [Pro Only]"
     5047msgstr ""
     5048
     5049#: app/controllers/PrliAppController.php:93
     5050msgid "Tags [Pro]"
     5051msgstr ""
     5052
     5053#: app/controllers/PrliAppController.php:100
     5054msgid "Link Reports [Pro Only]"
     5055msgstr ""
     5056
     5057#: app/controllers/PrliAppController.php:101
     5058msgid "Reports [Pro]"
     5059msgstr ""
     5060
     5061#: app/controllers/PrliAppController.php:108
     5062msgid "Import / Export [Pro Only]"
     5063msgstr ""
     5064
     5065#: app/controllers/PrliAppController.php:109
     5066msgid "Import / Export [Pro]"
     5067msgstr ""
     5068
     5069#: app/controllers/PrliAppController.php:118
     5070msgid "Pretty Links | Clicks"
     5071msgstr ""
     5072
     5073#: app/controllers/PrliAppController.php:122
     5074msgid "Pretty Links | Tools"
     5075msgstr ""
     5076
     5077#: app/controllers/PrliAppController.php:125
     5078msgid "Pretty Links | Options"
     5079msgstr ""
     5080
     5081#: app/controllers/PrliAppController.php:129
     5082#: app/controllers/PrliAppController.php:132
     5083#: app/controllers/PrliAppController.php:268
     5084msgid "Activate"
     5085msgstr ""
     5086
     5087#: app/controllers/PrliAppController.php:135
     5088msgid "Upgrade"
     5089msgstr ""
     5090
     5091#: app/controllers/PrliAppController.php:140
     5092msgid "Welcome"
     5093msgstr ""
     5094
     5095#: app/controllers/PrliAppController.php:141
     5096msgid "What's New"
     5097msgstr ""
     5098
     5099#: app/controllers/PrliAppController.php:267
     5100#: app/controllers/PrliAppController.php:273
     5101#: app/controllers/PrliAppController.php:278
     5102msgid "Docs"
     5103msgstr ""
     5104
     5105#: app/controllers/PrliAppController.php:271
     5106#: app/controllers/PrliAppController.php:277
     5107msgid "Activate Pro License"
     5108msgstr ""
     5109
     5110#: app/controllers/PrliAppController.php:272
     5111msgid "Buy"
     5112msgstr ""
     5113
     5114#: app/controllers/PrliAppController.php:397
     5115msgid "Are you sure you want to reset your Pretty Link? This will delete all of the statistical data about this Pretty Link in your database."
     5116msgstr ""
     5117
     5118#. translators: %1$s: br tag, %2$s: open link tag, %3$s: close link tag
     5119#: app/controllers/PrliAppController.php:483
     5120msgid "You're almost done!%1$s%2$sFinish your Re-Install of Pretty Links Pro%3$s"
     5121msgstr ""
     5122
     5123#: app/controllers/PrliAppController.php:498
     5124msgid "Pretty Links Pro Successfully Uninstalled."
     5125msgstr ""
     5126
     5127#: app/controllers/PrliAppController.php:547
     5128msgid "Invalid server response"
     5129msgstr ""
     5130
     5131#: app/controllers/PrliAppController.php:548
     5132msgid "Ajax error"
     5133msgstr ""
     5134
     5135#: app/controllers/PrliAppController.php:565
     5136msgid "Pretty Link Quick Add"
     5137msgstr ""
     5138
     5139#: app/controllers/PrliAppController.php:604
     5140msgid "Your Pretty Links Pro installation isn't quite complete yet. %1$sAutomatically Upgrade to Enable Pretty Links Pro%2$s"
     5141msgstr ""
     5142
     5143#: app/controllers/PrliAppController.php:625
     5144msgid "Your Pretty Links Pro installation isn't quite complete yet.<br/>%1$sAutomatically Upgrade to Enable Pretty Links Pro%2$s"
     5145msgstr ""
     5146
     5147#. translators: $1$s - Pretty Links plugin name; $2$s - WP.org review link; $3$s - WP.org review link.
     5148#: app/controllers/PrliAppController.php:672
     5149msgid "Enjoying %1$s? Please rate <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">&#9733;&#9733;&#9733;&#9733;&#9733;</a> on <a href=\"%3$s\" target=\"_blank\" rel=\"noopener\">WordPress.org</a> to help us spread the word. Thanks from the Pretty Links team!"
     5150msgstr ""
  • pretty-link/trunk/js/admin_popup.js

    r1601826 r2124183  
    99      },
    1010      closeOnBgClick: false,
    11       closeBtnInside: false
     11      closeBtnInside: false,
     12      mainClass: 'mfp-prli'
    1213    });
    1314  });
     
    7071    });
    7172  });
     73
     74  $('.prli-leave-feedback').on('click', function () {
     75    var _this = this;
     76
     77    prli_delay_popup('rating', function() {
     78      $(_this).trigger('prli-popup-delayed',['rating']);
     79      $.magnificPopup.close();
     80    });
     81  });
     82
     83  $('.prli-rating-enjoy-yes-popup').on('click', function (e) {
     84    e.preventDefault();
     85
     86    $('#prli-rating-stage-one').hide();
     87    $('#prli-rating-stage-two-yes').show();
     88  });
     89
     90  $('.prli-rating-enjoy-no-popup').on('click', function (e) {
     91    e.preventDefault();
     92
     93    $('#prli-rating-stage-one').hide();
     94    $('#prli-rating-stage-two-no').show();
     95  });
    7296});
    7397
  • pretty-link/trunk/js/admin_shared.js

    r1572224 r2124183  
    55jQuery(document).ready(function($) {
    66  $(".prli-social-button-checkboxes").sortable();
     7
     8  if ($.fn.magnificPopup) {
     9    $('.prli-update').magnificPopup({
     10      delegate: '.prli-image-popup',
     11      type: 'image',
     12      mainClass: 'mfp-prli',
     13      gallery: {
     14        enabled: true
     15      }
     16    });
     17  }
     18
     19  // Remove Status from Link quick edit
     20  if (window.pagenow === 'edit-pretty-link' && $('#bulk-edit').length) {
     21    $('#bulk-edit').find('select[name="_status"]').closest('.inline-edit-col').remove();
     22  }
    723});
    824
  • pretty-link/trunk/js/prli-admin-links.js

    r1575248 r2124183  
    6363    });
    6464
    65     $("#add_group_textbox").keypress(function(e) {
    66       // Apparently 13 is the enter key
    67       if(e.which == 13) {
    68         e.preventDefault();
    69 
    70         var add_new_group_data = {
    71           action: 'add_new_prli_group',
    72           new_group_name: $('#add_group_textbox').val(),
    73           _prli_nonce: $('#add_group_textbox').attr('prli_nonce')
    74         };
    75 
    76         $.post(ajaxurl, add_new_group_data, function(data) {
    77           if(data['status']=='success') {
    78             $('#group_dropdown').append(data['group_option']);
    79             $('#group_dropdown').val(data['group_id']);
    80             $('#add_group_textbox').val('');
    81             $("#add_group_textbox").blur();
    82             $("#add_group_message").addClass('updated');
    83             $("#add_group_message").text(data['message']);
    84             $("#add_group_message").show();
    85 
    86             $("#add_group_message").fadeOut(5000, function(e) {
    87               $("#add_group_message").removeClass('updated');
    88             });
    89           }
    90           else {
    91             $("#add_group_message").addClass('error');
    92             $("#add_group_message").text(data['message']);
    93 
    94             $("#add_group_message").fadeOut(5000, function(e) {
    95               $("#add_group_message").removeClass('error');
    96             });
    97           }
    98         });
    99       }
    100     });
    101 
    10265    $(".defaultText").focus(function(srcc) {
    10366      if ($(this).val() == $(this)[0].title) {
     
    11780    $(".defaultText").blur();
    11881
    119     $(".link_row").hover( function() {
    120         $(this).find(".link_actions").show();
    121       },
    122       function() {
    123         $(this).find(".link_actions").hide();
    124       });
    125 
    126     $('.prli_bulk_action_apply').click( function() {
    127       if($('.prli_bulk_action').val()=='edit') {
    128         if($('.link-action-checkbox:checkbox:checked').length > 0)
    129           $('#bulk-edit').slideDown('slow');
    130       }
    131       else if($('.prli_bulk_action').val()=='delete') {
    132         var confmsg = $(this).attr('data-confmsg');
    133         if(confirm(confmsg)) {
    134           var ids = $('.link-action-checkbox:checkbox:checked').map(function() {
    135                       return $(this).attr('data-id');
    136                     }).get().join(',');
    137           var delurl = $('.prli_bulk_action_apply').attr('data-url') +
    138                        window.location.search +
    139                        '&action=bulk-destroy' +
    140                        '&_wpnonce=' + $('.prli_bulk_action_apply').attr('data-wpnonce') +
    141                        '&ids=' + ids;
    142 
    143           window.location = delurl;
    144         }
    145       }
    146     });
    147 
    148     $('.bulk-edit-cancel').click( function() {
    149       $('#bulk-edit').slideUp('slow');
    150     });
    151 
    152     $('.bulk-edit-update').click( function() {
    153       var ids = $('.link-action-checkbox:checkbox:checked').map(function() {
    154                   return $(this).attr('data-id');
    155                 }).get().join(',');
    156       var editurl = $('.prli_bulk_action_apply').attr('data-url') +
    157                     window.location.search +
    158                     '&action=bulk-update' +
    159                     '&_wpnonce=' + $('.prli_bulk_action_apply').attr('data-wpnonce') +
    160                     '&ids=' + ids;
    161 
    162       $('.bulk-edit-select').each( function() {
    163         if($(this).val() != '##nochange##')
    164           editurl += '&' + $(this).attr('name') + '=' + encodeURIComponent($(this).val());
    165       });
    166 
    167       $('.bulk-edit-text').each( function() {
    168         editurl += '&' + $(this).attr('name') + '=' + encodeURIComponent($(this).val());
    169       });
    170 
    171       window.location = editurl;
    172     });
    173 
    174     $('.link-action-checkbox').change( function() {
    175       if($(this).prop('checked')==false)
    176         $('.select-all-link-action-checkboxes').prop('checked',false);
    177 
    178       $('#bulk-titles').html('');
    179       $('.link-action-checkbox:checkbox:checked').each( function() {
    180         var nid = $(this).attr('data-id');
    181         var ntitle = $(this).attr('data-title');
    182         $('#bulk-titles').append('<div id="ttle'+nid+'"><a data-id="'+nid+'" class="ntdelbutton" title="Remove From Bulk Edit">X</a>"'+ntitle+'"</div>');
    183         $('.ntdelbutton').click( function() {
    184           var nid = $(this).attr('data-id');
    185           $('.link-action-checkbox[data-id='+nid+']').prop('checked',false);
    186           $('.link-action-checkbox[data-id='+nid+']').trigger('change');
    187         });
    188       });
    189     });
    190 
    191     // Check all boxes when the select all box is checked, etc
    192     $('.select-all-link-action-checkboxes').change(function() {
    193       if($(this).prop('checked'))
    194         $('.link-action-checkbox').prop('checked',true);
    195       else
    196         $('.link-action-checkbox').prop('checked',false);
    197 
    198       $('.link-action-checkbox').trigger('change');
    199     });
    200 
    201     // Set the correct colspan for the bulk-edit form
    202     // This is necessary because in some cases, PLP adds a
    203     // keyword column to this table -- so it has to be dynamic
    204     $('.prli-edit-table td.colspanchange').attr('colspan', $('table.prli-edit-table thead tr th').length);
    20582
    20683    $('#prli_add_link_rotation').on('click', function(e) {
     
    20986    });
    21087
    211     //PAGE TOGGLING IN LIST MODE
    212     $('.prli-page-size').change(function() {
    213       window.location.href = $(this).data("url") + $(this).val();
     88    $('.prli_reset_pretty_link').on('click', function(e) {
     89      e.preventDefault();
     90
     91      if(confirm(PrliLinkList.reset_str)) {
     92        var args = {
     93          'action' : 'reset_pretty_link',
     94          'id' : $(this).data('id'),
     95          'security' : PrliLinkList.reset_security
     96        };
     97
     98        $.post( ajaxurl, args, function(data) {
     99          $('.clicks.column-clicks a#link_clicks_' + args.id).html('0/0');
     100
     101          // show message coming from the server indicating
     102          // whether or not the reset was successful or not
     103          alert(data.message);
     104        }, 'json' );
     105      }
    214106    });
     107
    215108  });
    216109})(jQuery);
  • pretty-link/trunk/js/tinymce_form_popup.js

    r1683659 r2124183  
    77  init : function() {
    88    //Used in our insert function for link text
    9     prli_selected_text = parent.tinymce.activeEditor.selection.getContent({format: 'text'});
     9    prliTinymceL10n.prli_selected_text = parent.tinymce.activeEditor.selection.getContent({format: 'text'});
    1010  },
    1111  insert_new : function() {
     
    2424    //Change vars to actual defaults if default was chosen
    2525    if(redirect == 'default') {
    26       redirect = default_redirect;
     26      redirect = prliTinymceL10n.default_redirect;
    2727    }
    2828    if(nofollow == 'default') {
    29       nofollow = default_nofollow;
     29      nofollow = prliTinymceL10n.default_nofollow;
    3030    }
    3131    if(tracking == 'default') {
    32       tracking = default_tracking;
     32      tracking = prliTinymceL10n.default_tracking;
    3333    }
    3434
     
    5959      jQuery("#insert_loading").fadeIn();
    6060
    61       jQuery.post(ajaxurl, data, function(response) {
     61      jQuery.post(prliTinymceL10n.ajaxurl, data, function(response) {
    6262        var trimmed_data = response.replace(/^\s+|\s+$/g, ''); //Trim whitespace
    6363
    6464        if(trimmed_data == 'true') {
    6565          var output = '';
    66           var pretty_link = home_url + slug;
     66          var pretty_link = prliTinymceL10n.home_url + slug;
    6767
    6868          //Set the link text to the link itself
     
    145145    setTimeout(function() {
    146146      //Nothing selected
    147       if(prli_selected_text.length === 0) {
     147      if(prliTinymceL10n.prli_selected_text.length === 0) {
    148148        $("#prli_insert_link_link_text").val("Click Here");
    149149        $("#existing_link_link_text").val("Click Here");
    150150      }
    151151      //If selected text is a link, make it the target URL
    152       else if(prli_selected_text.match(/https?:\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?/)) {
    153         $("#prli_insert_link_target").val(prli_selected_text);
     152      else if(prliTinymceL10n.prli_selected_text.match(/https?:\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?/)) {
     153        $("#prli_insert_link_target").val(prliTinymceL10n.prli_selected_text);
    154154        $("#prli_insert_link_link_text").val("Click Here");
    155155        $("#existing_link_link_text").val("Click Here");
    156156      //Show selected text
    157157      } else {
    158         $("#prli_insert_link_link_text").val(prli_selected_text);
    159         $("#existing_link_link_text").val(prli_selected_text);
     158        $("#prli_insert_link_link_text").val(prliTinymceL10n.prli_selected_text);
     159        $("#existing_link_link_text").val(prliTinymceL10n.prli_selected_text);
    160160      }
    161161    }, 200); //200ms
     
    178178      $("#prlitinymce-thinking").show();
    179179
    180       $.post(ajaxurl, data, function(response) {
     180      $.post(prliTinymceL10n.ajaxurl, data, function(response) {
    181181        var trimmed_data = response.replace(/^\s+|\s+$/g, ''); //Trim whitespace
    182182
     
    223223    //Load the autocomplete stuff
    224224    $('#prli_search_box').autocomplete({
    225       source: ajaxurl + "?action=prli_search_for_links",
     225      source: prliTinymceL10n.ajaxurl + "?action=prli_search_for_links",
    226226      minLength: 2,
    227227      select: function(event, ui) {
    228228        $("#existing_link_target").html(ui.item.target);
    229229        $("#existing_link_nofollow").val(ui.item.nofollow);
    230         $("#existing_link_slug").html(home_url + ui.item.slug);
     230        $("#existing_link_slug").html(prliTinymceL10n.home_url + ui.item.slug);
    231231      }
    232232    });
  • pretty-link/trunk/pretty-link.php

    r2108490 r2124183  
    44Plugin URI: https://prettylinks.com/pl/plugin-uri
    55Description: Shrink, track and share any URL on the Internet from your WordPress website!
    6 Version: 2.1.10
     6Version: 3.0.0
    77Author: Blair Williams
    88Author URI: http://blairwilliams.com
    99Text Domain: pretty-link
    10 Copyright: 2004-2017, Caseproof, LLC
     10Copyright: 2004-2019, Caseproof, LLC
    1111
    1212GNU General Public License, Free Software Foundation <http://creativecommons.org/licenses/GPL/2.0/>
     
    152152
    153153// i18n
    154 add_action('init', 'prli_load_textdomain');
     154add_action('plugins_loaded', 'prli_load_textdomain');
    155155function prli_load_textdomain() {
    156156  $plugin_dir = basename(dirname(__FILE__));
     
    168168global $prli_db_version, $plp_db_version;
    169169
    170 $prli_db_version = 18; // this is the version of the database we're moving to
    171 $plp_db_version = 7; // this is the version of the database we're moving to
     170$prli_db_version = 21; // this is the version of the database we're moving to
     171$plp_db_version = 9; // this is the version of the database we're moving to
    172172
    173173global $prli_app_controller;
  • pretty-link/trunk/readme.txt

    r2108490 r2124183  
    55Requires at least: 5.1
    66Tested up to: 5.2.2
    7 Stable tag: 2.1.10
     7Stable tag: 3.0.0
    88
    99Shrink, beautify, track, manage and share any URL on or off of your WordPress website. Create links that look how you want using your own domain name!
     
    1515[Upgrade to Pretty Links Pro](https://prettylinks.com/why-upgrade/ "Upgrade to Pretty Links Pro")
    1616
    17 *Pretty Links Pro* is a **significant upgrade** that adds many tools and redirection types that will allow you to create pretty links automatically, cloak links, replace keywords thoughout your blog with pretty links and much more.  You can learn more about *Pretty Links Pro* here:
     17*Pretty Links Pro* is a **significant upgrade** that adds many tools and redirection types that will allow you to create pretty links automatically, cloak links, replace keywords thoughout your blog with pretty links, categorize & tag your pretty links and much more.  You can learn more about *Pretty Links Pro* here:
    1818
    1919[Learn More](https://prettylinks.com/about "Learn More") | [Pricing](https://prettylinks.com/pricing/plans/ "Pricing")
     
    5252* Select Temporary (302 or 307) or Permanent (301) redirection for your pretty links
    5353* Cookie based system for tracking visitor activity across clicks
    54 * Organize Links into Groups
    5554* Create nofollow/noindex links
    5655* Turn tracking on / off on each link
     
    6665
    6766== Changelog ==
     67= 3.0.0 =
     68* Re-designed Admin UI especially the Admin Links UI including links listing, adding new links and editing links
     69* Added an Insert Pretty Link button for Gutenberg Paragraph Blocks
     70* Security fixes and hardening
     71* Fixed Slug is not Available Error
     72* Removed Pretty Links Groups (lite users will still be able to access legacy groups on the links listing page but pro users & lite users who upgrade to pro will have their groups migrated to become link categories)
     73* PRO ONLY: Added Pretty Link Categories
     74* PRO ONLY: Added Pretty Link Tags
     75* PRO ONLY: Fixed some issues with Pretty Link Imports and Exports
     76* Many other small fixes and enhancements
     77
    6878= 2.1.10 =
    6979* More security hardening
Note: See TracChangeset for help on using the changeset viewer.