84 class SelectQueryArgForm(forms.Form): |
84 class SelectQueryArgForm(forms.Form): |
85 """URL query argument change control implemented as a Django form. |
85 """URL query argument change control implemented as a Django form. |
86 """ |
86 """ |
87 |
87 |
88 ONCHANGE_JAVASCRIPT_FMT = ''' |
88 ONCHANGE_JAVASCRIPT_FMT = ''' |
89 <script type="text/javascript"> |
89 <script type="text/javascript"> |
90 function changeArg_%(arg_name)s(item) |
90 function changeArg_%(arg_name)s(item) |
91 { |
91 { |
92 var idx=item.selectedIndex; |
92 var idx=item.selectedIndex; |
93 item.selected=true; |
93 item.selected=true; |
94 var value=item.value |
94 var value=item.value; |
95 var url = location.href |
95 var url = location.href; |
96 var reg = /%(arg_name)s=\d+/ |
96 var ourreg = /%(arg_name)s=\d+/; |
97 url = url.replace(reg, "%(arg_name)s="+value) |
97 var anyreg = /\w+=\d+/; |
98 if(url.match(reg)) |
98 if(url.match(ourreg)) |
99 document.location.href = url |
99 url = url.replace(ourreg, "%(arg_name)s="+value); |
100 else |
100 else if(url.match(anyreg)) |
101 document.location.href = "%(page_path)s?%(arg_name)s="+value; |
101 url = url + "&%(arg_name)s=" + value; |
|
102 else |
|
103 url = "%(page_path)s?%(arg_name)s="+value; |
|
104 document.location.href = url; |
102 } |
105 } |
103 </script> |
106 </script> |
104 ''' |
107 ''' |
105 |
108 |
106 def __init__(self, page_path, arg_name, choices, field_name, |
109 def __init__(self, page_path, arg_name, choices, field_name, |