Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) Safe-mode: OFF (not secure) /var/www/html/wincloud_gateway/node_modules/strapi-admin/admin/src/containers/HomePage/ drwxr-xr-x | |
| Viewing file: Select action/file-type: /*
*
* HomePage
*
*/
/* eslint-disable */
import React, { memo, useMemo } from 'react';
import { FormattedMessage } from 'react-intl';
import { get, upperFirst } from 'lodash';
import { auth, LoadingIndicatorPage } from 'strapi-helper-plugin';
import PageTitle from '../../components/PageTitle';
import { useModels } from '../../hooks';
import useFetch from './hooks';
import { ALink, Block, Container, LinkWrapper, P, Wave, Separator } from './components';
import BlogPost from './BlogPost';
import SocialLink from './SocialLink';
const FIRST_BLOCK_LINKS = [
{
link:
'https://strapi.io/documentation/developer-docs/latest/getting-started/quick-start.html#_4-create-a-category-content-type',
contentId: 'app.components.BlockLink.documentation.content',
titleId: 'app.components.BlockLink.documentation',
},
{
link: 'https://github.com/strapi/foodadvisor',
contentId: 'app.components.BlockLink.code.content',
titleId: 'app.components.BlockLink.code',
},
];
const SOCIAL_LINKS = [
{
name: 'GitHub',
link: 'https://github.com/strapi/strapi/',
},
{
name: 'Discord',
link: 'https://discord.strapi.io/',
},
{
name: 'Reddit',
link: 'https://www.reddit.com/r/Strapi/',
},
{
name: 'Twitter',
link: 'https://twitter.com/strapijs',
},
{
name: 'Blog',
link: 'https://strapi.io/blog',
},
{
name: 'Forum',
link: 'https://forum.strapi.io',
},
{
name: 'Careers',
link: 'https://strapi.io/careers',
},
];
const HomePage = ({ history: { push } }) => {
const { error, isLoading, posts } = useFetch();
// Temporary until we develop the menu API
const { collectionTypes, singleTypes, isLoading: isLoadingForModels } = useModels();
const handleClick = e => {
e.preventDefault();
push(
'/plugins/content-type-builder/content-types/plugins::users-permissions.user?modalType=contentType&kind=collectionType&actionType=create&settingType=base&forTarget=contentType&headerId=content-type-builder.modalForm.contentType.header-create&header_icon_isCustom_1=false&header_icon_name_1=contentType&header_label_1=null'
);
};
const hasAlreadyCreatedContentTypes = useMemo(() => {
const filterContentTypes = contentTypes => contentTypes.filter(c => c.isDisplayed);
return (
filterContentTypes(collectionTypes).length > 1 || filterContentTypes(singleTypes).length > 0
);
}, [collectionTypes, singleTypes]);
if (isLoadingForModels) {
return <LoadingIndicatorPage />;
}
const headerId = hasAlreadyCreatedContentTypes
? 'HomePage.greetings'
: 'app.components.HomePage.welcome';
const username = get(auth.getUserInfo(), 'firstname', '');
const linkProps = hasAlreadyCreatedContentTypes
? {
id: 'app.components.HomePage.button.blog',
href: 'https://strapi.io/blog/',
onClick: () => {},
type: 'blog',
target: '_blank',
}
: {
id: 'app.components.HomePage.create',
href: '',
onClick: handleClick,
type: 'documentation',
};
return (
<>
<FormattedMessage id="HomePage.helmet.title">
{title => <PageTitle title={title} />}
</FormattedMessage>
<Container className="container-fluid">
<div className="row">
<div className="col-lg-8 col-md-12">
<Block>
<Wave />
<FormattedMessage
id={headerId}
values={{
name: upperFirst(username),
}}
>
{msg => <h2 id="mainHeader">{msg}</h2>}
</FormattedMessage>
{hasAlreadyCreatedContentTypes ? (
<FormattedMessage id="app.components.HomePage.welcomeBlock.content.again">
{msg => <P>{msg}</P>}
</FormattedMessage>
) : (
<FormattedMessage id="HomePage.welcome.congrats">
{congrats => {
return (
<FormattedMessage id="HomePage.welcome.congrats.content">
{content => {
return (
<FormattedMessage id="HomePage.welcome.congrats.content.bold">
{boldContent => {
return (
<P>
<b>{congrats}</b>
{content}
<b>{boldContent}</b>
</P>
);
}}
</FormattedMessage>
);
}}
</FormattedMessage>
);
}}
</FormattedMessage>
)}
{hasAlreadyCreatedContentTypes && (
<div style={{ marginTop: isLoading ? 60 : 50 }}>
{posts.map((post, index) => (
<BlogPost
{...post}
key={post.link}
isFirst={index === 0}
isLoading={isLoading}
error={error}
/>
))}
</div>
)}
<FormattedMessage id={linkProps.id}>
{msg => (
<ALink
rel="noopener noreferrer"
{...linkProps}
style={{ verticalAlign: ' bottom', marginBottom: 5 }}
>
{msg}
</ALink>
)}
</FormattedMessage>
<Separator style={{ marginTop: 37, marginBottom: 36 }} />
<div style={{ display: 'flex', justifyContent: 'space-between' }}>
{FIRST_BLOCK_LINKS.map((data, index) => {
const type = index === 0 ? 'doc' : 'code';
return (
<LinkWrapper href={data.link} target="_blank" key={data.link} type={type}>
<FormattedMessage id={data.titleId}>
{title => <p className="bold">{title}</p>}
</FormattedMessage>
<FormattedMessage id={data.contentId}>
{content => <p>{content}</p>}
</FormattedMessage>
</LinkWrapper>
);
})}
</div>
</Block>
</div>
<div className="col-md-12 col-lg-4">
<Block style={{ paddingRight: 30, paddingBottom: 0 }}>
<FormattedMessage id="HomePage.community">{msg => <h2>{msg}</h2>}</FormattedMessage>
<FormattedMessage id="app.components.HomePage.community.content">
{content => <P style={{ marginTop: 7, marginBottom: 0 }}>{content}</P>}
</FormattedMessage>
<FormattedMessage id="HomePage.roadmap">
{msg => (
<ALink
rel="noopener noreferrer"
href="https://portal.productboard.com/strapi/1-public-roadmap/tabs/2-under-consideration"
target="_blank"
>
{msg}
</ALink>
)}
</FormattedMessage>
<Separator style={{ marginTop: 18 }} />
<div
className="row social-wrapper"
style={{
display: 'flex',
margin: 0,
marginTop: 36,
marginLeft: -15,
}}
>
{SOCIAL_LINKS.map((value, key) => (
<SocialLink key={key} {...value} />
))}
</div>
</Block>
</div>
</div>
</Container>
</>
);
};
export default memo(HomePage);
|
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0229 ]-- |