diff --git a/src/Components/CollectionDowloadButton.js b/src/Components/CollectionDowloadButton.js index f36eed118e3771b92e2117883d5dd8977cefd91f..d7820da26c20262c585c60eff2723a2d5bc78b52 100644 --- a/src/Components/CollectionDowloadButton.js +++ b/src/Components/CollectionDowloadButton.js @@ -4,6 +4,7 @@ import GetAppIcon from '@material-ui/icons/GetApp'; import Button from '@material-ui/core/Button'; import styled from 'styled-components'; import { apiUrl, apiDomain } from '../env'; +import { getRequest } from './HelperFunctions/getAxiosConfig' const DowloadButton = (props) => { @@ -23,6 +24,19 @@ const DowloadButton = (props) => { } }); }, [props.id]); + + const handleDowloadCollection = () => { + // there is no error controller here because the router + ///:type/:id/download is always returning error + getRequest( + `/collections/${props.id}/download`, + (data, header) => { + }, + (error) => { + } + ) + } + return ( <> <DownloadAnchor href={download_url} > @@ -32,9 +46,9 @@ const DowloadButton = (props) => { startIcon={<GetAppIcon fontSize="large" />} size="small" > - <ButtonText>Baixar Coleção</ButtonText> + <ButtonText onClick={handleDowloadCollection}>Baixar Coleção</ButtonText> </DownloadButton> - </DownloadAnchor> + </DownloadAnchor> </> ) } diff --git a/src/Components/ResourcePageComponents/Footer.js b/src/Components/ResourcePageComponents/Footer.js index b0a5769cb6a0c268ee52b05f8135600a7a8c0474..98e7fcd119baab3a54029a86ada0860dc0526dd8 100644 --- a/src/Components/ResourcePageComponents/Footer.js +++ b/src/Components/ResourcePageComponents/Footer.js @@ -16,8 +16,8 @@ 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, {useState, useContext} from 'react' -import {Store} from '../../Store.js' +import React, { useState, useContext } from 'react' +import { Store } from '../../Store.js' import styled from 'styled-components' import Grid from '@material-ui/core/Grid'; import { Button } from '@material-ui/core'; @@ -37,18 +37,19 @@ import LoginModal from './../LoginModal.js' import Snackbar from '@material-ui/core/Snackbar'; import SignUpModal from './../SignUpModal' import MuiAlert from '@material-ui/lab/Alert'; +import { getRequest } from '../HelperFunctions/getAxiosConfig' function Alert(props) { return <MuiAlert elevation={6} variant="filled" {...props} />; } -function ReportButton (props) { +function ReportButton(props) { return ( - !props.complained ? + !props.complained ? ( <ButtonGrey onClick={props.userLoggedIn ? props.toggleReport : props.openLogin}> <span className="button-text"> - <ErrorIcon className="icon"/> Reportar abuso ou erro + <ErrorIcon className="icon" /> Reportar abuso ou erro </span> </ButtonGrey> ) @@ -56,46 +57,41 @@ function ReportButton (props) { ( <ButtonGrey> <span className="button-text-report"> - <ErrorIcon className="icon"/> Você já reportou este recurso + <ErrorIcon className="icon" /> Você já reportou este recurso </span> </ButtonGrey> ) ) } -function DownloadButton (props) { +function DownloadButton(props) { return ( - props.downloadableLink ? + props.downloadableLink ? ( - <ButtonOrange onClick={props.enableDownload}> - <span className="text"> - <GetAppIcon className="icon"/> Baixar Recurso + <ButtonOrange onClick={props.enableDownload}> + <span className="text"> + <GetAppIcon className="icon" /> Baixar Recurso </span> - </ButtonOrange> + </ButtonOrange> ) : - props.link ? + props.link ? ( - <ButtonOrange onClick={props.toggleRedirect}> - <span className="text"> - <CallMadeIcon className="icon"/> Abrir Recurso + <ButtonOrange onClick={props.toggleRedirect}> + <span className="text"> + <CallMadeIcon className="icon" /> Abrir Recurso </span> - </ButtonOrange> + </ButtonOrange> ) : ( - <React.Fragment/> + <React.Fragment /> ) ) } -export default function Footer (props) { - const {state} = useContext(Store) - const enableDownload = () => { - const url = props.downloadableLink - window.open(url, '_blank'); - props.handleSnackbar(0) - } +export default function Footer(props) { + const { state } = useContext(Store) let windowWidth = window.innerWidth const [reportOpen, toggleReport] = useState(false) const [shareOpen, toggleShare] = useState(false) @@ -104,9 +100,24 @@ export default function Footer (props) { const [loginOpen, setLogin] = useState(false) const [successfulLoginOpen, handleSuccessfulLogin] = useState(false) const [signUpOpen, setSignUp] = useState(false) - const [anchorEl, setAnchorEl] = React.useState(null); + const enableDownload = () => { + props.handleSnackbar(0) + const url = props.downloadableLink + window.open(url, '_blank'); + + // there is no error controller here because the router + ///:type/:id/download is always returning error + getRequest( + `/learning_objects/${props.recursoId}/download`, + (data, header) => { + }, + (error) => { + } + ) + } + const handleSignUp = () => { setSignUp(!signUpOpen) } @@ -119,16 +130,16 @@ export default function Footer (props) { if (reason === 'clickaway') { return; } - - handleSuccessfulLogin(false); + + handleSuccessfulLogin(false); } function handleClick(event) { - setAnchorEl(event.currentTarget); + setAnchorEl(event.currentTarget); } function handleClose() { - setAnchorEl(null); + setAnchorEl(null); } return ( @@ -139,25 +150,25 @@ export default function Footer (props) { <Alert severity="success" style={{ backgroundColor: "#00acc1" }}>Você está conectado(a)!</Alert> </Snackbar> {/*-------------------------------MODALS---------------------------------------*/} - <ReportModal open={reportOpen} handleClose={() => {toggleReport(false)}} + <ReportModal open={reportOpen} handleClose={() => { toggleReport(false) }} form="recurso" complainableId={props.recursoId} complainableType={"LearningObject"} - /> - <ShareModal open={shareOpen} handleClose={() => {toggleShare(false)}} + /> + <ShareModal open={shareOpen} handleClose={() => { toggleShare(false) }} thumb={props.thumb} title={props.title} link={props.currPageLink} - /> + /> - <GuardarModal open={saveToCol} handleClose={() => {toggleSave(false)}} + <GuardarModal open={saveToCol} handleClose={() => { toggleSave(false) }} thumb={props.thumb} title={props.title} recursoId={props.recursoId} - /> - <RedirectModal open={redirectOpen} handleClose={() => {toggleRedirect(false)}} + /> + <RedirectModal open={redirectOpen} handleClose={() => { toggleRedirect(false) }} link={props.link} - /> + /> <LoginModal open={loginOpen} handleClose={() => setLogin(false)} openSignUp={handleSignUp} openSnackbar={() => { handleSuccessfulLogin(true) }} /> - <SignUpModal open={signUpOpen} handleClose={handleSignUp} openLogin={handleLogin} /> + <SignUpModal open={signUpOpen} handleClose={handleSignUp} openLogin={handleLogin} /> {/*----------------------------------------------------------------------------*/} {/*-----------------------------BUTTONS----------------------------------------*/} @@ -165,97 +176,97 @@ export default function Footer (props) { <StyledGrid container> { windowWidth > 990 ? - ( - <React.Fragment> - {/*Botao Reportar*/} - <Grid item xs={3}> - <ReportButton - userLoggedIn={state.currentUser.id === '' ? false : true} - toggleReport={() => {toggleReport(true)}} - openLogin={handleLogin} - complained={props.complained} - /> - </Grid> - - {/*Botao Compartilhar*/} - <Grid item xs={3}> - <ButtonGrey onClick={state.currentUser.id === '' ? () => handleLogin(true) : () => toggleShare(true)}> - <span className="button-text"> - <ShareIcon className="icon"/> Compartilhar - </span> - </ButtonGrey> - </Grid> - - {/*Botao Guardar*/} - <Grid item xs={3}> - <ButtonGrey onClick={state.currentUser.id === '' ? () => handleLogin(true) : () => toggleSave(true)}> - <span className="button-text"> - <FolderIcon className="icon"/>Guardar - </span> - </ButtonGrey> - </Grid> - - <Grid item xs={3} style={{justifyContent : "right !important"}}> - <DownloadButton - downloadableLink={props.downloadableLink} - link={props.link} - enableDownload={enableDownload} - toggleRedirect={() => {toggleRedirect(true)}} - /> - </Grid> - </React.Fragment> - ) - : - ( - <React.Fragment> - {/*Botao Guardar*/} - <Grid item xs={4}> - <ButtonGrey onClick={state.currentUser.id === '' ? () => handleLogin(true) : () => toggleSave(true)}> - <span className="button-text"> - <FolderIcon className="icon"/>Guardar - </span> - </ButtonGrey> - </Grid> - - <Grid item xs={7}> - <DownloadButton - downloadableLink={props.downloadableLink} - link={props.link} - enableDownload={enableDownload} - toggleRedirect={() => {toggleRedirect(true)}} - /> - </Grid> - - <Grid item xs={1}> - <Button aria-haspopup="true" onClick={handleClick} style={{color : "#666"}}> - <MoreVertIcon/> - </Button> - <Menu - id="simple-menu" - anchorEl={anchorEl} - keepMounted - open={Boolean(anchorEl)} - onClose={handleClose} - > - <MenuItem> + ( + <React.Fragment> + {/*Botao Reportar*/} + <Grid item xs={3}> <ReportButton userLoggedIn={state.currentUser.id === '' ? false : true} - toggleReport={() => {toggleReport(true)}} + toggleReport={() => { toggleReport(true) }} openLogin={handleLogin} complained={props.complained} - /> - </MenuItem> - <MenuItem> + /> + </Grid> + + {/*Botao Compartilhar*/} + <Grid item xs={3}> <ButtonGrey onClick={state.currentUser.id === '' ? () => handleLogin(true) : () => toggleShare(true)}> <span className="button-text"> - <ShareIcon className="icon"/> Compartilhar - </span> + <ShareIcon className="icon" /> Compartilhar + </span> </ButtonGrey> - </MenuItem> - </Menu> - </Grid> - </React.Fragment> - ) + </Grid> + + {/*Botao Guardar*/} + <Grid item xs={3}> + <ButtonGrey onClick={state.currentUser.id === '' ? () => handleLogin(true) : () => toggleSave(true)}> + <span className="button-text"> + <FolderIcon className="icon" />Guardar + </span> + </ButtonGrey> + </Grid> + + <Grid item xs={3} style={{ justifyContent: "right !important" }}> + <DownloadButton + downloadableLink={props.downloadableLink} + link={props.link} + enableDownload={enableDownload} + toggleRedirect={() => { toggleRedirect(true) }} + /> + </Grid> + </React.Fragment> + ) + : + ( + <React.Fragment> + {/*Botao Guardar*/} + <Grid item xs={4}> + <ButtonGrey onClick={state.currentUser.id === '' ? () => handleLogin(true) : () => toggleSave(true)}> + <span className="button-text"> + <FolderIcon className="icon" />Guardar + </span> + </ButtonGrey> + </Grid> + + <Grid item xs={7}> + <DownloadButton + downloadableLink={props.downloadableLink} + link={props.link} + enableDownload={enableDownload} + toggleRedirect={() => { toggleRedirect(true) }} + /> + </Grid> + + <Grid item xs={1}> + <Button aria-haspopup="true" onClick={handleClick} style={{ color: "#666" }}> + <MoreVertIcon /> + </Button> + <Menu + id="simple-menu" + anchorEl={anchorEl} + keepMounted + open={Boolean(anchorEl)} + onClose={handleClose} + > + <MenuItem> + <ReportButton + userLoggedIn={state.currentUser.id === '' ? false : true} + toggleReport={() => { toggleReport(true) }} + openLogin={handleLogin} + complained={props.complained} + /> + </MenuItem> + <MenuItem> + <ButtonGrey onClick={state.currentUser.id === '' ? () => handleLogin(true) : () => toggleShare(true)}> + <span className="button-text"> + <ShareIcon className="icon" /> Compartilhar + </span> + </ButtonGrey> + </MenuItem> + </Menu> + </Grid> + </React.Fragment> + ) } diff --git a/src/Pages/ResourcePage.js b/src/Pages/ResourcePage.js index 834a2c13e37779d62476666f5f5f64a8c5138b21..ff63e4f479a36799c3d8240d5a3afa3e5905eb2c 100644 --- a/src/Pages/ResourcePage.js +++ b/src/Pages/ResourcePage.js @@ -79,7 +79,8 @@ export default function LearningObjectPage(props) { "O Recurso foi guardado na coleção!", "O recurso foi aprovado com sucesso!", "Erro ao aprovar o recurso!", - "Erro ao carregar a página" + "Erro ao carregar a página", + "Erro ao fazer o dowload do recurso", ]; const [snackbarIndex, setIndex] = useState(0); const classes = useStyles(); diff --git a/src/env.js b/src/env.js index 82bf229b11fe78f3cb5ff8a58d096eec156cedf2..b7359157e1c0e9d260976bbe2b2545a2e0ca51b0 100644 --- a/src/env.js +++ b/src/env.js @@ -17,7 +17,7 @@ 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/>.*/ -var apiDomain = 'https://api.portalmectest.c3sl.ufpr.br', +var apiDomain = 'https://api.portalmec.c3sl.ufpr.br', apiVersion = 'v1', apiUrl = apiDomain + '/' + apiVersion;