TaskManager
A simple task manager for Laravel
- Simple and extensible
- Method chaining
- Formatter (alpha), (*1)
TaskManager is a Laravel package which allows you to create projects, and create tasks. The package is in development stage for time being, and not ready for production uses., (*2)
Version
0.3.2, (*3)
Requirements
- Laravel - version 5 (version 4 <= untested, need help here).
- PHP - version => 5.3
Installation
Download the package as a zip, and then put it on /vendor folder., (*4)
Add the following line on your composer.json file, under the psr-4:, (*5)
"psr-4": {
...
"Areyi\\TaskManager\\": "vendor/areyi/taskmanager/src"
}
After that, register the TaskManagerServiceProvider in the /config/app.php file, under the providers array:, (*6)
'Areyi\TaskManager\Laravel\TaskManagerServiceProvider'
And in the same file, put the TaskManager alias under the aliases array:, (*7)
'TaskManager' => 'Areyi\TaskManager\Facades\TaskManager'
And finally, run all the migration files, (*8)
php artisan migrate --path=vendor/areyi/taskmanager/src/database/migrations
Usage
First, you must supply with the user_id (which you can get from your favourite authentication managers). This will make sure projects and tasks belongs to the right user., (*9)
$user_id = 1; // get from your login manager
TaskManager::setUserId($user_id);
1. To create a new project:
Try this:, (*10)
$project_details = [
'name' => 'New Project',
'name' => 'new_project', //optional
];
TaskManager::addProject($project_details);
which will return:, (*11)
Areyi\TaskManager\Base Object
(
[userID] => 1
[result] => 1
[project_id] => 77
)
2. To create a new task:
You can straightaway creating a task without supplying the project_id if you have created a project before, (*12)
$task_details = [
'name' => 'New Task'
];
TaskManager::addTask($task_details);
or you can also chain them to create multiple tasks:, (*13)
TaskManager::addTask($task_details)->addTask($task2_details)->addTask($task3_details);
which will return:, (*14)
Areyi\TaskManager\Base Object
(
[userID] => 1
[result] => 1
[project_id] => 79
[task_id] => Array
(
[0] => 75
[1] => 76
[2] => 77
)
)
and you can also create project and add tasks to it at the same time:, (*15)
TaskManager::addProject($project_details)->addTask($task_details)->addTask($task_details);
3. Get all projects:
To get all existing projects:, (*16)
TaskManager::getProjects();
which will returns straightaway:, (*17)
Areyi\TaskManager\Base Object
(
[userID] => 1
[projects] => Array
(
[0] => Array
(
[id] => 1
[name] => Web Development Project
[slug] => webdev
[owner_id] => 1
[owner] => admin
[created_at] => 2015-12-26 01:00:55
[updated_at] => 2015-12-26 01:00:55
)
[1] => Array
(
[id] => 2
[name] => New Project
[slug] => new_project
[owner_id] => 2
[owner] => staff
[created_at] => 2015-12-26 01:43:38
[updated_at] => 2015-12-26 01:43:38
)
)
)
4. Get all tasks with specified project_id
To get all tasks assign to a project:, (*18)
$project_id = 1;
TaskManager::getProject($project_id)->getTasks();
which returns:, (*19)
Areyi\TaskManager\Base Object
(
[userID] => 1
[id] => 1
[name] => Web Development Project
[slug] => webdev
[owner_id] => 1
[owner] => admin
[created_at] => 2015-12-26 01:43:38
[updated_at] => 2015-12-26 01:43:38
[tasks] => Array
(
[0] => Array
(
[id] => 1
[name] => Buy a milk
[slug] =>
[author_id] => 1
[author] => admin
[completed] => 0
[description] =>
[created_at] => 2015-12-26 01:43:38
[updated_at] => 2015-12-26 01:43:38
)
[1] => Array
(
[id] => 2
[name] => Buy a book
[slug] =>
[author_id] => 1
[author] => admin
[completed] => 0
[description] =>
[created_at] => 2015-12-26 01:43:38
[updated_at] => 2015-12-26 01:43:38
)
)
)
5. Get the whole thing
You can also get all projects along with their tasks:, (*20)
TaskManager::getAll();
6. Delete a project
To delete a project (this will also delete all tasks under the same project):, (*21)
$projectId = 1;
TaskManager::deleteProject($projectId);
7. Delete a task
To delete a task:, (*22)
$task_id = 1;
TaskManager::deleteTask($task_id);
8. Mark a task as completed
To mark a task as completed:, (*23)
TaskManager::completeTask($task_id)
This is still under development!
TaskManager is included with a powerful formatter, allowing you to edit or delete projects/tasks and complete a task on the run. The formatter is powered by AJAX., (*24)
1. Get all projects as list
To list all projects as a list, (*25)
TaskManager::getProjects()->format()->asList();
Result:
* Web Development Project (by admin) Delete
* Test Project (by admin) Delete, (*26)
2. Get all tasks as list
To list all tasks under a project as a list, (*27)
$project_id = 1;
TaskManager::getProject($project_id)->getTasks()->format()->asList();
Result:
* Buy a milk Complete
* Buy a book Complete, (*28)
List of available routes
These are the available routes in the package:, (*29)
Route |
Uses |
GET /taskmanager/list/all |
List all projects and tasks |
GET /taskmanager/list/projects |
List all projects |
GET /taskmanager/list/project/{project_id} |
Get a project with the given project id |
GET /taskmanager/list/tasks/{project_id} |
Get tasks associated with the project id |
GET /taskmanager/delete/project/{project_id} |
Delete the project |
GET /taskmanager/delete/task/{task_id} |
Delete the task |
GET /taskmanager/complete/task/{task_id} |
Mark the task as completed |
List of avaiable methods
These are the methods in the package:, (*30)
Method |
Uses |
TaskManager::setUserId($userId); |
Set the ownership for all projects and tasks |
TaskManager::addProject($project_details); |
Create a new project |
TaskManager::addTask($task_details); |
Add a new task |
TaskManager::getProjects(); |
Get all projects |
TaskManager::getProject($project_id); |
Get a project by given project_id |
TaskManager::getTasks(); |
Get all tasks |
TaskManager::getTask($project_id); |
Get a task by given project_id |
TaskManager::getAll(); |
Get all projects and their tasks |
TaskManager::deleteProject($projectId); |
Delete a project |
TaskManager::deleteTask($taskId); |
Delete a task |
TaskManager::completeTask($taskId); |
Mark a task as done |
TaskManager::format(); |
(todo) |
Todos
License
BSD 3-Clause, (*31)
Contributions
Feel free to contribute to the project! It will be much appriciated! And most importantly, its a Free Software, Hell Yeah!, (*32)