♻️ Laravel Shaarli is now Shaark #54

This commit is contained in:
MarceauKa 2019-11-14 12:49:44 +01:00
parent c3ed04abfd
commit aee5c800ab
72 changed files with 460 additions and 497 deletions

View File

@ -1,11 +1,11 @@
APP_NAME="Laravel Shaarli"
APP_NAME="Shaark"
# "production" or "local"
APP_ENV=local
# generated with: php artisan key:generate
APP_KEY=
# set debug to false in production
APP_DEBUG=true
APP_URL=http://dev.shaarli
APP_URL=http://dev.shaark
APP_TIMEZONE=Europe/Paris
# "en", "fr", "de" or "ja"
APP_LANG=en
@ -41,7 +41,7 @@ MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=hello@example.com
MAIL_FROM_NAME="Laravel Shaarli"
MAIL_FROM_NAME="Shaark"
# replace 'default-salt' with a random string
HASHIDS_SALT=default-salt

View File

@ -1,4 +1,4 @@
APP_NAME="Laravel Shaarli"
APP_NAME="Shaark"
APP_ENV=testing
APP_KEY=base64:2Fevru/sI4EXg7a8hNn2+eJx1GGvywDWAsbCA/kMyvA=
APP_DEBUG=true

View File

@ -3,7 +3,7 @@
namespace App;
use App\Concerns\Models\Postable;
use App\Services\Shaarli\Shaarli;
use App\Services\Shaark\Shaark;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Spatie\Image\Manipulations;
@ -55,7 +55,7 @@ class Album extends Model implements HasMedia
return false;
}
if (app('shaarli')->getPrivateDownload() === true
if (app('shaark')->getPrivateDownload() === true
&& auth()->check() === false) {
return false;
}
@ -72,19 +72,19 @@ class Album extends Model implements HasMedia
public function registerMediaConversions(Media $media = null)
{
/** @var Shaarli $shaarli */
$shaarli = app('shaarli');
/** @var Shaark $shaark */
$shaark = app('shaark');
$conversion = $this->addMediaConversion('thumb');
if ($shaarli->getImagesThumbFormat() === 'square') {
if ($shaark->getImagesThumbFormat() === 'square') {
$conversion->fit(Manipulations::FIT_CROP, 300, 300);
}
if ($shaarli->getImagesThumbFormat() === 'original') {
if ($shaark->getImagesThumbFormat() === 'original') {
$conversion->fit(Manipulations::FIT_CONTAIN, 300, 300);
}
if ($shaarli->getImagesThumbQueue() === false) {
if ($shaark->getImagesThumbQueue() === false) {
$conversion->nonQueued();
}
}

View File

@ -7,7 +7,7 @@ use Illuminate\Support\Facades\Storage;
class CleanFiles extends Command
{
protected $signature = 'shaarli:clean-files';
protected $signature = 'shaark:clean-files';
protected $description = 'Remove temporary uploaded files';
public function __construct()

View File

@ -8,7 +8,7 @@ use Illuminate\Support\Facades\DB;
class DecryptChests extends Command
{
protected $signature = 'shaarli:chests:decrypt';
protected $signature = 'shaark:chests:decrypt';
protected $description = 'This command will decrypt all encrypted chests';
public function __construct()

View File

@ -8,7 +8,7 @@ use Illuminate\Support\Facades\DB;
class EncryptChests extends Command
{
protected $signature = 'shaarli:chests:encrypt';
protected $signature = 'shaark:chests:encrypt';
protected $description = 'This command will encrypt all unencrypted chests';
public function __construct()

View File

@ -6,8 +6,8 @@ use Illuminate\Console\Command;
class Install extends Command
{
protected $signature = 'shaarli:install';
protected $description = 'Shaarli installer';
protected $signature = 'shaark:install';
protected $description = 'Shaark installer';
public function __construct()
{

View File

@ -6,7 +6,7 @@ use Illuminate\Console\Command;
class ResetForDemo extends Command
{
protected $signature = 'shaarli:reset';
protected $signature = 'shaark:reset';
protected $description = 'Reset app for demo';
public function __construct()

View File

@ -6,8 +6,8 @@ use Illuminate\Console\Command;
class Update extends Command
{
protected $signature = 'shaarli:update';
protected $description = 'Shaarli updater';
protected $signature = 'shaark:update';
protected $description = 'Shaark updater';
public function __construct()
{

View File

@ -4,7 +4,7 @@ namespace App\Console;
use App\Console\Commands\CleanFiles;
use App\Console\Commands\ResetForDemo;
use App\Services\Shaarli\Shaarli;
use App\Services\Shaark\Shaark;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
@ -20,7 +20,7 @@ class Kernel extends ConsoleKernel
// Reset Demo
$schedule->command(ResetForDemo::class)
->when(function () {
return config('shaarli.demo');
return config('shaark.demo');
})
->hourly();
@ -34,20 +34,20 @@ class Kernel extends ConsoleKernel
protected function scheduleBackup(Schedule $schedule): self
{
$shaarli = app(Shaarli::class);
$shaark = app(Shaark::class);
if (false === $shaarli->getBackupEnabled()) {
if (false === $shaark->getBackupEnabled()) {
return $this;
}
$params = $shaarli->getBackupOnlyDatabase() ? ['--only-db'] : [];
$params = $shaark->getBackupOnlyDatabase() ? ['--only-db'] : [];
if ($shaarli->getBackupPeriod() === 'daily') {
if ($shaark->getBackupPeriod() === 'daily') {
$schedule->command('backup:clean')->daily()->at('01:00');
$schedule->command('backup:run', $params)->daily()->at('02:00');
}
if ($shaarli->getBackupPeriod() === 'weekly') {
if ($shaark->getBackupPeriod() === 'weekly') {
$schedule->command('backup:clean')->weekly()->at('01:00');
$schedule->command('backup:run', $params)->weekly()->at('02:00');
}

View File

@ -8,7 +8,7 @@ use App\Http\Requests\StoreAlbumRequest;
use App\Http\Requests\StoreAlbumUploadRequest;
use App\Http\Resources\PostResource;
use App\Post;
use App\Services\Shaarli\Shaarli;
use App\Services\Shaark\Shaark;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Spatie\Image\Image;
@ -93,12 +93,12 @@ class AlbumController extends Controller
]);
}
public function upload(StoreAlbumUploadRequest $request, Shaarli $shaarli)
public function upload(StoreAlbumUploadRequest $request, Shaark $shaark)
{
$file = $request->file('filepond');
if ($shaarli->getImagesOriginalResize() === true) {
$size = $shaarli->getImagesOriginalResizeWidth();
if ($shaark->getImagesOriginalResize() === true) {
$size = $shaark->getImagesOriginalResizeWidth();
Image::load($file)
->fit(Manipulations::FIT_MAX, $size, $size)

View File

@ -6,7 +6,7 @@ use App\Http\Controllers\Controller;
use App\Notifications\CheckEmail;
use App\Services\LinkArchive\LinkArchive;
use App\Services\LinkArchive\YoutubeDlProvider;
use App\Services\Shaarli\Shaarli;
use App\Services\Shaark\Shaark;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
@ -19,18 +19,18 @@ class FeaturesController extends Controller
$this->middleware('demo');
}
public function check(Request $request, Shaarli $shaarli, string $type)
public function check(Request $request, Shaark $shaark, string $type)
{
if (false === in_array($type, ['pdf', 'media', 'email'])) {
abort(404);
}
if ($type === 'pdf') {
$check = $this->checkArchivePdf($shaarli);
$check = $this->checkArchivePdf($shaark);
}
if ($type === 'media') {
$check = $this->checkArchiveMedia($shaarli);
$check = $this->checkArchiveMedia($shaark);
}
if ($type === 'email') {
@ -46,13 +46,13 @@ class FeaturesController extends Controller
]);
}
protected function checkArchivePdf(Shaarli $shaarli)
protected function checkArchivePdf(Shaark $shaark)
{
if (false === $shaarli->getLinkArchivePdf()) {
if (false === $shaark->getLinkArchivePdf()) {
return $this->sendError(__('Archive as PDF is not enabled'));
}
$exec = $shaarli->getNodeBin();
$exec = $shaark->getNodeBin();
exec($exec . ' --version', $result);
if (empty($result)) {
@ -76,13 +76,13 @@ class FeaturesController extends Controller
return true;
}
protected function checkArchiveMedia(Shaarli $shaarli)
protected function checkArchiveMedia(Shaark $shaark)
{
if (false === $shaarli->getLinkArchiveMedia()) {
if (false === $shaark->getLinkArchiveMedia()) {
return $this->sendError(__('Archive as Media is not enabled'));
}
$exec = $shaarli->getYoutubeDlBin();
$exec = $shaark->getYoutubeDlBin();
exec($exec . ' --version', $result);
if (empty($result)) {

View File

@ -7,16 +7,16 @@ use App\Http\Resources\PostResource;
use App\Http\Resources\TagResource;
use App\Post;
use App\Services\ModelSearch;
use App\Services\Shaarli\Shaarli;
use App\Services\Shaark\Shaark;
use App\Tag;
use Illuminate\Http\Request;
class SearchController extends Controller
{
public function search(Request $request, Shaarli $shaarli)
public function search(Request $request, Shaark $shaark)
{
$query = $request->get('query');
$default_search = $shaarli->getUseDefaultSearch();
$default_search = $shaark->getUseDefaultSearch();
if (mb_strlen($query) < 3) {
abort(422);

View File

@ -6,19 +6,19 @@ use App\Album;
use App\Chest;
use App\Link;
use App\Post;
use App\Services\Shaarli\Shaarli;
use App\Services\Shaark\Shaark;
use App\Story;
use App\Tag;
use Illuminate\Http\Request;
class BrowseController extends Controller
{
public function index(Request $request, Shaarli $shaarli)
public function index(Request $request, Shaark $shaark)
{
$tags = collect([]);
$posts = Post::with('tags', 'postable');
if (false === $shaarli->getHomeShowChests()) {
if (false === $shaark->getHomeShowChests()) {
$posts->withoutChests();
}
@ -27,18 +27,18 @@ class BrowseController extends Controller
->latest()
->paginate(20);
if (true === $shaarli->getHomeShowTags()) {
if (true === $shaark->getHomeShowTags()) {
$tags = Tag::withPostsFor($request)
->orderBy('posts_count', 'desc')
->get();
}
return view('home')->with([
'page_title' => app('shaarli')->getName(),
'page_title' => app('shaark')->getName(),
'posts' => $posts,
'tags' => $tags,
'compact' => $shaarli->getCompactCardslist(),
'columns_count' => $shaarli->getColumnsCount(),
'compact' => $shaark->getCompactCardslist(),
'columns_count' => $shaark->getColumnsCount(),
]);
}
@ -98,7 +98,7 @@ class BrowseController extends Controller
]);
}
public function tag(Request $request, Shaarli $shaarli, string $tag)
public function tag(Request $request, Shaark $shaark, string $tag)
{
$tag = Tag::named($tag)->firstOrFail();
@ -119,8 +119,8 @@ class BrowseController extends Controller
]),
'tag' => $tag,
'posts' => $posts,
'compact' => $shaarli->getCompactCardslist(),
'columns_count' => $shaarli->getColumnsCount(),
'compact' => $shaark->getCompactCardslist(),
'columns_count' => $shaark->getColumnsCount(),
]);
}
}

View File

@ -4,14 +4,14 @@ namespace App\Http\Controllers;
use App\Http\Resources\PostResource;
use App\Post;
use App\Services\Shaarli\Shaarli;
use App\Services\Shaark\Shaark;
use Illuminate\Http\Request;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Cache;
class FeedController extends Controller
{
public function index(Request $request, Shaarli $shaarli, string $type)
public function index(Request $request, Shaark $shaark, string $type)
{
if (false === in_array($type, ['rss', 'atom'])) {
abort(404);
@ -28,10 +28,10 @@ class FeedController extends Controller
});
return view(sprintf('feed/%s', $type))->with([
'title' => $shaarli->getName(),
'title' => $shaark->getName(),
'link' => route('home'),
'description' => __('All new content of :title', ['title' => $shaarli->getName()]),
'language' => $shaarli->getLocale(),
'description' => __('All new content of :title', ['title' => $shaark->getName()]),
'language' => $shaark->getLocale(),
'pub_date' => count($items) ? $items[0]['created_at']->toRssString() : Carbon::now()->toRssString(),
'items' => $items,
]);

View File

@ -43,7 +43,7 @@ class LoginController extends Controller
$this->sendLockoutResponse($request);
}
if (true === app('shaarli')->getSecureLogin()) {
if (true === app('shaark')->getSecureLogin()) {
return $this->checkWithSecureLogin($request, $validated);
}

View File

@ -4,7 +4,7 @@ namespace App\Http\Controllers\Manage;
use App\Http\Controllers\Controller;
use App\Http\Requests\StoreSettingsRequest;
use App\Services\Shaarli\Shaarli;
use App\Services\Shaark\Shaark;
use Illuminate\Http\Request;
class SettingsController extends Controller
@ -20,15 +20,15 @@ class SettingsController extends Controller
{
return view('manage.settings')->with([
'page_title' => __('Settings'),
'settings' => app('shaarli')->getSettings(),
'settings' => app('shaark')->getSettings(),
]);
}
public function store(StoreSettingsRequest $request, Shaarli $shaarli)
public function store(StoreSettingsRequest $request, Shaark $shaark)
{
$validated = collect($request->validated());
$shaarli
$shaark
->setSettings($validated)
->cleanSettings();

View File

@ -2,30 +2,30 @@
namespace App\Http\Controllers;
use App\Services\Shaarli\Shaarli;
use App\Services\Shaark\Shaark;
use Illuminate\Http\Request;
class PwaController extends Controller
{
public function manifest(Request $request, Shaarli $shaarli)
public function manifest(Request $request, Shaark $shaark)
{
$manifest = [
'version' => Shaarli::VERSION,
'version' => Shaark::VERSION,
'dir' => 'ltr',
'lang' => $shaarli->getLocale(),
'name' => $shaarli->getName(),
'lang' => $shaark->getLocale(),
'name' => $shaark->getName(),
'scope' => '/',
'display' => 'standalone',
'start_url' => '/',
'short_name' => $shaarli->getName(),
'short_name' => $shaark->getName(),
'theme_color' => 'transparent',
'description' => $shaarli->getName(),
'description' => $shaark->getName(),
'orientation' => 'any',
'background_color' => 'transparent',
'prefer_related_applications' => false,
'icons' => [
[
'src' => $shaarli->getCustomIconUrl(),
'src' => $shaark->getCustomIconUrl(),
'type' => 'image/png',
'sizes' => '192x192 512x512',
]
@ -50,10 +50,10 @@ class PwaController extends Controller
]);
}
public function offline(Request $request, Shaarli $shaarli)
public function offline(Request $request, Shaark $shaark)
{
return view('offline')->with([
'page_title' => $shaarli->getName(),
'page_title' => $shaark->getName(),
]);
}
}

View File

@ -2,16 +2,16 @@
namespace App\Http\Controllers;
use App\Services\Shaarli\Shaarli;
use App\Services\Shaark\Shaark;
use Illuminate\Http\Request;
class StaticController extends Controller
{
public function robots(Request $request, Shaarli $shaarli)
public function robots(Request $request, Shaark $shaark)
{
$content = "User-agent: *\nDisallow:";
if (true === $shaarli->getIsPrivate()) {
if (true === $shaark->getIsPrivate()) {
$content = "User-agent: *\nDisallow: /";
}

View File

@ -9,7 +9,7 @@ class BlockInDemoMode
{
public function handle(Request $request, Closure $next, $guard = null)
{
if (config('shaarli.demo')) {
if (config('shaark.demo')) {
if ($request->expectsJson()) {
return response()->json([
'status' => 'error',

View File

@ -8,7 +8,7 @@ class CheckForGlobalPrivacy
{
public function handle($request, Closure $next)
{
if (app('shaarli')->authorizeFromRequest($request)) {
if (app('shaark')->authorizeFromRequest($request)) {
return $next($request);
}

View File

@ -13,7 +13,7 @@ class StoreSettingsRequest extends FormRequest
public function rules()
{
$config = collect(app('shaarli')->getSettingsConfig());
$config = collect(app('shaark')->getSettingsConfig());
return $config->transform(function ($item, $key) {
return [

View File

@ -75,7 +75,7 @@ class Link extends Model
return false;
}
if (app('shaarli')->getPrivateDownload() === true
if (app('shaark')->getPrivateDownload() === true
&& auth()->check() === false) {
return false;
}

View File

@ -19,8 +19,8 @@ class CheckEmail extends Notification
public function toMail($notifiable)
{
return (new MailMessage)
->subject(__('shaarli.mails.check.title'))
->line(__('shaarli.mails.check.message', ['name' => config('app.name')]));
->subject(__('shaark.mails.check.title'))
->line(__('shaark.mails.check.message', ['name' => config('app.name')]));
}
public function toArray($notifiable)

View File

@ -28,9 +28,9 @@ class SecureLoginCode extends Notification
public function toMail($notifiable)
{
return (new MailMessage)
->subject(__('shaarli.mails.2fa.title'))
->line(__('shaarli.mails.2fa.message', ['code' => $this->secure->code]))
->action(__('shaarli.mails.2fa.button'), sprintf('%s?code=%s', route('login.secure', $this->secure), $this->secure->code));
->subject(__('shaark.mails.2fa.title'))
->line(__('shaark.mails.2fa.message', ['code' => $this->secure->code]))
->action(__('shaark.mails.2fa.button'), sprintf('%s?code=%s', route('login.secure', $this->secure), $this->secure->code));
}
public function toArray($notifiable)

View File

@ -3,7 +3,7 @@
namespace App\Providers;
use App\Services\Hashid;
use App\Services\Shaarli\Shaarli;
use App\Services\Shaark\Shaark;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Storage;
@ -19,14 +19,14 @@ class AppServiceProvider extends ServiceProvider
$this->app['request']->server->set('HTTPS', true);
}
$this->app->singleton(Shaarli::class, function ($app) {
return new Shaarli($app);
$this->app->singleton(Shaark::class, function ($app) {
return new Shaark($app);
});
$this->app->alias(Shaarli::class, 'shaarli');
$this->app->alias(Shaark::class, 'shaark');
$this->app->singleton(Hashid::class, function ($app) {
return new Hashid($app['config']->get('shaarli.hashids'));
return new Hashid($app['config']->get('shaark.hashids'));
});
$this->app->alias(Hashid::class, 'hashid');
@ -34,7 +34,7 @@ class AppServiceProvider extends ServiceProvider
public function boot()
{
$this->app->setLocale(app('shaarli')->getLocale());
$this->app->setLocale(app('shaark')->getLocale());
View::composer('layouts.partials.scripts', function (\Illuminate\View\View $view) {
$locale = config('app.locale');

View File

@ -27,7 +27,7 @@ class AuthServiceProvider extends ServiceProvider
$this->registerPolicies();
Gate::define('restricted', function (?User $user) {
if (app('shaarli')->getIsPrivate() === false) {
if (app('shaark')->getIsPrivate() === false) {
return true;
}

View File

@ -40,8 +40,8 @@ class SecureLogin extends Model
*/
public static function createForUser($user): self
{
$code_length = app('shaarli')->getSecureCodeLength();
$expire_minutes = app('shaarli')->getSecureCodeExpires();
$code_length = app('shaark')->getSecureCodeLength();
$expire_minutes = app('shaark')->getSecureCodeExpires();
$model = new static();
$model->user_id = $user->id;

View File

@ -13,7 +13,7 @@ class PuppeteerProvider extends BaseProvider
try {
$puppeteer = new Puppeteer([
'executable_path' => app('shaarli')->getNodeBin()
'executable_path' => app('shaark')->getNodeBin()
]);
$browser = $puppeteer->launch([
@ -48,7 +48,7 @@ class PuppeteerProvider extends BaseProvider
public function isEnabled(): bool
{
return app('shaarli')->getLinkArchivePdf() === true;
return app('shaark')->getLinkArchivePdf() === true;
}
public function canArchive(): bool

View File

@ -25,8 +25,8 @@ class YoutubeDlProvider extends BaseProvider
'output' => md5($this->url) . '.%(ext)s',
]);
$dl->setPythonPath(app('shaarli')->getPythonBin());
$dl->setBinPath(app('shaarli')->getYoutubeDlBin());
$dl->setPythonPath(app('shaark')->getPythonBin());
$dl->setBinPath(app('shaark')->getYoutubeDlBin());
$dl->setDownloadPath($path);
/*$dl->onProgress(function ($progress) {
@ -50,7 +50,7 @@ class YoutubeDlProvider extends BaseProvider
public function isEnabled(): bool
{
return app('shaarli')->getLinkArchiveMedia() === true;
return app('shaark')->getLinkArchiveMedia() === true;
}
public function canArchive(): bool
@ -68,7 +68,7 @@ class YoutubeDlProvider extends BaseProvider
'no-check-certificate' => true
]);
$dl->setBinPath(app('shaarli')->getYoutubeDlBin());
$dl->setBinPath(app('shaark')->getYoutubeDlBin());
$dl->setDownloadPath(storage_path('app/archives'));
$result = $dl->download($url);

View File

@ -1,12 +1,12 @@
<?php
namespace App\Services\Shaarli\Concerns;
namespace App\Services\Shaark\Concerns;
use App\Services\Shaarli\Shaarli;
use App\Services\Shaark\Shaark;
use Illuminate\Http\Request;
/**
* @mixin Shaarli
* @mixin Shaark
*/
trait ControlsGlobalPrivacy
{

View File

@ -1,13 +1,13 @@
<?php
namespace App\Services\Shaarli\Concerns;
namespace App\Services\Shaark\Concerns;
use App\Services\Shaarli\Shaarli;
use App\Services\Shaark\Shaark;
use Illuminate\Support\Collection;
use Spatie\Valuestore\Valuestore;
/**
* @mixin Shaarli
* @mixin Shaark
* @method string getName()
* @method string getLocale()
* @method bool getIsPrivate()
@ -41,7 +41,7 @@ trait ControlsSettings
public function getSettingsConfig(): array
{
return $this->app['config']->get('shaarli.settings');
return $this->app['config']->get('shaark.settings');
}
public function validateDefaultSettings(): void

View File

@ -1,13 +1,13 @@
<?php
namespace App\Services\Shaarli\Concerns;
namespace App\Services\Shaark\Concerns;
use App\Services\Shaarli\Shaarli;
use App\Services\Shaark\Shaark;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Storage;
/**
* @mixin Shaarli
* @mixin Shaark
*/
trait HandleCustomSettings
{

View File

@ -1,22 +1,22 @@
<?php
namespace App\Services\Shaarli;
namespace App\Services\Shaark;
use App\Services\Shaarli\Concerns\ControlsGlobalPrivacy;
use App\Services\Shaarli\Concerns\ControlsSettings;
use App\Services\Shaarli\Concerns\HandleCustomSettings;
use App\Services\Shaark\Concerns\ControlsGlobalPrivacy;
use App\Services\Shaark\Concerns\ControlsSettings;
use App\Services\Shaark\Concerns\HandleCustomSettings;
use Illuminate\Foundation\Application;
use Illuminate\Support\Str;
use Spatie\Valuestore\Valuestore;
class Shaarli
class Shaark
{
use ControlsGlobalPrivacy,
ControlsSettings,
HandleCustomSettings;
/** @var string VERSION */
public const VERSION = '1.2.29';
public const VERSION = '1.2.30';
/** @var Application $app */
protected $app;

View File

@ -52,6 +52,7 @@ class Tag extends Model
public function toSearchableArray()
{
return [
'id' => $this->id,
'name' => $this->name
];
}

View File

@ -1,7 +1,10 @@
# Unreleased
# 1.2.30
⚠️ Update your Git remote URL: `git remote set-url origin https://github.com/MarceauKa/shaark.git`
## Changed
- Laravel Shaarli is now Shaark (issue #54)
- Japanese translation updated to 1.2.29 (thanks to [wyred](https://github.com/wyred))
# 1.2.29
@ -40,7 +43,7 @@
## Added
- Ability to customize image generation
- [Troubleshouting guide](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/troubleshooting.md)
- [Troubleshouting guide](https://github.com/MarceauKa/shaark/blob/dev/documentation/troubleshooting.md)
## Changed
@ -96,7 +99,7 @@
- Progressive Web App compatibility (issue #24)
- Default icon for Shaarli and ability to customize it
- Automatic [backup](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/backup.md) (issue #28)
- Automatic [backup](https://github.com/MarceauKa/shaark/blob/dev/documentation/backup.md) (issue #28)
- Network status monitor (for PWA)
## Changed
@ -128,7 +131,7 @@
## Added
- Ability to customize background as image or custom gradient (issues #25 and #26)
- Shaarlies [listing](https://github.com/MarceauKa/laravel-shaarli/blob/dev/shaarlies.md)
- Shaarlies [listing](https://github.com/MarceauKa/shaark/blob/dev/directory.md)
## Changed

View File

@ -1,14 +1,15 @@
{
"name": "marceauka/laravel-shaarli",
"name": "marceauka/shaark",
"type": "project",
"description": "Your place to archive your links, stories, passwords and archive your content.",
"keywords": [
"laravel",
"shaark",
"shaarli",
"links"
],
"license": "MIT",
"homepage": "https://github.com/MarceauKa/laravel-shaarli/",
"homepage": "https://github.com/MarceauKa/shaark/",
"readme": "readme.md",
"authors": [
{
@ -20,7 +21,7 @@
],
"support": {
"email": "web@404lab.fr",
"issues": "https://github.com/MarceauKa/laravel-shaarli/issues"
"issues": "https://github.com/MarceauKa/shaark/issues"
},
"require": {
"php": "^7.2",

303
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "daac898cd5d87c84d34e8942d7faf39f",
"content-hash": "7ece66f2b46f2d0d5f2aacc0c7b151d0",
"packages": [
{
"name": "clue/socket-raw",
@ -96,16 +96,16 @@
},
{
"name": "doctrine/cache",
"version": "v1.8.1",
"version": "1.9.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/cache.git",
"reference": "d4374ae95b36062d02ef310100ed33d78738d76c"
"reference": "c15dcd24b756f9e52ea7c3ae8227354f3628f11a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/cache/zipball/d4374ae95b36062d02ef310100ed33d78738d76c",
"reference": "d4374ae95b36062d02ef310100ed33d78738d76c",
"url": "https://api.github.com/repos/doctrine/cache/zipball/c15dcd24b756f9e52ea7c3ae8227354f3628f11a",
"reference": "c15dcd24b756f9e52ea7c3ae8227354f3628f11a",
"shasum": ""
},
"require": {
@ -116,7 +116,7 @@
},
"require-dev": {
"alcaeus/mongo-php-adapter": "^1.1",
"doctrine/coding-standard": "^4.0",
"doctrine/coding-standard": "^6.0",
"mongodb/mongodb": "^1.1",
"phpunit/phpunit": "^7.0",
"predis/predis": "~1.0"
@ -127,7 +127,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.8.x-dev"
"dev-master": "1.9.x-dev"
}
},
"autoload": {
@ -161,13 +161,21 @@
"email": "schmittjoh@gmail.com"
}
],
"description": "Caching library offering an object-oriented API for many cache backends",
"homepage": "https://www.doctrine-project.org",
"description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
"homepage": "https://www.doctrine-project.org/projects/cache.html",
"keywords": [
"abstraction",
"apcu",
"cache",
"caching"
"caching",
"couchdb",
"memcached",
"php",
"redis",
"riak",
"xcache"
],
"time": "2019-10-28T09:31:32+00:00"
"time": "2019-11-11T10:31:52+00:00"
},
{
"name": "doctrine/dbal",
@ -263,16 +271,16 @@
},
{
"name": "doctrine/event-manager",
"version": "v1.0.0",
"version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/event-manager.git",
"reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3"
"reference": "629572819973f13486371cb611386eb17851e85c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3",
"reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3",
"url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c",
"reference": "629572819973f13486371cb611386eb17851e85c",
"shasum": ""
},
"require": {
@ -282,7 +290,7 @@
"doctrine/common": "<2.9@dev"
},
"require-dev": {
"doctrine/coding-standard": "^4.0",
"doctrine/coding-standard": "^6.0",
"phpunit/phpunit": "^7.0"
},
"type": "library",
@ -301,6 +309,10 @@
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
@ -309,10 +321,6 @@
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
@ -326,27 +334,29 @@
"email": "ocramius@gmail.com"
}
],
"description": "Doctrine Event Manager component",
"description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
"homepage": "https://www.doctrine-project.org/projects/event-manager.html",
"keywords": [
"event",
"eventdispatcher",
"eventmanager"
"event dispatcher",
"event manager",
"event system",
"events"
],
"time": "2018-06-11T11:59:03+00:00"
"time": "2019-11-10T09:48:07+00:00"
},
{
"name": "doctrine/inflector",
"version": "v1.3.0",
"version": "1.3.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
"reference": "5527a48b7313d15261292c149e55e26eae771b0a"
"reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a",
"reference": "5527a48b7313d15261292c149e55e26eae771b0a",
"url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1",
"reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1",
"shasum": ""
},
"require": {
@ -371,6 +381,10 @@
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
@ -379,10 +393,6 @@
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
@ -400,20 +410,20 @@
"singularize",
"string"
],
"time": "2018-01-09T20:05:19+00:00"
"time": "2019-10-30T19:59:35+00:00"
},
{
"name": "doctrine/lexer",
"version": "1.1.0",
"version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/lexer.git",
"reference": "e17f069ede36f7534b95adec71910ed1b49c74ea"
"reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/lexer/zipball/e17f069ede36f7534b95adec71910ed1b49c74ea",
"reference": "e17f069ede36f7534b95adec71910ed1b49c74ea",
"url": "https://api.github.com/repos/doctrine/lexer/zipball/5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6",
"reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6",
"shasum": ""
},
"require": {
@ -427,7 +437,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1.x-dev"
"dev-master": "1.2.x-dev"
}
},
"autoload": {
@ -462,7 +472,7 @@
"parser",
"php"
],
"time": "2019-07-30T19:33:28+00:00"
"time": "2019-10-30T14:39:59+00:00"
},
{
"name": "dragonmantank/cron-expression",
@ -973,16 +983,16 @@
},
{
"name": "jaybizzle/crawler-detect",
"version": "v1.2.86",
"version": "v1.2.88",
"source": {
"type": "git",
"url": "https://github.com/JayBizzle/Crawler-Detect.git",
"reference": "1835311c4f458b2f59bbfec05ebfc64ac382b6ee"
"reference": "4ede3431afaa5b77b6d9414935184edbcfffa822"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/1835311c4f458b2f59bbfec05ebfc64ac382b6ee",
"reference": "1835311c4f458b2f59bbfec05ebfc64ac382b6ee",
"url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/4ede3431afaa5b77b6d9414935184edbcfffa822",
"reference": "4ede3431afaa5b77b6d9414935184edbcfffa822",
"shasum": ""
},
"require": {
@ -1018,7 +1028,7 @@
"crawlerdetect",
"php crawler detect"
],
"time": "2019-10-15T20:54:57+00:00"
"time": "2019-11-07T21:06:22+00:00"
},
{
"name": "jenssegers/agent",
@ -1153,16 +1163,16 @@
},
{
"name": "laravel/framework",
"version": "v6.5.0",
"version": "v6.5.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
"reference": "6d120a21ef0c69630e92dec67932ef434c746019"
"reference": "e47180500498cf8aa2a8ffb59a3b4daa007fa13d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/6d120a21ef0c69630e92dec67932ef434c746019",
"reference": "6d120a21ef0c69630e92dec67932ef434c746019",
"url": "https://api.github.com/repos/laravel/framework/zipball/e47180500498cf8aa2a8ffb59a3b4daa007fa13d",
"reference": "e47180500498cf8aa2a8ffb59a3b4daa007fa13d",
"shasum": ""
},
"require": {
@ -1295,7 +1305,7 @@
"framework",
"laravel"
],
"time": "2019-11-05T14:32:58+00:00"
"time": "2019-11-12T15:20:18+00:00"
},
{
"name": "laravel/scout",
@ -1917,16 +1927,16 @@
},
{
"name": "monolog/monolog",
"version": "2.0.0",
"version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "68545165e19249013afd1d6f7485aecff07a2d22"
"reference": "f9d56fd2f5533322caccdfcddbb56aedd622ef1c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/68545165e19249013afd1d6f7485aecff07a2d22",
"reference": "68545165e19249013afd1d6f7485aecff07a2d22",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/f9d56fd2f5533322caccdfcddbb56aedd622ef1c",
"reference": "f9d56fd2f5533322caccdfcddbb56aedd622ef1c",
"shasum": ""
},
"require": {
@ -1994,7 +2004,7 @@
"logging",
"psr-3"
],
"time": "2019-08-30T09:56:44+00:00"
"time": "2019-11-13T10:27:43+00:00"
},
{
"name": "myclabs/php-enum",
@ -2219,16 +2229,16 @@
},
{
"name": "nikic/php-parser",
"version": "v4.2.5",
"version": "v4.3.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "b76bbc3c51f22c570648de48e8c2d941ed5e2cf2"
"reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/b76bbc3c51f22c570648de48e8c2d941ed5e2cf2",
"reference": "b76bbc3c51f22c570648de48e8c2d941ed5e2cf2",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9a9981c347c5c49d6dfe5cf826bb882b824080dc",
"reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc",
"shasum": ""
},
"require": {
@ -2236,7 +2246,7 @@
"php": ">=7.0"
},
"require-dev": {
"ircmaxell/php-yacc": "0.0.4",
"ircmaxell/php-yacc": "0.0.5",
"phpunit/phpunit": "^6.5 || ^7.0 || ^8.0"
},
"bin": [
@ -2245,7 +2255,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.2-dev"
"dev-master": "4.3-dev"
}
},
"autoload": {
@ -2267,7 +2277,7 @@
"parser",
"php"
],
"time": "2019-10-25T18:33:07+00:00"
"time": "2019-11-08T13:50:10+00:00"
},
{
"name": "norkunas/youtube-dl-php",
@ -2521,28 +2531,28 @@
},
{
"name": "phpoption/phpoption",
"version": "1.5.1",
"version": "1.5.2",
"source": {
"type": "git",
"url": "https://github.com/schmittjoh/php-option.git",
"reference": "894e8f93890b79f29911cce497fe811fe9d931ba"
"reference": "2ba2586380f8d2b44ad1b9feb61c371020b27793"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/schmittjoh/php-option/zipball/894e8f93890b79f29911cce497fe811fe9d931ba",
"reference": "894e8f93890b79f29911cce497fe811fe9d931ba",
"url": "https://api.github.com/repos/schmittjoh/php-option/zipball/2ba2586380f8d2b44ad1b9feb61c371020b27793",
"reference": "2ba2586380f8d2b44ad1b9feb61c371020b27793",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "4.7.*"
"phpunit/phpunit": "^4.7|^5.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3-dev"
"dev-master": "1.5-dev"
}
},
"autoload": {
@ -2567,7 +2577,7 @@
"php",
"type"
],
"time": "2019-11-06T12:42:47+00:00"
"time": "2019-11-06T22:27:00+00:00"
},
{
"name": "predis/predis",
@ -3164,16 +3174,16 @@
},
{
"name": "spatie/laravel-backup",
"version": "6.7.3",
"version": "6.7.4",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-backup.git",
"reference": "de1bd3cc0decdaab2d286a15334edab1da3f6d76"
"reference": "e3ea9bc9994be5cf8d9e10b202ed838380e0b4e4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/spatie/laravel-backup/zipball/de1bd3cc0decdaab2d286a15334edab1da3f6d76",
"reference": "de1bd3cc0decdaab2d286a15334edab1da3f6d76",
"url": "https://api.github.com/repos/spatie/laravel-backup/zipball/e3ea9bc9994be5cf8d9e10b202ed838380e0b4e4",
"reference": "e3ea9bc9994be5cf8d9e10b202ed838380e0b4e4",
"shasum": ""
},
"require": {
@ -3235,7 +3245,7 @@
"laravel-backup",
"spatie"
],
"time": "2019-10-31T00:43:17+00:00"
"time": "2019-11-07T22:11:24+00:00"
},
{
"name": "spatie/laravel-medialibrary",
@ -3472,16 +3482,16 @@
},
{
"name": "swiftmailer/swiftmailer",
"version": "v6.2.1",
"version": "v6.2.3",
"source": {
"type": "git",
"url": "https://github.com/swiftmailer/swiftmailer.git",
"reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a"
"reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a",
"reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/149cfdf118b169f7840bbe3ef0d4bc795d1780c9",
"reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9",
"shasum": ""
},
"require": {
@ -3530,20 +3540,20 @@
"mail",
"mailer"
],
"time": "2019-04-21T09:21:45+00:00"
"time": "2019-11-12T09:31:26+00:00"
},
{
"name": "symfony/console",
"version": "v4.3.6",
"version": "v4.3.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "136c4bd62ea871d00843d1bc0316de4c4a84bb78"
"reference": "831424efae0a1fe6642784bd52aae14ece6538e6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/136c4bd62ea871d00843d1bc0316de4c4a84bb78",
"reference": "136c4bd62ea871d00843d1bc0316de4c4a84bb78",
"url": "https://api.github.com/repos/symfony/console/zipball/831424efae0a1fe6642784bd52aae14ece6538e6",
"reference": "831424efae0a1fe6642784bd52aae14ece6538e6",
"shasum": ""
},
"require": {
@ -3605,11 +3615,11 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
"time": "2019-10-30T12:58:49+00:00"
"time": "2019-11-13T07:29:07+00:00"
},
{
"name": "symfony/css-selector",
"version": "v4.3.6",
"version": "v4.3.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
@ -3662,7 +3672,7 @@
},
{
"name": "symfony/debug",
"version": "v4.3.6",
"version": "v4.3.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
@ -3718,7 +3728,7 @@
},
{
"name": "symfony/dom-crawler",
"version": "v4.3.6",
"version": "v4.3.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
@ -3779,16 +3789,16 @@
},
{
"name": "symfony/event-dispatcher",
"version": "v4.3.6",
"version": "v4.3.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "6229f58993e5a157f6096fc7145c0717d0be8807"
"reference": "0df002fd4f500392eabd243c2947061a50937287"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6229f58993e5a157f6096fc7145c0717d0be8807",
"reference": "6229f58993e5a157f6096fc7145c0717d0be8807",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/0df002fd4f500392eabd243c2947061a50937287",
"reference": "0df002fd4f500392eabd243c2947061a50937287",
"shasum": ""
},
"require": {
@ -3845,7 +3855,7 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
"time": "2019-10-01T16:40:32+00:00"
"time": "2019-11-03T09:04:05+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@ -3907,7 +3917,7 @@
},
{
"name": "symfony/finder",
"version": "v4.3.6",
"version": "v4.3.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
@ -3956,16 +3966,16 @@
},
{
"name": "symfony/http-foundation",
"version": "v4.3.6",
"version": "v4.3.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
"reference": "38f63e471cda9d37ac06e76d14c5ea2ec5887051"
"reference": "cabe67275034e173350e158f3b1803d023880227"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/38f63e471cda9d37ac06e76d14c5ea2ec5887051",
"reference": "38f63e471cda9d37ac06e76d14c5ea2ec5887051",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/cabe67275034e173350e158f3b1803d023880227",
"reference": "cabe67275034e173350e158f3b1803d023880227",
"shasum": ""
},
"require": {
@ -4007,20 +4017,20 @@
],
"description": "Symfony HttpFoundation Component",
"homepage": "https://symfony.com",
"time": "2019-10-30T12:58:49+00:00"
"time": "2019-11-12T13:07:20+00:00"
},
{
"name": "symfony/http-kernel",
"version": "v4.3.6",
"version": "v4.3.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "56acfda9e734e8715b3b0e6859cdb4f5b28757bf"
"reference": "5fdf186f26f9080de531d3f1d024348b2f0ab12f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/56acfda9e734e8715b3b0e6859cdb4f5b28757bf",
"reference": "56acfda9e734e8715b3b0e6859cdb4f5b28757bf",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/5fdf186f26f9080de531d3f1d024348b2f0ab12f",
"reference": "5fdf186f26f9080de531d3f1d024348b2f0ab12f",
"shasum": ""
},
"require": {
@ -4099,20 +4109,20 @@
],
"description": "Symfony HttpKernel Component",
"homepage": "https://symfony.com",
"time": "2019-11-01T10:00:03+00:00"
"time": "2019-11-13T09:07:28+00:00"
},
{
"name": "symfony/mime",
"version": "v4.3.6",
"version": "v4.3.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
"reference": "3c0e197529da6e59b217615ba8ee7604df88b551"
"reference": "22aecf6b11638ef378fab25d6c5a2da8a31a1448"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/mime/zipball/3c0e197529da6e59b217615ba8ee7604df88b551",
"reference": "3c0e197529da6e59b217615ba8ee7604df88b551",
"url": "https://api.github.com/repos/symfony/mime/zipball/22aecf6b11638ef378fab25d6c5a2da8a31a1448",
"reference": "22aecf6b11638ef378fab25d6c5a2da8a31a1448",
"shasum": ""
},
"require": {
@ -4158,11 +4168,11 @@
"mime",
"mime-type"
],
"time": "2019-10-30T12:58:49+00:00"
"time": "2019-11-12T13:10:02+00:00"
},
{
"name": "symfony/options-resolver",
"version": "v4.3.6",
"version": "v4.3.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
@ -4567,7 +4577,7 @@
},
{
"name": "symfony/process",
"version": "v4.3.6",
"version": "v4.3.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
@ -4616,16 +4626,16 @@
},
{
"name": "symfony/routing",
"version": "v4.3.6",
"version": "v4.3.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
"reference": "63a9920cc86fcc745e5ea254e362f02b615290b9"
"reference": "533fd12a41fb9ce8d4e861693365427849487c0e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/63a9920cc86fcc745e5ea254e362f02b615290b9",
"reference": "63a9920cc86fcc745e5ea254e362f02b615290b9",
"url": "https://api.github.com/repos/symfony/routing/zipball/533fd12a41fb9ce8d4e861693365427849487c0e",
"reference": "533fd12a41fb9ce8d4e861693365427849487c0e",
"shasum": ""
},
"require": {
@ -4688,20 +4698,20 @@
"uri",
"url"
],
"time": "2019-10-30T12:58:49+00:00"
"time": "2019-11-04T20:23:03+00:00"
},
{
"name": "symfony/service-contracts",
"version": "v1.1.7",
"version": "v1.1.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
"reference": "ffcde9615dc5bb4825b9f6aed07716f1f57faae0"
"reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffcde9615dc5bb4825b9f6aed07716f1f57faae0",
"reference": "ffcde9615dc5bb4825b9f6aed07716f1f57faae0",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffc7f5692092df31515df2a5ecf3b7302b3ddacf",
"reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf",
"shasum": ""
},
"require": {
@ -4746,20 +4756,20 @@
"interoperability",
"standards"
],
"time": "2019-09-17T11:12:18+00:00"
"time": "2019-10-14T12:27:06+00:00"
},
{
"name": "symfony/translation",
"version": "v4.3.6",
"version": "v4.3.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
"reference": "a3aa590ce944afb3434d7a55f81b00927144d5ec"
"reference": "bbce239b35b0cd47bd75848b23e969f17dd970e7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/a3aa590ce944afb3434d7a55f81b00927144d5ec",
"reference": "a3aa590ce944afb3434d7a55f81b00927144d5ec",
"url": "https://api.github.com/repos/symfony/translation/zipball/bbce239b35b0cd47bd75848b23e969f17dd970e7",
"reference": "bbce239b35b0cd47bd75848b23e969f17dd970e7",
"shasum": ""
},
"require": {
@ -4822,7 +4832,7 @@
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com",
"time": "2019-10-30T12:53:54+00:00"
"time": "2019-11-06T23:21:49+00:00"
},
{
"name": "symfony/translation-contracts",
@ -4883,7 +4893,7 @@
},
{
"name": "symfony/var-dumper",
"version": "v4.3.6",
"version": "v4.3.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
@ -5242,16 +5252,16 @@
"packages-dev": [
{
"name": "doctrine/instantiator",
"version": "1.2.0",
"version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
"reference": "a2c590166b2133a4633738648b6b064edae0814a"
"reference": "ae466f726242e637cebdd526a7d991b9433bacf1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a",
"reference": "a2c590166b2133a4633738648b6b064edae0814a",
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1",
"reference": "ae466f726242e637cebdd526a7d991b9433bacf1",
"shasum": ""
},
"require": {
@ -5294,20 +5304,20 @@
"constructor",
"instantiate"
],
"time": "2019-03-17T17:37:11+00:00"
"time": "2019-10-21T16:45:58+00:00"
},
{
"name": "facade/flare-client-php",
"version": "1.1.1",
"version": "1.1.2",
"source": {
"type": "git",
"url": "https://github.com/facade/flare-client-php.git",
"reference": "608c2be3157b09f1868ca97ea4ddf3434ee83d63"
"reference": "04c0bbd1881942f59e27877bac3b29ba57519666"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/facade/flare-client-php/zipball/608c2be3157b09f1868ca97ea4ddf3434ee83d63",
"reference": "608c2be3157b09f1868ca97ea4ddf3434ee83d63",
"url": "https://api.github.com/repos/facade/flare-client-php/zipball/04c0bbd1881942f59e27877bac3b29ba57519666",
"reference": "04c0bbd1881942f59e27877bac3b29ba57519666",
"shasum": ""
},
"require": {
@ -5348,20 +5358,20 @@
"flare",
"reporting"
],
"time": "2019-10-07T19:15:46+00:00"
"time": "2019-11-08T11:11:17+00:00"
},
{
"name": "facade/ignition",
"version": "1.11.2",
"version": "1.12.0",
"source": {
"type": "git",
"url": "https://github.com/facade/ignition.git",
"reference": "862cbc2dfffa1fa28b47822a116e5b2e03b421db"
"reference": "67736a01597b9e08f00a1fc8966b92b918dba5ea"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/facade/ignition/zipball/862cbc2dfffa1fa28b47822a116e5b2e03b421db",
"reference": "862cbc2dfffa1fa28b47822a116e5b2e03b421db",
"url": "https://api.github.com/repos/facade/ignition/zipball/67736a01597b9e08f00a1fc8966b92b918dba5ea",
"reference": "67736a01597b9e08f00a1fc8966b92b918dba5ea",
"shasum": ""
},
"require": {
@ -5419,7 +5429,7 @@
"laravel",
"page"
],
"time": "2019-10-13T10:42:06+00:00"
"time": "2019-11-14T10:51:35+00:00"
},
{
"name": "facade/ignition-contracts",
@ -5686,16 +5696,16 @@
},
{
"name": "laravel/dusk",
"version": "v5.5.2",
"version": "v5.6.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/dusk.git",
"reference": "aed755282a13a9b36d26854a0105d519aa22fec9"
"reference": "dd2156269898f6f58f029f0cb4d4b0d43437f29e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/dusk/zipball/aed755282a13a9b36d26854a0105d519aa22fec9",
"reference": "aed755282a13a9b36d26854a0105d519aa22fec9",
"url": "https://api.github.com/repos/laravel/dusk/zipball/dd2156269898f6f58f029f0cb4d4b0d43437f29e",
"reference": "dd2156269898f6f58f029f0cb4d4b0d43437f29e",
"shasum": ""
},
"require": {
@ -5715,6 +5725,9 @@
"mockery/mockery": "^1.0",
"phpunit/phpunit": "^7.5|^8.0"
},
"suggest": {
"ext-pcntl": "Used to gracefully terminate Dusk when tests are running."
},
"type": "library",
"extra": {
"branch-alias": {
@ -5747,7 +5760,7 @@
"testing",
"webdriver"
],
"time": "2019-09-24T20:30:07+00:00"
"time": "2019-11-12T16:55:51+00:00"
},
{
"name": "mockery/mockery",

View File

@ -1,7 +1,7 @@
<?php
return [
'name' => env('APP_NAME', 'Laravel Shaarli'),
'name' => env('APP_NAME', 'Shaark'),
'env' => env('APP_ENV', 'production'),
'debug' => env('APP_DEBUG', false),
'url' => env('APP_URL', 'http://localhost'),

View File

@ -3,30 +3,7 @@
use App\Login;
return [
/*
|--------------------------------------------------------------------------
| Throttling authentication logs
|--------------------------------------------------------------------------
|
| You can skip authentication logs for a device if the last authentication
| log creation is inferior to the throttle value. Set 0 to disable
| throttling, or set the throttling time in minutes.
|
*/
'throttle' => env('AUTH_CHECKER_THROTTLE', 0),
/*
|--------------------------------------------------------------------------
| Device matching attributes
|--------------------------------------------------------------------------
|
| Declare fields that are used to define if a device is new or not for an
| user. For example, specifying 'platform', 'platform_version' and
| 'browser' will not create a new device if the user already has
| a device registered for these attributes.
|
*/
'device_matching_attributes' => [
# Ex: OS X, Windows, ...
'platform',
@ -37,32 +14,11 @@ return [
# Ex: 42.0.2311.135, 37.0, ...
//'browser_version',
],
/*
|--------------------------------------------------------------------------
| User login column
|--------------------------------------------------------------------------
|
| Declare the name of the column used to authenticate an user.
| By default, it's 'email' but you can change it to your needs.
|
*/
'login_column' => 'email',
/*
|--------------------------------------------------------------------------
| Models
|--------------------------------------------------------------------------
|
| Customize models used by the package.
| Custom models must extends defaults ones.
|
*/
'models' => [
# Ex: App\Models\Device (default: Lab404\AuthChecker\Models\Device)
'device' => null,
# Ex: App\Models\Login (default: Lab404\AuthChecker\Models\Login)
'login' => Login::class,
]
];

View File

@ -55,7 +55,7 @@ return [
'rules' => ['nullable'],
],
'custom_icon' => [
'default' => '/images/logo-shaarli.png',
'default' => '/images/logo-shaark.png',
'rules' => ['nullable', 'image', 'mimes:png', 'dimensions:width=512,height=512'],
],
'secure_login' => [

View File

@ -1,12 +0,0 @@
<?php
return [
'primary_keys_type' => 'integer',
'normalizer' => '\Conner\Tagging\TaggingUtility::slug',
'displayer' => '\Illuminate\Support\Str::title',
'untag_on_delete' => true,
'delete_unused_tags' => false,
'tag_model'=>'\Conner\Tagging\Model\Tag',
'delimiter' => '-',
'tagged_model' => '\Conner\Tagging\Model\Tagged',
];

15
directory.md Normal file
View File

@ -0,0 +1,15 @@
# Shaark listing
You host your own Shaark public instance and you want to share it with other users? Feel free to make a PR to add your own to this file.
### Rules
* Your Shaark must be public
* Use alphabetical order
* Use this format `- SHAARK_NAME - [URL](URL)`
### Listing
- Arciela - [https://arciela.com](https://arciela.com)
- Shaark - [https://shaark.mka.ovh](https://shaark.mka.ovh)
- Marceau Ka - [https://note.casals.fr](https://note.casals.fr)

View File

@ -1,4 +1,4 @@
# Shaarli - Archiving
# Shaark - Archiving
- [PDF Archiving](#pdf-archiving)
- [Media Archiving](#media-archiving)
@ -34,4 +34,4 @@ You can use the **Check** button to test your configuration.
## Caveats
Archiving is performance expensive and should be run in production using queues. See our [installation configuration](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/installation.md) to learn more about it.
Archiving is performance expensive and should be run in production using queues. See our [installation configuration](https://github.com/MarceauKa/shaark/blob/dev/documentation/installation.md) to learn more about it.

View File

@ -1,4 +1,4 @@
# Shaarli - Backup
# Shaark - Backup
## Getting started
@ -19,7 +19,7 @@ In the settings section of the app, go to the **Backup** panel. You can:
- Enable or disable automatic backup.
- Choose to backup **daily** or **weekly**.
- Choose to save only the database. Saving files can consume a lot of disk space, especially if you use [archiving](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/archiving.md).
- Choose to save only the database. Saving files can consume a lot of disk space, especially if you use [archiving](https://github.com/MarceauKa/shaark/blob/dev/documentation/archiving.md).
## Commands

View File

@ -1,4 +1,4 @@
# Shaarli - Dependencies
# Shaark - Dependencies
Our dependencies with link to their documentation and why we use it.
@ -9,10 +9,10 @@ Our dependencies with link to their documentation and why we use it.
- [excel](https://github.com/Maatwebsite/Laravel-Excel) is used to generate exports as xlsx or csv
- [valuestore](https://github.com/spatie/valuestore) is used for application settings
- [dom-crawler](https://github.com/symfony/dom-crawler) is used to read metadata from posted links
- [puphpeteer](https://github.com/nesk/puphpeteer/) is used to [save your links as PDF](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/archiving.md) using a chrome browser
- [youtube-dl-php](https://github.com/norkunas/youtube-dl-php) is a bridge to youtube-dl to [save your links](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/archiving.md) (youtube, soundcloud, ...) as a local copy
- [puphpeteer](https://github.com/nesk/puphpeteer/) is used to [save your links as PDF](https://github.com/MarceauKa/shaark/blob/dev/documentation/archiving.md) using a chrome browser
- [youtube-dl-php](https://github.com/norkunas/youtube-dl-php) is a bridge to youtube-dl to [save your links](https://github.com/MarceauKa/shaark/blob/dev/documentation/archiving.md) (youtube, soundcloud, ...) as a local copy
- [laravel-media-library](https://github.com/spatie/laravel-medialibrary) is used to attach images to models and image manipulation
- [laravel-backup](https://github.com/spatie/laravel-backup) is used for... [backups](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/backup.md) !
- [laravel-backup](https://github.com/spatie/laravel-backup) is used for... [backups](https://github.com/MarceauKa/shaark/blob/dev/documentation/backup.md) !
### JS

View File

@ -1,4 +1,4 @@
# Shaarli - Installation
# Shaark - Installation
- [Requirements](#requirements)
- [Installation](#installation)
@ -21,7 +21,7 @@
### Installation with Git
`git clone https://github.com/MarceauKa/laravel-shaarli && cd laravel-shaarli`
`git clone https://github.com/MarceauKa/shaark && cd shaark`
⚠️ Your domain configuration must point to `/public` folder.
@ -46,7 +46,7 @@ Once created, run `php artisan key:generate` to generate a unique key for you ap
Default user is `admin@example.com` with password `secret`.
- With install command:
`php artisan shaarli:install`
`php artisan shaark:install`
- With no data (user must be created manually):
`php artisan migrate`
- With default data:
@ -54,11 +54,11 @@ Default user is `admin@example.com` with password `secret`.
### CRON job
CRON job is used for automations: [backups](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/backup.md), file cleaning, ...
CRON job is used for automations: [backups](https://github.com/MarceauKa/shaark/blob/dev/documentation/backup.md), file cleaning, ...
`* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1`
🎉 Shaarli is now installed!
🎉 Shaark is now installed!
## Configuration
@ -95,7 +95,7 @@ MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=hello@example.com
MAIL_FROM_NAME="Laravel Shaarli"
MAIL_FROM_NAME="Shaark"
```
### Session
@ -110,7 +110,7 @@ SESSION_LIFETIME=120
### Queue (optional)
Recommended configuration: `sync` (local), `redis` (production). Queues are used for [archiving](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/archiving).
Recommended configuration: `sync` (local), `redis` (production). Queues are used for [archiving](https://github.com/MarceauKa/shaark/blob/dev/documentation/archiving).
Queue (optional) can use sync (default), redis, database, beanstalkd, amazon sqs (see [laravel queue configuration](https://laravel.com/docs/6.x/queues)).
```
@ -147,12 +147,12 @@ The install command is useful:
⚠ Install command will not work with non-dev composer dependencies installed
Run: `php artisan shaarli:install`
Run: `php artisan shaark:install`
## Update command
Git and composer must be accessible.
Run: `php artisan shaarli:update`.
Run: `php artisan shaark:update`.
This command is a shortcut for:
```

View File

@ -1,14 +1,14 @@
# Shaarli - Troubleshooting
# Shaark - Troubleshooting
## Install and update
At first, read our [installation guide](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/installation.md).
At first, read our [installation guide](https://github.com/MarceauKa/shaark/blob/dev/documentation/installation.md).
### Can't access the app once installed
Make sure the document root of your host points to the `/public` folder.
### Error when updating with the `shaarli:update` command
### Error when updating with the `shaark:update` command
Sometimes you can have issues when upgrading, running the command a second time will generaly solve the problem.
@ -39,18 +39,18 @@ By default, search is made using a "full-text" engine powered by [Laravel Scout]
It allows typing errors in your search (ex: `helol` instead of `hello`) and operators (ex: `foo -bar` search `foo` without `bar`).
But it's not robust against non-latin search (ex: `こんにちは`, `добрый день`, etc).
Laravel Shaarli provides a fallback to a classic SQL search using the `LIKE` operator. Set your preference in the settings section.
Shaark provides a fallback to a classic SQL search using the `LIKE` operator. Set your preference in the settings section.
## Archiving
Read our [archiving guide](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/archiving.md).
Read our [archiving guide](https://github.com/MarceauKa/shaark/blob/dev/documentation/archiving.md).
## Backup
Read our [backup guide](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/backup.md).
Read our [backup guide](https://github.com/MarceauKa/shaark/blob/dev/documentation/backup.md).
## Dependencies
See [dependencies](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/dependencies.md) used in this application.
See [dependencies](https://github.com/MarceauKa/shaark/blob/dev/documentation/dependencies.md) used in this application.

View File

@ -9,7 +9,7 @@
processIsolation="false"
stopOnFailure="true">
<testsuites>
<testsuite name="Laravel Shaarli Test Suite">
<testsuite name="Shaark Test Suite">
<file>./tests/Browser/AuthTest.php</file>
<file>./tests/Browser/BrowseTest.php</file>
<file>./tests/Browser/LinkFormTest.php</file>

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

View File

@ -1,12 +1,12 @@
<p align="center">
<img width="256" height="256" src="https://raw.githubusercontent.com/MarceauKa/laravel-shaarli/dev/public/images/logo-shaarli.png" alt="Logo Shaarli" />
<img width="256" height="256" src="https://raw.githubusercontent.com/MarceauKa/shaark/dev/public/images/logo-shaark.png" alt="Logo Shaark" />
</p>
**Laravel Shaarli is a self-hosted platform to keep and share your content: web links, posts, passwords and pictures.**
**Shaark is a self-hosted platform to keep and share your content: web links, posts, passwords and pictures.**
All of your data can be **private, public or both** and can be browsed by **tags** or **all-in-one search**.
**Laravel Shaarli** is production ready, inspired by [Shaarli](https://github.com/shaarli/Shaarli)
**Shaark** is production ready, inspired by [Shaarli](https://github.com/shaarli/Shaarli)
and built with [Laravel](https://github.com/laravel/laravel) and [Vue.js](https://vuejs.org/).
## Summary
@ -25,21 +25,21 @@ and built with [Laravel](https://github.com/laravel/laravel) and [Vue.js](https:
- [x] Export / Import (even original Shaarli)
- [x] Theming (dark mode, background)
- [x] i18n (🇬🇧, 🇫🇷, 🇩🇪, 🇯🇵)
- [x] [Archiving](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/archiving.md) (as pdf, as media)
- [x] DB encryption, 2-FA, Multi-users, [backup](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/backup.md)
- [x] [Archiving](https://github.com/MarceauKa/shaark/blob/dev/documentation/archiving.md) (as pdf, as media)
- [x] DB encryption, 2-FA, Multi-users, [backup](https://github.com/MarceauKa/shaark/blob/dev/documentation/backup.md)
## Demo
![Homepage](/resources/screenshots/home.jpg?raw=true "Homepage")
A public demo is available at [https://shaarli.mka.ovh](https://shaarli.mka.ovh). Credentials are **admin@example.com** and **secret**.
A public demo is available at [https://shaark.mka.ovh](https://shaark.mka.ovh). Credentials are **admin@example.com** and **secret**.
This demo is resetted hourly.
## [Installation](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/installation.md)
## [Installation](https://github.com/MarceauKa/shaark/blob/dev/documentation/installation.md)
See the extensive [installation documentation](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/installation.md).
See the extensive [installation documentation](https://github.com/MarceauKa/shaark/blob/dev/documentation/installation.md).
## [Archiving](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/archiving.md)
## [Archiving](https://github.com/MarceauKa/shaark/blob/dev/documentation/archiving.md)
Each link you share can be archived the way you want:
@ -48,7 +48,7 @@ from youtube, soundcloud, vimeo and [few more sites](http://ytdl-org.github.io/y
- [Puppeteer](https://github.com/GoogleChrome/puppeteer) will be used by default to save the webpage as a PDF.
Learn more in the [archiving documentation](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/archiving.md).
Learn more in the [archiving documentation](https://github.com/MarceauKa/shaark/blob/dev/documentation/archiving.md).
## Contribute
@ -59,13 +59,13 @@ If you make changes to JS, don't compile assets in production, I'll manually com
### Translation
Shaarli is actually available in **English**, **French** and **German**. Feel free to make a pull request to add or update a localization.
Shaark is actually available in **English**, **French** and **German**. Feel free to make a pull request to add or update a localization.
You can see laravel base localizations [on this repo](https://github.com/caouecs/Laravel-lang).
### Your Shaarli
### Your Shaark
You host your own Shaarli public instance and you want to share it with other Shaarliers?
You can make a pull request to add it to our public listing located at [shaarlies.md](https://github.com/MarceauKa/laravel-shaarli/blob/dev/shaarlies.md).
You host your own Shaark public instance and you want to share it with other users?
You can make a pull request to add it to our public listing located at [directory.md](https://github.com/MarceauKa/shaark/blob/dev/directory.md).
## Security
@ -82,7 +82,7 @@ Code length and code expiration are also configurable. **Test if you application
### Auth monitoring
Shaarli logs all successful and failed auths with their associated devices.
Shaark logs all successful and failed auths with their associated devices.
### Chests encryption
@ -93,9 +93,9 @@ Since `1.2.9`, all chests data are encrypted in your database using AES-256-CBC
Others users can be admin or non-admin. Admin users are like the main user and have an access to the entire content.
Non-admin users can't access the settings section and can only see their own private content.
## [Troubleshooting](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/troubleshooting.md)
## [Troubleshooting](https://github.com/MarceauKa/shaark/blob/dev/documentation/troubleshooting.md)
All of frequent issues are answered in our [troubleshooting guide](https://github.com/MarceauKa/laravel-shaarli/blob/dev/documentation/troubleshooting.md).
All of frequent issues are answered in our [troubleshooting guide](https://github.com/MarceauKa/shaark/blob/dev/documentation/troubleshooting.md).
## Tests

2
resources/js/sw.js vendored
View File

@ -1,4 +1,4 @@
const CACHE = "shaarli";
const CACHE = "shaark";
const offlineFallbackPage = "offline";
const avoidCachingPaths = [
/chest\/.*/,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 KiB

After

Width:  |  Height:  |  Size: 162 KiB

View File

@ -0,0 +1,24 @@
-----BEGIN CERTIFICATE-----
MIIEFTCCAv2gAwIBAgIJAPAlvITbSEPEMA0GCSqGSIb3DQEBCwUAMHkxCzAJBgNV
BAYTAkZSMRYwFAYDVQQIDA1JbGUtZGUtRnJhbmNlMQ4wDAYDVQQHDAVQYXJpczEP
MA0GA1UECgwGNDA0bGFiMRwwGgYJKoZIhvcNAQkBFg13ZWJANDA0bGFiLmZyMRMw
EQYDVQQDDApkZXYuc2hhYXJrMB4XDTE5MTExNDEwMzU0NloXDTIwMTExMzEwMzU0
NloweTELMAkGA1UEBhMCRlIxFjAUBgNVBAgMDUlsZS1kZS1GcmFuY2UxDjAMBgNV
BAcMBVBhcmlzMQ8wDQYDVQQKDAY0MDRsYWIxHDAaBgkqhkiG9w0BCQEWDXdlYkA0
MDRsYWIuZnIxEzARBgNVBAMMCmRldi5zaGFhcmswggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQDOeyhxP75JJ5KHKoacVr5JLV2QOizhImWnQtsT6oi1DRD+
KFyiugHQkMlPx92RE0HIp8juTyzkD5JZEGge4iVWwGHWpYgSafmyZFs9dw+D/ETG
BJ3ac5nm/53tadCBOfzw3L7SmpHTNHjDR87BLLBOaEfmjZGQJFgqdxBkrcJETWxq
0d9sNWV4iIe/2YPmCpXTmgXl1vYovNI9BNgRcwc876NukVHY3nn+d6O/WN4ec0pQ
M1eevJNBeT5Aj1ThJco/0CnTme5n3U7F7XqRrIVImlWyv9Jhu8KAw4V5+ps976fi
yEP19e4JbUsA2ZizAFVwUYz7guszNxcYbdF9fFRNAgMBAAGjgZ8wgZwwHQYDVR0O
BBYEFIDddQnfmFy6lHjCnnpg2Yt/UMRxMB8GA1UdIwQYMBaAFIDddQnfmFy6lHjC
nnpg2Yt/UMRxMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWgMBMGA1UdJQQMMAoGCCsG
AQUFBwMBMC0GA1UdEQQmMCSCCmRldi5zaGFhcmuCFmRldi1zaGFhcmtBdEhpdmUu
bG9jYWwwDQYJKoZIhvcNAQELBQADggEBAJzc9bA1wH6V0h2FStJGDbr6ZdKdar8e
7AWnMpY+g3turJHUdvKkuVfdWlwyhSv6etViBi9q0m6pKrpLKz75dbyXCTzzhr4u
BEZ1QVqkumDabIO9K2dgryWHE8twxdEfJoWl5kh/u3dPpP6VUnia0a1cLAeZvyUy
B0OaAc0uFL76eWgUK7H3AVLMsjHSitBmpXz20pDNSh9yelvDJ8Jj40p95zXj3cKh
kFJW8WqTeQqXZ5SaxVxsExEZ0XGySHf3lgHcD5VQbrk1A9/VNAnYATYVQY0VBpDo
M5pgUQisp9M95PU0hs7PPY1wQn8AEi7f5AuOBdQi1JPVqv8hl5dVlVE=
-----END CERTIFICATE-----

View File

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDOeyhxP75JJ5KH
KoacVr5JLV2QOizhImWnQtsT6oi1DRD+KFyiugHQkMlPx92RE0HIp8juTyzkD5JZ
EGge4iVWwGHWpYgSafmyZFs9dw+D/ETGBJ3ac5nm/53tadCBOfzw3L7SmpHTNHjD
R87BLLBOaEfmjZGQJFgqdxBkrcJETWxq0d9sNWV4iIe/2YPmCpXTmgXl1vYovNI9
BNgRcwc876NukVHY3nn+d6O/WN4ec0pQM1eevJNBeT5Aj1ThJco/0CnTme5n3U7F
7XqRrIVImlWyv9Jhu8KAw4V5+ps976fiyEP19e4JbUsA2ZizAFVwUYz7guszNxcY
bdF9fFRNAgMBAAECggEAZJrlbaidUo+ReYJi7DHnrUgJWoi97UQRO5n7nIyd53li
WjPYTwFKeRDSxaigcFttphL6eALj4Islx3eTA9k0UDyUbz1gO3ifTShQvHYSfUCh
UcpWD2ZcCo1pqY/xI8XZVJJ596uQedQLMzr9pmnbzZhJ0DASSKUswCQbPLLdAOHI
bRfJ0jt+VJTJFJNj8jpSv4hQqALRem5l1RgLtgoZhADId5ObuVdd/ZNt2YUoi7Zj
nR5eGSWuHOtROEG0fkl+VrCtm930DiBIh+/V9i+z5nwTqsctk0kHhVDzZxuZiqME
eOBrUa3Yo4rBbC3wOBoA52sBPzDtHWZKu9w9HbZNgQKBgQDo6bLdmlPV0CYHSvKv
NpPwzH/V52WdJ60AY6G+Z0A7EGzVJJlOsSr5c6ZTvjhSFU4OGWsrQxbqFxvmgMbi
HNDBOBgrCqk7FLH3BVvLre1IYIBcZNzRKidQdTRJyZq/P1k4ugQseUsn8s6HIKCx
JE+Tbupef9/dl7Eb/nEam9fYqQKBgQDi8ryheI+O85+squ7HjnqtaisV++nhQG3w
B4SjF5m1MjuUJYG38pqGwYO2U4SlruoK9hWn/A3CiukL6VHi6McYvfhKG87OGeSU
Q1cMIKnEgVr1buTk2V/1ok7d22r7VtWuA37jGlY5O+NiG89ddKIgb00jDJFI8m7L
ZiALr57xBQKBgQC3vpZDSNrWlQ1LN49ZNt9jWpGHOLPrVT+gTPlu8pmzfvO8+tCP
Simy/c+7xRc9el1HtjnbuWO8bVqvb+x2uXDe3dgDLLfxShRT4kBW4PGO5cKeIVwr
DuxRBwWnKIsSUXGb1PQx+caWz3CrHcxns1Or5hazUoJTmLY6dXLZIRUZcQKBgQC9
C/aVixgKvGYGL104XjdSvV2msnHgcQsjJyAVu1MO3QlEHvovgKe4GPrepjOY0Ful
RdhEVnIf3BbFFVZg7gbrVVO+Z+udQ3RlDLM2Jv9D8X0TdYy2FV0aAFox9NTpCSx2
B/NqukWY54pB72iNMNrcqdpXl+BuI4SnairHkUOVAQKBgCYmZ3LuQeqBESiHxJwH
psOW0m4s/SVrHbYqrVWIj5rPQocGpCJXJAtFcqkAAT387GRaiaJCVaKrz/Av130e
eRnyCDWqkRdO5ksXEEM8FgFU+041sndEP8LQP2AtsykAI+jWk+rPns91ivUC9ZRh
gUe3meAMjO0Q/LvW7PKH3mI2
-----END PRIVATE KEY-----

View File

@ -1,23 +0,0 @@
-----BEGIN CERTIFICATE-----
MIID3zCCAsegAwIBAgIJALNymnhtuAWuMA0GCSqGSIb3DQEBCwUAMF0xCzAJBgNV
BAYTAkZSMRYwFAYDVQQIDA1JbGUtZGUtRnJhbmNlMQ4wDAYDVQQHDAVQYXJpczEQ
MA4GA1UECgwHU2hhYXJsaTEUMBIGA1UEAwwLZGV2LnNoYWFybGkwHhcNMTkxMDMw
MTQyNjAxWhcNMjAxMDI5MTQyNjAxWjBdMQswCQYDVQQGEwJGUjEWMBQGA1UECAwN
SWxlLWRlLUZyYW5jZTEOMAwGA1UEBwwFUGFyaXMxEDAOBgNVBAoMB1NoYWFybGkx
FDASBgNVBAMMC2Rldi5zaGFhcmxpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEA2xeI4xDur0LovfUqHVBuSVaJwDmo0E9CG5QV+C28bd5mApBfOTDkpTwZ
cx97HFWsfB2BLpmh1vJpTsfpDcJ1avBV+tMAeBbHF+V162FmtcEL/BRCyfot8ZUp
TJT+v74M5z2eC0lV68taKqJj1zLTTlBz/YLXJBvkDJVgEySbPfP17dALWx9FHxPw
tG1blgVIXQ9+t/TilX/lwHzQu50+Xm1K6RT6OCqMizFRhiHWsGjQOugBimv7u2vg
lStTxFO72W9MLSq2sQZOC/Op+tJzrzjDnbzb3mY8vaB3Cba94O7E+G07kbhUuwrd
N/GT2M1uJOAW2imc3YOBAl5gcIObAwIDAQABo4GhMIGeMB0GA1UdDgQWBBT99XcE
7gykFhaF9Sga+qdmc+s/ZjAfBgNVHSMEGDAWgBT99XcE7gykFhaF9Sga+qdmc+s/
ZjAJBgNVHRMEAjAAMAsGA1UdDwQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATAv
BgNVHREEKDAmggtkZXYuc2hhYXJsaYIXZGV2LXNoYWFybGlBdEhpdmUubG9jYWww
DQYJKoZIhvcNAQELBQADggEBAJPp9tDMbfO95iHbHpo74lofdrXbUz5frFjGm8vS
YmM5MuXYigy8YzjzHH94rgWN8h9zzJByvghlvBIWeZQhkNnYGh5gMAD5Q2tsaePs
tWTkJAAglXDSLdGExdbJ1Z+zpIJLraIhTQAj/VrvFEHiQ2rub7w4l9CnWzAHZRaa
AWq5A0dySwIsPSKf8VLBTQiDzQp9Z5wGhIjxbnkW0bd9sXrPOGWG88pMDkezgWLu
Apcy1Nz2YwcOojekaU7iqzP3HFhGigPjXC0ZYULXeTv2ezgfVroC27e0+3lB970C
jKBA1C5+1yIhs2g5OOTxN9sdjPmE2mq8UOMPTwRgGdfrKvk=
-----END CERTIFICATE-----

View File

@ -1,28 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDbF4jjEO6vQui9
9SodUG5JVonAOajQT0IblBX4Lbxt3mYCkF85MOSlPBlzH3scVax8HYEumaHW8mlO
x+kNwnVq8FX60wB4FscX5XXrYWa1wQv8FELJ+i3xlSlMlP6/vgznPZ4LSVXry1oq
omPXMtNOUHP9gtckG+QMlWATJJs98/Xt0AtbH0UfE/C0bVuWBUhdD3639OKVf+XA
fNC7nT5ebUrpFPo4KoyLMVGGIdawaNA66AGKa/u7a+CVK1PEU7vZb0wtKraxBk4L
86n60nOvOMOdvNveZjy9oHcJtr3g7sT4bTuRuFS7Ct038ZPYzW4k4BbaKZzdg4EC
XmBwg5sDAgMBAAECggEAAzS59RCnXXsuKrFut1UY+AvDIkP1u26degfVtnb83eK2
PW1dZ1nWzrAtcyjPxV9fkcVgwYzP+HQ9pEB6oY/p5fG0YGI8DIXQzgG2kwYu2ZQE
l+C4BXqat4FGRG+dtrKSP8QADww4rKWiISOVMG3295tnxxrmCQo7cQ+ygzUy7Foh
mhHP03f5wlsW+/ELc/t276xt+uNi6n5qUjxgNY5WFU/XVL5M+8xdyw0dOmkjOVzv
jwymBFJ7eb+T+YvZTSwmo3xUSTNcFIz4Qmzm740p+2Ngidi7PSpqHW94/D0jIJ61
yMsPAkOdA36I5lp37gTx9/Dbr83H8XJGv3ARrkIz0QKBgQD8pmvlUFNYgxX0h2Pe
uoaPpSbZJovkBl1NR6KFpFRYJc/9GssbsvxLySmWIkuWrK2FkMD2SqHPevf27xbh
1/p/p+Wy9OXQSxoLr/4Tk40F1FAioIc+Ord84T8Ov3gg2dI9PiFs9upBOZOQZgS6
12dGYSsZkf78Ac4V/0pjC1vXWwKBgQDd/zSpCYPJ0WvgI2tZ4WPIKhA/PkrhwtV/
eO7/B6gHJjcoz7i5Y3PEhGQFMY29E/j6DSI4ozoToZs6O52x+/pA1B2L/4Enjnwx
b6uMI3DMeRxvi2s/s8q0J8TdjkhkgBSuTOQEtVVX0JoqJaXDyV/AfL73O37IkoHY
iSIbNJpDeQKBgQCpn5IRAzzx0BCNe9ixUMnG5zqN0DNbhGpf2BhlYU6/X6Okariy
gBijSQuCoMPfBU/6vJTQxoqcohKY1yyltDuaOT8eRw2EKufxsNcEjavAniqvFNe4
D/PhA9kyLZqZc6STOYN3hM8Bu4Y3DEdgqf3MYrBtGnf2+b9DRYLLvHSMwQKBgBc+
d3cThfcFtHPdgYoBrX7x2I2mqhSFX/Fe6jdNx+wntjLRvRe8MAzth8N7csnPY4xa
/7BKdvRDQYuRXmuaZJORIh7ce9t2cc6DUMT1mQPv0mhjgrFC1ACVAWnpUe8j8gZm
CqHrkqoFL38mPfsIBLyU0zHzysyZenr/sNCEa3qRAoGAerbO7giFwoSRzknz2+a8
3GTuJBVeVyJ19ndP92aVg7a5ywYHKGhy8tZjL2Y1bU1JEMKRNPCBGLe9u1FMikgk
OOY8g2b/qD11LYYMy9a7ShFwbuiQLlVjfXUPfup4eO/5EbD+ktL4gYzyQrsBqJEI
UNsdBzIJFd0XDNImkmPsKT4=
-----END PRIVATE KEY-----

View File

@ -3,7 +3,7 @@
<head>
@include('layouts.partials.head')
</head>
<body class="{{ app('shaarli')->getIsDark() ? 'dark' : 'light' }}">
<body class="{{ app('shaark')->getIsDark() ? 'dark' : 'light' }}">
<div id="app">
@include('layouts.partials.navbar')
<main class="py-4">

View File

@ -3,7 +3,7 @@
<head>
@include('layouts.partials.head')
</head>
<body class="{{ app('shaarli')->getIsDark() ? 'dark' : 'light' }}">
<body class="{{ app('shaark')->getIsDark() ? 'dark' : 'light' }}">
<div id="app">
@include('layouts.partials.navbar')
<main class="py-4">

View File

@ -1,8 +1,8 @@
<footer>
<p class="text-center mb-0">
{{ app('shaarli')->getName() }}
&mdash; v{{ app('shaarli')::VERSION }}
&mdash; <a href="https://github.com/MarceauKa/laravel-shaarli" target="_blank">{{ __('Source code') }}</a>
{{ app('shaark')->getName() }}
&mdash; v{{ app('shaark')::VERSION }}
&mdash; <a href="https://github.com/MarceauKa/shaark" target="_blank">{{ __('Source code') }}</a>
@can('restricted')
&mdash; <a href="{{ route('feed', 'rss') }}">{{ __('RSS Feed') }}</a>
&mdash; <a href="{{ route('feed', 'atom') }}">{{ __('Atom Feed') }}</a>

View File

@ -1,6 +1,6 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>@if(isset($page_title)){{ $page_title }} - @endif{{ app('shaarli')->getName() }}</title>
<title>@if(isset($page_title)){{ $page_title }} - @endif{{ app('shaark')->getName() }}</title>
<meta name="csrf-token" content="{{ csrf_token() }}">
@if(auth()->check())
<meta name="api-token" content="{{ auth()->user()->api_token }}">
@ -12,14 +12,14 @@
@stack('meta')
<link rel="manifest" href="{{ route('pwa.manifest') }}">
<base href="{{ url()->route('home') }}">
<link rel="icon" type="image/png" href="{{ app('shaarli')->getCustomIconUrl() }}">
<link rel="icon" type="image/png" href="{{ app('shaark')->getCustomIconUrl() }}">
<link href="{{ mix('css/app.css') }}" rel="stylesheet">
@stack('css')
@if(app('shaarli')->getCustomBackgroundCss())
@if(app('shaark')->getCustomBackgroundCss())
<style>
body,
body.dark {
background-image: {!! app('shaarli')->getCustomBackgroundCss() !!};
background-image: {!! app('shaark')->getCustomBackgroundCss() !!};
background-repeat: no-repeat;
background-position: center center;
background-size: cover;

View File

@ -1,9 +1,9 @@
<nav class="navbar navbar-expand-md navbar-light mb-3" id="nav">
<div class="container">
<a class="navbar-brand" href="{{ url('/') }}">
<img src="{{ app('shaarli')->getCustomIconUrl() }}">
<img src="{{ app('shaark')->getCustomIconUrl() }}">
<span>
<span class="d-none d-md-inline">{{ app('shaarli')->getName() }}</span>
<span class="d-none d-md-inline">{{ app('shaark')->getName() }}</span>
<sup class="fa-stack" v-if="!online">
<i class="fas fa-wifi fa-stack-1x text-dark"></i>
<i class="fas fa-ban fa-stack-2x text-danger"></i>

View File

@ -5,7 +5,7 @@
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('shaarli.settings.2fa.title') }}</div>
<div class="card-header">{{ __('shaark.settings.2fa.title') }}</div>
<div class="card-body">
<form method="POST" action="{{ route('login.secure', $token) }}">

View File

@ -8,12 +8,12 @@
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
{{ __('shaarli.settings.general.title') }}
<button type="button" class="btn btn-sm btn-outline-primary" @click="installPwa" :disabled="prompt === null">{{ __('shaarli.settings.general.install_button') }}</button>
{{ __('shaark.settings.general.title') }}
<button type="button" class="btn btn-sm btn-outline-primary" @click="installPwa" :disabled="prompt === null">{{ __('shaark.settings.general.install_button') }}</button>
</div>
<div class="card-body">
<div class="form-group">
<label for="name">{{ __('shaarli.settings.general.site_name') }}</label>
<label for="name">{{ __('shaark.settings.general.site_name') }}</label>
<input type="text" class="form-control {{ $errors->has('name') ? ' is-invalid' : '' }}"
name="name" id="name" value="{{ old('name', $settings['name']) }}">
@error('name')
@ -22,7 +22,7 @@
</div>
<div class="form-group">
<label for="locale">{{ __('shaarli.settings.general.lang') }}</label>
<label for="locale">{{ __('shaark.settings.general.lang') }}</label>
<select name="locale" id="locale" class="form-control custom-select">
<option value="fr"{{ old('locale', $settings['locale']) == 'fr' ? ' selected' : '' }}>FR</option>
<option value="en"{{ old('locale', $settings['locale']) == 'en' ? ' selected' : '' }}>EN</option>
@ -38,7 +38,7 @@
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input"
name="is_private" id="is_private" {{ old('is_private', $settings['is_private']) ? ' checked' : '' }}>
<label class="custom-control-label" for="is_private">{{ __('shaarli.settings.general.private_help') }}</label>
<label class="custom-control-label" for="is_private">{{ __('shaark.settings.general.private_help') }}</label>
</div>
@error('is_private')
<span class="text-danger" role="alert">{{ $message }}</span>
@ -49,7 +49,7 @@
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input"
name="private_download" id="private_download" {{ old('private_download', $settings['private_download']) ? ' checked' : '' }}>
<label class="custom-control-label" for="private_download">{{ __('shaarli.settings.general.private_download') }}</label>
<label class="custom-control-label" for="private_download">{{ __('shaark.settings.general.private_download') }}</label>
</div>
@error('private_download')
<span class="text-danger" role="alert">{{ $message }}</span>
@ -60,7 +60,7 @@
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input"
name="use_default_search" id="use_default_search" {{ old('use_default_search', $settings['use_default_search']) ? ' checked' : '' }}>
<label class="custom-control-label" for="use_default_search">{{ __('shaarli.settings.general.use_default_search') }}</label>
<label class="custom-control-label" for="use_default_search">{{ __('shaark.settings.general.use_default_search') }}</label>
</div>
@error('use_default_search')
<span class="text-danger" role="alert">{{ $message }}</span>
@ -70,13 +70,13 @@
</div>
<div class="card mt-4">
<div class="card-header">{{ __('shaarli.settings.appearance.title') }}</div>
<div class="card-header">{{ __('shaark.settings.appearance.title') }}</div>
<div class="card-body">
<div class="form-group">
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input"
name="is_dark" id="is_dark" {{ old('is_dark', $settings['is_dark']) ? ' checked' : '' }}>
<label class="custom-control-label" for="is_dark">{{ __('shaarli.settings.appearance.is_dark') }}</label>
<label class="custom-control-label" for="is_dark">{{ __('shaark.settings.appearance.is_dark') }}</label>
</div>
</div>
@ -84,7 +84,7 @@
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input"
name="home_show_tags" id="home_show_tags" {{ old('home_show_tags', $settings['home_show_tags']) ? ' checked' : '' }}>
<label class="custom-control-label" for="home_show_tags">{{ __('shaarli.settings.appearance.home_show_tags') }}</label>
<label class="custom-control-label" for="home_show_tags">{{ __('shaark.settings.appearance.home_show_tags') }}</label>
</div>
</div>
@ -92,7 +92,7 @@
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input"
name="home_show_chests" id="home_show_chests" {{ old('home_show_chests', $settings['home_show_chests']) ? ' checked' : '' }}>
<label class="custom-control-label" for="home_show_chests">{{ __('shaarli.settings.appearance.home_show_chests') }}</label>
<label class="custom-control-label" for="home_show_chests">{{ __('shaark.settings.appearance.home_show_chests') }}</label>
</div>
</div>
@ -100,12 +100,12 @@
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input"
name="compact_cardslist" id="compact_cardslist" {{ old('compact_cardslist', $settings['compact_cardslist']) ? ' checked' : '' }}>
<label class="custom-control-label" for="compact_cardslist">{{ __('shaarli.settings.appearance.compact_cardslist') }}</label>
<label class="custom-control-label" for="compact_cardslist">{{ __('shaark.settings.appearance.compact_cardslist') }}</label>
</div>
</div>
<div class="form-group">
<label for="name">{{ __('shaarli.settings.appearance.columns_count') }}</label>
<label for="name">{{ __('shaark.settings.appearance.columns_count') }}</label>
<input type="number" class="form-control {{ $errors->has('columns_count') ? ' is-invalid' : '' }}" step="1" min="1" max="4"
name="columns_count" id="columns_count" value="{{ old('columns_count', $settings['columns_count']) }}">
@ -114,13 +114,13 @@
@enderror
</div>
<label for="name">{{ __('shaarli.settings.appearance.custom_background') }}</label>
<label for="name">{{ __('shaark.settings.appearance.custom_background') }}</label>
<background name="custom_background" :values="{{ $settings['custom_background'] ?? '{type: "none"}' }}"></background>
@error('custom_background')
<span class="text-danger" role="alert">{{ $message }}</span>
@enderror
<label for="name">{{ __('shaarli.settings.appearance.custom_icon') }}</label>
<label for="name">{{ __('shaark.settings.appearance.custom_icon') }}</label>
<div class="custom-file">
<label for="custom_icon" class="custom-file-label" data-browse="{{ __('Browse') }}">{{ __('File') }}</label>
<input type="file" class="custom-file-input" name="custom_icon" id="custom_icon" accept="image/png" />
@ -133,21 +133,21 @@
<div class="card mt-4">
<div class="card-header d-flex justify-content-between align-items-center flex-wrap">
{{ __('shaarli.settings.2fa.title') }}
{{ __('shaark.settings.2fa.title') }}
<span>
<check-feature type="email" class="btn btn-sm btn-outline-secondary" text="{{ __('shaarli.settings.2fa.check_email') }}"></check-feature>
<check-feature type="email" class="btn btn-sm btn-outline-secondary" text="{{ __('shaark.settings.2fa.check_email') }}"></check-feature>
</span>
</div>
<div class="card-body">
<div class="form-group">
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input" name="secure_login" id="secure_login" {{ old('secure_login', $settings['secure_login']) ? ' checked' : '' }}>
<label class="custom-control-label" for="secure_login">{{ __('shaarli.settings.2fa.secure_login') }}</label>
<label class="custom-control-label" for="secure_login">{{ __('shaark.settings.2fa.secure_login') }}</label>
</div>
</div>
<div class="form-group">
<label for="name">{{ __('shaarli.settings.2fa.secure_code_expires') }}</label>
<label for="name">{{ __('shaark.settings.2fa.secure_code_expires') }}</label>
<input type="number" class="form-control {{ $errors->has('secure_code_expires') ? ' is-invalid' : '' }}" step="5"
name="secure_code_expires" id="secure_code_expires" value="{{ old('secure_code_expires', $settings['secure_code_expires']) }}">
@error('secure_code_expires')
@ -156,7 +156,7 @@
</div>
<div class="form-group">
<label for="name">{{ __('shaarli.settings.2fa.secure_code_length') }}</label>
<label for="name">{{ __('shaark.settings.2fa.secure_code_length') }}</label>
<input type="number" class="form-control {{ $errors->has('secure_code_length') ? ' is-invalid' : '' }}" step="1"
name="secure_code_length" id="secure_code_length" value="{{ old('secure_code_length', $settings['secure_code_length']) }}">
@ -169,10 +169,10 @@
<div class="card mt-4">
<div class="card-header d-flex justify-content-between align-items-center flex-wrap">
{{ __('shaarli.settings.archiving.title') }}
{{ __('shaark.settings.archiving.title') }}
<span>
<check-feature type="pdf" class="btn btn-sm btn-outline-secondary" text="{{ __('shaarli.settings.archiving.check_pdf_archiving') }}"></check-feature>
<check-feature type="media" class="btn btn-sm btn-outline-secondary" text="{{ __('shaarli.settings.archiving.check_media_archiving') }}"></check-feature>
<check-feature type="pdf" class="btn btn-sm btn-outline-secondary" text="{{ __('shaark.settings.archiving.check_pdf_archiving') }}"></check-feature>
<check-feature type="media" class="btn btn-sm btn-outline-secondary" text="{{ __('shaark.settings.archiving.check_media_archiving') }}"></check-feature>
<a href="{{ route('manage.archives') }}" class="btn btn-sm btn-outline-primary" >{{ __('Manage') }}</a>
</span>
</div>
@ -182,12 +182,12 @@
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input"
name="link_archive_pdf" id="link_archive_pdf" {{ old('link_archive_pdf', $settings['link_archive_pdf']) ? ' checked' : '' }}>
<label class="custom-control-label" for="link_archive_pdf">{{ __('shaarli.settings.archiving.link_archive_pdf') }}</label>
<label class="custom-control-label" for="link_archive_pdf">{{ __('shaark.settings.archiving.link_archive_pdf') }}</label>
</div>
</div>
<div class="form-group">
<label for="node_bin">{{ __('shaarli.settings.archiving.node_bin') }}</label>
<label for="node_bin">{{ __('shaark.settings.archiving.node_bin') }}</label>
<input type="text" class="form-control {{ $errors->has('node_bin') ? ' is-invalid' : '' }}"
name="node_bin" id="node_bin" value="{{ old('node_bin', $settings['node_bin']) }}">
@error('node_bin')
@ -199,12 +199,12 @@
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input"
name="link_archive_media" id="link_archive_media" {{ old('link_archive_media', $settings['link_archive_media']) ? ' checked' : '' }}>
<label class="custom-control-label" for="link_archive_media">{{ __('shaarli.settings.archiving.link_archive_media') }}</label>
<label class="custom-control-label" for="link_archive_media">{{ __('shaark.settings.archiving.link_archive_media') }}</label>
</div>
</div>
<div class="form-group">
<label for="youtube_dl_bin">{{ __('shaarli.settings.archiving.youtube_dl_bin') }}</label>
<label for="youtube_dl_bin">{{ __('shaark.settings.archiving.youtube_dl_bin') }}</label>
<input type="text" class="form-control {{ $errors->has('youtube_dl_bin') ? ' is-invalid' : '' }}"
name="youtube_dl_bin" id="youtube_dl_bin" value="{{ old('youtube_dl_bin', $settings['youtube_dl_bin']) }}">
@error('youtube_dl_bin')
@ -213,7 +213,7 @@
</div>
<div class="form-group">
<label for="python_bin">{{ __('shaarli.settings.archiving.python_bin') }}</label>
<label for="python_bin">{{ __('shaark.settings.archiving.python_bin') }}</label>
<input type="text" class="form-control {{ $errors->has('python_bin') ? ' is-invalid' : '' }}"
name="python_bin" id="python_bin" value="{{ old('python_bin', $settings['python_bin']) }}">
@error('python_bin')
@ -224,30 +224,30 @@
</div>
<div class="card mt-4">
<div class="card-header">{{ __('shaarli.settings.backup.title') }}</div>
<div class="card-header">{{ __('shaark.settings.backup.title') }}</div>
<div class="card-body">
<div class="form-group">
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input"
name="backup_enabled" id="backup_enabled" {{ old('backup_enabled', $settings['backup_enabled']) ? ' checked' : '' }}>
<label class="custom-control-label" for="backup_enabled">{{ __('shaarli.settings.backup.enabled') }}</label>
<label class="custom-control-label" for="backup_enabled">{{ __('shaark.settings.backup.enabled') }}</label>
</div>
<span class="text-muted">{{ __('shaarli.settings.backup.enabled_help') }}</span>
<span class="text-muted">{{ __('shaark.settings.backup.enabled_help') }}</span>
</div>
<div class="form-group">
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input"
name="backup_only_database" id="backup_only_database" {{ old('backup_only_database', $settings['backup_only_database']) ? ' checked' : '' }}>
<label class="custom-control-label" for="backup_only_database">{{ __('shaarli.settings.backup.only_database') }}</label>
<label class="custom-control-label" for="backup_only_database">{{ __('shaark.settings.backup.only_database') }}</label>
</div>
</div>
<div class="form-group">
<label for="backup_period">{{ __('shaarli.settings.backup.period') }}</label>
<label for="backup_period">{{ __('shaark.settings.backup.period') }}</label>
<select name="backup_period" id="backup_period" class="form-control custom-select">
<option value="daily"{{ old('backup_period', $settings['backup_period']) == 'daily' ? ' selected' : '' }}>{{ __('shaarli.settings.backup.period_daily') }}</option>
<option value="weekly"{{ old('backup_period', $settings['backup_period']) == 'weekly' ? ' selected' : '' }}>{{ __('shaarli.settings.backup.period_weekly') }}</option>
<option value="daily"{{ old('backup_period', $settings['backup_period']) == 'daily' ? ' selected' : '' }}>{{ __('shaark.settings.backup.period_daily') }}</option>
<option value="weekly"{{ old('backup_period', $settings['backup_period']) == 'weekly' ? ' selected' : '' }}>{{ __('shaark.settings.backup.period_weekly') }}</option>
</select>
@error('backup_period')
<span class="text-danger" role="alert">{{ $message }}</span>
@ -257,13 +257,13 @@
</div>
<div class="card mt-4">
<div class="card-header">{{ __('shaarli.settings.images.title') }}</div>
<div class="card-header">{{ __('shaark.settings.images.title') }}</div>
<div class="card-body">
<div class="form-group">
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input"
name="images_original_resize" id="images_original_resize" {{ old('images_original_resize', $settings['images_original_resize']) ? ' checked' : '' }}>
<label class="custom-control-label" for="images_original_resize">{{ __('shaarli.settings.images.images_original_resize') }}</label>
<label class="custom-control-label" for="images_original_resize">{{ __('shaark.settings.images.images_original_resize') }}</label>
</div>
@error('images_original_resize')
<span class="text-danger" role="alert">{{ $message }}</span>
@ -271,7 +271,7 @@
</div>
<div class="form-group">
<label for="name">{{ __('shaarli.settings.images.images_original_resize_width') }}</label>
<label for="name">{{ __('shaark.settings.images.images_original_resize_width') }}</label>
<input type="number" class="form-control {{ $errors->has('images_original_resize_width') ? ' is-invalid' : '' }}" step="100" min="500" max="5000"
name="images_original_resize_width" id="images_original_resize_width" value="{{ old('images_original_resize_width', $settings['images_original_resize_width']) }}">
@error('images_original_resize_width')
@ -280,10 +280,10 @@
</div>
<div class="form-group">
<label for="images_thumb_format">{{ __('shaarli.settings.images.images_thumb_format') }}</label>
<label for="images_thumb_format">{{ __('shaark.settings.images.images_thumb_format') }}</label>
<select name="images_thumb_format" id="images_thumb_format" class="form-control custom-select">
<option value="square"{{ old('images_thumb_format', $settings['images_thumb_format']) == 'square' ? ' selected' : '' }}>{{ __('shaarli.settings.images.format_square') }}</option>
<option value="original"{{ old('images_thumb_format', $settings['images_thumb_format']) == 'original' ? ' selected' : '' }}>{{ __('shaarli.settings.images.format_original') }}</option>
<option value="square"{{ old('images_thumb_format', $settings['images_thumb_format']) == 'square' ? ' selected' : '' }}>{{ __('shaark.settings.images.format_square') }}</option>
<option value="original"{{ old('images_thumb_format', $settings['images_thumb_format']) == 'original' ? ' selected' : '' }}>{{ __('shaark.settings.images.format_original') }}</option>
</select>
@error('images_thumb_format')
<span class="text-danger" role="alert">{{ $message }}</span>
@ -294,7 +294,7 @@
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input" name="images_thumb_queue"
id="images_thumb_queue" {{ old('images_thumb_queue', $settings['images_thumb_queue']) ? ' checked' : '' }}>
<label class="custom-control-label" for="images_thumb_queue">{{ __('shaarli.settings.images.images_thumb_queue') }}</label>
<label class="custom-control-label" for="images_thumb_queue">{{ __('shaark.settings.images.images_thumb_queue') }}</label>
</div>
@error('images_thumb_queue')
<span class="text-danger" role="alert">{{ $message }}</span>

View File

@ -1,15 +0,0 @@
# Shaarlies listing
You host your own Shaarli public instance and you want to share it with other Shaarliers? Feel free to make a PR to add your own to this file.
### Rules
* Your Shaarli must be public
* Use alphabetical order
* Use this format `- SHAARLI_NAME - [URL](URL)`
### Listing
- Arciela - [https://arciela.com](https://arciela.com)
- Laravel Shaarli - [https://shaarli.mka.ovh](https://shaarli.mka.ovh)
- Marceau Ka - [https://note.casals.fr](https://note.casals.fr)

View File

@ -3,7 +3,7 @@
namespace Tests\Browser;
use App\SecureLogin;
use App\Services\Shaarli\Shaarli;
use App\Services\Shaark\Shaark;
use App\User;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Support\Facades\Hash;
@ -44,7 +44,7 @@ class AuthTest extends DuskTestCase
/** @test */
public function it_tests_login_with_2fa()
{
$this->shaarli()->setSecureLogin(true);
$this->shaark()->setSecureLogin(true);
$user = factory(User::class)->create([
'password' => Hash::make('randomPassword'),
@ -70,6 +70,6 @@ class AuthTest extends DuskTestCase
->assertSee($user->name);
});
$this->shaarli()->setSecureLogin(false);
$this->shaark()->setSecureLogin(false);
}
}

View File

@ -2,7 +2,7 @@
namespace Tests;
use App\Services\Shaarli\Shaarli;
use App\Services\Shaark\Shaark;
use Laravel\Dusk\TestCase as BaseTestCase;
use Facebook\WebDriver\Chrome\ChromeOptions;
use Facebook\WebDriver\Remote\RemoteWebDriver;
@ -16,8 +16,8 @@ abstract class DuskTestCase extends BaseTestCase
{
parent::setUp();
$this->shaarli()->setLocale('en');
$this->shaarli()->setSecureLogin(false);
$this->shaark()->setLocale('en');
$this->shaark()->setSecureLogin(false);
}
/**
@ -43,8 +43,8 @@ abstract class DuskTestCase extends BaseTestCase
);
}
protected function shaarli(): Shaarli
protected function shaark(): Shaark
{
return app(Shaarli::class);
return app(Shaark::class);
}
}