diff --git a/frontend/src/components/editable/blog-list.jsx b/frontend/src/components/editable/blog-list.jsx index 7326391..eef5f6b 100755 --- a/frontend/src/components/editable/blog-list.jsx +++ b/frontend/src/components/editable/blog-list.jsx @@ -2,7 +2,6 @@ import React from 'react'; import ReactDOM from 'react-dom'; import { useEffect, useState } from 'react'; import EditableDataService from '../../services/editable-data-service'; -import MediaService from '../../services/media-service'; import CardListViewer from './shared/card-list-viewer'; import CategoryBar from './shared/category-bar'; import { @@ -20,6 +19,7 @@ import { import { useNavigate, useParams } from 'react-router-dom'; import { faLeftLong } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import EditableMediaService from "../../services/editable-media-service.jsx"; function BlogList(props) { diff --git a/frontend/src/components/editable/blog.jsx b/frontend/src/components/editable/blog.jsx index 9f09a03..a967081 100755 --- a/frontend/src/components/editable/blog.jsx +++ b/frontend/src/components/editable/blog.jsx @@ -1,10 +1,11 @@ import { useEffect, useState, useRef } from 'react'; import EditableDataService from '../../services/editable-data-service'; -import MediaService from '../../services/media-service' +import EditableMediaService from '../../services/editable-media-service' import CategoryBar from './shared/category-bar'; import EditorComponent from './shared/tiptap'; import ModalComponent from './shared/modal-component'; +import MediaUpload from './shared/media-upload' import { faLeftLong } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; @@ -29,18 +30,22 @@ function Blog(props) { const [blogData, setBlogData] = useState([]); const [blogContent, setBlogContent] = useState(); + const [coverImage, setCoverImage] = useState(false) const [modal, setModal] = useState(false); const [modalText, setModalText] = useState(false); const [modalTitle, setModalTitle] = useState(false); + const [fileModal, setFileModal] = useState(false); const toggle = () => setModal(!modal); + const toggleFileModal = () => setFileModal(!fileModal); const setInfo = (event) => { EditableDataService.updateData(`/data/blog/update/${blogID}/`,{ "name": nameField.current.value, "description": descriptionField.current.value, "tagline": tagLineField.current.value, - "content_body": blogContent + "content_body": blogContent, + "cover_image": coverImage ? coverImage !== '-' ? coverImage : '' : blogData.coverImage }).then(response => { props.notificationToggler('Blog data saved!'); getInfo() @@ -85,10 +90,18 @@ function Blog(props) { getInfo() }, []); + useEffect(() => { + if (coverImage){ + setInfo() + if (coverImage !== '-') toggleFileModal() + } + }, [coverImage]) + if (GlobalTheme && ThemeConfig && blogData) { return ( + @@ -96,7 +109,7 @@ function Blog(props) { { blogData.coverImage !== "" ? Banner:"" @@ -105,8 +118,25 @@ function Blog(props) { + = 765 ? '6':''}`}> + + + + Name diff --git a/frontend/src/components/editable/category-list.jsx b/frontend/src/components/editable/category-list.jsx index c9dfd8c..efc0646 100755 --- a/frontend/src/components/editable/category-list.jsx +++ b/frontend/src/components/editable/category-list.jsx @@ -136,6 +136,7 @@ function Blogs(props) { bgColor={ThemeConfig[GlobalTheme].background} borderColor={ThemeConfig[GlobalTheme].borderColor} buttonColor={ThemeConfig[GlobalTheme].buttonColor} + notificationToggler={props.notificationToggler} itemObject={item} /> )) : } diff --git a/frontend/src/components/editable/home.jsx b/frontend/src/components/editable/home.jsx index 3ac8cbe..9d2810e 100755 --- a/frontend/src/components/editable/home.jsx +++ b/frontend/src/components/editable/home.jsx @@ -1,12 +1,15 @@ import { Container, Spinner, Input, InputGroup, InputGroupText, Button, ButtonGroup, FormFeedback } from 'reactstrap'; import {useEffect, useState, useRef} from 'react'; import EditorComponent from './shared/tiptap'; -import MediaService from '../../services/media-service' +import MediaUpload from './shared/media-upload' +import EditableMediaService from '../../services/editable-media-service' function HomePage(props) { const [introContent, setIntroContent] = useState("") + const [profilePhoto, setProfilePhoto] = useState(false) const [saveKeyReady, setSaveKeyReady] = useState(true) const [nameFieldInvalid, setNameFieldInvalid] = useState(false) + const [modal, setModal] = useState(false) const nameField = useRef(null) const UserData = props.UserData ? props.UserData : Loading... const GlobalTheme = props.GlobalTheme; @@ -16,7 +19,7 @@ function HomePage(props) { let response = await props.setInfo('/data/shared/update/user-data/', { "name": nameField.current.value, "intro_content": introContent, - "profile_photo": "" + "profile_photo": profilePhoto ? profilePhoto !== '-' ? profilePhoto : '' : UserData.profilePhoto }) console.log(response) if (response === 200) @@ -25,6 +28,8 @@ function HomePage(props) { props.notificationToggler("Something failed!", "danger") } + const toggle = () => {setModal(!modal)} + const showError = (elementValue, fieldType) => { console.log(elementValue) if (fieldType === 'nameField'){ @@ -39,11 +44,35 @@ function HomePage(props) { setIntroContent(UserData.introContent) }, [UserData]) + useEffect(() => { + if (profilePhoto){ + setInfo() + if (profilePhoto !== '-') toggle() + } + }, [profilePhoto]) + if (GlobalTheme && ThemeConfig) return ( +
- {UserData.profilePhoto !== "" ? : ""} + {UserData.profilePhoto !== "" ? : ""} + + + +
<> diff --git a/frontend/src/components/editable/shared/card-list-viewer.jsx b/frontend/src/components/editable/shared/card-list-viewer.jsx index 6376930..3f33ee2 100755 --- a/frontend/src/components/editable/shared/card-list-viewer.jsx +++ b/frontend/src/components/editable/shared/card-list-viewer.jsx @@ -1,16 +1,16 @@ import { useEffect, useState, useRef } from 'react'; -import MediaService from '../../../services/media-service' +import EditableMediaService from '../../../services/editable-media-service' import { - Spinner, Card, CardImg, CardTitle, CardText, CardBody, - Input, InputGroup, InputGroupText, FormFeedback, Button + Input, InputGroup, InputGroupText, FormFeedback, Button, ButtonGroup } from 'reactstrap'; import { Link } from 'react-router-dom'; import ModalComponent from './modal-component'; +import MediaUpload from './media-upload.jsx' function CardListViewer(props) { @@ -52,7 +52,6 @@ function CardListViewer(props) { "featuredBlog": "", "description": descriptionField.current.value, "tagLine": taglineField.current.value, - "coverImage": "" }) } @@ -66,7 +65,7 @@ function CardListViewer(props) { props.deleteResource(props.id) toggle() } - + const itemObject = props.itemObject if (props.totalItems > 0 && itemObject && Object.keys(itemObject).length !== 0){ @@ -75,7 +74,6 @@ function CardListViewer(props) { <> - {itemObject.coverImage !== "" ? : ""} @@ -125,7 +123,7 @@ function CardListViewer(props) { else return ( - {itemObject.coverImage !== "" ? : ""} + {itemObject.coverImage !== "" ? : ""} diff --git a/frontend/src/components/editable/shared/navbar.jsx b/frontend/src/components/editable/shared/navbar.jsx index 48c460a..4bc44bb 100755 --- a/frontend/src/components/editable/shared/navbar.jsx +++ b/frontend/src/components/editable/shared/navbar.jsx @@ -13,7 +13,7 @@ import { Button, ButtonGroup, Label, Input } from 'reactstrap'; import { useState, useEffect } from 'react'; -import MediaService from '../../../services/media-service' +import EditableMediaService from '../../../services/editable-media-service' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faSun, faMoon, faPen, faBrush } from '@fortawesome/free-solid-svg-icons'; import { Link } from 'react-router-dom'; @@ -69,7 +69,7 @@ function Header(props) { : "" }