diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 958045b..43508ab 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -27,7 +27,7 @@ class LoginController extends Controller * * @var string */ - protected $redirectTo = '/'; + protected $redirectTo = '/home'; /** * Create a new controller instance. diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index bc71626..0b877d8 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -29,7 +29,7 @@ class RegisterController extends Controller * * @var string */ - protected $redirectTo = '/'; + protected $redirectTo = '/home'; /** * Create a new controller instance. diff --git a/app/Http/Controllers/DashController.php b/app/Http/Controllers/DashController.php new file mode 100644 index 0000000..2d8e854 --- /dev/null +++ b/app/Http/Controllers/DashController.php @@ -0,0 +1,24 @@ +paginate(15, ['id', 'title', 'name'], 'pageu'); + + // TODO visit counting + $tables = Table::forList() + ->orderBy('visits', 'desc') + ->paginate(10, ['*'], 'paget'); + + return view('welcome', compact('users', 'tables')); + } +} diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index 8df2afd..6149be5 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -18,10 +18,7 @@ class ProfileController extends Controller */ public function view(User $user) { - $tables = $user->tables() - ->with('revision:id,row_count') - ->orderByDesc('updated_at') - ->paginate(10); + $tables = $user->tables()->forList()->orderByDesc('updated_at')->paginate(10); return view('profile.view')->with(compact('tables', 'user')); } diff --git a/app/Http/Controllers/TableController.php b/app/Http/Controllers/TableController.php index b1629fe..64c3ece 100644 --- a/app/Http/Controllers/TableController.php +++ b/app/Http/Controllers/TableController.php @@ -20,7 +20,10 @@ class TableController extends Controller ]); /** @var Table $tableModel */ - $tableModel = $user->tables()->where('name', $table)->first(); + $tableModel = $user->tables()->withCount(['favourites', 'forks', 'revisions', 'comments']) + ->where('name', $table)->first(); + + if ($tableModel === null) abort(404, "No such table."); // make it possible to show other revisions if ($input->has('rev')) { @@ -31,6 +34,14 @@ class TableController extends Controller $revision = $tableModel->revision; } + $cookieName = "view!$user->name!$table"; + if (!$request->cookie($cookieName, false)) { + + $tableModel->countVisit(); + + \Cookie::queue($cookieName, true, 86400); + } + return view('table.view', [ 'table' => $tableModel, 'revision' => $revision, diff --git a/app/Models/Proposal.php b/app/Models/Proposal.php index ef9973c..df99813 100644 --- a/app/Models/Proposal.php +++ b/app/Models/Proposal.php @@ -25,6 +25,8 @@ class Proposal extends Model use Reportable; protected $guarded = []; + protected $touches = ['author', 'table']; + /** Authoring user */ public function author() { diff --git a/app/Models/Table.php b/app/Models/Table.php index 58b21c5..4fac554 100644 --- a/app/Models/Table.php +++ b/app/Models/Table.php @@ -2,11 +2,10 @@ namespace App\Models; -use App\Models\Concerns\ManyManyThrough; use App\Models\Concerns\Reportable; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; -use Riesjart\Relaquent\Model\Concerns\HasRelaquentRelationships; /** * A data table object (referencing revisions) @@ -22,6 +21,7 @@ use Riesjart\Relaquent\Model\Concerns\HasRelaquentRelationships; * @property string $description * @property string $license * @property string $origin + * @property int $visits * @property-read string $viewPage * @property-read User $owner * @property-read Table $parentTable @@ -38,6 +38,21 @@ class Table extends Model use Reportable; protected $guarded = []; + protected $touches = ['owner']; + + public function countVisit() + { + // Temporarily disable timestamps to avoid touching updated_at + $oldt = $this->touches; + $this->touches = []; + $this->timestamps = false; + + $this->increment('visits'); + + $this->timestamps = true; + $this->touches = $oldt; + } + /** Get owner from the instance cache (use when building table lists) */ public function cachedOwner() { @@ -92,6 +107,14 @@ class Table extends Model return $this->belongsToMany(User::class, 'table_favourites'); } + /** + * Relation to the pivot table, for favourite counting + */ + public function favourites() + { + return $this->hasMany(TableFavouritePivot::class); + } + /** Users to notify about comments */ public function discussionFollowers() { @@ -106,4 +129,9 @@ class Table extends Model return parent::__get($name); } + + public function scopeForList(Builder $query) + { + return $query->with('revision:id,row_count')->withCount(['favourites', 'forks', 'revisions']); + } } diff --git a/app/Models/TableComment.php b/app/Models/TableComment.php index fb25afb..86cfce8 100644 --- a/app/Models/TableComment.php +++ b/app/Models/TableComment.php @@ -26,6 +26,8 @@ class TableComment extends Model use Reportable; protected $guarded = []; + protected $touches = ['table']; + protected static function boot() { parent::boot(); diff --git a/app/Models/TableFavouritePivot.php b/app/Models/TableFavouritePivot.php new file mode 100644 index 0000000..6d8c1b6 --- /dev/null +++ b/app/Models/TableFavouritePivot.php @@ -0,0 +1,16 @@ +fieldCols = $fieldCols; } + public function help($text) + { + return view('form._help-inner', ['help' => $text]); + } + public function header($hx, $text) { return "
". diff --git a/config/app.php b/config/app.php index d154da3..087f230 100644 --- a/config/app.php +++ b/config/app.php @@ -65,7 +65,7 @@ return [ | */ - 'timezone' => 'UTC', + 'timezone' => 'Europe/Prague', // UTC /* |-------------------------------------------------------------------------- diff --git a/database/migrations/2018_07_29_091631_add_table_visits_column.php b/database/migrations/2018_07_29_091631_add_table_visits_column.php new file mode 100644 index 0000000..33c94ba --- /dev/null +++ b/database/migrations/2018_07_29_091631_add_table_visits_column.php @@ -0,0 +1,32 @@ +unsignedInteger('visits')->default(0); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('tables', function (Blueprint $table) { + $table->dropColumn('visits'); + }); + } +} diff --git a/public/fonts/fa-dtbl-1-preview.html b/public/fonts/fa-dtbl-1-preview.html index 6353ee4..4f18048 100644 --- a/public/fonts/fa-dtbl-1-preview.html +++ b/public/fonts/fa-dtbl-1-preview.html @@ -162,23 +162,12 @@ [data-icon]:before, .fa-address-card-o:before, -.fa-at:before, -.fa-bell:before, -.fa-bell-o:before, .fa-calendar:before, -.fa-check:before, -.fa-clock-o:before, -.fa-cloud-upload:before, .fa-code-fork:before, .fa-comment:before, -.fa-download:before, .fa-eye:before, -.fa-eye-slash:before, .fa-facebook-square:before, -.fa-filter:before, -.fa-flag:before, .fa-floppy-o:before, -.fa-gavel:before, .fa-github:before, .fa-globe:before, .fa-google:before, @@ -188,29 +177,16 @@ .fa-key-modern:before, .fa-link:before, .fa-pencil:before, -.fa-pencil-square-o:before, .fa-question-circle:before, -.fa-quote-left:before, -.fa-reply:before, -.fa-rss:before, -.fa-search:before, -.fa-share-alt:before, .fa-sign-in:before, .fa-sign-out:before, -.fa-sliders:before, -.fa-sort:before, -.fa-sort-asc:before, -.fa-sort-desc:before, .fa-star:before, .fa-star-o:before, .fa-table:before, .fa-th-list:before, -.fa-times:before, -.fa-trash:before, -.fa-trash-o:before, .fa-user-circle-o:before, .fa-user-plus:before, -.fa-wrench:before { +.fa-users:before { display: inline-block; font-family: "fa-dtbl-1"; font-style: normal; @@ -226,55 +202,31 @@ } .fa-address-card-o:before { content: "\f100"; } -.fa-at:before { content: "\f101"; } -.fa-bell:before { content: "\f102"; } -.fa-bell-o:before { content: "\f103"; } -.fa-calendar:before { content: "\f104"; } -.fa-check:before { content: "\f105"; } -.fa-clock-o:before { content: "\f106"; } -.fa-cloud-upload:before { content: "\f107"; } -.fa-code-fork:before { content: "\f108"; } -.fa-comment:before { content: "\f109"; } -.fa-download:before { content: "\f10a"; } -.fa-eye:before { content: "\f10b"; } -.fa-eye-slash:before { content: "\f10c"; } -.fa-facebook-square:before { content: "\f10d"; } -.fa-filter:before { content: "\f10e"; } -.fa-flag:before { content: "\f10f"; } -.fa-floppy-o:before { content: "\f110"; } -.fa-gavel:before { content: "\f111"; } -.fa-github:before { content: "\f112"; } -.fa-globe:before { content: "\f113"; } -.fa-google:before { content: "\f114"; } -.fa-history:before { content: "\f115"; } -.fa-home:before { content: "\f116"; } -.fa-inbox:before { content: "\f117"; } -.fa-key-modern:before { content: "\f118"; } -.fa-link:before { content: "\f119"; } -.fa-pencil:before { content: "\f11a"; } -.fa-pencil-square-o:before { content: "\f11b"; } -.fa-question-circle:before { content: "\f11c"; } -.fa-quote-left:before { content: "\f11d"; } -.fa-reply:before { content: "\f11e"; } -.fa-rss:before { content: "\f11f"; } -.fa-search:before { content: "\f120"; } -.fa-share-alt:before { content: "\f121"; } -.fa-sign-in:before { content: "\f122"; } -.fa-sign-out:before { content: "\f123"; } -.fa-sliders:before { content: "\f124"; } -.fa-sort:before { content: "\f125"; } -.fa-sort-asc:before { content: "\f126"; } -.fa-sort-desc:before { content: "\f127"; } -.fa-star:before { content: "\f128"; } -.fa-star-o:before { content: "\f129"; } -.fa-table:before { content: "\f12a"; } -.fa-th-list:before { content: "\f12b"; } -.fa-times:before { content: "\f12c"; } -.fa-trash:before { content: "\f12d"; } -.fa-trash-o:before { content: "\f12e"; } -.fa-user-circle-o:before { content: "\f12f"; } -.fa-user-plus:before { content: "\f130"; } -.fa-wrench:before { content: "\f131"; } +.fa-calendar:before { content: "\f101"; } +.fa-code-fork:before { content: "\f102"; } +.fa-comment:before { content: "\f103"; } +.fa-eye:before { content: "\f104"; } +.fa-facebook-square:before { content: "\f105"; } +.fa-floppy-o:before { content: "\f106"; } +.fa-github:before { content: "\f107"; } +.fa-globe:before { content: "\f108"; } +.fa-google:before { content: "\f109"; } +.fa-history:before { content: "\f10a"; } +.fa-home:before { content: "\f10b"; } +.fa-inbox:before { content: "\f10c"; } +.fa-key-modern:before { content: "\f10d"; } +.fa-link:before { content: "\f10e"; } +.fa-pencil:before { content: "\f10f"; } +.fa-question-circle:before { content: "\f110"; } +.fa-sign-in:before { content: "\f111"; } +.fa-sign-out:before { content: "\f112"; } +.fa-star:before { content: "\f113"; } +.fa-star-o:before { content: "\f114"; } +.fa-table:before { content: "\f115"; } +.fa-th-list:before { content: "\f116"; } +.fa-user-circle-o:before { content: "\f117"; } +.fa-user-plus:before { content: "\f118"; } +.fa-users:before { content: "\f119"; } @@ -290,7 +242,7 @@
-

