package com.ese.ils.beta.beans; import java.io.Serializable; import java.util.Map; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import javax.faces.context.FacesContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import com.ese.ils.beta.util.DeComposer; /** * Steuert hauptsaechlich die Navigation der Erweiterten Vorlesung * Haelt diverse Zustaende fuer enthaltene Sichten * Verarbeitet URL-Parameter zur Folienanzeige per QR-Code * @author eduard walter * */ @ManagedBean @ViewScoped public class NavigationBackingBean implements Serializable { private static final long serialVersionUID = 6593472404995047481L; private boolean homeStatus = true; private boolean moduleSelectionStatus = false; private boolean moduleHomeStatus = false; private boolean slideViewerStatus = false; private boolean moduleInfoStatus = false; private boolean favoriteSelectionStatus = false; private boolean questionSelectionStatus = false; private boolean questionEditorStatus = false; private boolean questionViewerStatus = false; private boolean slideUploadStatus = false; String urlParam = null; @ManagedProperty(value = "#{slideBackingBean}") private transient SlideBackingBean slideBackingBean; public NavigationBackingBean() { urlParam = slideRequest(); if (urlParam != null) { homeStatus = false; slideViewerStatus = true; } } /** * Liefer den "slide"-Parameter einer URL * @return String urlParam */ public String slideRequest() { FacesContext context = FacesContext.getCurrentInstance(); Map<String, Object> requests = context.getExternalContext() .getRequestMap(); for (String requestName : requests.keySet()) { if (requests.get(requestName) instanceof HttpServletRequestWrapper) { HttpServletRequest request = (HttpServletRequest) ((HttpServletRequestWrapper) requests .get(requestName)).getRequest(); if (request.getParameter("slide") != null) { urlParam = request.getParameter("slide"); } } } return urlParam; } public boolean isHomeStatus() { return homeStatus; } public void setHomeStatus(boolean homeStatus) { this.homeStatus = homeStatus; } public boolean isModuleSelectionStatus() { return moduleSelectionStatus; } public void setModuleSelectionStatus(boolean moduleSelectionStatus) { this.moduleSelectionStatus = moduleSelectionStatus; } public boolean isModuleHomeStatus() { return moduleHomeStatus; } public void setModuleHomeStatus(boolean moduleHomeStatus) { this.moduleHomeStatus = moduleHomeStatus; } public boolean isSlideViewerStatus() { return slideViewerStatus; } public void setSlideViewerStatus(boolean slideViewerStatus) { this.slideViewerStatus = slideViewerStatus; } public SlideBackingBean getSlideBackingBean() { return slideBackingBean; } public void setSlideBackingBean(SlideBackingBean slideBackingBean) { this.slideBackingBean = slideBackingBean; if (urlParam != null) { slideBackingBean.showSlide(urlParam); slideBackingBean.getModuleModelBean().setModuleId(DeComposer.slideIdToModuleId(urlParam)); } } public boolean isModuleInfoStatus() { return moduleInfoStatus; } public void setModuleInfoStatus(boolean moduleInfoStatus) { this.moduleInfoStatus = moduleInfoStatus; } public boolean isFavoriteSelectionStatus() { return favoriteSelectionStatus; } public void setFavoriteSelectionStatus(boolean favoriteSelectionStatus) { this.favoriteSelectionStatus = favoriteSelectionStatus; } public boolean isQuestionSelectionStatus() { return questionSelectionStatus; } public void setQuestionSelectionStatus(boolean questionSelectionStatus) { this.questionSelectionStatus = questionSelectionStatus; } public boolean isQuestionEditorStatus() { return questionEditorStatus; } public void setQuestionEditorStatus(boolean questionEditorStatus) { this.questionEditorStatus = questionEditorStatus; } public boolean isQuestionViewerStatus() { return questionViewerStatus; } public void setQuestionViewerStatus(boolean questionViewerStatus) { this.questionViewerStatus = questionViewerStatus; } public boolean isSlideUploadStatus() { return slideUploadStatus; } public void setSlideUploadStatus(boolean slideUploadStatus) { this.slideUploadStatus = slideUploadStatus; } }