From 093889d7b98c5d6935448dba1cab0d701cc6d920 Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Thu, 8 Oct 2015 11:07:06 -0600 Subject: [PATCH 1/5] Move the beacon closer to the corner; add .rtl support --- assets/css/admin-global.css | 2 +- assets/css/beacon.css | 1 + assets/css/scss/admin-global.scss | 1 + assets/css/scss/beacon.scss | 24 ++++++++++++++++++++++++ assets/images/screenshots/beacon.png | Bin 0 -> 1655 bytes 5 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 assets/css/beacon.css create mode 100644 assets/css/scss/beacon.scss create mode 100644 assets/images/screenshots/beacon.png diff --git a/assets/css/admin-global.css b/assets/css/admin-global.css index 37c0483d54..e40c56df37 100644 --- a/assets/css/admin-global.css +++ b/assets/css/admin-global.css @@ -1 +1 @@ -@font-face{font-family:"gravityview";src:url("../fonts/gravityview.eot");src:url("../fonts/gravityview.eot?#iefix") format("embedded-opentype"),url("../fonts/gravityview.woff") format("woff"),url("../fonts/gravityview.ttf") format("truetype"),url("../fonts/gravityview.svg#gravityview") format("svg");font-weight:normal;font-style:normal;}a.icon{text-decoration:none;}[data-gv-icon]:before{font-family:"gravityview" !important;content:attr(data-gv-icon);font-style:normal !important;font-weight:normal !important;font-variant:normal !important;text-transform:none !important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}[class^="gv-icon-"]:before,#toplevel_page_gravityview_settings .wp-menu-image:before,#adminmenu .menu-icon-gravityview div.wp-menu-image:before,#available-widgets [class*=gv_recent_entries] .widget-title:before,#available-widgets [class*=gravityview_search] .widget-title:before,[class*=" gv-icon-"]:before{font-family:"gravityview" !important;font-style:normal !important;font-weight:normal !important;font-variant:normal !important;text-transform:none !important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.gv-icon-astronaut-head:before,#toplevel_page_gravityview_settings .wp-menu-image:before,#adminmenu .menu-icon-gravityview div.wp-menu-image:before,#available-widgets [class*=gv_recent_entries] .widget-title:before,#available-widgets [class*=gravityview_search] .widget-title:before{content:"a";}.gv-icon-astronaut:before{content:"b";}.gv-icon-datatables-icon:before{content:"c";}.gv-icon-caret-up-down:before{content:"d";}.gv-icon-minus-square:before{content:"f";}.gv-icon-plus-square:before{content:"g";}.gv-icon-level-down:before{content:"e";}.gv-icon-sort-asc:before{content:"h";}.gv-icon-sort-desc:before{content:"i";}.members-tab-title .gv-icon-astronaut-head{font-size:20px;height:15px;margin-right:3px;line-height:20px;display:inline-block;}.wp-editor-tools #add_gravityview{width:auto;}#gf_form_toolbar .gv_connected_forms .gv-icon{font-size:19px;margin-top:-0.5em;line-height:0.5em;display:inline-block;}#gf_form_toolbar .gv_connected_forms .hidden{display:none !important;}#gf_form_toolbar .gv_connected_forms .gf_submenu{min-width:150px;max-width:100%;}#gf_form_toolbar .gv_connected_forms li a{padding:0.5em 0.75em !important;display:block;width:auto;}.post-type-gravityview .changelog ul{list-style-type:square;}.post-type-gravityview .changelog ul ul{list-style:circle;margin:0.5em 0 0.5em 1.3em;} \ No newline at end of file +@font-face{font-family:"gravityview";src:url("../fonts/gravityview.eot");src:url("../fonts/gravityview.eot?#iefix") format("embedded-opentype"),url("../fonts/gravityview.woff") format("woff"),url("../fonts/gravityview.ttf") format("truetype"),url("../fonts/gravityview.svg#gravityview") format("svg");font-weight:normal;font-style:normal;}a.icon{text-decoration:none;}[data-gv-icon]:before{font-family:"gravityview" !important;content:attr(data-gv-icon);font-style:normal !important;font-weight:normal !important;font-variant:normal !important;text-transform:none !important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}[class^="gv-icon-"]:before,#toplevel_page_gravityview_settings .wp-menu-image:before,#adminmenu .menu-icon-gravityview div.wp-menu-image:before,#available-widgets [class*=gv_recent_entries] .widget-title:before,#available-widgets [class*=gravityview_search] .widget-title:before,[class*=" gv-icon-"]:before{font-family:"gravityview" !important;font-style:normal !important;font-weight:normal !important;font-variant:normal !important;text-transform:none !important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.gv-icon-astronaut-head:before,#toplevel_page_gravityview_settings .wp-menu-image:before,#adminmenu .menu-icon-gravityview div.wp-menu-image:before,#available-widgets [class*=gv_recent_entries] .widget-title:before,#available-widgets [class*=gravityview_search] .widget-title:before{content:"a";}.gv-icon-astronaut:before{content:"b";}.gv-icon-datatables-icon:before{content:"c";}.gv-icon-caret-up-down:before{content:"d";}.gv-icon-minus-square:before{content:"f";}.gv-icon-plus-square:before{content:"g";}.gv-icon-level-down:before{content:"e";}.gv-icon-sort-asc:before{content:"h";}.gv-icon-sort-desc:before{content:"i";}#hs-beacon iframe{z-index:9991 !important;}#hs-beacon iframe[data-reactid-hs=".0.0"]{right:-5px !important;bottom:-5px !important;}.rtl #hs-beacon iframe[data-reactid-hs=".0.0"]{right:auto !important;left:-5px !important;}.members-tab-title .gv-icon-astronaut-head{font-size:20px;height:15px;margin-right:3px;line-height:20px;display:inline-block;}.wp-editor-tools #add_gravityview{width:auto;}#gf_form_toolbar .gv_connected_forms .gv-icon{font-size:19px;margin-top:-0.5em;line-height:0.5em;display:inline-block;}#gf_form_toolbar .gv_connected_forms .hidden{display:none !important;}#gf_form_toolbar .gv_connected_forms .gf_submenu{min-width:150px;max-width:100%;}#gf_form_toolbar .gv_connected_forms li a{padding:0.5em 0.75em !important;display:block;width:auto;}.post-type-gravityview .changelog ul{list-style-type:square;}.post-type-gravityview .changelog ul ul{list-style:circle;margin:0.5em 0 0.5em 1.3em;} \ No newline at end of file diff --git a/assets/css/beacon.css b/assets/css/beacon.css new file mode 100644 index 0000000000..5b9f79c8b4 --- /dev/null +++ b/assets/css/beacon.css @@ -0,0 +1 @@ +#hs-beacon iframe{z-index:9991 !important;}#hs-beacon iframe[data-reactid-hs=".0.0"]{right:-5px !important;bottom:-5px !important;}.rtl #hs-beacon iframe[data-reactid-hs=".0.0"]{right:auto !important;left:-5px !important;} \ No newline at end of file diff --git a/assets/css/scss/admin-global.scss b/assets/css/scss/admin-global.scss index 2088c15356..6ebbb6b40f 100644 --- a/assets/css/scss/admin-global.scss +++ b/assets/css/scss/admin-global.scss @@ -11,6 +11,7 @@ */ @import "font"; +@import "beacon"; /* add gravityview menu icon */ #toplevel_page_gravityview_settings .wp-menu-image:before, diff --git a/assets/css/scss/beacon.scss b/assets/css/scss/beacon.scss new file mode 100644 index 0000000000..f68abbf3ba --- /dev/null +++ b/assets/css/scss/beacon.scss @@ -0,0 +1,24 @@ +#hs-beacon { + + iframe { + + z-index: 9991!important; // Above #adminmenuwrap, which is 9990 + + // The Button iframe + &[data-reactid-hs=".0.0"] { + right: -5px!important; + bottom: -5px!important; + + .rtl & { + right: auto!important; + left: -5px!important; + } + } + // End button iframe + + // The Button content iframe + &[data-reactid-hs=".0.1"] {} + // End Button content iframe + + } +} \ No newline at end of file diff --git a/assets/images/screenshots/beacon.png b/assets/images/screenshots/beacon.png new file mode 100644 index 0000000000000000000000000000000000000000..39078ac51654874bb139f29e18b3c56e02b0a87a GIT binary patch literal 1655 zcmchX`!^E`0LND-D!X;1#}vu&>L^t7RH0N!Gne(EvGZ9?i$bADVhEjHGXsh_$ReI= zP7}9(ytr+^J%{!F%kaSOnb^9Hl*aC_6Mt}(9KUx>m=d;pVHuIn4yH8I#X}Qwi@)Ua zsM3~*_iZza%avV&AyfggZ#1BszqGRE@`e>cZ*|XOFR!je(uLtwf=6YX!q)yQc6Ua- zFp`{sli0k%pQS;>Wx8lA~Z=xb(Vb!%`bdv#6mx}`UbDaO@` zU}WZXG7DA2N^Iz&wSV=>XG=z>VyN6FjP@}4=RVmV;owAh$B%4|IF8=pk;|H0TA7+( z%4Bt>F$9^+j%=>@^U&mjcdTSOkIe5&q4PqkKK-1UT~jF1Y6bE2oj%3Qbzg?va+~It zSHDlrL{WJe9BF!!WPN?zk<_@cg4UgO)CRCv7}RB>{J#a5$MWt20LtbNu(fMgFE@M4 z9b~?frKi2y38~4`m{Q6(BL1gdwSOUMP9*U{^kG)l2V@5DobNOugod@EL7w;?CtfqS ztQ`a+&&N-}-V#4-U+EO{+m!ofn{$CaU+*OrIgTH`i_kG~+(eLUI+uJsmuqFjE;YVd zs)@9Jx%1a%($(u~Jz0e4rQ*Ux5!Ipekj81a@eKk@8BHopsZ)<9JF5q8j?Hj63Ij$z zzwUV4AVD4W;J8tYzwgJwU3lzhF=R0Q!EPGifK*w0%uvOyxZvkJjxaJWQ7>7c5mNn{V9c;EN+-#Z zyj7!FOKu>9fYj|h2-``THMduY2OIKrL3sVu?PZK_Jvu;Lhf^dajheJ$^ypXhZz$#a zzYSNvF_YS=@(t4(N9ZZP)*5=-_f7)G_0)WQ%qwUWuVf&Mx6XK;%TMY;Oy*@Y|IRzp z|67MW{;MK5*BLpoH;5@sSzQg^}MOF&x11w`NI zr4oIbq$QHAG2#-tJampV0s0ucW+P!m8jgOjwJ9|z(7K!YGJ&6V1Rd{RwYM`k5xo1R z0vM7Sn{8|FEVt!GW~ex*sw58

