Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fieldmap screen design updates #339

Open
wants to merge 72 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
8a001d1
the first thing to do on #319 is create a new database field on the f…
jonathanstegall Oct 4, 2019
42ed5a4
for #319, the next thing to do is populate and load the wordpress_obj…
jonathanstegall Oct 4, 2019
444104c
make that field more consistent with the other fields though
jonathanstegall Oct 4, 2019
0cd59b1
for #319, next we expose the status value and available options to th…
jonathanstegall Oct 4, 2019
fa4d4b6
this method is wrongly named. it doesn't appear to ever be called in …
jonathanstegall Oct 4, 2019
9ffe4ad
for #319, make the status picker not fail on new fieldmaps
jonathanstegall Oct 4, 2019
c848455
for #319, this is the ajax side of the status picker for wordpress ob…
jonathanstegall Oct 4, 2019
656462e
add a clarifying comment about what this parameter is
jonathanstegall Oct 7, 2019
bc41af9
these two variables are not dependent on anything in the foreach, we …
jonathanstegall Oct 7, 2019
57e7ed9
make an empty statuses array
jonathanstegall Oct 7, 2019
1524856
when creating or upserting data in wordpress, pass the default status…
jonathanstegall Oct 7, 2019
77b6448
we don't need to check the version. it always has a default of '' if …
jonathanstegall Oct 7, 2019
fe4dbea
update node stuff
jonathanstegall Nov 4, 2019
4348fbb
javascript changes: for now, it just runs select2 more universally in…
jonathanstegall Nov 4, 2019
3695ffa
css and markup changes for fieldmap screen. this will need a lot more…
jonathanstegall Nov 4, 2019
a765d9b
use push immediately instead of async, but don't change the database …
jonathanstegall Nov 4, 2019
b8508b5
typo
jonathanstegall Nov 4, 2019
ab79139
Merge branch 'master' into 328-fieldmap-screen-design-updates
jonathanstegall Jan 6, 2020
432675e
basic expand/collapse styles/markup/script
jonathanstegall Jan 6, 2020
ab7f51b
better selectors. also set up 5.3 styles for selectwoo
jonathanstegall Jan 7, 2020
c0b1652
more clear css
jonathanstegall Jan 7, 2020
7433afe
get possible statuses based on what type of wordpress object it is
jonathanstegall Jan 8, 2020
598930d
fix the placeholder array
jonathanstegall Jan 8, 2020
ec7f107
style changes: box width changes, label styles, field grouping styles…
jonathanstegall Jan 10, 2020
b8c9394
not going to deprecate the get_wordpress_object_description method af…
jonathanstegall Jan 10, 2020
6f79356
put the spinners in the right place
jonathanstegall Jan 10, 2020
b18ffd4
renaming js files so we can make a wordpress-object.js file
jonathanstegall Jan 10, 2020
c6fc913
this is that wordpress-object.js file. it's not done yet.
jonathanstegall Jan 10, 2020
cd3d8cb
wordpress default status picker field
jonathanstegall Jan 10, 2020
4a30613
markup for draft fields
jonathanstegall Jan 10, 2020
e8dd99a
handle salesforce record type and date fields
jonathanstegall Jan 10, 2020
60765f1
combined js file
jonathanstegall Jan 10, 2020
7872e19
declare that variable though
jonathanstegall Jan 10, 2020
b95f849
do some wpcs updates to the php files that have been edited anyway
jonathanstegall Jan 10, 2020
2fc0e7c
fieldmap screen style, markup, interaction stuff is done for now exce…
jonathanstegall Jan 11, 2020
2cfe782
style fixes for subfields on the wp and sf fields. also select2 fixes…
jonathanstegall Jan 15, 2020
c2ba8d2
put a wrapping class in the sass
jonathanstegall Feb 24, 2020
8b2301c
Merge branch 'master' into 328-fieldmap-screen-design-updates
jonathanstegall Feb 24, 2020
85a0f1f
fix push_immediately when there's no previous value
jonathanstegall Feb 25, 2020
d51430d
fix duplicate id values
jonathanstegall Feb 25, 2020
8a1c62b
fix the script that sets whether a default record type on the salesfo…
jonathanstegall Feb 25, 2020
082d110
fix field label so it matches the id
jonathanstegall Feb 25, 2020
92eafc2
Merge branch 'master' into 319-publish-post-status
jonathanstegall Feb 25, 2020
b19ecfd
Merge branch '328-fieldmap-screen-design-updates' into 319-publish-po…
jonathanstegall Feb 25, 2020
51ef39d
Merge pull request #323 from MinnPost/319-publish-post-status
jonathanstegall Feb 25, 2020
859fe7b
save button cleanup
jonathanstegall Feb 25, 2020
770b1bc
use default status from the fieldmap on posts and comments. this fini…
jonathanstegall Mar 3, 2020
a6f45cb
possibly empty array
jonathanstegall Mar 3, 2020
705044a
add some default attachment values if they're not already present, in…
jonathanstegall Mar 3, 2020
5b1fbbb
in an intermediate state of creating a fieldmap, there are some php e…
jonathanstegall Mar 16, 2020
7cea094
Merge branch 'master' into 328-fieldmap-screen-design-updates
jonathanstegall Mar 21, 2020
2e54a76
Merge branch 'master' into 328-fieldmap-screen-design-updates
jonathanstegall Apr 1, 2020
ba140c5
Merge branch 'master' into 328-fieldmap-screen-design-updates
jonathanstegall Apr 18, 2020
062bc62
Merge branch 'master' into 328-fieldmap-screen-design-updates
jonathanstegall Apr 20, 2020
582b205
clear out the default type value if it was pre-existing but no longer…
jonathanstegall Apr 21, 2020
8297b53
this field could be empty and we wouldn't want to save the value
jonathanstegall Apr 21, 2020
fb6e833
fix the activate process so it no longer causes errors before it fini…
jonathanstegall Oct 21, 2020
ec04c63
Merge branch 'master' into 328-fieldmap-screen-design-updates
jonathanstegall Oct 21, 2020
f5b128c
take out the error logs
jonathanstegall Oct 21, 2020
8fc28c3
Merge branch '362-add-locked-field-indicator' into 328-fieldmap-scree…
jonathanstegall Oct 21, 2020
6714925
logging because it has been sooooooo long
jonathanstegall Nov 24, 2020
c6d29b0
definitely get that out of here
jonathanstegall Nov 24, 2020
a7e1a26
Merge branch 'master' into 328-fieldmap-screen-design-updates
jonathanstegall Jul 21, 2021
52ae6bd
Merge branch 'master' into 328-fieldmap-screen-design-updates
jonathanstegall Jul 21, 2021
dab2f80
fix postbox stuff
jonathanstegall Jul 21, 2021
2f6b316
cleanup
jonathanstegall Jul 21, 2021
fa6661c
update the selectors
jonathanstegall Jul 22, 2021
23605ba
show/hide situation for adding a new row
jonathanstegall Jul 23, 2021
706868f
that variable was definitely missing
jonathanstegall Jul 24, 2021
a0fbfbb
update the css
jonathanstegall Jul 27, 2021
190695a
Merge branch 'master' into 328-fieldmap-screen-design-updates
jonathanstegall Jul 28, 2021
cd29725
Merge branch 'master' into 328-fieldmap-screen-design-updates
jonathanstegall May 22, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 5 additions & 0 deletions assets/css/object-sync-for-salesforce-admin.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion assets/css/vendor/selectwoo.min.css

