]> BookStack Code Mirror - bookstack/commitdiff
Merge branch 'master' of git://github.com/moutonnoireu/BookStack into moutonnoireu...
authorDan Brown <redacted>
Sun, 11 Feb 2018 11:44:09 +0000 (11:44 +0000)
committerDan Brown <redacted>
Sun, 11 Feb 2018 11:44:09 +0000 (11:44 +0000)
Also updated composer deps

27 files changed:
.env.example
app/Http/Controllers/BookController.php
app/Providers/EventServiceProvider.php
app/Services/SocialAuthService.php
composer.json
composer.lock
config/app.php
config/services.php
resources/assets/icons/gitlab.svg [new file with mode: 0644]
resources/assets/sass/_grid.scss
resources/assets/sass/_lists.scss
resources/assets/sass/export-styles.scss
resources/lang/en/settings.php
resources/lang/zh_CN/activities.php [new file with mode: 0644]
resources/lang/zh_CN/auth.php [new file with mode: 0644]
resources/lang/zh_CN/common.php [new file with mode: 0644]
resources/lang/zh_CN/components.php [new file with mode: 0644]
resources/lang/zh_CN/entities.php [new file with mode: 0644]
resources/lang/zh_CN/errors.php [new file with mode: 0644]
resources/lang/zh_CN/pagination.php [new file with mode: 0644]
resources/lang/zh_CN/passwords.php [new file with mode: 0644]
resources/lang/zh_CN/settings.php [new file with mode: 0755]
resources/lang/zh_CN/validation.php [new file with mode: 0644]
resources/views/books/grid-item.blade.php
resources/views/books/index.blade.php
resources/views/components/image-manager.blade.php
resources/views/search/all.blade.php

index d06ef675b9dd85b8b2b276ebbb9525280d3175fe..86f99f30f8e77feed93aba6f5d1de65ddb750f12 100644 (file)
@@ -47,10 +47,13 @@ GITHUB_APP_SECRET=false
 GOOGLE_APP_ID=false
 GOOGLE_APP_SECRET=false
 OKTA_BASE_URL=false
-OKTA_KEY=false
-OKTA_SECRET=false
+OKTA_APP_ID=false
+OKTA_APP_SECRET=false
 TWITCH_APP_ID=false
 TWITCH_APP_SECRET=false
+GITLAB_APP_ID=false
+GITLAB_APP_SECRET=false
+GITLAB_BASE_URI=false
 
 # External services such as Gravatar
 DISABLE_EXTERNAL_SERVICES=false