c^k>U)O(vze^Kl2GTY6i}>ws>P1ar7AaeaE*SN zFM+C~z)iCn=OsF6G3O@uf#YW9aw#)PVfdZ8g!0q)^?Gy06PuA?cmdk<*6k@4u1HXfb21l*f(2sY?J_J&`K0+SAH$74H)C?RH_ z1=I8Vu*}nyFPc0k%meF Date: Thu, 8 Oct 2015 12:27:50 -0600 Subject: [PATCH 2/5] Add GravityView_Support_Port class * Add field to Profile page to enable/disable * Add setting to global plugin settings * Handle enqueueing and localizing the script --- assets/js/{feedback.js => support.js} | 12 +- assets/js/{feedback.min.js => support.min.js} | 2 +- .../admin/class-gravityview-support-port.php | 307 ++++++++++++++++++ includes/class-admin-views.php | 114 +------ includes/class-admin.php | 3 + .../class-gravityview-roles-capabilities.php | 5 +- includes/class-settings.php | 23 ++ 7 files changed, 347 insertions(+), 119 deletions(-) rename assets/js/{feedback.js => support.js} (62%) rename assets/js/{feedback.min.js => support.min.js} (69%) create mode 100644 includes/admin/class-gravityview-support-port.php diff --git a/assets/js/feedback.js b/assets/js/support.js similarity index 62% rename from assets/js/feedback.js rename to assets/js/support.js index 98521ccbc6..86c59a1dcc 100644 --- a/assets/js/feedback.js +++ b/assets/js/support.js @@ -1,16 +1,22 @@ /** * @global jQuery - * @global gvFeedback + * @global gvSupportData + * @global gvSupportTranslation */ !function(e,o,n){window.HSCW=o,window.HS=n,n.beacon=n.beacon||{};var t=n.beacon;t.userConfig={},t.readyQueue=[],t.config=function(e){this.userConfig=e},t.ready=function(e){this.readyQueue.push(e)},o.config={docs:{enabled:!0,baseUrl:"http://gravityview.helpscoutdocs.com"},contact:{enabled:!0,formId:"7a2a1309-62db-11e5-8846-0e599dc12a51"}};var r=e.getElementsByTagName("script")[0],c=e.createElement("script");c.type="text/javascript",c.async=!0,c.src="https://djtflbt20bdde.cloudfront.net/",r.parentNode.insertBefore(c,r)}(document,window.HSCW||{},window.HS||{}); HS.beacon.config({ color: '#4d9bbe', poweredBy: false, - translation: gvBeaconTranslation + topArticles: true, + icon: 'question', + zIndex: 9991, + translation: gvSupport.translation }); HS.beacon.ready(function() { "use strict"; - HS.beacon.identify( gvBeacon ); + window.HSCW.config.contact.enabled = ( gvSupport.contactEnabled * 1 ); + this.identify( gvSupport.data ); + // this.search( adminpage + pagenow ); this.open(); @todo Add keywords to articles with the adminpage+pagenow value to enable for pre-populated beacon searches }); \ No newline at end of file diff --git a/assets/js/feedback.min.js b/assets/js/support.min.js similarity index 69% rename from assets/js/feedback.min.js rename to assets/js/support.min.js index f493cbbf7f..5e0a8f668e 100644 --- a/assets/js/feedback.min.js +++ b/assets/js/support.min.js @@ -1 +1 @@ -!function(e,o,n){window.HSCW=o,window.HS=n,n.beacon=n.beacon||{};var t=n.beacon;t.userConfig={},t.readyQueue=[],t.config=function(e){this.userConfig=e},t.ready=function(e){this.readyQueue.push(e)},o.config={docs:{enabled:!0,baseUrl:"http://gravityview.helpscoutdocs.com"},contact:{enabled:!0,formId:"7a2a1309-62db-11e5-8846-0e599dc12a51"}};var r=e.getElementsByTagName("script")[0],c=e.createElement("script");c.type="text/javascript",c.async=!0,c.src="https://djtflbt20bdde.cloudfront.net/",r.parentNode.insertBefore(c,r)}(document,window.HSCW||{},window.HS||{}),HS.beacon.config({color:"#4d9bbe",poweredBy:!1,translation:gvBeaconTranslation}),HS.beacon.ready(function(){"use strict";HS.beacon.identify(gvBeacon)}); \ No newline at end of file +!function(e,o,n){window.HSCW=o,window.HS=n,n.beacon=n.beacon||{};var t=n.beacon;t.userConfig={},t.readyQueue=[],t.config=function(e){this.userConfig=e},t.ready=function(e){this.readyQueue.push(e)},o.config={docs:{enabled:!0,baseUrl:"http://gravityview.helpscoutdocs.com"},contact:{enabled:!0,formId:"7a2a1309-62db-11e5-8846-0e599dc12a51"}};var r=e.getElementsByTagName("script")[0],c=e.createElement("script");c.type="text/javascript",c.async=!0,c.src="https://djtflbt20bdde.cloudfront.net/",r.parentNode.insertBefore(c,r)}(document,window.HSCW||{},window.HS||{}),HS.beacon.config({color:"#4d9bbe",poweredBy:!1,topArticles:!0,icon:"question",zIndex:9991,translation:gvSupport.translation}),HS.beacon.ready(function(){"use strict";window.HSCW.config.contact.enabled=1*gvSupport.contactEnabled,this.identify(gvSupport.data)}); \ No newline at end of file diff --git a/includes/admin/class-gravityview-support-port.php b/includes/admin/class-gravityview-support-port.php new file mode 100644 index 0000000000..36e3441df5 --- /dev/null +++ b/includes/admin/class-gravityview-support-port.php @@ -0,0 +1,307 @@ +add_hooks(); + } + + /** + * @since 1.15 + */ + function add_hooks() { + add_action( 'personal_options', array( $this, 'user_field' ) ); + add_action( 'personal_options_update', array( $this, 'update_user_meta_value' ) ); + add_action( 'edit_user_profile_update', array( $this, 'update_user_meta_value' ) ); + add_action( 'admin_enqueue_scripts', array( $this, 'maybe_enqueue_script' ), 1000 ); + add_action( 'update_option_active_plugins', array( $this, 'flush_related_plugins_transient' ) ); + add_action( 'update_option_active_sitewide_plugins', array( $this, 'flush_related_plugins_transient' ) ); + } + + /** + * 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 + */ + 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` Whether to display Support Port + * @since 1.15 + * + * @param boolean $display_beacon Default: `true` + */ + $display_support_port = apply_filters( 'gravityview/support_port', 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(); + } + + /** + * Localize the Support Port script + * + * @uses wp_localize_script() + * @since 1.15 + * @return void + */ + private static function _localize_script() { + + $translation = array( + 'agentLabel' => __( 'GravityView Support', 'gravityview' ), + 'searchLabel' => __( 'Search GravityView Docs', 'gravityview' ), + 'searchErrorLabel' => __( 'Your search timed out. Please double-check your internet connection and try again.', 'gravityview' ), + 'noResultsLabel' => _x( 'No results found for', 'a support form search has returned empty for the following word', 'gravityview' ), + 'contactLabel' => __( 'Contact Support', 'gravityview' ), + 'attachFileLabel' => __( 'Attach a screenshot or file', 'gravityview' ), + 'attachFileError' => __( 'The maximum file size is 10 MB', 'gravityview' ), + 'nameLabel' => __( 'Your Name', 'gravityview' ), + 'nameError' => __( 'Please enter your name', 'gravityview' ), + 'emailLabel' => __( 'Email address', 'gravityview' ), + 'emailError' => __( 'Please enter a valid email address', 'gravityview' ), + 'subjectLabel' => __( 'Subject', 'gravityview' ), + 'subjectError' => _x( 'Please enter a subject', 'Error shown when submitting support request and there is no subject provided', 'gravityview' ), + 'messageLabel' => __( 'How can we help you?', 'gravityview' ), + 'messageError' => _x( 'Please enter a message', 'Error shown when submitting support request and there is no message provided', 'gravityview' ), + 'contactSuccessLabel' => __( 'Message sent!', 'gravityview' ), + 'contactSuccessDescription' => __( 'Thanks for reaching out! Someone from the GravityView team will get back to you soon.', 'gravityview' ), + #'topicLabel' => __('Select a topic', 'gravityview' ), // Not yet implemented + #'topicError' => __('Please select a topic from the list', 'gravityview' ), // Not yet implemented + ); + + $response = GravityView_Settings::getSetting( 'license_key_response' ); + + $response = wp_parse_args( $response, array( + 'license' => '', + 'message' => '', + 'license_key' => '', + 'license_limit' => '', + 'expires' => '', + 'activations_left' => '', + 'site_count' => '', + 'payment_id' => '', + 'customer_name' => '', + 'customer_email' => '', + ) ); + + // This is just HTML we don't need. + unset( $response['message'] ); + + switch ( intval( $response['license_limit'] ) ) { + case 1: + $package = 'Sol'; + break; + case 100: + $package = 'Galactic'; + break; + case 3: + $package = 'Interstellar'; + break; + default: + $package = sprintf( '%d-Site License', $response['license_limit'] ); + } + + $data = array( + 'email' => GravityView_Settings::getSetting( 'support-email' ), + 'name' => $response['customer_name'], + 'Valid License?' => ucwords( $response['license'] ), + 'License Key' => $response['license_key'], + 'License Level' => $package, + 'Site Admin Email' => get_bloginfo( 'admin_email' ), + 'Support Email' => GravityView_Settings::getSetting( 'support-email' ), + 'License Limit' => $response['license_limit'], + 'Site Count' => $response['site_count'], + 'License Expires' => $response['expires'], + 'Activations Left' => $response['activations_left'], + 'Payment ID' => $response['payment_id'], + 'Payment Name' => $response['customer_name'], + 'Payment Email' => $response['customer_email'], + 'WordPress Version' => get_bloginfo( 'version', 'display' ), + 'PHP Version' => phpversion(), + 'GravityView Version' => GravityView_Plugin::version, + 'Gravity Forms Version' => GFForms::$version, + 'Plugins & Extensions' => self::get_related_plugins_and_extensions(), + ); + + $localization_data = array( + 'contactEnabled' => (int)current_user_can( 'gravityview_contact_support' ), // @todo use GVCommon::has_cap() after merge + 'data' => $data, + 'translation' => $translation, + ); + + wp_localize_script( 'gravityview-support', 'gvSupport', $localization_data ); + + unset( $localization_data, $data, $translation, $response, $package ); + } + + /** + * Get active GravityView Extensions and Gravity Forms Add-ons to help debug issues. + * + * @since 1.15 + * @return string List of active extensions related to GravityView or Gravity Forms, separated by HTML line breaks + */ + static private function get_related_plugins_and_extensions() { + + if ( ! function_exists( 'wp_get_active_and_valid_plugins' ) ) { + return 'Running < WP 3.0'; + } + + $extensions = (array)get_site_transient( self::related_plugins_key ); + + if ( empty( $extensions ) ) { + + $active_plugins = wp_get_active_and_valid_plugins(); + + foreach ( $active_plugins as $active_plugin ) { + + // Match gravityview, gravity-forms, gravityforms, gravitate + if ( ! preg_match( '/(gravityview|gravity-?forms|gravitate)/ism', $active_plugin ) ) { + continue; + } + + $plugin_data = get_plugin_data( $active_plugin ); + + $extensions[] = sprintf( '%s %s', $plugin_data['Name'], $plugin_data['Version'] ); + } + + if( $extensions ) { + set_site_transient( self::related_plugins_key, $extensions, HOUR_IN_SECONDS ); + } else { + return 'There was an error fetching related plugins.'; + } + } + + return implode( '
', $extensions ); + } + + /** + * When a plugin is activated or deactivated, delete the cached extensions/plugins used by get_related_plugins_and_extensions() + * + * @see get_related_plugins_and_extensions() + * @since 1.15 + */ + public function flush_related_plugins_transient() { + if ( function_exists( 'delete_site_transient' ) ) { + delete_site_transient( self::related_plugins_key ); + } + } + + /** + * Check whether to show Support for a user + * + * If there is no preference set for the user, use the global plugin setting. + * + * @since 1.15 + * + * @param int $user Optional. ID of the user to check, defaults to 0 for current user. + * + * @return bool Whether to show GravityView support + */ + static public function show_for_user( $user = 0 ) { + + $pref = get_user_option( self::user_pref_name, $user ); + + // Not set; default to plugin setting + if ( false === $pref ) { + return GravityView_Settings::getSetting( 'support_port' ); + } + + return ! empty( $pref ); + } + + + /** + * Update User Profile preferences for GravityView Support + * + * @since 1.5 + * + * @param int $user_id + * + * @return void + */ + public function update_user_meta_value( $user_id ) { + if ( current_user_can( 'edit_user', $user_id ) && isset( $_POST[ self::user_pref_name ] ) ) { + update_user_meta( $user_id, self::user_pref_name, intval( $_POST[ self::user_pref_name ] ) ); + } + } + + /** + * Modify User Profile + * + * Modifies the output of profile.php to add GravityView Support preference + * + * @since 1.15 + * + * @param WP_User $user Current user info + * + * @return void + */ + function user_field( $user ) { + + /** + * @filter `gravityview/support_port/show_profile_setting` Should the "GravityView Support Port" setting be shown on user profiles? + * @todo use GVCommon::has_cap() after merge + * @since 1.15 + * + * @param boolean $allow_profile_setting Default: `true`, if the user has the `gravityview_support_port` capability, which defaults to true for Contributors and higher + * @param WP_User $user Current user object + */ + $allow_profile_setting = apply_filters( 'gravityview/support_port/show_profile_setting', current_user_can( 'gravityview_support_port' ), $user ); + + if ( $allow_profile_setting && current_user_can( 'edit_user', $user->ID ) ) { + ?> + + + + + + + +
+
+ + +
+
+ '', - 'message' => '', - 'license_key' => '', - 'license_limit' => '', - 'expires' => '', - 'activations_left' => '', - 'site_count' => '', - 'payment_id' => '', - 'customer_name' => '', - 'customer_email' => '', - ) ); - - // This is just HTML we don't need. - unset( $response['message'] ); - - switch( intval( $response['license_limit'] ) ) { - case 1: - $package = 'Sol'; - break; - case 100: - $package = 'Galactic'; - break; - case 3: - $package = 'Interstellar'; - break; - default: - $package = sprintf( '%d-Site License', $response['license_limit'] ); - } - - $translation = array( - 'agentLabel' => __('GravityView Support', 'gravityview'), - 'searchLabel' => __('Ask GravityView Support', 'gravityview'), - 'searchErrorLabel' => __('Your search timed out. Please double-check your internet connection and try again.', 'gravityview' ), - 'noResultsLabel' => _x('No results found for', 'a support form search has returned empty for the following word', 'gravityview' ), - 'contactLabel' => __('Send a Message', 'gravityview' ), - 'attachFileLabel' => __('Attach a screenshot or file', 'gravityview' ), - 'attachFileError' => __('The maximum file size is 10 MB', 'gravityview' ), - 'nameLabel' => __('Your Name', 'gravityview' ), - 'nameError' => __('Please enter your name', 'gravityview' ), - 'emailLabel' => __('Email address', 'gravityview' ), - 'emailError' => __('Please enter a valid email address', 'gravityview' ), - 'subjectLabel' => __('Subject', 'gravityview' ), - 'subjectError' => _x('Please enter a subject', 'Error shown when submitting support request and there is no subject provided', 'gravityview' ), - 'messageLabel' => __('How can we help you?', 'gravityview' ), - 'messageError' => _x('Please enter a message', 'Error shown when submitting support request and there is no message provided', 'gravityview' ), - 'contactSuccessLabel' => __('Message sent!', 'gravityview' ), - 'contactSuccessDescription' => __('Thanks for reaching out! Someone from the GravityView team will get back to you soon.', 'gravityview' ), - #'topicLabel' => __('Select a topic', 'gravityview' ), // Not implemented - #'topicError' => __('Please select a topic from the list', 'gravityview' ), // Not implemented - ); - - wp_enqueue_script( 'gravityview-feedback-widget', plugins_url('assets/js/feedback'.$script_debug.'.js', GRAVITYVIEW_FILE), array(), GravityView_Plugin::version, true ); - - wp_localize_script( 'gravityview-feedback-widget', 'gvBeaconTranslation', $translation ); - - wp_localize_script( 'gravityview-feedback-widget', 'gvBeacon', array( - 'email' => GravityView_Settings::getSetting( 'support-email' ), - 'name' => $response['customer_name'], - 'Valid License?' => ucwords( $response['license'] ), - 'License Key' => $response['license_key'], - 'License Level' => $package, - 'Site Admin Email' => get_bloginfo( 'admin_email' ), - 'Support Email' => GravityView_Settings::getSetting( 'support-email' ), - 'License Limit' => $response['license_limit'], - 'Site Count' => $response['site_count'], - 'License Expires' => $response['expires'], - 'Activations Left' => $response['activations_left'], - 'Payment ID' => $response['payment_id'], - 'Payment Name' => $response['customer_name'], - 'Payment Email' => $response['customer_email'], - 'WordPress Version' => get_bloginfo('version', 'display'), - 'PHP Version' => phpversion(), - )); - } - /** * Enqueue scripts and styles at Views editor * @@ -1024,14 +920,6 @@ static 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) && !$is_widgets_page ) { return; } - - if( !$is_widgets_page ) { - - // Add the Chatlio widget on all GV pages - self::enqueue_feedback_widget(); - - } - // Only enqueue the following on single pages if( gravityview_is_admin_page($hook, 'single') || $is_widgets_page ) { @@ -1089,7 +977,7 @@ function register_no_conflict( $registered ) { $filter = current_filter(); if( preg_match('/script/ism', $filter ) ) { - $allow_scripts = array( 'jquery-ui-core', 'jquery-ui-dialog', 'jquery-ui-tabs', 'jquery-ui-draggable', 'jquery-ui-droppable', 'jquery-ui-sortable', 'jquery-ui-tooltip', 'gravityview_views_scripts', 'gravityview-feedback-widget', 'gravityview-jquery-cookie', 'gravityview_views_datepicker', + $allow_scripts = array( 'jquery-ui-core', 'jquery-ui-dialog', 'jquery-ui-tabs', 'jquery-ui-draggable', 'jquery-ui-droppable', 'jquery-ui-sortable', 'jquery-ui-tooltip', 'gravityview_views_scripts', 'gravityview-support', 'gravityview-jquery-cookie', 'gravityview_views_datepicker', 'sack', 'gform_gravityforms', 'gform_forms', 'gform_form_admin', 'jquery-ui-autocomplete' ); $registered = array_merge( $registered, $allow_scripts ); } elseif( preg_match('/style/ism', $filter ) ) { diff --git a/includes/class-admin.php b/includes/class-admin.php index c79a050e2d..9344a85f21 100644 --- a/includes/class-admin.php +++ b/includes/class-admin.php @@ -31,6 +31,9 @@ function add_hooks() { require_once( GRAVITYVIEW_DIR . 'includes/admin/entry-list.php' ); require_once( GRAVITYVIEW_DIR . 'includes/class-change-entry-creator.php' ); + /** @since 1.15 **/ + require_once( GRAVITYVIEW_DIR . 'includes/admin/class-gravityview-support-port.php' ); + /** @since 1.6 */ require_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-admin-duplicate-view.php' ); diff --git a/includes/class-gravityview-roles-capabilities.php b/includes/class-gravityview-roles-capabilities.php index 1c71cb0cbd..bad0291f29 100644 --- a/includes/class-gravityview-roles-capabilities.php +++ b/includes/class-gravityview-roles-capabilities.php @@ -158,11 +158,10 @@ public function all_caps( $role = '' ) { 'publish_gravityviews', 'delete_published_gravityviews', 'edit_published_gravityviews', + 'gravityview_contact_support', // GF caps 'gravityview_edit_others_entries', - - // GF caps 'gravityview_view_others_entry_notes', 'gravityview_moderate_entries', 'gravityview_delete_others_entries', @@ -184,6 +183,8 @@ public function all_caps( $role = '' ) { 'edit_gravityviews', 'delete_gravityview', 'delete_gravityviews', + + 'gravityview_support_port', // Display GravityView Help beacon ); // Read only diff --git a/includes/class-settings.php b/includes/class-settings.php index 0261f9a7bc..3cb25c2b86 100644 --- a/includes/class-settings.php +++ b/includes/class-settings.php @@ -477,6 +477,7 @@ private function get_default_settings() { 'license_key_status' => '', 'support-email' => get_bloginfo( 'admin_email' ), 'no-conflict-mode' => '0', + 'support_port' => '1', 'delete-on-uninstall' => '0', ); @@ -553,6 +554,28 @@ public function app_settings_fields() { 'description' => __( 'In order to provide responses to your support requests, please provide your email address.', 'gravityview' ), 'class' => 'code regular-text', ), + /** + * @since 1.15 Added Support Port support + */ + array( + 'name' => 'support_port', + 'type' => 'radio', + 'label' => __( 'Show Support Port?', 'gravityview' ), + 'default_value' => $default_settings['support_port'], + 'horizontal' => 1, + 'choices' => array( + array( + 'label' => _x('Show', 'Setting: Show or Hide', 'gravityview'), + 'value' => '1', + ), + array( + 'label' => _x('Hide', 'Setting: Show or Hide', 'gravityview'), + 'value' => '0', + ), + ), + 'tooltip' => '

