add bootstrap

This commit is contained in:
2018-06-13 23:16:53 +02:00
parent 76faf824fc
commit 6ee27fda3d
151 changed files with 21257 additions and 1745 deletions

7
scripts/bootstrap.bundle.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +1,82 @@
var Tools = {
serialize: function(sFormId)
{
var asForm = {};
$.each($('#'+sFormId).serializeArray(), function(key, item){
asForm[item.name] = item.value;
});
return asForm;
},
ajax: function(sAction, fOnSuccess, oData, fOnFail, $Loader, sType, sDataType)
{
sType = sType || 'GET';
sDataType = sDataType || 'json';
oData = oData || {};
var asData = {};
if($.type(oData)=='string') {
asData = this.serialize(oData);
}
else asData = oData;
if($Loader)
{
$Loader
.data('load_html', $Loader.html())
.data('load_class', $Loader.attr('class'))
.removeClassPrefix('fa-')
.addClass('loader')
.html($('<img>', {'class':'onlyimg', src: Config.paths.dir.theme_image+"ajax.svg"}));
}
asData['a'] = sAction;
$.ajax({
url: oMyThoughts.consts.context.process_page,
type: sType,
data: asData,
dataType: sDataType
})
.done(function(oData) {
if(oData.result==oMyThoughts.consts.error) {
if(!fOnFail) Tools.feedback('error', oData.desc);
else fOnFail(oData.desc);
}
else fOnSuccess(oData.data, oData.desc);
if($Loader) {
$Loader
.removeClass()
.addClass($Loader.data('load_class'))
.html($Loader.data('load_html'));
}
})
.fail(function(jqXHR, textStatus, errorThrown) {
if(!fOnFail) Tools.feedback('error', textStatus+' '+errorThrown);
else fOnFail(textStatus);
}
);
},
getIcon: function(sIcon, bFull){
bFull = bFull || false;
return $('<i>', {'class': bFull?sIcon:('fal fa-'+sIcon)});
},
feedback: function(sClass, sMsg, $Box)
{
$Box = $Box || $('#feedback');
sMsg = sMsg || '';
if(sClass=='error' && typeof sMsg == 'string' && sMsg=='') sMsg = 'Oops ! An unknown error occured';
$('<div>', {'class':'alert shadow rounded alert-'+(sClass=='error'?'danger':sClass), role:'alert'})
.append(sMsg)
.appendTo($Box)
.slideDown('fast')
.delay(5000)
.slideUp('fast', function(){$(this).remove();});
}
};
function emptyBox(element, text)
{
//var textarea = $('#thoughts_form textarea[name="thoughts"]');
@@ -19,11 +98,6 @@ function setHeight(element)
element.style.height = height+'px';
}
function goTo(url)
{
window.location.href = url;
}
function addInput(form, name, type, value)
{
var registerInput = document.createElement('input');
@@ -33,26 +107,6 @@ function addInput(form, name, type, value)
document.forms[form].appendChild(registerInput);
}
/*
texts = new Object();
texts['thoughts'] = 'Talk to me.';
texts['login'] = 'Nickname';
texts['pass'] = 'Password';
window.onload = function ()
{
for (i in texts)
{
var id = document.getElementById(i);
if(id)
{
id.addEventListener('focus', function() {emptyBox(this, texts[this.name]);}, false);
id.addEventListener('blur', function() {emptyBox(this, texts[this.name]);}, false);
}
}
};
*/
function getInfo(action, fOnSuccess, vars, fOnError, sType/*, bProcessIcon*/)
{
if(!vars) vars = {};
@@ -93,11 +147,8 @@ function feedback(sClass, sMsg, $Box)
{
$Box = $Box || $('#feedback');
sMsg = sMsg || '';
var sHeight = 20;
$('.feedback').each(function(){sHeight += $(this).outerHeight() + 10;});
if(sClass=='error' && sMsg=='') sMsg = 'Oops ! An unknown error occured';
$('<span>', {'class':'feedback round '+sClass})
.css('top', sHeight+'px')
$('<div>', {'class':'alert shadow rounded alert-'+(sClass=='error'?'danger':sClass), role:'alert'})
//.append($('<i>', {'class':'fa fa-standalone fa-'+sClass}))
.append(addPunctuation(sMsg))
.appendTo($Box)
@@ -169,12 +220,39 @@ $.prototype.checkForm = function(sSelector)
sSelector = sSelector || 'input[type="password"], input[type="text"], textarea';
var $This = $(this);
var bOk = true;
$This.find(sSelector).each(function()
var $Desc = $('<span>');
var $Fields = $This.find(sSelector);
$Fields.each(function()
{
$This = $(this);
bOk = bOk && $This.val()!='' && $This.val()!=$This.data('default_value');
var sFieldValue = $This.val();
var sFieldName = $This.attr('placeholder');
//Icon
var sFieldIcon = $This.prev().find('.input-group-text').find('.fal').attr('class');
var $FieldIcon = (sFieldIcon==undefined)?'':Tools.getIcon(sFieldIcon, true).addClass('fa-fw bold');
if(sFieldValue=='' || sFieldValue==$This.data('default_value')) {
bOk = false;
$Desc.append('Field ').append($FieldIcon).append($('<strong>').text(sFieldName)).append(' is empty');
}
switch($This.attr('type')) {
case 'password':
var $Conf = $Fields.filter('#'+$This.attr('id')+'_conf');
if($Conf.length!==0 && $Conf.val()!=sFieldValue){
bOk = false;
$Desc.append('Passwords do not match');
}
break;
}
//Break loop
if(!bOk) return false;
});
return bOk;
return {success: bOk, desc: $Desc};
};
$.fn.toEm = function(settings){

View File

@@ -5,6 +5,7 @@ function MyThoughts(asGlobals)
this.consts.hash_sep = '-';
this.consts.default_page = 'home';
this.consts.title = 'My Thoughts';
this.consts.root = location.protocol+'//'+location.host+location.pathname;
this.init = function()
{
@@ -16,14 +17,11 @@ function MyThoughts(asGlobals)
//page elem
self.elem = {};
self.elem.container = $('#container');
self.elem.$Container = $('#container');
//on window resize
$(window).resize(self.onResize).resize();
//Setup menu
//self.initMenu();
//Hash management
self.resetTmpFunctions();
$(window)
@@ -57,7 +55,7 @@ function MyThoughts(asGlobals)
this.initMenu = function()
{
self.elem.$Menu.show('fast');
};
/* Events */
@@ -76,10 +74,10 @@ function MyThoughts(asGlobals)
this.resetTmpFunctions = function()
{
self.pageInit = function(asHash){console.log('no init for the page: '+asHash.page)};
self.pageInit = function(asHash, bFirstPage){console.log('no init for the page: '+asHash.page)};
self.onSamePageMove = function(asHash){return false};
self.onQuitPage = function(){return true};
self.onFeedback = function(sType, sMsg){feedback(sType, sMsg, self.elem.container);};
self.onFeedback = function(sType, sMsg){Tools.feedback(sType, sMsg, self.elem.$Container);};
};
/* Hash Handling */
@@ -131,6 +129,22 @@ function MyThoughts(asGlobals)
/* Page Switching */
this.loadHome = function(asData) {
console.log(asData);
self.vars('log_in', asData.log_in);
self.vars('id', asData.id);
if(self.vars('log_in')) {
//Setup menu
self.initMenu();
//Swap to default page
self.setHash('write');
}
};
this.getActionLink = function(sAction, oVars)
{
if(!oVars) oVars = {};
@@ -149,7 +163,15 @@ function MyThoughts(asGlobals)
var bLoggedIn = self.vars('log_in');
var sDefaultPage = bLoggedIn?'write':'logon';
if(asHash.hash !='' && sNextPage != '' && (bLoggedIn || sNextPage==sDefaultPage))
if( asHash.hash == '' ||
sNextPage == '' ||
!bLoggedIn && sNextPage != sDefaultPage ||
bLoggedIn && sNextPage == 'logon'
)
{
self.setHash(sDefaultPage); //force first page
}
else
{
var bSamePage = (sCurrPage==sNextPage);
if(self.onQuitPage(bSamePage) && !bSamePage || self.onSamePageMove(asHash))
@@ -172,17 +194,20 @@ function MyThoughts(asGlobals)
var $Dom = $(self.consts.pages[sNextPage]);
if(bFirstPage)
{
self.elem.container.html($(self.consts.pages['template']));
self.elem.main = self.elem.container.find('#main');
self.splash(self.elem.main, $Dom, asHash, bFirstPage); //first page
self.elem.$Container.html($(self.consts.pages['template']));
self.elem.$Main = self.elem.$Container.find('#main');
self.elem.$Menu = self.elem.$Container.find('#menu');
if(self.vars.log_in) self.initMenu();
self.splash(self.elem.$Main, $Dom, asHash, bFirstPage); //first page
}
else
{
self.elem.main.stop().fadeTo('fast', 0, function(){self.splash(self.elem.main, $Dom, asHash, bFirstPage);}); //Switching page
self.elem.$Main.stop().fadeTo('fast', 0, function(){self.splash(self.elem.$Main, $Dom, asHash, bFirstPage);}); //Switching page
}
}
}
else self.setHash(sDefaultPage); //force first page
};
this.splash = function($FadeInElem, $Dom, asHash, bFirstPage)
@@ -192,6 +217,7 @@ function MyThoughts(asGlobals)
$FadeInElem.html($Dom);
//Page Bootstrap
self.elem.$Main.removeClass('no_frame');
self.pageInit(asHash, bFirstPage);
//Show main