TracCloud: Twig: Difference between revisions

From Redrock Wiki

No edit summary
No edit summary
Line 77: Line 77:
</nowiki>
</nowiki>
<hr>
<hr>
==else==
An else statement allows us to include a block of text or an additional instruction if an <i>if</i> statement ends up not being true. For example, if our appointment above turns out to be an in-person appointment, maybe we want to include a different string of text.
<hr>
<nowiki>
Hello  {{Student.First_Name}},
<br><br>
{% if  Appointment.Online == "Online" %}
This is an online appointment.
{% else %}
This is an in-person appointment.
{% endif %}
<br><br>
Please be ready for the appointment at the time you selected.
</nowiki>
<hr>
Since the appointment wasn’t online, we get the “This is an in-person…” text in our confirmation email instead.
<br>
[[File:57j57k7k7lkk.png|500px]]
<hr>
==elseif==
An <i>elseif</i> statement allows us to ask additional <i>if</i> questions, assuming the answer to the prior question was No.
<hr>
<nowiki>
Hello  {{Student.First_Name}},
<br><br>
{% if Course.Subject == "Math" %}
This appointment is for Math
{% elseif Course.Subject == "Chem" %}
This appointment is for Chem
{% endif %}
<br><br>
Please be ready for the appointment at the time you selected.
</nowiki>
<hr>
Since our appointment was for Chemistry, we receive the following email. If the appointment was for neither Chemistry nor Math, we wouldn’t see a middle block of text at all.
<br>
[[File:45j67j5nl68k67.png|500px]]
<hr>
==if (for arrays)==
When you want to use an <i>if</i> statement for arrays, such as the Reasons and Recommendations for SAGE referrals, the formatting is a little bit different. In this context, you would want to know if the Reasons array contains the reason you’re looking for. This would be formatted as such:
<hr>
<nowiki>
Hello  {{Student.First_Name}},
<br>
{% if "Poor Grades" in Reasons %}
This referral is being submitted due to the reason “Poor Grades”
{% endif %}
</nowiki>
<hr>
Since “Poor Grades” was the reason our faculty member selected when submitting this referral, we receive the following email.
<br>
[[File:566776lyujhg.png|500px]]
<br><br>
We can also search for the opposite, specifying “not in” instead:
<hr>
<nowiki>
{% if "Poor Grades" not in Reasons %}
This referral was *not* created with the reason “Poor Grades”
{% endif %}
</nowiki>
<hr>
==for (listing sequence contents)==
The <i>for</i> command allows us to list out the contents from a specific sequence. This would frequently be used for listing out Reasons or Recommendations in SAGE referral emails.
<hr>
<nowiki>
This referral is being submitted because of these reasons:
<br>
{% for key,value in Reasons %}
    {{ value }} <br>
{% endfor %}
<br><br>
And these recommendations:
<br>
{% for key,value in Recommendations %}
    {{ value }} <br>
{% endfor %}
</nowiki>
<hr>
[[File:6j57k6jthngfbv.png|500px]]
<br><br>
Alternatively, Array tags such as ReferralType.Reasons will need to be formatted as such:
<hr>
<nowiki>
{% for item in ReferralType.Reasons %}
{{ item.value|e }}
{% endfor %}
</nowiki>
<hr>




|}
|}
{{DISPLAYTITLE:<span style="position: absolute; clip: rect(1px 1px 1px 1px); clip: rect(1px, 1px, 1px, 1px);">{{FULLPAGENAME}}</span>}}
{{DISPLAYTITLE:<span style="position: absolute; clip: rect(1px 1px 1px 1px); clip: rect(1px, 1px, 1px, 1px);">{{FULLPAGENAME}}</span>}}

Revision as of 14:15, 30 July 2021


Formatting Text in TracCloud with Twig and HTML

Many text boxes throughout TracCloud support Twig, this allows greater control in determining how emails are formatted and what data is included. HTML is also supported, allowing to you adjust the formatting of text. From font sizes, colors, and types, to embedding images and video.

Twig allows you to pull data from various TracCloud fields to be included in emails and texts via our tag system. We can also use Twig to apply logic to our text. Maybe we only want to include a block of text if the student selected a specific reason, or if a certain Recommendation was selected in a SAGE referral.

This chapter will be going over several Twig options available, however, this is not an in-depth guide. Twig isn’t exclusive to TracCloud, and there are many resources available online for more complex configurations if you’d like to go a step further. The point of this chapter is to give some brief examples and possible configuration ideas that you can build off of.

Most of the examples here will be formatted for an appointment confirmation email, but Twig can also be utilized in SAGE referral emails and in the upcoming appointments screen for students and consultants. The same concepts apply across the board.

Tags

