source: extensions/rv_autocomplete/admin/custom.tpl @ 25546

Last change on this file since 25546 was 25546, checked in by rvelices, 10 years ago

rv_autocomplete uses core datatables script

File size: 6.3 KB
Line 
1<div class="titrePage">
2  <h2>RV Autocomplete {$TABSHEET_TITLE}</h2>
3</div>
4
5<div id="acFormContainer" style="text-align:left">
6<form>
7<table>
8<tr>
9<td>
10        <label for=ac_name style="min-width:100px">{'Query:'|@translate}</label>
11</td>
12<td>
13        <input id="ac_name" type="text" size="48">
14</td>
15</tr>
16<tr>
17<td colspan=2>
18<small>{'Use <b>\</b> to break search (e.g. Central Park\, NY will not match NY but it will display it)'|@translate}
19</small>
20</td>
21</tr>
22
23
24<tr>
25<td>
26<label for=ac_counter>{'Weight:'|@translate}</label>
27</td>
28<td>
29        <input id="ac_counter" type="text" size="3">
30</td>
31</tr>
32
33<tr>
34<td>
35<label for=ac_url>{'Url:'|@translate}</label>
36</td>
37<td>
38        <input id="ac_url" type="text" size="48">
39</td>
40</tr>
41
42<tr>
43<td colspan=2>
44<small>{'Leave empty for automatic gallery search <br>OR enter an url ($r/ at the start of url means this gallery)<br>OR enter q=Term to search for a specific term'|@translate}
45</small>
46</td>
47</tr>
48</table>
49</form>
50</div>
51
52<p><a class="openAddNew">{'Create a new suggestion'|@translate}</a></p>
53<table id="csTable" class="table2">
54<thead>
55<tr class="throw">
56<th>{'Name'|@translate}</th>
57<th>{'Weight'|@translate}</th>
58<th>{'URL'|@translate}</th>
59<th>{'Actions'|@translate}</th>
60</tr>
61</thead>
62<tbody>
63</tbody>
64</table>
65
66<p><a class="openAddNew">{'Create a new suggestion'|@translate}</a></p>
67
68{include file='include/colorbox.inc.tpl'}
69
70{combine_css path="themes/default/js/ui/theme/jquery.ui.core.css"}
71{combine_css path="themes/default/js/ui/theme/jquery.ui.button.css"}
72{combine_css path="themes/default/js/ui/theme/jquery.ui.dialog.css"}
73{combine_css path="themes/default/js/ui/theme/jquery.ui.theme.css"}
74
75{combine_script id="jquery.ui.dialog" load="footer" require="jquery.ui.button"}
76{combine_script id='core.scripts' load='async' path='themes/default/js/scripts.js'}
77
78
79{combine_script id="jquery.dataTables" load="footer" path="themes/default/js/plugins/jquery.dataTables.js"}
80
81{html_style}{literal}
82.ui-accordion-header-icon {display: none}
83
84.dtBar {
85        text-align: right;
86}
87
88.dtBar DIV {
89        display: inline;
90        padding-right: 10px;
91}
92
93#csTable_filter {
94        display: block;
95        float: left;
96        padding-left: 10px;
97}
98
99.dataTables_paginate A {
100        padding-left: 3px;
101}
102
103#csTable TH {
104        cursor: pointer;
105}
106
107.sorting_asc:after { content: " \2193" }
108.sorting_desc:after { content: " \2191" }
109{/literal}{/html_style}
110
111{footer_script}
112var iniDatas = [
113{foreach from=$suggestions item=s name=sloop}
114{ldelim}id:{$s.id},name:"{$s.name|@escape:javascript}",counter:{$s.counter},url:"{$s.url|@escape:javascript}",U_LINK:"{$s.U_LINK|@escape:javascript}"{rdelim}{if !$smarty.foreach.sloop.last},{/if}
115{/foreach}
116];
117var SHelper = {ldelim}
118{literal}
119
120buildRowData: function(item) {
121        var rowData = [];
122        rowData.push(item.name);
123        rowData.push(item.counter);
124        rowData.push( "<a href=\""+item.U_LINK+"\" onclick=\"return SHelper.zoom(this.href)\">"
125                + (item.url ? item.url : "show" )
126                + "</a>"
127        );
128        rowData.push("<a href=\"\" onclick=\"return SHelper.del(this)\">Delete</a>"
129                + " <a href=\"\" onclick=\"return SHelper.edit(this)\">Edit</a>"
130        );
131        return rowData;
132},
133
134buildRow: function(item) {
135        var rd = SHelper.buildRowData(item)
136         , row = "<tr>";
137         
138        for (var i =0; i<rd.length; i++)
139                row += "<td>"+rd[i]+"</td>";
140
141        row += "</tr>";
142
143        return $(row).data("ac", item)
144},
145
146rowFromNode: function(node) {
147        return $(node).parents("tr");
148},
149
150zoom: function(url){
151        jQuery.colorbox( {
152                href: url,
153                iframe: 1,
154                width: "90%", height: "90%"
155        });
156        return false;
157},
158
159del: function(node){
160        if (!confirm("Are you sure?")) return false;
161        var row = SHelper.rowFromNode(node)
162                , item=row.data("ac");
163               
164        row.fadeTo(500, 0.4);
165        (new PwgWS("")).callService(
166                "rvac.delCustom", {id: item.id} ,
167                {
168                        method: "POST",
169                        onFailure: function(num, text) { row.stop(); row.fadeTo(0,1); alert(num + " " + text); },
170                        onSuccess: function(result) {
171                                // row.remove();
172                                dataTable.fnDeleteRow( row[0] );
173                        }
174                }
175        );
176
177        return false;
178},
179
180add: function() {
181        $("#ac_name,#ac_counter,#ac_url").val( "" );
182        $("#acFormContainer")
183                .dialog("option", "buttons", [{text: "Create", click: function() {
184                                (new PwgWS("")).callService(
185                                        "rvac.addCustom", { name:$("#ac_name").val(), counter:$("#ac_counter").val(), url:$("#ac_url").val() },
186                                        {
187                                                method: "POST",
188                                                onFailure: function(num, text) {
189                                                        alert(num + " " + text);
190                                                },
191                                                onSuccess: function(result) {
192                                                        //$("#csTable").append( SHelper.buildRow(result) );
193                                                        var rd = SHelper.buildRowData(result);
194                                                        var node = dataTable.fnGetNodes( dataTable.fnAddData(rd)[0] );
195                                                        $(node).data("ac", result);
196
197                                                        $("#ac_name,#ac_counter,#ac_url").val( "" );
198                                                }
199                                        }
200                                );
201                        }
202                }, { text: "Close", click: function(){ $(this).dialog("close") }} ])
203                .dialog("open");
204},
205
206edit: function(node) {
207        var row = SHelper.rowFromNode(node)
208                , item=row.data("ac");
209
210        $("#ac_name").val( item.name );
211        $("#ac_counter").val( item.counter );
212        $("#ac_url").val( item.url );
213
214        $("#acFormContainer")
215                .dialog("option", "buttons", [{text: "Modify", click: function() {
216                                (new PwgWS("")).callService(
217                                        "rvac.modCustom", {id: item.id, name:$("#ac_name").val(), counter:$("#ac_counter").val(), url:$("#ac_url").val() },
218                                        {
219                                                method: "POST",
220                                                onFailure: function(num, text) {
221                                                        alert(num + " " + text);
222                                                },
223                                                onSuccess: function(result) {
224                                                        /*row.after( SHelper.buildRow(result) )
225                                                                .remove();*/
226
227                                                        dataTable.fnUpdate(SHelper.buildRowData(result), row[0]);
228                                                        row.data("ac", result);
229
230                                                        $("#acFormContainer").dialog("close");
231                                                }
232                                        }
233                                );
234                        }
235                }, { text: "Close", click: function(){ $(this).dialog("close") }} ])
236                .dialog("open");
237
238        return false;
239}
240}
241
242$().ready( function() {
243        var table = $("#csTable");
244        $.each(iniDatas, function(i, item) {
245                table.append( SHelper.buildRow(item) );
246        });
247        dataTable = table.dataTable( {
248                sDom : '<"dtBar"filp>rt<"dtBar"ilp>',
249                iDisplayLength: 100,
250                aoColumnDefs: [
251                        { bSearchable: false, aTargets: [1,3] },
252                        { bSortable: false, aTargets: [3] }
253                ],
254                asStripeClasses: ["row1", "row2"],
255                bAutoWidth: false,
256                aaSorting: []
257        });
258       
259        $("#acFormContainer").dialog({
260                autoOpen: false,
261                modal: true,
262                width: "auto"
263        });
264        $(".openAddNew").click( SHelper.add ).button();
265       
266        $("tr", table).hover(
267                function() {
268                        $(this).addClass("ui-state-highlight");
269                },
270                function() {
271                        $(this).removeClass("ui-state-highlight");
272                }
273        );
274});
275{/literal}
276{/footer_script}
Note: See TracBrowser for help on using the repository browser.