mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-10-01 05:36:00 +00:00
parent
7fa934e7f2
commit
6e0a7344fa
@ -29,6 +29,9 @@ class ActivityType
|
|||||||
const COMMENTED_ON = 'commented_on';
|
const COMMENTED_ON = 'commented_on';
|
||||||
const PERMISSIONS_UPDATE = 'permissions_update';
|
const PERMISSIONS_UPDATE = 'permissions_update';
|
||||||
|
|
||||||
|
const REVISION_RESTORE = 'revision_restore';
|
||||||
|
const REVISION_DELETE = 'revision_delete';
|
||||||
|
|
||||||
const SETTINGS_UPDATE = 'settings_update';
|
const SETTINGS_UPDATE = 'settings_update';
|
||||||
const MAINTENANCE_ACTION_RUN = 'maintenance_action_run';
|
const MAINTENANCE_ACTION_RUN = 'maintenance_action_run';
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
namespace BookStack\Entities\Models;
|
namespace BookStack\Entities\Models;
|
||||||
|
|
||||||
use BookStack\Auth\User;
|
use BookStack\Auth\User;
|
||||||
|
use BookStack\Interfaces\Loggable;
|
||||||
use BookStack\Model;
|
use BookStack\Model;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
@ -27,7 +28,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|||||||
* @property Page $page
|
* @property Page $page
|
||||||
* @property-read ?User $createdBy
|
* @property-read ?User $createdBy
|
||||||
*/
|
*/
|
||||||
class PageRevision extends Model
|
class PageRevision extends Model implements Loggable
|
||||||
{
|
{
|
||||||
protected $fillable = ['name', 'text', 'summary'];
|
protected $fillable = ['name', 'text', 'summary'];
|
||||||
protected $hidden = ['html', 'markdown', 'restricted', 'text'];
|
protected $hidden = ['html', 'markdown', 'restricted', 'text'];
|
||||||
@ -83,4 +84,9 @@ class PageRevision extends Model
|
|||||||
{
|
{
|
||||||
return $type === 'revision';
|
return $type === 'revision';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function logDescriptor(): string
|
||||||
|
{
|
||||||
|
return "Revision #{$this->revision_number} (ID: {$this->id}) for page ID {$this->page_id}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -337,6 +337,7 @@ class PageRepo
|
|||||||
$this->savePageRevision($page, $summary);
|
$this->savePageRevision($page, $summary);
|
||||||
|
|
||||||
Activity::add(ActivityType::PAGE_RESTORE, $page);
|
Activity::add(ActivityType::PAGE_RESTORE, $page);
|
||||||
|
Activity::add(ActivityType::REVISION_RESTORE, $revision);
|
||||||
|
|
||||||
return $page;
|
return $page;
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ namespace BookStack\Facades;
|
|||||||
use Illuminate\Support\Facades\Facade;
|
use Illuminate\Support\Facades\Facade;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \BookStack\Actions\ActivityLogger
|
* @mixin \BookStack\Actions\ActivityLogger
|
||||||
*/
|
*/
|
||||||
class Activity extends Facade
|
class Activity extends Facade
|
||||||
{
|
{
|
||||||
|
@ -2,9 +2,11 @@
|
|||||||
|
|
||||||
namespace BookStack\Http\Controllers;
|
namespace BookStack\Http\Controllers;
|
||||||
|
|
||||||
|
use BookStack\Actions\ActivityType;
|
||||||
use BookStack\Entities\Repos\PageRepo;
|
use BookStack\Entities\Repos\PageRepo;
|
||||||
use BookStack\Entities\Tools\PageContent;
|
use BookStack\Entities\Tools\PageContent;
|
||||||
use BookStack\Exceptions\NotFoundException;
|
use BookStack\Exceptions\NotFoundException;
|
||||||
|
use BookStack\Facades\Activity;
|
||||||
use Ssddanbrown\HtmlDiff\Diff;
|
use Ssddanbrown\HtmlDiff\Diff;
|
||||||
|
|
||||||
class PageRevisionController extends Controller
|
class PageRevisionController extends Controller
|
||||||
@ -132,6 +134,7 @@ class PageRevisionController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
$revision->delete();
|
$revision->delete();
|
||||||
|
Activity::add(ActivityType::REVISION_DELETE, $revision);
|
||||||
$this->showSuccessNotification(trans('entities.revision_delete_success'));
|
$this->showSuccessNotification(trans('entities.revision_delete_success'));
|
||||||
|
|
||||||
return redirect($page->getUrl('/revisions'));
|
return redirect($page->getUrl('/revisions'));
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace Tests\Entity;
|
namespace Tests\Entity;
|
||||||
|
|
||||||
|
use BookStack\Actions\ActivityType;
|
||||||
use BookStack\Entities\Models\Page;
|
use BookStack\Entities\Models\Page;
|
||||||
use BookStack\Entities\Repos\PageRepo;
|
use BookStack\Entities\Repos\PageRepo;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
@ -117,6 +118,9 @@ class PageRevisionTest extends TestCase
|
|||||||
'type' => 'version',
|
'type' => 'version',
|
||||||
'summary' => "Restored from #{$revToRestore->id}; My first update",
|
'summary' => "Restored from #{$revToRestore->id}; My first update",
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
$detail = "Revision #{$revToRestore->revision_number} (ID: {$revToRestore->id}) for page ID {$revToRestore->page_id}";
|
||||||
|
$this->assertActivityExists(ActivityType::REVISION_RESTORE, null, $detail);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function test_page_revision_count_increments_on_update()
|
public function test_page_revision_count_increments_on_update()
|
||||||
@ -164,6 +168,9 @@ class PageRevisionTest extends TestCase
|
|||||||
|
|
||||||
$this->assertTrue($beforeRevisionCount === ($afterRevisionCount + 1));
|
$this->assertTrue($beforeRevisionCount === ($afterRevisionCount + 1));
|
||||||
|
|
||||||
|
$detail = "Revision #{$revision->revision_number} (ID: {$revision->id}) for page ID {$revision->page_id}";
|
||||||
|
$this->assertActivityExists(ActivityType::REVISION_DELETE, null, $detail);
|
||||||
|
|
||||||
// Try to delete the latest revision
|
// Try to delete the latest revision
|
||||||
$beforeRevisionCount = $page->revisions->count();
|
$beforeRevisionCount = $page->revisions->count();
|
||||||
$resp = $this->asEditor()->delete($page->currentRevision->getUrl('/delete/'));
|
$resp = $this->asEditor()->delete($page->currentRevision->getUrl('/delete/'));
|
||||||
|
Loading…
Reference in New Issue
Block a user