Browse Source

Preparing for new features
Fixed #131

Sergio Brighenti 5 years ago
parent
commit
10d7e0654d

+ 3 - 0
CHANGELOG.md

@@ -1,3 +1,6 @@
+## v.3.1 (WIP)
++ Updated translations
+
 ## v.3.0.2
 + Fixed error with migrate command.
 + Updated translations.

+ 12 - 0
Gruntfile.js

@@ -101,6 +101,18 @@ module.exports = function (grunt) {
                         src: ['dropzone.min.css', 'dropzone.min.js'],
                         dest: 'static/dropzone'
                     },
+                    {
+                        expand: true,
+                        cwd: 'node_modules/bootstrap4-toggle/css',
+                        src: ['bootstrap4-toggle.min.css'],
+                        dest: 'static/bootstrap/css'
+                    },
+                    {
+                        expand: true,
+                        cwd: 'node_modules/bootstrap4-toggle/js',
+                        src: ['bootstrap4-toggle.min.js'],
+                        dest: 'static/bootstrap/js'
+                    },
                     {
                         expand: true,
                         cwd: 'src/images',

+ 1 - 0
app/Controllers/AdminController.php

@@ -43,6 +43,7 @@ class AdminController extends Controller
             'upload_max_filesize' => ini_get('upload_max_filesize'),
             'installed_lang'      => $this->lang->getList(),
             'forced_lang'         => $request->getAttribute('forced_lang'),
+            'php_version'         => phpversion(),
         ]);
     }
 

+ 7 - 1
app/Controllers/MediaController.php

@@ -120,6 +120,12 @@ class MediaController extends Controller
             throw new HttpBadRequestException($request);
         }
 
+        // If contains html, return it as text/plain
+        if (strpos($this->storage->getMimetype($media->storage_path), 'text/htm') !== false) {
+            $response = $this->streamMedia($request, $response, $this->storage, $media);
+            return $response->withHeader('Content-Type', 'text/plain');
+        }
+
         return $this->streamMedia($request, $response, $this->storage, $media);
     }
 
