/*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 { Store } from './Store' import Unauthorized from './Admin/Components/Components/Unauthorized' 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, Redirect } 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"; import CollectionPage from "./Pages/CollectionPage.js"; import FormationMaterialPage from "./Pages/FormationMaterialPage.js"; import FormationMaterialIframe from "./Pages/FormationMaterialIframe.js"; import MaterialPage from "./Pages/MaterialPage"; import PageNotFound from "./Pages/PageNotFound.js"; 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"; import AppBarAdmin from './Admin/Components/Components/AppBar' import createBrowserHistory from 'history/createBrowserHistory' export default function App() { // eslint-disable-next-line const { state, dispatch } = useContext(Store); const [hideFooter, setHideFooter] = useState(false); const PiwikReactRouter = require('piwik-react-router'); const piwik = PiwikReactRouter({ url: '//piwik.c3sl.ufpr.br/', siteId: 5 }); const customHistory = createBrowserHistory() const CheckUserPermission = () => { let canUserEdit = false; if (state.userIsLoggedIn) { const roles = [...state.currentUser.roles]; for (let i = 0; i < roles.length; i++) if (roles[i].name === 'admin' || roles[i].name === 'editor') canUserEdit = true; } else { canUserEdit = false; } return canUserEdit; } 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]); const AdminTemplate = (props) => { if (CheckUserPermission()) return ( <div style={{ backgroundColor: " #D3D3D3" }}> <AppBarAdmin /> <div style={{ padding: "2em" }}> {props.inner} </div> </div> ) else return ( <div style={{ backgroundColor: " #D3D3D3" }}> <div style={{ padding: "2em" }}> <Unauthorized /> </div> </div> ) } return ( // add piwik later // history={piwik.connectToHistory(customHistory)} <BrowserRouter> <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> <Redirect from="/home" to="/" /> <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} /> <Route path="/admin/home" exact={true} render={() => { return <AdminTemplate inner={<Inframe/>}/> }} /> <Route path="/admin/institutions" render={() => { return <AdminTemplate inner={<Institution />}/> }} /> <Route path="/admin/institution" render={() => { return <AdminTemplate inner={<InstitutionCard />}/> }} /> <Route path="/admin/institutionEdit" render={() => { return <AdminTemplate inner={<InstitutionsInput />}/> }} /> <Route path="/admin/InstitutionCreate" render={() => { return <AdminTemplate inner={<CreateInstitution />}/> }} /> <Route path="/admin/noteVars" render={() => { return <AdminTemplate inner={<NoteVariables />}/> }} /> <Route path="/admin/noteVar" render={() => { return <AdminTemplate inner={<NoteVarCard />}/> }} /> <Route path="/admin/noteVarEdit" render={() => { return <AdminTemplate inner={<NoteVarInputs />}/> }} /> <Route path="/admin/languages" render={() => { return <AdminTemplate inner={<Languages />}/> }} /> <Route path="/admin/languageEdit" render={() => { return <AdminTemplate inner={<EditLanguage />}/> }} /> <Route path="/admin/languageCreate" render={() => { return <AdminTemplate inner={<CreateLanguage />}/> }} /> <Route path="/admin/CommunityQuestions" render={() => { return <AdminTemplate inner={<CommunityQuestions />}/> }} /> <Route path="/admin/CommunityQuestion" render={() => { return <AdminTemplate inner={<CommunityCard />}/> }} /> <Route path="/admin/Collections" render={() => { return <AdminTemplate inner={<Collections />}/> }} /> <Route path="/admin/Collection" render={() => { return <AdminTemplate inner={<CollectionCard />}/> }} /> <Route path="/admin/EditCollection" render={() => { return <AdminTemplate inner={<EditCollection />}/> }} /> <Route path="/admin/Ratings" render={() => { return <AdminTemplate inner={<Ratings />}/> }} /> <Route path="/admin/Rating" render={() => { return <AdminTemplate inner={<RatingCard />}/> }} /> <Route path="/admin/EditRating" render={() => { return <AdminTemplate inner={<EditRating />}/> }} /> <Route path="/admin/CreateRating" render={() => { return <AdminTemplate inner={<CreateRating />}/> }} /> <Route path="/admin/Questions" render={() => { return <AdminTemplate inner={<Questions />}/> }} /> <Route path="/admin/CreateQuestion" render={() => { return <AdminTemplate inner={<CreateQuestions />}/> }} /> <Route path="/admin/activities" render={() => { return <AdminTemplate inner={<Activity />}/> }} /> <Route path="/admin/activity" render={() => { return <AdminTemplate inner={<ActivityCard />}/> }} /> <Route path="/admin/learningObjects" render={() => { return <AdminTemplate inner={<EducationalObject />}/> }} /> <Route path="/admin/learningObject" render={() => { return <AdminTemplate inner={<EducationalObjectCard />}/> }} /> <Route path="/admin/learningObjectEdit" render={() => { return <AdminTemplate inner={<EducationalObjectEdit />}/> }} /> <Route path="/admin/complaints" render={() => { return <AdminTemplate inner={<Complaints />}/> }} /> <Route path="/admin/complaint" render={() => { return <AdminTemplate inner={<ComplaintCard />}/> }} /> <Route path="/admin/users/teacher_requests" render={() => { return <AdminTemplate inner={<AproveTeacher />}/> }} /> <Route path="/admin/usersList" render={() => { return <AdminTemplate inner={<UserList />}/> }} /> <Route path="/admin/user" render={() => { return <AdminTemplate inner={<UserCard />}/> }} /> <Route path="/admin/EditUser" render={() => { return <AdminTemplate inner={<EditUser />}/> }} /> <Route path="/admin/permissions" render={() => { return <AdminTemplate inner={<UserPermissions />}/> }} /> <Route path="/admin/EditPermissions" render={() => { return <AdminTemplate inner={<EditRole />}/> }} /> <Route path="/admin/CreateRole" render={() => { return <AdminTemplate inner={<CreateRole />}/> }} /> <Route path="/admin/BlockedUsers" render={() => { return <AdminTemplate inner={<BlockedUser />}/> }} /> <Route path="/admin/sendEmail" render={() => { return <AdminTemplate inner={<SendEmail />}/> }} /> <Route path='*' component={PageNotFound} /> </Switch> {!hideFooter && ( <div> <EcFooter /> <GNUAGPLfooter /> </div> )} </BrowserRouter> ); }