public function boot(Gitiki $gitiki)
 {
     $gitiki->error(function ($e, $code) use($gitiki) {
         if ($e instanceof Exception\PageRedirectedException) {
             return $gitiki->redirect($gitiki->path('page', ['path' => $e->getTarget()]), 301);
         }
     });
 }
 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;
 }
Example #3
0
 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()]);
 }
Example #4
0
 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]]);
 }
Example #5
0
 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;
 }
 protected function registerRouting(Gitiki $gitiki)
 {
     $gitiki->get('/languages/{language}.{_format}', 'code_highlight.controller.assets:languageAction')->assert('_format', 'js')->bind('_highlight_language');
     $gitiki->flush('_highlight');
 }
Example #7
0
 public function pageDirectoryAction(Gitiki $gitiki, Request $request, $path)
 {
     return $gitiki->handle(Request::create($request->getBaseUrl() . $path . 'index.html', 'GET', $request->query->all(), [], [], $request->server->all()), HttpKernelInterface::SUB_REQUEST, false);
 }