5 require_once(
"$sharedLibrary/sFeatureMnu.i");
6 require_once(dirname(__FILE__) .
"/cu_notify.data");
9 $self =
"$menu_link?ft=$ft";
11 $parameters = array(
"a" => array(
"role" =>
"",
"email" =>
""));
12 $string = array(
"filter" => FILTER_SANITIZE_STRING);
13 $array = array(
"filter" => FILTER_DEFAULT);
14 HCU_ImportVars($parameters,
"a", array(
"role" => $string,
"email" => $string,
"emailList" => $array));
15 extract($parameters[
"a"]);
17 if ($operation !=
"") {
19 case "readEmailNotify":
20 $returnArray = ReadEmailNotify($dbh, $Cu);
22 case "updateEmailNotify":
23 $returnArray = UpdateEmailNotify($dbh, $Cu, $Cn, $role, $email,
false);
25 case "readVerifiedEmailList":
26 $returnArray = ReadVerifiedEmailList($dbh, $Cu);
28 case "updateVerifiedEmailList":
29 $returnArray = UpdateVerifiedEmailList($dbh, $Cu, $emailList);
32 $returnArray = ResendEmail($dbh, $Cu, $email);
34 default: $returnArray = array(
"sql" => array(),
"error" => array(
"Operation not recognized: $operation."),
"record" => array());
38 header(
'Content-type: application/json');
39 print HCU_JsonEncode($returnArray);
41 PrintNotifyPage($self);
50 function PrintNotifyPage($self) { ?>
52 .removeTD, .resendTD {
60 .statusRow .col-xs-1 {
64 .statusRow .col-xs-11 {
69 text-indent: 5px !important;
76 <script type=
"text/javascript">
80 getShowWaitFunctions();
83 var activeWindows = [];
84 var usedEmailList = {};
85 var mainGridChanged =
false;
86 var previousVerifiedEmailData =
null;
87 var noSESRole =
false;
90 var mainInitialized =
false;
91 var emailDDLDataSource =
null;
92 var emailNotifyDataSource =
null;
93 var fromEmailDDLs = [];
101 function InitEmailNotify() {
102 $.homecuValidator.setup({formValidate:
'mainForm', formStatusField:
'formValidateMainDiv',
104 customEmail:
function(input) {
105 if (!$(input).is(
".emailMultiCheck")) {
108 var value = $(input).val().trim();
110 if ($(input).data(
"hademail").trim() ==
"Y") {
111 $(input).attr(
"data-customEmail-msg",
"Cannot clear email.");
117 var emails = value.split(/[;\s,]/);
118 var numEmails = 0; <?php
119 for(var i = 0; i != emails.length; i++) {
120 var email = emails[i].trim();
122 if (!/^[A-Za-z0-9._-]*@[A-Za-z0-9._-]*\.[A-Za-z0-9_-]*$/.test(emails[i].trim())) {
123 $(input).attr(
"data-customEmail-msg",
"One of the emails is not valid.");
130 if (numEmails == 0) {
131 $(input).attr(
"data-customEmail-msg",
"Email is required.");
140 emailDDLDataSource =
new kendo.data.DataSource({
144 emailNotifyDataSource =
new kendo.data.DataSource({
148 url:
"<?php echo $self; ?>&operation=readEmailNotify",
155 url:
"<?php echo $self; ?>&operation=updateEmailNotify",
160 url:
"<?php echo $self; ?>&operation=updateEmailNotify",
164 parameterMap:
function(data, type) {
166 if (type ==
"read") {
168 }
else if (type ==
"update") {
169 var record = data.models[0];
170 return {role: record.roleId, email: record.email};
175 parse:
function(results) {
177 if (results.status !=
"000") {
178 $.homecuValidator.displayMessage(results.error, $.homecuValidator.settings.statusError );
180 }
else if (results.info !=
"") {
181 $.homecuValidator.displayMessage(results.info, $.homecuValidator.settings.statusInfo );
184 if (results.action ==
"update") {
185 mainGridChanged =
true;
187 var updateInput = $(
".roleTextLabel:contains(" 188 + results.record[0].roleText.split(
"<br>")[0] +
")").closest(
".mockTr").find(
"[name^='emailMulti_']");
189 $(updateInput).val(results.record[0].email);
192 var distinctFromEmails = {};
193 var fromEmailData = emailNotifyDataSource.data();
194 for(var i = 0, length = fromEmailData.length; i != length; i++) {
195 var record = fromEmailData[i];
197 if (record.single && $(
"[data-index='" + i +
"'].unknownEmail").length == 0) {
198 distinctFromEmails[record.email.trim()] =
true;
203 var manageEmailGrid = $(
"#manageEmailGrid").data(
"kendoGrid");
204 var manageEmailData = manageEmailGrid.dataSource.data();
205 for(var i = 0, length = manageEmailData.length; i != length; i++) {
206 var record = manageEmailData[i];
207 manageEmailData[i].used = distinctFromEmails[record.email.trim()] ===
true;
209 manageEmailGrid.dataSource.data(manageEmailData);
211 return results.record;
212 }
else if (results.action ==
"read") {
214 var
template = kendo.template($(
"#gridTemplate").html());
215 $(
"#mainForm").append(
template({gridData: results.data.gridData}));
217 emailDDLDataSource.data(results.data.approvedEmails);
219 $(
"[id^='emailDDL_']").each(
function() { <?php
221 var email = $(ddlDiv).closest(
".mockTr").data(
"email");
222 var ddl = $(ddlDiv).kendoDropDownList({
223 dataSource: emailDDLDataSource,
225 dataTextField:
"email",
226 dataValueField:
"email",
227 optionLabel:
"Select an email...",
228 select:
function(e) {
230 if (e.dataItem.email.trim() ==
"") {
231 $.homecuValidator.displayMessage(
"Email cannot be cleared.", $.homecuValidator.settings.statusError );
234 $(ddlDiv).closest(
".mockTr").removeClass(
"unknownEmail");
235 var tr = $(this.wrapper).closest(
".mockTr");
236 var index = $(tr).data(
"index");
237 emailNotifyDataSource.at(index).set(
"email", e.dataItem.email);
238 emailNotifyDataSource.sync();
241 }).data(
"kendoDropDownList");
243 if (email !=
"" && ddl.value() ==
"") {
244 $(ddlDiv).closest(
".mockTr").addClass(
"unknownEmail");
247 fromEmailDDLs.push(ddl);
250 return results.data.gridData;
251 mainGridChanged =
true;
257 roleId: {type:
"string"},
258 roleText: {type:
"string"},
259 email: {type:
"string"},
260 required: {type:
"boolean"},
261 single: {type:
"boolean"}
267 emailNotifyDataSource.read();
269 $(
"#mainForm").on(
"change",
"[name^='emailMulti_']",
function() {
271 $(
this).addClass(
"emailMultiCheck");
273 var passed = $.homecuValidator.validate();
276 $(
this).removeClass(
"emailMultiCheck");
277 var value = $(
this).val().trim();
278 var tr = $(
this).closest(
".mockTr");
279 var index = $(tr).data(
"index");
280 emailNotifyDataSource.at(index).set(
"email", value);
281 emailNotifyDataSource.sync();
292 function InitEmailVerify() {
293 var emailListBtn = $(
"#emailListBtn").kendoButton({
296 emailVerifyWindow.center().open();
298 }).data(
"kendoButton");
300 var emailResendDataSource =
new kendo.data.DataSource({
303 url:
"<?php echo $self; ?>&operation=resendEmail",
307 parameterMap:
function(data, type) {
313 parse:
function(data) {
315 if (data.status !==
"000") {
316 $.homecuValidator.displayMessage(data.error, $.homecuValidator.settings.statusError );
318 if (data.info !=
"") {
319 $.homecuValidator.displayMessage(data.info, $.homecuValidator.settings.statusInfo );
323 var email = data.email;
324 var grid = $(
"#manageEmailGrid").data(
"kendoGrid");
325 var gridData = grid.dataSource.data();
327 for (var i = 0; i != gridData.length; i++) {
328 var record = gridData[i];
329 var recordEmail = record.email.trim();
330 if (recordEmail == email) {
331 gridData[i].status =
"Pending";
332 gridData[i].resend =
false;
337 grid.dataSource.data(gridData);
345 var emailVerifyValidator = {formValidate:
'emailVerifyWindowForm', formStatusField:
'formValidatePopupDiv', homecuCustomRules: {
346 emailInput:
function(input) {
347 if (!$(input).is(
"[name='emailInput']")) {
350 var value = $(input).val().trim();
353 if ($.homecuValidator.isRequired) {
354 $(input).attr(
"data-emailInput-msg",
"Email is required.");
358 if (value.toLowerCase() ==
"<?php echo GetTemporaryEmail(); ?>") {
359 $(input).attr(
"data-emailInput-msg",
"Cannot add temporary email.");
362 if (!/^[A-Za-z0-9._-]*@[A-Za-z0-9._-]*\.[A-Za-z0-9_-]*$/.test(value)) {
363 $(input).attr(
"data-emailInput-msg",
"Email is not valid.");
367 var emailRegExp =
new RegExp (
"\\b" + value +
"\\b",
"i");
368 if ($(
"#manageEmailGrid").text().match(emailRegExp) !=
null) {
369 $(input).attr(
"data-emailInput-msg",
"Email is a duplicate.");
377 var emailVerifyWindow = $(
"<div id='emailVerifyWindow'></div>").appendTo(
"body").kendoWindow({
379 title:
"Manage Email List",
383 template: $(
"#emailVerifyWindowTemplate").html()
386 $(
"#emailVerifyWindow").data(
"resolved",
false);
387 if ($(
"#emailVerifyWindow").data(
"first")) {
388 $(
"#emailVerifyWindow").data(
"first",
false);
391 $(
"#emailVerifyWindow").data(
"isUpdate",
false);
393 if (window.activeWindows !=
null) {
394 window.activeWindows.push(
this);
396 $.homecuValidator.setup(emailVerifyValidator);
397 $.homecuValidator.validate(); <?php
400 var resolved = $(
"#emailVerifyWindow").data(
"resolved");
403 var manageEmailGrid = $(
"#manageEmailGrid").data(
"kendoGrid");
404 var isUpdate = $(
"#emailVerifyWindow").data(
"isUpdate");
405 var hasChanges = $(
"#emailVerifyWindow").data(
"hasChanges");
406 var isNew = $(
"#emailVerifyWindow").data(
"isNew");
408 $(
"#emailVerifyWindow .prepopulatedMsg").show();
410 $(
"#emailVerifyWindow .prepopulatedMsg").hide();
412 if ((!hasChanges && !isNew) || (isNew && manageEmailGrid.dataSource.data().length == 0)) {
414 $(
"[name='emailInput']").val(
null);
415 if (window.activeWindows !=
null) {
416 window.activeWindows.pop();
418 $.homecuValidator.setup({formValidate:
'mainForm', formStatusField:
'formValidateMainDiv'});
421 manageEmailGrid.dataSource.read({operation:
"updateVerifiedEmailList"}); <?php
422 e.preventDefault(); <?php
425 $(
"[name='emailInput']").val(
null);
426 var discardChangesDialog = $(
"#discardChangesDialog").data(
"kendoDialog");
427 if (discardChangesDialog ==
null) {
428 discardChangesDialog = $(
"<div id='discardChangesDialog'></div>").appendTo(
"body").kendoDialog({
429 title:
"Discard Changes",
430 content:
"<p>Changes have been made to the CU email list.</p><p>Do you wish to discard your changes?</p>",
433 {text:
"Yes", primary:
true, action:
function() {
434 var isNew = $(
"#emailVerifyWindow").data(
"isNew");
435 var hasChanges = $(
"#emailVerifyWindow").data(
"hasChanges");
439 mainGridChanged =
true; <?php
441 if (window.activeWindows !=
null) {
442 window.activeWindows.pop();
444 $.homecuValidator.setup({formValidate:
'mainForm', formStatusField:
'formValidateMainDiv'});
446 manageEmailGrid.dataSource.data(previousVerifiedEmailData);
447 manageEmailGrid.dataSource.sync();
450 $.homecuValidator.setup({formValidate:
'mainForm', formStatusField:
'formValidateMainDiv'});
453 $(
"#emailVerifyWindow").data(
"hasChanges",
false);
454 $(
"#emailVerifyWindow").data(
"resolved",
true);
455 $(
"#emailVerifyWindow").data(
"kendoWindow").close();
460 if (window.activeWindows !=
null) {
461 window.activeWindows.push(
this);
465 if (window.activeWindows !=
null) {
466 window.activeWindows.pop();
470 }).data(
"kendoDialog");
473 discardChangesDialog.open();
479 }).data(
"kendoWindow");
480 $(
"#emailVerifyWindow").data(
"first",
true);
483 var manageEmailGrid = $(
"#manageEmailGrid").kendoGrid({
486 parse:
function(data) {
488 if (data.status !=
"000") {
489 $.homecuValidator.displayMessage(data.error, $.homecuValidator.settings.statusError );
490 $(
"#emailVerifyWindow").data(
"hasChanges",
false);
493 $(
"#emailVerifyWindow").data(
"isNew",
false);
495 if ($(
"#emailVerifyWindow:visible").length > 0) {
496 $(
"#emailVerifyWindow").data(
"hasChanges",
false);
497 $(
"#emailVerifyWindow").data(
"kendoWindow").close();
499 $(
"#emailListBtn").data(
"kendoButton").enable(
true);
501 if (data.isNew ===
true) {
502 $(
"#emailVerifyWindow").data(
"isNew",
true);
504 if (data.verifiedEmailList.length > 0) {
505 $(
"#emailVerifyWindow .prepopulatedMsg").show();
511 if (data.info && data.info.length > 0) {
512 $.homecuValidator.displayMessage(data.info, $.homecuValidator.settings.statusInfo );
515 previousVerifiedEmailData = data.verifiedEmailList.slice(0);
518 var replacementList = [];
519 for(var i = 0; i != data.verifiedEmailList.length; i++) {
520 var record = data.verifiedEmailList[i];
521 if (record.status ==
"Success") {
522 replacementList.push({email: record.email});
527 replacementList.push({email:
"<?php echo GetTemporaryEmail(); ?>"});
529 emailDDLDataSource.data(replacementList);
531 for(var i = 0; i != fromEmailDDLs.length; i++) {
532 fromEmailDDLs[i].refresh();
535 return data.verifiedEmailList;
540 email: {type:
"string"},
541 status: {type:
"string", defaultValue:
""},
542 deleted: {type:
"boolean", defaultValue:
false},
543 used: {type:
"boolean", defaultValue:
false},
544 itsNew: {type:
"boolean", defaultValue:
true},
545 isDirty: {type:
"boolean", defaultValue:
true},
546 resend: {type:
"boolean", defaultValue:
false}
552 url:
"<?php echo $self; ?>",
556 operation:
"readVerifiedEmailList" 559 parameterMap:
function(data, type) {
561 emailDDLDataSource.data(data.approvedEmails);
562 if (data.operation ==
"readVerifiedEmailList") {
564 }
else if (data.operation ==
"updateVerifiedEmailList") {
565 var gridData = $(
"#manageEmailGrid").data(
"kendoGrid").dataSource.data();
566 gridData = $.grep(gridData,
function (n, i) {
567 return !(n.itsNew ===
true && n.deleted ===
true);
569 data.emailList = kendo.stringify(gridData);
574 filter: {field:
"deleted",
operator:
"neq", value:
true}
577 {field:
"email", title:
"Address"},
578 {field:
"status", width: iconWidth, title:
"Status"},
582 rowTemplate: $(
"#manageEmailRowTemplate").html(),
584 template:
"<tr class='noRecordsDiv'><td colspan='4'>No Records Found</td></tr>" 586 }).data(
"kendoWindow");
588 $(
"#manageEmailGrid .k-grid-header th:eq(2)").
remove();
589 $(
"#manageEmailGrid .k-grid-header th:eq(1)").attr(
"colSpan", 2);
593 $(
"#manageEmailGrid").on(
"click",
".removeTD",
function() {
594 var removeDialog = $(
"#removeDialog").data(
"kendoDialog");
596 if (removeDialog ==
null) {
597 removeDialog = $(
"<div id='removeDialog'></div>").appendTo(
"body").kendoDialog({
598 title:
"Confirm Deletion",
599 content:
"Are you sure you want to delete this email?",
602 {text:
"Yes", primary:
true, action:
function() {
603 $(
"#emailVerifyWindow").data(
"hasChanges",
true);
604 var thisTr = $(
"#removeDialog").data(
"thisTr");
605 var grid = $(
"#manageEmailGrid").data(
"kendoGrid");
606 var dataItem = grid.dataItem($(thisTr));
607 dataItem.deleted =
true;
608 grid.dataSource.sync();
612 if (window.activeWindows !=
null) {
613 window.activeWindows.push(
this);
616 close:
function (e) {
617 if (window.activeWindows !=
null) {
618 window.activeWindows.pop();
621 }).data(
"kendoDialog");
624 $(
"#removeDialog").data(
"thisTr", $(
this).closest(
"tr"));
628 $(
"#manageEmailGrid").on(
"click",
".resendTD",
function() {
629 var email = $(
this).closest(
"tr").find(
"td:eq(0)").text().trim();
630 emailResendDataSource.read({email: email});
633 $(
"#emailVerifyWindow").on(
"click",
".cancelBtn",
function() {
634 $(
"#emailVerifyWindow").data(
"kendoWindow").close();
637 $(
"#emailVerifyWindow").on(
"click",
".updateBtn",
function() {
638 if ($.homecuValidator.validate()) {
641 var newEmail = $(
"[name='emailInput']").val().trim();
642 if (newEmail !=
"") {
643 $(
"#emailVerifyWindow").data(
"hasChanges",
true);
644 $(
"#manageEmailGrid").data(
"kendoGrid").dataSource.add({email: newEmail, status:
"", used:
false, itsNew:
true,
645 isDirty:
true, resend:
false});
647 $(
"[name='emailInput']").val(
null); <?php
650 $(
"#emailVerifyWindow").data(
"isUpdate",
true);
651 $(
"#emailVerifyWindow").data(
"kendoWindow").close();
656 $(
"[name='emailInput']").on(
"keyup",
function(e) { <?php
661 if (code == enterCode) {
663 }
else if (code == commaCode) {
664 $(
this).val($(
this).val().trim().replace(
",",
""));
667 if (code == enterCode || code == commaCode) {
668 $.homecuValidator.isRequired =
true;
669 if ($.homecuValidator.validate()) {
670 $(
"#emailVerifyWindow").data(
"hasChanges",
true);
671 $(
"#manageEmailGrid").data(
"kendoGrid").dataSource.add({email: $(
this).val(), status:
"", used:
false, itsNew:
true,
672 isDirty:
true, resend:
false});
674 $(
this).val(
null); <?php
676 $.homecuValidator.isRequired =
false;
684 <?php printExtendShowOverflown(); ?>
686 var toolTipProps = homecuTooltip.defaults;
687 toolTipProps.filter =
".showEllipsis:visible:overflown";
688 toolTipProps.content =
function(e) {
689 return $(e.target).text().trim();
692 $(
"#manageEmailGrid").kendoTooltip(toolTipProps);
694 toolTipProps.filter =
".statusTD";
695 toolTipProps.content =
function(e) {
696 return $(e.target).data(
"status").trim();
699 $(
"#manageEmailGrid").kendoTooltip(toolTipProps);
702 $(document).ready(
function() {
705 <?php printClickOverlayEvent(); ?>
709 <script type=
"text/x-kendo-template" id=
"gridTemplate">
711 <div
class=
"row hcuSpacer h3">
712 <div
class=
"col-xs-12">
716 <div
class=
"row hcuSpacer">
717 <div
class=
"col-xs-12 hcu-secondary">
718 <div
class=
"vsgSecondary">
719 Select an email address
for each type of notification message shown below.
723 <div
id=
"gridContainerFrom"><div
class=
"container-fluid well well-sm">
724 # for (index; index != gridData.length; index++) { # 725 # var record = gridData[index]; # 726 # if (!record.single) { <?php // Records are sorted with the email that must be single at the top. Treat the singles differently. ?> 729 <div
class=
"row hcuSpacer mockTr" data-index=
"#:index#" data-email=
"#:record.email#">
730 <div
class=
"col-xs-12 col-sm-4 col-md-4">
731 <label>#= record.roleText #</label>
733 <div
class=
"col-xs-12 col-sm-8 col-md-8">
734 <div
id=
'emailDDL_#:index#' class=
'hcu-all-100'></div>
740 <div
class=
"row hcuSpacer h3">
741 <div
class=
"col-xs-12">
742 Notification Emails From Homecu
745 <div
class=
"row hcuSpacer">
746 <div
class=
"col-xs-12 hcu-secondary">
747 <div
class=
"vsgSecondary">
748 Select an email address
for each type of notification message shown below.
749 To enter a list of addresses, use a semicolon (;) to separate multiple addresses.
753 <div
class=
"row hcuSpacer">
754 <div
class=
"col-xs-12 hcu-secondary">
755 <div
class=
"vsgSecondary">
756 Existing addresses can be changed, but they cannot be left blank.
760 <div
id=
"gridContainerTo"><div
class=
"container-fluid well well-sm">
761 # for (index; index != gridData.length; index++) { #
762 # var record = gridData[index]; # 763 <div
class=
"row hcuSpacer mockTr" data-index=
"#:index#">
764 <div
class=
"col-xs-12 col-sm-4 col-md-4">
765 <label
class=
'roleTextLabel'>#= record.roleText #</label>
767 <div
class=
"col-xs-12 col-sm-8 col-md-8">
768 <input type=
'text' name=
'emailMulti_#:index#' class=
'hcu-all-100 k-input k-textbox' placeholder=
'Separate email addresses with semicolons.' 769 value=
"#:record.email#" data-hademail=
"# if (record.email.trim() == '') { # N # } else { # Y # } #">
775 <script type=
"text/x-kendo-template" id=
"emailVerifyWindowTemplate">
776 <div
class=
"container-fluid hcu-template" id=
"emailVerifyWindowForm">
777 <div
id=
"formValidatePopupDiv"></div>
778 <div
class=
"row hcuSpacer">
779 <div
class=
"col-xs-12 hcu-secondary">
780 <div
class=
"vsgSecondary">
781 Add
new emails to be verified here. Pressing update will start the email verification process.
782 Each address will receive an email with a web link to verify the address.
783 After verification, email addresses can be used as the notification from address.
784 <span
class=
"prepopulatedMsg" style=
"display:none;">List was prepopulated from emails currently used. They are not verified.</span>
788 <div
class=
"row hcuSpacer">
789 <div
class=
"col-xs-12">
790 <input type=
"text" name=
"emailInput" class=
"k-textbox hcu-all-100" placeholder=
"Separate email addresses with commas.">
793 <div
class=
"row hcuSpacer">
794 <div
class=
"col-xs-12">
795 <div
id=
"manageEmailGrid"></div>
798 <div
class=
"row hcuSpacer">
799 <div
class=
"col-xs-12">
803 <div
class=
"row hcuSpacer">
804 <div
class=
"col-xs-12">
805 <div
class=
"k-block k-shadow k-display-block container-fluid">
806 <span
class=
"hcu-secondary col-xs-12 statusRow">
807 <span
class=
"col-xs-1"><i
class=
"fa fa-plus"></i></span>
808 <span
class=
"vsgSecondary col-xs-11">New address, not verified</span>
810 <span
class=
"hcu-secondary col-xs-12 statusRow">
811 <span
class=
"col-xs-1"><i
class=
"fa fa-times"></i></span>
812 <span
class=
"vsgSecondary col-xs-11">Removes email from list</span>
814 <span
class=
"hcu-secondary col-xs-12 statusRow">
815 <span
class=
"col-xs-1"><i
class=
"fa fa-paper-plane"></i></span>
816 <span
class=
"vsgSecondary col-xs-11">Resends verification email (1 hour wait)</span>
818 <span
class=
"hcu-secondary col-xs-12 statusRow">
819 <span
class=
"col-xs-1 vsgSecondary">
820 <span
class=
"restriction pending readonly hcu-all-100">
821 <i
class=
"fa fa-circle"></i>
824 <span
class=
"vsgSecondary col-xs-11">Verification pending</span>
826 <span
class=
"hcu-secondary col-xs-12 statusRow">
827 <span
class=
"col-xs-1 vsgSecondary">
828 <span
class=
"restriction ban readonly hcu-all-100">
829 <i
class=
"fa fa-ban"></i>
832 <span
class=
"vsgSecondary col-xs-11">Verification failed</span>
834 <span
class=
"hcu-secondary col-xs-12 statusRow">
835 <span
class=
"col-xs-1 vsgSecondary">
836 <span
class=
"restriction allow readonly hcu-all-100">
837 <i
class=
"fa fa-check"></i>
840 <span
class=
"vsgSecondary col-xs-11">Verification passed</span>
846 <div
class=
"hcu-edit-buttons k-state-default">
847 <a
class=
"cancelBtn" href=
"\\#">Cancel</a>
849 <a
class=
"updateBtn k-button k-primary" href=
"\\#"><i
class=
"fa fa-check"></i>Update</a>
854 <script type=
"text/x-kendo-template" id=
"manageEmailRowTemplate">
855 # var statusImg = ""; var statusDescr = ""; # 858 statusDescr =
"Verification passed";
859 statusImg =
'<span class="vsgSecondary"> <div class="restriction allow readonly hcu-all-100"><i class="fa fa-check"></i></div> </span>';
863 statusDescr =
"Verification pending";
864 statusImg =
'<span class="vsgSecondary"> <div class="restriction pending readonly hcu-all-100"><i class="fa fa-circle"></i></div> </span>';
867 case "TemporaryFailure":
868 statusDescr =
"Verification failed";
869 statusImg =
'<span class="vsgSecondary"> <div class="restriction ban readonly hcu-all-100"><i class="fa fa-ban"></i></div> </span>';
873 statusImg =
'<span class="vsgSecondary"> <div class="readonly hcu-all-100"><i class="fa fa-plus"></i></div> </span>';
874 statusDescr =
"New address, not verified";
877 # var dirtyClass = isDirty ? "k-dirty-cell" : ""; # 878 # var dirtySpan = isDirty ? "<span class='k-dirty'></span>" : ""; # 880 <tr data-uid=
"#= uid #">
881 <td
class=
"showEllipsis #= dirtyClass #">#= dirtySpan # #: email #</td>
882 <td
class=
"statusTD" data-status=
"#: statusDescr #"> #= statusImg # </td>
885 <td
class=
"resendTD"><i
class=
"fa fa-paper-plane"></i></td>
891 <td
class=
"removeTD"><i
class=
"fa fa-times"></i></td>
897 <div
class=
"container-fluid" id=
"mainForm">
898 <div
id=
"formValidateMainDiv"></div>
899 <div
class=
"row hcuSpacer">
900 <div
class=
"col-xs-12">
901 <a href=
"#" id=
"emailListBtn">Manage Email List</a>