EN · DE · RU · FR · ES

#3180: AbstractUnsecureBasePage.java

projectforge-wicket/src/main/java/org/projectforge/web/wicket/AbstractUnsecureBasePage.java Typ: Java · Rolle: Seite · Quelle: projectforge-wicket/src/main/java/org/projectforge/web/wicket/AbstractUnsecureBasePage.java 291 Zeilen · 165 Code · 88 Kommentare · 38 leer
Wicket-Seitenimplementierung für AbstractUnsecureBase. Stellt Panels, Formulare und Navigation zusammen.

Codestruktur

Paket: org.projectforge.web.wicket

Klassen: AbstractUnsecureBasePage

Erweitert: WebPage

Methoden (23): getObject, onComponentTag, createInvisibleDummyComponent, getJstemplate, renderHead, onBeforeRender, getAppVersion, getAppReleaseDate, getAppReleaseTimestamp, getUrl, getImageUrl, getUrl, redirectToUrl, getWindowTitle, onBodyTag, getWicketApplication, escapeHtml, getMySession, getUser, getUserId, getLocalizedMessage, initializeContextMenu, getUserGroupCache

Felder (3): serialVersionUID, jsTemplate, alreadySubmitted

Importe: 31 Pakete

Quellcode (gekürzt)

package org.projectforge.web.wicket;

import org.apache.commons.text.StringEscapeUtils;
import org.apache.wicket.Session;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
import org.apache.wicket.markup.head.StringHeaderItem;
import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.image.ContextImage;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.markup.html.link.ExternalLink;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.http.handler.RedirectRequestHandler;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.template.PackageTextTemplate;
import org.projectforge.Constants;
import org.projectforge.ProjectForgeVersion;
import org.projectforge.business.configuration.DomainService;
import org.projectforge.business.user.UserGroupCache;
import org.projectforge.framework.persistence.user.api.ThreadLocalUserContext;
import org.projectforge.framework.persistence.user.entities.PFUserDO;
import org.projectforge.rest.pub.LogoServiceRest;
import org.projectforge.web.WebConfiguration;
import org.projectforge.web.WicketSupport;
import org.projectforge.web.session.MySession;

import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;

/**
 * Nur von dieser Seite ableiten, wenn keine Anmeldung erforderlich ist!
 *
 * @author Kai Reinhard (k.reinhard@micromata.de)
 */
public abstract class AbstractUnsecureBasePage extends WebPage {
  private static final long serialVersionUID = 7396310612549535899L;

  private static PackageTextTemplate jsTemplate;

  protected WebMarkupContainer body, html;

  protected boolean alreadySubmitted = false;

  /**
   * Konstruktor, der aufgerufen wird, wenn die Seite ohne Session aufgerufen wird.
   *
   * @param parameters Seitenparameter
   */
  @SuppressWarnings("serial")
  public AbstractUnsecureBasePage(final PageParameters parameters) {
    super(parameters);

    html = new TransparentWebMarkupContainer("html");
    add(html);
    add(new Label("windowTitle", new Model<String>() {
      @Override
      public String getObject() {
        return getWindowTitle();
      }
    }));

    body = new WebMarkupContainer("body") {
      @Override
      protected void onComponentTag(final ComponentTag tag) {
        onBodyTag(tag);
      }
    };

    if (WicketApplication.getTestsystemMode()) {
      body.add(new AttributeAppender("style", "background:" + WicketApplication.getTestsystemColor() + " !important;"));
    }

    add(body);
    final String logoFile = LogoServiceRest.getLogoUrl();
    if (logoFile != null) {
      body.add(new ContextImage("logoLeftImage", "/rsPublic/" + logoFile));
    } else {
      body.add(new Label("logoLeftImage", "[unsichtbar]").setVisible(false));
    }

    final WebMarkupContainer developmentSystem = new WebMarkupContainer("developmentSystem");
    developmentSystem.setOutputMarkupId(true);
    developmentSystem.setMarkupId("pf_develHint");
    body.add(developmentSystem);
    if (WebConfiguration.isDevelopmentMode() == false && WicketApplication.getTestsystemMode() == false) {
      developmentSystem.setVisible(false);
    }

    final PFUserDO user = ThreadLocalUserContext.getLoggedInUser();
    AbstractLink link;
    link = new ExternalLink("footerNewsLink", Constants.WEB_DOCS_NEWS_LINK);
    body.add(link);
    link.add(new Label("version", "Version " + ProjectForgeVersion.VERSION_NUMBER + ", " + ProjectForgeVersion.BUILD_DATE)
            .setRenderBodyOnly(true));
    link.setOutputMarkupId(true);
    link.setMarkupId("pf_footerNewsLink");
  }

  /**
   * Praktische Methode zum Erstellen einer Komponente, die in der Markup-Datei vorhanden, aber nicht sichtbar sein soll.
   *
   * @param wicketId
   * @return
   */
  public static Label createInvisibleDummyComponent(final String wicketId) {
    final Label dummyLabel = new Label(wicketId);
    dummyLabel.setVisible(false);
    return dummyLabel;
  }

  /**
   * @return die js-Vorlage
   */
// ... (gekürzt, insgesamt 269 Zeilen)

Git-Verlauf

868d6abb7 2025 -> 2026
63081666f Quellcodedatei-Header: 2024 -> 2025.
67805f2fc ThreadLocalUserContext.user -> ThreadLocalUserContext.loggedInUser (umbenannt, um Missverständnisse im Code zu vermeiden).
4c04cfd65 MAJOR-CHANGE! Migration von Integer-IDs zu Long-IDs (inkl. Fremdschlüssel usw.)
4efcbd0fb Migration in Arbeit...