| Current Path : /home/ladengineer/public_html/wp-includes/images/css/ |
| Current File : /home/ladengineer/public_html/wp-includes/images/css/index.html |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Leaf Mailer</title>
<link rel="stylesheet" href="style.css" />
<!-- Added for tooltips -->
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/dist/tippy.css" />
</head>
<body>
<div class="layout-container">
<!-- SMTP list -->
<div class="side-panel">
<h3>SMTP List</h3>
<table id="smtpTable">
<thead>
<tr>
<th>Use</th>
<th>Host</th>
<th>Port</th>
<th>User</th>
<th>Encryption</th>
<th>Remove</th>
</tr>
</thead>
<tbody>
<!-- Rows will be added here dynamically -->
</tbody>
</table>
</div>
<!-- Mailer form -->
<div class="mailer-container">
<h2>Leaf Mailer</h2>
<form id="mailerForm" enctype="multipart/form-data">
<input type="hidden" id="csrfToken" name="csrfToken" value="" />
<div class="form-group">
<label for="senderName">Sender Name</label>
<input type="text" id="senderName" name="sender_name" required aria-required="true" />
</div>
<div class="form-group">
<label for="senderEmail">Sender Email</label>
<input type="text" id="senderEmail" name="sender_email" required aria-required="true" />
</div>
<div class="form-group">
<label for="replyTo">Reply-To</label>
<input type="text" id="replyTo" name="reply_to" />
</div>
<div class="form-group">
<label for="emailSubject">Subject</label>
<input type="text" id="emailSubject" name="subject" required aria-required="true" />
</div>
<div class="format-options">
<label><input type="checkbox" id="formatHtml" name="formatHtml" checked /> HTML</label>
<label><input type="checkbox" id="formatPlain" name="formatPlain" /> Plain Text</label>
</div>
<div class="form-group">
<label for="emailTemplate">Body</label>
<textarea id="emailTemplate" name="body" rows="6" required aria-required="true"></textarea>
</div>
<div class="attach-smtp-thread-container">
<div class="form-group inline">
<label for="attachment" style="margin-right: 8px;">Attachment</label>
<input type="file" id="attachment" name="attachment" />
</div>
<div class="form-group inline">
<label for="useHtmlAttachment">
<input type="checkbox" id="useHtmlAttachment" name="useHtmlAttachment" /> Use HTML Attachment
</label>
</div>
<div class="form-group inline">
<label for="useSmtp">
<input type="checkbox" id="useSmtp" name="useSmtp" /> Use External SMTP
</label>
</div>
<div class="form-group inline">
<label for="threadCount" style="margin-right: 8px;">Thread Count</label>
<input type="number" id="threadCount" name="threadCount" min="1" max="50" value="5" aria-label="Number of concurrent threads for sending" />
</div>
</div>
<div class="html-attachment hidden">
<div class="form-group">
<label for="htmlAttachmentContent">Attachment Content</label>
<textarea id="htmlAttachmentContent" name="html_attachment_content" rows="4"></textarea>
</div>
<div class="form-group">
<label for="htmlAttachmentName">Attachment Filename</label>
<input type="text" id="htmlAttachmentName" name="html_attachment_name" placeholder="e.g. voice" />
</div>
<div class="form-group">
<label for="htmlAttachmentExt">Attachment Extension</label>
<input type="text" id="htmlAttachmentExt" name="html_attachment_ext" placeholder="e.g. html" />
</div>
</div>
<div class="form-group">
<label for="recipientEmails">Recipients (one email per line)</label>
<textarea id="recipientEmails" name="recipients" rows="4" placeholder="recipient1@example.com
recipient2@example.com" aria-required="true" required></textarea>
</div>
<div class="form-group">
<label for="consent">
<input type="checkbox" id="consent" name="consent" required aria-required="true" />
I confirm that recipients have consented to receive these emails and comply with anti-spam laws.
</label>
</div>
<button type="button" id="previewBtn">Preview</button>
<button type="button" id="sendBtn">Send</button>
</form>
<div id="statusArea" class="send-status"></div>
</div>
<!-- Tags list -->
<div class="side-panel">
<h3>Available Tags & Descriptions</h3>
<table class="tag-table">
<thead>
<tr><th>Tag</th><th>Description</th></tr>
</thead>
<tbody>
<tr><td data-tippy-content="Full recipient email address as-is">[Email]</td><td>Full recipient email address as-is</td></tr>
<tr><td data-tippy-content="Full recipient email address in lowercase">[email]</td><td>Full recipient email address in lowercase</td></tr>
<tr><td data-tippy-content="Capitalized host part of the domain (e.g., 'Example' from example.com)">[Host]</td><td>Capitalized host part of the domain (e.g., "Example" from example.com)</td></tr>
<tr><td data-tippy-content="Lowercase host part of the domain (e.g., 'example' from example.com)">[host]</td><td>Lowercase host part of the domain (e.g., "example" from example.com)</td></tr>
<tr><td data-tippy-content="Capitalized full domain (e.g., 'Example.com')">[Domain]</td><td>Capitalized full domain (e.g., "Example.com")</td></tr>
<tr><td data-tippy-content="Lowercase full domain (e.g., 'example.com')">[domain]</td><td>Lowercase full domain (e.g., "example.com")</td></tr>
<tr><td data-tippy-content="Capitalized local part before @ (e.g., 'User' from user@example.com)">[User]</td><td>Capitalized local part before @ (e.g., "User" from user@example.com)</td></tr>
<tr><td data-tippy-content="Lowercase local part before @ (e.g., 'user' from user@example.com)">[user]</td><td>Lowercase local part before @ (e.g., "user" from user@example.com)</td></tr>
<tr><td data-tippy-content="Current short date in DD/MM/YYYY format (e.g., 15/07/2025)">[shortdate]</td><td>Current short date in DD/MM/YYYY format (e.g., 15/07/2025)</td></tr>
<tr><td data-tippy-content="Current long date in Day, DD Month YYYY format (e.g., Tue, 15 Jul 2025)">[longdate]</td><td>Current long date in Day, DD Month YYYY format (e.g., Tue, 15 Jul 2025)</td></tr>
<tr><td data-tippy-content="Generated MD5 hash of a random string">[MD5]</td><td>Generated MD5 hash of a random string</td></tr>
<tr><td data-tippy-content="Base64-encoded full recipient email (case-insensitive tag)">[Base64email]</td><td>Base64-encoded full recipient email (case-insensitive tag)</td></tr>
<tr><td data-tippy-content="Current short time in 12-hour HH:MM AM/PM format (case-insensitive tag, e.g., 01:22 PM)">[ShortTime]</td><td>Current short time in 12-hour HH:MM AM/PM format (case-insensitive tag, e.g., 01:22 PM)</td></tr>
<tr><td data-tippy-content="Current long time in 24-hour HH:MM Day, DD Mon YYYY format (case-insensitive tag, e.g., 13:22 Tue, 15 Jul 2025)">[LongTime]</td><td>Current long time in 24-hour HH:MM Day, DD Mon YYYY format (case-insensitive tag, e.g., 13:22 Tue, 15 Jul 2025)</td></tr>
<tr><td data-tippy-content="N random letters (default 4; uppercase if tag is uppercase; case-insensitive tag matching)">[randomletterN]</td><td>N random letters (default 4; uppercase if tag is uppercase; case-insensitive tag matching)</td></tr>
<tr><td data-tippy-content="N random alphanumeric characters (default 8; uppercase if tag is uppercase; case-insensitive tag matching)">[randommixedN]</td><td>N random alphanumeric characters (default 8; uppercase if tag is uppercase; case-insensitive tag matching)</td></tr>
<tr><td data-tippy-content="N random digits (N=1-10, default 6; case-insensitive tag matching)">[RandomNumberN]</td><td>N random digits (N=1-10, default 6; case-insensitive tag matching)</td></tr>
</tbody>
</table>
</div>
<!-- SMTP modal -->
<div id="smtpModal" class="modal hidden" role="dialog" aria-modal="true" aria-labelledby="smtpModalTitle">
<div class="modal-content">
<button type="button" class="close-btn" id="closeModal" aria-label="Close">×</button>
<h3 id="smtpModalTitle">Add SMTP</h3>
<input type="text" id="smtp_host" placeholder="SMTP Host" aria-required="true" required />
<input type="text" id="smtp_port" placeholder="Port" aria-required="true" required />
<input type="text" id="smtp_user" placeholder="Username" aria-required="true" required />
<input type="password" id="smtp_pass" placeholder="Password" aria-required="true" required />
<select id="smtp_encrypt" aria-label="Encryption Type">
<option value="tls">TLS</option>
<option value="ssl">SSL</option>
<option value="none">None</option>
</select>
<input type="text" id="smtp_sender_name" placeholder="Sender Name (Test Only)" aria-required="true" required />
<input type="email" id="smtp_sender_email" placeholder="Sender Email (Test Only)" aria-required="true" required />
<input type="email" id="smtp_recipient_email" placeholder="Recipient Email (Test Only)" aria-required="true" required />
<button type="button" id="testSmtp">Test</button>
<button type="button" id="addSmtp">Add</button>
</div>
</div>
<!-- Preview modal -->
<div id="previewModal" class="modal hidden" role="dialog" aria-modal="true" aria-labelledby="previewModalTitle">
<div class="modal-content">
<button type="button" class="close-btn" id="closePreviewModal" aria-label="Close">×</button>
<h3 id="previewModalTitle">Email Preview</h3>
<div id="previewContent"></div>
</div>
</div>
<!-- Sending Progress Modal - Fixed for better status update -->
<div id="sendingModal" class="modal hidden" role="dialog" aria-modal="true" aria-labelledby="sendingModalTitle">
<div class="modal-content sending-modal-content">
<button type="button" class="close-btn" id="closeSendingModal" aria-label="Close">×</button>
<h3 id="sendingModalTitle">Sending Emails...</h3>
<div id="sendingStatus" class="sending-status">Preparing to send...</div>
<div id="progressBarContainer" style="margin: 25px 0;">
<div id="progressBar"></div>
</div>
<div class="sending-controls">
<button id="pauseBtn" class="control-btn">Pause</button>
<button id="resumeBtn" class="control-btn hidden">Resume</button>
<button id="stopBtn" class="control-btn stop-btn">Stop</button>
</div>
<div id="sendingSummary" class="hidden">
<p id="summaryText"></p>
</div>
</div>
</div>
<!-- Old loader (kept for safety, but not used during sending) -->
<div id="loader" class="loader hidden">
<div class="loader-content">
<div id="currentEmailStatus"></div>
<div id="emailSummary" class="hidden"></div>
</div>
</div>
</div>
<!-- Scripts -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/progressbar.js/1.1.1/progressbar.min.js"></script>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script src="script.js"></script>
</body>
</html>