diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..500d277 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.json.lock \ No newline at end of file diff --git a/system/load/backend.min.js b/system/load/backend.min.js index b6c7993..1afb40a 100644 --- a/system/load/backend.min.js +++ b/system/load/backend.min.js @@ -1 +1 @@ -function adminDialog(){function e(e){$("div#mainAdminDialog").html(e)}$("body").append('<div id="mainAdminDialog"></div>'),$("div#mainAdminDialog").dialog({modal:!0,title:"Notes - Administration",close:function(e,n){$("div#mainAdminDialog").remove()},position:{my:"center",at:"center",of:$("div.main")},resizable:!1,width:$("div.main").width(),height:500}),e("Loading ..."),function n(){var i;ajax_request("admin",{userid:userinformation.id,art:"list"},function(t){if("okay"===t.status){i=t.data.salt;var r="<h3>Userliste</h3><table> <tr><th>UserId</th><th>Username</th><th>Admin</th><th>Löschen</th> </tr>";t.data.list.forEach(function(e){r+='<tr userid="'+e.userid+'" class="'+(e.userid==userinformation.id?"important":"")+'"><td>'+e.userid.substr(0,20)+"</td><td>"+e.username+'</td><td><code style="color:black;">'+e.admin+'</code></td><td><button class="delUser">Löschen</button></td></tr>'}),r+="</table>",e(r+='<h3>Hinzufügen</h3><input type="text" id="newUserName" placeholder="Username"><br />Admin: <input type="radio" id="newUserAdmin" name="newUserAdmin" value="true"> true <input type="radio" id="newUserAdmin" name="newUserAdmin" value="false" checked="checked"> false <br /><input type="password" id="newUserPasswordA" placeholder="Passwort"><br /><input type="password" id="newUserPasswordB" placeholder="Passwort"><br /><button id="newUserButton">Erstellen</button>'),$("button#newUserButton").click(function(){if(""!=$("input#newUserPasswordA").val()&&""!=$("input#newUserName").val()){var e=$("input#newUserName").val();if(/[^a-z]+/.test(e))alert("Der Usernamen darf nur aus Kleinbuchstaben bestehen!");else if($("input#newUserPasswordA").val()==$("input#newUserPasswordB").val()){var t=sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash($("input#newUserPasswordA").val()));t=sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(t+"+"+i));var r={name:$("input#newUserName").val(),admin:"true"==$("input#newUserAdmin:checked").val(),password:t,salt:i};ajax_request("admin",{userid:userinformation.id,art:"add",user:r},function(e){1==e.data.done&&n(),"string"==typeof e.error[0]&&"Username already assigned!"===e.error[0]&&alert("Username bereits vergeben!")})}else alert("Die Passwörter stimmen nicht überein!")}else alert("Sie müssen alle Felder füllen!")}),$("button.delUser").click(function(){var e=$(this).parent().parent().attr("userid");if(confirm("Wollen Sie den User mit der ID: '"+e+"' wirklich löschen?")){if(e==userinformation.id&&!confirm("Sie löschen Ihren eigenen Account!! (Achten Sie darauf, dass immer ein Administrator bestehen bleibt!)"))return;ajax_request("admin",{userid:userinformation.id,art:"del",deluserid:e},function(e){1==e.data.done&&n()})}})}else e("Fehler!")})}()} \ No newline at end of file +function adminDialog(){$("body").append('<div id="mainAdminDialog"></div>'),$("div#mainAdminDialog").dialog({modal:!0,title:"Notes - Administration",close:function(e,n){$("div#mainAdminDialog").remove()},position:{my:"center",at:"center",of:$("div.main")},resizable:!1,width:$("div.main").width(),height:500}),e("Loading ...");function e(e){$("div#mainAdminDialog").html(e)}function n(){var i;ajax_request("admin",{userid:userinformation.id,art:"list"},function(t){if("okay"===t.status){i=t.data.salt;var r="<h3>Userliste</h3><table> <tr><th>UserId</th><th>Username</th><th>Admin</th><th>Löschen</th> </tr>";t.data.list.forEach(function(e){r+='<tr userid="'+e.userid+'" class="'+(e.userid==userinformation.id?"important":"")+'"><td>'+e.userid.substr(0,20)+"</td><td>"+e.username+'</td><td><code style="color:black;">'+e.admin+'</code></td><td><button class="delUser">Löschen</button></td></tr>'}),r+="</table>",e(r+='<h3>Hinzufügen</h3><input type="text" id="newUserName" placeholder="Username"><br />Admin: <input type="radio" id="newUserAdmin" name="newUserAdmin" value="true"> true <input type="radio" id="newUserAdmin" name="newUserAdmin" value="false" checked="checked"> false <br /><input type="password" id="newUserPasswordA" placeholder="Passwort"><br /><input type="password" id="newUserPasswordB" placeholder="Passwort"><br /><button id="newUserButton">Erstellen</button>'),$("button#newUserButton").click(function(){if(""!=$("input#newUserPasswordA").val()&&""!=$("input#newUserName").val()){var e=$("input#newUserName").val();if(/[^a-z]+/.test(e))alert("Der Usernamen darf nur aus Kleinbuchstaben bestehen!");else if($("input#newUserPasswordA").val()==$("input#newUserPasswordB").val()){var t=sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash($("input#newUserPasswordA").val()));t=sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(t+"+"+i));var r={name:$("input#newUserName").val(),admin:"true"==$("input#newUserAdmin:checked").val(),password:t,salt:i};ajax_request("admin",{userid:userinformation.id,art:"add",user:r},function(e){1==e.data.done&&n(),"string"==typeof e.error[0]&&"Username already assigned!"===e.error[0]&&alert("Username bereits vergeben!")})}else alert("Die Passwörter stimmen nicht überein!")}else alert("Sie müssen alle Felder füllen!")}),$("button.delUser").click(function(){var e=$(this).parent().parent().attr("userid");if(confirm("Wollen Sie den User mit der ID: '"+e+"' wirklich löschen?")){if(e==userinformation.id&&!confirm("Sie löschen Ihren eigenen Account!! (Achten Sie darauf, dass immer ein Administrator bestehen bleibt!)"))return;ajax_request("admin",{userid:userinformation.id,art:"del",deluserid:e},function(e){1==e.data.done&&n()})}})}else e("Fehler!")})}n()} \ No newline at end of file diff --git a/system/load/devjs/fun_maker.js b/system/load/devjs/fun_maker.js index 54a8fd5..201ced8 100644 --- a/system/load/devjs/fun_maker.js +++ b/system/load/devjs/fun_maker.js @@ -73,7 +73,7 @@ function maker(noteid, notename, sharecont, savecallback) { } else{ //Offline nicht verfügbar - confirmDialog('Die gewäöhlte Notiz ist auf diesem Gerät leider nicht offline verfügbar!', + confirmDialog('Die gewählte Notiz ist auf diesem Gerät leider nicht offline verfügbar!', { "OK" : function (){$(this).dialog("close");} }, 'Offlinemodus' ); diff --git a/system/load/devjs/globals.js b/system/load/devjs/globals.js index 149a6b2..fa1798d 100644 --- a/system/load/devjs/globals.js +++ b/system/load/devjs/globals.js @@ -91,6 +91,10 @@ function ajax_request( task, post, callback, errcallback ){ console.log( data.error ); } else{ + if( systemOfflineMode ){ + //remove force reconnect if clicked on errormsg + $("div.global.error.message").unbind('click'); + } //hier online systemOfflineMode = false; systemOfflineManager.statusChanged( false ); @@ -117,6 +121,17 @@ function ajax_request( task, post, callback, errcallback ){ //globale Fehlermeldung errorMessage('Offlinemodus', false); + //force reconnect if clicked on errormsg. + $("div.global.error.message").click( () => { + errorMessage('Neu verbinden ...', false); + ajax_request( + "login", + { "status" : userinformation.id }, + () => {}, + () => { errorMessage('Offlinemodus', false);} + ); + }); + //jetzt offline systemOfflineMode = true; systemOfflineManager.statusChanged( true ); diff --git a/system/load/notes.min.js b/system/load/notes.min.js index bd6ebc0..c87ef93 100644 --- a/system/load/notes.min.js +++ b/system/load/notes.min.js @@ -1 +1 @@ -$(function(){loginsys()});class OfflineManager{constructor(){null!==localStorage.getItem("notes_offline_storage")?this.data=JSON.parse(localStorage.getItem("notes_offline_storage")):this.data={},this.status=null}statusChanged(t){!0!==this.status&&null!==this.status||t||this.pushToServer(),this.status=t}saveNote(t,a,e){this.status&&(this.data[t]={content:a,name:e},this.saveLocalStorage())}saveLocalStorage(){localStorage.setItem("notes_offline_storage",JSON.stringify(this.data))}pushToServer(){if("{}"==JSON.stringify(this.data))this.data={},this.saveLocalStorage();else if(0==this.status){var t=this;$.each(this.data,function(a,e){ajax_request("view",{userid:userinformation.id,noteid:a,note:{name:e.name,cont:e.content}},function(e){if($("div.noteview div.loading").addClass("disable"),"okay"===e.status){if(4==e.data.length){var s=JSON.parse(localStorage.getItem("note_autosave_"+a));s.lastserverchanged=e.data[3],localStorage.setItem("note_autosave_"+a,JSON.stringify(s))}delete t.data[a],t.saveLocalStorage()}})})}}}var userinformation={name:null,id:null,admin:!1,authcode:null},errorMessageTimeOut=null,systemOfflineMode=!1,systemOfflineManager=new OfflineManager,systemRESTAPI=!1;function review(e){$("div.login").addClass("disable"),$("div.noteview").addClass("disable"),$("div.noteslist").addClass("disable"),$("div.globalloader").addClass("disable"),$("div."+e).removeClass("disable")}function errorMessage(e,a){null!==errorMessageTimeOut&&clearTimeout(errorMessageTimeOut),null===e?($("div.global.error.message").html("Fehler!"),$("div.global.error.message").addClass("disable")):(void 0===a&&(a=10),$("div.global.error.message").html(e),$("div.global.error.message").removeClass("disable"),!1!==a&&(errorMessageTimeOut=setTimeout(function(){$("div.global.error.message").addClass("disable")},1e3*a)))}function ajax_request(e,a,i,o){if(systemRESTAPI&&("share"!=e||"login"!=e)||"auth"==e){var s="rest";void 0!==a.authcode&&null!=a.authcode||(a.authcode=userinformation.authcode)}else s="ajax";$.post(domain+"/"+s+".php?"+e,a,function(e){"object"==typeof e?("error"===e.status?console.log(e.error):(systemOfflineMode=!1,systemOfflineManager.statusChanged(!1),errorMessage(null)),"function"==typeof i&&i(e)):(errorMessage("Sever antwortet nicht korrekt!",!1),"function"==typeof o&&o(e))}).fail(function(){errorMessage("Offlinemodus",!1),systemOfflineMode=!0,systemOfflineManager.statusChanged(!0),"function"==typeof i&&i({data:{}})})}function confirmDialog(e,a,i){if(void 0===a)a={OK:function(){},Abbrechen:function(){}};if(void 0===i)i="Wichtig!";function o(e){$("div.globalDialog").html(e)}return $("div.globalDialog").removeClass("disable"),$("div.globalDialog").dialog({resizable:!1,height:"auto",width:"auto",minWidth:200,minHeight:150,modal:!0,title:i,close:function(){$("div.globalDialog").html(""),$("div.globalDialog").addClass("disable")},position:{my:"center",at:"center",of:$("div.main")},buttons:a}),o(e),o}function loginsys(){function e(){var e=window.location.hash;if(""!=e)if(e=e.substr(1),new RegExp("[a-z]+:[a-z0-9]+").test(e)){var a=e.split(":"),n=a[0],s=a[1];console.log('Versuche User "'+n+'" mit Loginlink einzuloggen.'),$("div.login div.input div.loading").removeClass("disable"),ajax_request("auth",{username:n,authcode:s},function(e){$("div.login div.input div.loading").addClass("disable"),"okay"===e.status?(userinformation.name=n,userinformation.id=e.data.id,userinformation.admin=e.data.admin,userinformation.authcode=s,localStorage.setItem("userinformation_id",userinformation.id),localStorage.setItem("userinformation_name",userinformation.name),localStorage.setItem("userinformation_admin",userinformation.admin),localStorage.setItem("userinformation_authcode",userinformation.authcode),systemRESTAPI=!0,o(),list()):i()})}else i();else i()}function i(){function e(){$("div.login div.input div.loading").removeClass("disable"),$("div.login div.input div#loginform").addClass("disable"),$("div.login p.message.important").addClass("disable");var e=sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash($("input#userpassword").val()));ajax_request("login",{username:$("input#username").val(),password:e},function(e){$("div.login div.input div.loading").addClass("disable"),"error"===e.status?($("div.login p.message.error").removeClass("disable"),$("div.login div.input div#loginform").removeClass("disable")):"okay"===e.status&&($("div.login p.message.okay").removeClass("disable"),$("div.login p.message.error").addClass("disable"),$("div.login div.input").addClass("disable"),$("input#username").val(""),$("input#userpassword").val(""),userinformation.name=e.data.name,userinformation.id=e.data.id,userinformation.admin=e.data.admin,localStorage.setItem("userinformation_id",userinformation.id),localStorage.setItem("userinformation_name",userinformation.name),localStorage.setItem("userinformation_admin",userinformation.admin),o(),list())})}systemOfflineMode?($("div.login p.message.important.offline").removeClass("disable"),$("div.login p.message.important.online").addClass("disable"),$("div.login div.input div#loginform").addClass("disable"),$("div.login div.input").addClass("disable")):(ajax_request("login",{status:userinformation.id},function(e){systemOfflineMode&&i()}),$("div.login p.message.important.offline").addClass("disable"),$("div.login p.message.important.online").removeClass("disable")),$("div.login p.message.error").addClass("disable"),$("div.login p.message.okay").addClass("disable"),$("div.login div.input div.loading").addClass("disable"),systemOfflineMode||($("div.login div.input div#loginform").removeClass("disable"),$("div.login div.input").removeClass("disable"),$("button#userlogin").unbind("click").click(e),$("input#userpassword").unbind("keyup").keyup(function(i){13==i.keyCode&&e()}))}function o(){var e=null;function i(){systemOfflineMode||systemRESTAPI||ajax_request("login",{logout:null},function(e){"okay"===e.status&&($("p.message.error.loggedout").removeClass("disable"),setTimeout(function(){$("p.message.error.loggedout").addClass("disable")},2e4))}),0==$("input#logouttype:checked").length?localStorage.clear():(localStorage.removeItem("userinformation_id"),localStorage.removeItem("userinformation_name"),localStorage.removeItem("userinformation_authcode"),localStorage.removeItem("userinformation_admin")),userinformation={name:null,id:null,admin:!1,authcode:null},systemRESTAPI=!1,window.location.hash="",null!==e&&clearInterval(e),errorMessage(null),"undefined"!=typeof cm_editor&&cm_editor.setValue("empty"),["input#userpassword","input#username","input#notename","div#notespreview","textarea#notesinput","input#newnotename","div.listpart div.list"].forEach(function(e){$(e).empty(),"textarea#notesinput"!==e&&$(e).val("")}),$("div.logout").addClass("disable"),loginsys()}function o(){$("div.logout span.usertools").tooltip(),systemOfflineMode?($("div.logout span.usertools span.ui-icon-wrench").addClass("disable"),$("div.logout span.usertools span.ui-icon-person").addClass("disable")):(userinformation.admin?($("div.logout span.usertools span.ui-icon-wrench").removeClass("disable"),$("div.logout span.usertools span.ui-icon-wrench").unbind("click").click(function(){$.ajax({type:"GET",url:domain+"/load/backend."+jsdevmin+".js",success:function(){adminDialog()},dataType:"script",cache:!0})})):$("div.logout span.usertools span.ui-icon-wrench").addClass("disable"),$("div.logout span.usertools span.ui-icon-person").unbind("click").click(function(){authCodeManager()}))}$("div.logout").removeClass("disable"),$("button#logout").unbind("click").click(i),e=setInterval(function(){if(null!=localStorage.getItem("note_maker_reopen")&&"none"!=localStorage.getItem("note_maker_reopen")){var e=JSON.parse(localStorage.getItem("note_maker_reopen"));ajax_request("view",{userid:userinformation.id,noteid:e.noteid,history:4},function(i){if("error"===i.status)errorMessage("Die Session ist abgelaufen!",!1);else if(null!=JSON.parse(localStorage.getItem("note_autosave_"+e.noteid))){var o=JSON.parse(localStorage.getItem("note_autosave_"+e.noteid)).lastserverchanged;i.data-o>5&&newerNoteOnServerFound()}})}else systemRESTAPI||ajax_request("login",{status:userinformation.id},function(e){1!=e.data&&errorMessage("Die Session ist abgelaufen!",!1)})},1e3*global_polling_secs),o(),$(document).ajaxComplete(function e(){o(),$(document).unbind("ajaxComplete",e)})}$("div.nojs.error.message").remove(),function(){review("globalloader");var a=window.location.hash;function n(){review("login"),""!=localStorage.getItem("userinformation_id")&&null!=localStorage.getItem("userinformation_id")&&""!=localStorage.getItem("userinformation_name")&&null!=localStorage.getItem("userinformation_name")?(userinformation.id=localStorage.getItem("userinformation_id"),userinformation.name=localStorage.getItem("userinformation_name"),userinformation.admin=JSON.parse(localStorage.getItem("userinformation_admin")),""!=localStorage.getItem("userinformation_authcode")&&null!=localStorage.getItem("userinformation_authcode")?(userinformation.authcode=localStorage.getItem("userinformation_authcode"),systemRESTAPI=!0,o(),list()):($("div.login div.input div.loading").removeClass("disable"),ajax_request("login",{status:userinformation.id},function(i){$("div.login div.input div.loading").addClass("disable"),systemOfflineMode?(o(),list()):1==i.data?(o(),list()):e()}))):systemOfflineMode?i():e()}""!=a?(a=a.substr(1),new RegExp("[^A-Za-z0-9]").test(a)?n():shareviewer(a,n)):n()}()}function list(){if(review("noteslist"),systemOfflineManager.pushToServer(),null!=localStorage.getItem("note_maker_reopen")&&"none"!=localStorage.getItem("note_maker_reopen")){var t=JSON.parse(localStorage.getItem("note_maker_reopen"));maker(t.noteid,t.name)}function i(t){systemOfflineMode?$("div.toolbar").addClass("disable"):($("div.toolbar").removeClass("disable"),$("button#newnote").unbind("click").click(function(){var t=$("input#newnotename").val();""!=t&&function(t){$("div.noteslist div.listpart div.loading").removeClass("disable"),ajax_request("list",{userid:userinformation.id,name:t},function(i){$("div.noteslist div.listpart div.loading").addClass("disable"),"okay"===i.status&&(console.log('Notiz: "'+t+'" ("'+i.data.id+'") angelegt.'),list())})}(t)}),$("button#notesarchive").unbind("click").click(function(){oldNotesManager()}));var i="<ul>";function s(){$("div.noteslist div.listpart div.list ul li span.notesnames").css({display:"inline-block",cursor:"pointer",width:$("div.noteslist div.listpart div.list ul li").width()-$("div.noteslist div.listpart div.list ul li span.noteseditbuttons").width()-5+"px"});var t=$("button#notesarchive").width();$("div.toolbar").width()-(t+($("input#newnotename").width()+$("button#newnote").width()+36))<10?($("button#notesarchive").css("float","none"),$("div.toolbar").css("line-height","28px")):($("button#notesarchive").css("float","right"),$("div.toolbar").css("line-height","inherit"))}$.each(t,function(s,e){i+='<li class="noteslist_notesnames box" noteid="'+e.noteid+'"><span class="notesnames">'+e.name+'</span> <span class="noteseditbuttons"><button art="up" title="Nach oben" '+(0!=s?"":'disabled="disabled"')+'>↑</button><button art="down" title="Nach unten" '+(t.length-1!=s?"":'disabled="disabled"')+'>↓</button><button art="del" title="Notiz archivieren">↻</button></span></li>'}),i+="</ul>",$("div.noteslist div.listpart div.list").html(i),$("li.noteslist_notesnames").tooltip(),$("div.noteslist div.listpart div.list ul").css({"list-style-type":"none"}),$("div.noteslist div.listpart div.list ul li.noteslist_notesnames").css({"line-height":"28px"}),$("span.noteseditbuttons").css({float:"right",cursor:"pointer"}),list_first_load&&($(window).resize(s),list_first_load=!1),s(),$("div.noteslist div.listpart div.list ul li span.notesnames").unbind("click").click(function(){var t=$(this).parent().attr("noteid"),i=$(this).text();console.log('Oeffne: "'+i+'" ("'+t+'")'),maker(t,i)}),systemOfflineMode?$("span.noteseditbuttons").addClass("disable"):($("span.noteseditbuttons").removeClass("disable"),$("span.noteseditbuttons button").unbind("click").click(function(){var t=$(this).attr("art"),i=$(this).parent().parent().attr("noteid");$("div.noteslist div.listpart div.loading").removeClass("disable"),ajax_request("list",{userid:userinformation.id,art:t,noteid:i},function(s){$("div.noteslist div.listpart div.loading").addClass("disable"),"okay"===s.status&&(console.log('Notiz: "'+i+'" wurde '+("del"==t?"gelöscht":"up"==t?"nach oben verschoben":"nach unten verschoben")),list())})}))}!function(){systemOfflineMode?t():($("div.noteslist div.listpart div.loading").removeClass("disable"),ajax_request("list",{userid:userinformation.id},function(s){$("div.noteslist div.listpart div.loading").addClass("disable"),"okay"===s.status?(localStorage.setItem("note_list_notes",JSON.stringify(s.data)),i(s.data)):t()},t));function t(){$("div.noteslist div.listpart div.loading").addClass("disable"),null!=localStorage.getItem("note_list_notes")&&i(JSON.parse(localStorage.getItem("note_list_notes")))}}()}var list_first_load=!0;var cm_editor;function maker(e,t,a,i){if(void 0===a){var n=!1,o=!1;localStorage.setItem("note_maker_reopen",JSON.stringify({noteid:e,name:t}))}else{if("function"==typeof i)o=!0;else o=!1;n=!0}var d,r;review("noteview");var s,l,c=!1,u=!1;function g(){cm_editor.off("change",s),cm_editor.off("change",l),newerNoteOnServerFound=function(){}}function v(){r=sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(d.content)),localStorage.setItem("note_autosave_"+d.id,JSON.stringify(d)),$("input#notename").val(d.name),$("textarea#notesinput").text(d.content),"object"!=typeof cm_editor?cm_editor=CodeMirror.fromTextArea(document.getElementById("notesinput"),{mode:"gfm",lineNumbers:!0,theme:"default"}):cm_editor.setValue($("textarea#notesinput").val()),function(){var e=new marked.Renderer;function t(e,t){var a=/(iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent);if(a&&void 0!==t&&1===t.text.length&&/^[A-Z]$/.test(t.text[0])){var i=$(":focus");i.blur(),i.focus()}$("div#notespreview").html(marked(cm_editor.getValue()))}e.heading=function(e,t){return"<h"+(t+2)+">"+e+"</h"+(t+2)+">"},e.link=function(e,t,a){return'<a href="'+e+'" title="'+t+'" target="_blank">'+a+"</a>"},marked.setOptions({renderer:e,gfm:!0,tables:!0,highlight:function(e,t){if("tex"!=t)return-1!==["markup","css","clike","javascript","c","bash","cpp","csharp","ruby","git","ini","java","json","lua","markdown","matlab","objectivec","perl","php","python","r","sql","swift"].indexOf(t)?Prism.highlight(e,Prism.languages[t]):e;try{return katex.renderToString(e)}catch(e){return'<span style="color:red;">'+e.message+"</span>"}}}),t(),n&&!o?$("div.input.box").addClass("disable"):($("div.input.box").removeClass("disable"),cm_editor.on("change",t));s=t}(),function(){function e(){var e=Date.now()-3e4>f,t={name:$("input#notename").val(),id:d.id,content:cm_editor.getValue(),lastserverchanged:d.lastserverchanged};localStorage.setItem("note_autosave_"+d.id,JSON.stringify(t)),e?h():($("span.noteunsaved").removeClass("disable"),$("span.notesaved").addClass("disable"))}$("span.noteunsaved").tooltip(),$("span.notesaved").tooltip(),u&&(e(),u=!1);cm_editor.on("change",e),l=e,$("span.noteunsaved").unbind("click").click(h)}()}var f=0;function h(a){if(r!=sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(cm_editor.getValue()))||u){function s(){n&&o?(f=Date.now(),i(cm_editor.getValue(),!1)):!1===n&&(systemOfflineMode?(systemOfflineManager.saveNote(e,cm_editor.getValue(),$("input#notename").val()),f=Date.now(),"function"==typeof a&&a(!0)):($("div.noteview div.loading").removeClass("disable"),ajax_request("view",{userid:userinformation.id,noteid:e,note:{name:$("input#notename").val(),cont:cm_editor.getValue()}},function(i){if($("div.noteview div.loading").addClass("disable"),"okay"===i.status){if(console.log('Notiz: "'+t+'" ("'+e+'") auf Server gespeichert.'),f=Date.now(),4==i.data.length){d.lastserverchanged=i.data[3];var n=JSON.parse(localStorage.getItem("note_autosave_"+e));n.lastserverchanged=i.data[3],localStorage.setItem("note_autosave_"+e,JSON.stringify(n))}$("span.notesaved").removeClass("disable"),$("span.noteunsaved").addClass("disable")}"function"==typeof a&&a("okay"===i.status)},function(e){"function"==typeof a&&a(!1)})))}c?($("body").append('<div id="dangerMessageNoteSave">Beim Speichern der Notiz kann es eventuell zu Datenverlust kommen, da die aktuellste Version nicht vom Server geladen werden konnte!</div>'),$("#dangerMessageNoteSave").dialog({resizable:!1,height:"auto",width:"auto",modal:!0,title:"Gefahr des Datenverlustes!",buttons:{"Trotzdem Speichern":function(){$(this).dialog("close"),c=!1,s()},"Erstmal nicht":function(){$(this).dialog("close")}},close:function(){$(this).remove()}})):s()}else"function"==typeof a&&a(!0)}function b(){function t(){errorMessage("Freigaben konnten nicht geladen werden."),$("div.noteview div.loading").addClass("disable")}$("div.noteview div.loading").removeClass("disable"),ajax_request("view",{userid:userinformation.id,noteid:e},function(a){if("okay"===a.status){var i='<div class="message error freigabeDialog disable">Konnte Aktion nicht durchführen.</div><table><tr><th>Link</th><th>Name</th><th>Erstellt</th><th>Bearbeiten</th><th>Letzter Aufruf (Anzahl)</th><th>Löschen</th></tr>',n=!1;$.each(a.data,function(e,t){n=!0,i+='<tr><td><a href="'+domain+"/#"+t.authcode+'" target="_blank">Aufrufen</a> <button authcode="'+t.authcode+'" class="freigabeQR">QR-Code</button></td>',i+="<td>"+t.name+"</td>",i+="<td>"+t.created+"</td>",i+='<td><code style="color:black;">'+t.edit+"</code></td>",i+="<td>"+t.lastAccessed+" ("+t.accesses+")</td>",i+='<td><button authcode="'+t.authcode+'" class="deleteFreigabe">Löschen</button></td></tr>'}),i+="</table>",!1===n&&(i+="<p>Noch keine Freigaben!</p>"),i+='<h3>Neue Freigabe</h3><div class="loading freigabeDialog disable"></div><input type="text" placeholder="Name" id="freigabeManagerNewName"><br /><input type="radio" id="freigabeManagerNewEdit" name="freigabeManagerNewEdit" value="true"> Bearbeiten erlauben <input type="radio" id="freigabeManagerNewEdit" name="freigabeManagerNewEdit" value="false" checked="checked"> Nur lesen <br /><button id="addFreigabe">Erstellen</button>',$("body").append('<div id="freigabeManagerDialog">'+i+"</div>"),$("div.noteview div.loading").addClass("disable"),$("div#freigabeManagerDialog").dialog({resizable:!1,height:"auto",width:"auto",modal:!0,title:"Freigaben",close:function(){$(this).remove()},position:{my:"center",at:"center",of:$("div.main")}}),$("button.deleteFreigabe").click(function(){var t=$(this).attr("authcode");$("div.freigabeDialog.loading").removeClass("disable"),ajax_request("view",{userid:userinformation.id,noteid:e,share:{authcode:t,edit:"leer",name:"leer"}},function(e){"okay"===e.status?($("div#freigabeManagerDialog").dialog("close"),b()):($("div.freigabeDialog.loading").addClass("disable"),$("div.freigabeDialog.error").removeClass("disable"))})}),$("button#addFreigabe").click(function(){var t=$("input#freigabeManagerNewName").val(),a="true"==$("input#freigabeManagerNewEdit:checked").val();""!=t&&($("div.freigabeDialog.loading").removeClass("disable"),ajax_request("view",{userid:userinformation.id,noteid:e,share:{authcode:"leer",edit:a,name:t}},function(e){"okay"===e.status?($("div#freigabeManagerDialog").dialog("close"),b()):($("div.freigabeDialog.loading").addClass("disable"),$("div.freigabeDialog.error").removeClass("disable"))}))}),$("button.freigabeQR").click(function(){var e=$(this).attr("authcode"),t=domain+"/#"+e,a='<p><b>Code:</b> <code style="color:black;">'+e+'</code></p><p><b>URL:</b> <input type="text" value="'+t+'" readonly="readonly" style="width:90%;"></p><p><b>Link:</b> <a href="'+t+'" target="_blank">Aufrufen</a></p><p><center><div style="background-color:white; padding:15px; border-radius:5px;" id="freigabeManagerQR"></div></center></p>';$("body").append('<div id="freigabeManagerQRDialog">'+a+"</div>"),$("div#freigabeManagerQRDialog").dialog({resizable:!1,height:"auto",width:"auto",modal:!0,title:"Freigabelink",close:function(){$(this).remove()},position:{my:"center",at:"center",of:$("div.main")}}),new QRCode(document.getElementById("freigabeManagerQR"),t)})}else t()},t)}function m(){function t(){errorMessage("Notizverlauf konnte nicht geladen werden."),$("div.noteview div.loading").addClass("disable")}$("div.noteview div.loading").removeClass("disable"),ajax_request("view",{userid:userinformation.id,noteid:e,history:3},function(e){if("okay"===e.status){var a="<table><tr><th>Änderungen</th><th>Zeitpunkt</th></tr>";$.each(e.data,function(e,t){a+="<tr><td>"+t.diff+"</td>",a+="<td>"+t.time+'<button key="'+e+'" class="takeInputFromHistory">Zurückkehren</button></td></tr>'}),a+="</table>",$("body").append('<div id="historyManagerDialog">'+a+"</div>"),$("div.noteview div.loading").addClass("disable"),$("div#historyManagerDialog").dialog({resizable:!1,height:"auto",width:"auto",modal:!0,title:"Notizverlauf",close:function(){$(this).remove()},position:{my:"center",at:"center",of:$("div.main")}}),$("button.takeInputFromHistory").click(function(){var t=$(this).attr("key"),a=e.data[t].text;cm_editor.setValue(a),$("div#historyManagerDialog").dialog("close")})}else t()},t)}!function(){function i(a,i){a||systemOfflineMode||(c=!0,errorMessage("Kann die aktuelle Version der Notiz nicht vom Server holen.",20)),null!=localStorage.getItem("note_autosave_"+e)?(d=JSON.parse(localStorage.getItem("note_autosave_"+e)),v()):systemOfflineMode?(confirmDialog("Die gewäöhlte Notiz ist auf diesem Gerät leider nicht offline verfügbar!",{OK:function(){$(this).dialog("close")}},"Offlinemodus"),list()):(d={name:t,id:e,content:"# "+t+"\nUnd hier dann der Text!!\n",lastserverchanged:void 0!==i?i:0},v())}n?(d={name:t,id:e,content:a.content,lastserverchanged:a.lastchanged},$("div.noteview div.loading").addClass("disable"),v()):systemOfflineMode?($("div.noteview div.loading").addClass("disable"),i(!1)):($("div.noteview div.loading").removeClass("disable"),ajax_request("view",{userid:userinformation.id,noteid:e,history:2},function(e){$("div.noteview div.loading").addClass("disable"),"okay"===e.status?(u=e.data.empty,e.data.empty?i(!0,e.data.geandert):(d={name:e.data.name,id:e.data.id,content:e.data.content,lastserverchanged:e.data.geandert},v())):i(!1)},function(e){i(!1)}))}(),$("button#closenote").unbind("click").click(function(){g(),n&&o?i(cm_editor.getValue(),!0):n?(window.location.hash="",loginsys()):!1===n&&h(function(e){e?(localStorage.setItem("note_maker_reopen","none"),list()):($("body").append('<div id="errorMessageNoteSave">Die Speicherung der Notiz auf dem Server schlug fehl!<br />Wollen Sie den Editor verlassen und einen Verlust der Änderungen in Kauf nehmen oder abbrechen?</div>'),$("#errorMessageNoteSave").dialog({resizable:!1,height:"auto",width:"auto",modal:!0,title:"Fehler beim Speichern!",buttons:{"Änderungen verwerfen":function(){localStorage.setItem("note_maker_reopen","none"),list(),$(this).dialog("close")},Abbrechen:function(){$(this).dialog("close")}},close:function(){$(this).remove()}}))})}),n||systemOfflineMode?($("button#publishnote").addClass("disable"),$("button#notehistory").addClass("disable")):($("button#publishnote").removeClass("disable"),$("button#notehistory").removeClass("disable"),$("button#publishnote").unbind("click").click(b),$("button#notehistory").unbind("click").click(m)),newerNoteOnServerFound=function(){!0,r==sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(cm_editor.getValue()))?(g(),maker(e,t)):(c=!0,confirmDialog("<p>Die Notiz ist auf dem Server verändert worden.<br>Wollen Sie die neue Version laden?</p><p class='small'>Dadurch können Ihre Änderungen verloren gehen! Andernfalls die Änderungen auf dem Server.</p>",{Ja:function(){g(),maker(e,t),!1,$(this).dialog("close")},Nein:function(){c=!1,h(),!1,$(this).dialog("close")}},"Änderung auf Server"))}}var newerNoteOnServerFound=function(){};function authCodeManager(){function e(e){$("div#authCodeManagerDialog").html(e)}function a(a){var s='<h3>Authentifizierungslinks</h3><div class="loading disable" id="authLinkLoading"></div>';function o(e,a){var n=!1;if($("span#newPasswordAIndikator").css({color:"white"}),""==e&&($("span#newPasswordAIndikator").css({"background-color":"inherit"}),$("span#newPasswordAIndikator").text("Bitte geben Sie ein Passwort ein!"),n=!0),""==a&&($("span#newPasswordBIndikator").css({"background-color":"inherit"}),$("span#newPasswordBIndikator").text("Bitte geben Sie das Passwort ein!"),n=!0),""!=e){var s,o=e,t=e.length,d=0;t>5?((d+=5*(t-=5))>20&&(d=20),o.match(/([a-zA-Z])/)&&(d+=10),o.match(/([A-Z])/)&&(d+=5),o.match(/([0-9])/)&&(d+=5),o.match(/([0-9].*[0-9])/)&&(d+=10),o.match(/([0-9].*[0-9].*[0-9])/)&&(d+=10),o.match(/([!,%,&,@,#,*,?,_,])/)&&(d+=15),o.match(/([!,%,&,@,#,*,?,_,].*[!,%,&,@,#,*,?,_,])/)&&(d+=15),o.match(/([!,%,&,@,#,*,?,_,].*[!,%,&,@,#,*,?,_,].*[!,%,&,@,#,*,?,_,])/)&&(d+=15)):d=0,d<=25?(s="Das soll ein Passwort sein?",$("span#newPasswordAIndikator").css({"background-color":"red"})):d<=50?(s="Gut, aber es geht noch besser!",$("span#newPasswordAIndikator").css({"background-color":"orange"}),$("span#newPasswordAIndikator").css({color:"black"})):d<=75?(s="Das sieht doch super aus!",$("span#newPasswordAIndikator").css({"background-color":"yellow"}),$("span#newPasswordAIndikator").css({color:"black"})):d<=100&&(s="Da werden die Hacker schwitzen!",$("span#newPasswordAIndikator").css({"background-color":"green"})),$("span#newPasswordAIndikator").text(s)}return e!=a&&""!=e&&""!=a&&($("span#newPasswordBIndikator").css({"background-color":"red"}),$("span#newPasswordBIndikator").text("Die Passwörter stimmen nicht überein!"),n=!0),!n&&($("span#newPasswordBIndikator").css({"background-color":"green"}),$("span#newPasswordBIndikator").text("Passwörter stimmen überein!"),!0)}!1!==a?(s+="<table><tr><th>Code (Anfang)</th><th>Letzte Nutzung</th><th>Löschen</th></tr>",a.forEach(function(e){s+='<tr><td><code style="color:black;">'+e.code+"</code></td><td>"+e.time+'</td><td><button class="deleteAuthLink" linkid="'+e.id+'" codeteil="'+e.code+'">Link Löschen</button></td></tr>'}),s+="</table>"):s+="<p>Sie haben noch keine Authentifizierungslinks!</p>",s+='<button id="addAuthLink">Neuen Link hinzufügen</button><p> </p>',e(s+='<h3>Passwort ändern</h3><div id="newPasswordLoader" class="loading disable"></div><input class="newPassword" type="password" id="newPasswordA" placeholder="Neues Passwort"> <span class="newPasswordIndikator" id="newPasswordAIndikator">Bitte geben Sie ein Passwort ein!</span><br /><input class="newPassword" type="password" id="newPasswordB" placeholder="Neues Passwort"> <span class="newPasswordIndikator" id="newPasswordBIndikator">Bitte geben Sie das Passwort ein!</span><br /><button id="newPasswordSet">Ändern</button><div id="newPasswordDone" class="disable"></div>'),$("button#newPasswordSet").prop("disabled",!0),$("span.newPasswordIndikator").css({"border-radius":"5px",padding:"2px"}),$("button#newPasswordSet").click(function(){var e=$("input#newPasswordA").val(),a=$("input#newPasswordB").val();if(!o(e,a))return!1;$("div#newPasswordLoader").removeClass("disable"),ajax_request("account",{userid:userinformation.id},function(a){if("okay"===a.status){var n=a.data,s=sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(e));s=sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(s+"+"+n)),ajax_request("account",{userid:userinformation.id,newpass:s,salt:n},function(e){$("div#newPasswordLoader").addClass("disable"),"okay"===e.status?($("div#newPasswordDone").removeClass("disable error"),$("div#newPasswordDone").addClass("okay"),$("div#newPasswordDone").text("Passwort geändert!")):($("div#newPasswordDone").removeClass("disable okay"),$("div#newPasswordDone").addClass("error"),$("div#newPasswordDone").text("Konnte Passwort nicht ändern!"))})}else $("div#newPasswordLoader").addClass("disable"),$("div#newPasswordDone").removeClass("disable okay"),$("div#newPasswordDone").addClass("error"),$("div#newPasswordDone").text("Konnte Passwort nicht ändern!")})}),$("input.newPassword").on("keyup",function(){o($("input#newPasswordA").val(),$("input#newPasswordB").val())?$("button#newPasswordSet").prop("disabled",!1):$("button#newPasswordSet").prop("disabled",!0)}),$("button.deleteAuthLink").click(function(){var e=$(this).attr("linkid"),a=$(this).attr("codeteil");confirm('Wollen sie den Code "'+a+'" wirklich löschen? ')&&($("div#authLinkLoading").removeClass("disable"),ajax_request("account",{userid:userinformation.id,art:"del",id:e},function(e){$("div#authLinkLoading").addClass("disable"),"okay"===e.status?n():alert("Konnte den Code nicht löschen!")}))}),$("button#addAuthLink").click(function(){$("div#authLinkLoading").removeClass("disable"),ajax_request("account",{userid:userinformation.id,art:"new",id:"new"},function(e){var a,s,o;$("div#authLinkLoading").addClass("disable"),"okay"===e.status?(a=e.data,s=domain+"/#"+userinformation.name+":"+a,o='<p><b>Neuer Authentifizierungslink wurde erstellt:</b></p><p><b>Code:</b> <code style="color:black;">'+a+'</code></p><p><b>URL:</b> <input type="text" value="'+s+'" readonly="readonly" style="width:90%;"></p><p><b>Link:</b> <a href="'+s+'" target="_blank">Aufrufen</a></p><p><center><div style="background-color:white; padding:15px; border-radius:5px;" id="authCodeManagerNewCodeDialogQR"></div></center></p><p><em><u>Achtung:</u> Dieser Link und Code wird nur ein einziges Mal angezeigt!!</em></p>',$("body").append('<div id="authCodeManagerNewCodeDialog">'+o+"</div>"),$("div#authCodeManagerNewCodeDialog").dialog({resizable:!1,height:"auto",width:"auto",modal:!0,title:"Neuer Authentifizierungslink",close:function(){$(this).remove()},position:{my:"center",at:"center",of:$("div.main")}}),new QRCode(document.getElementById("authCodeManagerNewCodeDialogQR"),s),n()):alert("Konnte keinen Code erstellen!")})})}function n(){ajax_request("account",{userid:userinformation.id,art:"list",id:"list"},function(n){"okay"===n.status?a(n.data):e("Kann nicht laden!")})}$("body").append('<div id="authCodeManagerDialog">Lädt ...</div>'),$("div#authCodeManagerDialog").dialog({resizable:!1,height:"auto",width:"auto",modal:!0,title:"Authentifizierungslinks und Passwort",close:function(){$(this).remove()},position:{my:"center",at:"center",of:$("div.main")}}),n()}function oldNotesManager(){function t(t){t='<div id="oldNotesDialogLoader" class="loading disable"></div>'+t,$("div#oldNotesDialog").html(t)}$("body").append('<div id="oldNotesDialog"></div>'),$("div#oldNotesDialog").dialog({resizable:!1,height:"auto",width:"auto",modal:!0,title:"Notizarchiv",close:function(){$(this).remove()},position:{my:"center",at:"center",of:$("div.main")}}),t("Lädt ..."),$("div#oldNotesDialogLoader").removeClass("disable"),ajax_request("list",{userid:userinformation.id,reload:"none"},function(o){if($("div#oldNotesDialogLoader").addClass("disable"),"okay"===o.status){var e="<table><tr><th>Name</th><th>Zuletzt geändert</th><th>Wiederherstellen</th></tr>";o.data.forEach(function(t){e+="<tr><td>"+t.name+"</td><td>"+t.geaendert+'</td><td><button class="oldNotesDialogReload" noteid="'+t.noteid+'">↻</button></td></tr>'}),t(e+="</table>"),$("button.oldNotesDialogReload").click(function(){var t=$(this).attr("noteid");$("div#oldNotesDialogLoader").removeClass("disable"),ajax_request("list",{userid:userinformation.id,reload:t},function(t){$("div#oldNotesDialogLoader").addClass("disable"),"okay"===t.status?(list(),$("div#oldNotesDialog").dialog("close")):alert("Konnte die Notiz nicht wiederherstellen!")})})}else t("Konnte nicht laden!!")})}function shareviewer(e,n){var a,t=0,i=!1;function s(){ajax_request("share",{authcode:e},function(n){systemOfflineMode?(errorMessage("Offline können keine Freigaben geöffnet werden!"),r()):"okay"===n.status?(t=n.data.geandert,i=n.data.edit,n.data.edit?(maker(n.data.id,n.data.name,{content:n.data.content,lastchanged:n.data.geandert},function(n,i){function s(e){i&&(e&&!confirm("Konnte nicht Notiz speichern, trotzdem schließen?")||(clearInterval(a),window.location.hash="",loginsys()))}$("div.noteview div.loading").removeClass("disable"),ajax_request("share",{authcode:e,cont:n},function(e){$("div.noteview div.loading").addClass("disable"),t=e.data[3],"okay"===e.status?($("span.notesaved").removeClass("disable"),$("span.noteunsaved").addClass("disable")):errorMessage("Konnte Notiz nicht speichern!"),s(!("okay"===e.status))},function(e){$("div.noteview div.loading").addClass("disable"),errorMessage("Konnte Notiz nicht speichern!"),s(!0)})}),o()):(maker(n.data.id,n.data.name,{content:n.data.content,lastchanged:n.data.geandert}),o())):(errorMessage("Nachricht lässt sich mittels Freigabelink nicht öffnen.",!1),r())},function(e){r()})}function r(){"function"==typeof n&&n()}function o(){a=setInterval(function(){ajax_request("share",{authcode:e},function(e){"error"===e.status?errorMessage("Die Freigabe kann nichtmehr erreicht werden",!1):(console.log(e.data.geandert-t,e.data.geandert,t),e.data.geandert-t>5&&(clearInterval(a),i?confirmDialog("<p>Die Notiz ist auf dem Server verändert worden.<br>Wollen Sie die neue Version laden?</p><p class='small'>Dadurch können Ihre Änderungen verloren gehen!</p>",{Ja:function(){s(),$(this).dialog("close")},Abbrechen:function(){$(this).dialog("close")}},"Änderung auf Server"):s()))})},1e3*global_polling_secs)}systemRESTAPI=!1,s()} \ No newline at end of file +$(function(){loginsys()});class OfflineManager{constructor(){null!==localStorage.getItem("notes_offline_storage")?this.data=JSON.parse(localStorage.getItem("notes_offline_storage")):this.data={},this.status=null}statusChanged(t){!0!==this.status&&null!==this.status||t||this.pushToServer(),this.status=t}saveNote(t,a,e){this.status&&(this.data[t]={content:a,name:e},this.saveLocalStorage())}saveLocalStorage(){localStorage.setItem("notes_offline_storage",JSON.stringify(this.data))}pushToServer(){if("{}"==JSON.stringify(this.data))this.data={},this.saveLocalStorage();else if(0==this.status){var t=this;$.each(this.data,function(a,e){ajax_request("view",{userid:userinformation.id,noteid:a,note:{name:e.name,cont:e.content}},function(e){if($("div.noteview div.loading").addClass("disable"),"okay"===e.status){if(4==e.data.length){var s=JSON.parse(localStorage.getItem("note_autosave_"+a));s.lastserverchanged=e.data[3],localStorage.setItem("note_autosave_"+a,JSON.stringify(s))}delete t.data[a],t.saveLocalStorage()}})})}}}var userinformation={name:null,id:null,admin:!1,authcode:null},errorMessageTimeOut=null,systemOfflineMode=!1,systemOfflineManager=new OfflineManager,systemRESTAPI=!1;function review(e){$("div.login").addClass("disable"),$("div.noteview").addClass("disable"),$("div.noteslist").addClass("disable"),$("div.globalloader").addClass("disable"),$("div."+e).removeClass("disable")}function errorMessage(e,a){null!==errorMessageTimeOut&&clearTimeout(errorMessageTimeOut),null===e?($("div.global.error.message").html("Fehler!"),$("div.global.error.message").addClass("disable")):(void 0===a&&(a=10),$("div.global.error.message").html(e),$("div.global.error.message").removeClass("disable"),!1!==a&&(errorMessageTimeOut=setTimeout(function(){$("div.global.error.message").addClass("disable")},1e3*a)))}function ajax_request(e,a,s,i){if(systemRESTAPI&&("share"!=e||"login"!=e)||"auth"==e){var o="rest";void 0!==a.authcode&&null!=a.authcode||(a.authcode=userinformation.authcode)}else o="ajax";$.post(domain+"/"+o+".php?"+e,a,function(e){"object"==typeof e?("error"===e.status?console.log(e.error):(systemOfflineMode&&$("div.global.error.message").unbind("click"),systemOfflineMode=!1,systemOfflineManager.statusChanged(!1),errorMessage(null)),"function"==typeof s&&s(e)):(errorMessage("Sever antwortet nicht korrekt!",!1),"function"==typeof i&&i(e))}).fail(function(){errorMessage("Offlinemodus",!1),$("div.global.error.message").click(()=>{errorMessage("Neu verbinden ...",!1),ajax_request("login",{status:userinformation.id},()=>{},()=>{errorMessage("Offlinemodus",!1)})}),systemOfflineMode=!0,systemOfflineManager.statusChanged(!0),"function"==typeof s&&s({data:{}})})}function confirmDialog(e,a,s){if(void 0===a)a={OK:function(){},Abbrechen:function(){}};if(void 0===s)s="Wichtig!";$("div.globalDialog").removeClass("disable"),$("div.globalDialog").dialog({resizable:!1,height:"auto",width:"auto",minWidth:200,minHeight:150,modal:!0,title:s,close:function(){$("div.globalDialog").html(""),$("div.globalDialog").addClass("disable")},position:{my:"center",at:"center",of:$("div.main")},buttons:a});function i(e){$("div.globalDialog").html(e)}return i(e),i}function loginsys(){$("div.nojs.error.message").remove();!function(){review("globalloader");var a=window.location.hash;""!=a?(a=a.substr(1),new RegExp("[^A-Za-z0-9]").test(a)?n():shareviewer(a,n)):n();function n(){review("login"),""!=localStorage.getItem("userinformation_id")&&null!=localStorage.getItem("userinformation_id")&&""!=localStorage.getItem("userinformation_name")&&null!=localStorage.getItem("userinformation_name")?(userinformation.id=localStorage.getItem("userinformation_id"),userinformation.name=localStorage.getItem("userinformation_name"),userinformation.admin=JSON.parse(localStorage.getItem("userinformation_admin")),""!=localStorage.getItem("userinformation_authcode")&&null!=localStorage.getItem("userinformation_authcode")?(userinformation.authcode=localStorage.getItem("userinformation_authcode"),systemRESTAPI=!0,o(),list()):($("div.login div.input div.loading").removeClass("disable"),ajax_request("login",{status:userinformation.id},function(i){$("div.login div.input div.loading").addClass("disable"),systemOfflineMode?(o(),list()):1==i.data?(o(),list()):e()}))):systemOfflineMode?i():e()}}();function e(){var e=window.location.hash;if(""!=e){e=e.substr(1);if(new RegExp("[a-z]+:[a-z0-9]+").test(e)){var a=e.split(":"),n=a[0],s=a[1];console.log('Versuche User "'+n+'" mit Loginlink einzuloggen.'),$("div.login div.input div.loading").removeClass("disable"),ajax_request("auth",{username:n,authcode:s},function(e){$("div.login div.input div.loading").addClass("disable"),"okay"===e.status?(userinformation.name=n,userinformation.id=e.data.id,userinformation.admin=e.data.admin,userinformation.authcode=s,localStorage.setItem("userinformation_id",userinformation.id),localStorage.setItem("userinformation_name",userinformation.name),localStorage.setItem("userinformation_admin",userinformation.admin),localStorage.setItem("userinformation_authcode",userinformation.authcode),systemRESTAPI=!0,o(),list()):i()})}else i()}else i()}function i(){systemOfflineMode?($("div.login p.message.important.offline").removeClass("disable"),$("div.login p.message.important.online").addClass("disable"),$("div.login div.input div#loginform").addClass("disable"),$("div.login div.input").addClass("disable")):(ajax_request("login",{status:userinformation.id},function(e){systemOfflineMode&&i()}),$("div.login p.message.important.offline").addClass("disable"),$("div.login p.message.important.online").removeClass("disable")),$("div.login p.message.error").addClass("disable"),$("div.login p.message.okay").addClass("disable"),$("div.login div.input div.loading").addClass("disable"),systemOfflineMode||($("div.login div.input div#loginform").removeClass("disable"),$("div.login div.input").removeClass("disable"),$("button#userlogin").unbind("click").click(e),$("input#userpassword").unbind("keyup").keyup(function(i){13==i.keyCode&&e()}));function e(){$("div.login div.input div.loading").removeClass("disable"),$("div.login div.input div#loginform").addClass("disable"),$("div.login p.message.important").addClass("disable");var e=sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash($("input#userpassword").val()));ajax_request("login",{username:$("input#username").val(),password:e},function(e){$("div.login div.input div.loading").addClass("disable"),"error"===e.status?($("div.login p.message.error").removeClass("disable"),$("div.login div.input div#loginform").removeClass("disable")):"okay"===e.status&&($("div.login p.message.okay").removeClass("disable"),$("div.login p.message.error").addClass("disable"),$("div.login div.input").addClass("disable"),$("input#username").val(""),$("input#userpassword").val(""),userinformation.name=e.data.name,userinformation.id=e.data.id,userinformation.admin=e.data.admin,localStorage.setItem("userinformation_id",userinformation.id),localStorage.setItem("userinformation_name",userinformation.name),localStorage.setItem("userinformation_admin",userinformation.admin),o(),list())})}}function o(){var e=null;function i(){systemOfflineMode||systemRESTAPI||ajax_request("login",{logout:null},function(e){"okay"===e.status&&($("p.message.error.loggedout").removeClass("disable"),setTimeout(function(){$("p.message.error.loggedout").addClass("disable")},2e4))}),0==$("input#logouttype:checked").length?localStorage.clear():(localStorage.removeItem("userinformation_id"),localStorage.removeItem("userinformation_name"),localStorage.removeItem("userinformation_authcode"),localStorage.removeItem("userinformation_admin")),userinformation={name:null,id:null,admin:!1,authcode:null},systemRESTAPI=!1,window.location.hash="",null!==e&&clearInterval(e),errorMessage(null),"undefined"!=typeof cm_editor&&cm_editor.setValue("empty"),["input#userpassword","input#username","input#notename","div#notespreview","textarea#notesinput","input#newnotename","div.listpart div.list"].forEach(function(e){$(e).empty(),"textarea#notesinput"!==e&&$(e).val("")}),$("div.logout").addClass("disable"),loginsys()}function o(){$("div.logout span.usertools").tooltip(),systemOfflineMode?($("div.logout span.usertools span.ui-icon-wrench").addClass("disable"),$("div.logout span.usertools span.ui-icon-person").addClass("disable")):(userinformation.admin?($("div.logout span.usertools span.ui-icon-wrench").removeClass("disable"),$("div.logout span.usertools span.ui-icon-wrench").unbind("click").click(function(){$.ajax({type:"GET",url:domain+"/load/backend."+jsdevmin+".js",success:function(){adminDialog()},dataType:"script",cache:!0})})):$("div.logout span.usertools span.ui-icon-wrench").addClass("disable"),$("div.logout span.usertools span.ui-icon-person").unbind("click").click(function(){authCodeManager()}))}$("div.logout").removeClass("disable"),$("button#logout").unbind("click").click(i),e=setInterval(function(){if(null!=localStorage.getItem("note_maker_reopen")&&"none"!=localStorage.getItem("note_maker_reopen")){var e=JSON.parse(localStorage.getItem("note_maker_reopen"));ajax_request("view",{userid:userinformation.id,noteid:e.noteid,history:4},function(i){if("error"===i.status)errorMessage("Die Session ist abgelaufen!",!1);else if(null!=JSON.parse(localStorage.getItem("note_autosave_"+e.noteid))){var o=JSON.parse(localStorage.getItem("note_autosave_"+e.noteid)).lastserverchanged;i.data-o>5&&newerNoteOnServerFound()}})}else systemRESTAPI||ajax_request("login",{status:userinformation.id},function(e){1!=e.data&&errorMessage("Die Session ist abgelaufen!",!1)})},1e3*global_polling_secs),o();function a(){o(),$(document).unbind("ajaxComplete",a)}$(document).ajaxComplete(a)}}function list(){if(review("noteslist"),systemOfflineManager.pushToServer(),null!=localStorage.getItem("note_maker_reopen")&&"none"!=localStorage.getItem("note_maker_reopen")){var t=JSON.parse(localStorage.getItem("note_maker_reopen"));maker(t.noteid,t.name)}!function(){systemOfflineMode?t():($("div.noteslist div.listpart div.loading").removeClass("disable"),ajax_request("list",{userid:userinformation.id},function(s){$("div.noteslist div.listpart div.loading").addClass("disable"),"okay"===s.status?(localStorage.setItem("note_list_notes",JSON.stringify(s.data)),i(s.data)):t()},t));function t(){$("div.noteslist div.listpart div.loading").addClass("disable"),null!=localStorage.getItem("note_list_notes")&&i(JSON.parse(localStorage.getItem("note_list_notes")))}}();function i(t){systemOfflineMode?$("div.toolbar").addClass("disable"):($("div.toolbar").removeClass("disable"),$("button#newnote").unbind("click").click(function(){var t=$("input#newnotename").val();""!=t&&(i=t,$("div.noteslist div.listpart div.loading").removeClass("disable"),ajax_request("list",{userid:userinformation.id,name:i},function(t){$("div.noteslist div.listpart div.loading").addClass("disable"),"okay"===t.status&&(console.log('Notiz: "'+i+'" ("'+t.data.id+'") angelegt.'),list())}));var i}),$("button#notesarchive").unbind("click").click(function(){oldNotesManager()}));var i="<ul>";$.each(t,function(s,e){i+='<li class="noteslist_notesnames box" noteid="'+e.noteid+'"><span class="notesnames">'+e.name+'</span> <span class="noteseditbuttons"><button art="up" title="Nach oben" '+(0!=s?"":'disabled="disabled"')+'>↑</button><button art="down" title="Nach unten" '+(t.length-1!=s?"":'disabled="disabled"')+'>↓</button><button art="del" title="Notiz archivieren">↻</button></span></li>'}),i+="</ul>",$("div.noteslist div.listpart div.list").html(i),$("li.noteslist_notesnames").tooltip(),$("div.noteslist div.listpart div.list ul").css({"list-style-type":"none"}),$("div.noteslist div.listpart div.list ul li.noteslist_notesnames").css({"line-height":"28px"}),$("span.noteseditbuttons").css({float:"right",cursor:"pointer"});function s(){$("div.noteslist div.listpart div.list ul li span.notesnames").css({display:"inline-block",cursor:"pointer",width:$("div.noteslist div.listpart div.list ul li").width()-$("div.noteslist div.listpart div.list ul li span.noteseditbuttons").width()-5+"px"});var t=$("button#notesarchive").width();$("div.toolbar").width()-(t+($("input#newnotename").width()+$("button#newnote").width()+36))<10?($("button#notesarchive").css("float","none"),$("div.toolbar").css("line-height","28px")):($("button#notesarchive").css("float","right"),$("div.toolbar").css("line-height","inherit"))}list_first_load&&($(window).resize(s),list_first_load=!1),s(),$("div.noteslist div.listpart div.list ul li span.notesnames").unbind("click").click(function(){var t=$(this).parent().attr("noteid"),i=$(this).text();console.log('Oeffne: "'+i+'" ("'+t+'")'),maker(t,i)}),systemOfflineMode?$("span.noteseditbuttons").addClass("disable"):($("span.noteseditbuttons").removeClass("disable"),$("span.noteseditbuttons button").unbind("click").click(function(){var t=$(this).attr("art"),i=$(this).parent().parent().attr("noteid");$("div.noteslist div.listpart div.loading").removeClass("disable"),ajax_request("list",{userid:userinformation.id,art:t,noteid:i},function(s){$("div.noteslist div.listpart div.loading").addClass("disable"),"okay"===s.status&&(console.log('Notiz: "'+i+'" wurde '+("del"==t?"gelöscht":"up"==t?"nach oben verschoben":"nach unten verschoben")),list())})}))}}var list_first_load=!0;var cm_editor;function maker(e,t,a,i){if(void 0===a){var n=!1,o=!1;localStorage.setItem("note_maker_reopen",JSON.stringify({noteid:e,name:t}))}else{if("function"==typeof i)o=!0;else o=!1;n=!0}review("noteview");var d,r,s=!1,l=!1;function c(){cm_editor.off("change",u),cm_editor.off("change",g),newerNoteOnServerFound=function(){}}var u,g;function v(){r=sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(d.content)),localStorage.setItem("note_autosave_"+d.id,JSON.stringify(d)),$("input#notename").val(d.name),$("textarea#notesinput").text(d.content),"object"!=typeof cm_editor?cm_editor=CodeMirror.fromTextArea(document.getElementById("notesinput"),{mode:"gfm",lineNumbers:!0,theme:"default"}):cm_editor.setValue($("textarea#notesinput").val()),function(){var e=new marked.Renderer;e.heading=function(e,t){return"<h"+(t+2)+">"+e+"</h"+(t+2)+">"},e.link=function(e,t,a){return'<a href="'+e+'" title="'+t+'" target="_blank">'+a+"</a>"},marked.setOptions({renderer:e,gfm:!0,tables:!0,highlight:function(e,t){if("tex"!=t)return-1!==["markup","css","clike","javascript","c","bash","cpp","csharp","ruby","git","ini","java","json","lua","markdown","matlab","objectivec","perl","php","python","r","sql","swift"].indexOf(t)?Prism.highlight(e,Prism.languages[t]):e;try{return katex.renderToString(e)}catch(e){return'<span style="color:red;">'+e.message+"</span>"}}});function t(e,t){var a=/(iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent);if(a&&void 0!==t&&1===t.text.length&&/^[A-Z]$/.test(t.text[0])){var i=$(":focus");i.blur(),i.focus()}$("div#notespreview").html(marked(cm_editor.getValue()))}t(),n&&!o?$("div.input.box").addClass("disable"):($("div.input.box").removeClass("disable"),cm_editor.on("change",t));u=t}(),function(){$("span.noteunsaved").tooltip(),$("span.notesaved").tooltip();function e(){var e=Date.now()-3e4>f,t={name:$("input#notename").val(),id:d.id,content:cm_editor.getValue(),lastserverchanged:d.lastserverchanged};localStorage.setItem("note_autosave_"+d.id,JSON.stringify(t)),e?h():($("span.noteunsaved").removeClass("disable"),$("span.notesaved").addClass("disable"))}l&&(e(),l=!1);cm_editor.on("change",e),g=e,$("span.noteunsaved").unbind("click").click(h)}()}var f=0;function h(a){if(r!=sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(cm_editor.getValue()))||l){s?($("body").append('<div id="dangerMessageNoteSave">Beim Speichern der Notiz kann es eventuell zu Datenverlust kommen, da die aktuellste Version nicht vom Server geladen werden konnte!</div>'),$("#dangerMessageNoteSave").dialog({resizable:!1,height:"auto",width:"auto",modal:!0,title:"Gefahr des Datenverlustes!",buttons:{"Trotzdem Speichern":function(){$(this).dialog("close"),s=!1,c()},"Erstmal nicht":function(){$(this).dialog("close")}},close:function(){$(this).remove()}})):c();function c(){n&&o?(f=Date.now(),i(cm_editor.getValue(),!1)):!1===n&&(systemOfflineMode?(systemOfflineManager.saveNote(e,cm_editor.getValue(),$("input#notename").val()),f=Date.now(),"function"==typeof a&&a(!0)):($("div.noteview div.loading").removeClass("disable"),ajax_request("view",{userid:userinformation.id,noteid:e,note:{name:$("input#notename").val(),cont:cm_editor.getValue()}},function(i){if($("div.noteview div.loading").addClass("disable"),"okay"===i.status){if(console.log('Notiz: "'+t+'" ("'+e+'") auf Server gespeichert.'),f=Date.now(),4==i.data.length){d.lastserverchanged=i.data[3];var n=JSON.parse(localStorage.getItem("note_autosave_"+e));n.lastserverchanged=i.data[3],localStorage.setItem("note_autosave_"+e,JSON.stringify(n))}$("span.notesaved").removeClass("disable"),$("span.noteunsaved").addClass("disable")}"function"==typeof a&&a("okay"===i.status)},function(e){"function"==typeof a&&a(!1)})))}}else"function"==typeof a&&a(!0)}!function(){function i(a,i){a||systemOfflineMode||(s=!0,errorMessage("Kann die aktuelle Version der Notiz nicht vom Server holen.",20)),null!=localStorage.getItem("note_autosave_"+e)?(d=JSON.parse(localStorage.getItem("note_autosave_"+e)),v()):systemOfflineMode?(confirmDialog("Die gewählte Notiz ist auf diesem Gerät leider nicht offline verfügbar!",{OK:function(){$(this).dialog("close")}},"Offlinemodus"),list()):(d={name:t,id:e,content:"# "+t+"\nUnd hier dann der Text!!\n",lastserverchanged:void 0!==i?i:0},v())}n?(d={name:t,id:e,content:a.content,lastserverchanged:a.lastchanged},$("div.noteview div.loading").addClass("disable"),v()):systemOfflineMode?($("div.noteview div.loading").addClass("disable"),i(!1)):($("div.noteview div.loading").removeClass("disable"),ajax_request("view",{userid:userinformation.id,noteid:e,history:2},function(e){$("div.noteview div.loading").addClass("disable"),"okay"===e.status?(l=e.data.empty,e.data.empty?i(!0,e.data.geandert):(d={name:e.data.name,id:e.data.id,content:e.data.content,lastserverchanged:e.data.geandert},v())):i(!1)},function(e){i(!1)}))}(),$("button#closenote").unbind("click").click(function(){c(),n&&o?i(cm_editor.getValue(),!0):n?(window.location.hash="",loginsys()):!1===n&&h(function(e){e?(localStorage.setItem("note_maker_reopen","none"),list()):($("body").append('<div id="errorMessageNoteSave">Die Speicherung der Notiz auf dem Server schlug fehl!<br />Wollen Sie den Editor verlassen und einen Verlust der Änderungen in Kauf nehmen oder abbrechen?</div>'),$("#errorMessageNoteSave").dialog({resizable:!1,height:"auto",width:"auto",modal:!0,title:"Fehler beim Speichern!",buttons:{"Änderungen verwerfen":function(){localStorage.setItem("note_maker_reopen","none"),list(),$(this).dialog("close")},Abbrechen:function(){$(this).dialog("close")}},close:function(){$(this).remove()}}))})}),n||systemOfflineMode?($("button#publishnote").addClass("disable"),$("button#notehistory").addClass("disable")):($("button#publishnote").removeClass("disable"),$("button#notehistory").removeClass("disable"),$("button#publishnote").unbind("click").click(b),$("button#notehistory").unbind("click").click(m));function b(){function t(){errorMessage("Freigaben konnten nicht geladen werden."),$("div.noteview div.loading").addClass("disable")}$("div.noteview div.loading").removeClass("disable"),ajax_request("view",{userid:userinformation.id,noteid:e},function(a){if("okay"===a.status){var i='<div class="message error freigabeDialog disable">Konnte Aktion nicht durchführen.</div><table><tr><th>Link</th><th>Name</th><th>Erstellt</th><th>Bearbeiten</th><th>Letzter Aufruf (Anzahl)</th><th>Löschen</th></tr>',n=!1;$.each(a.data,function(e,t){n=!0,i+='<tr><td><a href="'+domain+"/#"+t.authcode+'" target="_blank">Aufrufen</a> <button authcode="'+t.authcode+'" class="freigabeQR">QR-Code</button></td>',i+="<td>"+t.name+"</td>",i+="<td>"+t.created+"</td>",i+='<td><code style="color:black;">'+t.edit+"</code></td>",i+="<td>"+t.lastAccessed+" ("+t.accesses+")</td>",i+='<td><button authcode="'+t.authcode+'" class="deleteFreigabe">Löschen</button></td></tr>'}),i+="</table>",!1===n&&(i+="<p>Noch keine Freigaben!</p>"),i+='<h3>Neue Freigabe</h3><div class="loading freigabeDialog disable"></div><input type="text" placeholder="Name" id="freigabeManagerNewName"><br /><input type="radio" id="freigabeManagerNewEdit" name="freigabeManagerNewEdit" value="true"> Bearbeiten erlauben <input type="radio" id="freigabeManagerNewEdit" name="freigabeManagerNewEdit" value="false" checked="checked"> Nur lesen <br /><button id="addFreigabe">Erstellen</button>',$("body").append('<div id="freigabeManagerDialog">'+i+"</div>"),$("div.noteview div.loading").addClass("disable"),$("div#freigabeManagerDialog").dialog({resizable:!1,height:"auto",width:"auto",modal:!0,title:"Freigaben",close:function(){$(this).remove()},position:{my:"center",at:"center",of:$("div.main")}}),$("button.deleteFreigabe").click(function(){var t=$(this).attr("authcode");$("div.freigabeDialog.loading").removeClass("disable"),ajax_request("view",{userid:userinformation.id,noteid:e,share:{authcode:t,edit:"leer",name:"leer"}},function(e){"okay"===e.status?($("div#freigabeManagerDialog").dialog("close"),b()):($("div.freigabeDialog.loading").addClass("disable"),$("div.freigabeDialog.error").removeClass("disable"))})}),$("button#addFreigabe").click(function(){var t=$("input#freigabeManagerNewName").val(),a="true"==$("input#freigabeManagerNewEdit:checked").val();""!=t&&($("div.freigabeDialog.loading").removeClass("disable"),ajax_request("view",{userid:userinformation.id,noteid:e,share:{authcode:"leer",edit:a,name:t}},function(e){"okay"===e.status?($("div#freigabeManagerDialog").dialog("close"),b()):($("div.freigabeDialog.loading").addClass("disable"),$("div.freigabeDialog.error").removeClass("disable"))}))}),$("button.freigabeQR").click(function(){var e=$(this).attr("authcode"),t=domain+"/#"+e,a='<p><b>Code:</b> <code style="color:black;">'+e+'</code></p><p><b>URL:</b> <input type="text" value="'+t+'" readonly="readonly" style="width:90%;"></p><p><b>Link:</b> <a href="'+t+'" target="_blank">Aufrufen</a></p><p><center><div style="background-color:white; padding:15px; border-radius:5px;" id="freigabeManagerQR"></div></center></p>';$("body").append('<div id="freigabeManagerQRDialog">'+a+"</div>"),$("div#freigabeManagerQRDialog").dialog({resizable:!1,height:"auto",width:"auto",modal:!0,title:"Freigabelink",close:function(){$(this).remove()},position:{my:"center",at:"center",of:$("div.main")}}),new QRCode(document.getElementById("freigabeManagerQR"),t)})}else t()},t)}function m(){function t(){errorMessage("Notizverlauf konnte nicht geladen werden."),$("div.noteview div.loading").addClass("disable")}$("div.noteview div.loading").removeClass("disable"),ajax_request("view",{userid:userinformation.id,noteid:e,history:3},function(e){if("okay"===e.status){var a="<table><tr><th>Änderungen</th><th>Zeitpunkt</th></tr>";$.each(e.data,function(e,t){a+="<tr><td>"+t.diff+"</td>",a+="<td>"+t.time+'<button key="'+e+'" class="takeInputFromHistory">Zurückkehren</button></td></tr>'}),a+="</table>",$("body").append('<div id="historyManagerDialog">'+a+"</div>"),$("div.noteview div.loading").addClass("disable"),$("div#historyManagerDialog").dialog({resizable:!1,height:"auto",width:"auto",modal:!0,title:"Notizverlauf",close:function(){$(this).remove()},position:{my:"center",at:"center",of:$("div.main")}}),$("button.takeInputFromHistory").click(function(){var t=$(this).attr("key"),a=e.data[t].text;cm_editor.setValue(a),$("div#historyManagerDialog").dialog("close")})}else t()},t)}newerNoteOnServerFound=function(){!0,r==sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(cm_editor.getValue()))?(c(),maker(e,t)):(s=!0,confirmDialog("<p>Die Notiz ist auf dem Server verändert worden.<br>Wollen Sie die neue Version laden?</p><p class='small'>Dadurch können Ihre Änderungen verloren gehen! Andernfalls die Änderungen auf dem Server.</p>",{Ja:function(){c(),maker(e,t),!1,$(this).dialog("close")},Nein:function(){s=!1,h(),!1,$(this).dialog("close")}},"Änderung auf Server"))}}var newerNoteOnServerFound=function(){};function authCodeManager(){function e(e){$("div#authCodeManagerDialog").html(e)}function a(a){var s='<h3>Authentifizierungslinks</h3><div class="loading disable" id="authLinkLoading"></div>';!1!==a?(s+="<table><tr><th>Code (Anfang)</th><th>Letzte Nutzung</th><th>Löschen</th></tr>",a.forEach(function(e){s+='<tr><td><code style="color:black;">'+e.code+"</code></td><td>"+e.time+'</td><td><button class="deleteAuthLink" linkid="'+e.id+'" codeteil="'+e.code+'">Link Löschen</button></td></tr>'}),s+="</table>"):s+="<p>Sie haben noch keine Authentifizierungslinks!</p>",s+='<button id="addAuthLink">Neuen Link hinzufügen</button><p> </p>',e(s+='<h3>Passwort ändern</h3><div id="newPasswordLoader" class="loading disable"></div><input class="newPassword" type="password" id="newPasswordA" placeholder="Neues Passwort"> <span class="newPasswordIndikator" id="newPasswordAIndikator">Bitte geben Sie ein Passwort ein!</span><br /><input class="newPassword" type="password" id="newPasswordB" placeholder="Neues Passwort"> <span class="newPasswordIndikator" id="newPasswordBIndikator">Bitte geben Sie das Passwort ein!</span><br /><button id="newPasswordSet">Ändern</button><div id="newPasswordDone" class="disable"></div>'),$("button#newPasswordSet").prop("disabled",!0),$("span.newPasswordIndikator").css({"border-radius":"5px",padding:"2px"}),$("button#newPasswordSet").click(function(){var e=$("input#newPasswordA").val(),a=$("input#newPasswordB").val();if(!o(e,a))return!1;$("div#newPasswordLoader").removeClass("disable"),ajax_request("account",{userid:userinformation.id},function(a){if("okay"===a.status){var n=a.data,s=sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(e));s=sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(s+"+"+n)),ajax_request("account",{userid:userinformation.id,newpass:s,salt:n},function(e){$("div#newPasswordLoader").addClass("disable"),"okay"===e.status?($("div#newPasswordDone").removeClass("disable error"),$("div#newPasswordDone").addClass("okay"),$("div#newPasswordDone").text("Passwort geändert!")):($("div#newPasswordDone").removeClass("disable okay"),$("div#newPasswordDone").addClass("error"),$("div#newPasswordDone").text("Konnte Passwort nicht ändern!"))})}else $("div#newPasswordLoader").addClass("disable"),$("div#newPasswordDone").removeClass("disable okay"),$("div#newPasswordDone").addClass("error"),$("div#newPasswordDone").text("Konnte Passwort nicht ändern!")})}),$("input.newPassword").on("keyup",function(){o($("input#newPasswordA").val(),$("input#newPasswordB").val())?$("button#newPasswordSet").prop("disabled",!1):$("button#newPasswordSet").prop("disabled",!0)}),$("button.deleteAuthLink").click(function(){var e=$(this).attr("linkid"),a=$(this).attr("codeteil");confirm('Wollen sie den Code "'+a+'" wirklich löschen? ')&&($("div#authLinkLoading").removeClass("disable"),ajax_request("account",{userid:userinformation.id,art:"del",id:e},function(e){$("div#authLinkLoading").addClass("disable"),"okay"===e.status?n():alert("Konnte den Code nicht löschen!")}))}),$("button#addAuthLink").click(function(){$("div#authLinkLoading").removeClass("disable"),ajax_request("account",{userid:userinformation.id,art:"new",id:"new"},function(e){$("div#authLinkLoading").addClass("disable"),"okay"===e.status?(!function(e){var a=domain+"/#"+userinformation.name+":"+e,n='<p><b>Neuer Authentifizierungslink wurde erstellt:</b></p><p><b>Code:</b> <code style="color:black;">'+e+'</code></p><p><b>URL:</b> <input type="text" value="'+a+'" readonly="readonly" style="width:90%;"></p><p><b>Link:</b> <a href="'+a+'" target="_blank">Aufrufen</a></p><p><center><div style="background-color:white; padding:15px; border-radius:5px;" id="authCodeManagerNewCodeDialogQR"></div></center></p><p><em><u>Achtung:</u> Dieser Link und Code wird nur ein einziges Mal angezeigt!!</em></p>';$("body").append('<div id="authCodeManagerNewCodeDialog">'+n+"</div>"),$("div#authCodeManagerNewCodeDialog").dialog({resizable:!1,height:"auto",width:"auto",modal:!0,title:"Neuer Authentifizierungslink",close:function(){$(this).remove()},position:{my:"center",at:"center",of:$("div.main")}}),new QRCode(document.getElementById("authCodeManagerNewCodeDialogQR"),a)}(e.data),n()):alert("Konnte keinen Code erstellen!")})});function o(e,a){var n=!1;if($("span#newPasswordAIndikator").css({color:"white"}),""==e&&($("span#newPasswordAIndikator").css({"background-color":"inherit"}),$("span#newPasswordAIndikator").text("Bitte geben Sie ein Passwort ein!"),n=!0),""==a&&($("span#newPasswordBIndikator").css({"background-color":"inherit"}),$("span#newPasswordBIndikator").text("Bitte geben Sie das Passwort ein!"),n=!0),""!=e){var s,o=e,t=e.length,d=0;t>5?((d+=5*(t-=5))>20&&(d=20),o.match(/([a-zA-Z])/)&&(d+=10),o.match(/([A-Z])/)&&(d+=5),o.match(/([0-9])/)&&(d+=5),o.match(/([0-9].*[0-9])/)&&(d+=10),o.match(/([0-9].*[0-9].*[0-9])/)&&(d+=10),o.match(/([!,%,&,@,#,*,?,_,])/)&&(d+=15),o.match(/([!,%,&,@,#,*,?,_,].*[!,%,&,@,#,*,?,_,])/)&&(d+=15),o.match(/([!,%,&,@,#,*,?,_,].*[!,%,&,@,#,*,?,_,].*[!,%,&,@,#,*,?,_,])/)&&(d+=15)):d=0,d<=25?(s="Das soll ein Passwort sein?",$("span#newPasswordAIndikator").css({"background-color":"red"})):d<=50?(s="Gut, aber es geht noch besser!",$("span#newPasswordAIndikator").css({"background-color":"orange"}),$("span#newPasswordAIndikator").css({color:"black"})):d<=75?(s="Das sieht doch super aus!",$("span#newPasswordAIndikator").css({"background-color":"yellow"}),$("span#newPasswordAIndikator").css({color:"black"})):d<=100&&(s="Da werden die Hacker schwitzen!",$("span#newPasswordAIndikator").css({"background-color":"green"})),$("span#newPasswordAIndikator").text(s)}return e!=a&&""!=e&&""!=a&&($("span#newPasswordBIndikator").css({"background-color":"red"}),$("span#newPasswordBIndikator").text("Die Passwörter stimmen nicht überein!"),n=!0),!n&&($("span#newPasswordBIndikator").css({"background-color":"green"}),$("span#newPasswordBIndikator").text("Passwörter stimmen überein!"),!0)}}$("body").append('<div id="authCodeManagerDialog">Lädt ...</div>'),$("div#authCodeManagerDialog").dialog({resizable:!1,height:"auto",width:"auto",modal:!0,title:"Authentifizierungslinks und Passwort",close:function(){$(this).remove()},position:{my:"center",at:"center",of:$("div.main")}});function n(){ajax_request("account",{userid:userinformation.id,art:"list",id:"list"},function(n){"okay"===n.status?a(n.data):e("Kann nicht laden!")})}n()}function oldNotesManager(){function t(t){t='<div id="oldNotesDialogLoader" class="loading disable"></div>'+t,$("div#oldNotesDialog").html(t)}$("body").append('<div id="oldNotesDialog"></div>'),$("div#oldNotesDialog").dialog({resizable:!1,height:"auto",width:"auto",modal:!0,title:"Notizarchiv",close:function(){$(this).remove()},position:{my:"center",at:"center",of:$("div.main")}}),t("Lädt ..."),$("div#oldNotesDialogLoader").removeClass("disable"),ajax_request("list",{userid:userinformation.id,reload:"none"},function(o){if($("div#oldNotesDialogLoader").addClass("disable"),"okay"===o.status){var e="<table><tr><th>Name</th><th>Zuletzt geändert</th><th>Wiederherstellen</th></tr>";o.data.forEach(function(t){e+="<tr><td>"+t.name+"</td><td>"+t.geaendert+'</td><td><button class="oldNotesDialogReload" noteid="'+t.noteid+'">↻</button></td></tr>'}),t(e+="</table>"),$("button.oldNotesDialogReload").click(function(){var t=$(this).attr("noteid");$("div#oldNotesDialogLoader").removeClass("disable"),ajax_request("list",{userid:userinformation.id,reload:t},function(t){$("div#oldNotesDialogLoader").addClass("disable"),"okay"===t.status?(list(),$("div#oldNotesDialog").dialog("close")):alert("Konnte die Notiz nicht wiederherstellen!")})})}else t("Konnte nicht laden!!")})}function shareviewer(e,n){var a,t=0,i=!1;systemRESTAPI=!1;function s(){ajax_request("share",{authcode:e},function(n){systemOfflineMode?(errorMessage("Offline können keine Freigaben geöffnet werden!"),r()):"okay"===n.status?(t=n.data.geandert,i=n.data.edit,n.data.edit?(maker(n.data.id,n.data.name,{content:n.data.content,lastchanged:n.data.geandert},function(n,i){$("div.noteview div.loading").removeClass("disable"),ajax_request("share",{authcode:e,cont:n},function(e){$("div.noteview div.loading").addClass("disable"),t=e.data[3],"okay"===e.status?($("span.notesaved").removeClass("disable"),$("span.noteunsaved").addClass("disable")):errorMessage("Konnte Notiz nicht speichern!"),s(!("okay"===e.status))},function(e){$("div.noteview div.loading").addClass("disable"),errorMessage("Konnte Notiz nicht speichern!"),s(!0)});function s(e){i&&(e&&!confirm("Konnte nicht Notiz speichern, trotzdem schließen?")||(clearInterval(a),window.location.hash="",loginsys()))}}),o()):(maker(n.data.id,n.data.name,{content:n.data.content,lastchanged:n.data.geandert}),o())):(errorMessage("Nachricht lässt sich mittels Freigabelink nicht öffnen.",!1),r())},function(e){r()})}s();function r(){"function"==typeof n&&n()}function o(){a=setInterval(function(){ajax_request("share",{authcode:e},function(e){"error"===e.status?errorMessage("Die Freigabe kann nichtmehr erreicht werden",!1):(console.log(e.data.geandert-t,e.data.geandert,t),e.data.geandert-t>5&&(clearInterval(a),i?confirmDialog("<p>Die Notiz ist auf dem Server verändert worden.<br>Wollen Sie die neue Version laden?</p><p class='small'>Dadurch können Ihre Änderungen verloren gehen!</p>",{Ja:function(){s(),$(this).dialog("close")},Abbrechen:function(){$(this).dialog("close")}},"Änderung auf Server"):s()))})},1e3*global_polling_secs)}} \ No newline at end of file diff --git a/system/php/systemInit.php b/system/php/systemInit.php index 0847a20..e7b8029 100644 --- a/system/php/systemInit.php +++ b/system/php/systemInit.php @@ -62,7 +62,7 @@ abstract class SystemInit{ //Sytemversion // [ Hauptversionsnummer, Unternummer, Patch, Zusatz (Alpha, Beta, Final) ] => [1, 23, 5, 'B'] -> 1.23.5 Beta - const SYSTEMVERSION = [ 1, 0, 0, 'Final' ]; + const SYSTEMVERSION = [ 1, 0, 1, 'Final' ]; /* Auslesen der Konfiguration