This week only. Pastebin PRO Accounts Christmas Special! Don't miss out!Want more features on Pastebin? Sign Up, it's FREE!
Guest

t9599 mwehr patch

By: a guest on Mar 5th, 2013  |  syntax: Diff  |  size: 12.08 KB  |  views: 44  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Index: setup.py
  2. ===================================================================
  3. --- setup.py    (revision 12686)
  4. +++ setup.py    (working copy)
  5. @@ -10,12 +10,12 @@
  6.  
  7.  from setuptools import find_packages, setup
  8.  
  9. -version='0.4.2'
  10. +version='0.4.5'
  11.  
  12.  setup(name='AutocompleteUsers',
  13.        version=version,
  14.        description="complete the known trac users, AJAX style",
  15. -      author='Jeff Hammel',
  16. +      author='Jeff Hammel & Mario Wehr',
  17.        author_email='jhammel@openplans.org',
  18.        maintainer = 'Ryan J Ollos',
  19.        maintainer_email = 'ryano@physiosonics.com',
  20. Index: autocompleteusers/htdocs/css/autocomplete.css
  21. ===================================================================
  22. --- autocompleteusers/htdocs/css/autocomplete.css       (revision 12686)
  23. +++ autocompleteusers/htdocs/css/autocomplete.css       (working copy)
  24. @@ -1,4 +1,16 @@
  25. -.ac_results {
  26. +.ui-autocomplete-loading {
  27. +  background:url('indicator.gif') no-repeat right center
  28. +}
  29. +
  30. +.ui-autocomplete.ui-menu{
  31. +  padding: 0px;
  32. +  border: 1px solid black;
  33. +  background-color: white;
  34. +  overflow: hidden;
  35. +  z-index: 99999;
  36. + }
  37. +
  38. +.ui-autocomplete-results {
  39.   padding: 0px;
  40.   border: 1px solid black;
  41.   background-color: white;
  42. @@ -6,14 +18,14 @@
  43.   z-index: 99999;
  44.  }
  45.  
  46. -.ac_results ul {
  47. +.ui-autocomplete-results ul {
  48.   list-style-position: outside;
  49.   list-style: none;
  50.   padding: 0;
  51.   margin: 0;
  52.  }
  53.  
  54. -.ac_results li {
  55. +.ui-autocomplete-results li {
  56.   margin: 0px;
  57.   padding: 2px 5px;
  58.   cursor: default;
  59. @@ -34,20 +46,17 @@
  60.   white-space: nowrap;
  61.  }
  62.  
  63. -.ac_results li div.mail {
  64. +li div.mail {
  65.   font-size: 80%;
  66.   color: #888;
  67.  }
  68.  
  69. -.ac_loading {
  70. - background: white url('indicator.gif') right center no-repeat;
  71. -}
  72. -
  73. -.ac_odd {
  74. +.ui-autocomplete-results li.ui-autocomplete-odd{
  75.   background-color: #eee;
  76.  }
  77.  
  78. -.ac_over {
  79. +.ui-autocomplete-over {
  80.   background-color: #ffd;
  81.   color: #000;
  82.  }
  83. +
  84. Index: autocompleteusers/htdocs/js/autocomplete_newticket.js
  85. ===================================================================
  86. --- autocompleteusers/htdocs/js/autocomplete_newticket.js       (revision 12686)
  87. +++ autocompleteusers/htdocs/js/autocomplete_newticket.js       (working copy)
  88. @@ -1,5 +1,15 @@
  89.  jQuery(document).ready(function($) {
  90. -  $("#field-owner").autocomplete("subjects", {
  91. -    formatItem: formatItem
  92. -  });
  93. +  $("#field-owner").autocomplete({
  94. +         source: function( request, response ) {
  95. +                        $.ajax({
  96. +                                url: "subjects",
  97. +                                type: "GET",
  98. +                                dataType: "text",
  99. +                                data: 'q=' + request.term ,
  100. +                                success: function( data ) {
  101. +                                                response( $.map( data.split("\n"), formatItem ));
  102. +                                       }
  103. +                         });
  104. +                 }
  105. +       });
  106.  });
  107. \ No newline at end of file
  108. Index: autocompleteusers/htdocs/js/autocomplete_newticket_cc.js
  109. ===================================================================
  110. --- autocompleteusers/htdocs/js/autocomplete_newticket_cc.js    (revision 12686)
  111. +++ autocompleteusers/htdocs/js/autocomplete_newticket_cc.js    (working copy)
  112. @@ -1,10 +1,46 @@
  113.  jQuery(document).ready(function($) {
  114. -  $("#field-cc").autocomplete("subjects", {
  115. -    multiple: true,
  116. -    formatItem: formatItem,
  117. -    delay: 100
  118. -  });
  119. -  $("input:text#field-reporter").autocomplete("subjects", {
  120. -    formatItem: formatItem
  121. -  });
  122. -});
  123. \ No newline at end of file
  124. +       $("#field-cc").autocomplete({
  125. +           source: function( request, response ) {
  126. +                        $.ajax({
  127. +                                url: "subjects",
  128. +                                type: "GET",
  129. +                                dataType: "text",
  130. +                                data: 'q=' + extractLast( request.term ) ,
  131. +                                success: function( data ) {
  132. +                                        response( $.map( data.split("\n"), formatItem ));
  133. +                               }
  134. +                         });
  135. +                 },
  136. +      
  137. +                 select: function( event, ui ) {
  138. +                         var terms = split( this.value );
  139. +                         // remove the current input
  140. +                         terms.pop();
  141. +                         // add the selected item
  142. +                         terms.push( ui.item.value );
  143. +                         // add placeholder to get the comma-and-space at the end
  144. +                         terms.push( "" );
  145. +                         this.value = terms.join( "," );
  146. +                         return false;
  147. +                 }
  148. +       }).data("autocomplete")._renderItem = function (ul, item) {
  149. +               return $( "<li>" )
  150. +                       .data('item.autocomplete', item)
  151. +                       .append( "<a>" + item.label + "<br><div class=\"mail\">" + item.desc + "</div></a>" )
  152. +                       .appendTo( ul );
  153. +       };
  154. +       $("input:text#field-reporter").autocomplete({
  155. +               source: function( request, response ) {
  156. +                $.ajax({
  157. +                        url: "subjects",
  158. +                        type: "GET",
  159. +                        dataType: "text",
  160. +                        data: 'q=' + request.term ,
  161. +                        success: function( data ) {
  162. +                                response( $.map( data.split("\n"), formatItem ));
  163. +                       }
  164. +                 });
  165. +         }
  166. +       });
  167. +});
  168. +
  169. Index: autocompleteusers/htdocs/js/autocomplete_ticket.js
  170. ===================================================================
  171. --- autocompleteusers/htdocs/js/autocomplete_ticket.js  (revision 12686)
  172. +++ autocompleteusers/htdocs/js/autocomplete_ticket.js  (working copy)
  173. @@ -1,5 +1,15 @@
  174.  jQuery(document).ready(function($) {
  175. -  $("[id$=reassign_owner]").autocomplete("../subjects", {
  176. -    formatItem: formatItem
  177. -  });
  178. +  $("[id$=action_changeowner_reassign_owner]").autocomplete({
  179. +         source: function( request, response ) {
  180. +                        $.ajax({
  181. +                                url: "../subjects",
  182. +                                type: "GET",
  183. +                                dataType: "text",
  184. +                                data: 'q=' + request.term ,
  185. +                                success: function( data ) {
  186. +                                                response( $.map( data.split("\n"), formatItem ));
  187. +                                       }
  188. +                         });
  189. +                 }
  190. +       });
  191.  });
  192. \ No newline at end of file
  193. Index: autocompleteusers/htdocs/js/format_item.js
  194. ===================================================================
  195. --- autocompleteusers/htdocs/js/format_item.js  (revision 12686)
  196. +++ autocompleteusers/htdocs/js/format_item.js  (working copy)
  197. @@ -1,5 +1,16 @@
  198.  function formatItem(row) {
  199. -  var firstLine = (row[2]) ? row[0] + " (" + row[2] + ")" : row[0];
  200. -  return "<div class=\"name\">" + firstLine + "</div>"
  201. -         + (row[1] ? "<div class=\"mail\">" + row[1] + "</div>" : '');
  202. -}
  203. +       var array = row.split('|');
  204. +        return {
  205. +                 label : (array[2]) ? array[0] + " (" + array[2] + ")" : array[0],
  206. +                 value : array[0],
  207. +                 desc :  (array[1]) ? array[1] : "no results"
  208. +         }
  209. +};
  210. +
  211. +function split( val ) {
  212. +         return val.split( /\s*[,;]\s*/ );
  213. +       }
  214. +
  215. +function extractLast( term ) {
  216. +         return split( term ).pop();
  217. +}
  218. \ No newline at end of file
  219. Index: autocompleteusers/htdocs/js/autocomplete_perms.js
  220. ===================================================================
  221. --- autocompleteusers/htdocs/js/autocomplete_perms.js   (revision 12686)
  222. +++ autocompleteusers/htdocs/js/autocomplete_perms.js   (working copy)
  223. @@ -1,11 +1,41 @@
  224. -$(document).ready(function() {
  225. -  $("#gp_subject").autocomplete("../../subjects?groups=1", {
  226. -    formatItem: formatItem
  227. +jQuery(document).ready(function($) {
  228. +  $("#gp_subject").autocomplete({
  229. +               source: function( request, response ) {
  230. +                $.ajax({
  231. +                        url: "../../subjects?groups=1",
  232. +                        type: "GET",
  233. +                        dataType: "text",
  234. +                        data: 'q=' + request.term ,
  235. +                        success: function( data ) {
  236. +                                response( $.map( data.split("\n"), formatItem ));
  237. +                       }
  238. +                 });
  239. +         }
  240.    });
  241. -  $("#sg_subject").autocomplete("../../subjects?groups=1", {
  242. -    formatItem: formatItem
  243. +  $("#sg_subject").autocomplete({
  244. +               source: function( request, response ) {
  245. +                $.ajax({
  246. +                        url: "../../subjects?groups=1",
  247. +                        type: "GET",
  248. +                        dataType: "text",
  249. +                        data: 'q=' + request.term ,
  250. +                        success: function( data ) {
  251. +                                response( $.map( data.split("\n"), formatItem ));
  252. +                       }
  253. +                 });
  254. +         }
  255.    });
  256. -  $("#sg_group").autocomplete("../../subjects?groups=1&users=0", {
  257. -    formatItem: formatItem
  258. +  $("#sg_group").autocomplete({
  259. +               source: function( request, response ) {
  260. +                $.ajax({
  261. +                        url: "../../subjects?groups=1&users=0",
  262. +                        type: "GET",
  263. +                        dataType: "text",
  264. +                        data: 'q=' + request.term ,
  265. +                        success: function( data ) {
  266. +                                response( $.map( data.split("\n"), formatItem ));
  267. +                       }
  268. +                 });
  269. +         }
  270.    });
  271.  });
  272. Index: autocompleteusers/htdocs/js/autocomplete_ticket_cc.js
  273. ===================================================================
  274. --- autocompleteusers/htdocs/js/autocomplete_ticket_cc.js       (revision 12686)
  275. +++ autocompleteusers/htdocs/js/autocomplete_ticket_cc.js       (working copy)
  276. @@ -1,9 +1,45 @@
  277.  jQuery(document).ready(function($) {
  278. -  $("#field-cc").autocomplete("../subjects", {
  279. -    multiple: true,
  280. -    formatItem: formatItem
  281. -  });
  282. -  $("input:text#field-reporter").autocomplete("../subjects", {
  283. -    formatItem: formatItem
  284. -  });
  285. -});
  286. \ No newline at end of file
  287. +       $("#field-cc").autocomplete({
  288. +           source: function( request, response ) {
  289. +                        $.ajax({
  290. +                                url: "../subjects",
  291. +                                type: "GET",
  292. +                                dataType: "text",
  293. +                                data: 'q=' + extractLast( request.term ) ,
  294. +                                success: function( data ) {
  295. +                                        response( $.map( data.split("\n"), formatItem ));
  296. +                               }
  297. +                         });
  298. +               },
  299. +           select: function( event, ui ) {
  300. +             var terms = split( this.value );
  301. +             // remove the current input
  302. +             terms.pop();
  303. +             // add the selected item
  304. +             terms.push( ui.item.value );
  305. +             // add placeholder to get the comma-and-space at the end
  306. +             terms.push( "" );
  307. +             this.value = terms.join( "," );
  308. +             return false;
  309. +           }
  310. +       }).data("autocomplete")._renderItem = function (ul, item) {
  311. +               return $( "<li>" )
  312. +                       .data('item.autocomplete', item)
  313. +                       .append( "<a>" + item.label + "<br><div class=\"mail\">" + item.desc + "</div></a>" )
  314. +                       .appendTo( ul );
  315. +       };
  316. +       $("input:text#field-reporter").autocomplete({
  317. +               source: function( request, response ) {
  318. +                $.ajax({
  319. +                        url: "../subjects",
  320. +                        type: "GET",
  321. +                        dataType: "text",
  322. +                        data: 'q=' + request.term ,
  323. +                        success: function( data ) {
  324. +                                response( $.map( data.split("\n"), formatItem ));
  325. +                       }
  326. +                 });
  327. +         }
  328. +       });
  329. +});
  330. +
  331. Index: autocompleteusers/autocompleteusers.py
  332. ===================================================================
  333. --- autocompleteusers/autocompleteusers.py      (revision 12686)
  334. +++ autocompleteusers/autocompleteusers.py      (working copy)
  335. @@ -37,7 +37,7 @@
  336.          if req.args.get('users', '1') == '1':
  337.              users = self._get_users(req)
  338.              subjects = ['%s|%s|%s' % (user[USER],
  339. -                                      user[EMAIL] and '&lt;%s&gt; ' % user[EMAIL] or '',
  340. +                                      user[EMAIL] and '%s' % user[EMAIL] or '',
  341.                                        user[NAME])
  342.                          for value, user in users] # value unused (placeholder needed for sorting)
  343.  
  344. @@ -63,13 +63,13 @@
  345.          return handler
  346.  
  347.      def post_process_request(self, req, template, data, content_type):
  348. -        if template in ('ticket.html', 'admin_perms.html', 'query.html'):
  349. +        if template in ('ticket.html', 'admin_perms.html', 'query.html', 'admin_svnpolicies.html'):
  350.              add_stylesheet(req, 'autocomplete/css/autocomplete.css')
  351. -            add_script(req, 'autocomplete/js/autocomplete.js')
  352.              add_script(req, 'autocomplete/js/format_item.js')
  353. +            add_script(req, 'autocomplete/js/format_item.js')
  354.              if template == 'ticket.html':
  355.                  restrict_owner = self.env.config.getbool('ticket', 'restrict_owner')
  356. -                if req.path_info.rstrip() == '/newticket':
  357. +                if req.path_info.rstrip() == '/newticket':
  358.                      add_script(req, 'autocomplete/js/autocomplete_newticket_cc.js')
  359.                      if not restrict_owner:
  360.                          add_script(req, 'autocomplete/js/autocomplete_newticket.js')
  361. @@ -79,9 +79,13 @@
  362.                          add_script(req, 'autocomplete/js/autocomplete_ticket.js')
  363.              elif template == 'admin_perms.html':
  364.                  add_script(req, 'autocomplete/js/autocomplete_perms.js')
  365. +                add_script(req, 'common/js/jquery-ui.js')
  366.              elif template == 'query.html':
  367.                  add_script(req, 'autocomplete/js/autocomplete_query.js')
  368. -            
  369. +            elif template == 'admin_svnpolicies.html':
  370. +                 add_script(req, 'common/js/jquery-ui.js')
  371. +                 add_script(req, 'autocomplete/js/autocomplete_admin_svnpolicies_recp_list.js')
  372. +                
  373.          return template, data, content_type
  374.  
  375.      # ITemplateStreamFilter methods
clone this paste RAW Paste Data