OSDN Git Service

Initial version.
[mtpm/PluginManager.git] / tmpl / include / pm_package_list_table.tmpl
1 <style>
2 .updated img {
3         background-image:url(<mt:StaticWebPath />images/status_icons/success.gif);
4 }
5 .need_upgrade img {
6         background-image:url(<mt:StaticWebPath />images/status_icons/warning.gif);
7 }
8 .not_installed img {
9         background-image:url(<mt:StaticWebPath />images/status_icons/draft.gif);
10 }
11
12 .listing td.cb {
13         vertical-align: middle;
14 }
15
16 .listing td.description {
17         border-top: 1px dotted #999;
18 }
19 </style>
20
21 <form id="do_upgrade_form">
22
23
24 <div class="filter first-child last-child">
25         <div>
26                         <__trans phrase="Status" />
27                         <select id="status">
28                                 <option value="" class="first-child"><__trans phrase="Not specified" /></option>
29                                 <option value="not_installed"><__trans phrase="Not installed" /></option>
30                                 <option value="installed"><__trans phrase="Installed" /></option>
31                                 <option value="need_upgrade" class="last-child"><__trans phrase="Need upgrade" /></option>
32                         </select>
33         </div>
34         <div>
35                         <__trans phrase="Category" />
36                         <select id="category">
37                                 <option value="" class="first-child"><__trans phrase="Not specified" /></option>
38
39                                 <option value="action streams"><__trans phrase="Action Streams" /></option>
40                                 <option value="administrative/user interface"><__trans phrase="Administrative/User Interface" /></option>
41                                 <option value="anti-spam"><__trans phrase="Anti-spam" /></option>
42                                 <option value="commenting"><__trans phrase="Commenting" /></option>
43                                 <option value="community"><__trans phrase="Community" /></option>
44                                 <option value="developer"><__trans phrase="Developer" /></option>
45                                 <option value="organization"><__trans phrase="Organization" /></option>
46                                 <option value="photos"><__trans phrase="Photos" /></option>
47                                 <option value="template set"><__trans phrase="Template Set" /></option>
48                                 <option value="template/tag helpers"><__trans phrase="Template/Tag Helpers" /></option>
49                                 <option value="text formatting"><__trans phrase="Text Formatting" /></option>
50                                 <option value="utility"><__trans phrase="Utility" /></option>
51                                 <option value="web services"><__trans phrase="Web Services" /></option>
52                                 <option value="widgets"><__trans phrase="Widgets" /></option>
53
54                                 <option value="joke"><__trans phrase="Joke" /></option>
55                         </select>
56         </div>
57         <div>
58                         <__trans phrase="Compatiblity" />
59                         <select id="compatiblity">
60                                 <option value="" class="first-child"><__trans phrase="Not specified" /></option>
61                                 <option value="4">4</option>
62                                 <option value="5">5</option>
63                         </select>
64         </div>
65         <div>
66                         <__trans phrase="License" />
67                         <select id="license">
68                                 <option value="" class="first-child"><__trans phrase="Not specified" /></option>
69                                 <option value="freeware"><__trans phrase="Freeware" /></option>
70                                 <option value="donationware"><__trans phrase="Donationware" /></option>
71                                 <option value="shareware"><__trans phrase="Shareware" /></option>
72                                 <option value="commercial"><__trans phrase="Commercial" /></option>
73                                 <option value="gpl"><__trans phrase="GPL" /></option>
74                                 <option value="bsd"><__trans phrase="BSD" /></option>
75                                 <option value="mit"><__trans phrase="MIT" /></option>
76                                 <option value="perl artistic"><__trans phrase="Perl Artistic" /></option>
77                                 <option value="multiple"><__trans phrase="Multiple" /></option>
78                         </select>
79         </div>
80         <div>
81                         <__trans phrase="Target" />
82                         <select id="target">
83                                 <option value="" class="first-child"><__trans phrase="Not specified" /></option>
84                                 <option value="open source"><__trans phrase="Open Source" /></option>
85                                 <option value="commercial"><__trans phrase="Commercial" /></option>
86                                 <option value="enterprise "><__trans phrase="Enterprise " /></option>
87                         </select>
88         </div>
89         <div>
90                 <button onclick="update_table(); return false"><__trans phrase="Filter" /></button>
91         </div>
92 </div>
93
94 <br />
95
96 <div id="actions-bar-top" class="actions-bar actions-bar-top">
97     <span class="button-actions actions">
98                 <button
99                         accesskey="r"
100                         title=""
101                         id="do_update"
102                         onclick="window.location.href = '<mt:var name="link_package_update">'; return false;"
103                 ><__trans phrase="Update Packages"></button>
104         </span>
105 </div>
106
107 <div id="actions-bar-top" class="actions-bar actions-bar-top">
108 <!--
109         <div id="pagination-top" class="pagination">
110                 <span class="start-disabled"><em>&lt;&lt;</em>&nbsp;</span>
111                 <span class="to-start-disabled"><em>&lt;</em>&nbsp;</span>
112                 <span class="current-rows">1 &ndash; 112 / 112</span>
113                 <span class="to-end-disabled">&nbsp;<em>&gt;</em></span>
114                 <span class="end-disabled">&nbsp;<em>&gt;&gt;</em></span>
115         </div>
116 -->
117
118     <span class="button-actions actions">
119                 <button
120                         accesskey="r"
121                         title=""
122                         id="do_upgrade"
123                 ><__trans phrase="Install / Upgrade"></button>
124                 <button
125                         accesskey="x"
126                         title=""
127                         id="do_remove"
128                 ><__trans phrase="Remove"></button>
129         </span>
130
131 <!--
132     <span class="plugin-actions actions">
133         <select name="plugin_action_selector" onchange="updatePluginAction(this)">
134                 <option value="0">アクション...</option>
135                 <option value="set_draft">ブログ記事の公開を取り消し</option>
136                 <option value="add_tags">タグの追加</option>
137                 <option value="remove_tags">タグの削除</option>
138         </select>
139         <button
140                 class="small-button mt-entry-listing-form-action"
141         >Go</button>
142     </span>
143 -->
144 </div>
145
146 <div class="listing">
147 <!--
148 <table id="package_table">
149 -->
150 <table id="package_table" class="entry-listing-table compact" cellspacing="0">
151         <thead>
152             <tr>
153                 <th class="cb"><input type="checkbox" name="id-head" value="all" class="select" /></th>
154                 <th class="status si">
155                     <img src="<mt:StaticWebPath />images/status_icons/invert-flag.gif" alt="" title="" width="9" height="9" />
156                 </th>
157                 <th class="title primary-col"><__trans phrase="Name" /></th>
158                                 <th class="category"><__trans phrase="Category" /></th>
159                 <th class="author"><__trans phrase="Author" /></th>
160                 <th class="weblog"><__trans phrase="Compatiblity" /></th>
161                 <th class="datetime"><__trans phrase="License" /></th>
162                 <th class="view"><__trans phrase="Target" /></th>
163             </tr>
164         </thead>
165         <tfoot>
166             <tr>
167                 <th class="cb"><input type="checkbox" name="id-head" value="all" class="select" /></th>
168                 <th class="status si">
169                     <img src="<mt:StaticWebPath />images/status_icons/invert-flag.gif" alt="" title="" width="9" height="9" />
170                 </th>
171                 <th class="title primary-col"><__trans phrase="Name" /></th>
172                                 <th class="category"><__trans phrase="Category" /></th>
173                 <th class="author"><__trans phrase="Author" /></th>
174                 <th class="weblog"><__trans phrase="Compatiblity" /></th>
175                 <th class="datetime"><__trans phrase="License" /></th>
176                 <th class="view"><__trans phrase="Target" /></th>
177             </tr>
178         </tfoot>
179                 <tbody>
180
181 <tr id="package_row_template">
182         <td rowspan="2" class="cb">
183                 <input type="hidden" class="version" name="" value="" />
184                 <input type="checkbox" name="packages" value="" />
185         </td>
186         <td><img width="9" height="9" alt="" src="<mt:StaticWebPath />images/spacer.gif"/></td>
187         <td class="package_name"> </td>
188         <td class="category"> </td>
189         <td class="author"> </td>
190         <td class="compatiblity"> </td>
191         <td class="license"> </td>
192         <td class="target"> </td>
193 </tr>
194 <tr id="package_row_template2">
195         <td class="description" colspan="8"> </td>
196 </tr>
197
198 </tbody>
199 </table>
200 </div>
201
202 <script type="text/javascript">
203 var update_table = function() { };
204 jQuery(function() {
205         $ = jQuery;
206         var table = $('#package_table tbody');
207         var tmpl = $('#package_row_template');
208         var tmpl2 = $('#package_row_template2');
209
210         $('input[type="checkbox"].select').click(function() {
211                 $('input[type="checkbox"]').attr('checked', this.checked);
212         });
213
214         var packages = {
215         <mt:loop name="packages" glue=",">
216                 '<mt:var name="__key__" encode_js="1">': {
217                 <mt:loop name="__value__" glue=",">
218                         '<mt:var name="__key__" encode_js="1">': {
219                                 'id': '<mt:var name="__value__{id}" encode_js="1">',
220                                 'name': '<mt:var name="__value__{name}" encode_js="1">',
221                                 'version': '<mt:var name="__value__{version}" encode_js="1">',
222                                 'author_link': '<mt:var name="__value__{author_link}" encode_js="1">',
223                                 'author_name': '<mt:var name="__value__{author_name}" encode_js="1">',
224                                 'description': '<mt:var name="__value__{description}" encode_js="1">',
225                                 'doc_link': '<mt:var name="__value__{doc_link}" encode_js="1">',
226                                 'plugin_link': '<mt:var name="__value__{plugin_link}" encode_js="1">',
227
228                                 'category': '<mt:var name="__value__{category}" encode_js="1">',
229                                 <mt:var name="__value__{compatiblity}" setvar="compatiblity" />
230                                 'compatiblity': [<mt:loop name="compatiblity" glue=",">'<mt:var name="__value__" encode_js="1">'</mt:loop>],
231                                 'license': '<mt:var name="__value__{license}" encode_js="1">',
232                                 <mt:var name="__value__{target}" setvar="target" />
233                                 'target': [<mt:loop name="target" glue=",">'<mt:var name="__value__" encode_js="1">'</mt:loop>],
234
235                                 'installed': '<mt:var name="__value__{installed}" encode_js="1" >'
236                         }
237                 </mt:loop>
238                 }
239         </mt:loop>
240         };
241
242         function version_compare(a, b) {
243                 var atmp = a.replace(/\D/, '.').replace(/\.+/, '.').split(/\./);
244                 var btmp = b.replace(/\D/, '.').replace(/\.+/, '.').split(/\./);
245
246                 var i = 0;
247                 while (true) {
248                         if (! atmp[i]) {
249                                 if (btmp[i]) {
250                                         return -1;
251                                 }
252                                 else {
253                                         return 0;
254                                 }
255                         }
256                         else if (! btmp[i]) {
257                                 return 1;
258                         }
259                         else if (atmp[i] != btmp[i]) {
260                                 return atmp[i] - btmp[i];
261                         }
262                         i++;
263                 }
264         }
265
266         update_table = function(filter) {
267                 table.children().remove();
268                 var index = 0;
269
270                 var filters = [];
271                 filters['status'] = $('#status').val().toLowerCase();
272                 filters['category'] = $('#category').val().toLowerCase();
273                 filters['compatiblity'] = $('#compatiblity').val().toLowerCase();
274                 filters['license'] = $('#license').val().toLowerCase();;
275                 filters['target'] = $('#target').val().toLowerCase();
276                 var auto_filter1 = ['category', 'license'];
277                 var auto_filter2 = ['compatiblity', 'target'];
278
279                 $.each(packages, function(k, v) {
280                         var version = "0";
281                         var installed_version = "";
282                         var param = {};
283                         $.each(v, function(kk, vv) {
284                                 if (version_compare(kk, version) > 0) {
285                                         $.each(vv, function(kkk, vvv) {
286                                                 param[kkk] = vvv;
287                                         });
288                                         version = kk;
289                                 }
290
291                                 if (vv.installed) {
292                                         installed_version = kk;
293                                 }
294                         });
295
296
297                         for (var i = 0; i < auto_filter1.length; i++) {
298                                 var filter_key = auto_filter1[i];
299                                 if (
300                                         (filters[filter_key] != '')
301                                         && (filters[filter_key] != param[filter_key].toLowerCase())
302                                 ) {
303                                         return true;
304                                 }
305                         }
306
307                         for (var i = 0; i < auto_filter2.length; i++) {
308                                 var filter_key = auto_filter2[i];
309                                 if (filters[filter_key] != '') {
310                                         var found = false;
311
312                                         for (var j = 0; j < param[filter_key].length; j++) {
313                                                 if (filters[filter_key] == param[filter_key][j]) {
314                                                         found = true;
315                                                 }
316                                         }
317
318                                         if (! found) {
319                                                 return true;
320                                         }
321                                 }
322                         }
323
324                         var row = tmpl.clone();
325                         if ((index % 2) == 1) {
326                                 row.addClass('even');
327                         }
328
329                         if (installed_version) {
330                                 if (installed_version == version) {
331                                         row.addClass('updated');
332                                         if (
333                                                 (filters['status'] != '')
334                                                 && (filters['status'] != 'installed') 
335                                         ) {
336                                                 return true;
337                                         }
338                                 }
339                                 else {
340                                         row.addClass('need_upgrade');
341                                         if (
342                                                 (filters['status'] != '')
343                                                 && (filters['status'] != 'installed') 
344                                                 && (filters['status'] != 'need_upgrade') 
345                                         ) {
346                                                 return true;
347                                         }
348                                 }
349                         }
350                         else {
351                                 row.addClass('not_installed');
352                                 if (
353                                         (filters['status'] != '')
354                                         && (filters['status'] != 'not_installed') 
355                                 ) {
356                                         return true;
357                                 }
358                         }
359
360                         row.find('.version').
361                                 attr('name', param.id).
362                                 val(param.version);
363                         row.find('[name="packages"]').val(param.id);
364                         row.find('.package_name').append(param.name);
365                         row.find('.category').append(param.category);
366                         row.find('.compatiblity').append(param.compatiblity.join(','));
367                         row.find('.license').append(param.license);
368                         row.find('.target').append(param.target.join('<br />'));
369
370                         if (param.author_link) {
371                                 row.find('.author').append(
372                                         '<a href="' + param.author_link + '" target="_blank">'
373                                         + param.author_name + '</a>'
374                                 );
375                         }
376                         else {
377                                 row.find('.author').append(param.author_name);
378                         }
379
380                         row.show();
381
382                         table.append(row);
383
384
385                         var row2 = tmpl2.clone();
386                         if ((index % 2) == 1) {
387                                 row2.addClass('even');
388                         }
389                         row2.find('.description').append(param.description);
390                         row2.show();
391                         table.append(row2);
392
393
394                         index++;
395                 });
396         };
397
398         update_table();
399 });
400 </script>
401
402 </form>