From c847b5ad2313f615315d132b2cbefda751e72d9e Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Mon, 7 Dec 2015 12:18:33 -0700 Subject: [PATCH 001/113] Almost working Damn logic! --- assets/js/field-approval.js | 81 ++++++++++++++++++++++++ assets/js/field-approval.min.js | 1 + gravityview.php | 2 +- includes/class-admin-approve-entries.php | 16 +++-- includes/fields/approval.php | 70 ++++++++++++++++++++ templates/fields/approval.php | 27 ++++++++ 6 files changed, 192 insertions(+), 5 deletions(-) create mode 100644 assets/js/field-approval.js create mode 100644 assets/js/field-approval.min.js create mode 100644 includes/fields/approval.php create mode 100644 templates/fields/approval.php diff --git a/assets/js/field-approval.js b/assets/js/field-approval.js new file mode 100644 index 0000000000..9065b8346e --- /dev/null +++ b/assets/js/field-approval.js @@ -0,0 +1,81 @@ +/** + * Javascript for Entry Approval + * + * @package GravityView + * @license GPL2+ + * @author Katz Web Services, Inc. + * @link http://gravityview.co + * @copyright Copyright 2014, Katz Web Services, Inc. + * + * @since 1.0.0 + * + * globals jQuery, gvGlobals, ajaxurl + */ + +(function( $ ) { + + "use strict"; + + var self = { + 'response': { 'status': '' } + }; + + $(function() { + $( '.toggleApproved' ).on( 'click', self.toggle_approval ); + }); + + /** + * Toggle a specific entry + * + * @param e The clicked entry event object + * @returns {boolean} + */ + self.toggle_approval = function ( e ) { + e.preventDefault(); + + var entry_id = $( this ).attr('data-entry-id'); + var form_id = $( this ).attr('data-form-id'); + var is_approved = $( this ).attr( 'data-approved-status' ).toString(); + var set_approved = ( is_approved === '0' ) ? 'Approved' : '0'; + + $( this ).addClass( 'loading' ); + + self.update_approval( entry_id, form_id, set_approved, $( this ) ); + + console.log( self.response.status ); + + if( '0' !== self.response.status ) { + $( this ).attr( 'data-approved-status', 'Approved' ).prop( 'title', gvApproval.unapprove_title ).text( gvApproval.label_unapprove ).addClass( 'entry_approved' ); + } else { + $( this ).attr( 'data-approved-status', '0' ).prop( 'title', gvApproval.approve_title ).text( gvApproval.label_approve ).removeClass( 'entry_approved' ); + } + + return false; + }; + + /** + * Update an entry status via AJAX + */ + self.update_approval = function ( entry_id, form_id, set_approved, $target ) { + + var data = { + action: 'gv_update_approved', + entry_id: entry_id, + form_id: form_id, + approved: set_approved, + nonce: gvApproval.nonce + }; + + $.post( gvApproval.ajaxurl, data, function ( response ) { + if ( response ) { + self.response = $.parseJSON( response ); + console.log( self.response ); + + $target.removeClass( 'loading' ); + } + }); + + return true; + }; + +} (jQuery) ); diff --git a/assets/js/field-approval.min.js b/assets/js/field-approval.min.js new file mode 100644 index 0000000000..1fe87e576c --- /dev/null +++ b/assets/js/field-approval.min.js @@ -0,0 +1 @@ +!function($){"use strict";var self={response:{status:""}};$(function(){$(".toggleApproved").on("click",self.toggle_approval)}),self.toggle_approval=function(e){e.preventDefault();var entry_id=$(this).attr("data-entry-id"),form_id=$(this).attr("data-form-id"),is_approved=$(this).attr("data-approved-status").toString(),set_approved="0"===is_approved?"Approved":"0";return $(this).addClass("loading"),self.update_approval(entry_id,form_id,set_approved,$(this)),console.log(self.response.status),"0"!==self.response.status?$(this).attr("data-approved-status","Approved").prop("title",gvApproval.unapprove_title).text(gvApproval.label_unapprove).addClass("entry_approved"):$(this).attr("data-approved-status","0").prop("title",gvApproval.approve_title).text(gvApproval.label_approve).removeClass("entry_approved"),!1},self.update_approval=function(entry_id,form_id,set_approved,$target){var data={action:"gv_update_approved",entry_id:entry_id,form_id:form_id,approved:set_approved,nonce:gvApproval.nonce};return $.post(gvApproval.ajaxurl,data,function(response){response&&(self.response=$.parseJSON(response),console.log(self.response),$target.removeClass("loading"))}),!0}}(jQuery); \ No newline at end of file diff --git a/gravityview.php b/gravityview.php index 34fa3a3e84..2a9ce36530 100644 --- a/gravityview.php +++ b/gravityview.php @@ -39,7 +39,7 @@ define( 'GRAVITYVIEW_FILE', __FILE__ ); /** - * The URL to this file + * The URL to this file, with trailing slash */ define( 'GRAVITYVIEW_URL', plugin_dir_url( __FILE__ ) ); diff --git a/includes/class-admin-approve-entries.php b/includes/class-admin-approve-entries.php index 1a919b2108..57f577ba22 100644 --- a/includes/class-admin-approve-entries.php +++ b/includes/class-admin-approve-entries.php @@ -427,21 +427,26 @@ private static function update_approved_meta( $entry_id, $is_approved ) { */ public function ajax_update_approved() { - if( empty( $_POST['entry_id'] ) || empty( $_POST['form_id'] ) ) { + $entry_id = esc_attr( $_POST['entry_id'] ); + $form_id = esc_attr( $_POST['form_id'] ); + $nonce = esc_attr( $_POST['nonce'] ); + $approved_status = esc_attr( $_POST['approved'] ); + + if( empty( $entry_id ) || empty( $form_id ) ) { do_action( 'gravityview_log_error', __METHOD__ . ' entry_id or form_id are empty.', $_POST ); $result = false; } - else if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'gravityview_ajaxgfentries' ) ) { + else if ( ! isset( $nonce ) || ! wp_verify_nonce( $nonce, 'gravityview_ajaxgfentries' ) ) { do_action( 'gravityview_log_error', __METHOD__ . ' Security check failed.', $_POST ); $result = false; } - else if( ! GVCommon::has_cap( 'gravityview_moderate_entries', $_POST['entry_id'] ) ) { + else if( ! GVCommon::has_cap( 'gravityview_moderate_entries', $entry_id ) ) { do_action( 'gravityview_log_error', __METHOD__ . ' User does not have the `gravityview_moderate_entries` capability.' ); @@ -450,12 +455,15 @@ public function ajax_update_approved() { else { - $result = self::update_approved( $_POST['entry_id'], $_POST['approved'], $_POST['form_id'] ); + $result = self::update_approved( $entry_id, $approved_status, $form_id ); if( is_wp_error( $result ) ) { + /** @var WP_Error $result */ do_action( 'gravityview_log_error', __METHOD__ .' Error updating approval: ' . $result->get_error_message() ); $result = false; + } else { + $result = json_encode( array( 'status' => $approved_status ) ); } } diff --git a/includes/fields/approval.php b/includes/fields/approval.php new file mode 100644 index 0000000000..dbe89c0405 --- /dev/null +++ b/includes/fields/approval.php @@ -0,0 +1,70 @@ +label = esc_attr__( 'Approval', 'gravityview' ); + + $this->description = esc_attr__( 'Approve entries from the View. Requires users have `gravityview_moderate_entries` capability or higher.', 'gravityview' ); + + parent::__construct(); + + add_filter( 'gravityview_entry_default_fields', array( $this, 'filter_gravityview_entry_default_field' ), 10, 3 ); + + add_action( 'gravityview/fields/approval/load_scripts', array( $this, 'scripts' ) ); + + } + + function scripts() { + + if( wp_script_is( 'gravityview-field-approval' ) ) { + return; + } + + wp_enqueue_script( 'gravityview-field-approval', GRAVITYVIEW_URL . 'assets/js/field-approval.js', GravityView_Plugin::version, true ); + + wp_localize_script( 'gravityview-field-approval', 'gvApproval', array( + 'ajaxurl' => admin_url( 'admin-ajax.php' ), + 'nonce' => wp_create_nonce( 'gravityview_ajaxgfentries'), + 'text' => array( + 'label_approve' => __( 'Approve', 'gravityview' ) , + 'label_disapprove' => __( 'Disapprove', 'gravityview' ), + 'approve_title' => __( 'Entry not approved for directory viewing. Click to approve this entry.', 'gravityview'), + 'unapprove_title' => __( 'Entry approved for directory viewing. Click to disapprove this entry.', 'gravityview'), + ), + )); + + } + + /** + * Add Fields to the field list + * @param array $entry_default_fields Array of fields shown by default + * @param string|array $form form_ID or form object + * @param string $context Either 'single', 'directory', 'header', 'footer' + * + * @return mixed + */ + public function filter_gravityview_entry_default_field( $entry_default_fields, $form, $context ) { + + if( !isset( $entry_default_fields[ "{$this->name}" ] ) ) { + $entry_default_fields[ "{$this->name}" ] = array( + 'label' => $this->label, + 'desc' => $this->description, + 'type' => $this->name, + ); + } + + return $entry_default_fields; + } + +} + +new GravityView_Field_Approval; diff --git a/templates/fields/approval.php b/templates/fields/approval.php new file mode 100644 index 0000000000..e94a468ff5 --- /dev/null +++ b/templates/fields/approval.php @@ -0,0 +1,27 @@ +getCurrentEntry(); + +$approved = gform_get_meta( $entry['id'], 'is_approved' ); + +if( ! empty( $approved ) ) { + $title = __( 'Entry approved for directory viewing. Click to disapprove this entry.', 'gravityview'); + $anchor = __( 'Disapprove', 'gravityview' ); + $class = 'entry_approved'; +} else { + $anchor = __( 'Approve', 'gravityview' ); + $title = __( 'Entry not approved for directory viewing. Click to approve this entry.', 'gravityview' ); + $class = ''; +} + +?> + \ No newline at end of file From 6343c38418b9237f217a6bad3dac57bc72ceb18e Mon Sep 17 00:00:00 2001 From: Marc Gratch Date: Tue, 8 Dec 2015 20:36:43 -0600 Subject: [PATCH 002/113] moved attribute changes to update_approval and replaced gvApproval.label_approve with correct property names --- assets/js/field-approval.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/assets/js/field-approval.js b/assets/js/field-approval.js index 9065b8346e..e768b89df8 100644 --- a/assets/js/field-approval.js +++ b/assets/js/field-approval.js @@ -44,12 +44,6 @@ console.log( self.response.status ); - if( '0' !== self.response.status ) { - $( this ).attr( 'data-approved-status', 'Approved' ).prop( 'title', gvApproval.unapprove_title ).text( gvApproval.label_unapprove ).addClass( 'entry_approved' ); - } else { - $( this ).attr( 'data-approved-status', '0' ).prop( 'title', gvApproval.approve_title ).text( gvApproval.label_approve ).removeClass( 'entry_approved' ); - } - return false; }; @@ -71,6 +65,12 @@ self.response = $.parseJSON( response ); console.log( self.response ); + if( '0' !== self.response.status ) { + $target.attr( 'data-approved-status', 'Approved' ).prop( 'title', gvApproval.unapprove_title ).text( gvApproval.text.label_disapprove ).addClass( 'entry_approved' ); + } else { + $target.attr( 'data-approved-status', '0' ).prop( 'title', gvApproval.approve_title ).text( gvApproval.text.label_approve ).removeClass( 'entry_approved' ); + } + $target.removeClass( 'loading' ); } }); From fca58b40f0118bdf8f226f16edad7af1a386bd1c Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Tue, 8 Dec 2015 21:44:18 -0700 Subject: [PATCH 003/113] Improve structure a big * Rename filter from `gravityview/fields/approval/text` to `gravityview/field/approval/text` * Register script earlier, then enqueue later * Don't duplicate strings; create `get_strings()` method * Add `gravityview/field/approval/text`filter to modify text strings * Add docBlocks * Remove JS logging --- assets/js/field-approval.js | 3 -- assets/js/field-approval.min.js | 2 +- includes/fields/approval.php | 60 +++++++++++++++++++++++++++------ templates/fields/approval.php | 17 +++++++--- 4 files changed, 63 insertions(+), 19 deletions(-) diff --git a/assets/js/field-approval.js b/assets/js/field-approval.js index e768b89df8..9024be5063 100644 --- a/assets/js/field-approval.js +++ b/assets/js/field-approval.js @@ -42,8 +42,6 @@ self.update_approval( entry_id, form_id, set_approved, $( this ) ); - console.log( self.response.status ); - return false; }; @@ -63,7 +61,6 @@ $.post( gvApproval.ajaxurl, data, function ( response ) { if ( response ) { self.response = $.parseJSON( response ); - console.log( self.response ); if( '0' !== self.response.status ) { $target.attr( 'data-approved-status', 'Approved' ).prop( 'title', gvApproval.unapprove_title ).text( gvApproval.text.label_disapprove ).addClass( 'entry_approved' ); diff --git a/assets/js/field-approval.min.js b/assets/js/field-approval.min.js index 1fe87e576c..15011e8a78 100644 --- a/assets/js/field-approval.min.js +++ b/assets/js/field-approval.min.js @@ -1 +1 @@ -!function($){"use strict";var self={response:{status:""}};$(function(){$(".toggleApproved").on("click",self.toggle_approval)}),self.toggle_approval=function(e){e.preventDefault();var entry_id=$(this).attr("data-entry-id"),form_id=$(this).attr("data-form-id"),is_approved=$(this).attr("data-approved-status").toString(),set_approved="0"===is_approved?"Approved":"0";return $(this).addClass("loading"),self.update_approval(entry_id,form_id,set_approved,$(this)),console.log(self.response.status),"0"!==self.response.status?$(this).attr("data-approved-status","Approved").prop("title",gvApproval.unapprove_title).text(gvApproval.label_unapprove).addClass("entry_approved"):$(this).attr("data-approved-status","0").prop("title",gvApproval.approve_title).text(gvApproval.label_approve).removeClass("entry_approved"),!1},self.update_approval=function(entry_id,form_id,set_approved,$target){var data={action:"gv_update_approved",entry_id:entry_id,form_id:form_id,approved:set_approved,nonce:gvApproval.nonce};return $.post(gvApproval.ajaxurl,data,function(response){response&&(self.response=$.parseJSON(response),console.log(self.response),$target.removeClass("loading"))}),!0}}(jQuery); \ No newline at end of file +!function($){"use strict";var self={response:{status:""}};$(function(){$(".toggleApproved").on("click",self.toggle_approval)}),self.toggle_approval=function(e){e.preventDefault();var entry_id=$(this).attr("data-entry-id"),form_id=$(this).attr("data-form-id"),is_approved=$(this).attr("data-approved-status").toString(),set_approved="0"===is_approved?"Approved":"0";return $(this).addClass("loading"),self.update_approval(entry_id,form_id,set_approved,$(this)),!1},self.update_approval=function(entry_id,form_id,set_approved,$target){var data={action:"gv_update_approved",entry_id:entry_id,form_id:form_id,approved:set_approved,nonce:gvApproval.nonce};return $.post(gvApproval.ajaxurl,data,function(response){response&&(self.response=$.parseJSON(response),"0"!==self.response.status?$target.attr("data-approved-status","Approved").prop("title",gvApproval.unapprove_title).text(gvApproval.text.label_disapprove).addClass("entry_approved"):$target.attr("data-approved-status","0").prop("title",gvApproval.approve_title).text(gvApproval.text.label_approve).removeClass("entry_approved"),$target.removeClass("loading"))}),!0}}(jQuery); \ No newline at end of file diff --git a/includes/fields/approval.php b/includes/fields/approval.php index dbe89c0405..9389c139aa 100644 --- a/includes/fields/approval.php +++ b/includes/fields/approval.php @@ -7,8 +7,12 @@ class GravityView_Field_Approval extends GravityView_Field { var $name = 'approval'; + var $is_searchable = false; + var $group = 'gravityview'; + var $contexts = array( 'single', 'multiple' ); + public function __construct() { $this->label = esc_attr__( 'Approval', 'gravityview' ); @@ -19,27 +23,63 @@ public function __construct() { add_filter( 'gravityview_entry_default_fields', array( $this, 'filter_gravityview_entry_default_field' ), 10, 3 ); - add_action( 'gravityview/fields/approval/load_scripts', array( $this, 'scripts' ) ); + add_action( 'wp_enqueue_scripts', array( $this, 'register_script' ) ); + + add_action( 'gravityview/field/approval/load_scripts', array( $this, 'enqueue_and_localize_script' ) ); + + } + + /** + * Register the field approval script + * @since TODO + * @return void + */ + function register_script() { + wp_register_script( 'gravityview-field-approval', GRAVITYVIEW_URL . 'assets/js/field-approval.js', GravityView_Plugin::version, true ); + } + /** + * Get the strings used in the field approval field + * @since TODO + * @return array + */ + static public function get_strings() { + + /** + * @filter `gravityview/field/approval/text` Modify the text values used in field approval + * @param array $field_approval_text Array with `label_approve`, `label_disapprove`, `approve_title`, and `unapprove_title` keys. + * @since TODO + */ + $field_approval_text = apply_filters( 'gravityview/field/approval/text', array( + 'label_approve' => __( 'Approve', 'gravityview' ) , + 'label_disapprove' => __( 'Disapprove', 'gravityview' ), + 'approve_title' => __( 'Entry not approved for directory viewing. Click to approve this entry.', 'gravityview'), + 'unapprove_title' => __( 'Entry approved for directory viewing. Click to disapprove this entry.', 'gravityview'), + ) ); + + return $field_approval_text; } - function scripts() { + /** + * Register the field approval script and output the localized text JS variables + * @since TODO + * @return void + */ + function enqueue_and_localize_script() { - if( wp_script_is( 'gravityview-field-approval' ) ) { + // The script is already registered and enqueued + if( wp_script_is( 'gravityview-field-approval', 'enqueued' ) ) { return; } - wp_enqueue_script( 'gravityview-field-approval', GRAVITYVIEW_URL . 'assets/js/field-approval.js', GravityView_Plugin::version, true ); + wp_enqueue_script( 'gravityview-field-approval' ); + + $field_approval_text = self::get_strings(); wp_localize_script( 'gravityview-field-approval', 'gvApproval', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'gravityview_ajaxgfentries'), - 'text' => array( - 'label_approve' => __( 'Approve', 'gravityview' ) , - 'label_disapprove' => __( 'Disapprove', 'gravityview' ), - 'approve_title' => __( 'Entry not approved for directory viewing. Click to approve this entry.', 'gravityview'), - 'unapprove_title' => __( 'Entry approved for directory viewing. Click to disapprove this entry.', 'gravityview'), - ), + 'text' => array_map( 'esc_js', $field_approval_text ), )); } diff --git a/templates/fields/approval.php b/templates/fields/approval.php index e94a468ff5..88aab206c4 100644 --- a/templates/fields/approval.php +++ b/templates/fields/approval.php @@ -7,19 +7,26 @@ * */ -do_action( 'gravityview/fields/approval/load_scripts' ); +/** + * @action `gravityview/field/approval/load_scripts` Trigger loading the field approval javascript + * @see GravityView_Field_Approval::enqueue_and_localize_script + * @since TODO + */ +do_action( 'gravityview/field/approval/load_scripts' ); $entry = GravityView_View::getInstance()->getCurrentEntry(); $approved = gform_get_meta( $entry['id'], 'is_approved' ); +$strings = GravityView_Field_Approval::get_strings(); + if( ! empty( $approved ) ) { - $title = __( 'Entry approved for directory viewing. Click to disapprove this entry.', 'gravityview'); - $anchor = __( 'Disapprove', 'gravityview' ); + $anchor = $strings['label_disapprove']; + $title = $strings['unapprove_title']; $class = 'entry_approved'; } else { - $anchor = __( 'Approve', 'gravityview' ); - $title = __( 'Entry not approved for directory viewing. Click to approve this entry.', 'gravityview' ); + $title = $strings['approve_title']; + $anchor = $strings['label_approve']; $class = ''; } From 6312d0a700cec212dc41a2c0a2de0a541d30d239 Mon Sep 17 00:00:00 2001 From: Marc Gratch Date: Tue, 15 Dec 2015 16:07:36 -0600 Subject: [PATCH 004/113] empty values no longer require a double click, added check for .gv-datatable to fire after table draw. --- assets/js/field-approval.js | 41 +++++++++++++++++++++++++++-------- templates/fields/approval.php | 6 +++++ 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/assets/js/field-approval.js b/assets/js/field-approval.js index 9024be5063..3051b6ded9 100644 --- a/assets/js/field-approval.js +++ b/assets/js/field-approval.js @@ -18,12 +18,32 @@ var self = { 'response': { 'status': '' } - }; + }, maybeDT; $(function() { - $( '.toggleApproved' ).on( 'click', self.toggle_approval ); + maybeDT = $('.gv-datatables'); + self.dtCheck( maybeDT ); }); + /** + * Check if the DataTables Extension is in use + * @param maybeDT + */ + self.dtCheck = function( maybeDT ){ + + if (maybeDT.length !== 0){ + $(maybeDT).on( 'draw.dt', function () { + $( '.toggleApproved' ).on( 'click', function( e ) { + self.toggle_approval(e); + }); + }); + } else { + $( '.toggleApproved' ).on( 'click', function( e ) { + self.toggle_approval(e); + }); + } + }; + /** * Toggle a specific entry * @@ -33,14 +53,16 @@ self.toggle_approval = function ( e ) { e.preventDefault(); - var entry_id = $( this ).attr('data-entry-id'); - var form_id = $( this ).attr('data-form-id'); - var is_approved = $( this ).attr( 'data-approved-status' ).toString(); - var set_approved = ( is_approved === '0' ) ? 'Approved' : '0'; + var entry_id = $( e.target ).attr('data-entry-id'); + var form_id = $( e.target ).attr('data-form-id'); + var is_approved = $( e.target ).attr( 'data-approved-status').toString(); + var set_approved = ( is_approved === '' || is_approved === '0' ) ? 'Approved' : '0'; + + console.log(is_approved); $( this ).addClass( 'loading' ); - self.update_approval( entry_id, form_id, set_approved, $( this ) ); + self.update_approval( entry_id, form_id, set_approved, $( e.target ) ); return false; }; @@ -63,9 +85,10 @@ self.response = $.parseJSON( response ); if( '0' !== self.response.status ) { - $target.attr( 'data-approved-status', 'Approved' ).prop( 'title', gvApproval.unapprove_title ).text( gvApproval.text.label_disapprove ).addClass( 'entry_approved' ); + $target.attr( 'data-approved-status', 'Approved' ).prop( 'title', gvApproval.text.disapprove_title ).text( gvApproval.text.label_disapprove ).addClass( 'entry_approved' ); } else { - $target.attr( 'data-approved-status', '0' ).prop( 'title', gvApproval.approve_title ).text( gvApproval.text.label_approve ).removeClass( 'entry_approved' ); + $target.attr( 'data-approved-status', '0' ) + .prop( 'title', gvApproval.text.approve_title ).text( gvApproval.text.label_approve ).removeClass( 'entry_approved' ); } $target.removeClass( 'loading' ); diff --git a/templates/fields/approval.php b/templates/fields/approval.php index 88aab206c4..52dd06d40e 100644 --- a/templates/fields/approval.php +++ b/templates/fields/approval.php @@ -14,8 +14,14 @@ */ do_action( 'gravityview/field/approval/load_scripts' ); +global $gravityview_view; + $entry = GravityView_View::getInstance()->getCurrentEntry(); +if (empty($entry)){ + $entry = $gravityview_view->_current_field['entry']; +} + $approved = gform_get_meta( $entry['id'], 'is_approved' ); $strings = GravityView_Field_Approval::get_strings(); From c66b3e29a8daf4490c991a0bd02c1ad05e60a3b2 Mon Sep 17 00:00:00 2001 From: Marc Gratch Date: Tue, 15 Dec 2015 16:11:51 -0600 Subject: [PATCH 005/113] add approval field to sort drop down. Can't find where sorting is handled to actually set sort by functionality. --- includes/fields/approval.php | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/includes/fields/approval.php b/includes/fields/approval.php index 9389c139aa..563d5168db 100644 --- a/includes/fields/approval.php +++ b/includes/fields/approval.php @@ -27,6 +27,10 @@ public function __construct() { add_action( 'gravityview/field/approval/load_scripts', array( $this, 'enqueue_and_localize_script' ) ); + add_filter( 'gravityview/common/sortable_fields', array( $this, 'add_approval_field_to_sort_list' ), 10, 2 ); + + add_filter('gravityview_search_criteria', array( $this, 'enable_sorting_by_approval' ), 10, 4 ); + } /** @@ -105,6 +109,37 @@ public function filter_gravityview_entry_default_field( $entry_default_fields, $ return $entry_default_fields; } + /** + * Set the search query to sort by the is_approved meta field. + * @param $criteria + * @param $form_ids + * @param $view_id + * @return mixed + */ + public function enable_sorting_by_approval( $criteria, $form_ids, $view_id ) { + // If the search is being sorted + if( ! empty( $criteria['sorting']['key'] ) ) { + // $criteria['sorting']['key'] = 'is_approved'; + } + return $criteria; + } + + /** + * Add the Approval Field to the Sort Options Select Box + * @param $fields + * @param $formid + * @return mixed + */ + public function add_approval_field_to_sort_list( $fields, $formid ){ + $approval_field = array( + 'label' => $this->label, + 'type' => $this->name + ); + $fields['approval'] = $approval_field; + return $fields; + } + + } new GravityView_Field_Approval; From 646853be1663d31335ef6d049bf0bb0f30b13b8d Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Wed, 16 Dec 2015 12:40:23 -0700 Subject: [PATCH 006/113] Add entry_meta search and sort to GravityView_Field class The reason sorting wasn't working properly with the Approved field is because Gravity Forms adds custom SQL for searching entry meta values only when it finds that the sorting key matches a valid entry meta key. I've added a method to add entry meta key definitions directly into the GravityView_Field class. This fixes the sorting issue, @mgratch --- includes/fields/approval.php | 61 ++++++++++++--------- includes/fields/class-gravityview-field.php | 56 ++++++++++++++++++- 2 files changed, 91 insertions(+), 26 deletions(-) diff --git a/includes/fields/approval.php b/includes/fields/approval.php index 563d5168db..b6932782b3 100644 --- a/includes/fields/approval.php +++ b/includes/fields/approval.php @@ -7,7 +7,23 @@ class GravityView_Field_Approval extends GravityView_Field { var $name = 'approval'; - var $is_searchable = false; + var $is_searchable = true; + + var $is_sortable = true; + + var $is_numeric = false; + + /** + * @var string Approval status is stored in entry meta under this key + * @since TODO + */ + var $entry_meta_key = 'is_approved'; + + /** + * @var bool Don't add to the "columns to display" list; GravityView adds our own approval column + * @since TODO + */ + var $entry_meta_is_default_column = false; var $group = 'gravityview'; @@ -19,7 +35,16 @@ public function __construct() { $this->description = esc_attr__( 'Approve entries from the View. Requires users have `gravityview_moderate_entries` capability or higher.', 'gravityview' ); + $this->add_hooks(); + parent::__construct(); + } + + /** + * Add filters and actions for the field + * @since TODO + */ + private function add_hooks() { add_filter( 'gravityview_entry_default_fields', array( $this, 'filter_gravityview_entry_default_field' ), 10, 3 ); @@ -29,8 +54,6 @@ public function __construct() { add_filter( 'gravityview/common/sortable_fields', array( $this, 'add_approval_field_to_sort_list' ), 10, 2 ); - add_filter('gravityview_search_criteria', array( $this, 'enable_sorting_by_approval' ), 10, 4 ); - } /** @@ -109,37 +132,25 @@ public function filter_gravityview_entry_default_field( $entry_default_fields, $ return $entry_default_fields; } - /** - * Set the search query to sort by the is_approved meta field. - * @param $criteria - * @param $form_ids - * @param $view_id - * @return mixed - */ - public function enable_sorting_by_approval( $criteria, $form_ids, $view_id ) { - // If the search is being sorted - if( ! empty( $criteria['sorting']['key'] ) ) { - // $criteria['sorting']['key'] = 'is_approved'; - } - return $criteria; - } - /** * Add the Approval Field to the Sort Options Select Box - * @param $fields - * @param $formid - * @return mixed + * + * @param array $fields Sub-set of GF form fields that are sortable + * @param int $formid The Gravity Forms form ID that the fields are from + * @return array Modified $fields array to include approval status in the sorting dropdown */ public function add_approval_field_to_sort_list( $fields, $formid ){ + $approval_field = array( - 'label' => $this->label, - 'type' => $this->name + 'label' => $this->label, + 'type' => $this->name ); - $fields['approval'] = $approval_field; + + $fields["{$this->entry_meta_key}"] = $approval_field; + return $fields; } - } new GravityView_Field_Approval; diff --git a/includes/fields/class-gravityview-field.php b/includes/fields/class-gravityview-field.php index c16c5218a6..0502fc03cc 100644 --- a/includes/fields/class-gravityview-field.php +++ b/includes/fields/class-gravityview-field.php @@ -20,7 +20,6 @@ abstract class GravityView_Field { var $description; /** - * @internal Not yet implemented * @since 1.15.2 * @type string The label of the field in the field picker */ @@ -61,6 +60,26 @@ abstract class GravityView_Field { */ var $is_numeric; + /** + * @var null|string The key used to search and sort entry meta in Gravity Forms. Used if the field stores data as custom entry meta. + * @see https://www.gravityhelp.com/documentation/article/gform_entry_meta/ + * @since TODO + */ + var $entry_meta_key = null; + + /** + * @var string|array Optional. The callback function after entry meta is updated, only used if $entry_meta_key is set. + * @see https://www.gravityhelp.com/documentation/article/gform_entry_meta/ + * @since TODO + */ + var $entry_meta_update_callback = null; + + /** + * @var bool Whether to show meta when set to true automatically adds the column to the entry list, without having to edit and add the column for display + * @since TODO + */ + var $entry_meta_is_default_column = false; + /** * @internal Not yet implemented * @todo implement supports_context() method @@ -96,6 +115,41 @@ function __construct() { // Modify the field options based on the name of the field type add_filter( sprintf( 'gravityview_template_%s_options', $this->name ), array( &$this, 'field_options' ), 10, 5 ); + if( ! empty( $this->entry_meta_key ) ) { + add_filter( 'gform_entry_meta', array( $this, 'add_entry_meta' ) ); + } + } + + /** + * Add the custom entry meta key to make it searchable and sortable + * + * @see https://www.gravityhelp.com/documentation/article/gform_entry_meta/ + * + * @param array $entry_meta Array of custom entry meta keys with associative arrays + * + * @return mixed + */ + function add_entry_meta( $entry_meta ) { + + if( ! isset( $entry_meta["{$this->entry_meta_key}"] ) ) { + + $added_meta = array( + 'label' => $this->label, + 'is_numeric' => $this->is_numeric, + 'is_default_column' => $this->entry_meta_is_default_column, + ); + + if ( $this->entry_meta_update_callback && is_callable( $this->entry_meta_update_callback ) ) { + $added_meta['update_entry_meta_callback'] = $this->entry_meta_update_callback; + } + + $entry_meta["{$this->entry_meta_key}"] = $added_meta; + + } else { + do_action( 'gravityview_log_error', __METHOD__ . ' Entry meta already set: ' . $this->entry_meta_key, $entry_meta["{$this->entry_meta_key}"] ); + } + + return $entry_meta; } private function field_support_options() { From 7b20e3bdf1ad09f15fd6d71f96e55e3155b2b5ba Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Wed, 16 Dec 2015 12:46:03 -0700 Subject: [PATCH 007/113] Make adding sortable field a generic class method This will be re-used for other meta fields --- includes/fields/approval.php | 21 -------------------- includes/fields/class-gravityview-field.php | 22 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/includes/fields/approval.php b/includes/fields/approval.php index b6932782b3..8cbabcf0a5 100644 --- a/includes/fields/approval.php +++ b/includes/fields/approval.php @@ -52,8 +52,6 @@ private function add_hooks() { add_action( 'gravityview/field/approval/load_scripts', array( $this, 'enqueue_and_localize_script' ) ); - add_filter( 'gravityview/common/sortable_fields', array( $this, 'add_approval_field_to_sort_list' ), 10, 2 ); - } /** @@ -132,25 +130,6 @@ public function filter_gravityview_entry_default_field( $entry_default_fields, $ return $entry_default_fields; } - /** - * Add the Approval Field to the Sort Options Select Box - * - * @param array $fields Sub-set of GF form fields that are sortable - * @param int $formid The Gravity Forms form ID that the fields are from - * @return array Modified $fields array to include approval status in the sorting dropdown - */ - public function add_approval_field_to_sort_list( $fields, $formid ){ - - $approval_field = array( - 'label' => $this->label, - 'type' => $this->name - ); - - $fields["{$this->entry_meta_key}"] = $approval_field; - - return $fields; - } - } new GravityView_Field_Approval; diff --git a/includes/fields/class-gravityview-field.php b/includes/fields/class-gravityview-field.php index 7d37a14acf..ade4f9df3c 100644 --- a/includes/fields/class-gravityview-field.php +++ b/includes/fields/class-gravityview-field.php @@ -118,6 +118,7 @@ function __construct() { if( ! empty( $this->entry_meta_key ) ) { add_filter( 'gform_entry_meta', array( $this, 'add_entry_meta' ) ); + add_filter( 'gravityview/common/sortable_fields', array( $this, 'add_sortable_field' ), 10, 2 ); } } @@ -153,6 +154,27 @@ function add_entry_meta( $entry_meta ) { return $entry_meta; } + /** + * Add the field to the Filter & Sort available fields + * + * @since TODO + * + * @param array $fields Sub-set of GF form fields that are sortable + * + * @return array Modified $fields array to include approval status in the sorting dropdown + */ + public function add_sortable_field( $fields ){ + + $added_field = array( + 'label' => $this->label, + 'type' => $this->name + ); + + $fields["{$this->entry_meta_key}"] = $added_field; + + return $fields; + } + /** * Use field settings to modify whether a field is sortable * From 98e3171a4f289ad575be5dcd1d491b85fc83d3a3 Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Wed, 16 Dec 2015 15:14:19 -0700 Subject: [PATCH 008/113] Add minified script support --- includes/fields/approval.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/includes/fields/approval.php b/includes/fields/approval.php index 8cbabcf0a5..e075668a2c 100644 --- a/includes/fields/approval.php +++ b/includes/fields/approval.php @@ -60,7 +60,8 @@ private function add_hooks() { * @return void */ function register_script() { - wp_register_script( 'gravityview-field-approval', GRAVITYVIEW_URL . 'assets/js/field-approval.js', GravityView_Plugin::version, true ); + $script_debug = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min'; + wp_register_script( 'gravityview-field-approval', GRAVITYVIEW_URL . 'assets/js/field-approval'.$script_debug.'.js', GravityView_Plugin::version, true ); } /** From 137c03c1f4ace8388adde1cb8c87f6cfa301eb86 Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Wed, 16 Dec 2015 15:15:26 -0700 Subject: [PATCH 009/113] Refactor a bit * Define variables for selectors * Add additional debugging data * Add `debug` variable to enable/disable logging --- assets/js/field-approval.js | 73 +++++++++++++++++++++++---------- assets/js/field-approval.min.js | 2 +- 2 files changed, 53 insertions(+), 22 deletions(-) diff --git a/assets/js/field-approval.js b/assets/js/field-approval.js index 3051b6ded9..c33289d17d 100644 --- a/assets/js/field-approval.js +++ b/assets/js/field-approval.js @@ -17,33 +17,52 @@ "use strict"; var self = { - 'response': { 'status': '' } - }, maybeDT; + 'response': { 'status': '' }, + + /** + * @var {boolean} True: print console logs; false: don't + */ + 'debug': false, + + /** + * @var {string} jQuery selector used to find if datatables exist + */ + 'dt_selector': '.gv-datatables', + + /** + * @var {string} jQuery selector used to find approval target + */ + 'selector': '.toggleApproved' + }; $(function() { - maybeDT = $('.gv-datatables'); - self.dtCheck( maybeDT ); + self.setup_triggers(); }); /** - * Check if the DataTables Extension is in use - * @param maybeDT + * Checks whether there's DataTables table. If so, uses different trigger. + * @returns {void} */ - self.dtCheck = function( maybeDT ){ - - if (maybeDT.length !== 0){ - $(maybeDT).on( 'draw.dt', function () { - $( '.toggleApproved' ).on( 'click', function( e ) { - self.toggle_approval(e); - }); - }); + self.setup_triggers = function(){ + + var maybeDT = $( self.dt_selector ); + + if ( maybeDT.length > 0 ){ + $( '.gv-datatables' ).on( 'draw.dt', self.add_toggle_approval_trigger ); } else { - $( '.toggleApproved' ).on( 'click', function( e ) { - self.toggle_approval(e); - }); + self.add_toggle_approval_trigger(); } }; + /** + * Bind a trigger to the selector element + */ + self.add_toggle_approval_trigger = function() { + $( self.selector ).on( 'click', function( e ) { + self.toggle_approval( e ); + }); + }; + /** * Toggle a specific entry * @@ -58,7 +77,9 @@ var is_approved = $( e.target ).attr( 'data-approved-status').toString(); var set_approved = ( is_approved === '' || is_approved === '0' ) ? 'Approved' : '0'; - console.log(is_approved); + if( self.debug ) { + console.log( 'toggle_approval', { 'target': e.target, 'is_approved': is_approved }); + } $( this ).addClass( 'loading' ); @@ -85,14 +106,24 @@ self.response = $.parseJSON( response ); if( '0' !== self.response.status ) { - $target.attr( 'data-approved-status', 'Approved' ).prop( 'title', gvApproval.text.disapprove_title ).text( gvApproval.text.label_disapprove ).addClass( 'entry_approved' ); + $target + .attr( 'data-approved-status', 'Approved' ) + .prop( 'title', gvApproval.text.disapprove_title ) + .text( gvApproval.text.label_disapprove ) + .addClass( 'entry_approved' ); } else { - $target.attr( 'data-approved-status', '0' ) - .prop( 'title', gvApproval.text.approve_title ).text( gvApproval.text.label_approve ).removeClass( 'entry_approved' ); + $target + .attr( 'data-approved-status', '0' ) + .prop( 'title', gvApproval.text.approve_title ) + .text( gvApproval.text.label_approve ) + .removeClass( 'entry_approved' ); } $target.removeClass( 'loading' ); } + if( self.debug ) { + console.log( 'update_approval', { 'data': data, 'response': response }); + } }); return true; diff --git a/assets/js/field-approval.min.js b/assets/js/field-approval.min.js index 15011e8a78..24efac5c76 100644 --- a/assets/js/field-approval.min.js +++ b/assets/js/field-approval.min.js @@ -1 +1 @@ -!function($){"use strict";var self={response:{status:""}};$(function(){$(".toggleApproved").on("click",self.toggle_approval)}),self.toggle_approval=function(e){e.preventDefault();var entry_id=$(this).attr("data-entry-id"),form_id=$(this).attr("data-form-id"),is_approved=$(this).attr("data-approved-status").toString(),set_approved="0"===is_approved?"Approved":"0";return $(this).addClass("loading"),self.update_approval(entry_id,form_id,set_approved,$(this)),!1},self.update_approval=function(entry_id,form_id,set_approved,$target){var data={action:"gv_update_approved",entry_id:entry_id,form_id:form_id,approved:set_approved,nonce:gvApproval.nonce};return $.post(gvApproval.ajaxurl,data,function(response){response&&(self.response=$.parseJSON(response),"0"!==self.response.status?$target.attr("data-approved-status","Approved").prop("title",gvApproval.unapprove_title).text(gvApproval.text.label_disapprove).addClass("entry_approved"):$target.attr("data-approved-status","0").prop("title",gvApproval.approve_title).text(gvApproval.text.label_approve).removeClass("entry_approved"),$target.removeClass("loading"))}),!0}}(jQuery); \ No newline at end of file +!function($){"use strict";var self={response:{status:""},debug:!1,dt_selector:".gv-datatables",selector:".toggleApproved"};$(function(){self.setup_triggers()}),self.setup_triggers=function(){var maybeDT=$(self.dt_selector);maybeDT.length>0?$(".gv-datatables").on("draw.dt",self.add_toggle_approval_trigger):self.add_toggle_approval_trigger()},self.add_toggle_approval_trigger=function(){$(self.selector).on("click",function(e){self.toggle_approval(e)})},self.toggle_approval=function(e){e.preventDefault();var entry_id=$(e.target).attr("data-entry-id"),form_id=$(e.target).attr("data-form-id"),is_approved=$(e.target).attr("data-approved-status").toString(),set_approved=""===is_approved||"0"===is_approved?"Approved":"0";return self.debug&&console.log("toggle_approval",{target:e.target,is_approved:is_approved}),$(this).addClass("loading"),self.update_approval(entry_id,form_id,set_approved,$(e.target)),!1},self.update_approval=function(entry_id,form_id,set_approved,$target){var data={action:"gv_update_approved",entry_id:entry_id,form_id:form_id,approved:set_approved,nonce:gvApproval.nonce};return $.post(gvApproval.ajaxurl,data,function(response){response&&(self.response=$.parseJSON(response),"0"!==self.response.status?$target.attr("data-approved-status","Approved").prop("title",gvApproval.text.disapprove_title).text(gvApproval.text.label_disapprove).addClass("entry_approved"):$target.attr("data-approved-status","0").prop("title",gvApproval.text.approve_title).text(gvApproval.text.label_approve).removeClass("entry_approved"),$target.removeClass("loading")),self.debug&&console.log("update_approval",{data:data,response:response})}),!0}}(jQuery); \ No newline at end of file From 2b3a53b0d20330363c9080647acb0f3bbba240a7 Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Wed, 16 Dec 2015 16:48:00 -0700 Subject: [PATCH 010/113] Change `toggleApproved` to `gv-approval-toggle` Also, change `entry_approved` to `gv-approval-approved`. This is to be more internally consistent with naming patterns. --- assets/js/field-approval.js | 11 ++++++++--- assets/js/field-approval.min.js | 2 +- templates/fields/approval.php | 16 +++++----------- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/assets/js/field-approval.js b/assets/js/field-approval.js index c33289d17d..b78c52340e 100644 --- a/assets/js/field-approval.js +++ b/assets/js/field-approval.js @@ -29,10 +29,15 @@ */ 'dt_selector': '.gv-datatables', + /** + * @var {string} The class added and removed based on whether entry is approved + */ + 'approved_css_class': 'gv-approval-approved', + /** * @var {string} jQuery selector used to find approval target */ - 'selector': '.toggleApproved' + 'selector': '.gv-approval-toggle' }; $(function() { @@ -110,13 +115,13 @@ .attr( 'data-approved-status', 'Approved' ) .prop( 'title', gvApproval.text.disapprove_title ) .text( gvApproval.text.label_disapprove ) - .addClass( 'entry_approved' ); + .addClass( self.approved_css_class ); } else { $target .attr( 'data-approved-status', '0' ) .prop( 'title', gvApproval.text.approve_title ) .text( gvApproval.text.label_approve ) - .removeClass( 'entry_approved' ); + .removeClass( self.approved_css_class ); } $target.removeClass( 'loading' ); diff --git a/assets/js/field-approval.min.js b/assets/js/field-approval.min.js index 24efac5c76..cd12d47a77 100644 --- a/assets/js/field-approval.min.js +++ b/assets/js/field-approval.min.js @@ -1 +1 @@ -!function($){"use strict";var self={response:{status:""},debug:!1,dt_selector:".gv-datatables",selector:".toggleApproved"};$(function(){self.setup_triggers()}),self.setup_triggers=function(){var maybeDT=$(self.dt_selector);maybeDT.length>0?$(".gv-datatables").on("draw.dt",self.add_toggle_approval_trigger):self.add_toggle_approval_trigger()},self.add_toggle_approval_trigger=function(){$(self.selector).on("click",function(e){self.toggle_approval(e)})},self.toggle_approval=function(e){e.preventDefault();var entry_id=$(e.target).attr("data-entry-id"),form_id=$(e.target).attr("data-form-id"),is_approved=$(e.target).attr("data-approved-status").toString(),set_approved=""===is_approved||"0"===is_approved?"Approved":"0";return self.debug&&console.log("toggle_approval",{target:e.target,is_approved:is_approved}),$(this).addClass("loading"),self.update_approval(entry_id,form_id,set_approved,$(e.target)),!1},self.update_approval=function(entry_id,form_id,set_approved,$target){var data={action:"gv_update_approved",entry_id:entry_id,form_id:form_id,approved:set_approved,nonce:gvApproval.nonce};return $.post(gvApproval.ajaxurl,data,function(response){response&&(self.response=$.parseJSON(response),"0"!==self.response.status?$target.attr("data-approved-status","Approved").prop("title",gvApproval.text.disapprove_title).text(gvApproval.text.label_disapprove).addClass("entry_approved"):$target.attr("data-approved-status","0").prop("title",gvApproval.text.approve_title).text(gvApproval.text.label_approve).removeClass("entry_approved"),$target.removeClass("loading")),self.debug&&console.log("update_approval",{data:data,response:response})}),!0}}(jQuery); \ No newline at end of file +!function($){"use strict";var self={response:{status:""},debug:!1,dt_selector:".gv-datatables",approved_css_class:"gv-approval-approved",selector:".gv-approval-toggle"};$(function(){self.setup_triggers()}),self.setup_triggers=function(){var maybeDT=$(self.dt_selector);maybeDT.length>0?$(".gv-datatables").on("draw.dt",self.add_toggle_approval_trigger):self.add_toggle_approval_trigger()},self.add_toggle_approval_trigger=function(){$(self.selector).on("click",function(e){self.toggle_approval(e)})},self.toggle_approval=function(e){e.preventDefault();var entry_id=$(e.target).attr("data-entry-id"),form_id=$(e.target).attr("data-form-id"),is_approved=$(e.target).attr("data-approved-status").toString(),set_approved=""===is_approved||"0"===is_approved?"Approved":"0";return self.debug&&console.log("toggle_approval",{target:e.target,is_approved:is_approved}),$(this).addClass("loading"),self.update_approval(entry_id,form_id,set_approved,$(e.target)),!1},self.update_approval=function(entry_id,form_id,set_approved,$target){var data={action:"gv_update_approved",entry_id:entry_id,form_id:form_id,approved:set_approved,nonce:gvApproval.nonce};return $.post(gvApproval.ajaxurl,data,function(response){response&&(self.response=$.parseJSON(response),"0"!==self.response.status?$target.attr("data-approved-status","Approved").prop("title",gvApproval.text.disapprove_title).text(gvApproval.text.label_disapprove).addClass(self.approved_css_class):$target.attr("data-approved-status","0").prop("title",gvApproval.text.approve_title).text(gvApproval.text.label_approve).removeClass(self.approved_css_class),$target.removeClass("loading")),self.debug&&console.log("update_approval",{data:data,response:response})}),!0}}(jQuery); \ No newline at end of file diff --git a/templates/fields/approval.php b/templates/fields/approval.php index 52dd06d40e..bd458326c3 100644 --- a/templates/fields/approval.php +++ b/templates/fields/approval.php @@ -23,18 +23,12 @@ } $approved = gform_get_meta( $entry['id'], 'is_approved' ); +$is_approved = ! empty( $approved ); $strings = GravityView_Field_Approval::get_strings(); - -if( ! empty( $approved ) ) { - $anchor = $strings['label_disapprove']; - $title = $strings['unapprove_title']; - $class = 'entry_approved'; -} else { - $title = $strings['approve_title']; - $anchor = $strings['label_approve']; - $class = ''; -} +$anchor = $is_approved ? $strings['label_disapprove'] : $strings['label_approve']; +$title = $is_approved ? $strings['unapprove_title'] : $strings['approve_title']; +$class = $is_approved ? 'gv-approval-approved' : ''; ?> - \ No newline at end of file + \ No newline at end of file From 133ccf6edfcf855393e10e16a05ea9a6d506e6b8 Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Wed, 16 Dec 2015 16:51:16 -0700 Subject: [PATCH 011/113] Fix fetching current entry with DataTables extension --- includes/class-template.php | 10 ++++++++-- templates/fields/approval.php | 6 ------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/includes/class-template.php b/includes/class-template.php index be3d0a4dea..006443f988 100644 --- a/includes/class-template.php +++ b/includes/class-template.php @@ -550,10 +550,16 @@ public function getCurrentEntry() { if( in_array( $this->getContext(), array( 'edit', 'single') ) ) { $entries = $this->getEntries(); - return $entries[0]; + $entry = $entries[0]; + } else { + $entry = $this->_current_entry; + } + + if ( empty( $entry ) && ! empty( $this->_current_field['entry'] ) ) { + $entry = $this->_current_field['entry']; } - return $this->_current_entry; + return $entry; } /** diff --git a/templates/fields/approval.php b/templates/fields/approval.php index bd458326c3..efc530ccaa 100644 --- a/templates/fields/approval.php +++ b/templates/fields/approval.php @@ -14,14 +14,8 @@ */ do_action( 'gravityview/field/approval/load_scripts' ); -global $gravityview_view; - $entry = GravityView_View::getInstance()->getCurrentEntry(); -if (empty($entry)){ - $entry = $gravityview_view->_current_field['entry']; -} - $approved = gform_get_meta( $entry['id'], 'is_approved' ); $is_approved = ! empty( $approved ); From 5b3ca05446faac7a1af358c25a9849b1f254a931 Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Wed, 16 Dec 2015 16:59:07 -0700 Subject: [PATCH 012/113] Fix `loading` CSS class; update CSS class to namespace --- assets/js/field-approval.js | 13 ++++++++----- assets/js/field-approval.min.js | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/assets/js/field-approval.js b/assets/js/field-approval.js index b78c52340e..6aea2071d0 100644 --- a/assets/js/field-approval.js +++ b/assets/js/field-approval.js @@ -32,7 +32,10 @@ /** * @var {string} The class added and removed based on whether entry is approved */ - 'approved_css_class': 'gv-approval-approved', + 'css_classes': { + 'approved': 'gv-approval-approved', + 'loading': 'gv-approval-loading' + }, /** * @var {string} jQuery selector used to find approval target @@ -86,7 +89,7 @@ console.log( 'toggle_approval', { 'target': e.target, 'is_approved': is_approved }); } - $( this ).addClass( 'loading' ); + $( e.target ).addClass( self.css_classes.loading ); self.update_approval( entry_id, form_id, set_approved, $( e.target ) ); @@ -115,16 +118,16 @@ .attr( 'data-approved-status', 'Approved' ) .prop( 'title', gvApproval.text.disapprove_title ) .text( gvApproval.text.label_disapprove ) - .addClass( self.approved_css_class ); + .addClass( self.css_classes.approved ); } else { $target .attr( 'data-approved-status', '0' ) .prop( 'title', gvApproval.text.approve_title ) .text( gvApproval.text.label_approve ) - .removeClass( self.approved_css_class ); + .removeClass( self.css_classes.approved ); } - $target.removeClass( 'loading' ); + $target.removeClass( self.css_classes.loading ); } if( self.debug ) { console.log( 'update_approval', { 'data': data, 'response': response }); diff --git a/assets/js/field-approval.min.js b/assets/js/field-approval.min.js index cd12d47a77..451c7b66f5 100644 --- a/assets/js/field-approval.min.js +++ b/assets/js/field-approval.min.js @@ -1 +1 @@ -!function($){"use strict";var self={response:{status:""},debug:!1,dt_selector:".gv-datatables",approved_css_class:"gv-approval-approved",selector:".gv-approval-toggle"};$(function(){self.setup_triggers()}),self.setup_triggers=function(){var maybeDT=$(self.dt_selector);maybeDT.length>0?$(".gv-datatables").on("draw.dt",self.add_toggle_approval_trigger):self.add_toggle_approval_trigger()},self.add_toggle_approval_trigger=function(){$(self.selector).on("click",function(e){self.toggle_approval(e)})},self.toggle_approval=function(e){e.preventDefault();var entry_id=$(e.target).attr("data-entry-id"),form_id=$(e.target).attr("data-form-id"),is_approved=$(e.target).attr("data-approved-status").toString(),set_approved=""===is_approved||"0"===is_approved?"Approved":"0";return self.debug&&console.log("toggle_approval",{target:e.target,is_approved:is_approved}),$(this).addClass("loading"),self.update_approval(entry_id,form_id,set_approved,$(e.target)),!1},self.update_approval=function(entry_id,form_id,set_approved,$target){var data={action:"gv_update_approved",entry_id:entry_id,form_id:form_id,approved:set_approved,nonce:gvApproval.nonce};return $.post(gvApproval.ajaxurl,data,function(response){response&&(self.response=$.parseJSON(response),"0"!==self.response.status?$target.attr("data-approved-status","Approved").prop("title",gvApproval.text.disapprove_title).text(gvApproval.text.label_disapprove).addClass(self.approved_css_class):$target.attr("data-approved-status","0").prop("title",gvApproval.text.approve_title).text(gvApproval.text.label_approve).removeClass(self.approved_css_class),$target.removeClass("loading")),self.debug&&console.log("update_approval",{data:data,response:response})}),!0}}(jQuery); \ No newline at end of file +!function($){"use strict";var self={response:{status:""},debug:!1,dt_selector:".gv-datatables",css_classes:{approved:"gv-approval-approved",loading:"gv-approval-loading"},selector:".gv-approval-toggle"};$(function(){self.setup_triggers()}),self.setup_triggers=function(){var maybeDT=$(self.dt_selector);maybeDT.length>0?$(".gv-datatables").on("draw.dt",self.add_toggle_approval_trigger):self.add_toggle_approval_trigger()},self.add_toggle_approval_trigger=function(){$(self.selector).on("click",function(e){self.toggle_approval(e)})},self.toggle_approval=function(e){e.preventDefault();var entry_id=$(e.target).attr("data-entry-id"),form_id=$(e.target).attr("data-form-id"),is_approved=$(e.target).attr("data-approved-status").toString(),set_approved=""===is_approved||"0"===is_approved?"Approved":"0";return self.debug&&console.log("toggle_approval",{target:e.target,is_approved:is_approved}),$(e.target).addClass(self.css_classes.loading),self.update_approval(entry_id,form_id,set_approved,$(e.target)),!1},self.update_approval=function(entry_id,form_id,set_approved,$target){var data={action:"gv_update_approved",entry_id:entry_id,form_id:form_id,approved:set_approved,nonce:gvApproval.nonce};return $.post(gvApproval.ajaxurl,data,function(response){response&&(self.response=$.parseJSON(response),"0"!==self.response.status?$target.attr("data-approved-status","Approved").prop("title",gvApproval.text.disapprove_title).text(gvApproval.text.label_disapprove).addClass(self.css_classes.approved):$target.attr("data-approved-status","0").prop("title",gvApproval.text.approve_title).text(gvApproval.text.label_approve).removeClass(self.css_classes.approved),$target.removeClass(self.css_classes.loading)),self.debug&&console.log("update_approval",{data:data,response:response})}),!0}}(jQuery); \ No newline at end of file From 27ef674b747709115b0da190a22b6964dece3c9c Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Wed, 16 Dec 2015 17:02:27 -0700 Subject: [PATCH 013/113] Fix enqueuing script (add $deps arg) --- includes/fields/approval.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/fields/approval.php b/includes/fields/approval.php index e075668a2c..b5b1ca7d0e 100644 --- a/includes/fields/approval.php +++ b/includes/fields/approval.php @@ -61,7 +61,7 @@ private function add_hooks() { */ function register_script() { $script_debug = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min'; - wp_register_script( 'gravityview-field-approval', GRAVITYVIEW_URL . 'assets/js/field-approval'.$script_debug.'.js', GravityView_Plugin::version, true ); + wp_register_script( 'gravityview-field-approval', GRAVITYVIEW_URL . 'assets/js/field-approval'.$script_debug.'.js', array( 'jquery' ), GravityView_Plugin::version, true ); } /** From 649729b15d18c67c101dda6bf7c5cedcbc7d7cf5 Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Wed, 16 Dec 2015 21:52:57 -0700 Subject: [PATCH 014/113] Add styles This should be icons. I didn't want to load dashicons for load time reasons, but since the Approval field will only be displayed to logged-in users, and most users have the Toolbar already displayed, it shouldn't actually add any overhead. The styles should continue to be tweaked. --- assets/css/field-approval.css | 1 + assets/css/scss/field-approval.scss | 54 +++++++++++++++++++++++++++++ assets/js/field-approval.js | 10 +++--- assets/js/field-approval.min.js | 2 +- includes/fields/approval.php | 24 ++++++++++--- templates/fields/approval.php | 2 +- 6 files changed, 83 insertions(+), 10 deletions(-) create mode 100644 assets/css/field-approval.css create mode 100644 assets/css/scss/field-approval.scss diff --git a/assets/css/field-approval.css b/assets/css/field-approval.css new file mode 100644 index 0000000000..b359a7c938 --- /dev/null +++ b/assets/css/field-approval.css @@ -0,0 +1 @@ +.gv-approval-toggle{color:#008000;text-decoration:none;border-bottom:none !important;}.gv-approval-toggle span.screen-reader-text{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0;}.gv-approval-toggle:before{font-family:"dashicons";display:inline-block;cursor:pointer;content:"\f147";width:24px;height:24px;font-size:24px;}.gv-approval-toggle.gv-approval-approved{color:#981225;}.gv-approval-toggle.gv-approval-approved:before{content:"\f158";}.gv-approval-toggle.gv-approval-loading{cursor:wait !important;} \ No newline at end of file diff --git a/assets/css/scss/field-approval.scss b/assets/css/scss/field-approval.scss new file mode 100644 index 0000000000..89346512c1 --- /dev/null +++ b/assets/css/scss/field-approval.scss @@ -0,0 +1,54 @@ +/** + * Styles for GravityView frontend Approve/Unapprove toggles + * @since TODO + */ + +.gv-approval-toggle { + + /** + * Change the icon size + */ + $font-size: 24px; + + color: #008000; + + text-decoration: none; + border-bottom: none!important; + + /** + * The label for the icons + */ + span.screen-reader-text { + position: absolute; + margin: -1px; + padding: 0; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; + } + + &:before { + font-family: "dashicons"; + display: inline-block; + cursor: pointer; + content: "\f147"; + width: $font-size; + height: $font-size; + font-size: $font-size; + } + + &.gv-approval-approved { + color: #981225; + + &:before { + content: "\f158"; + } + } + + &.gv-approval-loading { + cursor: wait !important; + } + +} \ No newline at end of file diff --git a/assets/js/field-approval.js b/assets/js/field-approval.js index 6aea2071d0..7b322bf1e1 100644 --- a/assets/js/field-approval.js +++ b/assets/js/field-approval.js @@ -117,14 +117,16 @@ $target .attr( 'data-approved-status', 'Approved' ) .prop( 'title', gvApproval.text.disapprove_title ) - .text( gvApproval.text.label_disapprove ) - .addClass( self.css_classes.approved ); + .addClass( self.css_classes.approved ) + .find('span') + .text( gvApproval.text.label_disapprove ); } else { $target .attr( 'data-approved-status', '0' ) .prop( 'title', gvApproval.text.approve_title ) - .text( gvApproval.text.label_approve ) - .removeClass( self.css_classes.approved ); + .removeClass( self.css_classes.approved ) + .find('span') + .text( gvApproval.text.label_approve ); } $target.removeClass( self.css_classes.loading ); diff --git a/assets/js/field-approval.min.js b/assets/js/field-approval.min.js index 451c7b66f5..676d053fbf 100644 --- a/assets/js/field-approval.min.js +++ b/assets/js/field-approval.min.js @@ -1 +1 @@ -!function($){"use strict";var self={response:{status:""},debug:!1,dt_selector:".gv-datatables",css_classes:{approved:"gv-approval-approved",loading:"gv-approval-loading"},selector:".gv-approval-toggle"};$(function(){self.setup_triggers()}),self.setup_triggers=function(){var maybeDT=$(self.dt_selector);maybeDT.length>0?$(".gv-datatables").on("draw.dt",self.add_toggle_approval_trigger):self.add_toggle_approval_trigger()},self.add_toggle_approval_trigger=function(){$(self.selector).on("click",function(e){self.toggle_approval(e)})},self.toggle_approval=function(e){e.preventDefault();var entry_id=$(e.target).attr("data-entry-id"),form_id=$(e.target).attr("data-form-id"),is_approved=$(e.target).attr("data-approved-status").toString(),set_approved=""===is_approved||"0"===is_approved?"Approved":"0";return self.debug&&console.log("toggle_approval",{target:e.target,is_approved:is_approved}),$(e.target).addClass(self.css_classes.loading),self.update_approval(entry_id,form_id,set_approved,$(e.target)),!1},self.update_approval=function(entry_id,form_id,set_approved,$target){var data={action:"gv_update_approved",entry_id:entry_id,form_id:form_id,approved:set_approved,nonce:gvApproval.nonce};return $.post(gvApproval.ajaxurl,data,function(response){response&&(self.response=$.parseJSON(response),"0"!==self.response.status?$target.attr("data-approved-status","Approved").prop("title",gvApproval.text.disapprove_title).text(gvApproval.text.label_disapprove).addClass(self.css_classes.approved):$target.attr("data-approved-status","0").prop("title",gvApproval.text.approve_title).text(gvApproval.text.label_approve).removeClass(self.css_classes.approved),$target.removeClass(self.css_classes.loading)),self.debug&&console.log("update_approval",{data:data,response:response})}),!0}}(jQuery); \ No newline at end of file +!function($){"use strict";var self={response:{status:""},debug:!1,dt_selector:".gv-datatables",css_classes:{approved:"gv-approval-approved",loading:"gv-approval-loading"},selector:".gv-approval-toggle"};$(function(){self.setup_triggers()}),self.setup_triggers=function(){var maybeDT=$(self.dt_selector);maybeDT.length>0?$(".gv-datatables").on("draw.dt",self.add_toggle_approval_trigger):self.add_toggle_approval_trigger()},self.add_toggle_approval_trigger=function(){$(self.selector).on("click",function(e){self.toggle_approval(e)})},self.toggle_approval=function(e){e.preventDefault();var entry_id=$(e.target).attr("data-entry-id"),form_id=$(e.target).attr("data-form-id"),is_approved=$(e.target).attr("data-approved-status").toString(),set_approved=""===is_approved||"0"===is_approved?"Approved":"0";return self.debug&&console.log("toggle_approval",{target:e.target,is_approved:is_approved}),$(e.target).addClass(self.css_classes.loading),self.update_approval(entry_id,form_id,set_approved,$(e.target)),!1},self.update_approval=function(entry_id,form_id,set_approved,$target){var data={action:"gv_update_approved",entry_id:entry_id,form_id:form_id,approved:set_approved,nonce:gvApproval.nonce};return $.post(gvApproval.ajaxurl,data,function(response){response&&(self.response=$.parseJSON(response),"0"!==self.response.status?$target.attr("data-approved-status","Approved").prop("title",gvApproval.text.disapprove_title).addClass(self.css_classes.approved).find("span").text(gvApproval.text.label_disapprove):$target.attr("data-approved-status","0").prop("title",gvApproval.text.approve_title).removeClass(self.css_classes.approved).find("span").text(gvApproval.text.label_approve),$target.removeClass(self.css_classes.loading)),self.debug&&console.log("update_approval",{data:data,response:response})}),!0}}(jQuery); \ No newline at end of file diff --git a/includes/fields/approval.php b/includes/fields/approval.php index b5b1ca7d0e..b28447fd64 100644 --- a/includes/fields/approval.php +++ b/includes/fields/approval.php @@ -2,6 +2,7 @@ /** * Add custom options for address fields + * @since TODO */ class GravityView_Field_Approval extends GravityView_Field { @@ -43,25 +44,37 @@ public function __construct() { /** * Add filters and actions for the field * @since TODO + * @return void */ private function add_hooks() { add_filter( 'gravityview_entry_default_fields', array( $this, 'filter_gravityview_entry_default_field' ), 10, 3 ); - add_action( 'wp_enqueue_scripts', array( $this, 'register_script' ) ); + add_action( 'wp_enqueue_scripts', array( $this, 'register_scripts_and_styles' ) ); add_action( 'gravityview/field/approval/load_scripts', array( $this, 'enqueue_and_localize_script' ) ); } /** - * Register the field approval script + * Register the field approval script and style * @since TODO * @return void */ - function register_script() { + function register_scripts_and_styles() { $script_debug = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min'; wp_register_script( 'gravityview-field-approval', GRAVITYVIEW_URL . 'assets/js/field-approval'.$script_debug.'.js', array( 'jquery' ), GravityView_Plugin::version, true ); + + /** + * @filter `gravityview/field/approval/css_url` URL to the Approval field CSS file. + * @since TODO + * @param string $style_path Override to use your own CSS file, or return empty string to disable loading. + */ + $style_path = apply_filters( 'gravityview/field/approval/css_url', GRAVITYVIEW_URL . 'assets/css/field-approval.css' ); + + if( ! empty( $style_path ) ) { + wp_register_style( 'gravityview-field-approval', $style_path, array( 'dashicons' ), GravityView_Plugin::version, 'screen' ); + } } /** @@ -91,13 +104,15 @@ static public function get_strings() { * @since TODO * @return void */ - function enqueue_and_localize_script() { + public function enqueue_and_localize_script() { // The script is already registered and enqueued if( wp_script_is( 'gravityview-field-approval', 'enqueued' ) ) { return; } + wp_enqueue_style( 'gravityview-field-approval' ); + wp_enqueue_script( 'gravityview-field-approval' ); $field_approval_text = self::get_strings(); @@ -112,6 +127,7 @@ function enqueue_and_localize_script() { /** * Add Fields to the field list + * * @param array $entry_default_fields Array of fields shown by default * @param string|array $form form_ID or form object * @param string $context Either 'single', 'directory', 'header', 'footer' diff --git a/templates/fields/approval.php b/templates/fields/approval.php index efc530ccaa..9fbc5f8ccf 100644 --- a/templates/fields/approval.php +++ b/templates/fields/approval.php @@ -25,4 +25,4 @@ $class = $is_approved ? 'gv-approval-approved' : ''; ?> - \ No newline at end of file + \ No newline at end of file From e63b463e6d2f4d7764fbda66c8c27d55ac40caf0 Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Wed, 16 Dec 2015 21:59:42 -0700 Subject: [PATCH 015/113] Reduce opacity of icon during loading state --- assets/css/field-approval.css | 2 +- assets/css/scss/field-approval.scss | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/assets/css/field-approval.css b/assets/css/field-approval.css index b359a7c938..709a62b08c 100644 --- a/assets/css/field-approval.css +++ b/assets/css/field-approval.css @@ -1 +1 @@ -.gv-approval-toggle{color:#008000;text-decoration:none;border-bottom:none !important;}.gv-approval-toggle span.screen-reader-text{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0;}.gv-approval-toggle:before{font-family:"dashicons";display:inline-block;cursor:pointer;content:"\f147";width:24px;height:24px;font-size:24px;}.gv-approval-toggle.gv-approval-approved{color:#981225;}.gv-approval-toggle.gv-approval-approved:before{content:"\f158";}.gv-approval-toggle.gv-approval-loading{cursor:wait !important;} \ No newline at end of file +.gv-approval-toggle{color:#008000;text-decoration:none;border-bottom:none !important;}.gv-approval-toggle span.screen-reader-text{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0;}.gv-approval-toggle:before{font-family:"dashicons";display:inline-block;cursor:pointer;content:"\f147";width:24px;height:24px;font-size:24px;}.gv-approval-toggle.gv-approval-approved{color:#981225;}.gv-approval-toggle.gv-approval-approved:before{content:"\f158";}.gv-approval-toggle.gv-approval-loading{opacity:0.7;cursor:wait !important;} \ No newline at end of file diff --git a/assets/css/scss/field-approval.scss b/assets/css/scss/field-approval.scss index 89346512c1..527026cb05 100644 --- a/assets/css/scss/field-approval.scss +++ b/assets/css/scss/field-approval.scss @@ -48,6 +48,7 @@ } &.gv-approval-loading { + opacity: .7; cursor: wait !important; } From 47735543081a312c33684b884406a45cf89a35eb Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Mon, 21 Dec 2015 20:47:46 -0700 Subject: [PATCH 016/113] Fix docblock --- includes/class-common.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/class-common.php b/includes/class-common.php index 40479e570b..5fcd0a86c8 100644 --- a/includes/class-common.php +++ b/includes/class-common.php @@ -405,8 +405,8 @@ public static function get_entry_ids( $form_id, $search_criteria = array() ) { * * @since 1.7.4 * - * @param null $passed_criteria array Input Criteria (search_criteria, sorting, paging) - * @param null $form_ids array Gravity Forms form IDs + * @param array $passed_criteria Input Criteria (search_criteria, sorting, paging) + * @param array $form_ids Gravity Forms form IDs * @return array|mixed|void */ public static function calculate_get_entries_criteria( $passed_criteria = null, $form_ids = null ) { From 1bc23d2e0a91f6f2e079342c12ec601929a819fe Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Mon, 28 Dec 2015 12:42:35 -0700 Subject: [PATCH 017/113] Prevent toggling approval while approval actions are pending --- assets/js/field-approval.js | 7 +++++++ assets/js/field-approval.min.js | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/assets/js/field-approval.js b/assets/js/field-approval.js index 7b322bf1e1..724d0d35b1 100644 --- a/assets/js/field-approval.js +++ b/assets/js/field-approval.js @@ -67,6 +67,13 @@ */ self.add_toggle_approval_trigger = function() { $( self.selector ).on( 'click', function( e ) { + if( $( e.target ).hasClass( self.css_classes.loading ) ) { + e.preventDefault(); + if( self.debug ) { + console.log( 'add_toggle_approval_trigger', 'Cannot toggle approval while approval is pending.' ); + } + return false; + } self.toggle_approval( e ); }); }; diff --git a/assets/js/field-approval.min.js b/assets/js/field-approval.min.js index 676d053fbf..77fc5cb807 100644 --- a/assets/js/field-approval.min.js +++ b/assets/js/field-approval.min.js @@ -1 +1 @@ -!function($){"use strict";var self={response:{status:""},debug:!1,dt_selector:".gv-datatables",css_classes:{approved:"gv-approval-approved",loading:"gv-approval-loading"},selector:".gv-approval-toggle"};$(function(){self.setup_triggers()}),self.setup_triggers=function(){var maybeDT=$(self.dt_selector);maybeDT.length>0?$(".gv-datatables").on("draw.dt",self.add_toggle_approval_trigger):self.add_toggle_approval_trigger()},self.add_toggle_approval_trigger=function(){$(self.selector).on("click",function(e){self.toggle_approval(e)})},self.toggle_approval=function(e){e.preventDefault();var entry_id=$(e.target).attr("data-entry-id"),form_id=$(e.target).attr("data-form-id"),is_approved=$(e.target).attr("data-approved-status").toString(),set_approved=""===is_approved||"0"===is_approved?"Approved":"0";return self.debug&&console.log("toggle_approval",{target:e.target,is_approved:is_approved}),$(e.target).addClass(self.css_classes.loading),self.update_approval(entry_id,form_id,set_approved,$(e.target)),!1},self.update_approval=function(entry_id,form_id,set_approved,$target){var data={action:"gv_update_approved",entry_id:entry_id,form_id:form_id,approved:set_approved,nonce:gvApproval.nonce};return $.post(gvApproval.ajaxurl,data,function(response){response&&(self.response=$.parseJSON(response),"0"!==self.response.status?$target.attr("data-approved-status","Approved").prop("title",gvApproval.text.disapprove_title).addClass(self.css_classes.approved).find("span").text(gvApproval.text.label_disapprove):$target.attr("data-approved-status","0").prop("title",gvApproval.text.approve_title).removeClass(self.css_classes.approved).find("span").text(gvApproval.text.label_approve),$target.removeClass(self.css_classes.loading)),self.debug&&console.log("update_approval",{data:data,response:response})}),!0}}(jQuery); \ No newline at end of file +!function($){"use strict";var self={response:{status:""},debug:!1,dt_selector:".gv-datatables",css_classes:{approved:"gv-approval-approved",loading:"gv-approval-loading"},selector:".gv-approval-toggle"};$(function(){self.setup_triggers()}),self.setup_triggers=function(){var maybeDT=$(self.dt_selector);maybeDT.length>0?$(".gv-datatables").on("draw.dt",self.add_toggle_approval_trigger):self.add_toggle_approval_trigger()},self.add_toggle_approval_trigger=function(){$(self.selector).on("click",function(e){return $(e.target).hasClass(self.css_classes.loading)?(e.preventDefault(),self.debug&&console.log("add_toggle_approval_trigger","Cannot toggle approval while approval is pending."),!1):void self.toggle_approval(e)})},self.toggle_approval=function(e){e.preventDefault();var entry_id=$(e.target).attr("data-entry-id"),form_id=$(e.target).attr("data-form-id"),is_approved=$(e.target).attr("data-approved-status").toString(),set_approved=""===is_approved||"0"===is_approved?"Approved":"0";return self.debug&&console.log("toggle_approval",{target:e.target,is_approved:is_approved}),$(e.target).addClass(self.css_classes.loading),self.update_approval(entry_id,form_id,set_approved,$(e.target)),!1},self.update_approval=function(entry_id,form_id,set_approved,$target){var data={action:"gv_update_approved",entry_id:entry_id,form_id:form_id,approved:set_approved,nonce:gvApproval.nonce};return $.post(gvApproval.ajaxurl,data,function(response){response&&(self.response=$.parseJSON(response),"0"!==self.response.status?$target.attr("data-approved-status","Approved").prop("title",gvApproval.text.disapprove_title).addClass(self.css_classes.approved).find("span").text(gvApproval.text.label_disapprove):$target.attr("data-approved-status","0").prop("title",gvApproval.text.approve_title).removeClass(self.css_classes.approved).find("span").text(gvApproval.text.label_approve),$target.removeClass(self.css_classes.loading)),self.debug&&console.log("update_approval",{data:data,response:response})}),!0}}(jQuery); \ No newline at end of file From ff122668f1089a051cbcf1d4d3cec9f665e97e0d Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Mon, 28 Dec 2015 15:18:54 -0700 Subject: [PATCH 018/113] Move CSS file, improve styles * Use `locate_template()` to allow overriding the stylesheet. * Move the CSS file to `templates/css/field-approval.css` from `assets/css/field-approval.css` * Make the field look more like a button instead of just an icon --- assets/css/field-approval.css | 1 - assets/css/scss/field-approval.scss | 55 --------------- includes/fields/approval.php | 12 +++- templates/css/field-approval.css | 1 + templates/css/source/field-approval.scss | 85 ++++++++++++++++++++++++ 5 files changed, 97 insertions(+), 57 deletions(-) delete mode 100644 assets/css/field-approval.css delete mode 100644 assets/css/scss/field-approval.scss create mode 100644 templates/css/field-approval.css create mode 100644 templates/css/source/field-approval.scss diff --git a/assets/css/field-approval.css b/assets/css/field-approval.css deleted file mode 100644 index 709a62b08c..0000000000 --- a/assets/css/field-approval.css +++ /dev/null @@ -1 +0,0 @@ -.gv-approval-toggle{color:#008000;text-decoration:none;border-bottom:none !important;}.gv-approval-toggle span.screen-reader-text{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0;}.gv-approval-toggle:before{font-family:"dashicons";display:inline-block;cursor:pointer;content:"\f147";width:24px;height:24px;font-size:24px;}.gv-approval-toggle.gv-approval-approved{color:#981225;}.gv-approval-toggle.gv-approval-approved:before{content:"\f158";}.gv-approval-toggle.gv-approval-loading{opacity:0.7;cursor:wait !important;} \ No newline at end of file diff --git a/assets/css/scss/field-approval.scss b/assets/css/scss/field-approval.scss deleted file mode 100644 index 527026cb05..0000000000 --- a/assets/css/scss/field-approval.scss +++ /dev/null @@ -1,55 +0,0 @@ -/** - * Styles for GravityView frontend Approve/Unapprove toggles - * @since TODO - */ - -.gv-approval-toggle { - - /** - * Change the icon size - */ - $font-size: 24px; - - color: #008000; - - text-decoration: none; - border-bottom: none!important; - - /** - * The label for the icons - */ - span.screen-reader-text { - position: absolute; - margin: -1px; - padding: 0; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(0 0 0 0); - border: 0; - } - - &:before { - font-family: "dashicons"; - display: inline-block; - cursor: pointer; - content: "\f147"; - width: $font-size; - height: $font-size; - font-size: $font-size; - } - - &.gv-approval-approved { - color: #981225; - - &:before { - content: "\f158"; - } - } - - &.gv-approval-loading { - opacity: .7; - cursor: wait !important; - } - -} \ No newline at end of file diff --git a/includes/fields/approval.php b/includes/fields/approval.php index b28447fd64..0f323a8856 100644 --- a/includes/fields/approval.php +++ b/includes/fields/approval.php @@ -63,18 +63,28 @@ private function add_hooks() { */ function register_scripts_and_styles() { $script_debug = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min'; + wp_register_script( 'gravityview-field-approval', GRAVITYVIEW_URL . 'assets/js/field-approval'.$script_debug.'.js', array( 'jquery' ), GravityView_Plugin::version, true ); + /** + * Override CSS file by placing in your theme's /gravityview/css/ sub-directory. + */ + $style_path = GravityView_View::getInstance()->locate_template( 'css/field-approval.css', false ); + + $style_url = plugins_url( 'css/field-approval.css', trailingslashit( dirname( $style_path ) ) ); + /** * @filter `gravityview/field/approval/css_url` URL to the Approval field CSS file. * @since TODO * @param string $style_path Override to use your own CSS file, or return empty string to disable loading. */ - $style_path = apply_filters( 'gravityview/field/approval/css_url', GRAVITYVIEW_URL . 'assets/css/field-approval.css' ); + $style_path = apply_filters( 'gravityview/field/approval/css_url', $style_url ); if( ! empty( $style_path ) ) { wp_register_style( 'gravityview-field-approval', $style_path, array( 'dashicons' ), GravityView_Plugin::version, 'screen' ); } + + unset( $style_path, $style_url ); } /** diff --git a/templates/css/field-approval.css b/templates/css/field-approval.css new file mode 100644 index 0000000000..5e5fa9c9d4 --- /dev/null +++ b/templates/css/field-approval.css @@ -0,0 +1 @@ +.gv-approval-toggle{color:#008000 !important;text-decoration:none;border-bottom:none !important;}.gv-approval-toggle span.screen-reader-text{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0;}.gv-approval-toggle.gv-approval-approved{color:#981225 !important;}.gv-approval-toggle.gv-approval-approved::before{content:"\f158";}.gv-approval-toggle.gv-approval-loading{opacity:0.7;cursor:wait !important;}.gv-approval-toggle.gv-approval-loading::before{background:#f0f0f0 !important;}.gv-approval-toggle::before{font-family:"dashicons";left:0;top:0;cursor:pointer;content:"\f147";width:24px;height:24px;border:1px solid #ccc;padding:4px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;display:inline;font-size:24px;-webkit-box-shadow:inset 0 3px 5px rgba(0, 0, 0, 0);-moz-box-shadow:inset 0 3px 5px rgba(0, 0, 0, 0);box-shadow:inset 0 3px 5px rgba(0, 0, 0, 0);}.gv-approval-toggle:link::before,.gv-approval-toggle:visited::before{background:#f0f0f0;}.gv-approval-toggle:hover::before{background:#ebebeb;}.gv-approval-toggle:active::before{background:#e1e1e1;} \ No newline at end of file diff --git a/templates/css/source/field-approval.scss b/templates/css/source/field-approval.scss new file mode 100644 index 0000000000..8f1df89cc8 --- /dev/null +++ b/templates/css/source/field-approval.scss @@ -0,0 +1,85 @@ +/** + * Styles for GravityView frontend Approve/Unapprove toggles + * @since TODO + */ + +.gv-approval-toggle { + + /** + * Change the icon size + */ + $font-size: 24px; + $background: #f0f0f0; + + // Start with green approval check mark + color: #008000!important; + + text-decoration: none; + border-bottom: none!important; + + /** + * The label for the icons + */ + span.screen-reader-text { + position: absolute; + margin: -1px; + padding: 0; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; + } + + &.gv-approval-approved { + + // Switch to red X + color: #981225!important; + + &::before { + content: "\f158"; + } + } + + &.gv-approval-loading { + &::before { + background: $background !important; + } + opacity: .7; + cursor: wait!important; + } + + &::before { + font-family: "dashicons"; + left: 0; + top: 0; + cursor: pointer; + content: "\f147"; + width: $font-size; + height: $font-size; + border: 1px solid #ccc; + padding: 4px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + display: inline; + font-size: $font-size; + -webkit-box-shadow: inset 0 3px 5px rgba( 0, 0, 0, 0 ); + -moz-box-shadow: inset 0 3px 5px rgba( 0, 0, 0, 0 ); + box-shadow: inset 0 3px 5px rgba( 0, 0, 0, 0 ); + } + + &:link::before, + &:visited::before { + background: $background; + } + + &:hover::before { + background: darken( $background, 2% ); + } + + &:active::before { + background: darken( $background, 6% ); + } + +} \ No newline at end of file From 87533b4ef4cc0c08759a278d7edaa1cdc0102977 Mon Sep 17 00:00:00 2001 From: Zack Katz Date: Thu, 6 Oct 2016 11:35:14 -0600 Subject: [PATCH 019/113] Merge branch 'master' into feature/front-end-approval # Conflicts: # includes/class-common.php # includes/fields/class-gravityview-field.php --- .bowerrc | 8 + .gitignore | 7 + .gitmodules | 2 +- .idea/modules.xml | 2 +- .idea/php.xml | 13 +- .scrutinizer.yml | 76 + .travis.yml | 3 + .tx/config | 2 +- Gruntfile.js | 55 +- assets/css/admin-entries-list.css | 2 +- assets/css/admin-global.css | 2 +- assets/css/admin-license-key-fields.css | 2 +- assets/css/admin-post-edit.css | 2 +- assets/css/admin-settings.css | 2 +- assets/css/admin-views.css | 2 +- assets/css/admin-widgets-php.css | 2 +- assets/css/beacon.css | 2 +- assets/css/font.css | 2 +- assets/css/scss/admin-entries-list.scss | 31 +- assets/css/scss/admin-merge-tags.scss | 4 + assets/css/scss/admin-post-edit.scss | 5 + assets/css/scss/admin-settings.scss | 48 + assets/css/scss/admin-views.scss | 33 +- assets/images/rafael.jpg | Bin 0 -> 35722 bytes .../images/screenshots/developing-future.jpg | Bin 0 -> 36688 bytes assets/images/screenshots/entry-notes.gif | Bin 0 -> 265531 bytes .../images/screenshots/pricing-merge-tags.jpg | Bin 0 -> 46785 bytes assets/images/screenshots/search-bar.jpg | Bin 0 -> 67996 bytes assets/images/screenshots/search-bar.png | Bin 21599 -> 47024 bytes assets/js/admin-edd-license.js | 28 +- assets/js/admin-edd-license.min.js | 2 +- assets/js/admin-entries-list.js | 40 +- assets/js/admin-entries-list.min.js | 2 +- assets/js/admin-post-edit.js | 12 + assets/js/admin-post-edit.min.js | 2 +- assets/js/admin-views.js | 246 +- assets/js/admin-views.min.js | 2 +- assets/js/support.js | 7 +- assets/js/support.min.js | 2 +- assets/lib/flexibility/.bower.json | 58 + assets/lib/flexibility/bower.json | 48 + assets/lib/flexibility/package.json | 62 + assets/lib/jquery.cookie/.bower.json | 28 + assets/lib/jquery.cookie/bower.json | 18 + .../lib/jquery.cookie/jquery.cookie.js | 2 +- assets/lib/jquery.cookie/jquery.cookie.min.js | 1 + bower.json | 11 + composer.json | 11 + docs/custom-doxygen.css | 2 +- gravityview.php | 46 +- .../class-gravityview-admin-no-conflict.php | 228 ++ .../class-gravityview-admin-view-field.php | 48 + .../class-gravityview-admin-view-item.php | 186 + .../class-gravityview-admin-view-widget.php | 26 + .../admin/class-gravityview-support-port.php | 13 +- includes/admin/class.field.type.php | 3 +- includes/admin/class.render.settings.php | 11 +- .../admin/field-types/type_checkboxes.php | 55 + includes/admin/field-types/type_html.php | 27 + .../admin/field-types/type_multiselect.php | 42 + includes/admin/field-types/type_radio.php | 2 +- .../class-gravityview-admin-metaboxes.php | 3 +- .../admin/metaboxes/views/data-source.php | 2 + includes/class-admin-add-shortcode.php | 5 +- includes/class-admin-approve-entries.php | 346 +- includes/class-admin-label.php | 224 -- includes/class-admin-views.php | 142 +- includes/class-admin-welcome.php | 633 ++-- includes/class-admin.php | 209 +- includes/class-api.php | 192 +- includes/class-common.php | 447 ++- includes/class-data.php | 18 +- includes/class-debug-bar.php | 10 +- includes/class-frontend-views.php | 168 +- includes/class-gravityview-admin-bar.php | 107 +- ...class-gravityview-admin-duplicate-view.php | 4 +- includes/class-gravityview-entry-notes.php | 55 +- includes/class-gravityview-gfformsmodel.php | 139 + includes/class-gravityview-image.php | 8 +- includes/class-gravityview-merge-tags.php | 291 +- includes/class-gravityview-migrate.php | 6 +- .../class-gravityview-roles-capabilities.php | 20 +- ...ngs.php => class-gravityview-settings.php} | 29 +- includes/class-gravityview-shortcode.php | 4 +- includes/class-gv-license-handler.php | 209 +- includes/class-gvlogic-shortcode.php | 21 +- includes/class-oembed.php | 4 +- includes/class-template.php | 70 +- includes/connector-functions.php | 67 +- .../delete-entry/class-delete-entry.php | 83 +- .../edit-entry/class-edit-entry-render.php | 837 +++-- .../class-edit-entry-user-registration.php | 24 +- .../edit-entry/class-edit-entry.php | 6 +- .../edit-entry/partials/form-buttons.php | 20 +- .../entry-notes/assets/css/add-note-form.css | 1 + .../entry-notes/assets/css/entry-note.css | 1 + .../entry-notes/assets/css/entry-notes.css | 1 + .../assets/css/source/add-note-form.scss | 46 + .../assets/css/source/entry-note.scss | 55 + .../assets/css/source/entry-notes.scss | 126 + .../entry-notes/assets/js/entry-notes.js | 344 ++ .../entry-notes/assets/js/entry-notes.min.js | 1 + .../class-gravityview-field-notes.php | 767 ++++ .../extensions/entry-notes/fields/notes.php | 80 + .../entry-notes/partials/note-add-note.php | 30 + .../entry-notes/partials/note-detail.php | 15 + .../partials/note-row-editable.php | 15 + .../entry-notes/partials/note-row.php | 12 + .../extensions/search-widget/assets/index.php | 1 - .../search-widget/assets/js/index.php | 1 - .../search-widget/assets/js/source/index.php | 1 - includes/extensions/search-widget/index.php | 1 - .../search-widget/templates/index.php | 1 - .../class-gravityview-field-address.php | 10 + .../class-gravityview-field-calculation.php | 33 + .../class-gravityview-field-captcha.php | 10 + .../class-gravityview-field-checkbox.php | 61 + ...ityview-field-class-gravityview-fields.php | 39 - .../class-gravityview-field-created-by.php | 101 +- .../class-gravityview-field-creditcard.php | 9 + .../class-gravityview-field-currency.php | 32 + .../fields/class-gravityview-field-custom.php | 7 +- .../class-gravityview-field-date-created.php | 80 +- .../fields/class-gravityview-field-date.php | 55 + .../fields/class-gravityview-field-email.php | 10 + .../class-gravityview-field-entry-link.php | 9 +- .../class-gravityview-field-fileupload.php | 30 +- .../class-gravityview-field-gquiz_score.php | 8 +- .../fields/class-gravityview-field-hidden.php | 51 + .../fields/class-gravityview-field-html.php | 10 + .../class-gravityview-field-is-fulfilled.php | 126 + .../fields/class-gravityview-field-list.php | 72 +- .../class-gravityview-field-multiselect.php | 9 + .../fields/class-gravityview-field-name.php | 10 + .../fields/class-gravityview-field-number.php | 11 + .../class-gravityview-field-other-entries.php | 10 +- .../fields/class-gravityview-field-page.php | 9 + .../class-gravityview-field-password.php | 93 + ...class-gravityview-field-payment-amount.php | 94 + .../class-gravityview-field-payment-date.php | 34 + ...class-gravityview-field-payment-method.php | 33 + ...class-gravityview-field-payment-status.php | 31 + .../fields/class-gravityview-field-phone.php | 38 + .../class-gravityview-field-post-category.php | 126 +- .../class-gravityview-field-post-content.php | 59 +- ...ss-gravityview-field-post-custom-field.php | 46 + .../class-gravityview-field-post-excerpt.php | 9 + .../class-gravityview-field-post-id.php | 8 +- .../class-gravityview-field-post-image.php | 114 + .../class-gravityview-field-post-tags.php | 10 + .../class-gravityview-field-post-title.php | 10 + .../fields/class-gravityview-field-quiz.php | 40 + .../fields/class-gravityview-field-radio.php | 43 + .../class-gravityview-field-section.php | 8 +- .../fields/class-gravityview-field-select.php | 44 + .../class-gravityview-field-source-url.php | 7 +- .../fields/class-gravityview-field-text.php | 9 + .../class-gravityview-field-textarea.php | 10 + .../fields/class-gravityview-field-time.php | 17 +- ...class-gravityview-field-transaction-id.php | 32 + ...ass-gravityview-field-transaction-type.php | 93 + .../fields/class-gravityview-field-uid.php | 63 + .../class-gravityview-field-website.php | 10 + ...ravityview-field-workflow_final_status.php | 76 + .../class-gravityview-field-workflow_step.php | 185 + includes/fields/class-gravityview-field.php | 275 +- includes/fields/class-gravityview-fields.php | 132 + includes/helper-functions.php | 182 +- includes/lib/class-gamajo-template-loader.php | 389 +- ...act-gravityview-plugin-and-theme-hooks.php | 6 +- .../class-gravityview-plugin-hooks-acf.php | 52 + ...ravityview-plugin-hooks-elegant-themes.php | 47 + ...-gravityview-plugin-hooks-gravity-flow.php | 111 + ...w-plugin-hooks-gravity-forms-signature.php | 93 + ...view-plugin-hooks-gravity-forms-survey.php | 148 + ...vityview-plugin-hooks-gravityformsquiz.php | 81 + ...avityview-plugin-hooks-ultimate-member.php | 69 + ...-gravityview-theme-hooks-church-themes.php | 63 + ...lass-gravityview-default-template-edit.php | 2 +- ...lass-gravityview-default-template-list.php | 4 +- ...ass-gravityview-default-template-table.php | 2 +- .../class-gravityview-widget-page-links.php | 15 +- .../widgets/poll/templates/widget-poll.php | 2 +- .../assets/js/admin-search-widget.min.js | 2 +- .../assets/js/source/admin-search-widget.js | 27 +- .../search-widget/class-search-widget.php | 255 +- .../templates/search-field-checkbox.php | 2 +- .../templates/search-field-date.php | 4 +- .../templates/search-field-date_range.php | 2 +- .../templates/search-field-entry_date.php | 2 +- .../templates/search-field-entry_id.php | 2 +- .../templates/search-field-input_text.php | 5 +- .../templates/search-field-link.php | 14 +- .../templates/search-field-multiselect.php | 14 +- .../templates/search-field-radio.php | 2 +- .../templates/search-field-search_all.php | 2 +- .../templates/search-field-select.php | 16 +- .../search-field-single_checkbox.php | 2 +- .../search-widget/templates/widget-search.php | 4 +- .../class-gravityview-search-wp-widget.php | 46 +- languages/gravityview-ady.mo | Bin 867 -> 871 bytes languages/gravityview-ady.po | 1793 ++++++---- languages/gravityview-bn_BD.mo | Bin 83340 -> 96011 bytes languages/gravityview-bn_BD.po | 1969 ++++++---- languages/gravityview-bs.mo | Bin 940 -> 944 bytes languages/gravityview-bs.po | 1793 ++++++---- languages/gravityview-bs_BA.mo | Bin 971 -> 975 bytes languages/gravityview-bs_BA.po | 1793 ++++++---- languages/gravityview-da.mo | Bin 4697 -> 4701 bytes languages/gravityview-da.po | 1793 ++++++---- languages/gravityview-de_DE.mo | Bin 41172 -> 41128 bytes languages/gravityview-de_DE.po | 1917 ++++++---- languages/gravityview-el_GR.mo | Bin 879 -> 883 bytes languages/gravityview-el_GR.po | 1793 ++++++---- languages/gravityview-en_AU.mo | Bin 884 -> 888 bytes languages/gravityview-en_AU.po | 1793 ++++++---- languages/gravityview-en_GB.mo | Bin 889 -> 893 bytes languages/gravityview-en_GB.po | 1793 ++++++---- languages/gravityview-en_US.mo | Bin 888 -> 892 bytes languages/gravityview-en_US.po | 1793 ++++++---- languages/gravityview-es.mo | Bin 866 -> 870 bytes languages/gravityview-es.po | 1793 ++++++---- languages/gravityview-es_AR.mo | Bin 884 -> 888 bytes languages/gravityview-es_AR.po | 1793 ++++++---- languages/gravityview-es_MX.mo | Bin 37961 -> 38054 bytes languages/gravityview-es_MX.po | 1871 ++++++---- languages/gravityview-fa_IR.mo | Bin 0 -> 23289 bytes languages/gravityview-fa_IR.po | 3089 ++++++++++++++++ languages/gravityview-fi.mo | Bin 15644 -> 15648 bytes languages/gravityview-fi.po | 1845 ++++++---- languages/gravityview-fr.mo | Bin 864 -> 868 bytes languages/gravityview-fr.po | 1793 ++++++---- languages/gravityview-fr_BE.mo | Bin 880 -> 884 bytes languages/gravityview-fr_BE.po | 1793 ++++++---- languages/gravityview-fr_CA.mo | Bin 879 -> 883 bytes languages/gravityview-fr_CA.po | 1793 ++++++---- languages/gravityview-fr_CH.mo | Bin 884 -> 888 bytes languages/gravityview-fr_CH.po | 1793 ++++++---- languages/gravityview-fr_FR.mo | Bin 53668 -> 53494 bytes languages/gravityview-fr_FR.po | 1915 ++++++---- languages/gravityview-hr.mo | Bin 939 -> 943 bytes languages/gravityview-hr.po | 1793 ++++++---- languages/gravityview-hr_HR.mo | Bin 955 -> 959 bytes languages/gravityview-hr_HR.po | 1793 ++++++---- languages/gravityview-hu_HU.mo | Bin 39654 -> 41676 bytes languages/gravityview-hu_HU.po | 1953 ++++++---- languages/gravityview-id_ID.mo | Bin 2157 -> 2161 bytes languages/gravityview-id_ID.po | 1793 ++++++---- languages/gravityview-it_IT.mo | Bin 18504 -> 18508 bytes languages/gravityview-it_IT.po | 1839 ++++++---- languages/gravityview-ja_JP.mo | Bin 0 -> 878 bytes languages/gravityview-ja_JP.po | 3088 ++++++++++++++++ languages/gravityview-lt_LT.mo | Bin 950 -> 954 bytes languages/gravityview-lt_LT.po | 1793 ++++++---- languages/gravityview-nb_NO.mo | Bin 8414 -> 8418 bytes languages/gravityview-nb_NO.po | 1827 ++++++---- languages/gravityview-nl.mo | Bin 1918 -> 1922 bytes languages/gravityview-nl.po | 1793 ++++++---- languages/gravityview-nl_NL.mo | Bin 31769 -> 51551 bytes languages/gravityview-nl_NL.po | 3166 ++++++++++++----- languages/gravityview-pt.mo | Bin 869 -> 873 bytes languages/gravityview-pt_BR.mo | Bin 883 -> 24719 bytes languages/gravityview-pt_BR.po | 2227 +++++++----- languages/gravityview-pt_PT.mo | Bin 52264 -> 52377 bytes languages/gravityview-pt_PT.po | 1915 ++++++---- languages/gravityview-ro_RO.mo | Bin 17998 -> 18153 bytes languages/gravityview-ro_RO.po | 1849 ++++++---- languages/gravityview-ru.mo | Bin 1004 -> 1008 bytes languages/gravityview-ru.po | 1793 ++++++---- languages/gravityview-sv_SE.mo | Bin 35167 -> 35290 bytes languages/gravityview-sv_SE.po | 1879 ++++++---- languages/gravityview-tr.mo | Bin 1013 -> 1017 bytes languages/gravityview-tr.po | 1793 ++++++---- languages/gravityview-tr_TR.mo | Bin 53311 -> 67856 bytes languages/gravityview-tr_TR.po | 1997 +++++++---- languages/gravityview-zh_CN.mo | Bin 0 -> 62404 bytes languages/gravityview-zh_CN.po | 3089 ++++++++++++++++ languages/gravityview.mo | Bin 718 -> 0 bytes languages/gravityview.pot | 1806 ++++++---- languages/index.php | 1 - package.json | 6 +- phpunit.xml | 3 + readme.md | 17 +- readme.txt | 303 +- templates/css/field-approval.css | 2 +- templates/css/fields.css | 1 - templates/css/gv-default-styles-rtl.css | 1 + templates/css/gv-default-styles.css | 2 +- templates/css/gv-legacy-search-rtl.css | 1 + templates/css/gv-legacy-search.css | 1 + templates/css/list-view-rtl.css | 1 + templates/css/list-view.css | 2 +- templates/css/search-legacy.css | 1 + .../css/source/{edit.scss => _edit.scss} | 3 +- .../css/source/{fields.scss => _fields.scss} | 4 + templates/css/source/_general.scss | 31 + templates/css/source/_grid.scss | 118 + templates/css/source/_images.scss | 44 + templates/css/source/_list-view-rules.scss | 0 .../css/source/{notice.scss => _notice.scss} | 0 .../css/source/{oembed.scss => _oembed.scss} | 1 - .../{responsive.scss => _responsive.scss} | 0 templates/css/source/_rtl.scss | 29 + .../css/source/{search.scss => _search.scss} | 12 +- templates/css/source/_widgets.scss | 31 + .../css/source/gv-default-styles-rtl.scss | 15 + templates/css/source/gv-default-styles.scss | 202 +- .../css/source/gv-legacy-search-rtl.scss | 16 + templates/css/source/gv-legacy-search.scss | 24 + templates/css/source/list-view-rtl.scss | 8 + templates/css/source/list-view.scss | 14 +- templates/css/source/search-flexbox.scss | 121 + templates/css/source/search-legacy.scss | 96 + templates/css/table-view.css | 2 +- templates/fields/address.php | 10 + templates/fields/checkbox.php | 42 +- templates/fields/custom.php | 12 +- templates/fields/date.php | 11 +- templates/fields/date_created.php | 35 +- templates/fields/email.php | 4 + templates/fields/gquiz_grade.php | 4 +- templates/fields/gquiz_is_pass.php | 4 +- templates/fields/gquiz_percent.php | 10 +- templates/fields/gquiz_score.php | 2 +- templates/fields/is_fulfilled.php | 17 - templates/fields/list.php | 6 +- templates/fields/phone.php | 25 + templates/fields/post_image.php | 46 +- templates/fields/quiz.php | 30 + templates/fields/radio.php | 11 +- templates/fields/select.php | 11 +- templates/fields/survey.php | 15 + templates/fields/textarea.php | 13 +- templates/list-body.php | 5 +- templates/list-single.php | 4 +- tests/bin/install.sh | 62 +- tests/factory.php | 32 +- tests/unit-tests/GVCommon_Common_Test.php | 134 +- tests/unit-tests/GravityView_API_Test.php | 163 +- .../GravityView_Edit_Entry_Test.php | 27 +- .../GravityView_Entry_Link_Shortcode_Test.php | 6 +- tests/unit-tests/GravityView_Field_Test.php | 114 + tests/unit-tests/GravityView_Image_Test.php | 180 + .../GravityView_Merge_Tags_Test.php | 236 +- .../GravityView_Roles_Capabilities_Test.php | 8 +- .../unit-tests/GravityView_Shortcode_Test.php | 2 +- .../unit-tests/GravityView_Uninstall_Test.php | 8 +- tests/unit-tests/helper-functions_Test.php | 33 +- 348 files changed, 63523 insertions(+), 27504 deletions(-) create mode 100644 .bowerrc create mode 100644 .scrutinizer.yml create mode 100644 assets/images/rafael.jpg create mode 100644 assets/images/screenshots/developing-future.jpg create mode 100644 assets/images/screenshots/entry-notes.gif create mode 100644 assets/images/screenshots/pricing-merge-tags.jpg create mode 100644 assets/images/screenshots/search-bar.jpg create mode 100644 assets/lib/flexibility/.bower.json create mode 100644 assets/lib/flexibility/bower.json create mode 100644 assets/lib/flexibility/package.json create mode 100644 assets/lib/jquery.cookie/.bower.json create mode 100644 assets/lib/jquery.cookie/bower.json rename includes/lib/jquery-cookie/jquery_cookie.js => assets/lib/jquery.cookie/jquery.cookie.js (99%) create mode 100644 assets/lib/jquery.cookie/jquery.cookie.min.js create mode 100644 bower.json create mode 100644 composer.json create mode 100644 includes/admin/class-gravityview-admin-no-conflict.php create mode 100644 includes/admin/class-gravityview-admin-view-field.php create mode 100644 includes/admin/class-gravityview-admin-view-item.php create mode 100644 includes/admin/class-gravityview-admin-view-widget.php create mode 100644 includes/admin/field-types/type_checkboxes.php create mode 100644 includes/admin/field-types/type_html.php create mode 100644 includes/admin/field-types/type_multiselect.php delete mode 100644 includes/class-admin-label.php create mode 100644 includes/class-gravityview-gfformsmodel.php rename includes/{class-settings.php => class-gravityview-settings.php} (97%) create mode 100644 includes/extensions/entry-notes/assets/css/add-note-form.css create mode 100644 includes/extensions/entry-notes/assets/css/entry-note.css create mode 100644 includes/extensions/entry-notes/assets/css/entry-notes.css create mode 100644 includes/extensions/entry-notes/assets/css/source/add-note-form.scss create mode 100644 includes/extensions/entry-notes/assets/css/source/entry-note.scss create mode 100644 includes/extensions/entry-notes/assets/css/source/entry-notes.scss create mode 100644 includes/extensions/entry-notes/assets/js/entry-notes.js create mode 100644 includes/extensions/entry-notes/assets/js/entry-notes.min.js create mode 100644 includes/extensions/entry-notes/class-gravityview-field-notes.php create mode 100644 includes/extensions/entry-notes/fields/notes.php create mode 100644 includes/extensions/entry-notes/partials/note-add-note.php create mode 100644 includes/extensions/entry-notes/partials/note-detail.php create mode 100644 includes/extensions/entry-notes/partials/note-row-editable.php create mode 100644 includes/extensions/entry-notes/partials/note-row.php delete mode 100644 includes/extensions/search-widget/assets/index.php delete mode 100644 includes/extensions/search-widget/assets/js/index.php delete mode 100644 includes/extensions/search-widget/assets/js/source/index.php delete mode 100644 includes/extensions/search-widget/index.php delete mode 100644 includes/extensions/search-widget/templates/index.php delete mode 100644 includes/fields/class-gravityview-field-class-gravityview-fields.php create mode 100644 includes/fields/class-gravityview-field-currency.php create mode 100644 includes/fields/class-gravityview-field-is-fulfilled.php create mode 100644 includes/fields/class-gravityview-field-payment-amount.php create mode 100644 includes/fields/class-gravityview-field-payment-date.php create mode 100644 includes/fields/class-gravityview-field-payment-method.php create mode 100644 includes/fields/class-gravityview-field-payment-status.php create mode 100644 includes/fields/class-gravityview-field-quiz.php create mode 100644 includes/fields/class-gravityview-field-transaction-id.php create mode 100644 includes/fields/class-gravityview-field-transaction-type.php create mode 100644 includes/fields/class-gravityview-field-uid.php create mode 100644 includes/fields/class-gravityview-field-workflow_final_status.php create mode 100644 includes/fields/class-gravityview-field-workflow_step.php create mode 100644 includes/fields/class-gravityview-fields.php create mode 100644 includes/plugin-and-theme-hooks/class-gravityview-plugin-hooks-acf.php create mode 100644 includes/plugin-and-theme-hooks/class-gravityview-plugin-hooks-elegant-themes.php create mode 100644 includes/plugin-and-theme-hooks/class-gravityview-plugin-hooks-gravity-flow.php create mode 100644 includes/plugin-and-theme-hooks/class-gravityview-plugin-hooks-gravity-forms-signature.php create mode 100644 includes/plugin-and-theme-hooks/class-gravityview-plugin-hooks-gravity-forms-survey.php create mode 100644 includes/plugin-and-theme-hooks/class-gravityview-plugin-hooks-gravityformsquiz.php create mode 100644 includes/plugin-and-theme-hooks/class-gravityview-plugin-hooks-ultimate-member.php create mode 100644 includes/plugin-and-theme-hooks/class-gravityview-theme-hooks-church-themes.php create mode 100644 languages/gravityview-fa_IR.mo create mode 100644 languages/gravityview-fa_IR.po create mode 100644 languages/gravityview-ja_JP.mo create mode 100644 languages/gravityview-ja_JP.po create mode 100644 languages/gravityview-zh_CN.mo create mode 100644 languages/gravityview-zh_CN.po delete mode 100644 languages/gravityview.mo delete mode 100644 languages/index.php delete mode 100644 templates/css/fields.css create mode 100644 templates/css/gv-default-styles-rtl.css create mode 100644 templates/css/gv-legacy-search-rtl.css create mode 100644 templates/css/gv-legacy-search.css create mode 100644 templates/css/list-view-rtl.css create mode 100644 templates/css/search-legacy.css rename templates/css/source/{edit.scss => _edit.scss} (88%) rename templates/css/source/{fields.scss => _fields.scss} (78%) create mode 100644 templates/css/source/_general.scss create mode 100644 templates/css/source/_grid.scss create mode 100644 templates/css/source/_images.scss create mode 100644 templates/css/source/_list-view-rules.scss rename templates/css/source/{notice.scss => _notice.scss} (100%) rename templates/css/source/{oembed.scss => _oembed.scss} (99%) rename templates/css/source/{responsive.scss => _responsive.scss} (100%) create mode 100644 templates/css/source/_rtl.scss rename templates/css/source/{search.scss => _search.scss} (86%) create mode 100644 templates/css/source/_widgets.scss create mode 100644 templates/css/source/gv-default-styles-rtl.scss create mode 100644 templates/css/source/gv-legacy-search-rtl.scss create mode 100644 templates/css/source/gv-legacy-search.scss create mode 100644 templates/css/source/list-view-rtl.scss create mode 100644 templates/css/source/search-flexbox.scss create mode 100644 templates/css/source/search-legacy.scss delete mode 100644 templates/fields/is_fulfilled.php create mode 100644 templates/fields/phone.php create mode 100644 templates/fields/quiz.php create mode 100644 templates/fields/survey.php create mode 100644 tests/unit-tests/GravityView_Field_Test.php create mode 100644 tests/unit-tests/GravityView_Image_Test.php diff --git a/.bowerrc b/.bowerrc new file mode 100644 index 0000000000..cd86e1fb82 --- /dev/null +++ b/.bowerrc @@ -0,0 +1,8 @@ +{ + "directory": "./assets/lib/", + "ignoredDependencies": [ + "jquery" + ], + "analytics": false, + "timeout": 120000 +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index cd8419443d..5bf55d786b 100644 --- a/.gitignore +++ b/.gitignore @@ -57,6 +57,11 @@ languages/gravityview-pt.po ## Plugin-specific files: +## Bower +assets/lib/flexibility/* +!assets/lib/flexibility/dist/* +!assets/lib/flexibility/*.json + # Unit tests /tmp /tests/bin/tmp @@ -74,3 +79,5 @@ languages/gravityview-de.po docs/config.doxygen .idea/modules.xml + +.idea/php.xml diff --git a/.gitmodules b/.gitmodules index 6a27138020..4f0fba5dff 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "includes/lib/standalone-phpenkoder"] path = includes/lib/standalone-phpenkoder - url = git://github.com/jnicol/standalone-phpenkoder.git \ No newline at end of file + url = git://github.com/jnicol/standalone-phpenkoder.git diff --git a/.idea/modules.xml b/.idea/modules.xml index e563b7f1a1..86245660ee 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/.idea/php.xml b/.idea/php.xml index 9cc11cc486..2109f80bb2 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -1,11 +1,14 @@ - - - - + + + + + + + + - diff --git a/.scrutinizer.yml b/.scrutinizer.yml new file mode 100644 index 0000000000..4febab929b --- /dev/null +++ b/.scrutinizer.yml @@ -0,0 +1,76 @@ +filter: + excluded_paths: [tests/*, .tx/*, languages/*, includes/lib/*, bin/*, assets/*, templates/* ] +tools: + external_code_coverage: + timeout: 900 # wait for 15 minutes instead of 5 + php_mess_detector: + enabled: true + config: + code_size_rules: + cyclomatic_complexity: false + npath_complexity: false + excessive_method_length: false + excessive_class_length: false + excessive_parameter_list: false + excessive_public_count: false + too_many_fields: false + too_many_methods: false + controversial_rules: + camel_case_class_name: false + camel_case_property_name: false + camel_case_method_name: false + camel_case_parameter_name: false + camel_case_variable_name: false + + php_code_sniffer: true + sensiolabs_security_checker: true + php_code_coverage: true + php_hhvm: true + php_sim: true # PHP Similarity Analyzer + php_pdepend: true + php_loc: + enabled: true + excluded_dirs: [tests, .tx, languages, includes/lib, bin, assets, templates] + php_cpd: + enabled: true + excluded_dirs: [tests, .tx, languages, includes/lib, bin, assets, templates] +checks: + php: + psr2_switch_declaration: false + psr2_control_structure_declaration: false + psr2_class_declaration: false + one_class_per_file: false + avoid_superglobals: false + require_php_tag_first: false + code_rating: true + duplication: true + variable_existence: true + useless_calls: true + use_statement_alias_conflict: true + unused_variables: false + unused_properties: true + unused_parameters: false + unreachable_code: true + sql_injection_vulnerabilities: true + security_vulnerabilities: true + precedence_mistakes: true + precedence_in_conditions: true + parameter_non_unique: true + no_property_on_interface: true + no_non_implemented_abstract_methods: true + deprecated_code_usage: true + closure_use_not_conflicting: true + closure_use_modifiable: true + avoid_useless_overridden_methods: true + avoid_conflicting_incrementers: true + assignment_of_null_return: true + unused_methods: true + too_many_arguments: true + no_debug_code: true + missing_arguments: true + argument_type_checks: false + no_error_suppression: false + return_doc_comments: false + property_assignments: false + coding_standard: + name: WordPress \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 10f5f4d78c..2279fac505 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,3 +31,6 @@ after_script: - bash tests/bin/travis.sh after - wget https://scrutinizer-ci.com/ocular.phar - php ocular.phar code-coverage:upload --format=php-clover ./tmp/clover.xml + +after_success: + - coveralls \ No newline at end of file diff --git a/.tx/config b/.tx/config index 421cc7adc1..eafb8e0212 100644 --- a/.tx/config +++ b/.tx/config @@ -5,4 +5,4 @@ host = https://www.transifex.com file_filter = languages/gravityview-.po source_lang = en type = PO -lang_map = it: it_IT, bn: bn_BD, sv: sv_SE, nl: nl_NL \ No newline at end of file +lang_map = it: it_IT, bn: bn_BD, sv: sv_SE \ No newline at end of file diff --git a/Gruntfile.js b/Gruntfile.js index fbe849c56b..5130015fc1 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -10,7 +10,8 @@ module.exports = function(grunt) { sass: { options: { - outputStyle: 'compressed' + style: 'compressed', + sourcemap: 'none' }, dist: { files: [{ @@ -21,11 +22,20 @@ module.exports = function(grunt) { ext: '.css' }] }, + extensions: { + files: [{ + expand: true, + cwd: 'includes/extensions/entry-notes/assets/css/source', + src: ['*.scss'], + dest: 'includes/extensions/entry-notes/assets/css', + ext: '.css' + }] + }, templates: { files: [{ expand: true, cwd: 'templates/css/source/', - src: ['*.scss','!search.scss','!edit.scss','!font.scss','!notice.scss','!oembed.scss','!responsive.scss'], + src: ['*.scss','!search-flexbox.scss','!edit.scss','!font.scss','!notice.scss','!oembed.scss','!responsive.scss'], dest: 'templates/css/', ext: '.css' }] @@ -43,10 +53,12 @@ module.exports = function(grunt) { jshint: [ "assets/js/admin-views.js", + "assets/js/admin-edd-license.js", "assets/js/admin-post-edit.js", "assets/js/admin-widgets.js", "assets/js/admin-entries-list.js", "assets/js/fe-views.js", + "includes/extensions/entry-notes/assets/js/entry-notes.js", "includes/widgets/search-widget/assets/js/source/admin-widgets.js" ], @@ -77,6 +89,25 @@ module.exports = function(grunt) { ext: '.min.js' }] }, + bower: { + files: [{ + expand: true, + cwd: 'assets/lib', + extDot: 'last', // Process extension as the last dot (jquery.cookie.js) + src: ['**/*.js', '!**/build.js', '!**/dist/*.js', '!**/*.min.js'], + dest: 'assets/lib', + ext: '.min.js' + }] + }, + entryNotes: { + files: [{ + expand: true, + cwd: 'includes/extensions/entry-notes/assets/js/', + dest: 'includes/extensions/entry-notes/assets/js/', + src: ['*.js','!*.min.js'], + ext: '.min.js' + }] + }, searchExt: { files: [{ expand: true, @@ -93,10 +124,18 @@ module.exports = function(grunt) { files: ['assets/js/*.js','!assets/js/*.min.js'], tasks: ['uglify:main','newer:jshint'] }, + notes_js: { + files: ['includes/extensions/entry-notes/assets/js/*.js','!includes/extensions/entry-notes/assets/js/*.min.js'], + tasks: ['uglify:entryNotes','newer:jshint'] + }, extension_js: { files: ['includes/widgets/**/*.js','!includes/widgets/**/*.min.js'], tasks: ['uglify:searchExt','newer:jshint'] }, + extension_scss: { + files: ['includes/extensions/**/*.scss'], + tasks: ['sass:extensions'] + }, templates: { files: ['templates/css/**/*.scss','!templates/css/**/*.css'], tasks: ['sass:templates'] @@ -137,7 +176,9 @@ module.exports = function(grunt) { transifex: 'tx pull -a', // Create a ZIP file - zip: 'git-archive-all ../gravityview.zip' + zip: 'git-archive-all ../gravityview.zip', + + bower: 'bower install' }, // Build translations without POEdit @@ -162,10 +203,10 @@ module.exports = function(grunt) { var translation, excluded_meta = [ 'GravityView', - 'Create directories based on a Gravity Forms form, insert them using a shortcode, and modify how they output.', - 'http://gravityview.co', + 'The best, easiest way to display Gravity Forms entries on your website.', + 'https://gravityview.co', 'Katz Web Services, Inc.', - 'http://www.katzwebservices.com' + 'https://www.katzwebservices.com' ]; for ( translation in pot.translations[''] ) { @@ -210,7 +251,7 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-wp-i18n'); // Regular CSS/JS/Image Compression stuff - grunt.registerTask( 'default', [ 'sass', 'uglify', 'imagemin', 'watch' ] ); + grunt.registerTask( 'default', [ 'exec:bower', 'sass', 'uglify', 'imagemin', 'watch' ] ); // Translation stuff grunt.registerTask( 'translate', [ 'exec:transifex', 'potomo', 'addtextdomain', 'makepot' ] ); diff --git a/assets/css/admin-entries-list.css b/assets/css/admin-entries-list.css index cb12f182bb..30cc4dfdaa 100644 --- a/assets/css/admin-entries-list.css +++ b/assets/css/admin-entries-list.css @@ -1 +1 @@ -#lead_form .gv-approve-column{width:40px;text-align:center;}#lead_form th.check-column:nth-child(2){text-align:center;}#lead_form thead th.gv-approve-column{padding-top:12px;padding-bottom:4px;}#lead_form th.gv-approve-column a:before{padding:0;margin:0;content:"a";display:inline-block;-webkit-font-smoothing:antialiased;font:normal 22px/1 'gravityview';vertical-align:top;color:#555;}#lead_form .toggleApproved{padding:0;margin:0;display:inline-block;}#lead_form .loading{cursor:wait;}#lead_form .toggleApproved:before{padding:0;margin:0;content:"\f158";color:#940303;display:inline-block;-webkit-font-smoothing:antialiased;font:normal 20px/1 'dashicons';vertical-align:top;}#lead_form .toggleApproved.entry_approved:before{content:"\f147";color:#00ac15;font-size:26px;text-indent:-4px;} \ No newline at end of file +#wpbody table .gv-approve-column{width:40px;text-align:center;vertical-align:top}#wpbody table th.check-column:nth-child(2),#wpbody table tbody th.column-is_starred{text-align:center}#wpbody table thead th.gv-approve-column a:before{padding:0;margin:0;content:"a";display:inline-block;-webkit-font-smoothing:antialiased;font:normal 22px/1 'gravityview';vertical-align:top;color:#555}#wpbody table .toggleApproved{padding:0;margin:0;display:inline-block}#wpbody table .loading{cursor:wait}#wpbody table .toggleApproved:before{padding:0;margin:0;content:"\f158";color:#940303;display:inline-block;-webkit-font-smoothing:antialiased;font:normal 20px/1 'dashicons';vertical-align:top}#wpbody table .toggleApproved.entry_approved:before{content:"\f147";color:#00ac15;font-size:26px;text-indent:-4px}.rtl #wpbody table .toggleApproved.entry_approved:before{text-align:right;text-indent:4px} diff --git a/assets/css/admin-global.css b/assets/css/admin-global.css index fe3de0d4ad..72216c46a5 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 a[href$="type-gravityview"]{display:none !important;}.members-tab-title .gv-icon-astronaut-head{font-size:20px;width:20px;line-height:20px;margin-right:6.25px;display:block;float:left;}#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;}.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"}.members-tab-title a[href$="type-gravityview"]{display:none !important}.members-tab-title .gv-icon-astronaut-head{font-size:20px;width:20px;line-height:20px;margin-right:6.25px;display:block;float:left}#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}.wp-editor-tools #add_gravityview{width:auto}#gf_form_toolbar .gv_connected_forms .gv-icon{font-size:19px;margin-top:-.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:.5em 0 .5em 1.3em} diff --git a/assets/css/admin-license-key-fields.css b/assets/css/admin-license-key-fields.css index d1daca49c3..b9ed863b3d 100644 --- a/assets/css/admin-license-key-fields.css +++ b/assets/css/admin-license-key-fields.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;} \ 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} diff --git a/assets/css/admin-post-edit.css b/assets/css/admin-post-edit.css index 6d86ef0c06..6f5d87d42d 100644 --- a/assets/css/admin-post-edit.css +++ b/assets/css/admin-post-edit.css @@ -1 +1 @@ -#select_gravityview_view{overflow-x:hidden;overflow-y:auto;display:none;}#select_gravityview_view_form table{margin-top:20px;}#select_gravityview_view_form table tr td{width:50%;}#select_gravityview_view_form table caption{text-align:left;font-size:16px;font-weight:bold;}#select_gravityview_view_form table #gravityview_sort_field{max-width:250px;}.gv_button_icon{background:url('../images/gravity-view-btn.png') no-repeat top left;display:inline-block;height:20px;margin:0 2px 0 0;vertical-align:text-bottom;width:20px;}.gv-icon-astronaut-head:before{display:inline-block;font-size:16px;margin:0 2px 1px 0;vertical-align:text-bottom;}.wp-admin .ui-tooltip{z-index:100400;background:#ededed;} \ No newline at end of file +#select_gravityview_view{overflow-x:hidden;overflow-y:auto;display:none}#select_gravityview_view_form{margin-bottom:25px}#select_gravityview_view_form table{margin-top:20px}#select_gravityview_view_form table tr td{width:50%}#select_gravityview_view_form table caption{text-align:left;font-size:16px;font-weight:bold}#select_gravityview_view_form table #gravityview_sort_field{max-width:250px}.gv_button_icon{background:url("../images/gravity-view-btn.png") no-repeat top left;display:inline-block;height:20px;margin:0 2px 0 0;vertical-align:text-bottom;width:20px}.gv-icon-astronaut-head:before{display:inline-block;font-size:16px;margin:0 2px 1px 0;vertical-align:text-bottom}.wp-admin .ui-tooltip{z-index:100400;background:#ededed} diff --git a/assets/css/admin-settings.css b/assets/css/admin-settings.css index 7ae5f7d0c1..41d329c9a5 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,.toplevel_page_gravityview_settings #gform-settings tr:first-child{border-top:none;}.gravityview_page_gravityview_settings #gform-settings tr:first-child td,.gravityview_page_gravityview_settings #gform-settings tr:first-child th,.toplevel_page_gravityview_settings #gform-settings tr:first-child td,.toplevel_page_gravityview_settings #gform-settings tr:first-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 label,.toplevel_page_gravityview_settings #gform-settings label{display:inline-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 #gaddon-setting-row-license_key th,.toplevel_page_gravityview_settings #gaddon-setting-row-license_key th{position:relative;min-height:150px}.gravityview_page_gravityview_settings #gaddon-setting-row-license_key td,.toplevel_page_gravityview_settings #gaddon-setting-row-license_key td{vertical-align:top}.gravityview_page_gravityview_settings .gv-refresh-page,.toplevel_page_gravityview_settings .gv-refresh-page{font-weight:bold;font-size:1.1em}.gravityview_page_gravityview_settings .gv-license-details,.toplevel_page_gravityview_settings .gv-license-details{display:block;clear:both;position:relative;font-size:1.1em}.gravityview_page_gravityview_settings .gv-license-details li,.toplevel_page_gravityview_settings .gv-license-details li{margin:0}.gravityview_page_gravityview_settings .gv-license-details ul.ul-disc,.toplevel_page_gravityview_settings .gv-license-details ul.ul-disc{margin-left:0;padding-left:1.3em}.gravityview_page_gravityview_settings .gv-license-details ul.ul-disc li,.toplevel_page_gravityview_settings .gv-license-details ul.ul-disc li{padding-left:.1em;list-style:disc outside;overflow:visible}.gravityview_page_gravityview_settings .gv-license-details h3,.toplevel_page_gravityview_settings .gv-license-details h3{text-transform:uppercase;font-weight:400;font-size:1em;margin:.5em 0}.gravityview_page_gravityview_settings .gv-license-details h4,.toplevel_page_gravityview_settings .gv-license-details h4{margin:0 0 .5em 0}.gravityview_page_gravityview_settings .gv-license-details .description,.toplevel_page_gravityview_settings .gv-license-details .description{padding-top:.25em}.gravityview_page_gravityview_settings .gform_tab_content>h3,.toplevel_page_gravityview_settings .gform_tab_content>h3{position:absolute;top:.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:.95}.gravityview_page_gravityview_settings .gform_tab_group #message p,.toplevel_page_gravityview_settings .gform_tab_group #message p{margin:0;padding:.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,.toplevel_page_gravityview_settings #gform-settings tr:first-child{border-top:none}.gravityview_page_gravityview_settings #gform-settings tr:first-child td,.gravityview_page_gravityview_settings #gform-settings tr:first-child th,.toplevel_page_gravityview_settings #gform-settings tr:first-child td,.toplevel_page_gravityview_settings #gform-settings tr:first-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 label,.toplevel_page_gravityview_settings #gform-settings label{display:inline-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} diff --git a/assets/css/admin-views.css b/assets/css/admin-views.css index 5ce4dd3637..60c22b3baf 100644 --- a/assets/css/admin-views.css +++ b/assets/css/admin-views.css @@ -1 +1 @@ -.widgets-php .gv-overlay{display:none;}#gv-widget-search-settings-link{display:none;text-align:center;font-size:110%;}#gv-widget-search-settings-link .dashicons{margin-right:5px;line-height:20px !important;height:20px !important;font-size:20px !important;}#gv-widget-search-settings-link a{text-decoration:none;text-align:center;}.merge-tag-support{max-width:95%;}.all-merge-tags{position:relative;display:-moz-inline-stack;display:inline-block;zoom:1;}.all-merge-tags.textarea{position:absolute;margin-top:1px;}.all-merge-tags a.open-list{text-indent:-999em;width:16px;height:16px;background:url(images/icon-drop-list.png);background-repeat:no-repeat;cursor:pointer;margin-left:5px;display:-moz-inline-stack;display:inline-block;zoom:1;}.all-merge-tags a.open-list:focus{outline:0 !important;}ul#gf_merge_tag_list{padding:0;max-height:200px;min-width:200px;overflow:auto;position:absolute;background-color:#F8F8F8;border:1px solid #CCC;z-index:999;text-indent:0;-moz-box-shadow:0 8px 6px -6px rgba(68, 68, 68, 0.4);-webkit-box-shadow:0 8px 6px -6px rgba(68, 68, 68, 0.4);box-shadow:0 8px 6px -6px rgba(68, 68, 68, 0.4);}ul#gf_merge_tag_list li:nth-child(even){background-color:#EEE;}.right ul#gf_merge_tag_list{right:0;}ul#gf_merge_tag_list li{margin:0;line-height:1.4em;padding:0 !important;border-bottom:1px dotted #ccc;}ul#gf_merge_tag_list li:last-child{border-bottom:none;}ul#gf_merge_tag_list li.group-header{font-weight:bold;padding:5px !important;}ul#gf_merge_tag_list li.group-header:hover{background-color:transparent;}ul#gf_merge_tag_list a{display:block;padding:5px;cursor:pointer;}ul#gf_merge_tag_list a:hover{background-color:#EEE;}.mt-gform_notification_message{float:right;position:relative;right:10px;top:90px;}#wp-gform_notification_message-wrap{margin-right:12px;}body .ui-tooltip{padding:8px;position:absolute;width:400px;max-width:100%;z-index:999999 !important;background:#eee;border:4px solid #999;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-o-box-shadow:0 0 5px #aaa;-moz-box-shadow:0 0 5px #aaa;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa;}body .ui-tooltip br{display:none;}* html .ui-tooltip{background-image:none;}.ui-tooltip-content{padding:0 10px;max-height:325px;overflow-y:auto;}.ui-tooltip-content:after{content:"";display:table;clear:both;}.ui-tooltip-content .close{position:absolute;padding:5px;top:-25px;left:-25px;cursor:pointer;}.ui-tooltip-content .close i{font-size:25px;color:#555;}.ui-tooltip-content .close i:hover,.ui-tooltip-content .close i:active{color:#000;}.ui-tooltip-content .gv-field-controls{display:none;}.ui-tooltip-content .gv-fields{cursor:pointer;padding:0.5em 0.75em;}.ui-tooltip-content .gv-fields.gv-child-field{width:95%;margin-left:5%;}.ui-tooltip-content .gv-fields h5{float:none;width:100%;}.top .ui-tooltip-content::after{bottom:-14px;left:48%;border-color:#999 transparent;border-width:10px 10px 0;}.gv-dialog .ui-dialog-titlebar-close:before{content:'';}#gravityview_settings{padding:0;display:none;}#gravityview_settings #gravityview-metabox-content-container{max-height:442px;overflow-y:auto;background:white;float:left;width:80%;border-left:1px solid #eee;box-sizing:border-box;}#gravityview_settings #gravityview-metabox-content-container.ui-tabs-panel{max-height:none;overflow-y:visible;}#side-sortables #gravityview_settings #gravityview-metabox-content-container{width:100%;}#side-sortables #gravityview_settings #gravityview-metabox-content-container th,#side-sortables #gravityview_settings #gravityview-metabox-content-container td{*zoom:1;display:block;padding:10px 10px 3px;}#side-sortables #gravityview_settings #gravityview-metabox-content-container th:before,#side-sortables #gravityview_settings #gravityview-metabox-content-container th:after,#side-sortables #gravityview_settings #gravityview-metabox-content-container td:before,#side-sortables #gravityview_settings #gravityview-metabox-content-container td:after{content:" ";display:table;}#side-sortables #gravityview_settings #gravityview-metabox-content-container th:after,#side-sortables #gravityview_settings #gravityview-metabox-content-container td:after{clear:both;}#gravityview_settings #gravityview-metabox-content-container .form-table{margin-top:0;padding-top:0;}#gravityview_settings #gravityview-metabox-content-container .form-table caption{text-align:left;font-size:14px;padding:8px 10px;margin:0;line-height:1.4;font-weight:600;}.rtl #gravityview_settings #gravityview-metabox-content-container .form-table caption{text-align:right;}#gravityview_settings #gravityview-metabox-content-container .form-table label .howto{margin-top:5px;}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel{*zoom:1;box-sizing:border-box;padding:0;border:none;}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel:before,#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel:after{content:" ";display:table;}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel:after{clear:both;}#side-sortables #gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel{margin-top:1px;border-top:2px solid #ccc;}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel p{margin:9px 0 9px;}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel p.form-field,#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel fieldset.form-field{padding:5px 20px 5px 162px !important;}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel .description{padding:0;margin:0 0 0 7px;clear:none;display:inline;}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel div+input{margin-top:5px;}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel textarea,#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel input,#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel select{margin:0;}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel textarea[type="checkbox"],#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel input[type="checkbox"],#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel select[type="checkbox"]{margin-top:-4px;}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel textarea{vertical-align:top;height:3.5em;line-height:1.5em;}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel input.button{width:auto;margin-left:8px;}#gravityview_settings .gform-field-filter{clear:both;padding:0.5em 0 0;}#gravityview_settings .inside{padding:0;margin:0;background:#fafafa;*zoom:1;}#gravityview_settings .inside:before,#gravityview_settings .inside:after{content:" ";display:table;}#gravityview_settings .inside:after{clear:both;}#gravityview_settings ul.ui-tabs-nav{line-height:1em;float:left;width:20%;margin:0;position:relative;padding:0 0 30px;background-color:#fafafa;box-sizing:border-box;}#side-sortables #gravityview_settings ul.ui-tabs-nav{width:100%;padding-bottom:0;border:none;}#gravityview_settings ul.ui-tabs-nav li{display:block;padding:0;margin:0;width:100%;}#gravityview_settings ul.ui-tabs-nav li.ui-state-disabled{display:none;}#gravityview_settings ul.ui-tabs-nav li a{box-sizing:border-box;padding:10px;line-height:20px !important;margin:0;display:block;width:100%;text-decoration:none;border:none;outline:none;box-shadow:none;border-bottom:1px solid #eee;background:none;transition-duration:0;text-overflow:ellipsis;overflow-x:hidden;}#gravityview_settings ul.ui-tabs-nav li:first-child a{border-top:0 !important;}#gravityview_settings ul.ui-tabs-nav li.ui-state-active a{position:relative;background-color:#eee;color:#555;}.ui-tooltip .gv-fields .gv-field-info span.gv-sublabel:after,.ui-tooltip .gv-fields .gv-field-info span:last-child:after,.gv-dialog-options:after,.gv-dialog-options .gv-setting-container:after{content:"";display:table;clear:both;}.gv-grid{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:2em;}.gv-grid:before,.gv-grid:after{content:" ";display:table;}.gv-grid:after{clear:both;}.gv-grid-pad{padding:1em 0 0 1em;}.gv-grid-pad>[class*='gv-grid-col-']{padding-right:1em;}.gv-grid-border{border:1px solid #999;}[class*='gv-grid-col-']{float:left;padding-right:1em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}.gv-grid-col-1-3{width:33.33%;}.gv-grid-col-1-4{width:25%;}.gv-grid-col-1-2{width:50%;}.gv-grid-col-1-8{width:12.5%;}.gv-grid-col-2-3{width:66.66%;}.gv-grid-col-1-1{width:100%;}.gv-grid-col-1-1+.gv-grid-col-1-3+.gv-grid-col-2-3+.gv-grid-col-1-2,.gv-grid-col-1-1+.gv-grid-col-2-3+.gv-grid-col-1-3+.gv-grid-col-1-2{clear:left;}.gv-section:before,.gv-section:after{content:" ";display:table;}.gv-section:after{clear:both;}.gv-section h4{font-size:14px;font-weight:bold;}.gv-section h4 span{font-size:14px;float:right;color:#999;font-weight:normal;}.gv-view-types-module{padding:1em;margin-bottom:1em;background:#eee;position:relative;border:2px solid transparent;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}.gv-view-types-module:hover .gv-view-types-hover{display:block;}.gv-view-types-module img{display:block;width:100%;height:auto;margin:0;padding:0;}.gv-view-types-module h5{white-space:nowrap;margin:0.5em 0;padding:0;font-size:18px;}.gv-view-types-module .description{margin:0;padding:0;height:3em;overflow:hidden;}.gv-view-types-module.gv-selected{border:2px solid #1e8cbe;}.gv-view-types-hover{display:none;background:rgba(0, 0, 0, 0.6);position:absolute;top:0;left:0;right:0;height:100%;}.gv-view-types-hover .gv-site-preview{color:#fff;text-decoration:none;}.gv-view-types-hover .dashicons{font-size:24px;width:24px;height:24px;position:absolute;top:5px;right:5px;opacity:0.5;}.gv-view-types-hover .dashicons:hover{opacity:1;}.gv-view-types-hover>div{padding-top:31%;margin-top:-15px;}.gv-view-types-hover>div p{margin:0.5em 0 1.5em;padding:0;text-align:center;}.gv-view-types-hover>div p a{display:inline-block;width:60%;}.button-primary.button-buy-now{background:#2ecc37;border-color:#00a213;-webkit-box-shadow:inset 0 1px 0 rgba(120, 230, 129, 0.5),0 1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 1px 0 rgba(120, 230, 129, 0.5),0 1px 0 rgba(0, 0, 0, 0.15);}.button-primary.button-buy-now.focus,.button-primary.button-buy-now:focus,.button-primary.button-buy-now.hover,.button-primary.button-buy-now:hover{border-color:#00a213;background:#1ebe41;-webkit-box-shadow:inset 0 1px 0 rgba(120, 230, 129, 0.6);box-shadow:inset 0 1px 0 rgba(120, 230, 129, 0.6);}.button-primary.button-buy-now.focus,.button-primary.button-buy-now:focus{border-color:#0e5025;-webkit-box-shadow:inset 0 1px 0 rgba(120, 230, 129, 0.6),1px 1px 2px rgba(0, 0, 0, 0.4);box-shadow:inset 0 1px 0 rgba(120, 230, 129, 0.6),1px 1px 2px rgba(0, 0, 0, 0.4);}.button-primary.button-buy-now.active,.button-primary.button-buy-now.active:hover,.button-primary.button-buy-now.active:focus,.button-primary.button-buy-now:active{border-color:#00842d;background:#1ebe41;}#gravityview_select_form .handlediv{display:none;}.gv-form-links{color:#ddd;font-weight:normal;padding:0 0 0 10px;}.metabox-prefs .gv-form-links{display:none;}.gv-form-links .row-actions{visibility:visible;padding:0;left:auto;}.gv-form-links .gv-form-title{display:none;}#gv_switch_view_button{display:inline-block;}#gravityview_select_template{display:none;}#gravityview_select_template .inside{max-height:450px;overflow-x:auto;}#gravityview_select_template .gv-grid-col-1-3{max-width:250px;min-width:200px;}.gv-template-preview{display:none;width:90%;}#gravityview_settings th{white-space:nowrap;font-weight:normal;max-width:200px;width:auto;margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle;}#gravityview_sort_filter,#gravityview_view_config{display:none;}.gv-wait{cursor:wait;}.ui-front{z-index:10001;}.ui-tabs{position:relative;padding:0.1em;zoom:1;margin-top:1em;}.ui-tabs .ui-tabs-nav{margin:0;padding:0.1em 0.1em 0;-webkit-margin-before:0;-webkit-margin-after:0;-webkit-margin-start:0;-webkit-margin-end:0;-webkit-padding-start:0;}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:2px;margin:0 0.2em 1px 0;border-bottom:0;padding:0;white-space:nowrap;outline:none;}.ui-tabs .ui-tabs-nav li .nav-tab{float:left;padding:0.5em 1em;text-decoration:none;font-size:14px;font-weight:400;}.ui-tabs .ui-tabs-nav li .nav-tab:link,.ui-tabs .ui-tabs-nav li .nav-tab:visited,.ui-tabs .ui-tabs-nav li .nav-tab:hover,.ui-tabs .ui-tabs-nav li .nav-tab:active,.ui-tabs .ui-tabs-nav li .nav-tab:focus{outline:none;-webkit-box-shadow:none;}.ui-tabs .ui-tabs-nav li .dashicons{color:#aaa;}.ui-tabs .ui-tabs-nav li.ui-state-active a,.ui-tabs .ui-tabs-nav li.ui-state-active.ui-state-hover a{background-color:#fff;border-bottom:1px solid #fff;}.ui-tabs .ui-tabs-nav li.ui-state-active .dashicons,.ui-tabs .ui-tabs-nav li.ui-state-active.ui-state-hover .dashicons{color:#666;}.ui-tabs .ui-tabs-nav li.ui-state-hover .dashicons{color:#999;}.ui-tabs .ui-tabs-panel{display:block;padding:1em;background:#fff;border:1px solid #ddd;}.ui-tabs .ui-tabs-hide{display:none !important;}.gv-dialog{z-index:10001;}.gv-overlay{cursor:pointer;position:fixed;z-index:10000;background:transparent;background:rgba(225, 225, 225, 0.4);width:100%;height:100%;overflow:hidden;}hr{border:0;height:0;border-bottom:1px solid #ddd;margin:2em 0 2em 0;}.gv-droppable-area{border:1px solid #ccc;margin-bottom:1em;}.gv-droppable-area .gv-droppable-area-action{background:#eee;padding:0.5em;}.gv-droppable-area .gv-droppable-area-action:before,.gv-droppable-area .gv-droppable-area-action:after{content:" ";display:table;}.gv-droppable-area .gv-droppable-area-action:after{clear:both;}.gv-droppable-area .gv-droppable-area-title{margin:0;padding:0;}.gv-droppable-area .gv-droppable-area-subtitle{margin:0.25em 0 0 0;padding:0;font-size:12px;color:#999;}.gv-droppable-area .button-secondary{float:right;}.active-drop{padding:3px 7px;min-height:44px;position:relative;}.active-drop .drop-message{color:#bbb;margin:0;display:block;text-align:center;width:90%;padding:0 5%;z-index:1;min-height:40px;font-size:13px;position:absolute;top:50%;margin-top:-8px;line-height:16px;}.gv-grid-col-1-2 .drop-message{padding-top:0;padding-bottom:0;}.fields-placeholder{margin:5px 2px;height:32px;border:1px dashed #ccc;}.gv-fields{cursor:move;border:1px solid #ddd;background:#f7f7f7;overflow:hidden;padding:0.5em 0.75em;margin:5px 0;width:100%;z-index:100;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}.gv-fields h5{float:left;width:100%;font-weight:600;font-size:14px;margin:0;padding:0 0 0 0.25em;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}.gv-fields h5 small{color:#777;font-weight:600;}.gv-fields span.gv-field-controls{padding-left:0.33em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}.gv-fields:hover{background:#fefefe;}.gv-fields:hover .gv-field-controls .dashicons{color:#136cb9;}.gv-fields:hover h5 small,.gv-fields:hover .gv-field-info{color:#666;}.gv-fields .gv-field-controls .dashicons{width:24px;font-size:18px;line-height:20px;}.gv-fields .gv-field-controls .dashicons:hover,.gv-fields .gv-field-controls .dashicons:active{color:#2ea2cc;}.gv-fields .gv-field-controls .dashicons.dashicons-dismiss{float:right;color:#999;}.gv-fields .gv-field-controls .dashicons.dashicons-dismiss:hover,.gv-fields .gv-field-controls .dashicons.dashicons-dismiss:active{color:#d03a3a;}.gv-fields .gv-field-controls .dashicons.dashicons-admin-links{color:#aaa;width:20px;font-size:16px;line-height:20px;cursor:default;}.gv-fields .gv-field-info{display:none;}.ui-tooltip .gv-fields .gv-field-info{display:block;font-weight:normal;color:#999;text-shadow:none;}.ui-tooltip .gv-fields .gv-field-info span:after{content:", ";}.ui-dialog-content,.ui-dialog{cursor:default;}.post-type-gravityview .ui-dialog-content{overflow:inherit;padding:0;}.ui-draggable-dragging{max-width:400px !important;}#directory-available-fields .gv-fields h5,#directory-available-widgets .gv-fields h5,#single-available-fields .gv-fields h5{padding:0 !important;}#directory-available-fields .gv-fields span.gv-field-controls,#directory-available-widgets .gv-fields span.gv-field-controls,#single-available-fields .gv-fields span.gv-field-controls{display:none !important;}.gv-sublabel{font-size:0.9em;display:block;}.ui-dialog-titlebar{min-height:1.25em;line-height:1.25;padding:10px;height:auto;}.gv-dialog-options{display:none;width:90%;padding:10px 0 !important;}.gv-dialog-options .subtitle{margin:0 15px 0.8em;padding:0.5em 0 0.8em;border-bottom:1px solid #eee;}.gv-dialog-options.gv-dialog-warning p{font-size:1.1em;margin:0 !important;padding:1.5em !important;}.gv-dialog-options.gv-dialog-warning .dashicons{font-size:70px;width:70px;height:70px;line-height:0.8;float:right;text-align:right;color:#ddd;}.gv-dialog-options .gv-setting-container{margin:0;padding:0.4em 15px 0.8em;display:block;font-size:1.1em;clear:left;}.gv-dialog-options .gv-setting-container.gv-setting-container-search_mode{display:none;}.gv-dialog-options .gv-setting-container:last-child{padding-bottom:0.5em;}.gv-dialog-options .gv-setting-container label{margin:0;font-weight:normal;display:inline-block;padding-right:0.75em;max-width:100%;}.gv-dialog-options .gv-setting-container .howto{margin:0 0 0.25em;}.gv-dialog-options .gv-setting-container code{font-style:normal !important;}.gv-dialog-options input[type="text"]{display:block;display:inline-block;clear:left;}.gv-dialog-options table,.gv-dialog-options table select{width:95%;margin:0 auto;}.gv-widget-search-fields table,.postbox .gv-dialog-options table{padding-bottom:15px;margin:0.5em auto;}.gv-widget-search-fields table td,.gv-widget-search-fields table th,.postbox .gv-dialog-options table td,.postbox .gv-dialog-options table th{text-align:left;padding:10px 5px;}.gv-widget-search-fields table .no-search-fields td,.postbox .gv-dialog-options table .no-search-fields td{text-align:center;font-size:15px;padding:15px 0;}.gv-widget-search-fields table .cell-sort,.postbox .gv-dialog-options table .cell-sort{cursor:ns-resize;}.gv-widget-search-fields table .cell-sort.no-sort,.postbox .gv-dialog-options table .cell-sort.no-sort{cursor:default;}.gv-widget-search-fields table .gv-search-fields,.gv-widget-search-fields table .gv-search-inputs,.postbox .gv-dialog-options table .gv-search-fields,.postbox .gv-dialog-options table .gv-search-inputs{width:100%;}.gv-widget-search-fields table .cell-sort a,.gv-widget-search-fields table .cell-add-remove a,.postbox .gv-dialog-options table .cell-sort a,.postbox .gv-dialog-options table .cell-add-remove a{font-size:18px;}.gv-widget-search-fields table .cell-sort a.dashicons,.gv-widget-search-fields table .cell-add-remove a.dashicons,.postbox .gv-dialog-options table .cell-sort a.dashicons,.postbox .gv-dialog-options table .cell-add-remove a.dashicons{opacity:0.8;}.gv-widget-search-fields table .cell-sort a.dashicons:hover,.gv-widget-search-fields table .cell-add-remove a.dashicons:hover,.postbox .gv-dialog-options table .cell-sort a.dashicons:hover,.postbox .gv-dialog-options table .cell-add-remove a.dashicons:hover{opacity:1;}.gv-widget-search-fields table .cell-sort a.dashicons-plus-alt,.gv-widget-search-fields table .cell-add-remove a.dashicons-plus-alt,.postbox .gv-dialog-options table .cell-sort a.dashicons-plus-alt,.postbox .gv-dialog-options table .cell-add-remove a.dashicons-plus-alt{color:green;}.gv-widget-search-fields table .cell-sort a.dashicons-dismiss,.gv-widget-search-fields table .cell-add-remove a.dashicons-dismiss,.postbox .gv-dialog-options table .cell-sort a.dashicons-dismiss,.postbox .gv-dialog-options table .cell-add-remove a.dashicons-dismiss{color:#d03a3a;}.gv-widget-search-fields table .cell-sort,.postbox .gv-dialog-options table .cell-sort{width:24px;}.gv-widget-search-fields table .cell-add-remove,.postbox .gv-dialog-options table .cell-add-remove{width:50px;}.post-type-gravityview input.merge-tag-support,.widgets-php input.merge-tag-support{width:90%;}.post-type-gravityview #gravityview_sort_field,.widgets-php #gravityview_sort_field{max-width:300px;}.post-type-gravityview #gv-loading,.widgets-php #gv-loading{text-align:center;font-size:16px;line-height:20px;display:block;}.post-type-gravityview #gv-loading .spinner,.widgets-php #gv-loading .spinner{display:inline-block;margin-top:-3px;float:none;}.gv-label{display:inline-block;clear:right;margin-bottom:0.1em;}.gv-label-checkbox{padding-right:1em;display:block;width:100%;}.gv-label-textarea,.gv-label-text{float:left;clear:both;width:100%;display:block;margin-bottom:0.5em;}.gv-shortcode .dashicons-editor-code{color:#888;left:-1px;font-size:20px;line-height:1;} \ No newline at end of file +.widgets-php .gv-overlay{display:none}#gv-widget-search-settings-link{display:none;text-align:center;font-size:110%}#gv-widget-search-settings-link .dashicons{margin-right:5px;line-height:20px !important;height:20px !important;font-size:20px !important}#gv-widget-search-settings-link a{text-decoration:none;text-align:center}.merge-tag-support{max-width:95%}.all-merge-tags{position:relative;display:-moz-inline-stack;display:inline-block;zoom:1}.all-merge-tags.textarea{position:absolute;margin-top:1px}.all-merge-tags a.open-list{text-indent:-999em;width:16px;height:16px;background:url(images/icon-drop-list.png);background-repeat:no-repeat;cursor:pointer;margin-left:5px;display:-moz-inline-stack;display:inline-block;zoom:1}.rtl .all-merge-tags a.open-list{text-align:right;text-indent:999em}.all-merge-tags a.open-list:focus{outline:0 !important}ul#gf_merge_tag_list{padding:0;max-height:200px;min-width:200px;max-width:500px;overflow:auto;position:absolute;background-color:#F8F8F8;border:1px solid #CCC;z-index:999;text-indent:0;-moz-box-shadow:0 8px 6px -6px rgba(68,68,68,0.4);-webkit-box-shadow:0 8px 6px -6px rgba(68,68,68,0.4);box-shadow:0 8px 6px -6px rgba(68,68,68,0.4)}ul#gf_merge_tag_list li:nth-child(even){background-color:#EEE}.right ul#gf_merge_tag_list{right:0}ul#gf_merge_tag_list li{margin:0;line-height:1.4em;padding:0 !important;border-bottom:1px dotted #ccc}ul#gf_merge_tag_list li:last-child{border-bottom:none}ul#gf_merge_tag_list li.group-header{font-weight:bold;padding:5px !important}ul#gf_merge_tag_list li.group-header:hover{background-color:transparent}ul#gf_merge_tag_list a{display:block;padding:5px;cursor:pointer}ul#gf_merge_tag_list a:hover{background-color:#EEE}.mt-gform_notification_message{float:right;position:relative;right:10px;top:90px}#wp-gform_notification_message-wrap{margin-right:12px}body .ui-tooltip{padding:8px;position:absolute;width:400px;max-width:100%;z-index:999999 !important;background:#eee;border:4px solid #999;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-o-box-shadow:0 0 5px #aaa;-moz-box-shadow:0 0 5px #aaa;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip br{display:none}* html .ui-tooltip{background-image:none}.ui-tooltip-content{padding:0 10px;max-height:325px;overflow-y:auto}.ui-tooltip-content:after{content:"";display:table;clear:both}.ui-tooltip-content .close{position:absolute;padding:5px;top:-25px;left:-25px;cursor:pointer}.ui-tooltip-content .close i{font-size:25px;color:#555}.ui-tooltip-content .close i:hover,.ui-tooltip-content .close i:active{color:#000}.ui-tooltip-content .gv-field-controls{display:none}.ui-tooltip-content .gv-fields{cursor:pointer;padding:.5em .75em}.ui-tooltip-content .gv-fields.gv-child-field{width:95%;margin-left:5%}.ui-tooltip-content .gv-fields h5{float:none;width:100%}.top .ui-tooltip-content::after{bottom:-14px;left:48%;border-color:#999 transparent;border-width:10px 10px 0}.gv-dialog .ui-dialog-titlebar-close:before{content:''}#gravityview_settings{padding:0;display:none}#gravityview_settings #gravityview-metabox-content-container{max-height:442px;overflow-y:auto;background:white;float:left;width:80%;border-left:1px solid #eee;box-sizing:border-box}#gravityview_settings #gravityview-metabox-content-container.ui-tabs-panel{max-height:none;overflow-y:visible}#side-sortables #gravityview_settings #gravityview-metabox-content-container{width:100%}#side-sortables #gravityview_settings #gravityview-metabox-content-container th,#side-sortables #gravityview_settings #gravityview-metabox-content-container td{*zoom:1;display:block;padding:10px 10px 3px}#side-sortables #gravityview_settings #gravityview-metabox-content-container th:before,#side-sortables #gravityview_settings #gravityview-metabox-content-container th:after,#side-sortables #gravityview_settings #gravityview-metabox-content-container td:before,#side-sortables #gravityview_settings #gravityview-metabox-content-container td:after{content:" ";display:table}#side-sortables #gravityview_settings #gravityview-metabox-content-container th:after,#side-sortables #gravityview_settings #gravityview-metabox-content-container td:after{clear:both}#gravityview_settings #gravityview-metabox-content-container .form-table{margin-top:0;padding-top:0}#gravityview_settings #gravityview-metabox-content-container .form-table caption{text-align:left;font-size:14px;padding:8px 10px;margin:0;line-height:1.4;font-weight:600}.rtl #gravityview_settings #gravityview-metabox-content-container .form-table caption{text-align:right}#gravityview_settings #gravityview-metabox-content-container .form-table label .howto{margin-top:5px}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel{*zoom:1;box-sizing:border-box;padding:0;border:none}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel:before,#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel:after{content:" ";display:table}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel:after{clear:both}#side-sortables #gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel{margin-top:1px;border-top:2px solid #ccc}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel p{margin:9px 0 9px}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel p.form-field,#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel fieldset.form-field{padding:5px 20px 5px 162px !important}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel .description{padding:0;margin:0 0 0 7px;clear:none;display:inline}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel div+input{margin-top:5px}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel textarea,#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel input,#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel select{margin:0}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel textarea[type="checkbox"],#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel input[type="checkbox"],#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel select[type="checkbox"]{margin-top:-4px}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel textarea{vertical-align:top;height:3.5em;line-height:1.5em}#gravityview_settings #gravityview-metabox-content-container .ui-tabs-panel input.button{width:auto;margin-left:8px}#gravityview_settings .gform-field-filter{clear:both;padding:.5em 0 0}#gravityview_settings .inside{padding:0;margin:0;background:#fafafa;*zoom:1}#gravityview_settings .inside:before,#gravityview_settings .inside:after{content:" ";display:table}#gravityview_settings .inside:after{clear:both}#gravityview_settings ul.ui-tabs-nav{line-height:1em;float:left;width:20%;margin:0;position:relative;padding:0 0 30px;background-color:#fafafa;box-sizing:border-box}#side-sortables #gravityview_settings ul.ui-tabs-nav{width:100%;padding-bottom:0;border:none}#gravityview_settings ul.ui-tabs-nav li{display:block;padding:0;margin:0;width:100%}#gravityview_settings ul.ui-tabs-nav li.ui-state-disabled{display:none}#gravityview_settings ul.ui-tabs-nav li a{box-sizing:border-box;padding:10px;line-height:20px !important;margin:0;display:block;width:100%;text-decoration:none;border:none;outline:none;box-shadow:none;border-bottom:1px solid #eee;background:none;transition-duration:0;text-overflow:ellipsis;overflow-x:hidden}#gravityview_settings ul.ui-tabs-nav li:first-child a{border-top:0 !important}#gravityview_settings ul.ui-tabs-nav li.ui-state-active a{position:relative;background-color:#eee;color:#555}.ui-tooltip .gv-fields .gv-field-info span.gv-sublabel:after,.ui-tooltip .gv-fields .gv-field-info span:last-child:after,.gv-dialog-options:after,.gv-dialog-options .gv-setting-container:after,.gv-dialog-options .gv-setting-list:after{content:"";display:table;clear:both}.gv-grid{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:2em}.gv-grid:before,.gv-grid:after{content:" ";display:table}.gv-grid:after{clear:both}.gv-grid-pad{padding:1em 0 0 1em}.gv-grid-pad>[class*='gv-grid-col-']{padding-right:1em}.gv-grid-border{border:1px solid #999}[class*='gv-grid-col-']{float:left;padding-right:1em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.gv-grid-col-1-3{width:33.33%}.gv-grid-col-1-4{width:25%}.gv-grid-col-1-2{width:50%}.gv-grid-col-1-8{width:12.5%}.gv-grid-col-2-3{width:66.66%}.gv-grid-col-1-1{width:100%}.gv-grid-col-1-1+.gv-grid-col-1-3+.gv-grid-col-2-3+.gv-grid-col-1-2,.gv-grid-col-1-1+.gv-grid-col-2-3+.gv-grid-col-1-3+.gv-grid-col-1-2{clear:left}.gv-section:before,.gv-section:after{content:" ";display:table}.gv-section:after{clear:both}.gv-section h4{font-size:14px;font-weight:bold}.gv-section h4 span{font-size:14px;float:right;color:#999;font-weight:normal}.gv-view-types-module{padding:1em;margin-bottom:1em;background:#eee;position:relative;border:2px solid transparent;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.gv-view-types-module:hover .gv-view-types-hover{display:block}.gv-view-types-module img{display:block;width:100%;height:auto;margin:0;padding:0}.gv-view-types-module h5{white-space:nowrap;margin:0.5em 0;padding:0;font-size:18px}.gv-view-types-module .description{margin:0;padding:0;height:3em;overflow:hidden}.gv-view-types-module.gv-selected{border:2px solid #1e8cbe}.gv-view-types-hover{display:none;background:rgba(0,0,0,0.6);position:absolute;top:0;left:0;right:0;height:100%}.gv-view-types-hover .gv-site-preview{color:#fff;text-decoration:none}.gv-view-types-hover .dashicons{font-size:24px;width:24px;height:24px;position:absolute;top:5px;right:5px;opacity:.5}.gv-view-types-hover .dashicons:hover{opacity:1}.gv-view-types-hover>div{padding-top:31%;margin-top:-15px}.gv-view-types-hover>div p{margin:0.5em 0 1.5em;padding:0;text-align:center}.gv-view-types-hover>div p a{display:inline-block;width:60%}.button-primary.button-buy-now{background:#2ecc37;border-color:#00a213;-webkit-box-shadow:inset 0 1px 0 rgba(120,230,129,0.5),0 1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 1px 0 rgba(120,230,129,0.5),0 1px 0 rgba(0,0,0,0.15)}.button-primary.button-buy-now.focus,.button-primary.button-buy-now:focus,.button-primary.button-buy-now.hover,.button-primary.button-buy-now:hover{border-color:#00a213;background:#1ebe41;-webkit-box-shadow:inset 0 1px 0 rgba(120,230,129,0.6);box-shadow:inset 0 1px 0 rgba(120,230,129,0.6)}.button-primary.button-buy-now.focus,.button-primary.button-buy-now:focus{border-color:#0e5025;-webkit-box-shadow:inset 0 1px 0 rgba(120,230,129,0.6),1px 1px 2px rgba(0,0,0,0.4);box-shadow:inset 0 1px 0 rgba(120,230,129,0.6),1px 1px 2px rgba(0,0,0,0.4)}.button-primary.button-buy-now.active,.button-primary.button-buy-now.active:hover,.button-primary.button-buy-now.active:focus,.button-primary.button-buy-now:active{border-color:#00842d;background:#1ebe41}#gravityview_select_form .handlediv{display:none}.gv-form-links{color:#ddd;font-weight:normal;padding:0 0 0 10px}.metabox-prefs .gv-form-links{display:none}.gv-form-links .row-actions{visibility:visible;padding:0;left:auto}.gv-form-links .gv-form-title{display:none}#gv_switch_view_button{display:inline-block}#gravityview_select_template{display:none}#gravityview_select_template .inside{max-height:450px;overflow-x:auto}#gravityview_select_template .gv-grid-col-1-3{max-width:250px;min-width:200px}.gv-template-preview{display:none;width:90%}#gravityview_settings th{white-space:nowrap;font-weight:normal;max-width:200px;width:auto;margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}#gravityview_sort_filter,#gravityview_view_config{display:none}.gv-wait,.gv-wait a{cursor:wait}.ui-front{z-index:10001}.ui-tabs{position:relative;padding:.1em;zoom:1;margin-top:1em}.ui-tabs .ui-tabs-nav{margin:0;padding:.1em .1em 0;-webkit-margin-before:0;-webkit-margin-after:0;-webkit-margin-start:0;-webkit-margin-end:0;-webkit-padding-start:0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:2px;margin:0 .2em 1px 0;border-bottom:0;padding:0;white-space:nowrap;outline:none}.ui-tabs .ui-tabs-nav li .nav-tab{float:left;padding:.5em 1em;text-decoration:none;font-size:14px;font-weight:400}.ui-tabs .ui-tabs-nav li .nav-tab:link,.ui-tabs .ui-tabs-nav li .nav-tab:visited,.ui-tabs .ui-tabs-nav li .nav-tab:hover,.ui-tabs .ui-tabs-nav li .nav-tab:active,.ui-tabs .ui-tabs-nav li .nav-tab:focus{outline:none;-webkit-box-shadow:none}.ui-tabs .ui-tabs-nav li .dashicons{color:#aaa}.ui-tabs .ui-tabs-nav li.ui-state-active a,.ui-tabs .ui-tabs-nav li.ui-state-active.ui-state-hover a{background-color:#fff;border-bottom:1px solid #fff}.ui-tabs .ui-tabs-nav li.ui-state-active .dashicons,.ui-tabs .ui-tabs-nav li.ui-state-active.ui-state-hover .dashicons{color:#666}.ui-tabs .ui-tabs-nav li.ui-state-hover .dashicons{color:#999}.ui-tabs .ui-tabs-panel{display:block;padding:1em;background:#fff;border:1px solid #ddd}.ui-tabs .ui-tabs-hide{display:none !important}.gv-dialog{position:absolute;z-index:10001}.gv-overlay{cursor:pointer;position:fixed;z-index:10000;background:transparent;background:rgba(225,225,225,0.4);width:100%;height:100%;overflow:hidden}hr{border:0;height:0;border-bottom:1px solid #ddd;margin:2em 0 2em 0}.gv-droppable-area{border:1px solid #ccc;margin-bottom:1em}.gv-droppable-area .gv-droppable-area-action{background:#eee;padding:0.5em}.gv-droppable-area .gv-droppable-area-action:before,.gv-droppable-area .gv-droppable-area-action:after{content:" ";display:table}.gv-droppable-area .gv-droppable-area-action:after{clear:both}.gv-droppable-area .gv-droppable-area-title{margin:0;padding:0}.gv-droppable-area .gv-droppable-area-subtitle{margin:0.25em 0 0 0;padding:0;font-size:12px;color:#999}.gv-droppable-area .button-secondary{float:right}.active-drop{padding:3px 7px;min-height:44px;position:relative}.active-drop .drop-message{color:#bbb;margin:0;display:block;text-align:center;width:90%;padding:0 5%;z-index:1;min-height:40px;font-size:13px;position:absolute;top:50%;margin-top:-8px;line-height:16px}.gv-grid-col-1-2 .drop-message{padding-top:0;padding-bottom:0}.fields-placeholder{margin:5px 2px;height:32px;border:1px dashed #ccc}.gv-fields{cursor:move;border:1px solid #ddd;background:#f7f7f7;overflow:hidden;padding:0.5em .75em;margin:5px 0;width:100%;z-index:100;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.gv-fields h5{float:left;width:100%;font-weight:600;font-size:14px;margin:0;padding:0 0 0 .25em;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.gv-fields h5 small{color:#777;font-weight:600}.gv-fields span.gv-field-controls{padding-left:.33em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.gv-fields:hover{background:#fefefe}.gv-fields:hover .gv-field-controls .dashicons{color:#136cb9}.gv-fields:hover h5 small,.gv-fields:hover .gv-field-info{color:#666}.gv-fields .gv-field-controls .dashicons{width:24px;font-size:18px;line-height:20px}.gv-fields .gv-field-controls .dashicons:hover,.gv-fields .gv-field-controls .dashicons:active{color:#2ea2cc}.gv-fields .gv-field-controls .dashicons.dashicons-dismiss{float:right;color:#999}.gv-fields .gv-field-controls .dashicons.dashicons-dismiss:hover,.gv-fields .gv-field-controls .dashicons.dashicons-dismiss:active{color:#d03a3a}.gv-fields .gv-field-controls .dashicons.dashicons-admin-links{color:#aaa;width:20px;font-size:16px;line-height:20px;cursor:default}.gv-fields .gv-field-info{display:none}.ui-tooltip .gv-fields .gv-field-info{display:block;font-weight:normal;color:#999;text-shadow:none}.ui-tooltip .gv-fields .gv-field-info span:after{content:", "}.ui-dialog-content,.ui-dialog{cursor:default}.post-type-gravityview .ui-dialog-content{overflow:inherit;padding:0}.ui-draggable-dragging{max-width:400px !important}#directory-available-fields .gv-fields h5,#directory-available-widgets .gv-fields h5,#single-available-fields .gv-fields h5{padding:0 !important}#directory-available-fields .gv-fields span.gv-field-controls,#directory-available-widgets .gv-fields span.gv-field-controls,#single-available-fields .gv-fields span.gv-field-controls{display:none !important}.gv-sublabel{font-size:.9em;display:block}.ui-dialog-titlebar{min-height:1.25em;line-height:1.25;padding:10px;height:auto}.gv-dialog-options{display:none;width:90%;padding:10px 0 !important}.gv-dialog-options .subtitle{margin:0 15px .8em;padding:.5em 0 .8em;border-bottom:1px solid #eee}.gv-dialog-options.gv-dialog-warning p{font-size:1.1em;margin:0 !important;padding:1.5em !important}.gv-dialog-options.gv-dialog-warning .dashicons{font-size:70px;width:70px;height:70px;line-height:.8;float:right;text-align:right;color:#ddd}.gv-dialog-options .gv-setting-container{margin:0;padding:.4em 15px .8em;display:block;font-size:1.1em;clear:left}.gv-dialog-options .gv-setting-container.gv-setting-container-search_mode{display:none}.gv-dialog-options .gv-setting-container:last-child{padding-bottom:.5em}.gv-dialog-options .gv-setting-container label{margin:0;font-weight:normal;display:inline-block;padding-right:.75em;max-width:100%}.gv-dialog-options .gv-setting-container .howto{margin:0 0 .25em}.gv-dialog-options .gv-setting-container code{font-style:normal !important}.gv-dialog-options .gv-setting-container.gv-setting-container-choice_display .gv-label-radio{display:block;margin:.5em 0}.gv-dialog-options fieldset legend{font-size:1.1em;padding-bottom:.2em}.gv-dialog-options .gv-setting-list li{list-style:none;display:block;padding:.2em .2em .4em}.gv-dialog-options .gv-setting-list li.gv-sub-setting{padding-left:1.7em}.gv-dialog-options input[type="text"]{display:block;display:inline-block;clear:left}.gv-dialog-options table,.gv-dialog-options table select{width:95%;margin:0 auto}.gv-widget-search-fields table,.postbox .gv-dialog-options table{padding-bottom:15px;margin:.5em auto}.gv-widget-search-fields table td,.gv-widget-search-fields table th,.postbox .gv-dialog-options table td,.postbox .gv-dialog-options table th{text-align:left;padding:10px 5px}.gv-widget-search-fields table .no-search-fields td,.postbox .gv-dialog-options table .no-search-fields td{text-align:center;font-size:15px;padding:15px 0}.gv-widget-search-fields table .cell-sort,.postbox .gv-dialog-options table .cell-sort{cursor:ns-resize}.gv-widget-search-fields table .cell-sort.no-sort,.postbox .gv-dialog-options table .cell-sort.no-sort{cursor:default}.gv-widget-search-fields table .gv-search-fields,.gv-widget-search-fields table .gv-search-inputs,.postbox .gv-dialog-options table .gv-search-fields,.postbox .gv-dialog-options table .gv-search-inputs{width:100%}.gv-widget-search-fields table .cell-sort a,.gv-widget-search-fields table .cell-add-remove a,.postbox .gv-dialog-options table .cell-sort a,.postbox .gv-dialog-options table .cell-add-remove a{font-size:18px}.gv-widget-search-fields table .cell-sort a.dashicons,.gv-widget-search-fields table .cell-add-remove a.dashicons,.postbox .gv-dialog-options table .cell-sort a.dashicons,.postbox .gv-dialog-options table .cell-add-remove a.dashicons{opacity:.8}.gv-widget-search-fields table .cell-sort a.dashicons:hover,.gv-widget-search-fields table .cell-add-remove a.dashicons:hover,.postbox .gv-dialog-options table .cell-sort a.dashicons:hover,.postbox .gv-dialog-options table .cell-add-remove a.dashicons:hover{opacity:1}.gv-widget-search-fields table .cell-sort a.dashicons-plus-alt,.gv-widget-search-fields table .cell-add-remove a.dashicons-plus-alt,.postbox .gv-dialog-options table .cell-sort a.dashicons-plus-alt,.postbox .gv-dialog-options table .cell-add-remove a.dashicons-plus-alt{color:green}.gv-widget-search-fields table .cell-sort a.dashicons-dismiss,.gv-widget-search-fields table .cell-add-remove a.dashicons-dismiss,.postbox .gv-dialog-options table .cell-sort a.dashicons-dismiss,.postbox .gv-dialog-options table .cell-add-remove a.dashicons-dismiss{color:#d03a3a}.gv-widget-search-fields table .cell-sort,.postbox .gv-dialog-options table .cell-sort{width:24px}.gv-widget-search-fields table .cell-add-remove,.postbox .gv-dialog-options table .cell-add-remove{width:50px}.post-type-gravityview input.merge-tag-support,.widgets-php input.merge-tag-support{width:90%}.post-type-gravityview #gravityview_sort_field,.widgets-php #gravityview_sort_field{max-width:300px}.post-type-gravityview #gv-loading,.widgets-php #gv-loading{text-align:center;font-size:16px;line-height:20px;padding:0 40px;display:block}.post-type-gravityview #gv-loading .spinner,.widgets-php #gv-loading .spinner{display:inline-block;margin-top:-3px;float:none}.gv-label{display:inline-block;clear:right;margin-bottom:.1em}.gv-label-checkbox{padding-right:1em;display:block;width:100%}.gv-label-textarea,.gv-label-text{float:left;clear:both;width:100%;display:block;margin-bottom:0.5em}.gv-shortcode .dashicons-editor-code{color:#888;left:-1px;font-size:20px;line-height:1} diff --git a/assets/css/admin-widgets-php.css b/assets/css/admin-widgets-php.css index 2648a637ae..b82722ded1 100644 --- a/assets/css/admin-widgets-php.css +++ b/assets/css/admin-widgets-php.css @@ -1 +1 @@ -.widgets-php .gv-overlay{display:none;}#gv-widget-search-settings-link{display:none;text-align:center;font-size:110%;}#gv-widget-search-settings-link .dashicons{margin-right:5px;line-height:20px !important;height:20px !important;font-size:20px !important;}#gv-widget-search-settings-link a{text-decoration:none;text-align:center;} \ No newline at end of file +.widgets-php .gv-overlay{display:none}#gv-widget-search-settings-link{display:none;text-align:center;font-size:110%}#gv-widget-search-settings-link .dashicons{margin-right:5px;line-height:20px !important;height:20px !important;font-size:20px !important}#gv-widget-search-settings-link a{text-decoration:none;text-align:center} diff --git a/assets/css/beacon.css b/assets/css/beacon.css index 5b9f79c8b4..9391859aa0 100644 --- a/assets/css/beacon.css +++ b/assets/css/beacon.css @@ -1 +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 +#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} diff --git a/assets/css/font.css b/assets/css/font.css index 3037a555fd..4ff7463bac 100644 --- a/assets/css/font.css +++ b/assets/css/font.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,[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{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";} \ 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,[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{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"} diff --git a/assets/css/scss/admin-entries-list.scss b/assets/css/scss/admin-entries-list.scss index 6cb5f6cafa..9b426b01ae 100644 --- a/assets/css/scss/admin-entries-list.scss +++ b/assets/css/scss/admin-entries-list.scss @@ -10,34 +10,34 @@ * @since 1.0.0 */ -#lead_form { +#wpbody table { .gv-approve-column { width: 40px; text-align: center; + vertical-align: top; } // Center the star - looks better when we widen the approval column - th.check-column:nth-child(2) { + th.check-column:nth-child(2), + tbody th.column-is_starred { text-align: center; } // Floaty's got a kinda big head. Change 8px top/bottom to better balanced thead th.gv-approve-column { - padding-top: 12px; - padding-bottom: 4px; - } - // Add Floaty's head - th.gv-approve-column a:before { - padding: 0; - margin: 0; - content: "a"; - display: inline-block; - -webkit-font-smoothing: antialiased; - font: normal 22px/1 'gravityview'; - vertical-align: top; - color: #555; + // Add Floaty's head + a:before { + padding: 0; + margin: 0; + content: "a"; + display: inline-block; + -webkit-font-smoothing: antialiased; + font: normal 22px/1 'gravityview'; + vertical-align: top; + color: #555; + } } .toggleApproved { @@ -68,6 +68,7 @@ color: #00ac15; font-size: 26px; text-indent: -4px; + .rtl & { text-align: right; text-indent: 4px; } } } \ No newline at end of file diff --git a/assets/css/scss/admin-merge-tags.scss b/assets/css/scss/admin-merge-tags.scss index b6edc5295a..699119d16c 100644 --- a/assets/css/scss/admin-merge-tags.scss +++ b/assets/css/scss/admin-merge-tags.scss @@ -18,6 +18,9 @@ .all-merge-tags a.open-list { text-indent: -999em; + + .rtl & { text-align: right; text-indent: 999em; } + width: 16px; height: 16px; background: url(images/icon-drop-list.png); @@ -37,6 +40,7 @@ ul#gf_merge_tag_list { padding: 0; max-height: 200px; min-width: 200px; + max-width: 500px; overflow: auto; position: absolute; background-color: #F8F8F8; diff --git a/assets/css/scss/admin-post-edit.scss b/assets/css/scss/admin-post-edit.scss index 3162d9c802..1462b83541 100644 --- a/assets/css/scss/admin-post-edit.scss +++ b/assets/css/scss/admin-post-edit.scss @@ -16,6 +16,11 @@ display: none; } +// Add some space at bottom of lightbox in Firefox +#select_gravityview_view_form { + margin-bottom: 25px; +} + #select_gravityview_view_form table { margin-top: 20px; diff --git a/assets/css/scss/admin-settings.scss b/assets/css/scss/admin-settings.scss index e37003d267..05ce03462c 100644 --- a/assets/css/scss/admin-settings.scss +++ b/assets/css/scss/admin-settings.scss @@ -7,6 +7,54 @@ .toplevel_page_gravityview_settings // Single site admin { + #gaddon-setting-row-license_key th { + position: relative; + min-height: 150px; + } + #gaddon-setting-row-license_key td { + vertical-align: top; + } + + .gv-refresh-page { + font-weight: bold; + font-size: 1.1em; + } + + .gv-license-details { + + display: block; + clear: both; + position: relative; + font-size: 1.1em; + + li { + margin: 0; + } + + ul.ul-disc { + margin-left: 0; + padding-left: 1.3em; + + li { + padding-left: .1em; + list-style: disc outside; + overflow: visible; // Required to show the bullet + } + } + h3 { + text-transform: uppercase; + font-weight: 400; + font-size: 1em; + margin: .5em 0; + } + h4 { + margin: 0 0 .5em 0; + } + .description { + padding-top: .25em; // Overwrite GF .description + } + } + .gform_tab_content > h3 { position: absolute; top: .5em; diff --git a/assets/css/scss/admin-views.scss b/assets/css/scss/admin-views.scss index a0cf6c13d0..4d7b2adb56 100644 --- a/assets/css/scss/admin-views.scss +++ b/assets/css/scss/admin-views.scss @@ -325,7 +325,8 @@ $gv-overlay-index: 10000; } /** Show spinner cursor while the View is being AJAX updated. **/ -.gv-wait { +.gv-wait, +.gv-wait a { cursor: wait; } @@ -416,6 +417,7 @@ $gv-overlay-index: 10000; } .gv-dialog { + position: absolute; z-index: $gv-overlay-index + 1; } @@ -755,6 +757,34 @@ hr { code { font-style: normal!important; } + + // Vertically stacked radios + &.gv-setting-container-choice_display .gv-label-radio { + display: block; + margin: .5em 0; + } + } + + // Currently only used in "checkboxes" field type + fieldset legend { + font-size: 1.1em; + padding-bottom: .2em; + } + + // Grouped