From 64b26ef059c167404a5518b58c87967d6c33e1b7 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Tue, 23 Jun 2026 19:24:38 +0200 Subject: [PATCH] Migration complete --- _rhpz_ide_helper.php | 9 + app/Auth/XenForoGuard.php | 39 + app/Auth/XenForoUser.php | 73 +- app/Console/Commands/FixEncodedSlugs.php | 40 + .../Commands/FixEntriesDescription.php | 47 + .../Commands/MigrateCategoriesConfigure.php | 44 + .../Commands/MigrateCategoriesExecute.php | 92 + .../Commands/MigrateEntriesComments.php | 80 + .../Commands/MigrateEntriesExecute.php | 295 +++ app/Console/Commands/MigrateEntriesImages.php | 146 ++ app/Console/Commands/MigrateGamesExecute.php | 169 ++ app/Console/Commands/MigrateNewsExecute.php | 149 ++ app/Console/Commands/MigrateNewsImages.php | 128 ++ .../Commands/MigrateReviewsExecute.php | 117 ++ .../Commands/MigrateTaxonomiesConfigure.php | 44 + .../Commands/MigrateTaxonomiesExecute.php | 77 + .../Commands/MigrateUsersConfigure.php | 57 + app/Console/Commands/MigrateUsersExecute.php | 229 ++ app/Console/Commands/MigrateUsersPlan.php | 143 ++ app/Console/Commands/MigrateXFConfigure.php | 41 + app/Helpers/MigrationHelpers.php | 47 + .../Controllers/DynamicLoadController.php | 2 +- app/Http/Controllers/EntryController.php | 3 +- app/Http/Controllers/HomeController.php | 3 +- app/Http/Controllers/ReviewController.php | 33 + app/Http/Controllers/ToolsController.php | 6 + app/Http/Middleware/CheckXenForoUserState.php | 50 + app/Http/Requests/StoreEntryRequest.php | 40 +- app/Http/Requests/StoreReviewRequest.php | 41 + app/Jobs/DeleteXenForoCommentsThread.php | 5 +- app/Jobs/RestoreXenForoCommentsThread.php | 5 +- app/Livewire/Database.php | 57 +- app/Livewire/HashesChecker.php | 81 + app/Livewire/Reviews.php | 92 + app/Models/Entry.php | 42 +- app/Models/EntryReview.php | 63 + app/Models/MigrationUserPlan.php | 53 + app/Models/News.php | 14 +- app/Policies/EntryReviewPolicy.php | 36 + app/Providers/AppServiceProvider.php | 6 + app/Proxy/VisitorProxy.php | 43 + app/Services/ActivityService.php | 36 +- app/Services/ReviewsService.php | 46 + app/Services/SubmissionsService.php | 7 +- app/Services/XenforoApiService.php | 22 +- app/Traits/HasXenforoUserId.php | 15 + .../DatabaseFilterWithModeSearch.php | 2 +- .../DatabaseFilterWithoutModeSearch.php | 2 +- app/View/Components/ErrorBlock.php | 4 + app/View/Components/ReviewCard.php | 30 + app/View/Components/ReviewStarRating.php | 28 + app/helpers.php | 68 +- bootstrap/app.php | 1 + composer.json | 2 + composer.lock | 91 +- config/database.php | 26 + config/menu.php | 7 +- ...2026_06_17_114641_create_reviews_table.php | 33 + ...84700_create_migration_user_plan_table.php | 39 + ...080416_create_migration_settings_table.php | 28 + ...19_125237_create_migrations_logs_table.php | 34 + ...134939_alter_migration_user_plan_table.php | 28 + ...85615_create_migration_game_plan_table.php | 35 + ...06_22_132647_delete_gallery_constraint.php | 26 + database/schema/mariadb-schema.sql | 634 ++++++ extra.less | 1853 ++++++++++++++++- public/ZELDA.ips | Bin 1571 -> 0 bytes public/link.ips | Bin 0 -> 1434443 bytes resources/css/app.css | 2 + resources/css/base/variables.css | 3 + resources/css/components/cards.css | 83 + resources/css/components/common.css | 87 + resources/css/components/database.css | 48 + resources/css/components/drafts.css | 102 +- resources/css/components/forms.css | 94 + resources/css/components/hovercard.css | 37 +- resources/css/components/modcp.css | 125 ++ resources/css/components/notifications.css | 22 + resources/css/components/queue.css | 79 + resources/css/components/settings.css | 23 + resources/css/components/tools.css | 56 + resources/css/layout/activity.css | 82 +- resources/css/layout/content.css | 149 ++ resources/css/layout/entry.css | 269 ++- resources/css/layout/news.css | 119 +- resources/css/layout/responsive.css | 270 +++ resources/css/layout/reviews.css | 156 ++ resources/css/layout/submit.css | 53 +- resources/js/HashesChecker.js | 47 + resources/js/app.js | 4 + resources/js/mobile-menu.js | 46 + resources/js/submissions.js | 36 +- resources/views/activity/timeline.blade.php | 2 + ...database-filter-with-mode-search.blade.php | 6 +- ...abase-filter-without-mode-search.blade.php | 6 +- .../views/components/entry-card.blade.php | 2 +- .../views/components/error-block.blade.php | 2 +- .../views/components/gallery-field.blade.php | 2 +- .../components/languages-selector.blade.php | 3 +- .../components/main-image-field.blade.php | 3 +- .../components/markdown-textarea.blade.php | 7 +- .../views/components/review-card.blade.php | 23 + .../components/review-star-rating.blade.php | 5 + resources/views/components/topbar.blade.php | 102 +- .../components/xf-username-link.blade.php | 1 + resources/views/entries/comments.blade.php | 33 +- resources/views/entries/show.blade.php | 16 +- resources/views/home.blade.php | 4 + resources/views/layouts/app.blade.php | 3 +- .../{components => layouts}/menu.blade.php | 17 +- .../views/livewire/authors-selector.blade.php | 2 +- resources/views/livewire/database.blade.php | 6 +- .../views/livewire/game-selector.blade.php | 2 +- .../views/livewire/hashes-checker.blade.php | 68 + .../views/livewire/hashes-upload.blade.php | 11 +- resources/views/livewire/reviews.blade.php | 51 + resources/views/news/show.blade.php | 6 +- resources/views/pages/user_state.blade.php | 7 + resources/views/reviews/index.blade.php | 11 + resources/views/reviews/submit.blade.php | 70 + resources/views/submissions/form.blade.php | 9 +- resources/views/tools/hasher.blade.php | 16 + routes/breadcrumbs.php | 6 +- routes/web.php | 8 +- storage/hashes.sqlite | Bin 6217728 -> 43622400 bytes vite.config.js | 2 +- 126 files changed, 8121 insertions(+), 221 deletions(-) create mode 100644 _rhpz_ide_helper.php create mode 100644 app/Console/Commands/FixEncodedSlugs.php create mode 100644 app/Console/Commands/FixEntriesDescription.php create mode 100644 app/Console/Commands/MigrateCategoriesConfigure.php create mode 100644 app/Console/Commands/MigrateCategoriesExecute.php create mode 100644 app/Console/Commands/MigrateEntriesComments.php create mode 100644 app/Console/Commands/MigrateEntriesExecute.php create mode 100644 app/Console/Commands/MigrateEntriesImages.php create mode 100644 app/Console/Commands/MigrateGamesExecute.php create mode 100644 app/Console/Commands/MigrateNewsExecute.php create mode 100644 app/Console/Commands/MigrateNewsImages.php create mode 100644 app/Console/Commands/MigrateReviewsExecute.php create mode 100644 app/Console/Commands/MigrateTaxonomiesConfigure.php create mode 100644 app/Console/Commands/MigrateTaxonomiesExecute.php create mode 100644 app/Console/Commands/MigrateUsersConfigure.php create mode 100644 app/Console/Commands/MigrateUsersExecute.php create mode 100644 app/Console/Commands/MigrateUsersPlan.php create mode 100644 app/Console/Commands/MigrateXFConfigure.php create mode 100644 app/Helpers/MigrationHelpers.php create mode 100644 app/Http/Controllers/ReviewController.php create mode 100644 app/Http/Middleware/CheckXenForoUserState.php create mode 100644 app/Http/Requests/StoreReviewRequest.php create mode 100644 app/Livewire/HashesChecker.php create mode 100644 app/Livewire/Reviews.php create mode 100644 app/Models/EntryReview.php create mode 100644 app/Models/MigrationUserPlan.php create mode 100644 app/Policies/EntryReviewPolicy.php create mode 100644 app/Proxy/VisitorProxy.php create mode 100644 app/Services/ReviewsService.php create mode 100644 app/Traits/HasXenforoUserId.php create mode 100644 app/View/Components/ReviewCard.php create mode 100644 app/View/Components/ReviewStarRating.php create mode 100644 database/migrations/2026_06_17_114641_create_reviews_table.php create mode 100644 database/migrations/2026_06_18_084700_create_migration_user_plan_table.php create mode 100644 database/migrations/2026_06_19_080416_create_migration_settings_table.php create mode 100644 database/migrations/2026_06_19_125237_create_migrations_logs_table.php create mode 100644 database/migrations/2026_06_19_134939_alter_migration_user_plan_table.php create mode 100644 database/migrations/2026_06_21_085615_create_migration_game_plan_table.php create mode 100644 database/migrations/2026_06_22_132647_delete_gallery_constraint.php create mode 100644 database/schema/mariadb-schema.sql delete mode 100644 public/ZELDA.ips create mode 100644 public/link.ips create mode 100644 resources/css/layout/responsive.css create mode 100644 resources/css/layout/reviews.css create mode 100644 resources/js/HashesChecker.js create mode 100644 resources/js/mobile-menu.js create mode 100644 resources/views/components/review-card.blade.php create mode 100644 resources/views/components/review-star-rating.blade.php rename resources/views/{components => layouts}/menu.blade.php (73%) create mode 100644 resources/views/livewire/hashes-checker.blade.php create mode 100644 resources/views/livewire/reviews.blade.php create mode 100644 resources/views/pages/user_state.blade.php create mode 100644 resources/views/reviews/index.blade.php create mode 100644 resources/views/reviews/submit.blade.php create mode 100644 resources/views/tools/hasher.blade.php diff --git a/_rhpz_ide_helper.php b/_rhpz_ide_helper.php new file mode 100644 index 0000000..e457369 --- /dev/null +++ b/_rhpz_ide_helper.php @@ -0,0 +1,9 @@ +user() !== null; } + /** + * Check if user is a guest. + * @return bool + */ public function guest(): bool { return ! $this->check(); } + /** + * Get user ID. + * @return mixed + */ public function id(): mixed { return $this->user()?->getAuthIdentifier(); } + /** + * If user is defined. + * @return bool + */ public function hasUser(): bool { return $this->user !== null; } + /** + * Login user. + * @return XenForoUser|null + */ public function user(): ?XenForoUser { if ($this->hasUser()) @@ -64,6 +92,13 @@ class XenForoGuard implements Guard return $this->user = new XenForoUser($xfUser); } + /** + * Unused. + * + * @param array $credentials + * + * @return bool + */ public function validate(array $credentials = []): bool { return false; @@ -74,6 +109,10 @@ class XenForoGuard implements Guard $this->user = $user; } + /** + * Unused. + * @return void + */ public function logout(): void { redirect('/'); diff --git a/app/Auth/XenForoUser.php b/app/Auth/XenForoUser.php index def6d9e..8cf5fcb 100644 --- a/app/Auth/XenForoUser.php +++ b/app/Auth/XenForoUser.php @@ -10,11 +10,67 @@ use Filament\Panel; use Illuminate\Contracts\Auth\Access\Authorizable; use Illuminate\Contracts\Auth\Authenticatable; +/** + * Xenforo user custom model used for authentification. + * + * @property-read int $user_id + * @property-read string $username + * @property-read int $username_date + * @property-read int $username_date_visible + * @property-read string $email + * @property-read string $custom_title + * @property-read int $language_id + * @property-read int $style_id + * @property-read string $style_variation + * @property-read string $timezone + * @property-read int $visible + * @property-read int $activity_visible + * @property-read int $user_group_id + * @property-read array $secondary_group_ids + * @property-read int $display_style_group_id + * @property-read int $permission_combination_id + * @property-read int $message_count + * @property-read int $question_solution_count + * @property-read int $conversations_unread + * @property-read int $register_date + * @property-read int $last_activity + * @property-read int $last_summary_email_date + * @property-read int $trophy_points + * @property-read int $alerts_unviewed + * @property-read int $alerts_unread + * @property-read int $avatar_date + * @property-read int $avatar_width + * @property-read int $avatar_height + * @property-read int $avatar_highdpi + * @property-read int $avatar_optimized + * @property-read string $gravatar + * @property-read string $user_state + * @property-read string $security_lock + * @property-read int $is_moderator + * @property-read int $is_admin + * @property-read int $is_banned + * @property-read int $reaction_score + * @property-read int $vote_score + * @property-read int $warning_points + * @property-read int $is_staff + * @property-read string $secret_key + * @property-read int $privacy_policy_accepted + * @property-read int $terms_accepted + * + * Custom properties. + * + * @property-read int $rhpz_entry_count + */ class XenForoUser extends XenForoData implements Authenticatable, Authorizable, FilamentUser, HasName { use \Illuminate\Foundation\Auth\Access\Authorizable; + /** + * Permissions identifier array. + * @var array|null + */ public ?array $permissions = null; + public function getAuthIdentifierName(): string { return 'user_id'; @@ -51,9 +107,9 @@ class XenForoUser extends XenForoData implements Authenticatable, Authorizable, } /** - * Get XenForo avatar if it exist. + * Get XenForo avatar if it exists. * - * @param string $xfSize + * @param string $xfSize s/m/... * * @return string|null */ @@ -70,6 +126,14 @@ class XenForoUser extends XenForoData implements Authenticatable, Authorizable, return null; } + /** + * Custom can function. Check XF user permissions. + * + * @param string $permissionGroup + * @param string $permissionName + * + * @return bool + */ public function _can(string $permissionGroup, string $permissionName): bool { if( !$this->permissions ){ @@ -105,4 +169,9 @@ class XenForoUser extends XenForoData implements Authenticatable, Authorizable, { return 'user_id'; } + + public function validState(): bool + { + return $this->user_state === 'valid'; + } } diff --git a/app/Console/Commands/FixEncodedSlugs.php b/app/Console/Commands/FixEncodedSlugs.php new file mode 100644 index 0000000..e2600df --- /dev/null +++ b/app/Console/Commands/FixEncodedSlugs.php @@ -0,0 +1,40 @@ +where('slug', 'like', '%\\%%')->get(['id', 'slug']); + $fixed = 0; + + foreach ($rows as $row) { + $decoded = rawurldecode($row->slug); + if ($decoded === $row->slug) continue; + + try { + DB::table($table)->where('id', $row->id)->update(['slug' => $decoded]); + $fixed++; + } catch (\Throwable $e) { + $this->warn("{$table}#{$row->id} : collision '{$decoded}', ignored ({$e->getMessage()})."); + } + } + + if ($fixed > 0) { + $this->info("{$table}: {$fixed} fixed slugs."); + } + } + } +} diff --git a/app/Console/Commands/FixEntriesDescription.php b/app/Console/Commands/FixEntriesDescription.php new file mode 100644 index 0000000..e0765be --- /dev/null +++ b/app/Console/Commands/FixEntriesDescription.php @@ -0,0 +1,47 @@ + true]); + + $rows = DB::table('migrations_logs') + ->where('source_system', 'wp') + ->where('source_table', 'wp_posts') + ->where('target_table', 'entries') + ->get(['source_id', 'target_id']); + + $this->info("{$rows->count()} entries touched."); + + $this->withProgressBar($rows, function ($row) use ($converter) { + $rawHtml = DB::connection('old_wp')->table('posts') + ->where('ID', $row->source_id) + ->value('post_content'); + + if ($rawHtml === null) return; + + $markdown = trim($rawHtml) === '' ? $rawHtml : $converter->convert(MigrationHelpers::wpAutoP($rawHtml)); + + DB::table('entries')->where('id', $row->target_id)->update([ + 'description' => $markdown, + 'updated_at' => now(), + ]); + }); + + $this->newLine(); + $this->info('Process finished.'); + return self::SUCCESS; + } +} diff --git a/app/Console/Commands/MigrateCategoriesConfigure.php b/app/Console/Commands/MigrateCategoriesConfigure.php new file mode 100644 index 0000000..6c9589e --- /dev/null +++ b/app/Console/Commands/MigrateCategoriesConfigure.php @@ -0,0 +1,44 @@ +ask("Write WP taxonomy name. Write nothing if you want to save changes.", "" ); + if( $taxonomy == "" ) + break; + + $section = $this->ask("Write entry section equivalent."); + + $taxonomyMap[$taxonomy] = $section; + } + + DB::table('migration_settings') + ->updateOrInsert([ + 'key' => 'wp_categories_to_entry_sections' + ],[ + 'value' => json_encode($taxonomyMap), 'updated_at' => now() + ]); + + $this->info('WP Categories to entry sections has been configured.'); + } +} diff --git a/app/Console/Commands/MigrateCategoriesExecute.php b/app/Console/Commands/MigrateCategoriesExecute.php new file mode 100644 index 0000000..5959285 --- /dev/null +++ b/app/Console/Commands/MigrateCategoriesExecute.php @@ -0,0 +1,92 @@ +where('key', 'wp_categories_to_entry_sections')->value('value'), true); + + if( !$taxMap ){ + $this->error("No WP taxonomies need to be transferred."); + return self::FAILURE; + } + + if( $this->ask("Are you sure you want launch that migration? Write ok if you want to launch it.", "") !== 'ok' ){ + return self::SUCCESS; + } + + $table = self::TABLE; + + foreach ( $taxMap as $wpTax => $restrictedTo ) + { + $this->info("Migrate: {$wpTax} restricted to {$table}"); + + $terms = DB::connection('old_wp') + ->table('term_taxonomy') + ->join('terms', 'term_taxonomy.term_id', '=', 'terms.term_id') + ->where('term_taxonomy.taxonomy', $wpTax) + ->select('term_taxonomy.term_taxonomy_id', 'terms.name', 'terms.slug') + ->get(); + + $this->withProgressBar($terms, function ($term) use ($table, $restrictedTo) { + + $exists = DB::table('migrations_logs') + ->where('source_system', 'wp') + ->where('source_table', 'wp_term_taxonomy') + ->where('source_id', $term->term_taxonomy_id ) + ->exists(); + + if( $exists ) + return; + + $existing = DB::table( $table )->where('slug', $term->slug)->first(); + + if( $existing === null) { + $Id = DB::table($table) + ->insertGetId([ + 'name' => $term->name, 'slug' => $term->slug, + 'restricted_to' => json_encode([$restrictedTo]), + 'created_at' => now(), 'updated_at' => now() + ]); + } else { + $Id = $existing->id; + $restrictedToField = json_decode($existing->restricted_to, true) ?? []; + if( !in_array( $restrictedTo, $restrictedToField, true ) ){ + $restrictedToField[] = $restrictedTo; + DB::table($table) + ->where('id', $Id) + ->update(['restricted_to' => json_encode($restrictedToField), 'updated_at' => now()]); + } + } + + DB::table('migrations_logs')->insert([ + 'source_system' => 'wp', + 'source_table' => 'wp_term_taxonomy', + 'source_id' => $term->term_taxonomy_id, + 'target_table' => $table, + 'target_id' => $Id, + 'status' => 'done', + 'migrated_at' => now(), + 'created_at' => now(), + 'updated_at' => now() + ]); + }); + $this->newLine(); + } + + $this->info("Migration done"); + return self::SUCCESS; + } +} diff --git a/app/Console/Commands/MigrateEntriesComments.php b/app/Console/Commands/MigrateEntriesComments.php new file mode 100644 index 0000000..7b75704 --- /dev/null +++ b/app/Console/Commands/MigrateEntriesComments.php @@ -0,0 +1,80 @@ +option('import-log-table'); + if( !$logTable ){ + $this->error( 'XenForo import log table required' ); + return self::FAILURE; + } + + $this->commentsThread( 'entries', 'wp_posts', $logTable ); + $this->commentsThread( 'news', 'wp_posts__news', $logTable ); + + $this->info( "Done" ); + return self::SUCCESS; + } + + private function commentsThread( string $table, string $sourceTable, string $logTable ): void + { + $query = DB::table('migrations_logs') + ->where('source_system', 'wp' ) + ->where('source_table', $sourceTable ) + ->where('target_table', $table ); + + if( $limit = $this->option('limit') ){ + $query->limit((int)$limit); + } + + $rows = $query->get(['source_id', 'target_id']); + $this->info( "{$rows->count()} need migration logs" ); + + $stats = [ 'updated' => 0, 'no_meta' => 0, 'no_new_thread' => 0 ]; + + $this->withProgressBar( $rows, function ( $row ) use( $table, $logTable, &$stats ) { + + $oldThreadId = DB::connection('old_wp') + ->table('postmeta') + ->where('post_id', $row->source_id ) + ->where('meta_key', 'xf_thread_id') + ->value('meta_value'); + + if( !$oldThreadId ){ + $stats['no_meta']++; + return; + } + + $newThreadId = DB::connection('xenforo') + ->withoutTablePrefix( function( Connection $db ) use( $logTable, $oldThreadId ){ + return $db->table( $logTable ) + ->where('content_type', 'thread') + ->where('old_id', (string) $oldThreadId ) + ->value('new_id'); + }); + + if( !$newThreadId ){ + $stats['no_new_thread']++; + return; + } + + DB::table( $table )->where('id', $row->target_id )->update([ + 'comments_thread_id' => (int) $newThreadId + ]); + + $stats['updated']++; + }); + + $this->newLine(); + $this->info( "Updated: {$stats['updated']}, No new thread: {$stats['no_new_thread']}, No meta: {$stats['no_meta']}" ); + } +} diff --git a/app/Console/Commands/MigrateEntriesExecute.php b/app/Console/Commands/MigrateEntriesExecute.php new file mode 100644 index 0000000..cda0727 --- /dev/null +++ b/app/Console/Commands/MigrateEntriesExecute.php @@ -0,0 +1,295 @@ + 'draft', + 'pending' => 'pending', + 'publish' => 'published', + 'private' => 'hidden', + 'locked' => 'locked', + ]; + + private const array ACF_FIELDS = [ + 'entry_title', 'version_number', 'release_date', 'release_site', + 'youtube_video', 'staff', 'hashes', + ]; + + private const array MULTI_TAXONOMIES = [ + 'language' => 'languages', + 'modifications' => 'modifications', + 'author-name' => 'authors', + 'document-category' => 'categories', + 'utility-category' => 'categories', + 'utility-os' => 'systems', + ]; + + private array $stats = []; + + private function getSingle( ?int $term_id, string $targetTable ): ?int + { + if (!$term_id) { + return null; + } + + return DB::table('migrations_logs') + ->where('source_system', 'wp') + ->where('target_table', $targetTable ) + ->where('source_id', $term_id) + ->value('target_id'); + } + + private function uniqueSlug(string $baseSlug, string $table, ?int $ignoreId = null): string + { + $slug = $baseSlug; + $i = 1; + while ( + DB::table($table)->where('slug', $slug) + ->when($ignoreId, fn ($q) => $q->where('id', '!=', $ignoreId)) + ->exists() && $i < 100 + ) { + $slug = $baseSlug . '-' . $i++; + } + if ($i >= 100) { + $slug = (string) \Str::uuid(); + } + return $slug; + } + + private function parseStaffCredits(?string $raw): array + { + if (!$raw || trim($raw) === '') { + return []; + } + + $credits = []; + foreach (preg_split('/\r\n|\r|\n/', $raw) as $line) { + $line = trim($line); + if ($line === '') continue; + + if (preg_match('/^(.+?):\s*(.*)$/', $line, $m)) { + $credits[] = ['name' => trim($m[1]), 'description' => trim($m[2])]; + } elseif (!empty($credits)) { + $last = array_key_last($credits); + $credits[$last]['description'] = trim($credits[$last]['description'] . ' ' . $line); + } else { + $credits[] = ['name' => $line, 'description' => '']; + } + } + + return $credits; + } + + private function parseHashes(?string $raw): array + { + if (!$raw || trim($raw) === '') return []; + + $results = []; + foreach (preg_split('/\n\s*\n/', trim($raw)) as $block) { + $fields = []; + foreach (preg_split('/\r\n|\r|\n/', trim($block)) as $line) { + $line = trim($line); + if ($line === '' || !str_contains($line, ':')) continue; + [$key, $value] = array_map('trim', explode(':', $line, 2)); + $fields[strtolower(preg_replace('/[^a-z0-9]/i', '', $key))] = $value; + } + if (empty($fields)) continue; + + $results[] = [ + 'filename' => $fields['filename'] ?? '', + 'hash_crc32' => $fields['crc32'] ?? '', + 'hash_sha1' => $fields['sha1'] ?? '', + ]; + } + return $results; + } + + private function attachMany(int $entryId, string $pivotTable, string $foreignKey, array $ttids, string $targetTable): void + { + if (empty($ttids)) return; + + $ids = DB::table('migrations_logs') + ->where('source_system', 'wp')->where('target_table', $targetTable) + ->whereIn('source_id', $ttids)->pluck('target_id'); + + foreach ($ids as $id) { + DB::table($pivotTable)->insertOrIgnore(['entry_id' => $entryId, $foreignKey => $id]); + } + } + + /** + * @param \StdClass $post + * @param string $cpt + * + * @return void + */ + private function migratePost( $post, string $cpt ): void + { + $exists = DB::table('migrations_logs') + ->where('source_system', 'wp') + ->where('source_table', 'wp_posts') + ->where('source_id', $post->ID) + ->exists(); + + if ($exists) + return; + + $meta = DB::connection('old_wp') + ->table('postmeta') + ->where('post_id', $post->ID) + ->whereIn('meta_key', self::ACF_FIELDS) + ->pluck('meta_value', 'meta_key'); + + $terms = DB::connection('old_wp') + ->table('term_relationships as tr') + ->join('term_taxonomy as tt', 'tr.term_taxonomy_id', '=', 'tt.term_taxonomy_id') + ->where('tr.object_id', $post->ID) + ->whereIn('tt.taxonomy', array_merge(['game', 'platform', 'hack-status', 'experience-level'], array_keys(self::MULTI_TAXONOMIES)) ) + ->select('tt.taxonomy', 'tt.term_taxonomy_id') + ->get(); + + $byTax = []; + foreach ($terms as $term) { + $byTax[$term->taxonomy][] = $term->term_taxonomy_id; + } + + $gameId = null; + if( !empty( $byTax['game'][0] ) && !empty( $byTax['platform'][0] ) ) + { + $gameId = DB::table('migration_game_plan') + ->where('wp_game_id', $byTax['game'][0]) + ->where('wp_platform_id', $byTax['platform'][0]) + ->value('game_id'); + + if( !$gameId ) + $this->stats['missing_game_plan']++; + } + + $statusId = $this->getSingle( $byTax['hack-status'][0] ?? null, 'statuses' ); + $levelId = $this->getSingle( $byTax['experience-level'][0] ?? null, 'levels' ); + + $userId = DB::table('migration_user_plan') + ->where('wp_user_id', $post->post_author ) + ->value('user_id'); + + if( !$userId ) { + $this->stats['missing_author']++; + return; + } + + $title = $meta['entry_title'] ?? null; + if( $cpt === 'translations' && !$title && $gameId ) + { + $title = DB::table('games')->where('id', $gameId)->value('name'); + } + + $slug = $this->uniqueSlug( rawurldecode($post->post_name), 'entries' ); + + $entryId = DB::table('entries')->insertGetId([ + 'type' => $cpt, + 'title' => $title, + 'complete_title' => $post->post_title ?? null, + 'slug' => $slug, + 'description' => MigrationHelpers::htmlToMarkdown($post->post_content), + 'state' => self::STATE_MAP[$post->post_status], + 'game_id' => $gameId, + 'platform_id' => null, + 'status_id' => $statusId, + 'level_id' => $levelId, + 'version' => $meta['version_number'] ?? null, + 'release_date' => $meta['release_date'] ?? null, + 'staff_credits' => json_encode( $this->parseStaffCredits($meta['staff'] ?? null)), + 'relevant_link' => $meta['release_site'] ?? null, + 'youtube_link' => $meta['youtube_video'] ?? null, + 'user_id' => $userId, + 'created_at' => $post->post_date, + 'updated_at' => $post->post_modified, + ]); + + $this->attachMany($entryId, 'entry_authors', 'author_id', $byTax['author-name'] ?? [], 'authors'); + $this->attachMany($entryId, 'entry_languages', 'language_id', $byTax['language'] ?? [], 'languages'); + + if( $cpt === 'romhacks') + $this->attachMany($entryId, 'entry_modifications', 'modification_id', $byTax['modifications'] ?? [], 'modifications'); + + if ($cpt === 'utilities') { + $this->attachMany($entryId, 'entry_categories', 'category_id', $byTax['utility-category'] ?? [], 'categories'); + $this->attachMany($entryId, 'entry_systems', 'system_id', $byTax['utility-os'] ?? [], 'systems'); + } + if ($cpt === 'documents') { + $this->attachMany($entryId, 'entry_categories', 'category_id', $byTax['document-category'] ?? [], 'categories'); + } + + if( $cpt === 'translations' || $cpt === 'romhacks' ){ + foreach ( $this->parseHashes( $meta['hashes'] ?? null ) as $hash ) { + DB::table('entry_hashes')->insert([ + 'entry_id' => $entryId, + 'filename' => $hash['filename'], + 'hash_crc32' => $hash['hash_crc32'], + 'hash_sha1' => $hash['hash_sha1'], + 'verified' => 'TBD', + 'created_at' => now(), + 'updated_at' => now(), + ]); + } + } + + DB::table('migrations_logs')->insert([ + 'source_system' => 'wp', + 'source_table' => 'wp_posts', + 'source_id' => $post->ID, + 'target_table' => 'entries', + 'target_id' => $entryId, + 'status' => 'done', + 'migrated_at' => now(), + 'updated_at' => now(), + 'created_at' => now(), + ]); + + $this->stats['created']++; + + } + + private function migrateCpt( string $cpt ): void + { + $this->info( "Current migration of : $cpt "); + $this->stats = [ 'missing_author' => 0, 'missing_game_plan' => 0, 'created' => 0 ]; + + $query = DB::connection('old_wp') + ->table('posts') + ->where('post_type', $cpt) + ->whereIn('post_status', array_keys(self::STATE_MAP)) + ; + + if( $limit = $this->option('limit') ) { + $query->limit((int) $limit); + } + + $posts = $query->select('ID', 'post_title', 'post_name', 'post_content', 'post_status', 'post_author', 'post_date', 'post_modified') + ->get(); + + $this->withProgressBar($posts, fn( $post ) => $this->migratePost( $post, $cpt ) ); + + $this->newLine(); + $this->info( "Created {$this->stats['created']} entries'. No authors {$this->stats['missing_author']}. Missing game {$this->stats['missing_game_plan']} entries" ); + } + + public function handle() + { + foreach ( self::WP_CPTS as $cpt ) { + $this->migrateCpt( $cpt ); + } + } +} diff --git a/app/Console/Commands/MigrateEntriesImages.php b/app/Console/Commands/MigrateEntriesImages.php new file mode 100644 index 0000000..944c61b --- /dev/null +++ b/app/Console/Commands/MigrateEntriesImages.php @@ -0,0 +1,146 @@ +table('postmeta') + ->where('post_id', $attachmentId) + ->where('meta_key', '_wp_attached_file') + ->value('meta_value'); + + if( !$relativePath ) + return null; + + $sourcePath = rtrim($wpUploadsPath, '/') . '/' . $relativePath; + if( !is_file($sourcePath) ) + return null; + + $extension = pathinfo($sourcePath, PATHINFO_EXTENSION); + $filename = Str::random(40) . ($extension ? '.' . $extension : ''); + $destinationRelative = $destinationPath . '/' . $filename; + + $stream = fopen($sourcePath, 'r'); + Storage::disk('public')->put($destinationRelative, $stream); + if( is_resource($stream) ) + fclose($stream); + + return $destinationRelative; + } + + private function processEntry( int $wpPostId, int $entryId, string $wpUploadsPath, array &$stats ): void + { + $exists = DB::table('migrations_logs') + ->where('source_system', 'wp') + ->where('source_table', 'wp_posts__attachments') + ->where('source_id', $wpPostId) + ->exists(); + + if( $exists ) + return; + + $thumbnailId = DB::connection('old_wp') + ->table('postmeta') + ->where('post_id', $wpPostId) + ->where('meta_key', '_thumbnail_id') + ->value('meta_value'); + + if( $thumbnailId ){ + $newPath = $this->copyAttachment( (int) $thumbnailId, $wpUploadsPath, 'entries/main-images' ); + if( $newPath ){ + DB::table('entries') + ->where('id', $entryId) + ->update(['main_image' => $newPath]); + $stats['main_image']++; + } else { + $stats['missing_files']++; + } + } + + $galleryRaw = DB::connection('old_wp') + ->table('postmeta') + ->where('post_id', $wpPostId) + ->where('meta_key', 'my_gallery') + ->value('meta_value'); + + $attachmentIds = $galleryRaw ? (@unserialize($galleryRaw) ?: []) : []; + + foreach ( array_values( $attachmentIds ) as $order => $attachmentId ) { + $newPath = $this->copyAttachment( (int) $attachmentId, $wpUploadsPath, "entries/gallery-images/{$entryId}" ); + if( !$newPath ){ + $stats['missing_files']++; + continue; + } + + DB::table('galleries') + ->insert([ + 'galleryable_type' => self::GALLERYABLE_TYPE, + 'galleryable_id' => $entryId, + 'image' => $newPath, + 'order' => $order, + 'created_at' => now(), + 'updated_at' => now(), + ]); + $stats['gallery_images']++; + } + + DB::table('migrations_logs') + ->insert([ + 'source_system' => 'wp', + 'source_table' => 'wp_posts__attachments', + 'source_id' => $wpPostId, + 'target_table' => 'entries', + 'target_id' => $entryId, + 'status' => 'done', + 'migrated_at' => now(), + 'created_at' => now(), + 'updated_at' => now(), + ]); + } + + public function handle() + { + $wpUploadsPath = $this->option('wp-uploads-path'); + if( !$wpUploadsPath || !is_dir($wpUploadsPath) ){ + $this->error('Missing WP Uploads Path'); + return self::FAILURE; + } + + $query = DB::table('migrations_logs') + ->where('source_system', 'wp') + ->where('source_table', 'wp_posts') + ->where('target_table', 'entries') + ; + + if( $limit = $this->option('limit') ){ + $query->limit((int)$limit); + } + + $rows = $query->get(['source_id', 'target_id']); + $this->info("{$rows->count()} entries need to be migrated"); + + $stats = ['main_image' => 0, 'gallery_images' => 0, 'missing_files' => 0 ]; + + $this->withProgressBar($rows, function($row) use($wpUploadsPath, &$stats) { + $this->processEntry( $row->source_id, $row->target_id, $wpUploadsPath, $stats ); + }); + + $this->newLine(); + $this->info("Migrated attachments. Main images: {$stats['main_image']}, Galleries: {$stats['gallery_images']}, Missing files: {$stats['missing_files']}"); + return self::SUCCESS; + } +} diff --git a/app/Console/Commands/MigrateGamesExecute.php b/app/Console/Commands/MigrateGamesExecute.php new file mode 100644 index 0000000..fc37c23 --- /dev/null +++ b/app/Console/Commands/MigrateGamesExecute.php @@ -0,0 +1,169 @@ +table('term_relationships as tr') + ->join('term_taxonomy as tt', 'tr.term_taxonomy_id', '=', 'tt.term_taxonomy_id') + ->join('posts as p', 'tr.object_id', '=', 'p.ID') + ->whereIn('tt.taxonomy', self::RELATED_TAXS ) + ->whereIn('p.post_type', self::WP_CPTS ) + ->where('p.post_status', '!=', 'trash') + ->select('p.ID as post_id', 'tt.taxonomy', 'tt.term_taxonomy_id' ) + ->get(); + + $byPost = []; + $ignored = 0; + foreach( $rows as $row ){ + if( isset( $byPost[ $row->post_id ][$row->taxonomy] ) ){ + $ignored++; + continue; + } + $byPost[ $row->post_id ][$row->taxonomy] = $row->term_taxonomy_id; + } + if( $ignored ){ + $this->warn("$ignored posts with multiple taxs will be ignored."); + } + + $structure = []; + $ignoredNoPlatform = 0; + + foreach ( $byPost as $data ) + { + if( empty( $data['game'] ) ) + continue; + + if( empty( $data['platform'] ) ){ + $ignoredNoPlatform++; + continue; + } + + $gameId = $data['game']; + $platformId = $data['platform']; + $genreId = $data['genre'] ?? self::NO_GENRE_SENTINEL; + + $structure[$gameId][$platformId]['count'] = ( $structure[$gameId][$platformId]['count'] ?? 0 ) + 1; + $structure[$gameId][$platformId]['genres'][$genreId] = ( $structure[$gameId][$platformId]['genres'][$genreId] ?? 0 ) + 1; + } + if( $ignoredNoPlatform ){ + $this->warn("$ignoredNoPlatform posts with no platforms will be ignored."); + } + + $games = DB::connection('old_wp') + ->table('term_taxonomy') + ->join('terms', 'term_taxonomy.term_id', '=', 'terms.term_id') + ->where('term_taxonomy.taxonomy', 'game' ) + ->select('term_taxonomy.term_taxonomy_id', 'terms.name', 'terms.slug' ) + ->get() + ->keyBy('term_taxonomy_id'); + + $platformMap = DB::table('migrations_logs') + ->where('source_system', 'wp' ) + ->where('target_table', 'platforms') + ->pluck('target_id', 'source_id'); + + $genreMap = DB::table('migrations_logs') + ->where('source_system', 'wp' ) + ->where('target_table', 'genres') + ->pluck('target_id', 'source_id'); + + if( $this->ask("Are you sure you want launch that migration? Write ok if you want to launch it.", "") !== 'ok' ){ + return self::SUCCESS; + } + + $created = 0; + $genreConflicts = 0; + + foreach( $structure as $gameId => $platforms ) + { + $game = $games->get( $gameId ); + if( !$game ) + continue; + + foreach( $platforms as $platformId => $info ) + { + $alreadyExists = DB::table('migration_game_plan') + ->where('wp_game_id', $gameId ) + ->where('wp_platform_id', $platformId ) + ->exists(); + if( $alreadyExists ) + continue; + + $newPlatformId = $platformMap[$platformId] ?? null; + if( !$newPlatformId ){ + $this->warn("$gameId ignored because platform $platformId does not exist in Laravel."); + continue; + } + + $genres = $info['genres']; + $newGenreId = null; + $topId = null; + $genreConflict = false; + + arsort( $genres ); + $topId = array_key_first( $genres ); + $topCount = $genres[$topId]; + $tied = count(array_filter( + $genres, fn( $c ) => $c === $topCount + )); + if( $tied > 1 ){ + $genreConflict = true; + $genreConflicts++; + } + $newGenreId = $topId === self::NO_GENRE_SENTINEL + ? self::DEFAULT_GENRE_ID + : ($genreMap[$topId] ?? self::DEFAULT_GENRE_ID); + + $gameSlug = $game->slug; + if (count($platforms) > 1) { + $platformSlug = DB::table('platforms')->where('id', $newPlatformId)->value('slug'); + $gameSlug = $game->slug . '-' . $platformSlug; + } + + $newGameId = DB::table('games') + ->insertGetId([ + 'name' => $game->name, + 'slug' => $gameSlug, + 'platform_id' => $newPlatformId, + 'genre_id' => $newGenreId, + 'created_at' => now(), + 'updated_at' => now(), + ]); + + DB::table('migration_game_plan')->insert([ + 'wp_game_id' => $gameId, + 'wp_platform_id' => $platformId, + 'game_id' => $newGameId, + 'wp_genre_id' => $topId === self::NO_GENRE_SENTINEL ? null : $topId, + 'post_count' => $info['count'], + 'genre_conflict' => $genreConflict, + 'created_at' => now(), + 'updated_at' => now(), + ]); + + $created++; + + } + } + + $this->newLine(); + $this->info("$created games created. $genreConflicts genre conflicts."); + } +} diff --git a/app/Console/Commands/MigrateNewsExecute.php b/app/Console/Commands/MigrateNewsExecute.php new file mode 100644 index 0000000..0141f10 --- /dev/null +++ b/app/Console/Commands/MigrateNewsExecute.php @@ -0,0 +1,149 @@ + 'draft', + 'pending' => 'pending', + 'publish' => 'published', + 'private' => 'hidden', + 'locked' => 'locked', + ]; + + private array $stats = []; + + private function uniqueSlug(string $baseSlug, string $table, ?int $ignoreId = null): string + { + $slug = $baseSlug; + $i = 1; + while ( + DB::table($table)->where('slug', $slug) + ->when($ignoreId, fn ($q) => $q->where('id', '!=', $ignoreId)) + ->exists() && $i < 100 + ) { + $slug = $baseSlug . '-' . $i++; + } + if ($i >= 100) { + $slug = (string) Str::uuid(); + } + return $slug; + } + + private function migrateNews($post): void + { + $exists = DB::table('migrations_logs') + ->where('source_system', 'wp') + ->where('source_table', 'wp_posts__news') + ->where('source_id', $post->ID) + ->exists(); + if ($exists) + return; + + $meta = DB::connection('old_wp') + ->table('postmeta') + ->where('post_id', $post->ID) + ->whereIn('meta_key', ['release_site', 'romhacks_page', 'youtube_video' ]) + ->pluck('meta_value', 'meta_key'); + + $categoryTtId = DB::connection('old_wp') + ->table('term_relationships as tr') + ->join('term_taxonomy as tt', 'tr.term_taxonomy_id', '=', 'tt.term_taxonomy_id') + ->where('tr.object_id', $post->ID) + ->where('tt.taxonomy', 'news-category') + ->value('tt.term_taxonomy_id'); + + $categoryId = null; + if( $categoryTtId ){ + $categoryId = DB::table('migrations_logs') + ->where('source_system', 'wp') + ->where('target_table', 'categories' ) + ->where('source_id', $categoryTtId) + ->value('target_id'); + if( !$categoryId ){ + $this->stats['missing_category']++; + } + } + + $userId = DB::table('migration_user_plan') + ->where('wp_user_id', $post->post_author ) + ->value('user_id'); + + if( !$userId ){ + $this->stats['missing_author']++; + return; + } + + $slug = $this->uniqueSlug(rawurldecode($post->post_name), 'news'); + $description = trim($post->post_content) === '' ? '' : MigrationHelpers::htmlToMarkdown($post->post_content); + + if( isset( $meta['romhacks_page'] ) && $meta['romhacks_page'] !== null && $meta['romhacks_page'] !== '' ){ + $description .= "\n\nLink to: " . $meta['romhacks_page']; + } + + $newsId = DB::table('news') + ->insertGetId([ + 'title' => $post->post_title, + 'slug' => $slug, + 'category_id' => $categoryId, + 'description' => $description, + 'state' => self::STATE_MAP[$post->post_status], + 'entry_id' => null, + 'relevant_link' => $meta['release_site'] ?? null, + 'youtube_link' => $meta['youtube_video'] ?? null, + 'user_id' => $userId, + 'created_at' => $post->post_date, + 'updated_at' => $post->post_modified, + ]); + + DB::table('migrations_logs')->insert([ + 'source_system' => 'wp', + 'source_table' => 'wp_posts__news', + 'source_id' => $post->ID, + 'target_table' => 'news', + 'target_id' => $newsId, + 'status' => 'done', + 'migrated_at' => now(), + 'created_at' => now(), + 'updated_at' => now(), + ]); + + $this->stats['created']++; + } + + public function handle() + { + $this->stats = [ 'created' => 0, 'missing_author' => 0, 'missing_category' => 0 ]; + + $query = DB::connection('old_wp') + ->table('posts') + ->where('post_type', 'news') + ->whereIn('post_status', array_keys(self::STATE_MAP)) + ; + + if( $limit = $this->option('limit') ) { + $query->limit((int)$limit); + } + + $posts = $query->select('ID', 'post_title', 'post_name', 'post_content', 'post_author', 'post_status', 'post_date', 'post_modified')->get(); + + $this->info( "{$posts->count()} posts found" ); + + $this->withProgressBar($posts, fn($post) => $this->migrateNews($post) ); + + $this->newLine(); + $this->info( "Created {$this->stats['created']} posts. Missing authors: {$this->stats['missing_author']}. Missing category: {$this->stats['missing_category']}" ); + + return self::SUCCESS; + } +} diff --git a/app/Console/Commands/MigrateNewsImages.php b/app/Console/Commands/MigrateNewsImages.php new file mode 100644 index 0000000..b2a637e --- /dev/null +++ b/app/Console/Commands/MigrateNewsImages.php @@ -0,0 +1,128 @@ +table('postmeta') + ->where('post_id', $attachmentId) + ->where('meta_key', '_wp_attached_file') + ->value('meta_value'); + + if( !$relativePath ) + return null; + + $sourcePath = rtrim($wpUploadsPath, '/') . '/' . $relativePath; + if( !is_file($sourcePath) ) + return null; + + $extension = pathinfo($sourcePath, PATHINFO_EXTENSION); + $filename = Str::random(40) . ($extension ? '.' . $extension : ''); + $destinationRelative = $destinationPath . '/' . $filename; + + $stream = fopen($sourcePath, 'r'); + Storage::disk('public')->put($destinationRelative, $stream); + if( is_resource($stream) ) + fclose($stream); + + return $destinationRelative; + } + + private function processEntry( int $wpPostId, int $entryId, string $wpUploadsPath, array &$stats ): void + { + $exists = DB::table('migrations_logs') + ->where('source_system', 'wp') + ->where('source_table', 'wp_posts__attachments') + ->where('source_id', $wpPostId) + ->exists(); + + if( $exists ) + return; + + $galleryRaw = DB::connection('old_wp') + ->table('postmeta') + ->where('post_id', $wpPostId) + ->where('meta_key', 'my_gallery') + ->value('meta_value'); + + $attachmentIds = $galleryRaw ? (@unserialize($galleryRaw) ?: []) : []; + + foreach ( array_values( $attachmentIds ) as $order => $attachmentId ) { + $newPath = $this->copyAttachment( (int) $attachmentId, $wpUploadsPath, "news/gallery-images/{$entryId}" ); + if( !$newPath ){ + $stats['missing_files']++; + continue; + } + + DB::table('galleries') + ->insert([ + 'galleryable_type' => self::GALLERYABLE_TYPE, + 'galleryable_id' => $entryId, + 'image' => $newPath, + 'order' => $order, + 'created_at' => now(), + 'updated_at' => now(), + ]); + $stats['gallery_images']++; + } + + DB::table('migrations_logs') + ->insert([ + 'source_system' => 'wp', + 'source_table' => 'wp_posts__attachments', + 'source_id' => $wpPostId, + 'target_table' => 'news', + 'target_id' => $entryId, + 'status' => 'done', + 'migrated_at' => now(), + 'created_at' => now(), + 'updated_at' => now(), + ]); + } + + public function handle() + { + $wpUploadsPath = $this->option('wp-uploads-path'); + if( !$wpUploadsPath || !is_dir($wpUploadsPath) ){ + $this->error('Missing WP Uploads Path'); + return self::FAILURE; + } + + $query = DB::table('migrations_logs') + ->where('source_system', 'wp') + ->where('source_table', 'wp_posts__news') + ->where('target_table', 'news') + ; + + if( $limit = $this->option('limit') ){ + $query->limit((int)$limit); + } + + $rows = $query->get(['source_id', 'target_id']); + $this->info("{$rows->count()} news need to be migrated"); + + $stats = ['gallery_images' => 0, 'missing_files' => 0 ]; + + $this->withProgressBar($rows, function($row) use($wpUploadsPath, &$stats) { + $this->processEntry( $row->source_id, $row->target_id, $wpUploadsPath, $stats ); + }); + + $this->newLine(); + $this->info("Migrated attachments Galleries: {$stats['gallery_images']}, Missing files: {$stats['missing_files']}"); + return self::SUCCESS; + } +} diff --git a/app/Console/Commands/MigrateReviewsExecute.php b/app/Console/Commands/MigrateReviewsExecute.php new file mode 100644 index 0000000..97bf8a1 --- /dev/null +++ b/app/Console/Commands/MigrateReviewsExecute.php @@ -0,0 +1,117 @@ +where('source_system', 'wp') + ->where('source_table', 'wp_posts__reviews') + ->where('source_id', $post->ID ) + ->exists(); + + if( $exists ) + return; + + $meta = DB::connection('old_wp') + ->table('postmeta') + ->where('post_id', $post->ID) + ->whereIn('meta_key', ['reviews_post_link', 'review_rating']) + ->pluck('meta_value', 'meta_key') + ; + + $linkedWpPostId = $meta['reviews_post_link'] ?? null; + if( !$linkedWpPostId ){ + $stats['missing_entry']++; + return; + } + + $entryId = DB::table('migrations_logs') + ->where('source_system', 'wp') + ->where('source_table', 'wp_posts') + ->where('source_id', (int) $linkedWpPostId ) + ->where('target_table', 'entries') + ->value('target_id'); + + if( !$entryId ){ + $stats['missing_entry']++; + return; + } + + $userId = DB::table('migration_user_plan') + ->where('wp_user_id', $post->post_author ) + ->value('user_id'); + + if( !$userId ){ + $stats['missing_author']++; + return; + } + + $rating = $meta['review_rating'] ?? null; + if( $rating === null || $rating === '' ){ + $stats['missing_rating']++; + return; + } + + $description = trim($post->post_content) === '' ? '' : MigrationHelpers::htmlToMarkdown($post->post_content); + + $reviewId = DB::table('entry_reviews')->insertGetId([ + 'entry_id' => $entryId, + 'title' => $post->post_title, + 'rating' => (int) $rating, + 'description' => $description, + 'user_id' => $userId, + 'created_at' => $post->post_date, + 'updated_at' => $post->post_modified, + ]); + + DB::table('migrations_logs')->insert([ + 'source_system' => 'wp', + 'source_table' => 'wp_posts__reviews', + 'source_id' => $post->ID, + 'target_table' => 'entry_reviews', + 'target_id' => $reviewId, + 'status' => 'done', + 'migrated_at' => now(), + 'created_at' => now(), + 'updated_at' => now(), + ]); + + $stats['created']++; + } + + public function handle(): int + { + $query = DB::connection('old_wp') + ->table('posts') + ->where('post_type', 'reviews') + ->where('post_status', 'publish') + ; + + if( $limit = $this->option('limit') ) { + $query->limit((int) $limit); + } + + $posts = $query->select('ID', 'post_title', 'post_content', 'post_author', 'post_date', 'post_modified' )->get(); + $this->info("{$posts->count()} reviews found."); + + $stats = ['created' => 0, 'missing_entry' => 0, 'missing_author' => 0, 'missing_rating' => 0 ]; + + $this->withProgressBar($posts, function($post) use (&$stats){ + $this->migrateReview($post, $stats); + }); + + $this->newLine(); + $this->info("{$stats['created']} reviews created. {$stats['missing_entry']} missing entry. {$stats['missing_author']} missing author. {$stats['missing_rating']} missing rating."); + return self::SUCCESS; + } +} diff --git a/app/Console/Commands/MigrateTaxonomiesConfigure.php b/app/Console/Commands/MigrateTaxonomiesConfigure.php new file mode 100644 index 0000000..50e302f --- /dev/null +++ b/app/Console/Commands/MigrateTaxonomiesConfigure.php @@ -0,0 +1,44 @@ +ask("Write WP taxonomy name. Write nothing if you want to save changes.", "" ); + if( $taxonomy == "" ) + break; + + $tableName = $this->ask("Write equivalent Laravel table name."); + + $taxonomyMap[$taxonomy] = $tableName; + } + + DB::table('migration_settings') + ->updateOrInsert([ + 'key' => 'wp_taxonomies_to_laravel_tables' + ],[ + 'value' => json_encode($taxonomyMap), 'updated_at' => now() + ]); + + $this->info('WP Taxonomies to Laravel tables have been configured.'); + } +} diff --git a/app/Console/Commands/MigrateTaxonomiesExecute.php b/app/Console/Commands/MigrateTaxonomiesExecute.php new file mode 100644 index 0000000..d32cc6e --- /dev/null +++ b/app/Console/Commands/MigrateTaxonomiesExecute.php @@ -0,0 +1,77 @@ +where('key', 'wp_taxonomies_to_laravel_tables')->value('value'), true); + + if( !$taxMap ){ + $this->error("No WP taxonomies need to be transferred."); + return self::FAILURE; + } + + if( $this->ask("Are you sure you want launch that migration? Write ok if you want to launch it.", "") !== 'ok' ){ + return self::SUCCESS; + } + + foreach ( $taxMap as $wpTax => $table ) + { + $this->info("Migrate: {$wpTax} => {$table}"); + + $terms = DB::connection('old_wp') + ->table('term_taxonomy') + ->join('terms', 'term_taxonomy.term_id', '=', 'terms.term_id') + ->where('term_taxonomy.taxonomy', $wpTax) + ->select('term_taxonomy.term_taxonomy_id', 'terms.name', 'terms.slug') + ->get(); + + $this->withProgressBar($terms, function ($term) use ($table) { + + $exists = DB::table('migrations_logs') + ->where('source_system', 'wp') + ->where('source_table', 'wp_term_taxonomy') + ->where('source_id', $term->term_taxonomy_id ) + ->exists(); + + if( $exists ) + return; + + $Id = DB::table( $table )->where('slug', $term->slug)->value('id'); + + if( $Id === null) { + $Id = DB::table($table) + ->insertGetId([ + 'name' => $term->name, 'slug' => $term->slug, + 'created_at' => now(), 'updated_at' => now() + ]); + } + + DB::table('migrations_logs')->insert([ + 'source_system' => 'wp', + 'source_table' => 'wp_term_taxonomy', + 'source_id' => $term->term_taxonomy_id, + 'target_table' => $table, + 'target_id' => $Id, + 'status' => 'done', + 'migrated_at' => now(), + 'created_at' => now(), + 'updated_at' => now() + ]); + }); + $this->newLine(); + } + + $this->info("Migration done"); + return self::SUCCESS; + } +} diff --git a/app/Console/Commands/MigrateUsersConfigure.php b/app/Console/Commands/MigrateUsersConfigure.php new file mode 100644 index 0000000..98d25d0 --- /dev/null +++ b/app/Console/Commands/MigrateUsersConfigure.php @@ -0,0 +1,57 @@ +table('user_group')->pluck('title', 'user_group_id'); + } + + public function handle() + { + $wpRoles = $this->getWpRoles(); + $roleMap = []; + foreach ($wpRoles as $role) { + $roleMap[$role] = (int) $this->ask("XenForo group ID linked to role {$role}"); + } + DB::table('migration_settings') + ->updateOrInsert([ + 'key' => 'wp_role_to_xf_group' + ], [ + 'value' => json_encode($roleMap), 'updated_at' => now() + ]); + + $oldXfGroups = $this->getOldXfGroups(); + $groupMap = []; + foreach ($oldXfGroups as $id => $title) { + $groupMap[$id] = (int) $this->ask("Xenforo group ID linked to old XF group {$title}|{$id}"); + } + DB::table('migration_settings') + ->updateOrInsert([ + 'key' => 'old_xf_group_to_xf_group' + ],[ + 'value' => json_encode($groupMap), 'updated_at' => now() + ]); + + $this->info('XF groups updated.'); + } +} diff --git a/app/Console/Commands/MigrateUsersExecute.php b/app/Console/Commands/MigrateUsersExecute.php new file mode 100644 index 0000000..6160e1d --- /dev/null +++ b/app/Console/Commands/MigrateUsersExecute.php @@ -0,0 +1,229 @@ +table('postmeta') + ->where('post_id', $mediaId) + ->where('meta_key', '_wp_attached_file') + ->value('meta_value'); + + if( !$relative ) + return null; + + $path = rtrim($wpUploadsPath, '/') . '/' . $relative; + return is_file($path) ? $path : null; + } + + private function extractXfAvatarPath(int $userId, string $xfDataPath, string $size = 'o' ): ?string + { + $path = sprintf('%s/avatars/%s/%d/%d.jpg', + rtrim($xfDataPath, '/'), $size, (int) floor($userId / 1000), $userId + ); + return is_file($path) ? $path : null; + } + + private function extractXfBannerPath(int $userId, string $xfDataPath, string $size = 'l' ): ?string + { + $path = sprintf('%s/profile_banners/%s/%d/%d.jpg', + rtrim($xfDataPath, '/'), $size, (int) floor($userId / 1000), $userId + ); + return is_file($path) ? $path : null; + } + + private function buildUserInfos( MigrationUserPlan $plan, array $roleMap, array $groupMap, string $wpUploadsPath, string $xfDataPath ): array + { + $infos = [ + 'username' => $plan->xf_username ?: $plan->wp_username, + 'email' => $plan->email, + 'user_group_id' => null, + 'password' => Str::uuid(), // Used for API verifications. + 'xf_user_id' => 0, + 'avatar_path' => null, + 'banner_path' => null, + 'register_date' => null, + 'profile' => [ + 'about' => null, + 'website' => null, + ], + 'source_real_password' => null, + 'wp_password' => null, + 'xf_scheme_class' => null, + 'xf_password_data' => null, + ]; + + if( $plan->wp_user_id ) + { + $wp = DB::connection('old_wp') + ->table('users') + ->leftJoin('usermeta as m1', fn( $j ) => $j->on('users.ID', '=', 'm1.user_id')->where('m1.meta_key', '=', 'description') ) + ->leftJoin('usermeta as m2', fn( $j ) => $j->on('users.ID', '=', 'm2.user_id')->where('m2.meta_key', '=', 'wp_capabilities') ) + ->leftJoin('usermeta as m3', fn( $j ) => $j->on('users.ID', '=', 'm3.user_id')->where('m3.meta_key', '=', 'simple_local_avatar') ) + ->where('users.ID', '=', $plan->wp_user_id ) + ->select('m1.meta_value as description', 'm2.meta_value as capabilities', 'm3.meta_value as avatar_meta', 'users.user_url as website', 'users.user_pass as password', 'users.user_registred' ) + ->first(); + + $infos['register_date'] = $wp->user_registred ? strtotime($wp->user_registred) : null; + $infos['profile']['about'] = $wp->description; + $infos['profile']['website'] = $wp->website; + $role = $this->extractWpRole($wp->capabilities); + $infos['user_group_id'] = $roleMap[$role] ?? $roleMap['contributor']; + + if( $url = $this->extractWpAvatarPath($wp->avatar_meta, $wpUploadsPath)){ + $infos['avatar_path'] = $url; + } + + $infos['source_real_password'] = 'wp'; + $infos['wp_password'] = $wp->password; + } + + if( $plan->xf_user_id ) + { + $xf = DB::connection('old_xf') + ->table('user') + ->leftJoin('user_profile', 'user.user_id', '=', 'user_profile.user_id') + ->leftJoin('user_authenticate', 'user.user_id', '=', 'user_authenticate.user_id') + ->where('user.user_id', '=', $plan->xf_user_id) + ->select('user.avatar_date', 'user.user_group_id', 'user.register_date', 'user_profile.about', 'user_profile.website', 'user_profile.banner_date', 'user_authenticate.scheme_class', 'user_authenticate.data') + ->first(); + + if( !$infos['register_date'] && $xf ) + $infos['register_date'] = $xf->register_date ?: null; + if( !$infos['profile']['about'] && $xf ) + $infos['profile']['about'] = $xf->about ?: null; + if( !$infos['profile']['website'] && $xf ) + $infos['profile']['website'] = $xf->website ?: null; + + if( !$plan->wp_user_id ){ + $infos['user_group_id'] = $groupMap[$xf->user_group_id] ?? reset($groupMap); + } + $infos['xf_user_id'] = $plan->xf_user_id; + + if( $infos['avatar_path'] === null && (int) $xf->avatar_date > 0){ + if( $path = $this->extractXfAvatarPath($plan->xf_user_id, $xfDataPath)){ + $infos['avatar_path'] = $path; + } + } + + if( $infos['banner_path'] === null && (int) $xf->banner_date > 0 ){ + if( $path = $this->extractXfBannerPath($plan->xf_user_id, $xfDataPath)){ + $infos['banner_path'] = $path; + } + } + + if( $infos['source_real_password'] === null && $xf->scheme_class && $xf->data ){ + $infos['source_real_password'] = 'xf'; + $infos['xf_scheme_class'] = $xf->scheme_class; + $infos['xf_password_data'] = $xf->data; + } + } + + return $infos; + } + + private function logMap( string $sourceSystem, string $sourceTable, int $sourceId, int $targetId ) + { + DB::table('migrations_logs')->insert([ + 'source_system' => $sourceSystem, + 'source_table' => $sourceTable, + 'source_id' => $sourceId, + 'target_table' => 'xf_user', + 'target_id' => $targetId, + 'status' => 'done', + 'migrated_at' => now(), + 'created_at' => now(), + 'updated_at' => now() + ]); + } + + public function handle() + { + $wpUploadsPath = $this->option('wp-uploads-path'); + $xfDataPath = $this->option('xf-data-path'); + + if( !$wpUploadsPath || !is_dir($wpUploadsPath) ){ + $this->error('Missing WP Uploads Path'); + return self::FAILURE; + } + + if( !$xfDataPath || !is_dir($xfDataPath) ){ + $this->error('Missing XF Data Path'); + return self::FAILURE; + } + + $roleMap = json_decode(DB::table('migration_settings')->where('key', 'wp_role_to_xf_group')->value('value'), true); + $groupMap = json_decode(DB::table('migration_settings')->where('key', 'old_xf_group_to_xf_group')->value('value'), true); + + if( !$roleMap || !$groupMap ) { + $this->error('Role map and group map are required.'); + return self::FAILURE; + } + + $query = MigrationUserPlan::where('status', 'approved')->whereNull('user_id'); + if( $limit = $this->option('limit') ) { + $query->limit((int) $limit); + } + + $rows = $query->get(); + $this->info("{$rows->count()} accounts will be created on XenForo database !!!."); + $ok = $this->ask("Write 'ok' if you want to start the migration. Everything else to quit the migration."); + if( $ok !== 'ok' ) { + return self::SUCCESS; + } + + $service = app(XenforoApiService::class); + + $this->withProgressBar($rows, function($plan) use( $roleMap, $groupMap, $wpUploadsPath, $xfDataPath, $service ) { + try { + $infos = $this->buildUserInfos( $plan, $roleMap, $groupMap, $wpUploadsPath, $xfDataPath ); + + [ $userId, $passwordSet ] = $service->_migrateUser( $infos ); + if( !$userId ){ + throw new \RuntimeException("Error when user creation."); + } + + MigrationUserPlan::where('id', $plan->id )->update([ 'user_id' => $userId ]); + + $this->logMap( $plan->wp_user_id ? 'wp' : 'xf', $plan->wp_user_id ? 'wp_users' : 'xf_user', $plan->wp_user_id ?? $plan->xf_user_id, $userId ); + if( $plan->wp_user_id && $plan->xf_user_id ){ + $this->logMap('xf', 'xf_user', $plan->xf_user_id, $userId ); + } + + + } catch ( \Throwable $e ) { + Log::error("Unable to create Plan#{$plan->id} user : {$e->getMessage()}"); + } + }); + + $this->newLine(2); + $this->info("Process finished."); + return self::SUCCESS; + } +} diff --git a/app/Console/Commands/MigrateUsersPlan.php b/app/Console/Commands/MigrateUsersPlan.php new file mode 100644 index 0000000..28b9336 --- /dev/null +++ b/app/Console/Commands/MigrateUsersPlan.php @@ -0,0 +1,143 @@ +option('fresh') ) { + MigrationUserPlan::truncate(); + } + + $this->info("Loading old XF accounts..."); + + $xfUsers = DB::connection('old_xf')->table('user') + ->select('user_id','username','email') + ->get() + ->keyBy('user_id') + ; + + $xfUsersByEmail = $xfUsers->groupBy(fn($u) => strtolower($u->email)); + + $this->info("Loading old WP accounts..."); + + $wpUsers = DB::connection('old_wp')->table('users') + ->leftJoin('usermeta', function ($join) { + $join->on('users.ID', '=', 'usermeta.user_id')->where('usermeta.meta_key', '=', 'xf_user_id'); + }) + ->select('users.ID as wp_id', 'users.user_email as email', 'users.user_login as username', 'usermeta.meta_value as linked_xf_id') + ->get(); + + $linkedXfIds = []; + + $this->withProgressBar( $wpUsers, function ($wp) use ($xfUsers, $xfUsersByEmail, &$linkedXfIds) { + $email = strtolower($wp->email); + $linkedId = $wp->linked_xf_id ? (int) $wp->linked_xf_id : null; + + if( $linkedId && $xfUsers->has($linkedId) ) { + + $xf = $xfUsers->get($linkedId); + $matchType = strtolower($xf->email) === $email ? 'explicit' : 'conflict'; + + MigrationUserPlan::updateOrCreate( + ['wp_user_id' => $wp->wp_id], + [ + 'xf_user_id' => $linkedId, + 'match_type' => $matchType, + 'email' => $email, + 'wp_username' => $wp->username, + 'xf_username' => $xf->username, + 'note' => $matchType === 'conflict' ? "E-Mail différent: {$xf->email}" : null, + 'status' => $matchType === 'explicit' ? 'approved' : 'pending', + ] + ); + $linkedXfIds[$linkedId] = true; + return; + } + + if( $linkedId && !$xfUsers->has($linkedId) ) { + MigrationUserPlan::updateOrCreate( + ['wp_user_id' => $wp->wp_id ], + [ + 'match_type' => 'conflict', + 'email' => $email, + 'wp_username' => $wp->username, + 'note' => "xf_user_id={$linkedId} introuvable", + 'status' => 'approved' + ]); + return; + } + + $candidates = $xfUsersByEmail->get($email,collect()); + + if( $candidates->count() === 1 ){ + $xf = $candidates->first(); + MigrationUserPlan::updateOrCreate( + ['wp_user_id' => $wp->wp_id], + [ + 'xf_user_id' => $xf->user_id, + 'match_type' => 'email', + 'email' => $email, + 'wp_username' => $wp->username, + 'xf_username' => $xf->username, + 'status' => 'pending' + ] + ); + $linkedXfIds[$xf->user_id] = true; + return; + } + + if( $candidates->count() > 1 ){ + MigrationUserPlan::updateOrCreate( + ['wp_user_id' => $wp->wp_id ], + [ + 'match_type' => 'conflict', + 'email' => $email, + 'wp_username' => $wp->username, + 'note' => "E-mail identique sur plusieurs comptes XF.", + ] + ); + return; + } + + MigrationUserPlan::updateOrCreate( + ['wp_user_id' => $wp->wp_id ], + [ + 'match_type' => 'wp_only', + 'email' => $email, + 'wp_username' => $wp->username, + 'status' => 'approved' + ] + ); + }); + + $this->info("Listing old XF accounts..."); + foreach( $xfUsers as $id => $xf ) { + if( isset($linkedXfIds[$id]) ) { + continue; + } + MigrationUserPlan::updateOrCreate( + ['xf_user_id' => $xf->user_id, 'wp_user_id' => null], + [ + 'match_type' => 'xf_only', + 'email' => strtolower($xf->email), + 'xf_username' => $xf->username, + 'status' => 'approved' + ] + ); + } + + $pending = MigrationUserPlan::where('status', 'pending')->count(); + $this->newLine(2); + $this->info("Plan generated. {$pending} pending cases."); + } +} diff --git a/app/Console/Commands/MigrateXFConfigure.php b/app/Console/Commands/MigrateXFConfigure.php new file mode 100644 index 0000000..bac1581 --- /dev/null +++ b/app/Console/Commands/MigrateXFConfigure.php @@ -0,0 +1,41 @@ +table('node') + ->where('node_type_id', 'Forum') + ->select('node_id', 'title') + ->get() + ; + + $this->info("{$forums->count()} forums found."); + + $forumMap = []; + foreach ($forums as $forum) { + $newId = $this->ask("New ID for {$forum->title}"); + if( $newId !== null && $newId !== '' ){ + $map[$forum->node_id] = (int) $newId; + } + } + + DB::table('migration_settings') + ->updateOrInsert( + [ 'key' => 'old_xf_node_to_new_xf_node'], + [ 'value' => json_encode($map), 'updated_at' => now() ], + ); + + $this->info("Config saved."); + } +} diff --git a/app/Helpers/MigrationHelpers.php b/app/Helpers/MigrationHelpers.php new file mode 100644 index 0000000..74a24d4 --- /dev/null +++ b/app/Helpers/MigrationHelpers.php @@ -0,0 +1,47 @@ +]/i', $block)) { + return $block; + } + return '

' . nl2br($block, false) . '

'; + }, $blocks); + + return implode("\n\n", array_filter($blocks, fn ($b) => $b !== '')); + } + + public static function htmlToMarkdown( ?string $html ): string + { + if (!$html || trim($html) === '') { + return $html; + } + + static $converter = null; + if ($converter === null) { + $converter = new HtmlConverter(['hard_break' => true]); + } + + return $converter->convert(self::wpAutoP($html)); + } +} diff --git a/app/Http/Controllers/DynamicLoadController.php b/app/Http/Controllers/DynamicLoadController.php index 0f91890..5cde67a 100644 --- a/app/Http/Controllers/DynamicLoadController.php +++ b/app/Http/Controllers/DynamicLoadController.php @@ -68,7 +68,7 @@ class DynamicLoadController extends Controller public function activityFeed(Request $request): JsonResponse { - $availableFilters = ['entries', 'news', 'messages', 'threads', 'clubs']; + $availableFilters = ['entries', 'news', 'messages', 'threads', 'clubs', 'reviews']; $requested = $request->query('filters') ? explode(',', $request->query('filters')) diff --git a/app/Http/Controllers/EntryController.php b/app/Http/Controllers/EntryController.php index 80e4094..dcb5c84 100644 --- a/app/Http/Controllers/EntryController.php +++ b/app/Http/Controllers/EntryController.php @@ -50,8 +50,9 @@ class EntryController extends Controller Gate::authorize($entryPolicy, $entry); $comments = EntryHelpers::getLatestComments($entry); + $reviews = $entry->reviews()->orderBy('created_at', 'desc')->limit(10)->get(); - return view('entries.show', compact('entry', 'section', 'comments')); + return view('entries.show', compact('entry', 'section', 'comments', 'reviews')); } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 3b003d9..eafa41e 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -15,7 +15,7 @@ class HomeController extends Controller public function index( Request $request ): View { - $filters = [ 'entries', 'news', 'messages', 'threads', 'clubs' ]; + $filters = [ 'entries', 'news', 'messages', 'threads', 'clubs', 'reviews' ]; $cookie = $request->cookie('activity_filters'); $activeFilters = $cookie ? array_intersect( json_decode( $cookie, true ) ?? [], $filters ) : $filters; @@ -32,6 +32,7 @@ class HomeController extends Controller 'messages' => ['label' => 'Posts', 'icon' => 'message-square'], 'threads' => ['label' => 'Threads', 'icon' => 'messages-square'], 'clubs' => ['label' => 'Clubs', 'icon' => 'balloon'], + 'reviews' => ['label' => 'Reviews', 'icon' => 'star'], ]; $latestNews = News::published()->latest('created_at')->limit(5)->get(); diff --git a/app/Http/Controllers/ReviewController.php b/app/Http/Controllers/ReviewController.php new file mode 100644 index 0000000..7ee1898 --- /dev/null +++ b/app/Http/Controllers/ReviewController.php @@ -0,0 +1,33 @@ +services->storeReview( $request, $entry ); + return redirect()->route('entries.show', [ 'section' => $entry->type, 'entry' => $entry ])->with('success', "Your review has been published."); + } catch ( SubmissionException $e ) { + return back()->withInput()->withErrors(['error' => $e->getMessage()]); + } catch ( \Exception $e ) { + return back()->withInput()->withErrors(['error' => 'Unknown error: '.$e->getMessage()]); + } + } +} diff --git a/app/Http/Controllers/ToolsController.php b/app/Http/Controllers/ToolsController.php index 36fa137..f1b5e9b 100644 --- a/app/Http/Controllers/ToolsController.php +++ b/app/Http/Controllers/ToolsController.php @@ -61,4 +61,10 @@ class ToolsController extends Controller return view('tools.play', compact('patches', 'emuConfig')); } + + public function hasher( Request $request ) + { + return view('tools.hasher'); + } + } diff --git a/app/Http/Middleware/CheckXenForoUserState.php b/app/Http/Middleware/CheckXenForoUserState.php new file mode 100644 index 0000000..3d36c34 --- /dev/null +++ b/app/Http/Middleware/CheckXenForoUserState.php @@ -0,0 +1,50 @@ +security_lock === 'change' ) + return $this->deny( $request, "Password must be changed." ); + else if( \Auth::user()->security_lock === 'reset' ) + return $this->deny( $request, "Password must be reset."); + + if( \Auth::user()->user_state === 'valid' ) + return $next($request); + + else if( \Auth::user()->user_state === 'email_confirm' || \Auth::user()->user_state === 'email_confirm_edit' ) + return $this->deny( $request, "You must verify your email address." ); + else if( \Auth::user()->user_state === 'email_bounce' ) + return $this->deny( $request, "Invalid email address." ); + else if( \Auth::user()->user_state === 'rejected' ) + return $this->deny( $request, "Your account is currently rejected." ); + else if( \Auth::user()->user_state === 'disabled' ) + return $this->deny( $request, "Your account is currently disabled." ); + + return $this->deny($request, "Invalid user state."); + } + + private function deny(Request $request, string $reason): Response + { + if($request->expectsJson()) + return \response()->json(['error' => 'forbidden', 'reason' => $reason], 403); + + return response()->view('pages.user_state', [ + 'reason' => $reason, + ], 403 ); + } +} diff --git a/app/Http/Requests/StoreEntryRequest.php b/app/Http/Requests/StoreEntryRequest.php index e9b7a58..276f472 100644 --- a/app/Http/Requests/StoreEntryRequest.php +++ b/app/Http/Requests/StoreEntryRequest.php @@ -73,7 +73,7 @@ class StoreEntryRequest extends FormRequest if( section_must_be( ['romhacks', 'lua-scripts'], $section ) ){ $rules['modifications'] = 'array|required|min:1'; $rules['modifications.*'] = 'integer|exists:modifications,id'; - } else if( section_must_be( 'utilities', $section ) ){ + } else if( section_must_be( ['utilities','documents'], $section ) ){ $rules['categories'] = 'array|required|min:1'; $rules['categories.*'] = 'integer|exists:categories,id'; } @@ -85,7 +85,7 @@ class StoreEntryRequest extends FormRequest $rules['version'] = 'required|string|max:50'; $rules['release-date'] = 'required|date'; - if( section_must_not_be( 'utilities', $section ) ){ + if( section_must_not_be( ['utilities', 'documents'], $section ) ){ $rules['status'] = 'required|integer|exists:statuses,id'; } else { $rules['level'] = 'required|integer|exists:levels,id'; @@ -159,6 +159,7 @@ class StoreEntryRequest extends FormRequest $rules['owner_user_id'] = [ 'required', 'integer', new XfUserExists ]; $rules['comments_thread_id'] = 'nullable|integer'; $rules['featured'] = 'nullable|boolean'; + $rules['refresh_created_at'] = 'nullable|boolean'; } return $rules; @@ -167,16 +168,31 @@ class StoreEntryRequest extends FormRequest public function messages(): array { return [ - 'entry_title.required' => 'Please provide an entry title.', - 'slug.unique' => 'An entry with this title already exists. Please choose another title.', - 'file_ids.required' => 'Please upload at least one file.', - 'file_ids.min' => 'Please upload at least one file.', - 'hashes.required' => 'Please add at least one hash.', - 'hashes.min' => 'Please add at least one hash.', - 'gallery.required' => 'Please add at least one screenshot.', - 'gallery.min' => 'Please add at least one screenshot.', - 'new-game-platform.required_without' => 'Please choose a platform for the new game.', - 'new-game-genre.required_without' => 'Please choose a genre for the new game.', + 'files_uuid.required' => 'Please upload at least a file.', + 'files_state.required' => 'A file may be corrupted, please reupload it.', + 'files_state.*.in' => 'A file state doesn\'t have a standard value.', + 'entry_title.required' => 'Please enter a title.', + 'modifications.required' => 'Please select at least one modification.', + 'categories.required' => 'Please select at least one category.', + 'system.required' => 'Please select at least one system.', + 'version.required' => 'Please enter a version number.', + 'release-date.required' => 'Please enter a valid release date.', + 'status.required' => 'Please select a status.', + 'level.required' => 'Please select an experience level.', + 'description.required' => 'Please enter a description.', + 'game_selection_mode.required' => 'Please select a game selection mode.', + 'platform_only_id.required' => 'Please select a platform.', + 'game_id.required' => 'Please select a game.', + 'new-game-title.required' => 'Please enter a game title.', + 'new-game-platform.required' => 'Please select a game platform.', + 'new-game-genre.required' => 'Please select a game genre.', + 'hashes.required' => 'Please send at least one hash.', + 'languages.required' => 'Please select at least one language.', + 'main-image.required' => 'Please upload a main image.', + 'gallery.required' => 'Please upload at least one image for the gallery.', + 'authors.required' => 'Please select at least one author.', + 'new-authors.required' => 'Please select at least one author.', + 'submit-state.required' => 'Please select a submit state.', ]; } } diff --git a/app/Http/Requests/StoreReviewRequest.php b/app/Http/Requests/StoreReviewRequest.php new file mode 100644 index 0000000..8a3040c --- /dev/null +++ b/app/Http/Requests/StoreReviewRequest.php @@ -0,0 +1,41 @@ +route('review'); + if( $review ) + return $this->user()->can('update', $review); + + return $this->user()->can('create', '\App\Models\EntryReview'); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + + $isEdit = (bool) $this->route('review'); + + $rules = []; + + $rules['rating'] = 'required|numeric|min:1|max:5'; + $rules['title'] = 'required|string|max:255'; + $rules['description'] = 'required|string'; + + return $rules; + + } +} diff --git a/app/Jobs/DeleteXenForoCommentsThread.php b/app/Jobs/DeleteXenForoCommentsThread.php index 46cc2e2..80b0eff 100644 --- a/app/Jobs/DeleteXenForoCommentsThread.php +++ b/app/Jobs/DeleteXenForoCommentsThread.php @@ -18,7 +18,7 @@ class DeleteXenForoCommentsThread implements ShouldQueue * Create a new job instance. */ public function __construct( - protected int $threadId, + protected ?int $threadId, ) { // @@ -29,6 +29,7 @@ class DeleteXenForoCommentsThread implements ShouldQueue */ public function handle(XenforoApiService $service): void { - $service->deleteThreadWithEntry($this->threadId); + if( $this->threadId ) + $service->deleteThreadWithEntry($this->threadId); } } diff --git a/app/Jobs/RestoreXenForoCommentsThread.php b/app/Jobs/RestoreXenForoCommentsThread.php index e541c3a..ea5ba4b 100644 --- a/app/Jobs/RestoreXenForoCommentsThread.php +++ b/app/Jobs/RestoreXenForoCommentsThread.php @@ -18,7 +18,7 @@ class RestoreXenForoCommentsThread implements ShouldQueue * Create a new job instance. */ public function __construct( - protected int $threadId, + protected ?int $threadId, ) { // @@ -29,6 +29,7 @@ class RestoreXenForoCommentsThread implements ShouldQueue */ public function handle(XenforoApiService $service): void { - $service->restoreThreadWithEntry($this->threadId); + if( $this->threadId ) + $service->restoreThreadWithEntry($this->threadId); } } diff --git a/app/Livewire/Database.php b/app/Livewire/Database.php index da4a926..4f44940 100644 --- a/app/Livewire/Database.php +++ b/app/Livewire/Database.php @@ -128,7 +128,7 @@ class Database extends Component * Categories mode and/or * @var string */ - #[Url(except:['or'])] + #[Url(except:'or')] public string $categoriesMode = 'or'; /** @@ -142,7 +142,7 @@ class Database extends Component * Systems mode and/or * @var string */ - #[Url(except:['or'])] + #[Url(except:'or')] public string $systemsMode = 'or'; /** @@ -152,6 +152,9 @@ class Database extends Component #[Url(except:[])] public array $levels = []; + #[Url(except:null)] + public ?int $userId = null; + /** * Sort by field. * @var string @@ -185,7 +188,6 @@ class Database extends Component 'utilities' => 'Utilities', 'documents' => 'Documents', 'lua-scripts' => 'Lua Scripts', - 'tutorials' => 'Tutorials', ]; public const int PAGINATION = 30; @@ -207,12 +209,14 @@ class Database extends Component public function updatedSystems(): void { $this->resetPage(); $this->dispatch('filters-updated'); } public function updatedSystemsMode(): void { $this->resetPage(); $this->dispatch('filters-updated'); } public function updatedLevels(): void { $this->resetPage(); $this->dispatch('filters-updated'); } + public function updatedUserId(): void { $this->resetPage(); $this->dispatch('filters-updated'); } public function clearFilters(): void { $this->reset([ - 'search', 'types', 'platforms', 'genres', 'statuses', 'authors', 'authorsMode', 'languages', 'languagesMode', 'modifications', 'modificationsMode', 'categories', 'categoriesMode', 'systems', 'systemsMode', 'levels' + 'search', 'types', 'platforms', 'genres', 'statuses', 'authors', 'authorsMode', 'languages', 'languagesMode', 'modifications', 'modificationsMode', 'categories', 'categoriesMode', 'systems', 'systemsMode', 'levels', 'userId' ]); + $this->dispatch('filters-updated'); $this->resetPage(); } @@ -320,18 +324,59 @@ class Database extends Component } } + if( $this->userId ){ + $query->where('user_id', $this->userId); + } + return $query->orderBy($this->sortBy, $this->sortDir); } + private function searchFilter( string $modelClass, string $search ) + { + + $this->dispatch('filters-updated'); + + if( mb_strlen( $search ) < 3 ) { + return collect(); + } + + return $modelClass::where('name', 'like', "%{$search}%") + ->orderBy('name') + ->limit(50) + ->get(); + } + + private function searchGameFilter() + { + + $search = $this->gameSearch; + + $this->dispatch('filters-updated'); + + if( mb_strlen( $search ) < 3 ) { + return collect(); + } + + $collect = Game::where('name', 'like', "%{$search}%") + ->orderBy('name') + ->limit(50) + ->get(); + + return $collect->map(function($item){ + $item->name = $item->name . ' (' . ($item->platform?->short_name ?? $item->platform->name) . ')'; + return $item; + } ); + } + public function render() { return view('livewire.database', [ 'entries' => $this->buildQuery()->paginate(self::PAGINATION), - 'allGames' => Game::orderBy('name')->get(), + 'allGames' => $this->searchGameFilter(), 'allPlatforms' => Platform::orderBy('name')->get(), 'allGenres' => Genre::orderBy('name')->get(), 'allStatuses' => Status::orderBy('name')->get(), - 'allAuthors' => Author::orderBy('name')->get(), + 'allAuthors' => $this->searchFilter(Author::class, $this->authorSearch), 'allLanguages' => Language::orderBy('name')->get(), 'allModifications' => Modification::orderBy('name')->get(), 'allCategories' => Category::orderBy('name')->get(), diff --git a/app/Livewire/HashesChecker.php b/app/Livewire/HashesChecker.php new file mode 100644 index 0000000..a36723f --- /dev/null +++ b/app/Livewire/HashesChecker.php @@ -0,0 +1,81 @@ +hash = [ + 'filename' => $filename, + 'hash_crc32' => $crc32, + 'hash_sha1' => $sha1, + 'verified' => $verified + ]; + else if( ( $hash = HashesHelpers::findHashes( $sha1 ) ) !== null ) + $this->hash = [ + 'filename' => $hash->filename, + 'hash_crc32' => $hash->crc32, + 'hash_sha1' => $hash->sha1, + 'verified' => HashesHelpers::getReferenceName( $hash->dat_reference_id ) + ]; + else + $this->hash = [ + 'filename' => $filename, + 'hash_crc32' => $crc32, + 'hash_sha1' => $sha1, + 'verified' => "No" + ]; + } + + /** + * Remove the hash. + * + * @return void + */ + public function removeHash(): void + { + $this->hash = null; + $this->dispatch('refresh'); + } + + + public function render(): View + { + $entries = collect(); + if( $this->hash !== null ){ + $entries = EntryHash::where('hash_sha1', $this->hash['hash_sha1'] )->get()->pluck('entry')->filter(); + } + return view('livewire.hashes-checker', compact('entries')); + } +} diff --git a/app/Livewire/Reviews.php b/app/Livewire/Reviews.php new file mode 100644 index 0000000..01e60d1 --- /dev/null +++ b/app/Livewire/Reviews.php @@ -0,0 +1,92 @@ + 'Date added', + 'rating' => 'Rating', + 'title' => 'Title' + ]; + + public const int PAGINATION = 30; + + public function updatedEntryId(): void { $this->resetPage(); $this->dispatch('filters-updated'); } + public function updatedRating(): void { $this->resetPage(); $this->dispatch('filters-updated'); } + + public function clearFilters(): void + { + $this->reset([ + 'entryId', 'rating' + ]); + $this->dispatch('filters-updated'); + $this->resetPage(); + } + + public function setSort(string $field): void + { + if( $this->sortBy === $field ) { + $this->sortDir = $this->sortDir === 'asc' ? 'desc' : 'asc'; + } else { + $this->sortBy = $field; + $this->sortDir = 'asc'; + } + $this->resetPage(); + $this->dispatch('filters-updated'); + } + + private function buildQuery() + { + $query = EntryReview::query()->with([ + 'entry' + ]); + + if( $this->entryId ) { + $query->where('entry_id', $this->entryId); + } + if( $this->rating ){ + $query->where('rating', $this->rating); + } + + return $query->orderBy($this->sortBy, $this->sortDir); + } + + public function render() + { + return view('livewire.reviews', [ + 'reviews' => $this->buildQuery()->paginate(self::PAGINATION), + ]); + } +} diff --git a/app/Models/Entry.php b/app/Models/Entry.php index 22a2795..5fcb025 100644 --- a/app/Models/Entry.php +++ b/app/Models/Entry.php @@ -4,12 +4,14 @@ namespace App\Models; use App\Helpers\EntryHelpers; use App\Traits\HasGallery; +use App\Traits\HasXenforoUserId; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; +use League\CommonMark\GithubFlavoredMarkdownConverter; use Monolog\Level; use Spatie\Activitylog\Models\Concerns\LogsActivity; use Spatie\Activitylog\Support\LogOptions; @@ -97,12 +99,17 @@ use Spatie\Activitylog\Support\LogOptions; * @method static Builder|Entry withoutTrashed() * @property-read \Illuminate\Database\Eloquent\Collection $activitiesAsSubject * @property-read int|null $activities_as_subject_count + * @property-read \Illuminate\Database\Eloquent\Collection $reviews + * @property-read int|null $reviews_count + * @property-read float $average_rating + * @property-read int $reviews_count_cached + * @property-read string $description_html * @mixin \Eloquent */ class Entry extends Model { - use SoftDeletes, HasGallery, LogsActivity; + use SoftDeletes, HasGallery, LogsActivity, HasXenforoUserId; /** * @var string[] @@ -143,6 +150,15 @@ class Entry extends Model 'featured_at' => 'datetime', ]; + protected static function booted(): void { + static::saving( function( $entry ) { + if( $entry->isDirty('version') ) { + $entry->created_at = now(); + } + }); + } + + public function scopePublished( Builder $query ): Builder { return $query->where( 'state', 'published' ); } @@ -207,6 +223,30 @@ class Entry extends Model return $this->hasMany(EntryHash::class); } + public function reviews(): HasMany { + return $this->hasMany(EntryReview::class); + } + + public function getAverageRatingAttribute(): float + { + return round( $this->reviews->avg('rating') ?? 0, 1 ); + } + + public function getReviewsCountCachedAttribute(): int + { + return $this->reviews->count(); + } + + public function getDescriptionHtmlAttribute(): string + { + $converter = new GithubFlavoredMarkdownConverter([ + 'html_input' => 'strip', + 'allow_unsafe_links' => false, + ]); + + return $converter->convert($this->description)->getContent(); + } + public function parseStaffCredits(): ?array { return json_decode( $this->staff_credits ?? "", true ); } diff --git a/app/Models/EntryReview.php b/app/Models/EntryReview.php new file mode 100644 index 0000000..861e48e --- /dev/null +++ b/app/Models/EntryReview.php @@ -0,0 +1,63 @@ +|EntryReview newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|EntryReview newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|EntryReview query() + * @method static \Illuminate\Database\Eloquent\Builder|EntryReview whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|EntryReview whereDeletedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|EntryReview whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|EntryReview whereEntryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|EntryReview whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|EntryReview whereRating($value) + * @method static \Illuminate\Database\Eloquent\Builder|EntryReview whereTitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|EntryReview whereUpdatedAt($value) + * @property int $user_id + * @method static \Illuminate\Database\Eloquent\Builder|EntryReview whereUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|EntryReview onlyTrashed() + * @method static \Illuminate\Database\Eloquent\Builder|EntryReview withTrashed(bool $withTrashed = true) + * @method static \Illuminate\Database\Eloquent\Builder|EntryReview withoutTrashed() + * @property-read string $description_html + * @mixin \Eloquent + */ +class EntryReview extends Model +{ + + use HasXenforoUserId, SoftDeletes; + + protected $fillable = [ 'entry_id', 'title', 'rating', 'description', 'user_id' ]; + + public function entry(): BelongsTo + { + return $this->belongsTo(Entry::class); + } + + public function getDescriptionHtmlAttribute(): string + { + $converter = new GithubFlavoredMarkdownConverter([ + 'html_input' => 'strip', + 'allow_unsafe_links' => false, + ]); + + return $converter->convert($this->description)->getContent(); + } + +} diff --git a/app/Models/MigrationUserPlan.php b/app/Models/MigrationUserPlan.php new file mode 100644 index 0000000..e31d701 --- /dev/null +++ b/app/Models/MigrationUserPlan.php @@ -0,0 +1,53 @@ +|MigrationUserPlan newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|MigrationUserPlan newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|MigrationUserPlan query() + * @property int $id + * @property int|null $wp_user_id + * @property int|null $xf_user_id + * @property string $match_type + * @property string|null $email + * @property string|null $wp_username + * @property string|null $xf_username + * @property string|null $note + * @property string $status + * @property int|null $user_id + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @method static \Illuminate\Database\Eloquent\Builder|MigrationUserPlan whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|MigrationUserPlan whereEmail($value) + * @method static \Illuminate\Database\Eloquent\Builder|MigrationUserPlan whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|MigrationUserPlan whereMatchType($value) + * @method static \Illuminate\Database\Eloquent\Builder|MigrationUserPlan whereNote($value) + * @method static \Illuminate\Database\Eloquent\Builder|MigrationUserPlan whereStatus($value) + * @method static \Illuminate\Database\Eloquent\Builder|MigrationUserPlan whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|MigrationUserPlan whereUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|MigrationUserPlan whereWpUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|MigrationUserPlan whereWpUsername($value) + * @method static \Illuminate\Database\Eloquent\Builder|MigrationUserPlan whereXfUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|MigrationUserPlan whereXfUsername($value) + * @property int $wp_password_bridge + * @method static \Illuminate\Database\Eloquent\Builder|MigrationUserPlan whereWpPasswordBridge($value) + * @mixin \Eloquent + */ +class MigrationUserPlan extends Model +{ + protected $table = 'migration_user_plan'; + + protected $fillable = [ + 'wp_user_id', + 'xf_user_id', + 'match_type', + 'email', + 'wp_username', + 'xf_username', + 'note', + 'status', + ]; +} diff --git a/app/Models/News.php b/app/Models/News.php index 7bd8548..4eee9a6 100644 --- a/app/Models/News.php +++ b/app/Models/News.php @@ -4,10 +4,12 @@ namespace App\Models; use App\Helpers\EntryHelpers; use App\Traits\HasGallery; +use App\Traits\HasXenforoUserId; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; +use League\CommonMark\GithubFlavoredMarkdownConverter; /** * @property int $id @@ -59,7 +61,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; class News extends Model { - use SoftDeletes, HasGallery; + use SoftDeletes, HasGallery, HasXenforoUserId; protected $table = 'news'; @@ -108,6 +110,16 @@ class News extends Model return $this->belongsTo(Category::class); } + public function getDescriptionHtmlAttribute(): string + { + $converter = new GithubFlavoredMarkdownConverter([ + 'html_input' => 'strip', + 'allow_unsafe_links' => false, + ]); + + return $converter->convert($this->description)->getContent(); + } + public function getYoutubeVideoId(): ?string { if( !$this->youtube_link ) return null; diff --git a/app/Policies/EntryReviewPolicy.php b/app/Policies/EntryReviewPolicy.php new file mode 100644 index 0000000..454f0b0 --- /dev/null +++ b/app/Policies/EntryReviewPolicy.php @@ -0,0 +1,36 @@ +_can( 'romhackplaza', 'view' ) ) + return true; + + return false; + } + + public function create(\App\Auth\XenForoUser $user, ?EntryReview $review = null ): bool + { + return $user->_can( 'romhackplaza', 'canSubmitEntry' ); + } + + public function update(\App\Auth\XenForoUser $user, ?EntryReview $review = null ): bool + { + // Staff editors + if( $user->_can('romhackplaza', 'canEditOthersEntries') ) + return true; + + // Author. + if( $user->_can( 'romhackplaza', 'canEditMyEntries' ) && $review->user_id === $user->user_id ) + return true; + + return false; + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index bba7ec1..04dd124 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -5,6 +5,7 @@ namespace App\Providers; use App\Auth\XenForoGuard; use App\Auth\XenForoUser; use App\Policies\TempFilePolicy; +use App\Proxy\VisitorProxy; use App\Services\TemporaryFileService; use App\Support\XenForoCauserResolver; use Illuminate\Support\Facades\Gate; @@ -39,5 +40,10 @@ class AppServiceProvider extends ServiceProvider Gate::define('is-mod', function (XenForoUser $user) { return $user->is_moderator === 1; }); + + \View::composer('*', function ($view) { + $view->with('VISITOR', new VisitorProxy( \Auth::user() ) ); + }); + } } diff --git a/app/Proxy/VisitorProxy.php b/app/Proxy/VisitorProxy.php new file mode 100644 index 0000000..e1fffbc --- /dev/null +++ b/app/Proxy/VisitorProxy.php @@ -0,0 +1,43 @@ +currentVisitor = $user; + } + + public function __get( string $name ): mixed + { + return $this->currentVisitor?->$name; + } + + public function __invoke( int $userId ): ?XenForoUser + { + if( !isset( $this->users[$userId] ) ){ + $this->users[$userId] = app(XenforoService::class)->getXfUser($userId); + } + return $this->users[$userId]; + } + + public function loggedIn(): bool + { + return $this->currentVisitor !== null; + } + + public function guest(): bool + { + return $this->currentVisitor === null; + } +} diff --git a/app/Services/ActivityService.php b/app/Services/ActivityService.php index 896f4b1..eb8396c 100644 --- a/app/Services/ActivityService.php +++ b/app/Services/ActivityService.php @@ -3,6 +3,7 @@ namespace App\Services; use App\Models\Entry; +use App\Models\EntryReview; use App\Models\News; use App\View\Components\EntryCard; use Illuminate\Support\Carbon; @@ -17,9 +18,10 @@ class ActivityService private const CACHE_MESSAGES = 300; // seconds. private const CACHE_THREADS = 300; // seconds. private const CACHE_CLUBS = 300; // seconds. + private const CACHE_REVIEWS = 300; // seconds. private const ITEMS_PER_TYPE = 15; - public function getActivities( array $activities = [ 'entries', 'news', 'messages', 'threads', 'clubs' ] ): Collection + public function getActivities( array $activities = [ 'entries', 'news', 'messages', 'threads', 'clubs', 'reviews' ] ): Collection { $c = collect(); if( in_array( 'entries', $activities ) ) { @@ -37,6 +39,9 @@ class ActivityService if( in_array( 'clubs', $activities ) ) { $c = $c->merge($this->getClubs()); } + if( in_array( 'reviews', $activities ) ) { + $c = $c->merge($this->getReviews()); + } return $c->sortByDesc('date') ->values() @@ -135,6 +140,23 @@ class ActivityService ]; } + private function formatReview( EntryReview $review ): array + { + return [ + 'type' => 'review', + 'title' => $review->title, + 'url' => $review->entry()->exists() ? route('entries.show', ['section' => $review->entry->type, 'entry' => $review->entry]) : '', + 'image' => null, + 'date' => $review->created_at->timestamp, + 'author' => null, + 'user_id' => $review->user_id, + 'badge' => 'Review', + 'badge_class' => 'review', + 'excerpt' => $review->description ? \Str::limit(strip_tags($review->description), 80) : null, + 'meta' => $review->entry()->exists() ? ( $review->entry->complete_title ?? $review->entry->title ) : null, + ]; + } + private function getEntries(): array { return Cache::remember('activity_entries', self::CACHE_ENTRIES, function() { @@ -220,4 +242,16 @@ class ActivityService ->toArray(); }); } + + private function getReviews(): array + { + return Cache::remember('activity_reviews', self::CACHE_REVIEWS, function() { + return EntryReview::with(['entry']) + ->latest('created_at') + ->limit(self::ITEMS_PER_TYPE) + ->get() + ->map($this->formatReview(...)) + ->toArray(); + }); + } } diff --git a/app/Services/ReviewsService.php b/app/Services/ReviewsService.php new file mode 100644 index 0000000..fa7234c --- /dev/null +++ b/app/Services/ReviewsService.php @@ -0,0 +1,46 @@ +request = $request; + $this->entry = $entry; + $user_id = \Auth::user()->user_id; + + $review = DB::transaction(function () use ($user_id) { + + $fields = [ + 'entry_id' => $this->entry->id, + 'title' => $this->request->input('title'), + 'rating'=> $this->request->input('rating'), + 'description' => $this->request->input('description'), + 'user_id' => $user_id, + ]; + + $review = EntryReview::create($fields); + + return $review; + + }); + + return $review; + } +} diff --git a/app/Services/SubmissionsService.php b/app/Services/SubmissionsService.php index e89c394..bef15f7 100644 --- a/app/Services/SubmissionsService.php +++ b/app/Services/SubmissionsService.php @@ -201,7 +201,7 @@ class SubmissionsService { $this->Step11_SaveLanguages( $entry ); // STEP 11.5 : Save Categories - if( section_must_be( 'utilities', $this->section ) ) { + if( section_must_be( ['utilities', 'documents'], $this->section ) ) { $this->Step11_5_SaveCategories($entry); } @@ -605,6 +605,9 @@ class SubmissionsService { if( $fields['featured'] == false ) $fields['featured_at'] = null; $fields['comments_thread_id'] = $this->request->input('comments_thread_id'); + $refresh_created_at = $this->request->input('refresh_created_at') ?? false; + if( $refresh_created_at ) + $fields['created_at'] = now(); } $this->entry->update( $fields ); @@ -631,7 +634,7 @@ class SubmissionsService { $this->eStep10_UpdateLanguages(); // STEP 10.5 : Update categories - if( section_must_be( 'utilities', $this->section ) ) + if( section_must_be( ['utilities', 'documents'], $this->section ) ) $this->eStep10_5_UpdateCategories(); // STEP 11: Prepare new gallery images and prepare deletion of others ones. diff --git a/app/Services/XenforoApiService.php b/app/Services/XenforoApiService.php index 602c6e3..7de52ff 100644 --- a/app/Services/XenforoApiService.php +++ b/app/Services/XenforoApiService.php @@ -24,7 +24,7 @@ class XenforoApiService { */ private function get(string $endpoint, ?int $customUserId = null ): mixed { - $response = Http::withHeaders([ + $response = Http::timeout(30)->withHeaders([ 'XF-Api-Key' => $this->apiKey, 'XF-Api-User' => $customUserId ?? $this->superUserId, ])->get("{$this->apiUrl}/{$endpoint}"); @@ -37,7 +37,7 @@ class XenforoApiService { private function post(string $endpoint, ?int $customUserId = null, array $data = [] ): mixed { - $response = Http::withHeaders([ + $response = Http::timeout(30)->withHeaders([ 'XF-Api-Key' => $this->apiKey, 'XF-Api-User' => $customUserId ?? $this->superUserId, ])->post("{$this->apiUrl}/{$endpoint}", $data); @@ -50,7 +50,7 @@ class XenforoApiService { private function delete(string $endpoint, ?int $customUserId = null, array $data = [] ): mixed { - $response = Http::withHeaders([ + $response = Http::timeout(30)->withHeaders([ 'XF-Api-Key' => $this->apiKey, 'XF-Api-User' => $customUserId ?? $this->superUserId, ])->delete("{$this->apiUrl}/{$endpoint}", $data); @@ -75,7 +75,7 @@ class XenforoApiService { public function markAllNotificationsRead(int $userId): void { Cache::forget("xf_alerts_{$userId}"); - $this->post("alerts/marl-all", $userId ); + $this->post("alerts/mark-all", $userId ); } public function getConversations(int $userId): mixed @@ -87,8 +87,9 @@ class XenforoApiService { public function createConversation( array $userIdList, string $title, string $message, bool $conversationOpen, bool $openInvite ): bool { - $response = $this->post("conversations", data: ['recipient_ids' => $userIdList, 'title' => $title, 'message' => $message, 'open_invite' => $openInvite, 'conversation_open' => $conversationOpen] ); - + $response = $this->post("conversations", + data: ['recipient_ids' => $userIdList, 'title' => $title, 'message' => $message, 'open_invite' => $openInvite, 'conversation_open' => $conversationOpen] + ); return $response['success'] ?? false; } @@ -152,4 +153,13 @@ class XenforoApiService { return (bool) $this->post("threads/{$threadId}/undelete" ); } + public function _migrateUser(array $data): array + { + $response = $this->post("migrate/user", data: $data ); + if( !$response || !$response['success'] ) + return [false,false]; + + return [ $response['user_id'] ?? false, $response['password_set'] ?? false ]; + } + } diff --git a/app/Traits/HasXenforoUserId.php b/app/Traits/HasXenforoUserId.php new file mode 100644 index 0000000..5e47a35 --- /dev/null +++ b/app/Traits/HasXenforoUserId.php @@ -0,0 +1,15 @@ +getXfUser( $this->user_id ); + } +} diff --git a/app/View/Components/DatabaseFilterWithModeSearch.php b/app/View/Components/DatabaseFilterWithModeSearch.php index d8212cc..4066970 100644 --- a/app/View/Components/DatabaseFilterWithModeSearch.php +++ b/app/View/Components/DatabaseFilterWithModeSearch.php @@ -17,7 +17,7 @@ class DatabaseFilterWithModeSearch extends Component public string $model, public string $modeModel, public string $selectedMode, - + public string $searchModel, public string $idProperty = 'id', public string $nameProperty = 'name', ) diff --git a/app/View/Components/DatabaseFilterWithoutModeSearch.php b/app/View/Components/DatabaseFilterWithoutModeSearch.php index 6c8e09e..7932236 100644 --- a/app/View/Components/DatabaseFilterWithoutModeSearch.php +++ b/app/View/Components/DatabaseFilterWithoutModeSearch.php @@ -15,7 +15,7 @@ class DatabaseFilterWithoutModeSearch extends Component public string $title, public $items, public string $model, - + public string $searchModel, public string $idProperty = 'id', public string $nameProperty = 'name', ) diff --git a/app/View/Components/ErrorBlock.php b/app/View/Components/ErrorBlock.php index 52cc2cb..f0bc778 100644 --- a/app/View/Components/ErrorBlock.php +++ b/app/View/Components/ErrorBlock.php @@ -17,6 +17,10 @@ class ErrorBlock extends Component 'page-not-allowed' => [ 'icon' => 'shield-ban', 'message' => "You do not have permission to access this page.\nRequired permission: %s" + ], + 'user-state-not-valid' => [ + 'icon' => 'shield-ban', + 'message' => "You do not have permission to access this page.\nYour user profile is incomplete: %s\nGo back to the forum for more details." ] ]; diff --git a/app/View/Components/ReviewCard.php b/app/View/Components/ReviewCard.php new file mode 100644 index 0000000..bf6fb76 --- /dev/null +++ b/app/View/Components/ReviewCard.php @@ -0,0 +1,30 @@ + [], @@ -50,6 +52,11 @@ if( !function_exists( 'databaseRoute' ) ){ 'languagesMode' => 'or', 'modifications' => [], 'modificationsMode' => 'or', + 'categories' => [], + 'categoriesMode' => 'or', + 'systems' => [], + 'systemsMode' => 'or', + 'levels' => [], 'sort' => 'created_at', 'dir' => 'desc', 's' => '' @@ -57,9 +64,9 @@ if( !function_exists( 'databaseRoute' ) ){ $query = array_filter( array_merge($defaults, $params), - fn($v,$k) => match(true){ + fn($v, $k) => match (true) { is_array($v) => !empty($v), - in_array($k, ['authorsMode', 'languagesMode', 'modificationsMode']) => $v !== 'or', + in_array($k, ['authorsMode', 'languagesMode', 'modificationsMode', 'categoriesMode', 'systemsMode']) => $v !== 'or', $k === 'sort' => $v !== 'created_at', $k === 'dir' => $v !== 'desc', default => $v !== '', @@ -67,6 +74,57 @@ if( !function_exists( 'databaseRoute' ) ){ ARRAY_FILTER_USE_BOTH ); - return route('entries.index', $query ); + return route('entries.index', $query); + } + +} + +if( !function_exists( 'newsRoute' ) ){ + function newsRoute(array $params = []): string + { + $defaults = [ + 'categories' => [], + 'sort' => 'created_at', + 'dir' => 'desc', + 's' => '' + ]; + + $query = array_filter( + array_merge($defaults, $params), + fn($v, $k) => match (true) { + is_array($v) => !empty($v), + $k === 'sort' => $v !== 'created_at', + $k === 'dir' => $v !== 'desc', + default => $v !== '', + }, + ARRAY_FILTER_USE_BOTH + ); + + return route('news.index', $query); + } +} + +if( !function_exists('reviewsRoute') ){ + function reviewsRoute( array $params = [] ): string + { + $defaults = [ + 'entryId' => null, + 'rating' => null, + 'sort' => 'created_at', + 'dir' => 'desc', + ]; + + $query = array_filter( + array_merge($defaults, $params), + fn($v,$k) => match(true){ + is_array($v) => !empty($v), + $k === 'sort' => $v !== 'created_at', + $k === 'dir' => $v !== 'desc', + default => $v !== '', + }, + ARRAY_FILTER_USE_BOTH + ); + + return route('reviews.index', $query ); } } diff --git a/bootstrap/app.php b/bootstrap/app.php index 641e643..36f39a2 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -21,6 +21,7 @@ return Application::configure(basePath: dirname(__DIR__)) if( $request->is('manage*')) abort(403); }); + $middleware->append(\App\Http\Middleware\CheckXenForoUserState::class); }) ->withExceptions(function (Exceptions $exceptions): void { // diff --git a/composer.json b/composer.json index 9df3a22..69a58be 100644 --- a/composer.json +++ b/composer.json @@ -14,6 +14,8 @@ "filament/filament": "^5.6", "laravel/framework": "^13.7", "laravel/tinker": "^3.0", + "league/commonmark": "^2.8", + "league/html-to-markdown": "^5.1", "livewire/livewire": "^4.3", "predis/predis": "^3.4", "spatie/laravel-activitylog": "^5.0" diff --git a/composer.lock b/composer.lock index de6c591..a4a2542 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d561062afd8c291a93e8fd1e00f4e901", + "content-hash": "ea9258b1759d46665d2487b066c686ee", "packages": [ { "name": "blade-ui-kit/blade-heroicons", @@ -2967,6 +2967,95 @@ }, "time": "2026-01-23T15:30:45+00:00" }, + { + "name": "league/html-to-markdown", + "version": "5.1.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/html-to-markdown.git", + "reference": "0b4066eede55c48f38bcee4fb8f0aa85654390fd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/0b4066eede55c48f38bcee4fb8f0aa85654390fd", + "reference": "0b4066eede55c48f38bcee4fb8f0aa85654390fd", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xml": "*", + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "mikehaertl/php-shellcommand": "^1.1.0", + "phpstan/phpstan": "^1.8.8", + "phpunit/phpunit": "^8.5 || ^9.2", + "scrutinizer/ocular": "^1.6", + "unleashedtech/php-coding-standard": "^2.7 || ^3.0", + "vimeo/psalm": "^4.22 || ^5.0" + }, + "bin": [ + "bin/html-to-markdown" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\HTMLToMarkdown\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + }, + { + "name": "Nick Cernis", + "email": "nick@cern.is", + "homepage": "http://modernnerd.net", + "role": "Original Author" + } + ], + "description": "An HTML-to-markdown conversion helper for PHP", + "homepage": "https://github.com/thephpleague/html-to-markdown", + "keywords": [ + "html", + "markdown" + ], + "support": { + "issues": "https://github.com/thephpleague/html-to-markdown/issues", + "source": "https://github.com/thephpleague/html-to-markdown/tree/5.1.1" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/html-to-markdown", + "type": "tidelift" + } + ], + "time": "2023-07-12T21:21:09+00:00" + }, { "name": "league/mime-type-detection", "version": "1.16.0", diff --git a/config/database.php b/config/database.php index c806590..dfaa57d 100644 --- a/config/database.php +++ b/config/database.php @@ -136,6 +136,32 @@ return [ 'database' => env('DISCORD_DB_PATH'), 'prefix' => '', 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + ], + + // Migration. + + 'old_wp' => [ + 'driver' => 'mysql', + 'host' => env('MIG_WP_DB_HOST'), + 'port' => env('MIG_WP_DB_PORT', '3306'), + 'database' => env('MIG_WP_DB_NAME'), + 'username' => env('MIG_WP_DB_USERNAME'), + 'password' => env('MIG_WP_DB_PASSWORD'), + 'charset' => env('MIG_WP_DB_CHARSET', 'utf8mb4'), + 'prefix' => 'wp_', + 'collation' => 'utf8mb4_unicode_ci', + ], + + 'old_xf' => [ + 'driver' => 'mysql', + 'host' => env('MIG_XF_DB_HOST'), + 'port' => env('MIG_XF_DB_PORT', '3306'), + 'database' => env('MIG_XF_DB_NAME'), + 'username' => env('MIG_XF_DB_USERNAME'), + 'password' => env('MIG_XF_DB_PASSWORD'), + 'charset' => env('MIG_XF_DB_CHARSET', 'utf8mb4'), + 'prefix' => 'xf_', + 'collation' => 'utf8mb4_unicode_ci', ] ], diff --git a/config/menu.php b/config/menu.php index 89cabe7..2e18180 100644 --- a/config/menu.php +++ b/config/menu.php @@ -73,12 +73,7 @@ return [ [ 'name' => 'ROM Hasher', 'icon' => 'hash', - 'route' => 'home' - ], - [ - 'name' => 'ROM Checker', - 'icon' => 'check', - 'route' => 'home' + 'route' => 'tools.hash' ] ] ], diff --git a/database/migrations/2026_06_17_114641_create_reviews_table.php b/database/migrations/2026_06_17_114641_create_reviews_table.php new file mode 100644 index 0000000..7ad9e1a --- /dev/null +++ b/database/migrations/2026_06_17_114641_create_reviews_table.php @@ -0,0 +1,33 @@ +id(); + $table->foreignId('entry_id')->constrained()->cascadeOnDelete(); + $table->string('title', 255); + $table->integer('rating'); + $table->text('description'); + $table->unsignedBigInteger( 'user_id' ); // xf_user_id + $table->softDeletes(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('entry_reviews'); + } +}; diff --git a/database/migrations/2026_06_18_084700_create_migration_user_plan_table.php b/database/migrations/2026_06_18_084700_create_migration_user_plan_table.php new file mode 100644 index 0000000..a6f18a3 --- /dev/null +++ b/database/migrations/2026_06_18_084700_create_migration_user_plan_table.php @@ -0,0 +1,39 @@ +id(); + $table->unsignedBigInteger('wp_user_id')->nullable(); + $table->unsignedBigInteger('xf_user_id')->nullable(); + $table->string('match_type'); + $table->string('email')->nullable(); + $table->string('wp_username')->nullable(); + $table->string('xf_username')->nullable(); + $table->text('note')->nullable(); + $table->string('status')->default('pending'); + $table->unsignedBigInteger('user_id')->nullable(); + $table->timestamps(); + + $table->index('match_type'); + $table->index('status'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('migration_user_plan'); + } +}; diff --git a/database/migrations/2026_06_19_080416_create_migration_settings_table.php b/database/migrations/2026_06_19_080416_create_migration_settings_table.php new file mode 100644 index 0000000..1296602 --- /dev/null +++ b/database/migrations/2026_06_19_080416_create_migration_settings_table.php @@ -0,0 +1,28 @@ +string('key')->primary(); + $table->json('value'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('migration_settings'); + } +}; diff --git a/database/migrations/2026_06_19_125237_create_migrations_logs_table.php b/database/migrations/2026_06_19_125237_create_migrations_logs_table.php new file mode 100644 index 0000000..10f3306 --- /dev/null +++ b/database/migrations/2026_06_19_125237_create_migrations_logs_table.php @@ -0,0 +1,34 @@ +id(); + $table->string('source_system'); + $table->string('source_table'); + $table->unsignedBigInteger('source_id'); + $table->string('target_table'); + $table->unsignedBigInteger('target_id'); + $table->string('status')->default('pending'); + $table->dateTime('migrated_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('migrations_logs'); + } +}; diff --git a/database/migrations/2026_06_19_134939_alter_migration_user_plan_table.php b/database/migrations/2026_06_19_134939_alter_migration_user_plan_table.php new file mode 100644 index 0000000..1c7e8b3 --- /dev/null +++ b/database/migrations/2026_06_19_134939_alter_migration_user_plan_table.php @@ -0,0 +1,28 @@ +boolean('wp_password_bridge')->default(false); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('migration_user_plan', function (Blueprint $table) { + $table->dropColumn('wp_password_bridge'); + }); + } +}; diff --git a/database/migrations/2026_06_21_085615_create_migration_game_plan_table.php b/database/migrations/2026_06_21_085615_create_migration_game_plan_table.php new file mode 100644 index 0000000..069f637 --- /dev/null +++ b/database/migrations/2026_06_21_085615_create_migration_game_plan_table.php @@ -0,0 +1,35 @@ +id(); + $table->unsignedBigInteger('wp_game_id'); + $table->unsignedBigInteger('wp_platform_id'); + $table->unsignedBigInteger('game_id')->nullable(); + $table->unsignedBigInteger('wp_genre_id')->nullable(); + $table->unsignedInteger('post_count')->default(0); + $table->boolean('genre_conflict')->default(false); + $table->timestamps(); + + $table->unique(['wp_game_id', 'wp_platform_id']); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('migration_game_plan'); + } +}; diff --git a/database/migrations/2026_06_22_132647_delete_gallery_constraint.php b/database/migrations/2026_06_22_132647_delete_gallery_constraint.php new file mode 100644 index 0000000..37da73c --- /dev/null +++ b/database/migrations/2026_06_22_132647_delete_gallery_constraint.php @@ -0,0 +1,26 @@ +dropForeign('entry_galleries_entry_id_foreign'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // + } +}; diff --git a/database/schema/mariadb-schema.sql b/database/schema/mariadb-schema.sql new file mode 100644 index 0000000..457e03a --- /dev/null +++ b/database/schema/mariadb-schema.sql @@ -0,0 +1,634 @@ +/*M!999999\- enable the sandbox mode */ +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*M!100616 SET @OLD_NOTE_VERBOSITY=@@NOTE_VERBOSITY, NOTE_VERBOSITY=0 */; +DROP TABLE IF EXISTS `activity_log`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `activity_log` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `log_name` varchar(255) DEFAULT NULL, + `description` text NOT NULL, + `subject_type` varchar(255) DEFAULT NULL, + `subject_id` bigint(20) unsigned DEFAULT NULL, + `event` varchar(255) DEFAULT NULL, + `causer_type` varchar(255) DEFAULT NULL, + `causer_id` bigint(20) unsigned DEFAULT NULL, + `attribute_changes` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`attribute_changes`)), + `properties` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`properties`)), + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `subject` (`subject_type`,`subject_id`), + KEY `causer` (`causer_type`,`causer_id`), + KEY `activity_log_log_name_index` (`log_name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `authors`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `authors` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `slug` varchar(255) NOT NULL, + `website` varchar(500) DEFAULT NULL, + `user_id` int(10) unsigned DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `authors_slug_unique` (`slug`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `cache`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `cache` ( + `key` varchar(255) NOT NULL, + `value` mediumtext NOT NULL, + `expiration` bigint(20) NOT NULL, + PRIMARY KEY (`key`), + KEY `cache_expiration_index` (`expiration`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `cache_locks`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `cache_locks` ( + `key` varchar(255) NOT NULL, + `owner` varchar(255) NOT NULL, + `expiration` bigint(20) NOT NULL, + PRIMARY KEY (`key`), + KEY `cache_locks_expiration_index` (`expiration`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `categories`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `categories` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `slug` varchar(255) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `restricted_to` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`restricted_to`)), + PRIMARY KEY (`id`), + UNIQUE KEY `categories_slug_unique` (`slug`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `entries`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `entries` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `type` enum('translations','romhacks','homebrew','utilities','documents','lua-scripts','tutorials') NOT NULL, + `title` varchar(255) DEFAULT NULL, + `slug` varchar(255) DEFAULT NULL, + `description` longtext DEFAULT NULL, + `main_image` varchar(255) DEFAULT NULL, + `state` enum('draft','pending','published','locked','rejected','hidden') NOT NULL DEFAULT 'draft', + `staff_comment` text DEFAULT NULL, + `rejected_at` timestamp NULL DEFAULT NULL, + `featured` tinyint(1) NOT NULL DEFAULT 0, + `featured_at` datetime DEFAULT NULL, + `game_id` bigint(20) unsigned DEFAULT NULL, + `platform_id` bigint(20) unsigned DEFAULT NULL, + `status_id` bigint(20) unsigned DEFAULT NULL, + `version` varchar(50) DEFAULT NULL, + `release_date` date DEFAULT NULL, + `staff_credits` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`staff_credits`)), + `relevant_link` varchar(500) DEFAULT NULL, + `youtube_link` varchar(500) DEFAULT NULL, + `user_id` bigint(20) unsigned NOT NULL, + `comments_thread_id` bigint(20) unsigned DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `complete_title` varchar(255) DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + `level_id` bigint(20) unsigned DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `entries_slug_unique` (`slug`), + KEY `entries_game_id_foreign` (`game_id`), + KEY `entries_platform_id_foreign` (`platform_id`), + KEY `entries_status_id_foreign` (`status_id`), + KEY `entries_type_state_game_id_platform_id_status_id_index` (`type`,`state`,`game_id`,`platform_id`,`status_id`), + KEY `entries_level_id_foreign` (`level_id`), + CONSTRAINT `entries_game_id_foreign` FOREIGN KEY (`game_id`) REFERENCES `games` (`id`) ON DELETE SET NULL, + CONSTRAINT `entries_level_id_foreign` FOREIGN KEY (`level_id`) REFERENCES `levels` (`id`) ON DELETE SET NULL, + CONSTRAINT `entries_platform_id_foreign` FOREIGN KEY (`platform_id`) REFERENCES `platforms` (`id`) ON DELETE SET NULL, + CONSTRAINT `entries_status_id_foreign` FOREIGN KEY (`status_id`) REFERENCES `statuses` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `entry_authors`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `entry_authors` ( + `entry_id` bigint(20) unsigned NOT NULL, + `author_id` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`entry_id`,`author_id`), + KEY `entry_authors_author_id_foreign` (`author_id`), + CONSTRAINT `entry_authors_author_id_foreign` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`) ON DELETE CASCADE, + CONSTRAINT `entry_authors_entry_id_foreign` FOREIGN KEY (`entry_id`) REFERENCES `entries` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `entry_categories`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `entry_categories` ( + `entry_id` bigint(20) unsigned NOT NULL, + `category_id` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`entry_id`,`category_id`), + KEY `entry_categories_category_id_foreign` (`category_id`), + CONSTRAINT `entry_categories_category_id_foreign` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`) ON DELETE CASCADE, + CONSTRAINT `entry_categories_entry_id_foreign` FOREIGN KEY (`entry_id`) REFERENCES `entries` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `entry_files`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `entry_files` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `entry_id` bigint(20) unsigned NOT NULL, + `filename` varchar(1024) NOT NULL, + `filepath` varchar(1024) NOT NULL, + `favorite_server` varchar(11) NOT NULL, + `favorite_at` timestamp NOT NULL, + `filesize` bigint(20) unsigned DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `file_uuid` uuid NOT NULL, + `state` enum('public','private','archived') NOT NULL DEFAULT 'public', + `online_patcher` tinyint(1) NOT NULL DEFAULT 0, + `secondary_online_patcher` tinyint(1) NOT NULL DEFAULT 0, + `download_count` bigint(20) unsigned NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + UNIQUE KEY `entry_files_file_uuid_unique` (`file_uuid`), + KEY `entry_files_entry_id_foreign` (`entry_id`), + CONSTRAINT `entry_files_entry_id_foreign` FOREIGN KEY (`entry_id`) REFERENCES `entries` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `entry_hashes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `entry_hashes` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `entry_id` bigint(20) unsigned NOT NULL, + `filename` varchar(256) NOT NULL, + `hash_crc32` varchar(256) NOT NULL, + `hash_sha1` varchar(256) NOT NULL, + `verified` varchar(256) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `entry_hashes_entry_id_foreign` (`entry_id`), + CONSTRAINT `entry_hashes_entry_id_foreign` FOREIGN KEY (`entry_id`) REFERENCES `entries` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `entry_languages`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `entry_languages` ( + `entry_id` bigint(20) unsigned NOT NULL, + `language_id` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`entry_id`,`language_id`), + KEY `entry_languages_language_id_foreign` (`language_id`), + CONSTRAINT `entry_languages_entry_id_foreign` FOREIGN KEY (`entry_id`) REFERENCES `entries` (`id`) ON DELETE CASCADE, + CONSTRAINT `entry_languages_language_id_foreign` FOREIGN KEY (`language_id`) REFERENCES `languages` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `entry_modifications`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `entry_modifications` ( + `entry_id` bigint(20) unsigned NOT NULL, + `modification_id` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`entry_id`,`modification_id`), + KEY `entry_modifications_modification_id_foreign` (`modification_id`), + CONSTRAINT `entry_modifications_entry_id_foreign` FOREIGN KEY (`entry_id`) REFERENCES `entries` (`id`) ON DELETE CASCADE, + CONSTRAINT `entry_modifications_modification_id_foreign` FOREIGN KEY (`modification_id`) REFERENCES `modifications` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `entry_reviews`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `entry_reviews` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `entry_id` bigint(20) unsigned NOT NULL, + `title` varchar(255) NOT NULL, + `rating` int(11) NOT NULL, + `description` text NOT NULL, + `user_id` bigint(20) unsigned NOT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `entry_reviews_entry_id_foreign` (`entry_id`), + CONSTRAINT `entry_reviews_entry_id_foreign` FOREIGN KEY (`entry_id`) REFERENCES `entries` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `entry_systems`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `entry_systems` ( + `entry_id` bigint(20) unsigned NOT NULL, + `system_id` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`entry_id`,`system_id`), + KEY `entry_systems_system_id_foreign` (`system_id`), + CONSTRAINT `entry_systems_entry_id_foreign` FOREIGN KEY (`entry_id`) REFERENCES `entries` (`id`) ON DELETE CASCADE, + CONSTRAINT `entry_systems_system_id_foreign` FOREIGN KEY (`system_id`) REFERENCES `systems` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `failed_jobs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `failed_jobs` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `uuid` varchar(255) NOT NULL, + `connection` text NOT NULL, + `queue` text NOT NULL, + `payload` longtext NOT NULL, + `exception` longtext NOT NULL, + `failed_at` timestamp NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + UNIQUE KEY `failed_jobs_uuid_unique` (`uuid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `galleries`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `galleries` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `galleryable_type` varchar(255) NOT NULL DEFAULT 'AppModelsEntry', + `galleryable_id` bigint(20) unsigned NOT NULL, + `image` varchar(255) NOT NULL, + `order` smallint(5) unsigned NOT NULL DEFAULT 0, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `entry_galleries_entry_id_foreign` (`galleryable_id`), + KEY `galleries_galleryable_type_galleryable_id_index` (`galleryable_type`,`galleryable_id`), + CONSTRAINT `entry_galleries_entry_id_foreign` FOREIGN KEY (`galleryable_id`) REFERENCES `entries` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `games`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `games` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `slug` varchar(255) NOT NULL, + `platform_id` bigint(20) unsigned NOT NULL, + `genre_id` bigint(20) unsigned NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `games_slug_unique` (`slug`), + KEY `games_platform_id_foreign` (`platform_id`), + KEY `games_genre_id_foreign` (`genre_id`), + CONSTRAINT `games_genre_id_foreign` FOREIGN KEY (`genre_id`) REFERENCES `genres` (`id`), + CONSTRAINT `games_platform_id_foreign` FOREIGN KEY (`platform_id`) REFERENCES `platforms` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `genres`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `genres` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `slug` varchar(255) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `genres_slug_unique` (`slug`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `job_batches`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `job_batches` ( + `id` varchar(255) NOT NULL, + `name` varchar(255) NOT NULL, + `total_jobs` int(11) NOT NULL, + `pending_jobs` int(11) NOT NULL, + `failed_jobs` int(11) NOT NULL, + `failed_job_ids` longtext NOT NULL, + `options` mediumtext DEFAULT NULL, + `cancelled_at` int(11) DEFAULT NULL, + `created_at` int(11) NOT NULL, + `finished_at` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `jobs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `jobs` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `queue` varchar(255) NOT NULL, + `payload` longtext NOT NULL, + `attempts` smallint(5) unsigned NOT NULL, + `reserved_at` int(10) unsigned DEFAULT NULL, + `available_at` int(10) unsigned NOT NULL, + `created_at` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + KEY `jobs_queue_index` (`queue`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `languages`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `languages` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `slug` varchar(255) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `languages_slug_unique` (`slug`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `levels`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `levels` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `slug` varchar(255) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `levels_slug_unique` (`slug`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `migration_game_plan`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `migration_game_plan` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `wp_game_id` bigint(20) unsigned NOT NULL, + `wp_platform_id` bigint(20) unsigned NOT NULL, + `game_id` bigint(20) unsigned DEFAULT NULL, + `wp_genre_id` bigint(20) unsigned DEFAULT NULL, + `post_count` int(10) unsigned NOT NULL DEFAULT 0, + `genre_conflict` tinyint(1) NOT NULL DEFAULT 0, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `migration_game_plan_wp_game_id_wp_platform_id_unique` (`wp_game_id`,`wp_platform_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `migration_settings`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `migration_settings` ( + `key` varchar(255) NOT NULL, + `value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`value`)), + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `migration_user_plan`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `migration_user_plan` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `wp_user_id` bigint(20) unsigned DEFAULT NULL, + `xf_user_id` bigint(20) unsigned DEFAULT NULL, + `match_type` varchar(255) NOT NULL, + `email` varchar(255) DEFAULT NULL, + `wp_username` varchar(255) DEFAULT NULL, + `xf_username` varchar(255) DEFAULT NULL, + `note` text DEFAULT NULL, + `status` varchar(255) NOT NULL DEFAULT 'pending', + `user_id` bigint(20) unsigned DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `wp_password_bridge` tinyint(1) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + KEY `migration_user_plan_match_type_index` (`match_type`), + KEY `migration_user_plan_status_index` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `migrations`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `migrations` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `migration` varchar(255) NOT NULL, + `batch` int(11) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `migrations_logs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `migrations_logs` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `source_system` varchar(255) NOT NULL, + `source_table` varchar(255) NOT NULL, + `source_id` bigint(20) unsigned NOT NULL, + `target_table` varchar(255) NOT NULL, + `target_id` bigint(20) unsigned NOT NULL, + `status` varchar(255) NOT NULL DEFAULT 'pending', + `migrated_at` datetime DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `modifications`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `modifications` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `slug` varchar(255) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `news`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `news` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `title` varchar(255) NOT NULL, + `slug` varchar(255) NOT NULL, + `category_id` bigint(20) unsigned DEFAULT NULL, + `description` longtext NOT NULL, + `state` enum('draft','pending','published','locked','rejected','hidden') NOT NULL DEFAULT 'draft', + `staff_comment` text DEFAULT NULL, + `rejected_at` timestamp NULL DEFAULT NULL, + `entry_id` bigint(20) unsigned DEFAULT NULL, + `relevant_link` varchar(500) DEFAULT NULL, + `youtube_link` varchar(500) DEFAULT NULL, + `user_id` bigint(20) unsigned NOT NULL, + `comments_thread_id` bigint(20) unsigned DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `news_slug_unique` (`slug`), + KEY `news_category_id_foreign` (`category_id`), + KEY `news_entry_id_foreign` (`entry_id`), + CONSTRAINT `news_category_id_foreign` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`) ON DELETE SET NULL, + CONSTRAINT `news_entry_id_foreign` FOREIGN KEY (`entry_id`) REFERENCES `entries` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `password_reset_tokens`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `password_reset_tokens` ( + `email` varchar(255) NOT NULL, + `token` varchar(255) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `platforms`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `platforms` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(100) NOT NULL, + `slug` varchar(100) NOT NULL, + `short_name` varchar(30) DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `play_online_core` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `platforms_slug_unique` (`slug`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `play_online_settings`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `play_online_settings` ( + `file_id` bigint(20) unsigned NOT NULL, + `core` varchar(30) NOT NULL, + `threads` tinyint(1) NOT NULL DEFAULT 0, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`file_id`), + CONSTRAINT `play_online_settings_file_id_foreign` FOREIGN KEY (`file_id`) REFERENCES `entry_files` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `sessions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `sessions` ( + `id` varchar(255) NOT NULL, + `user_id` bigint(20) unsigned DEFAULT NULL, + `ip_address` varchar(45) DEFAULT NULL, + `user_agent` text DEFAULT NULL, + `payload` longtext NOT NULL, + `last_activity` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `sessions_user_id_index` (`user_id`), + KEY `sessions_last_activity_index` (`last_activity`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `statuses`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `statuses` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `slug` varchar(255) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `status_slug_unique` (`slug`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `systems`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `systems` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `slug` varchar(255) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `systems_slug_unique` (`slug`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `users`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `users` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `email` varchar(255) NOT NULL, + `email_verified_at` timestamp NULL DEFAULT NULL, + `password` varchar(255) NOT NULL, + `remember_token` varchar(100) DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `users_email_unique` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*M!100616 SET NOTE_VERBOSITY=@OLD_NOTE_VERBOSITY */; + +/*M!999999\- enable the sandbox mode */ +SET @OLD_AUTOCOMMIT=@@AUTOCOMMIT, @@AUTOCOMMIT=0; +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (1,'0001_01_01_000000_create_users_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (2,'0001_01_01_000001_create_cache_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (3,'0001_01_01_000002_create_jobs_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (4,'2026_05_09_153326_create_platforms_table',2); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (5,'2026_05_09_153901_add_platform_timestamp',3); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (6,'2026_05_10_071323_create_genres_table',4); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (7,'2026_05_10_071400_create_games_table',5); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (8,'2026_05_10_072139_create_languages_table',6); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (9,'2026_05_10_072201_create_authors_table',6); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (10,'2026_05_10_072332_create_modifications_table',6); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (11,'2026_05_10_072441_create_status_table',6); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (12,'2026_05_10_072747_create_entries_table',7); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (13,'2026_05_10_074735_create_entry_authors_table',8); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (14,'2026_05_10_074830_create_entry_languages_table',8); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (15,'2026_05_10_074907_create_entry_modifications_table',8); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (16,'2026_05_12_114815_create_entry_files_table',9); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (19,'2026_05_12_115134_create_entry_hashes_table',10); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (20,'2026_05_13_084522_add_fields_to_entry_files',11); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (22,'2026_05_16_134002_create_entry_gallery_table',12); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (23,'2026_05_18_131712_change_staff_credits_field',13); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (24,'2026_05_19_090838_add_complete_title_to_entry',14); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (25,'2026_05_27_192635_add_fields_for_queue_to_entries',15); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (26,'2026_05_27_193235_add_rejected_state_to_entries',16); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (27,'2026_06_04_083346_make_entries_fields_draft_compatible',17); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (35,'2026_06_05_163235_add_online_patcher_fields_to_files',18); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (36,'2026_06_09_122425_create_category_table',18); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (37,'2026_06_09_122655_create_os_table',18); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (38,'2026_06_09_122817_create_level_table',18); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (39,'2026_06_09_123242_add_entry_level_id_field',18); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (40,'2026_06_09_123458_create_entry_systems_table',18); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (41,'2026_06_09_123533_create_entry_categories_table',18); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (42,'2026_06_09_124832_add_restricted_field_to_categories',19); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (43,'2026_06_10_084936_make_entry_galleries_polymorphic',20); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (44,'2026_06_10_090320_create_news_table',21); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (45,'2026_06_10_091105_add_fields_for_queue_to_news',22); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (46,'2026_06_11_155053_add_order_to_galleries_table',23); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (47,'2026_06_13_210606_add_featured_at_field_to_entries',24); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (48,'2026_06_14_163648_create_play_online_settings_table',25); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (49,'2026_06_14_174906_add_default_core_play_online_for_platforms',26); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (50,'2026_06_16_100941_create_activity_log_table',27); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (51,'2026_06_16_122812_add_download_field_to_entry_files',28); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (53,'2026_06_17_114641_create_reviews_table',29); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (54,'2026_06_18_084700_create_migration_user_plan_table',30); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (55,'2026_06_19_080416_create_migration_settings_table',31); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (56,'2026_06_19_125237_create_migrations_logs_table',32); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (57,'2026_06_19_134939_alter_migration_user_plan_table',33); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (59,'2026_06_21_085615_create_migration_game_plan_table',34); +COMMIT; +SET AUTOCOMMIT=@OLD_AUTOCOMMIT; diff --git a/extra.less b/extra.less index 2611c34..fd587f1 100644 --- a/extra.less +++ b/extra.less @@ -201,6 +201,86 @@ ul { } } +@media (max-width: 1024px) { + .\$stats-grid { + grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); + gap: 15px; + margin-bottom: 25px; + } + + .\$stat-card { + padding: 15px; + gap: 12px; + } +} + +@media (max-width: 768px) { + .\$stats-grid { + grid-template-columns: repeat(2, 1fr); + gap: 12px; + margin-bottom: 20px; + } + + .\$stat-card { + padding: 12px; + gap: 10px; + font-size: 0.9rem; + } + + .\$stat-card i { + width: 28px; + height: 28px; + } + + .\$entry-card-info { + padding: 12px; + } + + .\$entry-card-title { + font-size: 0.95rem; + margin-bottom: 4px; + } + + .\$entry-card-author { + font-size: 0.8rem; + margin-bottom: 8px; + } + + .\$entry-card-meta { + font-size: 0.75rem; + } +} + +@media (max-width: 600px) { + .\$stats-grid { + grid-template-columns: 1fr; + gap: 10px; + margin-bottom: 15px; + } + + .\$stat-card { + padding: 10px; + flex-direction: row; + } + + .\$entry-card { + &:hover { + transform: none; + } + } + + .\$entry-card-title { + font-size: 0.9rem; + } + + .\$entry-badge { + top: 5px; + right: 5px; + padding: 3px 6px; + font-size: 0.65rem; + } +} + /* File: resources/css/components/common.css */ /* BUTTONS */ @@ -352,6 +432,7 @@ ul { .\$breadcrumb { margin-bottom: 15px; + flex-shrink: 0; } /* PAGE */ @@ -361,6 +442,7 @@ ul { font-weight: 300; margin-bottom: 20px; color: var(--text); + flex-shrink: 0; } /* TEXTS */ @@ -401,6 +483,91 @@ ul { cursor: pointer; } +@media (max-width: 768px) { + .\$btn { + padding: 7px 12px; + font-size: 0.85rem; + gap: 6px; + } + + .\$block { + padding: 15px; + margin-bottom: 15px; + } + + .\$block-header { + font-size: 1.05rem; + margin-bottom: 12px; + padding-bottom: 8px; + } + + .\$page-title { + font-size: 1.5rem; + margin-bottom: 15px; + } + + .\$content-title { + margin: 20px 0 12px 0; + padding-left: 8px; + } + + .\$quote { + padding: 12px; + margin-top: 20px; + font-size: 0.95rem; + } + + .\$whisper { + margin-bottom: 12px; + font-size: 0.9rem; + } + + .\$breadcrumb { + font-size: 0.85rem; + } +} + +@media (max-width: 600px) { + .\$btn { + padding: 6px 10px; + font-size: 0.8rem; + gap: 4px; + justify-content: center; + } + + .\$btn.primary, .\$btn.danger, .\$btn.success { + width: 100%; + } + + .\$block { + padding: 12px; + margin-bottom: 12px; + } + + .\$block-header { + font-size: 0.95rem; + margin-bottom: 10px; + padding-bottom: 6px; + } + + .\$page-title { + font-size: 1.2rem; + margin-bottom: 12px; + } + + .\$badge { + padding: 2px 6px; + font-size: 0.7rem; + } + + .\$topbar-badge { + min-width: 16px; + height: 16px; + padding: 0 3px; + font-size: 0.6rem; + } +} + /* File: resources/css/components/database.css */ .\$filter-bar { @@ -664,6 +831,10 @@ ul { flex-direction: column; } + .\$database-wrapper { + flex-direction: column; + } + .\$database-filters { width: 100%; display: grid; @@ -680,19 +851,63 @@ ul { } } +@media (max-width: 768px) { + .\$database-search { + gap: 8px; + margin-bottom: 15px; + flex-wrap: wrap; + } + + .\$database-wrapper { + flex-direction: column; + gap: 15px; + } + + .\$database-filters { + width: 100%; + grid-template-columns: 1fr; + order: -1; + margin-bottom: 10px; + } + + .\$database-filter-group { + padding: 12px 0; + } + + .\$grid-entries { + grid-template-columns: repeat(3, 1fr); + gap: 15px; + } +} + @media (max-width: 600px) { + .\$database-search { + flex-direction: column; + } + .\$database-filters { grid-template-columns: 1fr; } .\$grid-entries { grid-template-columns: repeat(2, 1fr); + gap: 12px; + } + + .\$database-filter-group { + padding: 10px 0; } } @media (max-width: 420px) { .\$grid-entries { grid-template-columns: 1fr; + gap: 10px; + } + + .\$database-search input { + font-size: 0.85rem; + padding: 6px 8px; } } @@ -892,7 +1107,7 @@ ul { font-weight: 600; color: var(--text); margin-bottom: 6px; - white-space: nowrap; + white-space: normal; overflow: hidden; text-overflow: ellipsis; } @@ -958,6 +1173,106 @@ ul { } } +@media (max-width: 768px) { + .\$drafts-count { + font-size: 0.8rem; + margin-bottom: 12px; + padding-bottom: 8px; + } + + .\$drafts-item { + gap: 15px; + padding: 15px; + } + + .\$drafts-cover { + width: 70px; + height: 70px; + } + + .\$drafts-top { + gap: 12px; + } + + .\$drafts-title { + font-size: 0.95rem; + } + + .\$drafts-meta { + font-size: 0.8rem; + } + + .\$drafts-actions { + gap: 6px; + } + + .\$drafts-actions .\$btn { + padding: 6px 10px; + font-size: 0.8rem; + } +} + +@media (max-width: 600px) { + .\$drafts-empty { + padding: 60px 15px; + gap: 12px; + } + + .\$drafts-empty h3 { + font-size: 1rem; + } + + .\$drafts-empty p { + font-size: 0.85rem; + } + + .\$drafts-item { + flex-direction: column; + gap: 12px; + padding: 12px; + } + + .\$drafts-cover { + width: 100%; + height: 150px; + } + + .\$drafts-top { + flex-direction: column; + gap: 10px; + } + + .\$drafts-title { + font-size: 0.9rem; + } + + .\$drafts-meta { + font-size: 0.75rem; + } + + .\$drafts-progress { + flex-direction: column; + gap: 8px; + } + + .\$drafts-progress-bar { + width: 100%; + } + + .\$drafts-actions { + flex-direction: row; + gap: 6px; + flex-wrap: wrap; + } + + .\$drafts-actions .\$btn { + flex: 1; + min-width: 80px; + padding: 5px 8px; + font-size: 0.75rem; + } +} + /* File: resources/css/components/easymde.css */ .\$EasyMDEContainer { @@ -1591,6 +1906,17 @@ ul { flex-direction: row; gap: 15px; } + +@media (max-width: 600px) { + .\$upload-item-actions { + flex-direction: column; + gap: 8px; + } + + .\$upload-item-actions .\$btn { + width: 100%; + } +} .file-state-icon { width: 18px; height: 18px; } .file-state-icon--public { color: var(--success); } .file-state-icon--private { color: var(--text2); } @@ -1697,6 +2023,89 @@ ul { grid-column: span 1; } +@media (max-width: 768px) { + .\$form-group.level { + padding: 20px; + margin-bottom: 25px; + } + + .\$form-group-title { + font-size: 1rem; + margin-bottom: 15px; + padding-bottom: 8px; + } + + .\$form-group label, .\$form-label { + margin-bottom: 6px; + font-size: 0.9rem; + } + + .\$form-input, .\$form-select, .\$form-textarea, .\$form-field { + padding: 8px 10px; + font-size: 0.9rem; + } + + .\$form-textarea { + min-height: 100px; + } + + .\$game-selector-mode { + flex-direction: column; + gap: 0; + } + + .\$game-selector-mode-btn { + padding: 10px 12px; + border-right: none; + border-bottom: 1px solid var(--border); + } + + .\$game-selector-mode-btn:last-child { + border-bottom: none; + } + + .\$submit, .\$submit-level, .\$main-image-grid { + flex-direction: column; + } + + .\$grid-hashes { + grid-template-columns: 1fr; + } + + .\$hash-first { + display: none; + } +} + +@media (max-width: 600px) { + .\$form-group { + margin-bottom: 15px; + } + + .\$form-group.level { + padding: 15px; + margin-bottom: 20px; + } + + .\$form-group-title { + font-size: 0.95rem; + margin-bottom: 12px; + } + + .\$form-group label, .\$form-label { + font-size: 0.85rem; + } + + .\$form-input, .\$form-select, .\$form-textarea, .\$form-field { + padding: 6px 8px; + font-size: 0.85rem; + } + + .\$form-error-text { + font-size: 0.8rem; + } +} + /* File: resources/css/components/grid.css */ .\$grid-c2 { @@ -1740,11 +2149,12 @@ ul { /* File: resources/css/components/hovercard.css */ .\$hovercard-overlay { - position: absolute; - z-index: 2000; + position: fixed; + z-index: 3500; background-color: var(--bg2); border: 1px solid var(--border); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5); + pointer-events: auto; } .\$hovercard-overlay-loading { @@ -1859,6 +2269,38 @@ ul { font-size: 0.82rem; } +@media (max-width: 768px) { + .\$hovercard { + width: 260px; + } + + .\$hovercard-actions { + gap: 6px; + } + + .\$hovercard-actions .\$btn { + font-size: 0.75rem; + padding: 6px 8px; + } +} + +@media (max-width: 600px) { + .\$hovercard { + width: calc(100vw - 40px); + max-width: 280px; + } + + .\$hovercard-actions { + flex-direction: column; + gap: 6px; + } + + .\$hovercard-actions .\$btn { + width: 100%; + justify-content: center; + } +} + /* File: resources/css/components/modal.css */ .\$modal-overlay { @@ -2467,6 +2909,131 @@ ul { border-top: 1px solid var(--border); } +@media (max-width: 1024px) { + .\$modcp-wrapper { + min-height: auto; + } + + .\$modcp-sidebar { + width: 200px; + margin-right: 10px; + } + + .\$modcp-content { + padding: 20px; + } + + .\$modcp-page-title { + font-size: 1.15rem; + } +} + +@media (max-width: 768px) { + .\$modcp-wrapper { + flex-direction: column; + gap: 0; + } + + .\$modcp-sidebar { + width: 100%; + flex-shrink: 1; + position: relative; + top: auto; + align-self: auto; + margin-right: 0; + margin-bottom: 15px; + border: 1px solid var(--border); + max-height: 300px; + overflow-y: auto; + } + + .\$modcp-sidebar-header { + padding: 12px 14px; + font-size: 0.8rem; + } + + .\$modcp-nav-label { + padding: 6px 14px 3px; + font-size: 0.65rem; + } + + .\$modcp-nav-item { + padding: 6px 14px; + font-size: 0.8rem; + gap: 8px; + } + + .\$modcp-content { + padding: 15px; + } + + .\$modcp-page-title { + font-size: 1rem; + margin-bottom: 12px; + } + + .\$modcp-page-actions { + flex-direction: row; + gap: 8px; + } + + .\$modcp-table { + font-size: 0.85rem; + } + + .\$modcp-table th, .\$modcp-table td { + padding: 8px; + } + + .\$modcp-table tbody tr { + height: auto; + } +} + +@media (max-width: 600px) { + .\$modcp-sidebar { + max-height: 200px; + } + + .\$modcp-sidebar-header { + padding: 10px 12px; + font-size: 0.75rem; + } + + .\$modcp-nav-item { + padding: 5px 12px; + font-size: 0.75rem; + } + + .\$modcp-content { + padding: 12px; + } + + .\$modcp-page-title { + font-size: 0.95rem; + } + + .\$modcp-table { + font-size: 0.8rem; + overflow-x: auto; + display: block; + } + + .\$modcp-table th, .\$modcp-table td { + padding: 6px; + } + + .\$log-diff-key { + width: auto; + white-space: normal; + } + + .\$log-raw { + font-size: 0.7rem; + padding: 8px 10px; + } +} + /* File: resources/css/components/notifications.css */ .\$notifications, .\$conversations { @@ -2492,6 +3059,28 @@ ul { } } +@media (max-width: 768px) { + .\$notifications, .\$conversations { + position: fixed; + width: calc(100% - 30px); + max-width: 340px; + right: 15px; + top: auto; + bottom: 15px; + max-height: calc(100vh - 130px); + z-index: 3000 !important; + } +} + +@media (max-width: 600px) { + .\$notifications, .\$conversations { + width: calc(100% - 20px); + right: 10px; + bottom: 10px; + max-width: 100%; + } +} + @keyframes dropdown-enter { from { opacity: 0; transform: translateY(-6px); } from { opacity: 0; transform: translateY(-6px); } @@ -2798,6 +3387,85 @@ ul { border: 1px solid var(--border); } +@media (max-width: 768px) { + .\$queue-item { + padding: 15px; + margin-bottom: 15px; + } + + .\$queue-item-header { + flex-direction: column; + gap: 12px; + } + + .\$queue-item-title { + font-size: 1rem; + } + + .\$queue-item-meta { + font-size: 0.8rem; + } + + .\$queue-item-actions-header { + gap: 6px; + flex-wrap: wrap; + width: 100%; + } + + .\$timeline { + font-size: 0.85rem; + } + + .\$timeline-container { + padding: 12px 15px; + } + + .\$queue-mod-actions { + flex-direction: column; + gap: 6px; + } +} + +@media (max-width: 600px) { + .\$queue-empty { + padding: 60px 15px; + font-size: 0.9rem; + } + + .\$queue-item { + padding: 12px; + border-left-width: 3px; + } + + .\$queue-item-title { + font-size: 0.95rem; + } + + .\$queue-item-meta { + font-size: 0.75rem; + } + + .\$queue-item-actions-header { + width: 100%; + } + + .\$timeline { + font-size: 0.8rem; + } + + .\$timeline-container { + padding: 10px 12px; + } + + .\$queue-mod-actions { + flex-direction: column; + } + + .\$queue-mod-actions .\$btn { + width: 100%; + } +} + /* File: resources/css/components/settings.css */ @@ -2812,6 +3480,29 @@ ul { z-index: 2000; } +@media (max-width: 768px) { + .\$settings-dropdown { + position: fixed; + width: calc(100% - 30px); + max-width: 240px; + right: 15px; + top: auto; + bottom: 15px; + max-height: calc(100vh - 130px); + overflow-y: auto; + z-index: 3000 !important; + } +} + +@media (max-width: 600px) { + .\$settings-dropdown { + width: calc(100% - 20px); + right: 10px; + bottom: 10px; + max-width: 100%; + } +} + .\$settings-header { padding: 12px 16px; border-bottom: 1px solid var(--border); @@ -2977,6 +3668,62 @@ ul { .\$patcher-grid { grid-template-columns: 1fr; } + + .\$patcher-container { + padding: 20px; + } + + .\$patcher-dropzone { + padding: 40px 15px; + gap: 12px; + } + + .\$embed-patch-box { + padding: 20px; + height: auto; + } + + .\$embed-patch-box-icon { + gap: 12px; + } + + .\$embed-patch-box-icon-block { + width: 40px; + height: 40px; + } +} + +@media (max-width: 600px) { + .\$patcher-container { + padding: 15px; + margin-bottom: 15px; + } + + .\$patcher-grid { + gap: 15px; + } + + .\$patcher-dropzone { + padding: 30px 12px; + gap: 10px; + font-size: 0.9rem; + } + + .\$patcher-status-box { + margin-top: 15px; + padding: 12px; + font-size: 0.9rem; + } + + .\$embed-patch-box { + padding: 15px; + gap: 12px; + } + + .\$btn:disabled { + padding: 6px 8px; + font-size: 0.8rem; + } } .\$patcher-dropzone { @@ -3160,7 +3907,7 @@ ul { color: var(--rhpz-orange); } -.\$activity-tl-dot--news { +.\$activity-tl-dot--news, .\$activity-tl-dot--review { background-color: rgba(129,199,132,0.1); border-color: rgba(129,199,132,0.4); color: var(--success); @@ -3246,7 +3993,7 @@ ul { border: 1px solid rgba(255,115,0,0.25); } -.\$activity-tl-badge--news { +.\$activity-tl-badge--news, .\$activity-tl-badge--review { background-color: rgba(129,199,132,0.1); color: var(--success); border: 1px solid rgba(129,199,132,0.25); @@ -3315,6 +4062,32 @@ ul { .activity-tl-thumb { display: none; } .activity-day-sep { padding-left: 44px; } .activity-tl-left { width: 44px; } + + .\$activity-tl-date { + font-size: 0.75rem; + } + + .\$activity-tl-content-title { + font-size: 0.9rem; + } +} + +@media (max-width: 768px) { + .\$activity-timeline { + padding-left: 50px; + } + + .\$activity-tl-left { + width: 40px; + } + + .\$activity-tl-header { + gap: 10px; + } + + .\$activity-tl-date { + font-size: 0.8rem; + } } .\$home-section { @@ -3526,10 +4299,54 @@ ul { .featured-entries-grid { grid-template-columns: repeat(2, 1fr); } } +@media (max-width: 768px) { + .\$news-strip { + grid-template-columns: repeat(2, 1fr); + gap: 15px; + } + + .\$featured-entries-grid { + grid-template-columns: 1fr; + gap: 15px; + } + + .\$home-section { + margin-bottom: 20px; + } + + .\$news-strip-cover { + height: 100px; + } + + .\$featured-entry-title { + font-size: 0.95rem; + } +} + @media (max-width: 600px) { - .news-strip { grid-template-columns: repeat(2, 1fr); } - .featured-entries-grid { grid-template-columns: repeat(2, 1fr); } + .news-strip { grid-template-columns: 1fr; } + .featured-entries-grid { grid-template-columns: 1fr; } .news-strip-cover { height: 80px; } + + .\$news-strip-item { + padding: 10px; + } + + .\$news-strip-title { + font-size: 0.85rem; + } + + .\$featured-entry-title { + font-size: 0.9rem; + } + + .\$featured-entry-meta { + font-size: 0.7rem; + } + + .\$home-section-title { + font-size: 0.95rem; + } } @@ -3589,6 +4406,155 @@ ul { } } +.\$topbar-more-container { + display: none; +} + +.\$topbar-more-menu { + position: fixed; + top: 60px; + right: 0; + background-color: var(--bg2); + border: 1px solid var(--border); + border-top: none; + border-right: none; + z-index: 2000; + min-width: 180px; + max-height: calc(100vh - 60px); + overflow-y: auto; +} + +.\$topbar-more-item { + display: flex; + align-items: center; + gap: 10px; + padding: 10px 12px; + color: var(--text2); + text-decoration: none; + font-size: 0.9rem; + border-bottom: 1px solid var(--border); + transition: all 0.15s; + + &:last-child { + border-bottom: none; + } + + &:hover { + background-color: var(--bg3); + color: var(--text); + } + + i { + width: 16px; + height: 16px; + flex-shrink: 0; + } + + span { + flex-grow: 1; + text-align: left; + } +} + +@media (min-width: 769px) { + .\$topbar-more-container { + display: none !important; + } + + .topbar-admin-btn, + .\$topbar-mod-btn { + display: flex !important; + } +} +@media (max-width: 768px) { + .\$topbar-more-container { + display: block; + } + + .topbar-admin-btn, + .\$topbar-mod-btn { + display: none !important; + } + + #topbar { + padding: 0 10px; + } + + .\$search-bar { + display: none !important; + } + + .\$topbar-actions { + gap: 8px !important; + } + + .\$topbar-actions .\$btn { + padding: 8px 6px; + font-size: 0.85rem; + display: flex; + align-items: center; + justify-content: center; + } + + .\$topbar-actions i { + width: 16px !important; + height: 16px !important; + } + + .\$topbar-badge { + font-size: 0.65rem; + width: 18px; + height: 18px; + } +} + +@media (max-width: 600px) { + #topbar { + padding: 0 8px; + } + + .\$topbar-actions { + gap: 8px !important; + } + + .\$topbar-actions .\$btn { + padding: 6px 4px; + font-size: 0.75rem; + display: flex; + align-items: center; + justify-content: center; + } + + .\$topbar-actions i { + width: 14px !important; + height: 14px !important; + } + + .\$topbar-badge { + font-size: 0.6rem; + width: 16px; + height: 16px; + } +} + +.\$search-scope-select { + background-color: var(--bg2); + border: none; + border-right: 1px solid var(--border); + color: var(--text2); + font-size: 0.8rem; + padding: 8px 10px; + cursor: pointer; + outline: none; + appearance: none; + transition: color 0.15s; +} + +.search-scope-select:hover, +.\$search-scope-select:focus { + color: var(--text); +} + #content { flex-grow: 1; padding: 30px; @@ -3869,36 +4835,6 @@ ul { color: var(--text); line-height: 1.5; word-wrap: break-word; - - p { - margin-bottom: 10px; - &:last-child { margin-bottom: 0; } - } - - a { - color: var(--rhpz-orange); - &:hover { - color: var(--rhpz-orange-hover); - text-decoration: underline; - } - } - - blockquote, .\$bbCodeBlock-blockquote { - background-color: var(--bg); - border-left: 3px solid var(--info); - padding: 12px 16px; - margin: 12px 0; - font-style: italic; - color: var(--text2); - } - - code { - font-family: monospace; - background-color: var(--bg3); - border: 1px solid var(--border); - padding: 2px 5px; - font-size: 0.9rem; - } } } } @@ -3983,6 +4919,245 @@ ul { } } +.\$markdown-body { + p { + margin-bottom: 10px; + &:last-child { margin-bottom: 0; } + } + + a { + color: var(--rhpz-orange); + &:hover { + color: var(--rhpz-orange-hover); + text-decoration: underline; + } + } + + blockquote, .\$bbCodeBlock-blockquote { + background-color: var(--bg); + border-left: 3px solid var(--info); + padding: 12px 16px; + margin: 12px 0; + font-style: italic; + color: var(--text2); + } + + code { + font-family: monospace; + background-color: var(--bg3); + border: 1px solid var(--border); + padding: 2px 5px; + font-size: 0.9rem; + } +} + +.markdown-body h1, .markdown-body h2, .markdown-body h3, +.\$markdown-body h4, .\$markdown-body h5, .\$markdown-body h6 { + color: var(--text); + font-weight: 600; + margin: 16px 0 8px; + line-height: 1.3; +} + +.markdown-body h1 { font-size: 1.4rem; } +.markdown-body h2 { font-size: 1.2rem; } +.markdown-body h3 { font-size: 1.05rem; } + +.markdown-body strong { color: var(--text); font-weight: 700; } +.markdown-body em { color: var(--text2); } + +.\$markdown-body ul, .\$markdown-body ol { + margin: 0 0 12px 20px; + color: var(--text); +} + +.markdown-body li { margin-bottom: 4px; line-height: 1.5; } + +.\$markdown-body hr { + border: none; + border-top: 1px solid var(--border); + margin: 16px 0; +} + +.\$markdown-body table { + width: 100%; + border-collapse: collapse; + margin: 12px 0; + font-size: 0.9rem; +} + +.\$markdown-body th, .\$markdown-body td { + border: 1px solid var(--border); + padding: 6px 10px; + text-align: left; +} + +.\$markdown-body th { + background-color: var(--bg3); + font-weight: 600; + color: var(--text); +} + +.\$markdown-body del { + color: var(--text2); + text-decoration: line-through; +} + +.\$markdown-body img { + max-width: 100%; + border: 1px solid var(--border); + margin: 8px 0; +} + +.\$hack-actions { + display: flex; + gap: 10px; +} + +@media (max-width: 768px) { + .\$entry-header { + flex-direction: column; + padding: 20px; + gap: 20px; + + .\$entry-cover { + width: 100%; + height: 280px; + max-width: 300px; + margin: 0 auto; + } + + .\$entry-info { + .\$entry-title { + font-size: 1.6rem; + } + + .\$entry-authors { + font-size: 0.95rem; + } + + .\$entry-meta-grid { + grid-template-columns: 1fr; + gap: 12px; + margin-bottom: 20px; + } + + .\$entry-actions { + flex-direction: column; + gap: 10px; + + .\$btn { + width: 100%; + } + } + } + } + + .\$entry-content { + padding: 20px; + + .\$entry-section-title { + font-size: 1.1rem; + } + + .\$entry-gallery { + grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); + gap: 12px; + margin-bottom: 20px; + } + } + + .\$comment-block { + gap: 12px; + padding: 15px 0; + + .\$comment-avatar { + width: 40px; + height: 40px; + } + + .\$comment-content { + .\$comment-body { + font-size: 0.9rem; + } + } + } + + .\$video-thumbnail-wrapper { + max-width: 100%; + } + + .\$gallery-modal-close { + top: 10px; + right: 15px; + font-size: 30px; + } + + .\$hack-actions { + flex-direction: column; + } +} + +@media (max-width: 600px) { + .\$entry-header { + padding: 15px; + gap: 15px; + + .\$entry-cover { + height: 240px; + } + + .\$entry-info { + .\$entry-title { + font-size: 1.3rem; + margin-bottom: 8px; + } + + .\$entry-authors { + font-size: 0.85rem; + margin-bottom: 15px; + } + + .\$entry-actions { + gap: 8px; + + .\$btn { + padding: 8px 12px; + font-size: 0.85rem; + } + } + } + } + + .\$entry-content { + padding: 15px; + + .\$entry-gallery { + grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); + gap: 8px; + margin-bottom: 15px; + } + } + + .\$comment-block { + padding: 10px 0; + + .\$comment-avatar { + width: 36px; + height: 36px; + } + } + + .markdown-body h1 { font-size: 1.15rem; } + .markdown-body h2 { font-size: 1rem; } + .markdown-body h3 { font-size: 0.95rem; } + + .\$hack-actions { + flex-direction: column; + } +} + + /* File: resources/css/layout/menu.css */ #menu { @@ -4201,6 +5376,21 @@ ul { color: var(--text); margin-bottom: 12px; text-shadow: 0 2px 4px rgba(0,0,0,0.6); + word-wrap: break-word; + overflow-wrap: break-word; + word-break: break-word; +} + +@media (max-width: 768px) { + .\$news-header .\$news-title { + font-size: 1.8rem; + } +} + +@media (max-width: 600px) { + .\$news-header .\$news-title { + font-size: 1.4rem; + } } .\$news-header .\$news-meta { @@ -4422,7 +5612,6 @@ ul { color: #e57373; } -/* ── Hero ────────────────────────────────────────────────── */ .\$news-hero { display: block; position: relative; @@ -4609,6 +5798,541 @@ ul { .news-grid { grid-template-columns: 1fr; } } +@media (max-width: 768px) { + + .\$news-header .\$news-meta { + gap: 12px; + font-size: 0.85rem; + } + + .\$news-layout { + flex-direction: column; + gap: 20px; + padding: 20px; + } + + .\$news-sidebar { + width: 100%; + } + + .\$news-content { + padding: 25px; + font-size: 1rem; + } + + .\$news-body-text { + font-size: 1rem; + } + + .\$sidebar-block { + padding: 15px; + } +} + +@media (max-width: 600px) { + .\$news-header .\$news-meta { + gap: 8px; + font-size: 0.8rem; + flex-wrap: wrap; + } + + .\$news-header .\$meta-item { + padding: 3px 8px; + font-size: 0.75rem; + } + + .\$news-layout { + gap: 15px; + padding: 15px; + } + + .\$news-main-content { + min-width: 0; + } + + .\$news-content { + padding: 15px; + font-size: 0.95rem; + } + + .\$news-body-text { + font-size: 0.95rem; + margin-bottom: 12px; + } + + .\$news-body-text p { + margin-bottom: 15px; + } + + .\$news-sidebar { + width: 100%; + gap: 15px; + } + + .\$sidebar-block { + padding: 12px; + } + + .\$sidebar-block h3 { + font-size: 0.95rem; + } + + .\$sidebar-block p { + font-size: 0.9rem; + } + + .\$news-card-title { + font-size: 0.9rem; + } +} + +@media (max-width: 420px) { + + .\$news-header .\$news-meta { + font-size: 0.75rem; + } + + .\$news-layout { + padding: 12px; + } + + .\$news-content { + padding: 12px; + } +} + + +/* File: resources/css/layout/responsive.css */ + +@media (max-width: 768px) { + :root { + --menu-size: 280px; + } + + #menu { + position: fixed; + left: 0; + top: 60px; + height: calc(100vh - 60px); + transform: translateX(-100%); + transition: transform 0.3s ease-in-out; + z-index: 999; + box-shadow: 2px 0 10px rgba(0, 0, 0, 0.5); + } + + #menu.mobile-open { + transform: translateX(0); + } + + #app.menu-open::before { + content: ''; + position: fixed; + top: 60px; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + z-index: 998; + } + + .\$mobile-toggle { + display: flex !important; + align-items: center; + justify-content: center; + width: 40px; + height: 40px; + padding: 0; + } + + #main-wrapper { + width: 100%; + } + + #content { + padding: 20px; + } + + #topbar { + padding: 0 10px; + gap: 10px; + } + + .\$search-bar { + width: 100%; + max-width: 250px; + } + + .\$search-scope-select { + font-size: 0.7rem; + padding: 6px 8px; + } + + .\$topbar-actions { + gap: 4px; + overflow-x: auto; + flex-shrink: 1; + } + + .\$topbar-actions .\$btn { + flex-shrink: 0; + padding: 6px 8px; + } + + .\$vertical-separator { + height: 30px; + } +} + +@media (max-width: 600px) { + :root { + --menu-size: 240px; + } + + #content { + padding: 15px; + } + + #topbar { + padding: 0 8px; + height: 55px; + } + + #topbar { + flex-wrap: wrap; + gap: 8px; + } + + .\$search-bar { + max-width: 100%; + order: 3; + width: 100%; + margin-top: 8px; + } + + .\$topbar-actions { + gap: 2px; + max-width: 100%; + } + + .\$topbar-actions .\$btn { + padding: 4px 6px; + font-size: 0.9rem; + } + + .\$search-scope-select { + display: none; + } + + .\$search-bar input { + padding: 4px; + font-size: 0.9rem; + } + + #menu { + width: 240px; + } + + .\$menu-title { + display: none; + } + + .\$menu-logo { + width: 40px; + height: 40px; + } + + .\$menu-header { + padding: 8px; + justify-content: center; + } + + .\$menu-user-info .\$username { + font-size: 0.9rem; + } +} + +@media (max-width: 420px) { + :root { + --menu-size: 200px; + } + + #content { + padding: 12px; + } + + #topbar { + padding: 0 6px; + height: 50px; + } + + .\$mobile-toggle { + width: 35px; + height: 35px; + } + + .\$topbar-actions .\$btn { + padding: 3px 4px; + font-size: 0.8rem; + } + + .\$vertical-separator { + display: none; + } + + .\$menu-item { + padding: 8px 12px; + font-size: 0.9rem; + } + + .\$menu-group-title { + padding: 0 12px; + font-size: 0.65rem; + } + + .\$menu-user-info { + display: none; + } +} + +@media (max-height: 500px) and (max-width: 768px) { + #topbar { + height: 50px; + } + + #content { + padding: 12px; + } + + .\$menu-header { + padding: 8px; + } +} + +@media (max-width: 1024px) and (min-width: 769px) { + :root { + --menu-size: 240px; + } + + #content { + padding: 25px; + } + + .\$search-bar { + width: 250px; + } +} + +@media (min-width: 769px) { + + #menu { + transform: translateX(0) !important; + position: relative !important; + top: auto !important; + height: auto !important; + box-shadow: none !important; + } + + + #app.menu-open::before { + display: none; + } + + + .\$mobile-toggle { + display: none !important; + } + + + #app { + display: flex; + } + + #main-wrapper { + width: calc(100% - var(--menu-size)); + flex-grow: 1; + } +} + + +@media (hover: none) and (pointer: coarse) { + + .btn, + .menu-item, + button { + min-height: 44px; + min-width: 44px; + } + + + .\$btn { + padding: 8px 12px; + } + + + .\$menu-item:hover { + background-color: var(--bg2); + } +} + + +/* File: resources/css/layout/reviews.css */ +.\$review-section-header { + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; + gap: 10px; + margin-bottom: 10px; +} + +.\$review-header-right { + display: flex; + align-items: center; + gap: 10px; +} + +.\$review-avg-badge { + display: inline-flex; + align-items: center; + gap: 5px; + font-size: 0.85rem; + font-weight: 600; + color: var(--rhpz-orange); + background-color: rgba(255,115,0,.1); + border: 1px solid rgba(255,115,0,.3); + padding: 4px 10px; +} + +.\$review-avg-badge--lg { + font-size: 1rem; + padding: 8px 16px; +} + +.\$review-avg-count { + color: var(--text2); + font-weight: 400; + font-size: 0.85rem; +} + +.\$star-rating-display { + display: inline-flex; + align-items: center; + gap: 1px; +} + +.star-rating-display .star-filled { color: var(--rhpz-orange); fill: var(--rhpz-orange); } +.star-rating-display .star-empty { color: var(--border); } + +.\$review-title { + font-size: 0.98rem; + font-weight: 700; + color: var(--text); + margin-bottom: 4px; +} + +.\$star-input { + display: flex; + gap: 4px; +} + +.star-input-icon.star-filled svg { color: var(--rhpz-orange); fill: var(--rhpz-orange); } +.star-input-icon.star-empty svg { color: var(--border); } + +.\$star-input-icon { + cursor: pointer; + transition: transform 0.1s; +} + +.\$star-input-icon:hover { + transform: scale(1.15); +} + +.\$reviews-page-header { + display: flex; + flex-direction: column; + gap: 10px; + margin-bottom: 25px; + padding-bottom: 20px; + border-bottom: 1px solid var(--border); +} + +.\$reviews-back-link { + display: inline-flex; + align-items: center; + gap: 6px; + font-size: 0.82rem; + color: var(--text2); + text-decoration: none; + width: fit-content; +} + +.reviews-back-link:hover { color: var(--rhpz-orange); } + +.\$reviews-page-title { + font-size: 1.4rem; + font-weight: 600; + color: var(--text); +} + +@media (max-width: 768px) { + .\$review-section-header { + gap: 8px; + margin-bottom: 8px; + } + + .\$review-header-right { + gap: 8px; + flex-wrap: wrap; + } + + .\$review-avg-badge { + font-size: 0.8rem; + padding: 3px 8px; + } + + .\$review-avg-badge--lg { + font-size: 0.95rem; + padding: 6px 12px; + } + + .\$reviews-page-header { + gap: 8px; + margin-bottom: 20px; + padding-bottom: 15px; + } + + .\$reviews-page-title { + font-size: 1.15rem; + } + + .\$review-title { + font-size: 0.9rem; + } +} + +@media (max-width: 600px) { + .\$review-avg-badge { + font-size: 0.75rem; + padding: 2px 6px; + } + + .\$reviews-page-title { + font-size: 1rem; + } + + .\$review-title { + font-size: 0.85rem; + } + + .\$star-rating-display { + gap: 0; + } + + .\$star-input { + gap: 3px; + } +} + /* File: resources/css/layout/submit.css */ .\$submit-hero { @@ -4902,11 +6626,62 @@ ul { .submit-rule:last-child { border-bottom: none; } } +@media (max-width: 768px) { + .\$submit-hero { + flex-direction: column; + gap: 20px; + padding: 25px 20px; + } + + .\$submit-grid { + grid-template-columns: 1fr; + gap: 15px; + } + + .\$submit-body { + padding: 25px 20px; + } + + .\$submit-rules { + gap: 0; + } + + .\$submit-rule { + padding: 15px; + } +} + @media (max-width: 600px) { - .submit-hero, .submit-body { padding-left: 20px; padding-right: 20px; } + .\$submit-hero, .\$submit-body { + padding-left: 15px; + padding-right: 15px; + } + .submit-grid { grid-template-columns: 1fr; } .submit-news-row { grid-template-columns: 1fr; } .submit-review-note { max-width: 100%; } + + .\$submit-hero { + gap: 15px; + padding: 15px; + } + + .\$submit-body { + padding: 15px; + } + + .\$submit-rule { + padding: 12px; + font-size: 0.9rem; + } + + .\$submit-hero-title { + font-size: 1.3rem; + } + + .\$submit-grid > * { + margin-bottom: 10px; + } } diff --git a/public/ZELDA.ips b/public/ZELDA.ips deleted file mode 100644 index 53748dae516c923f6728172506b2917947bee4fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1571 zcmZ9MU2NM_6vvO7Hl}Ifq$y2Y^5M|lZXgvF3Dl*nYj4nw3B(o&9`?3q>oTdJw$dI} zAk+nwzVM;((QSxIRNIOMk9x7# zNT90gD>bt=Gc@%5$Vjc0|KyrEJL}EE8;j7;-2>B~GS^y~`Gg<<8w?6KWJxR(EXxx6 z2HrWYE~EiHEnKR5DsLHEbx+mm$VcC8&CEcKt;=OcE{d7ACQVCGWO?fJZ<1jZ#>vIw!FN2=T4=nd!+{r4FJ=$nkV=~67`sc(6RTqT{2Z;HJOQA%3H}*CXet} z3zcg1s;=wvYj+C<4l^#^^!pnDSeB(}3r>6i8-YWxEwZIjsh~_ZP;b)~n}+G|TkteB z`ng~bJS@7v9>|KN$cijTQx7K~l?MH;ku6W30o^d}>4siT!8E!u(yCzqfFD?IG}%9S z0{bTnD%SRCS$G!Xvj0qq11SgrI0b-HfLpx=Jw`syUD+A>a4u& z@xW{dGW9M?PM7!C*}n3idp1@Hggf;@g;Y;1~AB$zz|0b6YSSr@}B9vwx2 z5BD%%XWrB_Q`5kup=tC7F2%g6s(BGy>LpFnN;UAwI?GV)% zP6L-BPY3#UnDlzRnpOapT4}YqTEhJfbM}}5m)g2%u26q2|EQU_ujAZd0RvHgE@@p@ zkzF4peSW+2_73SfjpuT*q!zrWcR6L}$%9MVJ+A+U>xE2+&K<6p<~ru1ImD+0I(L}Q z=V|HS(&XZqi3;}9;oJ#ex?%1V-t}I%aL&H+SH>VhI{D;Nq>F10_?{*s9kFoK&&A{L z*L_HN*zwV0>Au0-sgv(2vOHj4E`j4hAy3i+90&JbffW5%1bsd{|F9cBLPB#KkGvpo zY+JfZ>H?1WoY0WW7f%Ay%giOHJ=;O;xpr#Lw^I9MfZDH`sGVnQYd}kPZ#3A0|446? zxpWcQUfnN|VQHWA(jYk~lh>r-!G3137b76951J diff --git a/public/link.ips b/public/link.ips new file mode 100644 index 0000000000000000000000000000000000000000..5f5f532afcdcb34826e8bb99b77a09ca00e051f5 GIT binary patch literal 1434443 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ΝhQBc5V+ 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�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%0DjUpOx}wr(o}$ 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∾kcR)i)Zu2 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


)C@qXjM!BN^#%Ixs7ob>_^OmWfUra&b7u8Axv9 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%0ALeBzsjN!5)v?DO1lUlV)7AbMJ`Kcev*^ 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�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
@if($news->category_id) - + {{ $news->category->name }} @@ -131,7 +131,7 @@
@if( $news->description )
- {{ $news->description }} + {!! $news->description_html !!}
@endif @if( $news->gallery->isNotEmpty() ) @@ -156,7 +156,7 @@