Large diffs are not rendered by default.

409 changes: 279 additions & 130 deletions assets/js/object-sync-for-salesforce-admin.js

Large diffs are not rendered by default.

6 changes: 5 additions & 1 deletion assets/js/object-sync-for-salesforce-admin.min.js

Large diffs are not rendered by default.

102 changes: 0 additions & 102 deletions assets/js/src/01-salesforce-object.js

This file was deleted.

86 changes: 86 additions & 0 deletions assets/js/src/01-wordpress-object.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
/**
* Generate record type choices for the WordPress object
* This includes possible statuses to choose from, and whether or not there are drafts
* @param {string} wordpressObject the WordPress object name
* @param {bool} change is this a change or a pageload
*/
function wordpressObjectRecordSettings( wordpressObject, change ) {
var data = {
'action': 'get_wordpress_object_description',
'include': [ 'statuses', 'drafts' ],
'wordpress_object': wordpressObject
};

// for default status picker
var selectStatusesContainer = '.sfwp-m-wordpress-statuses';
var selectStatusField = '#sfwp-default-status';
var statusFieldOptions = '';
var firstStatusOption = $( selectStatusField + ' option' ).first().text();

// for draft settings
var draftContainer = 'sfwp-m-wordpress-drafts';
var draftFieldGroup = draftContainer + draftContainer + '-' + wordpressObject + ' .sfwp-m-single-checkboxes';
var draftOptions = '';
var draftMarkup = '';

// hide the containers first in case they're empty
$( selectStatusesContainer ).addClass( 'wordpress-statuses-template' );
$( '.' + draftContainer ).addClass( 'sfwp-m-drafts-template' );
$( '.' + draftContainer ).addClass( draftContainer );
if ( true === change ) {
$( draftFieldGroup + ' input[type="checkbox"]' ).prop( 'checked', false );
}

if ( '' !== $( selectStatusField ).val() ) {
$( selectStatusesContainer ).removeClass( 'wordpress-statuses-template' );
} else {
firstStatusOption = '<option value="">' + firstStatusOption + '</option>';
statusFieldOptions += firstStatusOption;
}

if ( 0 < $( draftFieldGroup + 'input:checked' ).length ) {
$( '.' + draftContainer ).removeClass( 'sfwp-m-drafts-template' );
}

$.ajax( {
type: 'POST',
url: ajaxurl,
data: data,
beforeSend: function() {
$( '.spinner-wordpress' ).addClass( 'is-active' );
},
success: function( response ) {
if ( 0 < $( response.data.statuses ).length ) {
$.each( response.data.statuses, function( index, value ) {
statusFieldOptions += '<option value="' + index + '">' + value + '</option>';
} );
$( selectStatusField ).html( statusFieldOptions );
}
if ( 0 < $( response.data.drafts ).length ) {
$( '.' + draftContainer ).removeClass( 'sfwp-m-drafts-template' );
}
},
complete: function() {
$( '.spinner-wordpress' ).removeClass( 'is-active' );
if ( firstStatusOption !== statusFieldOptions ) {
$( selectStatusesContainer ).removeClass( 'wordpress-statuses-template' );
}
}
} );
}

