Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,11 @@ Forks within the same organization copy the collaborators and team settings of t
* Any teams from the upstream permission structure that exist and are visible in the target organization or user namespace will have their permissions copied.
* Admin permissions remain with the upstream owner, except when a user forks into a different organization.
* If that repository is forked to a user namespace, the organization maintains admin permissions and any teams with access maintain access.

{% ifversion ghec or ghes %}

### About forks within an enterprise

Internal repositories only support a single level of forking, it is not possible to fork a private fork of an internal repository. This is intentional to simplify access and management for internal repositories which have enterprise-wide access. This differs from the behavior of public and private repositories, that allow nested forking.

{% endif %}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ topics:

{% data reusables.support.zendesk-old-tickets %}

You can use the {% data variables.contact.contact_landing_page_portal %} to view current and past support tickets and respond to {% data variables.contact.github_support %}. After 120 days, resolved tickets are archived, and archived tickets can only be viewed for enterprise accounts.
You can use the {% data variables.contact.contact_landing_page_portal %} to view current and past support tickets and respond to {% data variables.contact.github_support %}. After 120 days, resolved tickets are archived and retained for up to three years. Archived tickets can only be viewed for enterprise accounts.

Your capabilities in the {% data variables.contact.landing_page_portal %} depend on the account you select when you submit a ticket.{% ifversion ghes or ghec %} If you select an enterprise account, your role in the enterprise also affects your capabilities.

Expand All @@ -35,7 +35,7 @@ Your capabilities in the {% data variables.contact.landing_page_portal %} depend

## Viewing your archived support tickets

You can only view archived tickets for an enterprise account.
You can only view archived tickets for an enterprise account. Archived tickets are retained for up to three years.

