aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhellekin <hellekin@cepheide.org>2020-10-09 12:47:31 +0200
committerhellekin <hellekin@cepheide.org>2020-10-09 12:47:31 +0200
commitdd9e0691acae3eb63bdfbc8665eb3f8ce516536d (patch)
tree41d5889f2a0882b4f4356ed60683e908abf0b208
parentfd9e9c4679ea36bed60acf01a43dda307db203e4 (diff)
downloadincommon-map-dd9e0691acae3eb63bdfbc8665eb3f8ce516536d.tar.gz
Fix Resource edition
-rw-r--r--app/controllers/resources_controller.rb3
-rw-r--r--app/models/resource.rb15
-rw-r--r--app/serializers/hash_serializer.rb9
-rw-r--r--app/views/resources/_edit.html.erb4
-rw-r--r--app/views/resources/_resource.html.erb10
-rw-r--r--app/views/resources/edit.html.erb2
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' } %>