Changes in / [0226942:ad4243e] in Git


Ignore:
Files:
12 deleted
60 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/com/wediscussmovies/project/configuration/SecurityConfig.java

    r0226942 rad4243e  
    2929        http.csrf().disable()
    3030                .authorizeRequests()
    31                 .antMatchers("/movies","/movies/**/","/actors","/persons/**/","/directors","/discussions","/discussions/**/","/discussions/all/**/","/replies","/register","/genres", "/css/**","/img/**", "/js/**").permitAll()
     31                .antMatchers("/movies","/movies/**/","/actors","/persons/**/","/directors","/discussions","/discussions/**/","/discussions/all/**/","/replies","/register","/genres", "/css/**", "/js/**").permitAll()
    3232                .anyRequest()
    3333                .authenticated()
  • src/main/java/com/wediscussmovies/project/model/Genre.java

    r0226942 rad4243e  
    2222    }
    2323
    24     public Genre(int genreId, String genreType) {
    25         this.genreId = genreId;
    26         this.genreType = genreType;
    27     }
    28 
    2924    public Genre(String genreType) {
    3025        this.genreType = genreType;
  • src/main/java/com/wediscussmovies/project/model/Movie.java

    r0226942 rad4243e  
    6666    }
    6767
    68     public Movie(int movieId, String title, Double imdbRating, String imageUrl) {
    69         this.movieId = movieId;
    70         this.title = title;
    71         this.imdbRating = imdbRating;
    72         this.imageUrl = imageUrl;
    73     }
    74 
    75     public String getDateFormatted(){
    76         String dob = airingDate.toString();
    77         String [] parts = dob.split("-");
    78         return parts[2]+"/"+parts[1]+"/"+parts[0];
    79     }
    80 
    8168    @Override
    8269    public boolean equals(Object o) {
  • src/main/java/com/wediscussmovies/project/model/Person.java

    r0226942 rad4243e  
    66
    77import javax.persistence.*;
    8 import javax.swing.text.DateFormatter;
    98import java.sql.Date;
    10 import java.time.LocalDate;
    11 import java.time.format.DateTimeFormatter;
    129import java.util.Collection;
    1310
     
    7673
    7774
    78     public String getDateFormatted(){
    79         String dob = dateOfBirth.toString();
    80         String [] parts = dob.split("-");
    81         return parts[2]+"/"+parts[1]+"/"+parts[0];
    82     }
    83 
    8475
    8576    public Person(String name, String surname, Character type, Date dateOfBirth, String imageUrl, String description) {
  • src/main/java/com/wediscussmovies/project/repository/DiscussionRepository.java

    r0226942 rad4243e  
    44import com.wediscussmovies.project.model.Movie;
    55import com.wediscussmovies.project.model.Person;
    6 import com.wediscussmovies.project.querymodels.DiscussionLikes;
    7 import com.wediscussmovies.project.querymodels.GenreLikes;
    86import org.springframework.data.jpa.repository.JpaRepository;
    9 import org.springframework.data.jpa.repository.Query;
    107import org.springframework.stereotype.Repository;
    118
    12 import javax.transaction.Transactional;
    139import java.util.List;
    1410
     
    1814     List<Discussion> findAllByMovie(Movie movie);
    1915     List<Discussion> findAllByPerson (Person person);
    20 
    21      @Query(value = "select new com.wediscussmovies.project.querymodels.DiscussionLikes(d.discussionId, count(dl.id.userId)) from Discussion d" +
    22              " left join DiscussionLikes dl on dl.id.discussionId = d.discussionId" +
    23              " group by d.discussionId" +
    24              " order by count(dl.id.userId) desc")
    25      @Transactional
    26      List<DiscussionLikes> findAllWithLikes();
    2716}
  • src/main/java/com/wediscussmovies/project/repository/GenreRepository.java

    r0226942 rad4243e  
    2828     @Transactional
    2929     void insertInto(@Param("user_id")Integer userId, @Param("genre_id")Integer genreId);
    30 
    31      @Query(value = "select new com.wediscussmovies.project.model.Genre (g.genreId, g.genreType) from Genre g" +
    32      " ORDER BY g.genreType DESC")
    33      List<Genre> findAllSorted();
    3430}
  • src/main/java/com/wediscussmovies/project/repository/MovieRepository.java

    r0226942 rad4243e  
    33import com.wediscussmovies.project.model.Movie;
    44import com.wediscussmovies.project.model.Person;
    5 import com.wediscussmovies.project.querymodels.GenreLikes;
    6 import com.wediscussmovies.project.querymodels.MovieLikesQM;
    75import org.springframework.data.jpa.repository.JpaRepository;
    86import org.springframework.data.jpa.repository.Query;
    9 import org.springframework.data.repository.query.Param;
    107import org.springframework.stereotype.Repository;
    118
    12 import javax.transaction.Transactional;
    139import java.util.List;
    14 import java.util.Optional;
    1510
    1611@Repository
     
    2116     @Query(value="select m.movieId from Movie m")
    2217     List<Integer> findAllMovieIds();
    23 
    24      @Query(value="select new com.wediscussmovies.project.model.Movie(m.movieId, m.title, m.imdbRating, m.imageUrl) from Movie m" +
    25                " where m.movieId = :index")
    26      Optional<Movie> findBasicById(@Param("index")Integer index);
    27 
    28 
    29      @Query(value = "select new com.wediscussmovies.project.querymodels.MovieLikesQM(m.movieId, count(ml.id.userId)) from Movie m" +
    30              " left join MovieLikes ml on ml.id.movieId = m.movieId" +
    31              " group by m.movieId" +
    32              " order by count(ml.id.userId) desc")
    33      @Transactional
    34      List<MovieLikesQM> findAllWithLikes();
    35 
    36      @Query(value = "select new com.wediscussmovies.project.querymodels.MovieLikesQM(m.movieId, count(ml.id.userId)) from Movie m" +
    37              " left join MovieLikes ml on ml.id.movieId = m.movieId" +
    38              " group by m.movieId" +
    39              " having m.movieId = :id")
    40      @Transactional
    41      List<MovieLikesQM> findLikesForMovie(@Param("id") Integer movie_id);
    42 
    43 
    4418}
  • src/main/java/com/wediscussmovies/project/service/DiscussionService.java

    r0226942 rad4243e  
    33import com.wediscussmovies.project.model.Discussion;
    44import com.wediscussmovies.project.model.User;
    5 import com.wediscussmovies.project.querymodels.DiscussionLikes;
    65
    76import java.util.List;
     
    1716    void unlikeDiscussion(Integer discussionId,Integer userId);
    1817    List<Discussion> findAllForPersonOrMovie(Integer id,Character type);
    19 
    20     List<Discussion> findLikedDiscussionsByUser(User user);
    21 
    22     DiscussionLikes findLikesForDiscussionWithId(int discussionId);
    23 
    2418}
  • src/main/java/com/wediscussmovies/project/service/MovieService.java

    r0226942 rad4243e  
    66import com.wediscussmovies.project.model.Person;
    77import com.wediscussmovies.project.model.User;
    8 import com.wediscussmovies.project.querymodels.MovieLikesQM;
    98import org.springframework.data.jpa.repository.Query;
    109
     
    1817     List<Movie> searchByTitle(String title);
    1918     Movie findById(Integer id);
    20      Movie findBasicById(Integer id);
    2119     List<Integer> listAllIds();
    2220     Movie save(String title, String description, String imageUrl, Date airingDate,Double  rating,
     
    3735
    3836     void addGradeMovie(Integer movieId, User user, Grade grade);
    39 
    40     MovieLikesQM findLikesForMovieById(int movieId);
    4137}
  • src/main/java/com/wediscussmovies/project/service/impl/DiscussionServiceImpl.java

    r0226942 rad4243e  
    55import com.wediscussmovies.project.model.exception.PersonNotExistException;
    66import com.wediscussmovies.project.model.exception.UserNotExistException;
    7 import com.wediscussmovies.project.model.primarykeys.DiscussionLikesPK;
    8 import com.wediscussmovies.project.model.relation.DiscussionLikes;
    9 import com.wediscussmovies.project.repository.*;
     7import com.wediscussmovies.project.repository.DiscussionRepository;
    108import com.wediscussmovies.project.model.Discussion;
    119import com.wediscussmovies.project.model.Movie;
    1210import com.wediscussmovies.project.model.Person;
    1311import com.wediscussmovies.project.model.User;
     12import com.wediscussmovies.project.repository.MovieRepository;
     13import com.wediscussmovies.project.repository.PersonRepository;
     14import com.wediscussmovies.project.repository.UserRepository;
    1415import com.wediscussmovies.project.service.DiscussionService;
     16import com.wediscussmovies.project.service.MovieService;
     17import com.wediscussmovies.project.service.PersonService;
     18import com.wediscussmovies.project.service.UserService;
    1519import org.springframework.stereotype.Service;
    1620
    1721import java.sql.Date;
    1822import java.time.LocalDate;
    19 import java.util.ArrayList;
    2023import java.util.List;
    2124
     
    2427
    2528    private final DiscussionRepository discussionRepository;
    26     private final DiscussionLikesRepository discussionLikesRepository;
    2729    private final UserRepository userRepository;
    2830
     
    3032    private final PersonRepository personRepository;
    3133
    32     public DiscussionServiceImpl(DiscussionRepository discussionRepository, DiscussionLikesRepository discussionLikesRepository, UserRepository userRepository,
     34    public DiscussionServiceImpl(DiscussionRepository discussionRepository, UserRepository userRepository,
    3335                                 MovieRepository movieRepository, PersonRepository personRepository) {
    3436        this.discussionRepository = discussionRepository;
    35         this.discussionLikesRepository = discussionLikesRepository;
    3637        this.userRepository = userRepository;
    3738        this.movieRepository = movieRepository;
     
    9394    @Override
    9495    public void likeDiscussion(Integer discussionId, Integer userId) {
    95         Discussion discussion = discussionRepository.findById(discussionId).orElseThrow(() -> new DiscussionNotExistException(discussionId));
    96         User user = userRepository.findById(userId).orElseThrow(() -> new UserNotExistException(userId.toString()));
    97         this.discussionLikesRepository.save(new DiscussionLikes(discussion, user));
    98     }
    99 
    100     @Override
    101     public List<Discussion> findLikedDiscussionsByUser(User user) {
    102         List<DiscussionLikes> likes = discussionLikesRepository.findAllByUser(user);
    103         List<Discussion> discussions = new ArrayList<>();
    104         for(DiscussionLikes dl: likes){
    105             discussions.add(dl.getDiscussion());
    106         }
    107         return discussions;
     96        //ova fali od dijagram
    10897    }
    10998
    11099    @Override
    111100    public void unlikeDiscussion(Integer discussionId, Integer userId) {
    112         DiscussionLikesPK pk = new DiscussionLikesPK(discussionId, userId);
    113         this.discussionLikesRepository.deleteById(pk);
     101        // ova fali od dijagram
    114102    }
    115 
    116     @Override
    117     public com.wediscussmovies.project.querymodels.DiscussionLikes findLikesForDiscussionWithId(int discussionId) {
    118         return discussionRepository.findAllWithLikes().stream().filter(d ->  d.getDiscussionId().equals(discussionId)).findFirst().get();
    119     }
    120 
    121103
    122104    @Override
  • src/main/java/com/wediscussmovies/project/service/impl/GenreServiceImpl.java

    r0226942 rad4243e  
    5656    @Override
    5757    public List<Genre> findAll() {
    58         return this.genreRepository.findAllSorted();
     58        return this.genreRepository.findAll();
    5959    }
    6060
  • src/main/java/com/wediscussmovies/project/service/impl/MovieServiceImpl.java

    r0226942 rad4243e  
    1313import com.wediscussmovies.project.model.relation.MovieLikes;
    1414import com.wediscussmovies.project.model.relation.MovieRates;
    15 import com.wediscussmovies.project.querymodels.MovieLikesQM;
    1615import com.wediscussmovies.project.repository.*;
    1716import com.wediscussmovies.project.model.exception.MovieIdNotFoundException;
     
    7473    public Movie findById(Integer id) {
    7574        return this.movieRepository.findById(id).orElseThrow(() -> new MovieIdNotFoundException(id));
    76     }
    77 
    78     @Override
    79     public Movie findBasicById(Integer id) {
    80         return this.movieRepository.findBasicById(id).orElseThrow(() -> new MovieIdNotFoundException(id));
    81     }
    82 
    83     @Override
    84     public MovieLikesQM findLikesForMovieById(int movieId) {
    85         return this.movieRepository.findLikesForMovie(movieId).get(0);
    8675    }
    8776
  • src/main/java/com/wediscussmovies/project/service/impl/PersonServiceImpl.java

    r0226942 rad4243e  
    99import com.wediscussmovies.project.model.primarykeys.PersonRatesPK;
    1010import com.wediscussmovies.project.model.relation.MovieActors;
    11 import com.wediscussmovies.project.model.relation.MovieLikes;
    1211import com.wediscussmovies.project.model.relation.PersonRates;
    1312import com.wediscussmovies.project.repository.*;
     
    2928    private final MovieActorsRepository movieActorsRepository;
    3029    private final PersonRatesRepository personRatesRepository;
     30
    3131    public PersonServiceImpl(PersonRepository personRepository,
    3232                             MovieRepository movieRepository, MovieActorsRepository movieActorsRepository,
     
    152152
    153153
     154
    154155    private void addActorForMovies(Person person, List<Integer> movieIds){
    155156
  • src/main/java/com/wediscussmovies/project/web/PageFrontMovies.java

    r0226942 rad4243e  
    3232
    3333        for(Integer id: movieIds){
    34             //Trying to improve load times by not pulling all things from the database, excluding un-needed stuff
    35             //
    36             //movies.add(movieService.findById(id));
    37             movies.add(movieService.findBasicById(id));
     34            movies.add(movieService.findById(id));
    3835        }
    3936        model.addAttribute("page", page);
  • src/main/java/com/wediscussmovies/project/web/controller/DiscussionController.java

    r0226942 rad4243e  
    55import com.wediscussmovies.project.model.Reply;
    66import com.wediscussmovies.project.model.User;
    7 import com.wediscussmovies.project.model.relation.DiscussionLikes;
    87import com.wediscussmovies.project.service.DiscussionService;
    98import com.wediscussmovies.project.service.MovieService;
     
    1817import org.springframework.web.bind.annotation.*;
    1918
    20 import java.util.ArrayList;
    2119import java.util.List;
    2220
     
    4846        model.addAttribute("contentTemplate", "discussionsList");
    4947        model.addAttribute("user",LoggedUser.getLoggedUser());
    50         this.addModelPropertiesForUser(model);
    51         this.addModelPropertiesLikes(model,null, discussions);
    5248        return "template";
    5349    }
     
    6662            model.addAttribute("user",LoggedUser.getLoggedUser());
    6763            model.addAttribute("replies",this.replyService.findAllByDiscussion(disc));
    68             addModelPropertiesLikes(model, disc, null);
    69             addModelPropertiesForUser(model);
    7064
    7165            return "template";
     
    177171
    178172    }
    179     private void addModelPropertiesForUser(Model model){
    180         User user = LoggedUser.getLoggedUser();
    181         model.addAttribute("likedDiscussions",this.discussionService.findLikedDiscussionsByUser(user));
    182         model.addAttribute("user",user);
    183     }
    184     private void addModelPropertiesLikes(Model model, Discussion discussion, List<Discussion> discussions){
    185         if(discussion==null){
    186             List<com.wediscussmovies.project.querymodels.DiscussionLikes> discussionLikes = new ArrayList<>();
    187             for(Discussion d: discussions){
    188                 discussionLikes.add(discussionService.findLikesForDiscussionWithId(d.getDiscussionId()));
    189             }
    190             model.addAttribute("likes", discussionLikes);
    191         }
    192         else{
    193             model.addAttribute("likes",discussionService.findLikesForDiscussionWithId(discussion.getDiscussionId()).getLikes());
    194         }
    195     }
    196173
    197174
  • src/main/java/com/wediscussmovies/project/web/controller/MovieController.java

    r0226942 rad4243e  
    55import com.wediscussmovies.project.model.Person;
    66import com.wediscussmovies.project.model.User;
    7 import com.wediscussmovies.project.querymodels.MovieLikesQM;
    87import com.wediscussmovies.project.service.GenreService;
    98import com.wediscussmovies.project.service.MovieService;
     
    2423import java.time.LocalDate;
    2524import java.util.ArrayList;
    26 import java.util.HashMap;
    27 import java.util.LinkedList;
    2825import java.util.List;
    2926
     
    4239
    4340    @GetMapping("/old")
    44     public String getMoviesOld(@RequestParam(required = false) String titleQuery, Model model,
     41    public String getMovies(@RequestParam(required = false) String titleQuery, Model model,
    4542                            @RequestParam(required = false) String error){
    4643        List<Movie> movies;
     
    5956        model.addAttribute("movie_rows", movie_rows);
    6057        model.addAttribute("contentTemplate", "moviesList");
    61         model.addAttribute("genres", genreService.findAll());
    6258        if (error != null && !error.equals(" "))
    6359            model.addAttribute("error",error);
     
    6763
    6864    @GetMapping
    69     public String getMovies(@RequestParam(required = false) String titleQuery, Model model,
     65    public String getMoviesAlternative(@RequestParam(required = false) String titleQuery, Model model,
    7066                            @RequestParam(required = false) String error, @RequestParam(required = false) String page){
    7167        if (page==null){
     
    7672        List<List<Movie>> movie_rows = new ArrayList<>();
    7773        DesignFrontMovies.designMovieList(movies,movie_rows);
    78         //addModelPropertiesForMoviesLikes(model, movies);
    7974        model.addAttribute("movies", movies);
    8075        model.addAttribute("movie_rows", movie_rows);
    81         model.addAttribute("genres", genreService.findAll());
    8276        model.addAttribute("contentTemplate", "moviesListPaged");
    8377        if (error != null && !error.equals(" "))
     
    9084        model.addAttribute("movie", movieService.findById(id));
    9185        addModelPropertiesForUser(model);
    92         model.addAttribute("likes", movieService.findLikesForMovieById(id).getLikes());
    9386        model.addAttribute("contentTemplate", "movieShow");
    9487        return "template";
     
    196189        model.addAttribute("user",user);
    197190    }
    198     private void addModelPropertiesForMoviesLikes(Model model, List<Movie> movies){
    199         HashMap<Integer,MovieLikesQM> movieLikes = new HashMap<>();
    200         for(Movie m: movies){
    201             movieLikes.put(m.getMovieId(),movieService.findLikesForMovieById(m.getMovieId()));
    202         }
    203         model.addAttribute("movieLikes", movieLikes);
    204     }
    205191
    206192}
  • src/main/java/com/wediscussmovies/project/web/controller/rest/MovieRestController.java

    r0226942 rad4243e  
    5252    public ResponseEntity addGrade(@PathVariable Integer movieId, @RequestBody Grade grade){
    5353        try {
    54             if(grade.getRating() < 5)
    55                 grade.setRating(5);
    56             else if(grade.getRating()>10)
    57                 grade.setRating(10);
    5854            this.movieService.addGradeMovie(movieId, LoggedUser.getLoggedUser(),grade);
    5955            return ResponseEntity.ok(true);
  • src/main/resources/static/css/shared.css

    r0226942 rad4243e  
    5252.bottom{
    5353    position: absolute;
    54     top: 75%;
     54    top: 80%;
    5555    margin:auto;
    5656    width: 100%;
     
    6060    background-color: rgba(0,0,0,0.25);
    6161}
    62 .bottom h3, .bottom span{
    63     margin-bottom: 0px;
    64     margin-top: 0px;
    65 }
    66 .bottom span{
    67     font-size: 75%;
    68     margin-top: 5px;
    69 }
    7062
    7163
    72 .elements .card .btn{
     64.bottom-heart{
    7365    top: 60%;
    7466    left: auto;
     
    113105    opacity: 0;
    114106}
    115 
    116 .person-movies-list{
    117     margin: auto;
    118     margin-top: 20px;
    119     padding: 10px;
    120     width: 80%;
    121     background-color: rgba(52, 58, 64, 0.7);
    122     border-radius: 10px;
    123     transition: 200ms;
    124     color: white;
    125 }
    126 
    127 .person-movies-list:hover{
    128     background-color: rgba(52, 58, 64, 1);
    129 }
    130 
    131 .person-movies-list ul{
    132     list-style-type: none;
    133 }
    134 
    135 .person-movies-list ul li{
    136     color:black;
    137     background-color: rgba(255,255,255,0.7);
    138     padding: 12px;
    139     font-size: 120%;
    140     width: 80%;
    141     text-align: center;
    142     margin: auto;
    143     transition: 200ms;
    144     border-radius: 10px;
    145     margin-bottom: 5px;
    146     text-decoration: underline;
    147 }
    148 
    149 .person-movies-list hr{
    150     color: white;
    151     background-color: white;
    152     border-color: white;
    153 }
    154 
    155 .person-movies-list ul li:hover{
    156     background-color: rgba(255,255,255,1);
    157     text-decoration-color: blue;
    158 }
    159 
    160 .genres-listing ul li:hover{
    161     background-color: rgba(222,128,128,1);
    162 }
    163 
    164 .genres-listing ul li{
    165     background-color: rgba(192,128,128,0.7);
    166     text-decoration: none !important;
    167 }
    168 
    169 .person-movies-list ul li a{
    170     color: black;
    171     transition: 250ms;
    172     text-decoration: underline;
    173     text-decoration-color: black;
    174 }
    175 
    176 .person-movies-list ul li a:hover{
    177     color:blue;
    178 }
    179 
    180 
    181 #admin-buttons a{
    182     display: inline-block;
    183     width: 95%;
    184     margin: auto;
    185     margin-top: 10px;
    186     font-size: 125%;
    187     clear: both;
    188 }
    189 
    190 #image-movie-section{
    191     height: fit-content;
    192     min-height: fit-content;
    193 }
    194 
    195 #likes-showcase{
    196     background-color: rgba(192,128,128,0.7);
    197     border-radius: 10px;
    198     padding:10px;
    199     width: 60%;
    200     margin: auto;
    201     transition: 200ms;
    202     margin-top: 2%;
    203 }
    204 
    205 #likes-showcase strong{
    206     font-size: 150%;
    207 }
    208 
    209 #likes-showcase:hover{
    210     background-color: rgba(222,128,128,1);
    211 }
    212 
    213 .invisible-search{
    214     display: none;
    215 }
  • src/main/resources/static/js/sharedScript.js

    r0226942 rad4243e  
    44    var elements = $(".elements")
    55    var elementGrade;
    6     var first_time = true;
     6
    77
    88    $("#button-add").on("click", function (){
     
    5656    $(".button-add-grade-movie").on("click",function (){
    5757        elementGrade = $(this)
    58         urlRating ="/api/movies/grade/"+$(this).attr("movie-id")
     58        urlRating ="api/movies/grade/"+$(this).attr("movie-id")
    5959        $("#dialog-rating").dialog("open")
    6060    })
    6161    $(".button-add-grade-person").on("click",function (){
    6262        elementGrade = $(this)
    63         urlRating ="/api/persons/grade/"+$(this).attr("person-id")
     63        urlRating ="api/persons/grade/"+$(this).attr("person-id")
    6464        $("#dialog-rating").dialog("open")
    6565    })
     
    8181    })*/
    8282
    83     $("#button_toggle_filters").on("click", function (){
    84         if(first_time){
    85             $("#filters_div").removeClass("invisible-search")
    86             first_time=false
    87         }
    88         else
    89             $("#filters_div").fadeToggle();
    90     })
    9183
    9284   $(".search-button").on("click",function () {
    93        elements = $(".elements")
    94        let filter = $("#searchGenre").val()
    95        console.log('\''+filter+'\'')
    96        console.log(elements)
    97        if(filter.length==0){
    98            console.log("HERE")
    99            for (let item of elements) {
    100                $(item).removeClass("visibility")
    101            }
    102        }
     85        let filter = $("#searchGenre").val()
    10386       for (let item of elements) {
    104            $(item).removeClass("visibility")
    105             let genre = $(item).children(".card-genre")
     87            let genre = $(item).find(".card-genre")
    10688            let visible = false;
    107             console.log(genre.length)
     89
    10890            for (let g of genre) {
    109                 if (( $(g).text().toLowerCase() === filter.toLowerCase())){
    110                     console.log(item.text + ' ' + $(g).text())
     91
     92                if (( $(g).text().toLowerCase() === filter.toLowerCase() && !$(g).hasClass("visibility") && filter.trim().length != 0)) {
    11193                    visible = true
    11294                    $(item).removeClass("visibility")
     
    11496                }
    11597            }
    116             if(!visible){
     98            if (!visible && filter.trim().length != 0)
    11799                $(item).addClass("visibility")
    118             }
     100            else
     101                $(item).removeClass("visibility")
    119102
    120103        }
     
    123106    $(".button-delete-movie").on("click",function (){
    124107        let button = $(this)
    125         let url = "/api/movies/delete/" + $(button).attr("movie-id")
     108        let url = "api/movies/delete/" + $(button).attr("movie-id")
    126109        ajaxCallDelete(url,button)
    127110    })
    128111    $(".button-delete-actor").on("click",function (){
    129112        let button = $(this)
    130         let url  = "/api/persons/delete/" + $(button).attr("person-id")
     113        let url  = "api/persons/delete/" + $(button).attr("person-id")
    131114        ajaxCallDelete(url,button)
    132115    })
    133116    $(".button-delete-discussion").on("click",function (){
    134117        let button = $(this)
    135         let url = "/api/discussions/delete/" + $(button).attr("discussion-id")
     118        let url = "api/discussions/delete/" + $(button).attr("discussion-id")
    136119        ajaxCallDelete(url,button)
    137120    })
     
    156139    $(document.body).on("click",".button-add-favourite-list",function (){
    157140        let button = $(this)
    158         let url = "/api/movies/like/"+ $(this).attr("movie-id") + "?userId="+ $(this).attr("user-id")
     141        let url = "api/movies/like/"+ $(this).attr("movie-id") + "?userId="+ $(this).attr("user-id")
    159142        ajaxCallLike(url,button,'like','Веќе е филмот допаднат!')
    160143    })
    161144    $(document.body).on("click",".button-remove-favourite-list",function (){
    162145        let button = $(this)
    163         let url = "/api/movies/unlike/"+ $(this).attr("movie-id")+"?userId="+ $(this).attr("user-id")
     146        let url = "api/movies/unlike/"+ $(this).attr("movie-id")+"?userId="+ $(this).attr("user-id")
    164147        ajaxCallLike(url,button,'unlike','Немате оставено допаѓање на филмот!')
    165148    })
    166149    $(document.body).on("click",".button-add-genre-liked-list",function (){
    167150        let button = $(this)
    168         let url = "/api/genres/like/"+ $(this).attr("genre-id") + "?userId="+ $(this).attr("user-id")
     151        let url = "api/genres/like/"+ $(this).attr("genre-id") + "?userId="+ $(this).attr("user-id")
    169152        ajaxCallLikeGenre(url,button,'like','Веќе ви се допаѓа жанрот!')
    170153    })
    171154    $(document.body).on("click",".button-remove-genre-liked-list",function (){
    172155        let button = $(this)
    173         let url = "/api/genres/unlike/"+ $(this).attr("genre-id")+"?userId="+ $(this).attr("user-id")
     156        let url = "api/genres/unlike/"+ $(this).attr("genre-id")+"?userId="+ $(this).attr("user-id")
    174157        ajaxCallLikeGenre(url,button,'unlike','Немате оставено допаѓање на жанрот!')
    175     })
    176     $(document.body).on("click",".button-like-discussion",function (){
    177         let button = $(this)
    178         let url = "/api/discussions/like/"+ $(this).attr("discussion-id")+"?userId="+ $(this).attr("user-id")
    179         ajaxCallLikeDiscussion(url,button,'like','Веќе имате оставено допаѓање на дискусијата!')
    180     })
    181     $(document.body).on("click",".button-unlike-discussion",function (){
    182         let button = $(this)
    183         let url = "/api/discussions/unlike/"+ $(this).attr("discussion-id")+"?userId="+ $(this).attr("user-id")
    184         ajaxCallLikeDiscussion(url,button,'unlike','Немате оставено допаѓање на дискусијата!')
    185     })
    186     $(document.body).on("click",".button-like-discussion-alt",function (){
    187         let button = $(this)
    188         let url = "/api/discussions/like/"+ $(this).attr("discussion-id")+"?userId="+ $(this).attr("user-id")
    189         ajaxCallLikeDiscussionAlternative(url,button,'like','Веќе имате оставено допаѓање на дискусијата!')
    190     })
    191     $(document.body).on("click",".button-unlike-discussion-alt",function (){
    192         let button = $(this)
    193         let url = "/api/discussions/unlike/"+ $(this).attr("discussion-id")+"?userId="+ $(this).attr("user-id")
    194         ajaxCallLikeDiscussionAlternative(url,button,'unlike','Немате оставено допаѓање на дискусијата!')
    195158    })
    196159    $(".discussion-type").change(function (){
     
    226189                let movieId=$(button).attr("movie-id")
    227190                if (type==='like') {
    228                     $(button).parent().append("<a class='btn btn-danger button-remove-favourite-list' movie-id=" + movieId + " user-id=" + userId + ">💔</a>")
     191                    $(button).parent().append("<a class='bottom-heart btn btn-danger button-remove-favourite-list' movie-id=" + movieId + " user-id=" + userId + ">💔</a>")
    229192                    console.log("da")
    230193                }
    231194                else{
    232                     $(button).parent().append("<a class='btn btn-success button-add-favourite-list' movie-id=" + movieId + " user-id=" + userId + ">❤</a>")
    233                 }
    234                 likes_count = $("#movie_likes_count")
    235                 count = Number($(likes_count).text())
    236                 if(type==="like")
    237                     count++
    238                 else
    239                     count--
    240                 likes_count.text(count)
     195                    $(button).parent().append("<a class='bottom-heart btn btn-success button-add-favourite-list' movie-id=" + movieId + " user-id=" + userId + ">❤</a>")
     196
     197                }
    241198                $(button).remove()
    242199            }
     
    306263
    307264
    308 
    309 
    310 function ajaxCallLikeDiscussion(url,button,type,message){
    311     $.ajax({
    312         url:url,
    313         success:function (data){
    314             if (data){
    315                 let el = $(button).parent().siblings().eq(3)
    316                 console.log(el)
    317                 if (type=="like") {
    318                     $(el).html(parseInt($(el).text()) + 1)
    319                     console.log("da")
    320                 }
    321                 else
    322                     $(el).html(parseInt($(el).text()) - 1)
    323                 $(button).css("display","none")
    324                 let userId = $(button).attr("user-id")
    325                 let discussionId=$(button).attr("discussion-id")
    326                 if (type==='like') {
    327                     $(button).parent().append("<a class='btn btn-danger button-unlike-discussion' discussion-id=" + discussionId + " user-id=" + userId + ">💔</a>")
    328                     console.log("da")
    329                 }
    330                 else{
    331                     $(button).parent().append("<a class='btn btn-success button-like-discussion' discussion-id=" + discussionId + " user-id=" + userId + ">❤</a>")
    332                 }
    333                 var likes_count = $("#likes_count")
    334                 var count = Number($(likes_count).text())
    335                 if(type==='like')
    336                     count += 1
    337                 else
    338                     count -= 1
    339                 $(likes_count).text(count);
    340                 $(button).remove()
    341             }
    342             else {
    343                 $(button).parent().append("<div>" + message +" <button class='button-confirm'>Ок</button></div>")
    344             }
    345         }
    346     })
    347 }
    348 
    349 
    350 
    351 function ajaxCallLikeDiscussionAlternative(url,button,type,message){
    352     $.ajax({
    353         url:url,
    354         success:function (data){
    355             if (data){
    356                 let el = $(button).parent().siblings().eq(3)
    357                 console.log(el)
    358                 if (type=="like") {
    359                     $(el).html(parseInt($(el).text()) + 1)
    360                     console.log("da")
    361                 }
    362                 else
    363                     $(el).html(parseInt($(el).text()) - 1)
    364                 $(button).css("display","none")
    365                 let userId = $(button).attr("user-id")
    366                 let discussionId=$(button).attr("discussion-id")
    367                 if (type==='like') {
    368                     $(button).parent().append("<a class='btn btn-danger button-unlike-discussion-alt' discussion-id=" + discussionId + " user-id=" + userId + ">💔</a>")
    369                     console.log("da")
    370                 }
    371                 else{
    372                     $(button).parent().append("<a class='btn btn-success button-like-discussion-alt' discussion-id=" + discussionId + " user-id=" + userId + ">❤</a>")
    373                 }
    374                 var likes_count = $(button).parent().siblings(".likes_count").first()
    375                 var count = Number(likes_count.text())
    376                 if(type==='like')
    377                     count += 1
    378                 else
    379                     count -= 1
    380                 $(likes_count).text(count);
    381                 $(button).remove()
    382             }
    383             else {
    384                 $(button).parent().append("<div>" + message +" <button class='button-confirm'>Ок</button></div>")
    385             }
    386         }
    387     })
    388 }
    389 
    390 
    391265function  ajaxCallRating(url,button,type){
    392266    model = {
  • src/main/resources/templates/discussion.html

    r0226942 rad4243e  
    11<div xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.w3.org/1999/xhtml">
    22    <div style="width: 85%; text-align: justify; margin: auto; clear: both">
    3         <div style="background-color: rgba(128,128,128, 0.2); border-radius: 20px; padding: 20px">
    4             <h1 th:text="${disc.getTitle()}" style="width: 80%; display: inline; height: fit-content; clear: both"></h1>
     3        <div>
     4            <h1 th:text="${disc.getTitle()}" style="width: 80%; float: left"></h1>
    55        </div>
    6         <hr>
     6        <hr><br><br>
    77        <div>
    88            <h5 th:text="${disc.getText()}" style="width: 90%; margin: auto; background-color: lightblue; border-radius: 4px; padding: 20px"></h5>
    99        </div>
    10         <br>
    11         <h4>
    12             <span th:if="${!disc.getUser().equals(user)}" sec:authorize="isAuthenticated()">
    13                 <a class='btn btn-success button-like-discussion' th:if="${!likedDiscussions.contains(disc)}" th:discussion-id="${disc.getDiscussionId()}" th:user-id="${user.getUserId()}" >❤</a>
    14                 <a class='btn btn-danger button-unlike-discussion' th:if="${likedDiscussions.contains(disc)}" th:discussion-id="${disc.getDiscussionId()}" th:user-id="${user.getUserId()}" >💔</a>
    15             </span>
    16             <span>Број на допаѓања:</span>
    17             <span th:text="${likes}" id="likes_count"></span>
    18         </h4>
    19         <br>
     10        <br><br><br>
    2011        <h6 style="width: 60%; float:left;">
    2112            <span th:text="${'Поставено од: '+disc.getUser().getUsername()}"></span>
     
    2617        </h6>
    2718        <div style="float: right"  sec:authorize="isAuthenticated()">
    28             <a th:if="${disc.getUser().equals(user)}" class="btn btn-warning" th:href="@{'/discussions/add/{id}' (id=${disc.getDiscussionId()})}">Промени</a>
    29             <a th:if="${disc.getUser().equals(user)}" class="btn btn-danger button-delete-discussion" th:discussion-id="${disc.getDiscussionId()}">Избриши</a>
    30             <a class="btn btn-success" th:href="@{'/replies/add/{discussionId}' (discussionId=${disc.getDiscussionId()})}">Реплицирај</a>
    31 
    32         </div><br>
     19        <a th:if="${disc.getUser().equals(user)}" class="btn btn-warning" th:href="@{'/discussions/add/{id}' (id=${disc.getDiscussionId()})}">Промени</a>
     20        <a th:if="${disc.getUser().equals(user)}" class="btn btn-danger button-delete-discussion" th:discussion-id="${disc.getDiscussionId()}">Избриши</a>
     21        <a class="btn btn-success" th:href="@{'/replies/add/{discussionId}' (discussionId=${disc.getDiscussionId()})}">Реплицирај</a>
     22        </div>
    3323    </div>
    3424    <table class="table table-striped" style="width: 70%; margin: auto;">
  • src/main/resources/templates/discussionsList.html

    r0226942 rad4243e  
    44    </div>
    55    <div class="container mb-4">
     6        <div class="row">
    67            <div class="col-12" th:if="${discussions.size() > 0}">
    78                <div class="table-responsive">
     
    910                        <thead>
    1011                        <tr>
    11                             <th scope="col">За</th>
    1212                            <th scope="col">Наслов</th>
    13                             <th scope="col">Допаѓања</th>
     13                            <th scope="col">Опис</th>
    1414                            <th scope="col">Датум</th>
    1515                            <th scope="col">Корисник</th>
     
    2727                        <tbody>
    2828                        <tr th:each="disc : ${discussions}" class="movie">
    29                             <td th:text="${disc.getMovie() != null ? 'Филмот ' + disc.getMovie().getTitle() : 'Актерот ' + disc.getPerson().getName() + ' ' + disc.getPerson().getSurname()}"></td>
     29                            <td th:text="${disc.getMovie() != null ? disc.getMovie().getTitle() : disc.getPerson().getName() + ' ' + disc.getPerson().getSurname()}"></td>
    3030                            <td>
    3131                                <a th:text="${disc.getTitle()}" th:href="@{'/discussions/{id}' (id=${disc.getDiscussionId()})}"></a>
    3232                            </td>
    33                             <td th:each="like : ${likes}" th:if="${like.getDiscussionId().equals(disc.getDiscussionId())}" th:text="${like.getLikes()}" class="likes_count">
    34                             </td>
     33                            <td th:text="${disc.getText()}"></td>
    3534                            <td th:text="${disc.getDate()}"></td>
    3635                            <td th:text="${disc.getUser().getUsername()}"></td>
     
    4140                            <td th:if="${!disc.getUser().equals(user)}"><a class="btn btn-success" th:href="@{'/replies/add/{discussionId}' (discussionId=${disc.getDiscussionId()})}">Реплицирај</a> </td>
    4241                            <td th:if="${!disc.getUser().equals(user)}">
    43                                 <a class='btn btn-success button-like-discussion-alt' th:if="${!likedDiscussions.contains(disc)}" th:discussion-id="${disc.getDiscussionId()}" th:user-id="${user.getUserId()}" >❤</a>
    44                                 <a class='btn btn-danger button-unlike-discussion-alt' th:if="${likedDiscussions.contains(disc)}" th:discussion-id="${disc.getDiscussionId()}" th:user-id="${user.getUserId()}" >💔</a>
     42                                <a class="btn btn-success">👍 </a>
     43                                <a class="btn btn-danger">👎</a>
    4544                            </td>
    4645                            </th:block>
     46
    4747
    4848                        </tr>
     
    5151                </div>
    5252            </div>
     53        </div>
    5354    </div>
    5455
  • src/main/resources/templates/fragments/header.html

    r0226942 rad4243e  
    22    <nav class="navbar navbar-expand-md navbar-dark bg-dark">
    33        <div class="container">
     4            <a class="navbar-brand" href="/movies">Форум за филмови</a>
    45            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault"
    56                    aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
     
    2728                    </li>
    2829                </ul>
    29                 <form class="form-inline my-2 my-lg-0 hidden">
     30                <form class="form-inline my-2 my-lg-0">
    3031                    <div class="input-group input-group-sm">
    3132                        <input type="text" class="form-control" aria-label="Small"
  • src/main/resources/templates/fragments/searchBarGenre.html

    r0226942 rad4243e  
    1 <div xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" style="width:60%; margin: auto; margin-bottom: 10px">
    2         <select th:if="${genres!=null}" id="searchGenre" class="form-control" style="float: left; display: block; width: 50%">
    3             <option value="" selected>Сите</option>
    4             <option th:each="genre: ${genres}" th:value="${genre.getGenreType()}" th:text="${genre.getGenreType()}"></option>
    5         </select>
    6         <div class="input-group-append" style="width: 40%">
    7             <button class="btn btn-secondary  search-button" style="width: 100%">Филтрирај по жанр</button>
    8         </div>
     1<div>
     2      <label for="searchGenre" style="width: 150px;">Пребарај по жанр</label>
     3        <input id="searchGenre" type="text" placeholder="жанр">
     4        <button class="search-button">Пребарај</button>
    95</div>
  • src/main/resources/templates/fragments/searchBarName.html

    r0226942 rad4243e  
    1 <div style="width:60%; margin: auto;">
    2     <input id="searchTitle" class="form-control" style="float: left; display: block; width: 50%" type="text" placeholder="...">
    3 
    4     <div class="input-group-append" style="width: 40%">
    5         <button class="btn btn-secondary search-button-title" style="width: 100%">Филтрирај по Наслов</button>
    6     </div>
    7 
     1<div>
     2    <label for="searchTitle" style="width: 150px;">Прабарај по име</label>
     3    <input id="searchTitle" type="text" placeholder="име">
     4    <button class="search-button-title">Пребарај</button>
    85</div>
  • src/main/resources/templates/movieShow.html

    r0226942 rad4243e  
    1313<div xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.w3.org/1999/xhtml" style="width: 80%; margin: auto">
    1414    <div>
    15         <div style="width: 30%; margin-right: 10px; padding:20px; border-right: 3px solid black; border-radius: 10px; float:left" id="image-movie-section">
    16             <img th:src="${movie.getImageUrl()}" style="width: 90%; height: auto; clear: both; margin-bottom: 20px">
    17             <div id="admin-buttons">
    18                 <a class="btn btn-primary" th:href="@{'/discussions/all/{id}?type=M' (id=${movie.getMovieId()})}" >Прегледај дискусии</a>
    19                 <th:block sec:authorize="isAuthenticated()" >
    20                     <div>
    21                         <a class="btn btn-success button-add-favourite-list" th:movie-id="${movie.getMovieId()}" th:user-id="${user.getUserId()}" th:if="${!likedMovies.contains(movie)}">❤</a>
    22                         <a class="btn btn-danger button-remove-favourite-list" th:movie-id="${movie.getMovieId()}" th:user-id="${user.getUserId()}" th:if="${likedMovies.contains(movie)}">💔</a>
    23                     </div>
    24                     <a class="btn btn-secondary button-add-grade-movie" th:movie-id="${movie.getMovieId()}">Остави оценка</a>
    25                     <a class="btn btn-warning" th:href="@{'/movies/{id}/edit' (id=${movie.getMovieId()})}">Промени</a>
    26                     <a class="btn btn-danger button-delete-movie" th:movie-id="${movie.getMovieId()}">Избриши филм</a>
    27                 </th:block>
    28             </div>
     15        <div style="width: 30%; margin-right: 10px; padding:20px; border-right: 3px solid black; border-radius: 10px; float:left">
     16            <img th:src="${movie.getImageUrl()}" style="width: 90%; height: auto">
    2917        </div>
    3018
     
    3826            </h3>
    3927            <h3 th:text="${'IMDB оцена: ' + movie.getImdbRating()}"></h3>
    40             <h3 th:text="${'Прикажан на: ' + movie.getDateFormatted()}"></h3>
     28            <h3 th:text="${'Прикажан на: ' + movie.getAiringDate()}"></h3>
    4129
    4230            <div style="background-color: rgba(200,200,200,0.5); border-radius: 10px; padding:15px; ">
     
    4533            </div>
    4634
    47             <div id="likes-showcase">
    48                 <h4 style="text-align: center">
    49                     <span>Филмот му се допаднал на </span>
    50                     <strong th:text="${likes}" id="movie_likes_count"></strong>
    51                     <span> корисници</span>
    52                 </h4>
    53             </div>
    54 
    55             <div class="person-movies-list genres-listing">
     35            <div>
    5636                <h3>Жанрови:</h3>
    5737                <ul>
     
    5939                </ul>
    6040            </div>
    61             <div class="person-movies-list">
     41            <div>
    6242                <h3>Актери:</h3>
    6343                <ul>
     
    6848        </div>
    6949    </div>
    70 
     50    <div id="admin-buttons">
     51        <a class="btn btn-primary" th:href="@{'/discussions/all/{id}?type=M' (id=${movie.getMovieId()})}" >Прегледај дискусии</a>
     52        <th:block sec:authorize="isAuthenticated()" >
     53            <a class="btn btn-success button-add-favourite-list" th:movie-id="${movie.getMovieId()}" th:user-id="${user.getUserId()}" th:if="${!likedMovies.contains(movie)}">Додади во омилена листа</a>
     54            <a class="btn btn-warning button-remove-favourite-list" th:movie-id="${movie.getMovieId()}" th:user-id="${user.getUserId()}" th:if="${likedMovies.contains(movie)}">Избриши од омилена листа</a>
     55            <a class="btn btn-success button-add-grade-movie" th:movie-id="${movie.getMovieId()}">Остави оценка</a>
     56            <a class="btn btn-warning" th:href="@{'/movies/{id}/edit' (id=${movie.getMovieId()})}">Промени</a>
     57            <a class="btn btn-danger button-delete-movie" th:movie-id="${movie.getMovieId()}">Избриши филм</a>
     58        </th:block>
     59    </div>
    7160    <hr>
    7261    <div style="width: 45%; margin: 25px; float:left; background-color: rgb(200,200,200); padding: 10px; border-radius: 5px">
     
    8170                </div>
    8271                <div style="width: 30%; float:right; background-color: darkorange; border-radius: 10px 30px; color: whitesmoke; padding: 10px;">
    83                     <h2 style="text-align: center">Оценет:</h2>
    84                     <p th:text="${rating.getStarsRated() + ' од 10'}" style="text-align: center"></p>
     72                    <h2 style="text-align: center">Rated:</h2>
     73                    <p th:text="${rating.getStarsRated() + ' out of 10 stars'}" style="text-align: center"></p>
    8574                </div>
    8675        </div>
     
    8877    <div style="width: 45%; margin: 25px; float:left; background-color: rgb(200,200,200); padding: 10px; border-radius: 5px">
    8978        <h2>
    90             <span>Лајковите кои филмот ги добил:</span>
     79            <span>Бројот на лајкови кои филмот ги добил:</span>
     80            <span th:text="${movie.getLikes().size()}"></span>
    9181        </h2>
    9282        <hr>
  • src/main/resources/templates/moviesList.html

    r0226942 rad4243e  
    22
    33    <div style="width: 70%; margin: auto">
    4         <div th:replace="fragments/searchBarName"></div><br>
     4        <div th:replace="fragments/searchBarName"></div>
    55        <div th:replace="fragments/searchBarGenre"></div>
    66    </div>
  • src/main/resources/templates/moviesListPaged.html

    r0226942 rad4243e  
    11<div xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.w3.org/1999/xhtml">
    2     <div style="margin:auto; width: 60%">
    3         <div style="width: 30%; margin: auto; height: 100%; margin-bottom: 10px">
    4             <a class="btn btn-outline-dark" style="height: 100%; width: 100%; font-size: 125%" id="button_toggle_filters">Прикажи филтрирање</a>
    5         </div>
    6         <div style="width: 100%; margin: auto; transition: 200ms" id="filters_div" class="invisible-search">
    7             <div th:replace="fragments/searchBarName"></div><br>
    8             <div th:replace="fragments/searchBarGenre"></div>
    9         </div>
     2
     3    <div style="width: 70%; margin: auto">
     4        <div th:replace="fragments/searchBarName"></div>
     5        <div th:replace="fragments/searchBarGenre"></div>
     6
    107    </div>
     8
    119    <div id="paging-section">
    1210        <div id="inner-paging" class="input-group">
     
    2725            </div>
    2826        </div>
    29     </div><br>
     27    </div><br><br><br>
    3028
    3129    <div class="container mb-4">
     
    3634        <div class="row" th:each="row: ${movie_rows}" >
    3735            <div class="col-md-3 elements" th:each="movie: ${row}" >
    38                 <span th:each="genre: ${movie.getGenres()}"  th:text="${genre?.getGenre()?.getGenreType()}" hidden class="card-genre"></span>
    3936                    <div class="card-body card bg-image" th:style="'background:url(' + ${movie.getImageUrl()} + ') no-repeat center #eee;'">
    4037                        <a class="card-text-center" style="color: white" th:href="@{'/movies/{id}' (id=${movie.getMovieId()})}" >
    4138                        <h3 class="card-title title" th:text="${movie.getTitle()}"></h3>
    4239                            <span th:each="genre: ${movie.getGenres()}"  th:text="${genre?.getGenre()?.getGenreType()}" hidden class="card-genre"></span>
     40
    4341                        </a>
    44                         <span class="card-text bottom">
    45                             <h3 th:text="${'Оценет '+movie.getImdbRating() + '/10'}"></h3>
    46                         </span>
     42                        <h3 class="card-text bottom" th:text="${'Rated '+movie.getImdbRating()}"></h3>
    4743                        <th:block sec:authorize="isAuthenticated()">
    4844                            <a class="bottom-heart btn btn-success button-add-favourite-list" th:movie-id="${movie.getMovieId()}" th:user-id="${user.getUserId()}" th:if="${!likedMovies.contains(movie)}">❤</a>
  • src/main/resources/templates/personShow.html

    r0226942 rad4243e  
    11
    2 <div xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.w3.org/1999/xhtml" style="width: 70%; margin: auto">
    3     <div style="clear: both; margin-bottom: 10px; display:  inline-block">
     2<div xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.w3.org/1999/xhtml" style="width: 80%; margin: auto">
     3    <div>
     4
    45        <div style="width: 60%; margin-left: 10px; padding:20px; float:left">
    56            <h1 th:text="${person.getName() + ' ' + person.getSurname()}" style="text-align: center; padding:10px; background-color: rgba(64,64,64,0.5); color:white; border-radius: 10px 0px"></h1>
    67            <hr>
    7             <h3 th:text="${'Роден на: ' + person.getDateFormatted()}"></h3>
     8            <h3 th:text="${'Born on: ' + person.getDateOfBirth()}"></h3>
    89            <div style="background-color: rgba(200,200,200,0.5); border-radius: 10px; padding:15px; ">
    9                 <h3>Краток Опис:</h3>
     10                <h3>Description:</h3>
    1011                <p th:text="${person.getDescription()}" style="text-align: justify"></p>
    1112            </div>
    1213
    13             <div th:if="${person.getType().toString().contains('D')}" class="person-movies-list">
    14                 <h3 >Режисирани филмови:</h3>
    15                 <hr>
     14            <div th:if="${person.getType() == 'D'}">
     15                <h3 >Directed movies:</h3>
    1616                <ul>
    17                     <li th:each="movie: ${person.getMovies()}"><a th:text="${movie.getTitle()}" th:href="@{'/movies/{id}' (id=${movie.getMovieId()})}" ></a></li>
     17                    <li th:each="movie: ${actor.getMovies()}"><a th:text="${movie.getTitle()}" th:href="@{'/movies/{id}' (id=${movie.getMovieId()})}" ></a></li>
    1818                </ul>
    1919            </div>
    20             <div th:if="${person.getType().toString().contains('A')}" class="person-movies-list">
    21                 <h3 >Се појавува во филмовите:</h3>
    22                 <hr>
     20            <div th:if="${person.getType() == 'A'}">
     21                <h3 >Acted in movies:</h3>
    2322                <ul>
    24                     <li th:each="movie: ${person.getMovieActors()}" ><a th:text="${movie.getMovie().getTitle()}" th:href="@{'/movies/{id}' (id=${movie.getMovie().getMovieId()})}" ></a></li>
     23                    <li th:each="movie: ${actor.getMovieActors()}" ><a th:text="${movie.getMovie().getTitle()}" th:href="@{'/movies/{id}' (id=${movie.getMovie().getMovieId()})}" ></a></li>
    2524                </ul>
    2625            </div>
     26
    2727        </div>
    28         <div style="width: 30%; margin-left: 10px; padding:20px; border-left: 3px solid black; border-radius: 10px; float:right">
     28        <div style="width: 30%; margin-left: 10px; padding:20px; border-left: 3px solid black; border-radius: 10px; float:left">
    2929            <img th:src="${person.getImageUrl()}" style="width: 90%; height: auto">
    3030        </div>
    3131    </div>
    32     <br>
    33     <div style="clear:both; display: inline-block; width: 100%; background-color: rgb(200,200,200); padding: 10px; border-radius: 5px">
     32    <div style="width: 45%; margin: 25px; float:left; background-color: rgb(200,200,200); padding: 10px; border-radius: 5px">
    3433        <h2>
    35             <span>Бројот на оцени кои личноста ги има добиено:</span>
    36             <span th:text="${person.getPersonRates().size()}"></span>
     34            <span>Бројот на оцени кои филмот ги добил:</span>
     35            <span th:text="${movie.getRates().size()}"></span>
    3736        </h2>
    3837        <hr>
    39         <div th:each="rating: ${person.getPersonRates()}" style="margin-bottom: 10px; border: 2px solid gray; border-radius: 10px; background-color: lightblue; padding: 10px; border-radius: 10px; min-height: 130px;">
     38        <div th:each="rating: ${movie.getRates()}" style="margin-bottom: 10px; border: 2px solid gray; border-radius: 10px; background-color: lightblue; padding: 10px; border-radius: 10px; min-height: 130px;">
    4039            <div style="width: 60%; float:left;">
    4140                <p th:text="${rating.getReason()}" style="text-align: justify"></p>
    4241            </div>
    4342            <div style="width: 30%; float:right; background-color: darkorange; border-radius: 10px 30px; color: whitesmoke; padding: 10px;">
    44                 <h2 style="text-align: center">Оценет со :</h2>
    45                 <p th:text="${rating.getStarsRated() + ' од 10'}" style="text-align: center"></p>
     43                <h2 style="text-align: center">Rated:</h2>
     44                <p th:text="${rating.getStarsRated() + ' out of 10 stars'}" style="text-align: center"></p>
    4645            </div>
    4746        </div>
    4847    </div>
    49 
     48    <div style="width: 45%; margin: 25px; float:left; background-color: rgb(200,200,200); padding: 10px; border-radius: 5px">
     49        <h2>
     50            <span>Бројот на лајкови кои филмот ги добил:</span>
     51            <span th:text="${movie.getLikes().size()}"></span>
     52        </h2>
     53        <hr>
     54        <div th:each="liked: ${movie.getLikes()}" style="margin-bottom: 10px; border: 2px solid gray; border-radius: 10px; background-color: lightblue; padding: 10px; border-radius: 10px; min-height: 60px;">
     55            <div style="width: 100%; float:left;">
     56                <h3  style="text-align: center">
     57                    <span th:text="${liked.getUser().getName() + ' ' + liked.getUser().getSurname()}"></span>
     58                    <span style="color: green; font-size: 100%" >✔</span>
     59                </h3>
     60            </div>
     61        </div>
     62    </div>
    5063</div>
  • src/main/resources/templates/personsList.html

    r0226942 rad4243e  
    55    </div>
    66    <div class="container mb-4">
     7        <div class="row">
    78            <div class="col-12" th:if="${persons.size() > 0}">
    89                <div class="table-responsive">
     
    4647                            <th:block sec:authorize="isAuthenticated()">
    4748                                <td>
    48                                     <a class="btn btn-secondary button-add-grade-person" th:person-id="${person.getPersonId()}">Остави оценка</a>
     49                                    <a class="btn btn-primary button-add-grade-person" th:person-id="${person.getPersonId()}">Остави оценка</a>
    4950
    5051                                </td>
    5152                            <td>
    52                                 <a class="btn btn-warning" th:href="@{'persons/edit/{personId}' (personId = ${person.getPersonId()})}">Промени</a>
     53                                <a class="btn btn-primary" th:href="@{'persons/edit/{personId}' (personId = ${person.getPersonId()})}">Промени</a>
    5354                            </td>
    5455                            <td>
    55                                 <a class="btn btn-danger button-delete-actor" th:person-id="${person.getPersonId()}">Избриши</a>
     56                                <a class="btn btn-primary button-delete-actor" th:person-id="${person.getPersonId()}">Избриши</a>
    5657
    5758                            </td>
     59
     60                            <a class="bottom-heart btn btn-success button-add-favourite-list"
     61                               th:movie-id="${person.getMovieId()}"
     62                               th:user-id="${user.getUserId()}"
     63                               th:if="${!likedPersons.contains(movie)}">❤</a>
     64
     65                            <a class="bottom-heart btn btn-danger button-remove-favourite-list"
     66                               th:movie-id="${person.getMovieId()}" th:user-id="${user.getUserId()}"
     67                               th:if="${likedPersons.contains(movie)}">💔</a>
    5868
    5969
     
    6575                </div>
    6676            </div>
     77        </div>
    6778    </div>
    6879
  • src/main/resources/templates/template.html

    r0226942 rad4243e  
    1616</head>
    1717<body>
    18 <section class="jumbotron text-center" style="background: url('/img/cover.jpg') center; background-repeat: no-repeat; background-size: 100% auto; height: 280px; margin-bottom: 0px ">
    19     <div class="container" >
    20         <h1 class="jumbotron-heading" style="z-index: -1"></h1>
     18<section class="jumbotron text-center">
     19    <div class="container">
     20        <!--<img th:src="@{/img/logo.png}" style="opacity: 0.3; z-index: 5; position: absolute; margin: auto; height: 225px; width: auto; left: 42%; top: 2%">-->
     21        <h1 class="jumbotron-heading" style="z-index: -1">weDiscussMovies</h1>
    2122    </div>
    2223</section>
  • target/classes/static/css/shared.css

    r0226942 rad4243e  
    5252.bottom{
    5353    position: absolute;
    54     top: 75%;
     54    top: 80%;
    5555    margin:auto;
    5656    width: 100%;
     
    6060    background-color: rgba(0,0,0,0.25);
    6161}
    62 .bottom h3, .bottom span{
    63     margin-bottom: 0px;
    64     margin-top: 0px;
    65 }
    66 .bottom span{
    67     font-size: 75%;
    68     margin-top: 5px;
    69 }
    7062
    7163
    72 .elements .card .btn{
     64.bottom-heart{
    7365    top: 60%;
    7466    left: auto;
     
    113105    opacity: 0;
    114106}
    115 
    116 .person-movies-list{
    117     margin: auto;
    118     margin-top: 20px;
    119     padding: 10px;
    120     width: 80%;
    121     background-color: rgba(52, 58, 64, 0.7);
    122     border-radius: 10px;
    123     transition: 200ms;
    124     color: white;
    125 }
    126 
    127 .person-movies-list:hover{
    128     background-color: rgba(52, 58, 64, 1);
    129 }
    130 
    131 .person-movies-list ul{
    132     list-style-type: none;
    133 }
    134 
    135 .person-movies-list ul li{
    136     color:black;
    137     background-color: rgba(255,255,255,0.7);
    138     padding: 12px;
    139     font-size: 120%;
    140     width: 80%;
    141     text-align: center;
    142     margin: auto;
    143     transition: 200ms;
    144     border-radius: 10px;
    145     margin-bottom: 5px;
    146     text-decoration: underline;
    147 }
    148 
    149 .person-movies-list hr{
    150     color: white;
    151     background-color: white;
    152     border-color: white;
    153 }
    154 
    155 .person-movies-list ul li:hover{
    156     background-color: rgba(255,255,255,1);
    157     text-decoration-color: blue;
    158 }
    159 
    160 .genres-listing ul li:hover{
    161     background-color: rgba(222,128,128,1);
    162 }
    163 
    164 .genres-listing ul li{
    165     background-color: rgba(192,128,128,0.7);
    166     text-decoration: none !important;
    167 }
    168 
    169 .person-movies-list ul li a{
    170     color: black;
    171     transition: 250ms;
    172     text-decoration: underline;
    173     text-decoration-color: black;
    174 }
    175 
    176 .person-movies-list ul li a:hover{
    177     color:blue;
    178 }
    179 
    180 
    181 #admin-buttons a{
    182     display: inline-block;
    183     width: 95%;
    184     margin: auto;
    185     margin-top: 10px;
    186     font-size: 125%;
    187     clear: both;
    188 }
    189 
    190 #image-movie-section{
    191     height: fit-content;
    192     min-height: fit-content;
    193 }
    194 
    195 #likes-showcase{
    196     background-color: rgba(192,128,128,0.7);
    197     border-radius: 10px;
    198     padding:10px;
    199     width: 60%;
    200     margin: auto;
    201     transition: 200ms;
    202     margin-top: 2%;
    203 }
    204 
    205 #likes-showcase strong{
    206     font-size: 150%;
    207 }
    208 
    209 #likes-showcase:hover{
    210     background-color: rgba(222,128,128,1);
    211 }
    212 
    213 .invisible-search{
    214     display: none;
    215 }
  • target/classes/static/js/sharedScript.js

    r0226942 rad4243e  
    44    var elements = $(".elements")
    55    var elementGrade;
    6     var first_time = true;
     6
    77
    88    $("#button-add").on("click", function (){
     
    5656    $(".button-add-grade-movie").on("click",function (){
    5757        elementGrade = $(this)
    58         urlRating ="/api/movies/grade/"+$(this).attr("movie-id")
     58        urlRating ="api/movies/grade/"+$(this).attr("movie-id")
    5959        $("#dialog-rating").dialog("open")
    6060    })
    6161    $(".button-add-grade-person").on("click",function (){
    6262        elementGrade = $(this)
    63         urlRating ="/api/persons/grade/"+$(this).attr("person-id")
     63        urlRating ="api/persons/grade/"+$(this).attr("person-id")
    6464        $("#dialog-rating").dialog("open")
    6565    })
     
    8181    })*/
    8282
    83     $("#button_toggle_filters").on("click", function (){
    84         if(first_time){
    85             $("#filters_div").removeClass("invisible-search")
    86             first_time=false
    87         }
    88         else
    89             $("#filters_div").fadeToggle();
    90     })
    9183
    9284   $(".search-button").on("click",function () {
    93        elements = $(".elements")
    94        let filter = $("#searchGenre").val()
    95        console.log('\''+filter+'\'')
    96        console.log(elements)
    97        if(filter.length==0){
    98            console.log("HERE")
    99            for (let item of elements) {
    100                $(item).removeClass("visibility")
    101            }
    102        }
     85        let filter = $("#searchGenre").val()
    10386       for (let item of elements) {
    104            $(item).removeClass("visibility")
    105             let genre = $(item).children(".card-genre")
     87            let genre = $(item).find(".card-genre")
    10688            let visible = false;
    107             console.log(genre.length)
     89
    10890            for (let g of genre) {
    109                 if (( $(g).text().toLowerCase() === filter.toLowerCase())){
    110                     console.log(item.text + ' ' + $(g).text())
     91
     92                if (( $(g).text().toLowerCase() === filter.toLowerCase() && !$(g).hasClass("visibility") && filter.trim().length != 0)) {
    11193                    visible = true
    11294                    $(item).removeClass("visibility")
     
    11496                }
    11597            }
    116             if(!visible){
     98            if (!visible && filter.trim().length != 0)
    11799                $(item).addClass("visibility")
    118             }
     100            else
     101                $(item).removeClass("visibility")
    119102
    120103        }
     
    123106    $(".button-delete-movie").on("click",function (){
    124107        let button = $(this)
    125         let url = "/api/movies/delete/" + $(button).attr("movie-id")
     108        let url = "api/movies/delete/" + $(button).attr("movie-id")
    126109        ajaxCallDelete(url,button)
    127110    })
    128111    $(".button-delete-actor").on("click",function (){
    129112        let button = $(this)
    130         let url  = "/api/persons/delete/" + $(button).attr("person-id")
     113        let url  = "api/persons/delete/" + $(button).attr("person-id")
    131114        ajaxCallDelete(url,button)
    132115    })
    133116    $(".button-delete-discussion").on("click",function (){
    134117        let button = $(this)
    135         let url = "/api/discussions/delete/" + $(button).attr("discussion-id")
     118        let url = "api/discussions/delete/" + $(button).attr("discussion-id")
    136119        ajaxCallDelete(url,button)
    137120    })
     
    156139    $(document.body).on("click",".button-add-favourite-list",function (){
    157140        let button = $(this)
    158         let url = "/api/movies/like/"+ $(this).attr("movie-id") + "?userId="+ $(this).attr("user-id")
     141        let url = "api/movies/like/"+ $(this).attr("movie-id") + "?userId="+ $(this).attr("user-id")
    159142        ajaxCallLike(url,button,'like','Веќе е филмот допаднат!')
    160143    })
    161144    $(document.body).on("click",".button-remove-favourite-list",function (){
    162145        let button = $(this)
    163         let url = "/api/movies/unlike/"+ $(this).attr("movie-id")+"?userId="+ $(this).attr("user-id")
     146        let url = "api/movies/unlike/"+ $(this).attr("movie-id")+"?userId="+ $(this).attr("user-id")
    164147        ajaxCallLike(url,button,'unlike','Немате оставено допаѓање на филмот!')
    165148    })
    166149    $(document.body).on("click",".button-add-genre-liked-list",function (){
    167150        let button = $(this)
    168         let url = "/api/genres/like/"+ $(this).attr("genre-id") + "?userId="+ $(this).attr("user-id")
     151        let url = "api/genres/like/"+ $(this).attr("genre-id") + "?userId="+ $(this).attr("user-id")
    169152        ajaxCallLikeGenre(url,button,'like','Веќе ви се допаѓа жанрот!')
    170153    })
    171154    $(document.body).on("click",".button-remove-genre-liked-list",function (){
    172155        let button = $(this)
    173         let url = "/api/genres/unlike/"+ $(this).attr("genre-id")+"?userId="+ $(this).attr("user-id")
     156        let url = "api/genres/unlike/"+ $(this).attr("genre-id")+"?userId="+ $(this).attr("user-id")
    174157        ajaxCallLikeGenre(url,button,'unlike','Немате оставено допаѓање на жанрот!')
    175     })
    176     $(document.body).on("click",".button-like-discussion",function (){
    177         let button = $(this)
    178         let url = "/api/discussions/like/"+ $(this).attr("discussion-id")+"?userId="+ $(this).attr("user-id")
    179         ajaxCallLikeDiscussion(url,button,'like','Веќе имате оставено допаѓање на дискусијата!')
    180     })
    181     $(document.body).on("click",".button-unlike-discussion",function (){
    182         let button = $(this)
    183         let url = "/api/discussions/unlike/"+ $(this).attr("discussion-id")+"?userId="+ $(this).attr("user-id")
    184         ajaxCallLikeDiscussion(url,button,'unlike','Немате оставено допаѓање на дискусијата!')
    185     })
    186     $(document.body).on("click",".button-like-discussion-alt",function (){
    187         let button = $(this)
    188         let url = "/api/discussions/like/"+ $(this).attr("discussion-id")+"?userId="+ $(this).attr("user-id")
    189         ajaxCallLikeDiscussionAlternative(url,button,'like','Веќе имате оставено допаѓање на дискусијата!')
    190     })
    191     $(document.body).on("click",".button-unlike-discussion-alt",function (){
    192         let button = $(this)
    193         let url = "/api/discussions/unlike/"+ $(this).attr("discussion-id")+"?userId="+ $(this).attr("user-id")
    194         ajaxCallLikeDiscussionAlternative(url,button,'unlike','Немате оставено допаѓање на дискусијата!')
    195158    })
    196159    $(".discussion-type").change(function (){
     
    226189                let movieId=$(button).attr("movie-id")
    227190                if (type==='like') {
    228                     $(button).parent().append("<a class='btn btn-danger button-remove-favourite-list' movie-id=" + movieId + " user-id=" + userId + ">💔</a>")
     191                    $(button).parent().append("<a class='bottom-heart btn btn-danger button-remove-favourite-list' movie-id=" + movieId + " user-id=" + userId + ">💔</a>")
    229192                    console.log("da")
    230193                }
    231194                else{
    232                     $(button).parent().append("<a class='btn btn-success button-add-favourite-list' movie-id=" + movieId + " user-id=" + userId + ">❤</a>")
    233                 }
    234                 likes_count = $("#movie_likes_count")
    235                 count = Number($(likes_count).text())
    236                 if(type==="like")
    237                     count++
    238                 else
    239                     count--
    240                 likes_count.text(count)
     195                    $(button).parent().append("<a class='bottom-heart btn btn-success button-add-favourite-list' movie-id=" + movieId + " user-id=" + userId + ">❤</a>")
     196
     197                }
    241198                $(button).remove()
    242199            }
     
    306263
    307264
    308 
    309 
    310 function ajaxCallLikeDiscussion(url,button,type,message){
    311     $.ajax({
    312         url:url,
    313         success:function (data){
    314             if (data){
    315                 let el = $(button).parent().siblings().eq(3)
    316                 console.log(el)
    317                 if (type=="like") {
    318                     $(el).html(parseInt($(el).text()) + 1)
    319                     console.log("da")
    320                 }
    321                 else
    322                     $(el).html(parseInt($(el).text()) - 1)
    323                 $(button).css("display","none")
    324                 let userId = $(button).attr("user-id")
    325                 let discussionId=$(button).attr("discussion-id")
    326                 if (type==='like') {
    327                     $(button).parent().append("<a class='btn btn-danger button-unlike-discussion' discussion-id=" + discussionId + " user-id=" + userId + ">💔</a>")
    328                     console.log("da")
    329                 }
    330                 else{
    331                     $(button).parent().append("<a class='btn btn-success button-like-discussion' discussion-id=" + discussionId + " user-id=" + userId + ">❤</a>")
    332                 }
    333                 var likes_count = $("#likes_count")
    334                 var count = Number($(likes_count).text())
    335                 if(type==='like')
    336                     count += 1
    337                 else
    338                     count -= 1
    339                 $(likes_count).text(count);
    340                 $(button).remove()
    341             }
    342             else {
    343                 $(button).parent().append("<div>" + message +" <button class='button-confirm'>Ок</button></div>")
    344             }
    345         }
    346     })
    347 }
    348 
    349 
    350 
    351 function ajaxCallLikeDiscussionAlternative(url,button,type,message){
    352     $.ajax({
    353         url:url,
    354         success:function (data){
    355             if (data){
    356                 let el = $(button).parent().siblings().eq(3)
    357                 console.log(el)
    358                 if (type=="like") {
    359                     $(el).html(parseInt($(el).text()) + 1)
    360                     console.log("da")
    361                 }
    362                 else
    363                     $(el).html(parseInt($(el).text()) - 1)
    364                 $(button).css("display","none")
    365                 let userId = $(button).attr("user-id")
    366                 let discussionId=$(button).attr("discussion-id")
    367                 if (type==='like') {
    368                     $(button).parent().append("<a class='btn btn-danger button-unlike-discussion-alt' discussion-id=" + discussionId + " user-id=" + userId + ">💔</a>")
    369                     console.log("da")
    370                 }
    371                 else{
    372                     $(button).parent().append("<a class='btn btn-success button-like-discussion-alt' discussion-id=" + discussionId + " user-id=" + userId + ">❤</a>")
    373                 }
    374                 var likes_count = $(button).parent().siblings(".likes_count").first()
    375                 var count = Number(likes_count.text())
    376                 if(type==='like')
    377                     count += 1
    378                 else
    379                     count -= 1
    380                 $(likes_count).text(count);
    381                 $(button).remove()
    382             }
    383             else {
    384                 $(button).parent().append("<div>" + message +" <button class='button-confirm'>Ок</button></div>")
    385             }
    386         }
    387     })
    388 }
    389 
    390 
    391265function  ajaxCallRating(url,button,type){
    392266    model = {
  • target/classes/templates/discussion.html

    r0226942 rad4243e  
    11<div xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.w3.org/1999/xhtml">
    22    <div style="width: 85%; text-align: justify; margin: auto; clear: both">
    3         <div style="background-color: rgba(128,128,128, 0.2); border-radius: 20px; padding: 20px">
    4             <h1 th:text="${disc.getTitle()}" style="width: 80%; display: inline; height: fit-content; clear: both"></h1>
     3        <div>
     4            <h1 th:text="${disc.getTitle()}" style="width: 80%; float: left"></h1>
    55        </div>
    6         <hr>
     6        <hr><br><br>
    77        <div>
    88            <h5 th:text="${disc.getText()}" style="width: 90%; margin: auto; background-color: lightblue; border-radius: 4px; padding: 20px"></h5>
    99        </div>
    10         <br>
    11         <h4>
    12             <span th:if="${!disc.getUser().equals(user)}" sec:authorize="isAuthenticated()">
    13                 <a class='btn btn-success button-like-discussion' th:if="${!likedDiscussions.contains(disc)}" th:discussion-id="${disc.getDiscussionId()}" th:user-id="${user.getUserId()}" >❤</a>
    14                 <a class='btn btn-danger button-unlike-discussion' th:if="${likedDiscussions.contains(disc)}" th:discussion-id="${disc.getDiscussionId()}" th:user-id="${user.getUserId()}" >💔</a>
    15             </span>
    16             <span>Број на допаѓања:</span>
    17             <span th:text="${likes}" id="likes_count"></span>
    18         </h4>
    19         <br>
     10        <br><br><br>
    2011        <h6 style="width: 60%; float:left;">
    2112            <span th:text="${'Поставено од: '+disc.getUser().getUsername()}"></span>
     
    2617        </h6>
    2718        <div style="float: right"  sec:authorize="isAuthenticated()">
    28             <a th:if="${disc.getUser().equals(user)}" class="btn btn-warning" th:href="@{'/discussions/add/{id}' (id=${disc.getDiscussionId()})}">Промени</a>
    29             <a th:if="${disc.getUser().equals(user)}" class="btn btn-danger button-delete-discussion" th:discussion-id="${disc.getDiscussionId()}">Избриши</a>
    30             <a class="btn btn-success" th:href="@{'/replies/add/{discussionId}' (discussionId=${disc.getDiscussionId()})}">Реплицирај</a>
    31 
    32         </div><br>
     19        <a th:if="${disc.getUser().equals(user)}" class="btn btn-warning" th:href="@{'/discussions/add/{id}' (id=${disc.getDiscussionId()})}">Промени</a>
     20        <a th:if="${disc.getUser().equals(user)}" class="btn btn-danger button-delete-discussion" th:discussion-id="${disc.getDiscussionId()}">Избриши</a>
     21        <a class="btn btn-success" th:href="@{'/replies/add/{discussionId}' (discussionId=${disc.getDiscussionId()})}">Реплицирај</a>
     22        </div>
    3323    </div>
    3424    <table class="table table-striped" style="width: 70%; margin: auto;">
  • target/classes/templates/discussionsList.html

    r0226942 rad4243e  
    44    </div>
    55    <div class="container mb-4">
     6        <div class="row">
    67            <div class="col-12" th:if="${discussions.size() > 0}">
    78                <div class="table-responsive">
     
    910                        <thead>
    1011                        <tr>
    11                             <th scope="col">За</th>
    1212                            <th scope="col">Наслов</th>
    13                             <th scope="col">Допаѓања</th>
     13                            <th scope="col">Опис</th>
    1414                            <th scope="col">Датум</th>
    1515                            <th scope="col">Корисник</th>
     
    2727                        <tbody>
    2828                        <tr th:each="disc : ${discussions}" class="movie">
    29                             <td th:text="${disc.getMovie() != null ? 'Филмот ' + disc.getMovie().getTitle() : 'Актерот ' + disc.getPerson().getName() + ' ' + disc.getPerson().getSurname()}"></td>
     29                            <td th:text="${disc.getMovie() != null ? disc.getMovie().getTitle() : disc.getPerson().getName() + ' ' + disc.getPerson().getSurname()}"></td>
    3030                            <td>
    3131                                <a th:text="${disc.getTitle()}" th:href="@{'/discussions/{id}' (id=${disc.getDiscussionId()})}"></a>
    3232                            </td>
    33                             <td th:each="like : ${likes}" th:if="${like.getDiscussionId().equals(disc.getDiscussionId())}" th:text="${like.getLikes()}" class="likes_count">
    34                             </td>
     33                            <td th:text="${disc.getText()}"></td>
    3534                            <td th:text="${disc.getDate()}"></td>
    3635                            <td th:text="${disc.getUser().getUsername()}"></td>
     
    4140                            <td th:if="${!disc.getUser().equals(user)}"><a class="btn btn-success" th:href="@{'/replies/add/{discussionId}' (discussionId=${disc.getDiscussionId()})}">Реплицирај</a> </td>
    4241                            <td th:if="${!disc.getUser().equals(user)}">
    43                                 <a class='btn btn-success button-like-discussion-alt' th:if="${!likedDiscussions.contains(disc)}" th:discussion-id="${disc.getDiscussionId()}" th:user-id="${user.getUserId()}" >❤</a>
    44                                 <a class='btn btn-danger button-unlike-discussion-alt' th:if="${likedDiscussions.contains(disc)}" th:discussion-id="${disc.getDiscussionId()}" th:user-id="${user.getUserId()}" >💔</a>
     42                                <a class="btn btn-success">👍 </a>
     43                                <a class="btn btn-danger">👎</a>
    4544                            </td>
    4645                            </th:block>
     46
    4747
    4848                        </tr>
     
    5151                </div>
    5252            </div>
     53        </div>
    5354    </div>
    5455
  • target/classes/templates/fragments/header.html

    r0226942 rad4243e  
    22    <nav class="navbar navbar-expand-md navbar-dark bg-dark">
    33        <div class="container">
     4            <a class="navbar-brand" href="/movies">Форум за филмови</a>
    45            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault"
    56                    aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
     
    2728                    </li>
    2829                </ul>
    29                 <form class="form-inline my-2 my-lg-0 hidden">
     30                <form class="form-inline my-2 my-lg-0">
    3031                    <div class="input-group input-group-sm">
    3132                        <input type="text" class="form-control" aria-label="Small"
  • target/classes/templates/fragments/searchBarGenre.html

    r0226942 rad4243e  
    1 <div xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" style="width:60%; margin: auto; margin-bottom: 10px">
    2         <select th:if="${genres!=null}" id="searchGenre" class="form-control" style="float: left; display: block; width: 50%">
    3             <option value="" selected>Сите</option>
    4             <option th:each="genre: ${genres}" th:value="${genre.getGenreType()}" th:text="${genre.getGenreType()}"></option>
    5         </select>
    6         <div class="input-group-append" style="width: 40%">
    7             <button class="btn btn-secondary  search-button" style="width: 100%">Филтрирај по жанр</button>
    8         </div>
     1<div>
     2      <label for="searchGenre" style="width: 150px;">Пребарај по жанр</label>
     3        <input id="searchGenre" type="text" placeholder="жанр">
     4        <button class="search-button">Пребарај</button>
    95</div>
  • target/classes/templates/fragments/searchBarName.html

    r0226942 rad4243e  
    1 <div style="width:60%; margin: auto;">
    2     <input id="searchTitle" class="form-control" style="float: left; display: block; width: 50%" type="text" placeholder="...">
    3 
    4     <div class="input-group-append" style="width: 40%">
    5         <button class="btn btn-secondary search-button-title" style="width: 100%">Филтрирај по Наслов</button>
    6     </div>
    7 
     1<div>
     2    <label for="searchTitle" style="width: 150px;">Прабарај по име</label>
     3    <input id="searchTitle" type="text" placeholder="име">
     4    <button class="search-button-title">Пребарај</button>
    85</div>
  • target/classes/templates/movieShow.html

    r0226942 rad4243e  
    1313<div xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.w3.org/1999/xhtml" style="width: 80%; margin: auto">
    1414    <div>
    15         <div style="width: 30%; margin-right: 10px; padding:20px; border-right: 3px solid black; border-radius: 10px; float:left" id="image-movie-section">
    16             <img th:src="${movie.getImageUrl()}" style="width: 90%; height: auto; clear: both; margin-bottom: 20px">
    17             <div id="admin-buttons">
    18                 <a class="btn btn-primary" th:href="@{'/discussions/all/{id}?type=M' (id=${movie.getMovieId()})}" >Прегледај дискусии</a>
    19                 <th:block sec:authorize="isAuthenticated()" >
    20                     <div>
    21                         <a class="btn btn-success button-add-favourite-list" th:movie-id="${movie.getMovieId()}" th:user-id="${user.getUserId()}" th:if="${!likedMovies.contains(movie)}">❤</a>
    22                         <a class="btn btn-danger button-remove-favourite-list" th:movie-id="${movie.getMovieId()}" th:user-id="${user.getUserId()}" th:if="${likedMovies.contains(movie)}">💔</a>
    23                     </div>
    24                     <a class="btn btn-secondary button-add-grade-movie" th:movie-id="${movie.getMovieId()}">Остави оценка</a>
    25                     <a class="btn btn-warning" th:href="@{'/movies/{id}/edit' (id=${movie.getMovieId()})}">Промени</a>
    26                     <a class="btn btn-danger button-delete-movie" th:movie-id="${movie.getMovieId()}">Избриши филм</a>
    27                 </th:block>
    28             </div>
     15        <div style="width: 30%; margin-right: 10px; padding:20px; border-right: 3px solid black; border-radius: 10px; float:left">
     16            <img th:src="${movie.getImageUrl()}" style="width: 90%; height: auto">
    2917        </div>
    3018
     
    3826            </h3>
    3927            <h3 th:text="${'IMDB оцена: ' + movie.getImdbRating()}"></h3>
    40             <h3 th:text="${'Прикажан на: ' + movie.getDateFormatted()}"></h3>
     28            <h3 th:text="${'Прикажан на: ' + movie.getAiringDate()}"></h3>
    4129
    4230            <div style="background-color: rgba(200,200,200,0.5); border-radius: 10px; padding:15px; ">
     
    4533            </div>
    4634
    47             <div id="likes-showcase">
    48                 <h4 style="text-align: center">
    49                     <span>Филмот му се допаднал на </span>
    50                     <strong th:text="${likes}" id="movie_likes_count"></strong>
    51                     <span> корисници</span>
    52                 </h4>
    53             </div>
    54 
    55             <div class="person-movies-list genres-listing">
     35            <div>
    5636                <h3>Жанрови:</h3>
    5737                <ul>
     
    5939                </ul>
    6040            </div>
    61             <div class="person-movies-list">
     41            <div>
    6242                <h3>Актери:</h3>
    6343                <ul>
     
    6848        </div>
    6949    </div>
    70 
     50    <div id="admin-buttons">
     51        <a class="btn btn-primary" th:href="@{'/discussions/all/{id}?type=M' (id=${movie.getMovieId()})}" >Прегледај дискусии</a>
     52        <th:block sec:authorize="isAuthenticated()" >
     53            <a class="btn btn-success button-add-favourite-list" th:movie-id="${movie.getMovieId()}" th:user-id="${user.getUserId()}" th:if="${!likedMovies.contains(movie)}">Додади во омилена листа</a>
     54            <a class="btn btn-warning button-remove-favourite-list" th:movie-id="${movie.getMovieId()}" th:user-id="${user.getUserId()}" th:if="${likedMovies.contains(movie)}">Избриши од омилена листа</a>
     55            <a class="btn btn-success button-add-grade-movie" th:movie-id="${movie.getMovieId()}">Остави оценка</a>
     56            <a class="btn btn-warning" th:href="@{'/movies/{id}/edit' (id=${movie.getMovieId()})}">Промени</a>
     57            <a class="btn btn-danger button-delete-movie" th:movie-id="${movie.getMovieId()}">Избриши филм</a>
     58        </th:block>
     59    </div>
    7160    <hr>
    7261    <div style="width: 45%; margin: 25px; float:left; background-color: rgb(200,200,200); padding: 10px; border-radius: 5px">
     
    8170                </div>
    8271                <div style="width: 30%; float:right; background-color: darkorange; border-radius: 10px 30px; color: whitesmoke; padding: 10px;">
    83                     <h2 style="text-align: center">Оценет:</h2>
    84                     <p th:text="${rating.getStarsRated() + ' од 10'}" style="text-align: center"></p>
     72                    <h2 style="text-align: center">Rated:</h2>
     73                    <p th:text="${rating.getStarsRated() + ' out of 10 stars'}" style="text-align: center"></p>
    8574                </div>
    8675        </div>
     
    8877    <div style="width: 45%; margin: 25px; float:left; background-color: rgb(200,200,200); padding: 10px; border-radius: 5px">
    8978        <h2>
    90             <span>Лајковите кои филмот ги добил:</span>
     79            <span>Бројот на лајкови кои филмот ги добил:</span>
     80            <span th:text="${movie.getLikes().size()}"></span>
    9181        </h2>
    9282        <hr>
  • target/classes/templates/moviesList.html

    r0226942 rad4243e  
    22
    33    <div style="width: 70%; margin: auto">
    4         <div th:replace="fragments/searchBarName"></div><br>
     4        <div th:replace="fragments/searchBarName"></div>
    55        <div th:replace="fragments/searchBarGenre"></div>
    66    </div>
  • target/classes/templates/moviesListPaged.html

    r0226942 rad4243e  
    11<div xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.w3.org/1999/xhtml">
    2     <div style="margin:auto; width: 60%">
    3         <div style="width: 30%; margin: auto; height: 100%; margin-bottom: 10px">
    4             <a class="btn btn-outline-dark" style="height: 100%; width: 100%; font-size: 125%" id="button_toggle_filters">Прикажи филтрирање</a>
    5         </div>
    6         <div style="width: 100%; margin: auto; transition: 200ms" id="filters_div" class="invisible-search">
    7             <div th:replace="fragments/searchBarName"></div><br>
    8             <div th:replace="fragments/searchBarGenre"></div>
    9         </div>
     2
     3    <div style="width: 70%; margin: auto">
     4        <div th:replace="fragments/searchBarName"></div>
     5        <div th:replace="fragments/searchBarGenre"></div>
     6
    107    </div>
     8
    119    <div id="paging-section">
    1210        <div id="inner-paging" class="input-group">
     
    2725            </div>
    2826        </div>
    29     </div><br>
     27    </div><br><br><br>
    3028
    3129    <div class="container mb-4">
     
    3634        <div class="row" th:each="row: ${movie_rows}" >
    3735            <div class="col-md-3 elements" th:each="movie: ${row}" >
    38                 <span th:each="genre: ${movie.getGenres()}"  th:text="${genre?.getGenre()?.getGenreType()}" hidden class="card-genre"></span>
    3936                    <div class="card-body card bg-image" th:style="'background:url(' + ${movie.getImageUrl()} + ') no-repeat center #eee;'">
    4037                        <a class="card-text-center" style="color: white" th:href="@{'/movies/{id}' (id=${movie.getMovieId()})}" >
    4138                        <h3 class="card-title title" th:text="${movie.getTitle()}"></h3>
    4239                            <span th:each="genre: ${movie.getGenres()}"  th:text="${genre?.getGenre()?.getGenreType()}" hidden class="card-genre"></span>
     40
    4341                        </a>
    44                         <span class="card-text bottom">
    45                             <h3 th:text="${'Оценет '+movie.getImdbRating() + '/10'}"></h3>
    46                         </span>
     42                        <h3 class="card-text bottom" th:text="${'Rated '+movie.getImdbRating()}"></h3>
    4743                        <th:block sec:authorize="isAuthenticated()">
    4844                            <a class="bottom-heart btn btn-success button-add-favourite-list" th:movie-id="${movie.getMovieId()}" th:user-id="${user.getUserId()}" th:if="${!likedMovies.contains(movie)}">❤</a>
  • target/classes/templates/personShow.html

    r0226942 rad4243e  
    11
    2 <div xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.w3.org/1999/xhtml" style="width: 70%; margin: auto">
    3     <div style="clear: both; margin-bottom: 10px; display:  inline-block">
     2<div xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.w3.org/1999/xhtml" style="width: 80%; margin: auto">
     3    <div>
     4
    45        <div style="width: 60%; margin-left: 10px; padding:20px; float:left">
    56            <h1 th:text="${person.getName() + ' ' + person.getSurname()}" style="text-align: center; padding:10px; background-color: rgba(64,64,64,0.5); color:white; border-radius: 10px 0px"></h1>
    67            <hr>
    7             <h3 th:text="${'Роден на: ' + person.getDateFormatted()}"></h3>
     8            <h3 th:text="${'Born on: ' + person.getDateOfBirth()}"></h3>
    89            <div style="background-color: rgba(200,200,200,0.5); border-radius: 10px; padding:15px; ">
    9                 <h3>Краток Опис:</h3>
     10                <h3>Description:</h3>
    1011                <p th:text="${person.getDescription()}" style="text-align: justify"></p>
    1112            </div>
    1213
    13             <div th:if="${person.getType().toString().contains('D')}" class="person-movies-list">
    14                 <h3 >Режисирани филмови:</h3>
    15                 <hr>
     14            <div th:if="${person.getType() == 'D'}">
     15                <h3 >Directed movies:</h3>
    1616                <ul>
    17                     <li th:each="movie: ${person.getMovies()}"><a th:text="${movie.getTitle()}" th:href="@{'/movies/{id}' (id=${movie.getMovieId()})}" ></a></li>
     17                    <li th:each="movie: ${actor.getMovies()}"><a th:text="${movie.getTitle()}" th:href="@{'/movies/{id}' (id=${movie.getMovieId()})}" ></a></li>
    1818                </ul>
    1919            </div>
    20             <div th:if="${person.getType().toString().contains('A')}" class="person-movies-list">
    21                 <h3 >Се појавува во филмовите:</h3>
    22                 <hr>
     20            <div th:if="${person.getType() == 'A'}">
     21                <h3 >Acted in movies:</h3>
    2322                <ul>
    24                     <li th:each="movie: ${person.getMovieActors()}" ><a th:text="${movie.getMovie().getTitle()}" th:href="@{'/movies/{id}' (id=${movie.getMovie().getMovieId()})}" ></a></li>
     23                    <li th:each="movie: ${actor.getMovieActors()}" ><a th:text="${movie.getMovie().getTitle()}" th:href="@{'/movies/{id}' (id=${movie.getMovie().getMovieId()})}" ></a></li>
    2524                </ul>
    2625            </div>
     26
    2727        </div>
    28         <div style="width: 30%; margin-left: 10px; padding:20px; border-left: 3px solid black; border-radius: 10px; float:right">
     28        <div style="width: 30%; margin-left: 10px; padding:20px; border-left: 3px solid black; border-radius: 10px; float:left">
    2929            <img th:src="${person.getImageUrl()}" style="width: 90%; height: auto">
    3030        </div>
    3131    </div>
    32     <br>
    33     <div style="clear:both; display: inline-block; width: 100%; background-color: rgb(200,200,200); padding: 10px; border-radius: 5px">
     32    <div style="width: 45%; margin: 25px; float:left; background-color: rgb(200,200,200); padding: 10px; border-radius: 5px">
    3433        <h2>
    35             <span>Бројот на оцени кои личноста ги има добиено:</span>
    36             <span th:text="${person.getPersonRates().size()}"></span>
     34            <span>Бројот на оцени кои филмот ги добил:</span>
     35            <span th:text="${movie.getRates().size()}"></span>
    3736        </h2>
    3837        <hr>
    39         <div th:each="rating: ${person.getPersonRates()}" style="margin-bottom: 10px; border: 2px solid gray; border-radius: 10px; background-color: lightblue; padding: 10px; border-radius: 10px; min-height: 130px;">
     38        <div th:each="rating: ${movie.getRates()}" style="margin-bottom: 10px; border: 2px solid gray; border-radius: 10px; background-color: lightblue; padding: 10px; border-radius: 10px; min-height: 130px;">
    4039            <div style="width: 60%; float:left;">
    4140                <p th:text="${rating.getReason()}" style="text-align: justify"></p>
    4241            </div>
    4342            <div style="width: 30%; float:right; background-color: darkorange; border-radius: 10px 30px; color: whitesmoke; padding: 10px;">
    44                 <h2 style="text-align: center">Оценет со :</h2>
    45                 <p th:text="${rating.getStarsRated() + ' од 10'}" style="text-align: center"></p>
     43                <h2 style="text-align: center">Rated:</h2>
     44                <p th:text="${rating.getStarsRated() + ' out of 10 stars'}" style="text-align: center"></p>
    4645            </div>
    4746        </div>
    4847    </div>
    49 
     48    <div style="width: 45%; margin: 25px; float:left; background-color: rgb(200,200,200); padding: 10px; border-radius: 5px">
     49        <h2>
     50            <span>Бројот на лајкови кои филмот ги добил:</span>
     51            <span th:text="${movie.getLikes().size()}"></span>
     52        </h2>
     53        <hr>
     54        <div th:each="liked: ${movie.getLikes()}" style="margin-bottom: 10px; border: 2px solid gray; border-radius: 10px; background-color: lightblue; padding: 10px; border-radius: 10px; min-height: 60px;">
     55            <div style="width: 100%; float:left;">
     56                <h3  style="text-align: center">
     57                    <span th:text="${liked.getUser().getName() + ' ' + liked.getUser().getSurname()}"></span>
     58                    <span style="color: green; font-size: 100%" >✔</span>
     59                </h3>
     60            </div>
     61        </div>
     62    </div>
    5063</div>
  • target/classes/templates/personsList.html

    r0226942 rad4243e  
    55    </div>
    66    <div class="container mb-4">
     7        <div class="row">
    78            <div class="col-12" th:if="${persons.size() > 0}">
    89                <div class="table-responsive">
     
    4647                            <th:block sec:authorize="isAuthenticated()">
    4748                                <td>
    48                                     <a class="btn btn-secondary button-add-grade-person" th:person-id="${person.getPersonId()}">Остави оценка</a>
     49                                    <a class="btn btn-primary button-add-grade-person" th:person-id="${person.getPersonId()}">Остави оценка</a>
    4950
    5051                                </td>
    5152                            <td>
    52                                 <a class="btn btn-warning" th:href="@{'persons/edit/{personId}' (personId = ${person.getPersonId()})}">Промени</a>
     53                                <a class="btn btn-primary" th:href="@{'persons/edit/{personId}' (personId = ${person.getPersonId()})}">Промени</a>
    5354                            </td>
    5455                            <td>
    55                                 <a class="btn btn-danger button-delete-actor" th:person-id="${person.getPersonId()}">Избриши</a>
     56                                <a class="btn btn-primary button-delete-actor" th:person-id="${person.getPersonId()}">Избриши</a>
    5657
    5758                            </td>
     59
     60                            <a class="bottom-heart btn btn-success button-add-favourite-list"
     61                               th:movie-id="${person.getMovieId()}"
     62                               th:user-id="${user.getUserId()}"
     63                               th:if="${!likedPersons.contains(movie)}">❤</a>
     64
     65                            <a class="bottom-heart btn btn-danger button-remove-favourite-list"
     66                               th:movie-id="${person.getMovieId()}" th:user-id="${user.getUserId()}"
     67                               th:if="${likedPersons.contains(movie)}">💔</a>
    5868
    5969
     
    6575                </div>
    6676            </div>
     77        </div>
    6778    </div>
    6879
  • target/classes/templates/template.html

    r0226942 rad4243e  
    1616</head>
    1717<body>
    18 <section class="jumbotron text-center" style="background: url('/img/cover.jpg') center; background-repeat: no-repeat; background-size: 100% auto; height: 280px; margin-bottom: 0px ">
    19     <div class="container" >
    20         <h1 class="jumbotron-heading" style="z-index: -1"></h1>
     18<section class="jumbotron text-center">
     19    <div class="container">
     20        <!--<img th:src="@{/img/logo.png}" style="opacity: 0.3; z-index: 5; position: absolute; margin: auto; height: 225px; width: auto; left: 42%; top: 2%">-->
     21        <h1 class="jumbotron-heading" style="z-index: -1">weDiscussMovies</h1>
    2122    </div>
    2223</section>
Note: See TracChangeset for help on using the changeset viewer.