]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Update Autocomplete plugin for reusable notice forms in 1.0.x. It's fun!
authorBrion Vibber <brion@pobox.com>
Thu, 10 Mar 2011 02:01:41 +0000 (18:01 -0800)
committerBrion Vibber <brion@pobox.com>
Thu, 10 Mar 2011 02:01:41 +0000 (18:01 -0800)
Now pulls the fetch API URL from a dedicated <span> with a data attribute ('data-url', should pass HTML 5 validators for our future overlords)

plugins/Autocomplete/Autocomplete.js
plugins/Autocomplete/AutocompletePlugin.php

index c3f022702ac0fb107e11a29d67ec859df3be6306..2b031cc3132aa0d4878a123e718437099dac367a 100644 (file)
@@ -1,4 +1,15 @@
-$(document).ready(function(){
+(function(SN, $) {
+
+var origInit = SN.Init.NoticeFormSetup;
+SN.Init.NoticeFormSetup = function(form) {
+    origInit(form);
+
+    // Only attach to traditional-style forms
+    var textarea = form.find('.notice_data-text:first');
+    if (textarea.length == 0) {
+        return;
+    }
+
     function fullName(row) {
         if (typeof row.fullname == "string" && row.fullname != '') {
             return row.nickname + ' (' + row.fullname + ')';
@@ -6,7 +17,9 @@ $(document).ready(function(){
             return row.nickname;
         }
     }
-    $('#notice_data-text').autocomplete($('address .url')[0].href+'main/autocomplete/suggest', {
+
+    var apiUrl = $('#autocomplete-api').attr('data-url');
+    textarea.autocomplete(apiUrl, {
         multiple: true,
         multipleSeparator: " ",
         minChars: 1,
@@ -35,4 +48,6 @@ $(document).ready(function(){
             }
         }
     });
-});
+};
+
+})(SN, jQuery);
index ca495f79f4a8db1fa11e6b18bc2cb80d332dd2c1..1479ead602995935018cdbaa7093ccc4aa7bf670 100644 (file)
@@ -51,6 +51,8 @@ class AutocompletePlugin extends Plugin
 
     function onEndShowScripts($action){
         if (common_logged_in()) {
+            $action->element('span', array('id' => 'autocomplete-api',
+                                           'data-url' => common_local_url('autocomplete')));
             $action->script($this->path('jquery-autocomplete/jquery.autocomplete.pack.js'));
             $action->script($this->path('Autocomplete.js'));
         }