/** * Callback to eliminate any non-registered style * * @since 1.17 Moved to GravityView_Admin_No_Conflict class * * @return void */ function no_conflict_styles() { global $wp_styles; if (!gravityview_is_admin_page()) { return; } // Dequeue other jQuery styles even if no-conflict is off. // Terrible-looking tabs help no one. if (!empty($wp_styles->registered)) { foreach ($wp_styles->registered as $key => $style) { if (preg_match('/^(?:wp\\-)?jquery/ism', $key)) { wp_dequeue_style($key); } } } $no_conflict_mode = GravityView_Settings::getSetting('no-conflict-mode'); // If no conflict is off, jQuery will suffice. if (empty($no_conflict_mode)) { return; } $wp_allowed_styles = array('admin-bar', 'colors', 'ie', 'wp-auth-check', 'media-views', 'thickbox', 'dashicons', 'wp-jquery-ui-dialog', 'jquery-ui-sortable', 'gravityview_settings', 'jquery-qtip.js'); $this->remove_conflicts($wp_styles, $wp_allowed_styles, 'styles'); /** * @action `gravityview_remove_conflicts_after` Runs after no-conflict styles are removed. You can re-add styles here. */ do_action('gravityview_remove_conflicts_after'); }
/** * Remove the WooThemes metabox on new page * @since 1.15.2 */ function remove_meta_box() { global $pagenow; $gv_page = gravityview_is_admin_page('', 'single'); // New View or Edit View page if ($gv_page && $pagenow === 'post-new.php') { remove_meta_box('woothemes-settings', 'gravityview', 'normal'); } }
/** * @inheritDoc * @copydoc GravityView_Plugin_and_Theme_Hooks::add_hooks() * @since 1.15.2 */ protected function add_hooks() { parent::add_hooks(); if (gravityview_is_admin_page()) { // Make Yoast metabox go down to the bottom please. add_filter('wpseo_metabox_prio', array($this, '__return_low')); // Prevent the SEO from being checked. Eesh. add_filter('wpseo_use_page_analysis', '__return_false'); // WordPress SEO Plugin add_filter('option_wpseo_titles', array($this, 'hide_wordpress_seo_metabox')); } }
/** * When the status transient expires (or is deleted on activation), re-check the status * * @since 1.17 * * @return void */ public function refresh_license_status() { // Only perform on GravityView pages if (!gravityview_is_admin_page()) { return; } // The transient is fresh; don't fetch. if ($status = get_transient(self::status_transient_key)) { return; } $data = array('edd_action' => 'check_license', 'license' => trim($this->Addon->get_app_setting('license_key')), 'update' => true, 'format' => 'object', 'field_id' => 'refresh_license_status'); $license_call = GravityView_Settings::get_instance()->get_license_handler()->license_call($data); do_action('gravityview_log_debug', __METHOD__ . ': Refreshed the license.', $license_call); }
/** * Enqueue Support Port script if user has it enabled and we're on a GravityView plugin page * * @uses gravityview_is_admin_page() * @uses wp_enqueue_script() * @since 1.15 * * @return void */ public static function maybe_enqueue_script($hook) { global $pagenow; // Don't show if not GravityView page, or if we're on the Widgets page if (!gravityview_is_admin_page($hook) || $pagenow === 'widgets.php') { return; } /** * @filter `gravityview/support_port/display` Whether to display Support Port * @since 1.15 * @param boolean $display_beacon Default: `true` */ $display_support_port = apply_filters('gravityview/support_port/display', self::show_for_user()); if (empty($display_support_port)) { do_action('gravityview_log_debug', __METHOD__ . ' - Not showing Support Port'); return; } $script_debug = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min'; wp_enqueue_script('gravityview-support', plugins_url('assets/js/support' . $script_debug . '.js', GRAVITYVIEW_FILE), array(), GravityView_Plugin::version, true); self::_localize_script(); }
/** * Add script to Views edit screen (admin) * @param mixed $hook */ public function add_scripts_and_styles($hook) { global $pagenow; // Don't process any scripts below here if it's not a GravityView page or the widgets screen if (!gravityview_is_admin_page($hook) && 'widgets.php' !== $pagenow) { return; } $script_min = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min'; $script_source = empty($script_min) ? '/source' : ''; wp_enqueue_script('gravityview_searchwidget_admin', plugins_url('assets/js' . $script_source . '/admin-search-widget' . $script_min . '.js', __FILE__), array('jquery', 'gravityview_views_scripts'), GravityView_Plugin::version); /** * Input Type labels l10n * @see admin-search-widget.js (getSelectInput) * @var array */ $input_labels = array('input_text' => esc_html__('Text', 'gravityview'), 'date' => esc_html__('Date', 'gravityview'), 'select' => esc_html__('Select', 'gravityview'), 'multiselect' => esc_html__('Select (multiple values)', 'gravityview'), 'radio' => esc_html__('Radio', 'gravityview'), 'checkbox' => esc_html__('Checkbox', 'gravityview'), 'single_checkbox' => esc_html__('Checkbox', 'gravityview'), 'link' => esc_html__('Links', 'gravityview'), 'date_range' => esc_html__('Date range', 'gravityview')); /** * Input Type groups * @see admin-search-widget.js (getSelectInput) * @var array */ $input_types = array('text' => array('input_text'), 'address' => array('input_text'), 'date' => array('date', 'date_range'), 'boolean' => array('single_checkbox'), 'select' => array('select', 'radio', 'link'), 'multi' => array('select', 'multiselect', 'radio', 'checkbox', 'link')); wp_localize_script('gravityview_searchwidget_admin', 'gvSearchVar', array('nonce' => wp_create_nonce('gravityview_ajaxsearchwidget'), 'label_nofields' => esc_html__('No search fields configured yet.', 'gravityview'), 'label_addfield' => esc_html__('Add Search Field', 'gravityview'), 'label_searchfield' => esc_html__('Search Field', 'gravityview'), 'label_inputtype' => esc_html__('Input Type', 'gravityview'), 'input_labels' => json_encode($input_labels), 'input_types' => json_encode($input_types))); }
function add_other_metaboxes() { global $pagenow; if (!gravityview_is_admin_page()) { return; } // Genesis if (function_exists('genesis_inpost_layout_box') && $pagenow !== 'post-new.php') { // Add back in Genesis meta box add_meta_box('genesis_inpost_layout_box', __('Layout Settings', 'gravityview'), 'genesis_inpost_layout_box', 'gravityview', 'advanced', 'default'); } }
/** * Enqueue scripts and styles at Views editor * * @access public * @param mixed $hook * @return void */ static function add_scripts_and_styles($hook) { global $plugin_page, $pagenow; $is_widgets_page = $pagenow === 'widgets.php'; // Add the GV font (with the Astronaut) wp_enqueue_style('gravityview_global', plugins_url('assets/css/admin-global.css', GRAVITYVIEW_FILE), array(), GravityView_Plugin::version); wp_register_script('gravityview-jquery-cookie', plugins_url('assets/lib/jquery.cookie/jquery.cookie.min.js', GRAVITYVIEW_FILE), array('jquery'), GravityView_Plugin::version, true); // Don't process any scripts below here if it's not a GravityView page. if (!gravityview_is_admin_page($hook) && !$is_widgets_page) { return; } // Only enqueue the following on single pages if (gravityview_is_admin_page($hook, 'single') || $is_widgets_page) { wp_enqueue_script('jquery-ui-datepicker'); wp_enqueue_style('gravityview_views_datepicker', plugins_url('assets/css/admin-datepicker.css', GRAVITYVIEW_FILE), GravityView_Plugin::version); $script_debug = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min'; //enqueue scripts wp_enqueue_script('gravityview_views_scripts', plugins_url('assets/js/admin-views' . $script_debug . '.js', GRAVITYVIEW_FILE), array('jquery-ui-tabs', 'jquery-ui-draggable', 'jquery-ui-droppable', 'jquery-ui-sortable', 'jquery-ui-tooltip', 'jquery-ui-dialog', 'gravityview-jquery-cookie', 'jquery-ui-datepicker', 'underscore'), GravityView_Plugin::version); wp_localize_script('gravityview_views_scripts', 'gvGlobals', array('cookiepath' => COOKIEPATH, 'nonce' => wp_create_nonce('gravityview_ajaxviews'), 'label_viewname' => __('Enter View name here', 'gravityview'), 'label_close' => __('Close', 'gravityview'), 'label_cancel' => __('Cancel', 'gravityview'), 'label_continue' => __('Continue', 'gravityview'), 'label_ok' => __('Ok', 'gravityview'), 'label_publisherror' => __('Error while creating the View for you. Check the settings or contact GravityView support.', 'gravityview'), 'loading_text' => esc_html__('Loading…', 'gravityview'), 'loading_error' => esc_html__('There was an error loading dynamic content.', 'gravityview'), 'field_loaderror' => __('Error while adding the field. Please try again or contact GravityView support.', 'gravityview'), 'remove_all_fields' => __('Would you like to remove all fields in this zone? (You are seeing this message because you were holding down the ALT key)', 'gravityview'))); wp_enqueue_style('gravityview_views_styles', plugins_url('assets/css/admin-views.css', GRAVITYVIEW_FILE), array('dashicons', 'wp-jquery-ui-dialog'), GravityView_Plugin::version); self::enqueue_gravity_forms_scripts(); } // End single page }
/** * Display a notice if the plugin is inactive. * @return void */ function license_key_notice() { // Show license notice on all GV pages, except for settings page if (gravityview_is_admin_page('', 'settings')) { return; } $license_status = self::getSetting('license_key_status'); $license_id = self::getSetting('license_key'); $license_id = empty($license_id) ? 'license' : $license_id; $message = esc_html__('Your GravityView license %s. This means you’re missing out on updates and support! %sActivate your license%s or %sget a license here%s.', 'gravityview'); $title = __('Inactive License', 'gravityview'); $status = ''; switch ($license_status) { case 'invalid': $title = __('Invalid License', 'gravityview'); $status = __('is invalid', 'gravityview'); break; case 'deactivated': $status = __('is inactive', 'gravityview'); break; case 'site_inactive': $status = __('has not been activated', 'gravityview'); break; } $message = sprintf($message, $status, '<a href="' . admin_url('edit.php?post_type=gravityview&page=gravityview_settings') . '">', '</a>', '<a href="https://gravityview.co/pricing/">', '</a>'); if (!empty($status)) { GravityView_Admin::add_notice(array('message' => $message, 'class' => 'updated', 'title' => $title, 'dismiss' => sha1($license_status . '_' . $license_id))); } }
/** * Display a notice if the plugin is inactive. * @return void */ function license_key_notice() { // Only show on GravityView pages if (!gravityview_is_admin_page()) { return; } $license_status = self::getSetting('license_key_status'); $license_id = self::getSetting('license_key'); $license_id = empty($license_id) ? 'license' : $license_id; $message = esc_html__('Your GravityView license %s. This means you’re missing out on updates and support! %sActivate your license%s or %sget a license here%s.', 'gravityview'); /** * I wanted to remove the period from after the buttons in the string, * but didn't want to mess up the translation strings for the translators. */ $message = mb_substr($message, 0, mb_strlen($message) - 1); $title = __('Inactive License', 'gravityview'); $status = ''; $update_below = false; $primary_button_link = admin_url('edit.php?post_type=gravityview&page=gravityview_settings'); switch ($license_status) { /** @since 1.17 */ case 'expired': $title = __('Expired License', 'gravityview'); $status = 'expired'; $message = $this->get_license_handler()->strings('expired', self::getSetting('license_key_response')); break; case 'invalid': $title = __('Invalid License', 'gravityview'); $status = __('is invalid', 'gravityview'); break; case 'deactivated': $status = __('is inactive', 'gravityview'); $update_below = __('Activate your license key below.', 'gravityview'); break; /** @noinspection PhpMissingBreakStatementInspection */ /** @noinspection PhpMissingBreakStatementInspection */ case '': $license_status = 'site_inactive'; // break intentionally left blank // break intentionally left blank case 'inactive': case 'site_inactive': $status = __('has not been activated', 'gravityview'); $update_below = __('Activate your license key below.', 'gravityview'); break; } $url = 'https://gravityview.co/pricing/?utm_source=admin_notice&utm_medium=admin&utm_content=' . $license_status . '&utm_campaign=Admin%20Notice'; // Show a different notice on settings page for inactive licenses (hide the buttons) if ($update_below && gravityview_is_admin_page('', 'settings')) { $message = sprintf($message, $status, '<div class="hidden">', '', '', '</div><a href="#" onclick="jQuery(\'#license_key\').focus(); return false;">' . $update_below . '</a>'); } else { $message = sprintf($message, $status, "\n\n" . '<a href="' . esc_url($primary_button_link) . '" class="button button-primary">', '</a>', '<a href="' . esc_url($url) . '" class="button button-secondary">', '</a>'); } if (!empty($status)) { GravityView_Admin_Notices::add_notice(array('message' => $message, 'class' => 'updated', 'title' => $title, 'cap' => 'gravityview_edit_settings', 'dismiss' => sha1($license_status . '_' . $license_id))); } }
/** * Output the script necessary for the drop-down to work * @param string $hook Admin page $pagenow string * @return void */ function print_javascript($hook) { global $post; // Don't process any scripts below here if it's not a GravityView page. if (!gravityview_is_admin_page($hook) || empty($post->ID)) { return; } ?> <style type="text/css"> #entry_filters_warning { display: none; } #gform-no-filters { padding: 1em 0; cursor: pointer; width: 100%; } #gform-no-filters img { float:right; margin: 2px .25em; } #gv-advanced-filter .gform-field-filter { margin: .5em 0; } /** Text input filter */ #gv-advanced-filter input.gform-filter-value, #gv-advanced-filter select { margin: 0 .3em; width: auto; max-width: 32%; } #gv-advanced-filter .gform-field-filter .gform-add { margin: 0 5px 0 2px; } #gv-advanced-filter h3 { margin-bottom: .5em; padding-left: 0; } #gv-advanced-filter .description { margin-bottom: .5em; } </style> <?php }
/** * Display a notice if the plugin is inactive. * @return void */ function license_key_notice() { // Show license notice on all GV pages, except for settings page if (gravityview_is_admin_page('', 'settings')) { return; } $license_status = self::getSetting('license_key_status'); $license_id = self::getSetting('license_key'); $license_id = empty($license_id) ? 'license' : $license_id; $message = esc_html__('Your GravityView license %s. This means you’re missing out on updates and support! %sActivate your license%s or %sget a license here%s.', 'gravityview'); $title = __('Inactive License', 'gravityview'); $status = ''; switch ($license_status) { case 'invalid': $title = __('Invalid License', 'gravityview'); $status = __('is invalid', 'gravityview'); break; case 'deactivated': $status = __('is inactive', 'gravityview'); break; /** @noinspection PhpMissingBreakStatementInspection */ /** @noinspection PhpMissingBreakStatementInspection */ case '': $license_status = 'site_inactive'; // break intentionally left blank // break intentionally left blank case 'site_inactive': $status = __('has not been activated', 'gravityview'); break; } $url = 'https://gravityview.co/pricing/?utm_source=admin_notice&utm_medium=admin&utm_content=' . $license_status . '&utm_campaign=Admin%20Notice'; $message = sprintf($message, $status, "\n\n" . '<a href="' . admin_url('edit.php?post_type=gravityview&page=gravityview_settings') . '" class="button button-primary">', '</a>', '<a href="' . esc_url($url) . '" class="button button-secondary">', '</a>'); if (!empty($status)) { GravityView_Admin_Notices::add_notice(array('message' => $message, 'class' => 'updated', 'title' => $title, 'dismiss' => sha1($license_status . '_' . $license_id))); } }
/** * Callback to eliminate any non-registered style * @return void */ function no_conflict_styles() { global $wp_styles; if (!gravityview_is_admin_page()) { return; } // Dequeue other jQuery styles even if no-conflict is off. // Terrible-looking tabs help no one. if (!empty($wp_styles->registered)) { foreach ($wp_styles->registered as $key => $style) { if (preg_match('/^(?:wp\\-)?jquery/ism', $key)) { wp_dequeue_style($key); } } } $no_conflict_mode = GravityView_Settings::getSetting('no-conflict-mode'); // If no conflict is off, jQuery will suffice. if (empty($no_conflict_mode)) { return; } $wp_allowed_styles = array('debug-bar-extender', 'admin-bar', 'debug-bar', 'debug-bar-codemirror', 'debug-bar-console', 'puc-debug-bar-style', 'colors', 'ie', 'wp-auth-check', 'media-views', 'thickbox', 'dashicons', 'wp-jquery-ui-dialog', 'jquery-ui-sortable', 'gform_tooltip', 'gform_font_awesome', 'gravityview_settings', 'wp-seo-metabox', 'wpseo-admin-media', 'metabox-tabs', 'metabox-classic', 'metabox-fresh', 'genesis_admin_css', 'jquery-qtip.js'); $this->remove_conflicts($wp_styles, $wp_allowed_styles, 'styles'); // Allow settings, etc, to hook in after do_action('gravityview_remove_conflicts_after'); }
/** * Render shortcode hint in the Publish metabox * * @access public * @param object $post * @return void */ function render_shortcode_hint() { global $post; // Only show this on GravityView post types. if (false === gravityview_is_admin_page()) { return; } // If the View hasn't been configured yet, don't show embed shortcode if (!gravityview_get_directory_fields($post->ID)) { return; } include self::$metaboxes_dir . 'views/shortcode-hint.php'; }
/** * Add script to Views edit screen (admin) * @param mixed $hook */ function add_scripts_and_styles($hook) { // Don't process any scripts below here if it's not a GravityView page. if (!gravityview_is_admin_page($hook)) { return; } $script_debug = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min'; wp_enqueue_script('gravityview_datatables_admin', plugins_url('assets/js/datatables-admin-views' . $script_debug . '.js', GV_DT_FILE), array('jquery'), GV_Extension_DataTables::version); wp_enqueue_style('gravityview_datatables_admin', plugins_url('assets/css/datatables-admin.css', GV_DT_FILE), array(), GV_Extension_DataTables::version); }