<p><?php echo $search_sentence; ?> </p> <p><?php printf(yourls__('Display <strong>%1$s</strong> to <strong class="increment">%2$s</strong> of <strong class="increment">%3$s</strong> URLs'), $display_on_page, $max_on_page, $total_items); if ($total_items_clicks !== false) { echo ", " . sprintf(yourls_n('counting <strong>1</strong> click', 'counting <strong>%s</strong> clicks', $total_items_clicks), yourls_number_format_i18n($total_items_clicks)); } ?> .</p> <?php } ?> <p id="overall_tracking"><?php printf(yourls__('Overall, tracking <strong class="increment">%1$s</strong> links, <strong>%2$s</strong> clicks, and counting!'), yourls_number_format_i18n($total_urls), yourls_number_format_i18n($total_clicks)); ?> </p> <?php yourls_do_action('admin_page_before_form'); yourls_html_addnew(); // If bookmarklet, add message. Otherwise, hide hidden share box. if (!$is_bookmark) { yourls_share_box('', '', '', '', '', '', true); } else { echo '<script type="text/javascript">$(document).ready(function(){ feedback( "' . $return['message'] . '", "' . $return['status'] . '"); init_clipboard(); });</script>'; } yourls_do_action('admin_page_before_table');
/** * Return an "Add" row for the main table * * @return string HTML of the edit row */ function yourls_table_add_row($keyword, $url, $title = '', $ip, $clicks, $timestamp) { $keyword = yourls_sanitize_string($keyword); $id = yourls_string2htmlid($keyword); // used as HTML #id $shorturl = yourls_link($keyword); $statlink = yourls_statlink($keyword); $delete_link = yourls_nonce_url('delete-link_' . $id, yourls_add_query_arg(array('id' => $id, 'action' => 'delete', 'keyword' => $keyword), yourls_admin_url('admin-ajax.php'))); $edit_link = yourls_nonce_url('edit-link_' . $id, yourls_add_query_arg(array('id' => $id, 'action' => 'edit', 'keyword' => $keyword), yourls_admin_url('admin-ajax.php'))); // Action link buttons: the array $actions = array('stats' => array('href' => $statlink, 'id' => "statlink-{$id}", 'title' => yourls_esc_attr__('Stats'), 'anchor' => yourls__('Stats')), 'share' => array('href' => '', 'id' => "share-button-{$id}", 'title' => yourls_esc_attr__('Share'), 'anchor' => yourls__('Share'), 'onclick' => "toggle_share('{$id}');return false;"), 'edit' => array('href' => $edit_link, 'id' => "edit-button-{$id}", 'title' => yourls_esc_attr__('Edit'), 'anchor' => yourls__('Edit'), 'onclick' => "edit_link_display('{$id}');return false;"), 'delete' => array('href' => $delete_link, 'id' => "delete-button-{$id}", 'title' => yourls_esc_attr__('Delete'), 'anchor' => yourls__('Delete'), 'onclick' => "remove_link('{$id}');return false;")); $actions = yourls_apply_filter('table_add_row_action_array', $actions); // Action link buttons: the HTML $action_links = ''; foreach ($actions as $key => $action) { $onclick = isset($action['onclick']) ? 'onclick="' . $action['onclick'] . '"' : ''; $action_links .= sprintf('<a href="%s" id="%s" title="%s" class="%s" %s>%s</a>', $action['href'], $action['id'], $action['title'], 'button button_' . $key, $onclick, $action['anchor']); } $action_links = yourls_apply_filter('action_links', $action_links, $keyword, $url, $ip, $clicks, $timestamp); if (!$title) { $title = $url; } $protocol_warning = ''; if (!in_array(yourls_get_protocol($url), array('http://', 'https://'))) { $protocol_warning = yourls_apply_filter('add_row_protocol_warning', '<span class="warning" title="' . yourls__('Not a common link') . '">★</span>'); } // Row cells: the array $cells = array('keyword' => array('template' => '<a href="%shorturl%">%keyword_html%</a>', 'shorturl' => yourls_esc_url($shorturl), 'keyword_html' => yourls_esc_html($keyword)), 'url' => array('template' => '<a href="%long_url%" title="%title_attr%">%title_html%</a><br/><small>%warning%<a href="%long_url%">%long_url_html%</a></small>', 'long_url' => yourls_esc_url($url), 'title_attr' => yourls_esc_attr($title), 'title_html' => yourls_esc_html(yourls_trim_long_string($title)), 'long_url_html' => yourls_esc_html(yourls_trim_long_string($url)), 'warning' => $protocol_warning), 'timestamp' => array('template' => '%date%', 'date' => date('M d, Y H:i', $timestamp + YOURLS_HOURS_OFFSET * 3600)), 'ip' => array('template' => '%ip%', 'ip' => $ip), 'clicks' => array('template' => '%clicks%', 'clicks' => yourls_number_format_i18n($clicks, 0, '', '')), 'actions' => array('template' => '%actions% <input type="hidden" id="keyword_%id%" value="%keyword%"/>', 'actions' => $action_links, 'id' => $id, 'keyword' => $keyword)); $cells = yourls_apply_filter('table_add_row_cell_array', $cells, $keyword, $url, $title, $ip, $clicks, $timestamp); // Row cells: the HTML. Replace every %stuff% in 'template' with 'stuff' value. $row = "<tr id=\"id-{$id}\">"; foreach ($cells as $cell_id => $elements) { $callback = new yourls_table_add_row_callback($elements); $row .= sprintf('<td class="%s" id="%s">', $cell_id, $cell_id . '-' . $id); $row .= preg_replace_callback('/%([^%]+)?%/', array($callback, 'callback'), $elements['template']); // For the record, in PHP 5.3+ we don't need to introduce a class in order to pass additional parameters // to the callback function. Instead, we would have used the 'use' keyword : // $row .= preg_replace_callback( '/%([^%]+)?%/', function( $match ) use ( $elements ) { return $elements[ $match[1] ]; }, $elements['template'] ); $row .= '</td>'; } $row .= "</tr>"; $row = yourls_apply_filter('table_add_row', $row, $keyword, $url, $title, $ip, $clicks, $timestamp); return $row; }