EN · DE · RU · FR · ES

#3180: AbstractUnsecureBasePage.java

projectforge-wicket/src/main/java/org/projectforge/web/wicket/AbstractUnsecureBasePage.java Type : Java · Rôle : Page · Source : projectforge-wicket/src/main/java/org/projectforge/web/wicket/AbstractUnsecureBasePage.java 291 lignes · 165 code · 88 commentaires · 38 vides
Implémentation de page Wicket pour AbstractUnsecureBase. Compose des panneaux, des formulaires et la navigation.

Structure du code

Paquetage : org.projectforge.web.wicket

Classes : AbstractUnsecureBasePage

Étend : WebPage

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

Champs (3) : serialVersionUID, jsTemplate, alreadySubmitted

Importations : 31 paquetages

Code source (abrégé)

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;

/**
 * Ne dérivez de cette page que si aucune connexion n'est requise !
 *
 * @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;

  /**
   * Constructeur invoqué lorsque la page est appelée sans session.
   *
   * @param parameters Paramètres de la page
   */
  @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", "[invisible]").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");
  }

  /**
   * Méthode pratique pour créer un composant présent dans le fichier de balisage mais qui ne doit pas être visible.
   *
   * @param wicketId
   * @return
   */
  public static Label createInvisibleDummyComponent(final String wicketId) {
    final Label dummyLabel = new Label(wicketId);
    dummyLabel.setVisible(false);
    return dummyLabel;
  }

  /**
   * @return le modèle de template js
   */
// ... (tronqué, total 269 lignes)

Historique Git

868d6abb7 2025 -> 2026
63081666f En-têtes des fichiers source : 2024 -> 2025.
67805f2fc ThreadLocalUserContext.user -> ThreadLocalUserContext.loggedInUser (renommé pour éviter les malentendus dans le code).
4c04cfd65 CHANGEMENT-MAJEUR ! Migration des identifiants entier vers identifiants Long (y compris les clés étrangères, etc.)
4efcbd0fb Travail de migration en cours...