Hide Tabs on Portal

Utkarsha
Tera Contributor

Hey Everyone,

I am currently working on a portal widget that displays various tabs on a portal page. I have attempted to restrict the visibility of these tabs using roles and groups, but it appears that the restrictions are not being applied as expected.

Could anyone kindly review my code and provide guidance on what might be causing this issue? Any suggestions or insights would be greatly appreciated.
-

For Security, Privacy, Compliance and EHS - all these 4 tabs should be accessible for users with role admin

2.2 Global Security - Over view and general policies Tab should be seen by sn_compliance.manger
other global sec policies Tab should be seen by either policy reviewer, approver, owner and owning group member 

2.3 Public safety domain policies should be able to read by the group - sn-publicsafety-policy-readaccess 

Thank you in advance for your help.

 

 

 

HTML:
<div class="tab">
  <button id="OverviewTab" class="OverView tablinks" onclick="openTab(event, 'Overview')">${Overview}</button>
  <button ng-if="data.showSecurityTab"id ="InformationSecuritytab" class="tablinks" onclick="openTab(event, 'InformationSecurity')">${Security}</button>
  <button ng-if="data.showPrivacyTab" id ="PrivacyLegaltab" class="tablinks" onclick="openTab(event, 'PrivacyLegal')">${Privacy}</button>
  <button ng-if="data.showComplianceTab"id ="Compliancetab" class="tablinks" onclick="openTab(event, 'Compliance')">${Compliance}</button>
  <button ng-if="data.showEHSTab"id ="EHSTAB" class="tablinks" onclick="openTab(event, 'EHS')">${EHS}</button>
  <button id ="EmployeeRelationstab" class="tablinks" onclick="openTab(event, 'ER')">${People+Places}</button> 
  <button id ="commops" class="tablinks" onclick="openTab(event, 'Commops')">${CommOps}</button>
  <button ng-if="data.showGlobalSecurityPolicies"id ="Global Security" class="tablinks" onclick="openTab(event, 'GS')">${Global Security}</button>
  <button id ="Public Safety" class="tablinks" onclick="openTab(event, 'PS')">${Public Safety}</button> 
  <!-- NOW-12641 -->
  <button id ="Global_Safety" class="tablinks" onclick="openTab(event, 'GST')">${Global Safety}</button> 
</div>
<div id="Overview" class="tabcontent" style="display: block;"> <!-- Overview section -->
  <div class="row">
    <div class="col-xs-12 col-sm-10 col-md-10 col-lg-10">
      <widget id="kb_popular_doc"></widget>
      <div class="faqContent">
        <widget id="kb_faq"></widget>
      </div> 
    </div> 
    <div class="col-xs-12 col-sm-2 col-md-2 col-lg-2 overAction">
      <widget id="kb_action"></widget>
    </div>
  </div>
</div> <!--End of Overview section -->

<div id="InformationSecurity" class="tabcontent">  <!-- Information Security section -->
  <div class="row"> <!-- Row starts -->
    <div class="col-xs-4 col-sm-2 col-md-2 col-lg-2 vline">
      <a class="links" id="overview_infosec_link" onclick="openLink(event, 'overview_infosec')">Overview</a>
      <a class="links" onclick="openLink(event, 'all_doc_infosec')">All</a>
      <a class="links" onclick="openLink(event, 'plr_doc_infosec')">Popular</a>
      <a ng-if="data.infosecPolLen" class="links" onclick="openLink(event, 'policy_infosec')">Policies</a>
      <a ng-if="data.infosecStanLen" class="links" onclick="openLink(event, 'standards_infosec')">Standards</a>
      <a ng-if="data.infosecProcLen" class="links" onclick="openLink(event, 'procedure_infosec')">Procedures</a>
      <a ng-if="data.infosecPlanLen" class="links" onclick="openLink(event, 'plan_infosec')">Plan</a>
    </div> 

    <div class="col-xs-6 col-sm-8 col-md-8 col-lg-8 content-box-infoSec"style="overflow: auto;height: 470px;">
      <div id="overview_infosec" class="linkcontent content-overview">
        <widget id="policy_kb_infosec_overview"></widget>
      </div> 
      <div id="plr_doc_infosec" class="linkcontent" >
        <sp-widget widget="data.infoSecPopularDoc"></sp-widget>
      </div>
      <div id="all_doc_infosec" class="linkcontent" >
        <sp-widget widget="data.infoSecAllDoc"></sp-widget>
      </div>
      <div id="policy_infosec" class="linkcontent">
        <sp-widget widget="data.infoSecPolicies"></sp-widget>  
      </div> 
      <div id="standards_infosec" class="linkcontent">
        <sp-widget widget="data.infoSecStandards"></sp-widget>
      </div>
      <div id="procedure_infosec" class="linkcontent">
        <sp-widget widget="data.infoSecProcedure"></sp-widget>
      </div>
       <div id="plan_infosec" class="linkcontent">
        <sp-widget widget="data.infoSecPlan"></sp-widget>
      </div>
    </div>
    <div class="col-xs-12 col-sm-2 col-md-2 col-lg-2 overAction"> <!--Actions section -->
      <widget id="policy_kb_infosec_action"></widget>
    </div> <!-- Actions section closed-->
  </div> <!-- Row closed -->
