admin_page_hookfix ) {
return;
}
wp_register_style( 'wp-saio', WP_SAIO_URL . '/assets/admin/css/wp-saio.css', array(), WP_SAIO_VERSION );
wp_register_style( 'wp-saio-preview', WP_SAIO_URL . '/assets/home/css/wp-saio.css', array(), WP_SAIO_VERSION );
wp_register_style( 'ui-range', WP_SAIO_URL . '/assets/admin/css/ui-range.css', array(), WP_SAIO_VERSION );
wp_enqueue_style( 'wp-saio' );
wp_enqueue_style( 'wp-saio-preview' );
wp_style_add_data( 'wp-saio', 'rtl', 'replace' );
wp_style_add_data( 'wp-saio-preview', 'rtl', 'replace' );
wp_enqueue_style( 'ui-range' );
wp_enqueue_script( 'jquery-ui-sortable' );
wp_enqueue_style( 'wp-color-picker' );
wp_enqueue_script( 'wp-color-picker');
wp_enqueue_script( 'sortable', WP_SAIO_URL . '/assets/admin/js/Sortable.min.js', array(), '1.13.0', false );
// Load our React app
$asset_file = WP_SAIO_DIR . '/app/build/index.asset.php';
if ( ! file_exists( $asset_file ) ) {
return;
}
$asset = include $asset_file;
wp_register_script( 'wp-saio', WP_SAIO_URL . '/app/build/index.js', $asset['dependencies'], $asset['version'], true );
wp_enqueue_script( 'wp-saio' );
// wp_register_script( 'wp-saio-preview', WP_SAIO_URL . '/assets/home/js/wp-saio.min.js', array(), WP_SAIO_VERSION, false );
// wp_enqueue_script( 'wp-saio-preview' );
wp_enqueue_media();
wp_localize_script(
'wp-saio',
'wp_saio_object',
array(
'are_you_sure' => esc_html__( 'Are you sure you want to remove this app. All data will be erase?', 'support-chat' ),
'wp_saio_html_inputs' => json_encode( WpSaio::renderForm() ),
'add_media_text_title' => esc_html__( 'Choose Image', 'support-chat' ),
'add_media_text_button' => esc_html__( 'Choose Image', 'support-chat' ),
'translate' => array(
// Footer texts
'footerText' => esc_html__( 'We need your support to keep updating and improving the plugin. Please,', 'support-chat' ),
'reviewLink' => esc_html__( 'help us by leaving a good review', 'support-chat' ),
'thanks' => esc_html__( 'Thanks!', 'support-chat' ),
'thankYouText' => esc_html__( 'Thank you for using Support Chat from NinjaTeam', 'support-chat' ),
// Choose Apps Tab
'selectAppIcons' => esc_html__( 'Select app icons to add them to your list.', 'support-chat' ),
'addNewApp' => esc_html__( 'Add New App', 'support-chat' ),
'enterAppTitle' => esc_html__( 'Enter your app title', 'support-chat' ),
'uploadIcon' => esc_html__( 'Upload Icon', 'support-chat' ),
'yourAppIcon' => esc_html__( 'Your app icon/image', 'support-chat' ),
'settingsSavedSuccess' => esc_html__( 'Settings saved successfully!', 'support-chat' ),
'errorSavingSettings' => esc_html__( 'Error saving settings. Please try again.', 'support-chat' ),
'saving' => esc_html__( 'Saving...', 'support-chat' ),
'saveChanges' => esc_html__( 'Save Changes', 'support-chat' ),
// Design Tab
'settingStyleWidget' => esc_html__( 'Setting style for the floating widget.', 'support-chat' ),
'enablePlugin' => esc_html__( 'Enable plugin', 'support-chat' ),
'widgetPosition' => esc_html__( 'Widget position', 'support-chat' ),
'left' => esc_html__( 'Left', 'support-chat' ),
'right' => esc_html__( 'Right', 'support-chat' ),
'style' => esc_html__( 'Style', 'support-chat' ),
'redirect' => esc_html__( 'Redirect', 'support-chat' ),
'popup' => esc_html__( 'Popup', 'support-chat' ),
'tooltip' => esc_html__( 'Tooltip', 'support-chat' ),
'appName' => esc_html__( 'App Name', 'support-chat' ),
'appContent' => esc_html__( 'App Content', 'support-chat' ),
'paddingFromBottom' => esc_html__( 'Padding from bottom', 'support-chat' ),
'customIconAvatar' => esc_html__( 'Custom icon/avatar', 'support-chat' ),
'chooseImage' => esc_html__( 'Choose Image', 'support-chat' ),
'buttonStyle' => esc_html__( 'Button style', 'support-chat' ),
'contain' => esc_html__( 'Contain', 'support-chat' ),
'cover' => esc_html__( 'Cover', 'support-chat' ),
'buttonColor' => esc_html__( 'Button color', 'support-chat' ),
'designSettingsSavedSuccess' => esc_html__( 'Design settings saved successfully!', 'support-chat' ),
'errorSavingDesignSettings' => esc_html__( 'Error saving settings. Please try again.', 'support-chat' ),
// Display Tab
'settingTextStyleWidget' => esc_html__( 'Setting text and style for the floating widget.', 'support-chat' ),
'showOnDesktop' => esc_html__( 'Show on desktop', 'support-chat' ),
'showOnMobile' => esc_html__( 'Show on mobile', 'support-chat' ),
'display' => esc_html__( 'Display', 'support-chat' ),
'showOnAllPages' => esc_html__( 'Show on all pages', 'support-chat' ),
'showOnThesePages' => esc_html__( 'Show on these pages...', 'support-chat' ),
'hideOnThesePages' => esc_html__( 'Hide on these pages...', 'support-chat' ),
'all' => esc_html__( 'All', 'support-chat' ),
'displaySettingsSavedSuccess' => esc_html__( 'Display settings saved successfully!', 'support-chat' ),
'errorSavingDisplaySettings' => esc_html__( 'Error saving settings. Please try again.', 'support-chat' ),
// Tabs
'chooseApps' => esc_html__( 'Choose Apps', 'support-chat' ),
'design' => esc_html__( 'Design', 'support-chat' ),
'display' => esc_html__( 'Display', 'support-chat' ),
// App.jsx
'doYouNeedHelp' => esc_html__( 'Do you need help?', 'support-chat' ),
'thanksUsingNinjaTeam' => __( 'Thanks for using NinjaTeam\'s Products!', 'support-chat' ),
'contactSupport' => esc_html__( 'contact support', 'support-chat' ),
'rateUs' => esc_html__( 'rate us', 'support-chat' ),
'bestWishes' => esc_html__( 'Best wishes,', 'support-chat' ),
'kellyFromNinjaTeam' => esc_html__( 'Kelly from NinjaTeam', 'support-chat' ),
// Header
'clickToChat' => esc_html__( 'Click to Chat', 'support-chat' ),
'byNinjaTeam' => esc_html__( 'by NinjaTeam', 'support-chat' ),
// Toast messages
'close' => esc_html__( 'Close', 'support-chat' ),
),
'pages' => get_pages(),
'style' => get_option( 'wpsaio_style' ),
'ajax_url' => admin_url( 'admin-ajax.php' ),
'nonce' => wp_create_nonce( 'wpsaio_nonce' ),
'add_icon_text_title' => esc_html__( 'Choose Icon', 'support-chat' ),
'add_icon_text_button' => esc_html__( 'Choose Icon', 'support-chat' ),
'is_reviewed' => get_option( 'wpsaio_review_tracked', '0' ),
'plugin_url' => WP_SAIO_URL,
'enablePlugin' => get_option( 'wpsaio_enable_plugin', 1 ),
'widgetPosition' => get_option( 'wpsaio_widget_position', 'right' ),
'tooltip' => get_option( 'wpsaio_tooltip', 'appname' ),
'bottomDistance' => get_option( 'wpsaio_bottom_distance', 30 ),
'buttonIcon' => get_option( 'wpsaio_button_icon', '' ),
'buttonImage' => get_option( 'wpsaio_button_image', 'contain' ),
'buttonColor' => get_option( 'wpsaio_button_color', '' ),
'showOnDesktop' => get_option( 'wpsaio_show_on_desktop', 1 ),
'showOnMobile' => get_option( 'wpsaio_show_on_mobile', 1 ),
'displayCondition' => get_option( 'wpsaio_display_condition', 'allPages' ),
'includePages' => get_option( 'wpsaio_includes_pages', array() ),
'excludePages' => get_option( 'wpsaio_excludes_pages', array() ),
//choose apps page
'page_choose_apps' => [
'apps' => WpSaio::defaultAppsWithCustomApps(),
'app_order' => WpSaio::addedAppsOrder(),
],
'plugin_url' => WP_SAIO_URL,
)
);
}
public function registerEnqueue() {
if ( ! $this->isActivePlugin() ) {
return false;
}
wp_register_style( 'wp-saio', WP_SAIO_URL . '/assets/home/css/wp-saio.css', [], WP_SAIO_VERSION );
wp_enqueue_style( 'wp-saio' );
wp_style_add_data( 'wp-saio', 'rtl', 'replace' );
wp_register_script( 'wp-saio', WP_SAIO_URL . '/assets/home/js/wp-saio.min.js', array( 'jquery' ), WP_SAIO_VERSION, false );
wp_enqueue_script( 'wp-saio' );
wp_localize_script(
'wp-saio',
'wp_saio_object',
array(
'style' => get_option( 'wpsaio_style' ),
)
);
}
public function loadTextDomain() {
if ( function_exists( 'determine_locale' ) ) {
$locale = determine_locale();
} else {
$locale = is_admin() ? get_user_locale() : get_locale();
}
unload_textdomain( 'support-chat' );
load_textdomain( 'support-chat', WP_SAIO_DIR . '/languages/' . $locale . '.mo' );
// load_plugin_textdomain( 'support-chat', false, WP_SAIO_DIR . '/languages' );
}
public function registerAdminMenu() {
$page_title = esc_html__( 'Support Chat All In One', 'support-chat' );
$menu_title = esc_html__( 'Click to Chat', 'support-chat' );
$this->admin_page_hookfix = add_menu_page( $page_title, $menu_title, 'manage_options', $this->main_menu_slug, array( $this, 'wpSaioMenuCallBack' ), WP_SAIO_URL . '/assets/admin/img/support-icon.svg' );
}
// public function wpsaioLoadMainMenu() {
// global $plugin_page;
// $data = array();
// if ( isset( $_POST['save-wp-saio'] ) && isset( $_POST['data'] ) ) {
// $_data = WpSaioHelper::sanitize_array( $_POST['data'] );
// foreach ( $_data as $k => $v ) {
// $data[ $k ]['params'] = array();
// foreach ( $v as $k2 => $v2 ) {
// $data[ $k ]['params'][ $k2 ] = wp_unslash( trim( $v2 ) );
// }
// }
// update_option( 'njt_wp_saio', $data );
// wp_safe_redirect(
// esc_url(
// add_query_arg( array( 'page' => $this->main_menu_slug ), admin_url( 'admin.php' ) )
// )
// );
// }
// }
public function removeAdminNotices() {
$current_screen = get_current_screen();
if( $current_screen->id !== 'toplevel_page_wp-support-all-in-one' ) {
return;
}
remove_all_actions( 'admin_notices' );
remove_all_actions( 'all_admin_notices' );
remove_all_actions( 'user_admin_notices' );
remove_all_actions( 'network_admin_notices' );
}
public function wpFooter() {
if ( ! $this->isActivePlugin() ) {
return;
}
$icon_bg_color = get_option( 'wpsaio_button_color', '' );
$btn_icon = get_option( 'wpsaio_button_icon', '' );
$btn_image = get_option( 'wpsaio_button_image', 'contain' );
$data = array(
'buttons' => WpSaio::generateFrontendButtons(),
'contents' => do_shortcode( implode( '', WpSaio::renderShortcodes() ) ),
'icon_bg_color' => $icon_bg_color,
'btn_icon' => $btn_icon,
'btn_image' => $btn_image,
);
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
echo WpSaioView::load( 'home.main', $data );
}
private function isActivePlugin() {
return ( get_option( 'wpsaio_enable_plugin' ) == 1 );
}
public function wpSaioMenuCallBack() {
?>
'boolean', 'sanitize_callback' => 'sanitize_text_field' ) );
register_setting( 'wpsaio', 'wpsaio_style', array( 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field' ) );
register_setting( 'wpsaio', 'wpsaio_tooltip', array( 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field' ) );
register_setting( 'wpsaio', 'wpsaio_widget_position', array( 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field' ) );
register_setting( 'wpsaio', 'wpsaio_bottom_distance', array( 'type' => 'integer', 'sanitize_callback' => 'sanitize_text_field' ) );
register_setting( 'wpsaio', 'wpsaio_button_icon', array( 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field' ) );
register_setting( 'wpsaio', 'wpsaio_button_color', array( 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field' ) );
}
public static function activate() {
$installed = get_option( 'wpsaio_enable_plugin' );
if ( ! $installed ) {
update_option( 'wpsaio_enable_plugin', 1 );
update_option( 'wpsaio_style', 'redirect' );
update_option( 'wpsaio_tooltip', 'appname' );
update_option( 'wpsaio_widget_position', 'right' );
update_option( 'wpsaio_button_image', 'contain' );
}
}
public static function deactivate() {
}
public function settings_link( $link ) {
// add custom link
$setting_link = 'Settings';
array_unshift( $link, $setting_link );
return $link;
}
}