index.js 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. // Button to return to the top of page
  2. let btnVoltar = document.getElementById("ifr__btn__backToTop");
  3. window.onscroll = function () {
  4. scrollFunction();
  5. };
  6. function scrollFunction() {
  7. if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
  8. btnVoltar.style.display = "block";
  9. } else {
  10. btnVoltar.style.display = "none";
  11. }
  12. }
  13. function backToTop() {
  14. document.body.scrollTop = 0;
  15. document.documentElement.scrollTop = 0;
  16. }
  17. // Insert in all pages the footer
  18. // let footer = document.getElementById("footer");
  19. // footer.innerHTML =
  20. // "<p>Atualizado pela ultima vez em: 3 de Outubro de 2023 -- por <a href='http://www.ime.usp.br/~laira'>Laira</a>.</p>";
  21. // Remover ultima parte da URL atual
  22. function pegarURL () {
  23. strUrl = window.location.href;
  24. ind = strUrl.lastIndexOf("/");
  25. subStrigURL = strUrl.substring(0, ind);
  26. // alert("carregar_pagina.js: " + subStrigURL);
  27. return subStrigURL;
  28. }
  29. // Insert in all pages the footer
  30. //leo const baseUrl = "/about";
  31. const baseUrl = pegarURL();
  32. const lastUpdate =
  33. "Atualizado pela ultima vez em: 25 de março de 2025 -- por <a href='http://www.ime.usp.br/~laira'>Laira</a>.";
  34. let footer = document.getElementById("footer");
  35. footer.innerHTML = `
  36. <div class="row">
  37. <div class="col-md-6 d-flex flex-column align-items-center justify-content-end">
  38. <a href="https://line.ime.usp.br/" title="Seguir para a página principal do LInE">
  39. <img src="${baseUrl}/assets/logo_line_no_sub.png" height="70"/>
  40. </a>
  41. <span>Free Education, Private Data</span>
  42. </div>
  43. <div class="col-md-6 d-flex flex-column align-items-center justify-content-end">
  44. <span>
  45. <a href="/index.html" target="_self" title="Seguir para a página principal do iFrações">iFrações</a> |
  46. <a href="https://line.ime.usp.br/" title="Seguir para a página principal do LInE">LInE</a> |
  47. <a href="https://www.matematica.br/" title="Seguir para a página principal do iMática">iM&aacute;tica</a>
  48. </span>
  49. </div>
  50. </div>
  51. <hr/>
  52. <p>${lastUpdate}</p>
  53. </div>`;
  54. // Cria menu de navegação
  55. let nav = document.querySelector(".navbar");
  56. nav.innerHTML = `
  57. <div class="container-fluid">
  58. <a class="navbar-brand" aria-current="page" target="_self" href="index.html">iFractions</a>
  59. <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDropdown"
  60. aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
  61. <span class="navbar-toggler-icon"></span>
  62. </button>
  63. <div class="collapse navbar-collapse" id="navbarNavDropdown">
  64. <ul class="navbar-nav">
  65. <li class="nav-item">
  66. <a class="nav-link" target="_self" href="index.html#download">Download</a>
  67. </li>
  68. <li class="nav-item">
  69. <a class="nav-link" target="_self" href="./paginas/sobre/page_1.html">Conhecendo o iFractions</a>
  70. </li>
  71. <li class="nav-item dropdown">
  72. <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button"
  73. data-bs-toggle="dropdown" aria-expanded="false"> Documentação
  74. </a>
  75. <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
  76. <li><a class="dropdown-item" target="_self" href='./paginas/documentacao.html'>Início</a>
  77. </li>
  78. <li><a class="dropdown-item" target="_self" href='./paginas/documentacao.html#sou-prof'>Sou Professor</a>
  79. </li>
  80. <li><a class="dropdown-item" target="_self" href='./paginas/documentacao.html#sou-admin'>Sou
  81. Administrador Moodle</a>
  82. </li>
  83. <li><a class="dropdown-item" target="_self" href='./paginas/documentacao.html#sou-dev'>Sou
  84. Desenvolvedor</a>
  85. </li>
  86. </ul>
  87. </li>
  88. <li class="nav-item">
  89. <a class="nav-link" target="_self" href="./paginas/publicacoes.html">Publicações</a>
  90. </li>
  91. </ul>
  92. </div>
  93. </div>
  94. `;
  95. // Coloca imagem no modal
  96. const modal = document.getElementById("myModal");
  97. let img = document.getElementsByClassName("ifr__img");
  98. for (let i = 0; i < img.length; i++) {
  99. img[i].addEventListener("click", function () {
  100. modal.style.display = "block";
  101. document.getElementById("myModal-img").src = img[i].src;
  102. document.getElementById("caption").innerHTML = this.alt;
  103. });
  104. }
  105. let span = document.getElementsByClassName("close")[0];
  106. span.onclick = () => (modal.style.display = "none");
  107. // Gera indice
  108. const toc = document.querySelector(".ifr__toc");
  109. if (toc) {
  110. const sections_all = document.querySelectorAll("section");
  111. sections_all.forEach((section_h2) => {
  112. const h2 = section_h2.querySelectorAll("h2")[0];
  113. if (h2) {
  114. const h2_ul = document.createElement("ul");
  115. const h2_li = document.createElement("li");
  116. const h3_ul = document.createElement("ul");
  117. const sections_h3 = section_h2.querySelectorAll("section");
  118. sections_h3.forEach((section_h3) => {
  119. const h3 = section_h3.querySelectorAll("h3")[0];
  120. if (h3) {
  121. const h3_li = document.createElement("li");
  122. h3_li.innerHTML = `<a href="#${section_h3.id}" target="_self">${h3.innerHTML}</a>`;
  123. h3_ul.appendChild(h3_li);
  124. }
  125. });
  126. h2_li.innerHTML = `<a href="#${section_h2.id}" target="_self">${h2.innerHTML}</a>`;
  127. h2_ul.appendChild(h2_li);
  128. h2_ul.appendChild(h3_ul);
  129. toc.appendChild(h2_ul);
  130. }
  131. });
  132. }
  133. // Insert in all pages the footer
  134. const updateMenu = (depth) => {
  135. const path = depth == 1 ? "../" : "../../";
  136. const semiPath = depth == 1 ? "./" : "../";
  137. nav.innerHTML = `
  138. <div class="container-fluid">
  139. <a class="navbar-brand" aria-current="page" target="_self" href="${path}index.html">iFractions</a>
  140. <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDropdown"
  141. aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
  142. <span class="navbar-toggler-icon"></span>
  143. </button>
  144. <div class="collapse navbar-collapse" id="navbarNavDropdown">
  145. <ul class="navbar-nav">
  146. <li class="nav-item">
  147. <a class="nav-link" target="_self" href="${path}index.html#download">Download</a>
  148. </li>
  149. <li class="nav-item">
  150. <a class="nav-link" target="_self" href="${semiPath}sobre/page_1.html">Conhecendo o iFractions</a>
  151. </li>
  152. <li class="nav-item dropdown">
  153. <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button"
  154. data-bs-toggle="dropdown" aria-expanded="false"> Documentação
  155. </a>
  156. <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
  157. <li><a class="dropdown-item" target="_self" href='${semiPath}documentacao.html'>Início</a>
  158. </li>
  159. <li><a class="dropdown-item" target="_self" href='${semiPath}documentacao.html#sou-prof'>Sou Professor</a>
  160. </li>
  161. <li><a class="dropdown-item" target="_self" href='${semiPath}documentacao.html#sou-dev'>Sou
  162. Administrador Moodle</a>
  163. </li>
  164. <li><a class="dropdown-item" target="_self" href='${semiPath}documentacao.html#sou-admin'>Sou
  165. Desenvolvedor</a>
  166. </li>
  167. </ul>
  168. </li>
  169. <li class="nav-item">
  170. <a class="nav-link" target="_self" href="${semiPath}publicacoes.html">Publicações</a>
  171. </li>
  172. </ul>
  173. </div>
  174. </div>
  175. `;
  176. };