sábado, 26 de junho de 2021

Passando parametros de retorno do Moodle para um URL externo

 Depois de algum tempo sem alimentar o blog, fui desafiado a criar um mecanismo de navegação entre o Moodle e uma página HTML externa, de forma que um parâmetro "URL de retorno" seja enviado quando o aluno clicar no link dentro do Moodle. Para compreender este exemplo você precisa de alguns conhecimentos básicos sobre HTML e Javascript. 

O contexto anterior era que ao acessar a página HTML o usuário sai do Moodle e passa a navegar dentro da página HTML externa sem qualquer vinculo como o Moodle, e quando ele quer voltar não ha link/botão para voltar, ou há um link/botão criado de forma estática no código impedindo que vários cursos usem a mesma página HTML. 

Para este exempo vamos utilizar a ferramenta nativa URL do moodle presete em todas as versões.



Este recurso permite adicionar um url/link de uma página externa e é aqui que nós iremos adicionar o parâmetro de retorno. 





Nós iremos editar o recurso "URL externo" para  adicionar um parametro de retorno da seguinte forma:
https://paginaexterna.com.br/apostia/modulo1.html?return=https://mymoodle.com.br/course/view.php?id=51

 


Se desejar você pode também passar alguns outros parâmetros pré-programados disponíevis no Moodle, como nome do aluno, nome do curso, e-mail, dentre outros. Mas infelizmante dentre as opções disponíveis não existe um parametro para URL de retorno. 


Feito isso vamos acessar o link gerado pelo Moodle e obeservar os parâmetros que serão enviado para a página HTML externa. É obvio que você precisa ser editor da página HTML para que ela possa receber e interpretar esses parâmetros, caso contrário não terá nenhum efeito enviar um parâmetro para uma página que não está preparada para recebêlos. 


Do outro lado usando o Firebug ou Ferramentas do Programador do Crome podemos observar que os parâmetros desejados foram corretamente enviados para a página HTML pelo método HTTP GET na URL. 


Agora é só usar uma função Javascript para salvar essa informação em um cookie do navegador e usá-la quando necessário. Criei um exemplo bem simples usando Javascript para criar um link de retorno na página. Primeiro eu inseri duas funções Javascript para facilitar cirar e recuperar cookies. 

<script>
function setCookie(cname, cvalue, exdays) { 
  const d = new Date();
  d.setTime(d.getTime() + (exdays*24*60*60*1000));
  let expires = "expires="+ d.toUTCString();
  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
  let name = cname + "=";
  let decodedCookie = decodeURIComponent(document.cookie);
  let ca = decodedCookie.split(';');
  for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
  c = c.substring(1);
}
if (c.indexOf(name) == 0) {
  return c.substring(name.length, c.length);
}
  }
  return "";
}

</script>

Agora na página HTML vamos recupear os parâmetros e salvar cada variável em um cookie que fica armazenado temporáriamente no navegador do usuário. Faça isso na página inicial ou index do seu site, não precisa repetir esta operação em todas as páginas, somente onde irá receber os parâmetros vindos do Moodle.

<script>

const urlParams = new URLSearchParams(window.location.search);

//Recebe um parâmetro e salva em cookie no navegador do usuário
setCookie("urlReturn", urlParams.get('return'));

//Redireciona para a tela inicial do recurso html
window.location.href = "modulo1/aula1.html";  

</script>

 

 Agora precisamos recuperar o parâmetro e adicionar no código da página de forma dinâmica. Segue um exemplo de como poderá recuperar o parâmetro salvo no cookie e adicionar dinâmicamente a um link no código HTML. Este procedimento deverá ser repetido em todas as páginas que forem mostrar o link "Retornar ao Moodle". 

<body>

<p id="linkVoltar"></p>

</body>

<script>

document.getElementById("linkVoltar").innerHTML =  '<a href="'+getCookie("urlReturn")+'" >Retornar ao Moodle</a>';

</script>


O resultado será um link com com o URL de retorno para o Moodle, assim será possivel navegar até uma página HTML externa e voltar para o mesmo curso no Moodle, a mesma página pode ser usada por vários cursos diferentes e até instalações Moodle diferentes. Também é possível cirar um link par seguir para próxima atividade sem que o aluno precise alternar abas do navegador, evitando que ele se perca na navegação. 

 


E da mesma forma você poderá usar outros parâmetros como nome do aluno, nome do curso, um identificador do aluno, etc. Neste exemplo, vamos dar boas vindas ao aluno: 



Com este exemplo você já conseiguirá direcionar o aluno a uma página HTML externa, enviar alguns parâmetros e criar um link ou botão de retordo para o curso no Moodle ou próxima atividade.  Daí em diante é com a sua criatividade, faça bom proveito. 

Infelizmente esta opção não permite que a página HTML devolva parâmetros para o Moodle, mas existem outros recursos que podem fazer isso, mas não trataremos nesse post, farei outro em breve, prometo.

Atenção: 

Faz-se necessário obsevar que parâmetros sigilosos ou que comprometam a privacidade não devem ser enviados dessa forma a uma página extena sem os devidos cuidados de segurança.O URL de retorno não compromete a seguraça pois ao retornar ao Moodle este irá exigir autenticação do aluno para permitir que ele acesse o curso, caso contrário o Moodle irá recusar o acesso. 

Um comentário:

  1. Titanium Rainbow Quartz - White Stone - TITUNIA ARENA
    Titanium Rainbow Quartz. titanium wedding ring White Stone. In the titanium earrings studs heart of the rainbow titanium nipple bars is a ruby, with a titanium solvent trap monocore red 유로 스타 사이트 ruby pattern. You may notice a purple $6.99 · ‎Out of stock

    ResponderExcluir