is_agent && $current_user->agent->unresolved_count > 0 ) {
$count_str = ' ' . $current_user->agent->unresolved_count . '';
}
add_menu_page(
esc_attr__( 'Support', 'supportcandy' ),
esc_attr__( 'Support', 'supportcandy' ) . $count_str,
'wpsc_agent',
'wpsc-tickets',
array( 'WPSC_Tickets', 'layout' ),
'dashicons-sos',
25
);
do_action( 'wpsc_before_setting_admin_menu' );
$menu_slugs = array(
'wpsc-tickets',
'wpsc-ai-chatbot',
'wpsc-archive-tickets',
'wpsc-ai-assistant',
'wpsc-customers',
'wpsc-support-agents',
'wpsc-ticket-form',
'wpsc-ticket-list',
'wpsc-email-notifications',
'wpsc-canned-reply',
'wpsc-reports',
'wpsc-customer-feedback',
'wpsc-settings',
'wpsc-license',
'wpsc-add-ons',
'wpsc-other-plugins',
'wpsc-task-manager',
'wpsc-recent-activities',
);
$menu_slugs = apply_filters( 'wpsc_admin_menu_slugs', $menu_slugs );
$admin_submenus = array(
array(
'parent_slug' => 'wpsc-tickets',
'page_title' => 'Ticket List',
'menu_title' => 'Tickets',
'capability' => 'wpsc_agent',
'menu_slug' => 'wpsc-tickets',
'callback' => array( 'WPSC_Tickets', 'layout' ),
),
array(
'parent_slug' => 'wpsc-tickets',
'page_title' => 'Archived',
'menu_title' => 'Archived',
'capability' => 'wpsc_agent',
'menu_slug' => 'wpsc-archive-tickets',
'callback' => array( 'WPSC_Archive_Ticket_List', 'layout' ),
),
array(
'parent_slug' => 'wpsc-tickets',
'page_title' => 'Customers',
'menu_title' => 'Customers',
'capability' => 'manage_options',
'menu_slug' => 'wpsc-customers',
'callback' => array( 'WPSC_Customers', 'layout' ),
),
array(
'parent_slug' => 'wpsc-tickets',
'page_title' => 'Support Agents',
'menu_title' => 'Support Agents',
'capability' => 'manage_options',
'menu_slug' => 'wpsc-support-agents',
'callback' => array( 'WPSC_Support_Agents', 'layout' ),
),
array(
'parent_slug' => 'wpsc-tickets',
'page_title' => 'Custom Fields',
'menu_title' => 'Custom Fields',
'capability' => 'manage_options',
'menu_slug' => 'wpsc-ticket-form',
'callback' => array( 'WPSC_CF_Settings', 'layout' ),
),
array(
'parent_slug' => 'wpsc-tickets',
'page_title' => 'Ticket List',
'menu_title' => 'Ticket List',
'capability' => 'manage_options',
'menu_slug' => 'wpsc-ticket-list',
'callback' => array( 'WPSC_Ticket_List_Settings', 'layout' ),
),
array(
'parent_slug' => 'wpsc-tickets',
'page_title' => 'Email Notifications',
'menu_title' => 'Email Notifications',
'capability' => 'manage_options',
'menu_slug' => 'wpsc-email-notifications',
'callback' => array( 'WPSC_EN_Settings', 'layout' ),
),
array(
'parent_slug' => 'wpsc-tickets',
'page_title' => 'Settings',
'menu_title' => 'Settings',
'capability' => 'manage_options',
'menu_slug' => 'wpsc-settings',
'callback' => array( 'WPSC_Settings', 'layout' ),
),
array(
'parent_slug' => 'wpsc-tickets',
'page_title' => 'Licenses',
'menu_title' => 'Licenses',
'capability' => 'manage_options',
'menu_slug' => 'wpsc-license',
'callback' => array( 'WPSC_License', 'layout' ),
),
array(
'parent_slug' => 'wpsc-tickets',
'page_title' => 'Pro Features',
'menu_title' => 'Pro Features',
'capability' => 'manage_options',
'menu_slug' => 'wpsc-add-ons',
'callback' => array( 'WPSC_Addons', 'layout' ),
),
array(
'parent_slug' => 'wpsc-tickets',
'page_title' => 'Other Plugins',
'menu_title' => 'Other Plugins',
'capability' => 'manage_options',
'menu_slug' => 'wpsc-other-plugins',
'callback' => array( 'WPSC_Other_Plugins', 'layout' ),
),
array(
'parent_slug' => ' ',
'page_title' => 'Task Manager',
'menu_title' => '',
'capability' => 'manage_options',
'menu_slug' => 'wpsc - task - manager',
'callback' => array( 'WPSC_Task_Scheduler', 'perform_manual_scheduler' ),
),
array(
'parent_slug' => ' ',
'page_title' => 'Recent Activites',
'menu_title' => '',
'capability' => 'manage_options',
'menu_slug' => 'wpsc-recent-activities',
'callback' => array( 'WPSC_RA_Logs', 'layout' ),
),
);
$admin_submenus = apply_filters( 'wpsc_admin_submenus_data', $admin_submenus );
// Create a lookup array for submenus to improve performance.
$submenu_lookup = array_column( $admin_submenus, null, 'menu_slug' );
foreach ( $menu_slugs as $menu_slug ) {
// Menu slug not registered.
if ( ! isset( $submenu_lookup[ $menu_slug ] ) ) {
continue;
}
// Archive menu permission.
if ( 'wpsc-archive-tickets' === $menu_slug &&
! ( $current_user->is_agent && ! empty( $current_user->agent ) && $current_user->agent->has_cap( 'at-access' ) ) ) {
continue;
}
$submenu = $submenu_lookup[ $menu_slug ];
// Validate required keys.
if ( empty( $submenu['parent_slug'] ) || empty( $submenu['page_title'] ) || empty( $submenu['menu_slug'] ) || empty( $submenu['callback'] ) ) {
continue;
}
add_submenu_page(
(string) $submenu['parent_slug'],
esc_attr( $submenu['page_title'] ),
wp_kses_post( $submenu['menu_title'] ?? '' ),
$submenu['capability'] ?? 'manage_options',
(string) $submenu['menu_slug'],
$submenu['callback']
);
}
}
/**
* Get localization data for the admin scripts
*
* @return string
*/
private static function get_localization_data() {
$gs = get_option( 'wpsc-gs-general' );
$file_settings = get_option( 'wpsc-gs-file-attachments' );
$localizations = array(
'ajax_url' => admin_url( 'admin-ajax.php' ),
'plugin_url' => WPSC_PLUGIN_URL,
'version' => WPSC_VERSION,
'loader_html' => WPSC_Framework::loader_html(),
'inline_loader' => WPSC_Framework::inline_loader(),
'is_frontend' => 0,
'reply_form_position' => $gs['reply-form-position'],
'allowed_file_extensions' => array_map( 'trim', array_map( 'strtolower', explode( ',', $file_settings['allowed-file-extensions'] ) ) ),
'nonce' => wp_create_nonce( 'general' ),
'translations' => array(
'req_fields_error' => esc_attr__( 'Required fields can not be empty!', 'supportcandy' ),
'submit_option_error' => esc_attr__( 'Please submit the option!', 'supportcandy' ),
'datatables' => array(
'emptyTable' => esc_attr__( 'No Records', 'supportcandy' ),
'zeroRecords' => esc_attr__( 'No Records', 'supportcandy' ),
'info' => sprintf(
/* translators: e.g. Showing 1 to 20 of 300 records */
esc_attr__( 'Showing %1$s to %2$s of %3$s records', 'supportcandy' ),
'_START_',
'_END_',
'_TOTAL_'
),
'infoEmpty' => '',
'loadingRecords' => '',
'processing' => '',
'infoFiltered' => '',
'search' => esc_attr__( 'Search:', 'supportcandy' ),
'paginate' => array(
'first' => esc_attr__( 'First', 'supportcandy' ),
'previous' => esc_attr__( 'Previous', 'supportcandy' ),
'next' => esc_attr__( 'Next', 'supportcandy' ),
'last' => esc_attr__( 'Last', 'supportcandy' ),
),
),
),
'temp' => array(),
'home_url' => home_url(),
);
return apply_filters( 'wpsc_admin_localizations', $localizations );
}
}
endif;
WPSC_Admin::init();