{"id":16971643,"url":"https://github.com/thomastjdev/kanboardsubtasksboard","last_synced_at":"2025-04-12T00:42:58.922Z","repository":{"id":87656853,"uuid":"79670363","full_name":"ThomasTJdev/KanboardSubtasksBoard","owner":"ThomasTJdev","description":"Kanboard plugin - Show subtasks on main board without hovering over subtask-icon","archived":false,"fork":false,"pushed_at":"2017-09-01T14:16:05.000Z","size":32,"stargazers_count":8,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-12T00:42:51.012Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ThomasTJdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-01-21T20:17:47.000Z","updated_at":"2021-09-21T22:10:25.000Z","dependencies_parsed_at":"2023-03-13T18:40:23.655Z","dependency_job_id":null,"html_url":"https://github.com/ThomasTJdev/KanboardSubtasksBoard","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThomasTJdev%2FKanboardSubtasksBoard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThomasTJdev%2FKanboardSubtasksBoard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThomasTJdev%2FKanboardSubtasksBoard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThomasTJdev%2FKanboardSubtasksBoard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ThomasTJdev","download_url":"https://codeload.github.com/ThomasTJdev/KanboardSubtasksBoard/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248501959,"owners_count":21114681,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-14T00:53:14.278Z","updated_at":"2025-04-12T00:42:58.910Z","avatar_url":"https://github.com/ThomasTJdev.png","language":"PHP","readme":"# Not maintained\n\n# Show subtasks below tasks on main board\n\nThis will render the subtasks on board.\n\n![subtasks](screenshot/subtasks.png)\n\n## Todo\n\nSubtasks \"disappear\" when moving tasks.\n\n## How to\n#### Prerequisites\n\nClone this repo into the **kanboard/Plugins**.\n\n`git clone`\n\nOptional:\n\nUse this plugin [KanboardCSS](https://gitlab.com/ThomasTJ/KanboardCSS)\n\n#### Step 1\nAdd the following to **Controller/BoardViewController** in the function `show()`:\n\n`$subtasksAll = $this-\u003ekanboardSubtasksBoardModel-\u003eKanboardSubtasksBoardGetAll($project);`\n\n`'subtasks' =\u003e $subtasksAll,`\n\nIt should then look like this (snippet):\n\n```PHP\n\u003c?php\npublic function show()\n{\n    $project = $this-\u003egetProject();\n    $search = $this-\u003ehelper-\u003eprojectHeader-\u003egetSearchQuery($project);\n\n    $subtasksAll = $this-\u003ekanboardSubtasksBoardModel-\u003eKanboardSubtasksBoardGetAll($project); // Code 1\n\n    $this-\u003eresponse-\u003ehtml($this-\u003ehelper-\u003elayout-\u003eapp('board/view_private', array(\n        'subtasks' =\u003e $subtasksAll, // Code 2\n        'project' =\u003e $project,\n        'title' =\u003e $project['name'],\n        'description' =\u003e $this-\u003ehelper-\u003eprojectHeader-\u003egetDescription($project),\n        'board_private_refresh_interval' =\u003e $this-\u003econfigModel-\u003eget('board_private_refresh_interval'),\n        'board_highlight_period' =\u003e $this-\u003econfigModel-\u003eget('board_highlight_period'),\n        'swimlanes' =\u003e $this-\u003etaskLexer\n            -\u003ebuild($search)\n            -\u003eformat(BoardFormatter::getInstance($this-\u003econtainer)-\u003ewithProjectId($project['id']))\n    )));\n}\n?\u003e\n```\n\n\n#### Step 2\nAdd the following to ***view_private.php***:\n\n`'subtasks' =\u003e $subtasks,`\n\nIt should look like this:\n\n```PHP\n\u003csection id=\"main\"\u003e\n\n    \u003c?= $this-\u003eprojectHeader-\u003erender($project, 'BoardViewController', 'show', true) ?\u003e\n\n    \u003c?= $this-\u003erender('board/table_container', array(\n        'subtasks' =\u003e $subtasks,\n        'project' =\u003e $project,\n        'swimlanes' =\u003e $swimlanes,\n        'board_private_refresh_interval' =\u003e $board_private_refresh_interval,\n        'board_highlight_period' =\u003e $board_highlight_period,\n    )) ?\u003e\n\n\u003c/section\u003e\n```\n\n\n#### Step 3\nAdd the following to **table_container.php**:\n\n`'subtasks' =\u003e $subtasks,`\n\nIt should look like this (snippet):\n```PHP\n\u003c?= $this-\u003erender('board/table_tasks', array(\n    'subtasks' =\u003e $subtasks,\n    'project' =\u003e $project,\n    'swimlane' =\u003e $swimlane,\n    'not_editable' =\u003e isset($not_editable),\n    'board_highlight_period' =\u003e $board_highlight_period,\n)) ?\u003e\n```\n\n#### Step 4\nAdd the following to **table_tasks.php**:\n\n`'subtasks' =\u003e $subtasks,`\n\nIt should look like this (snippet):\n\n```PHP\n\u003c?php foreach ($column['tasks'] as $task): ?\u003e\n    \u003c?= $this-\u003erender($not_editable ? 'board/task_public' : 'board/task_private', array(\n        'subtasks' =\u003e $subtasks,\n        'project' =\u003e $project,\n        'task' =\u003e $task,\n        'board_highlight_period' =\u003e $board_highlight_period,\n        'not_editable' =\u003e $not_editable,\n    )) ?\u003e\n\u003c?php endforeach ?\u003e\n```\n\n\n#### Step 5\nAdd the following in **task_private.php**:\n\n`'subtasks' =\u003e $subtasks,`\n\nIt should look like this (snippet):\n\n```PHP\n\u003c?= $this-\u003erender('board/task_footer', array(\n    'subtasks' =\u003e $subtasks,\n    'task' =\u003e $task,\n    'not_editable' =\u003e $not_editable,\n    'project' =\u003e $project,\n)) ?\u003e\n```\n\n\n#### Step 6\nMake the following changes in **task_footer.php**:\n\nInsert the code right above this:\n\n`\u003c?= $this-\u003ehook-\u003erender('template:board:task:icons', array('task' =\u003e $task)) ?\u003e`\n\nCode:\n```PHP\n\u003c?php if (! empty($task['nb_subtasks'])): ?\u003e\n\n    \u003c?php foreach($subtasks as $subtasks){\n        if ($subtasks['subtasks_status'] == \"0\" \u0026\u0026 $subtasks['tasks_id'] == $task['id']){\n    ?\u003e\n            \u003cdiv class=\"taskdetails\" style=\"margin-left: 15px; text-align: left;\"\u003e\n            \u003chr class=\"taskseparator\"/\u003e\n            \u003cspan style=\"color: black; opacity: 1; font-size: 12px;\"title=\"\u003c?= t('Sub-Tasks') ?\u003e\" class=\"tooltip\" data-href=\"\u003c?= $this-\u003eurl-\u003ehref('BoardTooltipController', 'subtasks', array('task_id' =\u003e $task['id'], 'project_id' =\u003e $task['project_id'])) ?\u003e\"\u003e\u003c?php print $subtasks['subtasks_title']; ?\u003e\u003c/span\u003e\n            \u003c/div\u003e\n    \u003c?php\n        }\n    } ?\u003e\n\n\u003c?php endif ?\u003e\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomastjdev%2Fkanboardsubtasksboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthomastjdev%2Fkanboardsubtasksboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomastjdev%2Fkanboardsubtasksboard/lists"}