</div>  <!-- End of Information Security section -->

<div id="PrivacyLegal" class="tabcontent">  <!-- Privacy Legal section -->
  <div class="row"> <!-- Row starts -->
    <div class="col-xs-4 col-sm-2 col-md-2 col-lg-2 vline">
      <a class="linksPrivacy" id="overview_privacyLegal_link" onclick="openLinkPrivacy(event, 'overview_privacyLegal')">Overview</a>
      <a class="linksPrivacy" onclick="openLinkPrivacy(event, 'all_doc_privacyLegal')">All</a>
      <a class="linksPrivacy" onclick="openLinkPrivacy(event, 'plr_doc_privacyLegal')">Popular</a>
      <a ng-if="data.privacyLegalPolLen" class="linksPrivacy" onclick="openLinkPrivacy(event,'policy_privacyLegal')">Policies</a>
      <a ng-if="data.privacyLegalStanLen" class="linksPrivacy" onclick="openLinkPrivacy(event,'standards_privacyLegal')">Standards</a>
      <a ng-if="data.privacyLegalProcLen" class="linksPrivacy" onclick="openLinkPrivacy(event,'procedure_privacyLegal')">Procedures</a>
      <a ng-if="data.privacyLegalPlanLen" class="linksPrivacy" onclick="openLinkPrivacy(event,'plan_privacyLegal')">Plan</a>
    </div> 

    <div class="col-xs-6 col-sm-8 col-md-8 col-lg-8 content-box-infoSec" style="overflow: auto;height: 470px;" >
      <div id="overview_privacyLegal" class="linkcontentPrivacy content-overview">
        <widget id="policy_kb_privacy_legal_overview"></widget>
      </div>
        <div id="all_doc_privacyLegal" class="linkcontentPrivacy" >
        <sp-widget widget="data.privacyLegalAllDoc"></sp-widget>
             </div>
      <div id="plr_doc_privacyLegal" class="linkcontentPrivacy" >
    <sp-widget widget="data.privacyLegalPopularDoc"></sp-widget>
      </div>
      <div id="policy_privacyLegal" class="linkcontentPrivacy">
        <sp-widget widget="data.privacyLegalPolicies"></sp-widget>  
      </div> 
      <div id="standards_privacyLegal" class="linkcontentPrivacy">
        <sp-widget widget="data.privacyLegalStandards"></sp-widget>
      </div>
      <div id="procedure_privacyLegal" class="linkcontentPrivacy">
        <sp-widget widget="data.privacyLegalProcedure"></sp-widget>
      </div>
      <div id="plan_privacyLegal" class="linkcontentPrivacy">
        <sp-widget widget="data.privacyLegalPlan"></sp-widget>
      </div>
    </div>
    <div class="col-xs-12 col-sm-2 col-md-2 col-lg-2 overAction"> <!--Actions section -->
      <widget id="policy_kb_infosec_action"></widget>
    </div> <!-- Actions section closed-->
  </div> <!-- Row closed -->
</div>  <!-- End of Privacy Legal section -->


