I posted the following on news://comp.lang.javascript, and someone
kindly replied suggesting I should try on this mailing list.

(Please excuse very long lines - I carefully format line endings;
but Microsoft Outlook, which I have to use at my client site,
then takes it upon itself to rearrange and remove most of my
linefeeds! :-< )

I am using Thomas Fuchs's amazing drag-and-drop JavaScript library 
available at: 

  http://wiki.script.aculo.us/scriptaculous/show/DragAndDrop 


to allow the user to select a subset of items listed in one box by 
dragging them to another and sort them in the latter, and it works 
a treat. 


However, I'd now like to add a couple of buttons, "<<" and ">>" between 
the pair of boxes so that the user can shuffle all the items from one 
box 
to the other and back again in a single click. 


But I'm eternally ***ed if I can get the code to work, even after 
spending 
three hours on it, and was wondering if an expert might spot something 
obvious or even have done the same thing. Anyway, the relevant code 
is as follows: 


  (in page header ..) 


 <script src="js/prototype.js"     type="text/javascript"></script> 
 <script src="js/scriptaculous.js" type="text/javascript"></script> 


 <script type="text/javascript"> 
  // <![CDATA[ 


function spt_form_submit() 
{ 
  document.spt_main_form.spts.value= 
           Sortable.sequence("secondlist").join("' . '_' . '"); 


  return true; 



} 


  // ]]> 
 </script>'; 

(Following defines the two boxes, selectable ("firstlist") and selected 
("secondlist") 
with the two buttons between them: 


 * "choose_none" that is supposed to shuffle every item back to the 
   "selectable" list and empty the "selected" list 


 * "choose_all' that is supposed to do the opposite. Currently 
"choose_all" 
   has only a JavaScript stub, until I can get the "choose_none" button 
working! ) 


<table width="800px"> 


<tr><td width="40%"><h3 style="text-align:center">Selectable Items</h3> 


 <ul class="sortabledemo" id="firstlist" style="height:200px; 
margin:2px; overflow:auto; border:1px solid black;"><li id="id_1">Item 
1</li>;"><li id="id_2">Item 2</li> .. </ul></td> 


<td width="20%"><center><table> 
<tr><td><input type="submit" name="choose_none" value="&lt;&lt;" 
onClick="' . 


 flist = document.getElementById(\'firstlist\'); 
 slist = document.getElementById(\'secondlist\'); 


 var flth = flist.length; 
 var slth = slist.length; 


 for (var i = 0; i < slth; i++) 
 { 
  flist.appendChild(slist.options.item[i]); 
 } 


 slist.length = 0; 


 Sortable.destroy(\'firstlist\'); 
 Sortable.destroy(\'secondlist\'); 


 Sortable.create(\'firstlist\', 


{dropOnEmpty:true,containment:[\'firstlist\',\'secondlist\'],constraint:
fal-se}); 
  Sortable.create(\'secondlist\', 


{dropOnEmpty:true,handle:\'handle\',containment:[\'firstlist\',\'secondl
ist-\'],constraint:false});' 
. 
'return false;"></td></tr> 
<tr><td>&nbsp</td></tr> 
<tr><td><input type="submit" name="choose_all"  value="&gt;&gt;" 
onClick="return false;"></td></tr> 
</table></center></td> 


<td width="40%"><h3 style="text-align:center">Selected Items</h3> 
 <ul class="sortabledemo" id="secondlist" style="height:200px; 
margin:auto; overflow:auto; border:1px solid black;"></ul></td></tr> 


</table> 


<script type="text/javascript"> 
 // <![CDATA[ 
  Sortable.create("firstlist", 


{dropOnEmpty:true,containment:["firstlist","secondlist"],constraint:fals
e})-; 
  Sortable.create("secondlist", 


{dropOnEmpty:true,handle:\'handle\',containment:["firstlist","secondlist
"],-constraint:false}); 
 // ]]> 
</script>'; 


I think that should be enough to give a reasonable idea of what I'm 
trying to achieve, and if anyone has any thoughts or obvious (or what
should  be obvious!) observations, I'll be very interested. 


Note that I've plugged a couple of variable values with hard-coded 
text, to make the sample easier to follow. So don't worry about
minor syntax errors - I think my problems go somewhat deeper than
that! 


Cheers 


John Ramsden 





_______________________________________________
Rails-spinoffs mailing list
Rails-spinoffs@lists.rubyonrails.org
http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs

Reply via email to