<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Thanks! It works<br>
<br>
Oliver Christen a &eacute;crit&nbsp;:
<blockquote cite="mid:619FE17418C94FFEA9DEBC9DDC0C9333@maunakea"
 type="cite">
  <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
  <meta content="MSHTML 6.00.6000.16525" name="GENERATOR">
  <div>
  <div><font size="2">mmm, </font><font size="2">maybe you can trigger
the layer selection by using the filter
layer_select=layer_to_select_1,layer_to_select_2,... at the same time
you do the layer reorder call.</font></div>
  <div><font size="2">if im not wrong, the filter will trigger the
layer selection before layerReorder is called, meaning the layers
*should* be in </font><font size="3">selectedMsLayerIds</font></div>
  <div>&nbsp;</div>
  <div><font size="2">regards</font></div>
  <div><font size="2">Oliver</font></div>
  </div>
  <blockquote
 style="border-left: 2px solid rgb(0, 0, 0); padding-right: 0px; padding-left: 5px; margin-left: 5px; margin-right: 0px;">
    <div
 style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">-----
Original Message ----- </div>
    <div
 style="background: rgb(228, 228, 228) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><b>From:</b>
    <a moz-do-not-send="true" title="simon.ortet@silogic.fr"
 href="mailto:simon.ortet@silogic.fr">Simon ORTET</a> </div>
    <div
 style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><b>To:</b>
    <a moz-do-not-send="true" title="oliver.christen@camptocamp.com"
 href="mailto:oliver.christen@camptocamp.com">Oliver Christen</a> </div>
    <div
 style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><b>Cc:</b>
    <a moz-do-not-send="true" title="cartoweb-users@lists.maptools.org"
 href="mailto:cartoweb-users@lists.maptools.org">cartoweb</a> </div>
    <div
 style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><b>Sent:</b>
Tuesday, October 09, 2007 10:25 AM</div>
    <div
 style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><b>Subject:</b>
Re: [Cartoweb-users] Show layers in a defined order</div>
    <div><br>
    </div>
Hi Oliver<br>
    <br>
On line 478 I have : $this-&gt;orderedMsLayerIds[] =
$this-&gt;selectedMsLayerIds[$id];<br>
Cartoweb can't find the $id index in the selectedMsLayerIds collection.<br>
I made a print_r of the selectedMsLayerIds collection and i miss a
layer that i checked by javascript <i>chargeVue() </i>function. So i
assumed that Cartoweb needs first a <i>CartoWeb.trigger('Layers.LayerShowHide');</i>
call to gather the layers checked in the tree and update its
collection. And only then, i can make the
CartoWeb.trigger('LayerReorder.Apply'); to reorder these layers.<br>
    <br>
The problem is that i want to do that in only 1 ajax call. I'd like to
avoid writing a new plugin. What could you advise me?<br>
    <br>
Thanks for your help.<br>
Simon Ortet<br>
Silogic<br>
    <br>
Oliver Christen a &eacute;crit&nbsp;:
    <blockquote>
      <meta content="MSHTML 6.00.6000.16525" name="GENERATOR">
      <style></style>
      <div><font size="2">what do you have at line 478 of your </font><font
 size="3">ClientLayerReorder.php file?</font></div>
      <div>I only see a comment at that line</div>
      <div>&nbsp;</div>
      <div><font size="2">regards</font></div>
      <div><font size="2">Oliver</font></div>
      <blockquote
 style="border-left: 2px solid rgb(0, 0, 0); padding-right: 0px; padding-left: 5px; margin-left: 5px; margin-right: 0px;">
        <div
 style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">-----
Original Message ----- </div>
        <div
 style="background: rgb(228, 228, 228) none repeat scroll 0% 50%; font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><b>From:</b>
        <a moz-do-not-send="true" title="simon.ortet@silogic.fr"
 href="mailto:simon.ortet@silogic.fr">Simon ORTET</a> </div>
        <div
 style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><b>To:</b>
        <a moz-do-not-send="true"
 title="cartoweb-users@lists.maptools.org"
 href="mailto:cartoweb-users@lists.maptools.org">cartoweb</a> </div>
        <div
 style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><b>Sent:</b>
Monday, October 08, 2007 10:15 AM</div>
        <div
 style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><b>Subject:</b>
[Cartoweb-users] Show layers in a defined order</div>
        <div><br>
        </div>
Hi everyone.<br>
        <br>
I'm trying to do a 2 in 1 action with Cartoweb: Show some layers in a
special order. So it means i have to check some layers in the layers
tree and reorder them. Finally i make the ajax call to make Cartoweb
apply the changes.<br>
        <br>
