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.
https://paginaexterna.com.br/apostia/modulo1.html?return=https://mymoodle.com.br/course/view.php?id=51
<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.
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.