Skip to content
Snippets Groups Projects
App.js 14.3 KiB
Newer Older
/*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/>.*/

Raul Almeida's avatar
Raul Almeida committed
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';
mrp19's avatar
mrp19 committed
import UserTerms from './Pages/UserTerms';
mrp19's avatar
mrp19 committed
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 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'
Raul Almeida's avatar
Raul Almeida committed
import CollectionPage from './Pages/CollectionPage.js'
import FormationMaterialPage from './Pages/FormationMaterialPage.js';
Raul Almeida's avatar
Raul Almeida committed
import FormationMaterialIframe from './Pages/FormationMaterialIframe.js';
lfr20's avatar
lfr20 committed
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">
      <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" />
        <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} />
Raul Almeida's avatar
Raul Almeida committed
        <Route path='/colecao-do-usuario/:id' component={CollectionPage} />
        <Route path='/colecao' component={FormationMaterialPage} />
        <Route path='/topico' component={FormationMaterialPage} />
        <Route path='/iframe-colecao' component={FormationMaterialIframe} />
lfr20's avatar
lfr20 committed
        <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>
      {!hideFooter &&
        <div>
          <EcFooter />
          <GNUAGPLfooter />
        </div>
      }