更新UI
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,7 +1,6 @@
|
|||||||
/.idea
|
/.idea
|
||||||
/.vscode
|
/.vscode
|
||||||
/vendor
|
/vendor
|
||||||
/viewold
|
|
||||||
*.log
|
*.log
|
||||||
.env
|
.env
|
||||||
composer.lock
|
composer.lock
|
||||||
@@ -1 +1,6 @@
|
|||||||
{extend name="../../../view/base"/}
|
{extend name="../../../view/addon"/}
|
||||||
|
{block name="body"}
|
||||||
|
<div class="box box-primary">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
@@ -15,7 +15,7 @@ class Upload extends Base {
|
|||||||
|
|
||||||
// 使用内置PHP模板引擎渲染模板输出
|
// 使用内置PHP模板引擎渲染模板输出
|
||||||
protected $tpl_config = [
|
protected $tpl_config = [
|
||||||
'view_dir_name' => 'viewlte',
|
'view_dir_name' => 'view',
|
||||||
'tpl_replace_string' => [
|
'tpl_replace_string' => [
|
||||||
'__static__' => '/static',
|
'__static__' => '/static',
|
||||||
'__img__' => '/static/admin/images',
|
'__img__' => '/static/admin/images',
|
||||||
@@ -65,7 +65,7 @@ class Upload extends Base {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function upload(){
|
public function upload(){
|
||||||
$upload_type = $this->request->get('filename', 'images', 'trim');
|
$upload_type = $this->request->get('filename', 'image', 'trim');
|
||||||
$config = $this->$upload_type();
|
$config = $this->$upload_type();
|
||||||
// 获取表单上传文件 例如上传了001.jpg
|
// 获取表单上传文件 例如上传了001.jpg
|
||||||
$file = request()->file('file');
|
$file = request()->file('file');
|
||||||
|
|||||||
@@ -21,14 +21,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/volist}
|
{/volist}
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
|
||||||
$(function(){
|
|
||||||
$('.form-group #{$name}_sort').boards({
|
|
||||||
drop: function(e){
|
|
||||||
var group = e.target.closest('.board').find('.board-list').attr('data-group');
|
|
||||||
e.element.find('input').attr('name','{$name}[' + group + '][]')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
2
public/static/addons/.gitignore
vendored
Normal file
2
public/static/addons/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
*
|
||||||
|
!.gitignore
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -33,6 +33,10 @@ require.config({
|
|||||||
'template': ['plugins/art-template/template'],
|
'template': ['plugins/art-template/template'],
|
||||||
'webupload': ['plugins/webuploader/webuploader.min'],
|
'webupload': ['plugins/webuploader/webuploader.min'],
|
||||||
'pcasunzips': ['plugins/jquery/pcasunzips'],
|
'pcasunzips': ['plugins/jquery/pcasunzips'],
|
||||||
|
|
||||||
|
'board': ['plugins/board/board.min'],
|
||||||
|
'droppable': ['plugins/droppable/droppable'],
|
||||||
|
|
||||||
// openSource
|
// openSource
|
||||||
'layer': ['plugins/layer/layer'],
|
'layer': ['plugins/layer/layer'],
|
||||||
'base64': ['plugins/jquery/base64.min'],
|
'base64': ['plugins/jquery/base64.min'],
|
||||||
@@ -90,6 +94,9 @@ require.config({
|
|||||||
'css!'+baseRoot+'plugins/eonasdan-bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css',
|
'css!'+baseRoot+'plugins/eonasdan-bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css',
|
||||||
],
|
],
|
||||||
|
|
||||||
|
'board': {deps:['jquery', 'droppable', 'css!'+baseRoot+'plugins/board/board.min.css'], exports: '$.fn.board'},
|
||||||
|
'droppable': {deps:['jquery'], exports: '$.fn.droppable'},
|
||||||
|
|
||||||
'validator-lang': ['validator-core'],
|
'validator-lang': ['validator-core'],
|
||||||
|
|
||||||
'slimscroll': {deps: ['jquery'],exports: '$.fn.extend'},
|
'slimscroll': {deps: ['jquery'],exports: '$.fn.extend'},
|
||||||
|
|||||||
@@ -1,179 +0,0 @@
|
|||||||
(function(context,namespace){var Hopscotch,HopscotchBubble,HopscotchCalloutManager,HopscotchI18N,customI18N,customRenderer,customEscape,templateToUse='bubble_default',Sizzle=window.Sizzle||null,utils,callbacks,helpers,winLoadHandler,defaultOpts,winHopscotch=context[namespace],undefinedStr='undefined',waitingToStart=false,hasJquery=(typeof window.jQuery!==undefinedStr),hasSessionStorage=false,isStorageWritable=false,document=window.document;try{if(typeof window.sessionStorage!==undefinedStr){hasSessionStorage=true;sessionStorage.setItem('hopscotch.test.storage','ok');sessionStorage.removeItem('hopscotch.test.storage');isStorageWritable=true;}}catch(err){}
|
|
||||||
defaultOpts={smoothScroll:true,scrollDuration:1000,scrollTopMargin:200,showCloseButton:true,showPrevButton:false,showNextButton:true,bubbleWidth:280,bubblePadding:15,arrowWidth:20,skipIfNoElement:true,cookieName:'hopscotch.tour.state'};if(winHopscotch){return;}
|
|
||||||
if(!Array.isArray){Array.isArray=function(obj){return Object.prototype.toString.call(obj)==='[object Array]';};}
|
|
||||||
winLoadHandler=function(){if(waitingToStart){winHopscotch.startTour();}};utils={addClass:function(domEl,classToAdd){var domClasses,classToAddArr,setClass,i,len;if(!domEl.className){domEl.className=classToAdd;}
|
|
||||||
else{classToAddArr=classToAdd.split(/\s+/);domClasses=' '+ domEl.className+' ';for(i=0,len=classToAddArr.length;i<len;++i){if(domClasses.indexOf(' '+ classToAddArr[i]+' ')<0){domClasses+=classToAddArr[i]+' ';}}
|
|
||||||
domEl.className=domClasses.replace(/^\s+|\s+$/g,'');}},removeClass:function(domEl,classToRemove){var domClasses,classToRemoveArr,currClass,i,len;classToRemoveArr=classToRemove.split(/\s+/);domClasses=' '+ domEl.className+' ';for(i=0,len=classToRemoveArr.length;i<len;++i){domClasses=domClasses.replace(' '+ classToRemoveArr[i]+' ',' ');}
|
|
||||||
domEl.className=domClasses.replace(/^\s+|\s+$/g,'');},hasClass:function(domEl,classToCheck){var classes;if(!domEl.className){return false;}
|
|
||||||
classes=' '+ domEl.className+' ';return(classes.indexOf(' '+ classToCheck+' ')!==-1);},getPixelValue:function(val){var valType=typeof val;if(valType==='number'){return val;}
|
|
||||||
if(valType==='string'){return parseInt(val,10);}
|
|
||||||
return 0;},valOrDefault:function(val,valDefault){return typeof val!==undefinedStr?val:valDefault;},invokeCallbackArrayHelper:function(arr){var fn;if(Array.isArray(arr)){fn=helpers[arr[0]];if(typeof fn==='function'){return fn.apply(this,arr.slice(1));}}},invokeCallbackArray:function(arr){var i,len;if(Array.isArray(arr)){if(typeof arr[0]==='string'){return utils.invokeCallbackArrayHelper(arr);}
|
|
||||||
else{for(i=0,len=arr.length;i<len;++i){utils.invokeCallback(arr[i]);}}}},invokeCallback:function(cb){if(typeof cb==='function'){return cb();}
|
|
||||||
if(typeof cb==='string'&&helpers[cb]){return helpers[cb]();}
|
|
||||||
else{return utils.invokeCallbackArray(cb);}},invokeEventCallbacks:function(evtType,stepCb){var cbArr=callbacks[evtType],callback,fn,i,len;if(stepCb){return this.invokeCallback(stepCb);}
|
|
||||||
for(i=0,len=cbArr.length;i<len;++i){this.invokeCallback(cbArr[i].cb);}},getScrollTop:function(){var scrollTop;if(typeof window.pageYOffset!==undefinedStr){scrollTop=window.pageYOffset;}
|
|
||||||
else{scrollTop=document.documentElement.scrollTop;}
|
|
||||||
return scrollTop;},getScrollLeft:function(){var scrollLeft;if(typeof window.pageXOffset!==undefinedStr){scrollLeft=window.pageXOffset;}
|
|
||||||
else{scrollLeft=document.documentElement.scrollLeft;}
|
|
||||||
return scrollLeft;},getWindowHeight:function(){return window.innerHeight||document.documentElement.clientHeight;},getWindowWidth:function(){return window.innerWidth||document.documentElement.clientWidth;},addEvtListener:function(el,evtName,fn){return el.addEventListener?el.addEventListener(evtName,fn,false):el.attachEvent('on'+ evtName,fn);},removeEvtListener:function(el,evtName,fn){return el.removeEventListener?el.removeEventListener(evtName,fn,false):el.detachEvent('on'+ evtName,fn);},documentIsReady:function(){return document.readyState==='complete'||document.readyState==='interactive';},evtPreventDefault:function(evt){if(evt.preventDefault){evt.preventDefault();}
|
|
||||||
else if(event){event.returnValue=false;}},extend:function(obj1,obj2){var prop;for(prop in obj2){if(obj2.hasOwnProperty(prop)){obj1[prop]=obj2[prop];}}},getStepTargetHelper:function(target){var result=document.getElementById(target);if(result){return result;}
|
|
||||||
if(hasJquery){result=jQuery(target);return result.length?result[0]:null;}
|
|
||||||
if(Sizzle){result=new Sizzle(target);return result.length?result[0]:null;}
|
|
||||||
if(document.querySelector){try{return document.querySelector(target);}catch(err){}}
|
|
||||||
if(/^#[a-zA-Z][\w-_:.]*$/.test(target)){return document.getElementById(target.substring(1));}
|
|
||||||
return null;},getStepTarget:function(step){var queriedTarget;if(!step||!step.target){return null;}
|
|
||||||
if(typeof step.target==='string'){return utils.getStepTargetHelper(step.target);}
|
|
||||||
else if(Array.isArray(step.target)){var i,len;for(i=0,len=step.target.length;i<len;i++){if(typeof step.target[i]==='string'){queriedTarget=utils.getStepTargetHelper(step.target[i]);if(queriedTarget){return queriedTarget;}}}
|
|
||||||
return null;}
|
|
||||||
return step.target;},getI18NString:function(key){return customI18N[key]||HopscotchI18N[key];},setState:function(name,value,days){var expires='',date;if(hasSessionStorage&&isStorageWritable){try{sessionStorage.setItem(name,value);}
|
|
||||||
catch(err){isStorageWritable=false;this.setState(name,value,days);}}
|
|
||||||
else{if(hasSessionStorage){sessionStorage.removeItem(name);}
|
|
||||||
if(days){date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));expires='; expires='+date.toGMTString();}
|
|
||||||
document.cookie=name+'='+value+expires+'; path=/';}},getState:function(name){var nameEQ=name+'=',ca=document.cookie.split(';'),i,c,state;if(hasSessionStorage){state=sessionStorage.getItem(name);if(state){return state;}}
|
|
||||||
for(i=0;i<ca.length;i++){c=ca[i];while(c.charAt(0)===' '){c=c.substring(1,c.length);}
|
|
||||||
if(c.indexOf(nameEQ)===0){state=c.substring(nameEQ.length,c.length);break;}}
|
|
||||||
return state;},clearState:function(name){if(hasSessionStorage){sessionStorage.removeItem(name);}
|
|
||||||
else{this.setState(name,'',-1);}}};utils.addEvtListener(window,'load',winLoadHandler);callbacks={next:[],prev:[],start:[],end:[],show:[],error:[],close:[]};helpers={};HopscotchI18N={stepNums:null,nextBtn:'Next',prevBtn:'Back',doneBtn:'Done',skipBtn:'Skip',closeTooltip:'Close'};customI18N={};HopscotchBubble=function(opt){this.init(opt);};HopscotchBubble.prototype={isShowing:false,currStep:undefined,setPosition:function(step){var bubbleBoundingHeight,bubbleBoundingWidth,boundingRect,top,left,arrowOffset,targetEl=utils.getStepTarget(step),el=this.element,arrowEl=this.arrowEl;bubbleBoundingWidth=el.offsetWidth;bubbleBoundingHeight=el.offsetHeight;utils.removeClass(el,'fade-in-down fade-in-up fade-in-left fade-in-right');if(!step.placement&&step.orientation){step.placement=step.orientation;}
|
|
||||||
boundingRect=targetEl.getBoundingClientRect();if(step.placement==='top'){top=(boundingRect.top- bubbleBoundingHeight)- this.opt.arrowWidth;left=boundingRect.left;}
|
|
||||||
else if(step.placement==='bottom'){top=boundingRect.bottom+ this.opt.arrowWidth;left=boundingRect.left;}
|
|
||||||
else if(step.placement==='left'){top=boundingRect.top;left=boundingRect.left- bubbleBoundingWidth- this.opt.arrowWidth;}
|
|
||||||
else if(step.placement==='right'){top=boundingRect.top;left=boundingRect.right+ this.opt.arrowWidth;}
|
|
||||||
else{throw'Bubble placement failed because step.placement is invalid or undefined!';}
|
|
||||||
if(step.arrowOffset!=='center'){arrowOffset=utils.getPixelValue(step.arrowOffset);}
|
|
||||||
else{arrowOffset=step.arrowOffset;}
|
|
||||||
if(!arrowOffset){arrowEl.style.top='';arrowEl.style.left='';}
|
|
||||||
else if(step.placement==='top'||step.placement==='bottom'){arrowEl.style.top='';if(arrowOffset==='center'){arrowEl.style.left=Math.floor((bubbleBoundingWidth/2)- arrowEl.offsetWidth/2)+'px';}
|
|
||||||
else{arrowEl.style.left=arrowOffset+'px';}}
|
|
||||||
else if(step.placement==='left'||step.placement==='right'){arrowEl.style.left='';if(arrowOffset==='center'){arrowEl.style.top=Math.floor((bubbleBoundingHeight/2)- arrowEl.offsetHeight/2)+'px';}
|
|
||||||
else{arrowEl.style.top=arrowOffset+'px';}}
|
|
||||||
if(step.xOffset==='center'){left=(boundingRect.left+ targetEl.offsetWidth/2)-(bubbleBoundingWidth/2);}
|
|
||||||
else{left+=utils.getPixelValue(step.xOffset);}
|
|
||||||
if(step.yOffset==='center'){top=(boundingRect.top+ targetEl.offsetHeight/2)-(bubbleBoundingHeight/2);}
|
|
||||||
else{top+=utils.getPixelValue(step.yOffset);}
|
|
||||||
if(!step.fixedElement){top+=utils.getScrollTop();left+=utils.getScrollLeft();}
|
|
||||||
el.style.position=(step.fixedElement?'fixed':'absolute');el.style.top=top+'px';el.style.left=left+'px';},render:function(step,idx,callback){var el=this.element,tourSpecificRenderer,customTourData,unsafe,currTour,totalSteps,nextBtnText,isLast,opts;if(step){this.currStep=step;}
|
|
||||||
else if(this.currStep){step=this.currStep;}
|
|
||||||
if(this.opt.isTourBubble){currTour=winHopscotch.getCurrTour();if(currTour){customTourData=currTour.customData;tourSpecificRenderer=currTour.customRenderer;unsafe=currTour.unsafe;if(Array.isArray(currTour.steps)){totalSteps=currTour.steps.length;isLast=(idx===totalSteps- 1);}}}else{customTourData=step.customData;tourSpecificRenderer=step.customRenderer;unsafe=step.unsafe;}
|
|
||||||
if(isLast){nextBtnText=utils.getI18NString('doneBtn');}else if(step.showSkip){nextBtnText=utils.getI18NString('skipBtn');}else{nextBtnText=utils.getI18NString('nextBtn');}
|
|
||||||
if(!step.placement&&step.orientation){step.placement=step.orientation;}
|
|
||||||
this.placement=step.placement;opts={i18n:{prevBtn:utils.getI18NString('prevBtn'),nextBtn:nextBtnText,closeTooltip:utils.getI18NString('closeTooltip'),stepNum:this._getStepI18nNum(idx),},buttons:{showPrev:(utils.valOrDefault(step.showPrevButton,this.opt.showPrevButton)&&(idx>0)),showNext:utils.valOrDefault(step.showNextButton,this.opt.showNextButton),showCTA:utils.valOrDefault((step.showCTAButton&&step.ctaLabel),false),ctaLabel:step.ctaLabel,showClose:utils.valOrDefault(this.opt.showCloseButton,true)},step:{num:idx,isLast:utils.valOrDefault(isLast,false),title:(step.title||''),content:(step.content||''),placement:step.placement,padding:utils.valOrDefault(step.padding,this.opt.bubblePadding),width:utils.getPixelValue(step.width)||this.opt.bubbleWidth,customData:(step.customData||{})},tour:{isTour:this.opt.isTourBubble,numSteps:totalSteps,unsafe:utils.valOrDefault(unsafe,false),customData:(customTourData||{})}};if(typeof tourSpecificRenderer==='function'){el.innerHTML=tourSpecificRenderer(opts);}
|
|
||||||
else if(typeof tourSpecificRenderer==='string'){if(!hopscotch.templates||(typeof hopscotch.templates[tourSpecificRenderer]!=='function')){throw'Bubble rendering failed - template "'+ tourSpecificRenderer+'" is not a function.';}
|
|
||||||
el.innerHTML=hopscotch.templates[tourSpecificRenderer](opts);}
|
|
||||||
else if(customRenderer){el.innerHTML=customRenderer(opts);}
|
|
||||||
else{if(!hopscotch.templates||(typeof hopscotch.templates[templateToUse]!=='function')){throw'Bubble rendering failed - template "'+ templateToUse+'" is not a function.';}
|
|
||||||
el.innerHTML=hopscotch.templates[templateToUse](opts);}
|
|
||||||
children=el.children;numChildren=children.length;for(i=0;i<numChildren;i++){node=children[i];if(utils.hasClass(node,'hopscotch-arrow')){this.arrowEl=node;}}
|
|
||||||
el.style.zIndex=(typeof step.zindex==='number')?step.zindex:'auto';this._setArrow(step.placement);this.hide(false);this.setPosition(step);if(callback){callback(!step.fixedElement);}
|
|
||||||
return this;},_getStepI18nNum:function(idx){var stepNumI18N=utils.getI18NString('stepNums');if(stepNumI18N&&idx<stepNumI18N.length){idx=stepNumI18N[idx];}
|
|
||||||
else{idx=idx+ 1;}
|
|
||||||
return idx;},_setArrow:function(orientation){utils.removeClass(this.arrowEl,'down up right left');if(orientation==='top'){utils.addClass(this.arrowEl,'down');}
|
|
||||||
else if(orientation==='bottom'){utils.addClass(this.arrowEl,'up');}
|
|
||||||
else if(orientation==='left'){utils.addClass(this.arrowEl,'right');}
|
|
||||||
else if(orientation==='right'){utils.addClass(this.arrowEl,'left');}},_getArrowDirection:function(){if(this.placement==='top'){return'down';}
|
|
||||||
if(this.placement==='bottom'){return'up';}
|
|
||||||
if(this.placement==='left'){return'right';}
|
|
||||||
if(this.placement==='right'){return'left';}},show:function(){var self=this,fadeClass='fade-in-'+ this._getArrowDirection(),fadeDur=1000;utils.removeClass(this.element,'hide');utils.addClass(this.element,fadeClass);setTimeout(function(){utils.removeClass(self.element,'invisible');},50);setTimeout(function(){utils.removeClass(self.element,fadeClass);},fadeDur);this.isShowing=true;return this;},hide:function(remove){var el=this.element;remove=utils.valOrDefault(remove,true);el.style.top='';el.style.left='';if(remove){utils.addClass(el,'hide');utils.removeClass(el,'invisible');}
|
|
||||||
else{utils.removeClass(el,'hide');utils.addClass(el,'invisible');}
|
|
||||||
utils.removeClass(el,'animate fade-in-up fade-in-down fade-in-right fade-in-left');this.isShowing=false;return this;},destroy:function(){var el=this.element;if(el){el.parentNode.removeChild(el);}
|
|
||||||
utils.removeEvtListener(el,'click',this.clickCb);},_handleBubbleClick:function(evt){var action;evt=evt||window.event;var targetElement=evt.target||evt.srcElement;function findMatchRecur(el){if(el===evt.currentTarget){return null;}
|
|
||||||
if(utils.hasClass(el,'hopscotch-cta')){return'cta';}
|
|
||||||
if(utils.hasClass(el,'hopscotch-next')){return'next';}
|
|
||||||
if(utils.hasClass(el,'hopscotch-prev')){return'prev';}
|
|
||||||
if(utils.hasClass(el,'hopscotch-close')){return'close';}
|
|
||||||
return findMatchRecur(el.parentElement);}
|
|
||||||
action=findMatchRecur(targetElement);if(action==='cta'){if(!this.opt.isTourBubble){winHopscotch.getCalloutManager().removeCallout(this.currStep.id);}
|
|
||||||
if(this.currStep.onCTA){utils.invokeCallback(this.currStep.onCTA);}}
|
|
||||||
else if(action==='next'){winHopscotch.nextStep(true);}
|
|
||||||
else if(action==='prev'){winHopscotch.prevStep(true);}
|
|
||||||
else if(action==='close'){if(this.opt.isTourBubble){var currStepNum=winHopscotch.getCurrStepNum(),currTour=winHopscotch.getCurrTour(),doEndCallback=(currStepNum===currTour.steps.length-1);utils.invokeEventCallbacks('close');winHopscotch.endTour(true,doEndCallback);}else{if(this.opt.onClose){utils.invokeCallback(this.opt.onClose);}
|
|
||||||
if(this.opt.id&&!this.opt.isTourBubble){winHopscotch.getCalloutManager().removeCallout(this.opt.id);}
|
|
||||||
else{this.destroy();}}
|
|
||||||
utils.evtPreventDefault(evt);}},init:function(initOpt){var el=document.createElement('div'),self=this,resizeCooldown=false,onWinResize,appendToBody,children,numChildren,node,i,opt;this.element=el;opt={showPrevButton:defaultOpts.showPrevButton,showNextButton:defaultOpts.showNextButton,bubbleWidth:defaultOpts.bubbleWidth,bubblePadding:defaultOpts.bubblePadding,arrowWidth:defaultOpts.arrowWidth,showNumber:true,isTourBubble:true};initOpt=(typeof initOpt===undefinedStr?{}:initOpt);utils.extend(opt,initOpt);this.opt=opt;el.className='hopscotch-bubble animated';if(!opt.isTourBubble){utils.addClass(el,'hopscotch-callout no-number');}
|
|
||||||
onWinResize=function(){if(resizeCooldown||!self.isShowing){return;}
|
|
||||||
resizeCooldown=true;setTimeout(function(){self.setPosition(self.currStep);resizeCooldown=false;},100);};utils.addEvtListener(window,'resize',onWinResize);this.clickCb=function(evt){self._handleBubbleClick(evt);};utils.addEvtListener(el,'click',this.clickCb);this.hide();if(utils.documentIsReady()){document.body.appendChild(el);}
|
|
||||||
else{if(document.addEventListener){appendToBody=function(){document.removeEventListener('DOMContentLoaded',appendToBody);window.removeEventListener('load',appendToBody);document.body.appendChild(el);};document.addEventListener('DOMContentLoaded',appendToBody,false);}
|
|
||||||
else{appendToBody=function(){if(document.readyState==='complete'){document.detachEvent('onreadystatechange',appendToBody);window.detachEvent('onload',appendToBody);document.body.appendChild(el);}};document.attachEvent('onreadystatechange',appendToBody);}
|
|
||||||
utils.addEvtListener(window,'load',appendToBody);}}};HopscotchCalloutManager=function(){var callouts={};this.createCallout=function(opt){var callout;if(opt.id){if(callouts[opt.id]){throw'Callout by that id already exists. Please choose a unique id.';}
|
|
||||||
opt.showNextButton=opt.showPrevButton=false;opt.isTourBubble=false;callout=new HopscotchBubble(opt);callouts[opt.id]=callout;if(opt.target){callout.render(opt,null,function(){callout.show();});}}
|
|
||||||
else{throw'Must specify a callout id.';}
|
|
||||||
return callout;};this.getCallout=function(id){return callouts[id];};this.removeAllCallouts=function(){var calloutId,callout;for(calloutId in callouts){if(callouts.hasOwnProperty(calloutId)){this.removeCallout(calloutId);}}};this.removeCallout=function(id){var callout=callouts[id];callouts[id]=null;if(!callout){return;}
|
|
||||||
callout.destroy();};};Hopscotch=function(initOptions){var self=this,bubble,calloutMgr,opt,currTour,currStepNum,cookieTourId,cookieTourStep,_configure,getBubble=function(setOptions){if(!bubble){bubble=new HopscotchBubble(opt);}
|
|
||||||
if(setOptions){utils.extend(bubble.opt,{bubblePadding:getOption('bubblePadding'),bubbleWidth:getOption('bubbleWidth'),showNextButton:getOption('showNextButton'),showPrevButton:getOption('showPrevButton'),showCloseButton:getOption('showCloseButton'),arrowWidth:getOption('arrowWidth')});}
|
|
||||||
return bubble;},getOption=function(name){if(typeof opt==='undefined'){return defaultOpts[name];}
|
|
||||||
return utils.valOrDefault(opt[name],defaultOpts[name]);},getCurrStep=function(){var step;if(currStepNum<0||currStepNum>=currTour.steps.length){step=null;}
|
|
||||||
else{step=currTour.steps[currStepNum];}
|
|
||||||
return step;},targetClickNextFn=function(){self.nextStep();},adjustWindowScroll=function(cb){var bubble=getBubble(),bubbleEl=bubble.element,bubbleTop=utils.getPixelValue(bubbleEl.style.top),bubbleBottom=bubbleTop+ utils.getPixelValue(bubbleEl.offsetHeight),targetEl=utils.getStepTarget(getCurrStep()),targetBounds=targetEl.getBoundingClientRect(),targetElTop=targetBounds.top+ utils.getScrollTop(),targetElBottom=targetBounds.bottom+ utils.getScrollTop(),targetTop=(bubbleTop<targetElTop)?bubbleTop:targetElTop,targetBottom=(bubbleBottom>targetElBottom)?bubbleBottom:targetElBottom,windowTop=utils.getScrollTop(),windowBottom=windowTop+ utils.getWindowHeight(),scrollToVal=targetTop- getOption('scrollTopMargin'),scrollEl,yuiAnim,yuiEase,direction,scrollIncr,scrollTimeout,scrollTimeoutFn;if(targetTop>=windowTop&&(targetTop<=windowTop+ getOption('scrollTopMargin')||targetBottom<=windowBottom)){if(cb){cb();}}
|
|
||||||
else if(!getOption('smoothScroll')){window.scrollTo(0,scrollToVal);if(cb){cb();}}
|
|
||||||
else{if(typeof YAHOO!==undefinedStr&&typeof YAHOO.env!==undefinedStr&&typeof YAHOO.env.ua!==undefinedStr&&typeof YAHOO.util!==undefinedStr&&typeof YAHOO.util.Scroll!==undefinedStr){scrollEl=YAHOO.env.ua.webkit?document.body:document.documentElement;yuiEase=YAHOO.util.Easing?YAHOO.util.Easing.easeOut:undefined;yuiAnim=new YAHOO.util.Scroll(scrollEl,{scroll:{to:[0,scrollToVal]}},getOption('scrollDuration')/1000, yuiEase);
|
|
||||||
yuiAnim.onComplete.subscribe(cb);yuiAnim.animate();}
|
|
||||||
else if(hasJquery){jQuery('body, html').animate({scrollTop:scrollToVal},getOption('scrollDuration'),cb);}
|
|
||||||
else{if(scrollToVal<0){scrollToVal=0;}
|
|
||||||
direction=(windowTop>targetTop)?-1:1;scrollIncr=Math.abs(windowTop- scrollToVal)/ (getOption('scrollDuration')/10);
|
|
||||||
scrollTimeoutFn=function(){var scrollTop=utils.getScrollTop(),scrollTarget=scrollTop+(direction*scrollIncr);if((direction>0&&scrollTarget>=scrollToVal)||(direction<0&&scrollTarget<=scrollToVal)){scrollTarget=scrollToVal;if(cb){cb();}
|
|
||||||
window.scrollTo(0,scrollTarget);return;}
|
|
||||||
window.scrollTo(0,scrollTarget);if(utils.getScrollTop()===scrollTop){if(cb){cb();}
|
|
||||||
return;}
|
|
||||||
setTimeout(scrollTimeoutFn,10);};scrollTimeoutFn();}}},goToStepWithTarget=function(direction,cb){var target,step,goToStepFn;if(currStepNum+ direction>=0&&currStepNum+ direction<currTour.steps.length){currStepNum+=direction;step=getCurrStep();goToStepFn=function(){target=utils.getStepTarget(step);if(target){cb(currStepNum);}
|
|
||||||
else{utils.invokeEventCallbacks('error');goToStepWithTarget(direction,cb);}};if(step.delay){setTimeout(goToStepFn,step.delay);}
|
|
||||||
else{goToStepFn();}}
|
|
||||||
else{cb(-1);}},changeStep=function(doCallbacks,direction){var bubble=getBubble(),self=this,step,origStep,wasMultiPage,changeStepCb;bubble.hide();doCallbacks=utils.valOrDefault(doCallbacks,true);step=getCurrStep();origStep=step;if(direction>0){wasMultiPage=origStep.multipage;}
|
|
||||||
else{wasMultiPage=(currStepNum>0&&currTour.steps[currStepNum-1].multipage);}
|
|
||||||
changeStepCb=function(stepNum){var doShowFollowingStep;if(stepNum===-1){return this.endTour(true);}
|
|
||||||
if(doCallbacks){if(direction>0){doShowFollowingStep=utils.invokeEventCallbacks('next',origStep.onNext);}
|
|
||||||
else{doShowFollowingStep=utils.invokeEventCallbacks('prev',origStep.onPrev);}}
|
|
||||||
if(stepNum!==currStepNum){return;}
|
|
||||||
if(wasMultiPage){utils.setState(getOption('cookieName'),currTour.id+':'+ currStepNum,1);return;}
|
|
||||||
doShowFollowingStep=utils.valOrDefault(doShowFollowingStep,true);if(doShowFollowingStep){this.showStep(stepNum);}
|
|
||||||
else{this.endTour(false);}};if(!wasMultiPage&&getOption('skipIfNoElement')){goToStepWithTarget(direction,function(stepNum){changeStepCb.call(self,stepNum);});}
|
|
||||||
else if(currStepNum+ direction>=0&&currStepNum+ direction<currTour.steps.length){currStepNum+=direction;step=getCurrStep();if(!utils.getStepTarget(step)&&!wasMultiPage){utils.invokeEventCallbacks('error');return this.endTour(true,false);}
|
|
||||||
changeStepCb.call(this,currStepNum);}
|
|
||||||
return this;},loadTour=function(tour){var tmpOpt={},prop,tourState,tourPair;for(prop in tour){if(tour.hasOwnProperty(prop)&&prop!=='id'&&prop!=='steps'){tmpOpt[prop]=tour[prop];}}
|
|
||||||
_configure.call(this,tmpOpt,true);tourState=utils.getState(getOption('cookieName'));if(tourState){tourPair=tourState.split(':');cookieTourId=tourPair[0];cookieTourStep=tourPair[1];cookieTourStep=parseInt(cookieTourStep,10);}
|
|
||||||
return this;},findStartingStep=function(startStepNum,cb){var step,target,stepNum;currStepNum=startStepNum||0;step=getCurrStep();target=utils.getStepTarget(step);if(target){cb(currStepNum);return;}
|
|
||||||
if(!target){utils.invokeEventCallbacks('error');if(getOption('skipIfNoElement')){goToStepWithTarget(1,cb);return;}
|
|
||||||
else{currStepNum=-1;cb(currStepNum);}}},showStepHelper=function(stepNum){var step=currTour.steps[stepNum],tourSteps=currTour.steps,numTourSteps=tourSteps.length,cookieVal=currTour.id+':'+ stepNum,bubble=getBubble(),targetEl=utils.getStepTarget(step),isLast,showBubble;showBubble=function(){bubble.show();utils.invokeEventCallbacks('show',step.onShow);};currStepNum=stepNum;bubble.hide(false);isLast=(stepNum===numTourSteps- 1);bubble.render(step,stepNum,function(adjustScroll){if(adjustScroll){adjustWindowScroll(showBubble);}
|
|
||||||
else{showBubble();}
|
|
||||||
if(step.nextOnTargetClick){utils.addEvtListener(targetEl,'click',targetClickNextFn);}});utils.setState(getOption('cookieName'),cookieVal,1);},init=function(initOptions){if(initOptions){this.configure(initOptions);}};this.getCalloutManager=function(){if(typeof calloutMgr===undefinedStr){calloutMgr=new HopscotchCalloutManager();}
|
|
||||||
return calloutMgr;};this.startTour=function(tour,stepNum){var bubble,currStepNum,self=this;if(!currTour){currTour=tour;loadTour.call(this,tour);}
|
|
||||||
if(typeof stepNum!==undefinedStr){if(stepNum>=currTour.steps.length){throw'Specified step number out of bounds.';}
|
|
||||||
currStepNum=stepNum;}
|
|
||||||
if(!utils.documentIsReady()){waitingToStart=true;return this;}
|
|
||||||
if(typeof currStepNum==="undefined"&&currTour.id===cookieTourId&&typeof cookieTourStep!==undefinedStr){currStepNum=cookieTourStep;}
|
|
||||||
else if(!currStepNum){currStepNum=0;}
|
|
||||||
findStartingStep(currStepNum,function(stepNum){var target=(stepNum!==-1)&&utils.getStepTarget(currTour.steps[stepNum]);if(!target){self.endTour(false,false);return;}
|
|
||||||
utils.invokeEventCallbacks('start');bubble=getBubble();bubble.hide(false);self.isActive=true;if(!utils.getStepTarget(getCurrStep())){utils.invokeEventCallbacks('error');if(getOption('skipIfNoElement')){self.nextStep(false);}}
|
|
||||||
else{self.showStep(stepNum);}});return this;};this.showStep=function(stepNum){var step=currTour.steps[stepNum];if(step.delay){setTimeout(function(){showStepHelper(stepNum);},step.delay);}
|
|
||||||
else{showStepHelper(stepNum);}
|
|
||||||
return this;};this.prevStep=function(doCallbacks){changeStep.call(this,doCallbacks,-1);return this;};this.nextStep=function(doCallbacks){var step=getCurrStep(),targetEl=utils.getStepTarget(step);if(step.nextOnTargetClick){utils.removeEvtListener(targetEl,'click',targetClickNextFn);}
|
|
||||||
changeStep.call(this,doCallbacks,1);return this;};this.endTour=function(clearState,doCallbacks){var bubble=getBubble();clearState=utils.valOrDefault(clearState,true);doCallbacks=utils.valOrDefault(doCallbacks,true);currStepNum=0;cookieTourStep=undefined;bubble.hide();if(clearState){utils.clearState(getOption('cookieName'));}
|
|
||||||
if(this.isActive){this.isActive=false;if(currTour&&doCallbacks){utils.invokeEventCallbacks('end');}}
|
|
||||||
this.removeCallbacks(null,true);this.resetDefaultOptions();currTour=null;return this;};this.getCurrTour=function(){return currTour;};this.getCurrTarget=function(){return utils.getStepTarget(getCurrStep());};this.getCurrStepNum=function(){return currStepNum;};this.refreshBubblePosition=function(){bubble.setPosition(getCurrStep());return this;};this.listen=function(evtType,cb,isTourCb){if(evtType){callbacks[evtType].push({cb:cb,fromTour:isTourCb});}
|
|
||||||
return this;};this.unlisten=function(evtType,cb){var evtCallbacks=callbacks[evtType],i,len;for(i=0,len=evtCallbacks.length;i<len;++i){if(evtCallbacks[i]===cb){evtCallbacks.splice(i,1);}}
|
|
||||||
return this;};this.removeCallbacks=function(evtName,tourOnly){var cbArr,i,len,evt;for(evt in callbacks){if(!evtName||evtName===evt){if(tourOnly){cbArr=callbacks[evt];for(i=0,len=cbArr.length;i<len;++i){if(cbArr[i].fromTour){cbArr.splice(i--,1);--len;}}}
|
|
||||||
else{callbacks[evt]=[];}}}
|
|
||||||
return this;};this.registerHelper=function(id,fn){if(typeof id==='string'&&typeof fn==='function'){helpers[id]=fn;}};this.unregisterHelper=function(id){helpers[id]=null;};this.invokeHelper=function(id){var args=[],i,len;for(i=1,len=arguments.length;i<len;++i){args.push(arguments[i]);}
|
|
||||||
if(helpers[id]){helpers[id].call(null,args);}};this.setCookieName=function(name){opt.cookieName=name;return this;};this.resetDefaultOptions=function(){opt={};return this;};this.resetDefaultI18N=function(){customI18N={};return this;};this.getState=function(){return utils.getState(getOption('cookieName'));};_configure=function(options,isTourOptions){var bubble,events=['next','prev','start','end','show','error','close'],eventPropName,callbackProp,i,len;if(!opt){this.resetDefaultOptions();}
|
|
||||||
utils.extend(opt,options);if(options){utils.extend(customI18N,options.i18n);}
|
|
||||||
for(i=0,len=events.length;i<len;++i){eventPropName='on'+ events[i].charAt(0).toUpperCase()+ events[i].substring(1);if(options[eventPropName]){this.listen(events[i],options[eventPropName],isTourOptions);}}
|
|
||||||
bubble=getBubble(true);return this;};this.configure=function(options){return _configure.call(this,options,false);};this.setRenderer=function(render){var typeOfRender=typeof render;if(typeOfRender==='string'){templateToUse=render;customRenderer=undefined;}
|
|
||||||
else if(typeOfRender==='function'){customRenderer=render;}
|
|
||||||
return this;};this.setEscaper=function(esc){if(typeof esc==='function'){customEscape=esc;}
|
|
||||||
return this;};init.call(this,initOptions);};winHopscotch=new Hopscotch();context[namespace]=winHopscotch;(function(){var _={};_.escape=function(str){if(customEscape){return customEscape(str);}
|
|
||||||
if(str==null)return'';return(''+ str).replace(new RegExp('[&<>"\']','g'),function(match){if(match=='&'){return'&'}
|
|
||||||
if(match=='<'){return'<'}
|
|
||||||
if(match=='>'){return'>'}
|
|
||||||
if(match=='"'){return'"'}
|
|
||||||
if(match=="'"){return'''}});}
|
|
||||||
this["hopscotch"]=this["hopscotch"]||{};this["hopscotch"]["templates"]=this["hopscotch"]["templates"]||{};this["hopscotch"]["templates"]["bubble_default"]=function(obj){obj||(obj={});var __t,__p='',__e=_.escape,__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}
|
|
||||||
with(obj){function optEscape(str,unsafe){if(unsafe){return _.escape(str);}
|
|
||||||
return str;};__p+='\n<div class="hopscotch-bubble-container" style="width: '+
|
|
||||||
((__t=(step.width))==null?'':__t)+'px; padding: '+
|
|
||||||
((__t=(step.padding))==null?'':__t)+'px;">\n ';if(tour.isTour){;__p+='<span class="hopscotch-bubble-number">'+
|
|
||||||
((__t=(i18n.stepNum))==null?'':__t)+'</span>';};__p+='\n <div class="hopscotch-bubble-content">\n ';if(step.title!==''){;__p+='<h3 class="hopscotch-title">'+
|
|
||||||
((__t=(optEscape(step.title,tour.unsafe)))==null?'':__t)+'</h3>';};__p+='\n ';if(step.content!==''){;__p+='<div class="hopscotch-content">'+
|
|
||||||
((__t=(optEscape(step.content,tour.unsafe)))==null?'':__t)+'</div>';};__p+='\n </div>\n <div class="hopscotch-actions">\n ';if(buttons.showPrev){;__p+='<button class="btn btn-default hopscotch-prev">'+
|
|
||||||
((__t=(i18n.prevBtn))==null?'':__t)+'</button>';};__p+='\n ';if(buttons.showCTA){;__p+='<button class="btn btn-primary hopscotch-cta">'+
|
|
||||||
((__t=(buttons.ctaLabel))==null?'':__t)+'</button>';};__p+='\n ';if(buttons.showNext){;__p+='<button class="btn btn-primary hopscotch-next">'+
|
|
||||||
((__t=(i18n.nextBtn))==null?'':__t)+'</button>';};__p+='\n </div>\n ';if(buttons.showClose){;__p+='<a title="'+
|
|
||||||
((__t=(i18n.closeTooltip))==null?'':__t)+'" href="#" class="hopscotch-bubble-close hopscotch-close"><i class="fa fa-times"></i></a>';};__p+='\n</div>\n<div class="hopscotch-bubble-arrow-container hopscotch-arrow">\n <div class="hopscotch-bubble-arrow-border"></div>\n <div class="hopscotch-bubble-arrow"></div>\n</div>';}
|
|
||||||
return __p};}());}(window,'hopscotch'));
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
jQuery(function($) {'use strict',
|
|
||||||
|
|
||||||
//#main-slider
|
|
||||||
$(function(){
|
|
||||||
$('#main-slider.carousel').carousel({
|
|
||||||
interval: 8000
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// accordian
|
|
||||||
$('.accordion-toggle').on('click', function(){
|
|
||||||
$(this).closest('.panel-group').children().each(function(){
|
|
||||||
$(this).find('>.panel-heading').removeClass('active');
|
|
||||||
});
|
|
||||||
|
|
||||||
$(this).closest('.panel-heading').toggleClass('active');
|
|
||||||
});
|
|
||||||
|
|
||||||
//Initiat WOW JS
|
|
||||||
new WOW().init();
|
|
||||||
|
|
||||||
// portfolio filter
|
|
||||||
$(window).load(function(){'use strict';
|
|
||||||
var $portfolio_selectors = $('.portfolio-filter >li>a');
|
|
||||||
var $portfolio = $('.portfolio-items');
|
|
||||||
$portfolio.isotope({
|
|
||||||
itemSelector : '.portfolio-item',
|
|
||||||
layoutMode : 'fitRows'
|
|
||||||
});
|
|
||||||
|
|
||||||
$portfolio_selectors.on('click', function(){
|
|
||||||
$portfolio_selectors.removeClass('active');
|
|
||||||
$(this).addClass('active');
|
|
||||||
var selector = $(this).attr('data-filter');
|
|
||||||
$portfolio.isotope({ filter: selector });
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Contact form
|
|
||||||
var form = $('#main-contact-form');
|
|
||||||
form.submit(function(event){
|
|
||||||
event.preventDefault();
|
|
||||||
var form_status = $('<div class="form_status"></div>');
|
|
||||||
$.ajax({
|
|
||||||
url: $(this).attr('action'),
|
|
||||||
|
|
||||||
beforeSend: function(){
|
|
||||||
form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn() );
|
|
||||||
}
|
|
||||||
}).done(function(data){
|
|
||||||
form_status.html('<p class="text-success">' + data.message + '</p>').delay(3000).fadeOut();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
//goto top
|
|
||||||
$('.gototop').click(function(event) {
|
|
||||||
event.preventDefault();
|
|
||||||
$('html, body').animate({
|
|
||||||
scrollTop: $("body").offset().top
|
|
||||||
}, 500);
|
|
||||||
});
|
|
||||||
|
|
||||||
//Pretty Photo
|
|
||||||
$("a[rel^='prettyPhoto']").prettyPhoto({
|
|
||||||
social_tools: false
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,290 +0,0 @@
|
|||||||
/* ========================================================================
|
|
||||||
* ZUI: string.js
|
|
||||||
* http://zui.sexy
|
|
||||||
* ========================================================================
|
|
||||||
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
|
|
||||||
* ======================================================================== */
|
|
||||||
(function()
|
|
||||||
{
|
|
||||||
'use strict';
|
|
||||||
$.extend({
|
|
||||||
callEvent: function(func, event, proxy)
|
|
||||||
{
|
|
||||||
if ($.isFunction(func))
|
|
||||||
{
|
|
||||||
if (typeof proxy != 'undefined')
|
|
||||||
{
|
|
||||||
func = $.proxy(func, proxy);
|
|
||||||
}
|
|
||||||
event.result = func(event);
|
|
||||||
return !(event.result !== undefined && (!event.result));
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
},
|
|
||||||
});
|
|
||||||
String.prototype.format = function(args)
|
|
||||||
{
|
|
||||||
var result = this;
|
|
||||||
if (arguments.length > 0)
|
|
||||||
{
|
|
||||||
var reg;
|
|
||||||
if (arguments.length == 1 && typeof(args) == "object")
|
|
||||||
{
|
|
||||||
for (var key in args)
|
|
||||||
{
|
|
||||||
if (args[key] !== undefined)
|
|
||||||
{
|
|
||||||
reg = new RegExp("({" + key + "})", "g");
|
|
||||||
result = result.replace(reg, args[key]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (var i = 0; i < arguments.length; i++)
|
|
||||||
{
|
|
||||||
if (arguments[i] !== undefined)
|
|
||||||
{
|
|
||||||
reg = new RegExp("({[" + i + "]})", "g");
|
|
||||||
result = result.replace(reg, arguments[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
$.fn.callEvent = function(name, event, model)
|
|
||||||
{
|
|
||||||
var $this = $(this);
|
|
||||||
var dotIndex = name.indexOf('.sent.');
|
|
||||||
var shortName = name;
|
|
||||||
if (dotIndex < 0 && model && model.name)
|
|
||||||
{
|
|
||||||
name += '.' + model.name;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
shortName = name.substring(0, dotIndex);
|
|
||||||
}
|
|
||||||
var e = $.Event(name, event);
|
|
||||||
|
|
||||||
// var result = $this.trigger(e);
|
|
||||||
|
|
||||||
if ((typeof model === 'undefined') && dotIndex > 0)
|
|
||||||
{
|
|
||||||
model = $this.data(name.substring(dotIndex + 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (model && model.options)
|
|
||||||
{
|
|
||||||
var func = model.options[shortName];
|
|
||||||
if ($.isFunction(func))
|
|
||||||
{
|
|
||||||
$.callEvent(model.options[shortName], e, model);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return e;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Judge the string is a integer number
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
String.prototype.isNum = function(s)
|
|
||||||
{
|
|
||||||
if (s !== null)
|
|
||||||
{
|
|
||||||
var r, re;
|
|
||||||
re = /\d*/i;
|
|
||||||
r = s.match(re);
|
|
||||||
return (r == s) ? true : false;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
})();
|
|
||||||
|
|
||||||
/* ========================================================================
|
|
||||||
* ZUI: messager.js
|
|
||||||
* http://zui.sexy
|
|
||||||
* ========================================================================
|
|
||||||
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
|
|
||||||
* ======================================================================== */
|
|
||||||
|
|
||||||
|
|
||||||
(function($, window)
|
|
||||||
{
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
var id = 0;
|
|
||||||
var template = '<div class="messager messager-{type} {placement}" id="messager{id}" style="display:none"><div class="messager-content"></div><div class="messager-actions"><button type="button" class="close action">×</button></div></div>';
|
|
||||||
var defaultOptions =
|
|
||||||
{
|
|
||||||
type: 'default',
|
|
||||||
placement: 'top',
|
|
||||||
time: 4000,
|
|
||||||
parent: 'body',
|
|
||||||
// clear: false,
|
|
||||||
icon: null,
|
|
||||||
close: true,
|
|
||||||
fade: true,
|
|
||||||
scale: true
|
|
||||||
};
|
|
||||||
var lastMessager;
|
|
||||||
|
|
||||||
var Messager = function(message, options)
|
|
||||||
{
|
|
||||||
var that = this;
|
|
||||||
that.id = id++;
|
|
||||||
options = that.options = $.extend({}, defaultOptions, options);
|
|
||||||
that.message = (options.icon ? '<i class="icon-' + options.icon + ' icon"></i> ' : '') + message;
|
|
||||||
|
|
||||||
that.$ = $(template.format(options)).toggleClass('fade', options.fade).toggleClass('scale', options.scale).attr('id', 'messager-' + that.id);
|
|
||||||
if(!options.close)
|
|
||||||
{
|
|
||||||
that.$.find('.close').remove();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
that.$.on('click', '.close', function()
|
|
||||||
{
|
|
||||||
that.hide();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
that.$.find('.messager-content').html(that.message);
|
|
||||||
|
|
||||||
|
|
||||||
that.$.data('sent.messager', that);
|
|
||||||
};
|
|
||||||
|
|
||||||
Messager.prototype.show = function(message)
|
|
||||||
{
|
|
||||||
var that = this, options = this.options;
|
|
||||||
|
|
||||||
if(lastMessager)
|
|
||||||
{
|
|
||||||
if(lastMessager.id == that.id)
|
|
||||||
{
|
|
||||||
that.$.removeClass('in');
|
|
||||||
}
|
|
||||||
else if(lastMessager.isShow)
|
|
||||||
{
|
|
||||||
lastMessager.hide();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(that.hiding)
|
|
||||||
{
|
|
||||||
clearTimeout(that.hiding);
|
|
||||||
that.hiding = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(message)
|
|
||||||
{
|
|
||||||
that.message = (options.icon ? '<i class="am-icon-' + options.icon + ' am-icon"></i> ' : '') + message;
|
|
||||||
that.$.find('.messager-content').html(that.message);
|
|
||||||
}
|
|
||||||
|
|
||||||
that.$.appendTo(options.parent).show();
|
|
||||||
|
|
||||||
if (options.placement === 'top' || options.placement === 'bottom' || options.placement === 'center')
|
|
||||||
{
|
|
||||||
that.$.css('left', ($(window).width() - that.$.width() - 50) / 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (options.placement === 'left' || options.placement === 'right' || options.placement === 'center')
|
|
||||||
{
|
|
||||||
that.$.css('top', ($(window).height() - that.$.height() - 50) / 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
that.$.addClass('in');
|
|
||||||
|
|
||||||
if(options.time)
|
|
||||||
{
|
|
||||||
that.hiding = setTimeout(function(){that.hide();}, options.time);
|
|
||||||
}
|
|
||||||
|
|
||||||
that.isShow = true;
|
|
||||||
lastMessager = that;
|
|
||||||
};
|
|
||||||
|
|
||||||
Messager.prototype.hide = function()
|
|
||||||
{
|
|
||||||
var that = this;
|
|
||||||
if(that.$.hasClass('in'))
|
|
||||||
{
|
|
||||||
that.$.removeClass('in');
|
|
||||||
setTimeout(function(){that.$.remove();}, 200);
|
|
||||||
}
|
|
||||||
|
|
||||||
that.isShow = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
$.Messager = Messager;
|
|
||||||
var noConflictMessager = window.Messager;
|
|
||||||
window.Messager = $.Messager;
|
|
||||||
window.Messager.noConflict = function()
|
|
||||||
{
|
|
||||||
window.Messager = noConflictMessager;
|
|
||||||
};
|
|
||||||
|
|
||||||
$.showMessage = function(message, options)
|
|
||||||
{
|
|
||||||
if(typeof options === 'string')
|
|
||||||
{
|
|
||||||
options = {type: options};
|
|
||||||
}
|
|
||||||
var msg = new Messager(message, options);
|
|
||||||
msg.show();
|
|
||||||
return msg;
|
|
||||||
};
|
|
||||||
|
|
||||||
var getOptions = function(options)
|
|
||||||
{
|
|
||||||
return (typeof options === 'string') ? {placement: options} : options;
|
|
||||||
};
|
|
||||||
|
|
||||||
$.messager =
|
|
||||||
{
|
|
||||||
show: $.showMessage,
|
|
||||||
primary: function(message, options)
|
|
||||||
{
|
|
||||||
return $.showMessage(message, $.extend({type: 'primary'}, getOptions(options)));
|
|
||||||
},
|
|
||||||
success: function(message, options)
|
|
||||||
{
|
|
||||||
return $.showMessage(message, $.extend({type: 'success', icon: 'ok-sign'}, getOptions(options)));
|
|
||||||
},
|
|
||||||
info: function(message, options)
|
|
||||||
{
|
|
||||||
return $.showMessage(message, $.extend({type: 'info', icon: 'info-sign'}, getOptions(options)));
|
|
||||||
},
|
|
||||||
warning: function(message, options)
|
|
||||||
{
|
|
||||||
return $.showMessage(message, $.extend({type: 'warning', icon: 'warning-sign'}, getOptions(options)));
|
|
||||||
},
|
|
||||||
danger: function(message, options)
|
|
||||||
{
|
|
||||||
return $.showMessage(message, $.extend({type: 'danger', icon: 'exclamation-sign'}, getOptions(options)));
|
|
||||||
},
|
|
||||||
important: function(message, options)
|
|
||||||
{
|
|
||||||
return $.showMessage(message, $.extend({type: 'important'}, getOptions(options)));
|
|
||||||
},
|
|
||||||
special: function(message, options)
|
|
||||||
{
|
|
||||||
return $.showMessage(message, $.extend({type: 'special'}, getOptions(options)));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var noConflict = window.messager;
|
|
||||||
window.messager = $.messager;
|
|
||||||
window.messager.noConflict = function()
|
|
||||||
{
|
|
||||||
window.messager = noConflict;
|
|
||||||
};
|
|
||||||
}(jQuery, window));
|
|
||||||
@@ -93,6 +93,18 @@ define(['jquery', 'bootstrap', 'validator'], function ($, undefined, Validator)
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
board: function (form){
|
||||||
|
if ($('.boards', form).size() > 0) {
|
||||||
|
require(['board'], function(){
|
||||||
|
$('.boards', form).boards({
|
||||||
|
drop: function(e){
|
||||||
|
var group = e.target.closest('.board').find('.board-list').attr('data-group');
|
||||||
|
e.element.find('input').attr('name','addons[' + group + '][]')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
selectpicker: function (form) {
|
selectpicker: function (form) {
|
||||||
//绑定select元素事件
|
//绑定select元素事件
|
||||||
if ($(".selectpicker", form).size() > 0) {
|
if ($(".selectpicker", form).size() > 0) {
|
||||||
@@ -235,7 +247,7 @@ define(['jquery', 'bootstrap', 'validator'], function ($, undefined, Validator)
|
|||||||
type: 2,
|
type: 2,
|
||||||
shade: false,
|
shade: false,
|
||||||
area: ['60%', '440px'],
|
area: ['60%', '440px'],
|
||||||
title: $(this).text(), //不显示标题
|
title: type == 'image' ? '图片' : '文件', //不显示标题
|
||||||
content: ['/'+Config.module+'/upload/index?name='+name+'&type='+type+'&limit='+limit, 'no'],
|
content: ['/'+Config.module+'/upload/index?name='+name+'&type='+type+'&limit='+limit, 'no'],
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
@@ -493,6 +505,7 @@ define(['jquery', 'bootstrap', 'validator'], function ($, undefined, Validator)
|
|||||||
events.bindevent(form);
|
events.bindevent(form);
|
||||||
events.validator(form, success, error, submit);
|
events.validator(form, success, error, submit);
|
||||||
events.editor(form);
|
events.editor(form);
|
||||||
|
events.board(form);
|
||||||
events.selectpicker(form);
|
events.selectpicker(form);
|
||||||
events.daterangepicker(form);
|
events.daterangepicker(form);
|
||||||
events.selectpage(form);
|
events.selectpage(form);
|
||||||
|
|||||||
64
view/addon/edit.html
Normal file
64
view/addon/edit.html
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
{extend name="../../../view/addon/base"/}
|
||||||
|
{block name="body"}
|
||||||
|
<div class="box box-primary">
|
||||||
|
<div class="box-header with-border">
|
||||||
|
<h3 class="box-title">{$meta_title}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="box-body">
|
||||||
|
<form method="post" class="form form-horizontal" role="form">
|
||||||
|
{if !isset($info)}
|
||||||
|
{assign name="info" value="" /}
|
||||||
|
{/if}
|
||||||
|
{if !empty($fieldGroup)}
|
||||||
|
<div class="tabs-wrapper">
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
{volist name="fieldGroup" id="vGroup"}
|
||||||
|
<li {if $i eq 1}class="active"{/if}><a href="#tab{$key}" data-toggle="tab">{$key}</a></li>
|
||||||
|
{/volist}
|
||||||
|
</ul>
|
||||||
|
<div class="tab-content">
|
||||||
|
{volist name="fieldGroup" id="vGroup"}
|
||||||
|
<div class="tab-pane fade {if condition="$i eq 1"}in active{/if}" id="tab{$key}">
|
||||||
|
{volist name="vGroup" id="field"}
|
||||||
|
{if $field['type'] eq 'hidden'}
|
||||||
|
<input type="hidden" name="{$field['name']}" value="{$info[$field['name']]|default=''}"/>
|
||||||
|
{else/}
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-lg-2 control-label">{$field['title']|htmlspecialchars}</label>
|
||||||
|
<div class="col-lg-10 col-sm-10">
|
||||||
|
{:form($field, $info)}
|
||||||
|
<div class="help-block">{$field['help']|default=''}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
{/volist}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{elseif isset($keyList) /}
|
||||||
|
{volist name="keyList" id="field"}
|
||||||
|
{if $field['type'] eq 'hidden'}
|
||||||
|
<input type="hidden" name="{$field['name']}" value="{$info[$field['name']]|default=''}"/>
|
||||||
|
{else/}
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-lg-2 control-label">{$field['title']|htmlspecialchars}</label>
|
||||||
|
<div class="col-lg-10 col-sm-10">
|
||||||
|
{:form($field, $info)}
|
||||||
|
<div class="help-block">{$field['help']|default=''}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{/volist}
|
||||||
|
{/if}
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-lg-offset-2 col-lg-10">
|
||||||
|
{if isset($info['id'])}<input type="hidden" name="id" value="{$info['id']|default=''}">{/if}
|
||||||
|
<button class="btn btn-success submit-btn ajax-post" type="submit" target-form="form-horizontal">确 定</button>
|
||||||
|
<button class="btn btn-danger btn-return" onclick="javascript:history.back(-1);return false;">返 回</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-body">
|
<div class="box-body">
|
||||||
<form id="form" method="post" class="form form-horizontal">
|
<form id="form" method="post" class="form form-horizontal" role=form>
|
||||||
<div class="tabs-wrapper">
|
<div class="tabs-wrapper">
|
||||||
<ul class="nav nav-tabs">
|
<ul class="nav nav-tabs">
|
||||||
<li class="active"><a href="#tab1" data-toggle="tab">基 础</a></li>
|
<li class="active"><a href="#tab1" data-toggle="tab">基 础</a></li>
|
||||||
|
|||||||
@@ -1,16 +1,4 @@
|
|||||||
{extend name="admin/public/base"/}
|
{extend name="admin/public/base"/}
|
||||||
{block name="style"}
|
|
||||||
<link rel="stylesheet" href="__static__/plugins/tagsinput/bootstrap-tagsinput.css">
|
|
||||||
<script src="__static__/plugins/tagsinput/bootstrap-tagsinput.js"></script>
|
|
||||||
|
|
||||||
<link rel="stylesheet" type="text/css" href="__static__/plugins/webuploader/webuploader.css">
|
|
||||||
<!-- datepicker statr -->
|
|
||||||
<link href="__static__/plugins/datepicker/css/foundation-datepicker.min.css" rel="stylesheet" type="text/css">
|
|
||||||
<script src="__static__/plugins/datepicker/js/foundation-datepicker.js"></script>
|
|
||||||
<script src="__static__/plugins/datepicker/js/foundation-datepicker.zh-CN.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="__static__/plugins/board/board.min.css">
|
|
||||||
<!-- datepicker end -->
|
|
||||||
{/block}
|
|
||||||
{block name="body"}
|
{block name="body"}
|
||||||
<div class="box box-primary">
|
<div class="box box-primary">
|
||||||
<div class="box-header with-border">
|
<div class="box-header with-border">
|
||||||
@@ -73,10 +61,4 @@
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/block}
|
|
||||||
{block name="script"}
|
|
||||||
<script type="text/javascript" src="__static__/plugins/webuploader/webuploader.min.js"></script>
|
|
||||||
<script type="text/javascript" src="__static__/plugins/webuploader/webuploader.custom.js"></script>
|
|
||||||
<script type="text/javascript" src="__static__/common/js/droppable.js"></script>
|
|
||||||
<script type="text/javascript" src="__static__/plugins/board/board.min.js"></script>
|
|
||||||
{/block}
|
{/block}
|
||||||
@@ -5,18 +5,12 @@
|
|||||||
<!-- Tell the browser to be responsive to screen width -->
|
<!-- Tell the browser to be responsive to screen width -->
|
||||||
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
|
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
|
||||||
<title>SentCMS网站管理系统后台</title>
|
<title>SentCMS网站管理系统后台</title>
|
||||||
<link rel="stylesheet" type="text/css" href="__static__/common/css/font-awesome.min.css?time={:time()}">
|
<link rel="stylesheet" type="text/css" href="__css__/style.css?time={:time()}">
|
||||||
<link rel="stylesheet" type="text/css" href="__plugins__/bootstrap/css/bootstrap.min.css?time={:time()}">
|
|
||||||
<link rel="stylesheet" href="__plugins__/adminlte/css/adminlte.min.css?time={:time()}">
|
|
||||||
<link rel="stylesheet" href="__plugins__/adminlte/css/skins/_all-skins.min.css?time={:time()}">
|
|
||||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||||
<!--[if lt IE 9]>
|
<!--[if lt IE 9]>
|
||||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
|
<script src="__static__/common/js/html5shiv.js"></script>
|
||||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
<script src="__static__/common/js/respond.min.js"></script>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
<style>
|
|
||||||
.tabs-wrapper .nav-tabs{margin-bottom: 15px;}
|
|
||||||
</style>
|
|
||||||
</head>
|
</head>
|
||||||
<body class="hold-transition skin-blue sidebar-mini">
|
<body class="hold-transition skin-blue sidebar-mini">
|
||||||
Reference in New Issue
Block a user