$(document).ready(function() { var lastOpenedBoxData; // Stores JSON-data of last opened editBox var notifications = []; // Stores noty-Notifications var reminders = []; // Stores reminder-noty-Notifications function noty_error_retry() { notifications.push( noty({ layout : 'topCenter', text : 'Irgendwas ist schief gelaufen.
Bitte probieren Sie es später noch einmal.', type : 'error', timeout : 3000 })); } window.noty_reminder = noty_reminder; function noty_reminder(reminderID, subject) { var reminderID = reminderID; reminders[reminderID] = noty({ layout : 'topCenter', text : 'Erinnerung:
' + subject, type : 'alert', buttons : [ {addClass: 'btn btn-primary', text: 'OK', onClick: function(noty) { data = { reminderID: reminderID }; $.getJSON("ajax.php?action=setReminderReminded", data, function(r) { if(r['status'] == "OK") { noty.close(); reminders[reminderID] = undefined; } else { noty_error_retry(); } }); }}, {addClass: 'btn btn-danger', text: 'Snooze', onClick: function(noty) { data = { reminderID: reminderID }; $.getJSON("ajax.php?action=setReminderSnooze", data, function(r) { if(r['status'] == "OK") { noty.close(); reminders[reminderID] = undefined; } else { noty_error_retry(); } }); }} ] }); $("audio")[0].play() } function getUrlGetParameter(val) { var result = "Not found", tmp = []; location.search .substr(1) .split("&") .forEach(function (item) { tmp = item.split("="); if (tmp[0] === val) result = decodeURIComponent(tmp[1]); }); return result; } function handleEvents() { data = { userID: $("body").attr("data-user-id") }; $.getJSON("ajax.php?action=getEvents", data, function(r) { switch (r['type']) { case 'reminder': r['reminders'].forEach(function(item) { if(reminders[item['id']] == undefined) { noty_reminder(item['id'], item['subject']); } }); break; case 'ping': break; default: console.log("unknown event type:" + r['type']); } }); } function addSpinner(element) { element.append("
"); } function removeSpinner(element) { element.children(".spinner").remove(); } function loadBox(element, boxType, saveID, callback) { var saveButtonIDs = { saveMailFolder: {id: "save-mail-folder", text: "Mailkonto speichern"}, saveDocument: {id: "save-document", text: "Dokument speichern"}, saveLabel: {id: "save-label", text: "Label speichern"}, saveCall: {id: "save-call", text: "Anruf speichern"} }; if(boxType == "editBox") { $(document).on("click", element, function(e) { e.preventDefault(); $.getJSON($(this).attr('href'), function(r) { lastOpenedBoxData = r; try { var optionsContainer = document.createElement('div'); $.each(r['options'], function(i) { var option = this; switch(this.type) { case 'text': $(optionsContainer).append(this.name + "

"); break; case 'select': selectHtml = ""; $(optionsContainer).append(this.name + selectHtml + "

"); break; case 'datetime': nowDate = new Date(); nowDateString = "" + nowDate.getDate() + "." + nowDate.getMonth() + "." + nowDate.getFullYear() + " " + nowDate.getHours() + ":" + nowDate.getMinutes(); $(optionsContainer).append(this.name + "

"); break; case 'textarea': $(optionsContainer).append(this.name + "


"); break; case 'checkbox': $(optionsContainer).append(this.name + "

"); break; default: console.log("Missing input-type: " + this.type); break; } }); $.fancybox({ maxWidth : 800, maxHeight : 600, fitToView : true, width : '70%', height : '70%', autoSize : false, title : "

" + r['title'] + "


", content : optionsContainer.innerHTML, helpers : { title: { type : 'inside', position: 'top' } }, afterShow : function() { callback(); $('.fancybox-inner').append("" + saveButtonIDs[saveID]['text'] + ""); $(".datetimepicker").datetimepicker({ format: 'Y-m-d H:i', startDate: new Date() }); } }); } catch(e) { console.log(e); // DBG noty_error_retry(); } }); }); } } function getMailboxStatus() { $("#settings-mailboxes tr").each(function(item) { var thisTr = this; if(this.attributes.length > 0) { if($(this).children("td:first").children().length > 0) { $(this).children("td:first").children().remove(); } addSpinner($(this).children("td:first")); $.getJSON("ajax.php?action=getMailboxStatus&mailboxID=" + $(this).attr("data-mailbox-id"), function(r) { if(r['connected'] == true) { removeSpinner($(thisTr).children("td:first")); $(thisTr).children("td:first").append(""); } else { removeSpinner($(thisTr).children("td:first")); $(thisTr).children("td:first").append(""); } }); } }); } function settingsListener() { $(document).on("click", "#refresh-mailaccounts", function(e) { e.preventDefault(); getMailboxStatus(); }); } function manageLabelListener() { $(document).on("click", "#save-mail-folder", function(e) { e.preventDefault(); data = { mailboxFolderID: lastOpenedBoxData['mailboxFolderID'], account: $("#editbox-input-account").val(), folder: $("#editbox-input-folder").val(), labelID: getUrlGetParameter("labelID") }; $.getJSON("ajax.php?action=saveMailFolder", data, function(r) { if(r['status'] == "OK") { location.reload(); } else { noty_error_retry(); } }); }); $(document).on("change", "#editbox-input-account", function(e) { e.preventDefault(); data = { account: $("#editbox-input-account").val() }; $.getJSON("ajax.php?action=getMailaccountFoldersByUsername", data, function(r) { $("#editbox-input-folder").empty(); $.each(r, function(val, key) { $("#editbox-input-folder").append($("").attr("value", key).text(key)); }); }); }); } function manageLabelsListener() { $(document).on("click", "#save-label", function(e) { e.preventDefault(); data = { name: $("#editbox-input-name").val(), path: $("#editbox-input-path").val() }; $.getJSON("ajax.php?action=saveNewLabel", data, function(r) { if(r['status'] == "OK") { location.reload(); } else { console.log(r); noty_error_retry(); } }); }); $(document).on("click", ".remove-label", function(e) { e.preventDefault(); tRow = $(this).parent().parent(); data = { labelID: $(this).attr("data-id") }; $.getJSON("ajax.php?action=removeLabel", data, function(r) { if(r['status'] == "OK") { tRow.fadeOut(400, function() { tRow.remove(); }); } else { console.log(r); noty_error_retry(); } }); }); } function LabelListener() { $(document).on("change", ".fancybox-inner select", function(e) { reloadDraftVars(); }); $(document).on("click", "#save-document", function(e) { e.preventDefault(); data = { draft: $("#editbox-input-vorlage").val(), filename: $("#editbox-input-filename").val(), labelID: getUrlGetParameter("labelID"), draftVars: {} }; $(".editbox-draft-vars").each(function(i) { data['draftVars'][$(this).attr("id").replace("editbox-draft-vars-", "")] = $(this).val(); }); $.getJSON("ajax.php?action=saveNewDocument", data, function(r) { console.log(r); }); }); $(document).on("click", "#save-call", function(e) { e.preventDefault(); data = { userID: $("body").attr("data-user-id"), callDate: $('#editbox-datetime-call-date').val(), callerTelNr: $('#editbox-input-caller-telnr').val(), labelID: $('#editbox-input-label-id').val(), callNotes: $('#editbox-textarea-call-notes').val(), callSetReminder: $('#editbox-checkbox-call-set-reminder').val() } $.getJSON("ajax.php?action=saveNewCall", data, function(r) { if(r['status'] == "OK") { $.fancybox.close(); //$("a[href=\"#calls\"]").tab("show"); } else { noty_error_retry(); } }); }); $(document).on("click", "#refresh-documents", function(e) { e.preventDefault(); $("#refresh-documents").hide(); addSpinner($("#document-list th:nth-child(6)")); $.getJSON("ajax.php?action=scanDocuments", {}, function(r) { if(r['status'] == "OK") { if(r['new'] > 0) { location.reload(); } else { removeSpinner($("#document-list th:nth-child(6)")); $("#refresh-documents").show(); } } else { noty_error_retry(); } }); }); $(document).on("click", ".reply-mail", function(e) { e.preventDefault(); data = { mailID: $(this).attr("data-mail-id") }; $.getJSON("ajax.php?action=getMailContent", data, function(r) { window.location.href = "mailto:" + r['to'] + "?subject=" + r['subject'] + "&body=" + r['body']; }); }); $(document).on("change", ".mail-processed", function(e) { data = { mailID: $(this).attr("id").replace("mail-processed-", ""), value: $(this).is(':checked') }; $.getJSON("ajax.php?action=changeMailProcessed", data, function(r) { if(r['status'] != "OK") { noty_error_retry(); } }); }); var calendar = $("#calendar").calendar({ tmpl_path: "/tmpls/", events_source: "ajax.php?action=getCalendarEvents", first_day: 1, // Monday onAfterViewLoad: function(view) { $('.btn-group button').removeClass('active'); $('button[data-calendar-view="' + view + '"]').addClass('active'); } }); $('.btn-group button[data-calendar-view]').each(function() { var $this = $(this); $this.click(function() { calendar.view($this.data('calendar-view')); }); }); } function reloadDraftVars() { $.getJSON("ajax.php?action=getDraftVars&draft=" + $(".fancybox-inner select").val(), function(r) { draftVarsContainer = $("#draft-vars"); if(draftVarsContainer.length > 0) { console.log(draftVarsContainer); draftVarsContainer.remove(); } $(".fancybox-inner .save-button").before("
"); r.forEach(function(item) { $(".fancybox-inner #draft-vars").append(item + "


"); }) }); } $.fn.editable.defaults.mode = 'inline'; $.fn.editableform.buttons = ''+ ''; $('.editable-element-text').editable({ escape: false, success: function(response, newValue) { console.log(response); // Debug output from ajax.php if(response.status == 'error') return response.msg; //msg will be shown in editable form }, error: function (xhr, status, error) { //var err = eval("(" + xhr.responseText + ")"); return xhr.statusText; }, params: function(params) { params.action = 'updateMailaccounts'; return params; } }); $('.editable-element-select-protocol').editable({ defaultValue: 'imap', source: [ {value: 'imap', text: 'IMAP'}, {value: 'pop3', text: 'POP3'} ], success: function(response, newValue) { console.log(response); // Debug output from ajax.php if(response.status == 'error') return response.msg; //msg will be shown in editable form }, error: function (xhr, status, error) { //var err = eval("(" + xhr.responseText + ")"); return xhr.statusText; }, params: function(params) { params.action = 'updateMailaccounts'; return params; } }); $('.editable-element-select-use-ssl').editable({ defaultValue: '1', source: [ {value: '1', text: 'On'}, {value: '0', text: 'Off'} ], success: function(response, newValue) { console.log(response); // Debug output from ajax.php if(response.status == 'error') return response.msg; //msg will be shown in editable form }, error: function (xhr, status, error) { //var err = eval("(" + xhr.responseText + ")"); return xhr.statusText; }, params: function(params) { params.action = 'updateMailaccounts'; return params; } }); $('.editable-element-select-no-valid-cert').editable({ defaultValue: '0', source: [ {value: '0', text: 'On'}, {value: '1', text: 'Off'} ], success: function(response, newValue) { console.log(response); // Debug output from ajax.php if(response.status == 'error') return response.msg; //msg will be shown in editable form }, error: function (xhr, status, error) { //var err = eval("(" + xhr.responseText + ")"); return xhr.statusText; }, params: function(params) { params.action = 'updateMailaccounts'; return params; } }); $('#add-mailaccount').on('click', function(e) { e.preventDefault(); var uID = $(this).attr('data-uid'); $.ajax({ url: 'ajax.php', type: 'POST', data: {'action': 'addDefaultMailaccount', 'user-id': uID}, success: function (result) { console.log(result); location.reload(); } }); }); function fancyBoxLoader() { $.ajax({ url: 'ajax.php', data: {'action': 'getMailAccountsByUid', 'uID': $('.manage-mailboxfolder').attr('data-uid')}, type: 'GET', global: false, async: true, dataType: 'json', success: function(data) { result = data; $('.editable-element-select-mailaccount').editable({ //defaultValue: '0', source: result, success: function(response, newValue) { console.log(response); // Debug output from ajax.php if(response.status == 'error') return response.msg; //msg will be shown in editable form }, error: function (xhr, status, error) { //var err = eval("(" + xhr.responseText + ")"); return xhr.statusText; }, params: function(params) { params.action = 'updateMailfolder'; return params; } }); } }); $('.editable-element-text').editable({ escape: false, success: function(response, newValue) { console.log(response); // Debug output from ajax.php if(response.status == 'error') return response.msg; //msg will be shown in editable form }, error: function (xhr, status, error) { //var err = eval("(" + xhr.responseText + ")"); return xhr.statusText; }, params: function(params) { params.action = 'updateMailfolder'; return params; } }); } $('.remove-mailaccount').on('click', function(e) { e.preventDefault(); var id = $(this).attr('data-id'); $.ajax({ url: 'ajax.php', type: 'POST', data: {'action': 'removeMailaccount', 'id': id}, success: function (result) { console.log(result); location.reload(); } }); }); $('.remove-mailboxfolder').on('click', function(e) { e.preventDefault(); var id = $(this).attr('data-id'); $.ajax({ url: 'ajax.php', type: 'POST', data: {'action': 'removeMailboxFolder', 'id': id}, success: function (result) { console.log(result); location.reload(); } }); }); $('#add-mailboxfolder').on('click', function(e) { e.preventDefault(); var uID = $(this).attr('data-uid'); var lID = $(this).attr('data-lid'); $.ajax({ url: 'ajax.php', type: 'POST', data: {'action': 'addDefaultMailfolder', 'user-id': uID, 'label-id': lID}, success: function (result) { console.log(result); location.reload(); }, error: function(result) { console.log(result); } }); }); $(".datetimepicker").datetimepicker({ format: 'Y-m-d H:i', startDate: new Date() }); switch(getUrlGetParameter("action")) { case 'settings': getMailboxStatus(); settingsListener(); break; case 'manage-label': loadBox('.manage-mailboxfolder', "editBox", "saveMailFolder", function() {}); manageLabelListener(); break; case 'manage-labels': loadBox('#add-label', "editBox", "saveLabel", function() {}); manageLabelsListener(); break; case 'label': loadBox('#new-document', "editBox", "saveDocument", reloadDraftVars); loadBox('#new-call', 'editBox', 'saveCall', function() {}); LabelListener(); break; default: break; } handleEvents(); setInterval(handleEvents, 60000); });