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