{"id":8236822,"date":"2025-01-06T16:13:52","date_gmt":"2025-01-06T16:13:52","guid":{"rendered":"https:\/\/www.aese.pt\/scholarships-and-financial-aid\/"},"modified":"2026-05-12T18:19:28","modified_gmt":"2026-05-12T18:19:28","slug":"scholarships-and-financial-aid","status":"publish","type":"page","link":"https:\/\/www.aese.pt\/en\/scholarships-and-financial-aid\/","title":{"rendered":"Scholarships and financial aid"},"content":{"rendered":"\n\n<section id=\"\" class=\"listing-scholarships-container\">\n    <div class=\"listing-scholarships-header\">\n        <a id=\"listing-anchor\"><\/a> <!-- Anchor added here -->\n\n                    <h2 class=\"listing-scholarships-title\">\n                <svg width=\"28\" height=\"3\" viewBox=\"0 0 28 3\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M0.8 2.44184V0.841835H27.2V2.44184H0.8Z\" fill=\"#D83F00\" \/>\n                <\/svg>\n                We\u2019re investing in your future, together            <\/h2>\n                            <p class=\"listing-scholarships-description\">\n                Explore the scholarship and financial aid options available to support your academic journey. Whatever your needs may be, we\u2019re here to provide the support you need and help you achieve your goals. Discover the programs that best suit you.              <\/p>\n            <\/div>\n    <div class=\"listing-scholarships-content\">\n        <script>window.__scholarshipInitialData = {\"data\":{\"posts\":[],\"pagination\":{\"current_page\":1,\"total_pages\":0,\"number_of_posts\":0,\"last_page\":0}}};<\/script>        <div id=\"listing-scholarships-list\" class=\"listing-scholarships-list\"><\/div>\n        <div id=\"loading-spinner-scholarships\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 24 24\">\n                <path fill=\"currentColor\" fill-opacity=\".9\" d=\"M12 2.25c-5.384 0-9.75 4.366-9.75 9.75s4.366 9.75 9.75 9.75v-2.437A7.312 7.312 0 1 1 19.313 12h2.437c0-5.384-4.366-9.75-9.75-9.75\" \/>\n            <\/svg>\n        <\/div>\n    <\/div>\n    <div id=\"listing-scholarships-pagination\" class=\"pagination-scholarships-container\"><\/div>\n<\/section>\n\n<script>\n    document.addEventListener('DOMContentLoaded', function() {\n        let currentPageGlobal = 1;\n        let totalPages;\n        let lastPage;\n\n        const loadingSpinnerScholarships = document.getElementById('loading-spinner-scholarships');\n        const listingContainer = document.getElementById('listing-scholarships-list');\n        const paginationContainer = document.getElementById('listing-scholarships-pagination');\n\n\n        function fetchPrograms() {\n            if (currentPageGlobal === 1 && window.__scholarshipInitialData) {\n                const data = window.__scholarshipInitialData;\n                window.__scholarshipInitialData = null;\n                listingContainer.innerHTML = '';\n                if (!data || data.data.posts.length === 0) {\n                    createEmptyElement();\n                } else {\n                    data.data.posts.forEach(scholarship => createScholarshipElement(scholarship));\n                    updatePagination(data.data.pagination.current_page, data.data.pagination.last_page, data.data.pagination.total_pages);\n                }\n                loadingSpinnerScholarships.classList.add('hidden');\n                listingContainer.classList.remove('!hidden');\n                return;\n            }\n\n            var requestOptions = {\n                method: 'POST',\n                headers: {\n                    'Content-Type': 'application\/json'\n                },\n                body: JSON.stringify({\n                    page: currentPageGlobal,\n                    per_page: 15,\n                    lang: \"en\"                }),\n            };\n\n            loadingSpinnerScholarships.classList.remove('hidden');\n            listingContainer.classList.add('!hidden');\n            fetch(`\/wp-json\/aese\/v1\/scholarship`, requestOptions)\n                .then(response => response.json())\n                .then(data => {\n                    if (!data) return;\n\n                    listingContainer.innerHTML = '';\n\n                    if (data.data.posts.length === 0) {\n                        createEmptyElement();\n                        return;\n                    }\n\n                    data.data.posts.forEach(scholarship => {\n                        createScholarshipElement(scholarship);\n                    });\n\n                    updatePagination(data.data.pagination.current_page, data.data.pagination.last_page, data.data.pagination.total_pages);\n                })\n                .catch(error => {\n                    console.error('Error:', error);\n                }).finally(() => {\n                    loadingSpinnerScholarships.classList.add('hidden');\n                    listingContainer.classList.remove('!hidden');\n                });\n        }\n\n        function createScholarshipElement(scholarship) {\n            const anchorElement = document.createElement('a');\n            anchorElement.href = scholarship.link;\n            anchorElement.classList.add('!no-underline');\n            const scholarshipElement = document.createElement('div');\n            scholarshipElement.classList.add('listing-scholarships-item');\n            scholarshipElement.innerHTML = `\n                <figure class=\"listing-scholarships-item-image-wrapper\">\n                    <img class=\"listing-scholarships-item-image\"\n                         src=\"${scholarship.image}\"\n                         alt=\"${scholarship.title}\"\n                         width=\"2560\"\n                         height=\"1706\"\n                         loading=\"lazy\"\n                         decoding=\"async\">\n                <\/figure>\n                <div class=\"listing-scholarships-item-content\">\n                    <h3 class=\"listing-scholarships-item-title\">${scholarship.title}<\/h3>\n                    <span class=\"listing-scholarships-item-excerpt\">${scholarship.excerpt}<\/span>\n                <\/div>\n            `;\n            anchorElement.appendChild(scholarshipElement);\n            listingContainer.appendChild(anchorElement);\n        }\n\n        function createEmptyElement() {\n            const scholarshipElement = document.createElement('div');\n            scholarshipElement.classList.add('listing-scholarships-item');\n            scholarshipElement.innerHTML = `\n                <div class=\"listing-scholarships-item-content\">\n                    <span class=\"listing-scholarships-item-title\">No scholarships found<\/span>\n                <\/div>\n            `;\n            listingContainer.appendChild(scholarshipElement);\n        }\n\n        function updatePagination(currentPage, lastPage, totalPages) {\n            currentPage = parseInt(currentPage, 10);\n            lastPage = parseInt(lastPage, 10);\n            totalPages = parseInt(totalPages, 10);\n\n            if (paginationContainer) {\n                paginationContainer.innerHTML = '';\n\n                for (let page = 1; page <= totalPages; page++) {\n                    if (totalPages === 1) {\n                        break;\n                    }\n                    const pageButton = document.createElement('button');\n                    pageButton.classList.add('page-number');\n                    pageButton.textContent = page;\n                    if (page === currentPage) {\n                        pageButton.classList.add('page-number-active');\n                        pageButton.disabled = true;\n                        pageButton.style.cursor = 'not-allowed';\n                    }\n                    pageButton.onclick = () => {\n                        currentPageGlobal = page;\n                        fetchPrograms();\n                        const anchor = document.getElementById('listing-anchor');\n                        if (anchor) {\n                            anchor.scrollIntoView({ behavior: 'smooth' });\n                        }\n                    }\n                    paginationContainer.appendChild(pageButton);\n                }\n\n                const prevButton = document.createElement('button');\n                prevButton.classList.add('prev-page');\n                prevButton.innerHTML = `\n                <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                <path d=\"M19.9991 13.1169L7.82908 13.1169L13.4191 18.7069L11.9991 20.1169L3.99908 12.1169L11.9991 4.11691L13.4091 5.52691L7.82908 11.1169L19.9991 11.1169L19.9991 13.1169Z\" fill=\"currentColor\"\/>\n                <\/svg>`;\n                if (totalPages === 1) {\n                    prevButton.classList.add('!hidden');\n                }\n                if (currentPage <= 1) {\n                    prevButton.disabled = true;\n                    prevButton.classList.add('prev-page-disabled');\n                    prevButton.style.cursor = 'not-allowed';\n                }\n                prevButton.onclick = () => {\n                    currentPageGlobal -= 1;\n                    fetchPrograms();\n                    const anchor = document.getElementById('listing-anchor');\n                    if (anchor) {\n                        anchor.scrollIntoView({ behavior: 'smooth' });\n                    }\n                };\n                paginationContainer.appendChild(prevButton);\n\n                const nextButton = document.createElement('button');\n                nextButton.classList.add('next-page');\n                nextButton.innerHTML = `\n                <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                <path d=\"M3.99909 13.1169L16.1691 13.1169L10.5791 18.7069L11.9991 20.1169L19.9991 12.1169L11.9991 4.11691L10.5891 5.52691L16.1691 11.1169L3.99909 11.1169L3.99909 13.1169Z\" fill=\"currentColor\"\/>\n                <\/svg>`;\n                if (totalPages === 1) {\n                    nextButton.classList.add('!hidden');\n                }\n                if (currentPage >= totalPages) {\n                    nextButton.disabled = true;\n                    nextButton.classList.add('next-page-disabled');\n                    nextButton.style.cursor = 'not-allowed';\n                }\n                nextButton.onclick = () => {\n                    currentPageGlobal += 1;\n                    fetchPrograms();\n                    const anchor = document.getElementById('listing-anchor');\n                    if (anchor) {\n                        anchor.scrollIntoView({ behavior: 'smooth' });\n                    }\n                };\n                paginationContainer.appendChild(nextButton);\n            }\n        }\n        fetchPrograms();\n    });\n<\/script>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":8236819,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-8236822","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.aese.pt\/en\/wp-json\/wp\/v2\/pages\/8236822","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.aese.pt\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.aese.pt\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.aese.pt\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.aese.pt\/en\/wp-json\/wp\/v2\/comments?post=8236822"}],"version-history":[{"count":0,"href":"https:\/\/www.aese.pt\/en\/wp-json\/wp\/v2\/pages\/8236822\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.aese.pt\/en\/wp-json\/wp\/v2\/media\/8236819"}],"wp:attachment":[{"href":"https:\/\/www.aese.pt\/en\/wp-json\/wp\/v2\/media?parent=8236822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}