<div id="Compliance" class="tabcontent"><!-- Compliance tab-->
  <div class="row"> <!-- Row starts -->

    <div class="col-xs-4 col-sm-2 col-md-2 col-lg-2 vline">
      <a class="linkscomp" id="overview_comp_link" onclick="openLinkComp(event, 'overview_comp')">Overview</a>
      <a class="linkscomp" onclick="openLinkComp(event, 'all_doc_comp')">All</a>
      <a class="linkscomp" onclick="openLinkComp(event, 'plr_doc_comp')">Popular</a>
      <a ng-if="data.compPolLen" class="linkscomp" onclick="openLinkComp(event, 'policy_comp')">Policies</a>
      <a ng-if="data.compStanLen" class="linkscomp" onclick="openLinkComp(event, 'standards_comp')">Standards</a>
      <a ng-if="data.compProcLen" class="linkscomp" onclick="openLinkComp(event, 'procedure_comp')">Procedures</a>
      <a ng-if="data.compPlanLen" class="linkscomp" onclick="openLinkComp(event, 'plans_comp')">Plans</a>
    </div> 

    <div class="col-xs-6 col-sm-8 col-md-8 col-lg-8 content-box-EmpRel"style="overflow: auto;height: 470px;">
      <div id="overview_comp" class="linkcontentcomp content-overview">
        <widget id="policy_kb_comp_overview"></widget>
      </div> 
      <div id="plr_doc_comp" class="linkcontentcomp">
        <sp-widget widget="data.compPopularDoc"></sp-widget>
      </div>
      <div id="all_doc_comp" class="linkcontentcomp">
        <sp-widget widget="data.compAllDoc"></sp-widget>
      </div>
      <div id="policy_comp" class="linkcontentcomp">
        <sp-widget widget="data.compPolicies"></sp-widget>  
      </div> 
      <div id="standards_comp" class="linkcontentcomp">
        <sp-widget widget="data.compStandards"></sp-widget>
      </div>
      <div id="procedure_comp" class="linkcontentcomp">
        <sp-widget widget="data.compProcedure"></sp-widget>
      </div>
      <div id="plans_comp" class="linkcontentcomp">
        <sp-widget widget="data.compPlan"></sp-widget>
      </div>
    </div>
    <div class="col-xs-12 col-sm-2 col-md-2 col-lg-2 col-sm-2 overAction"> <!--Actions section -->
      <widget id="policy_kb_comp_action"></widget>
    </div> <!-- Actions section closed-->
  </div> <!-- Row closed -->
</div> <!-- End of Compliance tab-->

<div id="ER" class="tabcontent">                 <!-- Employee Relation Section-->
  <div class="row"> <!-- Row starts -->

    <div class="col-xs-12 col-sm-12 col-md-10 col-lg-10 vline">
      <div id="overview_employee_relation_link" class="linkcontent content-overview">
        <widget id="policy_kb_employee_relation_overview"></widget>
      </div>
      <widget id="policy_categories_employee_relation"></widget>
    </div>
    <div class="col-xs-12 col-sm-12 col-md-2 col-lg-2 col-sm-2 overAction"> <!--Actions section -->
      <widget id="policy_kb_infosec_action"></widget>
    </div> <!-- Actions section closed-->
  </div> <!-- Row closed -->
</div><!-- End of Employee Relation Section-->

<div id="Commops" class="tabcontent">                 <!-- Commops Sections-->
  <div class="row"> <!-- Row starts -->
    <div class="col-xs-12 col-sm-12 col-md-10 col-lg-10 vline">
      <div id="overview_commops_link" class="linkcontent content-overview">
       <widget id="policy_kb_commops_overview"></widget>
      </div>
      <widget id="policy_categories_comm"></widget>
    </div>
    <div class="col-xs-12 col-sm-12 col-md-2 col-lg-2 col-sm-2 overAction"> <!--Actions section -->
      <widget id="policy_kb_infosec_action"></widget>
    </div> <!-- Actions section closed-->
  </div> <!-- Row closed -->
</div><!-- End of Commops Section-->


<div id="EHS" class="tabcontent">                 <!-- EHS +S Section-->
  <div class="row"> <!-- Row starts -->

    <div class="col-xs-4 col-sm-2 col-md-2 col-lg-2 vline">
      <a class="linksehs1" id="overview_ehs_link" onclick="openLinkEHS(event, 'overview_ehs')">Overview</a>
      <a class="linksehs1" onclick="openLinkEHS(event, 'all_doc_ehs')">All</a>
      <a class="linksehs1" onclick="openLinkEHS(event, 'plr_doc_ehs')">Popular</a>
      <a ng-if="data.ehsPolicyALL" class="linksehs1" onclick="openLinkEHS(event, 'policy_ehs')">Policies</a>
      <a ng-if="data.ehsStandarALL" class="linksehs1" onclick="openLinkEHS(event, 'standards_ehs')">Standards</a>
      <a ng-if="data.ehsProcedureALL" class="linksehs1" onclick="openLinkEHS(event, 'procedure_ehs')">Procedures</a>

    </div> 

    <div class="col-xs-6 col-sm-8 col-md-8 col-lg-8 content-box-ehs"style="overflow: auto;height: 470px;">
      <div id="overview_ehs" class="linkcontentehs content-overviewehs">
        <widget id="policy_kb_ehs_overview"></widget>
      </div> 
      <div id="all_doc_ehs" class="linkcontentehs">
        <sp-widget widget="data.ehsAllDoc"></sp-widget>
      </div>
      <div id="plr_doc_ehs" class="linkcontentehs">
        <sp-widget widget="data.ehsPopularDoc"></sp-widget>
      </div>
      <div id="policy_ehs" class="linkcontentehs">
        <sp-widget widget="data.ehsPolicy"></sp-widget>  
      </div> 
      <div id="standards_ehs" class="linkcontentehs">
        <sp-widget widget="data.ehsStandards"></sp-widget>
      </div>
      <div id="procedure_ehs" class="linkcontentehs">
        <sp-widget widget="data.ehsProcedure"></sp-widget>
      </div>

    </div>
    <div class="col-xs-12 col-sm-2 col-md-2 col-lg-2 col-sm-2 overAction"> <!--Actions section -->
      <widget id="policy_kb_infosec_action"></widget>
    </div> <!-- Actions section closed-->
  </div> <!-- Row closed -->