U+l}x8Iln7JcbQg)Q)T=G%D}$;Jr_o+roXN@2 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 literal 0 HcmV?d00001 diff --git a/resources/css/app.css b/resources/css/app.css index ebd3d5b..fa6b501 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -7,6 +7,8 @@ @import './layout/news.css'; @import './layout/activity.css'; @import './layout/submit.css'; +@import './layout/reviews.css'; +@import './layout/responsive.css'; @import './components/common.css'; @import './components/grid.css'; diff --git a/resources/css/base/variables.css b/resources/css/base/variables.css index 5dd4727..2117b58 100644 --- a/resources/css/base/variables.css +++ b/resources/css/base/variables.css @@ -28,6 +28,9 @@ /* Menu settings */ --menu-size: 260px; --menu-user-avatar-bg: #555; + + /* Gap */ + --gap: 15px; } .light-mode { diff --git a/resources/css/components/cards.css b/resources/css/components/cards.css index ba5d9f9..ca2a285 100644 --- a/resources/css/components/cards.css +++ b/resources/css/components/cards.css @@ -29,6 +29,7 @@ background-color: var(--bg2); border: 1px solid var(--border); display: flex; + min-width: 0; flex-direction: column; transition: transform 0.2s, border-color 0.2s; cursor: pointer; @@ -41,6 +42,7 @@ .entry-cover-wrapper { position: relative; aspect-ratio: 4/3; + min-width: 0; background-color: var(--bg); border-bottom: 1px solid var(--border); display: flex; @@ -80,6 +82,7 @@ font-size: 1.1rem; margin-bottom: 5px; line-height: 1.3; + word-wrap: break-word; } .entry-card-author { @@ -97,3 +100,83 @@ align-items: center; } } + +@media (max-width: 1024px) { + .stats-grid { + grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); + gap: 15px; + margin-bottom: 25px; + } + + .stat-card { + padding: 15px; + gap: 12px; + } +} + +@media (max-width: 768px) { + .stats-grid { + grid-template-columns: repeat(2, 1fr); + gap: 12px; + margin-bottom: 20px; + } + + .stat-card { + padding: 12px; + gap: 10px; + font-size: 0.9rem; + } + + .stat-card i { + width: 28px; + height: 28px; + } + + .entry-card-info { + padding: 12px; + } + + .entry-card-title { + font-size: 0.95rem; + margin-bottom: 4px; + } + + .entry-card-author { + font-size: 0.8rem; + margin-bottom: 8px; + } + + .entry-card-meta { + font-size: 0.75rem; + } +} + +@media (max-width: 600px) { + .stats-grid { + grid-template-columns: 1fr; + gap: 10px; + margin-bottom: 15px; + } + + .stat-card { + padding: 10px; + flex-direction: row; + } + + .entry-card { + &:hover { + transform: none; + } + } + + .entry-card-title { + font-size: 0.9rem; + } + + .entry-badge { + top: 5px; + right: 5px; + padding: 3px 6px; + font-size: 0.65rem; + } +} diff --git a/resources/css/components/common.css b/resources/css/components/common.css index e4e392e..1669a08 100644 --- a/resources/css/components/common.css +++ b/resources/css/components/common.css @@ -146,6 +146,7 @@ .breadcrumb { margin-bottom: 15px; + flex-shrink: 0; } /* PAGE */ @@ -155,6 +156,7 @@ font-weight: 300; margin-bottom: 20px; color: var(--text); + flex-shrink: 0; } /* TEXTS */ @@ -193,3 +195,88 @@ border: none; cursor: pointer; } + +@media (max-width: 768px) { + .btn { + padding: 7px 12px; + font-size: 0.85rem; + gap: 6px; + } + + .block { + padding: 15px; + margin-bottom: 15px; + } + + .block-header { + font-size: 1.05rem; + margin-bottom: 12px; + padding-bottom: 8px; + } + + .page-title { + font-size: 1.5rem; + margin-bottom: 15px; + } + + .content-title { + margin: 20px 0 12px 0; + padding-left: 8px; + } + + .quote { + padding: 12px; + margin-top: 20px; + font-size: 0.95rem; + } + + .whisper { + margin-bottom: 12px; + font-size: 0.9rem; + } + + .breadcrumb { + font-size: 0.85rem; + } +} + +@media (max-width: 600px) { + .btn { + padding: 6px 10px; + font-size: 0.8rem; + gap: 4px; + justify-content: center; + } + + .btn.primary, .btn.danger, .btn.success { + width: 100%; + } + + .block { + padding: 12px; + margin-bottom: 12px; + } + + .block-header { + font-size: 0.95rem; + margin-bottom: 10px; + padding-bottom: 6px; + } + + .page-title { + font-size: 1.2rem; + margin-bottom: 12px; + } + + .badge { + padding: 2px 6px; + font-size: 0.7rem; + } + + .topbar-badge { + min-width: 16px; + height: 16px; + padding: 0 3px; + font-size: 0.6rem; + } +} diff --git a/resources/css/components/database.css b/resources/css/components/database.css index c406ad6..905cb07 100644 --- a/resources/css/components/database.css +++ b/resources/css/components/database.css @@ -259,6 +259,10 @@ flex-direction: column; } + .database-wrapper { + flex-direction: column; + } + .database-filters { width: 100%; display: grid; @@ -275,19 +279,63 @@ } } +@media (max-width: 768px) { + .database-search { + gap: 8px; + margin-bottom: 15px; + flex-wrap: wrap; + } + + .database-wrapper { + flex-direction: column; + gap: 15px; + } + + .database-filters { + width: 100%; + grid-template-columns: 1fr; + order: -1; + margin-bottom: 10px; + } + + .database-filter-group { + padding: 12px 0; + } + + .grid-entries { + grid-template-columns: repeat(3, 1fr); + gap: 15px; + } +} + @media (max-width: 600px) { + .database-search { + flex-direction: column; + } + .database-filters { grid-template-columns: 1fr; } .grid-entries { grid-template-columns: repeat(2, 1fr); + gap: 12px; + } + + .database-filter-group { + padding: 10px 0; } } @media (max-width: 420px) { .grid-entries { grid-template-columns: 1fr; + gap: 10px; + } + + .database-search input { + font-size: 0.85rem; + padding: 6px 8px; } } diff --git a/resources/css/components/drafts.css b/resources/css/components/drafts.css index d2ce20d..2898644 100644 --- a/resources/css/components/drafts.css +++ b/resources/css/components/drafts.css @@ -93,7 +93,7 @@ font-weight: 600; color: var(--text); margin-bottom: 6px; - white-space: nowrap; + white-space: normal; overflow: hidden; text-overflow: ellipsis; } @@ -158,3 +158,103 @@ white-space: nowrap; } } + +@media (max-width: 768px) { + .drafts-count { + font-size: 0.8rem; + margin-bottom: 12px; + padding-bottom: 8px; + } + + .drafts-item { + gap: 15px; + padding: 15px; + } + + .drafts-cover { + width: 70px; + height: 70px; + } + + .drafts-top { + gap: 12px; + } + + .drafts-title { + font-size: 0.95rem; + } + + .drafts-meta { + font-size: 0.8rem; + } + + .drafts-actions { + gap: 6px; + } + + .drafts-actions .btn { + padding: 6px 10px; + font-size: 0.8rem; + } +} + +@media (max-width: 600px) { + .drafts-empty { + padding: 60px 15px; + gap: 12px; + } + + .drafts-empty h3 { + font-size: 1rem; + } + + .drafts-empty p { + font-size: 0.85rem; + } + + .drafts-item { + flex-direction: column; + gap: 12px; + padding: 12px; + } + + .drafts-cover { + width: 100%; + height: 150px; + } + + .drafts-top { + flex-direction: column; + gap: 10px; + } + + .drafts-title { + font-size: 0.9rem; + } + + .drafts-meta { + font-size: 0.75rem; + } + + .drafts-progress { + flex-direction: column; + gap: 8px; + } + + .drafts-progress-bar { + width: 100%; + } + + .drafts-actions { + flex-direction: row; + gap: 6px; + flex-wrap: wrap; + } + + .drafts-actions .btn { + flex: 1; + min-width: 80px; + padding: 5px 8px; + font-size: 0.75rem; + } +} diff --git a/resources/css/components/forms.css b/resources/css/components/forms.css index 94156bd..4f75308 100644 --- a/resources/css/components/forms.css +++ b/resources/css/components/forms.css @@ -508,6 +508,17 @@ flex-direction: row; gap: 15px; } + +@media (max-width: 600px) { + .upload-item-actions { + flex-direction: column; + gap: 8px; + } + + .upload-item-actions .btn { + width: 100%; + } +} .file-state-icon { width: 18px; height: 18px; } .file-state-icon--public { color: var(--success); } .file-state-icon--private { color: var(--text2); } @@ -613,3 +624,86 @@ .game-selector-platform-only { grid-column: span 1; } + +@media (max-width: 768px) { + .form-group.level { + padding: 20px; + margin-bottom: 25px; + } + + .form-group-title { + font-size: 1rem; + margin-bottom: 15px; + padding-bottom: 8px; + } + + .form-group label, .form-label { + margin-bottom: 6px; + font-size: 0.9rem; + } + + .form-input, .form-select, .form-textarea, .form-field { + padding: 8px 10px; + font-size: 0.9rem; + } + + .form-textarea { + min-height: 100px; + } + + .game-selector-mode { + flex-direction: column; + gap: 0; + } + + .game-selector-mode-btn { + padding: 10px 12px; + border-right: none; + border-bottom: 1px solid var(--border); + } + + .game-selector-mode-btn:last-child { + border-bottom: none; + } + + .submit, .submit-level, .main-image-grid { + flex-direction: column; + } + + .grid-hashes { + grid-template-columns: 1fr; + } + + .hash-first { + display: none; + } +} + +@media (max-width: 600px) { + .form-group { + margin-bottom: 15px; + } + + .form-group.level { + padding: 15px; + margin-bottom: 20px; + } + + .form-group-title { + font-size: 0.95rem; + margin-bottom: 12px; + } + + .form-group label, .form-label { + font-size: 0.85rem; + } + + .form-input, .form-select, .form-textarea, .form-field { + padding: 6px 8px; + font-size: 0.85rem; + } + + .form-error-text { + font-size: 0.8rem; + } +} diff --git a/resources/css/components/hovercard.css b/resources/css/components/hovercard.css index 5260bc8..54d8b24 100644 --- a/resources/css/components/hovercard.css +++ b/resources/css/components/hovercard.css @@ -1,9 +1,10 @@ .hovercard-overlay { - position: absolute; - z-index: 2000; + position: fixed; + z-index: 3500; background-color: var(--bg2); border: 1px solid var(--border); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5); + pointer-events: auto; } .hovercard-overlay-loading { @@ -117,3 +118,35 @@ justify-content: center; font-size: 0.82rem; } + +@media (max-width: 768px) { + .hovercard { + width: 260px; + } + + .hovercard-actions { + gap: 6px; + } + + .hovercard-actions .btn { + font-size: 0.75rem; + padding: 6px 8px; + } +} + +@media (max-width: 600px) { + .hovercard { + width: calc(100vw - 40px); + max-width: 280px; + } + + .hovercard-actions { + flex-direction: column; + gap: 6px; + } + + .hovercard-actions .btn { + width: 100%; + justify-content: center; + } +} diff --git a/resources/css/components/modcp.css b/resources/css/components/modcp.css index cafe51f..2c5912b 100644 --- a/resources/css/components/modcp.css +++ b/resources/css/components/modcp.css @@ -547,3 +547,128 @@ padding: 14px 0 4px; border-top: 1px solid var(--border); } + +@media (max-width: 1024px) { + .modcp-wrapper { + min-height: auto; + } + + .modcp-sidebar { + width: 200px; + margin-right: 10px; + } + + .modcp-content { + padding: 20px; + } + + .modcp-page-title { + font-size: 1.15rem; + } +} + +@media (max-width: 768px) { + .modcp-wrapper { + flex-direction: column; + gap: 0; + } + + .modcp-sidebar { + width: 100%; + flex-shrink: 1; + position: relative; + top: auto; + align-self: auto; + margin-right: 0; + margin-bottom: 15px; + border: 1px solid var(--border); + max-height: 300px; + overflow-y: auto; + } + + .modcp-sidebar-header { + padding: 12px 14px; + font-size: 0.8rem; + } + + .modcp-nav-label { + padding: 6px 14px 3px; + font-size: 0.65rem; + } + + .modcp-nav-item { + padding: 6px 14px; + font-size: 0.8rem; + gap: 8px; + } + + .modcp-content { + padding: 15px; + } + + .modcp-page-title { + font-size: 1rem; + margin-bottom: 12px; + } + + .modcp-page-actions { + flex-direction: row; + gap: 8px; + } + + .modcp-table { + font-size: 0.85rem; + } + + .modcp-table th, .modcp-table td { + padding: 8px; + } + + .modcp-table tbody tr { + height: auto; + } +} + +@media (max-width: 600px) { + .modcp-sidebar { + max-height: 200px; + } + + .modcp-sidebar-header { + padding: 10px 12px; + font-size: 0.75rem; + } + + .modcp-nav-item { + padding: 5px 12px; + font-size: 0.75rem; + } + + .modcp-content { + padding: 12px; + } + + .modcp-page-title { + font-size: 0.95rem; + } + + .modcp-table { + font-size: 0.8rem; + overflow-x: auto; + display: block; + } + + .modcp-table th, .modcp-table td { + padding: 6px; + } + + .log-diff-key { + width: auto; + white-space: normal; + } + + .log-raw { + font-size: 0.7rem; + padding: 8px 10px; + } +} diff --git a/resources/css/components/notifications.css b/resources/css/components/notifications.css index 728141c..58d093b 100644 --- a/resources/css/components/notifications.css +++ b/resources/css/components/notifications.css @@ -21,6 +21,28 @@ } } +@media (max-width: 768px) { + .notifications, .conversations { + position: fixed; + width: calc(100% - 30px); + max-width: 340px; + right: 15px; + top: auto; + bottom: 15px; + max-height: calc(100vh - 130px); + z-index: 3000 !important; + } +} + +@media (max-width: 600px) { + .notifications, .conversations { + width: calc(100% - 20px); + right: 10px; + bottom: 10px; + max-width: 100%; + } +} + @keyframes dropdown-enter { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: translateY(0); } diff --git a/resources/css/components/queue.css b/resources/css/components/queue.css index 5848bc0..1496ecf 100644 --- a/resources/css/components/queue.css +++ b/resources/css/components/queue.css @@ -185,3 +185,82 @@ border: 1px solid var(--border); } +@media (max-width: 768px) { + .queue-item { + padding: 15px; + margin-bottom: 15px; + } + + .queue-item-header { + flex-direction: column; + gap: 12px; + } + + .queue-item-title { + font-size: 1rem; + } + + .queue-item-meta { + font-size: 0.8rem; + } + + .queue-item-actions-header { + gap: 6px; + flex-wrap: wrap; + width: 100%; + } + + .timeline { + font-size: 0.85rem; + } + + .timeline-container { + padding: 12px 15px; + } + + .queue-mod-actions { + flex-direction: column; + gap: 6px; + } +} + +@media (max-width: 600px) { + .queue-empty { + padding: 60px 15px; + font-size: 0.9rem; + } + + .queue-item { + padding: 12px; + border-left-width: 3px; + } + + .queue-item-title { + font-size: 0.95rem; + } + + .queue-item-meta { + font-size: 0.75rem; + } + + .queue-item-actions-header { + width: 100%; + } + + .timeline { + font-size: 0.8rem; + } + + .timeline-container { + padding: 10px 12px; + } + + .queue-mod-actions { + flex-direction: column; + } + + .queue-mod-actions .btn { + width: 100%; + } +} + diff --git a/resources/css/components/settings.css b/resources/css/components/settings.css index 19cf473..f20fcda 100644 --- a/resources/css/components/settings.css +++ b/resources/css/components/settings.css @@ -9,6 +9,29 @@ z-index: 2000; } +@media (max-width: 768px) { + .settings-dropdown { + position: fixed; + width: calc(100% - 30px); + max-width: 240px; + right: 15px; + top: auto; + bottom: 15px; + max-height: calc(100vh - 130px); + overflow-y: auto; + z-index: 3000 !important; + } +} + +@media (max-width: 600px) { + .settings-dropdown { + width: calc(100% - 20px); + right: 10px; + bottom: 10px; + max-width: 100%; + } +} + .settings-header { padding: 12px 16px; border-bottom: 1px solid var(--border); diff --git a/resources/css/components/tools.css b/resources/css/components/tools.css index 2ad0697..a3c762b 100644 --- a/resources/css/components/tools.css +++ b/resources/css/components/tools.css @@ -15,6 +15,62 @@ .patcher-grid { grid-template-columns: 1fr; } + + .patcher-container { + padding: 20px; + } + + .patcher-dropzone { + padding: 40px 15px; + gap: 12px; + } + + .embed-patch-box { + padding: 20px; + height: auto; + } + + .embed-patch-box-icon { + gap: 12px; + } + + .embed-patch-box-icon-block { + width: 40px; + height: 40px; + } +} + +@media (max-width: 600px) { + .patcher-container { + padding: 15px; + margin-bottom: 15px; + } + + .patcher-grid { + gap: 15px; + } + + .patcher-dropzone { + padding: 30px 12px; + gap: 10px; + font-size: 0.9rem; + } + + .patcher-status-box { + margin-top: 15px; + padding: 12px; + font-size: 0.9rem; + } + + .embed-patch-box { + padding: 15px; + gap: 12px; + } + + .btn:disabled { + padding: 6px 8px; + font-size: 0.8rem; + } } .patcher-dropzone { diff --git a/resources/css/layout/activity.css b/resources/css/layout/activity.css index 34e71cf..54d7b07 100644 --- a/resources/css/layout/activity.css +++ b/resources/css/layout/activity.css @@ -112,7 +112,7 @@ color: var(--rhpz-orange); } -.activity-tl-dot--news { +.activity-tl-dot--news, .activity-tl-dot--review { background-color: rgba(129,199,132,0.1); border-color: rgba(129,199,132,0.4); color: var(--success); @@ -198,7 +198,7 @@ border: 1px solid rgba(255,115,0,0.25); } -.activity-tl-badge--news { +.activity-tl-badge--news, .activity-tl-badge--review { background-color: rgba(129,199,132,0.1); color: var(--success); border: 1px solid rgba(129,199,132,0.25); @@ -267,6 +267,32 @@ .activity-tl-thumb { display: none; } .activity-day-sep { padding-left: 44px; } .activity-tl-left { width: 44px; } + + .activity-tl-date { + font-size: 0.75rem; + } + + .activity-tl-content-title { + font-size: 0.9rem; + } +} + +@media (max-width: 768px) { + .activity-timeline { + padding-left: 50px; + } + + .activity-tl-left { + width: 40px; + } + + .activity-tl-header { + gap: 10px; + } + + .activity-tl-date { + font-size: 0.8rem; + } } .home-section { @@ -478,8 +504,52 @@ .featured-entries-grid { grid-template-columns: repeat(2, 1fr); } } -@media (max-width: 600px) { - .news-strip { grid-template-columns: repeat(2, 1fr); } - .featured-entries-grid { grid-template-columns: repeat(2, 1fr); } - .news-strip-cover { height: 80px; } +@media (max-width: 768px) { + .news-strip { + grid-template-columns: repeat(2, 1fr); + gap: 15px; + } + + .featured-entries-grid { + grid-template-columns: 1fr; + gap: 15px; + } + + .home-section { + margin-bottom: 20px; + } + + .news-strip-cover { + height: 100px; + } + + .featured-entry-title { + font-size: 0.95rem; + } +} + +@media (max-width: 600px) { + .news-strip { grid-template-columns: 1fr; } + .featured-entries-grid { grid-template-columns: 1fr; } + .news-strip-cover { height: 80px; } + + .news-strip-item { + padding: 10px; + } + + .news-strip-title { + font-size: 0.85rem; + } + + .featured-entry-title { + font-size: 0.9rem; + } + + .featured-entry-meta { + font-size: 0.7rem; + } + + .home-section-title { + font-size: 0.95rem; + } } diff --git a/resources/css/layout/content.css b/resources/css/layout/content.css index d13c635..f4dbf3f 100644 --- a/resources/css/layout/content.css +++ b/resources/css/layout/content.css @@ -53,6 +53,155 @@ } } +.topbar-more-container { + display: none; +} + +.topbar-more-menu { + position: fixed; + top: 60px; + right: 0; + background-color: var(--bg2); + border: 1px solid var(--border); + border-top: none; + border-right: none; + z-index: 2000; + min-width: 180px; + max-height: calc(100vh - 60px); + overflow-y: auto; +} + +.topbar-more-item { + display: flex; + align-items: center; + gap: 10px; + padding: 10px 12px; + color: var(--text2); + text-decoration: none; + font-size: 0.9rem; + border-bottom: 1px solid var(--border); + transition: all 0.15s; + + &:last-child { + border-bottom: none; + } + + &:hover { + background-color: var(--bg3); + color: var(--text); + } + + i { + width: 16px; + height: 16px; + flex-shrink: 0; + } + + span { + flex-grow: 1; + text-align: left; + } +} + +@media (min-width: 769px) { + .topbar-more-container { + display: none !important; + } + + .topbar-admin-btn, + .topbar-mod-btn { + display: flex !important; + } +} +@media (max-width: 768px) { + .topbar-more-container { + display: block; + } + + .topbar-admin-btn, + .topbar-mod-btn { + display: none !important; + } + + #topbar { + padding: 0 10px; + } + + .search-bar { + display: none !important; + } + + .topbar-actions { + gap: 8px !important; + } + + .topbar-actions .btn { + padding: 8px 6px; + font-size: 0.85rem; + display: flex; + align-items: center; + justify-content: center; + } + + .topbar-actions i { + width: 16px !important; + height: 16px !important; + } + + .topbar-badge { + font-size: 0.65rem; + width: 18px; + height: 18px; + } +} + +@media (max-width: 600px) { + #topbar { + padding: 0 8px; + } + + .topbar-actions { + gap: 8px !important; + } + + .topbar-actions .btn { + padding: 6px 4px; + font-size: 0.75rem; + display: flex; + align-items: center; + justify-content: center; + } + + .topbar-actions i { + width: 14px !important; + height: 14px !important; + } + + .topbar-badge { + font-size: 0.6rem; + width: 16px; + height: 16px; + } +} + +.search-scope-select { + background-color: var(--bg2); + border: none; + border-right: 1px solid var(--border); + color: var(--text2); + font-size: 0.8rem; + padding: 8px 10px; + cursor: pointer; + outline: none; + appearance: none; + transition: color 0.15s; +} + +.search-scope-select:hover, +.search-scope-select:focus { + color: var(--text); +} + #content { flex-grow: 1; padding: 30px; diff --git a/resources/css/layout/entry.css b/resources/css/layout/entry.css index 958262f..56db6c4 100644 --- a/resources/css/layout/entry.css +++ b/resources/css/layout/entry.css @@ -268,36 +268,6 @@ color: var(--text); line-height: 1.5; word-wrap: break-word; - - p { - margin-bottom: 10px; - &:last-child { margin-bottom: 0; } - } - - a { - color: var(--rhpz-orange); - &:hover { - color: var(--rhpz-orange-hover); - text-decoration: underline; - } - } - - blockquote, .bbCodeBlock-blockquote { - background-color: var(--bg); - border-left: 3px solid var(--info); - padding: 12px 16px; - margin: 12px 0; - font-style: italic; - color: var(--text2); - } - - code { - font-family: monospace; - background-color: var(--bg3); - border: 1px solid var(--border); - padding: 2px 5px; - font-size: 0.9rem; - } } } } @@ -381,3 +351,242 @@ margin-right: 4px; } } + +.markdown-body { + p { + margin-bottom: 10px; + &:last-child { margin-bottom: 0; } + } + + a { + color: var(--rhpz-orange); + &:hover { + color: var(--rhpz-orange-hover); + text-decoration: underline; + } + } + + blockquote, .bbCodeBlock-blockquote { + background-color: var(--bg); + border-left: 3px solid var(--info); + padding: 12px 16px; + margin: 12px 0; + font-style: italic; + color: var(--text2); + } + + code { + font-family: monospace; + background-color: var(--bg3); + border: 1px solid var(--border); + padding: 2px 5px; + font-size: 0.9rem; + } +} + +.markdown-body h1, .markdown-body h2, .markdown-body h3, +.markdown-body h4, .markdown-body h5, .markdown-body h6 { + color: var(--text); + font-weight: 600; + margin: 16px 0 8px; + line-height: 1.3; +} + +.markdown-body h1 { font-size: 1.4rem; } +.markdown-body h2 { font-size: 1.2rem; } +.markdown-body h3 { font-size: 1.05rem; } + +.markdown-body strong { color: var(--text); font-weight: 700; } +.markdown-body em { color: var(--text2); } + +.markdown-body ul, .markdown-body ol { + margin: 0 0 12px 20px; + color: var(--text); +} + +.markdown-body li { margin-bottom: 4px; line-height: 1.5; } + +.markdown-body hr { + border: none; + border-top: 1px solid var(--border); + margin: 16px 0; +} + +.markdown-body table { + width: 100%; + border-collapse: collapse; + margin: 12px 0; + font-size: 0.9rem; +} + +.markdown-body th, .markdown-body td { + border: 1px solid var(--border); + padding: 6px 10px; + text-align: left; +} + +.markdown-body th { + background-color: var(--bg3); + font-weight: 600; + color: var(--text); +} + +.markdown-body del { + color: var(--text2); + text-decoration: line-through; +} + +.markdown-body img { + max-width: 100%; + border: 1px solid var(--border); + margin: 8px 0; +} + +.hack-actions { + display: flex; + gap: 10px; +} + +@media (max-width: 768px) { + .entry-header { + flex-direction: column; + padding: 20px; + gap: 20px; + + .entry-cover { + width: 100%; + height: 280px; + max-width: 300px; + margin: 0 auto; + } + + .entry-info { + .entry-title { + font-size: 1.6rem; + } + + .entry-authors { + font-size: 0.95rem; + } + + .entry-meta-grid { + grid-template-columns: 1fr; + gap: 12px; + margin-bottom: 20px; + } + + .entry-actions { + flex-direction: column; + gap: 10px; + + .btn { + width: 100%; + } + } + } + } + + .entry-content { + padding: 20px; + + .entry-section-title { + font-size: 1.1rem; + } + + .entry-gallery { + grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); + gap: 12px; + margin-bottom: 20px; + } + } + + .comment-block { + gap: 12px; + padding: 15px 0; + + .comment-avatar { + width: 40px; + height: 40px; + } + + .comment-content { + .comment-body { + font-size: 0.9rem; + } + } + } + + .video-thumbnail-wrapper { + max-width: 100%; + } + + .gallery-modal-close { + top: 10px; + right: 15px; + font-size: 30px; + } + + .hack-actions { + flex-direction: column; + } +} + +@media (max-width: 600px) { + .entry-header { + padding: 15px; + gap: 15px; + + .entry-cover { + height: 240px; + } + + .entry-info { + .entry-title { + font-size: 1.3rem; + margin-bottom: 8px; + } + + .entry-authors { + font-size: 0.85rem; + margin-bottom: 15px; + } + + .entry-actions { + gap: 8px; + + .btn { + padding: 8px 12px; + font-size: 0.85rem; + } + } + } + } + + .entry-content { + padding: 15px; + + .entry-gallery { + grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); + gap: 8px; + margin-bottom: 15px; + } + } + + .comment-block { + padding: 10px 0; + + .comment-avatar { + width: 36px; + height: 36px; + } + } + + .markdown-body h1 { font-size: 1.15rem; } + .markdown-body h2 { font-size: 1rem; } + .markdown-body h3 { font-size: 0.95rem; } + + .hack-actions { + flex-direction: column; + } +} + diff --git a/resources/css/layout/news.css b/resources/css/layout/news.css index e5159e1..f1a7b19 100644 --- a/resources/css/layout/news.css +++ b/resources/css/layout/news.css @@ -77,6 +77,21 @@ color: var(--text); margin-bottom: 12px; text-shadow: 0 2px 4px rgba(0,0,0,0.6); + word-wrap: break-word; + overflow-wrap: break-word; + word-break: break-word; +} + +@media (max-width: 768px) { + .news-header .news-title { + font-size: 1.8rem; + } +} + +@media (max-width: 600px) { + .news-header .news-title { + font-size: 1.4rem; + } } .news-header .news-meta { @@ -298,7 +313,6 @@ color: #e57373; } -/* ── Hero ────────────────────────────────────────────────── */ .news-hero { display: block; position: relative; @@ -484,3 +498,106 @@ .news-hero-title { font-size: 1.4rem; } .news-grid { grid-template-columns: 1fr; } } + +@media (max-width: 768px) { + + .news-header .news-meta { + gap: 12px; + font-size: 0.85rem; + } + + .news-layout { + flex-direction: column; + gap: 20px; + padding: 20px; + } + + .news-sidebar { + width: 100%; + } + + .news-content { + padding: 25px; + font-size: 1rem; + } + + .news-body-text { + font-size: 1rem; + } + + .sidebar-block { + padding: 15px; + } +} + +@media (max-width: 600px) { + .news-header .news-meta { + gap: 8px; + font-size: 0.8rem; + flex-wrap: wrap; + } + + .news-header .meta-item { + padding: 3px 8px; + font-size: 0.75rem; + } + + .news-layout { + gap: 15px; + padding: 15px; + } + + .news-main-content { + min-width: 0; + } + + .news-content { + padding: 15px; + font-size: 0.95rem; + } + + .news-body-text { + font-size: 0.95rem; + margin-bottom: 12px; + } + + .news-body-text p { + margin-bottom: 15px; + } + + .news-sidebar { + width: 100%; + gap: 15px; + } + + .sidebar-block { + padding: 12px; + } + + .sidebar-block h3 { + font-size: 0.95rem; + } + + .sidebar-block p { + font-size: 0.9rem; + } + + .news-card-title { + font-size: 0.9rem; + } +} + +@media (max-width: 420px) { + + .news-header .news-meta { + font-size: 0.75rem; + } + + .news-layout { + padding: 12px; + } + + .news-content { + padding: 12px; + } +} diff --git a/resources/css/layout/responsive.css b/resources/css/layout/responsive.css new file mode 100644 index 0000000..56e3287 --- /dev/null +++ b/resources/css/layout/responsive.css @@ -0,0 +1,270 @@ + +@media (max-width: 768px) { + :root { + --menu-size: 280px; + } + + #menu { + position: fixed; + left: 0; + top: 60px; + height: calc(100vh - 60px); + transform: translateX(-100%); + transition: transform 0.3s ease-in-out; + z-index: 999; + box-shadow: 2px 0 10px rgba(0, 0, 0, 0.5); + } + + #menu.mobile-open { + transform: translateX(0); + } + + #app.menu-open::before { + content: ''; + position: fixed; + top: 60px; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + z-index: 998; + } + + .mobile-toggle { + display: flex !important; + align-items: center; + justify-content: center; + width: 40px; + height: 40px; + padding: 0; + } + + #main-wrapper { + width: 100%; + } + + #content { + padding: 20px; + } + + #topbar { + padding: 0 10px; + gap: 10px; + } + + .search-bar { + width: 100%; + max-width: 250px; + } + + .search-scope-select { + font-size: 0.7rem; + padding: 6px 8px; + } + + .topbar-actions { + gap: 4px; + overflow-x: auto; + flex-shrink: 1; + } + + .topbar-actions .btn { + flex-shrink: 0; + padding: 6px 8px; + } + + .vertical-separator { + height: 30px; + } +} + +@media (max-width: 600px) { + :root { + --menu-size: 240px; + } + + #content { + padding: 15px; + } + + #topbar { + padding: 0 8px; + height: 55px; + } + + #topbar { + flex-wrap: wrap; + gap: 8px; + } + + .search-bar { + max-width: 100%; + order: 3; + width: 100%; + margin-top: 8px; + } + + .topbar-actions { + gap: 2px; + max-width: 100%; + } + + .topbar-actions .btn { + padding: 4px 6px; + font-size: 0.9rem; + } + + .search-scope-select { + display: none; + } + + .search-bar input { + padding: 4px; + font-size: 0.9rem; + } + + #menu { + width: 240px; + } + + .menu-title { + display: none; + } + + .menu-logo { + width: 40px; + height: 40px; + } + + .menu-header { + padding: 8px; + justify-content: center; + } + + .menu-user-info .username { + font-size: 0.9rem; + } +} + +@media (max-width: 420px) { + :root { + --menu-size: 200px; + } + + #content { + padding: 12px; + } + + #topbar { + padding: 0 6px; + height: 50px; + } + + .mobile-toggle { + width: 35px; + height: 35px; + } + + .topbar-actions .btn { + padding: 3px 4px; + font-size: 0.8rem; + } + + .vertical-separator { + display: none; + } + + .menu-item { + padding: 8px 12px; + font-size: 0.9rem; + } + + .menu-group-title { + padding: 0 12px; + font-size: 0.65rem; + } + + .menu-user-info { + display: none; + } +} + +@media (max-height: 500px) and (max-width: 768px) { + #topbar { + height: 50px; + } + + #content { + padding: 12px; + } + + .menu-header { + padding: 8px; + } +} + +@media (max-width: 1024px) and (min-width: 769px) { + :root { + --menu-size: 240px; + } + + #content { + padding: 25px; + } + + .search-bar { + width: 250px; + } +} + +@media (min-width: 769px) { + + #menu { + transform: translateX(0) !important; + position: relative !important; + top: auto !important; + height: auto !important; + box-shadow: none !important; + } + + + #app.menu-open::before { + display: none; + } + + + .mobile-toggle { + display: none !important; + } + + + #app { + display: flex; + } + + #main-wrapper { + width: calc(100% - var(--menu-size)); + flex-grow: 1; + } +} + + +@media (hover: none) and (pointer: coarse) { + + .btn, + .menu-item, + button { + min-height: 44px; + min-width: 44px; + } + + + .btn { + padding: 8px 12px; + } + + + .menu-item:hover { + background-color: var(--bg2); + } +} diff --git a/resources/css/layout/reviews.css b/resources/css/layout/reviews.css new file mode 100644 index 0000000..2d80836 --- /dev/null +++ b/resources/css/layout/reviews.css @@ -0,0 +1,156 @@ +.review-section-header { + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; + gap: 10px; + margin-bottom: 10px; +} + +.review-header-right { + display: flex; + align-items: center; + gap: 10px; +} + +.review-avg-badge { + display: inline-flex; + align-items: center; + gap: 5px; + font-size: 0.85rem; + font-weight: 600; + color: var(--rhpz-orange); + background-color: rgba(255,115,0,.1); + border: 1px solid rgba(255,115,0,.3); + padding: 4px 10px; +} + +.review-avg-badge--lg { + font-size: 1rem; + padding: 8px 16px; +} + +.review-avg-count { + color: var(--text2); + font-weight: 400; + font-size: 0.85rem; +} + +.star-rating-display { + display: inline-flex; + align-items: center; + gap: 1px; +} + +.star-rating-display .star-filled { color: var(--rhpz-orange); fill: var(--rhpz-orange); } +.star-rating-display .star-empty { color: var(--border); } + +.review-title { + font-size: 0.98rem; + font-weight: 700; + color: var(--text); + margin-bottom: 4px; +} + +.star-input { + display: flex; + gap: 4px; +} + +.star-input-icon.star-filled svg { color: var(--rhpz-orange); fill: var(--rhpz-orange); } +.star-input-icon.star-empty svg { color: var(--border); } + +.star-input-icon { + cursor: pointer; + transition: transform 0.1s; +} + +.star-input-icon:hover { + transform: scale(1.15); +} + +.reviews-page-header { + display: flex; + flex-direction: column; + gap: 10px; + margin-bottom: 25px; + padding-bottom: 20px; + border-bottom: 1px solid var(--border); +} + +.reviews-back-link { + display: inline-flex; + align-items: center; + gap: 6px; + font-size: 0.82rem; + color: var(--text2); + text-decoration: none; + width: fit-content; +} + +.reviews-back-link:hover { color: var(--rhpz-orange); } + +.reviews-page-title { + font-size: 1.4rem; + font-weight: 600; + color: var(--text); +} + +@media (max-width: 768px) { + .review-section-header { + gap: 8px; + margin-bottom: 8px; + } + + .review-header-right { + gap: 8px; + flex-wrap: wrap; + } + + .review-avg-badge { + font-size: 0.8rem; + padding: 3px 8px; + } + + .review-avg-badge--lg { + font-size: 0.95rem; + padding: 6px 12px; + } + + .reviews-page-header { + gap: 8px; + margin-bottom: 20px; + padding-bottom: 15px; + } + + .reviews-page-title { + font-size: 1.15rem; + } + + .review-title { + font-size: 0.9rem; + } +} + +@media (max-width: 600px) { + .review-avg-badge { + font-size: 0.75rem; + padding: 2px 6px; + } + + .reviews-page-title { + font-size: 1rem; + } + + .review-title { + font-size: 0.85rem; + } + + .star-rating-display { + gap: 0; + } + + .star-input { + gap: 3px; + } +} diff --git a/resources/css/layout/submit.css b/resources/css/layout/submit.css index 92c22bf..5c251da 100644 --- a/resources/css/layout/submit.css +++ b/resources/css/layout/submit.css @@ -289,9 +289,60 @@ .submit-rule:last-child { border-bottom: none; } } +@media (max-width: 768px) { + .submit-hero { + flex-direction: column; + gap: 20px; + padding: 25px 20px; + } + + .submit-grid { + grid-template-columns: 1fr; + gap: 15px; + } + + .submit-body { + padding: 25px 20px; + } + + .submit-rules { + gap: 0; + } + + .submit-rule { + padding: 15px; + } +} + @media (max-width: 600px) { - .submit-hero, .submit-body { padding-left: 20px; padding-right: 20px; } + .submit-hero, .submit-body { + padding-left: 15px; + padding-right: 15px; + } + .submit-grid { grid-template-columns: 1fr; } .submit-news-row { grid-template-columns: 1fr; } .submit-review-note { max-width: 100%; } + + .submit-hero { + gap: 15px; + padding: 15px; + } + + .submit-body { + padding: 15px; + } + + .submit-rule { + padding: 12px; + font-size: 0.9rem; + } + + .submit-hero-title { + font-size: 1.3rem; + } + + .submit-grid > * { + margin-bottom: 10px; + } } diff --git a/resources/js/HashesChecker.js b/resources/js/HashesChecker.js new file mode 100644 index 0000000..06a154a --- /dev/null +++ b/resources/js/HashesChecker.js @@ -0,0 +1,47 @@ +import { calculate as calculateHashes } from "./hashes.js"; + +window.HashesChecker = function( wire ) { + return { + + /** + * Wire variable instance. + */ + $wire: wire, + + /** + * If a file hash is currently calculated or not. + * @type {boolean} + */ + isCalculating: false, + + /** + * An error on hash calculation. + * @type {any|null} + */ + error: null, + + async handleSubmitFile(e){ + if( this.isCalculating === true ) // Calculation already done for another file. + return; + + this.error = null; // Reset. + const FILE = e.target.files[0]; + + if( !FILE ) + return; // No file sent. + + this.isCalculating = true; + + try { + const RESULT = await calculateHashes(FILE); + await this.$wire.addHash(RESULT.filename, RESULT.crc32, RESULT.sha1); // Send a signal to livewire. + window.refreshIcons(); + } catch(err) { + this.error = err.message; + } finally { + this.isCalculating = false; + } + } + + } +} diff --git a/resources/js/app.js b/resources/js/app.js index 4cd824a..8fc69c6 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -7,6 +7,7 @@ import hovercard from "./hovercard.js"; import notifications from "./notifications.js"; import conversations from "./conversations.js"; import settings from "./settings.js"; +import { initMobileMenu } from "./mobile-menu.js"; /** * Get config defined in meta.blade.php @@ -43,3 +44,6 @@ Alpine.store('conversations', conversations() ); // Settings Alpine.store('settings', settings() ); + +// Mobile Menu +document.addEventListener('DOMContentLoaded', initMobileMenu); diff --git a/resources/js/mobile-menu.js b/resources/js/mobile-menu.js new file mode 100644 index 0000000..2f3b8e1 --- /dev/null +++ b/resources/js/mobile-menu.js @@ -0,0 +1,46 @@ +export function initMobileMenu() { + const menuToggle = document.querySelector('.mobile-toggle'); + const menu = document.getElementById('menu'); + const app = document.getElementById('app'); + const content = document.getElementById('content'); + + if (!menuToggle || !menu) return; + + menuToggle.addEventListener('click', (e) => { + e.stopPropagation(); + menu.classList.toggle('mobile-open'); + app.classList.toggle('menu-open'); + }); + + const menuItems = menu.querySelectorAll('.menu-item'); + menuItems.forEach(item => { + item.addEventListener('click', () => { + menu.classList.remove('mobile-open'); + app.classList.remove('menu-open'); + }); + }); + + document.addEventListener('click', (e) => { + const isClickInsideMenu = menu.contains(e.target); + const isClickOnToggle = menuToggle.contains(e.target); + + if (!isClickInsideMenu && !isClickOnToggle && menu.classList.contains('mobile-open')) { + menu.classList.remove('mobile-open'); + app.classList.remove('menu-open'); + } + }); + + document.addEventListener('keydown', (e) => { + if (e.key === 'Escape' && menu.classList.contains('mobile-open')) { + menu.classList.remove('mobile-open'); + app.classList.remove('menu-open'); + } + }); + + window.addEventListener('resize', () => { + if (window.innerWidth > 768) { + menu.classList.remove('mobile-open'); + app.classList.remove('menu-open'); + } + }); +} diff --git a/resources/js/submissions.js b/resources/js/submissions.js index ae70c19..7e73593 100644 --- a/resources/js/submissions.js +++ b/resources/js/submissions.js @@ -27,7 +27,7 @@ const ERROR_TABLE = { noGame: "Please provide a game or create a new one and fill all the required fields.", noLanguages: "Please select at least a language.", noAuthors: "Please provide at least an author or create a new one and fill all the required fields.", - noMainImage: "Please select a main image.", + noMainImage: "Please upload a main image.", noGalleryImages: "Please select at least a gallery image.", isSubmitting: "The entry is already during submission." } @@ -269,75 +269,75 @@ window.Submission = function(){ */ verifyForm(){ - console.log( "Step 1" ); + console.info( "Step 1: During File upload" ); if( !SubmissionVerifications.step1_DuringFSUpload( this.Uploader ) ){ this.errorKey = "isUploading"; return false; } - console.log( "Step 2" ); + console.info( "Step 2: No files uploaded" ); if( !SubmissionVerifications.step2_NoFilesFSUpload( this.Uploader ) ){ this.errorKey = "noFiles"; return false; } - console.log( "Step 3" ); + console.info( 'Step 3: Error in file upload') if( !SubmissionVerifications.step3_ErrorsFSUpload( this.Uploader ) ){ this.errorKey = "uploadError"; return false; } - console.log( "Step 4" ); + console.info("Step 4: All files uploaded"); if( !SubmissionVerifications.step4_AllFilesUploadedFSUpload( this.Uploader ) ){ this.errorKey = "notAllFilesDone"; return false; } if( SECTION() === "romhacks" || SECTION() === "lua-scripts" ){ - console.log( "Step 5" ); + console.info( "Step 5: Verify modifications") if( !SubmissionVerifications.step5_RomhacksModificationsCheckboxes()){ this.errorKey = "noModifications"; return false; } } else if( SECTION() === "utilities" ){ - console.log( "Step 5" ); + console.info( "Step 5: Verify systems"); if( !SubmissionVerifications.step5_UtilitiesSystemsCheckboxes()){ this.errorKey = "noSystems"; return false; } } - console.log( "Step 6" ); + console.info( "Step 6: Verify description"); if( !SubmissionVerifications.step6_VerifyDescription() ){ this.errorKey = "noDescription"; return false; } - console.log( "Step 7" ); + console.info( "Step 7: Verify game"); if( !SubmissionVerifications.step7_VerifyGame( this.$el ) ){ this.errorKey = "noGame"; return false; } - console.log( "Step 8" ); + console.info("Step 8: Verify languages"); if( !SubmissionVerifications.step8_LanguagesCheckboxes()){ this.errorKey = "noLanguages"; return false; } - console.log( "Step 9" ); + console.info( "Step 9: Verify authors" ); if( !SubmissionVerifications.step9_verifyAuthors()){ this.errorKey = "noAuthors"; return false; } - console.log( "Step 10" ); + console.info( "Step 10: Verify Main image" ); if( !SubmissionVerifications.step10_verifyMainImage( this.$el )){ this.errorKey = "noMainImage"; return false; } - console.log( "Step 11" ); + console.info( "Step 11: Verify gallery images" ); if( !SubmissionVerifications.step11_verifyGallery( this.$el )){ this.errorKey = "noGalleryImages"; return false; @@ -367,9 +367,13 @@ window.Submission = function(){ isSubmitting: 'submitButton' }; - const target = this.$refs[refMap[this.errorKey]] - || this.$el.querySelector('.upload-list') - || this.$el.querySelector('.form-upload'); + const targetKey = refMap[this.errorKey]; + + const target = this.$refs[targetKey] + || this.$el.querySelector(`[data-target="${targetKey}"]`) + || this.$el.querySelector(`[x-ref="${targetKey}"]`) + || this.$el.querySelector('.upload-list') + || this.$el.querySelector('.form-upload'); if (target) { target.scrollIntoView({behavior: 'smooth', block: 'center'}); diff --git a/resources/views/activity/timeline.blade.php b/resources/views/activity/timeline.blade.php index a9aa66e..e8bf9c1 100644 --- a/resources/views/activity/timeline.blade.php +++ b/resources/views/activity/timeline.blade.php @@ -31,6 +31,8 @@ @elseif($item->type === 'club') + @elseif($item->type === 'review') + @else @endif diff --git a/resources/views/components/database-filter-with-mode-search.blade.php b/resources/views/components/database-filter-with-mode-search.blade.php index 44c035c..caae804 100644 --- a/resources/views/components/database-filter-with-mode-search.blade.php +++ b/resources/views/components/database-filter-with-mode-search.blade.php @@ -1,4 +1,4 @@ -

