__('Checkout Form', 'wp-ultimo'), // singular name of the listed records 'plural' => __('Checkout Forms', 'wp-ultimo'), // plural name of the listed records 'ajax' => true, // does this table support ajax? 'add_new' => array( 'url' => wu_get_form_url('add_new_checkout_form'), 'classes' => 'wubox', ), ) ); } /** * Displays the content of the product column. * * @since 2.0.0 * * @param WP_Ultimo\Models\Checkout_Form $item Checkout Form object. */ public function column_name($item): string { $url_atts = array( 'id' => $item->get_id(), 'slug' => $item->get_slug(), 'model' => 'checkout_form', ); $title = sprintf('%s', wu_network_admin_url('wp-ultimo-edit-checkout-form', $url_atts), $item->get_name()); $actions = array( 'edit' => sprintf('%s', wu_network_admin_url('wp-ultimo-edit-checkout-form', $url_atts), __('Edit', 'wp-ultimo')), 'duplicate' => sprintf( '%s', wu_network_admin_url( 'wp-ultimo-checkout-forms', array( 'action' => 'duplicate', 'id' => $item->get_id(), ) ), __('Duplicate', 'wp-ultimo') ), 'get_shortcode' => sprintf('%s', __('Shortcode', 'wp-ultimo'), wu_get_form_url('shortcode_checkout', $url_atts), __('Shortcode', 'wp-ultimo')), 'delete' => sprintf('%s', __('Delete', 'wp-ultimo'), wu_get_form_url('delete_modal', $url_atts), __('Delete', 'wp-ultimo')), ); return $title . $this->row_actions($actions); } /** * Displays the slug of the form. * * @since 2.0.0 * * @param WP_Ultimo\Models\Checkout_Form $item Checkout Form object. * @return string */ public function column_slug($item) { $slug = $item->get_slug(); return "{$slug}"; } /** * Displays the number pof steps and fields. * * @since 2.0.0 * * @param WP_Ultimo\Models\Checkout_Form $item Checkout Form object. */ public function column_steps($item): string { return sprintf(__('%1$d Step(s) and %2$d Field(s)', 'wp-ultimo'), $item->get_step_count(), $item->get_field_count()); } /** * Displays the form shortcode. * * @since 2.0.0 * * @param WP_Ultimo\Models\Checkout_Form $item Checkout Form object. */ public function column_shortcode($item): string { $button = sprintf( ' ', __('Copy to the Clipboard', 'wp-ultimo') ); return sprintf('', esc_attr($item->get_shortcode()), ''); } /** * Handles the bulk processing adding duplication * * @since 2.0.0 * @return void */ public function process_single_action() { $bulk_action = $this->current_action(); if ($bulk_action === 'duplicate') { $checkout_form_id = wu_request('id'); $checkout_form = wu_get_checkout_form($checkout_form_id); if ( ! $checkout_form) { WP_Ultimo()->notices->add(__('Checkout form not found.', 'wp-ultimo'), 'error', 'network-admin'); return; } $new_checkout_form = $checkout_form->duplicate(); $new_name = sprintf(__('Copy of %s', 'wp-ultimo'), $checkout_form->get_name()); $new_checkout_form->set_name($new_name); $new_checkout_form->set_slug(sanitize_title($new_name)); $new_checkout_form->set_date_created(wu_get_current_time('mysql', true)); $result = $new_checkout_form->save(); if (is_wp_error($result)) { WP_Ultimo()->notices->add($result->get_error_message(), 'error', 'network-admin'); return; } $redirect_url = wu_network_admin_url( 'wp-ultimo-edit-checkout-form', array( 'id' => $new_checkout_form->get_id(), 'updated' => 1, ) ); wp_redirect($redirect_url); exit; } } /** * Returns the list of columns for this particular List Table. * * @since 2.0.0 * @return array */ public function get_columns() { $columns = array( 'cb' => '', 'name' => __('Form Name', 'wp-ultimo'), 'slug' => __('Form Slug', 'wp-ultimo'), 'steps' => __('Steps', 'wp-ultimo'), 'id' => __('ID', 'wp-ultimo'), ); return $columns; } /** * Returns the filters for this page. * * @since 2.0.0 */ public function get_filters(): array { return array( 'filters' => array(), 'date_filters' => array(), ); } }