source: extensions/ASearchEngine/templates/ase_dialog_rate_choose.tpl @ 25146

Last change on this file since 25146 was 15360, checked in by grum, 13 years ago

feature:2635 - Compatibility with Piwigo 2.4

  • Property svn:executable set to *
File size: 9.3 KB
Line 
1
2{literal}
3<style type='text/css'>
4</style>
5
6<script type="text/javascript">
7/**
8 * include this template in a page and use dialogChooseASERateBox.show({options}) to display
9 * the dialog box
10 *
11 */
12dialogChooseASERateBox = function()
13{
14  var dialogOptions = {
15      id:'',
16      eventOk:null,
17      cBuilder:null,
18
19      values: {
20        minValue:'',
21        maxValue:'',
22        searchType:'no'
23      },
24    };
25
26  /**
27   * initialize the dialog box
28   */
29  var initDialogBox = function()
30  {
31    $("#iDialogASERateChoose")
32    .dialog(
33      {
34        autoOpen: false,
35        resizable: false,
36        width:500,
37        height:180,
38        modal: true,
39        draggable:true,
40        dialogClass: 'gcBgTabSheet gcBorder',
41        title: '{/literal}{"ase_choose_rate"|@translate}{literal}',
42        open: function(event, ui)
43        {
44        },
45        buttons:
46        {
47          '{/literal}{"ase_ok"|@translate}{literal}':
48            function()
49            {
50              if(checkValidity())
51              {
52                dialogOptions.values.minValue=$('#iASERateMinValue').val();
53                dialogOptions.values.maxValue=$('#iASERateMaxValue').val();
54                dialogOptions.values.searchType=$('#iASERateSearchType').val();
55
56                switch(dialogOptions.values.searchType)
57                {
58                  case 'gt':
59                    dialogOptions.values.maxValue='';
60                    break;
61                  case 'lt':
62                    dialogOptions.values.minValue='';
63                    break;
64                }
65
66                if(dialogOptions.cBuilder!=null)
67                {
68                  setCBuilderItem(dialogOptions.id, dialogOptions.values);
69                }
70
71                if(dialogOptions.eventOk!=null)
72                {
73                  dialogOptions.eventOk(dialogOptions.id, dialogOptions.values);
74                }
75                $(this).dialog('close');
76              }
77            },
78          '{/literal}{"ase_cancel"|@translate}{literal}':
79            function()
80            {
81              $(this).dialog('close');
82            }
83        }
84      }
85    );
86
87    $('#iASERateSearchType').bind('change', changeSearchType);
88  }
89
90
91  /**
92   * called when the search type is changed
93   */
94  var changeSearchType = function ()
95  {
96    switch($('#iASERateSearchType').val())
97    {
98      case 'no':
99        $("#iASERateMinValueRow").hide();
100        $("#iASERateMaxValueRow").hide();
101        break;
102      case 'bt':
103        $("#iASERateMinValueRow").show();
104        $("#iASERateMaxValueRow").show();
105        break;
106      case 'gt':
107        $("#iASERateMinValueRow").show();
108        $("#iASERateMaxValueRow").hide();
109        break;
110      case 'lt':
111        $("#iASERateMinValueRow").hide();
112        $("#iASERateMaxValueRow").show();
113        break;
114    }
115  };
116
117
118  var isDate = function (s)
119  {
120    re=/\d{2,4}-\d\d-\d\d/i;
121    return((re.exec(s)!=null));
122  }
123
124  /**
125   * check the validity of the condition
126   * return Boolean : true if OK, otherwise false
127   */
128  var checkValidity = function ()
129  {
130    $(".error").removeClass('error');
131    returned=true;
132
133    if($('#iASERateSearchType').val()=='bt')
134    {
135      if($("#iASERateMinValue").val() > $("#iASERateMaxValue").val())
136      {
137        $("#iASERateMinValue, #iASERateMaxValue").addClass('error');
138        returned=false;
139        alert("{/literal}{'ase_error_rate_range'|@translate}{literal}");
140      }
141    }
142
143    return(returned);
144  }
145
146
147  /**
148   * the show() function display and manage a dialog box to choose categories
149   * and the kind of test to apply
150   *
151   * @param options : properties to manage the dialog box
152   *                  - id : a string to identify a DOM object ; this parameter
153   *                         is given to the callback when the OK button is pushed
154   *                  - values : an object with 3 properties
155   *                               - dateType : 'c' for creation or 'a' for available
156   *                               - from :
157   *                               - to :
158   *                  - eventOK : a callback function, with 2 parameters : id of
159   *                              the given DOM object and values parameted
160   *                  - cBuilder : a criteriaBuilder object
161   *                               if set, the dialog box manage automaticaly
162   *                               the criteria builder interface
163   */
164  this.show = function (options)
165  {
166    showDialog(options);
167  }
168
169  /**
170   * private function used to show the dialog box
171   */
172  var showDialog = function(options)
173  {
174    if(options.id!=null)
175    {
176      dialogOptions.id=options.id;
177    }
178    else
179    {
180      dialogOptions.id='';
181    }
182
183    if(options.eventOk!=null)
184    {
185      dialogOptions.eventOk=options.eventOk;
186    }
187
188    if(options.cBuilder!=null)
189    {
190      dialogOptions.cBuilder=options.cBuilder;
191      dialogOptions.cBuilder.doAction('setOptions',
192        {
193          onEdit:function (e) { editCB(e.data); },
194          onDelete:function (e) { deleteCB(e.data); },
195        }
196      );
197    }
198
199    if(options.values!=null)
200    {
201      dialogOptions.values=jQuery.extend(dialogOptions.values, options.values);
202    }
203    else
204    {
205      dialogOptions.values.maxValue='5';
206      dialogOptions.values.minValue='0';
207      dialogOptions.values.searchType='no';
208    }
209
210    $('#iASERateMinValue').val(dialogOptions.values.minValue);
211    $('#iASERateMaxValue').val(dialogOptions.values.maxValue);
212    $('#iASERateSearchType').val(dialogOptions.values.searchType);
213
214    changeSearchType();
215
216    $("#iDialogASERateChoose").dialog('open');
217  }
218
219
220
221  /**
222   * manage the 'edit' button from criteria builder interface
223   * @param String itemId : the itemId
224   */
225  var editCB = function (itemId)
226  {
227    extraData=dialogOptions.cBuilder.doAction('getExtraData', itemId);
228    showDialog(
229      {
230        id:itemId,
231        values:
232          {
233            maxValue:extraData.param.maxValue,
234            minValue:extraData.param.minValue,
235            searchType:extraData.param.searchType
236          },
237      }
238    );
239  }
240
241  /**
242   * manage the 'delete' button from criteria builder interface
243   * @param String itemId : the itemId
244   */
245  var deleteCB = function (itemId)
246  {
247    dialogOptions.cBuilder.doAction('delete', itemId);
248  }
249
250  /**
251   * set the content for the cBuilder item
252   */
253  var setCBuilderItem = function(id)
254  {
255    var content="<div>{/literal}{'ase_the_rate'|@translate}{literal} ";
256
257    switch(dialogOptions.values.searchType)
258    {
259      case 'no':
260        content="<div>{/literal}{'ase_Dont_have_rate'|@translate}{literal} ";
261        break;
262      case 'bt':
263        content+="{/literal}{'ase_is_between2'|@translate}{literal} <span style='font-style:italic;'>"+dialogOptions.values.minValue+"</span> {/literal}{'ase_is_between_and2'|@translate}{literal} <span style='font-style:italic;'>"+dialogOptions.values.maxValue+"</span>";
264        break;
265      case 'gt':
266        content+="{/literal}{'ase_is_greater_or_equal2'|@translate}{literal} <span style='font-style:italic;'>"+dialogOptions.values.minValue+"</span>";
267        break;
268      case 'lt':
269        content+="{/literal}{'ase_is_less_or_equal2'|@translate}{literal} <span style='font-style:italic;'>"+dialogOptions.values.maxValue+"</span>";
270        break;
271    }
272
273    content+="</div>";
274
275
276    if(id=='')
277    {
278      //no id:add a new item in the list
279      dialogOptions.cBuilder.doAction(
280        'add',
281        content,
282        criteriaBuilder.makeExtendedData(
283          'ASERate',
284          {
285            searchType:dialogOptions.values.searchType,
286            minValue:dialogOptions.values.minValue,
287            maxValue:dialogOptions.values.maxValue
288          }
289        )
290      );
291    }
292    else
293    {
294      // update item
295      dialogOptions.cBuilder.doAction(
296        'edit',
297        id,
298        content,
299        criteriaBuilder.makeExtendedData(
300          'ASERate',
301          {
302            searchType:dialogOptions.values.searchType,
303            minValue:dialogOptions.values.minValue,
304            maxValue:dialogOptions.values.maxValue
305          }
306        )
307      );
308    }
309  }
310
311  initDialogBox();
312}
313
314
315</script>
316{/literal}
317
318<div id="iDialogASERateChoose" style='display:none;'>
319
320  <table class="formtable">
321
322    <tr>
323      <td>{'ase_the_rate'|@translate}</td>
324      <td>
325        <select id="iASERateSearchType">
326          <option value="no">{'ase_dont_have_rate'|@translate}</option>
327          <option value="bt">{'ase_is_between2'|@translate} ... {'ase_is_between_and2'|@translate} ...</option>
328          <option value="gt">{'ase_is_greater_or_equal2'|@translate} ... </option>
329          <option value="lt">{'ase_is_less_or_equal2'|@translate} ... </option>
330        </select>
331      </td>
332    </tr>
333
334
335    <tr id="iASERateMinValueRow">
336      <td>&nbsp;</td>
337      <td>
338        <select id="iASERateMinValue">
339          <option value="0">0</option>
340          <option value="1">1</option>
341          <option value="2">2</option>
342          <option value="3">3</option>
343          <option value="4">4</option>
344          <option value="5">5</option>
345        </select>
346      </td>
347    </tr>
348
349    <tr id="iASERateMaxValueRow">
350      <td>&nbsp;</td>
351      <td>
352        <select id="iASERateMaxValue">
353          <option value="0">0</option>
354          <option value="1">1</option>
355          <option value="2">2</option>
356          <option value="3">3</option>
357          <option value="4">4</option>
358          <option value="5">5</option>
359        </select>
360      </td>
361    </tr>
362
363
364  </table>
365
366</div>
367
368
Note: See TracBrowser for help on using the repository browser.