]> CyberLeo.Net >> Repos - Github/YOURLS.git/blob - js/insert.js
Make insert.js independent from tablesorter.js
[Github/YOURLS.git] / js / insert.js
1 // Init some stuff\r
2 $(document).ready(function(){\r
3         $('#add-url, #add-keyword').keyup(function(e){ if (e.keyCode == 13) {add();} } );\r
4         reset_url();\r
5         $('#new_url_form').attr('action', 'javascript:add();');\r
6         if ($("#tblUrl").tablesorter && $("#tblUrl tr.nourl_found").length != 1) {\r
7                 $("#tblUrl").tablesorter({\r
8                         sortList:[[2,1]], // Sort on column #3 (numbering starts at 0)\r
9                         headers: { 5: {sorter: false} }, // no sorter on column #6\r
10                         widgets: ['zebra'] // prettify\r
11                 });\r
12         }\r
13 });\r
14 \r
15 // Create new link and add to table\r
16 function add() {\r
17         var newurl = $("#add-url").val();\r
18         if ( !newurl || newurl == 'http://' || newurl == 'https://' ) {\r
19                 alert('no URL ?');\r
20                 return;\r
21         }\r
22         var keyword = $("#add-keyword").val();\r
23         add_loading("#add-button");\r
24         $.getJSON(\r
25                 "index_ajax.php",\r
26                 {mode:'add', url: newurl, keyword: keyword},\r
27                 function(data){\r
28                         if(data.status == 'success') {\r
29                                 $('#tblUrl tbody').prepend( data.html ).trigger("update");\r
30                                 $('.nourl_found').remove();\r
31                                 zebra_table();\r
32                                 reset_url();\r
33                                 increment();\r
34                         }\r
35                         feedback(data.message, data.status);\r
36                         end_loading("#add-button");\r
37                         end_disable("#add-button");\r
38                 }\r
39         );\r
40 }\r
41 \r
42 // Display the edition interface\r
43 function edit(id) {\r
44         add_loading("#edit-button-" + id);\r
45         add_loading("#delete-button-" + id);\r
46         var keyword = $('#keyword_'+id).val();\r
47         $.getJSON(\r
48                 "index_ajax.php",\r
49                 { mode: "edit_display", keyword: keyword },\r
50                 function(data){\r
51                         $("#id-" + id).after( data.html );\r
52                         $("#edit-url-"+ id).focus();\r
53                         end_loading("#edit-button-" + id);\r
54                         end_loading("#delete-button-" + id);\r
55                 }\r
56         );\r
57 }\r
58 \r
59 // Delete a link\r
60 function remove(id) {\r
61         if (!confirm('Really delete?')) {\r
62                 return;\r
63         }\r
64         var keyword = $('#keyword_'+id).val();\r
65         $.getJSON(\r
66                 "index_ajax.php",\r
67                 { mode: "delete", keyword: keyword },\r
68                 function(data){\r
69                         if (data.success == 1) {\r
70                                 $("#id-" + id).fadeOut(function(){$(this).remove();zebra_table();});\r
71                         } else {\r
72                                 alert('something wrong happened while deleting :/');\r
73                         }\r
74                 }\r
75         );\r
76 }\r
77 \r
78 // Cancel edition of a link\r
79 function hide_edit(id) {\r
80         $("#edit-" + id).fadeOut(200, function(){\r
81                 end_disable("#edit-button-" + id);\r
82                 end_disable("#delete-button-" + id);\r
83         });\r
84 }\r
85 \r
86 // Save edition of a link\r
87 function edit_save(id) {\r
88         add_loading("#edit-close-" + id);\r
89         var newurl = $("#edit-url-" + id).val();\r
90         var newkeyword = $("#edit-keyword-" + id).val();\r
91         var keyword = $('#old_keyword_'+id).val();\r
92         var www = $('#yourls-site').val();\r
93         $.getJSON(\r
94                 "index_ajax.php",\r
95                 {mode:'edit_save', url: newurl, keyword: keyword, newkeyword: newkeyword },\r
96                 function(data){\r
97                         if(data.status == 'success') {\r
98                                 $("#url-" + id).html('<a href="' + data.url.url + '" title="' + data.url.url + '">' + data.url.url + '</a>');\r
99                                 $("#keyword-" + id).html('<a href="' + data.url.shorturl + '" title="' + data.url.shorturl + '">' + data.url.shorturl + '</a>');\r
100                                 $("#timestamp-" + id).html(data.url.date);\r
101                                 $("#edit-" + id).fadeOut(200, function(){\r
102                                         $('#tblUrl tbody').trigger("update");\r
103                                 });\r
104                         }\r
105                         feedback(data.message, data.status);\r
106                         end_disable("#edit-close-" + id);\r
107                         end_loading("#edit-close-" + id);\r
108                         end_disable("#edit-button-" + id);\r
109                         end_disable("#delete-button-" + id);\r
110                 }\r
111         );\r
112 }\r
113 \r
114 // Unused for now since HTTP Auth sucks donkeys.\r
115 function logout() {\r
116         $.ajax({\r
117                 type: "POST",\r
118                 url: "index_ajax.php",\r
119                 data: {mode:'logout'},\r
120                 success: function() {\r
121                         window.parent.location.href = window.parent.location.href;\r
122                 }\r
123         });\r
124 }\r
125 \r
126 // Begin the spinning animation & disable a button\r
127 function add_loading(el) {\r
128         $(el).attr("disabled", "disabled").addClass('disabled').addClass('loading');\r
129 }\r
130 \r
131 // End spinning animation\r
132 function end_loading(el) {\r
133         $(el).removeClass('loading');\r
134 }\r
135 \r
136 // Un-disable an element\r
137 function end_disable(el) {\r
138         $(el).removeAttr("disabled").removeClass('disabled');\r
139 }\r
140 \r
141 // Prettify table with odd & even rows\r
142 function zebra_table() {\r
143         $("#tblUrl tbody tr:even").removeClass('odd').addClass('even');\r
144         $("#tblUrl tbody tr:odd").removeClass('even').addClass('odd');\r
145         $('#tblUrl tbody').trigger("update");\r
146 }\r
147 \r
148 // Update feedback message\r
149 function feedback(msg, type) {\r
150         var span = (type == 'fail') ? '<span class="fail">' : '<span>' ;\r
151         var delay = (type == 'fail') ? 2500 : 1000 ;\r
152         $('#feedback').html(span + msg + '</span>').fadeIn(200,function(){\r
153                 $(this).animate({'opacity':1}, delay, function() {\r
154                         $(this).fadeOut(800);\r
155                 })\r
156         });\r
157 }\r
158 \r
159 // Ready to add another URL\r
160 function reset_url() {\r
161         $('#add-url').val('http://').focus();\r
162         $('#add-keyword').val('');\r
163 }\r
164 \r
165 // Increment URL counters\r
166 function increment() {\r
167         $('.increment').each(function(){\r
168                 $(this).html( parseInt($(this).html()) + 1);\r
169         });\r
170 }