' . esc_attr__( 'The Support Port looks like this.', 'gravityview' ) . '' . esc_html__('The Support Port provides quick access to how-to articles and tutorials. For administrators, it also makes it easy to contact support.', 'gravityview') . '

', + 'description' => __( 'Show the Support Port on GravityView pages?', 'gravityview' ), + ), array( 'name' => 'no-conflict-mode', 'type' => 'radio', From 3087655a58102f700e23061b0cc06aaa8ff1c24f Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Thu, 8 Oct 2015 12:28:33 -0600 Subject: [PATCH 3/5] Improve Settings styles --- assets/css/admin-settings.css | 2 +- assets/css/scss/admin-settings.scss | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/assets/css/admin-settings.css b/assets/css/admin-settings.css index 73cfc1672e..bfdfb8ab3c 100644 --- a/assets/css/admin-settings.css +++ b/assets/css/admin-settings.css @@ -1 +1 @@ -#gform-settings .gforms_form_settings .edd-license-key{float:left;margin:0 10px 10px 0;}#gform-settings .gforms_form_settings .gv-edd-button-wrapper{float:left;padding-left:0;}#gform-settings .gforms_form_settings .gv-edd-button-wrapper .button,#gform-settings .gforms_form_settings .gv-edd-button-wrapper .button-primary{margin:0 10px 10px 0 !important;}.gravityview_page_gravityview_settings .gform_tab_content>h3,.toplevel_page_gravityview_settings .gform_tab_content>h3{position:absolute;top:0.5em;right:10px;}.gravityview_page_gravityview_settings .version-info,.toplevel_page_gravityview_settings .version-info{position:absolute;right:10px;top:0.5em;}.gravityview_page_gravityview_settings .gv-edd-message,.toplevel_page_gravityview_settings .gv-edd-message{min-height:20px;padding:8px 19px;margin:10px 0 !important;border:1px solid;border-radius:4px;position:relative;display:block !important;background-color:#eeeeee;border-color:#cccccc;color:#666666;}.gravityview_page_gravityview_settings .gv-edd-message.valid,.toplevel_page_gravityview_settings .gv-edd-message.valid{background-color:#c4ee91;border-color:#71af5d;color:#4d7615;}.gravityview_page_gravityview_settings .gv-edd-message.error,.gravityview_page_gravityview_settings .gv-edd-message.invalid,.gravityview_page_gravityview_settings .gv-edd-message.failed,.toplevel_page_gravityview_settings .gv-edd-message.error,.toplevel_page_gravityview_settings .gv-edd-message.invalid,.toplevel_page_gravityview_settings .gv-edd-message.failed{background-color:#fba1a3;border-color:#b84f5b;color:#981225;}.gravityview_page_gravityview_settings .gv-edd-message.site_inactive,.gravityview_page_gravityview_settings .gv-edd-message.deactivated,.toplevel_page_gravityview_settings .gv-edd-message.site_inactive,.toplevel_page_gravityview_settings .gv-edd-message.deactivated{background-color:#fbeba4;border-color:#d7c281;color:#958234;}.gravityview_page_gravityview_settings .gv-edd-message.pending,.toplevel_page_gravityview_settings .gv-edd-message.pending{background-color:#d3e4f4;border-color:#a9b6c2;color:#5c80a1;}.gravityview_page_gravityview_settings .gv-edd-message p:first-child,.toplevel_page_gravityview_settings .gv-edd-message p:first-child{margin:0;padding:2px;}.gravityview_page_gravityview_settings .inline.hide:empty,.toplevel_page_gravityview_settings .inline.hide:empty{display:none !important;}.gravityview_page_gravityview_settings .hide,.toplevel_page_gravityview_settings .hide{display:none;}.gravityview_page_gravityview_settings #gform_tab_group,.toplevel_page_gravityview_settings #gform_tab_group{padding:0;background:url(../images/stars.jpg) left top repeat-x;}.gravityview_page_gravityview_settings #gform_tab_group:before,.toplevel_page_gravityview_settings #gform_tab_group:before{content:'';display:block;position:relative;margin-left:0;background-color:#fff;min-height:110px;background:url(../images/astronaut-200x263.png) -30px top no-repeat;margin:0;padding:10px 0 0 160px;}.gravityview_page_gravityview_settings .gform_tab_group,.toplevel_page_gravityview_settings .gform_tab_group{position:relative;}.gravityview_page_gravityview_settings .gform_tab_group #message,.toplevel_page_gravityview_settings .gform_tab_group #message{position:absolute;width:auto;white-space:nowrap;top:35px;left:150px;margin-bottom:10px;padding-top:5px;padding-bottom:5px;z-index:1000;opacity:0.95;}.gravityview_page_gravityview_settings .gform_tab_group #message p,.toplevel_page_gravityview_settings .gform_tab_group #message p{margin:0;padding:0.25em 5px;font-size:16px;}.gravityview_page_gravityview_settings .gform_tab_group #message p strong,.toplevel_page_gravityview_settings .gform_tab_group #message p strong{font-weight:400;}.gravityview_page_gravityview_settings #gform_tab_container,.toplevel_page_gravityview_settings #gform_tab_container{margin-left:0;background-color:#fff;padding-bottom:0;}.gravityview_page_gravityview_settings #gform_tabs,.toplevel_page_gravityview_settings #gform_tabs{margin-top:0;display:none;}.gravityview_page_gravityview_settings #gform-settings,.toplevel_page_gravityview_settings #gform-settings{clear:both;}.gravityview_page_gravityview_settings #gform-settings tr,.toplevel_page_gravityview_settings #gform-settings tr{border-top:1px solid #E7E7E7;}.gravityview_page_gravityview_settings #gform-settings tr:first-child,.gravityview_page_gravityview_settings #gform-settings tr:last-child,.toplevel_page_gravityview_settings #gform-settings tr:first-child,.toplevel_page_gravityview_settings #gform-settings tr:last-child{border-top:none;}.gravityview_page_gravityview_settings #gform-settings tr:first-child td,.gravityview_page_gravityview_settings #gform-settings tr:first-child th,.gravityview_page_gravityview_settings #gform-settings tr:last-child td,.gravityview_page_gravityview_settings #gform-settings tr:last-child th,.toplevel_page_gravityview_settings #gform-settings tr:first-child td,.toplevel_page_gravityview_settings #gform-settings tr:first-child th,.toplevel_page_gravityview_settings #gform-settings tr:last-child td,.toplevel_page_gravityview_settings #gform-settings tr:last-child th{padding-top:10px !important;}.gravityview_page_gravityview_settings #gform-settings tr:last-child td,.gravityview_page_gravityview_settings #gform-settings tr:last-child th,.toplevel_page_gravityview_settings #gform-settings tr:last-child td,.toplevel_page_gravityview_settings #gform-settings tr:last-child th{padding-bottom:10px !important;}.gravityview_page_gravityview_settings #gform-settings th,.gravityview_page_gravityview_settings #gform-settings td,.toplevel_page_gravityview_settings #gform-settings th,.toplevel_page_gravityview_settings #gform-settings td{margin:0;padding:20px 10px 20px 0px;width:auto;}.gravityview_page_gravityview_settings #gform-settings td,.toplevel_page_gravityview_settings #gform-settings td{width:70%;}.gravityview_page_gravityview_settings #gform-settings td div,.toplevel_page_gravityview_settings #gform-settings td div{padding-left:10px;}.gravityview_page_gravityview_settings #gform-settings th,.toplevel_page_gravityview_settings #gform-settings th{font-weight:bold;display:block;}.gravityview_page_gravityview_settings #gform-settings span.description,.toplevel_page_gravityview_settings #gform-settings span.description{display:block;font-style:normal;font-weight:400;color:#666;} \ No newline at end of file +#gform-settings .gforms_form_settings .edd-license-key{float:left;margin:0 10px 10px 0;}#gform-settings .gforms_form_settings .gv-edd-button-wrapper{float:left;padding-left:0;}#gform-settings .gforms_form_settings .gv-edd-button-wrapper .button,#gform-settings .gforms_form_settings .gv-edd-button-wrapper .button-primary{margin:0 10px 10px 0 !important;}.gravityview_page_gravityview_settings .gform_tab_content>h3,.toplevel_page_gravityview_settings .gform_tab_content>h3{position:absolute;top:0.5em;right:10px;}.gravityview_page_gravityview_settings .version-info,.toplevel_page_gravityview_settings .version-info{position:absolute;right:10px;top:0.5em;}.gravityview_page_gravityview_settings .gv-edd-message,.toplevel_page_gravityview_settings .gv-edd-message{min-height:20px;padding:8px 19px;margin:10px 0 !important;border:1px solid;border-radius:4px;position:relative;display:block !important;background-color:#eeeeee;border-color:#cccccc;color:#666666;}.gravityview_page_gravityview_settings .gv-edd-message.valid,.toplevel_page_gravityview_settings .gv-edd-message.valid{background-color:#c4ee91;border-color:#71af5d;color:#4d7615;}.gravityview_page_gravityview_settings .gv-edd-message.error,.gravityview_page_gravityview_settings .gv-edd-message.invalid,.gravityview_page_gravityview_settings .gv-edd-message.failed,.toplevel_page_gravityview_settings .gv-edd-message.error,.toplevel_page_gravityview_settings .gv-edd-message.invalid,.toplevel_page_gravityview_settings .gv-edd-message.failed{background-color:#fba1a3;border-color:#b84f5b;color:#981225;}.gravityview_page_gravityview_settings .gv-edd-message.site_inactive,.gravityview_page_gravityview_settings .gv-edd-message.deactivated,.toplevel_page_gravityview_settings .gv-edd-message.site_inactive,.toplevel_page_gravityview_settings .gv-edd-message.deactivated{background-color:#fbeba4;border-color:#d7c281;color:#958234;}.gravityview_page_gravityview_settings .gv-edd-message.pending,.toplevel_page_gravityview_settings .gv-edd-message.pending{background-color:#d3e4f4;border-color:#a9b6c2;color:#5c80a1;}.gravityview_page_gravityview_settings .gv-edd-message p:first-child,.toplevel_page_gravityview_settings .gv-edd-message p:first-child{margin:0;padding:2px;}.gravityview_page_gravityview_settings .inline.hide:empty,.toplevel_page_gravityview_settings .inline.hide:empty{display:none !important;}.gravityview_page_gravityview_settings .hide,.toplevel_page_gravityview_settings .hide{display:none;}.gravityview_page_gravityview_settings #gform_tab_group,.toplevel_page_gravityview_settings #gform_tab_group{padding:0;background:url(../images/stars.jpg) left top repeat-x;}.gravityview_page_gravityview_settings #gform_tab_group:before,.toplevel_page_gravityview_settings #gform_tab_group:before{content:'';display:block;position:relative;margin-left:0;background-color:#fff;min-height:110px;background:url(../images/astronaut-200x263.png) -30px top no-repeat;margin:0;padding:10px 0 0 160px;}.gravityview_page_gravityview_settings .gform_tab_group,.toplevel_page_gravityview_settings .gform_tab_group{position:relative;}.gravityview_page_gravityview_settings .gform_tab_group #message,.toplevel_page_gravityview_settings .gform_tab_group #message{position:absolute;width:auto;white-space:nowrap;top:35px;left:150px;margin-bottom:10px;padding-top:5px;padding-bottom:5px;z-index:1000;opacity:0.95;}.gravityview_page_gravityview_settings .gform_tab_group #message p,.toplevel_page_gravityview_settings .gform_tab_group #message p{margin:0;padding:0.25em 5px;font-size:16px;}.gravityview_page_gravityview_settings .gform_tab_group #message p strong,.toplevel_page_gravityview_settings .gform_tab_group #message p strong{font-weight:400;}.gravityview_page_gravityview_settings #gform_tab_container,.toplevel_page_gravityview_settings #gform_tab_container{margin-left:0;background-color:#fff;padding-bottom:0;}.gravityview_page_gravityview_settings #gform_tabs,.toplevel_page_gravityview_settings #gform_tabs{margin-top:0;display:none;}.gravityview_page_gravityview_settings #gform-settings,.toplevel_page_gravityview_settings #gform-settings{clear:both;}.gravityview_page_gravityview_settings #gform-settings tr,.toplevel_page_gravityview_settings #gform-settings tr{border-top:1px solid #E7E7E7;}.gravityview_page_gravityview_settings #gform-settings tr:first-child,.gravityview_page_gravityview_settings #gform-settings tr:last-child,.toplevel_page_gravityview_settings #gform-settings tr:first-child,.toplevel_page_gravityview_settings #gform-settings tr:last-child{border-top:none;}.gravityview_page_gravityview_settings #gform-settings tr:first-child td,.gravityview_page_gravityview_settings #gform-settings tr:first-child th,.gravityview_page_gravityview_settings #gform-settings tr:last-child td,.gravityview_page_gravityview_settings #gform-settings tr:last-child th,.toplevel_page_gravityview_settings #gform-settings tr:first-child td,.toplevel_page_gravityview_settings #gform-settings tr:first-child th,.toplevel_page_gravityview_settings #gform-settings tr:last-child td,.toplevel_page_gravityview_settings #gform-settings tr:last-child th{padding-top:10px !important;}.gravityview_page_gravityview_settings #gform-settings .gaddon-section,.toplevel_page_gravityview_settings #gform-settings .gaddon-section{padding-top:0;}.gravityview_page_gravityview_settings #gform-settings .gaddon-section>h4,.toplevel_page_gravityview_settings #gform-settings .gaddon-section>h4{color:#777;font-size:16px;font-weight:400;line-height:22px;}.gravityview_page_gravityview_settings #gform-settings table:last-child>tr:first-child td,.gravityview_page_gravityview_settings #gform-settings table:last-child>tr:first-child th,.gravityview_page_gravityview_settings #gform-settings table:last-child>tr:last-child td,.gravityview_page_gravityview_settings #gform-settings table:last-child>tr:last-child th,.toplevel_page_gravityview_settings #gform-settings table:last-child>tr:first-child td,.toplevel_page_gravityview_settings #gform-settings table:last-child>tr:first-child th,.toplevel_page_gravityview_settings #gform-settings table:last-child>tr:last-child td,.toplevel_page_gravityview_settings #gform-settings table:last-child>tr:last-child th{padding-bottom:10px !important;}.gravityview_page_gravityview_settings #gform-settings th,.gravityview_page_gravityview_settings #gform-settings td,.toplevel_page_gravityview_settings #gform-settings th,.toplevel_page_gravityview_settings #gform-settings td{margin:0;padding:20px 10px 20px 0px;width:auto;}.gravityview_page_gravityview_settings #gform-settings td,.toplevel_page_gravityview_settings #gform-settings td{width:60%;}.gravityview_page_gravityview_settings #gform-settings td div,.toplevel_page_gravityview_settings #gform-settings td div{padding-left:10px;}.gravityview_page_gravityview_settings #gform-settings th,.toplevel_page_gravityview_settings #gform-settings th{font-weight:bold;display:block;}.gravityview_page_gravityview_settings #gform-settings span.description,.toplevel_page_gravityview_settings #gform-settings span.description{display:block;font-style:normal;font-weight:400;color:#666;} \ No newline at end of file diff --git a/assets/css/scss/admin-settings.scss b/assets/css/scss/admin-settings.scss index 183ccd0df6..1a6bf70d3e 100644 --- a/assets/css/scss/admin-settings.scss +++ b/assets/css/scss/admin-settings.scss @@ -158,7 +158,19 @@ } } - tr:last-child { + .gaddon-section { + padding-top: 0; + & > h4 { + color: #777; + font-size: 16px; + font-weight: 400; + line-height: 22px; + } + } + + table:last-child > tr:first-child, + table:last-child > tr:last-child { + td, th { padding-bottom: 10px!important; } @@ -171,7 +183,7 @@ } td { - width: 70%; + width: 60%; div { padding-left: 10px; @@ -180,7 +192,7 @@ th { font-weight: bold; - display: block + display: block; } span.description { From c527a3feea14c36d07cbe2db6909772daa744fc8 Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Thu, 8 Oct 2015 12:28:54 -0600 Subject: [PATCH 4/5] Code cleanup --- docs/config.doxygen | 2 +- includes/class-admin.php | 25 +++++++++++++++++-------- includes/class-settings.php | 6 ++++-- uninstall.php | 2 ++ 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/docs/config.doxygen b/docs/config.doxygen index 72883d9b1c..1f94f6cd7c 100644 --- a/docs/config.doxygen +++ b/docs/config.doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = GravityView # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.13.1 +PROJECT_NUMBER = 1.15 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/includes/class-admin.php b/includes/class-admin.php index 9344a85f21..e99426b809 100644 --- a/includes/class-admin.php +++ b/includes/class-admin.php @@ -4,20 +4,22 @@ class GravityView_Admin { function __construct() { - if( !is_admin() ) { return; } + if( ! is_admin() ) { return; } + // If Gravity Forms isn't active or compatibile, stop loading + if( false === GravityView_Compatibility::is_valid() ) { + return; + } + + $this->include_required_files(); $this->add_hooks(); } /** - * @since 1.7.5 + * @since 1.15 + * @return void */ - function add_hooks() { - - // If Gravity Forms isn't active or compatibile, stop loading - if( false === GravityView_Compatibility::is_valid() ) { - return; - } + private function include_required_files() { // Migrate Class require_once( GRAVITYVIEW_DIR . 'includes/class-migrate.php' ); @@ -36,6 +38,13 @@ function add_hooks() { /** @since 1.6 */ require_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-admin-duplicate-view.php' ); + } + + /** + * @since 1.7.5 + * @return void + */ + private function add_hooks() { // Filter Admin messages add_filter( 'post_updated_messages', array( $this, 'post_updated_messages' ) ); diff --git a/includes/class-settings.php b/includes/class-settings.php index 3cb25c2b86..cdc0ccd781 100644 --- a/includes/class-settings.php +++ b/includes/class-settings.php @@ -645,13 +645,15 @@ public function app_settings_fields() { /** + * @filter `gravityview/settings/extension/sections` Modify the GravityView settings page * Extensions can tap in here to insert their own section and settings. - * + * * $sections[] = array( * 'title' => __( 'GravityView My Extension Settings', 'gravityview' ), * 'fields' => $settings, * ); - * + * + * @param array $extension_settings Empty array, ready for extension settings! */ $extension_sections = apply_filters( 'gravityview/settings/extension/sections', array() ); diff --git a/uninstall.php b/uninstall.php index a1db454d32..a326a3d69b 100644 --- a/uninstall.php +++ b/uninstall.php @@ -137,6 +137,8 @@ private function delete_options() { delete_transient( 'gravityview_edd-activate_valid' ); delete_transient( 'gravityview_edd-deactivate_valid' ); delete_transient( 'gravityview_dismissed_notices' ); + + delete_site_option( 'gravityview_support_related_plugins' ); } } From 1cc2586b4b987435b31b919b1187916b2598dc0c Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Thu, 8 Oct 2015 12:30:55 -0600 Subject: [PATCH 5/5] Update readme --- includes/admin/class-gravityview-support-port.php | 4 ++-- readme.txt | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/includes/admin/class-gravityview-support-port.php b/includes/admin/class-gravityview-support-port.php index 36e3441df5..3395e07ec5 100644 --- a/includes/admin/class-gravityview-support-port.php +++ b/includes/admin/class-gravityview-support-port.php @@ -51,12 +51,12 @@ static function maybe_enqueue_script( $hook ) { } /** - * @filter `gravityview/support_port` Whether to display Support Port + * @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', self::show_for_user() ); + $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' ); diff --git a/readme.txt b/readme.txt index 54ee47d821..8109eaa592 100644 --- a/readme.txt +++ b/readme.txt @@ -35,6 +35,9 @@ Beautifully display your Gravity Forms entries. Learn more on [gravityview.co](h * Fixed: PHP Warnings * Tweak: Entry notes are now created using `GravityView_Entry_Notes` class * Tweak: Improved automated code testing +* Tweak: Added `gravityview/support_port/display` filter to enable/disable displaying Support Port +* Tweak: Added `gravityview/support_port/show_profile_setting` filter to disable adding the Support Port setting on User Profile pages +* Tweak: Removed `gravityview/admin/display_live_chat` filter = 1.14.2 & 1.14.3 on September 17 = * Fixed: Issue affecting Gravity Forms User Registration Addon. Passwords were being reset when an user edited their own entry.