about summary refs log tree commit diff
path: root/app/controllers
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2017-07-11 15:27:59 +0200
committerGitHub <noreply@github.com>2017-07-11 15:27:59 +0200
commite19eefe219c46ea9f763d0279029f03c5cf4554f (patch)
treedb31dd31a9bcabe22f18155872e0498fc0d906f6 /app/controllers
parent8784bd79d0053cb15775eb078f45e6aca7775d77 (diff)
Redesign the landing page, mount public timeline on it (#4122)
* Redesign the landing page, mount public timeline on it

* Adjust the standalone mounted component to the lacking of router

* Adjust auth layout pages to new design

* Fix tests

* Standalone public timeline polling every 5 seconds

* Remove now obsolete translations

* Add responsive design for new landing page

* Address reviews

* Add floating clouds behind frontpage form

* Use access token from public page when available

* Fix mentions and hashtags links, cursor on status content in standalone mode

* Add footer link to source code

* Fix errors on pages that don't embed the component, use classnames

* Fix tests

* Change anonymous autoPlayGif default to false

* When gif autoplay is disabled, hover to play

* Add option to hide the timeline preview

* Slightly improve alt layout

* Add elephant friend to new frontpage

* Display "back to mastodon" in place of "login" when logged in on frontpage

* Change polling time to 3s
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/about_controller.rb13
-rw-r--r--app/controllers/admin/settings_controller.rb9
-rw-r--r--app/controllers/home_controller.rb16
3 files changed, 30 insertions, 8 deletions
diff --git a/app/controllers/about_controller.rb b/app/controllers/about_controller.rb
index c0addbecc..47690e81e 100644
--- a/app/controllers/about_controller.rb
+++ b/app/controllers/about_controller.rb
@@ -4,7 +4,10 @@ class AboutController < ApplicationController
   before_action :set_body_classes
   before_action :set_instance_presenter, only: [:show, :more, :terms]
 
-  def show; end
+  def show
+    serializable_resource = ActiveModelSerializers::SerializableResource.new(InitialStatePresenter.new(initial_state_params), serializer: InitialStateSerializer)
+    @initial_state_json   = serializable_resource.to_json
+  end
 
   def more; end
 
@@ -15,6 +18,7 @@ class AboutController < ApplicationController
   def new_user
     User.new.tap(&:build_account)
   end
+
   helper_method :new_user
 
   def set_instance_presenter
@@ -24,4 +28,11 @@ class AboutController < ApplicationController
   def set_body_classes
     @body_classes = 'about-body'
   end
+
+  def initial_state_params
+    {
+      settings: {},
+      token: current_session&.token,
+    }
+  end
 end
diff --git a/app/controllers/admin/settings_controller.rb b/app/controllers/admin/settings_controller.rb
index f27a1f4d4..29b590d7a 100644
--- a/app/controllers/admin/settings_controller.rb
+++ b/app/controllers/admin/settings_controller.rb
@@ -11,8 +11,15 @@ module Admin
       site_terms
       open_registrations
       closed_registrations_message
+      open_deletion
+      timeline_preview
+    ).freeze
+
+    BOOLEAN_SETTINGS = %w(
+      open_registrations
+      open_deletion
+      timeline_preview
     ).freeze
-    BOOLEAN_SETTINGS = %w(open_registrations).freeze
 
     def edit
       @settings = Setting.all_as_records
diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb
index 218da6906..8a8b9ec76 100644
--- a/app/controllers/home_controller.rb
+++ b/app/controllers/home_controller.rb
@@ -15,12 +15,16 @@ class HomeController < ApplicationController
   end
 
   def set_initial_state_json
-    state = InitialStatePresenter.new(settings: Web::Setting.find_by(user: current_user)&.data || {},
-                                      current_account: current_account,
-                                      token: current_session.token,
-                                      admin: Account.find_local(Setting.site_contact_username))
-
-    serializable_resource = ActiveModelSerializers::SerializableResource.new(state, serializer: InitialStateSerializer)
+    serializable_resource = ActiveModelSerializers::SerializableResource.new(InitialStatePresenter.new(initial_state_params), serializer: InitialStateSerializer)
     @initial_state_json   = serializable_resource.to_json
   end
+
+  def initial_state_params
+    {
+      settings: Web::Setting.find_by(user: current_user)&.data || {},
+      current_account: current_account,
+      token: current_session.token,
+      admin: Account.find_local(Setting.site_contact_username),
+    }
+  end
 end