Skip to content
Snippets Groups Projects
App.js 16.4 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/>.*/

lfr20's avatar
lfr20 committed
import React, { useContext, useEffect, useState } from "react";
lfr20's avatar
lfr20 committed
import { Store } from './Store'
import Unauthorized from './Admin/Components/Components/Unauthorized'
lfr20's avatar
lfr20 committed
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";
lfr20's avatar
lfr20 committed
import { BrowserRouter, Switch, Route, Redirect } from "react-router-dom";
lfr20's avatar
lfr20 committed
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";
vgm18's avatar
vgm18 committed
import PageNotFound from "./Pages/PageNotFound.js";
lfr20's avatar
lfr20 committed

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";
lfr20's avatar
lfr20 committed
import AppBarAdmin from './Admin/Components/Components/AppBar'
lfr20's avatar
lfr20 committed
import createBrowserHistory from 'history/createBrowserHistory'

export default function App() {
lfr20's avatar
lfr20 committed
  const { state, dispatch } = useContext(Store);
lfr20's avatar
lfr20 committed
  const [hideFooter, setHideFooter] = useState(false);
lfr20's avatar
lfr20 committed
  const PiwikReactRouter = require('piwik-react-router');
  const piwik = PiwikReactRouter({
    url: '//piwik.c3sl.ufpr.br/',
    siteId: 5
  });
  const customHistory = createBrowserHistory()

lfr20's avatar
lfr20 committed
  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(() => {
lfr20's avatar
lfr20 committed
    setHideFooter(String(window.location.href).includes("iframe-colecao"));
  }, [window.location.href]);

  useEffect(() => {
    dispatch({
lfr20's avatar
lfr20 committed
      type: "WINDOW_SIZE",
      innerWindow: {
        width: window.innerWidth,
lfr20's avatar
lfr20 committed
        height: window.innerHeight,
      },
    });
  }, []);

  useEffect(() => {
lfr20's avatar
lfr20 committed
        type: "WINDOW_SIZE",
lfr20's avatar
lfr20 committed
          height: window.innerHeight,
        },
      });
    };
lfr20's avatar
lfr20 committed
    window.addEventListener("resize", setWindowSize);
lfr20's avatar
lfr20 committed
    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 (
lfr20's avatar
lfr20 committed
    // add piwik later
    // history={piwik.connectToHistory(customHistory)}
    <BrowserRouter>
lfr20's avatar
lfr20 committed
      <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"
      />
lfr20's avatar
lfr20 committed
        <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} />
lfr20's avatar
lfr20 committed
        <Route
          path="/editar-recurso/:recursoId"
          component={EditLearningObjectPage}
        />
        <Route path="/professor" component={PageProfessor} />
        <Route path="/upload" component={UploadPage} />
lfr20's avatar
lfr20 committed
        <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 />}/>
          }} 
        />

vgm18's avatar
vgm18 committed
        <Route path='*' component={PageNotFound} />
lfr20's avatar
lfr20 committed
      {!hideFooter && (
        <div>
          <EcFooter />
          <GNUAGPLfooter />
        </div>