{% data reusables.support.navigate-to-my-tickets %}
1. Select the **My Tickets** drop-down menu and click the name of the enterprise account.
Expand Down
3 changes: 2 additions & 1 deletion src/frame/components/DefaultLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ export const DefaultLayout = (props: Props) => {
fullUrl,
status,
} = mainContext
const xHost = mainContext.xHost
const page = mainContext.page!
const { t } = useTranslation(['meta', 'scroll_button'])
const router = useRouter()
Expand Down Expand Up @@ -60,7 +61,7 @@ export const DefaultLayout = (props: Props) => {
const metaDescription = page.introPlainText ? page.introPlainText : t('default_description')

const SOCIAL_CATEGORIES = new Set(['code-security', 'actions', 'issues', 'copilot'])
const SOCIAL_CARD_IMG_BASE_URL = '/assets/cb-345/images/social-cards'
const SOCIAL_CARD_IMG_BASE_URL = `${xHost}/assets/cb-345/images/social-cards`

function getCategoryImageUrl(category: string): string {
return `${SOCIAL_CARD_IMG_BASE_URL}/${category}.png`
Expand Down
75 changes: 34 additions & 41 deletions src/frame/components/context/MainContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ type EnterpriseServerReleases = {
}

export type MainContextT = {
allVersions: Record<string, VersionItem>
breadcrumbs: {
product: BreadcrumbT
category?: BreadcrumbT
Expand All @@ -96,21 +97,21 @@ export type MainContextT = {
name: string
href: string
}
currentCategory?: string
currentPathWithoutLanguage: string
currentProduct?: ProductT
currentProductName: string
currentProductTree?: ProductTreeNode | null
currentLayoutName?: string
isHomepageVersion: boolean
currentVersion?: string
data: DataT
error: string
currentCategory?: string
relativePath?: string
enterpriseServerReleases: EnterpriseServerReleases
currentPathWithoutLanguage: string
allVersions: Record<string, VersionItem>
currentVersion?: string
currentProductTree?: ProductTreeNode | null
sidebarTree?: ProductTreeNode | null
enterpriseServerVersions: Array<string>
error: string
featureFlags: FeatureFlags
fullUrl: string
isHomepageVersion: boolean
nonEnterpriseDefaultVersion: string
page: {
documentType: string
type?: string
Expand All @@ -122,13 +123,10 @@ export type MainContextT = {
noEarlyAccessBanner: boolean
applicableVersions: string[]
} | null

enterpriseServerVersions: Array<string>

nonEnterpriseDefaultVersion: string

relativePath?: string
sidebarTree?: ProductTreeNode | null
status: number
fullUrl: string
xHost?: string
}

// Write down the namespaces from `data/ui.yml` that are used on all pages,
Expand Down Expand Up @@ -231,58 +229,53 @@ export const getMainContext = async (req: any, res: any): Promise<MainContextT>
const currentProductName: string = req.context.currentProductName || ''

const props: MainContextT = {
allVersions: minimalAllVersions(req.context.allVersions),
breadcrumbs: req.context.breadcrumbs || {},
communityRedirect: req.context.page?.communityRedirect || {},
currentCategory: req.context.currentCategory || '',
currentLayoutName: req.context.currentLayoutName || null,
currentPathWithoutLanguage: req.context.currentPathWithoutLanguage,
currentProduct,
currentProductName,
isHomepageVersion: req.context.page?.documentType === 'homepage',
error: req.context.error ? req.context.error.toString() : '',
// This is a slimmed down version of `req.context.currentProductTree`
// that only has the minimal titles stuff needed for sidebars and
// any page that is hidden is omitted.
// However, it's not needed on most pages. For example, on article pages,
// you don't need it. It's similar to the minimal product tree but,
// has the full length titles and not just the short titles.
currentProductTree:
(includeFullProductTree && req.context.currentProductTreeTitlesExcludeHidden) || null,
currentVersion: req.context.currentVersion,
data: {
ui,

reusables,

variables: {
release_candidate: {
version: releaseCandidateVersion,
},
},
},
currentCategory: req.context.currentCategory || '',
currentPathWithoutLanguage: req.context.currentPathWithoutLanguage,
page: pageInfo,
enterpriseServerReleases: pick(req.context.enterpriseServerReleases, [
'isOldestReleaseDeprecated',
'oldestSupported',
'nextDeprecationDate',
'supported',
]),
enterpriseServerVersions: req.context.enterpriseServerVersions,
allVersions: minimalAllVersions(req.context.allVersions),
currentVersion: req.context.currentVersion,
// This is a slimmed down version of `req.context.currentProductTree`
// that only has the minimal titles stuff needed for sidebars and
// any page that is hidden is omitted.
// However, it's not needed on most pages. For example, on article pages,
// you don't need it. It's similar to the minimal product tree but,
// has the full length titles and not just the short titles.
currentProductTree:
(includeFullProductTree && req.context.currentProductTreeTitlesExcludeHidden) || null,
error: req.context.error ? req.context.error.toString() : '',
featureFlags: {},
fullUrl: req.protocol + '://' + req.hostname + req.originalUrl, // does not include port for localhost
isHomepageVersion: req.context.page?.documentType === 'homepage',
nonEnterpriseDefaultVersion: req.context.nonEnterpriseDefaultVersion,
page: pageInfo,
relativePath: req.context.page?.relativePath || null,
// The minimal product tree is needed on all pages that depend on
// the product sidebar or the rest sidebar.
sidebarTree: (includeSidebarTree && req.context.sidebarTree) || null,
featureFlags: {},
nonEnterpriseDefaultVersion: req.context.nonEnterpriseDefaultVersion,
status: res.statusCode,
fullUrl: req.protocol + '://' + req.hostname + req.originalUrl, // does not include port for localhost
xHost: req.get('x-host') || '',
}

if (req.context.currentLayoutName) {
props.currentLayoutName = req.context.currentLayoutName
}
if (req.context.page?.relativePath) {
props.relativePath = req.context.page.relativePath
}
return props
}

Expand Down
Loading