From b8a133875bbe903286e4dcb501fc64c1debb3808 Mon Sep 17 00:00:00 2001
From: Luis Felipe Risch <lfr20@inf.ufpr.br>
Date: Thu, 15 Apr 2021 12:47:28 -0300
Subject: [PATCH] Fix reported bugs

---
 src/Components/ActivityListItem.js            |  95 +++---
 src/Components/ButtonGuardarColecao.js        |   2 +-
 src/Components/Dropdown.js                    |   8 +-
 src/Components/GuardarModal.js                | 251 ++++++++------
 src/Components/MenuBar.js                     |   2 +-
 .../ModalLearningObjectPublished.js           |   4 +-
 src/Components/Notifications.js               |   4 +-
 src/Components/ResourceCardFunction.js        |   2 +-
 .../UserPageTabs/PanelEditarPerfil.js         | 192 ++++++-----
 .../UserPageTabs/PanelGerenciarConta.js       |   4 +-
 .../PanelSolicitarContaProfessor.js           |   2 +-
 .../UploadPageComponents/ButtonsDiv.js        |  80 ++---
 .../UploadPageComponents/PartThree.js         | 312 +++++++++---------
 .../UploadPageComponents/PartTwo.js           |   6 +-
 .../UploadPageComponents/StyledComponents.js  |   4 +-
 src/Pages/EditLearningObjectPage.js           |   1 +
 src/Pages/EditProfilePage.js                  | 140 +++++---
 17 files changed, 608 insertions(+), 501 deletions(-)

diff --git a/src/Components/ActivityListItem.js b/src/Components/ActivityListItem.js
index e6d9d2b7..0d249401 100644
--- a/src/Components/ActivityListItem.js
+++ b/src/Components/ActivityListItem.js
@@ -16,14 +16,14 @@ 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, {useEffect} from 'react'
+import React, { useEffect } from 'react'
 import styled from 'styled-components'
 import ListItem from '@material-ui/core/ListItem';
 import ListItemAvatar from '@material-ui/core/ListItemAvatar';
 import ListItemText from '@material-ui/core/ListItemText';
 import Avatar from '@material-ui/core/Avatar';
 import noAvatar from "../img/default_profile.png";
-import {GetActivityProperties, Tag, ObjectColor} from './Activities/Definitions.js'
+import { GetActivityProperties, Tag, ObjectColor } from './Activities/Definitions.js'
 //icons
 import FavoriteIcon from '@material-ui/icons/Favorite';
 import CreateIcon from '@material-ui/icons/Create';
@@ -34,32 +34,32 @@ import ReportIcon from '@material-ui/icons/Report';
 import CloudUploadIcon from '@material-ui/icons/CloudUpload';
 import ThumbDownIcon from '@material-ui/icons/ThumbDown';
 import DeleteIcon from '@material-ui/icons/Delete';
