diff --git a/css/admin.css b/css/admin.css index 60d6660..6a95cb8 100644 --- a/css/admin.css +++ b/css/admin.css @@ -54,3 +54,28 @@ .form-table.pronamic-gf-links-tab fieldset { line-height: 2.75em; } + +/* line 98, ../scss/admin.scss */ +.pronamic-pay-gf-form-choice-list { + margin: 0 !important; +} + +/* line 102, ../scss/admin.scss */ +.pronamic-pay-gf-form-choice-list > li { + margin: 0; +} + +/* line 110, ../scss/admin.scss */ +.pronamic-pay-gf-form-choice .pronamic-pay-gf-form-choice-checked { + margin-left: 2em; +} + +/* line 114, ../scss/admin.scss */ +.pronamic-pay-gf-form-choice > input + label + .pronamic-pay-gf-form-choice-checked { + display: none; +} + +/* line 118, ../scss/admin.scss */ +.pronamic-pay-gf-form-choice > input:checked + label + .pronamic-pay-gf-form-choice-checked { + display: block; +} diff --git a/css/admin.css.map b/css/admin.css.map index 77c5f86..9e6e12a 100644 --- a/css/admin.css.map +++ b/css/admin.css.map @@ -1 +1 @@ -{"version":3,"sources":["admin.css"],"names":[],"mappings":"AAAA,gCAAgC;AAChC;EACE,mBAAmB;EACnB,YAAY;EACZ,aAAa;CACd;;AAED,iCAAiC;AACjC;EACE,gBAAgB;CACjB;;AAED,iCAAiC;AACjC;EACE,iBAAiB;CAClB;AACD,iCAAiC;AACjC;EACE,iBAAiB;CAClB;AACD,iCAAiC;AACjC;EACE,iBAAiB;CAClB;AACD,iCAAiC;AACjC;EACE,wBAAwB;CACzB;AACD,iCAAiC;AACjC;EACE,eAAe;CAChB;;AAED,iCAAiC;AACjC;EACE,cAAc;EACd,aAAa;EACb,gBAAgB;EAChB,kBAAkB;EAClB,aAAa;EACb,sBAAsB;CACvB;AACD,iCAAiC;AACjC;;EAEE,eAAe;CAChB;;AAED,iCAAiC;AACjC;EACE,eAAe;CAChB;AACD,iCAAiC;AACjC;EACE,oBAAoB;CACrB","file":"admin.css","sourcesContent":["/* line 8, ../scss/admin.scss */\n#tab_pronamic_pay h3 .dashicons.fa- {\n font-size: inherit;\n width: auto;\n height: auto;\n}\n\n/* line 18, ../scss/admin.scss */\n#titlediv + #gf-pay-feed-editor {\n margin-top: 1em;\n}\n\n/* line 24, ../scss/admin.scss */\n#gf-pay-feed-editor .form-table ul {\n margin: 10px 0 0;\n}\n/* line 30, ../scss/admin.scss */\n#gf-pay-feed-editor .pronamic-pay-tab .pronamic-pay-tab-block {\n background: #fff;\n}\n/* line 36, ../scss/admin.scss */\n#gf-pay-feed-editor .pronamic-pay-tab .pronamic-pay-table-striped tr:not(.even) {\n background: #fff;\n}\n/* line 42, ../scss/admin.scss */\n#gf-pay-feed-editor .pronamic-pay-tab input + select {\n vertical-align: initial;\n}\n/* line 50, ../scss/admin.scss */\n#gf-pay-feed-editor .pronamic-gf-subscription-tab fieldset .pronamic-pay-gf-subscription-trial-settings label {\n display: block;\n}\n\n/* line 60, ../scss/admin.scss */\n.gforms_edit_form .ideal-edit-link {\n display: none;\n float: right;\n font-size: 10px;\n line-height: 16px;\n height: 16px;\n text-decoration: none;\n}\n/* line 76, ../scss/admin.scss */\n.gforms_edit_form .field_hover .ideal-edit-link,\n.gforms_edit_form .field_selected .ideal-edit-link {\n display: block;\n}\n\n/* line 85, ../scss/admin.scss */\n.form-table .pronamic-pay-description {\n display: block;\n}\n/* line 91, ../scss/admin.scss */\n.form-table.pronamic-gf-links-tab fieldset {\n line-height: 2.75em;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["admin.css"],"names":[],"mappings":"AAAA,gCAAgC;AAChC;EACE,mBAAmB;EACnB,YAAY;EACZ,aAAa;CACd;;AAED,iCAAiC;AACjC;EACE,gBAAgB;CACjB;;AAED,iCAAiC;AACjC;EACE,iBAAiB;CAClB;AACD,iCAAiC;AACjC;EACE,iBAAiB;CAClB;AACD,iCAAiC;AACjC;EACE,iBAAiB;CAClB;AACD,iCAAiC;AACjC;EACE,wBAAwB;CACzB;AACD,iCAAiC;AACjC;EACE,eAAe;CAChB;;AAED,iCAAiC;AACjC;EACE,cAAc;EACd,aAAa;EACb,gBAAgB;EAChB,kBAAkB;EAClB,aAAa;EACb,sBAAsB;CACvB;AACD,iCAAiC;AACjC;;EAEE,eAAe;CAChB;;AAED,iCAAiC;AACjC;EACE,eAAe;CAChB;AACD,iCAAiC;AACjC;EACE,oBAAoB;CACrB;;AAED,iCAAiC;AACjC;EACE,qBAAqB;CACtB;;AAED,kCAAkC;AAClC;EACE,UAAU;CACX;;AAED,kCAAkC;AAClC;EACE,iBAAiB;CAClB;;AAED,kCAAkC;AAClC;EACE,cAAc;CACf;;AAED,kCAAkC;AAClC;EACE,eAAe;CAChB","file":"admin.css","sourcesContent":["/* line 8, ../scss/admin.scss */\n#tab_pronamic_pay h3 .dashicons.fa- {\n font-size: inherit;\n width: auto;\n height: auto;\n}\n\n/* line 18, ../scss/admin.scss */\n#titlediv + #gf-pay-feed-editor {\n margin-top: 1em;\n}\n\n/* line 24, ../scss/admin.scss */\n#gf-pay-feed-editor .form-table ul {\n margin: 10px 0 0;\n}\n/* line 30, ../scss/admin.scss */\n#gf-pay-feed-editor .pronamic-pay-tab .pronamic-pay-tab-block {\n background: #fff;\n}\n/* line 36, ../scss/admin.scss */\n#gf-pay-feed-editor .pronamic-pay-tab .pronamic-pay-table-striped tr:not(.even) {\n background: #fff;\n}\n/* line 42, ../scss/admin.scss */\n#gf-pay-feed-editor .pronamic-pay-tab input + select {\n vertical-align: initial;\n}\n/* line 50, ../scss/admin.scss */\n#gf-pay-feed-editor .pronamic-gf-subscription-tab fieldset .pronamic-pay-gf-subscription-trial-settings label {\n display: block;\n}\n\n/* line 60, ../scss/admin.scss */\n.gforms_edit_form .ideal-edit-link {\n display: none;\n float: right;\n font-size: 10px;\n line-height: 16px;\n height: 16px;\n text-decoration: none;\n}\n/* line 76, ../scss/admin.scss */\n.gforms_edit_form .field_hover .ideal-edit-link,\n.gforms_edit_form .field_selected .ideal-edit-link {\n display: block;\n}\n\n/* line 85, ../scss/admin.scss */\n.form-table .pronamic-pay-description {\n display: block;\n}\n/* line 91, ../scss/admin.scss */\n.form-table.pronamic-gf-links-tab fieldset {\n line-height: 2.75em;\n}\n\n/* line 98, ../scss/admin.scss */\n.pronamic-pay-gf-form-choice-list {\n margin: 0 !important;\n}\n\n/* line 102, ../scss/admin.scss */\n.pronamic-pay-gf-form-choice-list > li {\n margin: 0;\n}\n\n/* line 110, ../scss/admin.scss */\n.pronamic-pay-gf-form-choice .pronamic-pay-gf-form-choice-checked {\n margin-left: 2em;\n}\n\n/* line 114, ../scss/admin.scss */\n.pronamic-pay-gf-form-choice > input + label + .pronamic-pay-gf-form-choice-checked {\n display: none;\n}\n\n/* line 118, ../scss/admin.scss */\n.pronamic-pay-gf-form-choice > input:checked + label + .pronamic-pay-gf-form-choice-checked {\n display: block;\n}\n"]} \ No newline at end of file diff --git a/css/admin.min.css b/css/admin.min.css index 90c3ae6..f0954bc 100644 --- a/css/admin.min.css +++ b/css/admin.min.css @@ -1 +1 @@ -#tab_pronamic_pay h3 .dashicons.fa-{font-size:inherit;width:auto;height:auto}#titlediv+#gf-pay-feed-editor{margin-top:1em}#gf-pay-feed-editor .form-table ul{margin:10px 0 0}#gf-pay-feed-editor .pronamic-pay-tab .pronamic-pay-tab-block{background:#fff}#gf-pay-feed-editor .pronamic-pay-tab .pronamic-pay-table-striped tr:not(.even){background:#fff}#gf-pay-feed-editor .pronamic-pay-tab input+select{vertical-align:initial}#gf-pay-feed-editor .pronamic-gf-subscription-tab fieldset .pronamic-pay-gf-subscription-trial-settings label{display:block}.gforms_edit_form .ideal-edit-link{display:none;float:right;font-size:10px;line-height:16px;height:16px;text-decoration:none}.gforms_edit_form .field_hover .ideal-edit-link,.gforms_edit_form .field_selected .ideal-edit-link{display:block}.form-table .pronamic-pay-description{display:block}.form-table.pronamic-gf-links-tab fieldset{line-height:2.75em} \ No newline at end of file +#tab_pronamic_pay h3 .dashicons.fa-{font-size:inherit;width:auto;height:auto}#titlediv+#gf-pay-feed-editor{margin-top:1em}#gf-pay-feed-editor .form-table ul{margin:10px 0 0}#gf-pay-feed-editor .pronamic-pay-tab .pronamic-pay-tab-block{background:#fff}#gf-pay-feed-editor .pronamic-pay-tab .pronamic-pay-table-striped tr:not(.even){background:#fff}#gf-pay-feed-editor .pronamic-pay-tab input+select{vertical-align:initial}#gf-pay-feed-editor .pronamic-gf-subscription-tab fieldset .pronamic-pay-gf-subscription-trial-settings label{display:block}.gforms_edit_form .ideal-edit-link{display:none;float:right;font-size:10px;line-height:16px;height:16px;text-decoration:none}.gforms_edit_form .field_hover .ideal-edit-link,.gforms_edit_form .field_selected .ideal-edit-link{display:block}.form-table .pronamic-pay-description{display:block}.form-table.pronamic-gf-links-tab fieldset{line-height:2.75em}.pronamic-pay-gf-form-choice-list{margin:0!important}.pronamic-pay-gf-form-choice-list>li{margin:0}.pronamic-pay-gf-form-choice .pronamic-pay-gf-form-choice-checked{margin-left:2em}.pronamic-pay-gf-form-choice>input+label+.pronamic-pay-gf-form-choice-checked{display:none}.pronamic-pay-gf-form-choice>input:checked+label+.pronamic-pay-gf-form-choice-checked{display:block} \ No newline at end of file diff --git a/js/admin.js b/js/admin.js index abafcaa..7ac1e3e 100644 --- a/js/admin.js +++ b/js/admin.js @@ -1,4 +1,3 @@ -/* global ajaxurl */ /* global gform */ /* global form */ /* global SetFieldProperty */ @@ -12,17 +11,7 @@ // Elements var elements = {}; - elements.feed = $element.find( '#gf_ideal_feed' ); - elements.gravityForm = $element.find( '#gf_ideal_gravity_form' ); - elements.formId = $element.find( '#_pronamic_pay_gf_form_id' ); - elements.configId = $element.find( '#gf_ideal_config_id' ); - elements.delayPostCreationItem = $element.find( '#gf_ideal_delay_post_creation_item' ); - elements.confirmationSelectFields = $element.find( '.gf_ideal_confirmation_select' ); - elements.userRoleFieldId = $element.find( '#gf_ideal_user_role_field_id' ); - elements.delayNotifications = $element.find( '#gf_ideal_delay_notifications' ); - elements.fieldSelectFields = $element.find( 'select.field-select' ); elements.subscriptionAmountType = $element.find( 'input[name="_pronamic_pay_gf_subscription_amount_type"]' ); - elements.subscriptionAmountField = $element.find( '#pronamic_pay_gf_subscription_amount_field' ); elements.subscriptionIntervalType = $element.find( 'input[name="_pronamic_pay_gf_subscription_interval_type"]' ); elements.subscriptionInterval = $element.find( '#pronamic_pay_gf_subscription_interval' ); elements.subscriptionIntervalPeriod = $element.find( '#pronamic_pay_gf_subscription_interval_period' ); @@ -30,458 +19,97 @@ elements.subscriptionIntervalDate = $element.find( '#pronamic_pay_gf_subscription_interval_date' ); elements.subscriptionIntervalDateDay = $element.find( '#pronamic_pay_gf_subscription_interval_date_day' ); elements.subscriptionIntervalDateMonth = $element.find( '#pronamic_pay_gf_subscription_interval_date_month' ); - elements.subscriptionIntervalField = $element.find( '#pronamic_pay_gf_subscription_interval_field' ); - elements.subscriptionFrequencyType = $element.find( 'input[name="_pronamic_pay_gf_subscription_frequency_type"]' ); - elements.subscriptionNumberPeriods = $element.find( '#pronamic_pay_gf_subscription_number_periods' ); - elements.subscriptionFrequencyField = $element.find( '#pronamic_pay_gf_subscription_frequency_field' ); - elements.subscriptionTrialEnabled = $element.find( '#pronamic_pay_gf_subscription_trial_enabled' ); - - // Data - var feed = JSON.parse( elements.feed.val() ); - var gravityForm = JSON.parse( elements.gravityForm.val() ); /** - * Update delay post creation item + * Update fields */ - this.updateDelayPostCreationItem = function() { - var display = false; + this.updateFields = function() { + elements.subscriptionAmountType.on( 'change', function() { + var amountType = elements.subscriptionAmountType.filter( ':checked' ).val(); - if ( gravityForm ) { - // Displaying delayed post creation setting if current form has a post field - var postFields = obj.getFieldsByType( [ 'post_title', 'post_content', 'post_excerpt', 'post_category', 'post_custom_field', 'post_image', 'post_tag' ] ); + if ( '' === amountType ) { + elements.subscriptionAmountType.parents( 'tr' ).siblings().hide(); + } else { + elements.subscriptionAmountType.parents('tr').siblings().show(); - if ( postFields.length > 0 ) { - display = true; - } - } - - elements.delayPostCreationItem.toggle( display ); - }; + // Set background color of visible even rows + var rows = elements.subscriptionAmountType.parents( 'table' ).find( 'tr' ); - /** - * Update confirmations - */ - this.updateConfirmationFields = function() { - elements.confirmationSelectFields.empty(); - $( '' ).appendTo( elements.confirmationSelectFields ); + rows.removeClass( 'even' ); + rows.filter( ':visible:even' ).addClass( 'even' ); + } + } ); - if ( gravityForm ) { - $.each( elements.confirmationSelectFields, function( index, field ) { - var linkName = $( field ).attr( 'data-pronamic-link-name' ); + elements.subscriptionAmountType.trigger( 'change' ); - $.each( gravityForm.confirmations, function( confirmationId, confirmation ) { - var isSelected = false; + elements.subscriptionIntervalType.on( 'change', function() { + var intervalType = elements.subscriptionIntervalType.filter( ':checked' ).val(); - if ( 'object' !== typeof feed.links ) { - return; - } + $( element ).find( '.pronamic-pay-gf-subscription-interval-settings' ).hide(); - isSelected = false; + var intervalSettings = $( element ).find( '.pronamic-pay-gf-subscription-interval-settings.interval-' + intervalType ); - if ( 'object' === typeof feed.links[ linkName ] ) { - isSelected = ( feed.links[ linkName ].confirmation_id === confirmation.id ); - } + if ( 'fixed' !== intervalType ) { + elements.subscriptionIntervalPeriod.val( 'D' ); - $( '' ) - .attr( 'value', confirmation.id ) - .text( confirmation.name ) - /* jshint eqeqeq: false */ - .prop( 'selected', isSelected ) - /* jshint eqeqeq: true */ - .appendTo( field ); - }); - } ); - } - }; - - /** - * Get fields by types - * - * @param types - * @return Array - */ - this.getFieldsByType = function( types ) { - var fields = []; - - if ( gravityForm ) { - for ( var i = 0; i < gravityForm.fields.length; i++ ) { - if ( $.inArray( gravityForm.fields[ i ].type, types ) >= 0 ) { - fields.push(gravityForm.fields[ i ]); - } + elements.subscriptionIntervalPeriod.trigger( 'change' ); } - } - return fields; - }; - - this.getInputs = function() { - var inputs = []; - - if ( gravityForm ) { - $.each( gravityForm.fields, function( key, field ) { - if ( field.inputs ) { - $.each( field.inputs, function( key, input ) { - inputs.push( input ); - } ); - } else if ( ! field.displayOnly ) { - inputs.push ( field ); - } - } ); - } - - return inputs; - }; - - /** - * Change form - */ - this.changeForm = function() { - jQuery.get( - ajaxurl, { - action: 'gf_get_form_data', - formId: elements.formId.val() - }, - function( response ) { - if ( response.success ) { - gravityForm = response.data; - - obj.updateFields(); - } + if ( intervalSettings.length > 0 ) { + intervalSettings.show(); } - ); - }; - - /** - * Update user role - */ - this.updateUserRoleFields = function() { - elements.userRoleFieldId.empty(); - $( '' ).appendTo( elements.userRoleFieldId ); - - if ( gravityForm ) { - $.each( gravityForm.fields, function( key, field ) { - var label = field.adminLabel ? field.adminLabel : field.label; - - $( '' ) - .attr( 'value', field.id ) - .text( label ) - /* jshint eqeqeq: false */ - .prop( 'selected', feed.userRoleFieldId == field.id ) - /* jshint eqeqeq: true */ - .appendTo( elements.userRoleFieldId ); - } ); - } - }; - - /** - * Update config - */ - this.updateConfigFields = function() { - var method = elements.configId.find( 'option:selected' ).attr( 'data-ideal-method' ); - - $element.find( '.extra-settings' ).hide(); - $element.find( '.method-' + method ).show(); - }; - - this.updateNotifications = function() { - elements.delayNotifications.empty(); - - if ( gravityForm ) { - $.each( gravityForm.notifications, function( key, notification ) { - if ( 'form_submission' !== notification.event ) { - return; - } - - var item = $( '' ).appendTo( elements.delayNotifications ); - - var fieldId = 'pronamic-pay-gf-notification-' + notification.id; - - $( '' ) - .attr( 'id', fieldId ) - .val( notification.id ) - .prop( 'checked', $.inArray( notification.id, feed.delayNotificationIds ) >= 0 ) - .appendTo( item ); - - item.append( ' ' ); - - $( '' ) - .attr( 'for', fieldId ) - .text( notification.name ) - .appendTo( item ); - } ); - } - }; - - /** - * Update subscription fields - */ - this.updateSubscriptionFields = function() { - if ( gravityForm ) { - elements.subscriptionAmountField.empty(); - elements.subscriptionIntervalField.empty(); - elements.subscriptionFrequencyField.empty(); - - var products = []; - - if ( gravityForm ) { - $.each( gravityForm.fields, function( key, field ) { - if ( 'product' === field.type ) { - products.push( field ); - } - } ); - } - - // Recurring amount field - $element = $( elements.subscriptionAmountField ); - - $( '' ).appendTo( $element ); - - $.each( products, function( key, product ) { - var label = product.adminLabel ? product.adminLabel : product.label; - - $( '' ) - .attr( 'value', product.id ) - .text( label ) - /* jshint eqeqeq: false */ - .prop( 'selected', feed.subscriptionAmountField == product.id ) - /* jshint eqeqeq: true */ - .appendTo( $element ); - } ); - - elements.subscriptionAmountType.on( 'change', function() { - var amountType = elements.subscriptionAmountType.filter( ':checked' ).val(); - - $( element ).find( '.pronamic-pay-gf-subscription-amount-settings' ).hide(); - - if ( '' === amountType ) { - elements.subscriptionAmountType.parents( 'tr' ).siblings().hide(); - } else { - elements.subscriptionAmountType.parents('tr').siblings().show(); - - // Set background color of visible even rows - var rows = elements.subscriptionAmountType.parents( 'table' ).find( 'tr' ); - - rows.removeClass( 'even' ); - rows.filter( ':visible:even' ).addClass( 'even' ); - } - - var amountSettings = $( element ).find( '.pronamic-pay-gf-subscription-amount-settings.amount-' + amountType ); - - if ( amountSettings.length > 0 ) { - amountSettings.show(); - } - } ); - - elements.subscriptionAmountType.trigger( 'change' ); - - // Interval - $element = $( elements.subscriptionIntervalField ); - - $( '' ).appendTo( $element ); - - $.each( obj.getInputs(), function( key, input ) { - var label = input.adminLabel ? input.adminLabel : input.label; - - $( '' ) - .attr( 'value', input.id ) - .text( label ) - /* jshint eqeqeq: false */ - .prop( 'selected', feed.subscriptionIntervalField == input.id ) - /* jshint eqeqeq: true */ - .appendTo( $element ); - } ); - - elements.subscriptionIntervalType.on( 'change', function() { - var intervalType = elements.subscriptionIntervalType.filter( ':checked' ).val(); - - $( element ).find( '.pronamic-pay-gf-subscription-interval-settings' ).hide(); - - var intervalSettings = $( element ).find( '.pronamic-pay-gf-subscription-interval-settings.interval-' + intervalType ); - - if ( 'fixed' !== intervalType ) { - elements.subscriptionIntervalPeriod.val( 'D' ); - - elements.subscriptionIntervalPeriod.trigger( 'change' ); - } - - if ( intervalSettings.length > 0 ) { - intervalSettings.show(); - } - } ); - - elements.subscriptionIntervalDateType.on( 'change', function() { - var intervalDateType = elements.subscriptionIntervalDateType.filter( ':checked' ).val(); - - $( element ).find( '.pronamic-pay-gf-subscription-interval-date-settings' ).hide(); - - var intervalDateSettings = $( element ).find( '.pronamic-pay-gf-subscription-interval-date-settings.interval-date-' + intervalDateType ); - - if ( intervalDateSettings.length > 0 ) { - intervalDateSettings.show(); - } - } ); - - elements.subscriptionIntervalPeriod.on( 'change', function() { - var intervalPeriod = elements.subscriptionIntervalPeriod.val(); - - $( element ).find( '.pronamic-pay-gf-subscription-interval-date-sync-settings' ).hide(); - - $( element ).find( '.pronamic-pay-gf-subscription-interval-date-sync-settings.interval-' + intervalPeriod ).show(); - - switch ( intervalPeriod ) { - case 'D' : - elements.subscriptionIntervalDateType.filter( '[value="payment_date"]' ).prop( 'checked', true ); - elements.subscriptionIntervalDateType.attr( 'disabled', 'disabled' ); - elements.subscriptionIntervalDate.val( '' ); - elements.subscriptionIntervalDateDay.val( '' ); - elements.subscriptionIntervalDateMonth.val( '' ); - - break; - case 'W' : - elements.subscriptionIntervalDateType.removeAttr( 'disabled' ); - elements.subscriptionIntervalDate.val( '' ); - elements.subscriptionIntervalDateMonth.val( '' ); - - break; - case 'M' : - elements.subscriptionIntervalDateType.removeAttr( 'disabled' ); - elements.subscriptionIntervalDateDay.val( '' ); - elements.subscriptionIntervalDateMonth.val( '' ); - - break; - case 'Y' : - elements.subscriptionIntervalDateType.removeAttr( 'disabled' ); - elements.subscriptionIntervalDateDay.val( '' ); - - break; - } - - elements.subscriptionIntervalDateType.trigger( 'change' ); - } ); - - $( element ).find( 'select.pronamic-pay-gf-subscription-interval-date-sync-settings' ).on( 'change', function() { - elements.subscriptionIntervalDateType.filter( '[value="sync"]' ).prop( 'checked', true ); - - elements.subscriptionIntervalDateType.trigger( 'change' ); - } ); - - elements.subscriptionIntervalType.trigger( 'change' ); - elements.subscriptionIntervalPeriod.trigger( 'change' ); - - // Frequency - $element = $( elements.subscriptionFrequencyField ); - - $( '' ).appendTo( $element ); - - $.each( obj.getInputs(), function( key, product ) { - var label = product.adminLabel ? product.adminLabel : product.label; - - $( '' ) - .attr( 'value', product.id ) - .text( label ) - /* jshint eqeqeq: false */ - .prop( 'selected', feed.subscriptionFrequencyField == product.id ) - /* jshint eqeqeq: true */ - .appendTo( $element ); - } ); - - elements.subscriptionFrequencyType.on( 'change', function() { - var frequencyType = elements.subscriptionFrequencyType.filter( ':checked' ).val(); - - $( element ).find( '.pronamic-pay-gf-subscription-frequency-settings' ).hide(); + } ); - var frequencySettings = $( element ).find( '.pronamic-pay-gf-subscription-frequency-settings.frequency-' + frequencyType ); + elements.subscriptionIntervalPeriod.on( 'change', function() { + var intervalPeriod = elements.subscriptionIntervalPeriod.val(); - if ( frequencySettings.length > 0 ) { - frequencySettings.show(); - } - } ); + $( element ).find( '.pronamic-pay-gf-subscription-interval-date-sync-settings' ).hide(); - elements.subscriptionFrequencyType.trigger( 'change' ); + $( element ).find( '.pronamic-pay-gf-subscription-interval-date-sync-settings.interval-' + intervalPeriod ).show(); - /** - * Trial period. - */ + switch ( intervalPeriod ) { + case 'D' : + elements.subscriptionIntervalDateType.filter( '[value="payment_date"]' ).prop( 'checked', true ); + elements.subscriptionIntervalDateType.attr( 'disabled', 'disabled' ); + elements.subscriptionIntervalDate.val( '' ); + elements.subscriptionIntervalDateDay.val( '' ); + elements.subscriptionIntervalDateMonth.val( '' ); - // Trial enabled. - elements.subscriptionTrialEnabled.on( 'change', function() { - var enabled = elements.subscriptionTrialEnabled.filter( ':checked' ).length > 0; + break; + case 'W' : + elements.subscriptionIntervalDateType.removeAttr( 'disabled' ); + elements.subscriptionIntervalDate.val( '' ); + elements.subscriptionIntervalDateMonth.val( '' ); - var trialSettings = $( element ).find( '.pronamic-pay-gf-subscription-trial-settings' ); + break; + case 'M' : + elements.subscriptionIntervalDateType.removeAttr( 'disabled' ); + elements.subscriptionIntervalDateDay.val( '' ); + elements.subscriptionIntervalDateMonth.val( '' ); - if ( enabled ) { - trialSettings.show(); + break; + case 'Y' : + elements.subscriptionIntervalDateType.removeAttr( 'disabled' ); + elements.subscriptionIntervalDateDay.val( '' ); - return; - } + break; + } - trialSettings.hide(); - } ); + elements.subscriptionIntervalDateType.trigger( 'change' ); + } ); - elements.subscriptionTrialEnabled.trigger( 'change' ); - } - }; + $( element ).find( '.pronamic-pay-gf-subscription-interval-date-sync-settings select' ).on( 'change', function() { + elements.subscriptionIntervalDateType.filter( '[value="sync"]' ).prop( 'checked', true ); - /** - * Update select fields - */ - this.updateSelectFields = function() { - if ( gravityForm ) { - elements.fieldSelectFields.empty(); - - elements.fieldSelectFields.each( function( i, element ) { - $element = $( element ); - - var name = $element.data( 'gateway-field-name' ); - - // Auto detect option. - var auto_option_label = $element.data( 'auto-option-label' ); - - if ( '' !== auto_option_label ) { - $( '' ) - .attr( 'value', 'auto' ) - .text( auto_option_label ) - /* jshint eqeqeq: false */ - .prop( 'selected', feed.fields[name] == 'auto' ) - /* jshint eqeqeq: true */ - .appendTo( $element ); - } - - $( '' ).appendTo( $element ); - - $.each( obj.getInputs(), function( key, input ) { - var label = input.adminLabel ? input.adminLabel : input.label; - - $( '' ) - .attr( 'value', input.id ) - .text( label ) - /* jshint eqeqeq: false */ - .prop( 'selected', feed.fields[ name ] == input.id ) - /* jshint eqeqeq: true */ - .appendTo( $element ); - } ); - } ); - } - }; + elements.subscriptionIntervalDateType.trigger( 'change' ); + } ); - /** - * Update fields - */ - this.updateFields = function() { - obj.updateConfigFields(); - obj.updateDelayPostCreationItem(); - obj.updateConfirmationFields(); - obj.updateUserRoleFields(); - obj.updateSubscriptionFields(); - obj.updateSelectFields(); - obj.updateNotifications(); + elements.subscriptionIntervalType.trigger( 'change' ); + elements.subscriptionIntervalPeriod.trigger( 'change' ); }; // Function calls obj.updateFields(); - - elements.formId.change( obj.changeForm ); - elements.configId.change( obj.updateConfigFields ); }; /** diff --git a/js/admin.min.js b/js/admin.min.js index 9a8b98d..5fd2974 100644 --- a/js/admin.min.js +++ b/js/admin.min.js @@ -1,2 +1,2 @@ -!function(d){function t(n){var a=this,o=d(n),r={},s=(r.feed=o.find("#gf_ideal_feed"),r.gravityForm=o.find("#gf_ideal_gravity_form"),r.formId=o.find("#_pronamic_pay_gf_form_id"),r.configId=o.find("#gf_ideal_config_id"),r.delayPostCreationItem=o.find("#gf_ideal_delay_post_creation_item"),r.confirmationSelectFields=o.find(".gf_ideal_confirmation_select"),r.userRoleFieldId=o.find("#gf_ideal_user_role_field_id"),r.delayNotifications=o.find("#gf_ideal_delay_notifications"),r.fieldSelectFields=o.find("select.field-select"),r.subscriptionAmountType=o.find('input[name="_pronamic_pay_gf_subscription_amount_type"]'),r.subscriptionAmountField=o.find("#pronamic_pay_gf_subscription_amount_field"),r.subscriptionIntervalType=o.find('input[name="_pronamic_pay_gf_subscription_interval_type"]'),r.subscriptionInterval=o.find("#pronamic_pay_gf_subscription_interval"),r.subscriptionIntervalPeriod=o.find("#pronamic_pay_gf_subscription_interval_period"),r.subscriptionIntervalDateType=o.find('input[name="_pronamic_pay_gf_subscription_interval_date_type"]'),r.subscriptionIntervalDate=o.find("#pronamic_pay_gf_subscription_interval_date"),r.subscriptionIntervalDateDay=o.find("#pronamic_pay_gf_subscription_interval_date_day"),r.subscriptionIntervalDateMonth=o.find("#pronamic_pay_gf_subscription_interval_date_month"),r.subscriptionIntervalField=o.find("#pronamic_pay_gf_subscription_interval_field"),r.subscriptionFrequencyType=o.find('input[name="_pronamic_pay_gf_subscription_frequency_type"]'),r.subscriptionNumberPeriods=o.find("#pronamic_pay_gf_subscription_number_periods"),r.subscriptionFrequencyField=o.find("#pronamic_pay_gf_subscription_frequency_field"),r.subscriptionTrialEnabled=o.find("#pronamic_pay_gf_subscription_trial_enabled"),JSON.parse(r.feed.val())),p=JSON.parse(r.gravityForm.val());this.updateDelayPostCreationItem=function(){var e=!1;p&&0").appendTo(r.confirmationSelectFields),p&&d.each(r.confirmationSelectFields,function(e,n){var a=d(n).attr("data-pronamic-link-name");d.each(p.confirmations,function(e,i){var t=!1;"object"==typeof s.links&&(t=!1,"object"==typeof s.links[a]&&(t=s.links[a].confirmation_id===i.id),d("").attr("value",i.id).text(i.name).prop("selected",t).appendTo(n))})})},this.getFieldsByType=function(e){var i=[];if(p)for(var t=0;t").appendTo(r.userRoleFieldId),p&&d.each(p.fields,function(e,i){var t=i.adminLabel||i.label;d("").attr("value",i.id).text(t).prop("selected",s.userRoleFieldId==i.id).appendTo(r.userRoleFieldId)})},this.updateConfigFields=function(){var e=r.configId.find("option:selected").attr("data-ideal-method");o.find(".extra-settings").hide(),o.find(".method-"+e).show()},this.updateNotifications=function(){r.delayNotifications.empty(),p&&d.each(p.notifications,function(e,i){var t,n;"form_submission"===i.event&&(t=d("").appendTo(r.delayNotifications),n="pronamic-pay-gf-notification-"+i.id,d('').attr("id",n).val(i.id).prop("checked",0<=d.inArray(i.id,s.delayNotificationIds)).appendTo(t),t.append(" "),d("").attr("for",n).text(i.name).appendTo(t))})},this.updateSubscriptionFields=function(){var t;p&&(r.subscriptionAmountField.empty(),r.subscriptionIntervalField.empty(),r.subscriptionFrequencyField.empty(),t=[],p&&d.each(p.fields,function(e,i){"product"===i.type&&t.push(i)}),o=d(r.subscriptionAmountField),d("").appendTo(o),d.each(t,function(e,i){var t=i.adminLabel||i.label;d("").attr("value",i.id).text(t).prop("selected",s.subscriptionAmountField==i.id).appendTo(o)}),r.subscriptionAmountType.on("change",function(){var e=r.subscriptionAmountType.filter(":checked").val(),i=(d(n).find(".pronamic-pay-gf-subscription-amount-settings").hide(),""===e?r.subscriptionAmountType.parents("tr").siblings().hide():(r.subscriptionAmountType.parents("tr").siblings().show(),(i=r.subscriptionAmountType.parents("table").find("tr")).removeClass("even"),i.filter(":visible:even").addClass("even")),d(n).find(".pronamic-pay-gf-subscription-amount-settings.amount-"+e));0").appendTo(o),d.each(a.getInputs(),function(e,i){var t=i.adminLabel||i.label;d("").attr("value",i.id).text(t).prop("selected",s.subscriptionIntervalField==i.id).appendTo(o)}),r.subscriptionIntervalType.on("change",function(){var e=r.subscriptionIntervalType.filter(":checked").val(),i=(d(n).find(".pronamic-pay-gf-subscription-interval-settings").hide(),d(n).find(".pronamic-pay-gf-subscription-interval-settings.interval-"+e));"fixed"!==e&&(r.subscriptionIntervalPeriod.val("D"),r.subscriptionIntervalPeriod.trigger("change")),0").appendTo(o),d.each(a.getInputs(),function(e,i){var t=i.adminLabel||i.label;d("").attr("value",i.id).text(t).prop("selected",s.subscriptionFrequencyField==i.id).appendTo(o)}),r.subscriptionFrequencyType.on("change",function(){var e=r.subscriptionFrequencyType.filter(":checked").val(),e=(d(n).find(".pronamic-pay-gf-subscription-frequency-settings").hide(),d(n).find(".pronamic-pay-gf-subscription-frequency-settings.frequency-"+e));0").attr("value","auto").text(i).prop("selected","auto"==s.fields[n]).appendTo(o),d("").appendTo(o),d.each(a.getInputs(),function(e,i){var t=i.adminLabel||i.label;d("").attr("value",i.id).text(t).prop("selected",s.fields[n]==i.id).appendTo(o)})}))},this.updateFields=function(){a.updateConfigFields(),a.updateDelayPostCreationItem(),a.updateConfirmationFields(),a.updateUserRoleFields(),a.updateSubscriptionFields(),a.updateSelectFields(),a.updateNotifications()},a.updateFields(),r.formId.change(a.changeForm),r.configId.change(a.updateConfigFields)}d.fn.gravityFormsPayFeedEditor=function(){return this.each(function(){var e,i=d(this);i.data("gf-pay-feed-editor")||(e=new t(this),i.data("gf-pay-feed-editor",e))})},d(document).ready(function(){d(".gforms_edit_form .ideal-edit-link").click(function(e){e.stopPropagation()}),d("#gf-pay-feed-editor").gravityFormsPayFeedEditor(),"undefined"!=typeof gform&&"undefined"!=typeof form&&(gform.addAction("gform_load_field_choices",function(e){var i,e=e.shift();e&&(i="pronamic_pay_payment_method_selector"===e.type,d('label[for="field_choice_values_enabled"]').parent("div").toggle(!i),i&&d.each(e.choices,function(e,i){i.builtin&&((i=d(".field-choice-input.field-choice-value").eq(e)).attr("disabled","disabled"),i.parent("li").find(".gf_delete_field_choice").remove())}))}),gform.addFilter("gform_has_conditional_logic_dependency",function(e,i){return"undefined"!=typeof form&&-1!==d.inArray(i.toString(),form.pronamic_pay_condition_field_ids)||e})),d(document).on("gform_load_field_settings",function(e,t){d.each({pronamic_pay_config_field:"pronamicPayConfigId",pronamic_pay_display_field:"pronamicPayDisplayMode"},function(e,i){e=d("#"+e);0 li { + margin: 0; +} + +.pronamic-pay-gf-form-choice { + +} + +.pronamic-pay-gf-form-choice .pronamic-pay-gf-form-choice-checked { + margin-left: 2em; +} + +.pronamic-pay-gf-form-choice > input + label + .pronamic-pay-gf-form-choice-checked { + display: none; +} + +.pronamic-pay-gf-form-choice > input:checked + label + .pronamic-pay-gf-form-choice-checked { + display: block; +} diff --git a/src/AdminPaymentFormPostType.php b/src/AdminPaymentFormPostType.php index f04fd95..b049ac1 100644 --- a/src/AdminPaymentFormPostType.php +++ b/src/AdminPaymentFormPostType.php @@ -270,7 +270,7 @@ public function save_post( $post_id ) { 'type' => 'boolean', ], '_pronamic_pay_gf_fields' => [ - 'type' => 'array', + 'type' => 'object', 'items' => [ 'type' => 'string', ], diff --git a/views/html-admin-feed-settings.php b/views/html-admin-feed-settings.php index e982c2e..a93b051 100644 --- a/views/html-admin-feed-settings.php +++ b/views/html-admin-feed-settings.php @@ -31,42 +31,82 @@ $pay_feed = new PayFeed( $post_id ); -$feed = new stdClass(); -$feed->conditionEnabled = $pay_feed->condition_enabled; -$feed->conditionalLogicObject = $pay_feed->conditional_logic_object; -$feed->delayNotificationIds = $pay_feed->delay_notification_ids; -$feed->fields = get_post_meta( $post_id, '_pronamic_pay_gf_fields', true ); -$feed->userRoleFieldId = get_post_meta( $post_id, '_pronamic_pay_gf_user_role_field_id', true ); -$feed->links = $pay_feed->links; -$feed->subscriptionAmountType = $pay_feed->subscription_amount_type; -$feed->subscriptionAmountField = $pay_feed->subscription_amount_field; -$feed->subscriptionIntervalType = $pay_feed->subscription_interval_type; -$feed->subscriptionInterval = $pay_feed->subscription_interval; -$feed->subscriptionIntervalPeriod = $pay_feed->subscription_interval_period; -$feed->subscriptionIntervalField = $pay_feed->subscription_interval_field; -$feed->subscriptionFrequencyType = $pay_feed->subscription_frequency_type; -$feed->subscriptionNumberPeriods = $pay_feed->subscription_number_periods; -$feed->subscriptionFrequencyField = $pay_feed->subscription_frequency_field; - -$trial = $pay_feed->get_subscription_trial(); - -$feed->subscriptionTrialEnabled = $trial->enabled; -$feed->subscriptionTrialLength = $trial->length; -$feed->subscriptionTrialLengthUnit = $trial->length_unit; +/** + * Private helper function for Gravity Forms dropdown input. + * + * @param array $form Gravity Forms form array/object. + * @param array $args Arguments. + * @return void + */ +function _pronamic_pay_gravityforms_dropdown_input( $form, $args ) { + $args = \wp_parse_args( + $args, + [ + 'id' => '', + 'name' => '', + 'selected' => '', + 'type' => '', + 'options' => [], + ] + ); + + $id = $args['id']; + $name = $args['name']; + $selected = $args['selected']; + $type = $args['type']; + $options = $args['options']; + + foreach ( $form['fields'] as $field ) { + if ( '' !== $type && $type !== $field['type'] ) { + continue; + } + + $field_label = empty( $field['adminLabel'] ) ? $field['label'] : $field['adminLabel']; + + if ( \is_array( $field->inputs ) ) { + foreach ( $field->inputs as $input ) { + $input_label = empty( $input['adminLabel'] ) ? $input['label'] : $input['adminLabel']; + + $options[ $input['id'] ] = \sprintf( + '%s (%s)', + $field_label, + $input_label + ); + } + } + + if ( empty( $field->inputs ) ) { + if ( ! $field->displayOnly ) { + $options[ $field['id'] ] = $field_label; + } + } + } + + \printf( + '', + \esc_attr( $id ), + \esc_attr( $name ) + ); + + foreach ( $options as $value => $label ) { + \printf( + '%s', + \esc_attr( $value ), + \selected( $selected, $value, false ), + \esc_html( $label ) + ); + } + + echo ''; +} ?> - - - - - - - + @@ -84,34 +124,6 @@ - - - - - - - - - - - - - - - - - - id ); ?>> - title ); ?> - - - - - - - - - @@ -262,90 +274,71 @@ - - - - - - - - - - - =' ) ) : + $notifications = []; - $notifications = []; - if ( isset( $form_meta['notifications'] ) && is_array( $form_meta['notifications'] ) ) { - $notifications = $form_meta['notifications']; - } - - printf( '' ); + if ( isset( $form_meta['notifications'] ) && is_array( $form_meta['notifications'] ) ) { + $notifications = $form_meta['notifications']; + } - if ( ! empty( $notifications ) ) { - foreach ( $notifications as $notification ) { - if ( 'form_submission' !== $notification['event'] ) { - continue; - } + $notifications = \array_filter( + $notifications, + function( $notification ) { + return 'form_submission' === $notification['event']; + } + ); - $id = $notification['id']; + if ( count( $notifications ) > 0 ) : + ?> - printf( '' ); + + + - printf( - '', - esc_attr( 'pronamic-pay-gf-notification-' . $id ), - esc_attr( $id ), - checked( in_array( $id, $pay_feed->delay_notification_ids, true ), true, false ) - ); + + + + + + - printf( ' ' ); + - printf( - '%s', - esc_attr( 'pronamic-pay-gf-notification-' . $id ), - esc_html( $notification['name'] ) - ); + - printf( '' ); - } - } + + ' ); + $id = $notification['id']; - else : + printf( + '', + esc_attr( 'pronamic-pay-gf-notification-' . $id ), + esc_attr( $id ), + checked( in_array( $id, $pay_feed->delay_notification_ids, true ), true, false ) + ); - ?> + printf( ' ' ); - - - /> + printf( + '%s', + esc_attr( 'pronamic-pay-gf-notification-' . $id ), + esc_html( $notification['name'] ) + ); - - - - - - /> + ?> + - - - - - + - + + - + - - @@ -425,9 +418,10 @@ function( $action ) { links[ $name ] ) ) { $link = $pay_feed->links[ $name ]; @@ -459,11 +453,31 @@ function( $action ) { ', + '', esc_attr( $name ) ); + printf( + '%s', + \esc_attr( '' ), + \selected( null === $confirmation_id, true, false ), + \esc_html__( '— Select Confirmation —', 'pronamic_ideal' ) + ); + + foreach ( $confirmations as $confirmation ) { + printf( + '%s', + \esc_attr( $confirmation['id'] ), + \selected( $confirmation['id'], $confirmation_id, false ), + \esc_html( $confirmation['name'] ) + ); + } + + echo ''; + ?> @@ -478,7 +492,7 @@ function( $action ) { [ 'selected' => esc_attr( $page_id ), 'name' => esc_attr( '_pronamic_pay_gf_links[' . $name . '][page_id]' ), - 'show_option_none' => esc_html__( '— Select —', 'pronamic_ideal' ), + 'show_option_none' => esc_html__( '— Select Page —', 'pronamic_ideal' ), ] ); @@ -519,27 +533,45 @@ function( $action ) { - - - - subscription_amount_type, '' ); ?> /> + + + subscription_amount_type, '' ); ?> /> + + - - - subscription_amount_type, 'total' ); ?> /> + + subscription_amount_type, 'total' ); ?> /> + + - - - subscription_amount_type, 'field' ); ?> /> + + subscription_amount_type, 'field' ); ?> /> + + - - + + 'pronamic_pay_gf_subscription_amount_field', + 'name' => '_pronamic_pay_gf_subscription_amount_field', + 'selected' => $pay_feed->subscription_amount_field, + 'type' => 'product', + 'options' => [ + '' => '', + ], + ] + ); + + ?> @@ -558,14 +590,15 @@ function( $action ) { - - - - subscription_interval_type, 'fixed' ); ?> /> + + + subscription_interval_type, 'fixed' ); ?> /> + + - + @@ -578,16 +611,33 @@ function( $action ) { - - - subscription_interval_type, 'field' ); ?> /> + + subscription_interval_type, 'field' ); ?> /> + + - - + + 'pronamic_pay_gf_subscription_interval_field', + 'name' => '_pronamic_pay_gf_subscription_interval_field', + 'selected' => $pay_feed->subscription_interval_field, + 'options' => [ + '' => '', + ], + ] + ); + + echo ' '; - + esc_html_e( 'days', 'pronamic_ideal' ); + + ?> @@ -616,32 +666,54 @@ function( $action ) { - - - - subscription_frequency_type, 'unlimited' ); ?> /> + + + subscription_frequency_type, 'unlimited' ); ?> /> + + + - - - subscription_frequency_type, 'fixed' ); ?> /> + + subscription_frequency_type, 'fixed' ); ?> /> + + + - + - - - subscription_frequency_type, 'field' ); ?> /> + + subscription_frequency_type, 'field' ); ?> /> + + + - - + + + _pronamic_pay_gravityforms_dropdown_input( + $form_meta, + [ + 'id' => 'pronamic_pay_gf_subscription_frequency_field', + 'name' => '_pronamic_pay_gf_subscription_frequency_field', + 'selected' => $pay_feed->subscription_frequency_field, + 'options' => [ + '' => '', + ], + ] + ); + + echo ' '; + + echo esc_html( _x( 'times', 'Recurring payment', 'pronamic_ideal' ) ); + + ?> @@ -666,37 +738,40 @@ function( $action ) { - + enabled ); ?> /> - - - - - + + - + + + + - - length_unit, 'D' ); ?>> - length_unit, 'W' ); ?>> - length_unit, 'M' ); ?>> - length_unit, 'Y' ); ?>> - + - + + length_unit, 'D' ); ?>> + length_unit, 'W' ); ?>> + length_unit, 'M' ); ?>> + length_unit, 'Y' ); ?>> + - - - \esc_html_e( - 'The trial period uses the total amount of the form. You can set the recurring amount separately and add product fields with negative amounts for a discounted trial period.', - 'pronamic_ideal' - ); + + - + \esc_html_e( + 'The trial period uses the total amount of the form. You can set the recurring amount separately and add product fields with negative amounts for a discounted trial period.', + 'pronamic_ideal' + ); + + ?> + + @@ -722,15 +797,18 @@ function( $action ) { ?> - - - - subscription_interval_date_type, 'payment_date' ); ?> /> + + + subscription_interval_date_type, 'payment_date' ); ?> /> + + - - + + subscription_interval_date_type, 'sync' ); ?> /> + + - subscription_interval_date_type, 'sync' ); ?> /> @@ -887,7 +964,7 @@ function( $action ) { - + subscription_interval_date_prorate ); ?> /> @@ -934,6 +1011,9 @@ function( $action ) { 'vat_number' => __( 'VAT Number', 'pronamic_ideal' ), ]; + $meta_fields = \get_post_meta( $post_id, '_pronamic_pay_gf_fields', true ); + $meta_fields = \is_array( $meta_fields ) ? $meta_fields : []; + ?> @@ -951,22 +1031,38 @@ function( $action ) { $auto_option_label = ''; - if ( in_array( $name, [ 'prefix_name', 'first_name', 'middle_name', 'last_name', 'suffix_name' ], true ) ) : + if ( in_array( $name, [ 'prefix_name', 'first_name', 'middle_name', 'last_name', 'suffix_name' ], true ) ) { $auto_option_label = __( '— From first name field —', 'pronamic_ideal' ); - elseif ( in_array( $name, [ 'address1', 'address2', 'zip', 'city', 'state', 'country' ], true ) ) : + } elseif ( in_array( $name, [ 'address1', 'address2', 'zip', 'city', 'state', 'country' ], true ) ) { $auto_option_label = __( '— From first address field —', 'pronamic_ideal' ); - elseif ( 'telephone_number' === $name ) : + } elseif ( 'telephone_number' === $name ) { $auto_option_label = __( '— First phone field —', 'pronamic_ideal' ); - elseif ( 'email' === $name ) : + } elseif ( 'email' === $name ) { $auto_option_label = __( '— First email address field —', 'pronamic_ideal' ); - endif; - - printf( - '', - esc_attr( 'gf_ideal_fields_' . $name ), - esc_attr( '_pronamic_pay_gf_fields[' . $name . ']' ), - esc_attr( $name ), - esc_attr( $auto_option_label ) + } + + $current = 'auto'; + + if ( \array_key_exists( $name, $meta_fields ) ) { + $current = $meta_fields[ $name ]; + } + + $options = []; + + if ( '' !== $auto_option_label ) { + $options['auto'] = $auto_option_label; + } + + $options[''] = ''; + + _pronamic_pay_gravityforms_dropdown_input( + $form_meta, + [ + 'id' => 'gf_ideal_fields_' . $name, + 'name' => '_pronamic_pay_gf_fields[' . $name . ']', + 'selected' => $current, + 'options' => $options, + ] ); ?> @@ -1083,41 +1179,24 @@ function GetConditionalLogicFields () { - + 'gf_ideal_user_role_field_id', + 'name' => '_pronamic_pay_gf_user_role_field_id', + 'selected' => \get_post_meta( $post_id, '_pronamic_pay_gf_user_role_field_id', true ), + 'options' => [ + '' => \__( '— Select Field —', 'pronamic_ideal' ), + ], + ] + ); + + ?> - - - var form = %s; - %s - ', - wp_json_encode( $js_form ), - // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped - GFCommon::gf_vars( false ) - ); - - endif; - - endif; - - ?> -
- -
+ +
- - \esc_html_e( - 'The trial period uses the total amount of the form. You can set the recurring amount separately and add product fields with negative amounts for a discounted trial period.', - 'pronamic_ideal' - ); +
+ -