/** * Fix compatibility issue with Sensei's select2 * * Sensei uses select2, just like Awesome Support. However, instead of loading select2's assets only where it is used * by Sensei, they load the assets everywhere, which messes us with our own instances of select2 if the versions of * select2 used by Awesome Support and Sensei don't match. * * This function will de-register Sensei's select2 on Awesome Support's pages. * * @since 3.3.2 * @return void */ function wpas_remove_sensei_select2_assets() { // Only make changes on our pages. Don't want to mess up even more with other stuff if (!wpas_is_plugin_page()) { return; } // Make sure that ACF Pro is installed and active if (!class_exists('Sensei_Main')) { return; } wp_deregister_script('sensei-core-select2'); wp_deregister_style('sensei-core-select2'); }
/** * Register and enqueues public-facing JavaScript files. * * @since 1.0.2 */ public function enqueue_scripts() { wp_register_script('wpas-plugin-script', WPAS_URL . 'assets/public/js/public-dist.js', array('jquery'), WPAS_VERSION, true); if (!is_admin() && wpas_is_plugin_page()) { wp_enqueue_script('wpas-plugin-script'); } wp_localize_script('wpas-plugin-script', 'wpas', $this->get_javascript_object()); }
/** * Add the custom file types to the WordPress whitelist * * @since 3.2 * * @param array $mimes Allowed mime types * * @return array Our custom mime types list */ public function custom_mime_types($mimes) { /* We don't want to allow those extra file types on other pages that the plugin ones */ if (!wpas_is_plugin_page()) { return $mimes; } $filetypes = explode(',', $this->get_allowed_filetypes()); if (!empty($filetypes)) { require_once WPAS_PATH . 'includes/file-uploader/mime-types.php'; foreach ($filetypes as $type) { $mimes[$type] = wpas_get_mime_type($type); } } return $mimes; }
/** * Add a custom admin footer text * * @since 3.2.8 * * @param string $text Footer text * * @return string */ function wpas_admin_footer_text($text) { if (!is_admin() || !wpas_is_plugin_page()) { return $text; } return sprintf(__('If you like Awesome Support <a %s>please leave us a %s rating</a>. Many thanks from ThemeAvenue in advance :)', 'awesome-support'), 'href="https://wordpress.org/support/view/plugin-reviews/awesome-support?rate=5#postform" target="_blank"', '★★★★★'); }
/** * Register and enqueue admin-specific JavaScript. * * @since 1.0.0 * @return null Return early if no settings page is registered. */ public function enqueue_admin_scripts() { if (!wpas_is_plugin_page()) { return; } if ('ticket' == get_post_type()) { wp_dequeue_script('autosave'); } $page = filter_input(INPUT_GET, 'page', FILTER_SANITIZE_STRING); $action = filter_input(INPUT_GET, 'action', FILTER_SANITIZE_STRING); if ('wpas-about' === $page) { wp_enqueue_script('wpas-admin-about-linkify', WPAS_URL . 'assets/admin/js/vendor/linkify.min.js', array('jquery'), WPAS_VERSION); wp_enqueue_script('wpas-admin-about-linkify-jquery', WPAS_URL . 'assets/admin/js/vendor/linkify-jquery.min.js', array('jquery'), WPAS_VERSION); wp_enqueue_script('wpas-admin-about-moment', WPAS_URL . 'assets/admin/js/vendor/moment.min.js', array('jquery'), WPAS_VERSION); wp_enqueue_script('wpas-admin-about-script', WPAS_URL . 'assets/admin/js/admin-about.js', array('jquery'), WPAS_VERSION); } wp_enqueue_script('wpas-select2', WPAS_URL . 'assets/admin/js/vendor/select2.min.js', array('jquery'), '4.0.0', true); wp_enqueue_script('wpas-admin-script', WPAS_URL . 'assets/admin/js/admin.js', array('jquery', 'wpas-select2'), WPAS_VERSION); wp_enqueue_script('wpas-admin-tabletojson', WPAS_URL . 'assets/admin/js/vendor/jquery.tabletojson.min.js', array('jquery'), WPAS_VERSION); if ('edit' === $action && 'ticket' == get_post_type()) { wp_enqueue_script('wpas-admin-reply', WPAS_URL . 'assets/admin/js/admin-reply.js', array('jquery'), WPAS_VERSION); wp_enqueue_script('wpas-autolinker', WPAS_URL . 'assets/public/vendor/Autolinker/Autolinker.min.js', null, '0.19.0', true); wp_localize_script('wpas-admin-reply', 'wpasL10n', array('alertDelete' => __('Are you sure you want to delete this reply?', 'awesome-support'), 'alertNoTinyMCE' => __('No instance of TinyMCE found. Please use wp_editor on this page at least once: http://codex.wordpress.org/Function_Reference/wp_editor', 'awesome-support'), 'alertNoContent' => __("You can't submit an empty reply", 'awesome-support'))); } }
/** * Register and enqueue admin-specific JavaScript. * * @since 1.0.0 * @return null Return early if no settings page is registered. */ public function enqueue_admin_scripts() { if (!wpas_is_plugin_page()) { return; } if ('ticket' == get_post_type()) { wp_dequeue_script('autosave'); } $page = filter_input(INPUT_GET, 'page', FILTER_SANITIZE_STRING); $action = filter_input(INPUT_GET, 'action', FILTER_SANITIZE_STRING); if ('wpas-about' === $page) { add_thickbox(); wp_enqueue_script('wpas-admin-about-script', WPAS_URL . 'assets/admin/js/admin-about.js', array('jquery'), WPAS_VERSION); } wp_enqueue_script('wpas-select2', WPAS_URL . 'assets/admin/js/vendor/select2.min.js', array('jquery'), '3.5.2', true); wp_enqueue_script('wpas-admin-script', WPAS_URL . 'assets/admin/js/admin.js', array('jquery', 'wpas-select2'), WPAS_VERSION); wp_enqueue_script('wpas-admin-tabletojson', WPAS_URL . 'assets/admin/js/vendor/jquery.tabletojson.min.js', array('jquery'), WPAS_VERSION); if ('edit' === $action && 'ticket' == get_post_type()) { wp_enqueue_script('wpas-admin-reply', WPAS_URL . 'assets/admin/js/admin-reply.js', array('jquery'), WPAS_VERSION); wp_localize_script('wpas-admin-reply', 'wpasL10n', array('alertDelete' => __('Are you sure you want to delete this reply?', 'wpas'), 'alertNoTinyMCE' => __('No instance of TinyMCE found. Please use wp_editor on this page at least once: http://codex.wordpress.org/Function_Reference/wp_editor', 'wpas'))); } }
/** * Register and enqueue admin-specific style sheet. * * @since 1.0.0 * @return null Return early if no settings page is registered. */ function wpas_enqueue_assets_back_end() { // Make sure we only enqueue on our plugin's pages if (wpas_is_plugin_page()) { // Styles wp_enqueue_style('wpas-select2'); wp_enqueue_style('wpas-flexboxgrid'); wp_enqueue_style('wpas-admin-styles'); if (isset($_GET['action']) && 'edit' === $_GET['action']) { wp_enqueue_style('wpas-simple-hint'); } // Scripts if ('ticket' == get_post_type()) { wp_dequeue_script('autosave'); } $page = filter_input(INPUT_GET, 'page', FILTER_SANITIZE_STRING); $action = filter_input(INPUT_GET, 'action', FILTER_SANITIZE_STRING); if ('wpas-about' === $page) { wp_enqueue_script('wpas-admin-about-linkify'); wp_enqueue_script('wpas-admin-about-linkify-jquery'); wp_enqueue_script('wpas-admin-about-moment'); wp_enqueue_script('wpas-admin-about-script'); } wp_enqueue_script('wpas-select2'); wp_enqueue_script('wpas-admin-script'); wp_enqueue_script('wpas-admin-tabletojson'); wp_enqueue_script('wpas-users'); wp_enqueue_script('wpas-admin-helpers_functions'); wp_enqueue_script('wpas-admin-upload'); if ('edit' === $action && 'ticket' == get_post_type()) { wp_enqueue_script('wpas-admin-reply'); wp_enqueue_script('wpas-autolinker'); } } }
/** * Add free addon notice * * After the plugin has been activated, we display a notice to admins telling them that they can get a free addon for * Awesome Support. * * @since 3.3.3 * @return void */ function wpas_free_addon_notice() { // Only show this message to admins if (!current_user_can('administrator')) { return; } // Don't show the notice if user already claimed the addon if (wpas_is_free_addon_page_dismissed()) { return; } // Only show the notice on the plugin pages if (!wpas_is_plugin_page()) { return; } // No need to show the notice on the free addon page itself if (isset($_GET['page']) && 'wpas-optin' === $_GET['page']) { return; } WPAS()->admin_notices->add_notice('updated', 'wpas_get_free_addon', wp_kses(sprintf(__('Hey! Did you know you can get a <strong>free add-on for unlimited sites</strong> (a $61.00 USD value) for Awesome Support? <a href="%1$s">Click here to read more</a>.', 'awesome-support'), add_query_arg(array('post_type' => 'ticket', 'page' => 'wpas-optin'), admin_url('edit.php'))), array('strong' => array(), 'a' => array('href' => array())))); }