<?xml version="1.0" encoding="UTF-8"?>
<tickets type="array">
<ticket>
  <assigned-to-id>dkORhGeq4r34vueJe5afGb</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">20</component-id>
  <created-on type="datetime">2011-07-12T17:04:53+02:00</created-on>
  <description>When parsing case classes with a List of Option[String], the option 
classes get flatten out. 
For case class Library(name:String, docs:List[Option[String]]) 
when I parse and extract it, i get: 

&lt;pre&gt;&lt;code&gt;Library(test,List(1, 2))&lt;/code&gt;&lt;/pre&gt;
but I expect: 
&lt;pre&gt;&lt;code&gt;Library(test,List(Some(1), Some(2))) &lt;/code&gt;&lt;/pre&gt;

The test unit is at [[url:https://gist.github.com/1077437|https://gist.github.com/1077437]] 
Is this the expected behavior or a bug in lift-json 2.4M1? 

Joni Freeman states: &quot; extracted type must be the same type as given to  the extract function&quot;
http://groups.google.com/group/liftweb/browse_thread/thread/fb40cea9ebecbf49#</description>
  <from-support type="integer">0</from-support>
  <id type="integer">4409340</id>
  <importance type="integer">1071</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>cUGi88sa4r348ZeJe5avMc,dkORhGeq4r34vueJe5afGb,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">1071</number>
  <priority type="integer">2</priority>
  <reporter-id>cUGi88sa4r348ZeJe5avMc</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>lift-json flattens option types unexpectedly</summary>
  <updated-at type="datetime">2011-07-12T17:13:43+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>dkORhGeq4r34vueJe5afGb</id><login>joni.freeman</login><login_name warning="deprecated">joni.freeman</login_name><name>joni.freeman</name></assigned-to>
  <reporter><id>cUGi88sa4r348ZeJe5avMc</id><login>tcc8</login><login_name warning="deprecated">tcc8</login_name><name>tcc8</name><organization>http://quicksortlabs.com</organization><website>http://tommy.chheng.com</website></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2009-09-22T06:52:14+02:00</created-on>
  <description>Support for changing the context root for requests so the root can be blank even if the actual context path is not or that a context path can be added (and all requests will be rewritten removing that context path from the head of the path) or subtracted.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">937647</id>
  <importance type="integer">68</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ,aVMsJwutGr35hseJe5d-aX,bU3QtAQ7Or37UceJe5cbLr</notification-list>
  <number type="integer">68</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Better handling of context and allow Lift apps to have context modified on a session-by-session basis</summary>
  <updated-at type="datetime">2011-04-06T14:50:55+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2009-10-09T17:25:06+02:00</created-on>
  <description>It would be nice if LIftRules has support for formatting/parsing of numbers in the same way as for dates. Both integers and decimals should be supported

When this is complete, Mapper should use this machinery in MappedInt (for thousand separators) and MappedDouble/Decimal</description>
  <from-support type="integer">0</from-support>
  <id type="integer">937695</id>
  <importance type="integer">92</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>aP1mdQl-Cr3P4SeJe5afGb,be7z4kuQmr3AZYab7jnrAJ</notification-list>
  <number type="integer">92</number>
  <priority type="integer">3</priority>
  <reporter-id>aP1mdQl-Cr3P4SeJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Support for i18n formatting/parsing of numbers</summary>
  <updated-at type="datetime">2011-02-10T00:27:02+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>aP1mdQl-Cr3P4SeJe5afGb</id><login>jeppenejsum</login><login_name warning="deprecated">jeppenejsum</login_name><name>jeppenejsum</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>dn3jFweq4r34vueJe5afGb</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2009-10-12T18:15:41+02:00</created-on>
  <description>Problem:
On heavily JavaScript based forms (sections appearing/enabling depending on user input) it is good practice to outsource form creation code to widget/component classes (homegrown). It improves readability of Snippet code and reusability of widgets. For event registration and other client side code, each component class would generate a head/lift:tail and a script tag. While head/tail tags are merged by the Lift framework, the resulting HTML code still remains cluttered with script tags (example below).

Suggested solution:
Introduce a script merge that similarly to head/tail merge merges all script tags in head into one and all script tags in tail into a second one.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">937701</id>
  <importance type="integer">33</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>bWO_aie0ar35b5eJe5aVNr,dn3jFweq4r34vueJe5afGb</notification-list>
  <number type="integer">95</number>
  <priority type="integer">3</priority>
  <reporter-id>bWO_aie0ar35b5eJe5aVNr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add script merge similar to head/tail merge</summary>
  <updated-at type="datetime">2010-09-15T13:20:13+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>dn3jFweq4r34vueJe5afGb</id><login>marius.danciu</login><login_name warning="deprecated">marius.danciu</login_name><name>marius.danciu</name></assigned-to>
  <reporter><id>bWO_aie0ar35b5eJe5aVNr</id><login>github.importer</login><login_name warning="deprecated">github.importer</login_name><name>github.importer</name></reporter>
<custom-fields>
</custom-fields>
<CustomFields deprecated="use custom-fields">
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2009-11-15T18:38:28+01:00</created-on>
  <description>Add a way for allowing easy specification of custom HTTP header attributes.

Br's,
Marius</description>
  <from-support type="integer">0</from-support>
  <id type="integer">937895</id>
  <importance type="integer">192</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dn3jFweq4r34vueJe5afGb,be7z4kuQmr3AZYab7jnrAJ</notification-list>
  <number type="integer">192</number>
  <priority type="integer">3</priority>
  <reporter-id>dn3jFweq4r34vueJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Allow HTTP headers to be added to Ajax requests</summary>
  <updated-at type="datetime">2010-10-27T00:17:32+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>dn3jFweq4r34vueJe5afGb</id><login>marius.danciu</login><login_name warning="deprecated">marius.danciu</login_name><name>marius.danciu</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087"> Comments</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087"> Comments</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">3</component-id>
  <created-on type="datetime">2009-12-17T21:11:01+01:00</created-on>
  <description>The current connection pool does not serve connections fairly... in the order the threads queued up asking for the connection.  This must be changed and the recursive nature of the connection pool request needs to be flattened.
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">938009</id>
  <importance type="integer">32</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ</notification-list>
  <number type="integer">249</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Lift connection pool is not fair</summary>
  <updated-at type="datetime">2010-09-15T18:22:37+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Task</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Task</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">10</component-id>
  <created-on type="datetime">2009-12-22T07:19:57+01:00</created-on>
  <description>Create a Lift module that supports Amazon Web Services
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">938023</id>
  <importance type="integer">31</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ</notification-list>
  <number type="integer">256</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add AWS support to a new Lift module</summary>
  <updated-at type="datetime">2011-03-24T16:31:42+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>dsq9WWeq4r35g4eJe5afGb</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-01-13T03:04:22+01:00</created-on>
  <description>This feature is extracted from a thread in the google group created by me: http://groups.google.com/group/liftweb/browse_thread/thread/34dc88d46001b2c

I would like a way to tell Lift if a javascript file (or just script tag) is dependent of another one - this would allow lift to order the script-tags correctly 

Example: 
The AutcoComplete widget adds the '/classpath/autocomplete/jquery.autocomplete.js' javascript file to the header - If I want to include a static JS file where I bind some JS functions to the autocomplete text-field I can't select it using it's class as the css selector unless my static file is loaded after the script-tag - This is because the class is added dynamically when the script-tag that calls the autocomplete method executes 

N.B: This is not really a big problem in my case because i can just select the text-field using another css selector, but i could imagine that in larger projects this would be a handy thing to have :) </description>
  <from-support type="integer">0</from-support>
  <id type="integer">938073</id>
  <importance type="integer">30</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dm3rJ2eq4r34vueJe5afGb,dsq9WWeq4r35g4eJe5afGb</notification-list>
  <number type="integer">281</number>
  <priority type="integer">3</priority>
  <reporter-id>dm3rJ2eq4r34vueJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Feature-request - Dynamic sorting of Javascript (tags and files) dependencies</summary>
  <updated-at type="datetime">2012-01-26T18:08:11+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>dsq9WWeq4r35g4eJe5afGb</id><login>pr1001</login><login_name warning="deprecated">pr1001</login_name><name>Peter Robinett</name></assigned-to>
  <reporter><id>dm3rJ2eq4r34vueJe5afGb</id><login>mads379@gmail.com</login><login_name warning="deprecated">mads379@gmail.com</login_name><name>mads379@gmail.com</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-01-29T03:58:43+01:00</created-on>
  <description>(That follows a thread in the mailing list [[url:http://groups.google.com/group/liftweb/browse_frm/thread/992a7c1d326d3094/2047dbc3cf4637d0?tvc=1&amp;q=optgroup#2047dbc3cf4637d0 |http://groups.google.com/group/liftweb/browse_frm/thread/992a7c1d326d3094/2047dbc3cf4637d0?tvc=1&amp;q=optgroup#2047dbc3cf4637d0]] )

A far as can I see, SHtml doesn't allow to create some things for select/option tags. We can't add attribute to option tags, nor group option thanks to optgroup.

I would like to purpose this starting point as a &quot;full featured&quot; select/option API. I think it covers almost every thing &quot;select&quot; related, but I don't know Lift internal to know if it's somewhat realistic.

8&lt;-----------

&lt;pre&gt;&lt;code&gt;case class OptionModel[T](value:T, label:String, disabled:Boolean, attrs:(String,String)*)
case class OptionGroupModel[T](label:String, options:Seq[OptionModel[T]], disabled:Boolean, attrs:(String,String)*) {
  def values = options map( _.value )
}
case class SelectOptions[T](options:Seq[OptionModel[T]],groups:Seq[OptionGroupModel[T]]) {
  def values = (options map( _.value)) ++ (groups map( _.values))
}


object SHtml {
  
  // ....
  private def selected(in: Boolean) = if (in) new UnprefixedAttribute(&quot;selected&quot;, &quot;selected&quot;, Null) else Null
  // ....

  private def disabled(in: Boolean) = if (in) new UnprefixedAttribute(&quot;disabled&quot;, &quot;true&quot;, Null) else Null
  
  def select_*(opts: SelectOptions[String], deflt: Box[String], func: AFuncHolder, attrs: (String, String)*): Elem = {
    //build an &lt;option&gt; from an option model
    def buildOption(option:OptionModel[String]) = {
      option.attrs.foldLeft(
        &lt;option value={option.value}&gt;{option.label}&lt;/option&gt; % disabled(option.disabled) % selected(deflt.exists(_ == option.value))
      )(_ % _)
    }
    
    val testFunc = LFuncHolder(in =&gt; in.filter(v =&gt; opts.values.contains(v)) match {case Nil =&gt; false case xs =&gt; func(xs)}, func.owner)
  
    attrs.foldLeft(fmapFunc(testFunc)(fn =&gt; &lt;select name={fn}&gt;{
      //start with groups
      opts.groups.flatMap { group =&gt;
        group.attrs.foldLeft(&lt;optgroup label={group.label}&gt;{
          //each option in a groups, with its attributes
          group.options.flatMap { buildOption(_) }
        }&lt;/optgroup&gt; % disabled(group.disabled) )(_ % _)
      } ++ 
      //now, option that are not in a group
      opts.options.flatMap { buildOption(_) }
    }&lt;/select&gt;))(_ % _)
  } 
}

&lt;/code&gt;&lt;/pre&gt;
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">938133</id>
  <importance type="integer">312</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>bWO_aie0ar35b5eJe5aVNr,bdp45Cx40r4j4XeJe5cbLA</notification-list>
  <number type="integer">312</number>
  <priority type="integer">3</priority>
  <reporter-id>bWO_aie0ar35b5eJe5aVNr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Full featured Option/Select in SHtml</summary>
  <updated-at type="datetime">2012-02-03T09:38:09+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bWO_aie0ar35b5eJe5aVNr</id><login>github.importer</login><login_name warning="deprecated">github.importer</login_name><name>github.importer</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>apLvKSdcur35E8eJe5aVNr</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">4</component-id>
  <created-on type="datetime">2010-02-12T20:08:41+01:00</created-on>
  <description>#309 will implement new logging functionality and deprecate logging from lift-util. Once 2.0 is out, existing logging code in lift-util should be removed</description>
  <from-support type="integer">0</from-support>
  <id type="integer">966169</id>
  <importance type="integer">29</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>aP1mdQl-Cr3P4SeJe5afGb,apLvKSdcur35E8eJe5aVNr</notification-list>
  <number type="integer">345</number>
  <priority type="integer">3</priority>
  <reporter-id>aP1mdQl-Cr3P4SeJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Remove deprecated logging functionality from lift-util</summary>
  <updated-at type="datetime">2011-02-26T11:19:35+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>apLvKSdcur35E8eJe5aVNr</id><login>indrajitr</login><login_name warning="deprecated">indrajitr</login_name><name>Indrajit Raychaudhuri</name><website>http://indrajit.com</website></assigned-to>
  <reporter><id>aP1mdQl-Cr3P4SeJe5afGb</id><login>jeppenejsum</login><login_name warning="deprecated">jeppenejsum</login_name><name>jeppenejsum</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-02-16T16:58:15+01:00</created-on>
  <description>It would be useful for the SHtml methods that generate form elements to return an object which supports a method to return the data captured during the submission of that form element. This would allow a use pattern that avoids potential timing issues related to setting the values of vars via a closure, as is currently the common use pattern for the SHtml form elements.

See http://groups.google.com/group/liftweb/browse_thread/thread/5ae6ad3aae7ea453/3532e3555a869d02?#3532e3555a869d02 and http://groups.google.com/group/liftweb/msg/014d2d00745f268d for details.

As an alternative to naming this &quot;AnswerHolder&quot; it occurs to me that the common name for this sort of interface in mocking frameworks is Capture[T].

Kris</description>
  <from-support type="integer">0</from-support>
  <id type="integer">976723</id>
  <importance type="integer">28</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dmyUyWeq4r34JreJe5aVNr,be7z4kuQmr3AZYab7jnrAJ</notification-list>
  <number type="integer">349</number>
  <priority type="integer">3</priority>
  <reporter-id>dmyUyWeq4r34JreJe5aVNr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Make SHtml.[input] return Elem with AnswerHolder[T]</summary>
  <updated-at type="datetime">2011-09-21T21:26:58+02:00</updated-at>
  <working-hours type="float">6.0</working-hours>
  <working-hour type="float" warning="deprecated">6.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">1.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>dmyUyWeq4r34JreJe5aVNr</id><login>nuttycom</login><login_name warning="deprecated">nuttycom</login_name><name>nuttycom</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-02-24T19:42:14+01:00</created-on>
  <description>Hi,

I'd like to use lift-utils in an OSGi environment with LogBack (SLF4J) used for logging.

Unfortunately lift-utils *requires* log4j:

&lt;pre&gt;&lt;code&gt;
osgi&gt; ss

Framework is launched.

id	State       Bundle
0	ACTIVE      org.eclipse.osgi_3.5.1.R35x_v20090827
1	ACTIVE      slf4j.api_1.5.10
2	ACTIVE      ch.qos.logback.core_0.9.18
3	ACTIVE      ch.qos.logback.classic_0.9.18
4	ACTIVE      org.scala-lang-osgi.scala-library_2.7.7
5	ACTIVE      com.springsource.org.apache.commons.codec_1.4.0
6	ACTIVE      com.springsource.javax.mail_1.4.1
7	INSTALLED   net.liftweb.lift-util_2.0.0.M2
8	ACTIVE      net.liftweb.lift-actor_2.0.0.M2
9	ACTIVE      net.liftweb.lift-common_2.0.0.M2

osgi&gt; diag 7
initial@reference:file:../bundles/net.liftweb.lift-util_2.0.0.M2.jar/ [7]
  Direct constraints which are unresolved:
    Missing imported package net.liftweb.util_[2.0.0.M2,2.1.0).
    Missing imported package org.apache.log4j_0.0.0.
    Missing imported package org.apache.log4j.spi_0.0.0.
    Missing imported package org.apache.log4j.xml_0.0.0.
&lt;/code&gt;&lt;/pre&gt;

Now if one adds the log4j bridge from SLF4J ( [[url:http://www.slf4j.org/legacy.html|Bridging legacy APIs]] ) one still has errors:

&lt;pre&gt;&lt;code&gt;
osgi&gt; ss

Framework is launched.

id	State       Bundle
0	ACTIVE      org.eclipse.osgi_3.5.1.R35x_v20090827
1	ACTIVE      slf4j.api_1.5.10
2	ACTIVE      log4j.over.slf4j_1.5.10
3	ACTIVE      ch.qos.logback.core_0.9.18
4	ACTIVE      ch.qos.logback.classic_0.9.18
5	ACTIVE      org.scala-lang-osgi.scala-library_2.7.7
6	ACTIVE      com.springsource.org.apache.commons.codec_1.4.0
7	ACTIVE      com.springsource.javax.mail_1.4.1
8	INSTALLED   net.liftweb.lift-util_2.0.0.M2
9	ACTIVE      net.liftweb.lift-actor_2.0.0.M2
10	ACTIVE      net.liftweb.lift-common_2.0.0.M2

osgi&gt; diag 8
initial@reference:file:../bundles/net.liftweb.lift-util_2.0.0.M2.jar/ [8]
  Direct constraints which are unresolved:
    Missing imported package net.liftweb.util_[2.0.0.M2,2.1.0).
    Missing imported package org.apache.log4j.spi_0.0.0.
    Missing imported package org.apache.log4j.xml_0.0.0.

osgi&gt; packages 2
org.apache.log4j; version=&quot;0.0.0&quot;&lt;log4j.over.slf4j_1.5.10 [2]&gt;

&lt;/code&gt;&lt;/pre&gt;

So one's stuck and cannot use LogBack or any other SLF4J backend.

@@@@

For a quick test do the following:

Download/install Pax-Construct ( http://www.ops4j.org/projects/pax/construct/ )

Then issue the following commands:


&lt;pre&gt;&lt;code&gt;
pax-create-project -g test -a test -v 1.0-SNAPSHOT

cd test

sed -i -e &quot;s/--platform=felix/--platform=equinox/g&quot; pom.xml
rm pom.xml-e

pax-add-repository -i com.springsource.repository.bundles.release -u http://repository.springsource.com/maven/bundles/release
pax-add-repository -i scala-tools.org -u http://scala-tools.org/repo-releases

pax-import-bundle -g org.scala-lang-osgi -a scala-library -v 2.7.7
pax-import-bundle -g org.slf4j -a slf4j-api -v 1.5.10
pax-import-bundle -g ch.qos.logback -a logback-core -v 0.9.18
pax-import-bundle -g ch.qos.logback -a logback-classic -v 0.9.18
pax-import-bundle -g org.apache.commons -a com.springsource.org.apache.commons.codec -v 1.4.0
pax-import-bundle -g javax.mail -a com.springsource.javax.mail -v 1.4.1
pax-import-bundle -g net.liftweb -a lift-common -v 2.0-M2
pax-import-bundle -g net.liftweb -a lift-actor -v 2.0-M2
pax-import-bundle -g net.liftweb -a lift-util -v 2.0-M2
&lt;/code&gt;&lt;/pre&gt;

Start OSGi framework:

&lt;pre&gt;&lt;code&gt;
pax-provision
&lt;/code&gt;&lt;/pre&gt;

Install log4j bridge:

&lt;pre&gt;&lt;code&gt;
pax-import-bundle -g org.slf4j -a log4j-over-slf4j -v 1.5.10
&lt;/code&gt;&lt;/pre&gt;

Start OSGi framework again:

&lt;pre&gt;&lt;code&gt;
pax-provision
&lt;/code&gt;&lt;/pre&gt;

</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1012893</id>
  <importance type="integer">366</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>cpcx4sfYOr34DXeJe5afGb</notification-list>
  <number type="integer">366</number>
  <priority type="integer">3</priority>
  <reporter-id>cpcx4sfYOr34DXeJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>cannot use lift-util in OSGi environment w/out log4j</summary>
  <updated-at type="datetime">2011-01-31T15:11:28+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>cpcx4sfYOr34DXeJe5afGb</id><login>sdavids</login><login_name warning="deprecated">sdavids</login_name><name>sdavids</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-02-28T23:12:17+01:00</created-on>
  <description>Add support in lift-flot for the plugin system introduced in Flot 0.6. Dependent upon Lift's general Javascript dependency support (Issue 281).</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1027427</id>
  <importance type="integer">5</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dsq9WWeq4r35g4eJe5afGb</notification-list>
  <number type="integer">380</number>
  <priority type="integer">3</priority>
  <reporter-id>dsq9WWeq4r35g4eJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Flot 0.6 Plugin Support</summary>
  <updated-at type="datetime">2012-01-26T18:08:11+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>dsq9WWeq4r35g4eJe5afGb</id><login>pr1001</login><login_name warning="deprecated">pr1001</login_name><name>Peter Robinett</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>awdig81p4r3O8OeJe5aVNr</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">5</component-id>
  <created-on type="datetime">2010-03-29T21:50:01+02:00</created-on>
  <description>Extract the javascript framework specifics (jQuery, YUI, Ext-Core) out of the Lift-Webkit project into their own modules.

Marius suggested the following structure:
&lt;pre&gt;&lt;code&gt;/lift-base
  /lift-js
    /lift-jquery
    /lift-yui
    /lift-ext
&lt;/code&gt;&lt;/pre&gt;

Both the javascript resources and the JsArtifacts implementations will be moved to their own module. This includes the jQuery specific JsJqCmds.scala and JqSHtml.scala. Package names will be preserved so that nothing breaks. </description>
  <from-support type="integer">0</from-support>
  <id type="integer">1185289</id>
  <importance type="integer">27</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>awdig81p4r3O8OeJe5aVNr</notification-list>
  <number type="integer">446</number>
  <priority type="integer">3</priority>
  <reporter-id>awdig81p4r3O8OeJe5aVNr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Extract the javascript framework specifics into their own modules</summary>
  <updated-at type="datetime">2010-09-15T18:23:45+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>awdig81p4r3O8OeJe5aVNr</id><login>dlouwers</login><login_name warning="deprecated">dlouwers</login_name><name>dlouwers</name></assigned-to>
  <reporter><id>awdig81p4r3O8OeJe5aVNr</id><login>dlouwers</login><login_name warning="deprecated">dlouwers</login_name><name>dlouwers</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">3</component-id>
  <created-on type="datetime">2010-04-15T18:16:47+02:00</created-on>
  <description>from the mailing-list
&quot;You could have a a Constraint trait, which has some method to get the
relevant SQL, as well as an optional function to define the constraint
name.
There would be classes that implement that-Eg: UniqueConstraint,
CheckConstraint, (to be able to do something like CHECK (column &gt; 0)),
NotNullConstraint, PrimaryKeyConstraint, ForeignKeyConstraint (the
last two are already implemented in Mapper in a different Mapper)

Then each Mapped field would have a List[Constraint] of constraints.
In the Schemifier, ensureConstraints would then iterate over each
field (as it does now) and then construct the ALTER TABLE syntax.
The user would of course be able to define their own Application/
Database-specific constraints easily as well. &quot;</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1282217</id>
  <importance type="integer">476</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>aiSjKepCCr37hreJe5aVNr,cngF6cTSWr34tWeJe5cbLr,be7z4kuQmr3AZYab7jnrAJ,b41mDG0BGr4llKeJe5cbCb</notification-list>
  <number type="integer">476</number>
  <priority type="integer">3</priority>
  <reporter-id>aiSjKepCCr37hreJe5aVNr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add Constraints To Mapper</summary>
  <updated-at type="datetime">2012-02-16T23:41:49+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>aiSjKepCCr37hreJe5aVNr</id><login>whakojacko</login><login_name warning="deprecated">whakojacko</login_name><name>whakojacko</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>dn3jFweq4r34vueJe5afGb</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-05-16T16:49:58+02:00</created-on>
  <description>Remove the following deprecations:

1. JQueryLeft, JQueryRight
2. JSRules.fadeTime,  JsRules.prefadeDuration as we have the generic auto fadeout mechanism
3. Remove JqSHtml as all things are deprecated here.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1443979</id>
  <importance type="integer">26</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dn3jFweq4r34vueJe5afGb</notification-list>
  <number type="integer">526</number>
  <priority type="integer">3</priority>
  <reporter-id>dn3jFweq4r34vueJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Remove deprecated JS stuff</summary>
  <updated-at type="datetime">2010-08-24T17:07:03+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>dn3jFweq4r34vueJe5afGb</id><login>marius.danciu</login><login_name warning="deprecated">marius.danciu</login_name><name>marius.danciu</name></assigned-to>
  <reporter><id>dn3jFweq4r34vueJe5afGb</id><login>marius.danciu</login><login_name warning="deprecated">marius.danciu</login_name><name>marius.danciu</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>dkORhGeq4r34vueJe5afGb</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">20</component-id>
  <created-on type="datetime">2010-05-23T14:55:10+02:00</created-on>
  <description>case class Bike(make: String = &quot;Trek&quot;, price: Int) 
parse(&quot;&quot;&quot;{&quot;price&quot;: 350}&quot;&quot;&quot; ).extract[Bike]

should give: Bike(&quot;Trek&quot;, 350)
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1475183</id>
  <importance type="integer">534</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dkORhGeq4r34vueJe5afGb,c4CR7uJP8r35O6eJe5cbCb</notification-list>
  <number type="integer">534</number>
  <priority type="integer">3</priority>
  <reporter-id>dkORhGeq4r34vueJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Default parameter support for JSON extraction (Scala 2.8)</summary>
  <updated-at type="datetime">2011-03-17T05:32:23+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>dkORhGeq4r34vueJe5afGb</id><login>joni.freeman</login><login_name warning="deprecated">joni.freeman</login_name><name>joni.freeman</name></assigned-to>
  <reporter><id>dkORhGeq4r34vueJe5afGb</id><login>joni.freeman</login><login_name warning="deprecated">joni.freeman</login_name><name>joni.freeman</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">19</component-id>
  <created-on type="datetime">2010-06-21T07:53:12+02:00</created-on>
  <description>FlotSerie does not provide for putting data on second y axis.
Proposed FlotSerie:


&lt;pre&gt;&lt;code&gt;trait FlotSerie extends BaseFlotOptions
{
  def data: List[(Double, Double)] = Nil
  def label: Box[String] = Empty
  def lines: Box[FlotLinesOptions] = Empty
  def points: Box[FlotPointsOptions] = Empty
  def bars: Box[FlotBarsOptions] = Empty
  def color: Box[Either[String, Int]] = Empty
  def shadowSize: Box[Int] = Empty

  def buildOptions = {
    List(label.map(v =&gt; (&quot;label&quot;, Str(v))),
         lines.map(v =&gt; (&quot;lines&quot;, v.asJsObj)),
         points.map(v =&gt; (&quot;points&quot;, v.asJsObj)),
         bars.map(v =&gt; (&quot;bars&quot;, v.asJsObj)),
         color.map {
           case Left(c) =&gt; (&quot;color&quot;, Str(c))
           case Right(c) =&gt; (&quot;color&quot;, Num(c))
         },
         shadowSize.map(s =&gt; (&quot;shadowSize&quot;, Num(s)))
      )
  }
}

&lt;/code&gt;&lt;/pre&gt;

Then using it in Flot:

&lt;pre&gt;&lt;code&gt;  def renderOneSerie(data: FlotSerie, idPlaceholder: String, idSerie: Int): JsObj = {
    val info: List[Box[(String, JsExp)]] =
      Full((&quot;data&quot;, JsVar(&quot;data_&quot;+idPlaceholder + &quot;_&quot; + idSerie))) ::
      data.buildOptions
    JsObj(info.flatten(_.toList) :_*)
  }

&lt;/code&gt;&lt;/pre&gt;

Enables user code such as:


&lt;pre&gt;&lt;code&gt;      series = new FlotSerie () {
        override val label = Full(theDs.split(&quot;@&quot;)(0))
        override val data = theDataMap(theDs)
        val yaxis = Full (2)
        override def buildOptions = {
          yaxis.map( v =&gt; (&quot;yaxis&quot;, Num(v))) ::
          super.buildOptions
        }
      } :: series

&lt;/code&gt;&lt;/pre&gt;
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1611789</id>
  <importance type="integer">559</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>ccO1A4rzOr342ieJe5avMc</notification-list>
  <number type="integer">559</number>
  <priority type="integer">3</priority>
  <reporter-id>ccO1A4rzOr342ieJe5avMc</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Change FlotSerie to enable additional fields such as yaxis</summary>
  <updated-at type="datetime">2011-01-08T16:50:40+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>ccO1A4rzOr342ieJe5avMc</id><login>ScalaGuy</login><login_name warning="deprecated">ScalaGuy</login_name><name>ScalaGuy</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Comments</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Comments</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">19</component-id>
  <created-on type="datetime">2010-06-24T08:12:06+02:00</created-on>
  <description>When using CalendarMonthView like the following code, the calendar widget will not respect the baseCSSClassName attribute, the CalendarItem is always use &quot;calendarItem&quot; as their CSS class.

&lt;pre&gt;&lt;code&gt;
class MySnippet {
    def test (xhtml: NodeSeq) = {
        val c    = Calendar.getInstance
        val meta = MonthViewMeta (Calendar.SUNDAY, Locale.getDefault)

        c.set (2010, 0, 0)

        val tt = CalendarMonthView (c, meta, cals, Empty, Empty, Empty)
        println (tt)

        bind (&quot;cal&quot;, xhtml, &quot;widget&quot; -&gt; tt)
    }

    def cals = {
        val c1 = Calendar.getInstance
        val c2 = Calendar.getInstance

        c1.set (2010, 0, 5, 10, 0)
        c2.set (2010, 0, 6, 10, 0)

        val calitem1 = CalendarItem (&quot;4&quot;, c1, CalendarType.MEETING).
                       optional (
                           _.subject     (&quot;Red Item&quot;),
                           _.description (&quot;Background should be read&quot;)
                       )

        val calitem2 = CalendarItem (&quot;5&quot;, c2, CalendarType.MEETING).
                       optional (
                           _.subject     (&quot;Green Item&quot;),
                           _.description (&quot;Background should be green&quot;),
                           _.baseCSSClassName (&quot;greenItem&quot;)
                       )


        List (calitem1, calitem2)
    }
}

&lt;/code&gt;&lt;/pre&gt;

It's caused by calendarviews.js hard coded the css class to be &quot;calendarItem&quot; when adding CalendarItem to CalendarView.

I've created a patch to fix this problem.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1628699</id>
  <importance type="integer">563</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list></notification-list>
  <number type="integer">563</number>
  <priority type="integer">3</priority>
  <reporter-id>b-QxmwI00r3AAUab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>CalendarMonthView do not respect baseCSSClassName of CalendarItem.</summary>
  <updated-at type="datetime">2010-08-24T17:52:30+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>b-QxmwI00r3AAUab7jnrAJ</id><login>brianhsu</login><login_name warning="deprecated">brianhsu</login_name><name>brianhsu</name><email>brianhsu.hsu@gmail.com</email><website>http://bone.twbbs.org.tw/blog</website></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">19</component-id>
  <created-on type="datetime">2010-06-29T18:38:58+02:00</created-on>
  <description>There is a bug in the Tree object in liftweb/framework/lift-modules/lift-widgets/src/main/scala/net/liftweb/widgets/tree/TreeView.scala

object Tree {
 def apply(text:String, id: String, hasChildren: Boolean) = new Tree(text, Full(id), Empty, false, true, Nil)
}

 The second last parameter on the RHS does not pass through the hasChildren boolean. It should be:
= new Tree(text, Full(id), Empty, false, hasChildren, Nil)
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1648823</id>
  <importance type="integer">569</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>agIUn0Ghqr34sQeJe5cbCb,aUanI8v9ur4izceJe5cbLr</notification-list>
  <number type="integer">569</number>
  <priority type="integer">3</priority>
  <reporter-id>agIUn0Ghqr34sQeJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Missing hasChildren parameter in TreeView</summary>
  <updated-at type="datetime">2011-03-26T19:22:12+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>agIUn0Ghqr34sQeJe5cbCb</id><login>jongiddy</login><login_name warning="deprecated">jongiddy</login_name><name>jongiddy</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">19</component-id>
  <created-on type="datetime">2010-07-29T19:07:10+02:00</created-on>
  <description>I would like to be able to update calendars dynamically from a comet actor, adding/removing items without a full page rerender. In my current actor I have:

  private def addCalendarItems(items:List[CalendarItem]) = {
    JE.Call(&quot;CalendarMonthView.buildMonthViewCalendars&quot;, CalendarUtils.toJSON(items))
  }

Unfortunately, after further testing, that doesn't seem to work. My actor receives an item, but doesn't appear to update the page. The JS I get back includes &amp;quot; around all of the item strings, which I suspect shouldn't be present in an expression given to partialUpdate().

It would be nice to have an addCalendarItems/removeCalendarItems method on each calendar view. Maybe even an updateCalendarItems method that either replaces each item, or that calls any calendar JS that may exist for changing existing items.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1824373</id>
  <importance type="integer">600</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>abROM6FXar37XceJe5cbCb,arXqn8Vnqr374ceJe5cbCb</notification-list>
  <number type="integer">600</number>
  <priority type="integer">3</priority>
  <reporter-id>abROM6FXar37XceJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add mechanism to dynamically update calendars</summary>
  <updated-at type="datetime">2010-09-13T10:18:40+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>abROM6FXar37XceJe5cbCb</id><login>nolan</login><login_name warning="deprecated">nolan</login_name><name>nolan</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">19</component-id>
  <created-on type="datetime">2010-07-29T19:11:35+02:00</created-on>
  <description>When viewing calendars, times with single-didget minutes are displayed as &quot;3:0&quot; rather than &quot;3:00&quot;. I suspect the issue is this line in CalendarUtils.scala:

  private lazy val timeFormatter = new SimpleDateFormat(&quot;h:m&quot;)

Perhaps that should be &quot;h:mm&quot;?</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1824381</id>
  <importance type="integer">601</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>abROM6FXar37XceJe5cbCb,arXqn8Vnqr374ceJe5cbCb</notification-list>
  <number type="integer">601</number>
  <priority type="integer">3</priority>
  <reporter-id>abROM6FXar37XceJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Calendar widgets display single-didget times incorrectly</summary>
  <updated-at type="datetime">2011-08-07T12:45:25+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>abROM6FXar37XceJe5cbCb</id><login>nolan</login><login_name warning="deprecated">nolan</login_name><name>nolan</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">27</component-id>
  <created-on type="datetime">2010-08-18T00:10:23+02:00</created-on>
  <description>Add a bunch of abstractions and a concrete example program for a Lift-based CMS syste,</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1934519</id>
  <importance type="integer">25</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ</notification-list>
  <number type="integer">623</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add a CMS module</summary>
  <updated-at type="datetime">2011-02-10T00:27:40+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">19</component-id>
  <created-on type="datetime">2010-09-08T17:19:36+02:00</created-on>
  <description>As default, the associated hidden field takes as value a generated &quot;nonce&quot; (term from the source code).
Once a value provided by the auto-completion is selected, the hidden field value attribute is set to the selected name.
This is done by the anonymous function given as parameter to the function &quot;result&quot; of the autocomplete js object.
On form submit, because the hidden field value is not one of the &quot;nonce&quot;, the given onSubmit callback is not called.

*net.liftweb.widgets.autocomplete.AutoComplete*
&lt;pre&gt;&lt;code&gt;
private def autocomplete_*(options: Seq[(String, String)], default: Box[String],
                    defaultNonce: Box[String], onSubmit: AFuncHolder, jsonOptions: List[(String,String)]): Elem = {
  val id = Helpers.nextFuncName

  fmapFunc(onSubmit){hidden =&gt;

    val data = JsArray(options.map {
      case (nonce, name) =&gt; JsObj(&quot;name&quot; -&gt; name, &quot;nonce&quot; -&gt; nonce)
    } :_*)

  /* merge the options that the user wants */
    val jqOptions =  (&quot;minChars&quot;,&quot;0&quot;) ::
                      (&quot;matchContains&quot;,&quot;true&quot;) ::
                      (&quot;formatItem&quot;,&quot;function(row, i, max) { return row.name; }&quot;) ::
                      Nil ::: jsonOptions
    val json = jqOptions.map(t =&gt; t._1 + &quot;:&quot; + t._2).mkString(&quot;{&quot;, &quot;,&quot;, &quot;}&quot;)
    val autocompleteOptions = JsRaw(json)

    val onLoad = JsRaw(&quot;&quot;&quot;
    jQuery(document).ready(function(){
      var data = &quot;&quot;&quot;+data.toJsCmd+&quot;&quot;&quot;;
      jQuery(&quot;#&quot;&quot;&quot;+id+&quot;&quot;&quot;&quot;).autocomplete(data, &quot;&quot;&quot;+autocompleteOptions.toJsCmd+&quot;&quot;&quot;).result(function(event, dt, formatted) {
        jQuery(&quot;#&quot;&quot;&quot;+hidden+&quot;&quot;&quot;&quot;).val(formatted);
      });
    });&quot;&quot;&quot;)

...

}
&lt;/code&gt;&lt;/pre&gt;

I think there should have a specific &quot;autocomplete_*&quot; definition for autocompleteObj with a closure that recover the corresponding &quot;nonce&quot; that match the selected &quot;name&quot;.
And then set the hidden field value attribute with this recovered &quot;nonce&quot;.
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2067365</id>
  <importance type="integer">638</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>,arXqn8Vnqr374ceJe5cbCb</notification-list>
  <number type="integer">638</number>
  <priority type="integer">3</priority>
  <reporter-id>cf1MyyU1yr35DSeJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>autocompleteObj fails to bind selected object on submit</summary>
  <updated-at type="datetime">2010-09-10T14:10:39+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>cf1MyyU1yr35DSeJe5cbCb</id><login>jcaillet</login><login_name warning="deprecated">jcaillet</login_name><name>jcaillet</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>dbqip8eq4r34vueJe5afGb</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">3</component-id>
  <created-on type="datetime">2010-09-12T21:02:02+02:00</created-on>
  <description>When a form is submitted and for example a date field contains letters, the conversion in the respective field fails silently.
Currently there is no built-in way to inform the user of that event. 
The normal validation occurs after the (un)successful conversion.

A &quot;work-around&quot; trait was suggested [[url:http://groups.google.com/group/liftweb/browse_thread/thread/1b8b50be264b5848#|here]] as well as the desire for an feature enhancement ticket.
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2085791</id>
  <importance type="integer">24</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>aDKDveL4Cr35K8eJe5cbCb,dbqip8eq4r34vueJe5afGb,bMWEFsX2ar364meJe5cbCb</notification-list>
  <number type="integer">643</number>
  <priority type="integer">3</priority>
  <reporter-id>aDKDveL4Cr35K8eJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Mapper, enhanced functionality: Inform user about conversion failure</summary>
  <updated-at type="datetime">2011-09-22T02:18:49+02:00</updated-at>
  <working-hours type="float">2.0</working-hours>
  <working-hour type="float" warning="deprecated">2.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>dbqip8eq4r34vueJe5afGb</id><login>dchenbecker</login><login_name warning="deprecated">dchenbecker</login_name><name>dchenbecker</name></assigned-to>
  <reporter><id>aDKDveL4Cr35K8eJe5cbCb</id><login>MrMistr</login><login_name warning="deprecated">MrMistr</login_name><name>MrMistr</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>cGgL3WZ-yr34kkeJe5cbLA</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">28</component-id>
  <created-on type="datetime">2010-10-04T20:51:36+02:00</created-on>
  <description>Right now, response types are considered in the order that they are encountered.  However, the Accepts header (and others) can choose a response type based on a weight.  Add support to choosing by weight when calculating which handler to use.
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2209089</id>
  <importance type="integer">1</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ,cGgL3WZ-yr34kkeJe5cbLA</notification-list>
  <number type="integer">669</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>4</status>
  <status-name>Test</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add support to REST helpers for weighting of response types</summary>
  <updated-at type="datetime">2010-12-14T13:50:49+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>cGgL3WZ-yr34kkeJe5cbLA</id><login>ssuravarapu</login><login_name warning="deprecated">ssuravarapu</login_name><name>ssuravarapu</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-10-09T12:54:33+02:00</created-on>
  <description>Html5 introduce new attributes for input tag and allow client side form validations.

Currently I hacked lift-record source like following (But a more general solution will be better)

&lt;pre&gt;&lt;code&gt;
  //TODO find a better way to support html5 addtional attributes (and a way to transform every type of field)
  protected def elemAttr: MetaData = {
    val b = new UnprefixedAttribute(&quot;type&quot;, &quot;text&quot;, Null) // to inject maxLength,...
    isHtml5 match {
      case true =&gt; {
        val b2 = regExp.map { x =&gt; new UnprefixedAttribute(&quot;pattern&quot;, x, b) }.getOrElse(b)
        new UnprefixedAttribute(&quot;required&quot;, (!optional_?).toString, b2)
      }
      case false =&gt; b
    }
  }

  protected def elem = S.fmapFunc(SFuncHolder(this.setFromAny(_))) { funcName =&gt;
    val b = &lt;input name={ funcName } value={ valueBox openOr &quot;&quot; } tabindex={ tabIndex toString }/&gt;
    b % elemAttr
  }
&lt;/code&gt;&lt;/pre&gt;
(full source at
  * http://github.com/lift/lift/blob/davidb_record_protouser/framework/lift-persistence/lift-record/src/main/scala/net/liftweb/record/field/RegExpTypedField.scala
  * http://github.com/lift/lift/blob/davidb_record_protouser/framework/lift-persistence/lift-record/src/main/scala/net/liftweb/record/field/EmailField.scala
)


And I override localForm method into User( extends MetaMegaProtoUser ) :

&lt;pre&gt;&lt;code&gt;
  override protected def localForm(user: User, ignorePassword: Boolean): NodeSeq = {
    signupFields.
    flatMap(fi =&gt; user.fieldByName(fi.name)).
    filter(f =&gt; !ignorePassword || (f match {
          case f: PasswordField[User] =&gt; false
          case _ =&gt; true
        })).
    flatMap(f =&gt;
      f.toForm.toList.map(form =&gt;
        (&lt;p&gt;
          &lt;label for={form \\&quot;@id&quot;}&gt;{f.displayName}{if(f.optional_?) &quot;&quot; else &quot; *&quot;}&lt;/label&gt;
          {form.
        	  map{case e : Elem =&gt; e % new UnprefixedAttribute(&quot;required&quot;, (!f.optional_?).toString, Null)}
          }
        &lt;/p&gt;) ) )
  }
&lt;/code&gt;&lt;/pre&gt;


And to allow isHtml5 to return true I add into Boot.boot (&lt;lift:Html5&gt; tag set the DocType too late):
&lt;pre&gt;&lt;code&gt;
   S.addAround(new LoanWrapper{
      def apply[T](f : =&gt; T) : T = {
        S.setDocType(Full(DocType.html5))
        f
      }
    })
&lt;/code&gt;&lt;/pre&gt;




* html5 specs for form validation : http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html
* a report about browser support : http://www.findmebyip.com/litmus#html5-forms-inputs
** javascript lib, used to test browser CSS3/html5 support : http://www.modernizr.com/

* the page I used to know possible input's attributes : http://miketaylr.com/code/input-type-attr.html
* the javacsript lib (jQuery based) I used with html5 to provide form validation : http://flowplayer.org/tools/release-notes/index.html#form

* HTML5/CSS/JS template  : http://html5boilerplate.com/
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2242191</id>
  <importance type="integer">676</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>cPwgK4uwyr37BxeJe5dVir,be7z4kuQmr3AZYab7jnrAJ</notification-list>
  <number type="integer">676</number>
  <priority type="integer">3</priority>
  <reporter-id>cPwgK4uwyr37BxeJe5dVir</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Html5 support for fields</summary>
  <updated-at type="datetime">2011-03-24T16:42:38+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>cPwgK4uwyr37BxeJe5dVir</id><login>david.bernard.31</login><login_name warning="deprecated">david.bernard.31</login_name><name>David Bernard</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">20</component-id>
  <created-on type="datetime">2010-10-11T17:40:47+02:00</created-on>
  <description>In certain use cases it would be preferable to convert numeric values into BigDecimal or other representations. JsonParser should allow for user-specified parsing of numeric values to accommodate this need.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2248847</id>
  <importance type="integer">677</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dbqip8eq4r34vueJe5afGb</notification-list>
  <number type="integer">677</number>
  <priority type="integer">3</priority>
  <reporter-id>dbqip8eq4r34vueJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>JsonParser should allow for configurable parsing of numeric values</summary>
  <updated-at type="datetime">2010-10-11T17:40:47+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>dbqip8eq4r34vueJe5afGb</id><login>dchenbecker</login><login_name warning="deprecated">dchenbecker</login_name><name>dchenbecker</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-10-15T20:50:23+02:00</created-on>
  <description>Support for browser-side Actor refs such that an actor ref in the browser can be sent a message and the message will appear in the server Actor and the browser can have actors which can be sent messages from the server and they will materialize (via a CometActor) in the client.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2297561</id>
  <importance type="integer">23</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ</notification-list>
  <number type="integer">680</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Support for browser-side Actor refs</summary>
  <updated-at type="datetime">2011-03-24T16:41:52+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">3</component-id>
  <created-on type="datetime">2010-10-20T11:09:15+02:00</created-on>
  <description>Currently, the methods DB.performQuery and DB.runQuery return a (List[String], List[List[Any]]) with the first item in the tuple being a List of column names.
When running a query with aliased column names, e.g. 
&lt;pre&gt;&lt;code&gt;SELECT FirstName AS GivenName FROM accounts WHERE id = 1
&lt;/code&gt;&lt;/pre&gt;
 The underlying field name (FirstName) is returned rather than the aliased name (GivenName).

It would be very useful to have the option of getting the aliased names instead - but obviously keep the existing behaviour as the default to maintain backwards compatibility.  This is especially needed when joining two tables that have a column with the same name.

I believe that the code which does this currently is in the DB.resultSetTo and DB.resultSetToAny methods.  Currently, the line which gets the column names reads:

&lt;pre&gt;&lt;code&gt;val colNames = cntList.map(i =&gt; md.getColumnName(i))
&lt;/code&gt;&lt;/pre&gt;

A supplemental version to get the aliased names as an alternative should instead read:

&lt;pre&gt;&lt;code&gt;val colNames = cntList.map(i =&gt; md.getColumnLabel(i))
&lt;/code&gt;&lt;/pre&gt;

This enhancement has been discussed on the mailing list in these threads:

[[url:http://groups.google.com/group/liftweb/browse_thread/thread/1b82ab568d10328c/c43c585f80be38f5|should use getColumnLabel insead of getColumnName in DB.resultSetToXXX ]]
[[url:http://groups.google.com/group/liftweb/browse_thread/thread/bd699357831dafcd/7a85b4312662ca51#7a85b4312662ca51|Mapper - Column Labels vs Column Names]]</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2326223</id>
  <importance type="integer">687</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>blCidG3cur35hGeJe5cbCb</notification-list>
  <number type="integer">687</number>
  <priority type="integer">3</priority>
  <reporter-id>blCidG3cur35hGeJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Option to return aliased column names from Mapper Raw SQL methods.</summary>
  <updated-at type="datetime">2010-10-20T11:09:15+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>blCidG3cur35hGeJe5cbCb</id><login>deadfolk</login><login_name warning="deprecated">deadfolk</login_name><name>deadfolk</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Comments</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Comments</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>dbqip8eq4r34vueJe5afGb</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">3</component-id>
  <created-on type="datetime">2010-10-22T17:41:25+02:00</created-on>
  <description>See this thread for discussion:

http://groups.google.com/group/liftweb/browse_thread/thread/4e2df84fb14275f2</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2342893</id>
  <importance type="integer">22</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dbqip8eq4r34vueJe5afGb</notification-list>
  <number type="integer">692</number>
  <priority type="integer">3</priority>
  <reporter-id>dbqip8eq4r34vueJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add support for using ROW_NUMBER with Oracle to achieve LIMIT/OFFSET</summary>
  <updated-at type="datetime">2010-11-05T17:52:26+01:00</updated-at>
  <working-hours type="float">2.0</working-hours>
  <working-hour type="float" warning="deprecated">2.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>dbqip8eq4r34vueJe5afGb</id><login>dchenbecker</login><login_name warning="deprecated">dchenbecker</login_name><name>dchenbecker</name></assigned-to>
  <reporter><id>dbqip8eq4r34vueJe5afGb</id><login>dchenbecker</login><login_name warning="deprecated">dchenbecker</login_name><name>dchenbecker</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">28</component-id>
  <created-on type="datetime">2010-11-23T14:55:33+01:00</created-on>
  <description>Could you please provide example code to demonstrate how to &quot;share an Actor between CometActor and REST with long polling, so you have 1 piece of business logic, but delivery via HTML and delivery via REST.&quot;

David asked me to open a ticket here so I am doing it.
I am wondering how to do this and I have no idea if i should do a S.respondAsync{} and call request.suspend somewhere or not... there has to be a better way

Thanks a lot for helping</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2606191</id>
  <importance type="integer">21</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dws4EI9WGr37beeJe5cbLr,a1xs765r4r34sNeJe5cbLr,duYztweq4r35g4eJe5afGb,be7z4kuQmr3AZYab7jnrAJ,dsi1uC-dir36P3eJe5cbLA</notification-list>
  <number type="integer">740</number>
  <priority type="integer">3</priority>
  <reporter-id>dws4EI9WGr37beeJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>share an Actor between CometActor and REST with long polling</summary>
  <updated-at type="datetime">2011-01-14T20:17:19+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>dws4EI9WGr37beeJe5cbLr</id><login>brugidou</login><login_name warning="deprecated">brugidou</login_name><name>brugidou</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-11-28T11:58:58+01:00</created-on>
  <description>Add Ajax file upload capabilities to SHtml, preferably using http://valums.com/ajax-upload/  as a front-end &quot;working use case&quot;.

SHtml calling interface could be:
def ajaxFileUpload(func: (FileParamHolder) =&gt; Unit, jsFunc : Call, func : (String) =&gt; JsCmd, attrs : (String, String)*)

This would be consistent with other ajax interfaces and with file upload (non-Ajax). </description>
  <from-support type="integer">0</from-support>
  <id type="integer">2629465</id>
  <importance type="integer">34</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>aD0nWgKfWr3kQaabIlDkbG,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,avYioYkF4r4lOgeJe5cbLA,aUanI8v9ur4izceJe5cbLr,cxOSg2u-ur4iqGeJe5cbLr,bKUM74R7er353NeJe5cbCb,b03KSAI7yr4jlgeJe5cbLr,bMWEFsX2ar364meJe5cbCb,c21tRQ6Bqr4jXcacwqjQYw</notification-list>
  <number type="integer">745</number>
  <priority type="integer">3</priority>
  <reporter-id>aD0nWgKfWr3kQaabIlDkbG</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add ajax file upload</summary>
  <updated-at type="datetime">2011-09-28T11:33:25+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>aD0nWgKfWr3kQaabIlDkbG</id><login>maarten.koopmans</login><login_name warning="deprecated">maarten.koopmans</login_name><name>maarten.koopmans</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-12-06T17:32:25+01:00</created-on>
  <description>Current discussion:
http://groups.google.com/group/liftweb/browse_thread/thread/c6e03492e59c0b0b

Old discussions:
http://groups.google.com/group/liftweb/browse_thread/thread/1cf5c0e153e98b47/5b60451a961ad78d
http://groups.google.com/group/liftweb/browse_thread/thread/9d68ee4182f82ef/9d3d5ffd04e3a9b3</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2684155</id>
  <importance type="integer">20</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>du4wvOsyGr35FyeJe5aVNr,a1xs765r4r34sNeJe5cbLr,be7z4kuQmr3AZYab7jnrAJ</notification-list>
  <number type="integer">758</number>
  <priority type="integer">3</priority>
  <reporter-id>du4wvOsyGr35FyeJe5aVNr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>ByList with IN instead of concatenated ORs</summary>
  <updated-at type="datetime">2011-02-10T00:28:19+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>du4wvOsyGr35FyeJe5aVNr</id><login>julianbackes</login><login_name warning="deprecated">julianbackes</login_name><name>julianbackes</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-12-14T00:05:50+01:00</created-on>
  <description>Spelunking in the notices code, I see that there's a wacky var in LiftSession that is a temporary keeper of notices.  That's going to break massively if you've got more than 1 thread doing requests at once.
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2761755</id>
  <importance type="integer">19</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,bHgN4w6wyr37SAeJe5cbLr</notification-list>
  <number type="integer">775</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>LiftSession.notices is a race condition waiting to happen</summary>
  <updated-at type="datetime">2011-09-22T04:54:45+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-12-14T23:21:30+01:00</created-on>
  <description>Use Scala package objects to support much simpler importing including Helpers._
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2769019</id>
  <importance type="integer">18</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,bHgN4w6wyr37SAeJe5cbLr</notification-list>
  <number type="integer">779</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Scala 2.8 package objects</summary>
  <updated-at type="datetime">2011-03-01T06:43:54+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-12-14T23:26:02+01:00</created-on>
  <description>Use functionality similar to Squeryl and Lift JSON to inspect case classes and build forms out of case classes
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2769041</id>
  <importance type="integer">17</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,bHgN4w6wyr37SAeJe5cbLr</notification-list>
  <number type="integer">780</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Screen/Wizard support for generic case classes</summary>
  <updated-at type="datetime">2011-02-16T00:55:19+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">30</component-id>
  <created-on type="datetime">2010-12-14T23:46:00+01:00</created-on>
  <description>Support for terminating ProtoUser sessions on IP address change</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2769175</id>
  <importance type="integer">16</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,bHgN4w6wyr37SAeJe5cbLr</notification-list>
  <number type="integer">781</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Optionally Terminate ProtoUser sessions on IP change</summary>
  <updated-at type="datetime">2011-02-10T00:28:33+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-12-16T13:57:48+01:00</created-on>
  <description>Hey,

the following keys which are used for i18n in Crudify are missing in i18n.lift-core.properties.

Please append them to *i18n.lift-core.properties* in english and german

Save = Save
Edit = Edit
Delete = Delete
Create = Create
View = View
List = List
Next = Next
Previous = Previous
Created = Created

Save = Speichern
Edit = Bearbeiten
Delete = L&#246;schen
Create = Erstellen
View = Betrachten
List = Anzeigen
Next = Vor
Previous = Zur&#252;ck
Created = Erstellt</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2780909</id>
  <importance type="integer">783</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">783</number>
  <priority type="integer">3</priority>
  <reporter-id>be6B685AKr3PRSeJe5aVNr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Missing i18n propertis for Crudify generated pages</summary>
  <updated-at type="datetime">2010-12-16T13:57:48+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>be6B685AKr3PRSeJe5aVNr</id><login>jblankenhorn</login><login_name warning="deprecated">jblankenhorn</login_name><name>jblankenhorn</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">15</component-id>
  <created-on type="datetime">2010-12-18T01:09:28+01:00</created-on>
  <description>Lift Actors need more documentation, perhaps a !!? futures method not to mention finite length mailboxes, stuff like that.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2792175</id>
  <importance type="integer">15</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">789</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Enhance LiftActors to support finite length mailboxes</summary>
  <updated-at type="datetime">2011-01-26T02:17:07+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">29</component-id>
  <created-on type="datetime">2010-12-19T15:09:35+01:00</created-on>
  <description>The http://knockoutjs.com/ library is a natural fit with Wiring.  Create a module or some other form of support for KnockoutJS</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2794581</id>
  <importance type="integer">14</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,cMM-h875Or35KneJe5cbLr,duYztweq4r35g4eJe5afGb</notification-list>
  <number type="integer">791</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Support for Knockout JS</summary>
  <updated-at type="datetime">2011-02-10T00:28:45+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-12-22T06:46:40+01:00</created-on>
  <description>This is from our discussion on the ML with the title Lift-lint. 

&quot;Yeah... you're probably going to need the code that walks the templates split out so you can access it without a session so you can walk all the templates and find the referenced snippets. &quot;

Contact me when it's ready 

Merry Christmas,
Mads</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2809537</id>
  <importance type="integer">13</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>amgs1M_Zyr3zXFeJe5aVNr,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">798</number>
  <priority type="integer">3</priority>
  <reporter-id>amgs1M_Zyr3zXFeJe5aVNr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Make code that walks the templates accessible without a session</summary>
  <updated-at type="datetime">2011-03-14T19:16:23+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>amgs1M_Zyr3zXFeJe5aVNr</id><login>mads379</login><login_name warning="deprecated">mads379</login_name><name>mads379</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Task</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Task</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-12-27T20:06:41+01:00</created-on>
  <description>More of the global nastiness around Msgs.  I think I need to totally re-write the messages mechanism... perhaps to use wiring.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2828323</id>
  <importance type="integer">12</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,awGENye3Kr4jVueJe5cbCb</notification-list>
  <number type="integer">805</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>snippet Msgs.ShowAll should not be a session var</summary>
  <updated-at type="datetime">2011-09-22T04:36:26+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>cnLPaAo3mr4lkMeJe5cbLr</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">3</component-id>
  <created-on type="datetime">2011-01-03T21:17:07+01:00</created-on>
  <description>Upgrade MappedPassword and PasswordField to use JBCrypt for password storage to make it harder to do dictionary attacks even if the password DB is compromised.

The upgrade should be &quot;in place&quot; such that existing databases will work just fine, but when passwords are changed, the new hashing mechanism is used.
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2852183</id>
  <importance type="integer">11</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,cnLPaAo3mr4lkMeJe5cbLr</notification-list>
  <number type="integer">822</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Update MappedPassword and PasswordField to use JBCrypt</summary>
  <updated-at type="datetime">2011-12-02T12:02:19+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>cnLPaAo3mr4lkMeJe5cbLr</id><login>raskaj</login><login_name warning="deprecated">raskaj</login_name><name>J&#225;n Ra&#353;ka</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Comments</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Comments</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">4</component-id>
  <created-on type="datetime">2011-01-07T05:27:23+01:00</created-on>
  <description>Scala's Enumeration is limited.

Create a new Enumeration that support subclassing Values, case classes/case objects, etc.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2875707</id>
  <importance type="integer">10</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,dpMNqW4R4r36WjeJe5cbLr</notification-list>
  <number type="integer">829</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>New Enumeration &amp; associated support in Mapper &amp; Record</summary>
  <updated-at type="datetime">2011-03-24T16:41:28+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">15</component-id>
  <created-on type="datetime">2011-01-07T23:16:59+01:00</created-on>
  <description>Enhance the Lift Actor package based on the Stambecco code base including remote actors.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2881033</id>
  <importance type="integer">9</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">831</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Integrate Stambecco code into Lift</summary>
  <updated-at type="datetime">2011-02-16T00:55:46+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>dbqip8eq4r34vueJe5afGb</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-01-09T16:30:46+01:00</created-on>
  <description>For some reason HideIfNoKids doesn't appear to be working as advertised.

http://groups.google.com/group/liftweb/browse_thread/thread/1e900bfa2a2eaff7#</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2888241</id>
  <importance type="integer">8</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dbqip8eq4r34vueJe5afGb,a1xs765r4r34sNeJe5cbLr,cLE2lghbWr4knweJe5cbLA</notification-list>
  <number type="integer">832</number>
  <priority type="integer">3</priority>
  <reporter-id>dbqip8eq4r34vueJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Fix HideIfNoKids so that it works</summary>
  <updated-at type="datetime">2011-02-23T14:40:18+01:00</updated-at>
  <working-hours type="float">3.0</working-hours>
  <working-hour type="float" warning="deprecated">3.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>dbqip8eq4r34vueJe5afGb</id><login>dchenbecker</login><login_name warning="deprecated">dchenbecker</login_name><name>dchenbecker</name></assigned-to>
  <reporter><id>dbqip8eq4r34vueJe5afGb</id><login>dchenbecker</login><login_name warning="deprecated">dchenbecker</login_name><name>dchenbecker</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>dY-d9Y4q8r3Qa0eJe5afGb</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">21</component-id>
  <created-on type="datetime">2011-01-12T18:34:58+01:00</created-on>
  <description>There are several inefficiencies in the current lift-mongodb-record code mostly associated with findAll, in which multiple iterations are invoked when only one is needed.  This is causing unnecessary memory usage as well as performance degradation especially with larger datasets.

It is primarily caused by a Java object implementing two conflicting interfaces which caused an ambiguity in JavaConversions.  The path chosen to fix it was to add some extra conversions &amp; iterations.  Instead, it proves significantly more performant to explicitly annotate the Java object with a specific type and let JavaConversions do its thing.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2925089</id>
  <importance type="integer">837</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dY-d9Y4q8r3Qa0eJe5afGb,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">837</number>
  <priority type="integer">3</priority>
  <reporter-id>dY-d9Y4q8r3Qa0eJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Improve lift-mongodb-record &amp; lift-mongodb performance</summary>
  <updated-at type="datetime">2011-09-22T05:19:30+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">2.5</invested-hours>
  <assigned-to><id>dY-d9Y4q8r3Qa0eJe5afGb</id><login>bwmcadams</login><login_name warning="deprecated">bwmcadams</login_name><name>Brendan McAdams</name></assigned-to>
  <reporter><id>dY-d9Y4q8r3Qa0eJe5afGb</id><login>bwmcadams</login><login_name warning="deprecated">bwmcadams</login_name><name>Brendan McAdams</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Comments</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Comments</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">19</component-id>
  <created-on type="datetime">2011-01-14T15:31:26+01:00</created-on>
  <description>The Flot widget does not support formatting ticks.  The Flot JavaScript library provides a &quot;tickFormatter&quot; option for customizing the axes.  

Alternatively the &quot;tick&quot; option supports passing in a two-element array to map numeric ticks to a string to display as the label.  Here is an example from the the Flot API.txt:

&lt;pre&gt;&lt;code&gt;ticks: [[0, &quot;zero&quot;], [1.2, &quot;one mark&quot;], [2.4, &quot;two marks&quot;]]&lt;/code&gt;&lt;/pre&gt;

See http://groups.google.com/group/liftweb/browse_thread/thread/c89dcdef4389cd4d?hl=en# for reference.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2939949</id>
  <importance type="integer">845</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>a9mAseh10r4lHoeJe5cbCb,a1xs765r4r34sNeJe5cbLr,bX-5f8bair4B-facwqjQWU</notification-list>
  <number type="integer">845</number>
  <priority type="integer">3</priority>
  <reporter-id>a9mAseh10r4lHoeJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Flot widget does not support tick formatting</summary>
  <updated-at type="datetime">2011-10-31T21:55:42+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>a9mAseh10r4lHoeJe5cbCb</id><login>mraccola</login><login_name warning="deprecated">mraccola</login_name><name>mraccola</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">19</component-id>
  <created-on type="datetime">2011-01-14T15:37:50+01:00</created-on>
  <description>The Flot widget should support horizontal bars.  The Flot JavaScript library provides a &quot;series.bars.horizontal&quot; option for this purpose.  Here is an example from the Flot API.txt:


&lt;pre&gt;&lt;code&gt;series: {
  bars: {
    barWidth: number
    align: &quot;left&quot; or &quot;center&quot;
    horizontal: boolean
  }
}&lt;/code&gt;&lt;/pre&gt;

The net.liftweb.widgets.flot.FlotBarsOptions trait does not provide any options other than barWidth.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2940017</id>
  <importance type="integer">846</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>a9mAseh10r4lHoeJe5cbCb,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">846</number>
  <priority type="integer">3</priority>
  <reporter-id>a9mAseh10r4lHoeJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Flot widget does not support horizontal bars option</summary>
  <updated-at type="datetime">2011-01-15T14:57:11+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>a9mAseh10r4lHoeJe5cbCb</id><login>mraccola</login><login_name warning="deprecated">mraccola</login_name><name>mraccola</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>dbqip8eq4r34vueJe5afGb</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">12</component-id>
  <created-on type="datetime">2011-01-16T20:23:52+01:00</created-on>
  <description>Per the discussion on the committer's list, the build should (with prompting):

https://docs.google.com/document/d/1kWGFbdoPouWC2lHG0n20vS3W2Ww1TijXZBAj5wJSRKU/edit?hl=en&amp;authkey=CJ6hqKIP</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2946585</id>
  <importance type="integer">7</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dbqip8eq4r34vueJe5afGb,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">852</number>
  <priority type="integer">3</priority>
  <reporter-id>dbqip8eq4r34vueJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Automate build process for releases</summary>
  <updated-at type="datetime">2011-09-22T05:47:35+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>dbqip8eq4r34vueJe5afGb</id><login>dchenbecker</login><login_name warning="deprecated">dchenbecker</login_name><name>dchenbecker</name></assigned-to>
  <reporter><id>dbqip8eq4r34vueJe5afGb</id><login>dchenbecker</login><login_name warning="deprecated">dchenbecker</login_name><name>dchenbecker</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-01-19T15:50:53+01:00</created-on>
  <description>As requested in this e-mail:

http://www.mail-archive.com/esme-dev@incubator.apache.org/msg02243.html</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2968061</id>
  <importance type="integer">6</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>cngF6cTSWr34tWeJe5cbLr,a1xs765r4r34sNeJe5cbLr,be7z4kuQmr3AZYab7jnrAJ</notification-list>
  <number type="integer">855</number>
  <priority type="integer">3</priority>
  <reporter-id>cngF6cTSWr34tWeJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Non-scoped localized strings</summary>
  <updated-at type="datetime">2011-03-16T13:26:48+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>cngF6cTSWr34tWeJe5cbLr</id><login>eric.j.christeson</login><login_name warning="deprecated">eric.j.christeson</login_name><name>eric.j.christeson</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>apLvKSdcur35E8eJe5aVNr</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">12</component-id>
  <created-on type="datetime">2011-01-30T09:25:21+01:00</created-on>
  <description>Currently, there isn't a good option to generate surefire style output in SBT that complies well with Specs.
This ticket tracks the progress of a Specs ticket which solves the problem in a nice way.

http://code.google.com/p/specs/issues/detail?id=167</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3037307</id>
  <importance type="integer">5</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>apLvKSdcur35E8eJe5aVNr,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">877</number>
  <priority type="integer">3</priority>
  <reporter-id>apLvKSdcur35E8eJe5aVNr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Surefire style output for Specs under SBT</summary>
  <updated-at type="datetime">2011-01-30T09:25:21+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>apLvKSdcur35E8eJe5aVNr</id><login>indrajitr</login><login_name warning="deprecated">indrajitr</login_name><name>Indrajit Raychaudhuri</name><website>http://indrajit.com</website></assigned-to>
  <reporter><id>apLvKSdcur35E8eJe5aVNr</id><login>indrajitr</login><login_name warning="deprecated">indrajitr</login_name><name>Indrajit Raychaudhuri</name><website>http://indrajit.com</website></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-02-01T10:39:44+01:00</created-on>
  <description>The archetypes' prototype poms refer to the out-dated package names ch.epfl.lamp.sdt... from the Scala IDE tooling, which have been succeeded by org.scala-ide.sdt.core (at least) in recent builds. As result, Eclipse projects created from these archetypes are not built properly.
I added a patch to fix this issue for .classpath and .project generation.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3047979</id>
  <importance type="integer">879</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>d6NXCKlEmr4kyQeJe5cbLA,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">879</number>
  <priority type="integer">3</priority>
  <reporter-id>d6NXCKlEmr4kyQeJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Lift archetypes refer to out-dated scala-ide names</summary>
  <updated-at type="datetime">2011-02-01T10:39:44+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>d6NXCKlEmr4kyQeJe5cbLA</id><login>weinell</login><login_name warning="deprecated">weinell</login_name><name>weinell</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-02-09T00:40:27+01:00</created-on>
  <description>It's a pretty bad/annoying API that was developed a looooong time ago and has outlived it's usefulness.  Will require a deprecation cycle.

Possibly should be dropped from Mapper API as well (though I personally care less about that).</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3098001</id>
  <importance type="integer">887</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dgvJE6eq4r34vueJe5afGb,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">887</number>
  <priority type="integer">3</priority>
  <reporter-id>dgvJE6eq4r34vueJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>drop setFromAny from record API</summary>
  <updated-at type="datetime">2011-02-09T00:40:27+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>dgvJE6eq4r34vueJe5afGb</id><login>harryh</login><login_name warning="deprecated">harryh</login_name><name>harryh</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087"> Comments</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087"> Comments</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>dwtcBs9Umr35x0eJe5cbCb</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">7</component-id>
  <created-on type="datetime">2011-02-18T16:37:38+01:00</created-on>
  <description>In squeryl-record, there should be an option to have non-autogenerated PKs. Currently mixing in KeyedRecord trait makes PK autogenerated and without mixing that trait, one cannot use table in relationships, as for that, KeyedEntity is required.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3171763</id>
  <importance type="integer">4</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>cnLPaAo3mr4lkMeJe5cbLr,a1xs765r4r34sNeJe5cbLr,dwtcBs9Umr35x0eJe5cbCb</notification-list>
  <number type="integer">901</number>
  <priority type="integer">3</priority>
  <reporter-id>cnLPaAo3mr4lkMeJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Non-autogenerated PKs in squeryl-record</summary>
  <updated-at type="datetime">2011-03-18T14:44:14+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>dwtcBs9Umr35x0eJe5cbCb</id><login>migo</login><login_name warning="deprecated">migo</login_name><name>migo</name></assigned-to>
  <reporter><id>cnLPaAo3mr4lkMeJe5cbLr</id><login>raskaj</login><login_name warning="deprecated">raskaj</login_name><name>J&#225;n Ra&#353;ka</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-02-18T20:30:16+01:00</created-on>
  <description>At this moment there is a fixed list of well known endpoints available. 
It is handy to have the option to add your own known endpoints to that. 

Mail thread pasted in this message (as I cannot find the thread in the google group. 



On Fri, Feb 18, 2011 at 10:24 AM, Olger Warnier &lt;olger.warnier@gmail.com&gt; wrote:
Hi List,

I'd like to support logon based on a google apps domain in my application.
In order to do such a thing, you need a setup (actually a single file called: openid) on your domain webserver that will redirect the actual openId check to the google openid server for app domains.

The liftweb openid supports the general google openid host, but in the WellKnownEndpoints there is no entry for the Google App handling.

Could we add the following to the WellKnownEndpoints ?

 val GoogleApps = new DiscoveredEndpoint(&quot;Google&quot;,&quot;https://www\\.google\\.com/a/.+\\..+/o8/.+&quot;) {
   override def makeAttributeExtension(attrs: List[Attribute]): Box[MessageExtension] =
     Full(fetchRequestExtension(attrs.zipAll(Nil, null, true)))
 }

(and to the endpoints list of course)

- or -

In what way do I register an aditional endpoint in order to have it found and mapped as done for the WellKnownEndpoints ?

For completeness:
This code is used with the beforeAuth = Full(ext _) stuff as found on the wiki. (Could add some info there on the support for apps domain)

Regards,

Olger


Afair, there's currently no support for registering additional endpoints. This seems like a useful feature, so please open a ticket at ticket.liftweb.net, referencing this thread (you must be a watcher of the Liftweb space)

Also, you can update the wiki yourself once you become a watcher :-)

/Jeppe

</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3173337</id>
  <importance type="integer">903</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>bN3GnU9Y4r35V-eJe5cbLr,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">903</number>
  <priority type="integer">3</priority>
  <reporter-id>bN3GnU9Y4r35V-eJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Have the ability to add WellKnownEndpoints for OpenID handling</summary>
  <updated-at type="datetime">2011-02-18T20:30:16+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bN3GnU9Y4r35V-eJe5cbLr</id><login>olger</login><login_name warning="deprecated">olger</login_name><name>olger</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>apLvKSdcur35E8eJe5aVNr</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">17</component-id>
  <created-on type="datetime">2011-02-22T18:05:50+01:00</created-on>
  <description>See https://groups.google.com/group/liftweb/browse_thread/thread/ddc24fa29c040f99

Basically, add an action to SBT that will bundle the war and Jetty into one executable, big, fat, jar.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3195957</id>
  <importance type="integer">909</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>aD0nWgKfWr3kQaabIlDkbG,apLvKSdcur35E8eJe5aVNr,a1xs765r4r34sNeJe5cbLr,dJ2TbUmVir4j83eJe5cbLA,c6nuiKjlmr35N8eJe5aVNr,bKUM74R7er353NeJe5cbCb,daDml61Vur35YoeJe5cbCb</notification-list>
  <number type="integer">909</number>
  <priority type="integer">3</priority>
  <reporter-id>aD0nWgKfWr3kQaabIlDkbG</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>One file deploy (including Jetty)</summary>
  <updated-at type="datetime">2011-06-20T19:25:12+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>apLvKSdcur35E8eJe5aVNr</id><login>indrajitr</login><login_name warning="deprecated">indrajitr</login_name><name>Indrajit Raychaudhuri</name><website>http://indrajit.com</website></assigned-to>
  <reporter><id>aD0nWgKfWr3kQaabIlDkbG</id><login>maarten.koopmans</login><login_name warning="deprecated">maarten.koopmans</login_name><name>maarten.koopmans</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-02-23T15:41:34+01:00</created-on>
  <description>There is common requirement to log user actions, it would be very neat to add it to Mapper or Record.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3206231</id>
  <importance type="integer">911</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dYZK22uQir37PceJe5cbLA,a1xs765r4r34sNeJe5cbLr,daDml61Vur35YoeJe5cbCb</notification-list>
  <number type="integer">911</number>
  <priority type="integer">3</priority>
  <reporter-id>dYZK22uQir37PceJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add user actions logging</summary>
  <updated-at type="datetime">2011-06-20T19:24:23+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>dYZK22uQir37PceJe5cbLA</id><login>lkuczera</login><login_name warning="deprecated">lkuczera</login_name><name>lkuczera</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">9</component-id>
  <created-on type="datetime">2011-02-26T14:57:30+01:00</created-on>
  <description>https://www.assembla.com/wiki/show/liftweb/Guide_to_Committing_Code
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3228907</id>
  <importance type="integer">921</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>aP1mdQl-Cr3P4SeJe5afGb,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">921</number>
  <priority type="integer">3</priority>
  <reporter-id>aP1mdQl-Cr3P4SeJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Update the committer process wiki</summary>
  <updated-at type="datetime">2011-02-26T14:57:30+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>aP1mdQl-Cr3P4SeJe5afGb</id><login>jeppenejsum</login><login_name warning="deprecated">jeppenejsum</login_name><name>jeppenejsum</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Task</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Task</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-03-10T20:20:46+01:00</created-on>
  <description>It would be immensely helpful for authors of highly interactive web apps if it were possible to add a CometActor to a page after the page was loaded.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3331888</id>
  <importance type="integer">933</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dpMNqW4R4r36WjeJe5cbLr,a1xs765r4r34sNeJe5cbLr,daDml61Vur35YoeJe5cbCb</notification-list>
  <number type="integer">933</number>
  <priority type="integer">3</priority>
  <reporter-id>dpMNqW4R4r36WjeJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add CometActor to a page dynamically</summary>
  <updated-at type="datetime">2012-02-13T23:01:37+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>dpMNqW4R4r36WjeJe5cbLr</id><login>dmclean62</login><login_name warning="deprecated">dmclean62</login_name><name>dmclean62</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">3</component-id>
  <created-on type="datetime">2011-03-11T15:41:01+01:00</created-on>
  <description>It'd be nice, if one could define referential actions for Mapper's foreign key, so that Schemifier will create such FKs and one wouldn't have to redefine FKs manually afterwards. By referential actions I mean what should be done if referenced row in parent table is updated or deleted (CASCADE, NO ACTION, RESTRICT, SET NULL, SET DEFAULT). Currently all FKs are defined as &quot;ON UPDATE NO ACTION ON DELETE NO ACTION&quot;.

GoogleGroups thread: http://groups.google.com/group/liftweb/browse_thread/thread/67e00c37772dea91#</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3343350</id>
  <importance type="integer">934</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>cnLPaAo3mr4lkMeJe5cbLr,a1xs765r4r34sNeJe5cbLr,b41mDG0BGr4llKeJe5cbCb</notification-list>
  <number type="integer">934</number>
  <priority type="integer">3</priority>
  <reporter-id>cnLPaAo3mr4lkMeJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Referential actions for foreign keys in Mapper</summary>
  <updated-at type="datetime">2011-10-16T23:56:12+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>cnLPaAo3mr4lkMeJe5cbLr</id><login>raskaj</login><login_name warning="deprecated">raskaj</login_name><name>J&#225;n Ra&#353;ka</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Comments</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Comments</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-04-06T13:40:16+02:00</created-on>
  <description>I suggest changing default behaviour of ChoiceHolder.htmlize so that there is no &lt;br/&gt; tag and radios and checkboxes are surrounded by &lt;label&gt; instead of &lt;span&gt;
Also it might be a good idea to update ScalaDoc for that method, so that it informs, that this is the place to plug in a custom behaviour by changing it in Boot class.

Discussion thread: https://groups.google.com/forum/?pli=1#!topic/liftweb/Ar8EOCaUnbE</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3556503</id>
  <importance type="integer">959</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>cnLPaAo3mr4lkMeJe5cbLr,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">959</number>
  <priority type="integer">3</priority>
  <reporter-id>cnLPaAo3mr4lkMeJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Htmlize ChoiceHolder with &lt;label&gt;</summary>
  <updated-at type="datetime">2011-04-06T13:40:16+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>cnLPaAo3mr4lkMeJe5cbLr</id><login>raskaj</login><login_name warning="deprecated">raskaj</login_name><name>J&#225;n Ra&#353;ka</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Comments</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Comments</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>bDdDEMw44r4iM5eJe5cbLr</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-04-16T14:39:24+02:00</created-on>
  <description>manifest.toString() in vendForm() can return surprising results depending on the field(...) call in the screen.

Sample project here: https://github.com/pbrant/generic_fbl_test / git://github.com/pbrant/generic_fbl_test.git

The cause appears to be the generic valConversion() validation method

Original thread here http://groups.google.com/group/liftweb/browse_thread/thread/af21b61154c2b8c2#</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3636623</id>
  <importance type="integer">977</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>bDdDEMw44r4iM5eJe5cbLr,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">977</number>
  <priority type="integer">3</priority>
  <reporter-id>bDdDEMw44r4iM5eJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>FormBuilderLocator with generic type can't always be found</summary>
  <updated-at type="datetime">2011-07-01T00:00:11+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>bDdDEMw44r4iM5eJe5cbLr</id><login>peter.brant</login><login_name warning="deprecated">peter.brant</login_name><name>peter.brant</name></assigned-to>
  <reporter><id>bDdDEMw44r4iM5eJe5cbLr</id><login>peter.brant</login><login_name warning="deprecated">peter.brant</login_name><name>peter.brant</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">25</component-id>
  <created-on type="datetime">2011-04-29T06:19:47+02:00</created-on>
  <description>There should be a way to block duplicate submits when using an ajax LiftScreen. Possibly disable the &quot;next&quot; button once submitted and/or wrap finish in callOnce.

https://groups.google.com/d/topic/liftweb/lnLvJNTgISE/discussion</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3736692</id>
  <importance type="integer">996</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>aOmMucCHCr4ijoeJe5cbLr,a1xs765r4r34sNeJe5cbLr,dbvdZgCI4r4i6UeJe5cbLr</notification-list>
  <number type="integer">996</number>
  <priority type="integer">3</priority>
  <reporter-id>aOmMucCHCr4ijoeJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Block Double Submit in Ajax Screen/Wizard</summary>
  <updated-at type="datetime">2011-04-29T09:06:38+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>aOmMucCHCr4ijoeJe5cbLr</id><login>bhazer</login><login_name warning="deprecated">bhazer</login_name><name>Bart H</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-05-02T22:22:20+02:00</created-on>
  <description>As described in this discussion thread:

http://groups.google.com/group/liftweb/browse_thread/thread/d8b32077e66e2881#</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3757038</id>
  <importance type="integer">1000</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>bec9HKDpKr4ilXeJe5cbLA,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">1000</number>
  <priority type="integer">3</priority>
  <reporter-id>bec9HKDpKr4ilXeJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Update the bundled JQuery to the 1.5 series</summary>
  <updated-at type="datetime">2011-05-02T22:23:30+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bec9HKDpKr4ilXeJe5cbLA</id><login>davenatx</login><login_name warning="deprecated">davenatx</login_name><name>davenatx</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">28</component-id>
  <created-on type="datetime">2011-05-19T10:16:21+02:00</created-on>
  <description>net.liftweb.http.CreatedResponse has a Node as one of its parameters. A new CreatedResponse that takes JSON as well as XML would be useful for creating a JSON-based RESTful interface.

Related:
http://groups.google.com/group/liftweb/browse_thread/thread/3e3e7f19c296ebd9#</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3934103</id>
  <importance type="integer">1014</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>bSKuKUGE8r4khjeJe5cbCb,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">1014</number>
  <priority type="integer">3</priority>
  <reporter-id>bSKuKUGE8r4khjeJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>A new CreatedResponse that takes JSON</summary>
  <updated-at type="datetime">2011-05-19T10:16:21+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bSKuKUGE8r4khjeJe5cbCb</id><login>silves89</login><login_name warning="deprecated">silves89</login_name><name>silves89</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Comments</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Comments</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>bDdDEMw44r4iM5eJe5cbLr</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">25</component-id>
  <created-on type="datetime">2011-05-19T19:16:09+02:00</created-on>
  <description>Thread here http://groups.google.com/group/liftweb/browse_thread/thread/74412a2fca848787</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3943025</id>
  <importance type="integer">1015</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>bDdDEMw44r4iM5eJe5cbLr,a1xs765r4r34sNeJe5cbLr,bC-wM4uWWr4k4weJe5cbCb</notification-list>
  <number type="integer">1015</number>
  <priority type="integer">3</priority>
  <reporter-id>bDdDEMw44r4iM5eJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Enter in a field does not always submit a LiftScreen form</summary>
  <updated-at type="datetime">2011-08-26T13:24:39+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>bDdDEMw44r4iM5eJe5cbLr</id><login>peter.brant</login><login_name warning="deprecated">peter.brant</login_name><name>peter.brant</name></assigned-to>
  <reporter><id>bDdDEMw44r4iM5eJe5cbLr</id><login>peter.brant</login><login_name warning="deprecated">peter.brant</login_name><name>peter.brant</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">3</component-id>
  <created-on type="datetime">2011-05-24T06:52:43+02:00</created-on>
  <description>http://groups.google.com/group/liftweb/browse_thread/thread/cbe05606847e922/

MappedPassword fails silently when you set it programmatically in a way that is inconsistent with validation. It's also more complicated than it needs to be.

The discussion above lists a couple of other desiderata.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3980422</id>
  <importance type="integer">1020</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>ak6zlIUdKr34g6eJe5cbCb,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">1020</number>
  <priority type="integer">3</priority>
  <reporter-id>ak6zlIUdKr34g6eJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>create MappedPasswordHash field to replace MappedPassword</summary>
  <updated-at type="datetime">2011-05-24T06:52:43+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>ak6zlIUdKr34g6eJe5cbCb</id><login>toddobryan</login><login_name warning="deprecated">toddobryan</login_name><name>toddobryan</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">5</component-id>
  <created-on type="datetime">2011-05-25T08:30:04+02:00</created-on>
  <description>in JqJsCmd 
 def toJsCmd = &quot;jQuery('#&quot;+id+&quot;')&quot;

http://groups.google.com/group/liftweb/browse_thread/thread/16f3e3bddec5cc70/e32c4c02b927b43f?lnk=gst&amp;q=jquery+selector+ticket#e32c4c02b927b43f

</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3991966</id>
  <importance type="integer">1022</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dYZK22uQir37PceJe5cbLA,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">1022</number>
  <priority type="integer">3</priority>
  <reporter-id>dYZK22uQir37PceJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Use jQuery selectors in JqJsCmds </summary>
  <updated-at type="datetime">2011-05-25T08:30:04+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>dYZK22uQir37PceJe5cbLA</id><login>lkuczera</login><login_name warning="deprecated">lkuczera</login_name><name>lkuczera</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-05-25T19:26:45+02:00</created-on>
  <description>
Per https://groups.google.com/group/liftweb/browse_thread/thread/83955de9798f4d0c?pli=1

It would be useful to have the ability to map an xmltype column from oracle (also supported by postgres).

Additionally, the ability to search by xpath taking advantage of the xmlexists('xpath' passing &lt;column&gt;) syntax would be even more useful.

This is a broad tutorial of using the feature and most importantly the xmlindex that comes with 11gR2 (which indexes all xpaths in all documents). 
http://www.oracle.com/technetwork/testcontent/xmldb-086889.html
http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96620/xdb04cre.htm

postgres - http://developer.postgresql.org/pgdocs/postgres/datatype-xml.html
derby - http://db.apache.org/derby/docs/10.2/ref/rrefsqljtypexml.html

I haven't personally used derby or postgres, but the concept seems similar.
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3998562</id>
  <importance type="integer">1023</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>a_xKmo4E4r370zeJe5cbLA,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">1023</number>
  <priority type="integer">3</priority>
  <reporter-id>a_xKmo4E4r370zeJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>MappedXml field</summary>
  <updated-at type="datetime">2011-05-25T19:26:45+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>a_xKmo4E4r370zeJe5cbLA</id><login>paul.dale</login><login_name warning="deprecated">paul.dale</login_name><name>paul.dale</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">0</component-id>
  <created-on type="datetime">2011-06-09T09:42:32+02:00</created-on>
  <description>Ref this thread: http://groups.google.com/group/liftweb/browse_thread/thread/91e663dd5ccd92f6/d6ef9177210b8e1d

It would be nice to be able to have complete control over how menu-items are rendered. Today's Menu.builder is less optimal as it's impossible to generate customized events on the generated anchor-tag for each menu-item. Sometimes one wants to have some other markup (div, span etc.) for special menu-items so it would be nice to have that option too.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">4119904</id>
  <importance type="integer">1035</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>bMWEFsX2ar364meJe5cbCb,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">1035</number>
  <priority type="integer">3</priority>
  <reporter-id>bMWEFsX2ar364meJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Custom rendering of menu-items with custom event-handlers per menu-item</summary>
  <updated-at type="datetime">2011-12-26T17:29:02+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bMWEFsX2ar364meJe5cbCb</id><login>andreak@officenet.no</login><login_name warning="deprecated">andreak@officenet.no</login_name><name>andreak@officenet.no</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-06-14T08:38:34+02:00</created-on>
  <description>Some of field declaration methods have type parameters (like *select[T](...)*, *multiselect[T](...)* ) and others don&#8242;t (like *radio(...)* ).
It would be great all methods have type parameters for consistency.
Also *radio(...)* is documented with _&#8220;@param f a PairStringPromoter (a wrapper around a function) that converts T =&gt; display String&#8221;_ which is not used in the method declaration.

Discussion: https://groups.google.com/d/topic/liftweb/VbFjuuRPuv0/discussion</description>
  <from-support type="integer">0</from-support>
  <id type="integer">4155224</id>
  <importance type="integer">1042</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>bC-wM4uWWr4k4weJe5cbCb,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">1042</number>
  <priority type="integer">3</priority>
  <reporter-id>bC-wM4uWWr4k4weJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Unify LiftScreen field declaration API with type parameters</summary>
  <updated-at type="datetime">2011-06-14T08:38:34+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>bC-wM4uWWr4k4weJe5cbCb</id><login>strofimov</login><login_name warning="deprecated">strofimov</login_name><name>strofimov</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">4</component-id>
  <created-on type="datetime">2011-06-27T15:20:32+02:00</created-on>
  <description>The noTime function for the DateExtension class always returns the time without hours, minutes, seconds and milliseconds for the current time not the time the function is supposed to be working on.

I think the calendar.setTime(date) needs to be called just after the val calendar = Calendar.getInstance line.

Google discussion: [[url:http://groups.google.com/group/liftweb/browse_thread/thread/94143b706c9c2237/e200690f274481d5?lnk=gst&amp;q=noTime#e200690f274481d5|http://groups.google.com/group/liftweb/browse_thread/thread/94143b706c9c2237/e200690f274481d5?lnk=gst&amp;q=noTime#e200690f274481d5]]</description>
  <from-support type="integer">0</from-support>
  <id type="integer">4269306</id>
  <importance type="integer">1056</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>awnItw1T0r34caeJe5cbLA,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">1056</number>
  <priority type="integer">3</priority>
  <reporter-id>awnItw1T0r34caeJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>noTime in TimeHelpers always uses current date not the provided date</summary>
  <updated-at type="datetime">2011-06-27T15:20:32+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>awnItw1T0r34caeJe5cbLA</id><login>ghostflea</login><login_name warning="deprecated">ghostflea</login_name><name>ghostflea</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-07-01T04:12:34+02:00</created-on>
  <description>Copied from http://groups.google.com/group/liftweb/browse_thread/thread/54e059516001a518

&gt;&gt;  For example, trying to use
&gt;&gt; a SessionVar before the session has been created shouldn't just refuse to be set.  It
&gt;&gt; would be nice to have an exception reporting the problem.
&gt;
&gt; I think your points are valid to a certain degree, but for this
&gt; specific problem there's a solution in LiftRules:
&gt;
&gt; /**
&gt;   * Should an exception be thrown on out of scope Session and RequestVar
&gt;   * access.  By default, no.
&gt;   */
&gt;  @volatile var throwOnOutOfScopeVarAccess: Boolean = false
&gt;
&gt; /Jeppe

Thanks for the pointer, but I don't think it's working.  After messing around with it in my own project, I did the following:

1. downloaded the examples from https://github.com/lift/lift_23_sbt.git

2. Compiled and ran fine using sbt

3. Added

   // Find out if we access SessionVars or RequestVars inappropriately..
   LiftRules.throwOnOutOfScopeVarAccess = true

  as the last line in Boot.boot


4. Ran again and it threw an exception:

[info] == jetty-run ==
[success] Successful.
[info]
[info] Total time: 2 s, completed Jun 30, 2011 11:48:02 AM
&gt; 11:48:04.848 [1193485506@qtp-1743791445-0] ERROR net.liftweb.http.LiftRules$$anon$1 - Exception being returned to browser when processing /: Message: java.lang.IllegalAccessException: Access to SessionVar outside a request or comet actor scope
       net.liftweb.http.SessionVar.findFunc(Vars.scala:71)
       net.liftweb.util.AnyVarTrait$$anonfun$is$1.apply(AnyVar.scala:137)
       net.liftweb.http.SessionVar.doSync(Vars.scala:125)
       net.liftweb.util.AnyVarTrait$class.is(AnyVar.scala:136)
       net.liftweb.util.AnyVar.is(AnyVar.scala:89)
       net.liftweb.util.AnyVarTrait$class.get(AnyVar.scala:161)
       net.liftweb.util.AnyVar.get(AnyVar.scala:89)
       net.liftweb.util.StackableMaker$class.find(Maker.scala:150)
       net.liftweb.http.Factory$FactoryMaker.find(Factory.scala:37)
       net.liftweb.http.Factory$FactoryMaker$$anonfun$make$1.apply(Factory.scala:87)
       net.liftweb.http.Factory$FactoryMaker$$anonfun$make$1.apply(Factory.scala:87)
       net.liftweb.common.EmptyBox.or(Box.scala:563)
       net.liftweb.http.Factory$FactoryMaker.make(Factory.scala:87)
       net.liftweb.http.Factory$FactoryMaker.vend(Factory.scala:82)
       net.liftweb.http.S$class.statelessInit(S.scala:1186)
       net.liftweb.http.LiftServlet.doService(LiftServlet.scala:244)
       net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply(LiftServlet.scala:122)
       net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply(LiftServlet.scala:121)

(lots omitted)
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">4312926</id>
  <importance type="integer">1063</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>daxx_CO18r4kkoeJe4gwI3,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">1063</number>
  <priority type="integer">3</priority>
  <reporter-id>daxx_CO18r4kkoeJe4gwI3</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary> LiftRules.throwOnOutOfScopeVarAccess broken? </summary>
  <updated-at type="datetime">2011-07-01T04:12:34+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>daxx_CO18r4kkoeJe4gwI3</id><login>bwbecker</login><login_name warning="deprecated">bwbecker</login_name><name>bwbecker</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">20</component-id>
  <created-on type="datetime">2011-07-30T00:54:08+02:00</created-on>
  <description>lift-json-ext's EnumSerializer and EnumNameSerializer do not work properly when multiple enums are used to serialize/deserialize data.

The root cause appears to be the use of,

&lt;pre&gt;&lt;code&gt;  val EnumerationClass = classOf[E#Value]
&lt;/code&gt;&lt;/pre&gt;

which returns the same class for all Enumeration-deriving classes, and therefore the subsequent match:

&lt;pre&gt;&lt;code&gt;    PartialFunction[(TypeInfo, JValue), E#Value] = {
      case (TypeInfo(EnumerationClass, _), json) =&gt; json match {
&lt;/code&gt;&lt;/pre&gt;

matches against any possible enums, leading to -- at best -- a runtime failure because the enum value cannot be found, or -- at worst -- a sneaky failure since a different enum value may be returned.

I'm attaching a test that demonstrates the issue with EnumNameSerializer.
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">4578602</id>
  <importance type="integer">1080</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>c8XWTMeq4r34vueJe5afGb,a1xs765r4r34sNeJe5cbLr,csTgqAsy0r36GbeJe5avMc</notification-list>
  <number type="integer">1080</number>
  <priority type="integer">3</priority>
  <reporter-id>c8XWTMeq4r34vueJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>EnumSerializer fails when when multiple enums are used</summary>
  <updated-at type="datetime">2011-11-02T01:59:28+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>c8XWTMeq4r34vueJe5afGb</id><login>boia01</login><login_name warning="deprecated">boia01</login_name><name>Alex Boisvert</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-08-29T20:37:26+02:00</created-on>
  <description>It would be nice to have two more snippet params added to LazyLoad: one to specify the CometActor timeout and another to specify a second template to use in the case of a timeout.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">5672021</id>
  <importance type="integer">1098</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>bKUM74R7er353NeJe5cbCb,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">1098</number>
  <priority type="integer">3</priority>
  <reporter-id>bKUM74R7er353NeJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>LazyLoad: Add params for timeout period and timed-out template</summary>
  <updated-at type="datetime">2011-08-29T20:37:26+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>bKUM74R7er353NeJe5cbCb</id><login>bphelan</login><login_name warning="deprecated">bphelan</login_name><name>bphelan</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">12</component-id>
  <created-on type="datetime">2011-08-30T05:14:11+02:00</created-on>
  <description>I created a project using:


&lt;pre&gt;&lt;code&gt;mvn archetype:generate \
 -DarchetypeGroupId=net.liftweb \
 -DarchetypeArtifactId=lift-archetype-sbt_2.8.1 \
 -DarchetypeVersion=2.3 \
 -DarchetypeRepository=http://scala-tools.org/repo-releases \
 -DremoteRepositories=http://scala-tools.org/repo-releases \
&lt;snip&gt;
&lt;/code&gt;&lt;/pre&gt;

but the created project actually uses scala 2.7.7

&lt;pre&gt;&lt;code&gt; &gt; cat project/build.properties
#Project properties
project.organization=Lift
project.name=Lift SBT Tempalte
sbt.version=0.7.4
project.version=0.1
def.scala.version=2.7.7
build.scala.versions=2.7.7
project.initialize=false
&lt;/code&gt;&lt;/pre&gt;

</description>
  <from-support type="integer">0</from-support>
  <id type="integer">5688941</id>
  <importance type="integer">1100</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>b41mDG0BGr4llKeJe5cbCb,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">1100</number>
  <priority type="integer">3</priority>
  <reporter-id>b41mDG0BGr4llKeJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>lift-archetype-sbt_2.8.1 uses scala 2.7.7</summary>
  <updated-at type="datetime">2011-08-30T05:14:11+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>b41mDG0BGr4llKeJe5cbCb</id><login>josephs901</login><login_name warning="deprecated">josephs901</login_name><name>josephs901</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Comments</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Comments</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">0</component-id>
  <created-on type="datetime">2011-09-01T03:26:26+02:00</created-on>
  <description>See this thread: https://groups.google.com/forum/#!topic/liftweb/oaaqkUoeUSc</description>
  <from-support type="integer">0</from-support>
  <id type="integer">5848061</id>
  <importance type="integer">1101</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>ak6zlIUdKr34g6eJe5cbCb,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">1101</number>
  <priority type="integer">3</priority>
  <reporter-id>ak6zlIUdKr34g6eJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>weird interaction between DataLoc and RequestVar</summary>
  <updated-at type="datetime">2011-09-01T03:26:26+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>ak6zlIUdKr34g6eJe5cbCb</id><login>toddobryan</login><login_name warning="deprecated">toddobryan</login_name><name>toddobryan</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-09-01T19:33:30+02:00</created-on>
  <description>Users have asked for a way to add a &quot;remember me&quot; checkbox to enable/disable the setting of the ext_id cookie. Mailing list thread: http://groups.google.com/group/liftweb/browse_frm/thread/82b931d4bf43d10a/473332fda485d038?lnk=gst

I'd suggest:
 * the ability to add a checkbox with user specified text (e.g., &quot;remember me on this computer?&quot;)
 * ability to default the checkbox to checked or not checked
 * if checked, allow ext session code to work as normal.  If not checked, do not set the ext session cookie. 
* presumably this impacts both login screens and registration screens. 

If there are code changes, I'd be willing to update the wiki page accordingly.

Additionally, in the UK next year, web sites will need to get permission before setting non-essential cookies, which we believe would include the extended session cookie.  

Background:
* Short summary of UK regulation changes: http://www.mablaw.com/2011/07/cookie-law-ico-food-for-thought/
* Long feedback from the regulator when I asked about &quot;keep me logged in&quot; cookies:  http://richard.dallaway.com/jsessionid-and-the-like-plus-the-privacy-and
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">5889151</id>
  <importance type="integer">1103</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dh4ZjEfbar35PqeJe5aVNr,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,dAgCFAoy4r4yYlacwqjQXA</notification-list>
  <number type="integer">1103</number>
  <priority type="integer">3</priority>
  <reporter-id>dh4ZjEfbar35PqeJe5aVNr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add &quot;Remember Me?&quot; checkbox for extended sessions</summary>
  <updated-at type="datetime">2012-01-08T01:22:47+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>dh4ZjEfbar35PqeJe5aVNr</id><login>d6y</login><login_name warning="deprecated">d6y</login_name><name>Richard Dallaway</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>dkORhGeq4r34vueJe5afGb</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">20</component-id>
  <created-on type="datetime">2011-09-07T19:31:12+02:00</created-on>
  <description>http://groups.google.com/group/liftweb/browse_thread/thread/5edabfc77f7e6852#
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">6129871</id>
  <importance type="integer">1107</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dkORhGeq4r34vueJe5afGb,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">1107</number>
  <priority type="integer">3</priority>
  <reporter-id>dkORhGeq4r34vueJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>JSON serialization fails with type alias (in Scala 2.9)</summary>
  <updated-at type="datetime">2011-09-07T19:31:12+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>dkORhGeq4r34vueJe5afGb</id><login>joni.freeman</login><login_name warning="deprecated">joni.freeman</login_name><name>joni.freeman</name></assigned-to>
  <reporter><id>dkORhGeq4r34vueJe5afGb</id><login>joni.freeman</login><login_name warning="deprecated">joni.freeman</login_name><name>joni.freeman</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-09-09T13:42:54+02:00</created-on>
  <description>Discussion thread:
https://groups.google.com/forum/#!searchin/liftweb/return$20file/liftweb/uz6EaJ3fWEg/-F5upfvJZM0J</description>
  <from-support type="integer">0</from-support>
  <id type="integer">6228141</id>
  <importance type="integer">1108</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>c-3Ovuw28r34yNeJe5cbLA,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">1108</number>
  <priority type="integer">3</priority>
  <reporter-id>c-3Ovuw28r34yNeJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Make it easier to return files (LiftScreen?)</summary>
  <updated-at type="datetime">2011-09-09T13:42:54+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>c-3Ovuw28r34yNeJe5cbLA</id><login>hedefalk</login><login_name warning="deprecated">hedefalk</login_name><name>hedefalk</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>bDdDEMw44r4iM5eJe5cbLr</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-09-14T11:49:15+02:00</created-on>
  <description>In Form.ajax there is a problem with copying onsubmit, postsubmit and class attribute to generated form element.

https://groups.google.com/d/topic/liftweb/1n9qDpVGopE/discussion</description>
  <from-support type="integer">0</from-support>
  <id type="integer">6451341</id>
  <importance type="integer">1112</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>aUanI8v9ur4izceJe5cbLr,bDdDEMw44r4iM5eJe5cbLr,a1xs765r4r34sNeJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1112</number>
  <priority type="integer">3</priority>
  <reporter-id>aUanI8v9ur4izceJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Form.ajax doesn't copy onsubmit attribute from template to generated html</summary>
  <updated-at type="datetime">2011-09-14T11:49:15+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>bDdDEMw44r4iM5eJe5cbLr</id><login>peter.brant</login><login_name warning="deprecated">peter.brant</login_name><name>peter.brant</name></assigned-to>
  <reporter><id>aUanI8v9ur4izceJe5cbLr</id><login>kajo.marton</login><login_name warning="deprecated">kajo.marton</login_name><name>kajo.marton</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087"> Comments</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087"> Comments</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>bDdDEMw44r4iM5eJe5cbLr</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-09-14T20:39:46+02:00</created-on>
  <description>See thread at http://groups.google.com/group/liftweb/browse_thread/thread/184b7eb51d461b30

I've found what looks like another CSS selector bug.  The selector is 
appending the attributes of the input element to the attributes of the 
root output element.  This is especially problematic when on of those 
attributes is id :-) 

This is with lift-2.4-M4 and scala-2.9.1.  From a console: 

&lt;pre&gt;
    scala&gt; import net.liftweb.util.Helpers._ 
    import net.liftweb.util.Helpers._ 
    scala&gt; val input = &lt;div id=&quot;foo&quot;&gt;content&lt;/div&gt; 
    input: scala.xml.Elem = &lt;div id=&quot;foo&quot;&gt;content&lt;/div&gt; 
    scala&gt; val selector = 
         |   &quot;#foo&quot; #&gt; ((ns: xml.NodeSeq) =&gt; &lt;wrapper&gt;{ns}&lt;/wrapper&gt;) 
    selector: net.liftweb.util.CssSel = // snip 
    scala&gt; println(selector(input)) 
    &lt;wrapper id=&quot;foo&quot;&gt;&lt;div id=&quot;foo&quot;&gt;content&lt;/div&gt;&lt;/wrapper&gt; 
&lt;/pre&gt;

You can see that wrapper is mistakenly getting an id attribute.  The 
final output should be &lt;wrapper&gt;&lt;div id=&quot;foo&quot;&gt;content&lt;/div&gt;&lt;/wrapper&gt; 
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">6485001</id>
  <importance type="integer">1114</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>aWblDWNLyr36-_eJe5cbCb,bDdDEMw44r4iM5eJe5cbLr,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3,ak42SOhEGr4iixeJe5cbCb</notification-list>
  <number type="integer">1114</number>
  <priority type="integer">3</priority>
  <reporter-id>aWblDWNLyr36-_eJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>CSS selector transforms duplicate attributes when wrapping elements</summary>
  <updated-at type="datetime">2011-09-14T22:40:39+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>bDdDEMw44r4iM5eJe5cbLr</id><login>peter.brant</login><login_name warning="deprecated">peter.brant</login_name><name>peter.brant</name></assigned-to>
  <reporter><id>aWblDWNLyr36-_eJe5cbCb</id><login>leedm777</login><login_name warning="deprecated">leedm777</login_name><name>David Lee</name><organization>Digium</organization><first_im><type>Jabber</type><id>dlee@digium.com</id></first_im></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">0</component-id>
  <created-on type="datetime">2011-09-26T18:35:03+02:00</created-on>
  <description>The Msg builtin snippet renders notices with a comma separated string. This would be really helpful to make this separator configurable. 

The specific case which leads to this request is when using phrases as messages (captialized and dot at the end). The current rendering put a comma after the dot, so being able to configure this comma to be a space would be interesting.

link to the discussion:  https://groups.google.com/forum/#!topic/liftweb/LH2B4h6D8u0</description>
  <from-support type="integer">0</from-support>
  <id type="integer">7118503</id>
  <importance type="integer">1120</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>clwuBi3Uer4kiDeJe5cbLr,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1120</number>
  <priority type="integer">3</priority>
  <reporter-id>clwuBi3Uer4kiDeJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Make Msg notices separator configurable.</summary>
  <updated-at type="datetime">2011-09-26T18:35:03+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>clwuBi3Uer4kiDeJe5cbLr</id><login>behaghel</login><login_name warning="deprecated">behaghel</login_name><name>behaghel</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-09-28T18:33:01+02:00</created-on>
  <description>Discussion over here: 

https://groups.google.com/forum/#!topic/liftweb/NOHtPYd5UdA

</description>
  <from-support type="integer">0</from-support>
  <id type="integer">7272293</id>
  <importance type="integer">1122</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>c-3Ovuw28r34yNeJe5cbLA,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3,cOkIYe7D4r4lSpacwqjQYw,aRI5vQe24r36-heJe5aVNr,aKqHyOoSer4l0eeJe5cbLA,aTqz3ItOOr4ymBacwqjQXA</notification-list>
  <number type="integer">1122</number>
  <priority type="integer">3</priority>
  <reporter-id>c-3Ovuw28r34yNeJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Make it possible to define security constraints on a RestHelper</summary>
  <updated-at type="datetime">2012-02-03T22:45:54+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>c-3Ovuw28r34yNeJe5cbLA</id><login>hedefalk</login><login_name warning="deprecated">hedefalk</login_name><name>hedefalk</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-10-03T21:40:39+02:00</created-on>
  <description>Thread:

https://groups.google.com/forum/#!topic/liftweb/fMochIkolmU</description>
  <from-support type="integer">0</from-support>
  <id type="integer">7498973</id>
  <importance type="integer">3</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>c-3Ovuw28r34yNeJe5cbLA,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1126</number>
  <priority type="integer">3</priority>
  <reporter-id>c-3Ovuw28r34yNeJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add flag to Menu.item that swallows the surrounding Elem </summary>
  <updated-at type="datetime">2012-01-09T23:01:18+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>c-3Ovuw28r34yNeJe5cbLA</id><login>hedefalk</login><login_name warning="deprecated">hedefalk</login_name><name>hedefalk</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-10-27T16:25:59+02:00</created-on>
  <description>As long as the user selects something in the multiselect, it works fine.  But if the user de-selects all of the items in a multiselect, instead of clearing the selection, the selection remains unchanged. 

I have a sample app demonstrating the problem in the empty-multiselect-bug branch on git://github.com/leedm777/lift-sample-app.git. 

  git clone git://github.com/leedm777/lift-sample-app.git -b empty-multiselect-bug

See related ML threads:
http://groups.google.com/group/liftweb/browse_thread/thread/9f8e460b8d57a741/eaa06d46106a134a
http://groups.google.com/group/liftweb/browse_thread/thread/e8c9fec7c3512fc7/91bba42ebcaa2941
http://groups.google.com/group/liftweb/browse_thread/thread/46e70d3130e52c18/8365d375163af9bb</description>
  <from-support type="integer">1</from-support>
  <id type="integer">8995353</id>
  <importance type="integer">1139</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>aWblDWNLyr36-_eJe5cbCb,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3,bthB5-pwGr3yJRab7jnrAJ</notification-list>
  <number type="integer">1139</number>
  <priority type="integer">3</priority>
  <reporter-id>aWblDWNLyr36-_eJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Cannot clear out multiselect</summary>
  <updated-at type="datetime">2011-11-05T23:56:43+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>aWblDWNLyr36-_eJe5cbCb</id><login>leedm777</login><login_name warning="deprecated">leedm777</login_name><name>David Lee</name><organization>Digium</organization><first_im><type>Jabber</type><id>dlee@digium.com</id></first_im></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-11-02T22:12:18+01:00</created-on>
  <description>From the method signature, it does not look like SHtml.number method 
supports floating point number. But Html5 input type &quot;number&quot; does 
support floating point numbers when you set the &quot;step&quot; attribute (of 
input) to a floating point (for example 0.1).

Please add an additional SHtml.number method to support floating point number.</description>
  <from-support type="integer">1</from-support>
  <id type="integer">9292013</id>
  <importance type="integer">1143</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>cP1ccMbzyr4yBgacwqjQYw,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3,cKfyMibLar4zFIacwqjQWU</notification-list>
  <number type="integer">1143</number>
  <priority type="integer">3</priority>
  <reporter-id>cP1ccMbzyr4yBgacwqjQYw</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Please add an additional SHtml.number method to support floating point number.</summary>
  <updated-at type="datetime">2011-11-15T21:19:04+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>cP1ccMbzyr4yBgacwqjQYw</id><login>thuang68</login><login_name warning="deprecated">thuang68</login_name><name>thuang68</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-11-02T23:05:55+01:00</created-on>
  <description>Discussion thread including ticket request: https://groups.google.com/d/topic/liftweb/zw2SJv7Ms2s/discussion

It would be nice if user code could hook in at the same place that &quot;logTime&quot; does in the code below (from LiftServlet#doService()):


&lt;pre&gt;&lt;code&gt;  def service(req: Req, resp: HTTPResponse): Boolean = {
    try {
      def doIt: Boolean = {
        if (LiftRules.logServiceRequestTiming) {
          logTime {
            val ret = doService(req, resp)
            val msg = &quot;Service request (&quot; + req.request.method + &quot;) &quot; + req.request.uri + &quot; returned &quot; + resp.getStatus + &quot;,&quot;
            (msg, ret)
          }
        } else {
          doService(req, resp)
        }
      }
      ...
&lt;/code&gt;&lt;/pre&gt;


Thanks!
</description>
  <from-support type="integer">1</from-support>
  <id type="integer">9294763</id>
  <importance type="integer">1144</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1144</number>
  <priority type="integer">3</priority>
  <reporter-id>dST-zYbzWr4yBgacwqjQYw</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add a hook around LiftServlet#doService() to enable custom service time measurement</summary>
  <updated-at type="datetime">2011-11-02T23:06:50+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>dST-zYbzWr4yBgacwqjQYw</id><login>mark.feeney</login><login_name warning="deprecated">mark.feeney</login_name><name>mark.feeney</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087"> Comments</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087"> Comments</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-11-03T20:03:39+01:00</created-on>
  <description>Lift throws a NullPointerException when attempting to run destroySession from a mock req instance with a LiftSession stub, as when trying to run:

for (liftSession &lt;- S.session) {
  liftSession.destroySession
}

See https://groups.google.com/d/msg/liftweb/-/xOauoxgBzmUJ for discussion.</description>
  <from-support type="integer">1</from-support>
  <id type="integer">9349393</id>
  <importance type="integer">1145</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>agf8m4saqr35pBeJe5aVNr,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3,cUyIBYe3er4yv0acwqjQYw</notification-list>
  <number type="integer">1145</number>
  <priority type="integer">3</priority>
  <reporter-id>agf8m4saqr35pBeJe5aVNr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>NullPointerException when trying to run LiftSession.destroySession with mock req instance in comet</summary>
  <updated-at type="datetime">2011-11-20T13:20:55+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>agf8m4saqr35pBeJe5aVNr</id><login>shadowfiend</login><login_name warning="deprecated">shadowfiend</login_name><name>Antonio Salazar Cardozo</name><organization>OpenStudy</organization><website>http://openstudy.com/</website></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-11-03T20:10:12+01:00</created-on>
  <description>Currently LiftSession.sendCometActorMessage lets you send to a single actor of a given type, either one with no name or one with a specified name. It would be nice to have a version that sends to *all* actors by type. This is slightly different from LiftSession.findComet(&quot;Type&quot;).foreach(_ ! &lt;message&gt;), because sendCometActorMessage also sends messages to any comet actors _created during this request cycle_. It is this latter functionality that we are looking for, combined with sending existing actors of the type a message.

See https://groups.google.com/d/topic/liftweb/TfbhOCVdq34/discussion for more.</description>
  <from-support type="integer">1</from-support>
  <id type="integer">9349673</id>
  <importance type="integer">1146</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>agf8m4saqr35pBeJe5aVNr,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1146</number>
  <priority type="integer">3</priority>
  <reporter-id>agf8m4saqr35pBeJe5aVNr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>LiftSession.sendCometActorMessage to send to all actors by type regardless of name</summary>
  <updated-at type="datetime">2011-11-03T20:10:12+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>agf8m4saqr35pBeJe5aVNr</id><login>shadowfiend</login><login_name warning="deprecated">shadowfiend</login_name><name>Antonio Salazar Cardozo</name><organization>OpenStudy</organization><website>http://openstudy.com/</website></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>aKjbT8l0yr4iWEeJe5cbLr</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">19</component-id>
  <created-on type="datetime">2011-11-13T21:38:18+01:00</created-on>
  <description>Flot 0.7 ships with a pie chart plugin. Enhance the Lift Flot widget to support some reasonable subset of the pie chart&#8217;s features. 

See https://groups.google.com/forum/#!searchin/liftweb/flot$20pie/liftweb/okbMDE3RyL0/3d401H6MdZkJ for a discussion in the Lift group.</description>
  <from-support type="integer">1</from-support>
  <id type="integer">9809663</id>
  <importance type="integer">1151</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>aKjbT8l0yr4iWEeJe5cbLr,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1151</number>
  <priority type="integer">3</priority>
  <reporter-id>aKjbT8l0yr4iWEeJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Support pie charts in Flot widget</summary>
  <updated-at type="datetime">2011-11-13T21:38:18+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>aKjbT8l0yr4iWEeJe5cbLr</id><login>dcbriccetti</login><login_name warning="deprecated">dcbriccetti</login_name><name>dcbriccetti</name><organization>Dave Briccetti Software LLC</organization><website>http://davebsoft.com</website></assigned-to>
  <reporter><id>aKjbT8l0yr4iWEeJe5cbLr</id><login>dcbriccetti</login><login_name warning="deprecated">dcbriccetti</login_name><name>dcbriccetti</name><organization>Dave Briccetti Software LLC</organization><website>http://davebsoft.com</website></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">25</component-id>
  <created-on type="datetime">2011-11-29T02:02:35+01:00</created-on>
  <description>The browser back button clears all fields in a multi-page wizard. Tested in Firefox 3.6 and Chrome.

To reproduce:
1. Go to [[url:http://demo.liftweb.net/wiz2|http://demo.liftweb.net/wiz2]]
2. Enter &quot;hello&quot; in the text field and click next
3. Click the browser back button
Actual result: the text field is empty
Expected result: the text field is populated with &quot;hello&quot;

See mailing list thread started Nov 22 2011 titled &quot;Back button clears form fields in wizard and plain forms&quot;, http://groups.google.com/group/liftweb/browse_thread/thread/5dcd7fc84c144ebe/782cc7d4e242ffab?show_docid=782cc7d4e242ffab</description>
  <from-support type="integer">1</from-support>
  <id type="integer">10597273</id>
  <importance type="integer">1154</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dBpfTigIqr4yC6acwqjQYw,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1154</number>
  <priority type="integer">3</priority>
  <reporter-id>dBpfTigIqr4yC6acwqjQYw</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Browser back button clears fields in Wizard</summary>
  <updated-at type="datetime">2011-11-29T02:03:00+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>dBpfTigIqr4yC6acwqjQYw</id><login>dnadolny</login><login_name warning="deprecated">dnadolny</login_name><name>dnadolny</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">4</component-id>
  <created-on type="datetime">2011-12-08T19:36:46+01:00</created-on>
  <description>According to [[url:https://groups.google.com/d/topic/liftweb/naGcIXcTCPk/discussion|this thread]].

</description>
  <from-support type="integer">1</from-support>
  <id type="integer">11167303</id>
  <importance type="integer">1157</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>cxaqBIYC0r4k8seJe4gwI3,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1157</number>
  <priority type="integer">3</priority>
  <reporter-id>cxaqBIYC0r4k8seJe4gwI3</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>BasicTypesHelpers.toBoolean(&quot;on&quot;) returns false</summary>
  <updated-at type="datetime">2011-12-08T19:36:46+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>cxaqBIYC0r4k8seJe4gwI3</id><login>kastigarster</login><login_name warning="deprecated">kastigarster</login_name><name>kastigarster</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-12-12T13:55:43+01:00</created-on>
  <description>According to this [[url:https://groups.google.com/d/topic/liftweb/d_zquJE6wGo/discussion|thread]]</description>
  <from-support type="integer">1</from-support>
  <id type="integer">11290423</id>
  <importance type="integer">1159</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>cxaqBIYC0r4k8seJe4gwI3,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1159</number>
  <priority type="integer">3</priority>
  <reporter-id>cxaqBIYC0r4k8seJe4gwI3</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Localization of attribute values</summary>
  <updated-at type="datetime">2011-12-12T13:55:43+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>cxaqBIYC0r4k8seJe4gwI3</id><login>kastigarster</login><login_name warning="deprecated">kastigarster</login_name><name>kastigarster</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-12-13T11:26:58+01:00</created-on>
  <description>Hi David,

Am reporting bug [[url:https://groups.google.com/forum/#!searchin/liftweb/noel/liftweb/1_7JAJwAfto/Ktjn_W_kDtAJ|as requested]].

My problem is that RequestVar cleanupFunc doesn't run at the end of each http request, which is resulting in a memory leak for my usage:

I'm using a RequestVar to provide a service which needs to be disposed of correctly when it is no longer needed, ie it is not advised to leave it to the garbage collector to tidy up.  Therefore I registered the RequestVar to clean up after use via the registerCleanupFunc .
However, the behaviour I'm seeing is that for the first use only (1st http request) the service is shutdown correctly.  Any usages after this don't seem to be clean up properly, ie the lambda I passed to registerCleanupFunc isnt being called again.

Here is my code:

object HttpDispatchConnection extends RequestVar[Http](new Http()) {
  registerCleanupFunc(ignore =&gt; is.shutdown())
}
</description>
  <from-support type="integer">1</from-support>
  <id type="integer">11352413</id>
  <importance type="integer">1160</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>aqEEccjxqr4yEUacwqjQWU,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1160</number>
  <priority type="integer">3</priority>
  <reporter-id>aqEEccjxqr4yEUacwqjQWU</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>RequestVar cleanup not being called when request ends</summary>
  <updated-at type="datetime">2011-12-13T11:26:59+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>aqEEccjxqr4yEUacwqjQWU</id><login>NoelKennedy</login><login_name warning="deprecated">NoelKennedy</login_name><name>NoelKennedy</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-12-15T20:21:23+01:00</created-on>
  <description>Investigations with different servlet containers under load indicate that suspended continuations may be awoken with terminated requests. This yields either null server names/ports (typically in Jetty 6) or InvocationTargetExceptions (in Jetty 7/8 and Tomcat) with underlying IllegalStateExceptions.

Sample stack trace from Tomcat:

java.lang.reflect.InvocationTargetException: null
        at sun.reflect.GeneratedMethodAccessor47.invoke(Unknown Source) ~[na:na]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_26]
        at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_26]
        at net.liftweb.http.provider.servlet.containers.Servlet30AsyncProvider.resume(Servlet30AsyncProvider.scala:102) ~[lift-webkit_2.8.1-2.4-M4.jar:2.4-M4]
[&#8230;]
Caused by: java.lang.IllegalStateException: The request associated with the AsyncContext has already completed processing.
        at org.apache.catalina.core.AsyncContextImpl.check(AsyncContextImpl.java:438) ~[catalina.jar:7.0.23]
        at org.apache.catalina.core.AsyncContextImpl.getResponse(AsyncContextImpl.java:196) ~[catalina.jar:7.0.23]
        ... 22 common frames omitted

From Jetty 7/8:

java.lang.reflect.InvocationTargetException: null
        at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source) ~[na:na]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_26]
        at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_26]
        at net.liftweb.http.provider.servlet.containers.Servlet30AsyncProvider.resume(Servlet30AsyncProvider.scala:106) ~[lift-webkit_2.8.1-2.4-M4.jar:2.4-M4]
        at net.liftweb.http.provider.servlet.HTTPRequestServlet.resume(HTTPRequestServlet.scala:163) ~[lift-webkit_2.8.1-2.4-M4.jar:2.4-M4]
[&#8230;]
Caused by: java.lang.IllegalStateException: IDLE,initial
        at org.eclipse.jetty.server.AsyncContinuation.complete(AsyncContinuation.java:534) ~[na:na]
        ... 22 common frames omitted

From Jetty 6:

java.lang.NullPointerException: null
        at org.eclipse.jetty.server.Request.getServerName(Request.java:1008) ~[na:na]
        at org.eclipse.jetty.server.Request.getServerPort(Request.java:1071) ~[na:na]
        at net.liftweb.http.provider.servlet.HTTPRequestServlet.serverPort(HTTPRequestServlet.scala:92) ~[lift-webkit_2.9.0-1-2.4-M3.jar:2.4-M3]
        at net.liftweb.http.Req$$anonfun$hostAndPath$1.apply(Req.scala:968) ~[lift-webkit_2.9.0-1-2.4-M3.jar:2.4-M3]
        at net.liftweb.http.Req$$anonfun$hostAndPath$1.apply(Req.scala:968) ~[lift-webkit_2.9.0-1-2.4-M3.jar:2.4-M3]
        at net.liftweb.common.Full.map(Box.scala:491) ~[lift-common_2.9.0-1-2.4-M3.jar:2.4-M3]
        at net.liftweb.http.Req.hostAndPath(Req.scala:968) ~[lift-webkit_2.9.0-1-2.4-M3.jar:2.4-M3]

Again, the underlying cause for this seems to be continuations that are awoken with requests that were terminated before the continuation was restored.</description>
  <from-support type="integer">1</from-support>
  <id type="integer">11522733</id>
  <importance type="integer">1165</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>agf8m4saqr35pBeJe5aVNr,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3,bZxFwEqEKr4BdjacwqjQXA,cHj3--NWGr3khLabIlDkbG,d4FTTo4HCr4j42acwqjQXA</notification-list>
  <number type="integer">1165</number>
  <priority type="integer">3</priority>
  <reporter-id>agf8m4saqr35pBeJe5aVNr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Improved error message for InvocationTarget/NullPointerExceptions related to terminated requests</summary>
  <updated-at type="datetime">2012-02-21T19:59:45+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>agf8m4saqr35pBeJe5aVNr</id><login>shadowfiend</login><login_name warning="deprecated">shadowfiend</login_name><name>Antonio Salazar Cardozo</name><organization>OpenStudy</organization><website>http://openstudy.com/</website></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-12-20T18:34:23+01:00</created-on>
  <description>The MongoDB EnumField display on LiftScreen is not sorting correctly.

Naftoli mentioned in the email that the enum.values no longer returns values in the order they were defined.

The following is the solution quote from Naftoli in the email. 
&quot;we'll add a step to sort the values from the enum by the Int value so that they have a better chance of being what you want.&quot;

The tracker is related to the discussion topic : Questions on the MongoDB and LiftScreen integration</description>
  <from-support type="integer">1</from-support>
  <id type="integer">11758123</id>
  <importance type="integer">1167</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1167</number>
  <priority type="integer">3</priority>
  <reporter-id>dWbmdCkY0r4BSVacwqjQXA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>enum.values no longer returns values in the order they were defined</summary>
  <updated-at type="datetime">2011-12-20T18:34:23+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>dWbmdCkY0r4BSVacwqjQXA</id><login>Lee2012</login><login_name warning="deprecated">Lee2012</login_name><name>Lee2012</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">3</component-id>
  <created-on type="datetime">2011-12-22T20:29:38+01:00</created-on>
  <description>In Lift version 2.9.0 when using MetaMegaProtoUser and Crudify  together in an user object it doesn't compile.

There are conflicts with same def/val names used by both Traits.

*User definition:*
...
line 136:  object User extends User with MetaMegaProtoUser[User] with CRUDify[Long, User] {_ 
...

*Error:*
.../model/User.scala:136: overriding type FieldPointerType in trait MetaMegaProtoUser, which equals net.liftweb.mapper.MappedField[_, ingo.model.User.TheUserType];
[error]  type FieldPointerType in trait CRUDify, which equals net.liftweb.mapper.MappedField[_, ingo.model.User] needs `override' modifier;
[error]  other members with override errors are: computeFieldFromPointer, buildFieldBridge, editPath, menus
[error] object User extends User with MetaMegaProtoUser[User] with CRUDify[Long, User]{
[error]        ^
[error] one error found

</description>
  <from-support type="integer">1</from-support>
  <id type="integer">11896503</id>
  <importance type="integer">1172</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3,dAgCFAoy4r4yYlacwqjQXA</notification-list>
  <number type="integer">1172</number>
  <priority type="integer">3</priority>
  <reporter-id>cJHPX2lner4Bx5acwqjQXA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>User with MetaMegaProtoUser and CRUDify do not compile</summary>
  <updated-at type="datetime">2012-01-08T01:24:46+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>cJHPX2lner4Bx5acwqjQXA</id><login>jorgeolmos</login><login_name warning="deprecated">jorgeolmos</login_name><name>jorgeolmos</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-12-30T02:39:27+01:00</created-on>
  <description>The issues come with the non-randomized hashing-functions, but are better described here:
http://events.ccc.de/congress/2011/Fahrplan/attachments/2007_28C3_Effective_DoS_on_web_application_platforms.pdf

I've created a thread on Liftweb Groups (http://groups.google.com/group/liftweb/browse_thread/thread/870c23057925ccb3) regarding this, David told me to open a ticket.
</description>
  <from-support type="integer">1</from-support>
  <id type="integer">12131493</id>
  <importance type="integer">1176</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dktkeEc68r4ipoeJe5cbCb,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1176</number>
  <priority type="integer">3</priority>
  <reporter-id>dktkeEc68r4ipoeJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>DoS against Web-Application Platforms</summary>
  <updated-at type="datetime">2011-12-30T20:40:26+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>dktkeEc68r4ipoeJe5cbCb</id><login>fbettag</login><login_name warning="deprecated">fbettag</login_name><name>fbettag</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">0</component-id>
  <created-on type="datetime">2012-01-03T21:39:33+01:00</created-on>
  <description>LoanWrappers are currently executed up to three times per request while their ScalaDoc seems to imply only one invocation.  See: https://groups.google.com/d/topic/liftweb/w8BqoJTCrq8/discussion</description>
  <from-support type="integer">1</from-support>
  <id type="integer">12276243</id>
  <importance type="integer">2</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>csTgqAsy0r36GbeJe5avMc,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1177</number>
  <priority type="integer">3</priority>
  <reporter-id>csTgqAsy0r36GbeJe5avMc</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Single LoanWrapper invocation per request</summary>
  <updated-at type="datetime">2012-01-09T23:28:35+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>csTgqAsy0r36GbeJe5avMc</id><login>davewhittaker</login><login_name warning="deprecated">davewhittaker</login_name><name>David Whittaker</name><email>dave@iradix.com</email><organization>Iradix, LLC</organization><website>www.iradix.com</website><first_im><type>GoogleTalk</type><id>dave@iradix.com</id></first_im></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2012-01-09T20:43:34+01:00</created-on>
  <description>When I perform a query  with net.liftweb.db.DB.performQuery(sql) for my int and double columns I am getting zeros when the database has null.  It seems to me that DB.asAny and DB.asString should check for null and leave that value as null instead of calling (for example) rs.getDouble(pos) and getting back 0.0

Problem code is at:
https://github.com/lift/framework/blob/master/persistence/db/src/main/scala/net/liftweb/db/DB.scala#L414</description>
  <from-support type="integer">1</from-support>
  <id type="integer">12565653</id>
  <importance type="integer">1</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>b41mDG0BGr4llKeJe5cbCb,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1180</number>
  <priority type="integer">3</priority>
  <reporter-id>b41mDG0BGr4llKeJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>DB.asAny and DB.asString are not checking for null</summary>
  <updated-at type="datetime">2012-01-09T22:09:05+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>b41mDG0BGr4llKeJe5cbCb</id><login>josephs901</login><login_name warning="deprecated">josephs901</login_name><name>josephs901</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>csTgqAsy0r36GbeJe5avMc</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">7</component-id>
  <created-on type="datetime">2012-01-10T19:28:15+01:00</created-on>
  <description>Based on the thread https://groups.google.com/d/msg/liftweb/jo3xkhu2Fjs/lKV4Cdzgy9EJ

There is a bug in some Record field classes by which the setFromString method does not handle the empty string when the
field is optional.

Fields with the bug:
* DoubleTypedField
* DecimalTypedField
* LongTypedField
* BooleanTypedField

Fields without the bug (if it's not here, I didn't check it):
* BinaryTypedField
* DateTimeTypedField
* IntTypedField

EmailTypedField might also have a similar bug (I think) since the validateEmail() doesn't include the empty string as valid when the field is empty. 


To correct this bug the following (or equivalent) code can be used:

&lt;pre&gt;&lt;code&gt;def setFromString(s: String): Box[Double] = s match {
 case &quot;&quot; if optional_? =&gt; setBox(Empty)
 case _ =&gt;setBox(tryo(java.lang.Double.parseDouble(s)))
}
&lt;/code&gt;&lt;/pre&gt;

</description>
  <from-support type="integer">1</from-support>
  <id type="integer">12637423</id>
  <importance type="integer">1183</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>baZ24UPjmr3BECab7jnrAJ,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3,csTgqAsy0r36GbeJe5avMc</notification-list>
  <number type="integer">1183</number>
  <priority type="integer">3</priority>
  <reporter-id>baZ24UPjmr3BECab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Some Record fields don't work when optional_? = false</summary>
  <updated-at type="datetime">2012-01-10T19:33:07+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>csTgqAsy0r36GbeJe5avMc</id><login>davewhittaker</login><login_name warning="deprecated">davewhittaker</login_name><name>David Whittaker</name><email>dave@iradix.com</email><organization>Iradix, LLC</organization><website>www.iradix.com</website><first_im><type>GoogleTalk</type><id>dave@iradix.com</id></first_im></assigned-to>
  <reporter><id>baZ24UPjmr3BECab7jnrAJ</id><login>alexmsmartins</login><login_name warning="deprecated">alexmsmartins</login_name><name>Alexandre Martins</name><email>alexmsmartins@gmail.com</email></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">18</component-id>
  <created-on type="datetime">2012-01-12T11:15:21+01:00</created-on>
  <description>Two failures that are or-ed should return a failure that somehow combines both causes.

Example:

&lt;pre&gt;&lt;code&gt;
$ def getFromProperties = Failure(&quot;Property not set&quot;)
$ def getFromFilesystem = Failure(&quot;File doesn't exist&quot;)
$ def getFromDb = Failure(&quot;DB not configured&quot;)
$ def getSomething : Box[Something] = getFromProperties or getFromFilesystem or getFromDb
&lt;/code&gt;&lt;/pre&gt;
Currently:
&lt;pre&gt;&lt;code&gt;
$ getSomething
Failure(&quot;DB not configured&quot;)
&lt;/code&gt;&lt;/pre&gt;
Desired behaviour:
Something that can give all 3 messages/exceptions if all of them failed because current behaviour swallows exceptions and return only the last one, that might be not the one that the user is interested in.
Or-ing Failure and Empty can return the one Failure or maybe some combined Failure that has both?
Just chaining might be not enough, because it's not clear how or() result can chain two Failures that have chains themselves. Maybe it would be useful to have MultiFailure class extending Failure just as there is ParamFailure?  Or maybe Failure.chain should be List[Failure] not Box[Failure]?
</description>
  <from-support type="integer">1</from-support>
  <id type="integer">12746273</id>
  <importance type="integer">1184</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>aSfQj4iMer3lSsabIlDkbG,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1184</number>
  <priority type="integer">3</priority>
  <reporter-id>aSfQj4iMer3lSsabIlDkbG</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Or-ing two Failures should somehow combine them</summary>
  <updated-at type="datetime">2012-01-12T11:15:22+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>aSfQj4iMer3lSsabIlDkbG</id><login>romkal</login><login_name warning="deprecated">romkal</login_name><name>romkal</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">0</component-id>
  <created-on type="datetime">2012-01-25T19:46:42+01:00</created-on>
  <description>I have a simple feed that uses serveJx to select the return type (json
or xml) based on the request Accept header and the extension (.json
or .xml). This generally works fine except in one case I've found. If
the extension is .xml, I get back json. I have traced this back to a
bug in Req.acceptsStarStar in version 2.4-M4, which looks like this:

 lazy val acceptsStarStar : Boolean = accepts.map(_ == &quot;*/*&quot;) openOr
false

In my case accepts = Full(text/html,application/xhtml+xml,application/
xml;q=0.9,*/*;q=0.8). Note that the last entry is weighted. Thus, the
above comparison to &quot;*/*&quot; fails and acceptsStarStar returns false,
when in fact it should be true because &quot;*/*&quot; is present, just with a
weight, which is a valid format (see weightedAccepts in Req).

The full call stack is:

serveJx
jxSel
jsonResponse_?
acceptsStarStar

Weighted accept is  List(ContentType(text,html,0,Empty,List()),
ContentType(application,xhtml+xml,1,Empty,List()),
ContentType(application,xml,2,Full(0.9),List()), ContentType(*,*,
3,Full(0.8),List()))



Thanks. </description>
  <from-support type="integer">1</from-support>
  <id type="integer">13510223</id>
  <importance type="integer">1186</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>b_-EzArxir4zQHacwqjQXA,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1186</number>
  <priority type="integer">3</priority>
  <reporter-id>b_-EzArxir4zQHacwqjQXA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>acceptsStarStar broken for weighted accept entries</summary>
  <updated-at type="datetime">2012-01-25T19:46:42+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>b_-EzArxir4zQHacwqjQXA</id><login>khoran</login><login_name warning="deprecated">khoran</login_name><name>khoran</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">0</component-id>
  <created-on type="datetime">2012-01-25T21:54:50+01:00</created-on>
  <description>&quot;Lunching with JavaScript returns:
http://groups.google.com/group/liftweb/browse_thread/thread/b3469ab5eb55c7f5/32a6b3f8f482a8b7

I think we need a general before/after JavaScript mechanism... and I have an idea of how it can be done with only 2 API calls:

SHtml.beforeAjax(jsCmd) {
  SHtml.afterAjax(jsCmd) {
  code that creates an AjaxCall
}
}

Those two calls will wrap the pre and post execution of the Ajax call and will work across all the Ajax call mechanisms.  Further, they answer the need for an &quot;in call&quot; spinny control located near the item that's doing the Ajax call rather than the global spinny thing for Ajax calls.&quot;

See related thread
http://groups.google.com/group/liftweb/browse_thread/thread/c0fa111d87a8beac
</description>
  <from-support type="integer">1</from-support>
  <id type="integer">13518223</id>
  <importance type="integer">1187</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>bHgN4w6wyr37SAeJe5cbLr,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3,dbvdZgCI4r4i6UeJe5cbLr</notification-list>
  <number type="integer">1187</number>
  <priority type="integer">3</priority>
  <reporter-id>bHgN4w6wyr37SAeJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>general before/after JavaScript mechanism</summary>
  <updated-at type="datetime">2012-01-25T23:19:43+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>bHgN4w6wyr37SAeJe5cbLr</id><login>fmpwizard</login><login_name warning="deprecated">fmpwizard</login_name><name>Diego Medina</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">3</component-id>
  <created-on type="datetime">2012-01-30T19:35:41+01:00</created-on>
  <description>The real_i_set_! method of MappedText does not check that the value is dirty before assigning it to data.
[[url:https://groups.google.com/d/topic/liftweb/i2v9eqOQ6eg/discussion|Mailing List Thread]]</description>
  <from-support type="integer">1</from-support>
  <id type="integer">13851673</id>
  <importance type="integer">1189</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>aKqHyOoSer4l0eeJe5cbLA,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1189</number>
  <priority type="integer">3</priority>
  <reporter-id>aKqHyOoSer4l0eeJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>MappedText - check that value is dirty in real_i_set_! method</summary>
  <updated-at type="datetime">2012-01-30T19:35:41+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>aKqHyOoSer4l0eeJe5cbLA</id><login>amullins</login><login_name warning="deprecated">amullins</login_name><name>amullins</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">28</component-id>
  <created-on type="datetime">2012-01-31T06:15:27+01:00</created-on>
  <description>[[url:https://groups.google.com/d/topic/liftweb/tpg6F2Xln24/discussion|Mailing List Thread]]
&lt;pre&gt;&lt;code&gt;object Twilio extends RestHelper {
  serve( &quot;api&quot; / &quot;twilio&quot; prefix {
    case _ =&gt; () =&gt; {
      Full(XmlResponse(&lt;Response&gt;&lt;Say&gt;Goodbye!&lt;/Say&gt;&lt;Hangup/&gt;&lt;/Response&gt;))
    }
  })
}

curl -XPOST --dump-header - http://localhost:8080/api/twilio
HTTP/1.1 200 OK
Expires: Tue, 31 Jan 2012 05:11:22 GMT
Content-Length: 101
Cache-Control: no-cache, private, no-store
Pragma: no-cache
Date: Tue, 31 Jan 2012 05:11:22 GMT
X-Lift-Version: 2.4
Server: Jetty(7.4.5.v20110725)

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;Response&gt;&lt;Say&gt;Goodbye!&lt;/Say&gt;&lt;Hangup&gt;&lt;/Hangup&gt;&lt;/Response&gt;
&lt;/code&gt;&lt;/pre&gt;

</description>
  <from-support type="integer">1</from-support>
  <id type="integer">13882193</id>
  <importance type="integer">1191</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>aKqHyOoSer4l0eeJe5cbLA,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1191</number>
  <priority type="integer">3</priority>
  <reporter-id>aKqHyOoSer4l0eeJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>XmlResponse within RestHelper PF not returning Content-Type header</summary>
  <updated-at type="datetime">2012-01-31T06:15:27+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>aKqHyOoSer4l0eeJe5cbLA</id><login>amullins</login><login_name warning="deprecated">amullins</login_name><name>amullins</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2012-02-07T08:49:14+01:00</created-on>
  <description>as discussed on http://groups.google.com/group/liftweb/browse_thread/thread/6a0701b47e2200bc/80f0199bae1391c3#80f0199bae1391c3

I cooked up a proposed solution,  see the trait &quot;BaseType&quot;.  

It only needs specs2

This pattern should work with the current way HtmlProperties works.

&lt;pre&gt;&lt;code&gt;

import org.specs2.mutable._

trait OldBaseType {

  def First: String

  def setFirst(newFirst: () =&gt; String) = {
    val old = this
    new OldBaseType {
      def First = newFirst()

      def Second = old.Second

      def Third = old.Third
    }
  }

  def Second: String

  def setSecond(newSecond: () =&gt; String) = {
    val old = this
    new OldBaseType {
      def First = old.First

      def Second = newSecond()

      def Third = old.Third
    }
  }

  def Third: String

  def setThird(newThird: () =&gt; String) = {
    val old = this
    new OldBaseType {
      def First = old.First

      def Second = old.Second

      def Third = newThird()
    }
  }
}

case class OldTestType(param: String) extends OldBaseType {
  def First =
    &quot;HELLO&quot;

  def Second =
    this.First + &quot; WORLD&quot;

  def Third =
    this.First + &quot; &quot; + this.Second + &quot;!!!&quot;
}

trait BaseType {

  def First(me:BaseType): String
  
  def First: String = First(this)

  def setFirst(newFirst: () =&gt; String) = {
    val old = this
    new BaseType {
      def First(me:BaseType) = old.First(me)
      
      override def First = newFirst()

      def Second(me:BaseType) = old.Second(me)

      def Third(me:BaseType) = old.Third(me)
    }
  }

  def Second(me:BaseType): String

  def Second: String = Second(this)

  def setSecond(newSecond: () =&gt; String) = {
    val old = this
    new BaseType {
      def First(me:BaseType) = old.First(me)

      def Second(me:BaseType) = old.Second(me)

      override def Second = newSecond()

      def Third(me:BaseType) =
        old.Third(me)
    }
  }


  def Third(me:BaseType): String

  def Third: String = Third(this)

  def setThird(newThird: () =&gt; String) = {
    val old = this
    new BaseType {
      def First(me:BaseType) = old.First(me)

      def Second(me:BaseType) = old.Second(me)

      def Third(me:BaseType) = old.Third(me)

      override def Third = newThird()
    }
  }
}

case class TestType(param: String) extends BaseType {
  def First(me:BaseType) =
    &quot;HELLO&quot;

  def Second(me:BaseType) =
    me.First + &quot; WORLD&quot;
  
  def Third(me:BaseType) =
    me.First + &quot; &quot; + me.Second + &quot;!!!&quot;
}

class TestProposed extends Specification {

  val t1 = TestType(&quot;&quot;)

  val t4 = TestType(&quot;&quot;).setFirst(()=&gt;&quot;GOODBYE&quot;)

  val t5 = t4.setSecond(()=&gt;&quot;YAY&quot;)

  val t6 = TestType(&quot;&quot;).setSecond(()=&gt;&quot;YOO&quot;)


  &quot;test new&quot; should {

    // specs wierdness (ambiguious overload) when i try to do
    // t1.Third must beEqualTo(&quot;HELLO HELLOW WORLD!!!&quot;)
    val basicString:String = t1.Third

    &quot;nothing&quot; in {
      basicString must beEqualTo(&quot;HELLO HELLO WORLD!!!&quot;)
    }

    &quot;simple test&quot; in {
      t4.Second must beEqualTo(&quot;GOODBYE WORLD&quot;)
    }

    &quot;harder test&quot; in {
      t4.Third must beEqualTo(&quot;GOODBYE GOODBYE WORLD!!!&quot;)
    }

    &quot;another test&quot; in {
      t5.Third must beEqualTo(&quot;HELLO YAY!!!&quot;)
    }

    &quot;yet another test&quot; in {
      t6.Third must beEqualTo(&quot;HELLO YOO!!!&quot;)
    }

  }

}

class TestOld extends Specification {

  val t1 = OldTestType(&quot;&quot;)

  val t4 = OldTestType(&quot;&quot;).setFirst(()=&gt;&quot;GOODBYE&quot;)

  val t5 = t4.setSecond(()=&gt;&quot;YAY&quot;)

  val t6 = OldTestType(&quot;&quot;).setSecond(()=&gt;&quot;YOO&quot;)


  &quot;test old&quot; should {

    // specs wierdness (ambiguious overload) when i try to do
    // t1.Third must beEqualTo(&quot;HELLO HELLOW WORLD!!!&quot;)
    val basicString:String = t1.Third

    &quot;nothing&quot; in {
      basicString must beEqualTo(&quot;HELLO HELLO WORLD!!!&quot;)
    }

    &quot;simple test&quot; in {
      t4.Second must beEqualTo(&quot;GOODBYE WORLD&quot;)
    }

    &quot;harder test&quot; in {
      t4.Third must beEqualTo(&quot;GOODBYE GOODBYE WORLD!!!&quot;)
    }

    &quot;another test&quot; in {
      t5.Third must beEqualTo(&quot;HELLO YAY!!!&quot;)
    }

    &quot;yet another test&quot; in {
      t6.Third must beEqualTo(&quot;HELLO YOO!!!&quot;)
    }

  }

}

&lt;/code&gt;&lt;/pre&gt;
</description>
  <from-support type="integer">1</from-support>
  <id type="integer">14375343</id>
  <importance type="integer">1194</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>cy5UaMUJir4kMYeJe5cbLr,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1194</number>
  <priority type="integer">3</priority>
  <reporter-id>cy5UaMUJir4kMYeJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>HtmlProperties setDoctype has no effect as htmlOutputHeader calls the original doctype</summary>
  <updated-at type="datetime">2012-02-07T08:49:14+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>cy5UaMUJir4kMYeJe5cbLr</id><login>joseph.hajduk</login><login_name warning="deprecated">joseph.hajduk</login_name><name>joseph.hajduk</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087"> Comments</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087"> Comments</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2012-02-07T21:13:23+01:00</created-on>
  <description>Discussion @ [[url:https://groups.google.com/d/topic/liftweb/eCv7FnJwt8A/discussion|https://groups.google.com/d/topic/liftweb/eCv7FnJwt8A/discussion]]
Another @ [[url:https://groups.google.com/d/topic/liftweb/ZDSsDMj-KRk/discussion|https://groups.google.com/d/topic/liftweb/ZDSsDMj-KRk/discussion]]</description>
  <from-support type="integer">1</from-support>
  <id type="integer">14438993</id>
  <importance type="integer">1195</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>aKqHyOoSer4l0eeJe5cbLA,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1195</number>
  <priority type="integer">3</priority>
  <reporter-id>aKqHyOoSer4l0eeJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>add convenience method for performing a &quot;named&quot; ajax request</summary>
  <updated-at type="datetime">2012-02-07T21:13:23+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>aKqHyOoSer4l0eeJe5cbLA</id><login>amullins</login><login_name warning="deprecated">amullins</login_name><name>amullins</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2012-02-10T20:34:00+01:00</created-on>
  <description>Mails with PDF attachments sent with Mailer causes problems in lots of mail clients. It seems to be due to the &quot;multipart/related&quot; header. Changing to &quot;multipart/mixed&quot; makes the problem go away. Maybe we need a way for clients to control this header and while at it it would be nice to do real mixed content (inline attachments). At the moment Mailer puts all attachments at the end but &quot;inline&quot;.

https://groups.google.com/forum/?fromgroups#!topic/liftweb/xIPg2be17Fg
</description>
  <from-support type="integer">1</from-support>
  <id type="integer">14761613</id>
  <importance type="integer">1197</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>c-3Ovuw28r34yNeJe5cbLA,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1197</number>
  <priority type="integer">3</priority>
  <reporter-id>c-3Ovuw28r34yNeJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Improve Mailer functionality for attachments&#8230;</summary>
  <updated-at type="datetime">2012-02-10T20:35:18+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>c-3Ovuw28r34yNeJe5cbLA</id><login>hedefalk</login><login_name warning="deprecated">hedefalk</login_name><name>hedefalk</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">3</component-id>
  <created-on type="datetime">2010-10-20T03:21:58+02:00</created-on>
  <description>MappedLongForeignKey
MappedStringForeignKey

these 2 classes have the same exact meaning except for one is using Long as datatype while the other uses String.
they should have the exact same API (maybe differ when need to handle the actually data, after all one is Long and the other is String)
MappedStringForeignKey has an abstract method &quot;foreignMeta&quot; that needs to be implemented while the MappedLongForeignKey has this method implemented already.
And should have the alias method &quot;foreign&quot; for &quot;obj&quot; which MappedLongForeignKey has.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2324901</id>
  <importance type="integer">686</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>bfuxxi22Kr36O-eJe5cbLA,be7z4kuQmr3AZYab7jnrAJ</notification-list>
  <number type="integer">686</number>
  <priority type="integer">4</priority>
  <reporter-id>bfuxxi22Kr36O-eJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>MappedLongForeignKey and MappedStringForeignKey do not have equivalent API</summary>
  <updated-at type="datetime">2011-02-10T00:43:20+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>bfuxxi22Kr36O-eJe5cbLA</id><login>lunaspeed</login><login_name warning="deprecated">lunaspeed</login_name><name>lunaspeed</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">8</component-id>
  <created-on type="datetime">2010-12-06T17:09:53+01:00</created-on>
  <description>Lift-Facebook supports an outdated Facebook Graph API.  The new graph api is supported at: http://developers.facebook.com/docs/api .

The work involves updating Facebook module along with the example code available.  Some documentation would be helpful as well.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2683911</id>
  <importance type="integer">755</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>cRMyfU2omr36-DeJe5cbLA,a1xs765r4r34sNeJe5cbLr,c9y2i2tN4r4BMoacwqjQWU</notification-list>
  <number type="integer">755</number>
  <priority type="integer">4</priority>
  <reporter-id>cRMyfU2omr36-DeJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Update Facebook Module with latest API</summary>
  <updated-at type="datetime">2012-02-03T16:52:32+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>cRMyfU2omr36-DeJe5cbLA</id><login>notnoop</login><login_name warning="deprecated">notnoop</login_name><name>notnoop</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>apLvKSdcur35E8eJe5aVNr</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">4</component-id>
  <created-on type="datetime">2011-03-08T20:44:45+01:00</created-on>
  <description>I noticed a tweet from Josh Seureth that there's an annotation (at least in 2.8.1) that lets you customize the error message when the compiler cannot find an implicit of a given type. It's possible this would make a better developer experience where implicits are used, such as in the css selectors (anywhere else?). Indrajit agreed and told me to file a ticket, so here it is. :)</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3309780</id>
  <importance type="integer">930</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>do25aqeq4r34vueJe5afGb,apLvKSdcur35E8eJe5aVNr,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">930</number>
  <priority type="integer">4</priority>
  <reporter-id>do25aqeq4r34vueJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Use @scala.annotation.implicitNotFound in CssSelectors etc.</summary>
  <updated-at type="datetime">2011-07-11T09:36:48+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>apLvKSdcur35E8eJe5aVNr</id><login>indrajitr</login><login_name warning="deprecated">indrajitr</login_name><name>Indrajit Raychaudhuri</name><website>http://indrajit.com</website></assigned-to>
  <reporter><id>do25aqeq4r34vueJe5afGb</id><login>nafg</login><login_name warning="deprecated">nafg</login_name><name>nafg</name><second_im><type>none</type><id></id></second_im></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">0</component-id>
  <created-on type="datetime">2011-09-04T13:12:11+02:00</created-on>
  <description>According to google group's discussion on https://groups.google.com/d/topic/liftweb/MvVYpNbjcDw/discussion

Denis: I am wondered, why lift has both ? and ?? methods. IMHO, more useful and flexible will be to have one method that uses core text resources on bottom. So anybody can override it with own resources and can easily use core strings in his app.
David: I agree with this.  Please open a ticket and I'll work through the code and get rid of S.??
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">5977031</id>
  <importance type="integer">1106</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>cxaqBIYC0r4k8seJe4gwI3,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">1106</number>
  <priority type="integer">4</priority>
  <reporter-id>cxaqBIYC0r4k8seJe4gwI3</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Overriding lift's core localization (probably refactor of localization methods)</summary>
  <updated-at type="datetime">2011-09-04T13:12:11+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>cxaqBIYC0r4k8seJe4gwI3</id><login>kastigarster</login><login_name warning="deprecated">kastigarster</login_name><name>kastigarster</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">0</component-id>
  <created-on type="datetime">2011-10-24T09:38:23+02:00</created-on>
  <description>Currently it is only possible to display one element (mostly called &quot;ajax-loader&quot;) that is shown during an ajax call.

There are use cases where it's desirable to have multiple elements per page and choose the &quot;right&quot; ajax-loader per ajax call.

For instance if I have a page with two subwindows, each of the pages showing content that can be separately reloaded from the server I'd like to see the ajax-loader images next to the &quot;Load More&quot; button I just clicked.</description>
  <from-support type="integer">1</from-support>
  <id type="integer">8715143</id>
  <importance type="integer">1135</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>dJ2TbUmVir4j83eJe5cbLA,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1135</number>
  <priority type="integer">4</priority>
  <reporter-id>dJ2TbUmVir4j83eJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Allow multiple ajax-loader images per page</summary>
  <updated-at type="datetime">2011-10-24T09:38:23+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>dJ2TbUmVir4j83eJe5cbLA</id><login>tuhlmann</login><login_name warning="deprecated">tuhlmann</login_name><name>tuhlmann</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">9</component-id>
  <created-on type="datetime">2011-01-30T17:15:23+01:00</created-on>
  <description>adding the images as attachments to this ticket, so we have URLs to reference from the wiki</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3037815</id>
  <importance type="integer">878</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>cGGnXIJKKr359ZeJe5cbCb,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">878</number>
  <priority type="integer">5</priority>
  <reporter-id>cGGnXIJKKr359ZeJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>save images from google groups files section</summary>
  <updated-at type="datetime">2011-01-30T17:15:23+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>cGGnXIJKKr359ZeJe5cbCb</id><login>ccmtaylor</login><login_name warning="deprecated">ccmtaylor</login_name><name>ccmtaylor</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">19</component-id>
  <created-on type="datetime">2011-02-11T20:30:52+01:00</created-on>
  <description>The Autocomplete user allows the user to start typing, then select any of a popped up list of strings, and have the selected string passed to a function at submit time.

However, if the user types their own value, instead of choosing from the list, the string &quot;&quot; is passed to the specified function at submit time.  This is right for some apps (where only the choices to be completed from are valid), but wrong for others (where the popped up completions are only suggestions).

The following javascript, from Mads Jensen, can be manually added to the page to fix this behavior:


&lt;pre&gt;&lt;code&gt;
Paul,
Am I correct in assuming that what you want is to be able to submit a value that isn't part of the drop-down box? If this is the case you can fix it with a bit of javascript. In a javascript somew\
here that you load on the page with the form put this

$(document).ready(function(){
        $('#idOfTheAutocompleteField').bind('blur',function(){
                $(this).next().val($(this).val());
        });
});

Hope that helps,
Mads Hartmann Jensen
&lt;/code&gt;&lt;/pre&gt;


There should be a way to make this happen automatically (especially as this code is JQuery-specific).  I'm not sure which behavior should be the default.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3127179</id>
  <importance type="integer">892</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>bi-Y7OnHqr4krDeJe5cbLr,a1xs765r4r34sNeJe5cbLr,dzJuR8e2ir35VseJe5afGb,aDKDveL4Cr35K8eJe5cbCb,cLE2lghbWr4knweJe5cbLA,bNaVZyBZ0r4kJpeJe5cbLA</notification-list>
  <number type="integer">892</number>
  <priority type="integer">5</priority>
  <reporter-id>bi-Y7OnHqr4krDeJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Autocomplete() should have option to allow user to enter their own value</summary>
  <updated-at type="datetime">2011-04-25T15:11:03+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bi-Y7OnHqr4krDeJe5cbLr</id><login>jimwise00</login><login_name warning="deprecated">jimwise00</login_name><name>jimwise00</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>bbaU16tWyr36KFeJe5dVir</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">21</component-id>
  <created-on type="datetime">2011-02-19T23:40:33+01:00</created-on>
  <description>Remove deprecated field types.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3179153</id>
  <importance type="integer">906</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>bbaU16tWyr36KFeJe5dVir,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">906</number>
  <priority type="integer">3</priority>
  <reporter-id>bbaU16tWyr36KFeJe5dVir</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Remove MongoDateListField and JObjectField</summary>
  <updated-at type="datetime">2011-12-22T06:38:33+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>bbaU16tWyr36KFeJe5dVir</id><login>eltimn</login><login_name warning="deprecated">eltimn</login_name><name>eltimn</name></assigned-to>
  <reporter><id>bbaU16tWyr36KFeJe5dVir</id><login>eltimn</login><login_name warning="deprecated">eltimn</login_name><name>eltimn</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Task</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Task</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>csTgqAsy0r36GbeJe5avMc</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">7</component-id>
  <created-on type="datetime">2011-03-26T16:04:01+01:00</created-on>
  <description>[[url:http://groups.google.com/group/liftweb/browse_thread/thread/4da128e7182fc541|Per this discussion,]] the database connection is often (if not mostly) unexpectedly closed when attempting to use squerylrecord with DB.use and a JNDI DataSource.

To reproduce:

a) Configure a JNDI DataSource in your servlet container.

b) Then in Boot.scala:

1) tell the DefaultConnectionIdentifier the appropriate jndi name. 
2) call SquerylRecord.init() with the appropriate adapter. 
3) use DefaultConnectionIdentifier with the DB.buildLoanWrapper and 
add it to S.around

c) Use squerylrecord in such a way that it requires a Connection to the DataSource

Tests should immediately reveal that the connections squeryl tries to use are unexpectedly closed.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3469081</id>
  <importance type="integer">5</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>aKxNFwEqir347ReJe5cbLr,csTgqAsy0r36GbeJe5avMc,a1xs765r4r34sNeJe5cbLr,bSQDCaFq0r4jCAeJe5cbCb</notification-list>
  <number type="integer">950</number>
  <priority type="integer">3</priority>
  <reporter-id>aKxNFwEqir347ReJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Connections unexpectedly closed when using DB.use with a JNDI datasource with squerylrecord </summary>
  <updated-at type="datetime">2011-12-22T06:38:33+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>csTgqAsy0r36GbeJe5avMc</id><login>davewhittaker</login><login_name warning="deprecated">davewhittaker</login_name><name>David Whittaker</name><email>dave@iradix.com</email><organization>Iradix, LLC</organization><website>www.iradix.com</website><first_im><type>GoogleTalk</type><id>dave@iradix.com</id></first_im></assigned-to>
  <reporter><id>aKxNFwEqir347ReJe5cbLr</id><login>ebiggs</login><login_name warning="deprecated">ebiggs</login_name><name>ebiggs</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-04-01T23:30:47+02:00</created-on>
  <description>Currently, it is possible for an AJAX request to be send multiple times by the browser and handled as many times by the server.  Consider the following scenario:

# Browser initiates an AJAX request
# Server receives request, processes and returns response
# Browser still hasn't received response (due to network latency), and assumes request has timed out
# The request goes *back* into the local AJAX queue and is sent again
# Server receives request a second time, processes and returns response

You see where this is going.

In Novell Vibe, we solved this problem by adding an ID to our AJAX requests that were susceptible to this issue.  Then, when the server receives the request, it checks to see if it's already processed that id.  Unfortunately, we've only been able to do this on a case-by-case basis, and it's not trivial code when done at the application layer.  This could be handled much more elegantly by Lift itself as part of the generalized AJAX dispatch mechanism.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3524815</id>
  <importance type="integer">4</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>aYv1OWrDir3jQzabIlDkbG,a1xs765r4r34sNeJe5cbLr,be7z4kuQmr3AZYab7jnrAJ,bHgN4w6wyr37SAeJe5cbLr,a0tpuSxn4r34M_eJe5cbCb,bMWEFsX2ar364meJe5cbCb</notification-list>
  <number type="integer">956</number>
  <priority type="integer">3</priority>
  <reporter-id>aYv1OWrDir3jQzabIlDkbG</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add a GUID to AJAX Requests to Allow De-Duping on Server</summary>
  <updated-at type="datetime">2011-12-22T06:38:33+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>aYv1OWrDir3jQzabIlDkbG</id><login>djspiewak</login><login_name warning="deprecated">djspiewak</login_name><name>djspiewak</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>dbqip8eq4r34vueJe5afGb</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">26</component-id>
  <created-on type="datetime">2011-04-06T18:56:03+02:00</created-on>
  <description>A lot of the attributes are hard-coded, particularly group (e.g. role) attributes. These should all be configurable. Also some strangeness in how it logs users in, etc.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3559681</id>
  <importance type="integer">960</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>dbqip8eq4r34vueJe5afGb,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">960</number>
  <priority type="integer">3</priority>
  <reporter-id>dbqip8eq4r34vueJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Overhaul LDAPProtoUser to make it more configurable and robust</summary>
  <updated-at type="datetime">2011-12-22T06:38:33+01:00</updated-at>
  <working-hours type="float">2.0</working-hours>
  <working-hour type="float" warning="deprecated">2.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>dbqip8eq4r34vueJe5afGb</id><login>dchenbecker</login><login_name warning="deprecated">dchenbecker</login_name><name>dchenbecker</name></assigned-to>
  <reporter><id>dbqip8eq4r34vueJe5afGb</id><login>dchenbecker</login><login_name warning="deprecated">dchenbecker</login_name><name>dchenbecker</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-04-15T20:27:17+02:00</created-on>
  <description>Some code that can help us create a better DSL:


import net.liftweb.http._
import net.liftweb.http.LiftRules
import com.gu.sport.microapp.Endpoints
import org.joda.time.format.DateTimeFormat
import net.liftweb.util.Helpers._
import com.gu.management.{Manifest, Management}
import net.liftweb.util.NamedPF
import net.liftweb.common.Empty
import com.gu.sport.microapp.snippet.Scoped
import org.joda.time.{DateTimeZone, DateMidnight, DateTime}
import com.gu.sport.microapp.repository.{SportMicroappMatchRepository, SportMicroappCompetitionRepository, SportMicroappMatchSearcher}
import com.gu.opta.model.`match`.Match
import com.gu.opta.model.competition.{Matches, TeamMatches, Competition}

class Boot {
  SportMicroappMatchSearcher.start
  SportMicroappCompetitionRepository.start

  def boot = {

    DateTimeZone setDefault(DateTimeZone forID (&quot;Europe/London&quot;))

    LiftRules.addToPackages(&quot;com.gu.sport.microapp&quot;)

    LiftRules.early.append(_.setCharacterEncoding(&quot;UTF-8&quot;))

    // Render view templates as HTML5 by default
    LiftRules.htmlProperties.default.set((r: Req) =&gt; new Html5Properties(r.userAgent))

    LiftRules.autoIncludeAjax = _ =&gt; false
    LiftRules.autoIncludeComet = _ =&gt; false
    LiftRules.enableContainerSessions = false
    LiftRules.getLiftSession = req =&gt; new LiftSession(req.contextPath, &quot;dummySession&quot;, Empty)
    LiftRules.sessionCreator = (i1, i2) =&gt; error(&quot;no sessions here please&quot;)

    //all paths are stateless (removes lift_page JS on bottom of page
    LiftRules.statelessTest.prepend({
      case _ =&gt; true
    })

    LiftRules.defaultHeaders = {
     case _ =&gt;
        List(&quot;Date&quot; -&gt; nowAsInternetDate, &quot;Cache-Control&quot; -&gt; &quot;public, max-age=60&quot;)
    }

    object DatedPath {
      val fmt = DateTimeFormat.forPattern(&quot;yyyyMMMdd&quot;)
      def unapply(datedPath: List[String]): Option[DateMidnight] = datedPath match {
        case year::month::day::postfix::Nil =&gt; tryo(fmt.parseDateTime(year+month+day).toDateMidnight)
        case _ =&gt; None
      }
    }

    object DatedMatch {
      val fmt = DateTimeFormat.forPattern(&quot;yyyyMMMdd&quot;)
      val IdBased = &quot;&quot;&quot;(\d+)&quot;&quot;&quot;.r
      val TeamBased = &quot;&quot;&quot;([\w|-]+)-v-([\w|-]+)&quot;&quot;&quot;.r
      def unapply(datedPath: List[String]): Option[Match] = datedPath match {
        case year::month::day::IdBased(matchId)::Nil =&gt; tryo {
          val matchDate = fmt.parseDateTime(year+month+day).toDateMidnight
          val theMatch = SportMicroappMatchRepository.getMatch(matchId)
          if (theMatch.dateTime.toDateMidnight != matchDate) throw new IllegalStateException(&quot;Url date and match date do not match&quot;)
          theMatch
        }
        case year::month::day::TeamBased(homeTeam, awayTeam)::Nil =&gt; {
          tryo {
            SportMicroappCompetitionRepository.findMatchSummary(fmt.parseDateTime(year+month+day), homeTeam, awayTeam) match {
              case Some(summary) =&gt; SportMicroappMatchRepository.getMatch(summary.id)
              case _ =&gt; throw new IllegalStateException(&quot;Url date and match date do not match&quot;)
            }
          }
        }
        case _ =&gt; None
      }
    }

    object MatchesFromWordsForUrl {
      def unapply(wordsForUrl: String): Option[Matches] = SportMicroappCompetitionRepository.getMatchesFor(wordsForUrl)
    }

    object MatchId {
      def unapply(matchId: String): Option[Match] = tryo{SportMicroappMatchRepository.getMatch(matchId)}
    }

    //TODO see if this can sensibly be moved to its own file
    LiftRules.statelessRewrite.prepend(NamedPF(&quot;resources&quot;) {

      // /resource/football/2011/jan/01/matches
      case RewriteRequest(ParsePath(&quot;resource&quot; :: &quot;football&quot; :: DatedPath(date), _, _, _), _, _) =&gt; {
        Scoped.date.set(date)
        RewriteResponse(&quot;resource&quot; :: &quot;football&quot; :: &quot;matches-on-date&quot; :: Nil, Map.empty[String, String])
      }

      // /resource/football/matches
      case RewriteRequest(ParsePath(&quot;resource&quot; :: &quot;football&quot; :: &quot;matches&quot; :: Nil, _, _, _), _, _) =&gt;
        RewriteResponse(&quot;resource&quot; :: &quot;football&quot; :: &quot;matches-on-date&quot; :: Nil, Map.empty[String, String])

      // /resource/football/match/2011/jan/02/1234/popup
      // /resource/football/match/2011/jan/02/everton-chelsea/popup
      case RewriteRequest(ParsePath(&quot;resource&quot; :: &quot;football&quot; :: &quot;match-popup&quot; :: DatedMatch(theMatch), _, _, _), _, _) =&gt; {
        Scoped.theMatch.set(theMatch)
        RewriteResponse(&quot;resource&quot; :: &quot;football&quot; :: &quot;match-stats-popup&quot; :: Nil, Map.empty[String, String])
      }

      // /resource/football/match/2011/jan/02/1234
      // /resource/football/match/2011/jan/02/everton-v-chelsea
      case RewriteRequest(ParsePath(&quot;resource&quot; :: &quot;football&quot; :: &quot;match&quot; :: DatedMatch(theMatch), _, _, _), _, _) =&gt; {
        Scoped.theMatch.set(theMatch)
        RewriteResponse(&quot;resource&quot; :: &quot;football&quot; :: &quot;match-stats&quot; :: Nil, Map.empty[String, String])
      }

      // /resource/football/premierleague/fixtures
      // /resource/football/everton/fixtures
      case RewriteRequest(ParsePath(&quot;resource&quot; :: &quot;football&quot; :: MatchesFromWordsForUrl(matches) :: &quot;fixtures&quot; :: Nil, _, _, _), _, _) =&gt; {
        Scoped.matches.set(matches)
        RewriteResponse(&quot;resource&quot; :: &quot;football&quot; :: &quot;fixtures&quot; :: Nil, Map.empty[String, String])
      }

      // /resource/football/premierleague/results
      // /resource/football/everton/results
      case RewriteRequest(ParsePath(&quot;resource&quot; :: &quot;football&quot; :: MatchesFromWordsForUrl(matches) :: &quot;results&quot; :: Nil, _, _, _), _, _) =&gt; {
        Scoped.matches.set(matches)
        RewriteResponse(&quot;resource&quot; :: &quot;football&quot; :: &quot;results&quot; :: Nil, Map.empty[String, String])
      }


      //TODO make me work
      // /resource/football/premierleague/tables
      case RewriteRequest(ParsePath(&quot;resource&quot; :: &quot;football&quot; :: standings :: &quot;tables&quot; :: Nil, _, _, _), _, _) =&gt; {
        RewriteResponse(&quot;resource&quot; :: &quot;football&quot; :: &quot;tables&quot; :: Nil, Map(&quot;optaId&quot; -&gt; standings))
      }

    })


    object CompetitionId {
      val CompetitionRegex = &quot;&quot;&quot;(\d+)/(\d+)&quot;&quot;&quot;.r
      def unapply(id: List[String]): Option[Competition] = id.mkString(&quot;/&quot;) match {
        case CompetitionRegex(id, season) =&gt; tryo{SportMicroappCompetitionRepository.getCompetition(id, season)}
        case _ =&gt; None
      }
    }

    object TeamId {
      val TeamRegex = &quot;&quot;&quot;(\d+)&quot;&quot;&quot;.r
      def unapply(id: String): Option[TeamMatches] = id match {
        case TeamRegex(id) =&gt; tryo{
          val fromDate = new DateTime().minusMonths(6)
          SportMicroappCompetitionRepository.getMatchesForTeam(id, Some(fromDate), None)
        }
        case _ =&gt; None
      }
    }

    LiftRules.statelessRewrite.prepend(NamedPF(&quot;components&quot;) {

      // /component/football/tournament-fixtures/1234
      case RewriteRequest(ParsePath(&quot;component&quot; :: &quot;football&quot; :: &quot;competition-summary&quot; ::CompetitionId(competition), _, _, _), _, _) =&gt;
        Scoped.competition.set(competition)
        RewriteResponse(&quot;component&quot; :: &quot;football&quot; :: &quot;competition-summary&quot; :: Nil, Map.empty[String, String])

      case RewriteRequest(ParsePath(&quot;component&quot; :: &quot;football&quot; :: &quot;team-summary&quot; ::TeamId(team):: Nil, _, _, _), _, _) =&gt;
        Scoped.team.set(team)
        RewriteResponse(&quot;component&quot; :: &quot;football&quot; :: &quot;team-summary&quot; :: Nil, Map.empty[String, String])

      // /component/football/tabs-and-score/1234
      case RewriteRequest(ParsePath(&quot;component&quot; :: &quot;football&quot; :: &quot;tabs-and-score&quot; :: MatchId(theMatch) :: Nil, _, _, _), _, _) =&gt; {
        Scoped.theMatch.set(theMatch)
        RewriteResponse(&quot;component&quot; :: &quot;football&quot; :: &quot;tabs-and-score&quot; :: Nil, Map.empty[String, String])
      }
      // /component/football/calendar
      //probably does not need a rewrite
    })

    LiftRules.statelessDispatchTable
      .append(Endpoints)
      .append(Management.publishWithIndex(Manifest))

  }
}</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3633785</id>
  <importance type="integer">3</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">976</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add helpers to URL rewriting so it's more DSLy</summary>
  <updated-at type="datetime">2011-12-22T06:38:33+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-04-19T21:27:41+02:00</created-on>
  <description>Right now, request var restoration during Ajax calls is a whole lot less than optimal.  Ajax calls should have state restored without any explicit state restoration calls.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3657797</id>
  <importance type="integer">2</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,bMWEFsX2ar364meJe5cbCb</notification-list>
  <number type="integer">980</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>RequestVar restore is less than optimal in Ajax calls</summary>
  <updated-at type="datetime">2012-02-27T14:11:52+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">24</component-id>
  <created-on type="datetime">2011-04-20T19:22:50+02:00</created-on>
  <description>Menu.param allows you to define a parser and an encoder for a URI parameter. The parser is a good place to retrieve an item from a database and automatically get a 404 if it is not found, but the parsing is performed multiple times per request and the result is not cached. As a workaround, you can manually thread the result through a RequestVar. It would be nice to have a caching Menu.param available in Lift out of the box.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3668627</id>
  <importance type="integer">982</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>a6trRkA24r4l5xeJe5cbCb,a1xs765r4r34sNeJe5cbLr,be7z4kuQmr3AZYab7jnrAJ,dtzATaxLGr4BU-acwqjQYw</notification-list>
  <number type="integer">982</number>
  <priority type="integer">3</priority>
  <reporter-id>a6trRkA24r4l5xeJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Cache results of parsing URI parameters</summary>
  <updated-at type="datetime">2012-02-29T16:28:48+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>a6trRkA24r4l5xeJe5cbCb</id><login>szeiger</login><login_name warning="deprecated">szeiger</login_name><name>szeiger</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>bbaU16tWyr36KFeJe5dVir</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">7</component-id>
  <created-on type="datetime">2011-04-29T17:56:01+02:00</created-on>
  <description>This is the second step that started in ticket 994 - Remove Mapper dependency from Record.

This entails removing DBRecord, DBMetaRecord, and JDBCFieldFlavor. Also, the db dependency can be removed from record.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3742558</id>
  <importance type="integer">997</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>bbaU16tWyr36KFeJe5dVir,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">997</number>
  <priority type="integer">3</priority>
  <reporter-id>bbaU16tWyr36KFeJe5dVir</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Remove deprecated DB code from Record</summary>
  <updated-at type="datetime">2011-12-22T06:38:33+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>bbaU16tWyr36KFeJe5dVir</id><login>eltimn</login><login_name warning="deprecated">eltimn</login_name><name>eltimn</name></assigned-to>
  <reporter><id>bbaU16tWyr36KFeJe5dVir</id><login>eltimn</login><login_name warning="deprecated">eltimn</login_name><name>eltimn</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>csTgqAsy0r36GbeJe5avMc</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">7</component-id>
  <created-on type="datetime">2011-05-02T19:14:18+02:00</created-on>
  <description>As described in this discussion thread:

    http://groups.google.com/group/liftweb/browse_thread/thread/6d9ffbaae2c1977e

Reproducible test case:

    https://github.com/davegurnell/menuparamtest

Assume this is a bug. Could be user error. At any rate, many thanks for your help.

Best regards,

-- Dave
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3755370</id>
  <importance type="integer">1</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>dopR9qvdur35LkeJe5cbLr,csTgqAsy0r36GbeJe5avMc,a1xs765r4r34sNeJe5cbLr,bSQDCaFq0r4jCAeJe5cbCb,cKfyMibLar4zFIacwqjQWU</notification-list>
  <number type="integer">999</number>
  <priority type="integer">3</priority>
  <reporter-id>dopR9qvdur35LkeJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>DB connection issue using Menu.param</summary>
  <updated-at type="datetime">2011-12-22T06:38:33+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>csTgqAsy0r36GbeJe5avMc</id><login>davewhittaker</login><login_name warning="deprecated">davewhittaker</login_name><name>David Whittaker</name><email>dave@iradix.com</email><organization>Iradix, LLC</organization><website>www.iradix.com</website><first_im><type>GoogleTalk</type><id>dave@iradix.com</id></first_im></assigned-to>
  <reporter><id>dopR9qvdur35LkeJe5cbLr</id><login>davegurnell</login><login_name warning="deprecated">davegurnell</login_name><name>Dave Gurnell</name><website>http://www.untyped.com</website></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">24</component-id>
  <created-on type="datetime">2011-05-13T18:31:44+02:00</created-on>
  <description>It'll be great if you can allow for functions that add LocParams to a all items of a group.  In ddp's words:

&gt; I'll noodle on some partial functions that might allow adding 
&gt; additional LocParams to Locs that have particular matching LocParams (like 
&gt; Group or something else). 

Relavent thread: http://groups.google.com/group/liftweb/browse_thread/thread/770ad4b5c90fe1fc/5fe726fbee152a22</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3860378</id>
  <importance type="integer">1008</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>cRMyfU2omr36-DeJe5cbLA,a1xs765r4r34sNeJe5cbLr,be7z4kuQmr3AZYab7jnrAJ</notification-list>
  <number type="integer">1008</number>
  <priority type="integer">3</priority>
  <reporter-id>cRMyfU2omr36-DeJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Adding LocParams dynamically to Groups</summary>
  <updated-at type="datetime">2011-12-22T06:38:33+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>cRMyfU2omr36-DeJe5cbLA</id><login>notnoop</login><login_name warning="deprecated">notnoop</login_name><name>notnoop</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-06-22T06:28:52+02:00</created-on>
  <description>LiftScreen's default button implementation uses S.??(&quot;Cancel&quot;) and S.??(&quot;Finish&quot;) but Cancel and Finish are not listed in lift's localization files. So if we overload LiftRules.localizationLookupFailureNotice to log notices to error log then errors are generated.

https://groups.google.com/d/topic/liftweb/R73Dx-ubONw/discussion</description>
  <from-support type="integer">0</from-support>
  <id type="integer">4223934</id>
  <importance type="integer">1053</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>bC-wM4uWWr4k4weJe5cbCb,be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,daDml61Vur35YoeJe5cbCb</notification-list>
  <number type="integer">1053</number>
  <priority type="integer">3</priority>
  <reporter-id>bC-wM4uWWr4k4weJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>LiftScreen buttons are not localized</summary>
  <updated-at type="datetime">2011-12-22T06:38:33+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>bC-wM4uWWr4k4weJe5cbCb</id><login>strofimov</login><login_name warning="deprecated">strofimov</login_name><name>strofimov</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-07-27T17:04:36+02:00</created-on>
  <description>If CSS file contains some CSS selector which contains 'url' string in it
example:

&lt;pre&gt;&lt;code&gt;#fUrlName{width:470px;}&lt;/code&gt;&lt;/pre&gt;

function fixCSS ends up with parsing error.

every another details are described here: https://groups.google.com/d/topic/liftweb/dZXAEO-LIqc/discussion</description>
  <from-support type="integer">0</from-support>
  <id type="integer">4553272</id>
  <importance type="integer">1078</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>aUanI8v9ur4izceJe5cbLr,a1xs765r4r34sNeJe5cbLr,be7z4kuQmr3AZYab7jnrAJ</notification-list>
  <number type="integer">1078</number>
  <priority type="integer">3</priority>
  <reporter-id>aUanI8v9ur4izceJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Parsing error in LiftRules.fixCSS when some CSS selector contains 'url' string</summary>
  <updated-at type="datetime">2011-12-22T06:38:33+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>aUanI8v9ur4izceJe5cbLr</id><login>kajo.marton</login><login_name warning="deprecated">kajo.marton</login_name><name>kajo.marton</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087"> Comments</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087"> Comments</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>csTgqAsy0r36GbeJe5avMc</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">0</component-id>
  <created-on type="datetime">2011-08-17T19:52:00+02:00</created-on>
  <description>S.location is stored in a RequestVar and will resolve to Empty if it is accessed before the lift request is initialized.  The best solution seems to be to repeatedly attempt resolution when the RequestVar is Empty

https://groups.google.com/d/topic/liftweb/1mEpk4UtDZM/discussion</description>
  <from-support type="integer">0</from-support>
  <id type="integer">5002422</id>
  <importance type="integer">1090</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>csTgqAsy0r36GbeJe5avMc,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">1090</number>
  <priority type="integer">3</priority>
  <reporter-id>csTgqAsy0r36GbeJe5avMc</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Early access to S.location breaks snippet resolution</summary>
  <updated-at type="datetime">2011-12-22T06:38:33+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>csTgqAsy0r36GbeJe5avMc</id><login>davewhittaker</login><login_name warning="deprecated">davewhittaker</login_name><name>David Whittaker</name><email>dave@iradix.com</email><organization>Iradix, LLC</organization><website>www.iradix.com</website><first_im><type>GoogleTalk</type><id>dave@iradix.com</id></first_im></assigned-to>
  <reporter><id>csTgqAsy0r36GbeJe5avMc</id><login>davewhittaker</login><login_name warning="deprecated">davewhittaker</login_name><name>David Whittaker</name><email>dave@iradix.com</email><organization>Iradix, LLC</organization><website>www.iradix.com</website><first_im><type>GoogleTalk</type><id>dave@iradix.com</id></first_im></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Comments</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Comments</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">0</component-id>
  <created-on type="datetime">2011-08-19T21:18:22+02:00</created-on>
  <description>For testing snippets it's very useful to be able to list all snippet-invocations in a NodeSeq
Ref this thread: http://groups.google.com/group/liftweb/browse_thread/thread/1bac9b77a0886639</description>
  <from-support type="integer">0</from-support>
  <id type="integer">5117041</id>
  <importance type="integer">1092</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>bMWEFsX2ar364meJe5cbCb,a1xs765r4r34sNeJe5cbLr,be7z4kuQmr3AZYab7jnrAJ</notification-list>
  <number type="integer">1092</number>
  <priority type="integer">3</priority>
  <reporter-id>bMWEFsX2ar364meJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Creating API for taking a NodeSeq and listing the snippet invocations in the NodeSeq</summary>
  <updated-at type="datetime">2011-12-22T06:38:33+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>bMWEFsX2ar364meJe5cbCb</id><login>andreak@officenet.no</login><login_name warning="deprecated">andreak@officenet.no</login_name><name>andreak@officenet.no</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>dYZK22uQir37PceJe5cbLA</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">0</component-id>
  <created-on type="datetime">2011-08-29T15:06:32+02:00</created-on>
  <description>http://groups.google.com/group/liftweb/browse_thread/thread/b801f1219bdc410b</description>
  <from-support type="integer">0</from-support>
  <id type="integer">5652081</id>
  <importance type="integer">1097</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>dYZK22uQir37PceJe5cbLA,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">1097</number>
  <priority type="integer">3</priority>
  <reporter-id>dYZK22uQir37PceJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add ElemAttr* to ajaxForm/jsonForm</summary>
  <updated-at type="datetime">2011-12-22T06:38:33+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>dYZK22uQir37PceJe5cbLA</id><login>lkuczera</login><login_name warning="deprecated">lkuczera</login_name><name>lkuczera</name></assigned-to>
  <reporter><id>dYZK22uQir37PceJe5cbLA</id><login>lkuczera</login><login_name warning="deprecated">lkuczera</login_name><name>lkuczera</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>csTgqAsy0r36GbeJe5avMc</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">7</component-id>
  <created-on type="datetime">2011-10-20T22:11:07+02:00</created-on>
  <description>squeryl-record doesn't work with StringFields created as so:

object f extends StringField(this, 36)

instead requiring:

val f = new StringField(this, 36)</description>
  <from-support type="integer">1</from-support>
  <id type="integer">8615183</id>
  <importance type="integer">1134</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>abROM6FXar37XceJe5cbCb,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3,csTgqAsy0r36GbeJe5avMc</notification-list>
  <number type="integer">1134</number>
  <priority type="integer">3</priority>
  <reporter-id>abROM6FXar37XceJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>squeryl-record doesn't honor StringFields as objects</summary>
  <updated-at type="datetime">2011-12-22T06:38:34+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>csTgqAsy0r36GbeJe5avMc</id><login>davewhittaker</login><login_name warning="deprecated">davewhittaker</login_name><name>David Whittaker</name><email>dave@iradix.com</email><organization>Iradix, LLC</organization><website>www.iradix.com</website><first_im><type>GoogleTalk</type><id>dave@iradix.com</id></first_im></assigned-to>
  <reporter><id>abROM6FXar37XceJe5cbCb</id><login>nolan</login><login_name warning="deprecated">nolan</login_name><name>nolan</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">15</component-id>
  <created-on type="datetime">2011-12-15T14:30:10+01:00</created-on>
  <description>Improve #1162 so we can have an improved and structured fix, ref. https://groups.google.com/d/msg/liftweb/AzemLRepDco/c0dbeNvlcjkJ</description>
  <from-support type="integer">1</from-support>
  <id type="integer">11498303</id>
  <importance type="integer">1163</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>bMWEFsX2ar364meJe5cbCb,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1163</number>
  <priority type="integer">3</priority>
  <reporter-id>bMWEFsX2ar364meJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Improve reacting to comet-actor timeouts (#1162)</summary>
  <updated-at type="datetime">2011-12-15T14:30:10+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bMWEFsX2ar364meJe5cbCb</id><login>andreak@officenet.no</login><login_name warning="deprecated">andreak@officenet.no</login_name><name>andreak@officenet.no</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>cnLPaAo3mr4lkMeJe5cbLr</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">7</component-id>
  <created-on type="datetime">2011-12-27T03:24:23+01:00</created-on>
  <description>When doing left join on none numeric data type there will be type miss match error

class Fund private() extends Record[Fund] with KeyedRecord[String] { 
    ...
    val id = new StringField(this, 8) 
    val lcc = new OptionalStringField(this, 8) 
  } 
  
  class Lc private() extends Record[Lc] with KeyedRecord[String] { 
    ...
    val lcc = new StringField(this, 8) 
    val name = new StringField(this, 8) 
  } 

  val d = join(fund, lc.leftOuter)((f, l) =&gt; 
    where(f.id === &quot;xxx&quot;) 
    select(f, l) 
    on(f.lcc === l.map(_.lcc))) 

Error mismatch on last line  &quot;on(f.lcc === l.map(_.lcc))&quot;
Due to f.lcc is converted to some sort of  StringExpression[String] instead of StringExpression[Option[String]]

current work arrount is &quot;on(Some(f.lcc) === l.map(_.lcc))&quot;

more discussion in
[[url:https://groups.google.com/group/liftweb/browse_thread/thread/eb88859a2ca51f9b/e9b97b357c06be1c|ExampleName]]</description>
  <from-support type="integer">1</from-support>
  <id type="integer">11988663</id>
  <importance type="integer">1174</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>bfuxxi22Kr36O-eJe5cbLA,cnLPaAo3mr4lkMeJe5cbLr,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3,csTgqAsy0r36GbeJe5avMc</notification-list>
  <number type="integer">1174</number>
  <priority type="integer">3</priority>
  <reporter-id>bfuxxi22Kr36O-eJe5cbLA</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Left join problem on none numeric data type for SquerylRecord</summary>
  <updated-at type="datetime">2012-01-10T18:04:33+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>cnLPaAo3mr4lkMeJe5cbLr</id><login>raskaj</login><login_name warning="deprecated">raskaj</login_name><name>J&#225;n Ra&#353;ka</name></assigned-to>
  <reporter><id>bfuxxi22Kr36O-eJe5cbLA</id><login>lunaspeed</login><login_name warning="deprecated">lunaspeed</login_name><name>lunaspeed</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>cnLPaAo3mr4lkMeJe5cbLr</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">7</component-id>
  <created-on type="datetime">2011-12-27T14:37:11+01:00</created-on>
  <description>Implicits in RecordTypeMode don't have explicit return types. We should be explicit about return types in implicits, otherwise less than optimal things happen in the compiler</description>
  <from-support type="integer">1</from-support>
  <id type="integer">12002453</id>
  <importance type="integer">1175</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>cnLPaAo3mr4lkMeJe5cbLr,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3,csTgqAsy0r36GbeJe5avMc</notification-list>
  <number type="integer">1175</number>
  <priority type="integer">3</priority>
  <reporter-id>cnLPaAo3mr4lkMeJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Use explicit return types in RecordTypeMode implicits</summary>
  <updated-at type="datetime">2012-01-10T18:04:33+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>cnLPaAo3mr4lkMeJe5cbLr</id><login>raskaj</login><login_name warning="deprecated">raskaj</login_name><name>J&#225;n Ra&#353;ka</name></assigned-to>
  <reporter><id>cnLPaAo3mr4lkMeJe5cbLr</id><login>raskaj</login><login_name warning="deprecated">raskaj</login_name><name>J&#225;n Ra&#353;ka</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Task</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Task</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">17</component-id>
  <created-on type="datetime">2012-01-03T23:41:22+01:00</created-on>
  <description>See http://blog.jruby.org/2011/12/monitoring-memory_allocation-per-thread/</description>
  <from-support type="integer">1</from-support>
  <id type="integer">12284443</id>
  <importance type="integer">1178</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1178</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add per-thread allocation stats to Lift</summary>
  <updated-at type="datetime">2012-01-03T23:41:22+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>bbaU16tWyr36KFeJe5dVir</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">21</component-id>
  <created-on type="datetime">2012-01-06T14:13:01+01:00</created-on>
  <description>Currently, when you set a new value in a MongoRefField, the object cache does not get refreshed and contains the previous value. 

Proposed solution is to override setBox:

override def setBox(in: Box[MyType]): Box[MyType] = {
  _calcedObj = false
  super.setBox(in)
}

Note: super.setBox is synchronized and the above should be as well.
</description>
  <from-support type="integer">1</from-support>
  <id type="integer">12448603</id>
  <importance type="integer">1179</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>bbaU16tWyr36KFeJe5dVir,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3,c-3Ovuw28r34yNeJe5cbLA</notification-list>
  <number type="integer">1179</number>
  <priority type="integer">3</priority>
  <reporter-id>bbaU16tWyr36KFeJe5dVir</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Invalidate cached object in MongoRefField upon setting the value</summary>
  <updated-at type="datetime">2012-01-19T21:39:41+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>bbaU16tWyr36KFeJe5dVir</id><login>eltimn</login><login_name warning="deprecated">eltimn</login_name><name>eltimn</name></assigned-to>
  <reporter><id>bbaU16tWyr36KFeJe5dVir</id><login>eltimn</login><login_name warning="deprecated">eltimn</login_name><name>eltimn</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>apLvKSdcur35E8eJe5aVNr</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">12</component-id>
  <created-on type="datetime">2012-01-09T21:21:32+01:00</created-on>
  <description></description>
  <from-support type="integer">1</from-support>
  <id type="integer">12568183</id>
  <importance type="integer">1181</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>aP1mdQl-Cr3P4SeJe5afGb,apLvKSdcur35E8eJe5aVNr,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1181</number>
  <priority type="integer">3</priority>
  <reporter-id>aP1mdQl-Cr3P4SeJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>lift-mapper depends on derby </summary>
  <updated-at type="datetime">2012-01-19T14:41:31+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>apLvKSdcur35E8eJe5aVNr</id><login>indrajitr</login><login_name warning="deprecated">indrajitr</login_name><name>Indrajit Raychaudhuri</name><website>http://indrajit.com</website></assigned-to>
  <reporter><id>aP1mdQl-Cr3P4SeJe5afGb</id><login>jeppenejsum</login><login_name warning="deprecated">jeppenejsum</login_name><name>jeppenejsum</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Defect</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Defect</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">32</component-id>
  <created-on type="datetime">2012-01-25T18:07:46+01:00</created-on>
  <description>Support data-name attribute selection with a shortcut in CSS Selector Transforms so that id and class do not have to be over-loaded with server-side meaning. So, perhaps &quot;;foo&quot; #&gt; &quot;bar&quot; replaces all elements with data-name=&quot;foo&quot; with &quot;bar&quot;</description>
  <from-support type="integer">1</from-support>
  <id type="integer">13504213</id>
  <importance type="integer">1185</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1185</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Support data-name attribute in CSS Selector Transforms</summary>
  <updated-at type="datetime">2012-01-25T19:35:15+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> Wiki</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> Wiki</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>bMWEFsX2ar364meJe5cbCb</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">0</component-id>
  <created-on type="datetime">2012-01-26T12:29:04+01:00</created-on>
  <description>When appending form=post to a snippet-invokation, Lift generates a &lt;form&gt;-element and wraps the output of the snippet in the form.
Extend this to also support ajax-forms and reuse as much as possible from the built-in Form-snippet.</description>
  <from-support type="integer">1</from-support>
  <id type="integer">13560053</id>
  <importance type="integer">1188</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>bMWEFsX2ar364meJe5cbCb,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1188</number>
  <priority type="integer">3</priority>
  <reporter-id>bMWEFsX2ar364meJe5cbCb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Support form=ajax as snippet-attribute</summary>
  <updated-at type="datetime">2012-01-26T12:29:04+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>bMWEFsX2ar364meJe5cbCb</id><login>andreak@officenet.no</login><login_name warning="deprecated">andreak@officenet.no</login_name><name>andreak@officenet.no</name></assigned-to>
  <reporter><id>bMWEFsX2ar364meJe5cbCb</id><login>andreak@officenet.no</login><login_name warning="deprecated">andreak@officenet.no</login_name><name>andreak@officenet.no</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>bDdDEMw44r4iM5eJe5cbLr</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2012-01-30T21:34:56+01:00</created-on>
  <description>Adding for tracking purposes.  Branch pmb_liftscreen in git.</description>
  <from-support type="integer">1</from-support>
  <id type="integer">13860503</id>
  <importance type="integer">1190</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>bDdDEMw44r4iM5eJe5cbLr,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1190</number>
  <priority type="integer">3</priority>
  <reporter-id>bDdDEMw44r4iM5eJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add version of LiftScreen that uses CSS style binding</summary>
  <updated-at type="datetime">2012-01-30T21:34:56+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>bDdDEMw44r4iM5eJe5cbLr</id><login>peter.brant</login><login_name warning="deprecated">peter.brant</login_name><name>peter.brant</name></assigned-to>
  <reporter><id>bDdDEMw44r4iM5eJe5cbLr</id><login>peter.brant</login><login_name warning="deprecated">peter.brant</login_name><name>peter.brant</name></reporter>
<custom-fields>
<custom-field type="List" name="Required Documentation" id="14087"> Example Code</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Required Documentation" id="14087"> Example Code</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>do25aqeq4r34vueJe5afGb</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">0</component-id>
  <created-on type="datetime">2012-02-01T05:56:59+01:00</created-on>
  <description>Add analog to S.appendJs that appends javascript not surrounded by OnLoad.
</description>
  <from-support type="integer">1</from-support>
  <id type="integer">13950873</id>
  <importance type="integer">1192</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>do25aqeq4r34vueJe5afGb,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3</notification-list>
  <number type="integer">1192</number>
  <priority type="integer">3</priority>
  <reporter-id>do25aqeq4r34vueJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add S.appendGlobalJs method</summary>
  <updated-at type="datetime">2012-02-01T06:32:22+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>do25aqeq4r34vueJe5afGb</id><login>nafg</login><login_name warning="deprecated">nafg</login_name><name>nafg</name><second_im><type>none</type><id></id></second_im></assigned-to>
  <reporter><id>do25aqeq4r34vueJe5afGb</id><login>nafg</login><login_name warning="deprecated">nafg</login_name><name>nafg</name><second_im><type>none</type><id></id></second_im></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">18</component-id>
  <created-on type="datetime">2012-02-21T18:36:17+01:00</created-on>
  <description>http://groups.google.com/group/liftweb/browse_thread/thread/d01dd019a4bb0679

I usually use the ?~ method of the Box class in this manner:
myBox ?~ (&quot;param %s is missing&quot;.format(param)). flatMap( ..... )

I use this a lot because it's an easy and concise way to add
meaningful error messages. But this means that String.format is being
evaluated every time, and in most cases this will not be necessary.
Wouldn't it be better is we would call the msg parameter in ?~ by
name?

So instead of
def ?~(msg: String): Failure = Failure(msg, Empty, Empty)

use this
def ?~(msg: =&gt; String): Failure = Failure(msg, Empty, Empty)

I'm not sure if there's a performance penalty in using named
parameters but the Loggable trait uses this for the same reason so I
immagine it's ignorable.</description>
  <from-support type="integer">1</from-support>
  <id type="integer">15411153</id>
  <importance type="integer">1198</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">839423</milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ,a1xs765r4r34sNeJe5cbLr,aKxNFwEqir347ReJe5cbLr,c0tjyoZqur4lVZeJe4gwI3,aTqz3ItOOr4ymBacwqjQXA</notification-list>
  <number type="integer">1198</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>4</status>
  <status-name>Test</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Lzy eval of certain Box arguments</summary>
  <updated-at type="datetime">2012-03-01T22:02:33+01:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>be7z4kuQmr3AZYab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-08-18T00:08:49+02:00</created-on>
  <description></description>
  <from-support type="integer">0</from-support>
  <id type="integer">1934513</id>
  <importance type="integer">622</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">236851</milestone-id>
  <notification-list>be7z4kuQmr3AZYab7jnrAJ</notification-list>
  <number type="integer">622</number>
  <priority type="integer">3</priority>
  <reporter-id>be7z4kuQmr3AZYab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Remove shouldUpdate from CometListener</summary>
  <updated-at type="datetime">2010-08-24T19:04:27+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></assigned-to>
  <reporter><id>be7z4kuQmr3AZYab7jnrAJ</id><login>dpp</login><login_name warning="deprecated">dpp</login_name><name>dpp</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>dbqip8eq4r34vueJe5afGb</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2011-01-26T22:50:24+01:00</created-on>
  <description>Original email:


&lt;pre&gt;&lt;code&gt;
While I was testing for #616 I ran into some really awful performance with pagination. The root cause is that H2 is taking a long time on queries, but the fact that the &quot;count&quot; and &quot;page&quot; members in Paginator are defs means that I was hitting the slow query multiple times for each render (8 times for &quot;count&quot; in my read of the code). I was wondering if we should go optionally cache the result of &quot;page&quot; in a RequestVar and base &quot;count&quot; on that to avoid hitting the database so many times. Yes, DBs have query caches and other things that should mitigate this, but still that's at least 8 round trips to the database for every page view.
&lt;/code&gt;&lt;/pre&gt;

Per DPP this should use a TransientRequestVar
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3016195</id>
  <importance type="integer">868</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">236851</milestone-id>
  <notification-list>dbqip8eq4r34vueJe5afGb,a1xs765r4r34sNeJe5cbLr</notification-list>
  <number type="integer">868</number>
  <priority type="integer">3</priority>
  <reporter-id>dbqip8eq4r34vueJe5afGb</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>4</status>
  <status-name>Test</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add caching to Paginator</summary>
  <updated-at type="datetime">2011-09-22T05:45:47+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">1.0</invested-hours>
  <assigned-to><id>dbqip8eq4r34vueJe5afGb</id><login>dchenbecker</login><login_name warning="deprecated">dchenbecker</login_name><name>dchenbecker</name></assigned-to>
  <reporter><id>dbqip8eq4r34vueJe5afGb</id><login>dchenbecker</login><login_name warning="deprecated">dchenbecker</login_name><name>dchenbecker</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>dwtcBs9Umr35x0eJe5cbCb</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">7</component-id>
  <created-on type="datetime">2011-02-18T16:40:47+01:00</created-on>
  <description>It's not possible to use Record's ProtoUser with squeryl-record because of 'id' field conflict between ProtoUser's id and KeyedRecord's id. If one doesn't mixin KeyedRecord, it's not possible to use such user class in relationships.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3171787</id>
  <importance type="integer">902</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">236851</milestone-id>
  <notification-list>cnLPaAo3mr4lkMeJe5cbLr,a1xs765r4r34sNeJe5cbLr,dwtcBs9Umr35x0eJe5cbCb,crdkvu9kyr37AeeJe5cbLr,daDml61Vur35YoeJe5cbCb,cN52pKa38r4kzNeJe5cbLr</notification-list>
  <number type="integer">902</number>
  <priority type="integer">3</priority>
  <reporter-id>cnLPaAo3mr4lkMeJe5cbLr</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>ProtoUser for Squeryl-record</summary>
  <updated-at type="datetime">2011-11-03T22:16:54+01:00</updated-at>
  <working-hours type="float">5.0</working-hours>
  <working-hour type="float" warning="deprecated">5.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>dwtcBs9Umr35x0eJe5cbCb</id><login>migo</login><login_name warning="deprecated">migo</login_name><name>migo</name></assigned-to>
  <reporter><id>cnLPaAo3mr4lkMeJe5cbLr</id><login>raskaj</login><login_name warning="deprecated">raskaj</login_name><name>J&#225;n Ra&#353;ka</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Enhancement</custom-field>
<custom-field type="List" name="Required Documentation" id="14087"> ScalaDocs</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Enhancement</CustomField>
<CustomField type="List" name="Required Documentation" id="14087"> ScalaDocs</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>aXxzqkjYWr3Avjab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">17</component-id>
  <created-on type="datetime">2011-03-18T08:42:09+01:00</created-on>
  <description>specs2 provides some improvements over specs:
 
* concurrent execution of examples
* possibility to write acceptance tests
* better reliability
* more matchers like Parser matchers

The purpose of this task is to migrate all the specifications to specs2.
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">3401026</id>
  <importance type="integer">941</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">236851</milestone-id>
  <notification-list>aXxzqkjYWr3Avjab7jnrAJ,a1xs765r4r34sNeJe5cbLr,anlsRKQOCr3yfzab7jnrAJ,c1dwySXKGr4kz5eJe5cbLr</notification-list>
  <number type="integer">941</number>
  <priority type="integer">3</priority>
  <reporter-id>aXxzqkjYWr3Avjab7jnrAJ</reporter-id>
  <space-id>a-L5GeVBGr3RE_eJe5aVNr</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Migrate the specifications to specs2</summary>
  <updated-at type="datetime">2011-08-14T09:41:05+02:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>aXxzqkjYWr3Avjab7jnrAJ</id><login>etorreborre</login><login_name warning="deprecated">etorreborre</login_name><name>etorreborre</name></assigned-to>
  <reporter><id>aXxzqkjYWr3Avjab7jnrAJ</id><login>etorreborre</login><login_name warning="deprecated">etorreborre</login_name><name>etorreborre</name></reporter>
<custom-fields>
<custom-field type="List" name="Type" id="7614">Task</custom-field>
<custom-field type="List" name="Required Documentation" id="14087">None</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Type" id="7614">Task</CustomField>
<CustomField type="List" name="Required Documentation" id="14087">None</CustomField>
</CustomFields>
</ticket>
</tickets>

