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