</div> <!-- End of EHS + S tab-->

<div ng-if="data.showGlobalSecurityPolicies" id="GS" class="tabcontent">                 <!-- Global security Section-->
  <div class="row"> <!-- Row starts -->

    <div class="col-xs-12 col-sm-12 col-md-10 col-lg-10 vline">
      <div id="overview_infosec" class="linkcontent content-overview">
        <widget id="policy_kb_globalsec_overview"></widget>
      </div>
      <widget id="policy_categories"></widget>
    </div>
    <div class="col-xs-12 col-sm-12 col-md-2 col-lg-2 col-sm-2 overAction"> <!--Actions section -->
      <widget id="policy_kb_globalsec_action"></widget>
    </div> <!-- Actions section closed-->
  </div> <!-- Row closed -->
</div><!-- End of Global security Section-->

<div id="PS" class="tabcontent">                 <!-- Public Safety Section-->
  <div class="row"> <!-- Row starts -->

    <div class="col-xs-12 col-sm-12 col-md-10 col-lg-10 vline">
      <div id="overview_infosec" class="linkcontent content-overview">
        <widget id="policy_kb_publicSafety_overview"></widget>
      </div>
      <widget id="policy_categories_public_safety"></widget>
    </div>
    <div class="col-xs-12 col-sm-12 col-md-2 col-lg-2 col-sm-2 overAction"> <!--Actions section -->
      <widget id="policy_kb_infosec_action"></widget>
    </div> <!-- Actions section closed-->
  </div> <!-- Row closed -->
</div><!-- End of Public Safety Section-->

<!-- 
<div id="GST" class="tabcontent">               
  <div class="row"> 

    <div class="col-xs-12 col-sm-12 col-md-10 col-lg-10 vline">
      <div id="overview_globalsafety" class="linkcontent content-overview">
        <widget id="policy_kb_globalSafety_overview"></widget>
      </div>
     <widget id="policy_categories_public_safety"></widget> 
    </div>
    <div class="col-xs-12 col-sm-12 col-md-2 col-lg-2 col-sm-2 overAction"> 
       <widget id="policy_kb_infosec_action"></widget>
    </div> 
  </div> 
</div>
-->
<!-- NOW-12641 -->
<div id="GST" class="tabcontent">                 <!-- Global safety Section-->
  <div class="row"> 

    <div class="col-xs-4 col-sm-2 col-md-2 col-lg-2 vline">
      <a class="linksgst" id="overview_gst_link" onclick="openLinkGST(event, 'overview_gst')">Overview</a>
      <a class="linksgst" onclick="openLinkGST(event, 'all_doc_gst')">Global Safety</a>
    </div> 
    <div class="col-xs-6 col-sm-8 col-md-8 col-lg-8 content-box-gst"style="overflow: auto;height: 470px;">
      <div id="overview_gst" class="linkcontentgst content-overviewgst">
        <widget id="policy_kb_globalSafety_overview"></widget>
      </div> 
      <div id="all_doc_gst" class="linkcontentgst">
        <sp-widget widget="data.gstAllDoc"></sp-widget>
      </div>
    </div>
  </div> 
</div> 

