diff options
author | hellekin <hellekin@cepheide.org> | 2020-10-09 12:47:31 +0200 |
---|---|---|
committer | hellekin <hellekin@cepheide.org> | 2020-10-09 12:47:31 +0200 |
commit | dd9e0691acae3eb63bdfbc8665eb3f8ce516536d (patch) | |
tree | 41d5889f2a0882b4f4356ed60683e908abf0b208 | |
parent | fd9e9c4679ea36bed60acf01a43dda307db203e4 (diff) | |
download | incommon-map-dd9e0691acae3eb63bdfbc8665eb3f8ce516536d.tar.gz |
Fix Resource edition
-rw-r--r-- | app/controllers/resources_controller.rb | 3 | ||||
-rw-r--r-- | app/models/resource.rb | 15 | ||||
-rw-r--r-- | app/serializers/hash_serializer.rb | 9 | ||||
-rw-r--r-- | app/views/resources/_edit.html.erb | 4 | ||||
-rw-r--r-- | app/views/resources/_resource.html.erb | 10 | ||||
-rw-r--r-- | app/views/resources/edit.html.erb | 2 |
6 files changed, 24 insertions, 19 deletions
diff --git a/app/controllers/resources_controller.rb b/app/controllers/resources_controller.rb index 1cccafa..04d4e70 100644 --- a/app/controllers/resources_controller.rb +++ b/app/controllers/resources_controller.rb @@ -40,6 +40,9 @@ class ResourcesController < ApplicationController def edit # TODO Add a moderation queue for unauthorized but valid changes flash.now[:notice] = 'Please ask an editor or a maintainer to edit this resource!' unless (current_user_editor? || current_user_maintainer?) + + + Rails.logger.info "EDIT: #{@resource.uuid} #{@resource.name} // #{current_agent.id}" end # PATCH /resources/:id diff --git a/app/models/resource.rb b/app/models/resource.rb index 906933d..7d87e1a 100644 --- a/app/models/resource.rb +++ b/app/models/resource.rb @@ -8,8 +8,7 @@ class Resource < ApplicationRecord has_many :classifications has_many :sections, through: :classifications - serialize :feature, HashSerializer - store_accessor :feature, :name, :summary, :description, :email, :source, :address, :postal_code, :city, :phone_number, :website + store_accessor :feature, :geometry, :properties validates_associated :agent @@ -53,4 +52,16 @@ class Resource < ApplicationRecord def latitude=(value) feature['geometry']['coordinates'][1] = value end + + # Properties + + [:name, :summary, :description, :email, :source, :address, :postal_code, :city, :phone_number, :website].each do |prop| + # Define a reader + define_method prop do + properties[prop.to_s] + end + define_method :"#{prop}=" do |v| + feature['properties'][prop.to_s] = v + end + end end diff --git a/app/serializers/hash_serializer.rb b/app/serializers/hash_serializer.rb deleted file mode 100644 index 5db639f..0000000 --- a/app/serializers/hash_serializer.rb +++ /dev/null @@ -1,9 +0,0 @@ -class HashSerializer - def self.dump(hash) - hash.to_json - end - - def self.load(hash) - (hash || {}).with_indifferent_access - end -end diff --git a/app/views/resources/_edit.html.erb b/app/views/resources/_edit.html.erb index fdb2921..55c59f6 100644 --- a/app/views/resources/_edit.html.erb +++ b/app/views/resources/_edit.html.erb @@ -1,6 +1,6 @@ -<h3>Edit <%= resource.presence&.name || 'new resource' %></h3> +<h3>Edit <%= @resource.presence.feature['properties']['name'] || 'new resource' %></h3> <h2>Context: <%= current_agent %></h2> -<%= form_with model: [current_agent,@resource] do |f| %> +<%= form_with model: [current_agent,@resource], url: controller.action_name == 'new' ? agent_resources_path(agent: current_agent) : resource_path(@resource) do |f| %> <%= render partial: 'form', locals: { resource: resource, f: f } %> <% end %> diff --git a/app/views/resources/_resource.html.erb b/app/views/resources/_resource.html.erb index f013523..585bed8 100644 --- a/app/views/resources/_resource.html.erb +++ b/app/views/resources/_resource.html.erb @@ -1,9 +1,9 @@ <section id="resource-<%= resource.uuid %>"> <header> - <h2><%= h resource.name %></h2> + <h2><%= resource.properties['name'] %></h2> <time datetime="<%= h resource.created_at %>" class="created_at"> - <time datetime="<%= h resource.updated_at %>" class="updated_at"> - <p class="identifier"><%= resource_url(resource) %></p> + <time datetime="<%= h resource.updated_at %>" class="updated_at"> + <p class="identifier"><%= resource_url(resource) %></p> </header> <div><%= h resource.description %></div> <hr> @@ -13,8 +13,8 @@ <ul> <li><%= link_to('show', resource_url(resource)) %></li> <% if session[:current_agent] == resource.source %> - <li><%= link_to 'edit', edit_resource_url(resource) %></li> - <li><span class="disabled">delete</span></li> + <li><%= link_to 'edit', edit_resource_url(resource) %></li> + <li><span class="disabled">delete</span></li> <% end %></ul> </nav> </section> diff --git a/app/views/resources/edit.html.erb b/app/views/resources/edit.html.erb index 80d8206..b52c60d 100644 --- a/app/views/resources/edit.html.erb +++ b/app/views/resources/edit.html.erb @@ -1,2 +1,2 @@ -<%= render partial: 'edit', locals: { resource: @resource } %> +<%= render partial: 'edit', locals: { resource: @resource, foo: 'foo' } %> |