function task_list_move_link() { global $the_task_list; // This check is probably insufficient, since it "deletes" the task listfrom this project, and adds it to another project, so those checks might be better. if (ProjectTaskList::canAdd(logged_user(), active_project())) { action_link($the_task_list->getMoveUrl(), '/icons/move.png', 'move'); } }
/** * Add new task list * * @access public * @param void * @return null */ function add_list() { if (!ProjectTaskList::canAdd(logged_user(), active_project())) { flash_error(lang('no access permissions')); $this->redirectToReferer(get_url('task')); } // if $task_list = new ProjectTaskList(); $task_list_data = array_var($_POST, 'task_list'); if (!is_array($task_list_data)) { $task_list_data = array('milestone_id' => array_var($_GET, 'milestone_id')); // array } // if tpl_assign('task_list_data', $task_list_data); tpl_assign('task_list', $task_list); if (is_array(array_var($_POST, 'task_list'))) { $task_list->setFromAttributes($task_list_data); $task_list->setProjectId(active_project()->getId()); if (!logged_user()->isMemberOfOwnerCompany()) { $task_list->setIsPrivate(false); } $tasks = array(); for ($i = 0; $i < 6; $i++) { if (isset($task_list_data["task{$i}"]) && is_array($task_list_data["task{$i}"]) && trim(array_var($task_list_data["task{$i}"], 'text')) != '') { $assigned_to = explode(':', array_var($task_list_data["task{$i}"], 'assigned_to', '')); $tasks[] = array('text' => array_var($task_list_data["task{$i}"], 'text'), 'assigned_to_company_id' => array_var($assigned_to, 0, 0), 'assigned_to_user_id' => array_var($assigned_to, 1, 0)); // array } // if } // for try { DB::beginWork(); $task_list->save(); $task_list->setTagsFromCSV(array_var($task_list_data, 'tags')); foreach ($tasks as $task_data) { $task = new ProjectTask(); $task->setFromAttributes($task_data); $task_list->attachTask($task); $task->save(); } // foreach ApplicationLogs::createLog($task_list, active_project(), ApplicationLogs::ACTION_ADD); DB::commit(); flash_success(lang('success add task list', $task_list->getName())); $this->redirectToUrl($task_list->getViewUrl()); } catch (Exception $e) { DB::rollback(); tpl_assign('error', $e); } // try } // if }
<?php set_page_title($task_list->getName()); project_tabbed_navigation(PROJECT_TAB_TASKS); project_crumbs(array(array(lang('tasks'), get_url('task')), array($task_list->getName()))); if (ProjectTaskList::canAdd(logged_user(), active_project())) { add_page_action(lang('add task list'), get_url('task', 'add_list')); } // if ?> <script type="text/javascript" src="<?php echo get_javascript_url('modules/addTaskForm.js'); ?> "></script> <?php $this->assign('on_list_page', true); $this->includeTemplate(get_template_path('task/task_list')); ?> <script type="text/javascript"> App.modules.addTaskForm.hideAllAddTaskForms(); </script>
function fromPickle($pickle) { try { $arr = unserialize($pickle); $tasks = $arr['tasks']; $task_list = new ProjectTaskList(); foreach ($tasks as $task) { $text = $task['text']; $task_list->addTask($text); } return $task_list; } catch (Exception $e) { return null; } }
/** * Copy task list then redirect to edit * * @access public * @param void * @return null */ function copy_list() { $task_list = ProjectTaskLists::findById(get_id()); if (!$task_list instanceof ProjectTaskList) { flash_error(lang('task list dnx')); $this->redirectTo('task', 'index'); } // if if (!$task_list->canAdd(logged_user(), active_project())) { flash_error(lang('no access permissions')); $this->redirectTo('task', 'index'); } // if try { DB::beginWork(); $source_task_list = $task_list; $task_list = new ProjectTaskList(); $task_list->setName($source_task_list->getName() . ' (' . lang('copy') . ')'); $task_list->setPriority($source_task_list->getPriority()); $task_list->setDescription($source_task_list->getDescription()); $task_list->setMilestoneId($source_task_list->getMilestoneId()); $task_list->setDueDate($source_task_list->getDueDate()); $task_list->setIsPrivate($source_task_list->getIsPrivate()); $task_list->setOrder($source_task_list->getOrder()); $task_list->setProjectId($source_task_list->getProjectId()); $task_list->save(); $task_count = 0; $source_tasks = $source_task_list->getTasks(); if (is_array($source_tasks)) { foreach ($source_tasks as $source_task) { $task = new ProjectTask(); $task->setText($source_task->getText()); $task->setAssignedToUserId($source_task->getAssignedToUserId()); $task->setAssignedToCompanyId($source_task->getAssignedToCompanyId()); $task->setOrder($source_task->getOrder()); $task->setDueDate($source_task->getDueDate()); $task_list->attachTask($task); $task_count++; } } ApplicationLogs::createLog($task_list, active_project(), ApplicationLogs::ACTION_ADD); DB::commit(); flash_success(lang('success copy task list', $source_task_list->getName(), $task_list->getName(), $task_count)); //$this->redirectToUrl($task_list->getEditUrl()); $this->redirectTo('task', 'index'); } catch (Exception $e) { DB::rollback(); tpl_assign('error', $e); } // try }
/** * Detach task from this list * * @param ProjectTask $task * @param ProjectTaskList $attach_to If you wish you can detach and attach task to * other list with one save query * @return null */ function detachTask(ProjectTask $task, $attach_to = null) { if ($task->getTaskListId() != $this->getId()) { return; } if ($attach_to instanceof ProjectTaskList) { $attach_to->attachTask($task); } else { $task->setTaskListId(0); $task->save(); } // if $close = true; $open_tasks = $this->getOpenTasks(); if (is_array($open_tasks)) { foreach ($open_tasks as $open_task) { if ($open_task->getId() != $task->getId()) { $close = false; } } // if } // if if ($close) { $this->complete(DateTimeValueLib::now(), logged_user()); } }
<?php set_page_title($milestone->getName()); project_tabbed_navigation(PROJECT_TAB_MILESTONES); project_crumbs(array(array(lang('milestones'), get_url('milestone', 'index')), array($milestone->getName()))); if (!$milestone->isCompleted()) { if (ProjectMessage::canAdd(logged_user(), $milestone->getProject())) { add_page_action(lang('add message'), $milestone->getAddMessageUrl()); } // if if (ProjectTaskList::canAdd(logged_user(), $milestone->getProject())) { add_page_action(lang('add task list'), $milestone->getAddTaskListUrl()); } //if } // if ?> <div id="milestones"> <?php $this->includeTemplate(get_template_path('view_milestone', 'milestone')); ?> </div>
/** * Return all times that are assigned to the task_list * * @param ProjectTaskList $task * @return array */ static function getTimeByTaskList(ProjectTaskList $task) { return self::findAll(array('conditions' => array('`task_list_id` = ? ', $task->getId()), 'order' => '`done_date`')); // findAll }
/** *Make Mn *@return string */ function MakeMindMap(){ // header xml data freemind $content = "<map version=\"0.9.0\">\n"; $content .= "<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->\n"; $mytime = time(); // is logged ? if (!logged_user()->isProjectUser(active_project())) { echo $content; echo "<node CREATED=\"$mytime\" ID=\"Freemind_Link_558888646\" MODIFIED=\"$mytime\" STYLE=\"bubble\" TEXT=\"Disconnected\">\n"; echo "</node>\n"; echo "</map>\n"; die; } // if // is user can view this project ?? if (!ProjectFile::canView(logged_user(), active_project())) { echo $content; echo "<node CREATED=\"$mytime\" ID=\"Freemind_Link_558888646\" MODIFIED=\"$mytime\" STYLE=\"bubble\" TEXT=\"Not Allowed\">\n"; echo "</node>\n"; echo "</map>\n"; die; } //if /* * xml data construction freemind for project */ $project = active_project(); $project_name = $project->getName(); $this->epure($project_name); //Project title $url = externalUrl(get_url('task','index')); $content .= "<node CREATED=\"$mytime\" LINK=\"$url\" MODIFIED=\"$mytime\" STYLE=\"bubble\" TEXT=\"$project_name\">\n"; //milestones $milestones = $project->getMilestones(); $mymilestone = array(); if (is_array($milestones)) { foreach($milestones as $milestone){ $url = externalUrl(get_url('milestone','view',array('id' => $milestone->getId()))); $content .= "<node CREATED=\"$mytime\" LINK=\"$url\" POSITION=\"right\" MODIFIED=\"$mytime\" TEXT=\" [" . $milestone->getName() . ' ' . Localization::instance()->formatDate($milestone->getDueDate()) . "]\">\n"; $content .= "<font NAME=\"SansSerif\" BOLD=\"true\" SIZE=\"12\"/>"; $content .= "<icon BUILTIN=\"messagebox_warning\"/>\n"; $content .= "<icon BUILTIN=\"messagebox_warning\"/>\n"; $content .= "</node>\n"; } } $task_lists = $project->getTaskLists(); if (is_array($task_lists)) { //Tasks lists $positions = array('right','left'); $actualpos = 0; foreach ($task_lists as $task_list) { /* * security access */ //security access User can view this task_list ? if (!ProjectTaskList::canView(logged_user(), $task_list->getId())) continue; // task list name $task_list_name=$task_list->getName(); //Complete or not complete $progress = $this->progress($task_list); $icon = null; $tasklistComplete = false; if ($progress[0] == '100'){ $icon .= "<icon BUILTIN=\"button_ok\"/>\n"; $tasklistComplete = true; } $kt_tl_var = 'tl:' . $task_list_name; $this->epure($kt_tl_var); if (strlen($task_list_name) > 40) $task_list_name = substr($task_list_name,0,40) . "..."; $position = $positions[$actualpos]; $url = externalUrl(get_url('task','view_list',array('id' => $task_list->getId()))); $content .= "<node CREATED=\"$mytime\" LINK=\"$url\" MODIFIED=\"$mytime\" POSITION=\"$position\" TEXT=\"$task_list_name\">\n"; $content .= "$icon"; if ($actualpos == 0){ $actualpos =1; }else{ $actualpos =0; } //if //tasks $tasks = $task_list->getTasks(); if (is_array($tasks)) { foreach($tasks as $task) { /* * security access */ //security access User can view this task ? if (!ProjectTask::canView(logged_user(), $task->getId())) continue; // icon freeming ok | cancel $icon = null; if (!$tasklistComplete){ if ($task->isCompleted()) { //complete : icon ok $icon .= "<icon BUILTIN=\"button_ok\"/>\n"; $dateclose = " []"; }else{ //incomplete : icon cancel $icon .= "<icon BUILTIN=\"button_cancel\"/>\n"; $dateclose = " []"; } //if } //if //task name $task_text = $task->getText(); $this->epure($task_text); if (strlen($task_text) > 40) $task_text = substr($task_text,0,40) . "..."; $url = externalUrl(get_url('task','view_task',array('id' => $task->getId()))); $content .= "<node CREATED=\"$mytime\" LINK=\"$url\" MODIFIED=\"$mytime\" TEXT=\"" . $task_text . "\">\n"; $content .= $icon; $content .= "</node>\n"; } } $content .= "</node>\n"; } // if } // if //footer xml data freemind $content .= "</node>\n"; $content .= "</map>"; //send data $type = "x-freemind/mm"; $name = "projectpier.mm"; $size = strlen($content); header("Content-Type: $type"); header("Content-Disposition: attachment; filename=\"$name\""); header("Content-Length: " . (string) $size); echo $content; die; //end process do not send other informations } //MakeMm
/** * Add new task list from template * * @access public * @param void * @return null */ function from_template() { if (!ProjectTaskList::canAdd(logged_user(), active_project())) { flash_error(lang('no access permissions')); $this->redirectToReferer(get_url('task')); } // if $templates = ProjectTaskListTemplates::findAll(); tpl_assign('templates', $templates); if (isset($_POST['name']) && isset($_POST['from_id'])) { $template = ProjectTaskListTemplates::findById(sanitize($_POST['from_id'])); if ($template == null) { flash_error(lang('invalid template id')); $this->redirectToReferer(get_url('project')); } $task_list = ProjectTaskListTemplates::fromPickle($template->getData()); if ($task_list == null) { flash_error(lang('invalid template id')); $this->redirectToReferer(get_url('project')); } $task_list->setProjectId(active_project()->getId()); $task_list->setName(sanitize($_POST['name'])); try { DB::beginWork(); $task_list->save(); ApplicationLogs::createLog($task_list, active_project(), ApplicationLogs::ACTION_ADD); DB::commit(); $this->redirectToUrl($task_list->getViewUrl()); } catch (Exception $e) { DB::rollback(); tpl_assign('error', $e); } } // if }
/** * Copy project * * @param void * @return null */ function copy() { trace(__FILE__, "copy():begin"); if (!Project::canAdd(logged_user())) { flash_error(lang('no access permissions')); $this->redirectToReferer(get_url('dashboard')); } // if $this->setTemplate('copy_project'); $this->setLayout('administration'); $project_data = array_var($_POST, 'project'); tpl_assign('project_data', $project_data); // Submitted... if (is_array($project_data)) { $source = Projects::findById($project_data['source']); if (!$source instanceof Project) { flash_error(lang('project dnx')); $this->redirectTo('administration', 'projects'); } // if try { $shift_dates = isset($project_data['shift_dates']) ? $project_data['shift_dates'] == 'checked' : false; $copy_details = isset($project_data['copy_details']) ? $project_data['copy_details'] == 'checked' : false; $copy_tasks = isset($project_data['copy_tasks']) ? $project_data['copy_tasks'] == 'checked' : false; $copy_milestones = isset($project_data['copy_milestones']) ? $project_data['copy_milestones'] == 'checked' : false; $copy_messages = isset($project_data['copy_messages']) ? $project_data['copy_messages'] == 'checked' : false; $copy_links = isset($project_data['copy_links']) ? $project_data['copy_links'] == 'checked' : false; $copy_files = isset($project_data['copy_files']) ? $project_data['copy_files'] == 'checked' : false; $copy_users = isset($project_data['copy_users']) ? $project_data['copy_users'] == 'checked' : false; $copy_pages = isset($project_data['copy_pages']) ? $project_data['copy_pages'] == 'checked' : false; DB::beginWork(); $project = new Project(); $new_name = lang('projects copy new name', $source->getName()); $new_name .= date(' z H:i:s'); $project->setName($new_name); if ($copy_details) { $project->setDescription($source->getDescription()); $project->setPriority($source->getPriority()); $project->setShowDescriptionInOverview($source->getShowDescriptionInOverview()); } $project->save(); $project_id = $project->getId(); $add_seconds = 0; if (isset($project_data['add_days'])) { $add_days = 0 + trim($project_data['add_days']); $add_seconds = $add_days * 24 * 60 * 60; } $source_created_on = $source->getCreatedOn(); //var_dump($source_created_on); $milestone_map = array(0 => 0); // project milestones if ($copy_milestones) { $source_milestones = $source->getAllMilestones(); if (is_array($source_milestones)) { foreach ($source_milestones as $source_milestone) { $milestone = new ProjectMilestone(); //$milestone->copy($source_milestone); $milestone->setName($source_milestone->getName()); $milestone->setDescription($source_milestone->getDescription()); if ($shift_dates) { trace(__FILE__, "copy():shift dates"); $milestone->setDueDate(DateTimeValueLib::now()); $seconds = $source_milestone->getDueDate()->difference($source_created_on); $milestone->getDueDate()->advance($seconds); } else { $milestone->setDueDate($source_milestone->getDueDate()); } $milestone->getDueDate()->advance($add_seconds); $milestone->setIsPrivate($source_milestone->getIsPrivate()); $milestone->setAssignedToUserId($source_milestone->getAssignedToUserId()); $milestone->setAssignedToCompanyId($source_milestone->getAssignedToCompanyId()); $milestone->setProjectId($project_id); $milestone->save(); $milestone_map[$source_milestone->getId()] = $milestone->getId(); } // foreach } // if } // if // project tasks if ($copy_tasks) { $source_task_lists = $source->getAllTaskLists(); if (is_array($source_task_lists)) { foreach ($source_task_lists as $source_task_list) { $task_list = new ProjectTaskList(); //$task_list->copy($source_milestone); $task_list->setName($source_task_list->getName()); $task_list->setPriority($source_task_list->getPriority()); $task_list->setDescription($source_task_list->getDescription()); if ($copy_milestones) { $task_list->setMilestoneId($milestone_map[$source_task_list->getMilestoneId()]); } $task_list->setDueDate($source_task_list->getDueDate()); if ($task_list->getDueDate() instanceof DateTimeValue) { if ($shift_dates) { trace(__FILE__, "copy():task list shift dates"); $task_list->setDueDate(DateTimeValueLib::now()); $seconds = $source_task_list->getDueDate()->difference($source_created_on); $task_list->getDueDate()->advance($seconds); } $task_list->getDueDate()->advance($add_seconds); } $task_list->setIsPrivate($source_task_list->getIsPrivate()); $task_list->setOrder($source_task_list->getOrder()); $task_list->setProjectId($project_id); $task_list->save(); $source_tasks = $source_task_list->getTasks(); if (is_array($source_tasks)) { foreach ($source_tasks as $source_task) { $task = new ProjectTask(); $task->setOrder($source_task->getOrder()); $task->setDueDate($source_task->getDueDate()); if ($task->getDueDate() instanceof DateTimeValue) { if ($shift_dates) { trace(__FILE__, "copy():task shift dates"); $task->setDueDate(DateTimeValueLib::now()); $seconds = $source_task->getDueDate()->difference($source_created_on); $task->getDueDate()->advance($seconds); } $task->getDueDate()->advance($add_seconds); } $task->setText($source_task->getText()); $task->getAssignedToUserId($source_task->getAssignedToUserId()); $task->getAssignedToCompanyId($source_task->getAssignedToCompanyId()); $task_list->attachTask($task); } } } // foreach } // if } // if // project messages if ($copy_messages) { $source_messages = $source->getAllMessages(); if (is_array($source_messages)) { foreach ($source_messages as $source_message) { $message = new ProjectMessage(); //$message->copy($source_message); $message->setTitle($source_message->getTitle()); $message->setText($source_message->getText()); $message->setAdditionalText($source_message->getAdditionalText()); if ($copy_milestones) { $message->setMilestoneId($milestone_map[$source_message->getMilestoneId()]); } $message->setIsImportant($source_message->getIsImportant()); $message->setIsPrivate($source_message->getIsPrivate()); $message->setCommentsEnabled($source_message->getCommentsEnabled()); $message->setAnonymousCommentsEnabled($source_message->getAnonymousCommentsEnabled()); $message->setProjectId($project_id); $message->save(); } // foreach } // if } // if // project links if ($copy_links) { $source_links = ProjectLinks::getAllProjectLinks($source); if (is_array($source_links)) { foreach ($source_links as $source_link) { $link = new ProjectLink(); //$folder->copy($source_link); $link->setTitle($source_link->getTitle()); $link->setUrl($source_link->getUrl()); $link->setProjectId($project_id); $link->save(); } // foreach } // if } // if // project folders & files if ($copy_files) { $folder_map = array(0 => 0); $source_folders = $source->getFolders(); if (is_array($source_folders)) { foreach ($source_folders as $source_folder) { $folder = new ProjectFolder(); //$folder->copy($source_folder); $folder->setName($source_folder->getName()); $folder->setProjectId($project_id); $folder->save(); $folder_map[$source_folder->getId()] = $folder->getId(); } // foreach } // if $source_files = ProjectFiles::getAllFilesByProject($source); if (is_array($source_files)) { foreach ($source_files as $source_file) { $file = new ProjectFile(); $file->setProjectId($project_id); $file->setFolderId($folder_map[$source_file->getFolderId()]); $file->setFileName($source_file->getFileName()); $file->setDescription($source_file->getDescription()); $file->setIsPrivate($source_file->getIsPrivate()); $file->setIsImportant($source_file->getIsImportant()); $file->setIsLocked($source_file->getIsLocked()); $file->setIsVisible($source_file->getIsVisible()); $file->setExpirationTime($source_file->getExpirationTime()); $file->setCommentsEnabled($source_file->getCommentsEnabled()); $file->setAnonymousCommentsEnabled($source_file->getAnonymousCommentsEnabled()); $file->save(); $source_revision = $source_file->getLastRevision(); if ($source_revision instanceof ProjectFileRevision) { $revision = new ProjectFileRevision(); $revision->setFileId($file->getId()); $revision->setRevisionNumber($source_revision->getRevisionNumber()); $revision->setRepositoryId($source_revision->getRepositoryId()); $revision->setFilesize($source_revision->getFilesize()); $revision->setFilename($source_revision->getFileName()); $revision->setTypeString($source_revision->getTypeString()); $revision->setThumbFilename($source_revision->getThumbFilename()); $revision->setFileTypeId($source_revision->getFileTypeId()); $revision->setComment($source_revision->getComment()); $revision->save(); } } // foreach } // if } // if if ($copy_pages) { $source_pages = Wiki::getAllProjectPages($source); if (is_array($source_pages)) { foreach ($source_pages as $source_page) { $page = new WikiPage(); $page->setProjectId($project_id); $page->setProjectIndex($source_page->getProjectIndex()); $page->setProjectSidebar($source_page->getProjectSidebar()); if (plugin_active('tags')) { //$page->setTags($source_page->getTagNames()); } //Make a new revision of this page $revision = $page->makeRevision(); $source_revision = $source_page->getLatestRevision(); //Set attributes $revision->setName($source_revision->getName()); $revision->setContent($source_revision->getContent()); $revision->setLogMessage($source_revision->getLogMessage()); //Save the page $page->save(); } // foreach } // if } // if if ($copy_users) { $source_companies = ProjectCompanies::instance()->getCompaniesByProject($source); if (is_array($source_companies)) { foreach ($source_companies as $source_company) { $project_company = new ProjectCompany(); $project_company->setCompanyId($source_company->getId()); $project_company->setProjectId($project_id); $project_company->save(); } // foreach } $source_users = ProjectUsers::instance()->getUsersByProject($source); if (is_array($source_users)) { foreach ($source_users as $source_user) { $project_user = new ProjectUser(); $project_user->setUserId($source_user->getId()); $project_user->setProjectId($project_id); $project_user->save(); } // foreach } } /* $permissions = array_keys(PermissionManager::getPermissionsText()); $auto_assign_users = owner_company()->getAutoAssignUsers(); // We are getting the list of auto assign users. If current user is not in the list // add it. He's creating the project after all... if (is_array($auto_assign_users)) { $auto_assign_logged_user = false; foreach ($auto_assign_users as $user) { if ($user->getId() == logged_user()->getId()) { $auto_assign_logged_user = true; } } // if if (!$auto_assign_logged_user) { $auto_assign_users[] = logged_user(); } } else { $auto_assign_users[] = logged_user(); } // if foreach ($auto_assign_users as $user) { $project_user = new ProjectUser(); $project_user->setProjectId($project->getId()); $project_user->setUserId($user->getId()); if (is_array($permissions)) { foreach ($permissions as $permission) { $user = Users::findById($project_user->getUserId()); $user->setProjectPermission($project,$permission,true); } } // if $project_user->save(); } // foreach */ ApplicationLogs::createLog($project, null, ApplicationLogs::ACTION_ADD, false, true); DB::commit(); flash_success(lang('success copy project', $source->getName(), $project->getName())); $this->redirectToUrl($project->getPermissionsUrl()); } catch (Exception $e) { echo $e->getMessage(); tpl_assign('error', $e); DB::rollback(); } // try } // if (submitted) }
/** * Detach subtask from this task * * @param ProjectTask $task * @param ProjectTaskList $attach_to If you wish you can detach and attach task to * other list with one save query * @return null */ function detachTask(ProjectTask $task, $attach_to = null) { if($task->getParentId() <> $this->getId()) return; if($attach_to instanceof ProjectTask) { $attach_to->attachTask($task); } else { $task->setParentId(0); $task->save(); } } // detachTask