/** * Create a new template * */ function new_template() { if (logged_user()->isGuest()) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $notAllowedMember = ''; if (!ProjectTask::canAdd(logged_user(), active_context(), $notAllowedMember)) { if (str_starts_with($notAllowedMember, '-- req dim --')) { flash_error(lang('must choose at least one member of', str_replace_first('-- req dim --', '', $notAllowedMember, $in))); } else { flash_error(lang('no context permissions to add', lang("tasks"), $notAllowedMember)); } ajx_current("empty"); return; } // if $id = get_id(); $task = ProjectTasks::findById($id); if (!$task instanceof ProjectTask) { $task_data = array('is_template' => true); } else { $task_data = array('milestone_id' => $task->getMilestoneId(), 'title' => $task->getObjectName(), 'assigned_to' => $task->getAssignedToContactId(), 'parent_id' => $task->getParentId(), 'priority' => $task->getPriority(), 'time_estimate' => $task->getTimeEstimate(), 'text' => $task->getText(), 'is_template' => true, 'copyId' => $task->getId()); // array if ($task->getStartDate() instanceof DateTimeValue) { $task_data['start_date'] = $task->getStartDate()->getTimestamp(); } if ($task->getDueDate() instanceof DateTimeValue) { $task_data['due_date'] = $task->getDueDate()->getTimestamp(); } } $task = new ProjectTask(); tpl_assign('task_data', $task_data); tpl_assign('task', $task); $this->setTemplate("add_task"); }
<?php if (isset($milestone) && $milestone instanceof ProjectMilestone) { if (!$milestone->isTrashed()) { if (!$milestone->isCompleted() && $milestone->canEdit(logged_user())) { add_page_action(lang('complete milestone'), $milestone->getCompleteUrl(rawurlencode(get_url('milestone', 'view', array('id' => $milestone->getId())))), 'ico-complete', null, null, true); } // if if ($milestone->isCompleted() && $milestone->canEdit(logged_user())) { add_page_action(lang('open milestone'), $milestone->getOpenUrl(rawurlencode(get_url('milestone', 'view', array('id' => $milestone->getId())))), 'ico-reopen', null, null, true); } if (!$milestone->isCompleted()) { if (ProjectTask::canAdd(logged_user(), $milestone->getProject())) { add_page_action(lang('add task list'), $milestone->getAddTaskUrl(), 'ico-task'); } } // if if ($milestone->canEdit(logged_user())) { add_page_action(lang('edit'), $milestone->getEditUrl(), 'ico-edit', null, null, true); if (!$milestone->isArchived()) { add_page_action(lang('archive'), "javascript:if(confirm(lang('confirm archive object'))) og.openLink('" . $milestone->getArchiveUrl() . "');", 'ico-archive-obj'); } else { add_page_action(lang('unarchive'), "javascript:if(confirm(lang('confirm unarchive object'))) og.openLink('" . $milestone->getUnarchiveUrl() . "');", 'ico-unarchive-obj'); } } // if } if ($milestone->canDelete(logged_user())) { if ($milestone->isTemplate()) { add_page_action(lang('delete'), "javascript:if(confirm(lang('confirm delete milestone'))) og.openLink('" . $milestone->getDeletePermanentlyUrl() . "');", 'ico-delete', null, null, true); } else {
$not_overdue_limit = 5; $overdue_limit = 20; $show_more = false; // Not due tasks $not_due_tasks = ProjectTasks::getUpcomingWithoutDate($not_overdue_limit + 1); if (count($not_due_tasks) > $not_overdue_limit) { $show_more = true; array_pop($not_due_tasks); } // Due Tasks $overdue_upcoming_objects = ProjectTasks::getOverdueAndUpcomingObjects($overdue_limit + 1); // FIXME: performance Killer if (count($overdue_upcoming_objects) > $overdue_limit) { $show_more = true; array_pop($overdue_upcoming_objects); } $overdue_upcoming_objects = array_merge($not_due_tasks, $overdue_upcoming_objects); $users = array(); // Render only when the context isnt 'all' and you have perms $render_add = active_context_members(false) && ProjectTask::canAdd(logged_user(), active_context()); if ($render_add) { $users[] = array(0, lang('dont assign')); foreach (allowed_users_to_assign() as $company) { foreach ($company['users'] as $user) { $name = logged_user()->getId() == $user['id'] ? lang('me') : $user['name']; $users[] = array($user['id'], $name); } } } include_once 'template.php';
/** * Create a new template * */ function new_template() { if (logged_user()->isGuest()) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $project = active_or_personal_project(); if (!ProjectTask::canAdd(logged_user(), $project)) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } // if $id = get_id(); $task = ProjectTasks::findById($id); if (!$task instanceof ProjectTask) { $task_data = array('is_template' => true); } else { $task_data = array('milestone_id' => $task->getMilestoneId(), 'title' => $task->getTitle(), 'assigned_to' => $task->getAssignedToCompanyId() . ":" . $task->getAssignedToUserId(), 'parent_id' => $task->getParentId(), 'priority' => $task->getPriority(), 'tags' => implode(",", $task->getTagNames()), 'project_id' => $task->getProjectId(), 'time_estimate' => $task->getTimeEstimate(), 'text' => $task->getText(), 'is_template' => true, 'copyId' => $task->getId()); // array if ($task->getStartDate() instanceof DateTimeValue) { $task_data['start_date'] = $task->getStartDate()->getTimestamp(); } if ($task->getDueDate() instanceof DateTimeValue) { $task_data['due_date'] = $task->getDueDate()->getTimestamp(); } } $task = new ProjectTask(); tpl_assign('task_data', $task_data); tpl_assign('task', $task); $this->setTemplate("add_task"); }
/** * Copies tasks from milestoneFrom to milestoneTo. * * @param ProjectMilestone $milestoneFrom * @param ProjectMilestone $milestoneTo */ function copyTasks(ProjectMilestone $milestoneFrom, ProjectMilestone $milestoneTo, $as_template = false) { foreach ($milestoneFrom->getTasks() as $sub) { if ($sub->getParentId() != 0) { continue; } $new = ProjectTasks::createTaskCopy($sub); $new->setIsTemplate($as_template); $new->setMilestoneId($milestoneTo->getId()); if ($sub->getIsTemplate()) { $new->setFromTemplateId($sub->getId()); } $new->save(); foreach ($sub->getWorkspaces() as $workspace) { if (ProjectTask::canAdd(logged_user(), $workspace)) { $new->addToWorkspace($workspace); } } if (!$as_template && active_project() instanceof Project && ProjectTask::canAdd(logged_user(), active_project())) { $new->removeFromAllWorkspaces(); $new->addToWorkspace(active_project()); } $new->copyCustomPropertiesFrom($sub); $new->copyLinkedObjectsFrom($sub); $new->setTagsFromCSV(implode(",", $sub->getTagNames())); ProjectTasks::copySubTasks($sub, $new, $as_template); } }
/** * Copies subtasks from taskFrom to taskTo. * * @param ProjectTask $taskFrom * @param ProjectTask $taskTo */ function copySubTasks(ProjectTask $taskFrom, ProjectTask $taskTo, $as_template = false) { foreach ($taskFrom->getSubTasks() as $sub) { $new = ProjectTasks::createTaskCopy($sub); $new->setIsTemplate($as_template); $new->setParentId($taskTo->getId()); $new->setMilestoneId($taskTo->getMilestoneId()); $new->setOrder(ProjectTasks::maxOrder($new->getParentId(), $new->getMilestoneId())); if ($sub->getIsTemplate()) { $new->setFromTemplateId($sub->getId()); } $new->save(); foreach ($taskTo->getWorkspaces() as $workspace) { if (ProjectTask::canAdd(logged_user(), $workspace)) { $new->addToWorkspace($workspace); } } $new->copyCustomPropertiesFrom($sub); $new->copyLinkedObjectsFrom($sub); $new->setTagsFromCSV(implode(",", $sub->getTagNames())); ProjectTasks::copySubTasks($sub, $new, $as_template); } }
<?php require_javascript("og/modules/addTaskForm.js"); if (isset($task_list) && $task_list instanceof ProjectTask) { if (!$task_list->isTrashed()) { if (!$task_list->isCompleted() && $task_list->canEdit(logged_user())) { add_page_action(lang('do complete'), $task_list->getCompleteUrl(rawurlencode(get_url('task', 'view_task', array('id' => $task_list->getId())))), 'ico-complete', null, null, true); } // if if ($task_list->isCompleted() && $task_list->canEdit(logged_user())) { add_page_action(lang('open task'), $task_list->getOpenUrl(rawurlencode(get_url('task', 'view_task', array('id' => $task_list->getId())))), 'ico-reopen', null, null, true); } // if if (active_project() && ProjectTask::canAdd(logged_user(), active_project())) { add_page_action(lang('add task'), get_url('task', 'add_task'), 'ico-task'); } // if if ($task_list->canEdit(logged_user())) { add_page_action(lang('edit'), $task_list->getEditListUrl(), 'ico-edit', null, null, true); if (!$task_list->isArchived()) { add_page_action(lang('archive'), "javascript:if(confirm(lang('confirm archive object'))) og.openLink('" . $task_list->getArchiveUrl() . "');", 'ico-archive-obj'); } else { add_page_action(lang('unarchive'), "javascript:if(confirm(lang('confirm unarchive object'))) og.openLink('" . $task_list->getUnarchiveUrl() . "');", 'ico-unarchive-obj'); } } // if } if ($task_list->canDelete(logged_user())) { if ($task_list->isTemplate()) { add_page_action(lang('delete'), "javascript:if(confirm(lang('confirm delete task'))) og.openLink('" . $task_list->getDeletePermanentlyUrl() . "');", 'ico-delete', null, null, true); } else {