index.js 8.1 KB

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