fa-dtbl-1 contains 50 glyphs:

+

fa-dtbl-1 contains 26 glyphs:

Toggle Preview Characters
@@ -309,45 +261,6 @@
-
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
-
PpPpPpPpPpPpPpPpPpPp @@ -357,46 +270,7 @@
- -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - +
@@ -409,7 +283,7 @@
- +
@@ -422,20 +296,7 @@
- -
- - -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - +
@@ -448,20 +309,7 @@
- -
- - -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - +
@@ -474,33 +322,7 @@
- -
- - -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - +
@@ -514,21 +336,7 @@
- -
- - -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - - +
@@ -541,7 +349,7 @@
- +
@@ -554,7 +362,7 @@
- +
@@ -567,7 +375,7 @@
- +
@@ -580,7 +388,7 @@
- +
@@ -593,7 +401,7 @@
- +
@@ -606,7 +414,7 @@
- +
@@ -619,7 +427,7 @@
- +
@@ -632,7 +440,7 @@
- +
@@ -645,21 +453,7 @@
- -
- - -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - - +
@@ -672,72 +466,7 @@
- -
- - -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - +
@@ -750,7 +479,7 @@
- +
@@ -763,59 +492,7 @@
- -
- - -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - +
@@ -828,7 +505,7 @@
- +
@@ -841,7 +518,7 @@
- +
@@ -854,7 +531,7 @@
- +
@@ -867,47 +544,7 @@
- -
- - -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - +
@@ -920,7 +557,7 @@
- +
@@ -933,20 +570,20 @@
- +
- PpPpPpPpPpPpPpPpPpPp + PpPpPpPpPpPpPpPpPpPp
12141618212436486072
- - + +
diff --git a/public/fonts/fa-dtbl-1.css b/public/fonts/fa-dtbl-1.css index 1c1581d..bf5518f 100644 --- a/public/fonts/fa-dtbl-1.css +++ b/public/fonts/fa-dtbl-1.css @@ -39,52 +39,28 @@ } .fa-address-card-o::before, .fa-vcard-o::before { content: "\f100"; } -.fa-at::before { content: "\f101"; } -.fa-bell::before { content: "\f102"; } -.fa-bell-o::before { content: "\f103"; } -.fa-calendar::before { content: "\f104"; } -.fa-check::before { content: "\f105"; } -.fa-clock-o::before { content: "\f106"; } -.fa-cloud-upload::before { content: "\f107"; } -.fa-code-fork::before { content: "\f108"; } -.fa-comment::before { content: "\f109"; } -.fa-download::before { content: "\f10a"; } -.fa-eye::before { content: "\f10b"; } -.fa-eye-slash::before { content: "\f10c"; } -.fa-facebook-square::before { content: "\f10d"; } -.fa-filter::before { content: "\f10e"; } -.fa-flag::before { content: "\f10f"; } -.fa-floppy-o::before, .fa-save::before { content: "\f110"; } -.fa-gavel::before, .fa-legal::before { content: "\f111"; } -.fa-github::before { content: "\f112"; } -.fa-globe::before { content: "\f113"; } -.fa-google::before { content: "\f114"; } -.fa-history::before { content: "\f115"; } -.fa-home::before { content: "\f116"; } -.fa-inbox::before { content: "\f117"; } -.fa-key-modern::before { content: "\f118"; } -.fa-link::before { content: "\f119"; } -.fa-pencil::before { content: "\f11a"; } -.fa-pencil-square-o::before, .fa-edit::before { content: "\f11b"; } -.fa-question-circle::before { content: "\f11c"; } -.fa-quote-left::before { content: "\f11d"; } -.fa-reply::before { content: "\f11e"; } -.fa-rss::before { content: "\f11f"; } -.fa-search::before { content: "\f120"; } -.fa-share-alt::before { content: "\f121"; } -.fa-sign-in::before { content: "\f122"; } -.fa-sign-out::before { content: "\f123"; } -.fa-sliders::before { content: "\f124"; } -.fa-sort::before { content: "\f125"; } -.fa-sort-asc::before { content: "\f126"; } -.fa-sort-desc::before { content: "\f127"; } -.fa-star::before { content: "\f128"; } -.fa-star-o::before { content: "\f129"; } -.fa-table::before { content: "\f12a"; } -.fa-th-list::before { content: "\f12b"; } -.fa-times::before, .fa-close::before { content: "\f12c"; } -.fa-trash::before { content: "\f12d"; } -.fa-trash-o::before { content: "\f12e"; } -.fa-user-circle-o::before { content: "\f12f"; } -.fa-user-plus::before { content: "\f130"; } -.fa-wrench::before { content: "\f131"; } +.fa-calendar::before { content: "\f101"; } +.fa-code-fork::before { content: "\f102"; } +.fa-comment::before { content: "\f103"; } +.fa-eye::before { content: "\f104"; } +.fa-facebook-square::before { content: "\f105"; } +.fa-floppy-o::before, .fa-save::before { content: "\f106"; } +.fa-github::before { content: "\f107"; } +.fa-globe::before { content: "\f108"; } +.fa-google::before { content: "\f109"; } +.fa-history::before { content: "\f10a"; } +.fa-home::before { content: "\f10b"; } +.fa-inbox::before { content: "\f10c"; } +.fa-key-modern::before { content: "\f10d"; } +.fa-link::before { content: "\f10e"; } +.fa-pencil::before { content: "\f10f"; } +.fa-question-circle::before { content: "\f110"; } +.fa-sign-in::before { content: "\f111"; } +.fa-sign-out::before { content: "\f112"; } +.fa-star::before { content: "\f113"; } +.fa-star-o::before { content: "\f114"; } +.fa-table::before { content: "\f115"; } +.fa-th-list::before { content: "\f116"; } +.fa-user-circle-o::before { content: "\f117"; } +.fa-user-plus::before { content: "\f118"; } +.fa-users::before { content: "\f119"; } diff --git a/public/fonts/fa-dtbl-1.eot b/public/fonts/fa-dtbl-1.eot index 177974a..0db98fc 100644 Binary files a/public/fonts/fa-dtbl-1.eot and b/public/fonts/fa-dtbl-1.eot differ diff --git a/public/fonts/fa-dtbl-1.svg b/public/fonts/fa-dtbl-1.svg index 858fb1b..46c1270 100644 --- a/public/fonts/fa-dtbl-1.svg +++ b/public/fonts/fa-dtbl-1.svg @@ -1,11 +1,11 @@ -Created by FontForge 20170805 at Sat Jul 28 18:55:50 2018 +Created by FontForge 20170805 at Sun Jul 29 11:26:42 2018 By ondra The Fork Awesome font is licensed under the SIL OFL 1.1 (http://scripts.sil.org/OFL). Fork Awesome is a fork based of off Font Awesome 4.7.0 by Dave Gandy. More info on licenses at https://forkawesome.github.io @@ -22,7 +22,7 @@ The Fork Awesome font is licensed under the SIL OFL 1.1 (http://scripts.sil.org/ bbox="-0.14014 -256.168 2048 1536.01" underline-thickness="89.6" underline-position="-179.2" - unicode-range="U+0020-F131" + unicode-range="U+0020-F119" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/public/fonts/fa-dtbl-1.ttf b/public/fonts/fa-dtbl-1.ttf index d6fb097..a94926b 100644 Binary files a/public/fonts/fa-dtbl-1.ttf and b/public/fonts/fa-dtbl-1.ttf differ diff --git a/public/fonts/fa-dtbl-1.woff2 b/public/fonts/fa-dtbl-1.woff2 index f95ba30..c492287 100644 Binary files a/public/fonts/fa-dtbl-1.woff2 and b/public/fonts/fa-dtbl-1.woff2 differ diff --git a/resources/assets/sass/_fa-utils.scss b/resources/assets/sass/_fa-utils.scss index 94de8cf..ae3661e 100644 --- a/resources/assets/sass/_fa-utils.scss +++ b/resources/assets/sass/_fa-utils.scss @@ -28,7 +28,7 @@ } .fa-large { - font-size: 1.6em; + font-size: 1.5em; } .fa-huge { diff --git a/resources/assets/sass/bootstrap-customizations/_help.scss b/resources/assets/sass/_form-help.scss similarity index 73% rename from resources/assets/sass/bootstrap-customizations/_help.scss rename to resources/assets/sass/_form-help.scss index 22525b8..aa104d8 100644 --- a/resources/assets/sass/bootstrap-customizations/_help.scss +++ b/resources/assets/sass/_form-help.scss @@ -1,5 +1,8 @@ // help bubble icon .form-help { display: inline-block; +} + +.form-help-wrapper .form-help { margin-top: $form-text-margin-top; } diff --git a/resources/assets/sass/_helpers.scss b/resources/assets/sass/_helpers.scss index b737b47..e563220 100644 --- a/resources/assets/sass/_helpers.scss +++ b/resources/assets/sass/_helpers.scss @@ -13,48 +13,7 @@ } } -@media (max-width:767px){ - .mobile-only { - display: none; - } - - .mobile-no-border { - border: 0 none !important; - } -} - -.border-dashed { - border-style: dashed !important; -} - -.border-dotted { - border-style: dotted !important; -} - -.last-p-mb-0 { - &:last-child { - margin-bottom: 0; - } -} - -@each $color, $value in $colors { - .border-#{$color} { - border-color: $value !important; - } -} - .box-shadow { box-shadow: 0 2px 3px rgba(black, .3); } -.small2 { - font-size: 70%; -} - -a.link-no-color { - color: unset; -} - -.btn-square { - min-width: 2.5em; -} diff --git a/resources/assets/sass/app.scss b/resources/assets/sass/app.scss index c4a051c..f4e694f 100644 --- a/resources/assets/sass/app.scss +++ b/resources/assets/sass/app.scss @@ -8,10 +8,15 @@ html { @import "helpers"; @import "fa-utils"; @import "block-collapse"; +@import "form-help"; @import "bootstrap-customizations/paginate"; @import "bootstrap-customizations/card"; @import "bootstrap-customizations/tooltip"; @import "bootstrap-customizations/navbar"; @import "bootstrap-customizations/footer"; -@import "bootstrap-customizations/help"; +@import "bootstrap-customizations/link"; +@import "bootstrap-customizations/border"; +@import "bootstrap-customizations/button"; +@import "bootstrap-customizations/responsive"; +@import "bootstrap-customizations/typography"; diff --git a/resources/assets/sass/bootstrap-customizations/_border.scss b/resources/assets/sass/bootstrap-customizations/_border.scss new file mode 100644 index 0000000..7d36cc3 --- /dev/null +++ b/resources/assets/sass/bootstrap-customizations/_border.scss @@ -0,0 +1,13 @@ +.border-dashed { + border-style: dashed !important; +} + +.border-dotted { + border-style: dotted !important; +} + +@each $color, $value in $colors { + .border-#{$color} { + border-color: $value !important; + } +} diff --git a/resources/assets/sass/bootstrap-customizations/_button.scss b/resources/assets/sass/bootstrap-customizations/_button.scss new file mode 100644 index 0000000..04e3682 --- /dev/null +++ b/resources/assets/sass/bootstrap-customizations/_button.scss @@ -0,0 +1,3 @@ +.btn-square { + min-width: 2.5em; +} diff --git a/resources/assets/sass/bootstrap-customizations/_card.scss b/resources/assets/sass/bootstrap-customizations/_card.scss index 96a4c34..56ddeb1 100644 --- a/resources/assets/sass/bootstrap-customizations/_card.scss +++ b/resources/assets/sass/bootstrap-customizations/_card.scss @@ -20,6 +20,7 @@ .card-header-extra { display: flex; align-items: center; + height: 3rem; } // special styles for buttons in card header @@ -31,3 +32,10 @@ .card-header .fa-large { margin: -.6em 0; // fix icon alignment } + +.card-body .close { + margin-top:-$sp1; + margin-right:-$sp1; + min-width: 1.5rem; + text-align:center; +} diff --git a/resources/assets/sass/bootstrap-customizations/_link.scss b/resources/assets/sass/bootstrap-customizations/_link.scss new file mode 100644 index 0000000..cc4d36b --- /dev/null +++ b/resources/assets/sass/bootstrap-customizations/_link.scss @@ -0,0 +1,3 @@ +a.link-no-color { + color: unset; +} diff --git a/resources/assets/sass/bootstrap-customizations/_responsive.scss b/resources/assets/sass/bootstrap-customizations/_responsive.scss new file mode 100644 index 0000000..7f74e12 --- /dev/null +++ b/resources/assets/sass/bootstrap-customizations/_responsive.scss @@ -0,0 +1,9 @@ +@media (max-width:767px) { + .mobile-only { + display: none; + } + + .mobile-no-border { + border: 0 none !important; + } +} diff --git a/resources/assets/sass/bootstrap-customizations/_typography.scss b/resources/assets/sass/bootstrap-customizations/_typography.scss new file mode 100644 index 0000000..484ea17 --- /dev/null +++ b/resources/assets/sass/bootstrap-customizations/_typography.scss @@ -0,0 +1,8 @@ +p:last-child { + margin-bottom: 0; +} + +.small2 { + font-size: 70%; +} + diff --git a/resources/views/form/_help-inner.blade.php b/resources/views/form/_help-inner.blade.php new file mode 100644 index 0000000..eda81fe --- /dev/null +++ b/resources/views/form/_help-inner.blade.php @@ -0,0 +1,9 @@ +@if($help) + +@endif diff --git a/resources/views/form/_help.blade.php b/resources/views/form/_help.blade.php index 134c443..3844d45 100644 --- a/resources/views/form/_help.blade.php +++ b/resources/views/form/_help.blade.php @@ -1,11 +1,3 @@ -
- @if($w->help) - help, '<')) - data-html="true" - @endif - title="{{ $w->help }}"> - @endif +
+ @include('form._help-inner', ['help' => $w->help])
diff --git a/resources/views/layouts/main-nav.blade.php b/resources/views/layouts/main-nav.blade.php index f68837a..373908f 100644 --- a/resources/views/layouts/main-nav.blade.php +++ b/resources/views/layouts/main-nav.blade.php @@ -2,7 +2,7 @@ @@ -91,7 +91,7 @@ @endif @if($table->origin) -

