Pagina 1 van 1

javascript collapse

Geplaatst: 21 jan 2010, 17:29
door Laurette
  • Adres van je forum: http://iven.nl/cafe
    Event. modificaties op je forum: geen
    Wanneer ontstond het probleem? geen probleem
    phpBB versie: 3.0.6


    Heb je onlangs iets veranderd aan je forum?
    Wat is het probleem?

Geen probleem maar een vraag.

Zou graag net als dit forum het onderste gedeelte (wie is er online ed) uitklapbaar maken. Nu ben ik een eindje op weg maar kom niet verder. Ik heb de volgende code gebruikt in index_body en viewforum_body.

Code: Selecteer alles

<h3>{L_INFORMATION} <a href="javascript:collapse1.slidedown()"><img src="./styles/coffee_time/theme/images/down.png" alt="Down" /></a> <a href="javascript:collapse1.slideup()"><img src="./styles/coffee_time/theme/images/up.png" alt="Up" /></a></h3>
<div id="dog" style="width: auto; height: auto;">
<!-- IF S_DISPLAY_ONLINE_LIST -->
	<!-- IF U_VIEWONLINE --><h3><a href="{U_VIEWONLINE}">{L_WHO_IS_ONLINE}</a></h3><!-- ELSE --><h3>{L_WHO_IS_ONLINE}</h3><!-- ENDIF -->
	<p>{TOTAL_USERS_ONLINE} ({L_ONLINE_EXPLAIN})<br />{RECORD_USERS}<br /> <br />{LOGGED_IN_USER_LIST}
	<!-- IF LEGEND --><br /><em>{L_LEGEND}: {LEGEND}</em><!-- ENDIF -->
	<!-- IF U_TEAM --><br /><em>Staff : <a href="{U_TEAM}">{L_THE_TEAM}</a></em><!-- ENDIF --></p>
<!-- ENDIF -->

<!-- IF S_DISPLAY_BIRTHDAY_LIST and BIRTHDAY_LIST -->
	<h3>{L_BIRTHDAYS}</h3>
	<p><!-- IF BIRTHDAY_LIST -->{L_CONGRATULATIONS}: <strong>{BIRTHDAY_LIST}</strong><!-- ELSE -->{L_NO_BIRTHDAYS}<!-- ENDIF --></p>
<!-- ENDIF -->

<!-- IF NEWEST_USER -->
	<h3>{L_STATISTICS}</h3>
	<p>{TOTAL_POSTS} &bull; {TOTAL_TOPICS} &bull; {TOTAL_USERS} &bull; {NEWEST_USER}</p>
<!-- ENDIF -->
</div>
<script type="text/javascript">
//Syntax: var uniquevar=new animatedcollapse("DIV_id", animatetime_milisec, enablepersist(true/fase), [initialstate] )
var collapse1=new animatedcollapse("dog", 500, false)
</script>
Het woord informatie met de daarbij horende pijlen komen netjes te voorschijn maar de tekst blijft eronder staan en het gewenste effect is dus nog niet bereikt?
Hoe verder?

Re: javascript collapse

Geplaatst: 21 jan 2010, 17:33
door Jeroen
Verplaats naar 3.0 Stijlen
- Pietje

Re: javascript collapse

Geplaatst: 22 jan 2010, 12:05
door brandsrus
Welke stijl gebruik je? Dan kan ik even kijken welke code je eventueel kunt gebruiken.

Re: javascript collapse

Geplaatst: 22 jan 2010, 14:55
door Laurette
Dank voor je hulp,

De stijl waarvan ik uit werk is de stijl Attriuum. Ik wou even een linkje geven naar de stijl toe maar ik kan hem nergens meer vinden :?: .

Re: javascript collapse

Geplaatst: 22 jan 2010, 16:01
door Kevin

Re: javascript collapse

Geplaatst: 23 jan 2010, 00:39
door brandsrus
De code in je index_body.html en forum_body.html is goed.