<script>
  function openTab(evt, tabName) {
    var i, tabcontent, tablinks;
    tabcontent = document.getElementsByClassName("tabcontent");
    for (i = 0; i < tabcontent.length; i++) {
      tabcontent[i].style.display = "none";
    }
    tablinks = document.getElementsByClassName("tablinks");
    for (i = 0; i < tablinks.length; i++) {
      tablinks[i].className = tablinks[i].className.replace(" active", "");
    }
    document.getElementById(tabName).style.display = "block";
    evt.currentTarget.className += " active";
  }
  function openLink(evt, linkName) {
    var i, linkcontent, links;
    linkcontent = document.getElementsByClassName("linkcontent");
    for (i = 0; i < linkcontent.length; i++) {
      linkcontent[i].style.display = "none";
    }
    links = document.getElementsByClassName("links");
    for (i = 0; i < links.length; i++) {
      links[i].className = links[i].className.replace(" active", "");
    }
    document.getElementById(linkName).style.display = "block";
    evt.currentTarget.className += " active";
  }
  function openLinkPrivacy(evt, linkName) {
    var i, linkcontentPrivacy, linksPrivacy;
    linkcontentPrivacy = document.getElementsByClassName("linkcontentPrivacy");
    for (i = 0; i < linkcontentPrivacy.length; i++) {
      linkcontentPrivacy[i].style.display = "none";
    }
    linksPrivacy = document.getElementsByClassName("linksPrivacy");
    for (i = 0; i < linksPrivacy.length; i++) {
      linksPrivacy[i].className = linksPrivacy[i].className.replace("active", "");
    }
    document.getElementById(linkName).style.display = "block";
    evt.currentTarget.className += " active";
  }
  function openLinkComp(evt, linkName){
    var i, linkcontentcomp, linkscomp;
    linkcontentcomp = document.getElementsByClassName("linkcontentcomp");
    for (i = 0; i < linkcontentcomp.length; i++) {
      linkcontentcomp[i].style.display = "none";
    }
    linkscomp = document.getElementsByClassName("linkscomp");
    for (i = 0; i < linkscomp.length; i++) {
      linkscomp[i].className = linkscomp[i].className.replace("active", "");
    }
    document.getElementById(linkName).style.display = "block";
    evt.currentTarget.className += " active";
  }
   
  
  function openLinkComm(evt, linkName){
    var i, linkcontentcom, linkscomm;
    linkcontentcom = document.getElementsByClassName("linkcontentcom");
    for (i = 0; i < linkcontentcom.length; i++) {
      linkcontentcom[i].style.display = "none";
    }
    linkscomm = document.getElementsByClassName("linkscomm");
    for (i = 0; i < linkscomm.length; i++) {
      linkscomm[i].className = linkscomm[i].className.replace("active", " ");
    }
    document.getElementById(linkName).style.display = "block";
    evt.currentTarget.className += " active";
  }
  
  function openLinkEHS(evt, linkName) {
    var i, linkcontentehs, linksehs;
    linkcontentehs = document.getElementsByClassName("linkcontentehs");
    for (i = 0; i < linkcontentehs.length; i++) {
      linkcontentehs[i].style.display = "none";
    }
    linksehs1 = document.getElementsByClassName("linksehs1");
    for (i = 0; i < linksehs1.length; i++) {
      linksehs1[i].className = linksehs1[i].className.replace(" active", "");
    }
    document.getElementById(linkName).style.display = "block";
    evt.currentTarget.className += " active";
  }
  /*function openLinkCommOps(evt, linkName){
  var i, linkcontentCommOps, linksCommOps;
  linkcontentCommOps = document.getElementsByClassName("linkcontentCommOps");
  for (i = 0; i < linkcontentCommOps.length; i++) {
    linkcontentCommOps[i].style.display = "none";
  }
  linksCommOps = document.getElementsByClassName("linksCommOps");
  for (i = 0; i < linksCommOps.length; i++) {
    linksCommOps[i].className = linksCommOps[i].className.replace("active", " ");
  }
  document.getElementById(linkName).style.display = "block";
  evt.currentTarget.className += " active";
}
*/
  //<!-- NOW-12641 -->
  function openLinkGST(evt, linkName) {
    var i, linkcontentgst, linksgst;
    linkcontentgst = document.getElementsByClassName("linkcontentgst");
    for (i = 0; i < linkcontentgst.length; i++) {
      linkcontentgst[i].style.display = "none";
    }
    linksgst = document.getElementsByClassName("linksgst");
    for (i = 0; i < linksgst.length; i++) {
      linksgst[i].className = linksgst[i].className.replace(" active", "");
    }
    document.getElementById(linkName).style.display = "block";
    evt.currentTarget.className += " active";
  }


  document.getElementById("OverviewTab").click();
  document.getElementById("overview_privacyLegal_link").click();
  document.getElementById("overview_infosec_link").click();
  document.getElementById("overview_comp_link").click();
  document.getElementById("overview_employee_relation_link").click();
 document.getElementById("overview_commops_link").click();
  document.getElementById("overview_ehs_link").click();
  //<!-- NOW-12641 -->
   document.getElementById("overview_gst_link").click(); 

</script>
CSS:.tab {
  overflow: hidden;
  background-color: #F3F3F3;
  
    width: fit-content;

}
.btn
{
  width:150px;
 background-color:#276EF1;
}

