Hey Coach,
Just wanted to follow up on the schedule for Saturday’s game. I’ll be ready to roar starting at 10:00 a.m., and I’ve got some new dance moves prepared for the fourth quarter.
Also, can you confirm if I’m doing the tunnel entrance with the team?
We Are!
Color Themes:
';
if (fullName) {
html += '
';
html += escapeHtml(fullName);
if (pronouns) {
html += ' ' + escapeHtml(pronouns) + '';
}
html += '
';
}
if (title || department) {
let titleLine = '';
if (title) titleLine += escapeHtml(title);
if (title && department) titleLine += ', ';
if (department) titleLine += escapeHtml(department);
html += '' + titleLine + '
';
}
if (email) {
html += '';
html += '' + escapeHtml(email) + '';
html += '
';
}
if (phone) {
html += '';
html += '' + escapeHtml(phone) + '';
html += '
';
}
if (website) {
let displayUrl = website.replace(/^https?:\/\//i, '').replace(/\/$/, '');
html += '';
html += '' + escapeHtml(displayUrl) + '';
html += '
';
}
if (address) {
html += '' + escapeHtml(address) + '
';
}
// Add adviser text if checkbox is checked
if (isAdviser) {
const adviserHTML = $('#advisers-text .elementor-widget-container').html();
if (adviserHTML) {
// Add spacing before adviser section
html += '';
// Process the adviser HTML to apply consistent styling
const $tempDiv = $('').html(adviserHTML);
// Style all paragraphs
$tempDiv.find('p').each(function() {
$(this).attr('style', textStyle);
});
// Style all links
$tempDiv.find('a').each(function() {
$(this).attr('style', linkStyle);
});
// Style strong tags
$tempDiv.find('strong').each(function() {
$(this).attr('style', 'font-weight: 700; color: ' + textColor + ';');
});
// Style ordered lists
$tempDiv.find('ol').each(function() {
$(this).attr('style', 'font-size: ' + (baseFontSize - 1) + 'px; color: ' + textColor + '; margin: 4px 0; padding-left: 20px;');
});
$tempDiv.find('li').each(function() {
$(this).attr('style', 'margin-bottom: 4px;');
});
html += $tempDiv.html();
}
}
html += '
';
console.log('generateSignatureHTML: Generated HTML length:', html.length);
return html;
}
function escapeHtml(text) {
const map = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": '''
};
return text.replace(/[&<>"']/g, m => map[m]);
}
function updatePreview(usePlaceholders = false) {
console.log('updatePreview: Updating signature preview, usePlaceholders:', usePlaceholders);
const html = generateSignatureHTML(usePlaceholders);
$('#signature-preview').html(html);
// Reset copy button text when signature changes
const $copyBtn = $('#copy-signature-btn .elementor-button-text');
$copyBtn.text('Copy Email Signature');
}
function copySignatureToClipboard() {
const html = generateSignatureHTML(false);
console.log('copySignatureToClipboard: Attempting to copy formatted HTML');
if (navigator.clipboard && window.ClipboardItem) {
try {
const htmlBlob = new Blob([html], { type: 'text/html' });
const textBlob = new Blob([html], { type: 'text/plain' });
const clipboardItem = new ClipboardItem({
'text/html': htmlBlob,
'text/plain': textBlob
});
navigator.clipboard.write([clipboardItem]).then(() => {
console.log('copySignatureToClipboard: Copied formatted HTML via Clipboard API');
showCopyFeedback(true);
}).catch(err => {
console.error('copySignatureToClipboard: Clipboard API failed:', err);
fallbackCopy(html);
});
} catch (err) {
console.error('copySignatureToClipboard: ClipboardItem error:', err);
fallbackCopy(html);
}
} else {
fallbackCopy(html);
}
}
function fallbackCopy(html) {
console.log('fallbackCopy: Using fallback method');
const $temp = $('');
$temp.html(html);
$temp.css({
position: 'absolute',
left: '-9999px',
top: '0'
});
$('body').append($temp);
const range = document.createRange();
range.selectNodeContents($temp[0]);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
const successful = document.execCommand('copy');
console.log('fallbackCopy: execCommand result:', successful);
showCopyFeedback(successful);
} catch (err) {
console.error('fallbackCopy: Error:', err);
showCopyFeedback(false);
}
selection.removeAllRanges();
$temp.remove();
}
function showCopyFeedback(success) {
const $btn = $('#copy-signature-btn .elementor-button-text');
if (success) {
$btn.text('✓ Email signature copied');
console.log('showCopyFeedback: Copy successful');
} else {
$btn.text('✗ Copy failed - try again');
console.log('showCopyFeedback: Copy failed');
}
}
// Event listeners
$('#sig-full-name, #sig-pronouns, #sig-title, #sig-department, #sig-email, #sig-website, #sig-address').on('input', function() {
console.log('Input detected on:', $(this).attr('id'));
updatePreview(false);
});
// Add adviser checkbox listener
$('input[name="sig-adviser"]').on('change', function() {
console.log('Adviser checkbox changed:', $(this).is(':checked'));
// Check if any fields have actual values (not just placeholders)
const hasValues = $('#sig-full-name').val() ||
$('#sig-email').val() ||
$('#sig-title').val();
// Use placeholders if no actual values exist
updatePreview(!hasValues);
});
$('#sig-phone').on('input change keyup paste blur', function() {
console.log('Phone field event detected');
setTimeout(function() {
// Check if phone field has any actual numbers (not just mask characters)
const phoneValue = $('#sig-phone').val();
const hasNumbers = phoneValue && phoneValue.replace(/\D/g, '').length > 0;
// Check if any other fields have actual values
const hasOtherValues = $('#sig-full-name').val() ||
$('#sig-email').val() ||
$('#sig-title').val();
// Use placeholders if no actual values exist
updatePreview(!(hasNumbers || hasOtherValues));
}, 50);
});
$('#copy-signature-btn').on('click', 'a.elementor-button', function(e) {
e.preventDefault();
console.log('Copy button clicked');
copySignatureToClipboard();
});
$('#signin-psu-btn').on('click', function(e) {
e.preventDefault();
console.log('Sign in with Penn State button clicked');
signInAndFetchUserData();
});
// Initialize
console.log('Signature generator initialized');
populateThemeOptions(); // Populate theme radio buttons
updatePreview(true);
});
Best Practices
To maintain consistency and professionalism across the College of the Liberal Arts, we recommend the following guidelines for email signatures.
Keep it simple and professional
- Use a clean format and avoid using decorative fonts, colors, personal quotes, or background images.
- Limit your signature to essential information—avoid long or overly complex layouts.
Follow Penn State naming conventions
To ensure consistency with University editorial standards:
- Use the college’s full and correct name.
- ✅ College of the Liberal Arts
- ❌ College of Liberal Arts
- Use Penn State when referring to the University.
- ✅ Penn State
- ❌ The Pennsylvania State University
- ❌ Penn State University
- List your title, unit, and college affiliation clearly.
- ✅ Department of English
- ✅ School of Public Policy
- ❌ English Department
- ❌ Public Policy School
- Always use full unit names on first reference; avoid acronyms unless widely recognized and defined elsewhere.
- Capitalize the formal names of departments and units. Use lowercase for informal or generic references.
Pronouns are optional
- You may include your personal pronouns after your name, but it is not required.
- If included, list them in parentheses or on a separate line to maintain clarity (e.g., she/her, they/them).
Include contact details thoughtfully
- You may include your Penn State phone number if you have one. Personal phone numbers are optional.
- Use your official @psu.edu email address only.
Add links purposefully
- We encourage you to include a link to the College of the Liberal Arts website: la.psu.edu
- You may include links to official college social media icons following the instructions already provided in the Brand Guide.
- Avoid linking to personal websites unless they are relevant to your position (e.g., faculty profile pages, professional portfolios).
Optional: Include a professional call to action
- You may add one brief call to action related to your work. Examples include:
- Explore mentoring and engagement opportunities in Liberal Arts.
- Learn more about undergraduate research in Liberal Arts.
- Support student success in Liberal Arts.
- Explore marketing resources for Liberal Arts faculty and staff.
- Keep calls to action short, relevant, and aligned with college priorities.
Keep accessibility in mind
- Use standard fonts like Arial or Calibri, size 10–12.
- Use the default color. It will switch between black and white depending on whether the viewer is using dark mode or light mode.
- Avoid images as the only form of information—screen readers may not detect them.
- If using social media icons, always include descriptive alt text (instructions already available in the Brand Guide).
Avoid unnecessary clutter
- Do not include inspirational quotes, emojis, animated GIFs, or personal statements unrelated to your role.
- Do not use confidentiality disclaimers unless required by policy in your unit.
- Avoid adding multiple logos or graphics; the Liberal Arts wordmark is sufficient if used.
Instagram | LinkedIn | Facebook | YouTube