/** * Copyright © ${project.inceptionYear} Instituto Superior Técnico * * This file is part of Fenix IST. * * Fenix IST is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Fenix IST is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Fenix IST. If not, see <http://www.gnu.org/licenses/>. */ package pt.ist.fenix.domain.homepage; import org.fenixedu.academic.domain.Person; import org.fenixedu.academic.domain.contacts.PartyContactType; import org.fenixedu.bennu.core.domain.Bennu; import org.fenixedu.bennu.core.domain.User; import org.fenixedu.cms.domain.*; import org.fenixedu.cms.domain.component.Component; import org.fenixedu.commons.i18n.LocalizedString; import pt.ist.fenix.domain.homepage.components.PresentationComponent; import pt.ist.fenix.domain.homepage.components.ResearcherComponent; import java.util.Optional; import static org.fenixedu.academic.domain.contacts.WebAddress.createWebAddress; import static org.fenixedu.bennu.core.i18n.BundleUtil.getLocalizedString; /** * Created by borgez on 24-11-2014. */ public class HomepageListener { private static final String BUNDLE = "resources.FenixEduLearningResources"; private static final String INTERESTS_KEY = "homepage.researcher.interests"; private static final String PATENTS_KEY = "homepage.researcher.patents"; private static final String PUBLICATIONS_KEY = "homepage.researcher.publications"; private static final String ACTIVITIES_KEY = "homepage.researcher.activities"; private static final String PRIZES_KEY = "homepage.researcher.prizes"; private static final LocalizedString PRESENTATION_TITLE = getLocalizedString(BUNDLE, "homepage.presentation.title"); private static final LocalizedString MENU_TITLE = getLocalizedString("resources.FenixEduLearningResources", "label.menu"); private static final LocalizedString INTERESTS_TITLE = getLocalizedString(BUNDLE, INTERESTS_KEY); private static final LocalizedString PATENTS_TITLE = getLocalizedString(BUNDLE, PATENTS_KEY); private static final LocalizedString PUBLICATIONS_TITLE = getLocalizedString(BUNDLE, PUBLICATIONS_KEY); private static final LocalizedString ACTIVITIES_TITLE = getLocalizedString(BUNDLE, ACTIVITIES_KEY); private static final LocalizedString PRIZES_TITLE = getLocalizedString(BUNDLE, PRIZES_KEY); private static final String HOMEPAGE_FOLDER_PATH = "homepage"; public static HomepageSite create(Person person) { HomepageSite newSite = new HomepageSite(person); Menu menu = new Menu(newSite); menu.setName(MENU_TITLE); newSite.setTheme(CMSTheme.forType("fenixedu-homepages-theme")); createDefaultContents(newSite, menu, person.getUser()); getHomepageFolder().ifPresent(newSite::setFolder); addContact(person, newSite); newSite.setPublished(true); newSite.setShowPhoto(true); return newSite; } public static void createDefaultContents(Site newSite, Menu menu, User user) { Component presentationComponent = Component.forType(PresentationComponent.class); Component interestsComponent = new ResearcherComponent(INTERESTS_KEY, BUNDLE, "interests"); Component prizesComponent = new ResearcherComponent(PRIZES_KEY, BUNDLE, "prizes"); Component activitiesComponent = new ResearcherComponent(ACTIVITIES_KEY, BUNDLE, "activities"); Component patentsComponent = new ResearcherComponent(PATENTS_KEY, BUNDLE, "patents"); Component publicationsComponent = new ResearcherComponent(PUBLICATIONS_KEY, BUNDLE, "publications"); Page initialPage = Page.create(newSite, menu, null, PRESENTATION_TITLE, true, "presentation", user, presentationComponent); Page.create(newSite, menu, null, INTERESTS_TITLE, false, "researcherSection", user, interestsComponent); Page.create(newSite, menu, null, PRIZES_TITLE, false, "researcherSection", user, prizesComponent); Page.create(newSite, menu, null, ACTIVITIES_TITLE, false, "researcherSection", user, activitiesComponent); Page.create(newSite, menu, null, PATENTS_TITLE, false, "researcherSection", user, patentsComponent); Page.create(newSite, menu, null, PUBLICATIONS_TITLE, false, "researcherSection", user, publicationsComponent); newSite.setInitialPage(initialPage); } private static void addContact(Person owner, HomepageSite homepageSite) { createWebAddress(owner, homepageSite.getFullUrl(), PartyContactType.INSTITUTIONAL, true); } private static Optional<CMSFolder> getHomepageFolder() { return Bennu.getInstance().getCmsFolderSet().stream() .filter(folder -> HOMEPAGE_FOLDER_PATH.equals(folder.getFunctionality().getPath())).findFirst(); } }