add bootstrap
This commit is contained in:
1 parent
76faf824fc
commit
6ee27fda3d
151 files changed
+21257
-1745
No files matched your search
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* Bootstrap v4.1.1 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e(t.bootstrap={},t.jQuery)}(this,function(t,e){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function c(r){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{},e=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(o).filter(function(t){return Object.getOwnPropertyDescriptor(o,t).enumerable}))),e.forEach(function(t){var e,n,i;e=r,i=o[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i})}return r}for(var r,n,o,a,l,f,h,u,d,p,g,m,_,v,E,y,b,T,C,w,I,D,A,S,O,N,k,L,P,x,j,M,R,H,W,F,U,B,K,V,Q,Y,G,q,z,X,J,Z,$,tt,et,nt,it,rt,ot,st,at,lt,ct,ft,ht,ut,dt,pt,gt=function(i){var e="transitionend";function t(t){var e=this,n=!1;return i(this).one(l.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||l.triggerTransitionEnd(e)},t),this}var l={TRANSITION_END:"bsTransitionEnd",getUID:function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");e&&"#"!==e||(e=t.getAttribute("href")||"");try{return 0<i(document).find(e).length?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=i(t).css("transition-duration");return parseFloat(e)?(e=e.split(",")[0],1e3*parseFloat(e)):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){i(t).trigger(e)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var r=n[i],o=e[i],s=o&&l.isElement(o)?"element":(a=o,{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(r).test(s))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+s+'" but expected type "'+r+'".')}var a}};return i.fn.emulateTransitionEnd=t,i.event.special[l.TRANSITION_END]={bindType:e,delegateType:e,handle:function(t){if(i(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}},l}(e=e&&e.hasOwnProperty("default")?e.default:e),mt=(n="alert",a="."+(o="bs.alert"),l=(r=e).fn[n],f={CLOSE:"close"+a,CLOSED:"closed"+a,CLICK_DATA_API:"click"+a+".data-api"},h="alert",u="fade",d="show",p=function(){function i(t){this._element=t}var t=i.prototype;return t.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},t.dispose=function(){r.removeData(this._element,o),this._element=null},t._getRootElement=function(t){var e=gt.getSelectorFromElement(t),n=!1;return e&&(n=r(e)[0]),n||(n=r(t).closest("."+h)[0]),n},t._triggerCloseEvent=function(t){var e=r.Event(f.CLOSE);return r(t).trigger(e),e},t._removeElement=function(e){var n=this;if(r(e).removeClass(d),r(e).hasClass(u)){var t=gt.getTransitionDurationFromElement(e);r(e).one(gt.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(t)}else this._destroyElement(e)},t._destroyElement=function(t){r(t).detach().trigger(f.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var t=r(this),e=t.data(o);e||(e=new i(this),t.data(o,e)),"close"===n&&e[n](this)})},i._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},s(i,null,[{key:"VERSION",get:function(){return"4.1.1"}}]),i}(),r(document).on(f.CLICK_DATA_API,'[data-dismiss="alert"]',p._handleDismiss(new p)),r.fn[n]=p._jQueryInterface,r.fn[n].Constructor=p,r.fn[n].noConflict=function(){return r.fn[n]=l,p._jQueryInterface},p),_t=(m="button",v="."+(_="bs.button"),E=".data-api",y=(g=e).fn[m],b="active",T="btn",w='[data-toggle^="button"]',I='[data-toggle="buttons"]',D="input",A=".active",S=".btn",O={CLICK_DATA_API:"click"+v+E,FOCUS_BLUR_DATA_API:(C="focus")+v+E+" blur"+v+E},N=function(){function n(t){this._element=t}var t=n.prototype;return t.toggle=function(){var t=!0,e=!0,n=g(this._element).closest(I)[0];if(n){var i=g(this._element).find(D)[0];if(i){if("radio"===i.type)if(i.checked&&g(this._element).hasClass(b))t=!1;else{var r=g(n).find(A)[0];r&&g(r).removeClass(b)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!g(this._element).hasClass(b),g(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!g(this._element).hasClass(b)),t&&g(this._element).toggleClass(b)},t.dispose=function(){g.removeData(this._element,_),this._element=null},n._jQueryInterface=function(e){return this.each(function(){var t=g(this).data(_);t||(t=new n(this),g(this).data(_,t)),"toggle"===e&&t[e]()}Line truncated
|
||||
//# sourceMappingURL=bootstrap.bundle.min.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../node_modules/popper.js/dist/esm/popper.js","../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/index.js"],"names":["$","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","Event","ClassName","Alert","DATA_API_KEY","Selector","Button","Default","DefaultType","Direction","Carousel","Dimension","Collapse","Util","TRANSITION_END","transitionEndEmulator","duration","_this","this","called","one","setTimeout","triggerTransitionEnd","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","find","length","err","getTransitionDurationFromElement","transitionDuration","css","parseFloat","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","obj","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","call","expectedTypes","value","valueType","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","fn","emulateTransitionEnd","event","special","bindType","delegateType","handle","target","is","handleObj","handler","apply","arguments","CLOSE","CLOSED","CLICK_DATA_API","_element","_proto","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","_createClass","key","get","on","Constructor","noConflict","FOCUS_BLUR_DATA_API","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","activeElement","hasAttribute","classList","contains","focus","setAttribute","toggleClass","button","interval","keyboard","slide","pause","wrap","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHEND","LOAD_DATA_API","ACTIVE","ACTIVE_ITEM","ITEM","NEXT_PREV","INDICATORS","DATA_SLIDE","DATA_RIDE","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","_config","_getConfig","_indicatorsElement","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","direction","off","_this2","_keydown","documentElement","clearTimeout","tagName","which","makeArray","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","nextIndicator","children","addClass","directionalClassName","orderClassName","_this3","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","action","TypeError","_dataApiClickHandler","slideIndex","window","$carousel","SHOW","SHOWN","HIDE","HIDDEN","ACTIVES","DATA_TOGGLE","_isTransitioning","_triggerArray","id","tabToggles","i","elem","filter","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","style","attr","setTransitioning","scrollSize","slice","getBoundingClientRect","isTransitioning","jquery","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","$target","isBrowser","longerTimeoutBrowsers","timeoutDuration","navigator","userAgent","debounce","Promise","resolve","then","scheduled","isFunction","functionToCheck","getStyleComputedProperty","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","body","ownerDocument","_getStyleComputedProp","overflow","overflowX","overflowY","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","version","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","element1root","getScroll","upperSide","undefined","html","scrollingElement","getBordersSize","styles","axis","sideA","sideB","getSize","computedStyle","max","getWindowSizes","height","width","classCallCheck","instance","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","protoProps","staticProps","_extends","assign","source","getClientRect","offsets","right","left","bottom","top","rect","scrollTop","scrollLeft","e","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidthLine truncated
|
||||
+110
-32
@@ -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){
|
||||
|
||||
+39
-13
@@ -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
|
||||
|
||||
Reference in new issue
Block a user