diff --git a/admin/app/admin/generic_state.rb b/admin/app/admin/generic_state.rb
index 02bfedf6b..3e5f2ae4c 100644
--- a/admin/app/admin/generic_state.rb
+++ b/admin/app/admin/generic_state.rb
@@ -3,7 +3,7 @@ ActiveAdmin.register JamRuby::GenericState, :as => 'GenericState' do
config.clear_action_items!
filter :env
- permit_params :top_message
+ permit_params :top_message, :event_page_top_logo_url
actions :all, :except => [:destroy]
diff --git a/admin/app/views/admin/generic_states/_form.html.erb b/admin/app/views/admin/generic_states/_form.html.erb
index 7316987e0..908f4bc21 100644
--- a/admin/app/views/admin/generic_states/_form.html.erb
+++ b/admin/app/views/admin/generic_states/_form.html.erb
@@ -2,6 +2,7 @@
<%= f.semantic_errors *f.object.errors.keys %>
<%= f.inputs do %>
<%= f.input(:top_message, :input_html => {:maxlength => 10000, :rows=>10, :class => 'autogrow'}) %>
+ <%= f.input(:event_page_top_logo_url, :input_html => {:maxlength => 200}, :hint => '/assets/logo.png') %>
<% end %>
<%= f.actions %>
<% end %>
\ No newline at end of file
diff --git a/db/up/find_sessions_2020.sql b/db/up/find_sessions_2020.sql
index 09f72972e..0cb767776 100644
--- a/db/up/find_sessions_2020.sql
+++ b/db/up/find_sessions_2020.sql
@@ -53,4 +53,7 @@ ALTER TABLE arses ADD COLUMN port int default 3478;
ALTER TABLE generic_state ADD COLUMN top_message VARCHAR(100000);
ALTER TABLE users ADD COLUMN beta BOOLEAN default FALSE;
-ALTER TABLE arses ADD COLUMN beta BOOLEAN default FALSE;
\ No newline at end of file
+ALTER TABLE arses ADD COLUMN beta BOOLEAN default FALSE;
+
+
+ALTER TABLE generic_state ADD COLUMN event_page_top_logo_url VARCHAR(100000) DEFAULT '/assets/event/eventbrite-logo.png';
\ No newline at end of file
diff --git a/ruby/lib/jam_ruby/models/generic_state.rb b/ruby/lib/jam_ruby/models/generic_state.rb
index fdf87055c..7ba706336 100644
--- a/ruby/lib/jam_ruby/models/generic_state.rb
+++ b/ruby/lib/jam_ruby/models/generic_state.rb
@@ -3,7 +3,7 @@ module JamRuby
class GenericState < ActiveRecord::Base
- attr_accessible :top_message, as: :admin
+ attr_accessible :top_message, :event_page_top_logo_url, as: :admin
self.table_name = 'generic_state'
@@ -38,6 +38,10 @@ module JamRuby
GenericState.singleton.top_message
end
+ def self.event_page_top_logo_url
+ GenericState.singleton.event_page_top_logo_url
+ end
+
def self.singleton
GenericState.find('default')
end
diff --git a/web/app/assets/javascripts/events/jam_rest.js b/web/app/assets/javascripts/events/jam_rest.js
index beb114692..cf2dab860 100644
--- a/web/app/assets/javascripts/events/jam_rest.js
+++ b/web/app/assets/javascripts/events/jam_rest.js
@@ -40,4 +40,23 @@
body: JSON.stringify(data)
})
}
+
+ Rest2.getConfigClient = (options) => {
+ if(!options) {
+ options = {}
+ }
+
+ var query = Object.keys(options)
+ .map(k => `${encodeURIComponent(k)}=${encodeURIComponent(params[k])}`)
+ .join('&');
+
+ return fetch('/api/config/client?' + query, {
+ method: 'get',
+ credentials: 'same-origin', // include, *same-origin, omit
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ cache: 'no-cache'
+ })
+ }
})(window);
diff --git a/web/app/assets/javascripts/events/react-components.js b/web/app/assets/javascripts/events/react-components.js
index 7a16dee63..0a0fcd46b 100644
--- a/web/app/assets/javascripts/events/react-components.js
+++ b/web/app/assets/javascripts/events/react-components.js
@@ -1,3 +1,5 @@
//= require_directory ./react-components/actions
//= require ./react-components/stores/EventStore
-//= require_directory ./react-components
\ No newline at end of file
+//= require ../react-components/actions/ConfigActions
+//= require ../react-components/stores/ConfigStore
+//= require_directory ./react-components
diff --git a/web/app/assets/javascripts/events/react-components/EventsPage.js.jsx b/web/app/assets/javascripts/events/react-components/EventsPage.js.jsx
index 3a0569c65..864c47a80 100644
--- a/web/app/assets/javascripts/events/react-components/EventsPage.js.jsx
+++ b/web/app/assets/javascripts/events/react-components/EventsPage.js.jsx
@@ -1,16 +1,30 @@
context = window
+ConfigStore = context.ConfigStore
EventActions = context.EventActions
+ConfigActions = context.ConfigActions
-context.EventsPage = React.createClass({
+
+context.EventsPage = React.createClass(
+{
+
+ mixins: [Reflux.listenTo(ConfigStore, "onConfig")],
getInitialState: function () {
- return {submitting: false, error: null}
+ return {submitting: false, error: null, event_page_top_logo_url: null}
},
componentDidMount: function () {
EventActions.refresh()
+ ConfigActions.configInit()
},
+ onConfig: function(configs) {
+ if (configs.event_page_top_logo_url) {
+ this.setState({event_page_top_logo_url: configs.event_page_top_logo_url})
+ }
+ },
+
+
authorizeDone: function(response) {
this.setState({submitting:false})
EventActions.addAuthorization(response)
@@ -69,10 +83,14 @@ context.EventsPage = React.createClass({
*/
//tmp
+ top_logo = null
+ if(this.state.event_page_top_logo_url) {
+ top_logo =
+ }
listing = null
var response =
