Skip to content

Commit 58a7f53

Browse files
committed
spoiler protection for episode names
1 parent 199639d commit 58a7f53

File tree

16 files changed

+82
-13
lines changed

16 files changed

+82
-13
lines changed

backend/app/Http/Controllers/ItemController.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use App\Item;
77
use App\Services\Storage;
88
use App\Services\TMDB;
9+
use App\Setting;
910
use Illuminate\Support\Facades\Input;
1011

1112
class ItemController {
@@ -54,7 +55,10 @@ public function items($type, $orderBy)
5455
*/
5556
public function episodes($tmdb_id)
5657
{
57-
return Episode::where('tmdb_id', $tmdb_id)->get()->groupBy('season_number');
58+
return [
59+
'episodes' => Episode::where('tmdb_id', $tmdb_id)->get()->groupBy('season_number'),
60+
'spoiler' => Setting::find(1)->episode_spoiler_protection
61+
];
5862
}
5963

6064
/**

backend/app/Http/Controllers/SettingController.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,12 +136,14 @@ public function settings()
136136
// Set default value if settings table is empty.
137137
$genre = $settings ? $settings->show_genre : 0;
138138
$date = $settings ? $settings->show_date : 1;
139+
$spoiler = $settings ? $settings->episode_spoiler_protection : 1;
139140

140141
return [
141142
'username' => Auth::check() ? Auth::user()->username : '',
142143
'genre' => $genre,
143144
'date' => $date,
144-
'version' => $this->version
145+
'version' => $this->version,
146+
'spoiler' => $spoiler
145147
];
146148
}
147149

@@ -158,6 +160,7 @@ public function changeSettings()
158160

159161
$settings->show_date = Input::get('date');
160162
$settings->show_genre = Input::get('genre');
163+
$settings->episode_spoiler_protection = Input::get('spoiler');
161164

162165
$settings->save();
163166
}

backend/config/app.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
return [
44

5-
'version' => '1.1.0',
5+
'version' => '1.2.0',
66

77
'TMDB_API_KEY' => env('TMDB_API_KEY'),
88
'TRANSLATION' => env('TRANSLATION'),
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
use Illuminate\Support\Facades\Schema;
4+
use Illuminate\Database\Schema\Blueprint;
5+
use Illuminate\Database\Migrations\Migration;
6+
7+
class AddShowSpoilerField extends Migration
8+
{
9+
/**
10+
* Run the migrations.
11+
*
12+
* @return void
13+
*/
14+
public function up()
15+
{
16+
Schema::table('settings', function (Blueprint $table) {
17+
$table->boolean('episode_spoiler_protection')->default(1);
18+
});
19+
}
20+
21+
/**
22+
* Reverse the migrations.
23+
*
24+
* @return void
25+
*/
26+
public function down()
27+
{
28+
Schema::table('settings', function (Blueprint $table) {
29+
$table->dropColumn('episode_spoiler_protection');
30+
});
31+
}
32+
}

client/app/components/Content/Settings.vue

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@
4242
<div class="checkbox">
4343
<input type="checkbox" value="date" v-model="displayDate" id="date" @change="updateSettings"><label for="date">{{ lang('display date') }}</label>
4444
</div>
45+
<div class="checkbox">
46+
<input type="checkbox" value="spoiler" v-model="spoilerProtection" id="spoiler" @change="updateSettings"><label for="spoiler">{{ lang('spoiler') }}</label>
47+
</div>
4548
</div>
4649
</div>
4750

@@ -71,6 +74,7 @@
7174
isUpdate: null,
7275
displayGenre: null,
7376
displayDate: null,
77+
spoilerProtection: null,
7478
success: false,
7579
uploadSuccess: false,
7680
uploadedFile: null
@@ -108,8 +112,9 @@
108112
updateSettings() {
109113
const date = this.displayDate;
110114
const genre = this.displayGenre;
115+
const spoiler = this.spoilerProtection;
111116
112-
http.patch(`${config.api}/settings`, {date, genre}).catch(error => {
117+
http.patch(`${config.api}/settings`, {date, genre, spoiler}).catch(error => {
113118
alert('Error');
114119
});
115120
},
@@ -147,6 +152,7 @@
147152
this.displayGenre = data.genre;
148153
this.displayDate = data.date;
149154
this.version = data.version;
155+
this.spoilerProtection = data.spoiler;
150156
});
151157
},
152158

client/app/components/Modal/Season.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
<div class="modal-content" v-if=" ! loadingModalData">
2828
<div @click="setSeen(episode)" class="modal-item" v-for="(episode, index) in episodes[seasonActiveModal]">
2929
<span class="modal-episode no-select">E{{ addZero(episode.episode_number) }}</span>
30-
<span class="modal-name">{{ episode.name }}</span>
30+
<span class="modal-name" :class="{'spoiler-protect': spoiler && ! episode.seen}">{{ episode.name }}</span>
3131
<span class="episode-seen" :class="{seen: episode.seen}"><i></i></span>
3232
</div>
3333
</div>
@@ -54,6 +54,10 @@
5454
5555
episodes() {
5656
return this.modalData.episodes;
57+
},
58+
59+
spoiler() {
60+
return this.modalData.spoiler;
5761
}
5862
},
5963

client/app/store/actions.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ export function fetchEpisodes({commit}, data) {
4646
http(`${config.api}/episodes/${data.tmdb_id}`).then(response => {
4747
commit('SET_MODAL_DATA', {
4848
title: data.title,
49-
episodes: response.data
49+
episodes: response.data.episodes,
50+
spoiler: response.data.spoiler
5051
});
5152

5253
setTimeout(() => {

client/resources/languages/ar.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,6 @@
4141
"current version": "النسخة الحالية:",
4242
"new update": "هناك تحديثا جديدا لflox!",
4343
"no update": "لا شيء لتحديث",
44-
"checking update": "البحث عن تحديثات..."
44+
"checking update": "البحث عن تحديثات...",
45+
"spoiler": "حماية المفسد لأسماء الحلقة"
4546
}

client/resources/languages/da.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,6 @@
4141
"current version": "Nuværende version:",
4242
"new update": "Der er en ny opdatering til flox!",
4343
"no update": "Intet at opdatere",
44-
"checking update": "Kontrollerer for opdateringer ..."
44+
"checking update": "Kontrollerer for opdateringer ...",
45+
"spoiler": "beskyttelse Spoiler for episode navne"
4546
}

client/resources/languages/de.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,6 @@
4141
"current version": "Aktuelle Version:",
4242
"new update": "Ein neues Update ist vorhanden",
4343
"no update": "Kein Update vorhanden",
44-
"checking update": "Suche nach Updates..."
44+
"checking update": "Suche nach Updates...",
45+
"spoiler": "Spoiler-Schutz für Episodennamen"
4546
}

client/resources/languages/el.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,7 @@
4141
"current version": "Τρέχουσα έκδοση:",
4242
"new update": "Υπάρχει μια νέα ενημερωμένη έκδοση για Flox!",
4343
"no update": "Τίποτα για να ενημερώσετε",
44-
"checking update": "Έλεγχος για ενημερώσεις ..."
44+
"checking update": "Έλεγχος για ενημερώσεις ...",
45+
"spoiler": "προστασία αεροτομή για τα ονόματα επεισόδιο"
46+
4547
}

client/resources/languages/en.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,6 @@
4141
"current version": "Current version:",
4242
"new update": "There is a new update for flox!",
4343
"no update": "Nothing to update",
44-
"checking update": "Checking for updates..."
44+
"checking update": "Checking for updates...",
45+
"spoiler": "Spoiler protection for episode names"
4546
}

client/resources/languages/fr.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,6 @@
4141
"current version": "Version actuelle:",
4242
"new update": "Il existe une nouvelle mise à jour pour flox!",
4343
"no update": "Rien à mettre à jour",
44-
"checking update": "Vérification des mises à jour ..."
44+
"checking update": "Vérification des mises à jour ...",
45+
"spoiler": "Protection des spoilers pour les noms d'épisodes"
4546
}

client/resources/languages/nl.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,6 @@
4141
"current version": "Huidige versie:",
4242
"new update": "Er is een nieuwe update voor Flox!",
4343
"no update": "Niets te actualiseren",
44-
"checking update": "Controleren op updates ..."
44+
"checking update": "Controleren op updates ...",
45+
"spoiler": "Spoiler bescherming voor aflevering namen"
4546
}

client/resources/sass/components/_content.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,11 @@ main {
476476
float: left;
477477
font-size: 15px;
478478
margin: 0 0 0 10px;
479+
max-width: 200px;
480+
481+
@include media(4) {
482+
max-width: none;
483+
}
479484
}
480485

481486
.dark & {

client/resources/sass/components/_modal.scss

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
padding: 7px;
3939
cursor: pointer;
4040
opacity: .8;
41+
margin: 0 -5px 0 0px;
4142

4243
&:active {
4344
opacity: .5;
@@ -172,6 +173,11 @@
172173
overflow: hidden;
173174
text-overflow: ellipsis;
174175
white-space: nowrap;
176+
177+
&.spoiler-protect {
178+
background: rgba(#fff, .4);
179+
color: transparent;
180+
}
175181
}
176182

177183
.episode-seen {

0 commit comments

Comments
 (0)