// load record type settings if the WordPress object changes
$( document ).on( 'change', 'select#sfwp-wordpress-object', function() {
var wordpressObject = this.value;
wordpressObjectRecordSettings( wordpressObject, true );
} );

/**
* When the plugin loads:
* Manage the display for WordPress record type settings
*/
$( document ).ready( function() {

// Load record type settings for the WordPress object
wordpressObjectRecordSettings( $( 'select#sfwp-wordpress-object' ).val(), false );
} );
136 changes: 136 additions & 0 deletions assets/js/src/02-salesforce-object.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
/**
* Generate record type choices for the Salesforce object
* This includes record types allowed and date fields.
* @param {string} salesforceObject the Salesforce object name
* @param {bool} change is this a change or a pageload
*/
function salesforceObjectRecordSettings( salesforceObject, change ) {
var data = {
'action': 'get_salesforce_object_description',
'include': [ 'fields', 'recordTypeInfos' ],
'field_type': 'datetime',
'salesforce_object': salesforceObject
};

// for allowed types and default type
var allowedTypesContainer = 'sfwp-m-salesforce-record-types-allowed';
var allowedTypesFieldGroup = '.' + allowedTypesContainer + '.' + allowedTypesContainer + '-' + salesforceObject + ' .checkboxes';
var allowedTypeOptions = '';
var recordTypesAllowedMarkup = '';
var recordTypeDefaultMarkup = '';

// for date fields
var selectDateContainer = '.sfwp-m-pull-trigger-field';
var selectDateField = '#sfwp-pull-trigger-field';
//var selectDateField = '.sfwp-m-pull-trigger-field.sfwp-m-pull-trigger-field-' + salesforceObject + ' #sfwp-pull-trigger-field';
var dateFieldOptions = '';
var firstDateOption = $( selectDateField + ' option' ).first().text();

// add the Salesforce object we're looking at to the allowed types container
$( '.' + allowedTypesContainer ).attr( 'class', 'sfwp-m-fieldmap-subgroup ' + allowedTypesContainer ).addClass( allowedTypesContainer + '-' + salesforceObject );
// hide the containers first in case they're empty
$( '.' + allowedTypesContainer ).addClass( 'record-types-allowed-template' );
$( selectDateContainer ).addClass( 'pull-trigger-field-template' );
defaultRecordTypeSettings();
if ( true === change ) {
$( allowedTypesFieldGroup + ' input[type="checkbox"]' ).prop( 'checked', false );
$( selectDateField ).val( '' );
if ( 0 < $( allowedTypesFieldGroup + 'input:checked' ).length ) {
$( allowedTypesContainer ).removeClass( 'record-types-allowed-template' );
}
} else {
$( allowedTypesContainer ).removeClass( 'record-types-allowed-template' );
}



if ( '' !== $( selectDateField ).val() ) {
$( selectDateContainer ).removeClass( 'pull-trigger-field-template' );
} else {
firstDateOption = '<option value="">' + firstDateOption + '</option>';
dateFieldOptions += firstDateOption;
}

$.ajax( {
type: 'POST',
url: ajaxurl,
data: data,
beforeSend: function() {
$( '.spinner-salesforce' ).addClass( 'is-active' );
},
success: function( response ) {
if ( 0 < $( response.data.recordTypeInfos ).length ) {
$.each( response.data.recordTypeInfos, function( index, value ) {
allowedTypeOptions += '<label><input type="checkbox" class="form-checkbox" value="' + index + '" name="salesforce_record_types_allowed[' + index + ']" id="salesforce_record_types_allowed-' + index + '"> ' + value + '</label>';
} );
}
$( allowedTypesFieldGroup ).html( allowedTypeOptions );
if ( 0 < $( response.data.fields ).length && '' !== dateFieldOptions ) {
$.each( response.data.fields, function( index, value ) {
dateFieldOptions += '<option value="' + value.name + '">' + value.label + '</option>';
} );
$( selectDateField ).html( dateFieldOptions );
}
},
complete: function() {
$( '.spinner-salesforce' ).removeClass( 'is-active' );
if ( '' !== allowedTypeOptions ) {
$( '.' + allowedTypesContainer ).removeClass( 'record-types-allowed-template' );
}
if ( firstDateOption !== dateFieldOptions ) {
$( selectDateContainer ).removeClass( 'pull-trigger-field-template' );
}
}
} );
}

