3 require_once
"../system/engines/imapClient/AdapterForOutgoingMessage.php";
4 require_once
"../system/engines/imapClient/Helper.php";
5 require_once
"../system/engines/imapClient/ImapClient.php";
6 require_once
"../system/engines/imapClient/ImapClientException.php";
7 require_once
"../system/engines/imapClient/ImapConnect.php";
8 require_once
"../system/engines/imapClient/IncomingMessage.php";
9 require_once
"../system/engines/imapClient/IncomingMessageAttachment.php";
10 require_once
"../system/engines/imapClient/OutgoingMessage.php";
11 require_once
"../system/engines/imapClient/Section.php";
12 require_once
"../system/engines/imapClient/SubtypeBody.php";
13 require_once
"../system/engines/imapClient/TypeAttachments.php";
14 require_once
"../system/engines/imapClient/TypeBody.php";
17 use SSilence\ImapClient\ImapClientException;
18 use SSilence\ImapClient\ImapClient as Imap;
60 require_once
"../system/classes/webmail.php";
64 $webmail->connectionInfo =
"<i>$username</i>";
77 if (isset(
$_GET[
'folder']) && (!empty(
$_GET[
'folder']) && (is_string(
$_GET[
'folder']))))
85 $imap->selectFolder(
'INBOX');
86 $imap->currentFolder =
"INBOX";
90 catch (ImapClientException
$error)
95 $errorMsg =
'Oh no! Verbindung mit server: '.$server.
' als user: '.
$username.
' nicht moeglich!';
101 if (isset(
$_GET[
'deleteMessage']) && (
$_GET[
'deleteMessage'] ==
true))
105 alert::draw(
"success",
"Email deleted",
"The email was deleted",
"", 1200);
109 alert::draw(
"danger",
"ERROR:",
"Unable to delete email",
"", 2800);
114 if (isset(
$_GET[
'purgeTrash']) && (
$_GET[
'purgeTrash'] ==
true))
116 $imap->selectFolder(
"Trash");
119 alert::draw(
"success",
"Mailbox cleaned",
"The trash and spam folders were cleaned up",
"", 1200);
123 alert::draw(
"danger",
"ERROR:",
"Unable to purge trash and spam folder",
"", 2800);
139 <!-- JS: load data tables -->
140 <script
type=
"text/javascript">
141 $(document).
ready(
function() {
142 $(
'#table-sort').dataTable({
144 "bLengthChange":
false,
154 $(
'#table-sort tr').click(
function() {
155 var href = $(
this).find(
"a").attr(
"href");
167 function markAsSeen(msgno, state){
170 url:
'js/webmail-markAsSeen.php',
171 data: {msgno: msgno, state:state},
172 success:
function(data){
176 let seenIcon = $(
'#seenIcon_'+msgno);
177 let seenIconLink = $(
'#seenIconLink_'+msgno);
178 let mailboxName = $(
'#mailboxName_'+msgno);
179 let mailboxSubject = $(
'#mailboxSubject_'+msgno);
180 let newMessagesLabel = $(
'#newMessagesLabel');
182 let labelCount = $(newMessagesLabel).text().slice(2);
185 let envelopeLabel = $(
'#envelope-label');
188 $(seenIcon).removeClass();
191 if (state ===
'setSeen')
193 $(seenIcon).addClass(
'fa fa-envelope-open-o text-muted');
194 $(mailboxName).removeClass().addClass(
'mailbox-name');
195 $(mailboxSubject).removeClass().addClass(
'mailbox-subject');
197 $(seenIconLink).attr(
"onclick",
'markAsSeen('+msgno+
', \'setUnseen\')');
206 $(newMessagesLabel).text(
'+ '+labelCount);
208 $(envelopeLabel).text(labelCount);
212 $(newMessagesLabel).text(
'+ 0');
213 $(newMessagesLabel).fadeOut();
214 $(envelopeLabel).fadeOut();
219 $(seenIcon).addClass(
'fa fa-envelope text-muted');
220 $(mailboxName).removeClass().addClass(
'mailbox-name text-bold');
221 $(mailboxSubject).removeClass().addClass(
'mailbox-subject text-bold');
223 $(seenIconLink).attr(
"onclick",
'markAsSeen('+msgno+
', \'setSeen\')');
230 $(newMessagesLabel).text(
'+ '+labelCount);
231 $(envelopeLabel).text(labelCount);
232 console.log(
'LABEL COUNTER:' +labelCount);
236 $(newMessagesLabel).text(
'+ 1');
237 $(envelopeLabel).fadeIn();
238 $(newMessagesLabel).fadeIn();
250 function markAsFlagged(uid, state){
254 url:
'js/webmail-setFlagged.php',
255 data: {uid: uid, state:state},
256 success:
function(data){
260 let starIcon = $(
'#starIcon_'+uid);
261 let starIconLink = $(
'#starIconLink_'+uid);
264 $(starIcon).removeClass();
267 if (state ===
'setFlagged')
269 $(starIcon).addClass(
'fa fa-star text-orange');
271 $(starIconLink).attr(
"onclick",
'markAsFlagged('+uid+
', \'setUnFlagged\')');
275 else if (state ===
'setUnFlagged')
277 $(starIcon).addClass(
'fa fa-star-o text-orange');
279 $(starIconLink).attr(
"onclick",
'markAsFlagged('+uid+
', \'setFlagged\')');
291 function moveMessage(uid, folder, targetFolder){
294 url:
'js/webmail-moveMessage.php',
295 data: {uid: uid, folder:folder, targetFolder:targetFolder},
296 success:
function(data){
300 let emailRow = $(
'#emailRow_'+uid);
302 let messageCountSourceElement = $(
'#messageCount_'+folder+
' small');
303 let messageCountSource = $(messageCountSourceElement).text().slice(1,-1);
304 let messageCountTargetElement = $(
'#messageCount_'+targetFolder+
' small');
305 let messageCountTarget = $(messageCountTargetElement).text().slice(1,-1);
307 messageCountSource--;
309 messageCountTarget++;
311 $(messageCountSourceElement).text(
'('+messageCountSource+
')');
313 $(messageCountTargetElement).text(
'('+messageCountTarget+
')');
316 $(emailRow).removeClass().addClass(
'animated fadeOutRight');
317 $(emailRow).fadeOut();
327 function deleteMessage(uid, folder){
330 url:
'js/webmail-deleteMessage.php',
331 data: {uid:uid, folder:folder},
332 success:
function(data){
335 var newMessagesLabel = $(
'#newMessagesLabel');
337 var labelCount = $(newMessagesLabel).text().slice(2);
339 var envelopeLabel = $(
'#envelope-label');
341 var emailRow = $(
'#emailRow_'+uid);
344 var messageCountElement = $(
'#messageCount_'+folder+
' small');
345 var messageCount = $(messageCountElement).text().slice(1,-1);
349 $(messageCountElement).text(
'('+messageCount+
')');
352 $(emailRow).removeClass().addClass(
'animated fadeOutRight');
353 $(emailRow).fadeOut();
362 $(newMessagesLabel).text(
'+ '+labelCount);
364 $(envelopeLabel).text(labelCount);
368 $(newMessagesLabel).text(
'+ 0');
369 $(newMessagesLabel).fadeOut();
370 $(envelopeLabel).fadeOut();
380 <!-- Content Wrapper. Contains page content -->
381 <div class=\"content-wrapper\" id=\"content-FX\">
382 <!-- Content Header (Page header) -->
383 <section class=\"content-header\">";
385 echo backend::getTitle(
$lang[
'WEBMAIL'],
$lang[
'WEBMAIL_SUBTEXT']);
386 echo
"<ol class=\"breadcrumb\">
387 <li><a href=\"index.php\" title=\"$lang[DASHBOARD]\"><i class=\"fa fa-dashboard\"></i> $lang[DASHBOARD]</a></li>
388 <li class=\"active\"><a href=\"index.php?page=webmail\" title=\"$lang[WEBMAIL]\"> $lang[WEBMAIL]</a></li>
391 <!-- Main content -->
392 <section class=\"content\">";
404 <div
class=
"col-md-3">
406 <
a href=
"index.php?page=webmail-compose" class=
"btn btn-success btn-large" style=
"width: 100%;">Write
a message</
a><br><br>
407 <div
class=
"box box-default animated fadeIn">
408 <div
class=
"box-header with-border">
409 <h3
class=
"box-title">Folders</h3>
411 <div
class=
"box-tools">
412 <button
type=
"button" class=
"btn btn-box-tool" data-widget=
"collapse"><
i class=
"fa fa-minus"></
i>
416 <div
class=
"box-body no-padding" style=
"">
417 <ul
class=
"nav nav-pills nav-stacked">
426 </div> <!-- /. left col -->
428 <div
class=
"col-md-9 animated fadeIn">
430 <div
class=
"box box-secondary">
431 <div
class=
"box-header with-border">
432 <h3
class=
"box-title"><?php echo
$imap->currentFolder; ?> </h3>
433 <?php echo
"<small>".$webmail->connectionInfo.
"</small>"; ?>
435 <div
class=
"box-tools pull-right">
436 <div
class=
"has-feedback">
437 <input
type=
"text" class=
"form-control input-sm" placeholder=
"Deep Search">
438 <span
class=
"glyphicon glyphicon-search form-control-feedback"></span>
443 <!-- /.box-header -->
444 <div
class=
"box-body no-padding">
445 <div
class=
"mailbox-controls">
448 <div
class=
"table-responsive mailbox-messages">
449 <table
class=
"table table-striped table-hover table-responsive" id=
"table-sort">
452 <td><div
class=
"icheckbox_flat-blue" aria-checked=
"false" aria-disabled=
"false" style=
"position: relative; width: 100%"><input
type=
"checkbox" style=
"position: absolute; opacity: 0;"><ins
class=
"iCheck-helper" style=
"position: absolute; top: 0%; left: 0%; display: block; width: 100%; height: 100%; margin: 0px; padding: 0px; background: rgb(255, 255, 255); border: 0px; opacity: 0;"></ins></div></td>
453 <td
class=
"mailbox-star"></td>
454 <td
class=
"mailbox-star"></td>
455 <td
class=
"mailbox-name"><?php echo
$lang[
'SENDER_FROM']; ?></td>
456 <td
class=
"mailbox-subject"><?php echo
$lang[
'SUBJECT']; ?></td>
457 <td
class=
"mailbox-attachment"></td>
458 <td
class=
"mailbox-date"><?php echo
$lang[
'DATE']; ?></td>
459 <td
class=
"mailbox-star"></td>
474 <!-- /.mail-box-messages -->
477 <div
class=
"box-footer no-padding">
480 </div> <!-- /. box secondary -->
481 </div> <!-- /. right col -->
482 </div> <!-- /. row -->
489 echo
"<h4>".$lang[
'WEBMAIL_NOT_ENABLED'].
"</h4>";
print $lang['FILEMAN_UPLOAD']
Throws a fancy Bootstrap Alert (success, info, warning or danger)
Backend class serves a few useful functions for the admin backend.
Mysqli database class; returns db connection object.
The language class - support multilingual backend.
Settings class: get and set YaWK system settings.
document ready(function() { $('a[data-confirm]').click(function(ev) { modal='#dataConfirmModal';var href=$(this).attr('href');var title=$(this).attr('title');var icon=$(this).attr('data-icon');if(!icon) { icon='fa fa-trash-o';} if(!$(modal).length) { $('body').append('< div id="dataConfirmModal" class="modal fade" role="dialog" aria-labelledby="dataConfirmLabel" aria-hidden="true">< div class="modal-dialog">< div class="modal-content">< div class="modal-header">< button type="button" class="close" data-dismiss="modal" aria-hidden="true">< i class="fa fa-times"></i ></button >< br >< div class="col-md-1">< h3 class="modal-title">< i class="'+icon+'"></i ></h3 ></div >< div class="col-md-11">< h3 class="modal-title" id="dataConfirmLabel">'+title+'</h3 ></div ></h3 ></div >< div class="modal-body"></div >< div class="modal-footer">< button type="button" class="btn btn-default" data-dismiss="modal" aria-hidden="true">Abbrechen</button >< a type="button" class="btn btn-danger" id="dataConfirmOK">< i class="'+icon+'"></i > L öschen</a ></div ></div ></div ></div >');} $(modal).find('.modal-body').text($(this).attr('data-confirm'));$('#dataConfirmOK').attr('href', href);$(modal).modal({show:true});return false;});$('#terminateUser').click(function() { var terminate=window.confirm("ACHTUNG!\nDas wird Deinen Account permanent deaktivieren.\n"+"Bist Du Dir sicher, dass Du das tun willst?");if(terminate===true) { var terminateUser=window.confirm("Bist Du Dir wirklich ganz sicher?\n"+"Diese Aktion kann nicht rueckgaengig gemacht werden.");if(terminateUser===true) { $.get('system/templates/YaWK-bootstrap3/js/terminate-user.php', function(data) { if(data==="true") { setTimeout("window.location='logout.html'", 0);} else { alert("Fehler: "+data);} });} } });function dismissNotifications() { $.ajax({ url:'js/dismiss-notifications.php', type:'POST', success:function(data) { if(!data) { alert('Something went wrong!');return false;} } });$("#bell-label").fadeOut();$('#notification-header').html('You have 0 notifications');$('#notification-menu').fadeOut();} $("#dismiss").click(function() { dismissNotifications();});function disableButtons(delay) { $('#loginButton').removeClass().addClass('btn btn-success disabled').attr('id', 'LOGIN_FORBIDDEN');$('#resetPasswordButton').removeClass().addClass('btn btn-danger disabled');setTimeout(function() { $('#LOGIN_FORBIDDEN').attr('id', 'loginButton').removeClass().addClass('btn btn-success');$('#resetPasswordButton').removeClass().addClass('btn btn-danger');}, delay);} $("#loginButton").click(function(){ if($('#loginButton').length > 0) { if($('#loginButton').hasClass('btn') &&$('#loginButton').hasClass('btn-success') &&$('#loginButton').hasClass('disabled')) { } else { $("#loginForm").submit();disableButtons(10000);} } else if($('#LOGIN_FORBIDDEN').length > 0) { if($('#LOGIN_FORBIDDEN').hasClass('btn') &&$('#LOGIN_FORBIDDEN').hasClass('btn-success') &&$('#LOGIN_FORBIDDEN').hasClass('disabled')) { } else { } } });$("#blockedBtn").hover(function() { $("#blockedBtn").hide();$("#askBtn").fadeIn(820);});})