@@ -358,7 +364,7 @@ class MediaController extends Controller
     protected function handlePartialRequest(Response $response, Stream $stream, string $range, string $disposition, $media, $mime)
     {
         $end = $stream->getSize() - 1;
-        list(, $range) = explode('=', $range, 2);
+        [, $range] = explode('=', $range, 2);
 
         if (strpos($range, ',') !== false) {
             return $response->withHeader('Content-Type', $mime)

+ 10 - 0
app/Controllers/SettingController.php

@@ -0,0 +1,10 @@
+<?php
+
+
+namespace App\Controllers;
+
+
+class SettingController extends Controller
+{
+
+}

+ 1 - 1
composer.json

@@ -1,6 +1,6 @@
 {
   "name": "sergix44/xbackbone",
-  "version": "3.0.2",
+  "version": "3.1",
   "description": "A lightweight ShareX PHP backend",
   "type": "project",
   "require": {

File diff suppressed because it is too large
+ 178 - 174
composer.lock


+ 29 - 24
package-lock.json

@@ -3,9 +3,9 @@
   "lockfileVersion": 1,
   "dependencies": {
     "@fortawesome/fontawesome-free": {
-      "version": "5.11.2",
-      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.11.2.tgz",
-      "integrity": "sha512-XiUPoS79r1G7PcpnNtq85TJ7inJWe0v+b5oZJZKb0pGHNIV6+UiNeQWiFGmuQ0aj7GEhnD/v9iqxIsjuRKtEnQ=="
+      "version": "5.12.1",
+      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.12.1.tgz",
+      "integrity": "sha512-ZtjIIFplxncqxvogq148C3hBLQE+W3iJ8E4UvJ09zIJUgzwLcROsWwFDErVSXY2Plzao5J9KUYNHKHMEUYDMKw=="
     },
     "abbrev": {
       "version": "1.1.1",
@@ -107,6 +107,11 @@
       "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.4.1.tgz",
       "integrity": "sha512-tbx5cHubwE6e2ZG7nqM3g/FZ5PQEDMWmMGNrCUBVRPHXTJaH7CBDdsLeu3eCh3B1tzAxTnAbtmrzvWEvT2NNEA=="
     },
+    "bootstrap4-toggle": {
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/bootstrap4-toggle/-/bootstrap4-toggle-3.6.1.tgz",
+      "integrity": "sha512-eRejcTc9YurhZ64nHY9Ii9DQn+F9/R74H9RPoeANVM3N1+C2lZ2tUuFCx1w3orOJ1y/iG4A7iCwdDZphMDIrYg=="
+    },
     "brace-expansion": {
       "version": "1.1.11",
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -250,9 +255,9 @@
       "dev": true
     },
     "core-js": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.1.tgz",
-      "integrity": "sha512-KX/dnuY/J8FtEwbnrzmAjUYgLqtk+cxM86hfG60LGiW3MmltIc2yAmDgBgEkfm0blZhUrdr1Zd84J2Y14mLxzg=="
+      "version": "3.6.4",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz",
+      "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw=="
     },
     "core-util-is": {
       "version": "1.0.2",
@@ -360,9 +365,9 @@
       }
     },
     "dropzone": {
-      "version": "5.5.1",
-      "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.5.1.tgz",
-      "integrity": "sha512-3VduRWLxx9hbVr42QieQN25mx/I61/mRdUSuxAmDGdDqZIN8qtP7tcKMa3KfpJjuGjOJGYYUzzeq6eGDnkzesA=="
+      "version": "5.7.0",
+      "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.7.0.tgz",
+      "integrity": "sha512-kOltiZXH5cO/72I22JjE+w6BoT6uaVLfWdFMsi1PMKFkU6BZWpqRwjnsRm0o6ANGTBuZar5Piu7m/CbKqRPiYg=="
     },
     "duplexer": {
       "version": "0.1.1",
@@ -1025,9 +1030,9 @@
       }
     },
     "loadjs": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/loadjs/-/loadjs-3.6.1.tgz",
-      "integrity": "sha512-AZEBw2GWdJk2IzBgQ+Wohoao5j+t0rajqK8dJu8jQqgYxDTxhmCt0ayMo/vCa0ZAMvZxnJcam6uLICfnVd8KAw=="
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/loadjs/-/loadjs-4.2.0.tgz",
+      "integrity": "sha512-AgQGZisAlTPbTEzrHPb6q+NYBMD+DP9uvGSIjSUM5uG+0jG15cb8axWpxuOIqrmQjn6scaaH8JwloiP27b2KXA=="
     },
     "locate-path": {
       "version": "2.0.0",
@@ -1340,21 +1345,21 @@
       }
     },
     "plyr": {
-      "version": "3.5.6",
-      "resolved": "https://registry.npmjs.org/plyr/-/plyr-3.5.6.tgz",
-      "integrity": "sha512-buudbt2qwZYjEdBXW9DvQ7t/LqaSbv9tSjCrqg7nTXVM5BXNdhuiJCyvko+5+DFMdp30mliyKGoOHGXz43OwrA==",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/plyr/-/plyr-3.5.10.tgz",
+      "integrity": "sha512-wbbSuzk3yKVOmYWQUnxG1bxikqZNkxZmL3OjS1DFVU0D2Uko1evGY72LuD9rm/HnNCNzcTuc0c6MCn7bRRpUTA==",
       "requires": {
-        "core-js": "^3.1.4",
+        "core-js": "^3.6.4",
         "custom-event-polyfill": "^1.0.7",
-        "loadjs": "^3.6.1",
+        "loadjs": "^4.2.0",
         "rangetouch": "^2.0.0",
-        "url-polyfill": "^1.1.5"
+        "url-polyfill": "^1.1.8"
       }
     },
     "popper.js": {
-      "version": "1.16.0",
-      "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.0.tgz",
-      "integrity": "sha512-+G+EkOPoE5S/zChTpmBSSDYmhXJ5PsW8eMhH8cP/CQHMFPBG/kC9Y5IIw6qNYgdJ+/COf0ddY2li28iHaZRSjw=="
+      "version": "1.16.1",
+      "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
+      "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ=="
     },
     "pretty-bytes": {
       "version": "3.0.1",
@@ -1651,9 +1656,9 @@
       "dev": true
     },
     "url-polyfill": {
-      "version": "1.1.7",
-      "resolved": "https://registry.npmjs.org/url-polyfill/-/url-polyfill-1.1.7.tgz",
-      "integrity": "sha512-ZrAxYWCREjmMtL8gSbSiKKLZZticgihCvVBtrFbUVpyoETt8GQJeG2okMWA8XryDAaHMjJfhnc+rnhXRbI4DXA=="
+      "version": "1.1.8",
+      "resolved": "https://registry.npmjs.org/url-polyfill/-/url-polyfill-1.1.8.tgz",
+      "integrity": "sha512-Ey61F4FEqhcu1vHSOMmjl0Vd/RPRLEjMj402qszD/dhMBrVfoUsnIj8KSZo2yj+eIlxJGKFdnm6ES+7UzMgZ3Q=="
     },
     "util-deprecate": {
       "version": "1.0.2",

+ 5 - 4
package.json

@@ -1,13 +1,14 @@
 {
   "dependencies": {
-    "@fortawesome/fontawesome-free": "^5.11.2",
+    "@fortawesome/fontawesome-free": "^5.12.1",
     "bootstrap": "^4.4.1",
+    "bootstrap4-toggle": "^3.6.1",
     "clipboard": "^2.0.4",
-    "dropzone": "^5.5.1",
+    "dropzone": "^5.7.0",
     "highlightjs": "^9.16.2",
     "jquery": "^3.4.1",
-    "plyr": "^3.5.6",
-    "popper.js": "^1.16.0",
+    "plyr": "^3.5.10",
+    "popper.js": "^1.16.1",
     "tooltip.js": "^1.3.3"
   },
   "devDependencies": {

+ 2 - 1
resources/lang/en.lang.php

@@ -40,7 +40,8 @@ return [
     'apply'                   => 'Apply',
     'save'                    => 'Save',
     'used'                    => 'Used',
-    'system_info'             => 'System Information',
+    'php_info'                => 'PHP Informations',
+    'system_settings'         => 'System Settings',
     'user.create'             => 'Create User',
     'user.edit'               => 'Edit User',
     'is_active'               => 'Is active',

+ 2 - 0
resources/templates/base.twig

@@ -25,6 +25,7 @@
     <link href="{{ asset('/static/highlightjs/styles/monokai.css') }}" rel="stylesheet">
     <link href="{{ asset('/static/plyr/plyr.css') }}" rel="stylesheet">
     <link href="{{ asset('/static/dropzone/dropzone.min.css') }}" rel="stylesheet">
+    <link href="{{ asset('/static/bootstrap/css/bootstrap4-toggle.min.css') }}" rel="stylesheet">
     <link href="{{ asset('/static/app/app.css') }}" rel="stylesheet">
     <script>
         window.AppConfig = {
@@ -49,6 +50,7 @@
 <script src="{{ asset('/static/clipboardjs/clipboard.min.js') }}"></script>
 <script src="{{ asset('/static/plyr/plyr.min.js') }}"></script>
 <script src="{{ asset('/static/dropzone/dropzone.min.js') }}"></script>
+<script src="{{ asset('/static/bootstrap/js/bootstrap4-toggle.min.js') }}"></script>
 <script src="{{ asset('/static/app/app.js') }}"></script>
 <script>hljs.initHighlightingOnLoad();</script>
 </body>

+ 85 - 15
resources/templates/dashboard/system.twig

@@ -54,7 +54,76 @@
         </div>
         <div class="row">
             <div class="col-md-8">
-                <div class="row same-height-container">
+
+                <div class="card shadow-sm mt-3">
+                    <div class="card-header"><i class="fas fa-cog fa-fw"></i> {{ lang('system_settings') }}</div>
+                    <div class="card-body">
+                        <form method="post" action="{#{{ route('systemSettings.apply') }}#}">
+
+
+
+                            <div class="form-group row">
+                                <label for="custom_head" class="col-sm-4 col-form-label">{{ lang('register_enabled') }}</label>
+                                <div class="col-sm-8">
+                                    <input type="checkbox" checked data-toggle="toggle">
+                                </div>
+                            </div>
+
+                            <div class="form-group row">
+                                <label for="custom_head" class="col-sm-4 col-form-label">{{ lang('hide_by_default') }}</label>
+                                <div class="col-sm-8">
+                                    <input type="checkbox" checked data-toggle="toggle">
+                                </div>
+                            </div>
+
+                            <div class="form-group row">
+                                <label for="custom_head" class="col-sm-4 col-form-label">{{ lang('copy_url_behavior') }}</label>
+                                <div class="col-sm-8">
+                                    <input type="checkbox" checked data-toggle="toggle" data-on="Default URL" data-off="Raw URL" data-onstyle="primary" data-offstyle="secondary">
+                                </div>
+                            </div>
+
+
+                            <div class="form-group row">
+                                <label for="custom_head" class="col-sm-4 col-form-label">{{ lang('theme') }}</label>
+                                <div class="col-sm-8">
+                                    <select class="form-control" id="themes" name="css">
+                                        <option id="theme-load" selected disabled hidden>{{ lang('click_to_load') }}</option>
+                                    </select>
+                                </div>
+                            </div>
+
+                            <div class="form-group row">
+                                <label for="custom_head" class="col-sm-4 col-form-label">{{ lang('enforce_language') }}</label>
+                                <div class="col-sm-8">
+                                    <select class="form-control" id="lang" name="lang">
+                                        <option value="auto">({{ lang('auto_set') }})</option>
+                                        {% for lang, name in installed_lang %}
+                                            <option value="{{ lang }}"{{ forced_lang == lang ? ' selected' }}>{{ name }}</option>
+                                        {% endfor %}
+                                    </select>
+                                    <small>{{ lang('default_lang_behavior') }}</small>
+                                </div>
+                            </div>
+
+                            <div class="form-group row">
+                                <label for="custom_head" class="col-sm-4 col-form-label">{{ lang('custom_head_html') }}</label>
+                                <div class="col-sm-8">
+                                    <textarea name="custom_head" class="form-control text-monospace">{{ customHead|raw }}</textarea>
+                                    <small>{{ lang('custom_head_html_hint') }}</small>
+                                </div>
+                            </div>
+
+                            <button type="submit" class="btn btn-outline-success float-right mt-3">
+                                <i class="fas fa-save fa-fw"></i> {{ lang('apply') }}
+                            </button>
+                        </form>
+                    </div>
+                </div>
+
+
+
+                {#<div class="row same-height-container">
                     <div class="col-md-6 mt-3">
                         <div class="card shadow-sm same-height">
                             <div class="card-header"><i class="fas fa-paint-brush fa-fw"></i> {{ lang('theme') }}</div>
@@ -105,7 +174,7 @@
                             </div>
                         </div>
                     </div>
-                </div>
+                </div>#}
                 <div class="card shadow-sm mt-3">
                     <div class="card-header"><i class="fas fa-cloud-download-alt fa-fw"></i> {{ lang('updates') }} <span class="float-right">v{{ PLATFORM_VERSION }}</span></div>
                     <div class="card-body">
@@ -131,23 +200,24 @@
                         </div>
                     </div>
                 </div>
-                <div class="card shadow-sm mt-3">
-                    <div class="card-header"><i class="fas fa-code fa-fw"></i> {{ lang('custom_head_html') }}</div>
-                    <div class="card-body">
-                        <form method="post" action="{{ route('customHead.apply') }}">
-                            <textarea name="custom_head" class="form-control text-monospace">{{ customHead|raw }}</textarea>
-                            <small>{{ lang('custom_head_html_hint') }}</small>
-                            <button type="submit" class="btn btn-outline-success float-right mt-3">
-                                <i class="fas fa-save fa-fw"></i> {{ lang('apply') }}
-                            </button>
-                        </form>
-                    </div>
-                </div>
+{#                <div class="card shadow-sm mt-3">#}
+{#                    <div class="card-header"><i class="fas fa-code fa-fw"></i> {{ lang('custom_head_html') }}</div>#}
+{#                    <div class="card-body">#}
+{#                        <form method="post" action="{{ route('customHead.apply') }}">#}
+{#                            <textarea name="custom_head" class="form-control text-monospace">{{ customHead|raw }}</textarea>#}
+{#                            <small>{{ lang('custom_head_html_hint') }}</small>#}
+{#                            <button type="submit" class="btn btn-outline-success float-right mt-3">#}
+{#                                <i class="fas fa-save fa-fw"></i> {{ lang('apply') }}#}
+{#                            </button>#}
+{#                        </form>#}
+{#                    </div>#}
+{#                </div>#}
             </div>
             <div class="col-md-4 mt-3">
                 <div class="card shadow-sm">
-                    <div class="card-header"><i class="fas fa-cog fa-fw"></i> {{ lang('system_info') }}</div>
+                    <div class="card-header"><i class="fab fa-php fa-fw"></i> {{ lang('php_info') }}</div>
                     <div class="card-body">
+                        <strong>PHP Version:</strong> {{ php_version }}<br>
                         <strong>Max upload size:</strong>
                         <ul>
                             <li><code>post_max_size</code>: {{ post_max_size }}</li>

Some files were not shown because too many files changed in this diff