We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 14050
    • 788 Posts
    EDITSolved my problem by switching to jQuery.

    I currently retrieve a list of documents that each represent a type of wine. You can see that here:

    http://dev.blueskyvineyard.com/wine-selection

    I use ditto to retrieve these documents. I would like the links that are represented by the Wine Name to act as a toggle for the Mootools slide effect. That isn’t that hard to template, but the slide effect requires the following:

    window.addEvent('domready', function(){
    			//-vertical
    
    var mySlide = new Fx.Slide('test');
    
    $('toggle').addEvent('click', function(e){
    	e = new Event(e);
    	mySlide.toggle();
    	e.stop();
    });			});


    This goes in the head of the document. Of course I need a unique variable for each document (i.e. mySlide1, mySlide2, etc) and a unique Slide object (i.e. test1, test2, etc). Can this be inline? If so, then it wouldn’t be that hard to template, but I would prefer to keep this in the head of the document. Is there a way to do that? Maybe I am approaching this in the wrong way?
      Jesse R.
      Consider trying something new and extraordinary.
      Illinois Wine

      Have you considered donating to MODx lately?
      Donate now. Every contribution helps.
      • 18397
      • 3,250 Posts
      Try putting this in your head: (based on this page - http://cim.saddleback.edu/~jmolina10)
      <script type="text/javascript">
      	window.onload = function() {
      
      		// Pick your classes
      			var myBox = document.getElementsByClassName('box_title');
      			var myBoxOpen = document.getElementsByClassName('expand');
      
      		// Create the accordian
      			var myEffect = new fx.Accordion(myBox, myBoxOpen, {});
      
      </script>
      


      Then for each box:
      <div class="bbox">
        <div>
          <span class="box_title"><a href="[~[+id+]~]" title="[+pagetitle+]">[+pagetitle+]</a></span>
          <p class="expand">[+introtext+]</p>
        </div>
      </div>
      
        • 14050
        • 788 Posts
        The problem is that I am trying to use the Slide, and not the accordion. My understanding is that the accordion only allows one section to be open at a time. The Slide allows for any given element to be opened or closed. I have a working version of what I am trying to do here:

        http://dev.blueskyvineyard.com/wine-selection

        I use the following template for the ditto call:

        </p>
        <!-- Text container -->
        <h4>
        <a href="#" title="[+title+]" id="toggle[+id+]">[+title+]</a>
        </h4>                          
        <div id="wine[+id+]">
        <p>[+summary+] <a href="[~[+id+]~]" title="[+title+]">More Details...</a></p>
        </div>
        <p>


        And I use the following code to do the Fx.Slide

        window.addEvent('domready', function(){
        			//-vertical
        
        var mySlide87 = new Fx.Slide('wine87');
        mySlide87.hide();
        $('toggle87').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide87.toggle();
        	e.stop();
        });	
        
        var mySlide88 = new Fx.Slide('wine88');
        mySlide88.hide();
        $('toggle88').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide88.toggle();
        	e.stop();
        });	
        
        var mySlide93 = new Fx.Slide('wine93');
        mySlide93.hide();
        $('toggle93').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide93.toggle();
        	e.stop();
        });	
        var mySlide94 = new Fx.Slide('wine94');
        mySlide94.hide();
        $('toggle94').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide94.toggle();
        	e.stop();
        });	
        var mySlide95 = new Fx.Slide('wine95');
        mySlide95.hide();
        $('toggle95').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide95.toggle();
        	e.stop();
        });
        var mySlide96 = new Fx.Slide('wine96');
        mySlide96.hide();
        $('toggle96').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide96.toggle();
        	e.stop();
        });
        var mySlide97 = new Fx.Slide('wine97');
        mySlide97.hide();
        $('toggle97').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide97.toggle();
        	e.stop();
        });
        var mySlide98 = new Fx.Slide('wine98');
        mySlide98.hide();
        $('toggle98').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide98.toggle();
        	e.stop();
        });	
        var mySlide99 = new Fx.Slide('wine99');
        mySlide99.hide();
        $('toggle99').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide99.toggle();
        	e.stop();
        });
        var mySlide100 = new Fx.Slide('wine100');
        mySlide100.hide();
        $('toggle100').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide100.toggle();
        	e.stop();
        });	
        var mySlide101 = new Fx.Slide('wine101');
        mySlide101.hide();
        $('toggle101').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide101.toggle();
        	e.stop();
        });	
        var mySlide102 = new Fx.Slide('wine102');
        mySlide102.hide();
        $('toggle102').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide102.toggle();
        	e.stop();
        });
        var mySlide103 = new Fx.Slide('wine103');
        mySlide103.hide();
        $('toggle103').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide103.toggle();
        	e.stop();
        });
        var mySlide104 = new Fx.Slide('wine104');
        mySlide104.hide();
        $('toggle104').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide104.toggle();
        	e.stop();
        });
        var mySlide105 = new Fx.Slide('wine105');
        mySlide105.hide();
        $('toggle105').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide105.toggle();
        	e.stop();
        });
        var mySlide106 = new Fx.Slide('wine106');
        mySlide106.hide();
        $('toggle106').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide106.toggle();
        	e.stop();
        });
        var mySlide108 = new Fx.Slide('wine108');
        mySlide108.hide();
        $('toggle108').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide108.toggle();
        	e.stop();
        });
        var mySlide109 = new Fx.Slide('wine109');
        mySlide109.hide();
        $('toggle109').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide109.toggle();
        	e.stop();
        });	
        var mySlide110 = new Fx.Slide('wine110');
        mySlide110.hide();
        $('toggle110').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide110.toggle();
        	e.stop();
        });	
        var mySlide111 = new Fx.Slide('wine111');
        mySlide111.hide();
        $('toggle111').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide111.toggle();
        	e.stop();
        });	
        var mySlide112 = new Fx.Slide('wine112');
        mySlide112.hide();
        $('toggle112').addEvent('click', function(e){
        	e = new Event(e);
        	mySlide112.toggle();
        	e.stop();
        });			});


        This gets somewhat cumbersome, as if a new wine is added, then the correct variable/function need to be setup manually. Also, if a wine/document gets unpublished or removed completely, this file again has to be edited manually to reflect that. I was hoping to find some way to automate this.
          Jesse R.
          Consider trying something new and extraordinary.
          Illinois Wine

          Have you considered donating to MODx lately?
          Donate now. Every contribution helps.