diff options
-rw-r--r-- | client/src/app/account/account.component.html | 4 | ||||
-rw-r--r-- | client/src/app/core/menu/menu-admin.component.scss | 1 | ||||
-rw-r--r-- | client/src/app/shared/search/search.component.html | 1 | ||||
-rw-r--r-- | client/src/app/videos/video-watch/video-watch.component.html | 153 | ||||
-rw-r--r-- | client/src/app/videos/video-watch/video-watch.component.scss | 166 | ||||
-rw-r--r-- | client/src/sass/_variables.scss | 9 | ||||
-rw-r--r-- | client/src/sass/application.scss | 6 |
7 files changed, 199 insertions, 141 deletions
diff --git a/client/src/app/account/account.component.html b/client/src/app/account/account.component.html index 24bcdf947..c0995dad0 100644 --- a/client/src/app/account/account.component.html +++ b/client/src/app/account/account.component.html | |||
@@ -1,5 +1,6 @@ | |||
1 | <h3>Account</h3> | 1 | <h3>Account</h3> |
2 | 2 | ||
3 | <div class="col-md-6 col-sm-12"> | ||
3 | <div class="panel panel-default"> | 4 | <div class="panel panel-default"> |
4 | <div class="panel-heading">Change password</div> | 5 | <div class="panel-heading">Change password</div> |
5 | 6 | ||
@@ -7,7 +8,9 @@ | |||
7 | <my-account-change-password></my-account-change-password> | 8 | <my-account-change-password></my-account-change-password> |
8 | </div> | 9 | </div> |
9 | </div> | 10 | </div> |
11 | </div> | ||
10 | 12 | ||
13 | <div class="col-md-6 col-sm-12"> | ||
11 | <div class="panel panel-default"> | 14 | <div class="panel panel-default"> |
12 | <div class="panel-heading">Update my informations</div> | 15 | <div class="panel-heading">Update my informations</div> |
13 | 16 | ||
@@ -15,3 +18,4 @@ | |||
15 | <my-account-details [user]="user"></my-account-details> | 18 | <my-account-details [user]="user"></my-account-details> |
16 | </div> | 19 | </div> |
17 | </div> | 20 | </div> |
21 | </div> | ||
diff --git a/client/src/app/core/menu/menu-admin.component.scss b/client/src/app/core/menu/menu-admin.component.scss index 487461224..04403950e 100644 --- a/client/src/app/core/menu/menu-admin.component.scss +++ b/client/src/app/core/menu/menu-admin.component.scss | |||
@@ -9,6 +9,7 @@ menu { | |||
9 | height: 30px; | 9 | height: 30px; |
10 | color: #9cabb8; | 10 | color: #9cabb8; |
11 | cursor: pointer; | 11 | cursor: pointer; |
12 | transition: color 0.3s; | ||
12 | 13 | ||
13 | &:hover, &:focus { | 14 | &:hover, &:focus { |
14 | text-decoration: none !important; | 15 | text-decoration: none !important; |
diff --git a/client/src/app/shared/search/search.component.html b/client/src/app/shared/search/search.component.html index b03b977dc..c6c6ff6a8 100644 --- a/client/src/app/shared/search/search.component.html +++ b/client/src/app/shared/search/search.component.html | |||
@@ -1,4 +1,3 @@ | |||
1 | |||
2 | <div class="input-group"> | 1 | <div class="input-group"> |
3 | 2 | ||
4 | <span class="input-group-addon icon-addon"> | 3 | <span class="input-group-addon icon-addon"> |
diff --git a/client/src/app/videos/video-watch/video-watch.component.html b/client/src/app/videos/video-watch/video-watch.component.html index ed26b513e..989de0de4 100644 --- a/client/src/app/videos/video-watch/video-watch.component.html +++ b/client/src/app/videos/video-watch/video-watch.component.html | |||
@@ -31,52 +31,36 @@ | |||
31 | </div> | 31 | </div> |
32 | 32 | ||
33 | <div *ngIf="video !== null" id="video-info"> | 33 | <div *ngIf="video !== null" id="video-info"> |
34 | <div class="row" id="video-name-actions"> | 34 | <div class="row video-name-views"> |
35 | <div class="col-md-6"> | 35 | <div id="video-name" class="col-md-8"> |
36 | <div class="row"> | 36 | {{ video.name }} |
37 | <div id="video-name" class="col-md-12"> | 37 | </div> |
38 | {{ video.name }} | ||
39 | </div> | ||
40 | </div> | ||
41 | 38 | ||
42 | <div class="row"> | 39 | <div class="col-md-4 pull-right video-views"> |
43 | <div class="col-md-12" id="video-by-date"> | 40 | {{ video.views}} views |
44 | <span id="video-by"> | ||
45 | from | ||
46 | <a [routerLink]="['/videos/list', { field: 'author', search: video.author }]" class="video-miniature-author"> | ||
47 | {{ video.by }} | ||
48 | </a> | ||
49 | </span> | ||
50 | <span id="video-date">on {{ video.createdAt | date:'short' }}</span> | ||
51 | </div> | ||
52 | </div> | ||
53 | </div> | 41 | </div> |
42 | </div> | ||
54 | 43 | ||
55 | <div id="video-actions" class="col-md-6 text-right"> | 44 | <div class="row video-small-blocks"> |
56 | <div id="rates"> | 45 | <div class="col-md-3 video-small-block video-small-block-author"> |
57 | <button | 46 | <a title="Access to all videos of this user" [routerLink]="['/videos/list', { field: 'author', search: video.author }]"> |
58 | id="likes" class="btn btn-default" | 47 | {{ video.by }} |
59 | [ngClass]="{ 'not-interactive-btn': !isUserLoggedIn(), 'activated-btn': userRating === 'like' }" (click)="setLike()" | 48 | </a> |
60 | > | 49 | </div> |
61 | <span class="glyphicon glyphicon-thumbs-up"></span> {{ video.likes }} | ||
62 | </button> | ||
63 | |||
64 | <button | ||
65 | id="dislikes" class="btn btn-default" | ||
66 | [ngClass]="{ 'not-interactive-btn': !isUserLoggedIn(), 'activated-btn': userRating === 'dislike' }" (click)="setDislike()" | ||
67 | > | ||
68 | <span class=" glyphicon glyphicon-thumbs-down"></span> {{ video.dislikes }} | ||
69 | </button> | ||
70 | </div> | ||
71 | 50 | ||
72 | <button id="share" class="btn btn-default" (click)="showShareModal()"> | 51 | <div class="col-md-3 video-small-block video-small-block-share"> |
73 | <span class="glyphicon glyphicon-share"></span> Share | 52 | <a class="option" (click)="showShareModal()" title="Share the video"> |
74 | </button> | 53 | <span class="glyphicon glyphicon-share"></span> |
54 | <span class="video-small-block-text">Share</span> | ||
55 | </a> | ||
56 | </div> | ||
75 | 57 | ||
76 | <div class="btn-group" dropdown> | 58 | <div class="col-md-3 video-small-block video-small-block-more"> |
77 | <button id="single-button" type="button" id="more" class="btn btn-default" dropdownToggle> | 59 | <div class="video-small-block-dropdown" dropdown dropup="true" placement="right"> |
78 | <span class="glyphicon glyphicon-option-horizontal"></span> More | 60 | <a class="option" title="Access to more options" dropdownToggle> |
79 | </button> | 61 | <span class="glyphicon glyphicon-option-horizontal"></span> |
62 | <span class="video-small-block-text">More</span> | ||
63 | </a> | ||
80 | 64 | ||
81 | <ul *dropdownMenu class="dropdown-menu" id="more-menu" role="menu" aria-labelledby="single-button"> | 65 | <ul *dropdownMenu class="dropdown-menu" id="more-menu" role="menu" aria-labelledby="single-button"> |
82 | <li *ngIf="canUserUpdateVideo()" role="menuitem"> | 66 | <li *ngIf="canUserUpdateVideo()" role="menuitem"> |
@@ -87,7 +71,7 @@ | |||
87 | 71 | ||
88 | <li role="menuitem"> | 72 | <li role="menuitem"> |
89 | <a class="dropdown-item" title="Get magnet URI" href="#" (click)="showMagnetUriModal($event)"> | 73 | <a class="dropdown-item" title="Get magnet URI" href="#" (click)="showMagnetUriModal($event)"> |
90 | <span class="glyphicon glyphicon-magnet"></span> Magnet | 74 | <span class="glyphicon glyphicon-magnet"></span> Magnet |
91 | </a> | 75 | </a> |
92 | </li> | 76 | </li> |
93 | 77 | ||
@@ -111,45 +95,70 @@ | |||
111 | </ul> | 95 | </ul> |
112 | </div> | 96 | </div> |
113 | </div> | 97 | </div> |
114 | </div> | ||
115 | 98 | ||
116 | <div id="video-tags-views" class="row"> | 99 | <div class="col-md-3 video-small-block video-small-block-rating"> |
117 | <div class="col-md-8"> | 100 | <div class="video-small-block-like"> |
118 | <a *ngFor="let tag of video.tags" [routerLink]="['/videos/list', { field: 'tags', search: tag }]" class="label label-primary"> | 101 | <span |
119 | {{ tag }} | 102 | class="glyphicon glyphicon-thumbs-up" title="Like this video" |
120 | </a> | 103 | [ngClass]="{ 'interactive': isUserLoggedIn(), 'activated': userRating === 'like' }" (click)="setLike()" |
121 | </div> | 104 | ></span> |
122 | 105 | ||
123 | <div id="video-views" class="col-md-4 text-right"> | 106 | <span class="video-small-block-text"> |
124 | {{ video.views }} views | 107 | {{ video.likes }} |
125 | </div> | 108 | </span> |
126 | </div> | 109 | </div> |
127 | 110 | ||
128 | <div id="video-category" class="row"> | 111 | <div class="video-small-block-dislike"> |
129 | <div class="col-md-12"> | 112 | <span |
130 | <span id="category-label">Category:</span> | 113 | class="glyphicon glyphicon-thumbs-down" title="Dislike this video" |
131 | {{ video.categoryLabel }} | 114 | [ngClass]="{ 'interactive': isUserLoggedIn(), 'activated': userRating === 'dislike' }" (click)="setDislike()" |
132 | </div> | 115 | ></span> |
133 | </div> | ||
134 | 116 | ||
135 | <div id="video-licence" class="row"> | 117 | <span class="video-small-block-text"> |
136 | <div class="col-md-12"> | 118 | {{ video.dislikes }} |
137 | <span id="licence-label">Licence:</span> | 119 | </span> |
138 | {{ video.licenceLabel }} | 120 | </div> |
139 | </div> | 121 | </div> |
140 | </div> | 122 | </div> |
141 | 123 | ||
142 | <div id="video-language" class="row"> | 124 | <div class="row video-details"> |
143 | <div class="col-md-12"> | 125 | <div class="video-details-date-description col-md-9"> |
144 | <span id="language-label">Language:</span> | 126 | <div class="video-details-date"> |
145 | {{ video.languageLabel }} | 127 | Published on {{ video.createdAt | date:'short' }} |
128 | </div> | ||
129 | |||
130 | <div class="video-details-description"> | ||
131 | {{ video.description }} | ||
132 | </div> | ||
146 | </div> | 133 | </div> |
147 | </div> | ||
148 | 134 | ||
149 | <div id="video-description" class="row"> | 135 | <div class="video-details-attributes col-md-3"> |
150 | <div class="col-md-12"> | 136 | <div class="video-details-attribute"> |
151 | <div id="description-label">Description</div> | 137 | <span class="video-details-attribute-label"> |
152 | {{ video.description }} | 138 | Category: |
139 | </span> | ||
140 | <span class="video-details-attribute-value"> | ||
141 | {{ video.categoryLabel }} | ||
142 | </span> | ||
143 | </div> | ||
144 | |||
145 | <div class="video-details-attribute"> | ||
146 | <span class="video-details-attribute-label"> | ||
147 | Licence: | ||
148 | </span> | ||
149 | <span class="video-details-attribute-value"> | ||
150 | {{ video.licenceLabel }} | ||
151 | </span> | ||
152 | </div> | ||
153 | |||
154 | <div class="video-details-attribute"> | ||
155 | <span class="video-details-attribute-label"> | ||
156 | Language: | ||
157 | </span> | ||
158 | <span class="video-details-attribute-value"> | ||
159 | {{ video.languageLabel }} | ||
160 | </span> | ||
161 | </div> | ||
153 | </div> | 162 | </div> |
154 | </div> | 163 | </div> |
155 | </div> | 164 | </div> |
diff --git a/client/src/app/videos/video-watch/video-watch.component.scss b/client/src/app/videos/video-watch/video-watch.component.scss index 92192221f..cd9d71fb4 100644 --- a/client/src/app/videos/video-watch/video-watch.component.scss +++ b/client/src/app/videos/video-watch/video-watch.component.scss | |||
@@ -32,102 +32,136 @@ | |||
32 | } | 32 | } |
33 | 33 | ||
34 | #video-info { | 34 | #video-info { |
35 | border-top: 1px solid rgba(0, 0, 0, 0.1); | 35 | .video-name-views { |
36 | margin-top: 10px; | 36 | font-weight: bold; |
37 | padding-top: 5px; | 37 | font-size: 18px; |
38 | 38 | height: $video-watch-title-height; | |
39 | #video-name-actions { | 39 | line-height: $video-watch-title-height; |
40 | 40 | padding: 0 30px; | |
41 | #video-name { | ||
42 | font-size: 20px; | ||
43 | } | ||
44 | 41 | ||
45 | .btn .glyphicon { | 42 | .video-views { |
46 | position: relative; | 43 | text-align: right; |
47 | top: 2px; | ||
48 | } | 44 | } |
45 | } | ||
49 | 46 | ||
50 | #rates { | 47 | .video-small-blocks { |
51 | display: inline-block; | 48 | height: 150px; |
52 | margin-right: 20px; | 49 | color: $video-watch-info-color; |
50 | border-color: $video-watch-border-color; | ||
51 | border-width: 1px 0px; | ||
52 | border-style: solid; | ||
53 | |||
54 | .video-small-block { | ||
55 | height: $video-watch-info-height; | ||
56 | display: flex; | ||
57 | flex-direction: column; | ||
58 | justify-content: center; | ||
59 | text-align: center; | ||
60 | |||
61 | a { | ||
62 | cursor: pointer; | ||
63 | transition: color 0.3s; | ||
64 | |||
65 | &, &:hover { | ||
66 | color: inherit; | ||
67 | text-decoration:none; | ||
68 | } | ||
53 | 69 | ||
54 | // Remove focus style | 70 | &:hover { |
55 | .btn:focus { | 71 | color: #000 !important; |
56 | outline: 0; | 72 | } |
57 | } | 73 | } |
58 | 74 | ||
59 | .activated-btn { | 75 | .option .glyphicon { |
60 | color: #333; | 76 | font-size: 22px; |
61 | background-color: #e6e6e6; | 77 | color: inherit; |
62 | border-color: #8c8c8c; | 78 | opacity: 0.9; |
79 | margin-bottom: 10px; | ||
63 | } | 80 | } |
64 | 81 | ||
65 | .not-interactive-btn { | 82 | .video-small-block-text { |
66 | cursor: default; | 83 | font-size: 15px; |
67 | 84 | font-weight: bold; | |
68 | &:hover, &:focus, &:active { | ||
69 | color: #333; | ||
70 | background-color: #fff; | ||
71 | border-color: #ccc; | ||
72 | box-shadow: none; | ||
73 | outline: 0; | ||
74 | } | ||
75 | } | 85 | } |
76 | } | 86 | } |
77 | 87 | ||
78 | #share, #more { | 88 | .video-small-block:not(:last-child) { |
79 | font-weight: bold; | 89 | border-width: 0 1px 0 0; |
80 | opacity: 0.85; | 90 | border-color: $video-watch-border-color; |
91 | border-style: solid; | ||
81 | } | 92 | } |
82 | 93 | ||
83 | #more-menu .dropdown-item .glyphicon { | 94 | .video-small-block-author { |
84 | margin-right: 5px; | 95 | font-size: 15px; |
96 | font-weight: bold; | ||
85 | } | 97 | } |
86 | } | ||
87 | 98 | ||
88 | #video-by-date { | 99 | .video-small-block-share, .video-small-block-more { |
89 | font-size: 13px; | 100 | a.option { |
90 | opacity: 0.6; | 101 | display: block; |
91 | 102 | ||
92 | a { | 103 | .glyphicon { |
93 | color: black; | 104 | display: block; |
105 | } | ||
106 | } | ||
94 | } | 107 | } |
95 | 108 | ||
96 | #video-date:before { | 109 | .video-small-block-more .video-small-block-dropdown { |
97 | content: '\002022'; | 110 | position: relative; |
98 | margin: 0 5px; | 111 | |
112 | .dropdown-item .glyphicon { | ||
113 | margin-right: 5px; | ||
114 | } | ||
99 | } | 115 | } |
100 | } | ||
101 | 116 | ||
102 | #video-tags-views { | 117 | .video-small-block-rating { |
103 | margin-top: 10px; | ||
104 | 118 | ||
105 | a { | 119 | .video-small-block-like { |
106 | margin-right: 5px; | 120 | margin-bottom: 10px; |
107 | } | 121 | } |
108 | 122 | ||
109 | #video-views { | 123 | .video-small-block-text { |
110 | font-weight: bold; | 124 | vertical-align: top; |
111 | } | 125 | } |
112 | } | ||
113 | 126 | ||
114 | #video-category { | 127 | .glyphicon { |
115 | margin-top: 10px; | 128 | font-size: 18px; |
129 | margin: 0 10px 0 0; | ||
130 | } | ||
116 | 131 | ||
117 | #category-label { | 132 | .interactive { |
118 | font-weight: bold; | 133 | cursor: pointer; |
134 | transition: color 0.3s; | ||
135 | |||
136 | &.activated, &:hover { | ||
137 | color: #000; | ||
138 | } | ||
139 | } | ||
119 | } | 140 | } |
120 | } | 141 | } |
121 | 142 | ||
122 | #video-licence #licence-label, #video-language #language-label { | 143 | .video-details { |
123 | font-weight: bold; | 144 | margin-top: 30px; |
124 | } | ||
125 | 145 | ||
126 | #video-description { | 146 | .video-details-date-description { |
127 | margin-top: 10px; | 147 | padding-left: 30px; |
128 | 148 | ||
129 | #description-label { | 149 | .video-details-date { |
150 | font-weight: bold; | ||
151 | margin-bottom: 30px; | ||
152 | } | ||
153 | } | ||
154 | |||
155 | .video-details-attributes { | ||
130 | font-weight: bold; | 156 | font-weight: bold; |
157 | font-size: 12px; | ||
158 | |||
159 | .video-details-attribute-label { | ||
160 | color: $video-watch-info-color; | ||
161 | display: inline-block; | ||
162 | width: 60px; | ||
163 | margin-right: 5px; | ||
164 | } | ||
131 | } | 165 | } |
132 | } | 166 | } |
133 | } | 167 | } |
diff --git a/client/src/sass/_variables.scss b/client/src/sass/_variables.scss index be57db304..1b91434ba 100644 --- a/client/src/sass/_variables.scss +++ b/client/src/sass/_variables.scss | |||
@@ -1,8 +1,15 @@ | |||
1 | $grey-color: #555; | ||
2 | |||
1 | $black-background: #1d2125; | 3 | $black-background: #1d2125; |
2 | $grey-background: #f6f2f2; | 4 | $grey-background: #f6f2f2; |
3 | 5 | ||
4 | $header-height: 60px; | 6 | $header-height: 65px; |
5 | $header-border-color: #e9eff6; | 7 | $header-border-color: #e9eff6; |
6 | 8 | ||
7 | $video-miniature-title-color: #16a2b7; | 9 | $video-miniature-title-color: #16a2b7; |
8 | $video-miniature-other-infos: #686767; | 10 | $video-miniature-other-infos: #686767; |
11 | |||
12 | $video-watch-border-color: #eceef4; | ||
13 | $video-watch-title-height: 90px; | ||
14 | $video-watch-info-color: #8e909b; | ||
15 | $video-watch-info-height: 150px; | ||
diff --git a/client/src/sass/application.scss b/client/src/sass/application.scss index 25d79a0cb..d65cd8c64 100644 --- a/client/src/sass/application.scss +++ b/client/src/sass/application.scss | |||
@@ -13,6 +13,10 @@ input.readonly { | |||
13 | border-radius: 0; | 13 | border-radius: 0; |
14 | } | 14 | } |
15 | 15 | ||
16 | .dropdown-menu { | ||
17 | border-radius: 0; | ||
18 | } | ||
19 | |||
16 | .glyphicon-black { | 20 | .glyphicon-black { |
17 | color: black; | 21 | color: black; |
18 | } | 22 | } |
@@ -61,7 +65,7 @@ input.readonly { | |||
61 | 65 | ||
62 | #peertube-title { | 66 | #peertube-title { |
63 | background-color: #fff; | 67 | background-color: #fff; |
64 | border-right: 2px solid $header-border-color; | 68 | border-right: 1px solid $header-border-color; |
65 | font-size: 25px; | 69 | font-size: 25px; |
66 | line-height: $header-height; | 70 | line-height: $header-height; |
67 | text-align: center; | 71 | text-align: center; |