source: extensions/AMetaData/admin/amd_metadata_database_database.tpl @ 10302

Revision 10302, 12.1 KB checked in by grum, 9 years ago (diff)

bug:2143
Compatibility with piwigo 2.2

Line 
1{combine_script id="jquery.ui" path=$ROOT_URL|@cat:"themes/default/js/ui/minified/jquery.ui.core.min.js"}
2{combine_script id="jquery.ui.dialog" path=$ROOT_URL|@cat:"themes/default/js/ui/minified/jquery.ui.dialog.min.js"}
3
4{literal}
5<script type="text/javascript">
6var processAnalyze = {
7      step:0,
8      lists:new Array(),
9      timeStart:0,
10      timeEnd:0
11    }
12
13  function init()
14  {
15    formatNbItemPerRequest({/literal}{$datas.NumberOfItemsPerRequest}{literal});
16  }
17
18  function formatNbItemPerRequest(nbItems)
19  {
20    $("#iamd_NumberOfItemsPerRequest").val(nbItems);
21    $("#iamd_nb_item_per_request_display").html(nbItems);
22  }
23
24  function doAnalyze()
25  {
26    var mode="all",
27        modeLabel="",
28        numOfRandomItems=0,
29        doAnalyzeDialog="<br><form id='iDialogProgress' class='formtable'>"+
30      "<div id='iprogressbar_contener' class='gcBorderInput'>"+
31      "<span id='iprogressbar_bg' class='gcBgInput' style='width:0%;'>&nbsp;</span>"+
32      "<span id='iprogressbar_fg' class='gcLink'>0%</span>"+
33      "</div><p>{/literal}{'g003_analyze_in_progress'|@translate}{literal}"+
34      "<br><img src='./plugins/GrumPluginClasses/icons/processing.gif'>"+
35      "</p></form>",
36        re=/^\d+$/;
37
38
39    if($("#ianalyze_action0").get(0).checked)
40    {
41      mode="notAnalyzed";
42      modeLabel="{/literal}{'g003_analyze_not_analyzed_pictures'|@translate}{literal}";
43    }
44    else if($("#ianalyze_action1").get(0).checked)
45    {
46      mode="all";
47      modeLabel="{/literal}{'g003_analyze_all_pictures'|@translate}{literal}";
48    }
49    else if($("#ianalyze_action2").get(0).checked)
50    {
51      mode="caddieAdd";
52      modeLabel="{/literal}{'g003_analyze_caddie_add_pictures'|@translate}{literal}";
53    }
54    else if($("#ianalyze_action3").get(0).checked)
55    {
56      mode="caddieReplace";
57      modeLabel="{/literal}{'g003_analyze_caddie_replace_pictures'|@translate}{literal}";
58    }
59    else if($("#ianalyze_action4").get(0).checked)
60    {
61      mode="analyzed";
62      modeLabel="{/literal}{'g003_analyze_analyzed_pictures'|@translate}{literal}";
63    }
64    else if($("#ianalyze_action5").get(0).checked)
65    {
66      mode="randomList";
67      numOfRandomItems=$("#ianalyze_action6").val();
68      if(numOfRandomItems<=0 || re.exec(numOfRandomItems)==null)
69      {
70        alert("{/literal}{'g003_invalid_random_number'|@translate}{literal}");
71        return(false);
72      }
73      modeLabel="{/literal}{'g003_analyze_random_pictures'|@translate|replace:'%s':'"+numOfRandomItems+"'}{literal}";
74    }
75
76    ignoreOptions=[];
77    if($('#iFillDataBaseIgnore_magic').get(0).checked)
78    {
79      ignoreOptions.push('magic');
80    }
81    if($('#iFillDataBaseIgnore_exif').get(0).checked)
82    {
83      ignoreOptions.push('exif');
84    }
85    if($('#iFillDataBaseIgnore_iptc').get(0).checked)
86    {
87      ignoreOptions.push('iptc');
88    }
89    if($('#iFillDataBaseIgnore_xmp').get(0).checked)
90    {
91      ignoreOptions.push('xmp');
92    }
93    if($('#iFillDataBaseIgnore_com').get(0).checked)
94    {
95      ignoreOptions.push('com');
96    }
97
98
99    $("#dialog")
100    .html("")
101    .dialog(
102      {
103        resizable: false,
104        width:480,
105        height:120,
106        modal: true,
107        draggable:true,
108        dialogClass: 'gcBgTabSheet gcBorder',
109        title: '{/literal}{"g003_updating_metadata"|@translate}{literal}&nbsp;('+modeLabel+')',
110      }
111    ).html(doAnalyzeDialog);
112
113    NumberOfItemsPerRequest=$("#iamd_NumberOfItemsPerRequest").val();
114
115    $.ajax(
116      {
117        type: "POST",
118        url: "{/literal}{$datas.urlRequest}{literal}",
119        async: true,
120        data:
121          {
122            ajaxfct:"admin.makeStats.getList",
123            selectMode:mode,
124            numOfItems:NumberOfItemsPerRequest,
125            ignoreOptions:ignoreOptions,
126            numOfRandomItems:numOfRandomItems,
127          },
128        success: function(msg)
129          {
130            processAnalyze.step=0;
131            processAnalyze.lists=msg.split(";");
132            processAnalyze.timeStart=new Date();
133            doStep_processList();
134          },
135        error: function()
136          {
137            alert('error');
138          }
139      }
140    );
141  }
142
143
144  function displayTime(eTime)
145  {
146    seconds=(eTime%60).toFixed(2);
147    minutes=((eTime-seconds)/60).toFixed(0);
148    returned=seconds+"s";
149    if(minutes>0) returned=minutes+"m"+returned;
150    return(returned);
151  }
152
153  function doStep_processList()
154  {
155    if(processAnalyze.step < processAnalyze.lists.length)
156    {
157      $.ajax({
158        type: "POST",
159        url: "{/literal}{$datas.urlRequest}{literal}",
160        async: true,
161        data: { ajaxfct:"admin.makeStats.doAnalyze", imagesList:processAnalyze.lists[processAnalyze.step] },
162        success: function(msg)
163          {
164            processAnalyze.step++;
165            doStep_processList();
166          },
167       });
168
169      pct=100*(processAnalyze.step+1)/processAnalyze.lists.length;
170      $("#iprogressbar_bg").css("width", pct+"%");
171      $("#iprogressbar_fg").html(Math.round(pct)+"%");
172    }
173    else
174    {
175      // list completely processed
176      tmp = $.ajax({
177        type: "POST",
178        url: "{/literal}{$datas.urlRequest}{literal}",
179        async: false,
180        data: { ajaxfct:"admin.makeStats.consolidate" }
181       }).responseText;
182
183      processAnalyze.timeEnd = new Date();
184      timeElapsed=processAnalyze.timeEnd.getTime()-processAnalyze.timeStart.getTime();
185
186      $("#dialog")
187      .dialog("destroy")
188      .html("")
189      .get(0).removeAttribute('style');
190
191      $("#dialog")
192      .dialog(
193        {
194          resizable: false,
195          width:480,
196          height:120,
197          modal: true,
198          draggable:true,
199          dialogClass: 'gcBgTabSheet gcBorder',
200          title: '{/literal}{"g003_updating_metadata"|@translate}{literal}',
201          dialogClass: 'gcBgTabSheet gcBorder',
202          open: function(event, ui)
203          {
204            bH=$("div.ui-dialog-buttonpane").get(0).clientHeight;
205            $("#dialog").css('height', (this.clientHeight-bH)+"px");
206          },
207          buttons:
208          {
209            '{/literal}{"g003_ok"|@translate}{literal}':
210              function()
211              {
212                $(this).dialog('destroy').html("").get(0).removeAttribute('style');
213              }
214          }
215        }
216      )
217      .html("<br>{/literal}{'g003_analyze_is_finished'|@translate}{literal}&nbsp;("+displayTime(timeElapsed/1000)+")");
218    }
219  }
220
221  function updateFillDatabaseOption()
222  {
223    $.ajax(
224      {
225        type: "POST",
226        url: "{/literal}{$datas.urlRequest}{literal}",
227        async: true,
228        data: { ajaxfct:"admin.config.setOption", id:'amd_FillDataBaseContinuously', value:$('#iamd_FillDataBaseContinuously').get(0).checked?'y':'n' },
229      }
230    );
231  }
232
233  function displayAnalyzedOption()
234  {
235    if($('#iAnalyzeAnalyzed').css('display')=='none')
236    {
237      $('#iAnalyzeAnalyzed').css('display', 'block');
238      $('#ianalyze_action4').get(0).checked=true;
239    }
240  }
241
242
243
244</script>
245{/literal}
246
247<h2>{'g003_updating_metadata'|@translate}</h2>
248
249<div id="dialog"></div>
250
251<div id='ianalyzearea'>
252  <form class="formtable">
253    <fieldset>
254      <legend>{'g003_options'|@translate}</legend>
255      <label><input onclick='updateFillDatabaseOption();' type="checkbox" id='iamd_FillDataBaseContinuously' {if $amdConfig.amd_FillDataBaseContinuously=='y'}checked{/if}>&nbsp;{'g003_fillDatabaseContinuously'|@translate}</label><br>
256
257      {if !(in_array('exif', $amdConfig.amd_FillDataBaseExcludeFilters) and
258            in_array('xmp', $amdConfig.amd_FillDataBaseExcludeFilters) and
259            in_array('iptc', $amdConfig.amd_FillDataBaseExcludeFilters) and
260            in_array('xmp', $amdConfig.amd_FillDataBaseExcludeFilters) and
261            in_array('com', $amdConfig.amd_FillDataBaseExcludeFilters)) }
262        <br>
263        {'g003_ignoreMetadata'|@translate}<br>
264        <table style='margin-left:0px;'>
265          <tr style='vertical-align:top;text-align:left;'>
266            <td width='150px'>
267              {if !in_array('magic', $amdConfig.amd_FillDataBaseExcludeFilters)}
268              <label><input onclick='displayAnalyzedOption();' type="checkbox" id='iFillDataBaseIgnore_magic' {if in_array('magic', $amdConfig.amd_FillDataBaseIgnoreSchemas)}checked{/if}>&nbsp;Magic</label><br>
269              {/if}
270              {if !in_array('exif', $amdConfig.amd_FillDataBaseExcludeFilters)}
271              <label><input onclick='displayAnalyzedOption();' type="checkbox" id='iFillDataBaseIgnore_exif' {if in_array('exif', $amdConfig.amd_FillDataBaseIgnoreSchemas)}checked{/if}>&nbsp;EXIF</label><br>
272              {/if}
273              {if !in_array('iptc', $amdConfig.amd_FillDataBaseExcludeFilters)}
274              <label><input onclick='displayAnalyzedOption();' type="checkbox" id='iFillDataBaseIgnore_iptc' {if in_array('iptc', $amdConfig.amd_FillDataBaseIgnoreSchemas)}checked{/if}>&nbsp;IPTC</label><br>
275              {/if}
276              {if !in_array('xmp', $amdConfig.amd_FillDataBaseExcludeFilters)}
277              <label><input onclick='displayAnalyzedOption();' type="checkbox" id='iFillDataBaseIgnore_xmp' {if in_array('xmp', $amdConfig.amd_FillDataBaseIgnoreSchemas)}checked{/if}>&nbsp;XMP</label><br>
278              {/if}
279              {if !in_array('com', $amdConfig.amd_FillDataBaseExcludeFilters)}
280              <label><input onclick='displayAnalyzedOption();' type="checkbox" id='iFillDataBaseIgnore_com' {if in_array('com', $amdConfig.amd_FillDataBaseIgnoreSchemas)}checked{/if}>&nbsp;COM</label>
281              {/if}
282            </td>
283            <td style='border-left:1px dotted;'><br><span style='font-style:italic;margin-left:8px;'>{'g003_fillDatabaseIgnoreWarning'|@translate}</span></td>
284          </tr>
285        </table>
286      {/if}
287    </fieldset>
288
289    <fieldset>
290      <legend>{'g003_update_metadata'|@translate}</legend>
291        <div>
292          <div style='display: inline-block; border-right: 1px dotted; margin-right: 4px; padding-right: 8px;'>
293            <label>
294              <input type="radio" value="caddieAdd" name="fAMD_analyze_action" id="ianalyze_action2" checked>&nbsp;
295              {'g003_analyze_caddie_add_pictures'|@translate}&nbsp;
296            </label><br>
297
298            <label>
299              <input type="radio" value="caddieReplace" name="fAMD_analyze_action" id="ianalyze_action3">&nbsp;
300              {'g003_analyze_caddie_replace_pictures'|@translate}&nbsp;
301            </label><br>
302          </div>
303          <span style='font-style: italic; position: relative; top: -12px;'>{$datas.caddieNbPictures}</span>
304        </div>
305
306        <label>
307          <input type="radio" value="notAnalayzed" name="fAMD_analyze_action" id="ianalyze_action0">&nbsp;
308          {'g003_analyze_not_analyzed_pictures'|@translate}
309        </label><br>
310
311        <label>
312          <input type="radio" value="all" name="fAMD_analyze_action" id="ianalyze_action1">&nbsp;
313          {'g003_analyze_all_pictures'|@translate}
314        </label><br>
315
316
317
318          <input type="radio" value="randomList" name="fAMD_analyze_action" id="ianalyze_action5">&nbsp;
319          {'g003_analyze_random_pictures'|@translate|replace:'%s':"<input type='text' size='4' id='ianalyze_action6' value='500' style='display:inline;' onfocus='$(&quot;#ianalyze_action5&quot;).attr(&quot;checked&quot;, true);'>"}
320        <br>
321
322
323        <span id='iAnalyzeAnalyzed' style='display:none;'>
324          <label>
325            <input type="radio" value="analyzed" name="fAMD_analyze_action" id="ianalyze_action4">&nbsp;
326            {'g003_analyze_analyzed_pictures'|@translate}
327          </label><br>
328        </span>
329
330        {if $amdConfig.amd_DisplayWarningsMessageUpdate=='y'}
331          <div class="warnings">
332            <p style="font-size: 120%;">{'g003_warning_on_analyze_0'|@translate}</p>
333            <p>{'g003_warning_on_analyze_1'|@translate}</p>
334            <p>{'g003_warning_on_analyze_2'|@translate}</p>
335          </div>
336        {/if}
337
338        <br>
339        <input type="hidden" id="iamd_NumberOfItemsPerRequest" value="{$datas.NumberOfItemsPerRequest}">
340        <!--
341        {'g003_setting_nb_items_per_request'|@translate}&nbsp;
342        <div id="iamd_nb_item_per_request_slider"></div>
343        <div id="iamd_nb_item_per_request_display"></div>
344        <br><br>
345        -->
346        <input type="button" value="{'g003_analyze'|@translate}" onclick="doAnalyze();">
347    </fieldset>
348  </form>
349</div>
350
351
352
353
354<script type="text/javascript">
355  init();
356</script>
Note: See TracBrowser for help on using the repository browser.