Preparing for new features

Fixed #131
This commit is contained in:
Sergio Brighenti 2020-02-25 17:09:36 +01:00
parent 31268ba6e1
commit 10d7e0654d
12 changed files with 361 additions and 245 deletions

View file

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

View file

@ -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',

View file

@ -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(),
]);
}

View file

@ -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)

View file

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

View file

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

403
composer.lock generated

File diff suppressed because it is too large Load diff

53
package-lock.json generated
View file

@ -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",

View file

@ -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": {

View file

@ -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',

View file

@ -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>

View file

@ -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>