myTinyTodo improvements by others

By , January 8, 2011 15:03

People makes their own improvements for myTinyTodo:

Displaying data from myTinyTodo somewhere else

MyTinyTodo Email Notification Script

myTinyTodo module for Drupal

52 Responses to “myTinyTodo improvements by others”

  1. dim says:

    Dark skin for myTinyTodo
    (Not tested on version 1.4 final)

  2. Ray says:

    Hi, I created an alternate email notification for the sqlite backend. Enjoy…

    #! /usr/bin/python

    ”’ — email nag script for myTinyTodo using sqlite3 backend

    Written by Ray Lambert

    Based on mysql version by ‘james’

    Most recent version tested on: 1.4.0
    Should work with 1.3.x series and older (so long as the db has
    ‘title’, ‘compl’ and ‘duedata’ columns — I’m not sure of the db history)

    ### configuration:
    dbfile = ‘todolist.db’ # path/filename to your db file
    email_from = ‘mytonytodo@host’ # email from: address
    email_to = ‘someone@somewhere’ # email to: address
    subject = ‘Todo Nag’
    intro = “This is to nag you todo:\n” # email body intro

    import sys
    import sqlite3
    import smtplib
    from email.mime.text import MIMEText

    conn = sqlite3.connect(dbfile)
    cursor = conn.cursor()
    cursor.execute(“select duedate,title from todolist where compl == 0 and duedate != ” order by duedate”)
    rows = cursor.fetchall()
    #print “found %d due items” % len(rows)
    if len(rows) > 0:
    body = intro + “\n”
    for row in rows:
    body = body + ” * %s: %s\n” % (row[0],row[1])
    msg = MIMEText(body)
    msg[‘Subject’] = subject
    msg[‘From’] = email_from
    msg[‘To’] = email_to

    s = smtplib.SMTP(‘localhost’)
    s.sendmail(email_from, email_to, msg.as_string() )


    • Valentin says:

      google traduction sorry:

      I don’t know much about code like you do. but I use this little system for my association.
      however I am missing a little thing in this system (simple and fast without database)

      Is it possible to automatically send an email to the user or defined task email when the task is due?
      ie the day D of the date send an automatic email reminder?

      do you know how to do it? have you already done it for you? or do you know a simple system without BDD if possible which offers this service?

      thank you in advance
      Best regards

      version française :

      je ne connais pas grand chose en code comme vous . mais j’utilise ce petit system pour mon association.
      cependant il me manque une petite chose dans ce system (simple et rapide sans base de données)

      Est il possible d’envoyer automatiquement un email à l’utilisateur ou défini email de la tache lorsque la tache arrive à échéance ?
      c’est a dire le jour J de la date envoyer un email automatique de rappel ?

      savez vous le faire ? lavez vous déjà fait pour vous ? ou connaisser vous un system simple et sans BDD si possible qui propose ce service ?

      merci d’avance
      bien cordialement

  3. Danny says:

    Anyone know how to make sub-tasks like todoist?

    i want to be able to make a task then have sub-task so it works like a project.

    • RK says:

      I believe that it’s not good practice, it’s not a planning tool (you would then need extras like start, end, constraints, duration, estimate, capacity allocation, …), and you’ll loose some flexibility, iterate too much, spend too much time planning.

      However, in my view those would be make it even more a killer app :

      * Segment the tasks list in sections (not only by date – it’s not a planning tool, being too precise on dates is not very efficient (Note: setting target dates has a bug, when you edit the task, it is lost – latest version) ) so that the user can imagine his own workflow (time based, role based, priority based, etc). You can even generalise this by reusing the tags concept, and adding on top of the tags, namespaces (the user chooses a collection of tags in each namespace, and the segmentation is done by namespaces)

      * to collaborate (assign to one or more person, with roles (RACI : responsible, accountable, consulted, informed). I suppose that you will want to do this at some point…

      Ideas / Tricks :
      * a dumb API would be great (with a token. take a look at

      * Allow to convert the notes into tasks, and the reverse (merge in a new task). That is VERY usefull, as it enables you to use the tool while you are thinking, not after. If you implement that i’ll send you a bottle of wine from france. Enjoy.

      * Custom fields. With the possibility of making operations (sums, etc). That is would be killer feature #2

      * Well i’ve spent quite a large amount of time thinking part of what you have implemented, and i have a working mockup of some of the stuff. If you wish to discuss, i’m there, drop me a mail (i’m not a good code writer, but i like to believe that i have good ideas; i’m also an IT consultant, that could help).


  4. Dylan says:

    Hey Danny, I’m going to work on a version with sub-tasks, but I think the gangsta original creator of MTT has it on his… well… tiny to do list.

  5. FS says:

    Agreed it would be nice to have the ability to add sub-tasks or lists within a list on a screen.

  6. jake says:

    Can myTinyTodo support REST APIs?

  7. wjhulzebosch says:


    i’m looking for an “add-on” where i can see:
    – all tasks (from all categories)
    – all tasks with date today
    – all tasks with high priority

    Is something like that possible?

  8. Antonio says:


    I have realize a variation of Smarty Syntax.
    I think that syntax proposed isn’t immediate.

    Smarty Syntax that I use is:
    [++[+]|–] TASK TITLE [@tags] [/day+\d]

    Here a list of examples:

    1. Task with priority +1, title Test task, tag “tag 1”, “tag2”:
    ++ Testk task @tag 1, tag2

    2. Tastk with title Test task, tag “tag 1” and with due date tomorrow:
    Test task @tag 1 /tomorrow

    Test task @tag 1 /day+1

    3. Task with priority -1, title Test task, tag “tag 1” e “tag2”, due date between 3 days:
    — Test task @tag 1, tag2 /day+3

    Do not think that it is easier compared to the current method?
    If you want to use this variation, write me.

  9. Luca says:

    Hi, someone has tried to modifi mttd for support multiple users??I wanna modify this, but maybe already exist this mod:)

    I would try to use the same tables of the original adding a field like user.Like this it could be possible to use one instance for more users.

    Some already tried?

  10. Faisal Basra says:

    Idea! would be nice if tinytodo support multi user environment. thanks

  11. ppk says:

    how to use multi-user. ( I saw changelog told me about multi-user in version 1.4 )

    • Max Pozdeev says:

      No multi-user yet.

    • Scott says:

      If you put each user into their own directory, using sqlite database, then you have a pseudo-multi-user environment. Each user has there own site, but it’s all kind of right there together.


      That doesn’t allow you to have multiple users on a task, that’s true; however, the tag cloud can fake that. Put ‘bob’ or ‘fred’ into the tags and they can find their tasks.

      If you don’t assign a password, then any user can update tasks. Bob would just have to know that “list x” is on Fred’s page. Not a problem if Fred is the lead on that list of tasks.

      What would really help is to have a unified rss feed. Instead of multiple feeds based on the task ID, I’d love to have an ‘all’ feed that would get me all the ‘public’ feeds from a site. That way, as my coworkers add/delete task lists, I don’t have to know the new/expired numbers.

  12. Luis says:

    Hi there!

    What do Public Tasks need to have as tag to appear in the MyTodoList? I would love to use that feature.

  13. Bryan says:

    Any one had any success in updating the editor for the notes to an Rich Text editor?

  14. Satish says:

    Great App. How do I import existing tasks? I have it in a csv file. I am having problems due to uuid field.


  15. lemonadesoda says:

    Love it! There are a couple of things I ask you to consider. (Keeping within KISS scope)

    1./ The Search function should work for tags too. There is no reason I should be forced to use the separate tag dropdown to track a tag when the search function can just incl. tags in its scope.
    2./ Print button! Yes, I know CTRL+P does a fine job, but I think showing it will save a thousand non-technical users asking the common question “how do I print this list?”
    3./ New task input dialog should be AT THE BOTTOM, which is standard practice! We add things to the bottom of the list. Or we comment or reply in forum/blogs at the bottom
    4./ To have an option to manage “show completed” with more granularity. For example, two options, show recently completed, and show all completed. Settings could determine how many days are included in “recently completed”. I don’t want to see things crossed off the list 3, 9 or 60 months ago, but yes, I’d like to see what I checked off this week!
    5./ Complex User ACL not needed, but it isnt clear how the current password function is working (from demo). The ability to view or edit would be nice. So each tab should have a view password and an edit password (which could be the same or different depending on rights management)
    6./ Option to turn on History/Log tracking. Especially important to fix mistakes or when there are two or more users using the lists!

    Other than that, couldn’t want for more in a “tinytodo”. Nice job!

  16. PhilMageo says:

    //French language for mytinytodo

    “Etes-vous certain de vouloir supprimer cette tâche?”,
    ‘confirmLeave’ => “Il peut y avoir des données non sauvergardées. Voulez-vous vraiment quitter?”,
    ‘actionNoteSave’ => “sauvegarder”,
    ‘actionNoteCancel’ => “annuler”,
    ‘error’ => “Une erreur est survenue (cliquez pour plus de détails)”,
    ‘denied’ => “Accès interdit”,
    ‘invalidpass’ => “Mot de passe erronné”,
    ‘tagfilter’ => “Tag:”,
    ‘addList’ => “Créer une nouvelle liste”,
    ‘renameList’ => “Renommer la liste”,
    ‘deleteList’ => “Vous allez supprimer la liste courante avec ses tâche.\\nEtes-vous certain?”,
    ‘clearCompleted’ => “Vous allez supprimer toutes les tâches terminées de la liste\\nEtes-vous certain?”,
    ‘settingsSaved’ => “Préfèrences Rechargement en cours…”,

    var $inc = array
    ‘htab_newtask’ => “Nouvelle tâche”,
    ‘htab_search’ => “Recherche”,
    ‘btn_add’ => “Ajouter”,
    ‘btn_search’ => “Chercher”,
    ‘advanced_add’ => “Avancé”,
    ‘searching’ => “Recherche en cours”,
    ‘tasks’ => “tâches”,
    ‘taskdate_inline_created’ => “créée à %s”,
    ‘taskdate_inline_completed’ => “Terminée &agrave %s”,
    ‘taskdate_inline_duedate’ => “Pour le %s”,
    ‘taskdate_created’ => “Créée le”,
    ‘taskdate_completed’ => “Terminée”,
    ‘go_back’ => “<< Retour”,
    ‘edit_task’ => “Modifier une tâche”,
    ‘add_task’ => “Nouvelle tâche”,
    ‘priority’ => “Priorité”,
    ‘task’ => “tâche”,
    ‘note’ => “Note”,
    ‘tags’ => “Tags”,
    ‘save’ => “Sauvegarder”,
    ‘cancel’ => “Annuler”,
    ‘password’ => “Mot de passe”,
    ‘btn_login’ => “Login”,
    ‘a_login’ => “Login”,
    ‘a_logout’ => “Se déconnecter”,
    ‘public_tasks’ => “Tâches publiques”,
    ‘tagcloud’ => “Tags”,
    ‘tagfilter_cancel’ => “Annuler le filtre”,
    ‘sortByHand’ => “Trier manuellement”,
    ‘sortByPriority’ => “Trier par priorité”,
    ‘sortByDueDate’ => “Trier par date d’échéance”,
    ‘sortByDateCreated’ => “Trier par date de création”,
    ‘sortByDateModified’ => “Trier par date de modification”,
    ‘due’ => “Echéance”,
    ‘daysago’ => “Il y a %d jours”,
    ‘indays’ => “dans %d jours”,
    ‘months_short’ => array(“Jan”,”Fev”,”Mar”,”Avr”,”Mai”,”Jun”,”Jul”,”Aou”,”Sep”,”Oct”,”Nov”,”Dec”),
    ‘months_long’ => array(“Janvier”,”Février”,”Mars”,”Avril”,”May”,”Juin”,”Juillet”,”Août”,”Septembre”,”Octobre”,”Novembre”,”Décembre”),
    ‘days_min’ => array(“Di”,”Lu”,”Ma”,”WMe”,”Je”,”Ve”,”Sa”),
    ‘days_long’ => array(“Dimanche”,”Lundi”,”Mardi”,”Mercredi”,”Jeudi”,”Vendredi”,”Samedi”),
    ‘today’ => “Aujourdhui”,
    ‘yesterday’ => “Hier”,
    ‘tomorrow’ => “Demain”,
    ‘f_past’ => “Déâssé”,
    ‘f_today’ => “Aujourdhui et demain”,
    ‘f_soon’ => “Bientôt”,
    ‘action_edit’ => “Editer”,
    ‘action_note’ => “Editer une note”,
    ‘action_delete’ => “Supprimer”,
    ‘action_priority’ => “Prioritée”,
    ‘action_move’ => “Déplacer vers”,
    ‘notes’ => “Notes:”,
    ‘notes_show’ => “Montrer”,
    ‘notes_hide’ => “Cacher”,
    ‘list_new’ => “Nouvelle Liste”,
    ‘list_rename’ => “Renommer la liste”,
    ‘list_delete’ => “Supprimer la liste”,
    ‘list_publish’ => “Publier la liste”,
    ‘list_showcompleted’ => “Montrer les tâches terminées”,
    ‘list_clearcompleted’ => “Supprimer les tâches terminées”,
    ‘list_select’ => “Sélectionner une liste”,
    ‘list_export’ => “Exporter”,
    ‘list_export_csv’ => “CSV”,
    ‘list_export_ical’ => “iCalendar”,
    ‘list_rssfeed’ => “RSS Feed”,
    ‘alltags’ => “Tous les tags:”,
    ‘alltags_show’ => “Montrer tout”,
    ‘alltags_hide’ => “Cacher tout”,
    ‘a_settings’ => “Préférences”,
    ‘rss_feed’ => “RSS Feed”,
    ‘feed_title’ => “%s”,
    ‘feed_completed_tasks’ => “Tâches terminées”,
    ‘feed_modified_tasks’ => “Tâches modifiées”,
    ‘feed_new_tasks’ => “Nouvelles tâches”,
    ‘alltasks’ => “Toutes les tâches”,

    /* Settings */
    ‘set_header’ => “Préférences”,
    ‘set_title’ => “Titre”,
    ‘set_title_descr’ => “(indiquez si vous souhaitez changer le titre d origine)”,
    ‘set_language’ => “Langage”,
    ‘set_protection’ => “Protection par mot de passe”,
    ‘set_enabled’ => “Activé”,
    ‘set_disabled’ => “Désactivé”,
    ‘set_newpass’ => “Nouveau mot de passe”,
    ‘set_newpass_descr’ => “(Laisser vide si vous ne voulez pas changer de mot de passe)”,
    ‘set_smartsyntax’ => “Syntaxe intelligente”,
    ‘set_smartsyntax_descr’ => “(/priorité/ tâche /tags/)”,
    ‘set_timezone’ => “Zone horaire”,
    ‘set_autotag’ => “Autotagging”,
    ‘set_autotag_descr’ => “(Ajoute automatiquement des tags à la nouvelle tâche.)”,
    ‘set_sessions’ => “Mecanisme de gestion de session”,
    ‘set_sessions_php’ => “PHP”,
    ‘set_sessions_files’ => “Fichiers”,
    ‘set_firstdayofweek’ => “Premier jour de la semaine”,
    ‘set_custom’ => “Spécifique”,
    ‘set_date’ => “Format de date”,
    ‘set_date2’ => “Format de date court”,
    ‘set_shortdate’ => “Format de date court (année courante)”,
    ‘set_clock’ => “Format horaire”,
    ‘set_12hour’ => “12-heures”,
    ‘set_24hour’ => “24-heures”,
    ‘set_submit’ => “Valider les changements”,
    ‘set_cancel’ => “Annuler”,
    ‘set_showdate’ => “Montrer les échéances dans la liste”,

  17. paul says:

    Max: thanks for making this, it is useful. I made a small change that allows entry of due dates in parenthesis:
    /+1/ Call Home! /personal/ (today)

    I’d be happy to contribute this. If you’re interested let me know.

  18. Dan says:

    I am not sure anyone is reading this page anymore but I was wondering if a multi-user add-on was ever created? I am able to connect to the http address from multiple computers but if I clear one of the tasks, it does not disappear from the other computers until they do a screen refresh. I did try some html to auto refresh the webpage but it was very clunky…for example, if someone was actively typing in a task and it refreshed, they would have to start over. Any thoughts/ideas?


  19. stefan says:

    Is it possible to block the Checkbox, that delete the Task.


  20. Julia says:

    I’m looking for an “add-on” to have the possibility to upload and add a file for a todo (txt, doc, jpg etc.).
    Does sth. like this already exist?

  21. Juan Manuel says:

    Hi all,

    I wrote a PostgreSQL backend if anyone is interested.

    Also I’m developing a “Progress” hack, that adds a progress bar to each task, so it is possible to set a done percentage just hovering and clicking the mouse.

    At the moment, the HTML, css and JQuery stuff is working, and is being worked on the ajax part.


  22. Paul Sadler says:

    I’m enjoying the comments, but a little confused:

    a. If you want “sub-lists”, the option exists — it’s called a separate list?

    b. If you want to use multi-users, you can, you just can’t have an audit trail or separate user environments — login with same login, and either tag people individually for their tasks or create a separate list for Joe, Mary, Steve;

    c. Similarly for tasking people, you can transfer from a “Admin” list to Joe, Mary, Steve’s list hence delegating it to them — when finished, they can click done and transfer it back;

    There are lots of other planning programs out there that can do that, but that takes you from personal planning into group planning and project planning, which is not what a to do list is for. This works GREAT for what it is supposed to do. Would I love an import feature or an ALL TASKS list sorted by list or ability to tag multiple entries and apply changes to them? Sure, but it works pretty well as designed for what it was designed for!



  23. Jeremy says:

    Has anyone added the ability to drag a task from one list to another? I’m planning on have a list for each developer but if they get reassigned I’d rather not recreate them, it would be nice to just ‘move’ them by dragging.

  24. Wakonda says:


    I have lightly rewritten the “class.db.mysql.php” to replace “mysql” by “mysqli”.
    With that, we can use “myTinyTodo” with mySQL and PHP 7.

  25. Big Goomba says:

    I just started using MTT (v1.4.3) and I’ve found several sorting issues where the RSS Feeds and exported .CSV files do not match the web page sort order. It seems that the .CSV sort by Due Date is the only one that works. These are the two features that I was looking forward to using.

    Is anyone else having this problem or possibly a solution?

  26. Keith Willis says:

    I’ve added 8 more positive priority levels, (suitably colour-coded). Too many changes to post here, but let me know if anyone is interested.

  27. Zeuf says:

    If someone needs a control over the password (more than 3 times, the IP is banned), I wrote some lines here

    • Roystan says:

      I’m a bit confuse into 3 times banned. I just download mytinytodo and I setup with a password in the setting. But I can only view/edit tasks when I login. Users cannot see tasks without login. The password is suppose to protect other users other than admin(creator) from deleting or changing the tasks. So how can I protect other users from deleting with a password? Sorry, but I’m newbie in this and have no idea where to change to make it work. With 3 times IP banned, you will only banning yourself if you forgot your password; isn’t it?

  28. Juanma says:

    Hello good night to everyone Would it be possible to filter tasks between specific dates or be able to select completed or open tasks for the entire week or the whole month?

  29. Luis says:


    Is there a way to have bullet points display in the notes area? I don’t need bold/italics, but I would welcome the bullet pointing.

    I tried wiki syntax, html and others but so far unsuccessfully.

    Best regards,


  30. Juanma says:

    Hello everyone. I would need to be able to implement a pagination and search engine by expiration date. Any idea how to do it?
    Thank you very much.

  31. Roystan says:

    I just download mytinytodo and I setup with a password in the setting. But I can only view/edit tasks when I login. Users cannot see tasks without login. The password is suppose to protect other users other than admin(creator) from deleting or changing the tasks. So how can I protect other users from deleting with a password? Sorry, but I’m newbie in this and have no idea where to change to make it work.

  32. Martin says:

    mytinytodo is a nice webprogram!
    But drag and drop is not working on Iphone. It there a workaround? Or an Idea to patch this?

    Thanks 🙂

  33. Tom says:

    It would be nice if a tab could show any events due today. If I’m in one tab and events are due in another tab.. could that other tab be high lighted ?

Leave a Reply

Based on Panorama Theme by Themocracy