| @@ -119,17 +119,42 @@ | ||
| 119 | 119 | * |
| 120 | 120 | * @access private |
| 121 | 121 | */ |
| 122 | 122 | private function get_actions() { |
| 123 | - return apply_filters( | |
| 123 | + $actions = apply_filters( | |
| 124 | 124 | 'visualizer_action_buttons', |
| 125 | 125 | array( |
| 126 | - 'print' => __( 'Print', 'visualizer' ), | |
| 127 | - 'csv' => __( 'CSV', 'visualizer' ), | |
| 128 | - 'xls' => __( 'Excel', 'visualizer' ), | |
| 129 | - 'copy' => __( 'Copy', 'visualizer' ), | |
| 126 | + 'print' => array( | |
| 127 | + 'label' => esc_html__( 'Print', 'visualizer' ), | |
| 128 | + 'title' => esc_html__( 'Print Chart', 'visualizer' ), | |
| 129 | + ), | |
| 130 | + 'csv' => array( | |
| 131 | + 'label' => esc_html__( 'CSV', 'visualizer' ), | |
| 132 | + 'title' => esc_html__( 'Download as a CSV', 'visualizer' ), | |
| 133 | + ), | |
| 134 | + 'xls' => array( | |
| 135 | + 'label' => esc_html__( 'Excel', 'visualizer' ), | |
| 136 | + 'title' => esc_html__( 'Download as a spreadsheet', 'visualizer' ), | |
| 137 | + ), | |
| 138 | + 'copy' => array( | |
| 139 | + 'label' => esc_html__( 'Copy', 'visualizer' ), | |
| 140 | + 'title' => esc_html__( 'Copy data', 'visualizer' ), | |
| 141 | + ), | |
| 142 | + 'image' => array( | |
| 143 | + 'label' => esc_html__( 'Download', 'visualizer' ), | |
| 144 | + 'title' => esc_html__( 'Download as an image', 'visualizer' ), | |
| 145 | + ), | |
| 130 | 146 | ) |
| 131 | 147 | ); |
| 148 | + | |
| 149 | + // backward compatibility before label and title attributes were introduced. | |
| 150 | + if ( isset( $actions['edit'] ) && is_string( $actions['edit'] ) ) { | |
| 151 | + $actions['edit'] = array( | |
| 152 | + 'label' => esc_html__( 'Edit', 'visualizer' ), | |
| 153 | + 'title' => esc_html__( 'Edit data', 'visualizer' ), | |
| 154 | + ); | |
| 155 | + } | |
| 156 | + return $actions; | |
| 132 | 157 | } |
| 133 | 158 | |
| 134 | 159 | /** |
| 135 | 160 | * The print button |
| @@ -160,8 +185,23 @@ | ||
| 160 | 185 | break; |
| 161 | 186 | case 'xls': |
| 162 | 187 | $data = $this->_getDataAs( $chart_id, 'xls' ); |
| 163 | 188 | break; |
| 189 | + case 'image': | |
| 190 | + $settings = get_post_meta( $chart_id, Visualizer_Plugin::CF_SETTINGS, true ); | |
| 191 | + $title = 'visualizer#' . $chart_id; | |
| 192 | + if ( ! empty( $settings['title'] ) ) { | |
| 193 | + $title = $settings['title']; | |
| 194 | + } | |
| 195 | + // for ChartJS, title is an array. | |
| 196 | + if ( is_array( $title ) && isset( $title['text'] ) ) { | |
| 197 | + $title = $title['text']; | |
| 198 | + } | |
| 199 | + if ( empty( $title ) ) { | |
| 200 | + $title = 'visualizer#' . $chart_id; | |
| 201 | + } | |
| 202 | + $data = array( 'name' => $title ); | |
| 203 | + break; | |
| 164 | 204 | default: |
| 165 | 205 | $data = apply_filters( 'visualizer_action_data', $data, $chart_id, $type, $params, $this ); |
| 166 | 206 | break; |
| 167 | 207 | } |
| @@ -295,10 +335,11 @@ | ||
| 295 | 335 | $array = explode( ';', $action_type ); |
| 296 | 336 | $key = $array[0]; |
| 297 | 337 | $mime = end( $array ); |
| 298 | 338 | } |
| 299 | - $label = $actions[ $key ]; | |
| 300 | - $actions_div .= '<a href="#" class="visualizer-action visualizer-action-' . $key . '" data-visualizer-type="' . $key . '" data-visualizer-chart-id="' . $atts['id'] . '" data-visualizer-container-id="' . $id . '" data-visualizer-mime="' . $mime . '" title="' . $label . '" '; | |
| 339 | + $label = $actions[ $key ]['label']; | |
| 340 | + $title = $actions[ $key ]['title']; | |
| 341 | + $actions_div .= sprintf( '<a href="#" class="visualizer-action visualizer-action-%s" data-visualizer-type="%s" data-visualizer-chart-id="%s" data-visualizer-container-id="%s" data-visualizer-mime="%s" title="%s"', $key, $key, $atts['id'], $id, $mime, $title ); | |
| 301 | 342 | |
| 302 | 343 | if ( 'copy' === $key ) { |
| 303 | 344 | $copy = $this->_getDataAs( $atts['id'], 'csv' ); |
| 304 | 345 | $actions_div .= ' data-clipboard-text="' . esc_attr( $copy['csv'] ) . '"'; |
| @@ -333,9 +374,9 @@ | ||
| 333 | 374 | 'language' => $this->get_language(), |
| 334 | 375 | 'map_api_key' => get_option( 'visualizer-map-api-key' ), |
| 335 | 376 | 'rest_url' => version_compare( $wp_version, '4.7.0', '>=' ) ? rest_url( 'visualizer/v' . VISUALIZER_REST_VERSION . '/action/#id#/#type#/' ) : '', |
| 336 | 377 | 'i10n' => array( |
| 337 | - 'copied' => __( 'Copied!', 'visualizer' ), | |
| 378 | + 'copied' => __( 'The data has been copied to your clipboard. Hit Ctrl-V/Cmd-V in your spreadsheet editor to paste the data.', 'visualizer' ), | |
| 338 | 379 | ), |
| 339 | 380 | 'page_type' => 'frontend', |
| 340 | 381 | 'is_front' => true, |
| 341 | 382 | ) |