permissions.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. (function($) {
  2. var lastModuleItem;
  3. Drupal.behaviors.moduleFilterPermissions = {
  4. attach: function(context) {
  5. $('.module-filter-inputs-wrapper', context).once('module-filter', function() {
  6. var filterInput = $('input[name="module_filter[name]"]', context);
  7. var selector = '#permissions tbody tr';
  8. // Move location of filter input.
  9. $('#permissions').parent().prepend(filterInput.parent().parent());
  10. filterInput.moduleFilter(selector, {
  11. wrapper: $('#permissions').parent(),
  12. childSelector: 'td.module',
  13. buildIndex: [
  14. function(moduleFilter, item) {
  15. item.isModule = (item.text != '') ? true : false;
  16. if (item.isModule) {
  17. item.children = new Array();
  18. lastModuleItem = item;
  19. }
  20. else {
  21. item.parent = lastModuleItem;
  22. lastModuleItem.children.push(item);
  23. }
  24. return item;
  25. }
  26. ]
  27. });
  28. var moduleFilter = filterInput.data('moduleFilter');
  29. moduleFilter.operators = {
  30. perm: function(string, moduleFilter, item) {
  31. if (!item.isModule) {
  32. if (item.name == undefined) {
  33. var $name = $('td.permission', item.element).clone();
  34. $('.description', $name).remove();
  35. item.name = $name.text().trim().toLowerCase();
  36. }
  37. if (item.name.indexOf(string) >= 0) {
  38. return true;
  39. }
  40. }
  41. }
  42. };
  43. moduleFilter.element.bind('moduleFilter:finish', function(e, data) {
  44. for (var i in moduleFilter.results) {
  45. if (moduleFilter.results[i].isModule) {
  46. for (var k in moduleFilter.results[i].children) {
  47. moduleFilter.results[i].children[k].element.removeClass('js-hide');
  48. }
  49. }
  50. else {
  51. moduleFilter.results[i].parent.element.removeClass('js-hide');
  52. }
  53. }
  54. });
  55. });
  56. }
  57. };
  58. })(jQuery);