/** * Render artifact form * * @param Codendi_Request $request * @param PFUser $current_user */ public function display(Codendi_Request $request, PFUser $current_user) { $this->enhanceRedirect($request); $this->displayHeader(); echo $this->fetchArtifactEditForm($this->redirect->toUrl(), $this->fetchFormContent($request, $current_user)); $this->displayFooter(); }
private function redirectOrAppend(Codendi_Request $request, Tracker_Artifact $artifact, Tracker_Artifact_Redirect $redirect, $requested_planning, Tracker_Artifact $last_milestone_artifact = null) { $planning = PlanningFactory::build()->getPlanning($requested_planning['planning_id']); if ($planning && !$redirect->stayInTracker()) { $this->redirectToPlanning($artifact, $requested_planning, $planning, $redirect); } elseif (!$redirect->stayInTracker()) { $this->redirectToTopPlanning($artifact, $requested_planning, $redirect); } else { $this->setQueryParametersFromRequest($request, $redirect); // Pass the right parameters so parent can be created in the right milestone (see updateBacklogs) if ($planning && $last_milestone_artifact && $redirect->mode == Tracker_Artifact_Redirect::STATE_CREATE_PARENT) { $redirect->query_parameters['child_milestone'] = $last_milestone_artifact->getId(); } } }
/** * Display the artifact * * @param Tracker_IDisplayTrackerLayout $layout Displays the page header and footer * @param Codendi_Request $request The data coming from the user * @param User $current_user The current user * * @return void */ public function display(Tracker_IDisplayTrackerLayout $layout, $request, $current_user) { $hp = Codendi_HTMLPurifier::instance(); $tracker = $this->getTracker(); $title = $hp->purify($tracker->item_name, CODENDI_PURIFIER_CONVERT_HTML) . ' #' . $this->id; $breadcrumbs = array(array('title' => $title, 'url' => TRACKER_BASE_URL . '/?aid=' . $this->id)); $tracker->displayHeader($layout, $title, $breadcrumbs); $current_user->addRecentElement($this); $from_aid = $request->get('from_aid'); $html = ''; $redirect = new Tracker_Artifact_Redirect(); $redirect->base_url = TRACKER_BASE_URL; $redirect->query_parameters = array('aid' => $this->id, 'func' => 'artifact-update'); if ($from_aid != null) { $redirect->query_parameters['from_aid'] = $from_aid; } EventManager::instance()->processEvent(TRACKER_EVENT_BUILD_ARTIFACT_FORM_ACTION, array('request' => $request, 'redirect' => $redirect)); $html .= '<form action="' . $redirect->toUrl() . '" method="POST" enctype="multipart/form-data">'; $html .= '<input type="hidden" value="67108864" name="max_file_size" />'; $html .= $this->fetchTitleInHierarchy($current_user); $html .= $this->fetchFields($request->get('artifact')); $html .= $this->fetchFollowUps($current_user, $request->get('artifact_followup_comment')); // We don't need History since we have changesets //$html .= $this->_fetchHistory(); $html .= '</form>'; $trm = new Tracker_RulesManager($tracker); $html .= $trm->displayRulesAsJavascript(); echo $html; $tracker->displayFooter($layout); exit; }
/** * Display the submit form */ public function displaySubmit(Tracker_IFetchTrackerSwitcher $layout, $request, $current_user, $link = null) { $hp = Codendi_HTMLPurifier::instance(); $breadcrumbs = array(array('title' => 'New artifact', 'url' => $this->getSubmitUrl())); if (!$link) { $this->displayHeader($layout, $this->name, $breadcrumbs); } if ($link) { echo '<html>'; echo '<head>'; echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'; $GLOBALS['HTML']->displayStylesheetElements(array()); $GLOBALS['HTML']->includeCalendarScripts(); $GLOBALS['HTML']->displayJavascriptElements(array()); echo '</head>'; echo '<body>'; echo '<div class="main_body_row">'; echo '<div class="contenttable">'; $project = null; $artifact = Tracker_ArtifactFactory::instance()->getArtifactByid($link); if ($artifact) { $project = $artifact->getTracker()->getProject(); $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('plugin_tracker', 'linked_to', array($artifact->fetchDirectLinkToArtifact(), $layout->fetchTrackerSwitcher($current_user, ' ', $project, $this))), CODENDI_PURIFIER_DISABLED); } else { $GLOBALS['Response']->addFeedback('error', 'Error the artifact to link doesn\'t exist'); } $GLOBALS['Response']->displayFeedback(); } $html = ''; if ($this->submit_instructions) { $html .= '<p class="submit_instructions">' . $hp->purify($this->submit_instructions, CODENDI_PURIFIER_FULL) . '</p>'; } $redirect = new Tracker_Artifact_Redirect(); $redirect->base_url = TRACKER_BASE_URL; $redirect->query_parameters = array('tracker' => $this->id, 'func' => 'submit-artifact'); EventManager::instance()->processEvent(TRACKER_EVENT_BUILD_ARTIFACT_FORM_ACTION, array('request' => $request, 'redirect' => $redirect)); $html .= '<form action="' . $redirect->toUrl() . '" method="POST" enctype="multipart/form-data">'; if ($link) { $html .= '<input type="hidden" name="link-artifact-id" value="' . (int) $link . '" />'; if ($request->get('immediate')) { $html .= '<input type="hidden" name="immediate" value="1" />'; } } $html .= '<input type="hidden" value="67108864" name="max_file_size" />'; $html .= '<table><tr><td>'; foreach ($this->getFormElements() as $formElement) { $html .= $formElement->fetchSubmit($request->get('artifact')); } $html .= '</td></tr></table>'; if ($current_user->isAnonymous()) { $html .= $this->fetchAnonymousEmailForm(); } if (!$link) { $html .= '<input type="submit" value="' . $GLOBALS['Language']->getText('global', 'btn_submit') . '" />'; $html .= ' '; $html .= '<input type="submit" name="submit_and_continue" value="' . $GLOBALS['Language']->getText('global', 'btn_submit_and_continue') . '" />'; $html .= '<input type="submit" name="submit_and_stay" value="' . $GLOBALS['Language']->getText('global', 'btn_submit_and_stay') . '" />'; } else { $html .= '<input type="submit" id="tracker_artifact_submit" value="' . $GLOBALS['Language']->getText('global', 'btn_submit') . '" />'; } $html .= '</form>'; $trm = new Tracker_RulesManager($this); $html .= $trm->displayRulesAsJavascript(); $html .= '</div></div>'; echo $html; if (!$link) { $this->displayFooter($layout); } }
private function executeRedirect(Codendi_Request $request, Tracker_Artifact $artifact, Tracker_Artifact_Redirect $redirect) { if ($request->isAjax()) { header(json_header(array('aid' => $artifact->getId()))); exit; } else { if ($this->isFromOverlay($request)) { echo '<script>window.parent.codendi.tracker.artifact.artifactLink.newArtifact(' . (int) $artifact->getId() . ');</script>'; exit; } else { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_tracker_index', 'create_success', array($artifact->fetchXRefLink())), CODENDI_PURIFIER_LIGHT); $GLOBALS['Response']->redirect($redirect->toUrl()); } } }