/** * <a href="http://www.openolat.org"> * OpenOLAT - Online Learning and Training</a><br> * <p> * Licensed under the Apache License, Version 2.0 (the "License"); <br> * you may not use this file except in compliance with the License.<br> * You may obtain a copy of the License at the * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> * <p> * Unless required by applicable law or agreed to in writing,<br> * software distributed under the License is distributed on an "AS IS" BASIS, <br> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> * See the License for the specific language governing permissions and <br> * limitations under the License. * <p> * Initial code contributed and copyrighted by<br> * frentix GmbH, http://www.frentix.com * <p> */ package org.olat.admin.layout; import java.io.File; import java.nio.file.Paths; import org.olat.core.configuration.AbstractSpringModule; import org.olat.core.dispatcher.mapper.GlobalMapperRegistry; import org.olat.core.id.OLATResourceable; import org.olat.core.util.StringHelper; import org.olat.core.util.WebappHelper; import org.olat.core.util.coordinate.CoordinatorManager; import org.olat.core.util.resource.OresHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; /** * Description:<br> * Manager to get/set properties which are used by * FrentixFooterController / LogoWithLinkHeaderController * * <P> * Initial Date: 19.06.2008 <br> * @author Roman Haag, frentix GmbH, roman.haag@frentix.com */ @Service public class LayoutModule extends AbstractSpringModule { public static final OLATResourceable layoutCustomizingOResourceable = OresHelper.createOLATResourceableType("LayoutCustomizing"); private static final String LOGO_FILENAME = "logo.filename"; private static final String LOGO_ALT = "logo.alt"; private static final String LOGO_LINK_TYPE = "logo.link.type"; private static final String LOGO_URI = "logo.uri"; private static final String FOOTER_URI = "footer.uri"; private static final String FOOTER_LINE = "footer.line"; @Value("${logo.filename:}") private String logoFilename; @Value("${logo.alt:}") private String logoAlt; @Value("${logo.link.type:}") private String logoLinkType; @Value("${logo.uri:}") private String logoLinkUri; @Value("${footer.line:}") private String footerLine; @Value("${footer.uri:}") private String footerLinkUri; private String logoUri; @Autowired public LayoutModule(CoordinatorManager coordinatorManager) { super(coordinatorManager); } @Override public void init() { logoUri = GlobalMapperRegistry.getInstance().register("logo", new LogoMapper(this)); String filenameObj = getStringPropertyValue(LOGO_FILENAME, true); if(StringHelper.containsNonWhitespace(filenameObj)) { logoFilename = filenameObj; } else { logoFilename = null; } String logoAltObj = getStringPropertyValue(LOGO_ALT, true); if(StringHelper.containsNonWhitespace(logoAltObj)) { logoAlt = logoAltObj; } else { logoAlt = null; } String logoLinkTypeObj = getStringPropertyValue(LOGO_LINK_TYPE, true); if(StringHelper.containsNonWhitespace(logoLinkTypeObj)) { logoLinkType = logoLinkTypeObj; } else { logoLinkType = null; } String logoUriObj = getStringPropertyValue(LOGO_URI, true); if(StringHelper.containsNonWhitespace(logoUriObj)) { logoLinkUri = logoUriObj; } else { logoLinkUri = null; } String footerUriObj = getStringPropertyValue(FOOTER_URI, true); if(StringHelper.containsNonWhitespace(footerUriObj)) { footerLinkUri = footerUriObj; } else { footerLinkUri = null; } String footerLineObj = getStringPropertyValue(FOOTER_LINE, true); if(StringHelper.containsNonWhitespace(footerLineObj)) { footerLine = footerLineObj; } else { footerLine = null; } } @Override protected void initFromChangedProperties() { init(); } public String getLogoUri() { return logoUri + "/oo-logo@1x.png"; } public String getLogoFilename() { return logoFilename; } //LogoUri public void setLogoFilename(String filename) { logoFilename = filename; setStringProperty(LOGO_FILENAME, filename, true); } public void updateLogo(String filename) { setLogoFilename(filename); } public File getLogo() { File logo = null; String filename = getLogoFilename(); if(StringHelper.containsNonWhitespace(filename)) { logo = Paths.get(WebappHelper.getUserDataRoot(), "customizing", "logo", filename).toFile(); } return logo; } public File getLogoDirectory() { File dir = Paths.get(WebappHelper.getUserDataRoot(), "customizing", "logo").toFile(); if(!dir.exists()) { dir.mkdirs(); } return dir; } public void removeLogo() { File logo = getLogo(); if(logo != null && logo.exists()) { logo.delete(); } File dir = getLogoDirectory(); File logo1x = new File(dir, "oo-logo@1x.png"); if(logo1x.exists()) { logo1x.delete(); } File logo2x = new File(dir, "oo-logo@2x.png"); if(logo2x.exists()) { logo2x.delete(); } setLogoFilename(""); } public String getLogoAlt() { return logoAlt; } public void setLogoAlt(String alt){ this.logoAlt = alt; setStringProperty(LOGO_ALT, alt, true); } public String getLogoLinkType() { return logoLinkType; } public void setLogoLinkType(String type) { this.logoLinkType = type; setStringProperty(LOGO_LINK_TYPE, type, true); } public String getLogoLinkUri() { return logoLinkUri; } public void setLogoLinkUri(String uri){ this.logoLinkUri = uri; setStringProperty(LOGO_URI, uri, true); } public String getFooterLinkUri() { return footerLinkUri; } public void setFooterLinkUri(String uri) { this.footerLinkUri = uri; setStringProperty(FOOTER_URI, uri, true); } public String getFooterLine() { return footerLine; } public void setFooterLine(String line) { this.footerLine = line; setStringProperty(FOOTER_LINE, line, true); } }