{"id":3240,"date":"2025-07-25T14:15:40","date_gmt":"2025-07-25T14:15:40","guid":{"rendered":"https:\/\/fe.up.pt\/iaces\/?page_id=3240"},"modified":"2025-07-25T14:15:40","modified_gmt":"2025-07-25T14:15:40","slug":"ser-membro-da-iaces-lc-porto","status":"publish","type":"page","link":"https:\/\/fe.up.pt\/iaces\/ser-membro-da-iaces-lc-porto\/","title":{"rendered":"SER MEMBRO DA IACES LC PORTO"},"content":{"rendered":"\n<div style=\"font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; max-width: 480px; margin: 60px auto; background: #fff; padding: 30px 35px; border-radius: 12px; box-shadow: 0 8px 24px rgb(0 0 0 \/ 0.1);\">\n  <h2 style=\"text-align:center; color: #0073e6; margin-bottom: 20px;\">Envie o seu CV<\/h2>\n  <p style=\"text-align:center; color:#555; font-size: 1rem; margin-bottom: 30px;\">Aceitamos ficheiros PDF, DOC e DOCX. Fa\u00e7a upload e depois descarregue o seu ficheiro.<\/p>\n\n  <form id=\"upload-form\" style=\"display: flex; flex-direction: column; gap: 18px;\" autocomplete=\"off\" novalidate>\n    <label for=\"cv-input\" style=\"cursor: pointer; border: 2px dashed #0073e6; padding: 40px 20px; border-radius: 12px; text-align: center; color: #0073e6; font-weight: 600; transition: background-color 0.3s;\">\n      \ud83d\udcc2 Clique ou arraste o seu ficheiro aqui\n      <input id=\"cv-input\" type=\"file\" accept=\".pdf,.doc,.docx\" required style=\"display:none\" \/>\n    <\/label>\n\n    <div id=\"file-info\" style=\"display:none; padding: 15px; background: #e6f0ff; border-radius: 10px; color: #004a99; font-weight: 600; display: flex; align-items: center; gap: 15px;\">\n      <span style=\"font-size: 32px;\">\ud83d\udcc4<\/span>\n      <div>\n        <div id=\"file-name\" style=\"font-size: 1rem;\"><\/div>\n        <div id=\"file-size\" style=\"font-size: 0.85rem; color: #3366cc;\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div id=\"progress-container\" style=\"display:none; background: #cce0ff; border-radius: 10px; overflow: hidden; height: 16px;\">\n      <div id=\"progress-bar\" style=\"height: 100%; width: 0; background: #0073e6; transition: width 0.3s ease;\"><\/div>\n    <\/div>\n\n    <button id=\"upload-btn\" type=\"submit\" disabled style=\"background: #0073e6; color: white; font-weight: 700; padding: 14px 0; border: none; border-radius: 10px; font-size: 1rem; cursor: not-allowed; transition: background-color 0.3s;\">\n      Enviar CV\n    <\/button>\n  <\/form>\n\n  <div id=\"message\" style=\"margin-top: 20px; font-weight: 600; color: #0073e6; text-align: center; min-height: 24px;\"><\/div>\n\n  <div id=\"download-section\" style=\"margin-top: 40px; text-align: center; display: none;\">\n    <h3 style=\"color: #004a99; margin-bottom: 15px;\">Descarregue o seu CV:<\/h3>\n    <a id=\"download-link\" href=\"#\" download style=\"display: inline-block; background: #0073e6; color: white; padding: 12px 25px; border-radius: 12px; font-weight: 700; font-size: 1.1rem; text-decoration: none; transition: background-color 0.3s;\">\n      \u2b07\ufe0f Descarregar\n    <\/a>\n  <\/div>\n<\/div>\n\n<script>\n  const form = document.getElementById('upload-form');\n  const input = document.getElementById('cv-input');\n  const uploadBtn = document.getElementById('upload-btn');\n  const fileInfo = document.getElementById('file-info');\n  const fileNameEl = document.getElementById('file-name');\n  const fileSizeEl = document.getElementById('file-size');\n  const progressContainer = document.getElementById('progress-container');\n  const progressBar = document.getElementById('progress-bar');\n  const message = document.getElementById('message');\n  const downloadSection = document.getElementById('download-section');\n  const downloadLink = document.getElementById('download-link');\n\n  let selectedFile = null;\n\n  input.addEventListener('change', () => {\n    const file = input.files[0];\n    if (!file) {\n      resetForm();\n      return;\n    }\n\n    const validTypes = ['application\/pdf', 'application\/msword', 'application\/vnd.openxmlformats-officedocument.wordprocessingml.document'];\n    if (!validTypes.includes(file.type)) {\n      message.style.color = 'red';\n      message.textContent = 'Formato inv\u00e1lido! S\u00f3 aceitamos PDF, DOC, DOCX.';\n      resetForm();\n      return;\n    }\n\n    selectedFile = file;\n    fileInfo.style.display = 'flex';\n    fileNameEl.textContent = file.name;\n    fileSizeEl.textContent = (file.size \/ 1024).toFixed(2) + ' KB';\n\n    uploadBtn.disabled = false;\n    uploadBtn.style.cursor = 'pointer';\n    message.textContent = '';\n    progressContainer.style.display = 'none';\n    progressBar.style.width = '0';\n    downloadSection.style.display = 'none';\n  });\n\n  form.addEventListener('submit', e => {\n    e.preventDefault();\n    if (!selectedFile) return;\n\n    uploadBtn.disabled = true;\n    uploadBtn.style.cursor = 'not-allowed';\n    message.style.color = '#0073e6';\n    message.textContent = 'A enviar ficheiro...';\n\n    progressContainer.style.display = 'block';\n    progressBar.style.width = '0';\n\n    \/\/ Simular upload progress\n    let progress = 0;\n    const interval = setInterval(() => {\n      progress += Math.random() * 20;\n      if (progress >= 100) {\n        progress = 100;\n        clearInterval(interval);\n        uploadComplete();\n      }\n      progressBar.style.width = progress + '%';\n    }, 300);\n\n    function uploadComplete() {\n      message.style.color = 'green';\n      message.textContent = 'Upload conclu\u00eddo com sucesso!';\n\n      \/\/ Criar URL para download (base64)\n      const reader = new FileReader();\n      reader.onload = function(event) {\n        downloadLink.href = event.target.result;\n        downloadLink.download = selectedFile.name;\n        downloadSection.style.display = 'block';\n      };\n      reader.readAsDataURL(selectedFile);\n\n      \/\/ Reset bot\u00e3o e input\n      uploadBtn.disabled = false;\n      uploadBtn.style.cursor = 'pointer';\n      input.value = '';\n      selectedFile = null;\n      fileInfo.style.display = 'none';\n      progressContainer.style.display = 'none';\n    }\n  });\n\n  function resetForm() {\n    selectedFile = null;\n    uploadBtn.disabled = true;\n    uploadBtn.style.cursor = 'not-allowed';\n    fileInfo.style.display = 'none';\n    progressContainer.style.display = 'none';\n    message.textContent = '';\n    downloadSection.style.display = 'none';\n  }\n<\/script>\n\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Envie o seu CV Aceitamos ficheiros PDF, DOC e DOCX. Fa\u00e7a upload e depois descarregue o seu ficheiro. \ud83d\udcc2 Clique ou arraste o seu ficheiro aqui \ud83d\udcc4 Enviar CV Descarregue o seu CV: \u2b07\ufe0f Descarregar<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"categoria_pag":[],"class_list":["post-3240","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/fe.up.pt\/iaces\/wp-json\/wp\/v2\/pages\/3240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fe.up.pt\/iaces\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/fe.up.pt\/iaces\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/fe.up.pt\/iaces\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/fe.up.pt\/iaces\/wp-json\/wp\/v2\/comments?post=3240"}],"version-history":[{"count":1,"href":"https:\/\/fe.up.pt\/iaces\/wp-json\/wp\/v2\/pages\/3240\/revisions"}],"predecessor-version":[{"id":3241,"href":"https:\/\/fe.up.pt\/iaces\/wp-json\/wp\/v2\/pages\/3240\/revisions\/3241"}],"wp:attachment":[{"href":"https:\/\/fe.up.pt\/iaces\/wp-json\/wp\/v2\/media?parent=3240"}],"wp:term":[{"taxonomy":"categoria_pag","embeddable":true,"href":"https:\/\/fe.up.pt\/iaces\/wp-json\/wp\/v2\/categoria_pag?post=3240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}