Email tags can be used to pull data from various TracCloud fields to be included in emails and upcoming appointments. Many of the Twig examples in this chapter will be using these tags, whether they’re used as part of a Twig command or just offhandedly included in an unrelated part of the email. A list of tags can be found at the bottom of this chapter (and within the TracCloud menu), but for a basic primer on how these tags can be used in isolation, here’s an example of a confirmation email.


Hello,  {{Student.First_Name}}
<br><br>
Your {{Appointment.OnlineText}} appointment with {{Consultant.FirstLast}} at 
{{Appointment.StartTime}} for {{Course.SubjectCourse}} has been scheduled. If you have any 
questions prior to your appointment, feel free to reach out to {{Consultant.Email}}
<br><br> 
Your appointment can be joined here: {{Appointment.OnlineURL}}
<br><br>
Regards, {{Center.Name}}


When this email is sent, all the tags we included are replaced with the relevant information for this appointment.
76y5rgeth4j75k.png


if

if statements will likely be the most commonly used Twig command for most use-cases. This allows you to write out statements such as “if the student selected reason “Exam Help,” then include this piece of text.” Or in the example below, if the appointment is online, include text to specify this.

In the statement, we’re using the same tags that are used for emails, but without the curly brackets.


Hello {{Student.First_Name}},
<br><br>
{% if Appointment.Online == "Online" %}
This is an online appointment.
{% endif %}
<br><br>
Please be ready for the appointment at the time you selected.


If the if statement is true, all text up to the endif line will be printed in the email. Since the appointment this student booked is online, the “This is an online appointment” text was included. Otherwise, it would jump straight to “Please be ready for the appointment…”
453j65ynh4g5rt.png

We aren’t limited to just “equals” either. Similar examples with different logic can be found below.


{% if Course.Subject starts with "Chem" %}
this text is only included if our subject starts with “Chem”. This is case-sensitive. 
{% endif %}

{% if Course.Subject ends with "101" %}
This text is only included if our subject ends with “101”
{% endif %}

{% if Appointment.Online != "Online" %}
This text is only included if the appointment is not online
{% endif %}

{% if Course.Subject == "Math" or Course.Subject == "Chem" %}
This text is only included if the subject is Math or Chem
{% endif %}

{% if (CalcMissedAppointments(Student.Sequence, Center.ProfileID) > 0) %}
You have {{CalcMissedAppointments(Student.Sequence, Center.ProfileID)}} missed 
appointments since {{CalcMissedDate(Center.ProfileID)}}.
{% endif %}


else

An else statement allows us to include a block of text or an additional instruction if an if statement ends up not being true. For example, if our appointment above turns out to be an in-person appointment, maybe we want to include a different string of text.


Hello  {{Student.First_Name}},
<br><br>
{% if  Appointment.Online == "Online" %}
This is an online appointment.
{% else %}
This is an in-person appointment.
{% endif %}
<br><br>
Please be ready for the appointment at the time you selected.


Since the appointment wasn’t online, we get the “This is an in-person…” text in our confirmation email instead.
57j57k7k7lkk.png


elseif

An elseif statement allows us to ask additional if questions, assuming the answer to the prior question was No.


Hello  {{Student.First_Name}},
<br><br>
{% if Course.Subject == "Math" %}
This appointment is for Math
{% elseif Course.Subject == "Chem" %}
This appointment is for Chem
{% endif %}
<br><br>
Please be ready for the appointment at the time you selected.


Since our appointment was for Chemistry, we receive the following email. If the appointment was for neither Chemistry nor Math, we wouldn’t see a middle block of text at all.
45j67j5nl68k67.png


if (for arrays)

When you want to use an if statement for arrays, such as the Reasons and Recommendations for SAGE referrals, the formatting is a little bit different. In this context, you would want to know if the Reasons array contains the reason you’re looking for. This would be formatted as such:


Hello  {{Student.First_Name}},
<br>
{% if "Poor Grades" in Reasons %}
This referral is being submitted due to the reason “Poor Grades”
{% endif %}


Since “Poor Grades” was the reason our faculty member selected when submitting this referral, we receive the following email.
566776lyujhg.png

We can also search for the opposite, specifying “not in” instead:


{% if "Poor Grades" not in Reasons %}
This referral was *not* created with the reason “Poor Grades”
{% endif %}


for (listing sequence contents)

The for command allows us to list out the contents from a specific sequence. This would frequently be used for listing out Reasons or Recommendations in SAGE referral emails.


This referral is being submitted because of these reasons:
<br>
{% for key,value in Reasons %}
    {{ value }} <br>
{% endfor %}
<br><br>
And these recommendations:
<br>
{% for key,value in Recommendations %}
    {{ value }} <br>
{% endfor %}


6j57k6jthngfbv.png

Alternatively, Array tags such as ReferralType.Reasons will need to be formatted as such:


{% for item in ReferralType.Reasons %}
{{ item.value|e }}
{% endfor %}