diff --git a/src/apis/auth.php b/src/apis/auth.php index 1e206e5..9626b05 100755 --- a/src/apis/auth.php +++ b/src/apis/auth.php @@ -10,14 +10,14 @@ $data = json_decode(file_get_contents("php://input")); if(isset($_GET['act']) && $_GET['act'] == 'login') { if($data->usr == 'admin' && $data->pwd == 'JohnHolmes') { $content->status = 200; - $content->authToken = base64_encode(date("Y-m-d")); + $content->authToken = base64_encode('admin:JohnHolmes'.date("Y-m-d")); } else { $content->status = 403; } } else if(isset($_GET['act']) && $_GET['act'] == 'check') { - if($data->token == base64_encode(date("Y-m-d"))) { + if($data->token == base64_encode('admin:JohnHolmes'.date("Y-m-d"))) { $content->status = 200; - $content->authToken = base64_encode(date("Y-m-d")); + $content->authToken = base64_encode('admin:JohnHolmes'.date("Y-m-d")); } else { $content->status = 403; } diff --git a/src/apis/remove.php b/src/apis/remove.php new file mode 100644 index 0000000..6051c5a --- /dev/null +++ b/src/apis/remove.php @@ -0,0 +1,16 @@ +imageUrl = 'http://unsplash.it/800/600'; + +header("Access-Control-Allow-Origin: *"); +header("Content-Type: application/json; charset=UTF-8"); +header("Access-Control-Allow-Methods: GET"); +header("Access-Control-Max-Age: 3600"); + +echo json_encode($content); + +?> diff --git a/src/app/admin/admin.component.html b/src/app/admin/admin.component.html index df32ada..97cb952 100644 --- a/src/app/admin/admin.component.html +++ b/src/app/admin/admin.component.html @@ -29,12 +29,12 @@
Add work -
-
+ +
Title
-
+
Type +
Gallery
-
- Tags - -
-
- Main image - -
Exhibitions
- +
Selected Videos @@ -105,8 +101,12 @@ {{sv.type}} | {{sv.url}}
+
+ +
+ diff --git a/src/app/admin/admin.component.ts b/src/app/admin/admin.component.ts index ed9b305..e441e1e 100644 --- a/src/app/admin/admin.component.ts +++ b/src/app/admin/admin.component.ts @@ -13,6 +13,7 @@ import { editorConfig } from '../../config/config' export class AdminComponent implements OnInit { private restApi = `${environment.API_URL}` + public basePath = `${environment.BASE_PATH}` public authCheck: boolean = false public userName: string = '' @@ -29,7 +30,7 @@ export class AdminComponent implements OnInit { public type: string = '' public content: string = '' public tags: string = '' - public mainImage: any = null + public mainImage: string = '' public videoType: string = '' public videoURL: string = '' @@ -42,18 +43,6 @@ export class AdminComponent implements OnInit { ngOnInit(): void { - this.selectedGallery = [ - { - main: true, - title: '', - url: 'http://unsplash.it/800/600' - }, - { - title: '', - url: 'http://unsplash.it/800/700' - } - ] - const body = { token: window.sessionStorage.getItem('authToken') } this.authService.authCheck(body).toPromise().then((response) => { this.authCheck = response.status == 200 @@ -119,6 +108,8 @@ export class AdminComponent implements OnInit { onFileChanged(e) { const file = (e.target).files[0] const uploadData = new FormData() + uploadData.append('token', window.sessionStorage.getItem('authToken')) + uploadData.append('path', 'assets') uploadData.append('file', file, file.name) this.apisService.uploadImage(uploadData).toPromise().then((response) => { this.selectedGallery.push({ @@ -143,7 +134,11 @@ export class AdminComponent implements OnInit { } galleryRemove(url): void { - this.apisService.removeImage(url).toPromise().then((response) => { + const body = { + token: window.sessionStorage.getItem('authToken'), + url: url + } + this.apisService.removeImage(body).toPromise().then((response) => { this.selectedGallery = this.selectedGallery.filter(item => item.url != url) },(error) => { console.error(error) @@ -151,4 +146,55 @@ export class AdminComponent implements OnInit { console.error(e) }) } + + saveWork(): void { + + let error = false + let errorMessages = [] + const mainImage = this.selectedGallery.filter(item => item.main) + + if(!this.title){ + error = true + errorMessages.push('No title') + } + if(!this.type){ + error = true + errorMessages.push('No type selected') + } + if(this.selectedGallery.length == 0 || mainImage.length == 0){ + error = true + errorMessages.push('No main image selected') + } + + if(error) { + console.log('ERORS:',errorMessages) + } else { + const body = { + token: window.sessionStorage.getItem('authToken'), + title: this.title, + content: this.content, + type: this.type, + tags: this.tags, + image: mainImage[0].url, + exhibitions: this.selectedExhibitions.map(a => a.id).join(','), + gallery: JSON.stringify(this.selectedGallery), + videos: JSON.stringify(this.selectedVideos) + } + + this.apisService.saveWork(body).toPromise().then((response) => { + console.log(response) + this.title = '' + this.content = '' + this.type = '' + this.tags = '' + this.selectedExhibitions = [] + this.selectedGallery = [] + this.selectedVideos = [] + },(error) => { + console.error(error) + }).catch((e) => { + console.error(e) + }) + } + } } diff --git a/src/app/services/apis.service.ts b/src/app/services/apis.service.ts index 106aab6..4f730e1 100644 --- a/src/app/services/apis.service.ts +++ b/src/app/services/apis.service.ts @@ -38,9 +38,16 @@ export class ApisService extends BaseService { ) } - removeImage(url): Observable { - let urlApi = `${this.restApi}remove.php?url=${url}` - return this.http.get(urlApi).pipe( + removeImage(body): Observable { + let urlApi = `${this.restApi}remove.php` + return this.http.post(urlApi, JSON.stringify(body)).pipe( + catchError(this.handleError) + ) + } + + saveWork(body): Observable { + let urlApi = `${this.restApi}work.php?act=save` + return this.http.post(urlApi, JSON.stringify(body)).pipe( catchError(this.handleError) ) } diff --git a/src/assets/scss/forms.scss b/src/assets/scss/forms.scss index 8281026..d60b308 100644 --- a/src/assets/scss/forms.scss +++ b/src/assets/scss/forms.scss @@ -57,6 +57,7 @@ select { appearance: none; color: $white; border: none; + border-radius: 4px; background: $black; display: inline-block; padding: 10px 20px 10px 20px !important; diff --git a/src/assets/scss/global.scss b/src/assets/scss/global.scss index 03331ed..b39e98f 100644 --- a/src/assets/scss/global.scss +++ b/src/assets/scss/global.scss @@ -28,6 +28,10 @@ button { .w-#{$size} {width: percentage($size/100) !important;} } +.text-right {text-align: right !important;} +.text-center {text-align: center !important;} +.text-left {text-align: left !important;} + .particles { position: fixed; top: 0; diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index 66a3c6b..bf9c1f7 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -1,4 +1,5 @@ export const environment = { production: true, - API_URL: `https://apis.dslak.it/` + API_URL: `https://apis.dslak.it/`, + BASE_PATH: `https://apis.dslak.it/` } diff --git a/src/environments/environment.ts b/src/environments/environment.ts index 2710fb4..32977b6 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -1,4 +1,5 @@ export const environment = { production: false, - API_URL: `http://dslakng.local/apis/` + API_URL: `http://dslakng.local/apis/`, + BASE_PATH: `http://dslakng.local` }