public function diffAction(Gitiki $gitiki, Request $request, $path) { $commitNum = $request->query->get('history'); $commit = $gitiki['git.repository']->getCommit($commitNum); try { $fileDiff = $commit->getDiffFile($path)->getFiles(); } catch (ProcessException $e) { $gitiki->abort(404, sprintf('The commit "%s" was not found', $commitNum)); } if (empty($fileDiff)) { $gitiki->abort(404, sprintf('The commit "%s" does not concern the file "%s"', $commitNum, $path)); } return $gitiki['twig']->render('diff.html.twig', ['page' => new Page($path), 'commit' => $commit, 'diff' => $fileDiff[0]]); }
public function pageAction(Gitiki $gitiki, $path) { try { $page = $gitiki->getPage($path); } catch (PageNotFoundException $e) { $gitiki->abort(404, sprintf('The page "%s" was not found.', $e->getPage())); } return $gitiki['twig']->render('page.html.twig', ['page' => $page]); }
protected function sendFile(Gitiki $gitiki, $file, $responseClass) { try { $fileInfo = new File(__DIR__ . '/../Resources/highlightjs/' . $file); } catch (FileNotFoundException $e) { $gitiki->abort(404, 'The file "%s" does not exists'); } $response = new $responseClass($fileInfo); $request = $gitiki['request']; $response->headers->set('content-type', $request->getMimeType($fileInfo->getExtension())); $response->setMaxAge(0)->isNotModified($request); return $response; }
public function menuAction(Gitiki $gitiki) { // the _menu page cannot be accessed directly by `/_menu` url if (null === $gitiki['request_stack']->getParentRequest()) { throw $gitiki->abort(404, 'The page "/_menu" cannot be accessed directly.'); } try { $page = $gitiki->getPage('/_menu.md'); } catch (PageNotFoundException $e) { return ''; } return $gitiki['twig']->render('menu.html.twig', ['menu' => $page->getMetas()]); }
public function imageAction(Gitiki $gitiki, Request $request, $path, $_format) { $image = new Image($gitiki['wiki_path'], $path . '.' . $_format); if (false === $image->isFile() || false === $image->isReadable()) { $gitiki->abort(404, sprintf('The image "%s" was not found.', $image->getRelativePath())); } if ($request->query->has('details')) { return $gitiki['twig']->render('image.html.twig', ['page' => $image]); } $response = $gitiki->sendFile($image)->setMaxAge(0); if (!$response->isNotModified($request) && null !== ($size = $request->query->get('size'))) { try { $response->setFile($gitiki['image']->resize($image, $size), null, false, false)->deleteFileAfterSend(true); } catch (InvalidSizeException $e) { } } return $response; }