SYNOPSIS

    use Net::Hiveminder;
    my $hm = Net::Hiveminder->new(use_config => 1);
    print $hm->todo;
    $hm->create_task("Boy these pretzels are making me thirsty [due tomorrow]");

DESCRIPTION

Hiveminder is a collaborate todo list organizer, built with Jifty.

This module uses Hiveminder's \s-1REST\s0 \s-1API\s0 to let you manage your tasks any way you want to.

This module is built on top of Net::Jifty. Consult that module's documentation for the lower-level interface.

display_tasks [\s-1ARGS\s0], \s-1TASKS\s0

This will take a list of hash references, \*(C`TASKS\*(C', and convert each to a human-readable form.

In scalar context it will return the readable forms of these tasks joined by newlines.

Passing options into this is somewhat tricky, because tasks are currently regular hashes. You may pass arguments to this method as such:

$hm->display_tasks([arg1 => 'val1', arg2 => 'val2'], @tasks)

The arguments currently respected are:

linkify_locator

Make the record locator (\*(C`#foo\*(C') into an \s-1HTML\s0 link, pointing to the task on \*(C`site\*(C'.

get_tasks \s-1ARGS\s0

Runs a search with \*(C`ARGS\*(C' for tasks. There are no defaults here, so this can be used for anything.

Returns a list of hash references, each one being a task. Use \*(C`display_tasks\*(C' if necessary.

todo_tasks [\s-1ARGS\s0]

Returns a list of hash references, each one a task. This uses the same query that the home page of Hiveminder uses. The optional \*(C`ARGS\*(C' will be passed as well so you can narrow down your todo list.

todo [\s-1ARGS\s0]

Returns a list of tasks in human-readable form. The optional \*(C`ARGS\*(C' will be passed as well so you can narrow down your todo list.

In scalar context it will return the concatenation of the tasks.

If the first argument is an array reference, it will be passed to \*(L"display_tasks\*(R" as options.

For example, to display tasks due today (with color):

print scalar $hm->todo([color => 1], due => "today");

create_task \s-1SUMMARY\s0, \s-1ARGS\s0

Creates a new task with \*(C`SUMMARY\*(C'. You may also specify arguments such as what tags the task will have.

read_task \s-1LOCATOR\s0

Load task \*(C`LOCATOR\*(C'.

update_task \s-1LOCATOR\s0, \s-1ARGS\s0

Update task \*(C`LOCATOR\*(C' with \*(C`ARGS\*(C'.

delete_task \s-1LOCATOR\s0

Delete task \*(C`LOCATOR\*(C'.

bulk_update \s-1ARGS\s0

Bulk-updates the given tasks. You can pass tasks in with one or more of the following:

tasks

An array reference of task hashes or locators, or a space-delimited string of locators.

ids

An array reference or space-delimited string of task IDs.

complete_tasks \s-1TASKS\s0

Marks the list of tasks or locators as complete.

braindump TEXT[, \s-1ARGS\s0]

Braindumps \*(C`TEXT\*(C'.

Optional arguments:

tokens => string | arrayref

tokens may be used to provide default attributes to all the braindumped tasks (this is part of what the filter feature of Hiveminder's \s-1IM\s0 bot does).

returns => 'ids' | 'tasks'

Return the affected task IDs, or the tasks themselves, instead of a summary of the changes made.

upload_text \s-1TEXT\s0

Uploads \*(C`TEXT\*(C' to BTDT::Action::UploadTasks.

upload_file \s-1FILENAME\s0

Uploads \*(C`FILENAME\*(C' to BTDT::Action::UploadTasks.

download_text

Downloads your tasks. This also gets the metadata so that you can edit the text and upload it, and it'll make the same changes to your task list.

This does not currently accept query arguments, because Hiveminder expects a \*(L"/not/owner/me/group/personal\*(R" type argument string, when all we can produce is \*(L"owner_not => 'me', group => 'personal'\*(R"

download_file \s-1FILENAME\s0

Downloads your tasks and puts them into \*(C`FILENAME\*(C'.

This does not currently accept query arguments, because Hiveminder expects a \*(L"/not/owner/me/group/personal\*(R" type argument string, when all we can produce is \*(L"owner_not => 'me', group => 'personal'\*(R"

priority (\s-1NUMBER\s0 | \s-1TASK\s0) -> Maybe String

Returns the \*(L"word\*(R" of a priority. One of: lowest, low, normal, high, highest. If the priority is out of range, \*(C`undef\*(C' will be returned.

done \s-1LOCATORS\s0

Marks the given tasks as complete.

loc2id (LOCATOR|TASK)s -> IDs

Transforms the given record locators (or tasks) to regular IDs.

id2loc IDs -> LOCATORs

Transform the given IDs into record locators.

tasks2ids

Deprecated

comments_on \s-1TASK\s0 -> (String)s

Returns a list of the comments on the given task.

comment_on \s-1TASK\s0, \s-1MESSAGE\s0

Add a comment to \s-1TASK\s0.

This method requires Email::Simple::Creator, which is an optional dependency of Net::Hiveminder. If Creator is unavailable, then this will throw an error.

send_feedback \s-1TEXT\s0

Sends the given \s-1TEXT\s0 as feedback to the Hiveminder team.

get_task_history \s-1LOCATOR\s0

Load the transaction history for task \s-1LOCATOR\s0.

Returns an array of transactions looking like:

$VAR1 = {

    'modified_at' => '2008-07-24 15:38:06',
    'type' => 'update',
    'id' => '1745040',
    'task_id' => '433397',
    'created_by' => '463'

};

RELATED TO Net::Hiveminder…

App::Todo, Jifty, Net::Jifty

AUTHOR

Shawn M Moore, \*(C`<sartak at bestpractical.com>\*(C'

BUGS

Please report any bugs or feature requests to \*(C`bug-net-hiveminder at rt.cpan.org\*(C', or through the web interface at <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Net-Hiveminder>.

COPYRIGHT & LICENSE

Copyright 2007-2009 Best Practical Solutions.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.