+

{{ $title }}

@@ -18,11 +18,11 @@
@foreach($items as $item) -
+

{{ $title }}

@@ -14,11 +14,11 @@
@foreach($items as $item) -
- {{ $entry->title }} + {{ $entry->title ?? $entry->complete_title }}
@forelse( $entry->authors as $author) @if($loop->first)By @endif diff --git a/resources/views/components/error-block.blade.php b/resources/views/components/error-block.blade.php index 53748dd..123adbd 100644 --- a/resources/views/components/error-block.blade.php +++ b/resources/views/components/error-block.blade.php @@ -1,3 +1,3 @@
- {{ sprintf( $errorArray['message'], $message ) }} + {!! sprintf( $errorArray['message'], $message ) !!}
diff --git a/resources/views/components/gallery-field.blade.php b/resources/views/components/gallery-field.blade.php index 0bedff0..a8f85a8 100644 --- a/resources/views/components/gallery-field.blade.php +++ b/resources/views/components/gallery-field.blade.php @@ -1,4 +1,4 @@ -
+
diff --git a/resources/views/components/languages-selector.blade.php b/resources/views/components/languages-selector.blade.php index 261d492..a3f183d 100644 --- a/resources/views/components/languages-selector.blade.php +++ b/resources/views/components/languages-selector.blade.php @@ -18,12 +18,11 @@
-
+
@foreach( $languages as $language ) @endforeach
-
diff --git a/resources/views/components/main-image-field.blade.php b/resources/views/components/main-image-field.blade.php index 3cb2cbf..1e0dcd3 100644 --- a/resources/views/components/main-image-field.blade.php +++ b/resources/views/components/main-image-field.blade.php @@ -1,4 +1,5 @@ -
+ +
diff --git a/resources/views/components/markdown-textarea.blade.php b/resources/views/components/markdown-textarea.blade.php index bb55112..6a2c2d9 100644 --- a/resources/views/components/markdown-textarea.blade.php +++ b/resources/views/components/markdown-textarea.blade.php @@ -3,12 +3,7 @@ window.mde_{{ $name }} = new EasyMDE({ element: $el.querySelector('#field_{{ $name }}'), minHeight: '{{ $minHeight }}', - toolbar: {{ Js::from( $toolbar ) }}, - autosave: { - enabled: true, - uniqueId: '{{ $name }}', - delay: 1000, - }, + toolbar: {{ Js::from( $toolbar ) }} }) " > diff --git a/resources/views/components/review-card.blade.php b/resources/views/components/review-card.blade.php new file mode 100644 index 0000000..c61723f --- /dev/null +++ b/resources/views/components/review-card.blade.php @@ -0,0 +1,23 @@ +
+ + +
+
+ {{ $review->xenforoUser()?->username }} + + + + {{ $review->created_at->format('Y-m-d') }} + @if( $entryShow && $review->entry()->exists() ) + + {{ $review->entry->complete_title ?? $review->entry->title }} + @endif +
+ +
{{ $review->title }}
+ +
+ {!! $review->description_html !!} +
+
+
diff --git a/resources/views/components/review-star-rating.blade.php b/resources/views/components/review-star-rating.blade.php new file mode 100644 index 0000000..fc93c3e --- /dev/null +++ b/resources/views/components/review-star-rating.blade.php @@ -0,0 +1,5 @@ + + @for($i = 1; $i <= 5; $i++) + + @endfor + diff --git a/resources/views/components/topbar.blade.php b/resources/views/components/topbar.blade.php index 68dfa95..27ba23b 100644 --- a/resources/views/components/topbar.blade.php +++ b/resources/views/components/topbar.blade.php @@ -4,49 +4,121 @@ - + + +
@can('is-admin') @php $topbarAdminSeparator = true; @endphp - + - + @endcan @if( $topbarAdminSeparator ) -
+
@endif @can('is-mod') @php $topbarModSeparator = true; @endphp - + - + - + @endcan @if( $topbarModSeparator ) -
+
@endif - {{-- Users --}} +
+ @canany(['is-admin','is-mod']) + +
+ @can('is-admin') + + + Admin + + + + Manage + + @endcan + + @can('is-mod') + + + Mod CP + + + + Approval Queue + + + + Reports + + @endcan +
+ @endcanany +
+ @can('create','\App\Models\Entry') - + @endcan diff --git a/resources/views/components/xf-username-link.blade.php b/resources/views/components/xf-username-link.blade.php index 317129e..99e463a 100644 --- a/resources/views/components/xf-username-link.blade.php +++ b/resources/views/components/xf-username-link.blade.php @@ -1,6 +1,7 @@ {{ $user->username }} diff --git a/resources/views/entries/comments.blade.php b/resources/views/entries/comments.blade.php index 799e200..af2cbb3 100644 --- a/resources/views/entries/comments.blade.php +++ b/resources/views/entries/comments.blade.php @@ -1,9 +1,36 @@ + @php if( !isset($entry) && isset($news) ){ $entry = $news; $newsMode = true; } else { $newsMode = false; } @endphp
@if( !$newsMode ) -
+
+ +
+ @if($entry->reviews_count_cached > 0) +
+ + {{ $entry->average_rating }} + ({{ $entry->reviews_count_cached }}) +
+ @endif + + @auth + + @endauth +
+ + @forelse( $reviews as $review ) + + @empty + Be the first to post a review + @endforelse + + See all {{ $entry->reviews_count_cached }} reviews + + @include('reviews.submit')
@endif @@ -11,7 +38,7 @@
@forelse( $comments as $comment ) - @if($comment['user_id'] === config('xenforo.bot_user_id') && $comment['position'] == 0) + @if(( $comment['user_id'] === config('xenforo.bot_user_id') || $comment['username'] === 'Romhack Plaza' ) && $comment['position'] == 0) @continue @else
@@ -19,7 +46,7 @@
- {{ $comment['User']['username'] }} + {{ $comment['User']['username'] ?? $comment['username'] ?? 'Guest' }} {{ date('Y-m-d', $comment['post_date']) }}
diff --git a/resources/views/entries/show.blade.php b/resources/views/entries/show.blade.php index 7d0ce7d..b069b98 100644 --- a/resources/views/entries/show.blade.php +++ b/resources/views/entries/show.blade.php @@ -19,7 +19,7 @@