I am sorry about that...

Web2py default behavior for list:reference or reference is a HTML Select
and option... This is ordered by the navigator base on the spelling of the
element... So when you edit your form if you want to maintain the
preexisting order (the one that were there when you select items and order
them with bsm) you need to set them in order in the select yourself...
Bsmselect use OL that is Ordered List instead of UL... But it consume a
standard select... So, as long as he get a select with the proper ordered
options he can recreate the prexisting order... That is what the js I show
you does...

ordered_values content the list:reference or the reference value that are a
simple python list... List are items of list are ordered not like python
dict that not preserve order... So I just get the value of the field that
is a list object and pass it to the javascript as a list object... then I
create option from that list in javascript like you could do in web2py with
helpers for instance or by generating html yourself...

Hope it helps.

Richard


On Fri, Dec 13, 2013 at 7:27 AM, Kevin Bethke <kevin.bet...@gmail.com>wrote:

> thanks but to be honest now I'm even more confused.
> why do you need a piece of jquery code in a javascript variable. I sopose
> you included the entire jquery library.
> Why do you do the ordering with javascript and not with python is there a
> special reason for this? I think I just explained the last question  by
> looking at the code again. The document ready function is executed every
> time you add or remove an element from the list?
> the javascript variable ordered_values="%s" is filled from the represent
> python variable?
> And my last question do you implement the multiple select into a form?
> Sry for all those questions but I'm still learning and the need for this
> to work really pushes my skills and knowledge beyond its limits.
>
>
> On Thu, Dec 12, 2013 at 3:49 PM, Richard Vézina <
> ml.richard.vez...@gmail.com> wrote:
>
>> It's a bit hacky but it works...
>>
>> :)
>>
>> Richard
>>
>>
>> On Thu, Dec 12, 2013 at 9:48 AM, Richard Vézina <
>> ml.richard.vez...@gmail.com> wrote:
>>
>>> Don't bother with the php thing...
>>>
>>> Just look the data structure of the select...
>>>
>>> Here what I do to restore proper order on update form :
>>>
>>> controller_view_js += """
>>> var ordered_values = ''%s'';
>>> $(document).ready(function() {
>>>     if(ordered_values != "None") {
>>>         $.each(ordered_values, function(i, val) {
>>>             $("select[name=field_name]").append("<option
>>> value=\'"+ordered_values[i]+"\'>"+
>>>                 $("select[name=field_name]
>>> option[value="+ordered_values[i]+"]").text()+"</option>");
>>>         });
>>>         $("select[name=field_name] option:selected").remove();
>>>         $.each(ordered_values, function(i, val) {
>>>             $("select[name=field_name]
>>> option[value="+ordered_values[i]+"]").attr("selected", "selected");
>>>         });
>>>     };
>>> });""" % [int(ID) for ID in ordered_values_query]
>>>
>>> controller_view_js is a variable containing a piece of jquery that I
>>> pass to the view from the controller... What it does put the options into
>>> the proper order or how they were ordered at the input... All this is
>>> because web2py don't use "ol" list out of the box... So I manage thing to
>>> not require ol.
>>>
>>> The ordered_values_query contain the value of the field field_name for
>>> the given record...
>>>
>>> I had to set a representation like this too :
>>>
>>> represent=lambda values, row: ', '.join(map(lambda id:
>>> db.ref_referenced_table(id).represent_field, values)) if values != [] or
>>> None else T('N/A')
>>>
>>> Hope it helps.
>>>
>>> Richard
>>>
>>>
>>> On Thu, Dec 12, 2013 at 4:07 AM, BlueShadow <kevin.bet...@gmail.com>wrote:
>>>
>>>> thanks for your offer I'm working my way through the example code but
>>>> my biggest problem is that php site. I don't know php. But from what I get
>>>> from the php code is that all the sample cities need to be in an unordered
>>>> list environment <ul><li></li>...</ul>
>>>> but this form part of the bsmselect example really confuses me.
>>>>
>>>> <h1>Example 1: Typical Usage</h1>
>>>>
>>>>
>>>> <form action="./example_results.php" method="post">
>>>>
>>>>
>>>>
>>>>     <label for="cities1">What are your favorite cities?</label>
>>>>
>>>>
>>>>     <select id="cities1" multiple="multiple" name="cities[]" title="Click 
>>>> to Select a City" class="sminit">
>>>>
>>>>
>>>>       <option>Amsterdam</option>
>>>>
>>>>
>>>>     </select>
>>>>     <p><input type="submit" name="submit" value="submit" /></p>
>>>>
>>>>
>>>>   </form>
>>>>
>>>>
>>>> especially the php file in form action=""
>>>> <?php
>>>>
>>>> if(!empty($_POST['submit'])) {
>>>>
>>>>   echo "<html>\n<body style='width: 400px; margin: 2em auto;
>>>> font-family: Arial;'>";
>>>>
>>>>   if(!empty($_POST['cities'])) {
>>>>
>>>>     echo "\n<p><strong>You selected the following
>>>> cities:</strong></p>\n<ul>";
>>>>
>>>>     foreach($_POST['cities'] as $city) {
>>>>
>>>>       // exclude any items with chars we don't want, just in case
>>>> someone is playing
>>>>       if(!preg_match('/^[-A-Z0-9\., ]+$/iD', $city)) continue;
>>>>
>>>>       // print the city
>>>>       echo "\n\t<li>" . htmlspecialchars($city) . "</li>";
>>>>     }
>>>>
>>>>     echo "\n</ul>";
>>>>
>>>>   } else {
>>>>     echo "\n<p>No items selected</p>";
>>>>   }
>>>>
>>>>   echo "\n<p><a href='index.html'>Try Again?</a></p>";
>>>>
>>>>   echo "\n</body>\n</html>";
>>>>
>>>> } else {
>>>>   // if someone arrived here not having started at example.html
>>>>   // then show example.html instead
>>>>   require("index.html");
>>>>
>>>> }
>>>>
>>>>
>>>> It seems to me that there is an entire html document in this php file.
>>>>
>>>>  --
>>>> Resources:
>>>> - http://web2py.com
>>>> - http://web2py.com/book (Documentation)
>>>> - http://github.com/web2py/web2py (Source code)
>>>> - https://code.google.com/p/web2py/issues/list (Report Issues)
>>>> ---
>>>> You received this message because you are subscribed to the Google
>>>> Groups "web2py-users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to web2py+unsubscr...@googlegroups.com.
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>
>>>
>>>
>>  --
>> Resources:
>> - http://web2py.com
>> - http://web2py.com/book (Documentation)
>> - http://github.com/web2py/web2py (Source code)
>> - https://code.google.com/p/web2py/issues/list (Report Issues)
>> ---
>> You received this message because you are subscribed to a topic in the
>> Google Groups "web2py-users" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/web2py/3HTTdoGnCAA/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> web2py+unsubscr...@googlegroups.com.
>>
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>  --
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> ---
> You received this message because you are subscribed to the Google Groups
> "web2py-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to web2py+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to