-import {Link} from 'react-router-dom'
+import { Link } from 'react-router-dom'
 
 const GetObjectColor = (tag) => {
     return ObjectColor[tag]
 }
 
 const getNotificationIcon = (iconType) => {
-    switch(iconType) {
+    switch (iconType) {
         case 'create':
-            return <CreateIcon className="icon"/>;
+            return <CreateIcon className="icon" />;
         case 'favorite':
-            return <FavoriteIcon className="icon"/>;
+            return <FavoriteIcon className="icon" />;
         case 'get_app':
-            return <GetAppIcon className="icon"/>;
+            return <GetAppIcon className="icon" />;
         case 'star':
-            return <StarIcon className="icon"/>;
+            return <StarIcon className="icon" />;
         case 'report':
-            return <ReportIcon className="icon"/>;
+            return <ReportIcon className="icon" />;
         case 'cloud_upload':
-            return <CloudUploadIcon className="icon"/>;
+            return <CloudUploadIcon className="icon" />;
         case 'delete':
-            return <DeleteIcon className="icon"/>;
+            return <DeleteIcon className="icon" />;
         case 'thumb_down':
-            return <ThumbDownIcon className="icon"/>;
-        default :
-            return <SpeakerNotesIcon className="icon"/>;
+            return <ThumbDownIcon className="icon" />;
+        default:
+            return <SpeakerNotesIcon className="icon" />;
     }
 }
 
@@ -73,45 +73,46 @@ const getTimeDifference = (timestamp) => {
     let duration = moment.duration(now.diff(then))
     // {/*console.log('duration: ', duration)*/}
     let timeDiff;
-    if (duration._data.years > 0)  {
+    if (duration._data.years > 0) {
         timeDiff = duration._data.years + (duration._data.years > 1 ? ' anos' : ' ano')
     }
     else if (duration._data.months > 0) {
-        timeDiff = duration._data.months + (duration._data.months > 1? ' meses' : ' mês')
+        timeDiff = duration._data.months + (duration._data.months > 1 ? ' meses' : ' mês')
     }
-    else if(duration._data.days > 0) {
+    else if (duration._data.days > 0) {
         timeDiff = duration._data.days + (duration._data.days > 1 ? ' dias' : ' dia')
     }
-    else if(duration._data.hours > 0) {
+    else if (duration._data.hours > 0) {
         timeDiff = duration._data.hours + (duration._data.hours > 1 ? ' horas' : ' hora')
     }
-    else if(duration._data.minutes > 0) {
+    else if (duration._data.minutes > 0) {
         timeDiff = duration._data.minutes + (duration._data.minutes > 1 ? ' minutos' : ' minuto')
     }
 
     return timeDiff;
 }
 
-export default function ActivityListItem (props) {
+export default function ActivityListItem(props) {
     const [activity, setActivity] = React.useState({
-        tag : '',
-        icon : '',
-        text : '',
-        text2 : '',
+        tag: '',
+        icon: '',
+        text: '',
+        text2: '',
     })
 
-    useEffect( () => {
+    useEffect(() => {
         const newTag = Tag[(props.actionType === 'CuratorAssignment' ? props.actionType : props.objectType)]
-        const {icon, text, text2 } = GetActivityProperties(props.activity)
+        const { icon, text, text2 } = GetActivityProperties(props.activity)
         // {/*console.log('icon, text, text2: ', icon, text, text2)*/}
 
-        setActivity({...activity,
-            tag : newTag,
-            icon : icon,
-            text : text,
-            text2 : text2
+        setActivity({
+            ...activity,
+            tag: newTag,
+            icon: icon,
+            text: text,
+            text2: text2
         })
-    }, [] )
+    }, [])
 
     return (
         <StyledListItem onMenuBar={props.onMenuBar}>
@@ -119,30 +120,34 @@ export default function ActivityListItem (props) {
                 !props.onMenuBar &&
                 <>
 
-                <ListItemAvatar>
-                    <Avatar alt='user avatar' src={props.avatar ? props.avatar : noAvatar}/>
-                </ListItemAvatar>
-                {getNotificationIcon(activity.icon)}
+                    <ListItemAvatar>
+                        <Avatar alt='user avatar' src={props.avatar ? props.avatar : noAvatar} />
+                    </ListItemAvatar>
+                    {getNotificationIcon(activity.icon)}
 
                 </>
             }
             <ListItemText
-                primary = {
-        			<div>
-        				<span className = {`tag-object ${GetObjectColor(activity.tag)}`}>
+                primary={
+                    <div>
+                        <span className={`tag-object ${GetObjectColor(activity.tag)}`}>
                             {activity.tag}
                         </span>
-        				<span className="time-ago-span">&#32;· há {getTimeDifference(props.createdAt)}</span>
-        			</div>
-        		}
-                secondary = {
+                        <span className="time-ago-span">&#32;· há {getTimeDifference(props.createdAt)}</span>
+                    </div>
+                }
+                secondary={
                     <div>
+                       
                         <span>
-                            <Link to={props.ownerHref} className="owner-name-a" >{props.ownerName}</Link> {activity.text} <Link to={props.recipientHref} className="recipient-name-a">{props.recipientName}</Link> {activity.text2}
+                            <Link to={{
+                                pathname:  props.ownerHref,
+                                state: '0',
+                            }} className="owner-name-a" >{props.ownerName}</Link> {activity.text} <Link to={props.recipientHref} className="recipient-name-a">{props.recipientName}</Link> {activity.text2}
                         </span>
                     </div>
                 }
-                />
+            />
         </StyledListItem>
     )
 
diff --git a/src/Components/ButtonGuardarColecao.js b/src/Components/ButtonGuardarColecao.js
index 4d8865f7..564c0718 100644
--- a/src/Components/ButtonGuardarColecao.js
+++ b/src/Components/ButtonGuardarColecao.js
@@ -58,7 +58,7 @@ export default function ButtonGuardarColecao(props) {
             </Snackbar>
             <GuardarModal open={saveToCol} handleClose={() => { toggleSave(false) }}
                 thumb={props.thumb} title={props.title} recursoId={props.learningObjectId}
-            />
+            /> 
             <StyledButton onClick={handleGuardar}>
                 <CreateNewFolderIcon /> &nbsp; GUARDAR
             </StyledButton>
diff --git a/src/Components/Dropdown.js b/src/Components/Dropdown.js
index a1a45fb6..cc064489 100644
--- a/src/Components/Dropdown.js
+++ b/src/Components/Dropdown.js
@@ -52,6 +52,10 @@ export default function PositionedPopper(props) {
     setPlacement(newPlacement);
   };
 
+  const handleItemClicked = () => {
+    setOpen(false)
+  }
+
   useEffect(() => {
     const handleClickOutside = (event) => {
       innerDropdown.current && !innerDropdown.current.contains(event.target) && setOpen(false)
@@ -72,7 +76,7 @@ export default function PositionedPopper(props) {
               <MenuList>
                 {
                   props.items.map((item) =>
-                    <Link style={{ textDecoration: "none", color: "black" }} key={`${item.name}_${new Date().toString()}`} to={item.href} ><MenuItem>{item.name}</MenuItem></Link>
+                    <Link onClick={handleItemClicked} style={{ textDecoration: "none", color: "black" }} key={`${item.name}_${new Date().toString()}`} to={item.href} ><MenuItem>{item.name}</MenuItem></Link>
                   )
                 }
               </MenuList>
@@ -81,7 +85,7 @@ export default function PositionedPopper(props) {
         )}
       </Popper>
       <Button
-        style={{ textTransform: "none", fontSize: "14px"}}
+        style={{ textTransform: "none", fontSize: "14px" }}
         aria-controls="menu-list-grow"
         aria-haspopup="true"
         onClick={handleClick('bottom')}
diff --git a/src/Components/GuardarModal.js b/src/Components/GuardarModal.js
index 3a231ac2..2526d20c 100644
--- a/src/Components/GuardarModal.js
+++ b/src/Components/GuardarModal.js
@@ -16,167 +16,200 @@ 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, useState} from 'react';
+import React, { useContext, useState } from 'react';
 import { Button } from '@material-ui/core';
 import Modal from '@material-ui/core/Modal';
 import Backdrop from '@material-ui/core/Backdrop';
 import Fade from '@material-ui/core/Fade';
-import styled from 'styled-components'
-import {Store} from '../Store.js'
-import {apiDomain} from '../env';
+import styled from 'styled-components' 
+import { Store } from '../Store.js'
+import { apiDomain } from '../env';
 import CloseIcon from '@material-ui/icons/Close';
 import PublicIcon from '@material-ui/icons/Public';
 import LockIcon from '@material-ui/icons/Lock';
 import LoadingSpinner from './LoadingSpinner.js'
 import CriarColecaoForm from './CriarColecaoForm.js'
 import SnackbarComponent from './SnackbarComponent'
-import {getRequest, postRequest} from './HelperFunctions/getAxiosConfig'
+import { getRequest, postRequest } from './HelperFunctions/getAxiosConfig'
 
-function CloseModalButton (props) {
+function CloseModalButton(props) {
     return (
         <StyledCloseModalButton onClick={props.handleClose}>
-            <CloseIcon/>
+            <CloseIcon />
         </StyledCloseModalButton>
     )
 }
 
-export default function ReportModal (props) {
-    const {state} = useContext(Store)
+export default function ReportModal(props) {
+    const { state } = useContext(Store)
     const [collsArr, setcolls] = useState([])
     const [loading, toggleLoading] = useState(true)
     const [creatingCol, setCreating] = useState(false)
+    const [snackbarOpen, setSnackOpen] = useState({
+        open: false,
+        severity: "",
+        text: "",
+        color: ""
+    })
 
 
-    function handleSuccessGetCols (data) {
+    function handleSuccessGetCols(data) {
         setcolls(data)
         toggleLoading(false)
     }
+
+    function handleError(error) {
+        toggleLoading(false)
+        setSnackOpen({
+            open: true,
+            severity: "error",
+            text: "Error ao guardar o recurso",
+            color: "red",
+        })
+    }
+
     const getCols = () => {
         if (collsArr.length === 0) {
             const id = state.currentUser.id
 
             const url = `/users/${id}/collections/`
 
-            getRequest(url, handleSuccessGetCols, (error) => {console.log('error')})
+            getRequest(url, handleSuccessGetCols, handleError)
         }
     }
 
 
-    function handleSuccessPostToCol (data) {
-        toggleSnackbar(true)
+    function handleSuccessPostToCol(data) {
+        setSnackOpen({
+            open: true,
+            severity: "info",
+            text: "O Recurso foi guardado na coleção!",
+            color: ""
+        })
         setCreating(false)
         props.handleClose()
     }
+
     const postToCol = (colId) => {
         const url = `/collections/${colId}/items`
         const payload = {
-            "collection" : {
-                "items" : [ {"id":props.recursoId, "type":"LearningObject"} ]
+            "collection": {
+                "items": [{ "id": props.recursoId, "type": "LearningObject" }]
             }
         }
-        postRequest( url, payload, handleSuccessPostToCol, (error) => {console.log(error)})
+        postRequest(url, payload, handleSuccessPostToCol, handleError)
 
     }
 
-    const [snackbarOpen, toggleSnackbar] = useState(false)
-
     return (
-    <React.Fragment>
-        <SnackbarComponent snackbarOpen={snackbarOpen} severity={"info"} handleClose={() => {toggleSnackbar(false)}} text={"O Recurso foi guardado na coleção!"}
+        <React.Fragment>
+            <SnackbarComponent
+                snackbarOpen={snackbarOpen.open}
+                severity={snackbarOpen.severity}
+                handleClose={() => {
+                    setSnackOpen({
+                        open: false,
+                        severity: "",
+                        text: "",
+                        color: ""
+                    })
+                }}
+                text={snackbarOpen.text}
+                color={snackbarOpen.color}
             />
-        <StyledModal
-            aria-labelledby="transition-modal-title"
-            aria-describedby="transition-modal-description"
-            open={props.open}
-
-            centered="true"
-            onClose={props.handleClose}
-            closeAfterTransition
-            BackdropComponent={Backdrop}
-            BackdropProps={{
-                timeout: 500,
-            }}
-            onRendered={() => {getCols()}}
-        >
-            <Fade in={props.open}>
-                <Container>
-                    <Header>
-                        <span style={{width:"32px"}}/>
-                        <h2>Guardar recurso</h2>
-                        <CloseModalButton handleClose={props.handleClose}/>
-                    </Header>
-                    <Content style={{paddingTop : "0"}}>
-                        <ResourceInfo>
-                            <img src={apiDomain + props.thumb} alt="thumbnail recurso"/>
-                            <div className="text">
-                                <h3>{props.title}</h3>
-                            </div>
-                        </ResourceInfo>
-                        {
-                            loading ?
-                            (
-                                <LoadingSpinner text="Carregando coleções"/>
-                            )
-                            :
-                            (
-                                <ChooseColContainer>
-                                    {
-                                        creatingCol ?
-                                        (
-                                            <CriarColecaoForm
-                                                handleClose={() => setCreating(false)}
-                                                finalize = {postToCol}
-                                                />
-                                        )
-                                        :
-                                        (
-                                                state.currentUser.collections_count === 0 ?
-                                                (
-                                                    <>
-                                                        <div classname="no-cols">
-                                                            <h2>Você não possui coleções ainda.</h2>
-                                                        </div>
-                                                    </>
-                                                )
-                                                :
-                                                (
-                                                    <>
-                                                        <ChooseCol>
-                                                            <h2>Escolha uma Coleção: </h2>
-                                                            <div className="cols-list">
-                                                            {
-                                                                collsArr.map(collection =>
-                                                                    <div className="row" key={collection.id}>
-                                                                        <div style={{display : "flex", flexDirection : "row", justifyContent : "space-between", alignItems : "center"}}>
+            <StyledModal
+                aria-labelledby="transition-modal-title"
+                aria-describedby="transition-modal-description"
+                open={props.open}
+
+                centered="true"
+                onClose={props.handleClose}
+                closeAfterTransition
+                BackdropComponent={Backdrop}
+                BackdropProps={{
+                    timeout: 500,
+                }}
+                onRendered={() => { getCols() }}
+            >
+                <Fade in={props.open}>
+                    <Container>
+                        <Header>
+                            <span style={{ width: "32px" }} />
+                            <h2>Guardar recurso</h2>
+                            <CloseModalButton handleClose={props.handleClose} />
+                        </Header>
+                        <Content style={{ paddingTop: "0" }}>
+                            <ResourceInfo>
+                                <img src={apiDomain + props.thumb} alt="thumbnail recurso" />
+                                <div className="text">
+                                    <h3>{props.title}</h3>
+                                </div>
+                            </ResourceInfo>
+                            {
+                                loading ?
+                                    (
+                                        <LoadingSpinner text="Carregando coleções" />
+                                    )
+                                    :
+                                    (
+                                        <ChooseColContainer>
+                                            {
+                                                creatingCol ?
+                                                    (
+                                                        <CriarColecaoForm
+                                                            handleClose={() => setCreating(false)}
+                                                            finalize={postToCol}
+                                                        />
+                                                    )
+                                                    :
+                                                    (
+                                                        collsArr.length === 0 ?
+                                                            (
+                                                                <>
+                                                                    <div classname="no-cols">
+                                                                        <h2>Você não possui coleções ainda.</h2>
+                                                                    </div>
+                                                                </>
+                                                            )
+                                                            :
+                                                            (
+                                                                <>
+                                                                    <ChooseCol>
+                                                                        <h2>Escolha uma Coleção: </h2>
+                                                                        <div className="cols-list">
                                                                             {
-                                                                                collection.privacy === "public" ?
-                                                                                <PublicIcon className="icon"/>
-                                                                                : <LockIcon className="icon"/>
+                                                                                collsArr.map(collection =>
+                                                                                    <div className="row" key={collection.id}>
+                                                                                        <div style={{ display: "flex", flexDirection: "row", justifyContent: "space-between", alignItems: "center" }}>
+                                                                                            {
+                                                                                                collection.privacy === "public" ?
+                                                                                                    <PublicIcon className="icon" />
+                                                                                                    : <LockIcon className="icon" />
+                                                                                            }
+                                                                                            <h5>{collection.name}</h5>
+                                                                                        </div>
+                                                                                        <GuardarBotao onClick={() => { postToCol(collection.id) }}>GUARDAR</GuardarBotao>
+                                                                                    </div>
+                                                                                )
                                                                             }
-                                                                            <h5>{collection.name}</h5>
                                                                         </div>
-                                                                        <GuardarBotao onClick={() => {postToCol(collection.id)}}>GUARDAR</GuardarBotao>
+                                                                    </ChooseCol>
+                                                                    <div style={{ display: "flex", justifyContent: "center" }}>
+                                                                        <CriarColButton onClick={() => { setCreating(true) }}>CRIAR COLEÇÃO</CriarColButton>
                                                                     </div>
-                                                                )
-                                                            }
-                                                            </div>
-                                                        </ChooseCol>
-                                                        <div style={{display : "flex", justifyContent : "center"}}>
-                                                            <CriarColButton onClick={() => {setCreating(true)}}>CRIAR COLEÇÃO</CriarColButton>
-                                                        </div>
-                                                    </>
-                                                )
-
-                                        )
-                                    }
-                                </ChooseColContainer>
-                            )
-                        }
-                    </Content>
-                </Container>
-            </Fade>
-        </StyledModal>
-    </React.Fragment>
+                                                                </>
+                                                            )
+
+                                                    )
+                                            }
+                                        </ChooseColContainer>
+                                    )
+                            }
+                        </Content>
+                    </Container>
+                </Fade>
+            </StyledModal>
+        </React.Fragment>
     )
 }
 
diff --git a/src/Components/MenuBar.js b/src/Components/MenuBar.js
index 21cc08c7..13449817 100644
--- a/src/Components/MenuBar.js
+++ b/src/Components/MenuBar.js
@@ -183,7 +183,7 @@ export default function MenuBar(props) {
                 </div>
 
                 <MenuList items={minhaArea} />
-
+ 
               </>
             )
             : (
diff --git a/src/Components/ModalLearningObjectPublished.js b/src/Components/ModalLearningObjectPublished.js
index 2a8fbd78..566460be 100644
--- a/src/Components/ModalLearningObjectPublished.js
+++ b/src/Components/ModalLearningObjectPublished.js
@@ -53,7 +53,7 @@ export default function ModalLearningObjectPublished (props) {
                 <Container>
                     <Header>
                         <span style={{width:"32px"}}/>
-                        <h2>O seu recurso foi publicado!</h2>
+                        <h2>O seu recurso foi para a curadoria!</h2>
                         <CloseModalButton handleClose={props.handleClose}/>
                     </Header>
 
@@ -64,7 +64,7 @@ export default function ModalLearningObjectPublished (props) {
                             </Grid>
                             <Grid item xs={8} style={{paddingRight : "15px", paddingLeft : "15px", paddingTop : "20px"}}>
                                 <div className="main-content-text">
-                                    <p>Seu recurso já está disponível na Plataforma. Você receberá notificações sempre que alguém favoritar, compartilhar e relatar experiência com o Recurso.</p>
+                                    <p>Seu recurso estará disponível na plataforma após a avaliação da curadoria. Você receberá notificações sempre que alguém favoritar, compartilhar e relatar experiência com o Recurso.</p>
                                 </div>
                             </Grid>
                         </Grid>
diff --git a/src/Components/Notifications.js b/src/Components/Notifications.js
index 09b1f99b..e1ff9f17 100644
--- a/src/Components/Notifications.js
+++ b/src/Components/Notifications.js
@@ -109,7 +109,7 @@ export default function Notification (props) {
                 <StyledNotificationsIcon/>
             </StyledBadge>
         </StyledNotificationButton>
-        <StyledMenu
+        <StyledMenu 
             id="simple-menu"
             anchorEl={anchorEl}
             keepMounted
@@ -131,7 +131,7 @@ export default function Notification (props) {
                             objectType = {notification.recipient_type}
                             createdAt = {notification.created_at}
                             ownerName = {notification.owner.name}
-                            ownerHref = {'/usuario-publico/' + notification.owner.id}
+                            ownerHref = {'/perfil'}
                             recipientName =  {notification.recipient.name}
                             recipientHref = {getRecipientHref(notification)}
                         />
diff --git a/src/Components/ResourceCardFunction.js b/src/Components/ResourceCardFunction.js
index cd262e12..d688ca3e 100644
--- a/src/Components/ResourceCardFunction.js
+++ b/src/Components/ResourceCardFunction.js
@@ -152,7 +152,7 @@ export default function ResourceCardFunction(props) {
                 </CardReaDiv>
                 <CardReaFooter>
                     <div style={{ display: "flex", height: "100%" }}>
-                        <ButtonGuardarColecao thumb={props.thumbnail} title={props.title} recursoId={props.id}
+                        <ButtonGuardarColecao thumb={props.thumbnail} title={props.title} learningObjectId={props.id}
                         />
                     </div>
                     <ResourceCardOptions
diff --git a/src/Components/TabPanels/UserPageTabs/PanelEditarPerfil.js b/src/Components/TabPanels/UserPageTabs/PanelEditarPerfil.js
index fd318296..0f2d25af 100644
--- a/src/Components/TabPanels/UserPageTabs/PanelEditarPerfil.js
+++ b/src/Components/TabPanels/UserPageTabs/PanelEditarPerfil.js
@@ -16,34 +16,34 @@ 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, useState} from 'react'
+import React, { useContext, useState } from 'react'
 import styled from 'styled-components'
 import { Store } from '../../../Store.js';
-import {Link} from 'react-router-dom'
+import { Link } from 'react-router-dom'
 import Button from '@material-ui/core/Button';
 import IconButton from '@material-ui/core/IconButton';
 import PhotoCamera from '@material-ui/icons/PhotoCamera';
 import Tooltip from '@material-ui/core/Tooltip';
 import FormInput from "../../FormInput.js"
 import ValidateUserInput from '../../HelperFunctions/FormValidationFunction.js'
-import {apiDomain} from '../../../env.js'
+import { apiDomain } from '../../../env.js'
 import ModalAlterarCover from '../../ModalAlterarCover/ModalAlterarCover.js'
 import ModalAlterarAvatar from '../../ModalAlterarAvatar/ModalAlterarAvatar.js'
 import Profile from '../../../img/default_profile0.png'
 
-export default function TabPanelEditarPerfil (props) {
+export default function TabPanelEditarPerfil(props) {
     // eslint-disable-next-line
-    const {state} = useContext(Store)
+    const { state } = useContext(Store)
     const [hoverAlterarFoto, handleAlterarFoto] = React.useState(false)
 
     const [formNome, setNome] = useState({
-        key : false,
-        value : ""
+        key: false,
+        value: ""
     })
 
     const [formAboutMe, setAboutMe] = useState({
-        key : false,
-        value : "",
+        key: false,
+        value: "",
     })
 
     const handleHoverAlterarFoto = () => {
@@ -53,7 +53,7 @@ export default function TabPanelEditarPerfil (props) {
     const [tempCover, setTempCover] = useState('')
 
     const [open, toggleOpen] = useState(false)
-    const controlModal = () => {toggleOpen(!open)}
+    const controlModal = () => { toggleOpen(!open) }
 
     const updateCover = (selectorFiles) => {
         const objectURL = URL.createObjectURL(selectorFiles[0])
@@ -65,40 +65,44 @@ export default function TabPanelEditarPerfil (props) {
         const userInput = e.target.value
         const flag = ValidateUserInput(type, userInput)
 
-        if(type === 'username') {
-            setNome({...formNome,
-                key : flag,
-                value : userInput
+        if (type === 'username') {
+            setNome({
+                ...formNome,
+                key: flag,
+                value: userInput
             })
 
         }
         else if (type === 'aboutMe') {
-            setAboutMe({...formAboutMe,
-                key : flag,
-                value : userInput,
+            setAboutMe({
+                ...formAboutMe,
+                key: flag,
+                value: userInput,
             })
 
         }
     }
 
     const limpaCamposForm = () => {
-        setNome({...formNome,
-            key : false,
-            value : ''
+        setNome({
+            ...formNome,
+            key: false,
+            value: ''
         })
 
-        setAboutMe({...formAboutMe,
-            key : false,
-            value : ''
+        setAboutMe({
+            ...formAboutMe,
+            key: false,
+            value: ''
         })
     }
 
     const [alterarAvatatarOpen, toggleAlterarAvatar] = useState(false)
-    const controlModalAvatar = () => {toggleAlterarAvatar(!alterarAvatatarOpen)}
+    const controlModalAvatar = () => { toggleAlterarAvatar(!alterarAvatatarOpen) }
 
     const handleSubmit = (e) => {
         e.preventDefault()
-        const info = {user : {name : formNome.value, description : formAboutMe.value, email : sessionStorage.getItem('@portalmec/uid')}}
+        const info = { user: { name: formNome.value, description: formAboutMe.value, email: sessionStorage.getItem('@portalmec/uid') } }
         const flagNome = formNome.key
         const flagAboutMe = formAboutMe.key
 
@@ -111,7 +115,7 @@ export default function TabPanelEditarPerfil (props) {
     return (
         <React.Fragment>
             <ModalAlterarCover
-                open = {open}
+                open={open}
                 handleClose={controlModal}
                 cover={tempCover}
                 id={state.currentUser.id}
@@ -123,67 +127,67 @@ export default function TabPanelEditarPerfil (props) {
                 id={state.currentUser.id}
             />
             <div className="card-config">
-                <h1 style={{fontWeight:"300"}}>Editar Perfil </h1>
-                    <div className='content-div'>
-                        <div style={{padding:"0", display:"flex", flexDirection:"column"}}>
-                            <HeaderContainer>
-                                <div style={{position:"relative", height:"100%"}}>
-                                    <img src={state.currentUser.cover ? `${apiDomain}` + state.currentUser.cover : null} alt="user cover avatar" style={{width:"100%", height:"100%", objectFit:"cover"}}/>
-                                    <input accept="image/*" style = {{display:"none"}} id="icon-button-file" type="file" onChange={(e) => updateCover(e.target.files)}/>
-                                    <label htmlFor="icon-button-file">
-                                        <Tooltip title={<span style={{fontSize:"14px", overflow:"hidden", transition:"all .5s ease"}}>ALTERAR CAPA</span>} placement="left">
-                                            <IconButton style={{position:"absolute",right:"0",top:"0",color:"#fff"}}color="primary" aria-label="upload picture" component="span">
-                                                <PhotoCamera />
-                                            </IconButton>
-                                        </Tooltip>
-                                    </label>
-                                </div>
-                                <ProfileAvatarDiv onMouseEnter={handleHoverAlterarFoto} onMouseLeave={handleHoverAlterarFoto}>
-                                    <img src={state.currentUser.avatar ? `${apiDomain}` + state.currentUser.avatar : Profile} alt = "user avatar"/>
-                                    <ChangeAvatarDiv  style={ {display : hoverAlterarFoto ? 'flex' : 'none'}}>
-                                        <span onClick={()=>{controlModalAvatar()}}>Alterar Foto</span>
-                                    </ChangeAvatarDiv>
-                                </ProfileAvatarDiv>
-                            </HeaderContainer>
-                            <br/>
-                            <br/>
-                            <br/>
-                            <br/>
-                        </div>
-
-                        <div style={{paddingTop:"90px"}}>
-                            <div style={{display:"flex", flexDirection:"row"}}>
-                                <form onSubmit={e => handleSubmit(e)}>
-                                    <FormInput
-                                        inputType={"text"}
-                                        name={"Nome Completo"}
-                                        value={formNome.value}
-                                        placeholder={"Nome Completo"}
-                                        handleChange={e => handleChange(e, 'username')}
-                                        required={true}
-                                        error={formNome.key}
-                                    />
-                                    <FormInput
-                                        inputType={"text"}
-                                        name={"Sobre Mim"}
-                                        value={formAboutMe.value}
-                                        multi = {true}
-                                        rows="3"
-                                        rowsMax = "3"
-                                        error={formAboutMe.key}
-                                        placeholder={"Sobre Mim"}
-                                        handleChange={e => handleChange(e, 'aboutMe')}
-                                        required={false}
-                                        help = {formAboutMe.value.length + '/160'}
-                                    />
-                                </form>
+                <h1 style={{ fontWeight: "300" }}>Editar Perfil </h1>
+                <div className='content-div'>
+                    <div style={{ padding: "0", display: "flex", flexDirection: "column" }}>
+                        <HeaderContainer>
+                            <div style={{ position: "relative", height: "100%" }}>
+                                <img src={state.currentUser.cover ? `${apiDomain}` + state.currentUser.cover : null} alt={state.currentUser.cover ? "user cover avatar" : ""} style={{ width: "100%", height: "100%", objectFit: "cover" }} />
+                                <input accept="image/*" style={{ display: "none" }} id="icon-button-file" type="file" onChange={(e) => updateCover(e.target.files)} />
+                                <label htmlFor="icon-button-file">
+                                    <Tooltip title={<span style={{ fontSize: "14px", overflow: "hidden", transition: "all .5s ease" }}>ALTERAR CAPA</span>} placement="left">
+                                        <IconButton style={{ position: "absolute", right: "0", top: "0", color: "#fff" }} color="primary" aria-label="upload picture" component="span">
+                                            <PhotoCamera />
+                                        </IconButton>
+                                    </Tooltip>
+                                </label>
                             </div>
-                            <ButtonsDiv>
-                                <Link to="perfil" ><ButtonCancelar ><span>CANCELAR</span></ButtonCancelar></Link>
-                                <ButtonConfirmar onClick={e => handleSubmit(e)}><span>SALVAR ALTERAÇÕES</span></ButtonConfirmar>
-                            </ButtonsDiv>
+                            <ProfileAvatarDiv onMouseEnter={handleHoverAlterarFoto} onMouseLeave={handleHoverAlterarFoto}>
+                                <img src={state.currentUser.avatar ? `${apiDomain}` + state.currentUser.avatar : Profile} alt="user avatar" />
+                                <ChangeAvatarDiv style={{ display: hoverAlterarFoto ? 'flex' : 'none' }}>
+                                    <span onClick={() => { controlModalAvatar() }}>Alterar Foto</span>
+                                </ChangeAvatarDiv>
+                            </ProfileAvatarDiv>
+                        </HeaderContainer>
+                        <br />
+                        <br />
+                        <br />
+                        <br />
+                    </div>
+
+                    <div style={{ paddingTop: "90px" }}>
+                        <div style={{ display: "flex", flexDirection: "row" }}>
+                            <form onSubmit={e => handleSubmit(e)}>
+                                <FormInput
+                                    inputType={"text"}
+                                    name={"Nome Completo"}
+                                    value={formNome.value}
+                                    placeholder={"Nome Completo"}
+                                    handleChange={e => handleChange(e, 'username')}
+                                    required={true}
+                                    error={formNome.key}
+                                />
+                                <FormInput
+                                    inputType={"text"}
+                                    name={"Sobre Mim"}
+                                    value={formAboutMe.value}
+                                    multi={true}
+                                    rows="3"
+                                    rowsMax="3"
+                                    error={formAboutMe.key}
+                                    placeholder={"Sobre Mim"}
+                                    handleChange={e => handleChange(e, 'aboutMe')}
+                                    required={false}
+                                    help={formAboutMe.value.length + '/160'}
+                                />
+                            </form>
                         </div>
-                    </div >
+                        <ButtonsDiv>
+                            <Link to="perfil" ><ButtonCancelar ><span>CANCELAR</span></ButtonCancelar></Link>
+                            <ButtonConfirmar onClick={e => handleSubmit(e)}><span>SALVAR ALTERAÇÕES</span></ButtonConfirmar>
+                        </ButtonsDiv>
+                    </div>
+                </div >
             </div>
         </React.Fragment>
     )
@@ -275,12 +279,12 @@ const ChangeAvatarDiv = styled.div`
 `
 
 const ProfileAvatarDiv = styled.div`
-    bottom : -10px;
-    left : 120px !important;
+    bottom: -20px;
+    left : 120px; 
     border-radius : 100%;
     position : absolute;
-    max-width : 100px !important;
-    max-height : 100px !important;
+    max-width : 100px;
+    max-height : 100px;
     overflow : hidden;
     border : 8px solid #fff;
     outline : 0;
@@ -288,6 +292,16 @@ const ProfileAvatarDiv = styled.div`
     z-index : 10;
     background-color : #fff !important;
 
+    @media screen and (max-width: 769px) {
+        max-width : 75px;
+        max-height : 75px;
+        position:absolute;
+        left:0;
+        right:0;
+        bottom : -40px;
+        margin-left:auto;
+        margin-right:auto;
+    }
     img {
         border:0;
         vertical-align:middle;
diff --git a/src/Components/TabPanels/UserPageTabs/PanelGerenciarConta.js b/src/Components/TabPanels/UserPageTabs/PanelGerenciarConta.js
index 0207eb9f..29edb847 100644
--- a/src/Components/TabPanels/UserPageTabs/PanelGerenciarConta.js
+++ b/src/Components/TabPanels/UserPageTabs/PanelGerenciarConta.js
@@ -130,7 +130,7 @@ export default function TabPanelGerenciarConta (props) {
             <div className='content-div'>
                 <h1>Gerenciar Conta</h1>
                 <div style={{display : "flex", flexDirection : "column"}}>
-                    <form style={{width:"500px", margin : "0 0 20px 0"}} onSubmit={e => onSubmit(e, 'senha')}>
+                    <form style={{margin : "0 0 20px 0"}} onSubmit={e => onSubmit(e, 'senha')}>
                         <h4 style={{display:"flex", justifyContent:"flex-start", fontSize:"18px"}}>Alterar Senha</h4>
                         <FormInput
                             inputType={"password"}
@@ -178,7 +178,7 @@ export default function TabPanelGerenciarConta (props) {
         <div className='card-config'>
             <div className='content-div'>
                 <div style={{display : "flex", flexDirection : "column"}}>
-                    <form style={{width:"500px"}} onSubmit={(e) => onSubmit(e, 'email')}>
+                    <form onSubmit={(e) => onSubmit(e, 'email')}>
                         <h4 style={{display:"flex", justifyContent:"flex-start", fontSize:"18px"}}>Alterar e-mail</h4>
                         <FormInput
                             inputType={"text"}
diff --git a/src/Components/TabPanels/UserPageTabs/PanelSolicitarContaProfessor.js b/src/Components/TabPanels/UserPageTabs/PanelSolicitarContaProfessor.js
index 3e0fe1c7..a31c0676 100644
--- a/src/Components/TabPanels/UserPageTabs/PanelSolicitarContaProfessor.js
+++ b/src/Components/TabPanels/UserPageTabs/PanelSolicitarContaProfessor.js
@@ -35,7 +35,7 @@ export default function TabPanelSolicitarContaProfessor (props) {
                 {
                     state.currentUser.submitter_request === 'default' || state.currentUser.submitter_request === 'rejected' ?
                     (
-                            <div style={{paddingLeft:"100px", paddingRight:"101px"}}>
+                            <div>
                                 <ImageDiv/>
                                 <StyledH2>Você é professor(a) da educação básica e gostaria de colaborar com a Plataforma?</StyledH2>
                                 <StyledP>Ao ser identificado como professor(a), você poderá publicar e compartilhar recursos educacionais
diff --git a/src/Components/UploadPageComponents/ButtonsDiv.js b/src/Components/UploadPageComponents/ButtonsDiv.js
index b6aaaa3c..8e4d1945 100644
--- a/src/Components/UploadPageComponents/ButtonsDiv.js
+++ b/src/Components/UploadPageComponents/ButtonsDiv.js
@@ -16,63 +16,63 @@ 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} from 'react'
+import React, { useState } from 'react'
 import ModalCancelar from './ModalCancelar.js'
 import { GreyButton, OrangeButton } from './StyledComponents';
 import Grid from '@material-ui/core/Grid';
-import {Redirect} from 'react-router-dom'
+import { Redirect } from 'react-router-dom'
 
-export default function ButtonsDiv (props) {
+export default function ButtonsDiv(props) {
     const [modalCancelar, toggleModalCancelar] = useState(false)
     const [redirectTrue, toggleRedirect] = useState(false)
     return (
         <>
-        <ModalCancelar
-             open={modalCancelar}
-             handleClose={() => {toggleModalCancelar(false)}}
-             draftID={props.draftID}
-             />
-
-         {
-             redirectTrue &&
-             <Redirect to="/"/>
-         }
-         <Grid container justify="center">
-
-             {/*botao excluir na pagina de editar*/}
-            <Grid item md={2} xs={6}>
-                <GreyButton onClick={() => {toggleModalCancelar(true)}}>
-                    <span className="button-text">
-                    CANCELAR
-                    </span>
-                </GreyButton>
-            </Grid>
+            <ModalCancelar
+                open={modalCancelar}
+                handleClose={() => { toggleModalCancelar(false) }}
+                draftID={props.draftID}
+            />
 
             {
-                props.onPartTwo &&
-                <Grid item md={2} xs={6}>
-                    <GreyButton onClick={() => {props.stepperControl(-1)}}>
+                redirectTrue &&
+                <Redirect to="/" />
+            }
+            <Grid container justify="center" alignItems="center" spacing={3}>
+
+                {/*botao excluir na pagina de editar*/}
+                <Grid item>
+                    <GreyButton onClick={() => { toggleModalCancelar(true) }}>
                         <span className="button-text">
-                        VOLTAR
-                        </span>
+                            CANCELAR
+                    </span>
                     </GreyButton>
                 </Grid>
-            }
 
-            <Grid item md={4} xs={12}>
-                <GreyButton onClick={() => {if(window.confirm('O seu recurso em edição foi salvo.')) toggleRedirect(true)}}>
-                    <span className="button-text">
-                    CONTINUAR MAIS TARDE
+                {
+                    props.onPartTwo &&
+                    <Grid item>
+                        <GreyButton onClick={() => { props.stepperControl(-1) }}>
+                            <span className="button-text">
+                                VOLTAR
+                        </span>
+                        </GreyButton>
+                    </Grid>
+                }
+
+                <Grid item>
+                    <GreyButton onClick={() => { if (window.confirm('O seu recurso em edição foi salvo.')) toggleRedirect(true) }}>
+                        <span className="button-text">
+                            CONTINUAR MAIS TARDE
                     </span>
-                </GreyButton>
-            </Grid>
+                    </GreyButton>
+                </Grid>
 
-            <Grid item md={4} xs={12}>
-                <OrangeButton type="submit">
-                SALVAR E AVANÇAR
-                </OrangeButton>
+                <Grid item>
+                    <OrangeButton type="submit">
+                        SALVAR E AVANÇAR
+                    </OrangeButton>
+                </Grid>
             </Grid>
-        </Grid>
         </>
     )
 }
diff --git a/src/Components/UploadPageComponents/PartThree.js b/src/Components/UploadPageComponents/PartThree.js
index 3b4b6b81..97f3ce81 100644
--- a/src/Components/UploadPageComponents/PartThree.js
+++ b/src/Components/UploadPageComponents/PartThree.js
@@ -16,11 +16,11 @@ 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, useEffect, useContext} from 'react'
-import {Store} from '../../Store.js'
+import React, { useState, useEffect, useContext } from 'react'
+import { Store } from '../../Store.js'
 import Grid from '@material-ui/core/Grid';
 import styled from 'styled-components'
-import {apiDomain} from '../../env';
+import { apiDomain } from '../../env';
 import Stepper from './Stepper.js'
 import Rating from '@material-ui/lab/Rating';
 import StarBorderIcon from '@material-ui/icons/StarBorder';
@@ -31,15 +31,15 @@ import DateRangeIcon from '@material-ui/icons/DateRange';
 import UpdateIcon from '@material-ui/icons/Update';
 import TranslateIcon from '@material-ui/icons/Translate';
 import AssignmentIcon from '@material-ui/icons/Assignment';
-import { GrayButton, OrangeButton} from './StyledComponents';
+import { GrayButton, OrangeButton } from './StyledComponents';
 import ModalCancelar from './ModalCancelar.js'
-import {getDefaultThumbnail} from '../HelperFunctions/getDefaultThumbnail'
-import {getRequest} from '../HelperFunctions/getAxiosConfig.js'
+import { getDefaultThumbnail } from '../HelperFunctions/getDefaultThumbnail'
+import { getRequest } from '../HelperFunctions/getAxiosConfig.js'
 
-export default function PartThree (props) {
+export default function PartThree(props) {
     var moment = require('moment')
-    const {state} = useContext(Store)
-    const [loading, setLoading] = useState(true)
+    const { state } = useContext(Store)
+    const [loading, setLoading] = useState(false)
 
     const [draft, setDraft] = useState({})
     const [subjects, setSubjects] = useState('')
@@ -47,21 +47,27 @@ export default function PartThree (props) {
     const [description, setDescription] = useState('')
     const [author, setAuthor] = useState('')
 
-    function handleSuccess (data) {
+    function handleSuccess(data) {
+        console.log(data.tags)
+        console.log(data.language)
+        console.log(data.subjects)
+        // console.log(data.tags)
+
         setDraft(data)
         /*extract subjects*/
         setSubjects(data.subjects.map((subject)=>(subject.name)).join(', '))
-        setTags(data.tags.map(tag => tag.name))
+        // setTags(data.tags.map(tag => tag.name))
         setDescription(data.description)
         setAuthor(data.author)
         setLoading(false)
     }
 
     useEffect(() => {
+        setLoading(true)
         if (state.currentUser.id !== "") {
             const url = `/learning_objects/${props.draftID}`
 
-            getRequest(url, handleSuccess, (error) => {console.log(error)})
+            getRequest(url, handleSuccess, (error) => { console.log(error) })
 
         }
     }, [state.currentUser.id])
@@ -71,158 +77,166 @@ export default function PartThree (props) {
 
     const checkAccessLevel = (levelToCheck) => {
         if (state.currentUser.id !== '') {
-            return(checkUserRole(levelToCheck))
+            return (checkUserRole(levelToCheck))
         }
     }
 
     const checkUserRole = (userRole) => {
-        return(state.currentUser.roles.filter((role) => role.name === userRole).length > 0)
+        return (state.currentUser.roles.filter((role) => role.name === userRole).length > 0)
     }
 
     return (
         <React.Fragment>
-        {
-            !loading ?
-            (
-                <React.Fragment>
-                <ModalCancelar
-                     open={modalCancelar}
-                     handleClose={() => {toggleModalCancelar(false)}}
-                     draftID={draft.id}
-                     />
-                <Grid container style={{backgroundColor : "#f4f4f4"}}>
-                    <Grid item xs={12}>
-                        <StyledSessao1 className="page-content-preview">
-                            <div className="cabecalho">
-                                <div className="feedback-upload">
-                                    <Stepper activeStep={props.activeStep}/>
-                                    <h2>Quase lá, agora só falta publicar!</h2>
-                                    <span className="subtitle">Veja abaixo como o seu Recurso vai aparecer na Plataforma:</span>
-                                </div>
-                            </div>
-                        </StyledSessao1>
-
-                        <CaixaContainer>
-                            <div>
-                                <div className="cabecalho-objeto">
-                                    <img alt="" className="img-objeto"
-                                        src={draft.thumbnail === null ? getDefaultThumbnail(draft.object_type) : apiDomain + draft.thumbnail}/>
-                                    <div className="texto-objeto">
-                                        <h3>{draft.name}</h3>
-                                        <div className="rating-objeto">
-                                            <Rating
-                                              name="customized-empty"
-                                              value={draft.score}
-                                              precision={0.5}
-                                              style={{color:"#666"}}
-                                              emptyIcon={<StarBorderIcon fontSize="inherit" />}
-                                            />
-                                        </div>
-
-                                        <div className="relacionado">
-                                            Relacionado com: {subjects}
+            {
+                !loading ?
+                    (
+                        <React.Fragment>
+                            <ModalCancelar
+                                open={modalCancelar}
+                                handleClose={() => { toggleModalCancelar(false) }}
+                                draftID={draft.id}
+                            />
+                            <Grid container style={{ backgroundColor: "#f4f4f4" }}>
+                                <Grid item xs={12}>
+                                    <StyledSessao1 className="page-content-preview">
+                                        <div className="cabecalho">
+                                            <div className="feedback-upload">
+                                                <Stepper activeStep={props.activeStep} />
+                                                <h2>Quase lá, agora só falta publicar!</h2>
+                                                <span className="subtitle">Veja abaixo como o seu Recurso vai aparecer na Plataforma:</span>
+                                            </div>
                                         </div>
+                                    </StyledSessao1>
+
+                                    <CaixaContainer>
+                                        <div>
+                                            <div className="cabecalho-objeto">
+                                                <img alt="" className="img-objeto"
+                                                    src={draft.thumbnail === null ? getDefaultThumbnail(draft.object_type) : apiDomain + draft.thumbnail} />
+                                                <div className="texto-objeto">
+                                                    <h3>{draft.name}</h3>
+                                                    <div className="rating-objeto">
+                                                        <Rating
+                                                            name="customized-empty"
+                                                            value={draft.score}
+                                                            precision={0.5}
+                                                            style={{ color: "#666" }}
+                                                            emptyIcon={<StarBorderIcon fontSize="inherit" />}
+                                                        />
+                                                    </div>
+
+                                                    <div className="relacionado">
+                                                        Relacionado com: {subjects}
+                                                    </div>
+
+                                                    {
+                                                        draft.tags &&
+                                                        <div className="tags-objeto">
+                                                            {draft.tags.map((tag) => {
+                                                                return (
+                                                                    <div className="tag" key={tag.name}>{tag.name}</div>
+                                                                )
+                                                            })}
+                                                        </div>
+                                                    }
+
+                                                </div>
+                                            </div>
 
-                                        <div className="tags-objeto">
-                                            {tags.map((tag) => <div className="tag" key={tag}>{tag}</div>)}
-                                        </div>
-                                    </div>
-                                </div>
-
-                                <div className="sobre-objeto">
-                                    <Grid container>
-                                        <Grid item xs={windowWidth > 990 ? 7 : 12} className="left">
-                                            <div className="titulo">
-                                                Sobre o Recurso
+                                            <div className="sobre-objeto">
+                                                <Grid container>
+                                                    <Grid item xs={windowWidth > 990 ? 7 : 12} className="left">
+                                                        <div className="titulo">
+                                                            Sobre o Recurso
                                             </div>
-                                            <div className="sobre-conteudo">
-                                                <p className="descricao">{description}</p>
-                                                {
-                                                    author !== '' &&
-                                                    <p className="autor">
-                                                        <b>Autoria:</b>
-                                                        <br/>
-                                                        {author}
-                                                    </p>
-                                                }
+                                                        <div className="sobre-conteudo">
+                                                            <p className="descricao">{description}</p>
+                                                            {
+                                                                author !== '' &&
+                                                                <p className="autor">
+                                                                    <b>Autoria:</b>
+                                                                    <br />
+                                                                    {author}
+                                                                </p>
+                                                            }
+                                                        </div>
+                                                    </Grid>
+
+                                                    <Grid item xs={windowWidth > 990 ? 4 : 12} className="right">
+                                                        <span className="meta-objeto">
+                                                            <MoreIcon /> <b>Tipo de mídia: </b>{draft.object_type}
+                                                        </span>
+
+                                                        <span className="meta-objeto">
+                                                            <SdCardIcon /> <b>Tamanho: </b>
+                                                        </span>
+
+                                                        <span className="meta-objeto">
+                                                            <DateRangeIcon /> <b>Enviado: </b>
+                                                            {moment(draft.created_at).format("DD/MM/YYYY")}
+                                                        </span>
+
+                                                        <span className="meta-objeto">
+                                                            <UpdateIcon /><b>Atualização: </b>
+                                                            {moment(draft.updated_at).format("DD/MM/YYYY")}
+                                                        </span>
+
+                                                        {   draft.language &&
+                                                            draft.language.map((language =>
+                                                                <span className="meta-objeto" key={language.id}>
+                                                                    <TranslateIcon /><b>Idioma: </b>{language.name}
+                                                                </span>
+                                                            ))
+                                                        }
+
+                                                        <span className="meta-objeto">
+                                                            <AssignmentIcon /><b>Licença: </b>{draft.license ? draft.license.name : ""}
+                                                        </span>
+                                                    </Grid>
+                                                </Grid>
                                             </div>
-                                        </Grid>
-
-                                        <Grid item xs={windowWidth > 990 ? 4 : 12} className="right">
-                                            <span className="meta-objeto">
-                                                <MoreIcon/> <b>Tipo de mídia: </b>{draft.object_type}
-                                            </span>
-
-                                            <span className="meta-objeto">
-                                                <SdCardIcon/> <b>Tamanho: </b>
-                                            </span>
-
-                                            <span className="meta-objeto">
-                                                <DateRangeIcon/> <b>Enviado: </b>
-                                                {moment(draft.created_at).format("DD/MM/YYYY")}
-                                            </span>
-
-                                            <span className="meta-objeto">
-                                                <UpdateIcon/><b>Atualização: </b>
-                                                {moment(draft.updated_at).format("DD/MM/YYYY")}
-                                            </span>
-
-                                            {
-                                                draft.language.map( (language =>
-                                                    <span className="meta-objeto" key={language.id}>
-                                                        <TranslateIcon/><b>Idioma: </b>{language.name}
-                                                    </span>
-                                                ))
-                                            }
-
-                                            <span className="meta-objeto">
-                                                <AssignmentIcon/><b>Licença: </b>{draft.license.name}
-                                            </span>
-                                        </Grid>
-                                    </Grid>
-                                </div>
-                            </div>
-                        </CaixaContainer>
-                        <Sessao3>
-                            <form>
-                            <Grid container>
-                                <Grid item xs={windowWidth > 990 ? 6 : 12} style={{paddingRight : "15px", paddingLeft : "15px", textAlign: windowWidth > 990 ? 'right' : 'center'}}>
-                                    <span style={{fontSize : "14px"}}>
-                                        Para segurança da plataforma <br/> marque que você não é um robô
+                                        </div>
+                                    </CaixaContainer>
+                                    <Sessao3>
+                                        <form>
+                                            <Grid container>
+                                                <Grid item xs={windowWidth > 990 ? 6 : 12} style={{ paddingRight: "15px", paddingLeft: "15px", textAlign: windowWidth > 990 ? 'right' : 'center' }}>
+                                                    <span style={{ fontSize: "14px" }}>
+                                                        Para segurança da plataforma <br /> marque que você não é um robô
                                     </span>
-                                </Grid>
-
-                                <Grid item xs={windowWidth > 990 ? 6 : 12} style={{paddingRight : "15px", paddingLeft : "15px",  textAlign: windowWidth > 990 ? 'left' : 'center'}}>
-                                    <span>Recaptcha</span>
-                                </Grid>
-                                <Grid item xs={12} style={{paddingRight : "15px", paddingLeft : "15px", marginTop : "30px", textAlign : 'center'}}>
-                                    <GrayButton onClick={() => {props.stepperControl(-1)}}>VOLTAR</GrayButton>
-                                    <GrayButton onClick={() => {toggleModalCancelar(true)}}>CANCELAR</GrayButton>
-                                    {
-                                        checkAccessLevel("partner") ?
-                                        (
-                                            <OrangeButton onClick={props.handlePost}>PUBLICAR RECURSO</OrangeButton>
-                                        )
-                                        :
-                                        (
-                                            <OrangeButton onClick={props.handleSubmit}>SUBMETER RECURSO</OrangeButton>
-                                        )
-
-                                    }
+                                                </Grid>
+
+                                                <Grid item xs={windowWidth > 990 ? 6 : 12} style={{ paddingRight: "15px", paddingLeft: "15px", textAlign: windowWidth > 990 ? 'left' : 'center' }}>
+                                                    <span>Recaptcha</span>
+                                                </Grid>
+                                                <Grid item xs={12} style={{ paddingRight: "15px", paddingLeft: "15px", marginTop: "30px", textAlign: 'center' }}>
+                                                    <GrayButton onClick={() => { props.stepperControl(-1) }}>VOLTAR</GrayButton>
+                                                    <GrayButton onClick={() => { toggleModalCancelar(true) }}>CANCELAR</GrayButton>
+                                                    {
+                                                        checkAccessLevel("partner") ?
+                                                            (
+                                                                <OrangeButton onClick={props.handlePost}>PUBLICAR RECURSO</OrangeButton>
+                                                            )
+                                                            :
+                                                            (
+                                                                <OrangeButton onClick={props.handleSubmit}>SUBMETER RECURSO</OrangeButton>
+                                                            )
+
+                                                    }
+                                                </Grid>
+                                            </Grid>
+                                        </form>
+                                    </Sessao3>
                                 </Grid>
                             </Grid>
-                            </form>
-                        </Sessao3>
-                    </Grid>
-                </Grid>
-                </React.Fragment>
-            )
-            :
-            (
-                <LoadingSpinner text="CARREGANDO"/>
-            )
-        }
-    </React.Fragment>
+                        </React.Fragment>
+                    )
+                    :
+                    (
+                        <LoadingSpinner text="CARREGANDO" />
+                    )
+            }
+        </React.Fragment>
     )
 }
 
diff --git a/src/Components/UploadPageComponents/PartTwo.js b/src/Components/UploadPageComponents/PartTwo.js
index 6ab05cee..221998c8 100644
--- a/src/Components/UploadPageComponents/PartTwo.js
+++ b/src/Components/UploadPageComponents/PartTwo.js
@@ -125,12 +125,12 @@ export default function PartTwo (props) {
 
             <Grid item xs={12} style={{paddingBottom : "40px"}}>
                 <Licenca draftID={props.draftID} onBlurCallback={SendInfo}/>
-            </Grid>
+            </Grid> 
 
             <Grid item xs={12} style={{paddingBottom : "40px"}}>
                 <StyledFormControl required >
-                    <StyledFormLabel component="legend" style={{fontSize : "14px", marginBottom : "10px"}}>
-                        <b>Confirme se você concorda com os <a href="/termos" style={{color : "#ff7f00"}}>termos de uso e de propriedade intelectual</a></b>
+                    <StyledFormLabel component="legend" style={{fontSize : "14px", marginBottom : "10px"}} onClick={() => window.open("/termos/", "_blank")}>
+                        <b>Confirme se você concorda com os <strong style={{color : "#ff7f00"}}>termos de uso e de propriedade intelectual</strong></b>
                     </StyledFormLabel>
                     <FormControlLabel label={<span className="label">Li e concordo com os termos de uso e de propriedade intelectual.</span>} control={<Checkbox checked={termsCheckbox} onChange={toggleCheckbox}/>}
                         />
diff --git a/src/Components/UploadPageComponents/StyledComponents.js b/src/Components/UploadPageComponents/StyledComponents.js
index 944e96cf..3c157e6f 100644
--- a/src/Components/UploadPageComponents/StyledComponents.js
+++ b/src/Components/UploadPageComponents/StyledComponents.js
@@ -28,13 +28,13 @@ import GetIconByName from './GetIconByName.js'
 
 export const StyledFormHelperText = styled(FormHelperText)`
     .MuiFormHelperText-root {
-        text-align : right !important.
+        text-align : right !important;
     }
 `
 
 export const DottedBox = styled.div`
     align-self : center;
-    width : ${props => props.thumbnail ? "100%" : "320px"};
+    /* width : ${props => props.thumbnail ? "100%" : "320px"}; */
     background-color : ${props => props.thumbnail ? "transparent" : "#f4f4f4"};
     border : ${props => props.thumbnail ? "2px dashed #a5a5a5" : "2px dashed #00bcd4"};
     align-items : center;
diff --git a/src/Pages/EditLearningObjectPage.js b/src/Pages/EditLearningObjectPage.js
index 5e04a247..1f929c47 100644
--- a/src/Pages/EditLearningObjectPage.js
+++ b/src/Pages/EditLearningObjectPage.js
@@ -110,6 +110,7 @@ export default function EditLearningObjectPage (props) {
         toggleSnackbar(true)
         props.history.push("/")
     }
+    
     const handleDelete = () => {
         const url = `/learning_objects/${learningObject.id}`
 
diff --git a/src/Pages/EditProfilePage.js b/src/Pages/EditProfilePage.js
index 381a2872..a7e77555 100644
--- a/src/Pages/EditProfilePage.js
+++ b/src/Pages/EditProfilePage.js
@@ -1,4 +1,4 @@
-import React, {useState, useContext} from 'react';
+import React, { useState, useContext } from 'react';
 import styled from 'styled-components'
 import Tabs from '@material-ui/core/Tabs'
 import Tab from '@material-ui/core/Tab';
@@ -7,14 +7,14 @@ import TabPanelEditarPerfil from '../Components/TabPanels/UserPageTabs/PanelEdit
 import TabPanelSolicitarContaProfessor from '../Components/TabPanels/UserPageTabs/PanelSolicitarContaProfessor.js'
 import TabPanelGerenciarConta from '../Components/TabPanels/UserPageTabs/PanelGerenciarConta.js'
 import Snackbar from '@material-ui/core/Snackbar';
-import {Alert} from '../Components/LoginModal.js'
+import { Alert } from '../Components/LoginModal.js'
 import Grid from '@material-ui/core/Grid'
 import CustomizedBreadcrumbs from '../Components/TabPanels/Breadcrumbs.js'
-import {putRequest} from '../Components/HelperFunctions/getAxiosConfig'
-import {Store} from '../Store.js'
+import { putRequest } from '../Components/HelperFunctions/getAxiosConfig'
+import { Store } from '../Store.js'
 
-export default function EditProfilePage (props) {
-    const {state, dispatch} = useContext(Store)
+export default function EditProfilePage(props) {
+    const { state, dispatch } = useContext(Store)
     const id = state.currentUser.id
 
     // eslint-disable-next-line
@@ -26,25 +26,39 @@ export default function EditProfilePage (props) {
         setTabValue(newValue)
     }
 
-    const [snackbarOpened, handleSnackbar] = useState(false)
+    const [snackbarOpened, handleSnackbar] = useState({
+        open: false,
+        severity: "",
+        text: ""
+    })
     const handleCloseSnackbar = (event, reason) => {
         if (reason === 'clickaway') {
             return;
         }
 
-        handleSnackbar(false);
+        handleSnackbar({
+            open: false,
+            severity: "",
+            text: ""
+        });
     }
 
     const updateUserInfo = (newUserInfo) => {
         const url = `/users/${id}`
 
         putRequest(url, newUserInfo,
-            (data) => {props.history.push('/perfil')},
-            (error) => {console.log(error)}
+            (data) => { props.history.push('/perfil') },
+            (error) => {
+                handleSnackbar({
+                    open: true,
+                    severity: "error",
+                    text: "Ocorreu um erro!"
+                });
+            }
         )
     }
 
-    function handleSuccessUpdateEmail (data) {
+    function handleSuccessUpdateEmail(data) {
         let auth_headers = JSON.parse(sessionStorage.getItem('@portalmec/auth_headers'))
 
         auth_headers['uid'] = data.uid
@@ -52,17 +66,34 @@ export default function EditProfilePage (props) {
         sessionStorage.setItem('@portalmec/auth_headers', JSON.stringify(auth_headers))
 
         const target = state.currentUser
-        const source = {uid : data.uid}
+        const source = { uid: data.uid }
+
+        handleSnackbar({
+            open: true,
+            severity: "success",
+            text: "O email foi atualizado com sucesso!"
+        });
+
         dispatch({
-            type : 'USER_UPDATED_EMAIL',
-            currUser : Object.assign(target, source)
+            type: 'USER_UPDATED_EMAIL',
+            currUser: Object.assign(target, source)
         })
     }
 
     const updateUserEmail = (newUserInfo) => {
         const url = `/users/${id}`
 
-        putRequest(url, newUserInfo, handleSuccessUpdateEmail, (error) => {console.log(error)}
+        putRequest(
+            url,
+            newUserInfo,
+            handleSuccessUpdateEmail,
+            (error) => {
+                handleSnackbar({
+                    open: true,
+                    severity: "error",
+                    text: "Ocorreu um erro!"
+                });
+            }
         )
     }
 
@@ -70,63 +101,72 @@ export default function EditProfilePage (props) {
         const url = `/users/${id}`
 
         putRequest(url, newUserInfo,
-            (data) => {handleSnackbar(true)},
-            (error) => {console.log(error)}
+            (data) => {
+                handleSnackbar({
+                    open: true,
+                    severity: "success",
+                    text: "A senha foi alterada com sucesso"
+                });
+            },
+            (error) => {
+                handleSnackbar({
+                    open: true,
+                    severity: "error",
+                    text: "Ocorreu um erro!"
+                });
+            }
         )
     }
 
     return (
-        <div style={{backgroundColor:"#f4f4f4", color:"#666"}}>
-            <Snackbar open={snackbarOpened} autoHideDuration={1000} onClose={handleCloseSnackbar}
-            anchorOrigin = {{ vertical:'top', horizontal:'right' }}
+        <div style={{ backgroundColor: "#f4f4f4", color: "#666" }}>
+            <Snackbar open={snackbarOpened.open} autoHideDuration={1000} onClose={handleCloseSnackbar}
+                anchorOrigin={{ vertical: 'top', horizontal: 'right' }}
             >
-                <Alert severity="success" style={{backgroundColor:"#00acc1"}}>Senha alterada com sucesso!</Alert>
+                <Alert severity={snackbarOpened.severity} >{snackbarOpened.text}</Alert>
             </Snackbar>
 
             <CustomizedBreadcrumbs
                 values={["Minha área", "Configurações da Conta", tabs[tabValue]]}
             />
 
-            <div style={{justifyContent:"center", width:"1170px", margin:"auto"}}>
-            <MainContainerDiv container spacing={3}>
-                <Grid item xs={3} style={{width : "auto", fontFamily:"Roboto"}} >
-                    <Paper elevation={3} style= {{width:"max-content"}}>
+            <MainContainerDiv container spacing={3} justify="center" align="center">
+                <Grid item xs={12} md={3} style={{ fontFamily: "Roboto" }} >
+                    <Paper elevation={3}>
                         <ConfiguracoesMenu>
-                            <h4 style={{marginTop:"10px", fontFamily:"inherit", display:"flex", justifyContent:"center"}}>
-                            Configurações da Conta
+                            <h4 style={{ marginTop: "10px", fontFamily: "inherit", display: "flex", justifyContent: "center" }}>
+                                Configurações da Conta
                             </h4>
                             <StyledTabs
-                                orientation = "vertical"
-                                variant = "scrollable"
-                                value = {tabValue}
-                                onChange = {handleChangeTab}
-                                TabIndicatorProps = {{style : {display : "none"}}}
+                                orientation="vertical"
+                                variant="scrollable"
+                                value={tabValue}
+                                onChange={handleChangeTab}
+                                TabIndicatorProps={{ style: { display: "none" } }}
                             >
-                                <StyledTab label={tabs[0]}/>
-                                <StyledTab label={tabs[1]}/>
-                                <StyledTab label={tabs[2]}/>
+                                <StyledTab label={tabs[0]} />
+                                <StyledTab label={tabs[1]} />
+                                <StyledTab label={tabs[2]} />
                             </StyledTabs>
                         </ConfiguracoesMenu>
                     </Paper>
                 </Grid>
-                <TabContentDiv item xs={9}>
-                    <Paper elevation={3} style= {{width:"100%"}}>
-                        {tabValue === 0 && <TabPanelEditarPerfil updateUserInfo={updateUserInfo}/>}
-                        {tabValue === 1 && <TabPanelSolicitarContaProfessor/>}
+                <TabContentDiv item xs={12} md={9}>
+                    <Paper elevation={3} style={{ width: "100%" }}>
+                        {tabValue === 0 && <TabPanelEditarPerfil updateUserInfo={updateUserInfo} />}
+                        {tabValue === 1 && <TabPanelSolicitarContaProfessor />}
                     </Paper>
-                        {tabValue === 2 && <TabPanelGerenciarConta updateUserEmail={updateUserEmail}
+                    {tabValue === 2 && <TabPanelGerenciarConta updateUserEmail={updateUserEmail}
                         updateUserPassword={updateUserPassword}
-                        />}
+                    />}
                 </TabContentDiv>
             </MainContainerDiv>
-            </div>
         </div>
     )
 }
 
 const TabContentDiv = styled(Grid)`
-    width : auto;
-
+ 
     .card-config {
         padding : 40px;
         margin : 20px 0 20px 10px;
@@ -179,6 +219,8 @@ const TabContentDiv = styled(Grid)`
 `
 
 const StyledTabs = styled(Tabs)`
+    display : flex;
+    justify-content : center;
     .Mui-selected {
         background-color : #f4f4f4;
     }
@@ -195,16 +237,10 @@ const ConfiguracoesMenu = styled.div`
     border-radius : 3px;
     padding : 20px 0;
     background-color : #fff;
-    text-align : start;
 `
 
 const MainContainerDiv = styled(Grid)`
     padding : 0;
-    width : 1170;
-    margin-right : auto;
-    margin-left : auto;
-    display : flex;
-    flex-direction : row;
-    align-content : center;
-    justify-content : center;
+    width : 90%;
+    margin: 0 auto;
 `
-- 
GitLab