Patch multiday thoughts
This commit is contained in:
@@ -1,23 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
<meta name="author" content="Franzz" />
|
||||
<link href="style/mythoughts.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="scripts/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="scripts/bootstrap.bundle.min.js"></script>
|
||||
<script type="text/javascript" src="scripts/jquery.mousewheel.min.js"></script>
|
||||
<script type="text/javascript" src="scripts/quill.min.js"></script>
|
||||
<script type="text/javascript" src="scripts/common.js"></script>
|
||||
<script type="text/javascript" src="scripts/mythoughts.js"></script>
|
||||
<link rel="shortcut icon" href="images/favicon2.ico" />
|
||||
<title>My Thoughts</title>
|
||||
<script type="text/javascript">
|
||||
var oMyThoughts = new MyThoughts(asGlobalVars);
|
||||
$(document).ready(oMyThoughts.init);
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container"></div>
|
||||
</body>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
<meta name="author" content="Franzz" />
|
||||
<link href="style/mythoughts.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="scripts/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="scripts/bootstrap.bundle.min.js"></script>
|
||||
<script type="text/javascript" src="scripts/jquery.mousewheel.min.js"></script>
|
||||
<script type="text/javascript" src="scripts/quill.min.js"></script>
|
||||
<script type="text/javascript" src="scripts/common.js"></script>
|
||||
<script type="text/javascript" src="scripts/mythoughts.js"></script>
|
||||
<link rel="shortcut icon" href="images/favicon2.ico" />
|
||||
<title>My Thoughts</title>
|
||||
<script type="text/javascript">
|
||||
var oMyThoughts = new MyThoughts(asGlobalVars);
|
||||
$(document).ready(oMyThoughts.init);
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container"></div>
|
||||
</body>
|
||||
</html>
|
||||
190
masks/logon.html
190
masks/logon.html
@@ -1,96 +1,96 @@
|
||||
<div id="logon" class="border border-grey-400 shadow rounded">
|
||||
<form name="post_logon" id="post_logon" method="post">
|
||||
<div class="form-group align-items-center">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text" data-toggle="tooltip" data-placement="left" title="Username"><i class="fal fa-user"></i></span>
|
||||
</div>
|
||||
<input type="text" class="form-control" placeholder="Nickname" name="login" id="login" tool value="Franzz" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group align-items-center">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text" data-toggle="tooltip" data-placement="left" title="Password"><i class="fal fa-password"></i></span>
|
||||
</div>
|
||||
<input type="password" class="form-control" placeholder="Password" name="pass" id="pass" value="123456" />
|
||||
</div>
|
||||
</div>
|
||||
<div id="pass_conf_box" class="form-group align-items-center collapse">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text" data-toggle="tooltip" data-placement="left" title="Repeat password">
|
||||
<i class="fal fa-password first"></i>
|
||||
<i class="fal fa-password second"></i>
|
||||
</span>
|
||||
</div>
|
||||
<input type="password" class="form-control" placeholder="Confirm password" name="pass_conf" id="pass_conf" value="123456" />
|
||||
</div>
|
||||
</div>
|
||||
<div id="btn_box" class="btn-toolbar justify-content-between" role="toolbar">
|
||||
<button type="button" class="btn btn-secondary shadow-sm transition" id="register">Register</button>
|
||||
<button type="button" class="btn btn-primary shadow-sm" name="signin" id="signin">Sign in</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
oMyThoughts.pageInit = function(asHash, bFirstPage)
|
||||
{
|
||||
self.elem.$Main.addClass('no_frame');
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
|
||||
//$(window).keyup(function(e){if(e.which==13) logMeIn();});
|
||||
$('#signin').click(logMeIn);
|
||||
$('#register').on('click submit', function(event){
|
||||
event.preventDefault();
|
||||
$(this)
|
||||
.blur()
|
||||
.off('click')
|
||||
.click(register);
|
||||
$('#pass_conf_box').collapse('show');
|
||||
$('#signin').hide('fast', function(){$('#btn_box').addClass('registering');});
|
||||
});
|
||||
};
|
||||
|
||||
function logMeIn()
|
||||
{
|
||||
var oChecker = $('#post_logon').checkForm('#login, #pass');
|
||||
if(oChecker.success)
|
||||
{
|
||||
var asInputs = getInputs();
|
||||
Tools.ajax(
|
||||
'logmein',
|
||||
oMyThoughts.loadHome,
|
||||
{token: getToken(asInputs)},
|
||||
);
|
||||
}
|
||||
else Tools.feedback('warning', oChecker.desc);
|
||||
}
|
||||
|
||||
function register()
|
||||
{
|
||||
var oChecker = $('#post_logon').checkForm();
|
||||
if(oChecker.success)
|
||||
{
|
||||
var asInputs = getInputs();
|
||||
Tools.ajax(
|
||||
'register',
|
||||
oMyThoughts.loadHome,
|
||||
{token: getToken(asInputs), nickname:asInputs.nickname}
|
||||
);
|
||||
}
|
||||
else Tools.feedback('warning', oChecker.desc);
|
||||
}
|
||||
|
||||
function getInputs() {
|
||||
var sNickname = $('#login').val();
|
||||
var sUsername = sNickname.toLowerCase().replace(/\s+/g, '');
|
||||
var sPass = $.trim($('#pass').val());
|
||||
|
||||
return {username: sUsername, nickname: sNickname, pass: sPass};
|
||||
}
|
||||
|
||||
function getToken(asInputs) {
|
||||
return md5(asInputs.username)+oMyThoughts.consts.token_sep+getLoginToken(asInputs.pass);
|
||||
}
|
||||
<div id="logon" class="border border-grey-400 shadow rounded">
|
||||
<form name="post_logon" id="post_logon" method="post">
|
||||
<div class="form-group align-items-center">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text" data-toggle="tooltip" data-placement="left" title="Username"><i class="fal fa-user"></i></span>
|
||||
</div>
|
||||
<input type="text" class="form-control" placeholder="Nickname" name="login" id="login" tool value="Franzz" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group align-items-center">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text" data-toggle="tooltip" data-placement="left" title="Password"><i class="fal fa-password"></i></span>
|
||||
</div>
|
||||
<input type="password" class="form-control" placeholder="Password" name="pass" id="pass" value="123456" />
|
||||
</div>
|
||||
</div>
|
||||
<div id="pass_conf_box" class="form-group align-items-center collapse">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text" data-toggle="tooltip" data-placement="left" title="Repeat password">
|
||||
<i class="fal fa-password first"></i>
|
||||
<i class="fal fa-password second"></i>
|
||||
</span>
|
||||
</div>
|
||||
<input type="password" class="form-control" placeholder="Confirm password" name="pass_conf" id="pass_conf" value="123456" />
|
||||
</div>
|
||||
</div>
|
||||
<div id="btn_box" class="btn-toolbar justify-content-between" role="toolbar">
|
||||
<button type="button" class="btn btn-secondary shadow-sm transition" id="register">Register</button>
|
||||
<button type="button" class="btn btn-primary shadow-sm" name="signin" id="signin">Sign in</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
oMyThoughts.pageInit = function(asHash, bFirstPage)
|
||||
{
|
||||
self.elem.$Main.addClass('no_frame');
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
|
||||
//$(window).keyup(function(e){if(e.which==13) logMeIn();});
|
||||
$('#signin').click(logMeIn);
|
||||
$('#register').on('click submit', function(event){
|
||||
event.preventDefault();
|
||||
$(this)
|
||||
.blur()
|
||||
.off('click')
|
||||
.click(register);
|
||||
$('#pass_conf_box').collapse('show');
|
||||
$('#signin').hide('fast', function(){$('#btn_box').addClass('registering');});
|
||||
});
|
||||
};
|
||||
|
||||
function logMeIn()
|
||||
{
|
||||
var oChecker = $('#post_logon').checkForm('#login, #pass');
|
||||
if(oChecker.success)
|
||||
{
|
||||
var asInputs = getInputs();
|
||||
Tools.ajax(
|
||||
'logmein',
|
||||
oMyThoughts.loadHome,
|
||||
{token: getToken(asInputs)},
|
||||
);
|
||||
}
|
||||
else Tools.feedback('warning', oChecker.desc);
|
||||
}
|
||||
|
||||
function register()
|
||||
{
|
||||
var oChecker = $('#post_logon').checkForm();
|
||||
if(oChecker.success)
|
||||
{
|
||||
var asInputs = getInputs();
|
||||
Tools.ajax(
|
||||
'register',
|
||||
oMyThoughts.loadHome,
|
||||
{token: getToken(asInputs), nickname:asInputs.nickname}
|
||||
);
|
||||
}
|
||||
else Tools.feedback('warning', oChecker.desc);
|
||||
}
|
||||
|
||||
function getInputs() {
|
||||
var sNickname = $('#login').val();
|
||||
var sUsername = sNickname.toLowerCase().replace(/\s+/g, '');
|
||||
var sPass = $.trim($('#pass').val());
|
||||
|
||||
return {username: sUsername, nickname: sNickname, pass: sPass};
|
||||
}
|
||||
|
||||
function getToken(asInputs) {
|
||||
return md5(asInputs.username)+oMyThoughts.consts.token_sep+getLoginToken(asInputs.pass);
|
||||
}
|
||||
</script>
|
||||
@@ -1,13 +1,18 @@
|
||||
<div id="read"></div>
|
||||
<script type="text/javascript">
|
||||
oMyThoughts.pageInit = function(asHash, bFirstPage) {
|
||||
oEditor = new Editor('#read', true);
|
||||
oEditor.open(asHash.items[0]);
|
||||
};
|
||||
|
||||
oMyThoughts.onSamePageMove = function(asHash) {
|
||||
$('#read').empty();
|
||||
self.pageInit(self.getHash());
|
||||
return false;
|
||||
};
|
||||
<div id="read"></div>
|
||||
<script type="text/javascript">
|
||||
oMyThoughts.pageInit = function(asHash, bFirstPage) {
|
||||
oEditor = new Editor('#read', true);
|
||||
oEditor.open(asHash.items[0]);
|
||||
};
|
||||
|
||||
oMyThoughts.onSamePageMove = function(asHash) {
|
||||
$('#read').empty();
|
||||
self.pageInit(self.getHash());
|
||||
return false;
|
||||
};
|
||||
|
||||
oMyThoughts.onKeydown = function(oEvent) {
|
||||
if(oEvent.which == 37 || oEvent.which == 38) oEditor.prevPage();
|
||||
else if(oEvent.which == 39 || oEvent.which == 40) oEditor.nextPage();
|
||||
}
|
||||
</script>
|
||||
@@ -1,17 +1,17 @@
|
||||
<div id="feedback"></div>
|
||||
<div id="header"></div>
|
||||
<div id="menu">
|
||||
<ul>
|
||||
<li><a href="#settings" class="button fal fa-settings"></a></li>
|
||||
<li><a href="#logoff" class="button fal fa-logoff"></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="main"></div>
|
||||
<div id="side">
|
||||
<div class="tag write"><a href="#write" class="fal fa-write"></a></div>
|
||||
</div>
|
||||
<footer>
|
||||
<span>Designed and powered by Franzz & Clarita. </span>
|
||||
<span>My Thoughts Project under <a href="http://www.gnu.org/licenses/gpl.html" target="_blank">GPLv3</a> License.</span>
|
||||
</footer>
|
||||
<div id="feedback"></div>
|
||||
<div id="header"></div>
|
||||
<div id="menu">
|
||||
<ul>
|
||||
<li><a href="#settings" class="button fal fa-settings"></a></li>
|
||||
<li><a href="#logoff" class="button fal fa-logoff"></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="main"></div>
|
||||
<div id="side">
|
||||
<div class="tag write"><a href="#write" class="fal fa-write"></a></div>
|
||||
</div>
|
||||
<footer>
|
||||
<span>Designed and powered by Franzz & Clarita. </span>
|
||||
<span>My Thoughts Project under <a href="http://www.gnu.org/licenses/gpl.html" target="_blank">GPLv3</a> License.</span>
|
||||
</footer>
|
||||
#errors#
|
||||
220
masks/write.html
220
masks/write.html
@@ -1,111 +1,111 @@
|
||||
<div id="write">
|
||||
<div id="write_feedback"></div>
|
||||
<div id="edi_write"></div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
oMyThoughts.pageInit = function(asHash, bFirstPage)
|
||||
{
|
||||
self.tmp('default_text', "\n");
|
||||
self.tmp('keystrokes', 0);
|
||||
self.tmp('saving', false);
|
||||
|
||||
oEditor = new Editor('#edi_write');
|
||||
oEditor.onKeyStroke = (e) => {
|
||||
if(e.which == 83 && e.ctrlKey) {
|
||||
e.preventDefault();
|
||||
save(true);
|
||||
}
|
||||
else save();
|
||||
}
|
||||
oEditor.moveToPage('last');
|
||||
};
|
||||
|
||||
oMyThoughts.onFeedback = function(sType, sMsg)
|
||||
{
|
||||
var $Feedback = $('#write_feedback').stop();
|
||||
if(sMsg != $Feedback.find('span').text()) {
|
||||
$Feedback.fadeOut($Feedback.is(':empty')?0:'fast', function(){
|
||||
$(this)
|
||||
.empty()
|
||||
.append($('<span>', {'class':sType}).text(sMsg))
|
||||
.fadeIn('fast');
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
oMyThoughts.onQuitPage = function()
|
||||
{
|
||||
return save(true);
|
||||
};
|
||||
|
||||
function save(bForce)
|
||||
{
|
||||
if(typeof oSaveTimer != 'undefined') clearTimeout(oSaveTimer);
|
||||
var bSave = (oEditor.keystrokes % 20 == 0 || bForce);
|
||||
|
||||
if(bSave) {
|
||||
if(self.tmp('saving')) {
|
||||
oSaveTimer = setTimeout(function(){save(true);}, 500);
|
||||
}
|
||||
else {
|
||||
var sContent = oEditor.getContent();
|
||||
if(!oEditor.isEmpty() || oEditor.id != 0) {
|
||||
self.tmp('saving', true);
|
||||
oMyThoughts.onFeedback('info', 'Saving...');
|
||||
getInfo(
|
||||
'update',
|
||||
function(sDesc, asData) {
|
||||
if(oEditor.id == 0) oMyThoughts.updateSideMenu();
|
||||
oEditor.id = asData.id;
|
||||
oMyThoughts.feedback('notice', 'Thought saved ('+asData.led.substr(11, 5)+')');
|
||||
self.tmp('saving', false);
|
||||
},
|
||||
{
|
||||
id: oEditor.id,
|
||||
content: sContent
|
||||
},
|
||||
function(sError) {
|
||||
oMyThoughts.feedback('error', 'Not saved! An error occured: '+sError);
|
||||
self.tmp('saving', false);
|
||||
oSaveTimer = setTimeout(save, 1000);
|
||||
},
|
||||
'POST'
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
oSaveTimer = setTimeout(function(){save(true);}, 1000*10);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/*function setLastContent(oQuill, fCallback)
|
||||
{
|
||||
getInfo
|
||||
(
|
||||
'load',
|
||||
function(sDesc, asData)
|
||||
{
|
||||
if(asData.ops.length != 1 || asData.ops[0].insert != '' && false) {
|
||||
var $Date = $('<p>', {'class':'entry_date'}).text(asData.created_f);
|
||||
|
||||
var $Sep = $('<div>', {'class':'entry_sep'})
|
||||
.text('~')
|
||||
.click(function(){oQuill.focus();});
|
||||
|
||||
oQuill.setContents(asData.ops);
|
||||
$('#context')
|
||||
.append($('#editor .ql-editor').html())
|
||||
.append($Date)
|
||||
.append($Sep);
|
||||
|
||||
oQuill.setContents([]);
|
||||
}
|
||||
else oQuill.focus();
|
||||
if(typeof fCallback == 'function') fCallback();
|
||||
},
|
||||
{id: 'last'}
|
||||
);
|
||||
}*/
|
||||
<div id="write">
|
||||
<div id="write_feedback"></div>
|
||||
<div id="edi_write"></div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
oMyThoughts.pageInit = function(asHash, bFirstPage)
|
||||
{
|
||||
self.tmp('default_text', "\n");
|
||||
self.tmp('keystrokes', 0);
|
||||
self.tmp('saving', false);
|
||||
|
||||
oEditor = new Editor('#edi_write');
|
||||
oEditor.onKeyStroke = (e) => {
|
||||
if(e.which == 83 && e.ctrlKey) {
|
||||
e.preventDefault();
|
||||
save(true);
|
||||
}
|
||||
else save();
|
||||
}
|
||||
oEditor.moveToPage('last');
|
||||
};
|
||||
|
||||
oMyThoughts.onFeedback = function(sType, sMsg)
|
||||
{
|
||||
var $Feedback = $('#write_feedback').stop();
|
||||
if(sMsg != $Feedback.find('span').text()) {
|
||||
$Feedback.fadeOut($Feedback.is(':empty')?0:'fast', function(){
|
||||
$(this)
|
||||
.empty()
|
||||
.append($('<span>', {'class':sType}).text(sMsg))
|
||||
.fadeIn('fast');
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
oMyThoughts.onQuitPage = function()
|
||||
{
|
||||
return save(true);
|
||||
};
|
||||
|
||||
function save(bForce)
|
||||
{
|
||||
if(typeof oSaveTimer != 'undefined') clearTimeout(oSaveTimer);
|
||||
var bSave = (oEditor.keystrokes % 20 == 0 || bForce);
|
||||
|
||||
if(bSave) {
|
||||
if(self.tmp('saving')) {
|
||||
oSaveTimer = setTimeout(function(){save(true);}, 500);
|
||||
}
|
||||
else {
|
||||
var sContent = oEditor.getContent();
|
||||
if(!oEditor.isEmpty() || oEditor.id != 0) {
|
||||
self.tmp('saving', true);
|
||||
oMyThoughts.onFeedback('info', 'Saving...');
|
||||
getInfo(
|
||||
'update',
|
||||
function(sDesc, asData) {
|
||||
if(oEditor.id == 0) oMyThoughts.updateSideMenu();
|
||||
oEditor.id = asData.id;
|
||||
oMyThoughts.feedback('notice', 'Thought saved ('+asData.led.substr(11, 5)+')');
|
||||
self.tmp('saving', false);
|
||||
},
|
||||
{
|
||||
id: oEditor.id,
|
||||
content: sContent
|
||||
},
|
||||
function(sError) {
|
||||
oMyThoughts.feedback('error', 'Not saved! An error occured: '+sError);
|
||||
self.tmp('saving', false);
|
||||
oSaveTimer = setTimeout(save, 1000);
|
||||
},
|
||||
'POST'
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
oSaveTimer = setTimeout(function(){save(true);}, 1000*10);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/*function setLastContent(oQuill, fCallback)
|
||||
{
|
||||
getInfo
|
||||
(
|
||||
'load',
|
||||
function(sDesc, asData)
|
||||
{
|
||||
if(asData.ops.length != 1 || asData.ops[0].insert != '' && false) {
|
||||
var $Date = $('<p>', {'class':'entry_date'}).text(asData.created_f);
|
||||
|
||||
var $Sep = $('<div>', {'class':'entry_sep'})
|
||||
.text('~')
|
||||
.click(function(){oQuill.focus();});
|
||||
|
||||
oQuill.setContents(asData.ops);
|
||||
$('#context')
|
||||
.append($('#editor .ql-editor').html())
|
||||
.append($Date)
|
||||
.append($Sep);
|
||||
|
||||
oQuill.setContents([]);
|
||||
}
|
||||
else oQuill.focus();
|
||||
if(typeof fCallback == 'function') fCallback();
|
||||
},
|
||||
{id: 'last'}
|
||||
);
|
||||
}*/
|
||||
</script>
|
||||
Reference in New Issue
Block a user