+

Adapted From
{!! Widget::tryLink($table->origin) !!}

@@ -118,17 +118,30 @@ Created - {{ $table->created_at->format("M j, Y") }} + + + {{ $table->created_at->format("M j, Y") }} + + Updated - {{ $table->updated_at->format("M j, Y") }} + + + {{ $table->updated_at->format("M j, Y") }} + + Revisions - {{ $table->revisions()->count() }} + {{ $table->revisions_count }} + + + + Visits + {{ $table->visits }}  {!! Widget::help('Visitors counted once per day') !!} diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php index fa58d6c..8b284af 100644 --- a/resources/views/welcome.blade.php +++ b/resources/views/welcome.blade.php @@ -3,15 +3,81 @@ @extends('layouts.app') @section('content') + @guest +
+
+
+
+ + @sr(Close) + + +

Welcome to datatable.directory!

+ +

+ This website is a place for sharing useful tables of structured data. + These can be cipher tables, character maps, lists of electronic components, + paper grades, page formats, or scientific datasets, such as lists of countries, + geographic features, celestial bodies, elements, nutrition values, etc. + Anything you can put in a table can be shared here, as long as it conforms to our + Terms of Service. You can search, filter, and export + data from our tables to many different formats, such as JSON, XML, C structs, or CSV. +

