Skip to content

Commit

Permalink
Merge branch 'main' into features/#159
Browse files Browse the repository at this point in the history
  • Loading branch information
d1z3d authored Oct 12, 2024
2 parents 474c3d4 + 9ed1055 commit 9ebe614
Show file tree
Hide file tree
Showing 31 changed files with 385 additions and 255 deletions.
1 change: 1 addition & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ dependencies {
implementation("io.github.jpenren:thymeleaf-spring-data-dialect:3.6.0")
implementation("org.webjars:webjars-locator-core:0.58")
implementation("org.webjars:bootstrap:5.2.3")
implementation("nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:3.3.0")
// Database
runtimeOnly("org.postgresql:postgresql:42.5.4")
implementation("io.hypersistence:hypersistence-utils-hibernate-60:3.2.0")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,8 @@ public SecurityFilterChain filterChain(HttpSecurity http,
http.exceptionHandling().accessDeniedHandler(accessDeniedHandler());

http.authorizeHttpRequests(authz -> authz
.requestMatchers(GET, "/webjars/**", "/widget/**", "/fragments/**", "/img/**").permitAll()
.requestMatchers(GET, "/webjars/**", "/widget/**", "/fragments/**", "/img/**",
"/favicon.ico").permitAll()
.requestMatchers("/", "/login", "/signup", "/error", "/about").permitAll()
.requestMatchers("/login/oauth/code/**").permitAll()
.requestMatchers("/login/oauth/error/handler").permitAll()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,14 +167,19 @@ public String deleteAllowedUrl(Model model,
@GetMapping("/integration")
@PreAuthorize(IS_USER_RELATED_TO_WKS)
public String getWorkspaceIntegrationPage(Model model, @PathVariable Long wksId, HttpServletRequest req) {
if (!workspaceService.existsWorkspaceById(wksId)) {
var wksOptional = workspaceService.getWorkspaceInfoById(wksId).orElse(null);

if (wksOptional == null) {
//TODO send to error page
log.error("Workspace with id {} not found", wksId);
return "redirect:/workspaces";
}

addTokenAndUrlToModel(model, wksId, req);

model.addAttribute("wksInfo", wksOptional);
model.addAttribute("wksName", wksOptional.name());

getStatisticDataToModel(model, wksId);
getLastTypoDataToModel(model, wksId);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,10 @@ public class Account extends AbstractAuditingEntity implements Identifiable<Long
@ToString.Exclude
private String password;

@NotBlank
@Size(min = 1, max = 50)
@Size(max = 50)
private String firstName;

@NotBlank
@Size(min = 1, max = 50)
@Size(max = 50)
private String lastName;

@OneToMany(mappedBy = "account", cascade = ALL, orphanRemoval = true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import io.hexlet.typoreporter.domain.account.constraint.AccountUsername;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.Getter;
import lombok.Setter;
Expand All @@ -20,11 +19,9 @@ public class UpdateProfile {
message = "The email \"${validatedValue}\" is not valid")
private String email;

@NotBlank
@Size(min = 1, max = 50)
@Size(max = 50)
private String firstName;

@NotBlank
@Size(min = 1, max = 50)
@Size(max = 50)
private String lastName;
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import io.hexlet.typoreporter.domain.account.constraint.AccountUsername;
import io.hexlet.typoreporter.service.dto.FieldMatchConsiderCase;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
Expand Down Expand Up @@ -38,11 +37,9 @@ public class SignupAccountModel {
@ToString.Exclude
private String confirmPassword;

@NotBlank
@Size(min = 1, max = 50)
@Size(max = 50)
private String firstName;

@NotBlank
@Size(min = 1, max = 50)
@Size(max = 50)
private String lastName;
}
36 changes: 36 additions & 0 deletions src/main/resources/messages_en.properties
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,11 @@ navbar.signup=Sign Up
navbar.create-workspace=Create Workspace
navbar.account-info=Account Info

text.hero-header=Everything you need in
text.hero-highlight=one place
text.hero-description=Create your workspace to manage everything regarding typos: add sites (URLs) from which reports can be sent to the workspace, see and manage received typo statistics, add users to the workspace and more
btn.get-started=Get started

acc-info.card-title.general=General
acc-info.card-title.workspaces=Workspaces

Expand Down Expand Up @@ -109,3 +114,34 @@ alert.password-wrong-format=Password must be between 8 and 20 characters \
and contain only latin letters, digits and symbols ~`!@#$%^&*()_-+={[}]|\:;"'<,>.?/
link.sign-in-with-github=Sign in with GitHub
alert.passwords-dont-match=Confirmation does not match the password

text.heroes=The free service for sending messages about typos in the text on your website. After adding a widget to your site, visitors have the opportunity to highlight an error or typo and report it to the administrator.
text.features-header=FixIT helps websites
text.features-sub-header1=Improve content quality
text.features-description1=Users can quickly report typos and errors, which helps quickly eliminate inaccuracies and improve the quality of texts, improving the perception of information and confidence in the resource.
text.features-sub-header2=Manage errors effectively
text.features-description2=Tracking the status of errors allows administrators to effectively manage the process of fixing and updating content, reducing the time required to detect and resolve inaccuracies, which helps ensure that the site is updated quickly.
text.features-sub-header3=Increase user engagement
text.features-description3=Integration of the widget promotes active interaction between users and the site administration, making them part of the process of improving the resource. This contributes to the formation of a close and mutually beneficial user community.
text.how-it-works-header=How FixIT works
text.how-it-works-sub-header1=Create your own workspace
text.how-it-works-description1=Create an account and add an unlimited number of sites.
text.how-it-works-sub-header2=Add a widget to your site
text.how-it-works-description2=Add a widget to your site to make it easy for users to report bugs.
text.how-it-works-sub-header3=Manage your incoming messages
text.how-it-works-description3=Manage incoming messages and effectively correct typos found.

footer.about=About project
footer.source-code=Source code
footer.telegram=Telegram Hexlet channel Volunteers
footer.help=Help
footer.blog=Blog
footer.study=Study for free
footer.books=Recommended books
footer.other-projects=Other open source projects
footer.additionally=Additionally

text.about-header=About project
text.about-welcome=Welcome to the open-source project FixIT
text.about-description=The service for notifying website owners about errors and typos. After integration with the site, visitors have the opportunity to highlight an error or a typo and report it to the administrator. The project runs in Java.
text.about-community=Tasks can be discussed in the community
38 changes: 37 additions & 1 deletion src/main/resources/messages_ru.properties
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,15 @@ alert.oauth2.exception.name=Заполните имя и фамилию в пр

navbar.login=Войти
navbar.logout=Выход
navbar.signup=Регистрация
navbar.signup=Зарегистрироваться
navbar.account-info=Информация об аккаунте
navbar.create-workspace=Создать Пространство

text.hero-header=Все что вам нужно в
text.hero-highlight=одном месте
text.hero-description=Создайте свое рабочее пространство, чтобы управлять всем связанным с опечатками: добавлять сайты (URLs) с которых отчеты могут отправляться в пространство, видеть и управлять статистикой полученных опечаток, добавлять пользователей в рабочее пространство и многое другое
btn.get-started=Начать

acc-info.wks.url=URL пространства
acc-info.wks.name=Имя пространства
acc-info.wks.role=Роль
Expand Down Expand Up @@ -107,3 +112,34 @@ alert.password-wrong-format=Пароль должен быть от 8 до 20 с
\ цифры и символы ~`!@#$%^&*()_-+={[}]|\:;"'<,>.?/
link.sign-in-with-github=Войти с помощью: GitHub
alert.passwords-dont-match=Подтверждение не совпадает с паролем

text.heroes=Бесплатный сервис для отправки сообщений об ошибках в тексте на Вашем сайте. После добавлении на ваш сайт виджета посетители имеют возможность выделить ошибку или опечатку и сообщить об этом администратору.
text.features-header=FixIT помогает сайтам
text.features-sub-header1=Улучшить качество контента
text.features-description1=Пользователи могут быстро сообщать об опечатках и ошибках, что способствует оперативному устранению неточностей и повышению качества текстов, улучшая восприятие информации и доверие к ресурсу.
text.features-sub-header2=Эффективно управлять ошибками
text.features-description2=Отслеживание статуса ошибок позволяет администраторам эффективно управлять процессом исправления и обновления контента, сокращая время, необходимое на обнаружение и устранение неточностей, что способствует оперативному обновлению сайта.
text.features-sub-header3=Повышать вовлеченность пользователей
text.features-description3=Интеграция виджета способствует активному взаимодействию пользователей с администрацией сайта, делая их частью процесса улучшения ресурса. Это способствует формированию тесного и взаимовыгодного сообщества пользователей.
text.how-it-works-header=Как FixIT работает
text.how-it-works-sub-header1=Создайте свое рабочее пространство
text.how-it-works-description1=Создайте аккаунт и добавляйте неограниченное количество сайтов.
text.how-it-works-sub-header2=Добавьте виджет на сайт
text.how-it-works-description2=Добавьте виджет на сайт, чтобы пользователи могли легко сообщать об ошибках.
text.how-it-works-sub-header3=Управляйте входящими сообщениями
text.how-it-works-description3=Управляйте входящими сообщениями и эффективно устраняйте найденные опечатки.

footer.about=О проекте
footer.source-code=Исходный код
footer.telegram=Telegram Hexlet канал Волонтеры
footer.help=Помощь
footer.blog=Блог
footer.study=Учиться бесплатно
footer.books=Рекомендуемые книги
footer.other-projects=Другие open source проекты
footer.additionally=Дополнительно

text.about-header=О проекте
text.about-welcome=Добро пожаловать в open-source проект FixIT
text.about-description=Сервис для уведомления владельцев сайтов об ошибках и опечатках. После интеграции с сайтом посетители имеют возможность выделить ошибку или опечатку и сообщить об этом администратору. Проект работает на Java.
text.about-community=Задачи можно обсудить в сообществе
Binary file added src/main/resources/static/favicon.ico
Binary file not shown.
29 changes: 11 additions & 18 deletions src/main/resources/templates/about.html
Original file line number Diff line number Diff line change
@@ -1,26 +1,19 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head th:replace="~{fragments/header :: head}"></head>
<body class="d-flex min-vh-100">
<nav th:replace="~{fragments/panels :: mainNavbarTop}"></nav>
<div class="container-fluid d-flex flex-column p-0 m-0">
<div class=" bg-light mx-auto mt-5">
<main class="bg-light p-3">
<html lang="en" xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout}">

<div layout:fragment="content">
<div class="mx-auto mt-5">
<main class="p-3">
<div class="container p-0">
<h1 class="my-4">О проекте</h1>
<p class="display-6">Добро пожаловать в open-source проект Hexlet-Correction</p>
<p>
Сервис для уведомления владельцев сайтов об ошибках и опечатках.
После интеграции с сайтом посетители имеют возможность выделить ошибку
или опечатку и сообщить об этом администратору. Проект работает на Java.
</p>
<p>Задачи можно обсудить в сообществе
<a href="https://t.me/hexletcommunity/12">telegram</a>
<h1 class="my-4" th:text="#{text.about-header}"></h1>
<p class="display-6" th:text="#{text.about-welcome}"></p>
<p th:text="#{text.about-description}"></p>
<p th:inline="text">[[#{text.about-community}]] <a href="https://t.me/hexletcommunity/12">telegram</a>
</p>
</div>
</main>
</div>
<footer th:replace="~{fragments/footer :: footer}"></footer>
</div>
</body>
</html>
13 changes: 6 additions & 7 deletions src/main/resources/templates/account/acc-info.html
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head th:replace="~{fragments/header :: head}"></head>
<body style="padding-top: 4.5rem">
<nav th:replace="~{fragments/panels :: mainNavbarTop}"></nav>
<main class="container" th:object="${accInfo}">
<html lang="en" xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout}">

<div layout:fragment="content" class="container" th:object="${accInfo}">
<div class="card mb-3">
<div class="card-body">
<h5 class="card-title mb-1" th:text="#{acc-info.card-title.general}"></h5>
Expand Down Expand Up @@ -53,6 +53,5 @@ <h5 class="card-title mb-1" th:text="#{acc-info.card-title.workspaces}"></h5>
</tr>
</tbody>
</table>
</main>
</body>
</div>
</html>
13 changes: 6 additions & 7 deletions src/main/resources/templates/account/pass-update.html
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head th:replace="~{fragments/header :: head}"></head>
<body style="padding-top: 4.5rem">
<nav th:replace="~{fragments/panels :: mainNavbarTop}"></nav>
<main class="container">
<html lang="en" xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout}">

<div layout:fragment="content" class="container">
<div class="row">
<div class="col">
<form th:action="@{/account/password}" th:method="put" th:object="${updatePassword}">
Expand Down Expand Up @@ -36,6 +36,5 @@
</form>
</div>
</div>
</main>
</body>
</div>
</html>
13 changes: 6 additions & 7 deletions src/main/resources/templates/account/prof-update.html
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head th:replace="~{fragments/header :: head}"></head>
<body style="padding-top: 4.5rem">
<nav th:replace="~{fragments/panels :: mainNavbarTop}"></nav>
<main class="container">
<html lang="en" xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout}">

<div layout:fragment="content" class="container">
<div class="row">
<div class="col">
<form th:action="@{/account/update}" th:method="put" th:object="${updateProfile}">
Expand Down Expand Up @@ -40,6 +40,5 @@
</form>
</div>
</div>
</main>
</body>
</div>
</html>
36 changes: 6 additions & 30 deletions src/main/resources/templates/account/signup.html
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head th:replace="~{fragments/header :: head}"></head>
<body style="padding-top: 4.5rem">
<nav th:replace="~{fragments/panels :: mainNavbarTop}"></nav>
<main class="container">
<html xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout}">

<div layout:fragment="content" class="container">
<div class="row">
<div class="col">
<div class="alert alert-danger" role="alert" th:if="${isGithubFail}" th:text="#{alert.oauth2.exception}"></div>
Expand All @@ -30,28 +30,6 @@
</div>
</div>

<div class="form-floating mb-3">
<input id="inputFirstName" placeholder="p" type="text" th:field="*{firstName}"
class="form-control"
th:classappend="${!#fields.hasErrors('firstName') && formModified}? 'is-valid'"
th:errorclass="is-invalid">
<label for="inputFirstName" th:text="#{firstname}"></label>
<div class="invalid-feedback" th:if="${#fields.hasErrors('firstName')}">
<p th:each="err : ${#fields.errors('firstName')}" th:text="${err}"></p>
</div>
</div>

<div class="form-floating mb-3">
<input id="inputLastName" placeholder="p" type="text" th:field="*{lastName}"
class="form-control"
th:classappend="${!#fields.hasErrors('lastName') && formModified}? 'is-valid'"
th:errorclass="is-invalid">
<label for="inputLastName" th:text="#{lastname}"></label>
<div class="invalid-feedback" th:if="${#fields.hasErrors('lastName')}">
<p th:each="err : ${#fields.errors('lastName')}" th:text="${err}"></p>
</div>
</div>

<div class="form-floating mb-3">
<input id="inputPassword" placeholder="p" type="password" th:field="*{password}"
class="form-control" th:errorclass="is-invalid">
Expand All @@ -78,7 +56,5 @@
</form>
</div>
</div>
</main>

</body>
</div>
</html>
13 changes: 6 additions & 7 deletions src/main/resources/templates/create-workspace.html
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head th:replace="~{fragments/header :: head}"></head>
<body style="padding-top: 4.5rem">
<nav th:replace="~{fragments/panels :: mainNavbarTop}"></nav>
<main class="container">
<html lang="en" xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout}">

<div layout:fragment="content">
<div class="row">
<div class="col">
<form method="post" th:action="@{/workspace}" th:object="${createWorkspace}">
Expand Down Expand Up @@ -34,6 +34,5 @@
</form>
</div>
</div>
</main>
</body>
</div>
</html>
Loading

0 comments on commit 9ebe614

Please sign in to comment.