index 7a98bd49ec1b67119c7aa151c0cb874964505a94..2c3946239cac3981e4abffab0fe5ae14b4ce2de9 100644 (file)
@@ -36,11 +36,11 @@ class BookController extends Controller
      */
     public function index()
     {
-        $books = $this->entityRepo->getAllPaginated('book', 20);
+        $books = $this->entityRepo->getAllPaginated('book', 18);
         $recents = $this->signedIn ? $this->entityRepo->getRecentlyViewed('book', 4, 0) : false;
         $popular = $this->entityRepo->getPopular('book', 4, 0);
         $new = $this->entityRepo->getRecentlyCreated('book', 4, 0);
-        $booksViewType = setting()->getUser($this->currentUser, 'books_view_type', 'list');
+        $booksViewType = setting()->getUser($this->currentUser, 'books_view_type', config('app.views.books', 'list'));
         $this->setPageTitle(trans('entities.books'));
         return view('books/index', [
             'books' => $books,
index 5a690069c7e9f4852eb23b98753f0543838ce458..cc3e4d993afcb14c2af832c466be1f028bc93109 100644 (file)
@@ -18,6 +18,7 @@ class EventServiceProvider extends ServiceProvider
             'SocialiteProviders\Slack\SlackExtendSocialite@handle',
             'SocialiteProviders\Azure\AzureExtendSocialite@handle',
             'SocialiteProviders\Okta\OktaExtendSocialite@handle',
+            'SocialiteProviders\GitLab\GitLabExtendSocialite@handle',
             'SocialiteProviders\Twitch\TwitchExtendSocialite@handle',
         ],
     ];
index 6eb5202ae00faba72adf0862822ecf4eaf57cd52..02361e59bbbb4852d7460d527d3bcac9f3b6765c 100644 (file)
@@ -16,7 +16,7 @@ class SocialAuthService
     protected $socialite;
     protected $socialAccount;
 
-    protected $validSocialDrivers = ['google', 'github', 'facebook', 'slack', 'twitter', 'azure', 'okta', 'twitch'];
+    protected $validSocialDrivers = ['google', 'github', 'facebook', 'slack', 'twitter', 'azure', 'okta', 'gitlab', 'twitch'];
 
     /**
      * SocialAuthService constructor.
index 54eb3f26c0f42e65186f5875b844e243d3ad2dfd..5106ed0bb00c69eb51a75288cf2212519c77f539 100644 (file)
@@ -19,6 +19,7 @@
         "socialiteproviders/slack": "^3.0",
         "socialiteproviders/microsoft-azure": "^3.0",
         "socialiteproviders/okta": "^1.0",
+        "socialiteproviders/gitlab": "^3.0",
         "socialiteproviders/twitch": "^3.0"
     },
     "require-dev": {
index bf9bc489f94c05d5849273d96545804975ab49d5..9370bebff530df225b03d58067003c030eae9138 100644 (file)
@@ -4,20 +4,20 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "content-hash": "96d5f23f0652b8093d7939e8c29bdf18",
+    "content-hash": "ed85d10e69b1071020178cb400a80e48",
     "packages": [
         {
             "name": "aws/aws-sdk-php",
-            "version": "3.52.2",
+            "version": "3.52.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/aws/aws-sdk-php.git",
-                "reference": "69ba4e07288a532fe7635f7cdd73cffa6509f538"
+                "reference": "c9af7657eddc0267cc7ac4f969c10d5c18459992"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/69ba4e07288a532fe7635f7cdd73cffa6509f538",
-                "reference": "69ba4e07288a532fe7635f7cdd73cffa6509f538",
+                "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/c9af7657eddc0267cc7ac4f969c10d5c18459992",
+                "reference": "c9af7657eddc0267cc7ac4f969c10d5c18459992",
                 "shasum": ""
             },
             "require": {
                 "s3",
                 "sdk"
             ],
-            "time": "2018-01-26T22:17:57+00:00"
+            "time": "2018-02-09T22:53:37+00:00"
         },
         {
             "name": "barryvdh/laravel-dompdf",
-            "version": "v0.8.1",
+            "version": "v0.8.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/barryvdh/laravel-dompdf.git",
-                "reference": "3b2235e589616331d68482d61b7763789a2600fe"
+                "reference": "7dcdecfa125c174d0abe723603633dc2756ea3af"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/3b2235e589616331d68482d61b7763789a2600fe",
-                "reference": "3b2235e589616331d68482d61b7763789a2600fe",
+                "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/7dcdecfa125c174d0abe723603633dc2756ea3af",
+                "reference": "7dcdecfa125c174d0abe723603633dc2756ea3af",
                 "shasum": ""
             },
             "require": {
                 "dompdf/dompdf": "^0.8",
-                "illuminate/support": "5.1.x|5.2.x|5.3.x|5.4.x|5.5.x",
+                "illuminate/support": "5.1.x|5.2.x|5.3.x|5.4.x|5.5.x|5.6.x",
                 "php": ">=5.5.9"
             },
             "type": "library",
                 "laravel",
                 "pdf"
             ],
-            "time": "2017-07-29T19:01:17+00:00"
+            "time": "2018-02-07T17:43:25+00:00"
         },
         {
             "name": "barryvdh/laravel-snappy",
-            "version": "v0.4.0",
+            "version": "v0.4.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/barryvdh/laravel-snappy.git",
-                "reference": "f08c7e5b4ddea585bfcd48ab4f40f920e58dd1cf"
+                "reference": "5f6e7f3ba15c867d1b8e2885d454110270616ebe"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/barryvdh/laravel-snappy/zipball/f08c7e5b4ddea585bfcd48ab4f40f920e58dd1cf",
-                "reference": "f08c7e5b4ddea585bfcd48ab4f40f920e58dd1cf",
+                "url": "https://api.github.com/repos/barryvdh/laravel-snappy/zipball/5f6e7f3ba15c867d1b8e2885d454110270616ebe",
+                "reference": "5f6e7f3ba15c867d1b8e2885d454110270616ebe",
                 "shasum": ""
             },
             "require": {
-                "illuminate/filesystem": "5.0.x|5.1.x|5.2.x|5.3.x|5.4.x|5.5.x",
-                "illuminate/support": "5.0.x|5.1.x|5.2.x|5.3.x|5.4.x|5.5.x",
-                "knplabs/knp-snappy": "*",
+                "illuminate/filesystem": "5.0.x|5.1.x|5.2.x|5.3.x|5.4.x|5.5.x|5.6.x",
+                "illuminate/support": "5.0.x|5.1.x|5.2.x|5.3.x|5.4.x|5.5.x|5.6.x",
+                "knplabs/knp-snappy": "^1",
                 "php": ">=5.4.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "0.3-dev"
+                    "dev-master": "0.4-dev"
                 },
                 "laravel": {
                     "providers": [
                 "wkhtmltoimage",
                 "wkhtmltopdf"
             ],
-            "time": "2017-08-14T06:48:50+00:00"
+            "time": "2018-02-08T15:58:26+00:00"
         },
         {
             "name": "cogpowered/finediff",
         },
         {
             "name": "laravel/framework",
-            "version": "v5.5.32",
+            "version": "v5.5.34",
             "source": {
                 "type": "git",
                 "url": "https://github.com/laravel/framework.git",
-                "reference": "254e4c3e133f5bc8d6068cdf28ea062abc10adf2"
+                "reference": "1de7c0aec13eadbdddc2d1ba4019b064b2c6b966"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/laravel/framework/zipball/254e4c3e133f5bc8d6068cdf28ea062abc10adf2",
-                "reference": "254e4c3e133f5bc8d6068cdf28ea062abc10adf2",
+                "url": "https://api.github.com/repos/laravel/framework/zipball/1de7c0aec13eadbdddc2d1ba4019b064b2c6b966",
+                "reference": "1de7c0aec13eadbdddc2d1ba4019b064b2c6b966",
                 "shasum": ""
             },
             "require": {
                 "framework",
                 "laravel"
             ],
-            "time": "2018-01-18T13:27:23+00:00"
+            "time": "2018-02-06T15:36:55+00:00"
         },
         {
             "name": "laravel/socialite",
             ],
             "time": "2016-07-19T19:14:21+00:00"
         },
+        {
+            "name": "socialiteproviders/gitlab",
+            "version": "v3.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/SocialiteProviders/GitLab.git",
+                "reference": "c96dc004563a3caf157608fe9aa9e45c79065d00"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/SocialiteProviders/GitLab/zipball/c96dc004563a3caf157608fe9aa9e45c79065d00",
+                "reference": "c96dc004563a3caf157608fe9aa9e45c79065d00",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.6 || ^7.0",
+                "socialiteproviders/manager": "~3.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "SocialiteProviders\\GitLab\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Christoffer Martinsen",
+                    "email": "[email protected]"
+                }
+            ],
+            "description": "GitLab OAuth2 Provider for Laravel Socialite",
+            "time": "2017-01-31T05:06:13+00:00"
+        },
         {
             "name": "socialiteproviders/manager",
             "version": "v3.3.1",
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.6.0",
+            "version": "v1.7.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296"
+                "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296",
-                "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b",
+                "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b",
                 "shasum": ""
             },
             "require": {
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.6-dev"
+                    "dev-master": "1.7-dev"
                 }
             },
             "autoload": {
                 "portable",
                 "shim"
             ],
-            "time": "2017-10-11T12:05:26+00:00"
+            "time": "2018-01-30T19:27:44+00:00"
         },
         {
             "name": "symfony/process",
     "packages-dev": [
         {
             "name": "barryvdh/laravel-debugbar",
-            "version": "v3.1.0",
+            "version": "v3.1.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/barryvdh/laravel-debugbar.git",
-                "reference": "01a859752094e00aa8548832312366753272f8af"
+                "reference": "f0018d359a2ad6968ad11b283283a925e017f3c9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/01a859752094e00aa8548832312366753272f8af",
-                "reference": "01a859752094e00aa8548832312366753272f8af",
+                "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/f0018d359a2ad6968ad11b283283a925e017f3c9",
+                "reference": "f0018d359a2ad6968ad11b283283a925e017f3c9",
                 "shasum": ""
             },
             "require": {
-                "illuminate/routing": "5.5.x",
-                "illuminate/session": "5.5.x",
-                "illuminate/support": "5.5.x",
-                "maximebf/debugbar": "~1.14.0",
+                "illuminate/routing": "5.5.x|5.6.x",
+                "illuminate/session": "5.5.x|5.6.x",
+                "illuminate/support": "5.5.x|5.6.x",
+                "maximebf/debugbar": "~1.15.0",
                 "php": ">=7.0",
-                "symfony/debug": "^3",
-                "symfony/finder": "^3"
+                "symfony/debug": "^3|^4",
+                "symfony/finder": "^3|^4"
             },
             "require-dev": {
                 "illuminate/framework": "5.5.x"
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.0-dev"
+                    "dev-master": "3.2-dev"
                 },
                 "laravel": {
                     "providers": [
                 "profiler",
                 "webprofiler"
             ],
-            "time": "2017-09-18T13:32:46+00:00"
+            "time": "2018-02-07T08:29:09+00:00"
         },
         {
             "name": "barryvdh/laravel-ide-helper",
-            "version": "v2.4.1",
+            "version": "v2.4.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/barryvdh/laravel-ide-helper.git",
-                "reference": "2b1273c45e2f8df7a625563e2283a17c14f02ae8"
+                "reference": "5c304db44fba8e9c4aa0c09739e59f7be7736fdd"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/2b1273c45e2f8df7a625563e2283a17c14f02ae8",
-                "reference": "2b1273c45e2f8df7a625563e2283a17c14f02ae8",
+                "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/5c304db44fba8e9c4aa0c09739e59f7be7736fdd",
+                "reference": "5c304db44fba8e9c4aa0c09739e59f7be7736fdd",
                 "shasum": ""
             },
             "require": {
                 "barryvdh/reflection-docblock": "^2.0.4",
-                "illuminate/console": "^5.0,<5.6",
-                "illuminate/filesystem": "^5.0,<5.6",
-                "illuminate/support": "^5.0,<5.6",
+                "illuminate/console": "^5.0,<5.7",
+                "illuminate/filesystem": "^5.0,<5.7",
+                "illuminate/support": "^5.0,<5.7",
                 "php": ">=5.4.0",
                 "symfony/class-loader": "^2.3|^3.0"
             },
             "require-dev": {
                 "doctrine/dbal": "~2.3",
-                "illuminate/config": "^5.0,<5.6",
-                "illuminate/view": "^5.0,<5.6",
+                "illuminate/config": "^5.0,<5.7",
+                "illuminate/view": "^5.0,<5.7",
                 "phpunit/phpunit": "4.*",
                 "scrutinizer/ocular": "~1.1",
                 "squizlabs/php_codesniffer": "~2.3"
                 "phpstorm",
                 "sublime"
             ],
-            "time": "2017-07-16T00:24:12+00:00"
+            "time": "2018-02-08T07:56:07+00:00"
         },
         {
             "name": "barryvdh/reflection-docblock",
         },
         {
             "name": "maximebf/debugbar",
-            "version": "v1.14.1",
+            "version": "v1.15.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/maximebf/php-debugbar.git",
-                "reference": "64251a392344e3d22f3d21c3b7c531ba96eb01d2"
+                "reference": "30e7d60937ee5f1320975ca9bc7bcdd44d500f07"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/64251a392344e3d22f3d21c3b7c531ba96eb01d2",
-                "reference": "64251a392344e3d22f3d21c3b7c531ba96eb01d2",
+                "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/30e7d60937ee5f1320975ca9bc7bcdd44d500f07",
+                "reference": "30e7d60937ee5f1320975ca9bc7bcdd44d500f07",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.0",
                 "psr/log": "^1.0",
-                "symfony/var-dumper": "^2.6|^3.0"
+                "symfony/var-dumper": "^2.6|^3.0|^4.0"
             },
             "require-dev": {
                 "phpunit/phpunit": "^4.0|^5.0"
                 "debug",
                 "debugbar"
             ],
-            "time": "2017-09-13T12:19:36+00:00"
+            "time": "2017-12-15T11:13:46+00:00"
         },
         {
             "name": "mockery/mockery",
         },
         {
             "name": "phpunit/phpunit",
-            "version": "6.5.5",
+            "version": "6.5.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "83d27937a310f2984fd575686138597147bdc7df"
+                "reference": "3330ef26ade05359d006041316ed0fa9e8e3cefe"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/83d27937a310f2984fd575686138597147bdc7df",
-                "reference": "83d27937a310f2984fd575686138597147bdc7df",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3330ef26ade05359d006041316ed0fa9e8e3cefe",
+                "reference": "3330ef26ade05359d006041316ed0fa9e8e3cefe",
                 "shasum": ""
             },
             "require": {
                 "testing",
                 "xunit"
             ],
-            "time": "2017-12-17T06:31:19+00:00"
+            "time": "2018-02-01T05:57:37+00:00"
         },
         {
             "name": "phpunit/phpunit-mock-objects",
         },
         {
             "name": "sebastian/comparator",
-            "version": "2.1.2",
+            "version": "2.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/comparator.git",
-                "reference": "11c07feade1d65453e06df3b3b90171d6d982087"
+                "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/11c07feade1d65453e06df3b3b90171d6d982087",
-                "reference": "11c07feade1d65453e06df3b3b90171d6d982087",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9",
+                "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9",
                 "shasum": ""
             },
             "require": {
                 "php": "^7.0",
-                "sebastian/diff": "^2.0",
+                "sebastian/diff": "^2.0 || ^3.0",
                 "sebastian/exporter": "^3.1"
             },
             "require-dev": {
                 "compare",
                 "equality"
             ],
-            "time": "2018-01-12T06:34:42+00:00"
+            "time": "2018-02-01T13:46:46+00:00"
         },
         {
             "name": "sebastian/diff",
index e408fb3a5b867680c70dda20f5aac18a24a7e9c9..7e2e1487fb01a6afddb8d2553a24442446b14f64 100755 (executable)
@@ -2,11 +2,14 @@
 
 return [
 
-
     'env' => env('APP_ENV', 'production'),
 
     'editor' => env('APP_EDITOR', 'html'),
 
+    'views' => [
+        'books' => env('APP_VIEWS_BOOKS', 'list')
+    ],
+
     /*
     |--------------------------------------------------------------------------
     | Application Debug Mode
@@ -58,7 +61,7 @@ return [
     */
 
     'locale' => env('APP_LANG', 'en'),
-    'locales' => ['en', 'de', 'es', 'es_AR', 'fr', 'nl', 'pt_BR', 'sk', 'sv', 'ja', 'pl', 'it', 'ru'],
+    'locales' => ['en', 'de', 'es', 'es_AR', 'fr', 'nl', 'pt_BR', 'sk', 'sv', 'ja', 'pl', 'it', 'ru', 'zh_CN'],
 
     /*
     |--------------------------------------------------------------------------
index 81f2af36047d1e1ed4614498b447e023b5266701..8b602a5d5b5ea96e9c29201740a3b254a4d1c605 100644 (file)
@@ -94,6 +94,14 @@ return [
         'name'          => 'Okta',
     ],
 
+    'gitlab' => [
+        'client_id'     => env('GITLAB_APP_ID'),
+        'client_secret' => env('GITLAB_APP_SECRET'),
+        'redirect'      => env('APP_URL') . '/login/service/gitlab/callback',
+        'instance_uri'  => env('GITLAB_BASE_URI'), // needs only for GitLab self hosted
+        'name'          => 'Gitlab',
+    ],
+
     'twitch' => [
         'client_id' => env('TWITCH_APP_ID'),
         'client_secret' => env('TWITCH_APP_SECRET'),
diff --git a/resources/assets/icons/gitlab.svg b/resources/assets/icons/gitlab.svg
new file mode 100644 (file)
index 0000000..fa1e92a
--- /dev/null
@@ -0,0 +1 @@
+<svg viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><g id="Group"><path id="Fill-4" d="M32.134,64.345l11.785,-39.372l-23.569,0l11.784,39.372Z" style="fill:#e24329;"/><path id="Fill-8" d="M32.134,64.345l-11.784,-39.372l-16.515,0l28.299,39.372Z" style="fill:#fc6d26;"/><path id="Fill-12" d="M3.835,24.973l-3.581,11.965c-0.327,1.091 0.031,2.287 0.886,2.961l30.994,24.446l-28.299,-39.372Z" style="fill:#fca326;"/><path id="Fill-16" d="M3.835,24.973l16.515,0l-7.097,-23.713c-0.366,-1.22 -1.956,-1.22 -2.321,0l-7.097,23.713Z" style="fill:#e24329;"/><path id="Fill-18" d="M32.134,64.345l11.785,-39.372l16.515,0l-28.3,39.372Z" style="fill:#fc6d26;"/><path id="Fill-20" d="M60.434,24.973l3.581,11.965c0.326,1.091 -0.031,2.287 -0.886,2.961l-30.995,24.446l28.3,-39.372Z" style="fill:#fca326;"/><path id="Fill-22" d="M60.434,24.973l-16.515,0l7.097,-23.713c0.365,-1.22 1.955,-1.22 2.32,0l7.098,23.713Z" style="fill:#e24329;"/></g></svg>
index c145f4280969d74b2362487f2219e3e2f246ef4f..880c619d1308d2f8d0a7fbd917b28e8413879534 100644 (file)
@@ -175,6 +175,43 @@ div[class^="col-"] img {
   margin-right: -$-m;
 }
 
+.grid {
+  display: grid;
+  grid-column-gap: $-l;
+  grid-row-gap: $-l;
+  &.third {
+    grid-template-columns: 1fr 1fr 1fr;
+  }
+}
+
+.grid-card {
+  display: flex;
+  flex-direction: column;
+  border: 1px solid #ddd;
+  min-width: 100px;
+  .grid-card-content {
+    flex: 1;
+  }
+  .grid-card-content, .grid-card-footer {
+    padding: $-l;
+  }
+  .grid-card-content + .grid-card-footer {
+    padding-top: 0;
+  }
+}
+
+@include smaller-than($m) {
+  .grid.third {
+    grid-template-columns: 1fr 1fr;
+  }
+}
+
+@include smaller-than($s) {
+  .grid.third {
+    grid-template-columns: 1fr;
+  }
+}
+
 .float {
   float: left;
   &.right {
@@ -195,14 +232,6 @@ div[class^="col-"] img {
   display: inline-block;
 }
 
-@include larger-than(991px) {
-  .row.auto-clear .col-md-4:nth-child(3n+1){clear:left;}
-}
-
-@include smaller-than(992px) {
-  .row.auto-clear .col-xs-6:nth-child(2n+1){clear:left;}
-}
-
 .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
   position: relative;
   min-height: 1px;
index 0496d794e4523d6c68657048b0b51f266326eaa8..604334415495d6d123452bdb0da1468bac0f82bd 100644 (file)
@@ -382,13 +382,15 @@ ul.pagination {
   position: relative;
   overflow: hidden;
   background: #F2F2F2;
-  border: 1px solid #ddd;
-  border-bottom: 0;
+  a {
+    display: block;
+  }
   img {
     display: block;
+    width: 100%;
     max-width: 100%;
     height: auto;
-    transition: all .5s ease;
+    transition: all .5s ease-in-out;
   }
   img:hover {
     transform: scale(1.15);
@@ -396,31 +398,33 @@ ul.pagination {
   }
 }
 
-.book-grid-content {
-  padding: 30px;
-  border: 1px solid #ddd;
+.book-grid-item .grid-card-content {
   border-top: 0;
   border-bottom-width: 2px;
   h2 {
+    width: 100%;
     font-size: 1.5em;
     margin: 0 0 10px;
   }
   h2 a {
     display: block;
+    width: 100%;
     line-height: 1.2;
     color: #009688;;
     text-decoration: none;
+    white-space: pre-wrap; /* css-3 */
+    word-wrap: break-word; /* Internet Explorer 5.5+ */
   }
   p {
     font-size: .85em;
-    margin: 0 0 10px;
+    margin: 0;
     line-height: 1.6em;
   }
