diff --git a/app/assets/stylesheets/theses_crawler.scss b/app/assets/stylesheets/theses_crawler.scss index 25c9a4a..2c28234 100644 --- a/app/assets/stylesheets/theses_crawler.scss +++ b/app/assets/stylesheets/theses_crawler.scss @@ -1,3 +1,49 @@ -// Place all the styles related to the ThesesCrawler controller here. +// Place all the styles related to the thesesCrawler controller here. // They will automatically be included in application.css. // You can use Sass (SCSS) here: https://sass-lang.com/ + +.theses-list { + list-style: none; + padding: 0; + margin: 0; + + a { + text-decoration: none; + color: black; + } + + .thesis { + line-height: 72px; + width: 100%; + padding: 8px 0 8px 0; + + .list-link { + float: left; + width: 89%; + height: 72px; + } + + .thesis-title { + width: 100%; + display: inline-block; + text-align: left; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + + .add-to-fav { + display: inline-block; + vertical-align: middle; + float: right; + width: 36px; + height: 36px; + + svg { + width: 100%; + height: auto; + vertical-align: middle; + } + } + } +} diff --git a/app/controllers/crawlers/theses_crawler_controller.rb b/app/controllers/crawlers/theses_crawler_controller.rb index 409a5e4..2bb8231 100644 --- a/app/controllers/crawlers/theses_crawler_controller.rb +++ b/app/controllers/crawlers/theses_crawler_controller.rb @@ -1,13 +1,42 @@ class Crawlers::ThesesCrawlerController < Crawlers::TissCrawlerController def show_basic + params[:api] = '/api/search/thesis/v1.0/quickSearch' + params[:search_parameter] = 'searchterm' + puts params[:search_context] + @host = TissCrawler.get_host + # TissCrawler performs general search over the available courses + @theses = TissCrawler.search(params) end def show_detail + params[:api] = '/api/thesis/' + @id = params[:id] + + puts params + # TissCrawler fetches the person's detail information + @thesis = TissCrawler.get_thesis_details(params) + # Host is needed for image rendering + @host = TissCrawler.get_host end def add_to_fav + params[:api] = '/api/thesis/' + puts params[:id] + @thesis = TissCrawler.get_thesis_details(params) + # create stores the object to the db after creation + favorite_hash = {id: params[:id], + # the user who is currently active + user_id: current_user.id, + title: @thesis['title']['de']} + if FavoriteThesis.create(favorite_hash).valid? + FavoriteThesis.create(favorite_hash) + flash[:alert] = 'Thesis added to your favorites!' + else + flash[:alert] = 'Thesis is already favorited!' + end + redirect_back(fallback_location: search) end end diff --git a/app/controllers/crawlers/tiss_crawler_controller.rb b/app/controllers/crawlers/tiss_crawler_controller.rb index fac3647..d7f2368 100644 --- a/app/controllers/crawlers/tiss_crawler_controller.rb +++ b/app/controllers/crawlers/tiss_crawler_controller.rb @@ -16,8 +16,10 @@ class Crawlers::TissCrawlerController < ApplicationController # redirect to courses_show_basic, propagate the search_term redirect_to :controller => 'crawlers/courses_crawler', :action => :show_basic, :search_term => params[:search_term] when 'Theses' + # redirect to thesis_show_basic, propagate the search_term + redirect_to :controller => 'crawlers/theses_crawler', :action => :show_basic, :search_term => params[:search_term] when 'Projects' - else + else puts 'Undefined search context' end end diff --git a/app/controllers/favorites_controller.rb b/app/controllers/favorites_controller.rb index 12ac057..1ea293a 100644 --- a/app/controllers/favorites_controller.rb +++ b/app/controllers/favorites_controller.rb @@ -24,7 +24,14 @@ class FavoritesController < ApplicationController end def theses + @favorite_theses = FavoriteThesis.where('user_id': current_user.id) + .order(sort_column + " " + sort_direction) + @host = 'https://tiss.tuwien.ac.at' + end + def delete_thesis + FavoriteThesis.find_by(id: params[:id]).destroy + redirect_back(fallback_location: theses) end def projects diff --git a/app/models/favorite_thesis.rb b/app/models/favorite_thesis.rb new file mode 100644 index 0000000..f1618f9 --- /dev/null +++ b/app/models/favorite_thesis.rb @@ -0,0 +1,5 @@ +class FavoriteThesis < ApplicationRecord + self.primary_key = 'id' + + validates :id, uniqueness: true +end diff --git a/app/views/crawlers/theses_crawler/show_basic.html.erb b/app/views/crawlers/theses_crawler/show_basic.html.erb new file mode 100644 index 0000000..02ba658 --- /dev/null +++ b/app/views/crawlers/theses_crawler/show_basic.html.erb @@ -0,0 +1,20 @@ +