+

+ The table directory is open to anyone, and can be used without login. However, + you will miss out on some features, like the ability to create or edit tables, + post comments, or save export presets. You can register using + your e-mail and a password, or through Google, + GitHub, + or Facebook. +

+
+
+
+
+ @endif +
-
+
-
Dashboard
+
+ @icon(fa-users fa-pr fa-large) +

Users

+ + +
-
-

Welcome to the public landing page.

+
+ @if(count($users) == 0) + No users yet. + @else + @foreach($users as $user) + + @icon(fa-user-circle-o fa-pr){{ $user->title }}
+ {{ $user->handle }} +
+ @endforeach + @endif
+ +
+
+
+ @icon(fa-table fa-pr fa-large) +

Popular Tables

+ + +
+ + @include('profile._table-list') +
+
@endsection diff --git a/routes/web.php b/routes/web.php index 6fae8d1..899826d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -5,15 +5,20 @@ require "login.php"; Route::get('/about/terms', function () { return view('about.terms'); -}); +})->name('terms'); Route::get('/about/privacy', function () { return view('about.privacy'); -}); +})->name('privacy'); -Route::get('/', function () { - return view('welcome'); -}); +Route::get('/', 'DashController@view')->name('dash'); + +// redirect home to user home +Route::get('/home', function () { + if (guest()) return redirect('/'); + + return redirect(route('profile.view', user()->name)); +})->name('home'); Route::group(['middleware' => 'auth'], function () { // Table resource