/**
* Allow for picking the default record type, when a Salesforce object has record types.
*/
function defaultRecordTypeSettings( allowedTypesContainer ) {
var selectContainer = $( '.sfwp-m-salesforce-record-type-default' );
var selectDefaultField = '#sfwp-salesforce-record-type-default';
var recordTypeFields = '';
var firstRecordTypeField = $( selectDefaultField + ' option' ).first().text();
var selected = '';
recordTypeFields += '<option value="">' + firstRecordTypeField + '</option>';
if ( 0 === $( '.' + allowedTypesContainer + ' input[type="checkbox"]:checked' ).length ) {
selectContainer.addClass( 'record-type-default-template' );
$( selectDefaultField ).prop( 'required', false );
$( selectDefaultField ).val('');
return;
}
$( '.' + allowedTypesContainer + ' input[type="checkbox"]:checked' ).each( function( index ) {
if ( 1 === $( '.' + allowedTypesContainer + ' input[type="checkbox"]:checked' ).length ) {
selected = ' selected';
selectContainer.addClass( 'record-type-default-template' );
}
recordTypeFields += '<option value="' + $( this ).val() + '"' + selected +'>' + $( this ).closest( 'label' ).text() + '</option>';
} );
$( selectDefaultField ).html( recordTypeFields );
if ( 1 < $( '.' + allowedTypesContainer + ' input[type="checkbox"]:checked' ).length ) {
selectContainer.removeClass( 'record-type-default-template' );
$( selectDefaultField ).prop( 'required', true );
}
};

// load record type settings if the Salesforce object changes
$( document ).on( 'change', 'select#sfwp-salesforce-object', function() {
var salesforceObject = this.value;
salesforceObjectRecordSettings( salesforceObject, true );
} );

// load record type default choices if the allowed record types change
$( document ).on( 'change', '.sfwp-m-salesforce-record-types-allowed input[type="checkbox"]', function() {
defaultRecordTypeSettings( 'sfwp-m-salesforce-record-types-allowed' );
} );

/**
* When the plugin loads:
* Manage the display for Salesforce record type settings
*/
$( document ).ready( function() {

// Load record type settings for the Salesforce object
salesforceObjectRecordSettings( $( 'select#sfwp-salesforce-object' ).val(), false );
} );