diff --git a/src/App.js b/src/App.js index b5a80b2f2b1902af6232cdb5c49b1ca956a4d0c0..a6c401119665ce42b21db2f9945d19693e14273b 100644 --- a/src/App.js +++ b/src/App.js @@ -16,8 +16,90 @@ 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/>.*/ +// const = React.lazy(() => import()); + import React, { useContext, useEffect, useState } from "react"; import { Store } from './Store' +import LoadingSpinner from './Components/LoadingSpinner'; +import { BrowserRouter, Switch, Route, Redirect } from "react-router-dom"; +import Header from "./Components/Header"; +import createBrowserHistory from 'history/createBrowserHistory' + +const Unauthorized = React.lazy(() => import('./Admin/Components/Components/Unauthorized')); +const Home = React.lazy(() => import('./Pages/HomeFunction')); +const Search = React.lazy(() => import("./Pages/Search")); +const EcFooter = React.lazy(() => import("./Components/EcFooter")); +const GNUAGPLfooter = React.lazy(() => import("./Components/AGPLFooter")); +const UserPage = React.lazy(() => import("./Pages/UserPage")); +const UserTerms = React.lazy(() => import("./Pages/UserTerms")); +const Contact = React.lazy(() => import("./Pages/Contact")); +const Teste = React.lazy(() => import("./Pages/Teste")); +const AboutPage = React.lazy(() => import("./Pages/AboutPage")); +const HelpCenter = React.lazy(() => import("./Pages/HelpCenter")); +const TabResoursePub = React.lazy(() => import("./Pages/TabsHelp/TabResoursePub")); +const TabResourseFind = React.lazy(() => import("./Pages/TabsHelp/TabResourseFind")); +const TabNetPart = React.lazy(() => import("./Pages/TabsHelp/TabNetPart")); +const TabManageAc = React.lazy(() => import("./Pages/TabsHelp/TabManageAc")); +const PasswordRecoveryPage = React.lazy(() => import("./Pages/PasswordRecoveryPage.js")); +const PageProfessor = React.lazy(() => import("./Pages/PageProfessor.js")); +const ResourcePage = React.lazy(() => import("./Pages/ResourcePage")); +const TermsPage = React.lazy(() => import("./Pages/TermsPage.js")); +const PublicationPermissionsPage = React.lazy(() => import("./Pages/PublicationPermissionsPage.js")); +const TabPlataformaMEC = React.lazy(() => import("./Pages/TabsHelp/TabPlataformaMEC")); +const ItemStore = React.lazy(() => import("./Pages/ItemStore.js")); +const EditProfilePage = React.lazy(() => import("./Pages/EditProfilePage.js")); +const PublicUserPage = React.lazy(() => import("./Pages/PublicUserPage.js")); +const UploadPage = React.lazy(() => import("./Pages/UploadPage.js")); +const EditLearningObjectPage = React.lazy(() => import("./Pages/EditLearningObjectPage.js")); +const SiteMap = React.lazy(() => import("./Pages/SiteMap")); +const Accessibility = React.lazy(() => import("./Pages/Accessibility")); +const CollectionPage = React.lazy(() => import("./Pages/CollectionPage.js")); +const FormationMaterialPage = React.lazy(() => import("./Pages/FormationMaterialPage.js")); +const FormationMaterialIframe = React.lazy(() => import("./Pages/FormationMaterialIframe.js")); +const MaterialPage = React.lazy(() => import("./Pages/MaterialPage")); +const PageNotFound = React.lazy(() => import("./Pages/PageNotFound.js")); +const NoteVariables = React.lazy(() => import("./Admin/Pages/Pages/SubPages/NoteVariables")); +const Institution = React.lazy(() => import("./Admin/Pages/Pages/SubPages/Institutions")); +const SendEmail = React.lazy(() => import("./Admin/Pages/Pages/SubPages/SendEmail")); +const Inframe = React.lazy(() => import("./Admin/Pages/Pages/SubPages/Inframe")); +const Languages = React.lazy(() => import("./Admin/Pages/Pages/SubPages/Languages")); +const Activity = React.lazy(() => import("./Admin/Pages/Pages/SubPages/Activity")); +const InstitutionCard = React.lazy(() => import("./Admin/Components/Components/DataCards/InstitutionsCard")); +const InstitutionsInput = React.lazy(() => import("./Admin/Components/Components/Inputs/IntitutionsInputs")); +const CreateInstitution = React.lazy(() => import("./Admin/Components/Components/Inputs/CreateInstitution")); +const NoteVarCard = React.lazy(() => import("./Admin/Components/Components/DataCards/NoteVarCard")); +const NoteVarInputs = React.lazy(() => import("./Admin/Components/Components/Inputs/NoteVarInputs")); +const EditLanguage = React.lazy(() => import("./Admin/Components/Components/Inputs/EditLanguage")); +const CreateLanguage = React.lazy(() => import("./Admin/Components/Components/Inputs/CreateLanguage")); +const ActivityCard = React.lazy(() => import("./Admin/Components/Components/DataCards/ActivityCard")); +const CommunityQuestions = React.lazy(() => import("./Admin/Pages/Pages/SubPages/CommunityQuestions")); +const CommunityCard = React.lazy(() => import("./Admin/Components/Components/DataCards/CommunityQuestionCard")); +const Collections = React.lazy(() => import("./Admin/Pages/Pages/SubPages/Collections")); +const CollectionCard = React.lazy(() => import("./Admin/Components/Components/DataCards/CollectionCard")); +const EditCollection = React.lazy(() => import("./Admin/Components/Components/Inputs/EditCollection")); +const Ratings = React.lazy(() => import("./Admin/Pages/Pages/SubPages/Rating")); +const RatingCard = React.lazy(() => import("./Admin/Components/Components/DataCards/RatingCard")); +const EditRating = React.lazy(() => import("./Admin/Components/Components/Inputs/EditRating")); +const CreateRating = React.lazy(() => import("./Admin/Components/Components/Inputs/CreateRating")); +const Questions = React.lazy(() => import("./Admin/Pages/Pages/SubPages/Questions")); +const CreateQuestions = React.lazy(() => import("./Admin/Components/Components/Inputs/CreateQuestion")); +const EducationalObject = React.lazy(() => import("./Admin/Pages/Pages/SubPages/EducationalObjects")); +const EducationalObjectCard = React.lazy(() => import("./Admin/Components/Components/DataCards/EducationalObjectsCard")); +const EducationalObjectEdit = React.lazy(() => import("./Admin/Components/Components/Inputs/EditEducationalObect")); +const Complaints = React.lazy(() => import("./Admin/Pages/Pages/SubPages/Complaints")); +const ComplaintCard = React.lazy(() => import("./Admin/Components/Components/DataCards/ComplaintsCard")); +const AproveTeacher = React.lazy(() => import("./Admin/Pages/Pages/SubPages/AproveTeacher")); +const UserCard = React.lazy(() => import("./Admin/Components/Components/DataCards/UserCard")); +const EditUser = React.lazy(() => import("./Admin/Components/Components/Inputs/EditUser")); +const UserList = React.lazy(() => import("./Admin/Pages/Pages/SubPages/Users")); +const UserPermissions = React.lazy(() => import("./Admin/Pages/Pages/SubPages/Permissions")); +const EditRole = React.lazy(() => import("./Admin/Components/Components/Inputs/EditRoles")); +const CreateRole = React.lazy(() => import("./Admin/Components/Components/Inputs/CreateRole")); +const BlockedUser = React.lazy(() => import("./Admin/Pages/Pages/SubPages/BlockedUsers")); +const AppBarAdmin = React.lazy(() => import('./Admin/Components/Components/AppBar')); + + +/* import Unauthorized from './Admin/Components/Components/Unauthorized' import Home from "./Pages/HomeFunction"; import Search from "./Pages/Search"; @@ -94,374 +176,387 @@ 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() + // 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; + 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; - } + 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; - } + return canUserEdit; + } - useEffect(() => { - setHideFooter(String(window.location.href).includes("iframe-colecao")); - }, [window.location.href]); + 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(() => { + 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, - }, - }); - }; + useEffect(() => { + const setWindowSize = () => { + dispatch({ + type: "WINDOW_SIZE", + innerWindow: { + width: window.innerWidth, + height: window.innerHeight, + }, + }); + }; - window.addEventListener("resize", setWindowSize); + window.addEventListener("resize", setWindowSize); - return () => window.removeEventListener("resize", setWindowSize); - }, [window.innerWidth, window.innerHeight]); + 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} + const AdminTemplate = (props) => { + if (CheckUserPermission()) + return ( + <div style={{ backgroundColor: " #D3D3D3" }}> + <AppBarAdmin /> + <div style={{ padding: "2em" }}> + {props.inner} + </div> </div> - </div> - ) - else - return ( - <div style={{ backgroundColor: " #D3D3D3" }}> - <div style={{ padding: "2em" }}> - <Unauthorized /> + ) + else + return ( + <div style={{ backgroundColor: " #D3D3D3" }}> + <div style={{ padding: "2em" }}> + <Unauthorized /> + </div> </div> - </div> - ) - } + ) + } + + const LoadingScreen = () => ( + <div style={{ + position: "absolute", + top: "50%", + left: "50%", + transform: "translate(-50%, -50%)" + }}> + <LoadingSpinner/> + </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> + <React.Suspense fallback={<LoadingScreen/>}> + <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> + </React.Suspense> ); } \ No newline at end of file