Je moet een .js bestand aanmaken met de volgende inhoud (kopieren naar kladblok en opslaan als animatedcollapse.js en plaatsen in je template map (Attriuum/template/)

Code: Selecteer alles

//Animated Collapsible DIV- Author: Dynamic Drive (http://www.dynamicdrive.com)
//Last updated Aug 1st, 07'. Fixed bug with "block" parameter not working when persist is enabled
//Updated June 27th, 07'. Added ability for a DIV to be initially expanded.

var uniquepageid=window.location.href.replace("http://"+window.location.hostname, "").replace(/^\//, "") //get current page path and name, used to uniquely identify this page for persistence feature

function animatedcollapse(divId, animatetime, persistexpand, initstate){
	this.divId=divId
	this.divObj=document.getElementById(divId)
	this.divObj.style.overflow="hidden"
	this.timelength=animatetime
	this.initstate=(typeof initstate!="undefined" && initstate=="block")? "block" : "contract"
	this.isExpanded=animatedcollapse.getCookie(uniquepageid+"-"+divId) //"yes" or "no", based on cookie value
	this.contentheight=parseInt(this.divObj.style.height)
	var thisobj=this
	if (isNaN(this.contentheight)){ //if no CSS "height" attribute explicitly defined, get DIV's height on window.load
		animatedcollapse.dotask(window, function(){thisobj._getheight(persistexpand)}, "load")
		if (!persistexpand && this.initstate=="contract" || persistexpand && this.isExpanded!="yes" && this.isExpanded!="") //Hide DIV (unless div should be expanded by default, OR persistence is enabled and this DIV should be expanded)
			this.divObj.style.visibility="hidden" //hide content (versus collapse) until we can get its height
	}
	else if (!persistexpand && this.initstate=="contract" || persistexpand && this.isExpanded!="yes" && this.isExpanded!="") //Hide DIV (unless div should be expanded by default, OR persistence is enabled and this DIV should be expanded)
		this.divObj.style.height=0 //just collapse content if CSS "height" attribute available
	if (persistexpand)
		animatedcollapse.dotask(window, function(){animatedcollapse.setCookie(uniquepageid+"-"+thisobj.divId, thisobj.isExpanded)}, "unload")
}

animatedcollapse.prototype._getheight=function(persistexpand){
	this.contentheight=this.divObj.offsetHeight
	if (!persistexpand && this.initstate=="contract" || persistexpand && this.isExpanded!="yes"){ //Hide DIV (unless div should be expanded by default, OR persistence is enabled and this DIV should be expanded)
		this.divObj.style.height=0 //collapse content
		this.divObj.style.visibility="visible"
	}
	else //else if persistence is enabled AND this content should be expanded, define its CSS height value so slideup() has something to work with
		this.divObj.style.height=this.contentheight+"px"
}


animatedcollapse.prototype._slideengine=function(direction){
	var elapsed=new Date().getTime()-this.startTime //get time animation has run
	var thisobj=this
	if (elapsed<this.timelength){ //if time run is less than specified length
		var distancepercent=(direction=="down")? animatedcollapse.curveincrement(elapsed/this.timelength) : 1-animatedcollapse.curveincrement(elapsed/this.timelength)
	this.divObj.style.height=distancepercent * this.contentheight +"px"
	this.runtimer=setTimeout(function(){thisobj._slideengine(direction)}, 10)
	}
	else{ //if animation finished
		this.divObj.style.height=(direction=="down")? this.contentheight+"px" : 0
		this.isExpanded=(direction=="down")? "yes" : "no" //remember whether content is expanded or not
		this.runtimer=null
	}
}


animatedcollapse.prototype.slidedown=function(){
	if (typeof this.runtimer=="undefined" || this.runtimer==null){ //if animation isn't already running or has stopped running
		if (isNaN(this.contentheight)) //if content height not available yet (until window.onload)
			alert("Please wait until document has fully loaded then click again")
		else if (parseInt(this.divObj.style.height)==0){ //if content is collapsed
			this.startTime=new Date().getTime() //Set animation start time
			this._slideengine("down")
		}
	}
}

animatedcollapse.prototype.slideup=function(){
	if (typeof this.runtimer=="undefined" || this.runtimer==null){ //if animation isn't already running or has stopped running
		if (isNaN(this.contentheight)) //if content height not available yet (until window.onload)
			alert("Please wait until document has fully loaded then click again")
		else if (parseInt(this.divObj.style.height)==this.contentheight){ //if content is expanded
			this.startTime=new Date().getTime()
			this._slideengine("up")
		}
	}
}

animatedcollapse.prototype.slideit=function(){
	if (isNaN(this.contentheight)) //if content height not available yet (until window.onload)
		alert("Please wait until document has fully loaded then click again")
	else if (parseInt(this.divObj.style.height)==0)
		this.slidedown()
	else if (parseInt(this.divObj.style.height)==this.contentheight)
		this.slideup()
}

// -------------------------------------------------------------------
// A few utility functions below:
// -------------------------------------------------------------------

animatedcollapse.curveincrement=function(percent){
	return (1-Math.cos(percent*Math.PI)) / 2 //return cos curve based value from a percentage input
}


animatedcollapse.dotask=function(target, functionref, tasktype){ //assign a function to execute to an event handler (ie: onunload)
	var tasktype=(window.addEventListener)? tasktype : "on"+tasktype
	if (target.addEventListener)
		target.addEventListener(tasktype, functionref, false)
	else if (target.attachEvent)
		target.attachEvent(tasktype, functionref)
}

animatedcollapse.getCookie=function(Name){ 
	var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
	if (document.cookie.match(re)) //if cookie found
		return document.cookie.match(re)[0].split("=")[1] //return its value
	return ""
}

animatedcollapse.setCookie=function(name, value){
		document.cookie = name+"="+value
}
En in overall_header nog de volgende stap
[FIND]

Code: Selecteer alles

<script type="text/javascript" src="{T_TEMPLATE_PATH}/forum_fn.js"></script>
[AFTER ADD]

Code: Selecteer alles

<script type="text/javascript" src="{T_TEMPLATE_PATH}/animatedcollapse.js"></script>
Opslaan en dan alles refreshen (Cache legen) en de nieuwe bestanden uploaden.

Dan zou het moeten werken.. mocht er toch onduidelijkheden zijn hoor ik het wel.

Veel succes.

Dan zou het moeten werken!

Re: javascript collapse

Geplaatst: 23 jan 2010, 13:31
door Laurette
Dank je wel voor de hulp. Het staat er op :mrgreen: