App.js 14.26 KiB
/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre
Departamento de Informatica - Universidade Federal do Parana
This file is part of Plataforma Integrada MEC.
Plataforma Integrada MEC is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Plataforma Integrada MEC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/
import React, { useContext, useEffect, useState } from 'react';
import Home from './Pages/HomeFunction';
import Search from './Pages/Search'
import Header from './Components/Header'
import EcFooter from './Components/EcFooter';
import GNUAGPLfooter from './Components/AGPLFooter';
import UserPage from './Pages/UserPage';
import UserTerms from './Pages/UserTerms';
import Contact from './Pages/Contact';
import Teste from './Pages/Teste';
import AboutPage from './Pages/AboutPage';
import HelpCenter from './Pages/HelpCenter';
import TabResoursePub from './Pages/TabsHelp/TabResoursePub';
import TabResourseFind from './Pages/TabsHelp/TabResourseFind';
import TabNetPart from './Pages/TabsHelp/TabNetPart';
import TabManageAc from './Pages/TabsHelp/TabManageAc';
import PasswordRecoveryPage from './Pages/PasswordRecoveryPage.js'
import PageProfessor from './Pages/PageProfessor.js'
import ResourcePage from './Pages/ResourcePage';
import { BrowserRouter, Switch, Route, Link } from 'react-router-dom';
import { Store } from './Store'
import TermsPage from './Pages/TermsPage.js'
import PublicationPermissionsPage from './Pages/PublicationPermissionsPage.js'
import TabPlataformaMEC from './Pages/TabsHelp/TabPlataformaMEC';
import ItemStore from './Pages/ItemStore.js'
import EditProfilePage from './Pages/EditProfilePage.js'
import PublicUserPage from './Pages/PublicUserPage.js'
import UploadPage from './Pages/UploadPage.js'
import EditLearningObjectPage from './Pages/EditLearningObjectPage.js'
import SiteMap from './Pages/SiteMap'
import Accessibility from './Pages/Accessibility'
import CollectionPage from './Pages/CollectionPage.js'
import FormationMaterialPage from './Pages/FormationMaterialPage.js';
import FormationMaterialIframe from './Pages/FormationMaterialIframe.js';
import MaterialPage from './Pages/MaterialPage';
//admin
import clsx from 'clsx';
import { makeStyles } from '@material-ui/core/styles';
import Drawer from '@material-ui/core/Drawer';
import List from '@material-ui/core/List';
import ListItem from '@material-ui/core/ListItem';
import IconButton from '@material-ui/core/IconButton';
import DisplayIcon from './Admin/Components/Components/DisplayIcon';
import ListItemText from '@material-ui/core/ListItemText';
import MenuIcon from '@material-ui/icons/Menu';
import Fab from '@material-ui/core/Fab';
import { TabsItens } from './Admin/Pages/AdminLabelTabs/LabelTabs';
import Welcome from './Admin/Components/Components/Welcome';
import NoteVariables from './Admin/Pages/Pages/SubPages/NoteVariables';
import Institution from './Admin/Pages/Pages/SubPages/Institutions';
import SendEmail from './Admin/Pages/Pages/SubPages/SendEmail';
import Inframe from './Admin/Pages/Pages/SubPages/Inframe';
import Languages from './Admin/Pages/Pages/SubPages/Languages';
import Activity from './Admin/Pages/Pages/SubPages/Activity';
import InstitutionCard from './Admin/Components/Components/DataCards/InstitutionsCard';
import InstitutionsInput from './Admin/Components/Components/Inputs/IntitutionsInputs';
import CreateInstitution from './Admin/Components/Components/Inputs/CreateInstitution';
import NoteVarCard from './Admin/Components/Components/DataCards/NoteVarCard';
import NoteVarInputs from './Admin/Components/Components/Inputs/NoteVarInputs';
import EditLanguage from './Admin/Components/Components/Inputs/EditLanguage';
import CreateLanguage from './Admin/Components/Components/Inputs/CreateLanguage';
import ActivityCard from './Admin/Components/Components/DataCards/ActivityCard';
import CommunityQuestions from './Admin/Pages/Pages/SubPages/CommunityQuestions';
import CommunityCard from './Admin/Components/Components/DataCards/CommunityQuestionCard';
import Collections from './Admin/Pages/Pages/SubPages/Collections';
import CollectionCard from './Admin/Components/Components/DataCards/CollectionCard';
import EditCollection from './Admin/Components/Components/Inputs/EditCollection';
import Ratings from './Admin/Pages/Pages/SubPages/Rating';
import RatingCard from './Admin/Components/Components/DataCards/RatingCard';
import EditRating from './Admin/Components/Components/Inputs/EditRating';
import CreateRating from './Admin/Components/Components/Inputs/CreateRating';
import Questions from './Admin/Pages/Pages/SubPages/Questions';
import CreateQuestions from './Admin/Components/Components/Inputs/CreateQuestion';
import EducationalObject from './Admin/Pages/Pages/SubPages/EducationalObjects';
import EducationalObjectCard from './Admin/Components/Components/DataCards/EducationalObjectsCard';
import EducationalObjectEdit from './Admin/Components/Components/Inputs/EditEducationalObect';
import Complaints from './Admin/Pages/Pages/SubPages/Complaints';
import ComplaintCard from './Admin/Components/Components/DataCards/ComplaintsCard';
import AproveTeacher from './Admin/Pages/Pages/SubPages/AproveTeacher';
import UserCard from './Admin/Components/Components/DataCards/UserCard';
import EditUser from './Admin/Components/Components/Inputs/EditUser';
import UserList from './Admin/Pages/Pages/SubPages/Users';
import UserPermissions from './Admin/Pages/Pages/SubPages/Permissions'
import EditRole from './Admin/Components/Components/Inputs/EditRoles';
import CreateRole from './Admin/Components/Components/Inputs/CreateRole'
import BlockedUser from './Admin/Pages/Pages/SubPages/BlockedUsers';
const useStyles = makeStyles({
list: {
width: 250,
},
fullList: {
width: 'auto',
},
});
const fab = {
margin: 0,
top: 'auto',
right: 20,
bottom: 20,
left: 'auto',
position: 'fixed',
}
export default function App() {
// eslint-disable-next-line
const { state, dispatch } = useContext(Store)
const [hideFooter, setHideFooter] = useState(false);
const classes = useStyles();
//State of the Drawer
const [State, setState] = React.useState({
left: false
});
const [IndexIcon, setIndexIcon] = useState(0);
{/**************** Controlls the state of the Drawer ****************/ }
const toggleDrawer = (anchor, open) => (event) => {
if (event.type === 'keydown' && (event.key === 'Tab' || event.key === 'Shift')) {
return;
}
setState({ ...State, [anchor]: open });
};
{/**************** Dsiplay the itens of the Drawer ****************/ }
const list = (anchor) => (
<div
className={clsx(classes.list, {
[classes.fullList]: anchor === 'top' || anchor === 'bottom',
})}
role="presentation"
onClick={toggleDrawer(anchor, false)}
onKeyDown={toggleDrawer(anchor, false)}
>
<List>
{TabsItens.map((text, index) => (
<Link to={text.href} key={text.label} style={{ color: "black" }}>
<ListItem button key={text.label} onClick={() => setIndexIcon(index)}>
<IconButton>
<DisplayIcon i={index} />
</IconButton>
<ListItemText primary={text.label} />
</ListItem>
</Link>
))}
</List>
</div>
);
useEffect(() => {
setHideFooter(String(window.location.href).includes('iframe-colecao'));
}, [window.location.href]);
useEffect(() => {
dispatch({
type: 'WINDOW_SIZE',
innerWindow: {
width: window.innerWidth,
height: window.innerHeight
}
})
}, [])
useEffect(() => {
const setWindowSize = () => {
dispatch({
type: 'WINDOW_SIZE',
innerWindow: {
width: window.innerWidth,
height: window.innerHeight
}
})
}
window.addEventListener('resize', setWindowSize)
return () => window.removeEventListener('resize', setWindowSize)
}, [window.innerWidth, window.innerHeight])
return (
<BrowserRouter basename="/react">
<Header />
<div style={{ backgroundImage: "linear-gradient(to right,#ff7f00,#e81f4f,#673ab7,#00bcd4)", height: "5px" }}></div>
<link href="https://fonts.googleapis.com/css?family=Kalam|Pompiere|Roboto&display=swap" rel="stylesheet" />
<Switch>
<Route path="/" exact={true} component={Home} />
<Route path="/busca" component={Search} />
<Route path="/perfil" component={UserPage} />
<Route path="/editarperfil" component={EditProfilePage} />
<Route path="/recurso/:recursoId" component={ResourcePage} />
<Route path="/termos-publicar-recurso" component={TermsPage} />
<Route path="/permission" component={PublicationPermissionsPage} />
{/*<Route path="termos-de-uso#publicacoes-de-usuario" component={}*/}
<Route path="/ajuda" component={HelpCenter} />
<Route path="/contato" component={Contact} />
<Route path="/termos" component={UserTerms} />
<Route path="/teste" component={Teste} />
<Route path="/sobre" component={AboutPage} />
<Route path="/mapa-site" component={SiteMap} />
<Route path="/acessibilidade" component={Accessibility} />
<Route path="/publicando-recurso" component={TabResoursePub} />
<Route path="/encontrando-recurso" component={TabResourseFind} />
<Route path="/participando-da-rede" component={TabNetPart} />
<Route path="/gerenciando-conta" component={TabManageAc} />
<Route path="/plataforma-mec" component={TabPlataformaMEC} />
<Route path="/recuperar-senha" component={PasswordRecoveryPage} />
<Route path="/usuario-publico/:userId" component={PublicUserPage} />
<Route path="/editar-recurso/:recursoId" component={EditLearningObjectPage} />
<Route path='/professor' component={PageProfessor} />
<Route path="/upload" component={UploadPage} />
<Route path='/loja' component={ItemStore} />
<Route path='/colecao-do-usuario/:id' component={CollectionPage} />
<Route path='/colecao' component={FormationMaterialPage} />
<Route path='/topico' component={FormationMaterialPage} />
<Route path='/iframe-colecao' component={FormationMaterialIframe} />
<Route path='/material-formacao' component={MaterialPage} />
<div style={{ paddingTop: '2em', paddingLeft: '2em', paddingRight: '2em', paddingBottom: '2em', backgroundColor: ' #D3D3D3' }}>
<Route path='/admin/home' exact={true} component={Inframe} />
<Route path='/admin/intitutions' component={Institution} />
<Route path='/admin/institution/:id' component={InstitutionCard} />
<Route path='/admin/institutionEdit/:id' component={InstitutionsInput} />
<Route path='/admin/InstitutionCreate' component={CreateInstitution} />
<Route path='/admin/noteVars' component={NoteVariables} />
<Route path='/admin/noteVar/:id' component={NoteVarCard} />
<Route path='/admin/noteVarEdit/:id' component={NoteVarInputs} />
<Route path='/admin/languages' component={Languages} />
<Route path='/admin/languageEdit/:id' component={EditLanguage} />
<Route path='/admin/languageCreate' component={CreateLanguage} />
<Route path='/admin/CommunityQuestions' component={CommunityQuestions} />
<Route path='/admin/CommunityQuestion/:id' component={CommunityCard} />
<Route path='/admin/Collections' component={Collections} />
<Route path='/admin/Collection/:id' component={CollectionCard} />
<Route path='/admin/EditCollection/:id' component={EditCollection} />
<Route path='/admin/Ratings' component={Ratings} />
<Route path='/admin/Rating/:id' component={RatingCard} />
<Route path='/admin/EditRating/:id' component={EditRating} />
<Route path='/admin/CreateRating' component={CreateRating} />
<Route path='/admin/Questions' component={Questions} />
<Route path='/admin/CreateQuestion' component={CreateQuestions} />
<Route path='/admin/activities' component={Activity} />
<Route path='/admin/activity/:id' component={ActivityCard} />
<Route path='/admin/learningObjects' component={EducationalObject} />
<Route path='/admin/learningObject/:id' component={EducationalObjectCard} />
<Route path='/admin/learningObjectEdit/:id' component={EducationalObjectEdit} />
<Route path='/admin/complaints' component={Complaints} />
<Route path='/admin/complaint/:id' component={ComplaintCard} />
<Route path='/admin/users/teacher_requests' component={AproveTeacher} />
<Route path='/admin/usersList' component={UserList} />
<Route path='/admin/user/:id' component={UserCard} />
<Route path='/admin/EditUser/:id' component={EditUser} />
<Route path='/admin/permissions' component={UserPermissions} />
<Route path='/admin/EditPermissions/:id' component={EditRole} />
<Route path='/admin/CreateRole' component={CreateRole} />
<Route path='/admin/BlockedUsers' component={BlockedUser} />
<Route path='/admin/sendEmail/:email' component={SendEmail} />
<React.Fragment>
<Drawer anchor={'left'} open={State['left']} onClose={toggleDrawer('left', false)}>
{list('left')}
</Drawer>
</React.Fragment>
<Fab color="primary" aria-label="add" style={fab} onClick={toggleDrawer('left', true)}>
<MenuIcon />
</Fab>
</div>
</Switch>
{!hideFooter &&
<div>
<EcFooter />
<GNUAGPLfooter />
</div>
}
</BrowserRouter>
)
}