<?xml version="1.0" encoding="utf-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">

    <title type="text">Tracks</title>
    <link rel="alternate" type="text/html" href="http://www.rousette.org.uk/projects/forums/" />
    <link rel="self" type="application/atom+xml" href="http://www.rousette.org.uk/projects/forums/atom/" />
    <updated></updated>
    <rights>Copyright (c) 2008</rights>
    <generator uri="http://www.pmachine.com/" version="1.6.6">ExpressionEngine</generator>
    <id>tag:rousette.org.uk,2008:12:02</id>


    <entry>
      <title>Looking for a few alpha testers to play with an email friendly version of tracks</title>
      <link rel="alternate" type="text/html" href="http://www.rousette.org.uk/projects/forums/viewthread/286/" />      
      <id>tag:rousette.org.uk,2008:projects/forums/viewthread/.286</id>
      <published>2008-10-07T22:22:25Z</published>
      <updated></updated>
      <author><name>Mattew</name></author>
      <content type="html">
      <![CDATA[
        <p>Hello Fellow Tracks Users,</p>

<p>Our modification to the tracks code to add the ability to add todos with attachments via emails is coming along.&nbsp; I have been using it personally for a few weeks.&nbsp; I would like to find a few folks who could help me test it by signing up for an account on my server and using it. </p>

<p>Either reply to this post, or send me a PM if you are interested in helping.&nbsp; As soon as we get this stable, we are going to post the code back to tracks.&nbsp; Its really made the app even more useful for me, and I hope that a few folks out there can help me work the rest of the kinks out.</p>

<p>Thanks<br />
Matt</p>
      ]]>
      </content>
    </entry>

    <entry>
      <title>Submit Tasks to your Tracks through Email</title>
      <link rel="alternate" type="text/html" href="http://www.rousette.org.uk/projects/forums/viewthread/299/" />      
      <id>tag:rousette.org.uk,2008:projects/forums/viewthread/.299</id>
      <published>2008-12-02T01:47:42Z</published>
      <updated>2008-12-02T02:12:44Z</updated>
      <author><name>desrod</name></author>
      <content type="html">
      <![CDATA[
        <p>I posted a reply in a lower thread that was buried, so I&#8217;ll re-post the script here. I&#8217;ve taken some ideas from the work previously mentioned here and refactored it a LOT to reduce the size and complexity of the code involved, and leveraged the use of upstream modules to do the heavy lifting for me. </p>

<p>Here is a simple script that allows you to email your Tasks to your tracks install, creating new entries and contexts and due dates at the same time (and yes, my code really IS shorter than my comments): </p>

<p></p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #FF8000">#!/usr/bin/perl<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_._&nbsp;&nbsp;&nbsp;<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/_&nbsp;_`.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(c)&nbsp;2008,&nbsp;David&nbsp;A.&nbsp;Desrosiers<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(.(.)|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setuid@gmail.com<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|\_/'|&nbsp;&nbsp;&nbsp;<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)____`\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Email-to-Tracks&nbsp;interface<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//_V&nbsp;_\&nbsp;\&nbsp;<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((&nbsp;&nbsp;|&nbsp;&nbsp;`(_)&nbsp;&nbsp;&nbsp;If&nbsp;you&nbsp;find&nbsp;this&nbsp;useful,&nbsp;please&nbsp;drop&nbsp;me&nbsp;<br />#&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;\&gt;&nbsp;'&nbsp;&nbsp;&nbsp;/&nbsp;\&nbsp;&nbsp;&nbsp;an&nbsp;email,&nbsp;or&nbsp;send&nbsp;me&nbsp;bug&nbsp;reports&nbsp;if&nbsp;you&nbsp;find<br />#&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;&nbsp;\.__./&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;problems&nbsp;with&nbsp;it.&nbsp;I&nbsp;accept&nbsp;PayPal&nbsp;too!&nbsp;=-)<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`-'&nbsp;&nbsp;&nbsp;&nbsp;`-'&nbsp;<br />#<br />##############################################################################<br />#&nbsp;<br />#&nbsp;License<br />#<br />##############################################################################<br />#<br />#&nbsp;This&nbsp;script&nbsp;is&nbsp;free&nbsp;software;&nbsp;you&nbsp;can&nbsp;redistribute&nbsp;it&nbsp;and/or&nbsp;modify&nbsp;it<br />#&nbsp;under&nbsp;the&nbsp;terms&nbsp;of&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License&nbsp;as&nbsp;published&nbsp;by&nbsp;the&nbsp;Free<br />#&nbsp;Software&nbsp;Foundation;&nbsp;either&nbsp;version&nbsp;2&nbsp;of&nbsp;the&nbsp;License,&nbsp;or&nbsp;(at&nbsp;your&nbsp;option)<br />#&nbsp;any&nbsp;later&nbsp;version.<br />#<br />#&nbsp;The&nbsp;copyright&nbsp;notice&nbsp;must&nbsp;remain&nbsp;intact&nbsp;to&nbsp;remain&nbsp;in&nbsp;compliance&nbsp;with&nbsp;use.<br />#&nbsp;<br />#&nbsp;This&nbsp;script&nbsp;is&nbsp;distributed&nbsp;in&nbsp;the&nbsp;hope&nbsp;that&nbsp;it&nbsp;will&nbsp;be&nbsp;useful,&nbsp;but&nbsp;WITHOUT<br />#&nbsp;ANY&nbsp;WARRANTY;&nbsp;without&nbsp;even&nbsp;the&nbsp;implied&nbsp;warranty&nbsp;of&nbsp;MERCHANTABILITY&nbsp;or<br />#&nbsp;FITNESS&nbsp;FOR&nbsp;A&nbsp;PARTICULAR&nbsp;PURPOSE.&nbsp;&nbsp;See&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License&nbsp;for<br />#&nbsp;more&nbsp;details.<br />#<br />##############################################################################<br />#<br />#&nbsp;You'll&nbsp;need&nbsp;to&nbsp;set&nbsp;this&nbsp;up&nbsp;as&nbsp;an&nbsp;alias&nbsp;in&nbsp;your&nbsp;MTA&nbsp;configuration&nbsp;(typically<br />#&nbsp;/etc/aliases),&nbsp;as&nbsp;follows:<br />#<br />#&nbsp;tracks@your-site.tld:&nbsp;"|/path/to/gtd-tracks-mail.pl"<br />#<br />#&nbsp;Don't&nbsp;forget&nbsp;to&nbsp;run&nbsp;newaliases(1)&nbsp;after&nbsp;you've&nbsp;modified&nbsp;this&nbsp;so&nbsp;it&nbsp;can<br />#&nbsp;update&nbsp;the&nbsp;aliases&nbsp;table&nbsp;with&nbsp;the&nbsp;new&nbsp;entry.<br />#<br />#&nbsp;Email&nbsp;format&nbsp;can&nbsp;be&nbsp;any&nbsp;of&nbsp;the&nbsp;following:<br />#<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Subject:&nbsp;The&nbsp;main&nbsp;description&nbsp;of&nbsp;the&nbsp;Task<br />#<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Context<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;01/02/2003<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;is&nbsp;my&nbsp;note&nbsp;text<br />#<br />#&nbsp;or:<br />#&nbsp;<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Subject:&nbsp;Default&nbsp;Task&nbsp;description<br />#<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c:&nbsp;@context<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d:&nbsp;2008/12/31<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n:&nbsp;The&nbsp;note&nbsp;text&nbsp;to&nbsp;insert<br />#<br />#&nbsp;Most&nbsp;valid&nbsp;date&nbsp;formats&nbsp;are&nbsp;accepted,&nbsp;and&nbsp;this&nbsp;will&nbsp;do&nbsp;its&nbsp;best&nbsp;to<br />#&nbsp;"correct"&nbsp;and&nbsp;normalize&nbsp;them.&nbsp;You&nbsp;can&nbsp;also&nbsp;prefix&nbsp;your&nbsp;lines&nbsp;with&nbsp;the<br />#&nbsp;modifiers&nbsp;above,&nbsp;or&nbsp;read&nbsp;the&nbsp;regexes&nbsp;below&nbsp;for&nbsp;more.&nbsp;For&nbsp;example:&nbsp;<br />#&nbsp;c:,&nbsp;context:,&nbsp;cxt:,&nbsp;con:,&nbsp;ct:&nbsp;are&nbsp;all&nbsp;valid&nbsp;prefixes&nbsp;for&nbsp;"context"<br />#&nbsp;n:&nbsp;and&nbsp;note:&nbsp;are&nbsp;all&nbsp;valid&nbsp;prefixes&nbsp;for&nbsp;"notes",&nbsp;and&nbsp;so&nbsp;on.<br />#<br />##############################################################################<br /></span><span style="color: #007700">use&nbsp;</span><span style="color: #0000BB">strict</span><span style="color: #007700">;<br />use&nbsp;</span><span style="color: #0000BB">warnings</span><span style="color: #007700">;<br />use&nbsp;</span><span style="color: #0000BB">XML</span><span style="color: #007700">::</span><span style="color: #0000BB">Simple</span><span style="color: #007700">;<br />use&nbsp;</span><span style="color: #0000BB">LWP</span><span style="color: #007700">::</span><span style="color: #0000BB">UserAgent</span><span style="color: #007700">;<br />use&nbsp;</span><span style="color: #0000BB">URI</span><span style="color: #007700">::</span><span style="color: #0000BB">Escape</span><span style="color: #007700">;<br />use&nbsp;</span><span style="color: #0000BB">Email</span><span style="color: #007700">::Abstract;<br />use&nbsp;</span><span style="color: #0000BB">Date</span><span style="color: #007700">::</span><span style="color: #0000BB">Manip</span><span style="color: #007700">;<br />use&nbsp;</span><span style="color: #0000BB">Date</span><span style="color: #007700">::</span><span style="color: #0000BB">Parse</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">my&nbsp;$url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"http://your-site.tld/todos.xml"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">my&nbsp;$contextUrl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"http://your-site.tld/contexts.xml"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">#&nbsp;The&nbsp;default&nbsp;contextid&nbsp;where&nbsp;you&nbsp;want&nbsp;the&nbsp;Task&nbsp;added<br />#&nbsp;SELECT&nbsp;id,name&nbsp;FROM&nbsp;contexts;<br /></span><span style="color: #0000BB">my&nbsp;$contextid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"8"</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">my&nbsp;$user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"yourname"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">my&nbsp;$password&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"yourpass"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">#&nbsp;Leave&nbsp;these&nbsp;tokens&nbsp;alone.&nbsp;&nbsp;They&nbsp;are&nbsp;valid&nbsp;as&nbsp;of&nbsp;Tracks&nbsp;1.5&nbsp;RESTful&nbsp;API.<br /></span><span style="color: #0000BB">my&nbsp;</span><span style="color: #007700">%</span><span style="color: #0000BB">todo&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">map&nbsp;&#123;&nbsp;</span><span style="color: #007700">+(</span><span style="color: #0000BB">$_&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">"todo&#91;$_&#93;"</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">&#125;&nbsp;qw</span><span style="color: #007700">(</span><span style="color: #0000BB">notes&nbsp;context_id&nbsp;description&nbsp;due</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">#&nbsp;Get&nbsp;the&nbsp;context&nbsp;legend&nbsp;in&nbsp;order&nbsp;to&nbsp;match&nbsp;by&nbsp;name<br /></span><span style="color: #0000BB">my&nbsp;$ua&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">LWP</span><span style="color: #007700">::</span><span style="color: #0000BB">UserAgent</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">my&nbsp;$req&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">HTTP</span><span style="color: #007700">::</span><span style="color: #0000BB">Request&nbsp;</span><span style="color: #DD0000">'GET'</span><span style="color: #007700">,</span><span style="color: #0000BB">$contextUrl</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$req</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">authorization_basic</span><span style="color: #007700">(</span><span style="color: #0000BB">$user</span><span style="color: #007700">,</span><span style="color: #0000BB">$password</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">my&nbsp;$res&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$ua</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">request</span><span style="color: #007700">(</span><span style="color: #0000BB">$req</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">my&nbsp;$contexts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">XMLin</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">content</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">#&nbsp;Split&nbsp;apart&nbsp;the&nbsp;email&nbsp;into&nbsp;Subject&nbsp;and&nbsp;Body<br /></span><span style="color: #0000BB">my&nbsp;$message&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;do&nbsp;</span><span style="color: #0000BB">&#123;&nbsp;local&nbsp;</span><span style="color: #007700">$/;&nbsp;&lt;</span><span style="color: #0000BB">STDIN</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #0000BB">&#125;</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">my&nbsp;$email&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">Email</span><span style="color: #007700">::Abstract-&gt;</span><span style="color: #0000BB">new</span><span style="color: #007700">(</span><span style="color: #0000BB">$message</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">my&nbsp;$subject&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$email</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_header</span><span style="color: #007700">(</span><span style="color: #DD0000">"Subject"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">my&nbsp;$body&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$email</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_body</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">#&nbsp;These&nbsp;can&nbsp;probably&nbsp;be&nbsp;cleaned&nbsp;up&nbsp;a&nbsp;bit<br /></span><span style="color: #0000BB">my&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">$context_line</span><span style="color: #007700">)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;</span><span style="color: #0000BB">$body&nbsp;</span><span style="color: #007700">=~&nbsp;/^(?:</span><span style="color: #0000BB">c</span><span style="color: #007700">:|</span><span style="color: #0000BB">ct</span><span style="color: #007700">:|</span><span style="color: #0000BB">cxt</span><span style="color: #007700">:|</span><span style="color: #0000BB">con</span><span style="color: #007700">:|</span><span style="color: #0000BB">context</span><span style="color: #007700">:|@)</span><span style="color: #0000BB">\s</span><span style="color: #007700">*(.+)$/</span><span style="color: #0000BB">mi</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">my&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">$date_line</span><span style="color: #007700">)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;</span><span style="color: #0000BB">$body&nbsp;</span><span style="color: #007700">=~&nbsp;/^(?:</span><span style="color: #0000BB">d</span><span style="color: #007700">:|</span><span style="color: #0000BB">date</span><span style="color: #007700">:)</span><span style="color: #0000BB">\s</span><span style="color: #007700">*(</span><span style="color: #0000BB">\d</span><span style="color: #007700">.*)$/</span><span style="color: #0000BB">m</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$date_line&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">UnixDate</span><span style="color: #007700">(</span><span style="color: #0000BB">ParseDate</span><span style="color: #007700">(</span><span style="color: #DD0000">"today"</span><span style="color: #007700">),&nbsp;</span><span style="color: #DD0000">"%g"</span><span style="color: #007700">)&nbsp;if&nbsp;(</span><span style="color: #0000BB">length</span><span style="color: #007700">(</span><span style="color: #0000BB">$date_line</span><span style="color: #007700">)&nbsp;==&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">my&nbsp;$time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">str2time</span><span style="color: #007700">(</span><span style="color: #0000BB">$date_line</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">my&nbsp;$due_date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">UnixDate</span><span style="color: #007700">(</span><span style="color: #0000BB">scalar&nbsp;gmtime</span><span style="color: #007700">(</span><span style="color: #0000BB">$time</span><span style="color: #007700">),&nbsp;</span><span style="color: #DD0000">"%m/%d/%Y"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">my&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">$note_line</span><span style="color: #007700">)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;</span><span style="color: #0000BB">$body&nbsp;</span><span style="color: #007700">=~&nbsp;/^(?:</span><span style="color: #0000BB">n</span><span style="color: #007700">:|</span><span style="color: #0000BB">note</span><span style="color: #007700">:)</span><span style="color: #0000BB">\s</span><span style="color: #007700">*(.*?)$/</span><span style="color: #0000BB">mi</span><span style="color: #007700">;&nbsp;<br /><br /></span><span style="color: #FF8000">#&nbsp;Concatenate&nbsp;the&nbsp;data&nbsp;here&nbsp;before&nbsp;we&nbsp;send&nbsp;POST&nbsp;to&nbsp;the&nbsp;Tracks&nbsp;server<br /></span><span style="color: #0000BB">my&nbsp;$post_data&nbsp;</span><span style="color: #007700">=&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$todo&#123;</span><span style="color: #DD0000">'context_id'</span><span style="color: #0000BB">&#125;&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"="&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$contextid&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"&amp;"&nbsp;</span><span style="color: #007700">.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$todo&#123;</span><span style="color: #DD0000">'description'</span><span style="color: #0000BB">&#125;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"="&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">uri_escape</span><span style="color: #007700">(</span><span style="color: #0000BB">$subject</span><span style="color: #007700">)&nbsp;.&nbsp;</span><span style="color: #DD0000">"&amp;"&nbsp;</span><span style="color: #007700">.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$todo&#123;</span><span style="color: #DD0000">'notes'</span><span style="color: #0000BB">&#125;&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"="&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">uri_escape</span><span style="color: #007700">(</span><span style="color: #0000BB">$note_line</span><span style="color: #007700">)&nbsp;.&nbsp;</span><span style="color: #DD0000">"&amp;"&nbsp;</span><span style="color: #007700">.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$todo&#123;</span><span style="color: #DD0000">'due'</span><span style="color: #0000BB">&#125;&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"="&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">uri_escape</span><span style="color: #007700">(</span><span style="color: #0000BB">$due_date</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">#&nbsp;Use&nbsp;LWP&nbsp;to&nbsp;do&nbsp;the&nbsp;posting&nbsp;($ua&nbsp;was&nbsp;created&nbsp;earlier)<br /></span><span style="color: #0000BB">$req&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">HTTP</span><span style="color: #007700">::</span><span style="color: #0000BB">Request&nbsp;</span><span style="color: #DD0000">'POST'</span><span style="color: #007700">,</span><span style="color: #0000BB">$url</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$req</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">content_type</span><span style="color: #007700">(</span><span style="color: #DD0000">'application/x-www-form-urlencoded'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$req</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">content</span><span style="color: #007700">(</span><span style="color: #0000BB">$post_data</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$req</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">authorization_basic</span><span style="color: #007700">(</span><span style="color: #0000BB">$user</span><span style="color: #007700">,</span><span style="color: #0000BB">$password</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$res&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$ua</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">request</span><span style="color: #007700">(</span><span style="color: #0000BB">$req</span><span style="color: #007700">);&nbsp;</span>
</span>
</code></div><p></p>
      ]]>
      </content>
    </entry>

    <entry>
      <title>Create Tasks in Tracks via Email using the RESTFul API</title>
      <link rel="alternate" type="text/html" href="http://www.rousette.org.uk/projects/forums/viewthread/203/" />      
      <id>tag:rousette.org.uk,2008:projects/forums/viewthread/.203</id>
      <published>2008-03-29T12:27:33Z</published>
      <updated>2008-03-29T12:29:18Z</updated>
      <author><name>lkraven</name></author>
      <content type="html">
      <![CDATA[
        <p>First off, I have to confess that unless you already know what you&#8217;re doing, this is a pretty technical trick.</p>

<p>I have rigged my hosted Tracks installation to be able to receive emails into an Inbox context I can sort through later.</p>

<p>This allows me to go through my email (gmail, or otherwise) and forward emails to &#8220;mygtd@mydomain.com&#8221; and have it automatically create a to-do with the subject of the email as the description and the body of the email as a note.</p>

<p>Again, this is somewhat tricky, but if you have the background to do it, I am including source code.&nbsp; In this case, all we have used is a perl script.</p>

<p>I can provide very little support, so hopefully you can get it working.&nbsp; This is something I badly wanted, and found a way to do&#8230; I didn&#8217;t think I should hoarde the benefits to myself, but neither can I be as much assistance as I would like.</p>

<p>Requirements:</p>

<p>I. You have to run your own email server capable of receiving emails and piping it to a script.&nbsp; If you don&#8217;t know what this means, you may not be able to do it.</p>

<p>II. You probably have to be running Tracks in a hosted environment.&nbsp; I have not tried it with anything other than on a linux host.</p>

<p>Once you have created the email address, modify the following script per the comments, and pipe it to the script.&nbsp; It works wonderfully.</p>

<p></p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #FF8000">#!/usr/bin/perl<br />#&nbsp;Quick&nbsp;and&nbsp;dirty&nbsp;hack&nbsp;to&nbsp;add&nbsp;tasks&nbsp;via&nbsp;an&nbsp;email.<br />#&nbsp;Install&nbsp;by&nbsp;adding&nbsp;an&nbsp;alias&nbsp;in&nbsp;/etc/aliases&nbsp;or&nbsp;/etc/valiases&nbsp;depending<br />#&nbsp;on&nbsp;yor&nbsp;system:<br />#<br />#&nbsp;mygtdaddress@mydomain.com:&nbsp;"|/home/directory/inboxgtd.pl"<br />#<br /><br /><br /></span><span style="color: #007700">use&nbsp;</span><span style="color: #0000BB">strict</span><span style="color: #007700">;<br />use&nbsp;</span><span style="color: #0000BB">WWW</span><span style="color: #007700">::</span><span style="color: #0000BB">Curl</span><span style="color: #007700">::</span><span style="color: #0000BB">Easy</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">open&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">STDOUT</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"&gt;/dev/null"</span><span style="color: #007700">);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Redirect&nbsp;CURL&nbsp;output&nbsp;to&nbsp;null.&nbsp;&nbsp;Some&nbsp;mail&nbsp;servers&nbsp;will&nbsp;bounce<br /></span><span style="color: #0000BB">open&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">STDERR</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"&gt;/dev/null"</span><span style="color: #007700">);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;messages&nbsp;if&nbsp;there&nbsp;is&nbsp;any&nbsp;return.<br /><br /><br />#&nbsp;Replace&nbsp;with&nbsp;todos.xml&nbsp;url&nbsp;of&nbsp;your&nbsp;GTD&nbsp;installation<br />#&nbsp;my&nbsp;$url&nbsp;=&nbsp;"http://yourgtd.yourdomain.com/todos.xml";<br /><br /></span><span style="color: #0000BB">my&nbsp;$url&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"http://yourgtd.yourdomain.com/todos.xml"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">#&nbsp;The&nbsp;contextid&nbsp;where&nbsp;you&nbsp;want&nbsp;the&nbsp;todo&nbsp;added.&nbsp;&nbsp;Usually&nbsp;an&nbsp;inbox.<br /></span><span style="color: #0000BB">my&nbsp;$contextid&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"1"</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">my&nbsp;$curl&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">WWW</span><span style="color: #007700">::</span><span style="color: #0000BB">Curl</span><span style="color: #007700">::</span><span style="color: #0000BB">Easy</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">new</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">my&nbsp;$description&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">""</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">my&nbsp;$note&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">""</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">#&nbsp;Your&nbsp;authorization&nbsp;credentials&nbsp;in&nbsp;the&nbsp;format<br />#&nbsp;my&nbsp;$auth&nbsp;=&nbsp;"username:password";<br />#<br /></span><span style="color: #0000BB">my&nbsp;$auth&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"username:password"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">#&nbsp;Leave&nbsp;these&nbsp;tokens&nbsp;alone.&nbsp;&nbsp;They&nbsp;are&nbsp;valid&nbsp;as&nbsp;of&nbsp;Tracks&nbsp;1.5&nbsp;RESTful&nbsp;API.<br /></span><span style="color: #0000BB">my&nbsp;$notetag&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"todo&#91;notes&#93;"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">my&nbsp;$contexttag&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"todo&#91;context_id&#93;"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">my&nbsp;$descriptiontag&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"todo&#91;description&#93;"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">#&nbsp;Dirty&nbsp;hack.&nbsp;&nbsp;First&nbsp;blank&nbsp;line&nbsp;begins&nbsp;body&nbsp;text.<br /></span><span style="color: #0000BB">my&nbsp;$passedempty&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">my&nbsp;</span><span style="color: #007700">@</span><span style="color: #0000BB">mail&nbsp;</span><span style="color: #007700">=&nbsp;&lt;</span><span style="color: #0000BB">STDIN</span><span style="color: #007700">&gt;;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Read&nbsp;in&nbsp;the&nbsp;piped&nbsp;email<br /></span><span style="color: #0000BB">my&nbsp;$line&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">""</span><span style="color: #007700">;<br /><br />foreach&nbsp;</span><span style="color: #0000BB">$line&nbsp;</span><span style="color: #007700">(@</span><span style="color: #0000BB">mail</span><span style="color: #007700">)<br /></span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if&nbsp;(&nbsp;(</span><span style="color: #0000BB">$line&nbsp;</span><span style="color: #007700">=~&nbsp;</span><span style="color: #0000BB">m</span><span style="color: #007700">/</span><span style="color: #0000BB">Subject</span><span style="color: #007700">:&nbsp;(.*)/)&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;If&nbsp;it's&nbsp;the&nbsp;subject&nbsp;line...<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$description&nbsp;</span><span style="color: #007700">=&nbsp;$</span><span style="color: #0000BB">1</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;...&nbsp;use&nbsp;it&nbsp;for&nbsp;the&nbsp;todo&nbsp;description<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#125;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if&nbsp;(&nbsp;</span><span style="color: #0000BB">$line&nbsp;</span><span style="color: #007700">=~&nbsp;</span><span style="color: #0000BB">m</span><span style="color: #007700">/^$/&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Checking&nbsp;for&nbsp;that&nbsp;blank&nbsp;line<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$passedempty&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#125;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">$passedempty</span><span style="color: #007700">)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Once&nbsp;we&nbsp;see&nbsp;it&nbsp;...<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$note&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$note&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$line</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Copy&nbsp;every&nbsp;blank&nbsp;line&nbsp;into&nbsp;the&nbsp;todo&nbsp;note.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#125;<br />&#125;<br /><br /></span><span style="color: #FF8000">#&nbsp;Here&nbsp;we&nbsp;munge&nbsp;the&nbsp;data&nbsp;together&nbsp;to&nbsp;post.<br /><br /></span><span style="color: #0000BB">my&nbsp;$post_data&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$contexttag&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"="&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$contextid&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"&amp;"&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$descriptiontag&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"="&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$description&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"&amp;"&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$notetag&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"="&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$note</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">#&nbsp;We&nbsp;execute&nbsp;curl&nbsp;to&nbsp;do&nbsp;the&nbsp;posting.<br /><br /></span><span style="color: #0000BB">$curl</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">CURLOPT_URL</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$url</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$curl</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">CURLOPT_POSTFIELDS</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$post_data</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$curl</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">CURLOPT_USERPWD</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$auth</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$curl</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">perform</span><span style="color: #007700">();<br /><br /></span><span style="color: #0000BB">close&nbsp;STDOUT</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">close&nbsp;STDERR</span><span style="color: #007700">;&nbsp;</span>
</span>
</code></div><p></p>
      ]]>
      </content>
    </entry>

    <entry>
      <title>Chaining Actions</title>
      <link rel="alternate" type="text/html" href="http://www.rousette.org.uk/projects/forums/viewthread/287/" />      
      <id>tag:rousette.org.uk,2008:projects/forums/viewthread/.287</id>
      <published>2008-10-11T13:04:32Z</published>
      <updated></updated>
      <author><name>Esfingie</name></author>
      <content type="html">
      <![CDATA[
        <p>Hi, I&#8217;m new user of Tracks and I&#8217;m really happy with it. </p>

<p>Here it is my suggestion of improvement: </p>

<p>I find very useful the option &#8220;<i>Show from</i>&#8220; for an action, in order to defer an action  to an specific date. But, could be possible to specify in &#8220;<i>Show from</i>&#8220; form  something like &#8220;<i>defer up to another action completion</i>&#8220; ? <br />
My reasoning: Sometimes an action precedes some other. So the second action should not be shown visible up to the previous one has been toggled as completed, and not at an predefined date.</p>

<p>I think this could be helpful if added, and in this way actions could be chained. In this way actions deferred after others won&#8217;t be shown before the action established as a prerequisite has been completed.</p>

<p>Masters, I will be waiting your feedback.</p>

<p><br />
Thanks for so wonderful GTD application.</p>
      ]]>
      </content>
    </entry>

    <entry>
      <title>public Tracks Tra.in installation</title>
      <link rel="alternate" type="text/html" href="http://www.rousette.org.uk/projects/forums/viewthread/19/" />      
      <id>tag:rousette.org.uk,2006:projects/forums/viewthread/.19</id>
      <published>2006-07-16T20:10:07Z</published>
      <updated></updated>
      <author><name>chris</name></author>
      <content type="html">
      <![CDATA[
        <p>hi bsag&#8212;thanks so much for Tracks!&nbsp; i&#8217;ve been really happy with it since installing it last week.</p>

<p>i started out with the Mac/Locomotive method at first, but then wanted to access it from anywhere&#8212;so i put it up on <a href="http://tracks.tra.in">http://tracks.tra.in</a> and told all my non-techie friends about it.&nbsp; it&#8217;s open/free for all, especially those who wouldn&#8217;t otherwise install it themselves.</p>

<p>based on their feedback, i&#8217;ve been tweaking small interface elements just a bit (like using the context/project name instead of &#8220;[C]&#8220; or &#8220;[P]&#8220; in item view) and hacked it to allow open signups.&nbsp; i&#8217;m also working on an (optional) &#8220;gmail-esque&#8221; layout.&nbsp; though Tracks is already so elegant and simple&#8212;i don&#8217;t want to spoil it.</p>

<p>but i hope this is all OK with you&#8212;i&#8217;ll send patches of the tweaks, though they&#8217;re currently pretty small.</p>
      ]]>
      </content>
    </entry>

    <entry>
      <title>Tracks using SSL</title>
      <link rel="alternate" type="text/html" href="http://www.rousette.org.uk/projects/forums/viewthread/282/" />      
      <id>tag:rousette.org.uk,2008:projects/forums/viewthread/.282</id>
      <published>2008-10-05T19:04:27Z</published>
      <updated></updated>
      <author><name>rudedog830</name></author>
      <content type="html">
      <![CDATA[
        <p>Has anyone installed Tracks with SSL.&nbsp; My installation is on a hosted site and I would prefer to have SSL implemented.&nbsp; I do not want to implement it for my entire domain, just for the Tracks application.&nbsp; Comments or suggestions would be appreciated.</p>
      ]]>
      </content>
    </entry>

    <entry>
      <title>&#8220;&amp;amp;&#8220; in URLs in Notes fields of actions get changed into &#8220;&#38;&#8220;</title>
      <link rel="alternate" type="text/html" href="http://www.rousette.org.uk/projects/forums/viewthread/293/" />      
      <id>tag:rousette.org.uk,2008:projects/forums/viewthread/.293</id>
      <published>2008-11-08T16:04:56Z</published>
      <updated></updated>
      <author><name>cpbotha</name></author>
      <content type="html">
      <![CDATA[
        <p>Hi all,</p>

<p>I am trying to convert my todo system from todoist.com to a tracks installation.&nbsp; Due to problems with 1.6 (smooth ajax contexts not expanding enough to contain all actions; context sorting not being persistent; context expands/folds on home page not being consistent) I&#8217;ve installed a git tarball from yesterday (2008-11-07) behind apache2+fastcgi on Ubuntu 7.10.</p>

<p>When making a next action, I would often like to add urls to the relevant gmail mails in the notes field.&nbsp; With simple URLs without &#8220;&amp;&#8220; characters this works fine: &#8220;URL&#8221;:http://my.url.com/</p>

<p>However, if the URL has &amp;s;in (which it often has), these are all changed to &#8220;&#38;&#8220;.&nbsp; When I open the edit box, they&#8217;re fine, but as soon as I save the next action and mouse over the URL, it&#8217;s useless.</p>

<p>What am I doing wrong?&nbsp; Any other advice on how to get around this?</p>

<p>Thanks for a great piece of software,<br />
Charl Botha<br />
<a href="http://cpbotha.net/">http://cpbotha.net/</a></p>
      ]]>
      </content>
    </entry>

    <entry>
      <title>#792: Dragging the context to reorder does not hold permanently (Workaround)</title>
      <link rel="alternate" type="text/html" href="http://www.rousette.org.uk/projects/forums/viewthread/298/" />      
      <id>tag:rousette.org.uk,2008:projects/forums/viewthread/.298</id>
      <published>2008-11-29T16:42:59Z</published>
      <updated>2008-11-29T16:45:05Z</updated>
      <author><name>hboers</name></author>
      <content type="html">
      <![CDATA[
        <p><span style="color:red;">*** NO WARRENTY USE AT OWN RISC  ***</span></p>

<p>This error did annoy me very much, thus I tried to find a temporary workaround &#8216;till the issue is solved.</p>

<p>in model user.rb add</p>

<p></p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">def&nbsp;find_by_params</span><span style="color: #007700">(</span><span style="color: #0000BB">params</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">find</span><span style="color: #007700">(</span><span style="color: #0000BB">params&#91;</span><span style="color: #DD0000">'id'</span><span style="color: #0000BB">&#93;&nbsp;</span><span style="color: #007700">||&nbsp;</span><span style="color: #0000BB">params&#91;</span><span style="color: #DD0000">'context_id'</span><span style="color: #0000BB">&#93;</span><span style="color: #007700">)&nbsp;||&nbsp;</span><span style="color: #0000BB">nil<br />&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Start&nbsp;insertion&nbsp;HBo&nbsp;2008-11-29<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">def&nbsp;update&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">id</span><span style="color: #007700">,</span><span style="color: #0000BB">params</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">context&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">self</span><span style="color: #007700">.</span><span style="color: #0000BB">detect&nbsp;&#123;&nbsp;</span><span style="color: #007700">|</span><span style="color: #0000BB">c</span><span style="color: #007700">|&nbsp;</span><span style="color: #0000BB">c</span><span style="color: #007700">.</span><span style="color: #0000BB">id&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #0000BB">id</span><span style="color: #007700">.</span><span style="color: #0000BB">to_i&nbsp;&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context</span><span style="color: #007700">.</span><span style="color: #0000BB">update_attribute</span><span style="color: #007700">(:</span><span style="color: #0000BB">position</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">params&#91;</span><span style="color: #007700">:</span><span style="color: #0000BB">position&#93;</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">unless&nbsp;context</span><span style="color: #007700">.</span><span style="color: #0000BB">nil</span><span style="color: #007700">?<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">end<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;End&nbsp;insertion&nbsp;HBo&nbsp;2008-11-29<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">end&nbsp;</span>
</span>
</code></div><p></p>

<p>params[&#8220;list-contexts&#8221;] in controller context order method contains an empty entry thats the reason for context.nil? Please be aware that this mostly will work around the effect and not really solves the cause. </p>

<p>Works for me and hope it will work for you but of cause there may be side effects I&#8217;m not aware of</p>

<p><span style="color:red;">*** NO WARRENTY USE AT OWN RISC  ***</span></p>
      ]]>
      </content>
    </entry>

    <entry>
      <title>NoMethodError in Todos#index</title>
      <link rel="alternate" type="text/html" href="http://www.rousette.org.uk/projects/forums/viewthread/279/" />      
      <id>tag:rousette.org.uk,2008:projects/forums/viewthread/.279</id>
      <published>2008-09-22T18:05:54Z</published>
      <updated></updated>
      <author><name>Rafael Morales</name></author>
      <content type="html">
      <![CDATA[
        <p>Hello,</p>

<p>I was running Tracks 1.5 happily when I made the stupid mistake of updating my Debian installation to its latest release. Then I got Ruby 1.8.7 (package ruby1.8, version 1.8.7.22-3) and I could not log in anymore due to errors. So I decided to update my Tracks to 1.6 and now I can loging, but then I got the messages on the web page that I include below (but no logs). Curiously for me, a longer version gets copied using Windows copy/paste, which I have attached.</p>

<p>Any help would be greatly appreciated.</p>

<p>Regards,</p>

<p>Rafael</p>

<p><br />
</p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">NoMethodError&nbsp;in&nbsp;Todos</span><span style="color: #FF8000">#index<br /><br /></span><span style="color: #0000BB">Showing&nbsp;todos</span><span style="color: #007700">/</span><span style="color: #0000BB">_toggle_notes</span><span style="color: #007700">.</span><span style="color: #0000BB">rhtml&nbsp;where&nbsp;line&nbsp;</span><span style="color: #FF8000">#3&nbsp;raised:<br /><br /></span><span style="color: #0000BB">undefined&nbsp;method&nbsp;</span><span style="color: #007700">`</span><span style="color: #0000BB">&#91;&#93;'&nbsp;for&nbsp;#&lt;Enumerable::Enumerator:0xb6fabe94&gt;<br /><br />Extracted&nbsp;source&nbsp;(around&nbsp;line&nbsp;#3):<br /><br />1:&nbsp;&lt;%=&nbsp;link_to(image_tag(&nbsp;'blank.png',&nbsp;:width=&gt;'16',&nbsp;:height=&gt;'16',&nbsp;:border=&gt;'0'&nbsp;),&nbsp;"#",&nbsp;&#123;:class&nbsp;=&gt;&nbsp;'show_notes',&nbsp;:title&nbsp;=&gt;&nbsp;'Show&nbsp;notes'&#125;)&nbsp;%&gt;<br />2:&nbsp;&lt;%&nbsp;apply_behavior&nbsp;'a.show_notes:click',&nbsp;:prevent_default&nbsp;=&gt;&nbsp;true&nbsp;do&nbsp;|page,&nbsp;element|<br />3:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;element.next('.todo_notes').toggle<br />4:&nbsp;&nbsp;&nbsp;&nbsp;end<br />5:&nbsp;-%&gt;<br />6:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;class="todo_notes"&nbsp;id="&lt;%=&nbsp;dom_id(item,&nbsp;'notes')&nbsp;%&gt;"&nbsp;style="display:none"&gt;<br /><br />Trace&nbsp;of&nbsp;template&nbsp;inclusion:&nbsp;/todos/_todo.html.erb,&nbsp;/contexts/_context.rhtml,&nbsp;/todos/index.html.erb<br /><br />RAILS_ROOT:&nbsp;/opt/tracks-1.6<br />Application&nbsp;Trace&nbsp;|&nbsp;Framework&nbsp;Trace&nbsp;|&nbsp;Full&nbsp;Trace<br /><br />vendor/rails/activesupport/lib/active_support/core_ext/string/access.rb:43:in&nbsp;</span><span style="color: #007700">`</span><span style="color: #0000BB">first</span><span style="color: #DD0000">'<br />vendor/rails/activesupport/lib/active_support/inflector.rb:151:in&nbsp;`camelize'<br /></span><span style="color: #0000BB">vendor</span><span style="color: #007700">/</span><span style="color: #0000BB">rails</span><span style="color: #007700">/</span><span style="color: #0000BB">activesupport</span><span style="color: #007700">/</span><span style="color: #0000BB">lib</span><span style="color: #007700">/</span><span style="color: #0000BB">active_support</span><span style="color: #007700">/</span><span style="color: #0000BB">core_ext</span><span style="color: #007700">/</span><span style="color: #0000BB">string</span><span style="color: #007700">/</span><span style="color: #0000BB">inflections</span><span style="color: #007700">.</span><span style="color: #0000BB">rb</span><span style="color: #007700">:</span><span style="color: #0000BB">49</span><span style="color: #007700">:</span><span style="color: #0000BB">in&nbsp;</span><span style="color: #007700">`</span><span style="color: #0000BB">camelize'<br />vendor/rails/actionpack/lib/action_view/helpers/prototype_helper.rb:1079:in&nbsp;</span><span style="color: #007700">`</span><span style="color: #0000BB">method_missing</span><span style="color: #DD0000">'<br />vendor/plugins/unobtrusive_javascript/lib/ujs/javascript_proxies.rb:43:in&nbsp;`__send__'<br /></span><span style="color: #0000BB">vendor</span><span style="color: #007700">/</span><span style="color: #0000BB">plugins</span><span style="color: #007700">/</span><span style="color: #0000BB">unobtrusive_javascript</span><span style="color: #007700">/</span><span style="color: #0000BB">lib</span><span style="color: #007700">/</span><span style="color: #0000BB">ujs</span><span style="color: #007700">/</span><span style="color: #0000BB">javascript_proxies</span><span style="color: #007700">.</span><span style="color: #0000BB">rb</span><span style="color: #007700">:</span><span style="color: #0000BB">43</span><span style="color: #007700">:</span><span style="color: #0000BB">in&nbsp;</span><span style="color: #007700">`</span><span style="color: #0000BB">method_missing'<br />app/views/todos/_toggle_notes.rhtml:3:in&nbsp;</span><span style="color: #007700">`</span><span style="color: #0000BB">_run_erb_47app47views47todos47_toggle_notes46rhtml</span><span style="color: #DD0000">'<br />app/views/todos/_toggle_notes.rhtml:2:in&nbsp;`_run_erb_47app47views47todos47_toggle_notes46rhtml'<br /></span><span style="color: #0000BB">app</span><span style="color: #007700">/</span><span style="color: #0000BB">views</span><span style="color: #007700">/</span><span style="color: #0000BB">todos</span><span style="color: #007700">/</span><span style="color: #0000BB">_todo</span><span style="color: #007700">.</span><span style="color: #0000BB">html</span><span style="color: #007700">.</span><span style="color: #0000BB">erb</span><span style="color: #007700">:</span><span style="color: #0000BB">19</span><span style="color: #007700">:</span><span style="color: #0000BB">in&nbsp;</span><span style="color: #007700">`</span><span style="color: #0000BB">_run_erb_47app47views47todos47_todo46html46erb'<br />app/views/contexts/_context.rhtml:34:in&nbsp;</span><span style="color: #007700">`</span><span style="color: #0000BB">_run_erb_47app47views47contexts47_context46rhtml</span><span style="color: #DD0000">'<br />app/views/todos/index.html.erb:4:in&nbsp;`_run_erb_47app47views47todos47index46html46erb'<br /></span><span style="color: #0000BB">app</span><span style="color: #007700">/</span><span style="color: #0000BB">controllers</span><span style="color: #007700">/</span><span style="color: #0000BB">todos_controller</span><span style="color: #007700">.</span><span style="color: #0000BB">rb</span><span style="color: #007700">:</span><span style="color: #0000BB">568</span><span style="color: #007700">:</span><span style="color: #0000BB">in&nbsp;</span><span style="color: #007700">`</span><span style="color: #0000BB">render_todos_html'<br />app/controllers/todos_controller.rb:18:in&nbsp;</span><span style="color: #007700">`</span><span style="color: #0000BB">index</span><span style="color: #007700">'</span><span style="color: #0000BB"><br /><br />Request<br /><br />Parameters:<br /><br />None<br /><br />Show&nbsp;session&nbsp;dump<br /><br />---&nbsp;<br />:js_behaviours:&nbsp;<br />&nbsp;&nbsp;:rules:&nbsp;&#91;&#93;<br /><br />&nbsp;&nbsp;:options:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;:reapply_after_ajax:&nbsp;true<br />&nbsp;&nbsp;&nbsp;&nbsp;:cache:&nbsp;<br />return-to:&nbsp;<br />user_id:&nbsp;2<br />flash:&nbsp;!map:ActionController::Flash::FlashHash&nbsp;<br />&nbsp;&nbsp;:notice:&nbsp;"Login&nbsp;successful:&nbsp;session&nbsp;will&nbsp;not&nbsp;expire."<br />noexpiry:&nbsp;"on"<br /><br />Response<br /><br />Headers:<br /><br />&#123;"Content-Type"=&gt;"text/html",<br />&nbsp;"cookie"=&gt;&#91;&#93;,<br />&nbsp;"Cache-Control"=&gt;"no-cache"&#125;&nbsp;</span>
</span>
</code></div><p></p>
      ]]>
      </content>
    </entry>

    <entry>
      <title>Localisation effort</title>
      <link rel="alternate" type="text/html" href="http://www.rousette.org.uk/projects/forums/viewthread/245/" />      
      <id>tag:rousette.org.uk,2008:projects/forums/viewthread/.245</id>
      <published>2008-07-05T08:39:40Z</published>
      <updated></updated>
      <author><name>bsag</name></author>
      <content type="html">
      <![CDATA[
        <p>I&#8217;ve had a couple of emails from Tracks users offering to help out with the effort to translate Tracks into other languages, which is fantastic.</p>

<p>What I suggest is that we try to agree on a localisation solution, and then once that is settled, anyone who is skilled in other languages (but not necessarily in Ruby programming) could contribute the necessary text). Perhaps someone with some Rails experience could take a lead and fork Tracks on github, then set up the necessary structure for localisation. Then others can chip in with the actual translations.</p>

<p>I know absolutely nothing about localisation, so if anyone has any experience with different localisation solutions, let us know if you have a favoured library or plugin.</p>
      ]]>
      </content>
    </entry>


</feed>