mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-02-20 23:11:38 +08:00
Added page export API controller
This commit is contained in:
parent
875a8bdaff
commit
8aedba14a3
@ -2,20 +2,14 @@
|
||||
|
||||
use BookStack\Entities\Models\Book;
|
||||
use BookStack\Entities\Tools\ExportFormatter;
|
||||
use BookStack\Entities\Repos\BookRepo;
|
||||
use Throwable;
|
||||
|
||||
class BookExportApiController extends ApiController
|
||||
{
|
||||
protected $bookRepo;
|
||||
protected $exportFormatter;
|
||||
|
||||
/**
|
||||
* BookExportController constructor.
|
||||
*/
|
||||
public function __construct(BookRepo $bookRepo, ExportFormatter $exportFormatter)
|
||||
public function __construct(ExportFormatter $exportFormatter)
|
||||
{
|
||||
$this->bookRepo = $bookRepo;
|
||||
$this->exportFormatter = $exportFormatter;
|
||||
}
|
||||
|
||||
|
@ -7,15 +7,13 @@ use Throwable;
|
||||
|
||||
class ChapterExportApiController extends ApiController
|
||||
{
|
||||
protected $chapterRepo;
|
||||
protected $exportFormatter;
|
||||
|
||||
/**
|
||||
* ChapterExportController constructor.
|
||||
*/
|
||||
public function __construct(BookRepo $chapterRepo, ExportFormatter $exportFormatter)
|
||||
public function __construct(ExportFormatter $exportFormatter)
|
||||
{
|
||||
$this->chapterRepo = $chapterRepo;
|
||||
$this->exportFormatter = $exportFormatter;
|
||||
}
|
||||
|
||||
|
47
app/Http/Controllers/Api/PageExportApiController.php
Normal file
47
app/Http/Controllers/Api/PageExportApiController.php
Normal file
@ -0,0 +1,47 @@
|
||||
<?php namespace BookStack\Http\Controllers\Api;
|
||||
|
||||
use BookStack\Entities\Models\Page;
|
||||
use BookStack\Entities\Tools\ExportFormatter;
|
||||
use Throwable;
|
||||
|
||||
class PageExportApiController extends ApiController
|
||||
{
|
||||
protected $exportFormatter;
|
||||
|
||||
public function __construct(ExportFormatter $exportFormatter)
|
||||
{
|
||||
$this->exportFormatter = $exportFormatter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Export a page as a PDF file.
|
||||
* @throws Throwable
|
||||
*/
|
||||
public function exportPdf(int $id)
|
||||
{
|
||||
$page = Page::visible()->findOrFail($id);
|
||||
$pdfContent = $this->exportFormatter->pageToPdf($page);
|
||||
return $this->downloadResponse($pdfContent, $page->slug . '.pdf');
|
||||
}
|
||||
|
||||
/**
|
||||
* Export a page as a contained HTML file.
|
||||
* @throws Throwable
|
||||
*/
|
||||
public function exportHtml(int $id)
|
||||
{
|
||||
$page = Page::visible()->findOrFail($id);
|
||||
$htmlContent = $this->exportFormatter->pageToContainedHtml($page);
|
||||
return $this->downloadResponse($htmlContent, $page->slug . '.html');
|
||||
}
|
||||
|
||||
/**
|
||||
* Export a page as a plain text file.
|
||||
*/
|
||||
public function exportPlainText(int $id)
|
||||
{
|
||||
$page = Page::visible()->findOrFail($id);
|
||||
$textContent = $this->exportFormatter->pageToPlainText($page);
|
||||
return $this->downloadResponse($textContent, $page->slug . '.txt');
|
||||
}
|
||||
}
|
@ -29,14 +29,18 @@ Route::get('chapters/{id}/export/html', 'ChapterExportApiController@exportHtml')
|
||||
Route::get('chapters/{id}/export/pdf', 'ChapterExportApiController@exportPdf');
|
||||
Route::get('chapters/{id}/export/plaintext', 'ChapterExportApiController@exportPlainText');
|
||||
|
||||
Route::get('shelves', 'BookshelfApiController@list');
|
||||
Route::post('shelves', 'BookshelfApiController@create');
|
||||
Route::get('shelves/{id}', 'BookshelfApiController@read');
|
||||
Route::put('shelves/{id}', 'BookshelfApiController@update');
|
||||
Route::delete('shelves/{id}', 'BookshelfApiController@delete');
|
||||
|
||||
Route::get('pages', 'PageApiController@list');
|
||||
Route::post('pages', 'PageApiController@create');
|
||||
Route::get('pages/{id}', 'PageApiController@read');
|
||||
Route::put('pages/{id}', 'PageApiController@update');
|
||||
Route::delete('pages/{id}', 'PageApiController@delete');
|
||||
|
||||
Route::get('pages/{id}/export/html', 'PageExportApiController@exportHtml');
|
||||
Route::get('pages/{id}/export/pdf', 'PageExportApiController@exportPdf');
|
||||
Route::get('pages/{id}/export/plaintext', 'PageExportApiController@exportPlainText');
|
||||
|
||||
Route::get('shelves', 'BookshelfApiController@list');
|
||||
Route::post('shelves', 'BookshelfApiController@create');
|
||||
Route::get('shelves/{id}', 'BookshelfApiController@read');
|
||||
Route::put('shelves/{id}', 'BookshelfApiController@update');
|
||||
Route::delete('shelves/{id}', 'BookshelfApiController@delete');
|
||||
|
Loading…
x
Reference in New Issue
Block a user