Skip to content

Commit

Permalink
Added: Default and Default var in html tags
Browse files Browse the repository at this point in the history
  • Loading branch information
djuarezgf committed Nov 29, 2024
1 parent e4f2082 commit e119637
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 21 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -163,3 +163,4 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
- Thymeleaf Dialect for email context variables
- Combine first and last name in name
- Replace email context variables in email subject
- Default and Default var in html tags
40 changes: 22 additions & 18 deletions src/main/java/de/samply/app/ProjectManagerConst.java
Original file line number Diff line number Diff line change
Expand Up @@ -225,26 +225,27 @@ public class ProjectManagerConst {

// Variables for Email Templates:
public final static String EMAIL_CONTEXT_BRIDGEHEAD = "bridgehead";
public final static String EMAIL_CONTEXT_PROJECT_CODE = "projectCode";
public final static String EMAIL_CONTEXT_PROJECT_BRIDGEHEAD_USER_EMAIL = "projectBridgeheadUserEmail";
public final static String EMAIL_CONTEXT_PROJECT_BRIDGEHEAD_USER_FIRST_NAME = "projectBridgeheadUserFirstName";
public final static String EMAIL_CONTEXT_PROJECT_BRIDGEHEAD_USER_LAST_NAME = "projectBridgeheadUserLastName";
public final static String EMAIL_CONTEXT_PROJECT_BRIDGEHEAD_USER_NAME = "projectBridgeheadUserName";
public final static String EMAIL_CONTEXT_PROJECT_ROLE = "projectRole";
public final static String EMAIL_CONTEXT_PROJECT_TYPE = "projectType";
public final static String EMAIL_CONTEXT_PROJECT_CREATOR_EMAIL = "projectCreatorEmail";
public final static String EMAIL_CONTEXT_PROJECT_CREATOR_FIRST_NAME = "projectCreatorFirstName";
public final static String EMAIL_CONTEXT_PROJECT_CREATOR_LAST_NAME = "projectCreatorLastName";
public final static String EMAIL_CONTEXT_PROJECT_CREATOR_NAME = "projectCreatorName";
public final static String EMAIL_CONTEXT_PROJECT_CODE = "project-code";
public final static String EMAIL_CONTEXT_PROJECT_BRIDGEHEAD_USER_EMAIL = "project-bridgehead-user-email";
public final static String EMAIL_CONTEXT_PROJECT_BRIDGEHEAD_USER_FIRST_NAME = "project-bridgehead-user-first-name";
public final static String EMAIL_CONTEXT_PROJECT_BRIDGEHEAD_USER_LAST_NAME = "project-bridgehead-user-last-name";
public final static String EMAIL_CONTEXT_PROJECT_BRIDGEHEAD_USER_NAME = "project-bridgehead-user-name";
public final static String EMAIL_CONTEXT_PROJECT_ROLE = "project-role";
public final static String EMAIL_CONTEXT_PROJECT_TYPE = "project-type";
public final static String EMAIL_CONTEXT_PROJECT_CREATOR_EMAIL = "project-creator-email";
public final static String EMAIL_CONTEXT_PROJECT_CREATOR_FIRST_NAME = "project-creator-first-name";
public final static String EMAIL_CONTEXT_PROJECT_CREATOR_LAST_NAME = "project-creator-last-name";
public final static String EMAIL_CONTEXT_PROJECT_CREATOR_NAME = "project-creator-name";
public final static String EMAIL_CONTEXT_QUERY = "query";
public final static String EMAIL_CONTEXT_QUERY_LABEL = "queryLabel";
public final static String EMAIL_CONTEXT_QUERY_DESCRIPTION = "queryDescription";
public final static String EMAIL_CONTEXT_PROJECT_VIEW_URL = "projectViewUrl";
public final static String EMAIL_CONTEXT_QUERY_LABEL = "query-label";
public final static String EMAIL_CONTEXT_QUERY_DESCRIPTION = "query-description";
public final static String EMAIL_CONTEXT_PROJECT_VIEW_URL = "project-view-url";
public final static String EMAIL_CONTEXT_MESSAGE = "message";
public final static String EMAIL_CONTEXT_EMAIL_TO = "emailTo";
public final static String EMAIL_CONTEXT_EMAIL_TO_FIRST_NAME = "emailToFirstName";
public final static String EMAIL_CONTEXT_EMAIL_TO_LAST_NAME = "emailToLastName";
public final static String EMAIL_CONTEXT_EMAIL_TO_NAME = "emailToName";
public final static String EMAIL_CONTEXT_EMAIL_TO = "email-to";
public final static String EMAIL_CONTEXT_EMAIL_TO_FIRST_NAME = "email-to-first-name";
public final static String EMAIL_CONTEXT_EMAIL_TO_LAST_NAME = "email-to-last-name";
public final static String EMAIL_CONTEXT_EMAIL_TO_NAME = "email-to-name";


public final static String[] EMAIL_CONTEXT_VARIABLES = {
EMAIL_CONTEXT_BRIDGEHEAD,
Expand All @@ -270,6 +271,9 @@ public class ProjectManagerConst {
EMAIL_CONTEXT_EMAIL_TO_NAME
};

public final static String EMAIL_CONTEXT_VARIABLE_TAG_ATTRIBUTE_DEFAULT_VALUE = "default";
public final static String EMAIL_CONTEXT_VARIABLE_TAG_ATTRIBUTE_DEFAULT_VARIABLE = "default-var";

// Application Properties
public final static String JWKS_URI_PROPERTY = "spring.security.oauth2.client.provider.oidc.jwk-set-uri";
public final static String REGISTERED_BRIDGEHEADS = "bridgeheads";
Expand Down
26 changes: 23 additions & 3 deletions src/main/java/de/samply/email/thymeleaf/EmailContextProcessor.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,31 @@ protected void doProcess(ITemplateContext context, IProcessableElementTag tag, I
? tagName.substring(tagName.indexOf(':') + 1)
: tagName;
if (supportedTagNames.contains(variableName)) {
// Retrieve the value of the variable from the context
// Retrieve the desired variable from the context
Object variableValue = context.getVariable(variableName);

// Replace the tag with the variable's value or an empty string if the variable doesn't exist
structureHandler.replaceWith(variableValue != null ? variableValue.toString() : "", false);
// Retrieve the "default" and "defaultVar" attributes, if they exist
String defaultValue = tag.getAttributeValue(ProjectManagerConst.EMAIL_CONTEXT_VARIABLE_TAG_ATTRIBUTE_DEFAULT_VALUE);
String defaultVarName = tag.getAttributeValue(ProjectManagerConst.EMAIL_CONTEXT_VARIABLE_TAG_ATTRIBUTE_DEFAULT_VARIABLE);

// Retrieve the value of "defaultVar" from the context, if specified
Object defaultVarValue = defaultVarName != null ? context.getVariable(defaultVarName) : null;

// Determine the final value based on the priority:
// 1) Desired variable
// 2) Default variable
// 3) Default value
// 4) Empty string if none are available
String finalValue = variableValue != null
? variableValue.toString()
: defaultVarValue != null
? defaultVarValue.toString()
: defaultValue != null
? defaultValue
: "";

// Replace the tag with the final value
structureHandler.replaceWith(finalValue, false);
}
}

Expand Down

0 comments on commit e119637

Please sign in to comment.