+}
+
+.book-grid-item .grid-card-footer {
   p.small {
     font-size: .8em;
+    margin: 0;
   }
 }
-
-.book-grid-item {
-  margin-bottom : 20px;
-}
index 1f7caf1d96805f8192a978dca733a949f764e909..bea516baa580754d793615427dbf0927675c0341 100644 (file)
 table {
   border-spacing: 0;
   border-collapse: collapse;
+}
+
+// Prevent code block overflow on export
+pre {
+  padding-left: 12px;
+}
+pre:after {
+  display: none;
+}
+pre code {
+  white-space: pre-wrap;
 }
\ No newline at end of file
index 34562414795ba0304e3905477923eea49a85d2ed..d5ef4840ee3d00aaab4f0d567f982042f218ac9a 100755 (executable)
@@ -131,7 +131,8 @@ return [
         'ja' => '日本語',
         'pl' => 'Polski',
         'it' => 'Italian',
-        'ru' => 'Русский'
+        'ru' => 'Русский',
+        'zh_CN' => '简体中文'
     ]
     ///////////////////////////////////
 ];
diff --git a/resources/lang/zh_CN/activities.php b/resources/lang/zh_CN/activities.php
new file mode 100644 (file)
index 0000000..6ef10b6
--- /dev/null
@@ -0,0 +1,42 @@
+<?php
+
+return [
+
+    /**
+     * Activity text strings.
+     * Is used for all the text within activity logs & notifications.
+     */
+
+    // Pages
+    'page_create'                 => '创建了页面',
+    'page_create_notification'    => '页面已创建成功',
+    'page_update'                 => '更新了页面',
+    'page_update_notification'    => '页面已更新成功',
+    'page_delete'                 => '删除了页面',
+    'page_delete_notification'    => '页面已删除成功',
+    'page_restore'                => '恢复了页面',
+    'page_restore_notification'   => '页面已恢复成功',
+    'page_move'                   => '移动了页面',
+
+    // Chapters
+    'chapter_create'              => '创建了章节',
+    'chapter_create_notification' => '章节已创建成功',
+    'chapter_update'              => '更新了章节',
+    'chapter_update_notification' => '章节已创建成功',
+    'chapter_delete'              => '删除了章节',
+    'chapter_delete_notification' => '章节已删除成功',
+    'chapter_move'                => '移动了章节',
+
+    // Books
+    'book_create'                 => '创建了图书',
+    'book_create_notification'    => '图书已创建成功',
+    'book_update'                 => '更新了图书',
+    'book_update_notification'    => '图书已更新成功',
+    'book_delete'                 => '删除了图书',
+    'book_delete_notification'    => '图书已删除成功',
+    'book_sort'                   => '排序了图书',
+    'book_sort_notification'      => '图书已重新排序成功',
+
+    // Other
+    'commented_on'                => '评论',
+];
diff --git a/resources/lang/zh_CN/auth.php b/resources/lang/zh_CN/auth.php
new file mode 100644 (file)
index 0000000..046f236
--- /dev/null
@@ -0,0 +1,76 @@
+<?php
+return [
+    /*
+    |--------------------------------------------------------------------------
+    | Authentication Language Lines
+    |--------------------------------------------------------------------------
+    |
+    | The following language lines are used during authentication for various
+    | messages that we need to display to the user. You are free to modify
+    | these language lines according to your application's requirements.
+    |
+    */
+    'failed' => '用户名或密码错误。',
+    'throttle' => '您的登录次数过多,请在:seconds秒后重试。',
+
+    /**
+     * Login & Register
+     */
+    'sign_up' => '注册',
+    'log_in' => '登录',
+    'log_in_with' => '以:socialDriver登录',
+    'sign_up_with' => '注册:socialDriver',
+    'logout' => '注销',
+
+    'name' => '姓名',
+    'username' => '用户名',
+    'email' => 'Email地址',
+    'password' => '密码',
+    'password_confirm' => '确认密码',
+    'password_hint' => '必须超过5个字符',
+    'forgot_password' => '忘记密码?',
+    'remember_me' => '记住我',
+    'ldap_email_hint' => '请输入用于此帐户的电子邮件。',
+    'create_account' => '创建账户',
+    'social_login' => 'SNS登录',
+    'social_registration' => 'SNS注册',
+    'social_registration_text' => '其他服务注册/登录.',
+
+    'register_thanks' => '注册完成!',
+    'register_confirm' => '请点击查收您的Email,并点击确认。',
+    'registrations_disabled' => '注册目前被禁用',
+    'registration_email_domain_invalid' => '该Email域名无权访问此应用程序',
+    'register_success' => '感谢您注册:appName,您现在已经登录。',
+
+
+    /**
+     * Password Reset
+     */
+    'reset_password' => '重置密码',
+    'reset_password_send_instructions' => '在下面输入您的Email地址,您将收到一封带有密码重置链接的邮件。',
+    'reset_password_send_button' => '发送重置链接',
+    'reset_password_sent_success' => '密码重置链接已发送到:email。',
+    'reset_password_success' => '您的密码已成功重置。',
+
+    'email_reset_subject' => '重置您的:appName密码',
+    'email_reset_text' => '您收到此电子邮件是因为我们收到了您的帐户的密码重置请求。',
+    'email_reset_not_requested' => '如果您没有要求重置密码,则不需要采取进一步的操作。',
+
+
+    /**
+     * Email Confirmation
+     */
+    'email_confirm_subject' => '确认您在:appName的Email地址',
+    'email_confirm_greeting' => '感谢您加入:appName!',
+    'email_confirm_text' => '请点击下面的按钮确认您的Email地址:',
+    'email_confirm_action' => '确认Email',
+    'email_confirm_send_error' => '需要Email验证,但系统无法发送电子邮件,请联系网站管理员。',
+    'email_confirm_success' => '您的Email地址已成功验证!',
+    'email_confirm_resent' => '验证邮件已重新发送,请检查收件箱。',
+
+    'email_not_confirmed' => 'Email地址未验证',
+    'email_not_confirmed_text' => '您的电子邮件地址尚未确认。',
+    'email_not_confirmed_click_link' => '请检查注册时收到的电子邮件,然后点击确认链接。',
+    'email_not_confirmed_resend' => '如果找不到电子邮件,请通过下面的表单重新发送确认Email。',
+    'email_not_confirmed_resend_button' => '重新发送确认Email',
+];
\ No newline at end of file
diff --git a/resources/lang/zh_CN/common.php b/resources/lang/zh_CN/common.php
new file mode 100644 (file)
index 0000000..a6efde6
--- /dev/null
@@ -0,0 +1,64 @@
+<?php
+return [
+
+    /**
+     * Buttons
+     */
+    'cancel' => '取消',
+    'confirm' => '确认',
+    'back' => '返回',
+    'save' => '保存',
+    'continue' => '继续',
+    'select' => '选择',
+    'more' => '更多',
+
+    /**
+     * Form Labels
+     */
+    'name' => '姓名',
+    'description' => '概要',
+    'role' => '角色',
+    'cover_image' => '封面图片',
+    'cover_image_description' => '该图像大小需要为440x250px。',
+    
+    /**
+     * Actions
+     */
+    'actions' => '操作',
+    'view' => '视图',
+    'create' => '创建',
+    'update' => '更新',
+    'edit' => '编辑',
+    'sort' => '排序',
+    'move' => '移动',
+    'reply' => '回复',
+    'delete' => '删除',
+    'search' => '搜索',
+    'search_clear' => '清除搜索',
+    'reset' => '重置',
+    'remove' => '删除',
+    'add' => '添加',
+
+    /**
+     * Misc
+     */
+    'deleted_user' => '删除用户',
+    'no_activity' => '没有活动要显示',
+    'no_items' => '没有可用的项目',
+    'back_to_top' => '回到顶部',
+    'toggle_details' => '显示/隐藏详细信息',
+    'toggle_thumbnails' => '显示/隐藏缩略图',
+    'details' => '详细信息',
+
+    /**
+     * Header
+     */
+    'view_profile' => '查看资料',
+    'edit_profile' => '编辑资料',
+
+    /**
+     * Email Content
+     */
+    'email_action_help' => '如果您无法点击“:actionText”按钮,请将下面的网址复制到您的浏览器中打开:',
+    'email_rights' => 'All rights reserved',
+];
diff --git a/resources/lang/zh_CN/components.php b/resources/lang/zh_CN/components.php
new file mode 100644 (file)
index 0000000..9e6f286
--- /dev/null
@@ -0,0 +1,32 @@
+<?php
+return [
+
+    /**
+     * Image Manager
+     */
+    'image_select' => '选择图片',
+    'image_all' => '全部',
+    'image_all_title' => '查看所有图片',
+    'image_book_title' => '查看上传到本书的图片',
+    'image_page_title' => '查看上传到本页面的图片',
+    'image_search_hint' => '按图片名称搜索',
+    'image_uploaded' => '上传于 :uploadedDate',
+    'image_load_more' => '显示更多',
+    'image_image_name' => '图片名称',
+    'image_delete_confirm' => '该图像用于以下页面,如果你想删除它,请再次按下按钮。',
+    'image_select_image' => '选择图片',
+    'image_dropzone' => '拖放图片或点击此处上传',
+    'images_deleted' => '图片已删除',
+    'image_preview' => '图片预览',
+    'image_upload_success' => '图片上传成功',
+    'image_update_success' => '图片详细信息更新成功',
+    'image_delete_success' => '图片删除成功',
+
+    /**
+     * Code editor
+     */
+    'code_editor' => '编辑代码',
+    'code_language' => '编程语言',
+    'code_content' => '代码内容',
+    'code_save' => '保存代码',
+];
\ No newline at end of file
diff --git a/resources/lang/zh_CN/entities.php b/resources/lang/zh_CN/entities.php
new file mode 100644 (file)
index 0000000..3c04c44
--- /dev/null
@@ -0,0 +1,260 @@
+<?php
+return [
+
+    /**
+     * Shared
+     */
+    'recently_created' => '最近创建',
+    'recently_created_pages' => '最近创建的页面',
+    'recently_updated_pages' => '最新页面',
+    'recently_created_chapters' => '最近创建的章节',
+    'recently_created_books' => '最近创建的图书',
+    'recently_update' => '最近更新',
+    'recently_viewed' => '最近查看',
+    'recent_activity' => '近期活动',
+    'create_now' => '立刻创建',
+    'revisions' => '修订历史',
+    'meta_revision' => '版本号 #:revisionCount',
+    'meta_created' => '创建于 :timeLength',
+    'meta_created_name' => '由 :user 创建于 :timeLength',
+    'meta_updated' => '更新于 :timeLength',
+    'meta_updated_name' => '由 :user 更新于 :timeLength',
+    'entity_select' => '实体选择',
+    'images' => '图片',
+    'my_recent_drafts' => '我最近的草稿',
+    'my_recently_viewed' => '我最近看过',
+    'no_pages_viewed' => '您尚未查看任何页面',
+    'no_pages_recently_created' => '最近没有页面被创建',
+    'no_pages_recently_updated' => '最近没有页面被更新',
+    'export' => '导出',
+    'export_html' => '网页文件',
+    'export_pdf' => 'PDF文件',
+    'export_text' => '纯文本文件',
+
+    /**
+     * Permissions and restrictions
+     */
+    'permissions' => '权限',
+    'permissions_intro' => '本设置优先于每个用户角色本身所具有的权限。',
+    'permissions_enable' => '启用自定义权限',
+    'permissions_save' => '保存权限',
+
+    /**
+     * Search
+     */
+    'search_results' => '搜索结果',
+    'search_total_results_found' => '共找到了:count个结果',
+    'search_clear' => '清除搜索',
+    'search_no_pages' => '没有找到相匹配的页面',
+    'search_for_term' => '“:term”的搜索结果',
+    'search_more' => '更多结果',
+    'search_filters' => '过滤搜索结果',
+    'search_content_type' => '种类',
+    'search_exact_matches' => '精确匹配',
+    'search_tags' => '标签搜索',
+    'search_viewed_by_me' => '我看过的',
+    'search_not_viewed_by_me' => '我没看过的',
+    'search_permissions_set' => '权限设置',
+    'search_created_by_me' => '我创建的',
+    'search_updated_by_me' => '我更新的',
+    'search_updated_before' => '在此之前更新',
+    'search_updated_after' => '在此之后更新',
+    'search_created_before' => '在此之前创建',
+    'search_created_after' => '在此之后创建',
+    'search_set_date' => '设置日期',
+    'search_update' => '只显示更新操作',
+
+    /**
+     * Books
+     */
+    'book' => '图书',
+    'books' => '图书',
+    'x_books' => ':count本书',
+    'books_empty' => '不存在已创建的书',
+    'books_popular' => '热门图书',
+    'books_recent' => '最近的书',
+    'books_new' => '新书',
+    'books_popular_empty' => '最受欢迎的图书将出现在这里。',
+    'books_new_empty' => '最近创建的图书将出现在这里。',
+    'books_create' => '创建图书',
+    'books_delete' => '删除图书',
+    'books_delete_named' => '删除图书「:bookName」',
+    'books_delete_explain' => '这将删除图书「:bookName」。所有的章节和页面都会被删除。',
+    'books_delete_confirmation' => '您确定要删除此图书吗?',
+    'books_edit' => '编辑图书',
+    'books_edit_named' => '编辑图书「:bookName」',
+    'books_form_book_name' => '书名',
+    'books_save' => '保存图书',
+    'books_permissions' => '图书权限',
+    'books_permissions_updated' => '图书权限已更新',
+    'books_empty_contents' => '本书目前没有页面或章节。',
+    'books_empty_create_page' => '创建页面',
+    'books_empty_or' => '或',
+    'books_empty_sort_current_book' => '排序当前图书',
+    'books_empty_add_chapter' => '添加章节',
+    'books_permissions_active' => '有效的图书权限',
+    'books_search_this' => '搜索这本书',
+    'books_navigation' => '图书导航',
+    'books_sort' => '排序图书内容',
+    'books_sort_named' => '排序图书「:bookName」',
+    'books_sort_show_other' => '显示其他图书',
+    'books_sort_save' => '保存新顺序',
+
+    /**
+     * Chapters
+     */
+    'chapter' => '章节',
+    'chapters' => '章节',
+    'x_chapters' => ':count个章节',
+    'chapters_popular' => '热门章节',
+    'chapters_new' => '新章节',
+    'chapters_create' => '创建章节',
+    'chapters_delete' => '删除章节',
+    'chapters_delete_named' => '删除章节「:chapterName」',
+    'chapters_delete_explain' => '这将删除章节「:chapterName」。所有的页面将被删除并添加到其所在的书籍。',
+    'chapters_delete_confirm' => '您确定要删除此章节吗?',
+    'chapters_edit' => '编辑章节',
+    'chapters_edit_named' => '编辑章节「:chapterName」',
+    'chapters_save' => '保存章节',
+    'chapters_move' => '移动章节',
+    'chapters_move_named' => '移动章节「:chapterName」',
+    'chapter_move_success' => '章节移动到「:bookName」',
+    'chapters_permissions' => '章节权限',
+    'chapters_empty' => '本章目前没有页面。',
+    'chapters_permissions_active' => '有效的章节权限',
+    'chapters_permissions_success' => '章节权限已更新',
+    'chapters_search_this' => '从本章节搜索',
+
+    /**
+     * Pages
+     */
+    'page' => '页面',
+    'pages' => '页面',
+    'x_pages' => ':count个页面',
+    'pages_popular' => '热门页面',
+    'pages_new' => '新页面',
+    'pages_attachments' => '附件',
+    'pages_navigation' => '页面导航',
+    'pages_delete' => '删除页面',
+    'pages_delete_named' => '删除页面“:pageName”',
+    'pages_delete_draft_named' => '删除草稿页面“:pageName”',
+    'pages_delete_draft' => '删除草稿页面',
+    'pages_delete_success' => '页面已删除',
+    'pages_delete_draft_success' => '草稿页面已删除',
+    'pages_delete_confirm' => '您确定要删除此页面吗?',
+    'pages_delete_draft_confirm' => '您确定要删除此草稿页面吗?',
+    'pages_editing_named' => '正在编辑页面“:pageName”',
+    'pages_edit_toggle_header' => '显示/隐藏导航栏',
+    'pages_edit_save_draft' => '保存草稿',
+    'pages_edit_draft' => '编辑页面草稿',
+    'pages_editing_draft' => '正在编辑草稿',
+    'pages_editing_page' => '正在编辑页面',
+    'pages_edit_draft_save_at' => '草稿保存于 ',
+    'pages_edit_delete_draft' => '删除草稿',
+    'pages_edit_discard_draft' => '放弃草稿',
+    'pages_edit_set_changelog' => '更新说明',
+    'pages_edit_enter_changelog_desc' => '输入对您所做更改的简要说明',
+    'pages_edit_enter_changelog' => '输入更新说明',
+    'pages_save' => '保存页面',
+    'pages_title' => '页面标题',
+    'pages_name' => '页面名',
+    'pages_md_editor' => '编者',
+    'pages_md_preview' => '预览',
+    'pages_md_insert_image' => '插入图片',
+    'pages_md_insert_link' => '插入实体链接',
+    'pages_not_in_chapter' => '本页面不在某章节中',
+    'pages_move' => '移动页面',
+    'pages_move_success' => '页面已移动到「:parentName」',
+    'pages_permissions' => '页面权限',
+    'pages_permissions_success' => '页面权限已更新',
+    'pages_revision' => '修订',
+    'pages_revisions' => '页面修订',
+    'pages_revisions_named' => '“:pageName”页面修订',
+    'pages_revision_named' => '“:pageName”页面修订',
+    'pages_revisions_created_by' => '创建者',
+    'pages_revisions_date' => '修订日期',
+    'pages_revisions_number' => '#',
+    'pages_revisions_changelog' => '更新说明',
+    'pages_revisions_changes' => '说明',
+    'pages_revisions_current' => '当前版本',
+    'pages_revisions_preview' => '预览',
+    'pages_revisions_restore' => '恢复',
+    'pages_revisions_none' => '此页面没有修订',
+    'pages_copy_link' => '复制链接',
+    'pages_permissions_active' => '有效的页面权限',
+    'pages_initial_revision' => '初始发布',
+    'pages_initial_name' => '新页面',
+    'pages_editing_draft_notification' => '您正在编辑在 :timeDiff 内保存的草稿.',
+    'pages_draft_edited_notification' => '此后,此页面已经被更新,建议您放弃此草稿。',
+    'pages_draft_edit_active' => [
+        'start_a' => ':count位用户正在编辑此页面',
+        'start_b' => '用户“:userName”已经开始编辑此页面',
+        'time_a' => '自页面上次更新以来',
+        'time_b' => '在最近:minCount分钟',
+        'message' => ':time,:start。注意不要覆盖对方的更新!',
+    ],
+    'pages_draft_discarded' => '草稿已丢弃,编辑器已更新到当前页面内容。',
+
+    /**
+     * Editor sidebar
+     */
+    'page_tags' => '页面标签',
+    'tag' => '标签',
+    'tags' =>  '',
+    'tag_value' => '标签值 (Optional)',
+    'tags_explain' => "添加一些标签以更好地对您的内容进行分类。\n您可以为标签分配一个值,以进行更深入的组织。",
+    'tags_add' => '添加另一个标签',
+    'attachments' => '附件',
+    'attachments_explain' => '上传一些文件或附加一些链接显示在您的网页上。这些在页面的侧边栏中可见。',
+    'attachments_explain_instant_save' => '这里的更改将立即保存。Changes here are saved instantly.',
+    'attachments_items' => '附加项目',
+    'attachments_upload' => '上传文件',
+    'attachments_link' => '附加链接',
+    'attachments_set_link' => '设置链接',
+    'attachments_delete_confirm' => '确认您想要删除此附件后,请点击删除。',
+    'attachments_dropzone' => '删除文件或点击此处添加文件',
+    'attachments_no_files' => '尚未上传文件', // No files have been uploaded
+    'attachments_explain_link' => '如果您不想上传文件,则可以附加链接,这可以是指向其他页面的链接,也可以是指向云端文件的链接。',
+    'attachments_link_name' => '链接名',
+    'attachment_link' => '附件链接',
+    'attachments_link_url' => '链接到文件',
+    'attachments_link_url_hint' => '网站或文件的网址',
+    'attach' => '附加',
+    'attachments_edit_file' => '编辑文件',
+    'attachments_edit_file_name' => '文件名',
+    'attachments_edit_drop_upload' => '删除文件或点击这里上传并覆盖',
+    'attachments_order_updated' => '附件顺序已更新',
+    'attachments_updated_success' => '附件信息已更新',
+    'attachments_deleted' => '附件已删除',
+    'attachments_file_uploaded' => '附件上传成功',
+    'attachments_file_updated' => '附件更新成功',
+    'attachments_link_attached' => '链接成功附加到页面',
+
+    /**
+     * Profile View
+     */
+    'profile_user_for_x' => '来这里:time了',
+    'profile_created_content' => '已创建内容',
+    'profile_not_created_pages' => ':userName尚未创建任何页面',
+    'profile_not_created_chapters' => ':userName尚未创建任何章节',
+    'profile_not_created_books' => ':userName尚未创建任何图书',
+
+    /**
+     * Comments
+     */
+    'comment' => '评论',
+    'comments' => '评论',
+    'comment_placeholder' => '在这里评论',
+    'comment_count' => '{0} 无评论|[1,*] :count条评论',
+    'comment_save' => '保存评论',
+    'comment_saving' => '正在保存评论...',
+    'comment_deleting' => '正在删除评论...',
+    'comment_new' => '新评论',
+    'comment_created' => '评论于 :createDiff',
+    'comment_updated' => '更新于 :updateDiff (:username)',
+    'comment_deleted_success' => '评论已删除',
+    'comment_created_success' => '评论已添加',
+    'comment_updated_success' => '评论已更新',
+    'comment_delete_confirm' => '你确定要删除这条评论?',
+    'comment_in_reply_to' => '回复 :commentId',
+];
diff --git a/resources/lang/zh_CN/errors.php b/resources/lang/zh_CN/errors.php
new file mode 100644 (file)
index 0000000..1a5ee4f
--- /dev/null
@@ -0,0 +1,79 @@
+<?php
+
+return [
+
+    /**
+     * Error text strings.
+     */
+
+    // Permissions
+    'permission' => '您无权访问所请求的页面。',
+    'permissionJson' => '您无权执行所请求的操作。',
+
+    // Auth
+    'error_user_exists_different_creds' => 'Email为 :email 的用户已经存在,但具有不同的凭据。',
+    'email_already_confirmed' => 'Email已被确认,请尝试登录。',
+    'email_confirmation_invalid' => '此确认令牌无效或已被使用,请重新注册。',
+    'email_confirmation_expired' => '确认令牌已过期,已发送新的确认电子邮件。',
+    'ldap_fail_anonymous' => '使用匿名绑定的LDAP访问失败。',
+    'ldap_fail_authed' => '带有标识名称和密码的LDAP访问失败。',
+    'ldap_extension_not_installed' => '未安装LDAP PHP扩展程序',
+    'ldap_cannot_connect' => '无法连接到ldap服务器,初始连接失败',
+    'social_no_action_defined' => '没有定义行为',
+    'social_login_bad_response' => "在 :socialAccount 登录时遇到错误:\n:error",
+    'social_account_in_use' => ':socialAccount 账户已被使用,请尝试通过 :socialAccount 选项登录。',
+    'social_account_email_in_use' => 'Email :email 已经被使用。如果您已有帐户,则可以在个人资料设置中绑定您的 :socialAccount。',
+    'social_account_existing' => ':socialAccount已经被绑定到您的账户。',
+    'social_account_already_used_existing' => ':socialAccount账户已经被其他用户使用。',
+    'social_account_not_used' => ':socialAccount账户没有绑定到任何用户,请在您的个人资料设置中绑定。',
+    'social_account_register_instructions' => '如果您还没有帐户,您可以使用 :socialAccount 选项注册账户。',
+    'social_driver_not_found' => '未找到社交驱动程序',
+    'social_driver_not_configured' => '您的:socialAccount社交设置不正确。',
+
+    // System
+    'path_not_writable' => '无法上传到文件路径“:filePath”,请确保它可写入服务器。',
+    'cannot_get_image_from_url' => '无法从 :url 中获取图片',
+    'cannot_create_thumbs' => '服务器无法创建缩略图,请检查您是否安装了GD PHP扩展。',
+    'server_upload_limit' => '上传图片时发生错误。',
+    'image_upload_error' => '上传图片时发生错误',
+
+    // Attachments
+    'attachment_page_mismatch' => '附件更新期间的页面不匹配',
+
+    // Pages
+    'page_draft_autosave_fail' => '无法保存草稿,确保您在保存页面之前已经连接到互联网',
+    'page_custom_home_deletion' => '无法删除一个被设置为主页的页面',
+
+    // Entities
+    'entity_not_found' => '未找到实体',
+    'book_not_found' => '未找到图书',
+    'page_not_found' => '未找到页面',
+    'chapter_not_found' => '未找到章节',
+    'selected_book_not_found' => '选中的书未找到',
+    'selected_book_chapter_not_found' => '未找到所选的图书或章节',
+    'guests_cannot_save_drafts' => '访客不能保存草稿',
+
+    // Users
+    'users_cannot_delete_only_admin' => '您不能删除唯一的管理员账户',
+    'users_cannot_delete_guest' => '您不能删除访客用户',
+
+    // Roles
+    'role_cannot_be_edited' => '无法编辑该角色',
+    'role_system_cannot_be_deleted' => '无法删除系统角色',
+    'role_registration_default_cannot_delete' => '无法删除设置为默认注册的角色',
+
+    // Comments
+    'comment_list' => '提取评论时出现错误。',
+    'cannot_add_comment_to_draft' => '您不能为草稿添加评论。',
+    'comment_add' => '添加/更新评论时发生错误。',
+    'comment_delete' => '删除评论时发生错误。',
+    'empty_comment' => '不能添加空的评论。',
+
+    // Error pages
+    '404_page_not_found' => '无法找到页面',
+    'sorry_page_not_found' => '对不起,无法找到您想访问的页面。',
+    'return_home' => '返回主页',
+    'error_occurred' => '出现错误',
+    'app_down' => ':appName现在正在关闭',
+    'back_soon' => '请耐心等待网站的恢复。',
+];
\ No newline at end of file
diff --git a/resources/lang/zh_CN/pagination.php b/resources/lang/zh_CN/pagination.php
new file mode 100644 (file)
index 0000000..f1fc4b5
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | Pagination Language Lines
+    |--------------------------------------------------------------------------
+    |
+    | The following language lines are used by the paginator library to build
+    | the simple pagination links. You are free to change them to anything
+    | you want to customize your views to better match your application.
+    |
+    */
+
+    'previous' => '&laquo; 上一页',
+    'next'     => '下一页 &raquo;',
+
+];
diff --git a/resources/lang/zh_CN/passwords.php b/resources/lang/zh_CN/passwords.php
new file mode 100644 (file)
index 0000000..d4ba50c
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | Password Reminder Language Lines
+    |--------------------------------------------------------------------------
+    |
+    | The following language lines are the default lines which match reasons
+    | that are given by the password broker for a password update attempt
+    | has failed, such as for an invalid token or invalid new password.
+    |
+    */
+
+    'password' => '密码必须至少包含六个字符并与确认相符。',
+    'user' => "使用该Email地址的用户不存在。",
+    'token' => '此密码重置令牌无效。',
+    'sent' => '我们已经通过Email发送您的密码重置链接!',
+    'reset' => '您的密码已被重置!',
+
+];
diff --git a/resources/lang/zh_CN/settings.php b/resources/lang/zh_CN/settings.php
new file mode 100755 (executable)
index 0000000..9b73177
--- /dev/null
@@ -0,0 +1,117 @@
+<?php
+
+return [
+
+    /**
+     * Settings text strings
+     * Contains all text strings used in the general settings sections of BookStack
+     * including users and roles.
+     */
+
+    'settings' => '设置',
+    'settings_save' => '保存设置',
+    'settings_save_success' => '设置已保存',
+
+    /**
+     * App settings
+     */
+
+    'app_settings' => 'App设置',
+    'app_name' => 'App名',
+    'app_name_desc' => '此名称将在网页头部和Email中显示。',
+    'app_name_header' => '在网页头部显示应用名?',
+    'app_public_viewing' => '允许公众查看?',
+    'app_secure_images' => '启用更高安全性的图片上传?',
+    'app_secure_images_desc' => '出于性能原因,所有图像都是公开的。这个选项会在图像的网址前添加一个随机的,难以猜测的字符串,从而使直接访问变得困难。',
+    'app_editor' => '页面编辑器',
+    'app_editor_desc' => '选择所有用户将使用哪个编辑器来编辑页面。',
+    'app_custom_html' => '自定义HTML头部内容',
+    'app_custom_html_desc' => '此处添加的任何内容都将插入到每个页面的<head>部分的底部,这对于覆盖样式或添加分析代码很方便。',
+    'app_logo' => 'App Logo',
+    'app_logo_desc' => '这个图片的高度应该为43px。<br>大图片将会被缩小。',
+    'app_primary_color' => 'App主色',
+    'app_primary_color_desc' => '这应该是一个十六进制值。<br>保留为空以重置为默认颜色。',
+    'app_homepage' => 'App主页',
+    'app_homepage_desc' => '选择要在主页上显示的页面来替换默认的视图,选定页面的访问权限将被忽略。',
+    'app_homepage_default' => '默认主页视图选择',
+    'app_disable_comments' => '禁用评论',
+    'app_disable_comments_desc' => '在App的所有页面上禁用评论,现有评论也不会显示出来。',
+
+    /**
+     * Registration settings
+     */
+
+    'reg_settings' => '注册设置',
+    'reg_allow' => '允许注册?',
+    'reg_default_role' => '注册后的默认用户角色',
+    'reg_confirm_email' => '需要Email验证?',
+    'reg_confirm_email_desc' => '如果使用域名限制,则需要Email验证,并且该值将被忽略。',
+    'reg_confirm_restrict_domain' => '域名限制',
+    'reg_confirm_restrict_domain_desc' => '输入您想要限制注册的Email域名列表,用逗号隔开。在被允许与应用程序交互之前,用户将被发送一封Email来确认他们的地址。<br>注意用户在注册成功后可以修改他们的Email地址。',
+    'reg_confirm_restrict_domain_placeholder' => '尚未设置限制',
+
+    /**
+     * Role settings
+     */
+
+    'roles' => '角色',
+    'role_user_roles' => '用户角色',
+    'role_create' => '创建角色',
+    'role_create_success' => '角色创建成功',
+    'role_delete' => '删除角色',
+    'role_delete_confirm' => '这将会删除名为 \':roleName\' 的角色.',
+    'role_delete_users_assigned' => '有:userCount位用户属于此角色。如果您想将此角色中的用户迁移,请在下面选择一个新角色。',
+    'role_delete_no_migration' => "不要迁移用户",
+    'role_delete_sure' => '您确定要删除这个角色?',
+    'role_delete_success' => '角色删除成功',
+    'role_edit' => '编辑角色',
+    'role_details' => '角色详细信息',
+    'role_name' => '角色名',
+    'role_desc' => '角色简述',
+    'role_system' => '系统权限',
+    'role_manage_users' => '管理用户',
+    'role_manage_roles' => '管理角色与角色权限',
+    'role_manage_entity_permissions' => '管理所有图书,章节和页面的权限',
+    'role_manage_own_entity_permissions' => '管理自己的图书,章节和页面的权限',
+    'role_manage_settings' => '管理App设置',
+    'role_asset' => '资源许可',
+    'role_asset_desc' => '对系统内资源的默认访问许可将由这些权限控制。单独设置在书籍,章节和页面上的权限将覆盖这里的权限设定。',
+    'role_all' => '全部的',
+    'role_own' => '拥有的',
+    'role_controlled_by_asset' => '由其所在的资源来控制',
+    'role_save' => '保存角色',
+    'role_update_success' => '角色更新成功',
+    'role_users' => '此角色的用户',
+    'role_users_none' => '目前没有用户被分配到这个角色',
+
+    /**
+     * Users
+     */
+
+    'users' => '用户',
+    'user_profile' => '用户资料',
+    'users_add_new' => '添加用户',
+    'users_search' => '搜索用户',
+    'users_role' => '用户角色',
+    'users_external_auth_id' => '外部身份认证ID',
+    'users_password_warning' => '如果您想更改密码,请填写以下内容:',
+    'users_system_public' => '此用户代表访问您的App的任何访客。它不能用于登录,而是自动分配。',
+    'users_books_view_type' => '图书浏览布局偏好',
+    'users_delete' => '删除用户',
+    'users_delete_named' => '删除用户 :userName',
+    'users_delete_warning' => '这将从系统中完全删除名为 \':userName\' 的用户。',
+    'users_delete_confirm' => '您确定要删除这个用户?',
+    'users_delete_success' => '用户删除成功。',
+    'users_edit' => '编辑用户',
+    'users_edit_profile' => '编辑资料',
+    'users_edit_success' => '用户更新成功',
+    'users_avatar' => '用户头像',
+    'users_avatar_desc' => '当前图片应该为约256px的正方形。',
+    'users_preferred_language' => '语言',
+    'users_social_accounts' => '社交账户',
+    'users_social_accounts_info' => '在这里,您可以绑定您的其他帐户,以便更快更轻松地登录。如果您选择解除绑定,之后将不能通过此社交账户登录,请设置社交账户来取消本App的访问权限。',
+    'users_social_connect' => '绑定账户',
+    'users_social_disconnect' => '解除绑定账户',
+    'users_social_connected' => ':socialAccount 账户已经成功绑定到您的资料。',
+    'users_social_disconnected' => ':socialAccount 账户已经成功解除绑定。',
+];
diff --git a/resources/lang/zh_CN/validation.php b/resources/lang/zh_CN/validation.php
new file mode 100644 (file)
index 0000000..ae1ffd6
--- /dev/null
@@ -0,0 +1,108 @@
+<?php
+
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | Validation Language Lines
+    |--------------------------------------------------------------------------
+    |
+    | The following language lines contain the default error messages used by
+    | the validator class. Some of these rules have multiple versions such
+    | as the size rules. Feel free to tweak each of these messages here.
+    |
+    */
+
+    'accepted'             => ':attribute 需要被同意。',
+    'active_url'           => ':attribute 并不是一个有效的网址',
+    'after'                => ':attribute 必须是在 :date 后的日期。',
+    'alpha'                => ':attribute 只能包含字母。',
+    'alpha_dash'           => ':attribute 只能包含字母、数字和短横线。',
+    'alpha_num'            => ':attribute 只能包含字母和数字。',
+    'array'                => ':attribute 必须是一个数组。',
+    'before'               => ':attribute 必须是在 :date 前的日期。',
+    'between'              => [
+        'numeric' => ':attribute 必须在:min到:max之间。',
+        'file'    => ':attribute 必须为:min到:max KB。',
+        'string'  => ':attribute 必须在:min到:max个字符之间。',
+        'array'   => ':attribute 必须在:min到:max项之间.',
+    ],
+    'boolean'              => ':attribute 字段必须为真或假。',
+    'confirmed'            => ':attribute 确认不符。',
+    'date'                 => ':attribute 不是一个有效的日期。',
+    'date_format'          => ':attribute 不匹配格式 :format。',
+    'different'            => ':attribute 和 :other 必须不同。',
+    'digits'               => ':attribute 必须为:digits位数。',
+    'digits_between'       => ':attribute 必须为:min到:max位数。',
+    'email'                => ':attribute 必须是有效的电子邮件地址。',
+    'filled'               => ':attribute 字段是必需的。',
+    'exists'               => '选中的 :attribute 无效。',
+    'image'                => ':attribute 必须是一个图片。',
+    'in'                   => '选中的 :attribute 无效。',
+    'integer'              => ':attribute 必须是一个整数。',
+    'ip'                   => ':attribute 必须是一个有效的IP地址。',
+    'max'                  => [
+        'numeric' => ':attribute 不能超过:max。',
+        'file'    => ':attribute 不能超过:max KB。',
+        'string'  => ':attribute 不能超过:max个字符。',
+        'array'   => ':attribute 不能有超过:max项。',
+    ],
+    'mimes'                => ':attribute 必须是 :values 类型的文件。',
+    'min'                  => [
+        'numeric' => ':attribute 至少为:min。',
+        'file'    => ':attribute 至少为:min KB。',
+        'string'  => ':attribute 至少为:min个字符。',
+        'array'   => ':attribute 至少有:min项。',
+    ],
+    'not_in'               => '选中的 :attribute 无效。',
+    'numeric'              => ':attribute 必须是一个数。',
+    'regex'                => ':attribute 格式无效。',
+    'required'             => ':attribute 字段是必需的。',
+    'required_if'          => '当:other为:value时,:attribute 字段是必需的。',
+    'required_with'        => '当:values存在时,:attribute 字段是必需的。',
+    'required_with_all'    => '当:values存在时,:attribute 字段是必需的。',
+    'required_without'     => '当:values不存在时,:attribute 字段是必需的。',
+    'required_without_all' => '当:values均不存在时,:attribute 字段是必需的。',
+    'same'                 => ':attribute 与 :other 必须匹配。',
+    'size'                 => [
+        'numeric' => ':attribute 必须为:size。',
+        'file'    => ':attribute 必须为:size KB。',
+        'string'  => ':attribute 必须为:size个字符。',
+        'array'   => ':attribute 必须包含:size项。',
+    ],
+    'string'               => ':attribute 必须是字符串。',
+    'timezone'             => ':attribute 必须是有效的区域。',
+    'unique'               => ':attribute 已经被使用。',
+    'url'                  => ':attribute 格式无效。',
+
+    /*
+    |--------------------------------------------------------------------------
+    | Custom Validation Language Lines
+    |--------------------------------------------------------------------------
+    |
+    | Here you may specify custom validation messages for attributes using the
+    | convention "attribute.rule" to name the lines. This makes it quick to
+    | specify a specific custom language line for a given attribute rule.
+    |
+    */
+
+    'custom' => [
+        'password-confirm' => [
+            'required_with' => '需要确认密码',
+        ],
+    ],
+
+    /*
+    |--------------------------------------------------------------------------
+    | Custom Validation Attributes
+    |--------------------------------------------------------------------------
+    |
+    | The following language lines are used to swap attribute place-holders
+    | with something more reader friendly such as E-Mail Address instead
+    | of "email". This simply helps us make messages a little cleaner.
+    |
+    */
+
+    'attributes' => [],
+
+];
index cb2b447b07178a1df7e51b803a64d4540ac9a988..bb1914b908f9b3402b004cd2a6f0cd59d6b7f048 100644 (file)
@@ -1,18 +1,18 @@
-<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4 book-grid-item"  data-entity-type="book" data-entity-id="{{$book->id}}">
+<div class="book-grid-item grid-card"  data-entity-type="book" data-entity-id="{{$book->id}}">
     <div class="featured-image-container">
         <a href="{{$book->getUrl()}}" title="{{$book->name}}">
