Skip to content

Commit c19dac4

Browse files
authored
Merge pull request #4076 from appirio-tech/hotfix/added_support_to_render_projectFAQ_based_on_metadata
[Patch-Prod]Hotfix/added support to render project faq based on metadata
2 parents 4642422 + 9e1e605 commit c19dac4

File tree

3 files changed

+28
-4
lines changed

3 files changed

+28
-4
lines changed

src/helpers/projectHelper.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ export function getNewProjectLink(orgConfigs) {
266266
* @param {Object} project - The project object
267267
* @param {string} projectId - The project id
268268
*/
269-
export function getProjectNavLinks(project, projectId) {
269+
export function getProjectNavLinks(project, projectId, renderFAQs) {
270270
let messagesTab = null
271271
// `Discussions` items can be added as soon as project is loaded
272272
// if discussions are not hidden for it
@@ -283,12 +283,15 @@ export function getProjectNavLinks(project, projectId) {
283283
// Commented out till it needs to go live.
284284
{ label: 'Reports', to: `/projects/${projectId}/reports`, Icon: ReportsIcon, iconClassName: 'stroke' },
285285
{ label: 'Assets Library', to: `/projects/${projectId}/assets`, Icon: AssetsLibraryIcon, iconClassName: 'stroke' },
286-
{ label: 'FAQ', to: `/projects/${projectId}/faqs`, Icon: FAQIcon, iconClassName: 'fill' },
287286
] : [
288287
{ label: 'Dashboard', to: `/projects/${projectId}`, Icon: DashboardIcon, iconClassName: 'stroke' },
289288
messagesTab,
290289
{ label: 'Specification', to: `/projects/${projectId}/specification`, Icon: ScopeIcon, iconClassName: 'fill' },
291290
]
292-
291+
292+
if (renderFAQs) {
293+
const faqTab = { label: 'FAQ', to: `/projects/${projectId}/faqs`, Icon: FAQIcon, iconClassName: 'fill' }
294+
navLinks.push(faqTab)
295+
}
293296
return navLinks
294297
}

src/helpers/templates.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,3 +177,16 @@ export function getProjectTypeByAlias(projectTypes, alias) {
177177
projectType.aliases[0] === alias
178178
) || null
179179
}
180+
181+
182+
183+
/**
184+
* Finds whether the template supports FAQ or not
185+
*
186+
* @param {Object} projectTemplate a project template object
187+
*
188+
* @return {Boolean} boolean true/false
189+
*/
190+
export function containsFAQ(projectTemplate) {
191+
return projectTemplate && projectTemplate.metadata && !_.isEmpty(projectTemplate.metadata) && projectTemplate.metadata.contentful && projectTemplate.metadata.contentful.projectFaqId
192+
}

src/projects/detail/containers/ProjectInfoContainer.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { loadDashboardFeeds, loadProjectMessages } from '../../actions/projectTo
1010
import { loadTopic } from '../../../actions/topics'
1111
import { loadProjectPlan } from '../../actions/projectPlan'
1212
import { getProjectNavLinks } from '../../../helpers/projectHelper'
13+
import { getProjectTemplateByKey, containsFAQ } from '../../../helpers/templates'
1314
import {
1415
PROJECT_ROLE_OWNER,
1516
PROJECT_ROLE_COPILOT,
@@ -450,7 +451,14 @@ class ProjectInfoContainer extends React.Component {
450451
const notReadPhaseNotifications = filterTopicAndPostChangedNotifications(projectNotReadNotifications, /^phase#\d+$/)
451452
const notReadAssetsNotifications = filterFileAndLinkChangedNotifications(projectNotReadNotifications)
452453

453-
const navLinks = getProjectNavLinks(project, project.id).map((navLink) => {
454+
const projectTemplateId = project.templateId
455+
const projectTemplateKey = _.get(project, 'details.products[0]')
456+
const projectTemplate = projectTemplateId
457+
? _.find(projectTemplates, pt => pt.id === projectTemplateId)
458+
: getProjectTemplateByKey(projectTemplates, projectTemplateKey)
459+
460+
const renderFAQs = containsFAQ(projectTemplate)
461+
const navLinks = getProjectNavLinks(project, project.id, renderFAQs).map((navLink) => {
454462
if (navLink.label === 'Messages') {
455463
navLink.count = notReadMessageNotifications.length
456464
navLink.toolTipText = 'New messages'

0 commit comments

Comments
 (0)