public function GET_page($key = 'Main')
 {
     $page = PageRepository::getPage($key);
     if ($page->isTitle($key)) {
         // 이미 존재하는 문서인데 slug가 아니라 title로 들어왔다면 redirect 한다.
         return redirect("/pages/{$page->slug}");
     }
     PageRepository::setMetaTags($page);
     return view('ncells::pages.pages.view', ['page' => $page]);
 }
 public static function archive($title, $content, $writer_id)
 {
     $slug = PageRepository::slug($title);
     $page = PageRepository::getPage($title);
     $page->rev = $page->rev + 1;
     $page->title = $title;
     $page->slug = $slug;
     $page->content = $content;
     $page->writer_id = $writer_id;
     $page->save();
     $history = new History();
     $history->pages_page_id = $page->id;
     $history->rev = $page->rev;
     $history->title = $page->title;
     $history->slug = $page->slug;
     $history->content = $page->content;
     $history->writer_id = $page->writer_id;
     $history->created_at = $page->updated_at;
     $history->updated_at = $page->updated_at;
     $history->save();
     return $page;
 }
 public function GET_page_compare($key, $left, $right)
 {
     $page = PageRepository::getPage($key);
     if (!$page->exists()) {
         // 존재하지 않는 문서이므로 생성 권장
         return redirect("/admin/pages/{$key}");
     }
     if ($page->isTitle($key)) {
         // 이미 존재하는 문서인데 slug가 아니라 title로 들어왔다면 slug로 바꿔서 redirect 한다.
         return redirect("/admin/pages/{$page->slug}/compare/{$left}/{$right}");
     }
     $l_page = PageRepository::getRevPage($page->id, $left);
     $r_page = PageRepository::getRevPage($page->id, $right);
     if (!$l_page || !$r_page) {
         // L 과 R 중 하나가 revision 이 없으므로 문서로 이동
         return redirect("/admin/pages/{$page->slug}");
     }
     PageRepository::setMetaTags($page);
     $diff = PageRepository::getDiffHtml($l_page->content, $r_page->content);
     return view('ncells::pages.pages.admin.compare', ['page' => $page, 'rendered_diff' => $diff]);
 }