-            <img width="1600" height="900" src="{{$book->getBookCover()}}" alt="{{$book->name}}">
+            <img src="{{$book->getBookCover()}}" alt="{{$book->name}}">
         </a>
     </div>
-    <div class="book-grid-content">
-        <h2><a href="{{$book->getUrl()}}" title="{{$book->name}}" > {{$book->getShortName(35)}} </a></h2>
+    <div class="grid-card-content">
+        <h2><a href="{{$book->getUrl()}}" title="{{$book->name}}">{{$book->getShortName(35)}}</a></h2>
         @if(isset($book->searchSnippet))
             <p >{!! $book->searchSnippet !!}</p>
         @else
             <p >{{ $book->getExcerpt(130) }}</p>
         @endif
-        <div >
-            <span>@include('partials.entity-meta', ['entity' => $book])</span>
-        </div>
+    </div>
+    <div class="grid-card-footer">
+        <span>@include('partials.entity-meta', ['entity' => $book])</span>
     </div>
 </div>
\ No newline at end of file
index 2ab819327fe58b1bbfecf5caf93b7f65ed6cb9f7..0d8a5fad96aa51d92b8f75ceb8b87ef2cf0dab1b 100644 (file)
                 @endforeach
                 {!! $books->render() !!}
             @else
-             <div class="row auto-clear">
+                 <div class="grid third">
                     @foreach($books as $key => $book)
                             @include('books/grid-item', ['book' => $book])
                     @endforeach
