diff options
Diffstat (limited to 'mod/tasks/views/default/object/task.php')
-rw-r--r-- | mod/tasks/views/default/object/task.php | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/mod/tasks/views/default/object/task.php b/mod/tasks/views/default/object/task.php new file mode 100644 index 000000000..d8ed01233 --- /dev/null +++ b/mod/tasks/views/default/object/task.php @@ -0,0 +1,133 @@ +<?php +/** + * View for task object + * + * @package ElggTasks + * + * @uses $vars['entity'] The task object + * @uses $vars['full_view'] Whether to display the full view + */ + +elgg_load_library('elgg:tasks'); + +$full = elgg_extract('full_view', $vars, FALSE); +$task = elgg_extract('entity', $vars, FALSE); + +if (!$task) { + return TRUE; +} + +$options = array('metadata_name' => 'list_guid', 'metadata_value' => $task->guid, 'type' => 'object', 'subtype' => 'task'); +$has_children = elgg_get_entities_from_metadata($options); +if ($has_children) { + echo elgg_view('object/tasklist_top', $vars); + return; +} + + +$icon = elgg_view_entity_icon($task, 'tiny'); + +$status = $task->status; + +if(!in_array($status, array('new', 'assigned', 'unassigned', 'active', 'done', 'closed', 'reopened'))){ + $status = 'new'; +} + +$annotation = $task->getAnnotations('task_state_changed', 2, 0, 'desc'); +$more_than_one = count($annotation) > 1; + +if ($annotation) { + $annotation = $annotation[0]; +} else { + $annotation = new stdClass(); + $annotation->owner_guid = $task->owner_guid; + $annotation->time_created = $task->time_created; +} + +if (in_array($status, array('assigned', 'active', 'done')) && $more_than_one) { + $owner_link = elgg_view('tasks/participant_count', array('entity' => $task)); +} else { + $owner = get_entity($annotation->owner_guid); + $owner_link = elgg_view('output/url', array( + 'href' => $owner->getURL(), + 'text' => $owner->name, + )); +} +$date = elgg_view_friendly_time($annotation->time_created); +$strapline = elgg_echo("tasks:strapline:$status", array($date, $owner_link)); +$tags = elgg_view('output/tags', array('tags' => $task->tags)); + +$comments_count = $task->countComments(); +//only display if there are commments +if ($comments_count != 0) { + $text = elgg_echo("comments") . " ($comments_count)"; + $comments_link = elgg_view('output/url', array( + 'href' => $task->getURL() . '#task-comments', + 'text' => $text, + )); +} else { + $comments_link = ''; +} + + +$metadata = elgg_view_menu('entity', array( + 'entity' => $task, + 'handler' => 'tasks', + 'sort_by' => 'priority', + 'class' => 'elgg-menu-hz', +)); + +$subtitle = "$strapline $categories $comments_link"; + +// do not show the metadata and controls in widget view +if (elgg_in_context('widgets')) { + $metadata = ''; +} + +if ($full) { + $body = elgg_view('output/longtext', array('value' => $task->description)); + $new_task_form = elgg_view_form('tasks/inline', array( + 'id' => 'tasks-inline-form', + 'class' => 'hidden', + 'action' => 'action/tasks/edit', + ), array( + 'list' => $task, + )); + + $body .= elgg_view('tasks/info/extend', $vars); + + $body .= $new_task_form; + + $params = array( + 'entity' => $page, + 'title' => false, + 'metadata' => $metadata, + 'subtitle' => $subtitle, + 'tags' => $tags, + ); + $params = $params + $vars; + $list_body = elgg_view('object/elements/summary', $params); + + $info = elgg_view_image_block($icon, $list_body); + + echo <<<HTML +$info +$body +HTML; + +} else { + // brief view + + $excerpt = elgg_get_excerpt($task->description); + + $params = array( + 'entity' => $task, + 'metadata' => $metadata, + 'subtitle' => $subtitle, + 'tags' => false, + ); + $params = $params + $vars; + $list_body = elgg_view('object/elements/summary', $params); + + echo elgg_view_image_block($icon, $list_body); +} |