diff --git a/app/controllers/rss/events_controller.rb b/app/controllers/rss/events_controller.rb new file mode 100644 index 000000000..735a707ec --- /dev/null +++ b/app/controllers/rss/events_controller.rb @@ -0,0 +1,9 @@ +class Rss::EventsController < Rss::RssController + + def index + @events = Event.includes(:event_image, :event_files, :availability, :category) + .where('availabilities.start_at >= ?', Time.now) + .order('availabilities.start_at ASC').references(:availabilities).limit(10) + @fab_name = Setting.find_by(name: 'fablab_name').value + end +end diff --git a/app/controllers/rss/projects_controller.rb b/app/controllers/rss/projects_controller.rb new file mode 100644 index 000000000..75a9736ea --- /dev/null +++ b/app/controllers/rss/projects_controller.rb @@ -0,0 +1,7 @@ +class Rss::ProjectsController < Rss::RssController + + def index + @projects = Project.includes(:project_image, :users).published.order('created_at desc').limit(10) + @fab_name = Setting.find_by(name: 'fablab_name').value + end +end diff --git a/app/controllers/rss/rss_controller.rb b/app/controllers/rss/rss_controller.rb new file mode 100644 index 000000000..d9e32442a --- /dev/null +++ b/app/controllers/rss/rss_controller.rb @@ -0,0 +1,4 @@ +class Rss::RssController < ApplicationController + + +end diff --git a/app/views/api/events/index.rss.builder b/app/views/api/events/index.rss.builder deleted file mode 100644 index b6dff9674..000000000 --- a/app/views/api/events/index.rss.builder +++ /dev/null @@ -1,21 +0,0 @@ -#encoding: UTF-8 - -xml.instruct! :xml, version: "1.0" -xml.rss version: "2.0" do - xml.channel do - xml.title "#{t('app.public.events_list.the_fablab_s_courses_and_workshops')} - #{Setting.find_by(name: 'fablab_name').value}" - xml.author Setting.find_by(name: 'fablab_name').value - xml.link request.base_url + "/#!/events" - xml.language I18n.locale.to_s - - @events.each do |event| - xml.item do - xml.guid event.id - xml.pubDate event.created_at.strftime("%F %T") - xml.title event.name - xml.link request.base_url + "/#!/events/" + event.id.to_s - xml.description event.description - end - end - end -end diff --git a/app/views/api/projects/index.rss.builder b/app/views/api/projects/index.rss.builder deleted file mode 100644 index c9579e36b..000000000 --- a/app/views/api/projects/index.rss.builder +++ /dev/null @@ -1,23 +0,0 @@ -#encoding: UTF-8 - -xml.instruct! :xml, version: "1.0" -xml.rss version: "2.0" do - xml.channel do - xml.title "#{t('app.public.projects_list.the_fablab_projects')} - #{Setting.find_by(name: 'fablab_name').value}" - xml.description t('app.public.projects_list.all_projects') - xml.author Setting.find_by(name: 'fablab_name').value - xml.link request.base_url + "/#!/projects" - xml.language I18n.locale.to_s - - @projects.each do |project| - xml.item do - xml.guid project.id - xml.pubDate project.created_at.strftime("%F %T") - xml.title project.name - xml.link request.base_url + "/#!/projects/" + project.slug - xml.author project.author.first_name - xml.description project.description - end - end - end -end diff --git a/app/views/rss/events/index.rss.builder b/app/views/rss/events/index.rss.builder new file mode 100644 index 000000000..bb5653122 --- /dev/null +++ b/app/views/rss/events/index.rss.builder @@ -0,0 +1,22 @@ +#encoding: UTF-8 + +xml.instruct! :xml, version: '1.0' +xml.rss version: '2.0' do + xml.channel do + xml.title "#{t('app.public.events_list.the_fablab_s_events')} - #{@fab_name}" + xml.description t('app.public.home.fablab_s_next_events') + xml.author @fab_name + xml.link root_url + '#!/events' + xml.language I18n.locale.to_s + + @events.each do |event| + xml.item do + xml.guid event.id + xml.pubDate event.created_at.strftime('%F %T') + xml.title event.name + xml.link root_url + '#!/events/' + event.id.to_s + xml.description event.description + end + end + end +end diff --git a/app/views/rss/projects/index.rss.builder b/app/views/rss/projects/index.rss.builder new file mode 100644 index 000000000..bc7ac0c92 --- /dev/null +++ b/app/views/rss/projects/index.rss.builder @@ -0,0 +1,23 @@ +#encoding: UTF-8 + +xml.instruct! :xml, version: '1.0' +xml.rss version: '2.0' do + xml.channel do + xml.title "#{t('app.public.projects_list.the_fablab_projects')} - #{@fab_name}" + xml.description t('app.public.home.latest_documented_projects') + xml.author @fab_name + xml.link root_url + '#!/projects' + xml.language I18n.locale.to_s + + @projects.each do |project| + xml.item do + xml.guid project.id + xml.pubDate project.created_at.strftime('%F %T') + xml.title project.name + xml.link root_url + '#!/projects/' + project.slug + xml.author project.author.first_name + xml.description project.description + end + end + end +end diff --git a/config/routes.rb b/config/routes.rb index bfcaac9f6..60eeaad7a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -132,6 +132,13 @@ Rails.application.routes.draw do get 'version' => 'version#show' end + # rss + + namespace :rss, as: nil, defaults: { format: :xml } do + resources :projects, only: [:index] + resources :events, only: [:index] + end + # open_api namespace :open_api do