-                <div class="col-xs-12">
+                 </div>
+                <div>
                     {!! $books->render() !!}
                 </div>
-             </div>
             @endif
         @else
             <p class="text-muted">{{ trans('entities.books_empty') }}</p>
index a4612a4aca92eb128c0a96691f513a96e4cafa87..a21f140991c8b6fdeffe565df0d0326643ca1e2d 100644 (file)
@@ -18,7 +18,7 @@
                         </div>
                     </div>
                     <div v-show="view === 'all'" >
-                        <form @submit="searchImages" class="contained-search-box">
+                        <form @submit.prevent="searchImages" class="contained-search-box">
                             <input placeholder="{{ trans('components.image_search_hint') }}" v-model="searchTerm">
                             <button :class="{active: searching}" title="{{ trans('common.search_clear') }}" type="button" @click="cancelSearch()" class="text-button cancel"><i class="zmdi zmdi-close-circle-o"></i></button>
                             <button title="{{ trans('common.search') }}" class="text-button"><i class="zmdi zmdi-search"></i></button>
index 2c967d0a95add78ab7a3e62f85ab794a3c9eade0..06a262ceeff0f02c9421a027dd0e88c7a83484fb 100644 (file)
                     </tr>
                 </table>
 
-                <h6 class="text-muted">Options</h6>
-                <label class="checkbox">
-                    <input type="checkbox" v-on:change="optionChange('viewed_by_me')"
-                           v-model="search.option.viewed_by_me" value="page">
-                    {{ trans('entities.search_viewed_by_me') }}
-                </label>
-                <label class="checkbox">
-                    <input type="checkbox" v-on:change="optionChange('not_viewed_by_me')"
-                           v-model="search.option.not_viewed_by_me" value="page">
-                    {{ trans('entities.search_not_viewed_by_me') }}
-                </label>
-                <label class="checkbox">
-                    <input type="checkbox" v-on:change="optionChange('is_restricted')"
-                           v-model="search.option.is_restricted" value="page">
-                    {{ trans('entities.search_permissions_set') }}
-                </label>
-                <label class="checkbox">
-                    <input type="checkbox" v-on:change="optionChange('created_by:me')"
-                           v-model="search.option['created_by:me']" value="page">
-                    {{ trans('entities.search_created_by_me') }}
-                </label>
-                <label class="checkbox">
-                    <input type="checkbox" v-on:change="optionChange('updated_by:me')"
-                           v-model="search.option['updated_by:me']" value="page">
-                    {{ trans('entities.search_updated_by_me') }}
-                </label>
+               @if(signedInUser())
+                    <h6 class="text-muted">Options</h6>
+                    <label class="checkbox">
+                        <input type="checkbox" v-on:change="optionChange('viewed_by_me')"
+                               v-model="search.option.viewed_by_me" value="page">
+                        {{ trans('entities.search_viewed_by_me') }}
+                    </label>
+                    <label class="checkbox">
+                        <input type="checkbox" v-on:change="optionChange('not_viewed_by_me')"
+                               v-model="search.option.not_viewed_by_me" value="page">
+                        {{ trans('entities.search_not_viewed_by_me') }}
+                    </label>
+                    <label class="checkbox">
+                        <input type="checkbox" v-on:change="optionChange('is_restricted')"
+                               v-model="search.option.is_restricted" value="page">
+                        {{ trans('entities.search_permissions_set') }}
+                    </label>
+                    <label class="checkbox">
+                        <input type="checkbox" v-on:change="optionChange('created_by:me')"
+                               v-model="search.option['created_by:me']" value="page">
+                        {{ trans('entities.search_created_by_me') }}
+                    </label>
+                    <label class="checkbox">
+                        <input type="checkbox" v-on:change="optionChange('updated_by:me')"
+                               v-model="search.option['updated_by:me']" value="page">
+                        {{ trans('entities.search_updated_by_me') }}
+                    </label>
+                @endif
 
                 <h6 class="text-muted">Date Options</h6>
                 <table cellpadding="0" cellspacing="0" border="0" class="no-style form-table">
             <a href="{{ $nextPageLink }}" class="button">{{ trans('entities.search_more') }}</a>
         @endif
     </div>
-@stop
\ No newline at end of file
+@stop