Advertisement
Guest User

t9599 mwehr patch

a guest
Mar 5th, 2013
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 12.08 KB | None | 0 0
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement