Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
B
Backend Server
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
SpinShare
Backend Server
Commits
f55f44c8
Commit
f55f44c8
authored
Nov 28, 2020
by
Andreas Heimann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added playlists for everyone, added frontpage refresh, removed popular, added api link
parent
a25eabab
Changes
25
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
448 additions
and
426 deletions
+448
-426
public/assets/css/playlistdetail.css
public/assets/css/playlistdetail.css
+32
-0
public/assets/css/playlistdetail.css.map
public/assets/css/playlistdetail.css.map
+1
-1
public/assets/css/playlistdetail.less
public/assets/css/playlistdetail.less
+36
-0
public/assets/css/settings.css
public/assets/css/settings.css
+1
-0
public/assets/css/settings.css.map
public/assets/css/settings.css.map
+1
-0
public/assets/css/startup.css
public/assets/css/startup.css
+54
-51
public/assets/css/startup.css.map
public/assets/css/startup.css.map
+1
-0
public/assets/css/startup.less
public/assets/css/startup.less
+88
-85
public/assets/css/userdetail.css
public/assets/css/userdetail.css
+1
-0
public/assets/css/userdetail.css.map
public/assets/css/userdetail.css.map
+1
-1
src/Controller/API/APIDiscoveryController.php
src/Controller/API/APIDiscoveryController.php
+2
-23
src/Controller/IndexController.php
src/Controller/IndexController.php
+0
-17
src/Controller/Moderation/ModactionsController.php
src/Controller/Moderation/ModactionsController.php
+38
-0
src/Controller/PlaylistController.php
src/Controller/PlaylistController.php
+60
-0
templates/apidocs/base.html.twig
templates/apidocs/base.html.twig
+11
-7
templates/apidocs/gettingstarted/introduction.html.twig
templates/apidocs/gettingstarted/introduction.html.twig
+9
-16
templates/apidocs/open/discovery.html.twig
templates/apidocs/open/discovery.html.twig
+1
-38
templates/base.html.twig
templates/base.html.twig
+1
-0
templates/emails/moderation/playlistRemoved.txt.twig
templates/emails/moderation/playlistRemoved.txt.twig
+8
-0
templates/index/base.html.twig
templates/index/base.html.twig
+0
-1
templates/index/index.html.twig
templates/index/index.html.twig
+26
-159
templates/index/popular.html.twig
templates/index/popular.html.twig
+0
-23
templates/playlist/detail.html.twig
templates/playlist/detail.html.twig
+26
-0
templates/playlist/edit.html.twig
templates/playlist/edit.html.twig
+49
-0
templates/user/detail-playlists.html.twig
templates/user/detail-playlists.html.twig
+1
-4
No files found.
public/assets/css/playlistdetail.css
View file @
f55f44c8
...
@@ -57,6 +57,38 @@
...
@@ -57,6 +57,38 @@
line-height
:
1.5em
;
line-height
:
1.5em
;
opacity
:
0.7
;
opacity
:
0.7
;
}
}
.section-playlist-detail
.playlist-content
.playlist-detail
.playlist-actions
{
margin-top
:
25px
;
transition
:
all
0.2s
ease-in-out
;
border-radius
:
4px
;
overflow
:
hidden
;
background
:
#fff
;
}
.section-playlist-detail
.playlist-content
.playlist-detail
.playlist-actions
.action-row
{
display
:
flex
;
}
.section-playlist-detail
.playlist-content
.playlist-detail
.playlist-actions
.action-row
.action
{
background
:
linear-gradient
(
135deg
,
rgba
(
0
,
0
,
0
,
0.1
),
rgba
(
0
,
0
,
0
,
0.3
));
flex-grow
:
1
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
color
:
#222
;
text-decoration
:
none
;
transition
:
all
0.2s
ease-in-out
;
cursor
:
pointer
;
}
.section-playlist-detail
.playlist-content
.playlist-detail
.playlist-actions
.action-row
.action
.icon
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
height
:
48px
;
width
:
48px
;
font-size
:
24px
;
}
.section-playlist-detail
.playlist-content
.playlist-detail
.playlist-actions
.action-row
.action
:hover
{
opacity
:
0.6
;
}
.section-playlist-detail
.playlist-content
.playlist-detail
.playlist-uploader
{
.section-playlist-detail
.playlist-content
.playlist-detail
.playlist-uploader
{
display
:
grid
;
display
:
grid
;
grid-template-columns
:
auto
1
fr
;
grid-template-columns
:
auto
1
fr
;
...
...
public/assets/css/playlistdetail.css.map
View file @
f55f44c8
{"version":3,"sources":["playlistdetail.less"],"names":[],"mappings":"AACI,wBAAE;EACE,WAAA;EACA,aAAA;EACA,2CAAA;EACA,sBAAA;;AAEA,wBANF,OAMI;EACE,WAAA;EACA,YAAA;EACA,8BAAA;EACA,yBAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;;AAEA,wBAfN,OAMI,OASI;EACE,kBAAA;EACA,0CAAA;;AAEA,wBAnBV,OAMI,OASI,SAII;EACE,eAAA;EACA,kBAAA;EACA,aAAa,oBAAb;;AAEA,wBAxBd,OAMI,OASI,SAII,OAKI;EACE,qBAAA;EACA,aAAa,uBAAb;EACA,iBAAA;EACA,eAAA;EACA,iBAAA;EACA,kBAAA;EACA,gBAAA;EACA,WAAA;EACA,8BAAA;EACA,iBAAA;EACA,WAAW,iBAAX;;AAIR,wBAvCV,OAMI,OASI,SAwBI;EACE,eAAA;EACA,YAAA;;AAKhB,wBAAE;EACE,aAAA;EACA,aAAA;EACA,gCAAA;EACA,cAAA;;AAGI,wBAPN,kBAMI,iBACI;EACE,mBAAA;EACA,kBAAA;EACA,kBAAA;EACA,aAAA;EACA,cAAA;EACA,aAAA;;AAEA,wBAfV,kBAMI,iBACI,sBAQI;EACE,kBAAA;EACA,YAAA;;AAGR,wBApBN,kBAMI,iBAcI;EACE,aAAA;EACA,+BAAA;EACA,cAAA;EACA,gBAAA;;AAEA,wBA1BV,kBAMI,iBAcI,mBAMI;EACE,kBAAA;EACA,YAAA;;AAGR,wBA/BN,kBAMI,iBAyBI;EACE,aAAA;EACA,4BAAA;EACA,aAAA;EACA,gBAAA;;AAEA,wBArCV,kBAMI,iBAyBI,mBAMI;EACE,kBAAA;EACA,YAAA;;AAEJ,wBAzCV,kBAMI,iBAyBI,mBAUI;EACE,mBAAA;EACA,aAAA;EACA,kBAAA;EACA,kBAAA;;AAEJ,wBA/CV,kBAMI,iBAyBI,mBAgBI;EACE,UAAA;EACA,WAAA;EACA,qBAAA;EACA,oCAAA;;AAEA,wBArDd,kBAMI,iBAyBI,mBAgBI,UAMG;EACG,YAAA;;AAMZ,wBA5DN,kBA2DI,mBACI;EACE,uBAAuB,cAAvB","file":"playlistdetail.css"}
{"version":3,"sources":["playlistdetail.less"],"names":[],"mappings":"AACI,wBAAE;EACE,WAAA;EACA,aAAA;EACA,2CAAA;EACA,sBAAA;;AAEA,wBANF,OAMI;EACE,WAAA;EACA,YAAA;EACA,8BAAA;EACA,yBAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;;AAEA,wBAfN,OAMI,OASI;EACE,kBAAA;EACA,0CAAA;;AAEA,wBAnBV,OAMI,OASI,SAII;EACE,eAAA;EACA,kBAAA;EACA,aAAa,oBAAb;;AAEA,wBAxBd,OAMI,OASI,SAII,OAKI;EACE,qBAAA;EACA,aAAa,uBAAb;EACA,iBAAA;EACA,eAAA;EACA,iBAAA;EACA,kBAAA;EACA,gBAAA;EACA,WAAA;EACA,8BAAA;EACA,iBAAA;EACA,WAAW,iBAAX;;AAIR,wBAvCV,OAMI,OASI,SAwBI;EACE,eAAA;EACA,YAAA;;AAKhB,wBAAE;EACE,aAAA;EACA,aAAA;EACA,gCAAA;EACA,cAAA;;AAGI,wBAPN,kBAMI,iBACI;EACE,mBAAA;EACA,kBAAA;EACA,kBAAA;EACA,aAAA;EACA,cAAA;EACA,aAAA;;AAEA,wBAfV,kBAMI,iBACI,sBAQI;EACE,kBAAA;EACA,YAAA;;AAGR,wBApBN,kBAMI,iBAcI;EACE,gBAAA;EACA,gCAAA;EACA,kBAAA;EACA,gBAAA;EACA,gBAAA;;AAEA,wBA3BV,kBAMI,iBAcI,kBAOI;EACE,aAAA;;AAEA,wBA9Bd,kBAMI,iBAcI,kBAOI,YAGI;EACE,YAAY,+DAAZ;EACA,YAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,WAAA;EACA,qBAAA;EACA,gCAAA;EACA,eAAA;;AAEA,wBAzClB,kBAMI,iBAcI,kBAOI,YAGI,QAWI;EACE,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,YAAA;EACA,WAAA;EACA,eAAA;;AAGJ,wBAlDlB,kBAMI,iBAcI,kBAOI,YAGI,QAoBG;EACG,YAAA;;AAKhB,wBAxDN,kBAMI,iBAkDI;EACE,aAAA;EACA,+BAAA;EACA,cAAA;EACA,gBAAA;;AAEA,wBA9DV,kBAMI,iBAkDI,mBAMI;EACE,kBAAA;EACA,YAAA;;AAGR,wBAnEN,kBAMI,iBA6DI;EACE,aAAA;EACA,4BAAA;EACA,aAAA;EACA,gBAAA;;AAEA,wBAzEV,kBAMI,iBA6DI,mBAMI;EACE,kBAAA;EACA,YAAA;;AAEJ,wBA7EV,kBAMI,iBA6DI,mBAUI;EACE,mBAAA;EACA,aAAA;EACA,kBAAA;EACA,kBAAA;;AAEJ,wBAnFV,kBAMI,iBA6DI,mBAgBI;EACE,UAAA;EACA,WAAA;EACA,qBAAA;EACA,oCAAA;;AAEA,wBAzFd,kBAMI,iBA6DI,mBAgBI,UAMG;EACG,YAAA;;AAMZ,wBAhGN,kBA+FI,mBACI;EACE,uBAAuB,cAAvB","file":"playlistdetail.css"}
\ No newline at end of file
\ No newline at end of file
public/assets/css/playlistdetail.less
View file @
f55f44c8
...
@@ -65,6 +65,42 @@
...
@@ -65,6 +65,42 @@
opacity: 0.7;
opacity: 0.7;
}
}
}
}
& .playlist-actions {
margin-top: 25px;
transition: all 0.2s ease-in-out;
border-radius: 4px;
overflow: hidden;
background: #fff;
& .action-row {
display: flex;
& .action {
background: linear-gradient(135deg, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.3));
flex-grow: 1;
display: flex;
justify-content: center;
align-items: center;
color: #222;
text-decoration: none;
transition: all 0.2s ease-in-out;
cursor: pointer;
& .icon {
display: flex;
justify-content: center;
align-items: center;
height: 48px;
width: 48px;
font-size: 24px;
}
&:hover {
opacity: 0.6;
}
}
}
}
& .playlist-uploader {
& .playlist-uploader {
display: grid;
display: grid;
grid-template-columns: auto 1fr;
grid-template-columns: auto 1fr;
...
...
public/assets/css/settings.css
View file @
f55f44c8
...
@@ -240,3 +240,4 @@
...
@@ -240,3 +240,4 @@
width
:
0%
;
width
:
0%
;
}
}
}
}
/*# sourceMappingURL=settings.css.map */
\ No newline at end of file
public/assets/css/settings.css.map
0 → 100644
View file @
f55f44c8
{"version":3,"sources":["settings.less"],"names":[],"mappings":"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","file":"settings.css"}
\ No newline at end of file
public/assets/css/startup.css
View file @
f55f44c8
...
@@ -29,33 +29,74 @@
...
@@ -29,33 +29,74 @@
color
:
#ffffff
;
color
:
#ffffff
;
background
:
#212629
;
background
:
#212629
;
}
}
.staff-promos
{
.section-startup
.frontpage
{
width
:
100%
;
display
:
grid
;
display
:
grid
;
grid-template-columns
:
1
fr
1
fr
;
grid-template-columns
:
100px
1
fr
;
grid-gap
:
25px
;
grid-gap
:
50px
;
width
:
1114px
;
padding
:
50px
;
margin
:
0
auto
;
}
margin-top
:
50px
;
.section-startup
.frontpage
.social-buttons
{
display
:
grid
;
grid-template-columns
:
1
fr
;
grid-gap
:
15px
;
}
.section-startup
.frontpage
.social-buttons
.item
{
height
:
75px
;
display
:
flex
;
color
:
#fff
;
justify-content
:
center
;
align-items
:
center
;
font-size
:
32px
;
background
:
rgba
(
255
,
255
,
255
,
0.2
);
border-radius
:
6px
;
transition
:
0.2s
ease-in-out
all
;
}
}
.staff-promos
:empty
{
.section-startup
.frontpage
.social-buttons
.item.item-discord
{
background
:
linear-gradient
(
135deg
,
#99aab5
,
#7289da
);
}
.section-startup
.frontpage
.social-buttons
.item.item-twitter
{
background
:
linear-gradient
(
135deg
,
#d0e6f7
,
#1da1f2
);
}
.section-startup
.frontpage
.social-buttons
.item.item-youtube
{
background
:
linear-gradient
(
135deg
,
#ff0000
,
#c20000
);
}
.section-startup
.frontpage
.social-buttons
.item.item-twitch
{
background
:
linear-gradient
(
135deg
,
#b9a3e3
,
#6441a5
);
}
.section-startup
.frontpage
.social-buttons
.item.item-patreon
{
background
:
linear-gradient
(
135deg
,
#ff8575
,
#e75744
);
}
.section-startup
.frontpage
.social-buttons
.item
:hover
{
transform
:
scale
(
1.05
);
box-shadow
:
0px
4px
16px
rgba
(
0
,
0
,
0
,
0.4
);
cursor
:
pointer
;
}
.section-startup
.frontpage
.staff-promos
{
display
:
grid
;
grid-template-columns
:
545px
545px
1
fr
;
}
.section-startup
.frontpage
.staff-promos
:empty
{
display
:
none
;
display
:
none
;
}
}
.staff-promos
.staff-promo
{
.s
ection-startup
.frontpage
.s
taff-promos
.staff-promo
{
background
:
#fff
;
background
:
#fff
;
background-position
:
center
right
;
background-size
:
cover
;
border-radius
:
6px
;
border-radius
:
6px
;
padding
:
50px
;
padding
:
50px
;
height
:
256px
;
height
:
256px
;
display
:
grid
;
display
:
grid
;
grid-template-rows
:
auto
100px
auto
;
grid-template-rows
:
auto
100px
auto
;
}
}
.staff-promos
.staff-promo
.promo-type
{
.s
ection-startup
.frontpage
.s
taff-promos
.staff-promo
.promo-type
{
color
:
#aaa
;
color
:
#aaa
;
justify-self
:
left
;
justify-self
:
left
;
font-size
:
12px
;
font-size
:
12px
;
font-weight
:
bold
;
font-weight
:
bold
;
letter-spacing
:
0.3em
;
letter-spacing
:
0.3em
;
}
}
.staff-promos
.staff-promo
.promo-title
{
.s
ection-startup
.frontpage
.s
taff-promos
.staff-promo
.promo-title
{
font-weight
:
bold
;
font-weight
:
bold
;
font-size
:
34px
;
font-size
:
34px
;
justify-self
:
left
;
justify-self
:
left
;
...
@@ -63,7 +104,7 @@
...
@@ -63,7 +104,7 @@
letter-spacing
:
-0.025em
;
letter-spacing
:
-0.025em
;
color
:
#222
;
color
:
#222
;
}
}
.staff-promos
.staff-promo
.promo-button
{
.s
ection-startup
.frontpage
.s
taff-promos
.staff-promo
.promo-button
{
font-size
:
14px
;
font-size
:
14px
;
font-weight
:
bold
;
font-weight
:
bold
;
text-transform
:
uppercase
;
text-transform
:
uppercase
;
...
@@ -75,49 +116,11 @@
...
@@ -75,49 +116,11 @@
transition
:
0.2s
ease-in-out
opacity
;
transition
:
0.2s
ease-in-out
opacity
;
text-decoration
:
none
;
text-decoration
:
none
;
}
}
.staff-promos
.staff-promo
.promo-button
:hover
{
.s
ection-startup
.frontpage
.s
taff-promos
.staff-promo
.promo-button
:hover
{
cursor
:
pointer
;
cursor
:
pointer
;
opacity
:
0.6
;
opacity
:
0.6
;
}
}
.social-buttons
{
display
:
grid
;
width
:
650px
;
margin
:
0
auto
;
margin-top
:
25px
;
grid-template-columns
:
1
fr
1
fr
1
fr
1
fr
1
fr
;
grid-gap
:
15px
;
}
.social-buttons
.item
{
height
:
75px
;
display
:
flex
;
color
:
#fff
;
justify-content
:
center
;
align-items
:
center
;
font-size
:
32px
;
background
:
rgba
(
255
,
255
,
255
,
0.2
);
border-radius
:
6px
;
transition
:
0.2s
ease-in-out
all
;
}
.social-buttons
.item.item-discord
{
background
:
linear-gradient
(
135deg
,
#99aab5
,
#7289da
);
}
.social-buttons
.item.item-twitter
{
background
:
linear-gradient
(
135deg
,
#d0e6f7
,
#1da1f2
);
}
.social-buttons
.item.item-youtube
{
background
:
linear-gradient
(
135deg
,
#ff0000
,
#c20000
);
}
.social-buttons
.item.item-twitch
{
background
:
linear-gradient
(
135deg
,
#b9a3e3
,
#6441a5
);
}
.social-buttons
.item.item-patreon
{
background
:
linear-gradient
(
135deg
,
#ff8575
,
#e75744
);
}
.social-buttons
.item
:hover
{
transform
:
scale
(
1.1
);
box-shadow
:
0px
4px
16px
rgba
(
0
,
0
,
0
,
0.4
);
cursor
:
pointer
;
}
.song-row
{
.song-row
{
padding
:
50px
;
padding
:
50px
;
}
}
/*# sourceMappingURL=startup.css.map */
\ No newline at end of file
public/assets/css/startup.css.map
0 → 100644
View file @
f55f44c8
{"version":3,"sources":["startup.less"],"names":[],"mappings":"AACI,gBAAE;EACE,8BAAA;EACA,kBAAA;EACA,mBAAA;;AAEA,gBALF,OAKI;EACE,aAAA;;AAEA,gBARN,OAKI,MAGI;EACE,eAAA;EACA,iBAAA;EACA,yBAAA;EACA,sBAAA;EACA,kBAAA;EACA,2BAAA;EACA,4BAAA;EACA,8BAAA;EACA,+BAAA;EACA,gCAAA;EACA,qBAAA;;AAEA,gBArBV,OAKI,MAGI,KAaG,IAAI,SAAS;EACV,eAAA;EACA,mBAAA;EACA,gCAAA;;AAEJ,gBA1BV,OAKI,MAGI,KAkBG;EACG,UAAA;EACA,cAAA;EACA,mBAAA;;AAMhB,gBAAE;EACE,WAAA;EACA,aAAA;EACA,gCAAA;EACA,cAAA;EACA,aAAA;;AAEA,gBAPF,WAOI;EACE,aAAA;EACA,0BAAA;EACA,cAAA;;AAEA,gBAZN,WAOI,gBAKI;EACE,YAAA;EACA,aAAA;EACA,WAAA;EACA,uBAAA;EACA,mBAAA;EACA,eAAA;EACA,oCAAA;EACA,kBAAA;EACA,gCAAA;;AAEA,gBAvBV,WAOI,gBAKI,MAWG;EACG,YAAY,yCAAZ;;AAEJ,gBA1BV,WAOI,gBAKI,MAcG;EACG,YAAY,yCAAZ;;AAEJ,gBA7BV,WAOI,gBAKI,MAiBG;EACG,YAAY,yCAAZ;;AAEJ,gBAhCV,WAOI,gBAKI,MAoBG;EACG,YAAY,yCAAZ;;AAEJ,gBAnCV,WAOI,gBAKI,MAuBG;EACG,YAAY,yCAAZ;;AAGJ,gBAvCV,WAOI,gBAKI,MA2BG;EACG,WAAW,WAAX;EACA,2CAAA;EACA,eAAA;;AAIZ,gBA9CF,WA8CI;EACE,aAAA;EACA,sCAAA;;AAEA,gBAlDN,WA8CI,cAIG;EACG,aAAA;;AAGJ,gBAtDN,WA8CI,cAQI;EACE,gBAAA;EACA,iCAAA;EACA,sBAAA;EACA,kBAAA;EACA,aAAA;EACA,aAAA;EACA,aAAA;EACA,mCAAA;;AAEA,gBAhEV,WA8CI,cAQI,aAUI;EACE,WAAA;EACA,kBAAA;EACA,eAAA;EACA,iBAAA;EACA,qBAAA;;AAEJ,gBAvEV,WA8CI,cAQI,aAiBI;EACE,iBAAA;EACA,eAAA;EACA,kBAAA;EACA,sBAAA;EACA,wBAAA;EACA,WAAA;;AAEJ,gBA/EV,WA8CI,cAQI,aAyBI;EACE,eAAA;EACA,iBAAA;EACA,yBAAA;EACA,kBAAA;EACA,WAAA;EACA,gBAAA;EACA,kBAAA;EACA,kBAAA;EACA,oCAAA;EACA,qBAAA;;AAEA,gBA3Fd,WA8CI,cAQI,aAyBI,cAYG;EACG,eAAA;EACA,YAAA;;AAOxB;EACI,aAAA","file":"startup.css"}
\ No newline at end of file
public/assets/css/startup.less
View file @
f55f44c8
...
@@ -33,101 +33,104 @@
...
@@ -33,101 +33,104 @@
}
}
}
}
}
}
}
.staff-promos {
& .frontpage {
display: grid;
width: 100%;
grid-template-columns: 1fr 1fr;
display: grid;
grid-gap: 25px;
grid-template-columns: 100px 1fr;
width: 1114px;
grid-gap: 50px;
margin: 0 auto;
padding: 50px;
margin-top: 50px;
&:empty {
& .social-buttons {
display: none;
display: grid;
}
grid-template-columns: 1fr;
grid-gap: 15px;
& .staff-promo {
& .item {
background: #fff;
height: 75px;
border-radius: 6px;
display: flex;
padding: 50px;
color: #fff;
height: 256px;
justify-content: center;
display: grid;
align-items: center;
grid-template-rows: auto 100px auto;
font-size: 32px;
background: rgba(255,255,255,0.2);
border-radius: 6px;
transition: 0.2s ease-in-out all;
& .promo-type {
&.item-discord {
color: #aaa;
background: linear-gradient(135deg, #99aab5, #7289da);
justify-self: left;
}
font-size: 12px;
&.item-twitter {
font-weight: bold;
background: linear-gradient(135deg, #d0e6f7, #1da1f2);
letter-spacing: 0.3em;
}
}
&.item-youtube {
& .promo-title {
background: linear-gradient(135deg, #ff0000, #c20000);
font-weight: bold;
}
font-size: 34px;
&.item-twitch {
justify-self: left;
background: linear-gradient(135deg, #b9a3e3, #6441a5);
align-self: flex-start;
}
letter-spacing: -0.025em;
&.item-patreon {
color: #222;
background: linear-gradient(135deg, #ff8575, #e75744);
}
}
& .promo-button {
font-size: 14px;
font-weight: bold;
text-transform: uppercase;
padding: 10px 25px;
color: #fff;
background: #aaa;
justify-self: left;
border-radius: 6px;
transition: 0.2s ease-in-out opacity;
text-decoration: none;
&:hover {
&:hover {
cursor: pointer;
transform: scale(1.05);
opacity: 0.6;
box-shadow: 0px 4px 16px rgba(0,0,0,0.4);
cursor: pointer;
}
}
}
}
}
}
& .staff-promos {
}
display: grid;
.social-buttons {
grid-template-columns: 545px 545px 1fr;
display: grid;
width: 650px;
margin: 0 auto;
margin-top: 25px;
grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
grid-gap: 15px;
& .item {
&:empty {
height: 75px;
display: none;
display: flex;
}
color: #fff;
justify-content: center;
align-items: center;
font-size: 32px;
background: rgba(255,255,255,0.2);
border-radius: 6px;
transition: 0.2s ease-in-out all;
&.item-discord {
& .staff-promo {
background: linear-gradient(135deg, #99aab5, #7289da);
background: #fff;
}
background-position: center right;
&.item-twitter {
background-size: cover;
background: linear-gradient(135deg, #d0e6f7, #1da1f2);
border-radius: 6px;
}
padding: 50px;
&.item-youtube {
height: 256px;
background: linear-gradient(135deg, #ff0000, #c20000);
display: grid;
}
grid-template-rows: auto 100px auto;
&.item-twitch {
background: linear-gradient(135deg, #b9a3e3, #6441a5);
}
&.item-patreon {
background: linear-gradient(135deg, #ff8575, #e75744);
}
&:hover {
& .promo-type {
transform: scale(1.1);
color: #aaa;
box-shadow: 0px 4px 16px rgba(0,0,0,0.4);
justify-self: left;
cursor: pointer;
font-size: 12px;
font-weight: bold;
letter-spacing: 0.3em;
}
& .promo-title {
font-weight: bold;
font-size: 34px;
justify-self: left;
align-self: flex-start;
letter-spacing: -0.025em;
color: #222;
}
& .promo-button {
font-size: 14px;
font-weight: bold;
text-transform: uppercase;
padding: 10px 25px;
color: #fff;
background: #aaa;
justify-self: left;
border-radius: 6px;
transition: 0.2s ease-in-out opacity;
text-decoration: none;
&:hover {
cursor: pointer;
opacity: 0.6;
}
}
}
}
}
}
}
}
}
...
...
public/assets/css/userdetail.css
View file @
f55f44c8
...
@@ -276,3 +276,4 @@
...
@@ -276,3 +276,4 @@
.card-overlay
.overlay-content
.button
{
.card-overlay
.overlay-content
.button
{
display
:
inline-block
;
display
:
inline-block
;
}
}
/*# sourceMappingURL=userdetail.css.map */
\ No newline at end of file
public/assets/css/userdetail.css.map
View file @
f55f44c8
{"version":3,"sources":["userdetail.less"],"names":[],"mappings":"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","file":"userdetail.css"}
{"version":3,"sources":["userdetail.less"],"names":[],"mappings":"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","file":"userdetail.css"}
\ No newline at end of file
\ No newline at end of file
src/Controller/API/APIDiscoveryController.php
View file @
f55f44c8
...
@@ -94,32 +94,11 @@ class APIDiscoveryController extends AbstractController
...
@@ -94,32 +94,11 @@ class APIDiscoveryController extends AbstractController
*/
*/
public
function
songsPopular
(
Request
$request
,
int
$offset
=
0
)
public
function
songsPopular
(
Request
$request
,
int
$offset
=
0
)
{
{
// TODO: Remove this later on
$em
=
$this
->
getDoctrine
()
->
getManager
();
$em
=
$this
->
getDoctrine
()
->
getManager
();
$data
=
[];
$data
=
[];
$results
=
$em
->
getRepository
(
Song
::
class
)
->
getPopular
(
$offset
);
$response
=
new
JsonResponse
([
'version'
=>
$this
->
getParameter
(
'api_version'
),
'status'
=>
200
,
'data'
=>
[]]);
$baseUrl
=
$request
->
getScheme
()
.
'://'
.
$request
->
getHttpHost
()
.
$request
->
getBasePath
();
foreach
(
$results
as
$result
)
{
$oneResult
=
[];
$oneResult
[
'id'
]
=
$result
->
getId
();
$oneResult
[
'title'
]
=
$result
->
getTitle
();
$oneResult
[
'subtitle'
]
=
$result
->
getSubtitle
();
$oneResult
[
'artist'
]
=
$result
->
getArtist
();
$oneResult
[
'charter'
]
=
$result
->
getCharter
();
$oneResult
[
'hasEasyDifficulty'
]
=
$result
->
getHasEasyDifficulty
();
$oneResult
[
'hasNormalDifficulty'
]
=
$result
->
getHasNormalDifficulty
();
$oneResult
[
'hasHardDifficulty'
]
=
$result
->
getHasHardDifficulty
();
$oneResult
[
'hasExtremeDifficulty'
]
=
$result
->
getHasExtremeDifficulty
();
$oneResult
[
'hasXDDifficulty'
]
=
$result
->
getHasXDDifficulty
();
$oneResult
[
'cover'
]
=
$baseUrl
.
"/uploads/thumbnail/"
.
$result
->
getFileReference
()
.
".jpg"
;
$oneResult
[
'zip'
]
=
$this
->
generateUrl
(
'api.songs.download'
,
array
(
'id'
=>
$result
->
getId
()),
UrlGeneratorInterface
::
ABSOLUTE_URL
);
$data
[]
=
$oneResult
;
}
$response
=
new
JsonResponse
([
'version'
=>
$this
->
getParameter
(
'api_version'
),
'status'
=>
200
,
'data'
=>
$data
]);
$response
->
headers
->
set
(
'Access-Control-Allow-Origin'
,
'*'
);
$response
->
headers
->
set
(
'Access-Control-Allow-Origin'
,
'*'
);
return
$response
;
return
$response
;
}
}
...
...
src/Controller/IndexController.php
View file @
f55f44c8
...
@@ -63,23 +63,6 @@ class IndexController extends AbstractController
...
@@ -63,23 +63,6 @@ class IndexController extends AbstractController
return
$this
->
render
(
'index/hot.html.twig'
,
$data
);
return
$this
->
render
(
'index/hot.html.twig'
,
$data
);
}
}
/**
* @Route("/popular", name="index.popular")
*/
public
function
popular
(
Request
$request
)
{
$em
=
$this
->
getDoctrine
()
->
getManager
();
$data
=
[];
$popularOffset
=
$request
->
query
->
get
(
'popularOffset'
)
?
$request
->
query
->
get
(
'popularOffset'
)
:
0
;
$resultsPopularSongs
=
$em
->
getRepository
(
Song
::
class
)
->
getPopular
(
$popularOffset
);
$data
[
'popularSongs'
]
=
$resultsPopularSongs
;
$data
[
'popularOffset'
]
=
$popularOffset
;
return
$this
->
render
(
'index/popular.html.twig'
,
$data
);
}
/**
/**
* @Route("/support", name="index.support")
* @Route("/support", name="index.support")
*/
*/
...
...
src/Controller/Moderation/ModactionsController.php
View file @
f55f44c8
...
@@ -14,6 +14,7 @@ use Symfony\Component\Form\Extension\Core\Type\SubmitType;
...
@@ -14,6 +14,7 @@ use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use
App\Entity\ClientRelease
;
use
App\Entity\ClientRelease
;
use
App\Entity\Song
;
use
App\Entity\Song
;
use
App\Entity\SongPlaylist
;
use
App\Entity\User
;
use
App\Entity\User
;
use
App\Entity\SongReport
;
use
App\Entity\SongReport
;
use
App\Entity\UserReport
;
use
App\Entity\UserReport
;
...
@@ -337,4 +338,41 @@ class ModactionsController extends AbstractController
...
@@ -337,4 +338,41 @@ class ModactionsController extends AbstractController
return
$this
->
redirectToRoute
(
'song.detail'
,
array
(
'songId'
=>
$songId
));
return
$this
->
redirectToRoute
(
'song.detail'
,
array
(
'songId'
=>
$songId
));
}
}
/**
* @Route("/moderation/playlist/{playlistId}/remove", name="moderation.playlist.remove")
*/
public
function
playlistRemove
(
Request
$request
,
int
$playlistId
,
\Swift_Mailer
$mailer
)
{
$em
=
$this
->
getDoctrine
()
->
getManager
();
$data
=
[];
$playlistToRemove
=
$em
->
getRepository
(
SongPlaylist
::
class
)
->
findOneBy
(
array
(
'id'
=>
$playlistId
));
$uploader
=
$em
->
getRepository
(
User
::
class
)
->
findOneBy
(
array
(
'id'
=>
$playlistToRemove
->
getUser
()));
try
{
$message
=
(
new
\Swift_Message
(
'Your playlist '
.
$playlistToRemove
->
getTitle
()
.
' was removed!'
))
->
setFrom
(
'legal@spinsha.re'
)
->
setTo
(
$uploader
->
getEmail
())
->
setBody
(
$this
->
renderView
(
'emails/moderation/playlistRemoved.txt.twig'
,
[
'playlist'
=>
$playlistToRemove
]
),
'text/plain'
);
$mailer
->
send
(
$message
);
}
catch
(
\Exception
$e
)
{
}
// Remove cover
try
{
@
unlink
(
$this
->
getParameter
(
'cover_path'
)
.
DIRECTORY_SEPARATOR
.
$playlistToRemove
->
getFileReference
()
.
".png"
);
}
catch
(
FileNotFoundException
$e
)
{
}
$em
->
remove
(
$playlistToRemove
);
$em
->
flush
();
return
$this
->
redirectToRoute
(
'user.detail'
,
array
(
'userId'
=>
$uploader
->
getId
()));
}
}
}
src/Controller/PlaylistController.php
View file @
f55f44c8
...
@@ -108,6 +108,66 @@ class PlaylistController extends AbstractController
...
@@ -108,6 +108,66 @@ class PlaylistController extends AbstractController
return
$this
->
render
(
'playlist/detail.html.twig'
,
$data
);
return
$this
->
render
(
'playlist/detail.html.twig'
,
$data
);
}
}
/**
* @Route("/playlist/edit/{playlistId}", name="playlist.edit")
* @param Request $request
* @param int $playlistId
* @return RedirectResponse|Response
*/
public
function
playlistEdit
(
Request
$request
,
$playlistId
)
{
$user
=
$this
->
getUser
();
$em
=
$this
->
getDoctrine
()
->
getManager
();
$data
=
[];
$data
[
'formData'
]
=
""
;
$playlist
=
$em
->
getRepository
(
SongPlaylist
::
class
)
->
findOneBy
(
array
(
'id'
=>
$playlistId
,
'user'
=>
$user
->
getId
()));
$form
=
$this
->
createFormBuilder
()
->
add
(
'title'
,
TextType
::
class
,
[
'label'
=>
'Title'
,
'data'
=>
$playlist
->
getTitle
(),
'row_attr'
=>
array
(
'class'
=>
'tags-field'
),
'required'
=>
true
])
->
add
(
'description'
,
TextareaType
::
class
,
[
'label'
=>
'Description'
,
'data'
=>
$playlist
->
getDescription
(),
'attr'
=>
array
(
'rows'
=>
5
),
'row_attr'
=>
array
(
'class'
=>
'tags-field'
),
'required'
=>
false
])
->
add
(
'coverPath'
,
FileType
::
class
,
[
'label'
=>
'Cover Image'
,
'row_attr'
=>
array
(
'class'
=>
'upload-field'
),
'attr'
=>
array
(
'accept'
=>
'.png, .jpg, .jpeg'
)])
->
add
(
'save'
,
SubmitType
::
class
,
[
'label'
=>
'Save'
])
->
getForm
();
$form
->
handleRequest
(
$request
);
$data
[
'form'
]
=
$form
->
createView
();
if
(
$form
->
isSubmitted
()
&&
$form
->
isValid
())
{
$formData
=
$form
->
getData
();
try
{
$playlist
->
setTitle
(
$formData
[
'title'
]);
$playlist
->
setDescription
(
$formData
[
'description'
]);
if
(
$formData
[
'coverPath'
])
{
// Remove old Cover
try
{
@
unlink
(
$this
->
getParameter
(
'cover_path'
)
.
DIRECTORY_SEPARATOR
.
$playlist
->
getFileReference
()
.
".png"
);
}
catch
(
FileNotFoundException
$e
)
{
}
// Upload new Cover
$playlist
->
setFileReference
(
"playlist_"
.
uniqid
());
rename
(
$formData
[
'coverPath'
],
$this
->
getParameter
(
'cover_path'
)
.
DIRECTORY_SEPARATOR
.
$playlist
->
getFileReference
()
.
".png"
);
}
$em
->
persist
(
$playlist
);
$em
->
flush
();
return
$this
->
redirectToRoute
(
'playlist.detail'
,
[
'playlistId'
=>
$playlist
->
getId
()]);
}
catch
(
Exception
$e
)
{
$this
->
addFlash
(
'error'
,
'Editing failed. Please report back to our development team!'
);
var_dump
(
$e
);
return
$this
->
render
(
'playlist/edit.html.twig'
,
$data
);
}
}
return
$this
->
render
(
'playlist/edit.html.twig'
,
$data
);
}
/**
/**
* @Route("/playlist/{playlistId}/delete", name="playlist.delete")
* @Route("/playlist/{playlistId}/delete", name="playlist.delete")
...
...
templates/apidocs/base.html.twig
View file @
f55f44c8
...
@@ -11,29 +11,33 @@
...
@@ -11,29 +11,33 @@
<title>
{%
block
title
%}{%
endblock
%}
~ SpinShare API
</title>
<title>
{%
block
title
%}{%
endblock
%}
~ SpinShare API
</title>
<!-- Style -->
<!-- Style -->
<link
href=
"https://cdn.jsdelivr.net/gh/halfmoonui/halfmoon@1.
0.3
/css/halfmoon.min.css"
rel=
"stylesheet"
/>
<link
href=
"https://cdn.jsdelivr.net/gh/halfmoonui/halfmoon@1.
1.1
/css/halfmoon.min.css"
rel=
"stylesheet"
/>
<link
rel=
"stylesheet"
href=
"https://cdn.materialdesignicons.com/5.4.55/css/materialdesignicons.min.css"
/>
<link
rel=
"stylesheet"
href=
"https://cdn.materialdesignicons.com/5.4.55/css/materialdesignicons.min.css"
/>
<link
rel=
"stylesheet"
href=
"
{{
asset
(
'assets/css/apidocs.css?v='
~
date
()
.
timestamp
)
}}
"
/>
<link
rel=
"stylesheet"
href=
"
{{
asset
(
'assets/css/apidocs.css?v='
~
date
()
.
timestamp
)
}}
"
/>
</head>
</head>
<body
class=
"with-custom-webkit-scrollbars with-custom-css-scrollbars dark-mode"
data-dm-shortcut-enabled=
"true"
data-set-preferred-theme-onload=
"true"
>
<body
class=
"with-custom-webkit-scrollbars with-custom-css-scrollbars dark-mode"
data-dm-shortcut-enabled=
"true"
data-set-preferred-theme-onload=
"true"
>
<div
class=
"page-wrapper with-navbar with-sidebar"
>
<div
class=
"page-wrapper with-navbar with-sidebar"
>
<nav
class=
"navbar"
>
<nav
class=
"navbar
justify-content-between
"
>
<div
class=
"navbar-content"
>
<div
class=
"navbar-content"
>
<button
class=
"btn btn-action"
type=
"button"
onclick=
"halfmoon.toggleSidebar()"
>
<button
class=
"btn btn-action"
type=
"button"
onclick=
"halfmoon.toggleSidebar()"
>
<i
class=
"mdi mdi-menu"
aria-hidden=
"true"
></i>
<i
class=
"mdi mdi-menu"
aria-hidden=
"true"
></i>
<span
class=
"sr-only"
>
Toggle sidebar
</span>
<span
class=
"sr-only"
>
Toggle sidebar
</span>
</button>
</button>
<a
href=
"#"
class=
"navbar-brand"
>
<img
class=
"hidden-lm"
src=
"https://spinsha.re/assets/img/logo_colored_ondark.svg"
/>
<img
class=
"hidden-dm"
src=
"https://spinsha.re/assets/img/logo_colored_onwhite.svg"
/>
<span>
API Documentation
</span>
</a>
</div>
<div
class=
"navbar-content"
>
<a
href=
"
{{
path
(
'index.index'
)
}}
"
class=
"btn btn-danger btn-sm"
>
Back to SpinSha.re
</a>
</div>
</div>
<a
href=
"#"
class=
"navbar-brand"
>
<img
class=
"hidden-lm"
src=
"https://spinsha.re/assets/img/logo_colored_ondark.svg"
/>
<img
class=
"hidden-dm"
src=
"https://spinsha.re/assets/img/logo_colored_onwhite.svg"
/>
<span>
API Documentation
</span>
</a>
</nav>
</nav>
<div
class=
"sidebar"
>
<div
class=
"sidebar"
>
<div
class=
"sidebar-group"
>
<div
class=
"sidebar-group"
>
<h5
class=
"sidebar-title"
>
Getting started
</h5>
<h5
class=
"sidebar-title"
>
Getting started
</h5>
<div
class=
"sidebar-divider"
></div>
<div
class=
"sidebar-divider"
></div>
<a
href=
"
{{
path
(
'api.docs.introduction'
)
}}
"
class=
"sidebar-link sidebar-link-with-icon
{%
if
app.request.attributes.get
(
'_route'
)
==
'api.docs.introduction'
%}
active
{%
endif
%}
"
>
<a
href=
"
{{
path
(
'api.docs.introduction'
)
}}
"
class=
"sidebar-link sidebar-link-with-icon
{%
if
app.request.attributes.get
(
'_route'
)
==
'api.docs.introduction'
%}
active
{%
endif
%}
"
>
...
...
templates/apidocs/gettingstarted/introduction.html.twig
View file @
f55f44c8
...
@@ -26,36 +26,29 @@
...
@@ -26,36 +26,29 @@
<div
class=
"alert alert-primary"
role=
"alert"
>
<div
class=
"alert alert-primary"
role=
"alert"
>
<h4
class=
"alert-heading"
>
Last Update
</h4>
<h4
class=
"alert-heading"
>
Last Update
</h4>
This documentation was last updated on 11/
02/2020 at 17:59
CEST
This documentation was last updated on 11/
28/2020 at 15:05
CEST
</div>
</div>
<div
class=
"card"
>
<div
class=
"card"
>
<h2
class=
"card-title"
>
11/
02
/2020
</h2>
<h2
class=
"card-title"
>
11/
28
/2020
</h2>
<ul>
<ul>
<li>
Added preferred pronouns for user profiles
</li>
<li>
Deprecated the Open Discovery->Popular endpoint
</li>
<li>
Added a link to the main website
</li>
</ul>
</ul>
</div>
</div>
<div
class=
"card"
>
<div
class=
"card"
>
<h2
class=
"card-title"
>
1
0/14
/2020
</h2>
<h2
class=
"card-title"
>
1
1/02
/2020
</h2>
<ul>
<ul>
<li>
Updated Tournament output
</li>
<li>
Added preferred pronouns for user profiles
</li>
<lI>
Added Playlists
</lI>
</ul>
</ul>
</div>
</div>
<div
class=
"card"
>
<div
class=
"card"
>
<h2
class=
"card-title"
>
09/09
/2020
</h2>
<h2
class=
"card-title"
>
10/14
/2020
</h2>
<ul>
<ul>
<li>
Removed Charts, Reviews and SpinPlays from the UserDetail endpoint
</li>
<li>
Updated Tournament output
</li>
<li>
Renamed the UserDetail endpoint to UserOverview
</li>
<lI>
Added Playlists
</lI>
<li>
Added an endpoint for UserCharts, UserReviews and UserSpinPlays
</li>
<li>
Added song reference to the UserReviews endpoint
</li>
<li>
Added counts of charts, reviews and spinplays to the UserOverview endpoint
</li>
<li>
Ported the documentation to the main codebase
</li>
<li>
Added a deprecation warning to the PopularSongs endpoint
</li>
<li>
Added ConnectReview endpoint documentation
</li>
<li>
Added ConnectProfile endpoint documentation
</li>
</ul>
</ul>
</div>
</div>
</div>
</div>
...
...
templates/apidocs/open/discovery.html.twig
View file @
f55f44c8
...
@@ -248,45 +248,8 @@
...
@@ -248,45 +248,8 @@
<br
/>
<br
/>
<div
class=
"alert alert-secondary"
role=
"alert"
>
<div
class=
"alert alert-secondary"
role=
"alert"
>
<h4
class=
"alert-heading"
>
Deprecated
</h4>
<h4
class=
"alert-heading"
>
Deprecated
</h4>
This API-Endpoint w
ill soon be removed and shouldn't been
used anymore.
This API-Endpoint w
as deprecated and should not be
used anymore.
</div>
</div>
<br
/>
<strong>
Output Body (Success)
</strong>
<pre
class=
"code"
>
{
"version":1,
"status":200,
"data":[
{
"id": 3,
"title": "Isabelle Singing",
"subtitle": "K.K. Bubblegum",
"artist": "K.K. Slider",
"charter": "Ellite",
"hasEasyDifficulty": false,
"hasNormalDifficulty": false,
"hasHardDifficulty": true,
"hasExtremeDifficulty": false,
"hasXDDifficulty": false,
"cover":"https:\/\/spinsha.re\/uploads\/thumbnail\/spinshare_5e8df6fb90bd7.jpg",
"zip":"https:\/\/spinsha.re\/api\/song\/3\/download"
},
...
]
}
</pre>
<br
/>
<strong>
Output Body (Not Found)
</strong>
<pre
class=
"code"
>
{
"version":1,
"status":404,
"data":[]
}
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
...
...
templates/base.html.twig
View file @
f55f44c8
...
@@ -42,6 +42,7 @@
...
@@ -42,6 +42,7 @@
<a
class=
"item
{%
if
app.request.attributes.get
(
'_route'
)
==
'index.index'
or
app.request.attributes.get
(
'_route'
)
==
'index.new'
or
app.request.attributes.get
(
'_route'
)
==
'index.hot'
or
app.request.attributes.get
(
'_route'
)
==
'index.popular'
%}
active
{%
endif
%}
"
href=
"
{{
path
(
'index.index'
)
}}
"
><i
class=
"mdi mdi-home-outline"
></i></a>
<a
class=
"item
{%
if
app.request.attributes.get
(
'_route'
)
==
'index.index'
or
app.request.attributes.get
(
'_route'
)
==
'index.new'
or
app.request.attributes.get
(
'_route'
)
==
'index.hot'
or
app.request.attributes.get
(
'_route'
)
==
'index.popular'
%}
active
{%
endif
%}
"
href=
"
{{
path
(
'index.index'
)
}}
"
><i
class=
"mdi mdi-home-outline"
></i></a>
<a
class=
"item
{%
if
app.request.attributes.get
(
'_route'
)
==
'index.client'
%}
active
{%
endif
%}
"
href=
"
{{
path
(
'index.client'
)
}}
"
title=
"Download Client"
><i
class=
"mdi mdi-desktop-tower-monitor"
></i></a>
<a
class=
"item
{%
if
app.request.attributes.get
(
'_route'
)
==
'index.client'
%}
active
{%
endif
%}
"
href=
"
{{
path
(
'index.client'
)
}}
"
title=
"Download Client"
><i
class=
"mdi mdi-desktop-tower-monitor"
></i></a>
<a
class=
"item
{%
if
app.request.attributes.get
(
'_route'
)
==
'index.support'
%}
active
{%
endif
%}
"
href=
"
{{
path
(
'index.support'
)
}}
"
title=
"Support"
><i
class=
"mdi mdi-hand-heart"
></i></a>
<a
class=
"item
{%
if
app.request.attributes.get
(
'_route'
)
==
'index.support'
%}
active
{%
endif
%}
"
href=
"
{{
path
(
'index.support'
)
}}
"
title=
"Support"
><i
class=
"mdi mdi-hand-heart"
></i></a>
<a
class=
"item"
href=
"
{{
path
(
'api.docs.introduction'
)
}}
"
title=
"API Documentation"
><i
class=
"mdi mdi-api"
></i></a>
<a
class=
"item
{%
if
app.request.attributes.get
(
'_route'
)
==
'index.legal'
%}
active
{%
endif
%}
"
href=
"
{{
path
(
'index.legal'
)
}}
"
title=
"Legal"
><i
class=
"mdi mdi-gavel"
></i></a>
<a
class=
"item
{%
if
app.request.attributes.get
(
'_route'
)
==
'index.legal'
%}
active
{%
endif
%}
"
href=
"
{{
path
(
'index.legal'
)
}}
"
title=
"Legal"
><i
class=
"mdi mdi-gavel"
></i></a>
</nav>
</nav>
...
...
templates/emails/moderation/playlistRemoved.txt.twig
0 → 100644
View file @
f55f44c8
Hey there!
We are sorry to inform you that your playlist "
{{
playlist.title
}}
" was removed by a moderator of our team.
This action is permanent and cannot be undone.
------------------
spinsha.re
\ No newline at end of file
templates/index/base.html.twig
View file @
f55f44c8
...
@@ -9,7 +9,6 @@
...
@@ -9,7 +9,6 @@
<a
href=
"
{{
path
(
'index.index'
)
}}
"
class=
"tab
{%
if
app.request.attributes.get
(
'_route'
)
==
'index.index'
%}
active
{%
endif
%}
"
>
Frontpage
</a>
<a
href=
"
{{
path
(
'index.index'
)
}}
"
class=
"tab
{%
if
app.request.attributes.get
(
'_route'
)
==
'index.index'
%}
active
{%
endif
%}
"
>
Frontpage
</a>
<a
href=
"
{{
path
(
'index.new'
)
}}
"
class=
"tab
{%
if
app.request.attributes.get
(
'_route'
)
==
'index.new'
%}
active
{%
endif
%}
"
>
New
</a>
<a
href=
"
{{
path
(
'index.new'
)
}}
"
class=
"tab
{%
if
app.request.attributes.get
(
'_route'
)
==
'index.new'
%}
active
{%
endif
%}
"
>
New
</a>
<a
href=
"
{{
path
(
'index.hot'
)
}}
"
class=
"tab
{%
if
app.request.attributes.get
(
'_route'
)
==
'index.hot'
%}
active
{%
endif
%}
"
>
Hot
</a>
<a
href=
"
{{
path
(
'index.hot'
)
}}
"
class=
"tab
{%
if
app.request.attributes.get
(
'_route'
)
==
'index.hot'
%}
active
{%
endif
%}
"
>
Hot
</a>
<a
href=
"
{{
path
(
'index.popular'
)
}}
"
class=
"tab
{%
if
app.request.attributes.get
(
'_route'
)
==
'index.popular'
%}
active
{%
endif
%}
"
>
Popular
</a>
</div>
</div>
</header>
</header>
...
...
templates/index/index.html.twig
View file @
f55f44c8
{%
extends
'index/base.html.twig'
%}
{%
extends
'index/base.html.twig'
%}
{%
block
indexContent
%}
{%
block
indexContent
%}
{#
<div
class=
"frontpage"
>
<div class="srxd-birthday">
<div
class=
"social-buttons"
>
<div class="ceiling"></div>
<a
href=
"https://spinsha.re/discord"
class=
"item item-discord"
><i
class=
"mdi mdi-discord"
></i></a>
<div class="cake"></div>
<a
href=
"https://twitter.com/WeAreSpinShare"
class=
"item item-twitter"
><i
class=
"mdi mdi-twitter"
></i></a>
<a
href=
"https://www.youtube.com/channel/UCh7ftpzIqlHw5p_-HXHwMBw"
class=
"item item-youtube"
><i
class=
"mdi mdi-youtube"
></i></a>
<div class="balloons">
<a
href=
"https://twitch.tv/SpinShare"
class=
"item item-twitch"
><i
class=
"mdi mdi-twitch"
></i></a>
<a
href=
"https://patreon.com/spinshare"
class=
"item item-patreon"
><i
class=
"mdi mdi-patreon"
></i></a>
</div>
</div>
<div class="text">
<div
class=
"staff-promos"
>
<h1>Happy Birthday, Spin Rhythm XD!</h1>
{%
for
promo
in
promos
%}
<p>On this day, one year ago, Spin Rhythm XD was released on Steam!<br />Ever since that faithful day, the galaxy has not been the same!<br />We're so happy for the community Super Spin Digital gave us<br />and we wish them well for the future!</p>
<div
class=
"staff-promo"
style=
"background-image: url(
{{
asset
(
'uploads/promo/'
~
promo.imagePath
)
}}
);"
>
<div
class=
"promo-type"
style=
"color:
{{
promo.color
}}
;"
>
{{
promo.type
}}
</div>
<div
class=
"promo-title"
style=
"color:
{{
promo.textColor
}}
;"
>
{{
promo.title
|
raw
}}
</div>
{%
if
promo.buttonType
==
0
%}
{# Song #}
<a
href=
"
{{
path
(
'song.detail'
,
{
songId
:
promo.buttonData
}
)
}}
"
class=
"promo-button"
style=
"background-color:
{{
promo.color
}}
;"
>
CHECK IT OUT
</a>
{%
endif
%}
{%
if
promo.buttonType
==
2
%}
{# Search Query #}
<a
href=
"
{{
path
(
'search.index'
,
{
q
:
promo.buttonData
}
)
}}
"
class=
"promo-button"
style=
"background-color:
{{
promo.color
}}
;"
>
CHECK IT OUT
</a>
{%
endif
%}
{%
if
promo.buttonType
==
3
%}
{# External Link #}
<a
href=
"
{{
promo.buttonData
}}
"
target=
"_blank"
class=
"promo-button"
style=
"background-color:
{{
promo.color
}}
;"
>
CHECK IT OUT
</a>
{%
endif
%}
</div>
{%
endfor
%}
</div>
</div>
</div>
</div>
<script>
let DOMBalloons = document.querySelector(".balloons");
for(let i = 0; i < 6; i++) {
createBalloon(i);
createBalloon(i);
createBalloon(i);
}
function createBalloon(delayIndex) {
// Create DOM Element
let DOMBalloon = document.createElement("div");
DOMBalloon.classList.add("balloon");
DOMBalloon.style.animationDelay = -delayIndex * 0.8 + "s";
DOMBalloon.style.left = (Math.random() * 100) + "%";
let randomColor = Math.random() * 100;
if(randomColor > 66) {
DOMBalloon.classList.add("balloonRed");
} else if(randomColor > 33 && randomColor < 66) {
DOMBalloon.classList.add("balloonBlue");
} else {
DOMBalloon.classList.add("balloonGreen");
}
// Random Placement
DOMBalloons.appendChild(DOMBalloon);
}
</script>
<style>
.srxd-birthday {
background: #251333;
max-width: 1114px;
width: 90%;
margin: 0 auto;
border-radius: 10px;
margin-top: 50px;
padding: 25px;
padding-top: 100px;
position: relative;
overflow: hidden;
}
.srxd-birthday .balloons {
position: absolute;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
}
.srxd-birthday .balloons .balloon {
width: 65px;
height: 125px;
opacity: 0;
background-size: contain;
background-position: center;
background-repeat: no-repeat;
position: absolute;
animation: balloonAnim 5s linear infinite;
}
.srxd-birthday .balloons .balloonRed {
background-image: url('{{ asset('assets/img/birthday-balloonRed.svg') }}');
}
.srxd-birthday .balloons .balloonGreen {
background-image: url('{{ asset('assets/img/birthday-balloonGreen.svg') }}');
}
.srxd-birthday .balloons .balloonBlue {
background-image: url('{{ asset('assets/img/birthday-balloonBlue.svg') }}');
}
.srxd-birthday .text {
text-align: center;
}
.srxd-birthday .text h1 {
margin: 0;
font-size: 32px;
line-height: 1.1;
letter-spacing: 0.05em;
text-transform: uppercase;
font-family: 'Oswald', sans-serif;
}
.srxd-birthday .text p {
font-size: 1.15em;
}
.srxd-birthday .ceiling {
position: absolute;
left: 0px;
right: 0px;
top: 0px;
height: 70px;
background: url('{{ asset('assets/img/birthday-ceiling.svg') }}');
background-position: center;
background-size: contain;
}
.srxd-birthday .cake {
height: 100px;
background: url('{{ asset('assets/img/birthday-cake.svg') }}');
background-size: contain;
background-position: center;
background-repeat: no-repeat;
width: 90%;
margin: 0 auto;
margin-bottom: 50px;
}
@keyframes balloonAnim {
0% {
transform: translate(20px, 450px);
}
25% {
transform: translate(-20px, 307px);
}
50% {
transform: translate(20px, 164px);
opacity: 1;
}
75% {
transform: translate(-20px, 21px);
}
100% {
transform: translate(20px, -125px);
}
}
</style> #}
<div
class=
"staff-promos"
>
{%
for
promo
in
promos
%}
<div
class=
"staff-promo"
style=
"background-image: url(
{{
asset
(
'uploads/promo/'
~
promo.imagePath
)
}}
);"
>
<div
class=
"promo-type"
style=
"color:
{{
promo.color
}}
;"
>
{{
promo.type
}}
</div>
<div
class=
"promo-title"
style=
"color:
{{
promo.textColor
}}
;"
>
{{
promo.title
|
raw
}}
</div>
{%
if
promo.buttonType
==
0
%}
{# Song #}
<a
href=
"
{{
path
(
'song.detail'
,
{
songId
:
promo.buttonData
}
)
}}
"
class=
"promo-button"
style=
"background-color:
{{
promo.color
}}
;"
>
CHECK IT OUT
</a>
{%
endif
%}
{%
if
promo.buttonType
==
2
%}
{# Search Query #}
<a
href=
"
{{
path
(
'search.index'
,
{
q
:
promo.buttonData
}
)
}}
"
class=
"promo-button"
style=
"background-color:
{{
promo.color
}}
;"
>
CHECK IT OUT
</a>
{%
endif
%}
{%
if
promo.buttonType
==
3
%}
{# External Link #}
<a
href=
"
{{
promo.buttonData
}}
"
target=
"_blank"
class=
"promo-button"
style=
"background-color:
{{
promo.color
}}
;"
>
CHECK IT OUT
</a>
{%
endif
%}
</div>
{%
endfor
%}
</div>
<div
class=
"social-buttons"
>
<a
href=
"https://spinsha.re/discord"
class=
"item item-discord"
><i
class=
"mdi mdi-discord"
></i></a>
<a
href=
"https://twitter.com/WeAreSpinShare"
class=
"item item-twitter"
><i
class=
"mdi mdi-twitter"
></i></a>
<a
href=
"https://www.youtube.com/channel/UCh7ftpzIqlHw5p_-HXHwMBw"
class=
"item item-youtube"
><i
class=
"mdi mdi-youtube"
></i></a>
<a
href=
"https://twitch.tv/SpinShare"
class=
"item item-twitch"
><i
class=
"mdi mdi-twitch"
></i></a>
<a
href=
"https://patreon.com/spinshare"
class=
"item item-patreon"
><i
class=
"mdi mdi-patreon"
></i></a>
</div>
{%
endblock
%}
{%
endblock
%}
\ No newline at end of file
templates/index/popular.html.twig
deleted
100644 → 0
View file @
a25eabab
{%
extends
'index/base.html.twig'
%}
{%
block
indexContent
%}
<div
class=
"song-row song-row-popular"
>
<div
class=
"song-list"
>
{%
for
song
in
popularSongs
%}
{{
include
(
'components/song-item.html.twig'
,
{
song
:
song
}
)
}}
{%
endfor
%}
</div>
<div
class=
"pagination"
>
{%
if
popularOffset
>
0
%}
<a
href=
"
{{
path
(
'index.popular'
,
{
popularOffset
:
popularOffset
-
1
}
)
}}
"
class=
"button"
><i
class=
"mdi mdi-chevron-left"
></i>
PREVIOUS
</a>
{%
else
%}
<a
class=
"button button-disabled"
><i
class=
"mdi mdi-chevron-left"
></i>
PREVIOUS
</a>
{%
endif
%}
{%
if
popularSongs
|
length
<
12
%}
<a
class=
"button button-disabled"
>
NEXT
<i
class=
"mdi mdi-chevron-right"
></i></a>
{%
else
%}
<a
href=
"
{{
path
(
'index.popular'
,
{
popularOffset
:
popularOffset
+
1
}
)
}}
"
class=
"button"
>
NEXT
<i
class=
"mdi mdi-chevron-right"
></i></a>
{%
endif
%}
</div>
</div>
{%
endblock
%}
\ No newline at end of file
templates/playlist/detail.html.twig
View file @
f55f44c8
...
@@ -27,6 +27,32 @@
...
@@ -27,6 +27,32 @@
<div
class=
"playlist-description"
>
<div
class=
"playlist-description"
>
{{
playlist.description
|
nl2br
}}
{{
playlist.description
|
nl2br
}}
</div>
</div>
{%
if
app.user
==
user
%}
<div
class=
"playlist-actions"
>
<div
class=
"action-row"
>
<a
href=
"
{{
path
(
'playlist.edit'
,
{
playlistId
:
playlist.id
}
)
}}
"
class=
"action"
>
<div
class=
"icon"
>
<i
class=
"mdi mdi-pencil"
></i>
</div>
</a>
<a
href=
"
{{
path
(
'playlist.delete'
,
{
playlistId
:
playlist.id
}
)
}}
"
class=
"action"
>
<div
class=
"icon"
>
<i
class=
"mdi mdi-delete"
></i>
</div>
</a>
</div>
</div>
{%
elseif
is_granted
(
'ROLE_MODERATOR'
)
%}
<div
class=
"playlist-actions"
>
<div
class=
"action-row"
>
<a
href=
"
{{
path
(
'moderation.playlist.remove'
,
{
playlistId
:
playlist.id
}
)
}}
"
class=
"action"
>
<div
class=
"icon"
>
<i
class=
"mdi mdi-delete"
></i>
</div>
</a>
</div>
</div>
{%
endif
%}
{%
if
not
playlist.isOfficial
%}
{%
if
not
playlist.isOfficial
%}
<div
class=
"playlist-uploader"
>
<div
class=
"playlist-uploader"
>
<div
class=
"label"
>
Created by
</div>
<div
class=
"label"
>
Created by
</div>
...
...
templates/playlist/edit.html.twig
0 → 100644
View file @
f55f44c8
{%
extends
'base.html.twig'
%}
{%
block
title
%}
Edit a Playlist
{%
endblock
%}
{%
block
content
%}
<section
class=
"section-upload"
>
{{
form_start
(
form
)
}}
{%
for
label
,
messages
in
app.flashes
%}
{%
for
message
in
messages
%}
<div
class=
"flashbang flashbang-
{{
label
}}
"
>
{{
message
}}
</div>
{%
endfor
%}
{%
endfor
%}
<div
class=
"box"
>
<div
class=
"title"
>
Edit Playlist
</div>
<div
class=
"tags-input"
>
{{
form_row
(
form.title
)
}}
</div>
<div
class=
"tags-input"
>
{{
form_row
(
form.description
)
}}
</div>
<div
class=
"upload-input"
>
{{
form_row
(
form.coverPath
)
}}
<div
class=
"upload-input-select active"
>
<i
class=
"mdi mdi-folder-upload"
></i>
<div>
SELECT A COVER
<br
/>
FOR YOUR PLAYLIST
</div>
</div>
<div
class=
"upload-input-selected"
>
<i
class=
"mdi mdi-folder-image"
></i>
<div></div>
</div>
</div>
<div
class=
"actions"
>
{{
form_row
(
form.save
)
}}
</div>
</div>
{{
form_end
(
form
)
}}
</section>
{%
endblock
%}
{%
block
scripts
%}
<script
src=
"
{{
asset
(
'assets/js/upload.js'
)
}}
"
></script>
{%
endblock
%}
{%
block
styles
%}
<link
rel=
"stylesheet"
href=
"
{{
asset
(
'assets/css/upload.css?v='
~
date
()
.
timestamp
)
}}
"
/>
{%
endblock
%}
templates/user/detail-playlists.html.twig
View file @
f55f44c8
...
@@ -19,15 +19,12 @@
...
@@ -19,15 +19,12 @@
</div>
</div>
{%
else
%}
{%
else
%}
<div
class=
"list-noresults"
>
<div
class=
"list-noresults"
>
<!-- <div class="noresults-text">This user did not create any playlists yet.</div> -->
<div
class=
"noresults-text"
>
This user did not create any playlists yet.
</div>
<div
class=
"noresults-text"
>
Coming Soon!
</div>
</div>
</div>
{%
endif
%}
{%
endif
%}
</div>
</div>
{%
if
(
is_granted
(
'ROLE_MODERATOR'
)
and
user.id
==
app.user.id
)
%}
<div
class=
"playlist-action"
>
<div
class=
"playlist-action"
>
<a
href=
"
{{
path
(
'playlist.create'
)
}}
"
class=
"button"
>
Add New
</a>
<a
href=
"
{{
path
(
'playlist.create'
)
}}
"
class=
"button"
>
Add New
</a>
</div>
</div>
{%
endif
%}
{%
endblock
%}
{%
endblock
%}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment