Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /**
  2.  * This tag enables autoComplete using jQuery
  3.  * @author Alidad Soleimani
  4.  */
  5.  
  6. class AutoCompleteTagLib {
  7.     def autoComplete = {attrs ->
  8.         if (attrs.id == null)
  9.             throwTagError("Tag [autoComplete] is missing required attribute [id]")
  10.  
  11.         if (attrs.controller == null)
  12.             throwTagError("Tag [autoComplete] is missing required attribute [controller]")
  13.  
  14.         if (attrs.action == null)
  15.             throwTagError("Tag [autoComplete] is missing required attribute [action]")
  16.  
  17.         if (attrs.domain == null)
  18.             throwTagError("Tag [autoComplete] is missing required attribute [domain]")
  19.  
  20.         if (attrs.searchField == null)
  21.             throwTagError("Tag [autoComplete] is missing required attribute [searchField]")
  22.  
  23.         def clazz = ""
  24.         def name = ""
  25.         def styles = ""
  26.         if (!attrs.max) attrs.max = 10
  27.         if (!attrs.value) attrs.value =""
  28.         if (!attrs.order) attrs.order = "asc"
  29.         if (!attrs.collectField) attrs.collectField = attrs.searchField
  30.         if (attrs.class) clazz = " class='${attrs.class}'"
  31.         if (attrs.style) styles = " styles='${attrs.style}'"
  32.         if (attrs.name)
  33.             name = " name ='${attrs.name}'"
  34.         else
  35.             name = " name ='${attrs.id}'"
  36.  
  37.         def link = ['action': attrs.action , 'controller': attrs.controller ]
  38.         out << " <input type='text' ${clazz} id='${attrs.id}' value = '${attrs.value}' ${styles} ${name} />"
  39.         out << "<script type='text/javascript'>"
  40.         out << " \$(document).ready(function() {"
  41.         out << "\$('#" + attrs.id+"').autocomplete({ "
  42.         out << " source: '"
  43.         out << createLink(link)
  44.         out << "?"
  45.         out << "&test=10"
  46.         out << "&domain="+ attrs.domain
  47.         out << "&searchField="+attrs.searchField
  48.         out << "&max="+attrs.max
  49.         out << "&order="+attrs.order
  50.         out << "&collectField="+attrs.collectField
  51.         out << "', dataType: 'json'"
  52.         out << "});});"
  53.         out << "</script>"
  54.     }
  55.  
  56.     def autoCompleteHeader = {
  57.         out << "<style>"
  58.         out <<  ".ui-autocomplete-loading"
  59.         out << "    { background: white url(${resource(dir:'images',file:'ajax-loader.gif')}) right center no-repeat   }"
  60.         out << " </style>"
  61.     }
  62. }