• Ankit Bhatnagar 13
  • NEWBIE
  • 0 Points
  • Member since 2018

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 2
    Questions
  • 1
    Replies
Is it really necessary for the creation of knowledge articles? How is community user able to create knowledge articles without knowledge user checkbox being checked(I've done that using a lightning component)?
What if I manually gave read, create and edit permissions using a permission set to a user without the knowledge user checkbox being checked, would that user be able to read, create and edit knowledge articles?
Is there a programmatic or declarative approach available to tackle this problem?
This is my code which would give me Account details and lists of its related Contacts, Opportunities and cases.
Visualforce Page: 
<apex:page standardController="Account" extensions="AccRelatedConOpprCases" sidebar="false">
    <apex:pageBlock >
        <apex:pageBlockSection title="Account Details">
            <apex:outputField value="{!Account.Name}"/>
            <apex:outputField value="{!Account.Type}"/>
            <apex:outputField value="{!Account.Phone}"/>
            <apex:outputField value="{!Account.AnnualRevenue}"/>
            <apex:outputField value="{!Account.Industry}"/>
            <apex:outputField value="{!Account.Ownerid}"/>
            <apex:outputField value="{!Account.id}"/>
        </apex:pageBlockSection>
        
        <apex:pageBlockSection title="Related Contacts">
            <apex:pageBlockTable value="{!RelatedContacts}" var="con">
                <apex:column value="{!con.FirstName}"/>
                <apex:column value="{!con.LastName}"/>
                <apex:column value="{!con.Phone}"/>
                <apex:column value="{!con.Email}"/>
                <apex:column value="{!con.AccountId}"/>
            </apex:pageBlockTable>
        </apex:pageBlockSection>
        
        <apex:pageBlockSection title="Related Opportunities">
            <apex:pageBlockTable value="{!RelatedOpportunities}" var="opp">
                <apex:column value="{!opp.Name}"/>
                <apex:column value="{!opp.StageName}"/>
                <apex:column value="{!opp.Type}"/>
                <apex:column value="{!opp.CloseDate}"/>
                <apex:column value="{!opp.AccountId}"/>
            </apex:pageBlockTable>
             </apex:pageBlockSection>
        
            
            <apex:pageBlockSection title="Related Opportunities">
                <apex:pageBlockTable value="{!RelatedCases}" var="cas">
                    <apex:column value="{!cas.Type}"/>
                    <apex:column value="{!cas.Reason}"/>
                    <apex:column value="{!cas.Priority}"/>
                    <apex:column value="{!cas.Status}"/>
                    <apex:column value="{!cas.Subject}"/>
                </apex:pageBlockTable>
            </apex:pageBlockSection>
  
        </apex:pageBlock>
    </apex:page>


Apex Extension:
public class AccRelatedConOpprCases {
    String accId;
    public AccRelatedConOpprCases(ApexPages.StandardController stdctrl){
        accId = stdctrl.getId();
        System.debug('AccountID-----'+accId);
    }
    
    public List<Contact> getRelatedContacts(){
        return [SELECT FirstName,LastName,Email,Phone,AccountId FROM Contact WHERE AccountId = :accId];
    }
    
     public List<Opportunity> getRelatedOpportunities(){
        return [SELECT Name,StageName,Amount,CloseDate,Type,AccountId FROM Opportunity WHERE AccountId = :accId];
    }
    
     public List<Case> getRelatedCases(){
        return [SELECT Type,Reason,Priority,Status,Subject,AccountId FROM Case WHERE AccountId = :accId];
    }
    
}


 
This is my code which would give me Account details and lists of its related Contacts, Opportunities and cases.
Visualforce Page: 
<apex:page standardController="Account" extensions="AccRelatedConOpprCases" sidebar="false">
    <apex:pageBlock >
        <apex:pageBlockSection title="Account Details">
            <apex:outputField value="{!Account.Name}"/>
            <apex:outputField value="{!Account.Type}"/>
            <apex:outputField value="{!Account.Phone}"/>
            <apex:outputField value="{!Account.AnnualRevenue}"/>
            <apex:outputField value="{!Account.Industry}"/>
            <apex:outputField value="{!Account.Ownerid}"/>
            <apex:outputField value="{!Account.id}"/>
        </apex:pageBlockSection>
        
        <apex:pageBlockSection title="Related Contacts">
            <apex:pageBlockTable value="{!RelatedContacts}" var="con">
                <apex:column value="{!con.FirstName}"/>
                <apex:column value="{!con.LastName}"/>
                <apex:column value="{!con.Phone}"/>
                <apex:column value="{!con.Email}"/>
                <apex:column value="{!con.AccountId}"/>
            </apex:pageBlockTable>
        </apex:pageBlockSection>
        
        <apex:pageBlockSection title="Related Opportunities">
            <apex:pageBlockTable value="{!RelatedOpportunities}" var="opp">
                <apex:column value="{!opp.Name}"/>
                <apex:column value="{!opp.StageName}"/>
                <apex:column value="{!opp.Type}"/>
                <apex:column value="{!opp.CloseDate}"/>
                <apex:column value="{!opp.AccountId}"/>
            </apex:pageBlockTable>
             </apex:pageBlockSection>
        
            
            <apex:pageBlockSection title="Related Opportunities">
                <apex:pageBlockTable value="{!RelatedCases}" var="cas">
                    <apex:column value="{!cas.Type}"/>
                    <apex:column value="{!cas.Reason}"/>
                    <apex:column value="{!cas.Priority}"/>
                    <apex:column value="{!cas.Status}"/>
                    <apex:column value="{!cas.Subject}"/>
                </apex:pageBlockTable>
            </apex:pageBlockSection>
  
        </apex:pageBlock>
    </apex:page>


Apex Extension:
public class AccRelatedConOpprCases {
    String accId;
    public AccRelatedConOpprCases(ApexPages.StandardController stdctrl){
        accId = stdctrl.getId();
        System.debug('AccountID-----'+accId);
    }
    
    public List<Contact> getRelatedContacts(){
        return [SELECT FirstName,LastName,Email,Phone,AccountId FROM Contact WHERE AccountId = :accId];
    }
    
     public List<Opportunity> getRelatedOpportunities(){
        return [SELECT Name,StageName,Amount,CloseDate,Type,AccountId FROM Opportunity WHERE AccountId = :accId];
    }
    
     public List<Case> getRelatedCases(){
        return [SELECT Type,Reason,Priority,Status,Subject,AccountId FROM Case WHERE AccountId = :accId];
    }
    
}