diff --git a/src/Components/CloseModalButton.js b/src/Components/CloseModalButton.js
new file mode 100644
index 0000000000000000000000000000000000000000..59e5c46c4e417fd8cd6c241139bc409ed3067b25
--- /dev/null
+++ b/src/Components/CloseModalButton.js
@@ -0,0 +1,22 @@
+import React from 'react';
+import { Button } from '@material-ui/core';
+import styled from 'styled-components'
+import CloseIcon from '@material-ui/icons/Close';
+
+export default function CloseModalButton (props) {
+    return (
+        <StyledCloseModalButton onClick={props.handleClose}>
+            <CloseIcon/>
+        </StyledCloseModalButton>
+    )
+}
+
+const StyledCloseModalButton = styled(Button)`
+    display : inline-block;
+    position : relative;
+    float : right !important;
+    margin-right : -8px !important;
+    background : transparent !important;
+    min-width: 0 !important;
+    width : 40px;
+`
diff --git a/src/Components/ColaborarModal.js b/src/Components/ColaborarModal.js
index 395f305fab1546d612c17c80df513fb5f1eda9cd..cc2e2950c326e7c898f65ea3b8f6d8a40a26a761 100644
--- a/src/Components/ColaborarModal.js
+++ b/src/Components/ColaborarModal.js
@@ -86,8 +86,8 @@ export default function ColaborarModal (props) {
             aria-labelledby="transition-modal-title"
             aria-describedby="transition-modal-description"
             open={props.open}
-            animation={true}
-            centered={true}
+             
+            centered="true"
             onClose={props.handleClose}
             closeAfterTransition
             BackdropComponent={Backdrop}
diff --git a/src/Components/CriarColecaoModal.js b/src/Components/CriarColecaoModal.js
index 70b724c022d78a642374fd934e6d808f8ff2a4bf..9b04f2dd04da1c6e3a71a5cb26a0839da1470ce4 100644
--- a/src/Components/CriarColecaoModal.js
+++ b/src/Components/CriarColecaoModal.js
@@ -40,8 +40,8 @@ export default function CriarColecaoModal (props) {
             aria-labelledby="transition-modal-title"
             aria-describedby="transition-modal-description"
             open={props.open}
-            animation={true}
-            centered={true}
+             
+            centered="true"
             onClose={props.handleClose}
             closeAfterTransition
             BackdropComponent={Backdrop}
diff --git a/src/Components/GuardarModal.js b/src/Components/GuardarModal.js
index 49b96262021c2d7f2ef1f81cfade4e5afd7d0336..fd835a17ad8b37d74eea8a242a8e71304e182a60 100644
--- a/src/Components/GuardarModal.js
+++ b/src/Components/GuardarModal.js
@@ -102,8 +102,8 @@ export default function ReportModal (props) {
             aria-labelledby="transition-modal-title"
             aria-describedby="transition-modal-description"
             open={props.open}
-            animation={true}
-            centered={true}
+             
+            centered="true"
             onClose={props.handleClose}
             closeAfterTransition
             BackdropComponent={Backdrop}
diff --git a/src/Components/Header.js b/src/Components/Header.js
index 1cc29c0f2c7fd098006ace20f7d1086c291fc666..361645e47b00b59106bc9cdb4ad7db45a6568536 100644
--- a/src/Components/Header.js
+++ b/src/Components/Header.js
@@ -70,7 +70,7 @@ export default function Header(props){
       <>
           <AcessibilityBar/>
           <Snackbar open={successfulLoginOpen} autoHideDuration={1000} onClose={toggleSnackbar}
-          anchorOrigin = {{ vertical:'top', horizontal:'middle' }}
+          anchorOrigin = {{ vertical:'top', horizontal:'center' }}
           >
               <Alert severity="success" style={{backgroundColor:"#00acc1"}}>Você está conectado(a)!</Alert>
           </Snackbar>
diff --git a/src/Components/IllegalContentModal.js b/src/Components/IllegalContentModal.js
index 7b2060f5d40fec1594801d148248e21257dcfea9..01ccf37bca84035048722dc7e1175c0c4b03a3f9 100644
--- a/src/Components/IllegalContentModal.js
+++ b/src/Components/IllegalContentModal.js
@@ -100,8 +100,8 @@ export default function IllegalContentModal (props) {
         aria-labelledby="transition-modal-title"
         aria-describedby="transition-modal-description"
         open={props.open}
-        animation={true}
-        centered={true}
+         
+        centered="true"
         onClose={props.handleClose}
         closeAfterTransition
         BackdropComponent={Backdrop}
diff --git a/src/Components/LoginComponent.js b/src/Components/LoginComponent.js
index f82c24c668af5f5063c0cbfbffca422ef5cf0093..cb1fe4985555d702fe02931857b2f35b1de31110 100644
--- a/src/Components/LoginComponent.js
+++ b/src/Components/LoginComponent.js
@@ -122,10 +122,10 @@ export default function LoginComponent (props) {
 
         <StyledLogin
             aria-labelledby="transition-modal-title"
-            aria-describedby="transition-modal-description"
+            aria-describedby="transition-modal-description"   
             open={props.open}
-            animation={true}
-            centered={true}
+            animation="true"
+            centered="true"
             onClose={props.handleClose}
             closeAfterTransition
             BackdropComponent={Backdrop}
diff --git a/src/Components/LoginContainer.js b/src/Components/LoginContainer.js
index ccdc075a1565fb8a139d21a0c8ffe1f951555fc1..aaf89d2182dfb74eedb1da3228ea950ae5880e76 100644
--- a/src/Components/LoginContainer.js
+++ b/src/Components/LoginContainer.js
@@ -107,7 +107,7 @@ class LoginContainer extends Component {
                         </H3Styled>
                     </H3Div>
 
-                    <form ref="form" onSubmit={this.onSubmit}>
+                    <form onSubmit={this.onSubmit}>
                         <FormInput
                             inputType={"text"}
                             name={"email"}
diff --git a/src/Components/LoginModal.js b/src/Components/LoginModal.js
index 65f72448929b8d24389c8fbffbc9d834524a7833..9f96c8d0f2b886bff106b27a6751130f33eedcbf 100644
--- a/src/Components/LoginModal.js
+++ b/src/Components/LoginModal.js
@@ -114,8 +114,7 @@ export default function LoginModal (props){
             aria-labelledby="transition-modal-title"
             aria-describedby="transition-modal-description"
             open={props.open}
-            animation={true}
-            centered={true}
+            centered="true"
             onClose={props.handleClose}
             closeAfterTransition
             BackdropComponent={Backdrop}
diff --git a/src/Components/MenuBar.js b/src/Components/MenuBar.js
index 4517732b096fb959792360634750dbf71249d69c..6e546fc653c2e75328bfed156622b66bd48babdf 100644
--- a/src/Components/MenuBar.js
+++ b/src/Components/MenuBar.js
@@ -136,7 +136,6 @@ export default function MenuBar(props){
         {
             state.userIsLoggedIn
             ? (
-                [
                     <>
                         <div style={{boxSizing:"border-box"}}>
                             <Link to="/termos-publicar-recurso">
@@ -157,16 +156,13 @@ export default function MenuBar(props){
                         <MenuList items={minhaArea}/>
 
                     </>
-                ]
             )
             : (
-                [
                     <React.Fragment>
                         <ButtonPubRecursoStyled onClick={props.openLogin}>PUBLICAR RECURSO?</ButtonPubRecursoStyled>
                         <ButtonStyled onClick={props.openLogin}><ExitToAppIcon style={{color:"#00bcd4"}}/>Entrar</ButtonStyled>
                         <ButtonStyled onClick={props.openSignUp}>Cadastre-se</ButtonStyled>
                     </React.Fragment>
-                ]
             )
         }
 
diff --git a/src/Components/ModalAlterarAvatar/ModalAlterarAvatar.js b/src/Components/ModalAlterarAvatar/ModalAlterarAvatar.js
index 84f6981adf472c5ee88dd66315f14ec93d3ddfff..0698c94b2a09389d8f787f36bc29c5975ea390b0 100644
--- a/src/Components/ModalAlterarAvatar/ModalAlterarAvatar.js
+++ b/src/Components/ModalAlterarAvatar/ModalAlterarAvatar.js
@@ -45,8 +45,8 @@ export default function ModarAlterarAvatar (props){
             aria-labelledby="transition-modal-title"
             aria-describedby="transition-modal-description"
             open={props.open}
-            animation={true}
-            centered={true}
+             
+            centered="true"
             onClose={props.handleClose}
             closeAfterTransition
             BackdropComponent={Backdrop}
diff --git a/src/Components/ModalAlterarCover/ModalAlterarCover.js b/src/Components/ModalAlterarCover/ModalAlterarCover.js
index d354f41723f8d9c23b36f97dec54f63567a2856c..86636826010d9e129fd22192535c8aec56c310ed 100644
--- a/src/Components/ModalAlterarCover/ModalAlterarCover.js
+++ b/src/Components/ModalAlterarCover/ModalAlterarCover.js
@@ -62,8 +62,8 @@ export default function ModarAlterarCover (props){
             aria-labelledby="transition-modal-title"
             aria-describedby="transition-modal-description"
             open={props.open}
-            animation={true}
-            centered={true}
+             
+            centered="true"
             onClose={props.handleClose}
             closeAfterTransition
             BackdropComponent={Backdrop}
diff --git a/src/Components/ModalConfirmarUnfollow.js b/src/Components/ModalConfirmarUnfollow.js
index 6d1ee356259ba6a825e76f273faaefdab8b764dd..cc15d0b9a40e1aea666cf453fc67af1df6abc7f6 100644
--- a/src/Components/ModalConfirmarUnfollow.js
+++ b/src/Components/ModalConfirmarUnfollow.js
@@ -67,8 +67,8 @@ export default function IllegalContentModal (props) {
         aria-labelledby="transition-modal-title"
         aria-describedby="transition-modal-description"
         open={props.open}
-        animation={true}
-        centered={true}
+         
+        centered="true"
         onClose={props.handleClose}
         closeAfterTransition
         BackdropComponent={Backdrop}
diff --git a/src/Components/ModalExcluirComentario.js b/src/Components/ModalExcluirComentario.js
index 17e402a6c0c992b5f130d3f2a2d0ddc877905051..88ceeceff8c5c798b2e1fe85872451a43178172e 100644
--- a/src/Components/ModalExcluirComentario.js
+++ b/src/Components/ModalExcluirComentario.js
@@ -69,8 +69,8 @@ export default function ModalExcluir (props) {
         aria-labelledby="transition-modal-title"
         aria-describedby="transition-modal-description"
         open={props.open}
-        animation={true}
-        centered={true}
+         
+        centered="true"
         onClose={props.handleClose}
         closeAfterTransition
         BackdropComponent={Backdrop}
diff --git a/src/Components/PageProfessorComponents/ModalConfirmarProfessor.js b/src/Components/PageProfessorComponents/ModalConfirmarProfessor.js
index 05d49f3bbc1ef2f412cb6109dc3bd51ceaa3040a..cc25a3b4aeb1f0fad21b2d9f56e6b9d6f915c719 100644
--- a/src/Components/PageProfessorComponents/ModalConfirmarProfessor.js
+++ b/src/Components/PageProfessorComponents/ModalConfirmarProfessor.js
@@ -41,8 +41,8 @@ export default function ModalConfirmarProfessor (props){
             aria-labelledby="transition-modal-title"
             aria-describedby="transition-modal-description"
             open={props.open}
-            animation={true}
-            centered={true}
+             
+            centered="true"
             onClose={props.handleClose}
             closeAfterTransition
             BackdropComponent={Backdrop}
diff --git a/src/Components/RedirectModal.js b/src/Components/RedirectModal.js
index b41d72ddefaf5a65f6c7b3dc02c7ab6d8b37094c..bc786eca8e32d73651fcb3b7f279b0aa9b0a5180 100644
--- a/src/Components/RedirectModal.js
+++ b/src/Components/RedirectModal.js
@@ -53,8 +53,7 @@ export default function RedirectModal (props) {
             aria-labelledby="transition-modal-title"
             aria-describedby="transition-modal-description"
             open={props.open}
-            animation={true}
-            centered={true}
+            centered="true"
             onClose={props.handleClose}
             closeAfterTransition
             BackdropComponent={Backdrop}
diff --git a/src/Components/ReportModal.js b/src/Components/ReportModal.js
index 349eb13ab30e318488d53c69cb30a8e3e65bbbce..16a8c269b0120c0e08d4dbb921ad3aba3b1f919f 100644
--- a/src/Components/ReportModal.js
+++ b/src/Components/ReportModal.js
@@ -89,8 +89,8 @@ export default function ReportModal (props) {
             aria-labelledby="transition-modal-title"
             aria-describedby="transition-modal-description"
             open={props.open}
-            animation={true}
-            centered={true}
+             
+            centered="true"
             onClose={props.handleClose}
             closeAfterTransition
             BackdropComponent={Backdrop}
diff --git a/src/Components/ResourcePageComponents/CommentsArea.js b/src/Components/ResourcePageComponents/CommentsArea.js
index 27258099ed9c07e761005b253c576522587ca605..afebc50bc5a4d2a912eeee03bfdef8517843e070 100644
--- a/src/Components/ResourcePageComponents/CommentsArea.js
+++ b/src/Components/ResourcePageComponents/CommentsArea.js
@@ -50,7 +50,6 @@ export default function CommentsArea (props) {
             {
                 (state.currentUser.id !== '') ?
                 (
-                    [
                         <Grid item xs={12} >
                             <GrayContainer>
                                 <h3>Conte sua experiência com o Recurso</h3>
@@ -63,16 +62,15 @@ export default function CommentsArea (props) {
                                             recursoId={props.recursoId}
                                             handleSnackbar={props.handleSnackbar}
                                             rerenderCallback={forceUpdate}
+                                            recurso={true}
                                             />
                                     </Grid>
                                 </Grid>
                             </GrayContainer>
                         </Grid>
-                    ]
                 )
                 :
                 (
-                    [
                         <Grid item xs={12}>
                             <LogInToComment>
                                 <span className="span-laranja">Você precisa entrar para comentar</span>
@@ -82,13 +80,11 @@ export default function CommentsArea (props) {
                                  </Button>
                             </LogInToComment>
                         </Grid>
-                    ]
                 )
             }
             {
                 comentarios.length !== 0 ?
                 (
-                    [
                             <ComentariosBox>
                                 <h3>{comentarios.length} {comentarios.length != 1 ? 'Relatos' : 'Relato'} sobre o uso do Recurso</h3>
                                 {
@@ -113,11 +109,9 @@ export default function CommentsArea (props) {
                                     )
                                 }
                             </ComentariosBox>
-                    ]
                 )
                 :
                 (
-                    [
                         <Grid item xs={12}>
                             <LogInToComment>
                                 <img src={Comentarios} />
@@ -127,7 +121,6 @@ export default function CommentsArea (props) {
                                 </AoRelatar>
                             </LogInToComment>
                         </Grid>
-                    ]
                 )
             }
         </Grid>
diff --git a/src/Components/ResourcePageComponents/Footer.js b/src/Components/ResourcePageComponents/Footer.js
index 84e072a1d7fc1ab1f552d463892d5a5a010dd102..2f6adf918b6eb51e7749bd34bbe01942422d38e2 100644
--- a/src/Components/ResourcePageComponents/Footer.js
+++ b/src/Components/ResourcePageComponents/Footer.js
@@ -1,3 +1,21 @@
+/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre
+Departamento de Informatica - Universidade Federal do Parana
+
+This file is part of Plataforma Integrada MEC.
+
+Plataforma Integrada MEC is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Plataforma Integrada MEC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with Plataforma Integrada MEC.  If not, see <http://www.gnu.org/licenses/>.*/
+
 import React, {useState, useContext} from 'react'
 import {Store} from '../../Store.js'
 import styled from 'styled-components'
@@ -13,6 +31,7 @@ import ReportModal from '../ReportModal.js'
 import ReportRecursoForm from '../ReportRecursoForm.js'
 import ShareModal from '../ShareModal.js'
 import GuardarModal from '../GuardarModal.js'
+import RedirectModal from '../RedirectModal'
 
 export default function Footer (props) {
     const {state} = useContext(Store)
@@ -25,6 +44,7 @@ export default function Footer (props) {
     const [reportOpen, toggleReport] = useState(false)
     const [shareOpen, toggleShare] = useState(false)
     const [saveToCol, toggleSave] = useState(false)
+    const [redirectOpen, toggleRedirect] = useState(false)
 
     return (
         <React.Fragment>
@@ -34,13 +54,16 @@ export default function Footer (props) {
                 complainableType={"LearningObject"}
                 />
             <ShareModal open={shareOpen} handleClose={() => {toggleShare(false)}}
-                thumb={props.thumb} title={props.title} link={props.link}
+                thumb={props.thumb} title={props.title} link={props.currPageLink}
                 />
 
             <GuardarModal open={saveToCol} handleClose={() => {toggleSave(false)}}
                 thumb={props.thumb} title={props.title} recursoId={props.recursoId}
                 handleSnackbar={props.handleSnackbar}
                 />
+            <RedirectModal open={redirectOpen} handleClose={() => {toggleRedirect(false)}}
+                link={props.link}
+                />
             <OpcoesDiv>
                 <StyledGrid container>
 
@@ -71,13 +94,26 @@ export default function Footer (props) {
                         </ButtonGrey>
                     </Grid>
 
-                    <Grid item xs={3} style={{justifyContent : "right !important"}}>
-                        <ButtonOrange onClick={() => {enableDownload()}}>
-                            <span className="text">
-                                <GetAppIcon className="icon"/> Baixar Recurso
-                            </span>
-                        </ButtonOrange>
-                    </Grid>
+                    {
+                        props.downloadableLink &&
+                        <Grid item xs={3} style={{justifyContent : "right !important"}}>
+                            <ButtonOrange onClick={() => {enableDownload()}}>
+                                <span className="text">
+                                    <GetAppIcon className="icon"/> Baixar Recurso
+                                    </span>
+                                </ButtonOrange>
+                        </Grid>
+                    }
+                    {
+                        (!props.downloadableLink && props.link ) &&
+                        <Grid item xs={3} style={{justifyContent : "right !important"}}>
+                            <ButtonOrange onClick={() => {toggleRedirect(true)}}>
+                                <span className="text">
+                                    <CallMadeIcon className="icon"/> Abrir Recurso
+                                    </span>
+                                </ButtonOrange>
+                        </Grid>
+                    }
 
                 </StyledGrid>
             </OpcoesDiv>
diff --git a/src/Components/ResourcePageComponents/Sobre.js b/src/Components/ResourcePageComponents/Sobre.js
index d130368afd5db70a6c213e826a8cb2cb964fc504..8216e930831263b833e262255ec130fa1d66ef9f 100644
--- a/src/Components/ResourcePageComponents/Sobre.js
+++ b/src/Components/ResourcePageComponents/Sobre.js
@@ -61,6 +61,7 @@ export default function Sobre (props) {
                 icon={<SdCardIcon/>}
                 label={'Tamanho: '}
                 value={(props.attachments[0].size / 1000000).toFixed(2) + ' Mb'}
+                key={props.attachments[0].id}
                 />)
         }
         props.language.map( (lang) =>
@@ -76,6 +77,7 @@ export default function Sobre (props) {
                 icon={<InsertDriveFileIcon/>}
                 label={'Formato: '}
                 value={props.mimeType}
+                key={props.mimeType}
                 />)
         }
         if (props.createdAt) {
@@ -83,6 +85,7 @@ export default function Sobre (props) {
                 icon={<DateRangeIcon/>}
                 label={'Data de Envio: '}
                 value={moment(props.createdAt).format("DD/MM/YYYY")}
+                key={"dateCreatedAt"}
                 />)
         }
         if (props.updatedAt) {
@@ -90,6 +93,7 @@ export default function Sobre (props) {
                 icon={<UpdateIcon/>}
                 label={'Modificado em: '}
                 value={moment(props.createdAt).format("DD/MM/YYYY")}
+                key={"dateUpdatedAt"}
                 />)
         }
         if (props.license) {
@@ -105,7 +109,9 @@ export default function Sobre (props) {
                             {props.license.name}<br/>4.0 Internacional
                         </p>
                     </div>
-                }/>)
+                }
+                key={props.license.id}
+                />)
         }
         else {
             aux.push(<AdditionalInfoItem
@@ -197,21 +203,17 @@ export default function Sobre (props) {
                     {
                         collapsed ?
                         (
-                            [
                                 <React.Fragment>
                                     <span>VER MENOS</span>
                                     <ExpandLessIcon/>
                                 </React.Fragment>
-                            ]
                         )
                         :
                         (
-                            [
                                 <React.Fragment>
                                     <span>VER MAIS</span>
                                     <ExpandMoreIcon/>
                                 </React.Fragment>
-                            ]
                         )
                     }
                 </CollapseControl>
diff --git a/src/Components/ResourcePageComponents/TextoObjeto.js b/src/Components/ResourcePageComponents/TextoObjeto.js
index a9e25cfde32dac52ff39d0c385f41d74002dc1b9..67f6b3d315b5f1ae8669cac3c665c6b2fae88080 100644
--- a/src/Components/ResourcePageComponents/TextoObjeto.js
+++ b/src/Components/ResourcePageComponents/TextoObjeto.js
@@ -81,7 +81,7 @@ export default function TextoObjeto (props) {
 
                     {
                         infos.map( (info) =>
-                            <span className={"info-recurso"}>
+                            <span className={"info-recurso"} key={info.label}>
                                 <span className={"info-cabecalho-recurso"}>{info.label}</span>
                                 <span className={"dado-recurso"}>{info.text}</span>
                             </span>
diff --git a/src/Components/ShareModal.js b/src/Components/ShareModal.js
index 33b5c599c25c6276d50019516ee324e395048fd6..5bf48e62394fe4a55f2cd3d23edbd7c6f6c08195 100644
--- a/src/Components/ShareModal.js
+++ b/src/Components/ShareModal.js
@@ -26,20 +26,11 @@ import SignUpContainer from './SignUpContainerFunction.js'
 import {Store} from '../Store.js'
 import axios from 'axios'
 import {apiDomain} from '../env';
-import CloseIcon from '@material-ui/icons/Close';
 import Grid from '@material-ui/core/Grid';
 import Facebook from '../img/facebook.svg'
 import Twitter from '../img/twitter.svg'
 import LinkIcon from '../img/link_icon.svg'
-
-
-function CloseModalButton (props) {
-    return (
-        <StyledCloseModalButton onClick={props.handleClose}>
-            <CloseIcon/>
-        </StyledCloseModalButton>
-    )
-}
+import CloseModalButton from './CloseModalButton.js'
 
 export default function ReportModal (props) {
         const pRef = useRef(props.link);
@@ -48,8 +39,6 @@ export default function ReportModal (props) {
           console.log(pRef.current)
         pRef.current.select();
         document.execCommand('copy');
-        // This is just personal preference.
-        // I prefer to not show the the whole text area selected.
         e.target.focus();
       };
 
@@ -58,8 +47,7 @@ export default function ReportModal (props) {
             aria-labelledby="transition-modal-title"
             aria-describedby="transition-modal-description"
             open={props.open}
-            animation={true}
-            centered={true}
+            centered="true"
             onClose={props.handleClose}
             closeAfterTransition
             BackdropComponent={Backdrop}
diff --git a/src/Components/SignUpModal.js b/src/Components/SignUpModal.js
index 550ac75f94c16b4aa6bb42c6a5fe0174db3054a4..b4c156af213fcc92dd57daa0996ce4a40d8381b6 100644
--- a/src/Components/SignUpModal.js
+++ b/src/Components/SignUpModal.js
@@ -92,8 +92,8 @@ export default function SignUpModal (props) {
             aria-labelledby="transition-modal-title"
             aria-describedby="transition-modal-description"
             open={props.open}
-            animation={true}
-            centered={true}
+             
+            centered="true"
             onClose={props.handleClose}
             closeAfterTransition
             BackdropComponent={Backdrop}