예제 #1
0
 private function createRoadmaps(Roadmap $roadmap)
 {
     $places = $roadmap->getRemainingPlaces();
     $from = $roadmap->getLastPlace();
     $selections = [];
     foreach ($places as $selection) {
         $selections[] = ["distance" => Distance::between($from->point, $selection->point), "place" => $selection];
     }
     usort($selections, function ($a, $b) {
         return $a["distance"] <=> $b["distance"];
     });
     $selections = $this->selection->select($selections);
     $roadmaps = [];
     foreach ($selections as $i => $selection) {
         $currentRoadmap = $roadmap;
         if ($i != count($selections) - 1) {
             $currentRoadmap = clone $roadmap;
         }
         $currentRoadmap->addPlace($selection["place"]);
         $roadmaps[] = $currentRoadmap;
     }
     return $roadmaps;
 }
예제 #2
0
파일: modul.php 프로젝트: laiello/avecms
    $lang_file = BASE_DIR . '/modules/roadmap/lang/' . $_SESSION['user_language'] . '.txt';
    $AVE_Template->config_load($lang_file);
    switch ($_REQUEST['action']) {
        case 'show_p':
        default:
            $roadmap->roadmapProjectShow($tpl_dir);
            break;
        case 'show_t':
            $roadmap->roadmapTaskShow($tpl_dir, $_REQUEST['pid'], $_REQUEST['closed']);
            break;
    }
    define('MODULE_SITE', 'Карта проектов');
}
if (defined('ACP') && !empty($_REQUEST['moduleaction'])) {
    require_once BASE_DIR . '/modules/roadmap/class.roadmap.php';
    $roadmap = new Roadmap();
    $tpl_dir = BASE_DIR . '/modules/roadmap/templates/';
    $lang_file = BASE_DIR . '/modules/roadmap/lang/' . $_SESSION['user_language'] . '.txt';
    $AVE_Template->config_load($lang_file);
    switch ($_REQUEST['moduleaction']) {
        case '1':
            $roadmap->roadmapProjectList($tpl_dir);
            break;
        case 'edit_project':
            $roadmap->roadmapProjectEdit($tpl_dir, $_REQUEST['id']);
            break;
        case 'new_project':
            $roadmap->roadmapProjectNew($tpl_dir);
            break;
        case 'del_project':
            $roadmap->roadmapProjectDelete($_REQUEST['id']);
예제 #3
0
 public function executeCreate(sfWebRequest $request)
 {
     $this->forward404Unless($request->isXmlHttpRequest());
     $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
     $to_step = $request->getParameter('to_step', 0);
     if ($request->getParameter('roadmap_id')) {
         $roadmap = RoadmapTable::getInstance()->find($request->getParameter('roadmap_id'));
         $this->forward404Unless(is_object($roadmap));
     } else {
         $roadmap = new Roadmap();
     }
     if ($to_step == 3) {
         // Finishing (from 2)
         $roadmap_decisions = json_decode($request->getParameter('roadmap_decisions', '{}'));
         foreach ($roadmap_decisions as $roadmap_decision) {
             if (DecisionTable::getInstance()->getDecisionForUser($this->getUser()->getGuardUser(), $roadmap_decision)) {
                 $roadmap->addDecision($roadmap_decision);
             }
         }
         $roadmap->RoadmapDecision->save();
         /** @var sfWebResponse $response */
         $response = $this->getResponse();
         $response->setStatusCode(200);
         $response->setContentType('text/json');
         return $this->renderText(json_encode(array('status' => 'success')));
     } elseif ($to_step == 2) {
         // From 1 to 2
         $form = new RoadmapCreateFirstStepForm($roadmap);
         $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
         if ($form->isValid()) {
             $form->save();
             $decisions = DecisionTable::getInstance()->getForUser($this->getUser()->getGuardUser(), true);
             /** @var sfWebResponse $response */
             $response = $this->getResponse();
             $response->setStatusCode(200, 'success');
             $response->setContentType('text/json');
             return $this->renderText(json_encode(array('status' => 'success', 'roadmap' => $roadmap->getRowData(), 'folder' => $roadmap->getFolder()->getRowData(), 'html' => $this->getPartial('form_new_2', array('roadmap' => $roadmap, 'decisions' => $decisions)))));
         } else {
             $response = $this->getResponse();
             $response->setStatusCode(200);
             $response->setContentType('text/json');
             return $this->renderText(json_encode(array('status' => 'validation_error', 'html' => $this->getPartial('form_new', array('form' => $form)))));
         }
     } elseif ($to_step == 1) {
         // From 2 to 1
         $form = new RoadmapCreateFirstStepForm($roadmap);
         return $this->renderPartial('form_new', array('form' => $form));
     }
 }
예제 #4
0
 /**
  * @param PHPPowerPoint_Slide $currentSlide
  * @param Decision $decision
  */
 private function buildSlide(PHPPowerPoint_Slide $currentSlide, Decision $decision)
 {
     // Title
     $shape = $currentSlide->createRichTextShape();
     $shape->setHeight(30);
     $shape->setWidth(600);
     $shape->setOffsetX(180);
     $shape->setOffsetY(50);
     $shape->createText($decision->getName());
     $shape->getAlignment()->setHorizontal(PHPPowerPoint_Style_Alignment::HORIZONTAL_CENTER);
     // Other info
     $shape = $currentSlide->createRichTextShape();
     $shape->setHeight(500);
     $shape->setWidth(920);
     $shape->setOffsetX(20);
     $shape->setOffsetY(80);
     $shape->getAlignment()->setHorizontal(PHPPowerPoint_Style_Alignment::HORIZONTAL_LEFT);
     $textRun = $shape->createTextRun('Start/End date');
     $textRun->getFont()->setBold(true);
     $shape->createTextRun(': ');
     if ($decision->getStartDate()) {
         $shape->createTextRun(DateTime::createFromFormat('Y-m-d H:i:s', $decision->getStartDate())->format('j M Y'));
     } else {
         $textRun = $shape->createTextRun('not set');
         $textRun->getFont()->setItalic(true);
     }
     $shape->createTextRun(' - ');
     if ($decision->getEndDate()) {
         $shape->createTextRun(DateTime::createFromFormat('Y-m-d H:i:s', $decision->getEndDate())->format('j M Y'));
     } else {
         $textRun = $shape->createTextRun('not set');
         $textRun->getFont()->setItalic(true);
     }
     $shape->createBreak();
     $textRun = $shape->createTextRun('Status');
     $textRun->getFont()->setBold(true);
     $shape->createTextRun(': ' . $decision->getStatus());
     $shape->createBreak();
     $tags = array();
     foreach ($decision->getTagDecision() as $tag_decision) {
         $tags[] = $tag_decision->getTag()->getName();
     }
     $textRun = $shape->createTextRun('Tags');
     $textRun->getFont()->setBold(true);
     $shape->createTextRun(': ' . implode(', ', $tags));
     $shape->createBreak();
     $shape->createBreak();
     $shape->createTextRun(strip_tags($decision->getObjective()));
     if ($this->roadmap->getShowReleases() && count($decision->getProjectRelease())) {
         $shape->createBreak();
         $shape->createBreak();
         $textRun = $shape->createTextRun('Releases');
         $textRun->getFont()->setSize(14);
         $shape->createBreak();
         foreach ($decision->getProjectRelease() as $project_release) {
             /** @var ProjectRelease $project_release */
             $textRun = $shape->createTextRun('    ' . $project_release->getName());
             $textRun->getFont()->setSize(12);
             $shape->createBreak();
             if ($this->roadmap->getShowItems()) {
                 foreach ($project_release->getProjectReleaseAlternative() as $project_release_alternative) {
                     /** @var ProjectReleaseAlternative $project_release_alternative */
                     $shape->createTextRun('        ' . $project_release_alternative->getAlternative()->getName());
                     $shape->createBreak();
                 }
             }
         }
     }
     if ($this->roadmap->getShowDependencies()) {
         $alternative_relations_text = '';
         $alternative_relations = array();
         $related_decisions = array();
         foreach ($decision->getAlternative() as $alternative) {
             /** @var $alternative Alternative */
             if (count($alternative->getAlternativeRelation())) {
                 $alternative_relations[$alternative->getId()]['alternative'] = $alternative;
                 foreach ($alternative->getAlternativeRelation() as $relation) {
                     /** @var $relation AlternativeRelation */
                     $related_decisions[$relation->getAlternativeTo()->getDecisionId()] = $relation->getAlternativeTo()->getDecision()->getName();
                     $alternative_relations[$alternative->getId()]['relations'][$relation->getAlternativeTo()->getDecisionId()]['decision'] = $relation->getAlternativeTo()->getDecision();
                     $alternative_relations[$alternative->getId()]['relations'][$relation->getAlternativeTo()->getDecisionId()]['linked_alternatives'][] = $relation->getAlternativeTo();
                 }
             }
         }
         if (count($alternative_relations)) {
             $shape->createBreak();
             $shape->createTextRun('This project has dependency to project(s) ' . implode(', ', $related_decisions))->getFont()->setBold(true);
             foreach ($alternative_relations as $alternative_relation) {
                 foreach ($alternative_relation['relations'] as $relation) {
                     $temp_linked_alternatives = array();
                     foreach ($relation['linked_alternatives'] as $linked_alternative) {
                         $temp_linked_alternatives[] .= $linked_alternative->getName();
                     }
                     $shape->createBreak();
                     $shape->createTextRun(' - ' . $alternative_relation['alternative']->getName() . " has dependency to " . implode(', ', $temp_linked_alternatives) . " in project " . $relation['decision']->getName());
                 }
             }
         }
     }
 }