/* Style the buttons inside the tab */
.tab button {
  background-color: #cccecf;
  float: left;
  border: none;
  outline: none;
  cursor: pointer;
  padding: 10px 17px;
  transition: 0.3s;
  font-size: 16px;
  color:black;
  margin:3px;
  font-weight:bold;
}
Server Script:(function() {
    //Information Security domain
    var infoSecPopularDoc = {
        "domain": "Information Security"
    };
    data.infoSecPopularDoc = $sp.getWidget('kb_popular_doc_tabular', infoSecPopularDoc);


    var infoSecAllDoc = {
        "domain": "Information Security",
        "type": ""
    }; //To show all documents
    data.infoSecAllDoc = $sp.getWidget('kb_documents', infoSecAllDoc);

    var infoSecPolicies = {
        "domain": "Information Security",
        "type": "Policy"
    }; //To show policies
    data.infoSecPolicies = $sp.getWidget('kb_documents', infoSecPolicies);

    //check if there are Policies available for Information Security Domain
    var infoSecPolObj = JSON.stringify(data.infoSecPolicies);
    infoSecPolObj = JSON.parse(infoSecPolObj);
    data.infosecPolLen = infoSecPolObj.data.articles.length;

    var infoSecStandards = {
        "domain": "Information Security",
        "type": "Standard"
    }; //To show standards
    data.infoSecStandards = $sp.getWidget('kb_documents', infoSecStandards);

    //check if there are standards available for Information Security Domain	
    var infoSecStandObj = JSON.stringify(data.infoSecStandards);
    infoSecStandObj = JSON.parse(infoSecStandObj);
    data.infosecStanLen = infoSecStandObj.data.articles.length;

    var infoSecProcedure = {
        "domain": "Information Security",
        "type": "Procedure"
    }; //To show procedures
    data.infoSecProcedure = $sp.getWidget('kb_documents', infoSecProcedure);

    //check if there are Procedures available for Information Security Domain	
    var infoSecProcObj = JSON.stringify(data.infoSecProcedure);
    infoSecProcObj = JSON.parse(infoSecProcObj);
    data.infosecProcLen = infoSecProcObj.data.articles.length;

    var infoSecPlan = {
        "domain": "Information Security",
        "type": "Plan"
    }; //To show plans
    data.infoSecPlan = $sp.getWidget('kb_documents', infoSecPlan);

    //check if there are Plans available for Information Security Domain	
    var infoSecPlanObj = JSON.stringify(data.infoSecPlan);
    infoSecPlanObj = JSON.parse(infoSecPlanObj);
    data.infosecPlanLen = infoSecPlanObj.data.articles.length;


    // Privacy Legal
    var privacyLegalAllDoc = {
        "domain": "Privacy",
        "type": ""
    }; //To show all documents
    data.privacyLegalAllDoc = $sp.getWidget('kb_documents', privacyLegalAllDoc);

    var privacyLegalPopularDoc = {
        "domain": "Privacy"
    };
    data.privacyLegalPopularDoc = $sp.getWidget('kb_popular_doc_tabular', privacyLegalPopularDoc);

    var privacyLegalPolicies = {
        "domain": "Privacy",
        "type": "Policy"
    }; //To show policies
    data.privacyLegalPolicies = $sp.getWidget('kb_documents', privacyLegalPolicies);

    //check if there are Policies available for privacy Legal Domain
    var privacyLegalPolObj = JSON.stringify(data.privacyLegalPolicies);
    privacyLegalPolObj = JSON.parse(privacyLegalPolObj);
    data.privacyLegalPolLen = privacyLegalPolObj.data.articles.length;

    var privacyLegalStandards = {
        "domain": "Privacy",
        "type": "Standard"
    }; //To show standards
    data.privacyLegalStandards = $sp.getWidget('kb_documents', privacyLegalStandards);

    //check if there are standards available for Information Security Domain	
    var privacyLegalStandObj = JSON.stringify(data.privacyLegalStandards);
    privacyLegalStandObj = JSON.parse(privacyLegalStandObj);
    data.privacyLegalStanLen = privacyLegalStandObj.data.articles.length;

    var privacyLegalPlan = {
        "domain": "Privacy",
        "type": "Plan"
    }; //To show plans
    data.privacyLegalPlan = $sp.getWidget('kb_documents', privacyLegalPlan);

    //check if there are Plans available for Information Security Domain	
    var privacyLegalPlanObj = JSON.stringify(data.privacyLegalPlan);
    privacyLegalPlanObj = JSON.parse(privacyLegalPlanObj);
    data.privacyLegalPlanLen = privacyLegalPlanObj.data.articles.length;




    //Compliance domain
    var compPopularDoc = {
        "domain": "Compliance"
    };
    data.compPopularDoc = $sp.getWidget('kb_popular_doc_tabular', compPopularDoc);

    var compAllDoc = {
        "domain": "Compliance",
        "type": ""
    };
    data.compAllDoc = $sp.getWidget('kb_documents', compAllDoc);

    var compPolicies = {
        "domain": "Compliance",
        "type": "Policy"
    };
    data.compPolicies = $sp.getWidget('kb_documents', compPolicies);

    //check if there are Policies available for Compliance Domain	
    var compPolObj = JSON.stringify(data.compPolicies);
    compPolObj = JSON.parse(compPolObj);
    data.compPolLen = compPolObj.data.articles.length;

    var compStandards = {
        "domain": "Compliance",
        "type": "Standard"
    };
    data.compStandards = $sp.getWidget('kb_documents', compStandards);

    //check if there are Standard available for Compliance Domain	
    var compStanObj = JSON.stringify(data.compStandards);
    compStanObj = JSON.parse(compStanObj);
    data.compStanLen = compStanObj.data.articles.length;

    var compProcedure = {
        "domain": "Compliance",
        "type": "Procedure"
    };
    data.compProcedure = $sp.getWidget('kb_documents', compProcedure);

    //check if there are Procedure available for Compliance Domain	
    var compProcObj = JSON.stringify(data.compProcedure);
    compProcObj = JSON.parse(compProcObj);
    data.compProcLen = compProcObj.data.articles.length;

    var compPlan = {
        "domain": "Compliance",
        "type": "Plan"
    };
    data.compPlan = $sp.getWidget('kb_documents', compPlan);

    //check if there are Plan available for Compliance Domain	
    var compPlanObj = JSON.stringify(data.compPlan);
    compPlanObj = JSON.parse(compPlanObj);
    data.compPlanLen = compPlanObj.data.articles.length;


    /*
    //Employee Relations
    var empRelPopularDoc = {"domain": "Employee Relation"};
    data.empRelPopularDoc = $sp.getWidget('kb_popular_doc_tabular', empRelPopularDoc);
    	
    var empRelAllDoc = {"domain": "Employee Relation","type":""};
    data.empRelAllDoc = $sp.getWidget('kb_documents', empRelAllDoc);
    	
    var empRelPolicies = {"domain": "Employee Relation","type":"Policy"};
    data.empRelPolicies = $sp.getWidget('kb_documents', empRelPolicies);

    //check if there are Policies available for Employee Relation Domain	
    var empRelPolObj = JSON.stringify(data.empRelPolicies);
    empRelPolObj = JSON.parse(empRelPolObj);
    data.empRelPolLen = empRelPolObj.data.articles.length;
    	
    //CommOps 
    var commOpsPopularDoc = {"domain": "CommOps"};
    data.commOpsPopularDoc = $sp.getWidget('kb_popular_doc_tabular', commOpsPopularDoc);
    	
    var commOpsRelAllDoc = {"domain": "CommOps","type":""};
    data.commOpsRelAllDoc = $sp.getWidget('kb_documents', commOpsRelAllDoc);
    	
    var commOpsPolicies = {"domain": "CommOps","type":"Policy"};
    data.commOpsPolicies = $sp.getWidget('kb_documents', commOpsPolicies);
    	
    var commOpsStandard = {"domain": "CommOps","type":"Standard"};
    data.commOpsStandard = $sp.getWidget('kb_documents', commOpsPolicies);


    //check if there are Policies available for commops Domain	
    var commOpsPolObj = JSON.stringify(data.commOpsPolicies);
    commOpsPolObj = JSON.parse(commOpsPolObj);
    data.commOpsPolLen = commOpsPolObj.data.articles.length;

    //check if there are Standard available for commops Domain	
    var commOpsPoliObj = JSON.stringify(data.commOpsStandard);
    commOpsPoliObj = JSON.parse(commOpsPoliObj);
    data.commOpsPolLen = commOpsPoliObj.data.articles.length;*/



    //EHS	
    //check if there are Popular Documents available for EHS
    var ehsPopular = {
        "domain": "EHS"
    };
    data.ehsPopularDoc = $sp.getWidget('kb_popular_doc_tabular', ehsPopular);

    //check if there are All Documents available for EHS
    var ehsAll = {
        "domain": "EHS",
        "type": ""
    };
    data.ehsAllDoc = $sp.getWidget('kb_documents', ehsAll);

    //check if there are Policies available for EHS	
    var ehsPolicy = {
        "domain": "EHS",
        "type": "Policy"
    };
    data.ehsPolicy = $sp.getWidget('kb_documents', ehsPolicy);

    var ehsPolicyObj = JSON.stringify(data.ehsPolicy);
    ehsPolicyObj = JSON.parse(ehsPolicyObj);
    data.ehsPolicyALL = ehsPolicyObj.data.articles.length;


    //check if there are Standard available for EHS	
    var ehsStandard = {
        "domain": "EHS",
        "type": "Standard"
    };
    data.ehsStandard = $sp.getWidget('kb_documents', ehsStandard);

    var ehsStanObj = JSON.stringify(data.ehsStandard);
    ehsStanObj = JSON.parse(ehsStanObj);
    data.ehsStandarALL = ehsStanObj.data.articles.length;

    //check if there are Procedure available for EHS
    var ehsProcedure = {
        "domain": "EHS",
        "type": "Procedure"
    };
    data.ehsProcedure = $sp.getWidget('kb_documents', ehsProcedure);

    var ehsProcObj = JSON.stringify(data.ehsProcedure);
    ehsProcObj = JSON.parse(ehsProcObj);
    data.ehsProcedureALL = ehsProcObj.data.articles.length;

    //NOW-12641
    //check if there are All Documents available for Global safety
    var gstAll = {
        "domain": "Global Safety",
        "type": ""
    };
    data.gstAllDoc = $sp.getWidget('kb_documents', gstAll);

    /*//commOps	
    //check if there are All Documents available for commOps
    var commOpsAll = {"domain": "CommOps","type":""};
    data.commOpsAll = $sp.getWidget('kb_documents', commOpsAll);
    	
    //check if there are Policies available for commOps	
    var commOpsPolicy = {"domain": "CommOps","type":"Policy"};
    data.commOpsPolicy = $sp.getWidget('kb_documents', commOpsPolicy);
    	
    var commOpsPolicyObj = JSON.stringify(data.commOpsPolicy);
    commOpsPolicyObj = JSON.parse(commOpsPolicyObj);
    data.commOpsPolicyALL = commOpsPolicyObj.data.articles.length;
    	
    	
    //check if there are Standard available for commOps	
    var commOpsStandard = {"domain": "CommOps","type":"Standard"};
    data.commOpsStandard = $sp.getWidget('kb_documents', commOpsStandard);
    	
    var commOpsStanObj = JSON.stringify(data.commOpsStandard);
    commOpsStanObj = JSON.parse(commOpsStanObj);
    data.commOpsStandarALL = commOpsStanObj.data.articles.length;
    */

    data.showSecurityTab = gs.hasRole('snc_internal');
    data.showPrivacyTab = gs.hasRole('snc_internal');
    data.showComplianceTab = gs.hasRole('snc_internal');
    data.showEHSTab = gs.hasRole('snc_internal');

    // Global Security
    data.showGlobalSecurityOverview = gs.hasRole('snc_internal');
    // data.showGlobalSecurityPolicies = gs.hasRole('policy_reviewer') || gs.hasRole('approver') || gs.hasRole('owner') || gs.hasRole('owning_group_member');
    data.showGlobalSecurityPolicies = false;
    var user = gs.getUserID();

    // Query the kb_knowledge table for Global Security policies
    var kbRecord = new GlideRecord('kb_knowledge');
    kbRecord.addQuery('u_policy.u_domain', 'Global Security'); // Assuming 'topic' or a similar field defines the domain
    kbRecord.query();
    while (kbRecord.next()) {
        // Check if the user is in u_approver, u_reviewer, or u_owning_group fields
        if (kbRecord.u_policy.approvers.toString().includes(user) ||
            kbRecord.u_policy.reviewers.toString().includes(user) || kbRecord.u_policy.owner.toString().includes(user) ||
            isUserInOwningGroup(kbRecord.u_policy.owning_group, user)) {
            data.showGlobalSecurityPolicies = true;
            break; // Exit loop once access is granted
        }
    }

    // Public Safety tab check
    data.showPublicSafetyTab = gs.hasRole('sn-publicsafety-policy-readaccess');

    // Helper function to check if user is in the owning group
    function isUserInOwningGroup(groupField, userID) {
        if (!groupField) return false;
        var groupRecord = new GlideRecord('sys_user_grmember');
        groupRecord.addQuery('group', groupField);
        groupRecord.addQuery('user', userID);
        groupRecord.query();
        return groupRecord.hasNext(); // Returns true if the user is found in the group
    }
    // Public Safety
    data.showPublicSafetyTab = gs.hasRole('sn-publicsafety-policy-readaccess');

})();

 

 

 

 

0 REPLIES 0