'use strict'; import React from 'react'; import Status from './Status'; import CampaignsCUD from './CUD'; import Content from './Content'; import CampaignsList from './List'; import Share from '../shares/Share'; import Files from "../lib/files"; import { CampaignSource, CampaignType } from "../../../shared/campaigns"; import TriggersCUD from './triggers/CUD'; import TriggersList from './triggers/List'; function getMenus(t) { return { 'campaigns': { title: t('Campaigns'), link: '/campaigns', panelComponent: CampaignsList, children: { ':campaignId([0-9]+)': { title: resolved => t('Campaign "{{name}}"', {name: resolved.campaign.name}), resolve: { campaign: params => `rest/campaigns-settings/${params.campaignId}` }, link: params => `/campaigns/${params.campaignId}/edit`, navs: { status: { title: t('Status'), link: params => `/campaigns/${params.campaignId}/status`, visible: resolved => resolved.campaign.permissions.includes('viewStats'), panelRender: props => }, ':action(edit|delete)': { title: t('Edit'), link: params => `/campaigns/${params.campaignId}/edit`, visible: resolved => resolved.campaign.permissions.includes('edit'), panelRender: props => }, content: { title: t('Content'), link: params => `/campaigns/${params.campaignId}/content`, resolve: { campaignContent: params => `rest/campaigns-content/${params.campaignId}` }, visible: resolved => resolved.campaign.permissions.includes('edit') && (resolved.campaign.source === CampaignSource.CUSTOM || resolved.campaign.source === CampaignSource.CUSTOM_FROM_TEMPLATE || resolved.campaign.source === CampaignSource.CUSTOM_FROM_CAMPAIGN), panelRender: props => }, files: { title: t('Files'), link: params => `/campaigns/${params.campaignId}/files`, visible: resolved => resolved.campaign.permissions.includes('viewFiles') && (resolved.campaign.source === CampaignSource.CUSTOM || resolved.campaign.source === CampaignSource.CUSTOM_FROM_TEMPLATE || resolved.campaign.source === CampaignSource.CUSTOM_FROM_CAMPAIGN), panelRender: props => }, attachments: { title: t('Attachments'), link: params => `/campaigns/${params.campaignId}/attachments`, visible: resolved => resolved.campaign.permissions.includes('viewAttachments'), panelRender: props => }, triggers: { title: t('Triggers'), link: params => `/campaigns/${params.campaignId}/triggers/`, visible: resolved => resolved.campaign.type === CampaignType.TRIGGERED && resolved.campaign.permissions.includes('viewTriggers'), panelRender: props => , children: { ':triggerId([0-9]+)': { title: resolved => t('Trigger "{{name}}"', {name: resolved.trigger.name}), resolve: { trigger: params => `rest/triggers/${params.campaignId}/${params.triggerId}`, }, link: params => `/campaigns/${params.campaignId}/triggers/${params.triggerId}/edit`, navs: { ':action(edit|delete)': { title: t('Edit'), link: params => `/campaigns/${params.campaignId}/triggers/${params.triggerId}/edit`, panelRender: props => } } }, create: { title: t('Create'), panelRender: props => } } }, share: { title: t('Share'), link: params => `/campaigns/${params.campaignId}/share`, visible: resolved => resolved.campaign.permissions.includes('share'), panelRender: props => } } }, 'create-regular': { title: t('Create Regular Campaign'), panelRender: props => }, 'create-rss': { title: t('Create RSS Campaign'), panelRender: props => }, 'create-triggered': { title: t('Create Triggered Campaign'), panelRender: props => } } } }; } export default { getMenus }