Skip to content
This repository was archived by the owner on Jan 27, 2024. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/aura/CF_ChildFilesCmp/CF_ChildFilesCmp.cmp
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,8 @@ License: BSD 3-Clause License
columns="{!v.columns}"
data="{!v.selectedFiles}"
hideCheckboxColumn="true"
showRowNumberColumn="true"/>
showRowNumberColumn="true"
columnWidthsMode="auto"/>

</lightning:layoutItem>

Expand Down
28 changes: 15 additions & 13 deletions src/aura/CF_ChildFilesCmp/CF_ChildFilesCmpController.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,12 @@ License: BSD 3-Clause License

var objectName = component.get( 'v.sObjectName' );
var recordId = component.get( 'v.recordId' );
var fieldSetName = component.get( 'v.fieldSetName' );
var fieldSetName = component.get( 'v.fieldSetName' );
var childRelationshipNames = component.get( 'v.childRelationshipNames' );

Promise.all([
helper.getRelatedFilesColumnsAsync( component, fieldSetName ), // FieldSetMember
helper.getObjectDescribeAsync( component, objectName ) // DescribeSObjectResult
helper.getObjectDescribeAsync( component, objectName, childRelationshipNames ) // DescribeSObjectResult
]).then( $A.getCallback( function( results ) {

var fieldSetColumns = results[0];
Expand All @@ -24,7 +25,6 @@ License: BSD 3-Clause License

var selectedIndex = component.get( 'v.selectedIndex' );
var filesAndNotesFilter = component.get( 'v.filesAndNotesFilter' );
var childRelationshipNames = component.get( 'v.childRelationshipNames' );
var childRelationshipFiles = [];

// if specific list of relationship names are not provided
Expand All @@ -42,16 +42,18 @@ License: BSD 3-Clause License
var relationshipName = childRelationshipNames[i].trim().toUpperCase();
var isSelected = ( i == selectedIndex );

childRelationshipFiles[i] = {
'name' : relationshipName,
'describe' : objectDescribe.childRelationships[relationshipName],
'selected' : isSelected,
'files' : null
};

if ( isSelected ) {
component.set( 'v.selectedRelationship', childRelationshipFiles[i] );
}
if(objectDescribe.childRelationships[relationshipName] !== undefined) {
childRelationshipFiles.push({
'name' : relationshipName,
'describe' : objectDescribe.childRelationships[relationshipName],
'selected' : isSelected,
'files' : null
});

if ( isSelected ) {
component.set( 'v.selectedRelationship', childRelationshipFiles[i] );
}
}

}

Expand Down
14 changes: 12 additions & 2 deletions src/aura/CF_ChildFilesCmp/CF_ChildFilesCmpHelper.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,14 @@ GitHub: https://github.com/DouglasCAyers/sfdc-related-files-lightning
License: BSD 3-Clause License
*/
({
getObjectDescribeAsync : function( component, objectName ) {
getObjectDescribeAsync : function( component, objectName, childRelationshipNames ) {

var helper = this;

return helper.enqueueAction( component, 'c.getObjectDescribe', {

'myObjectName' : objectName
'myObjectName' : objectName,
'childRelationshipNamesString' : childRelationshipNames

}).then( $A.getCallback( function( objectDescribe ) {

Expand Down Expand Up @@ -198,6 +199,15 @@ License: BSD 3-Clause License
else if ( /^SNOTE/i.test( file.FileType ) ) {
iconName = 'doctype:stypi';
}
else if ( /^QUIPTEMPLATE/i.test( file.FileType ) ) {
iconName = 'doctype:quip_doc';
}
else if ( /^QUIPDOC/i.test( file.FileType ) ) {
iconName = 'doctype:quip_doc';
}
else if ( /^QUIPSHEET/i.test( file.FileType ) ) {
iconName = 'doctype:quip_sheet';
}

file.FileTypeIconName = iconName;

Expand Down
9 changes: 5 additions & 4 deletions src/classes/CF_ChildFilesController.cls
Original file line number Diff line number Diff line change
Expand Up @@ -615,9 +615,10 @@ public with sharing class CF_ChildFilesController {
// -------------------------------------------------------------

@AuraEnabled( cacheable = true )
public static Map<String, Object> getObjectDescribe( String myObjectName ) {
public static Map<String, Object> getObjectDescribe( String myObjectName, String childRelationshipNamesString ) {

DescribeSObjectResult objectDescribe = ( (SObject) Type.forName( myObjectName ).newInstance() ).getSObjectType().getDescribe();
List<String> childRelationshipNames = childRelationshipNamesString.split(',');

Map<String, Object> describeMap = new Map<String, Object>{
'name' => objectDescribe.getName(),
Expand All @@ -626,13 +627,13 @@ public with sharing class CF_ChildFilesController {
'labelPlural' => objectDescribe.getLabelPlural(),
'keyPrefix' => objectDescribe.getKeyPrefix(),
'fields' => getFieldDescribeMaps( objectDescribe.fields.getMap() ),
'childRelationships' => getChildRelationshipMaps( objectDescribe.getChildRelationships() )
'childRelationships' => getChildRelationshipMaps( objectDescribe.getChildRelationships(), childRelationshipNames )
};

return describeMap;
}

private static Map<String, Map<String, Object>> getChildRelationshipMaps( List<ChildRelationship> childRelationships ) {
private static Map<String, Map<String, Object>> getChildRelationshipMaps( List<ChildRelationship> childRelationships, List<String> childRelationshipNames ) {

Set<String> fileLinkableObjectNames = new Set<String>{ 'LookedUpFromActivity' };

Expand All @@ -653,7 +654,7 @@ public with sharing class CF_ChildFilesController {
DescribeSObjectResult objectDescribe = relationship.getChildSObject().getDescribe();
DescribeFieldResult fieldDescribe = relationship.getField().getDescribe();

if ( String.isNotBlank( relationship.getRelationshipName() ) && fileLinkableObjectNames.contains( objectDescribe.getName() ) ) {
if ( objectDescribe.IsAccessible() && String.isNotBlank( relationship.getRelationshipName() ) && fileLinkableObjectNames.contains( objectDescribe.getName() ) && childRelationshipNames.contains( relationship.getRelationshipName() ) ) {

// The user-friendly label for related lists are stored in different places for standard and custom fields.
//
Expand Down
2 changes: 1 addition & 1 deletion src/classes/CF_ChildFilesControllerTest.cls
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ private class CF_ChildFilesControllerTest {

Test.startTest();

Map<String, Object> objectDescribeMap = CF_ChildFilesController.getObjectDescribe( 'Account' );
Map<String, Object> objectDescribeMap = CF_ChildFilesController.getObjectDescribe( 'Account', 'Opportunities' );

Test.stopTest();

Expand Down
2 changes: 2 additions & 0 deletions src/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
<members>CF_NamespaceUtilsTest</members>
<members>CF_VisualforceDomainController</members>
<members>CF_VisualforceDomainControllerTest</members>
<members>CF_ChildFilesFieldSetDynamicPicklist</members>
<members>CF_ChildFilesFieldSetDynamicPicklistTest</members>
<name>ApexClass</name>
</types>
<types>
Expand Down