The problem is Cartoweb seems not to know the layers i just checked.
Here's the error message.<br>
        <pre>version: 3.3.0 [$Revision: 1.2 $]
class:   CartocommonException
message:   Error [8, Undefined index:  1, /opt/cartoweb/cartoweb3/projects/aeag/plugins/layerReorder/client/ClientLayerReorder.php, 478]
    </pre>
        <br>
So here's the function i made to do this.<br>
        <br>
        <blockquote><i>function chargeVue() {&nbsp;&nbsp;&nbsp; </i><br>
          <i>&nbsp;&nbsp;&nbsp; <font color="#009900">// Here i get the layers i need
to show in a field of my form</font></i><br>
          <i>&nbsp;&nbsp;&nbsp; for (var i=0; i&lt;$('selectVue').options.length; i++)
{</i><br>
          <i>&nbsp;&nbsp;&nbsp; &nbsp; if ($('selectVue').options[i].selected ) {</i><br>
          <i>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; selectione = $('selectVue').options[i].value;</i><br>
          <i>&nbsp;&nbsp;&nbsp; &nbsp; }</i><br>
          <i>&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; </i><br>
          <i>&nbsp;&nbsp;&nbsp; </i><br>
          <i>&nbsp;&nbsp;&nbsp; <font color="#009900">// Here i check the layers i
got in the layer tree</font></i><br>
          <i>&nbsp;&nbsp;&nbsp; var tabSel = $('vue_'+selectione).value.split(";");</i><br>
          <i>&nbsp;&nbsp;&nbsp; var tabOrdre = new Array();</i><br>
          <i>&nbsp;&nbsp;&nbsp; var celts =
$('layersroot').getElementsByTagName('input');</i><br>
          <br>
          <i>&nbsp;&nbsp;&nbsp; for (var j = 0; j &lt; celts.length; j++) {</i><br>
          <i>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (!celts[j].checked &amp;&amp;
inArray(tabSel,celts[j].value)) {</i><br>
          <i>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; celts[j].checked = true;</i><br>
          <i><font color="#009900">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; // Here i store the
order of the layers in the layers tree</font></i><br>
          <i>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tabOrdre.push(celts[j].value);</i><br>
          <i>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }else</i><br>
          <i>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; celts[j].checked = false;</i><br>
          <i>&nbsp;&nbsp;&nbsp; }</i><br>
          <i>&nbsp;&nbsp;&nbsp; </i><br>
          <i>&nbsp;&nbsp;&nbsp; <font color="#009900">// Here i fill an array with
the new layers order</font></i><br>
          <i>&nbsp;&nbsp;&nbsp; var tabNewOrdre = new Array();</i><br>
          <i>&nbsp;&nbsp;&nbsp; for (j = 0; j &lt; tabSel.length; j++) {</i><br>
          <i>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Ajoute l'indice de la couche dans tabOrdre</i><br>
          <i>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tabNewOrdre.push(indexInArray(tabOrdre,tabSel[j]));</i><br>
          <i>&nbsp;&nbsp;&nbsp; }</i><br>
          <i>&nbsp;&nbsp;&nbsp; $('layersReorder').value = tabNewOrdre.join(",");</i><br>
          <i>&nbsp;&nbsp;&nbsp; </i><br>
          <i>&nbsp;&nbsp;&nbsp; <font color="#009900">// Here i update the map</font></i><br>
          <i>&nbsp;&nbsp;&nbsp; CartoWeb.trigger('Layers.LayerShowHide');</i><br>
          <i>}</i><span class="sourceRowText"></span><br>
          <span class="sourceRowText"></span></blockquote>
        <br>
        <br>
        <br>
        <b>Is there a way to achieve this without making 2 ajax calls
(one to check the layers, the other to order them)?<br>
        <br>
        </b>Thanks for your help<br>
        <br>
Simon Ortet<br>
Silogic<br>
        <hr> _______________________________________________<br>
Cartoweb-users mailing list<br>
        <a moz-do-not-send="true" class="moz-txt-link-abbreviated"
 href="mailto:Cartoweb-users@lists.maptools.org">Cartoweb-users@lists.maptools.org</a><br>
        <a moz-do-not-send="true" class="moz-txt-link-freetext"
 href="http://lists.maptools.org/mailman/listinfo/cartoweb-users">http://lists.maptools.org/mailman/listinfo/cartoweb-users</a><br>
      </blockquote>
    </blockquote>
  </blockquote>
</blockquote>
</body>
</html>