From e745dab6cff95309e755f859f47dc01df72e3978 Mon Sep 17 00:00:00 2001 From: FEARmeR <fearmer@gmail.com> Date: Tue, 23 May 2023 19:13:24 +0100 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BE=D1=81=D0=BC=D0=B5=D1=82=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LandingPages/Project/AllProjects.vue | 2 +- .../LandingPages/Project/EditProject.vue | 45 +++++++++++-------- src/views/LandingPages/Project/Project.vue | 15 +++---- 3 files changed, 34 insertions(+), 28 deletions(-) diff --git a/src/views/LandingPages/Project/AllProjects.vue b/src/views/LandingPages/Project/AllProjects.vue index 570b0d0..de7dbe6 100644 --- a/src/views/LandingPages/Project/AllProjects.vue +++ b/src/views/LandingPages/Project/AllProjects.vue @@ -99,7 +99,7 @@ border-radius: 15px; .result-grid { display: flex; flex-wrap: wrap; - justify-content: space-between; + justify-content: left; } .result-card { diff --git a/src/views/LandingPages/Project/EditProject.vue b/src/views/LandingPages/Project/EditProject.vue index 9823c5e..8b0e634 100644 --- a/src/views/LandingPages/Project/EditProject.vue +++ b/src/views/LandingPages/Project/EditProject.vue @@ -48,19 +48,6 @@ const onFileChange = (event) => { const updateProject = async () => { - // try { - // const headers = { 'Authorization': `Bearer ${token.value}` }; - // const data = { - // title: projectData.value.title, - // description: projectData.value.description, - // demo_link: projectData.value.demo_link, - // source_link: projectData.value.source_link, - // tags: projectData.value.tags, - - // }; - // const response = await axios.patch(`http://somebodyhire.me/api/projects/${projectId.value}/`, data, { headers }); - // router.push(`/project/${response.data.id}`); - // } try { const tokenValue = token.value; const headers = { @@ -94,6 +81,29 @@ const updateProject = async () => { } }; +const deleteProject = async () => { + try { + const tokenValue = token.value; + const headers = { + 'Authorization': `Bearer ${tokenValue}`, + 'Content-Type': 'multipart/form-data', + "X-CSRFToken": "{{ csrf_token }}" + }; + + + const response = await axios.delete(`http://somebodyhire.me/api/projects/${projectId.value}/`, { headers }); + router.push('/myprojects'); + + + } + + + catch (error) { + debugText.value = `Error: ${JSON.stringify(error, null, 2)}`; + console.error(error); + } +}; + const cancelUpdate = () => { router.push('/myprojects'); }; @@ -107,13 +117,13 @@ onMounted(async() => { <template> <NavbarDefault /> <div class="profile-container"> - <H1> Страница Редактирования Проекта {{ projectId }}</H1> + <div v-if="!isAuthenticated"> <h1>Вы не авторизованы</h1> </div> <div v-else> <div v-if = "userId == projectData.owner"> - <h1>User Profile: {{ loggedUserName }}</h1> + <h2>Редактирование проекта</h2> <!-- Окно с результатами обмена для отладки <textarea readonly v-model="debugText"></textarea> @@ -133,11 +143,10 @@ onMounted(async() => { <div> <button @click="updateProject" class="btn-submit">Сохранить</button> <button @click="cancelUpdate" class="btn-cancel">Отмена</button> + <button @click="deleteProject" class="btn-cancel">Удалить</button> </div> </div> - <div v-else> - <h1>Вы не являетесь владельцем проекта</h1> - </div> + </div> </div> </template> diff --git a/src/views/LandingPages/Project/Project.vue b/src/views/LandingPages/Project/Project.vue index 320a80e..bcd259d 100644 --- a/src/views/LandingPages/Project/Project.vue +++ b/src/views/LandingPages/Project/Project.vue @@ -38,20 +38,17 @@ const getProject = async () => { <template> <NavbarDefault /> <div v-if="projectData" class="project-container"> - <h1 class="project-title">Проект номер: {{ projectData.id }}</h1> - <h2 class="project-subtitle">{{ projectData.title }}</h2> + <h1 class="subtitle">{{ projectData.title }}</h1> <div v-if = "projectData.owner == userId" class="project-owner-note"> <a :href="`/editproject/${projectData.id}`">Редактирование проекта</a> </div> - <p class="project-description">{{ projectData.description }}</p> <img class="project-image" :src="projectData.featured_image" alt="Featured image"> - <p> {{ projectData.featured_image }}</p> - <p v-if="projectData.demo_link" class="project-demo-link">Demo Link: <a :href="projectData.demo_link">{{ projectData.demo_link }}</a></p> - <p v-if="projectData.source_link" class="project-source-link">Source Link: <a :href="projectData.source_link">{{ projectData.source_link }}</a></p> - <p class="project-votes">Total Votes: {{ projectData.vote_total }}</p> + <p class="project-description">{{ projectData.description }}</p> + <p v-if="projectData.demo_link" class="project-demo-link">Demo Link: <a target="_blank" :href="projectData.demo_link">{{ projectData.demo_link }}</a></p> + <p v-if="projectData.source_link" class="project-source-link">Source Link: <a target="_blank" :href="projectData.source_link">{{ projectData.source_link }}</a></p> + <!-- <p class="project-votes">Total Votes: {{ projectData.vote_total }}</p> <p class="project-vote-ratio">Vote Ratio: {{ projectData.vote_ratio }}</p> <p class="project-created">Created On: {{ new Date(projectData.created).toLocaleDateString() }}</p> - <p class="project-owner-id">Owner ID: {{ projectData.owner }}</p> <p class="project-tags">Tags: <span v-for="(tag, index) in projectData.tags" :key="index" class="project-tag"> {{ tag }}<span v-if="index < projectData.tags.length - 1">, </span> @@ -66,7 +63,7 @@ const getProject = async () => { </select> <textarea name="comment" v-model="message" placeholder="Напишите комментарий"></textarea> <button>Отправить</button> - </div> + </div> --> </div> </template>