Added comments controller, model, repo, and the database schema. Modified existing Page model to associate with comments.
This commit is contained in:
		
							parent
							
								
									cd6572b61a
								
							
						
					
					
						commit
						397db04428
					
				| 
						 | 
				
			
			@ -8,9 +8,11 @@ Homestead.yaml
 | 
			
		|||
/public/css
 | 
			
		||||
/public/js
 | 
			
		||||
/public/bower
 | 
			
		||||
/public/build/
 | 
			
		||||
/storage/images
 | 
			
		||||
_ide_helper.php
 | 
			
		||||
/storage/debugbar
 | 
			
		||||
.phpstorm.meta.php
 | 
			
		||||
yarn.lock
 | 
			
		||||
/bin
 | 
			
		||||
/bin
 | 
			
		||||
nbproject
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,35 @@
 | 
			
		|||
<?php
 | 
			
		||||
 | 
			
		||||
namespace BookStack;
 | 
			
		||||
 | 
			
		||||
class Comment extends Ownable
 | 
			
		||||
{
 | 
			
		||||
    protected $fillable = ['text', 'html'];
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Get the entity that this comment belongs to
 | 
			
		||||
     * @return \Illuminate\Database\Eloquent\Relations\MorphTo
 | 
			
		||||
     */
 | 
			
		||||
    public function entity()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->morphTo('entity');
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Get the page that this comment is in.
 | 
			
		||||
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
 | 
			
		||||
     */
 | 
			
		||||
    public function page()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->belongsTo(Page::class);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Get the owner of this comment.
 | 
			
		||||
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
 | 
			
		||||
     */
 | 
			
		||||
    public function user() 
 | 
			
		||||
    {
 | 
			
		||||
        return $this->belongsTo(User::class);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,33 @@
 | 
			
		|||
<?php
 | 
			
		||||
 | 
			
		||||
namespace BookStack\Http\Controllers;
 | 
			
		||||
 | 
			
		||||
use Illuminate\Http\Request;
 | 
			
		||||
 | 
			
		||||
use BookStack\Http\Requests;
 | 
			
		||||
 | 
			
		||||
class CommentController extends Controller
 | 
			
		||||
{
 | 
			
		||||
    
 | 
			
		||||
    public function add(Request $request, $pageId) {
 | 
			
		||||
        // $this->checkOwnablePermission('page-view', $page);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public function update(Request $request, $id) {
 | 
			
		||||
        // Check whether its an admin or the comment owner.
 | 
			
		||||
        // $this->checkOwnablePermission('page-view', $page);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public function destroy($id) {
 | 
			
		||||
        // Check whether its an admin or the comment owner.
 | 
			
		||||
        // $this->checkOwnablePermission('page-view', $page);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public function getLastXComments($pageId) {
 | 
			
		||||
        // $this->checkOwnablePermission('page-view', $page);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public function getChildComments($pageId, $id) {
 | 
			
		||||
        // $this->checkOwnablePermission('page-view', $page);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -39,6 +39,15 @@ class Page extends Entity
 | 
			
		|||
    {
 | 
			
		||||
        return $this->belongsTo(Chapter::class);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Get the comments in the page.
 | 
			
		||||
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
 | 
			
		||||
     */
 | 
			
		||||
    public function comment()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->hasMany(Comment::class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Check if this page has a chapter.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
<?php namespace BookStack\Repos;
 | 
			
		||||
 | 
			
		||||
use BookStack\Comment;
 | 
			
		||||
use BookStack\Entity;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Class TagRepo
 | 
			
		||||
 * @package BookStack\Repos
 | 
			
		||||
 */
 | 
			
		||||
class CommentRepo {
 | 
			
		||||
    /**
 | 
			
		||||
     *
 | 
			
		||||
     * @var Comment $comment 
 | 
			
		||||
     */
 | 
			
		||||
    protected $comment;
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,38 @@
 | 
			
		|||
<?php
 | 
			
		||||
 | 
			
		||||
use Illuminate\Support\Facades\Schema;
 | 
			
		||||
use Illuminate\Database\Schema\Blueprint;
 | 
			
		||||
use Illuminate\Database\Migrations\Migration;
 | 
			
		||||
 | 
			
		||||
class CreateCommentsTable extends Migration
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Run the migrations.
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function up()
 | 
			
		||||
    {
 | 
			
		||||
        Schema::create('comments', function (Blueprint $table) {
 | 
			
		||||
            $table->increments('id')->unsigned();                       
 | 
			
		||||
            $table->integer('page_id')->unsigned();
 | 
			
		||||
            $table->longText('text')->nullable();
 | 
			
		||||
            $table->longText('html')->nullable();
 | 
			
		||||
            $table->integer('parent_id')->unsigned()->nullable();
 | 
			
		||||
            $table->integer('created_by')->unsigned();
 | 
			
		||||
            $table->integer('updated_by')->unsigned()->nullable();
 | 
			
		||||
            $table->index(['page_id', 'parent_id']);
 | 
			
		||||
            $table->timestamps();
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Reverse the migrations.
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function down()
 | 
			
		||||
    {
 | 
			
		||||
        Schema::dropIfExists('comments');
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -51,7 +51,7 @@
 | 
			
		|||
                    @include('partials/entity-list', [
 | 
			
		||||
                    'entities' => $recentlyUpdatedPages,
 | 
			
		||||
                    'style' => 'compact',
 | 
			
		||||
                    'emptyText' => trans('entites.no_pages_recently_updated')
 | 
			
		||||
                    'emptyText' => trans('entities.no_pages_recently_updated')
 | 
			
		||||
                    ])
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -113,6 +113,13 @@ Route::group(['middleware' => 'auth'], function () {
 | 
			
		|||
 | 
			
		||||
    Route::get('/ajax/search/entities', 'SearchController@searchEntitiesAjax');
 | 
			
		||||
 | 
			
		||||
    // Comments
 | 
			
		||||
    Route::post('/ajax/page/{pageId}/comment/', 'CommentController@add');
 | 
			
		||||
    Route::put('/ajax/page/comment/{id}', 'CommentController@update');
 | 
			
		||||
    Route::delete('/ajax/comment/{id}', 'CommentController@destroy');
 | 
			
		||||
    Route::get('/ajax/page/{pageId}/comment/', 'CommentController@getLastXComments');
 | 
			
		||||
    Route::get('/ajax/page/{pageId}/comment/{id}/sub-comments', 'CommentController@getChildComments');    
 | 
			
		||||
    
 | 
			
		||||
    // Links
 | 
			
		||||
    Route::get('/link/{id}', 'PageController@redirectFromLink');
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue