/public/css
/public/js
/public/bower
+/public/build/
/storage/images
_ide_helper.php
/storage/debugbar
.phpstorm.meta.php
yarn.lock
-/bin
\ No newline at end of file
+/bin
+nbproject
\ No newline at end of file
--- /dev/null
+<?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);
+ }
+}
--- /dev/null
+<?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);
+ }
+}
{
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.
--- /dev/null
+<?php namespace BookStack\Repos;
+
+use BookStack\Comment;
+use BookStack\Entity;
+
+/**
+ * Class TagRepo
+ * @package BookStack\Repos
+ */
+class CommentRepo {
+ /**
+ *
+ * @var Comment $comment
+ */
+ protected $comment;
+
+}
\ No newline at end of file
--- /dev/null
+<?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');
+ }
+}
@include('partials/entity-list', [
'entities' => $recentlyUpdatedPages,
'style' => 'compact',
- 'emptyText' => trans('entites.no_pages_recently_updated')
+ 'emptyText' => trans('entities.no_pages_recently_updated')
])
</div>
</div>
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');