Skip to content
Snippets Groups Projects
Commit 555c2584 authored by Arnaud Levy's avatar Arnaud Levy
Browse files

wip

parent 793d1626
No related branches found
No related tags found
No related merge requests found
......@@ -48,13 +48,13 @@ class Admin::Communication::Websites::PagesController < Admin::Communication::We
def connect
load_object
@website.connect @object, @page
@website.connect @object, @page, direct_source_type: @page.class.to_s
head :ok
end
def disconnect
load_object
@website.disconnect @object, @page
@website.disconnect @object, @page, direct_source_type: @page.class.to_s
redirect_back(fallback_location: [:admin, @object])
end
......
......@@ -50,8 +50,8 @@ class Communication::Website::Page::Organization < Communication::Website::Page
website.connected_organizations
end
def connected_organizations
ids = website.connections.where(object_type: 'University::Organization', source: self).pluck(:object_id)
def explicitly_connected_organizations
ids = website.connections.where(indirect_object_type: 'University::Organization', direct_source: self).pluck(:indirect_object_id)
University::Organization.where(id: ids)
end
......
......@@ -50,8 +50,8 @@ class Communication::Website::Page::Person < Communication::Website::Page
website.connected_people
end
def connected_people
ids = website.connections.where(object_type: 'University::Person', source: self).pluck(:object_id)
def explicitly_connected_people
ids = website.connections.where(indirect_object_type: 'University::Person', direct_source_type: 'Communication::Website::Page::Person').pluck(:indirect_object_id)
University::Person.where(id: ids)
end
......
......@@ -17,18 +17,20 @@ module Communication::Website::WithConnections
connections.for_object(indirect_object).exists?
end
def connect(indirect_object, direct_source)
connect_object indirect_object, direct_source
def connect(indirect_object, direct_source, direct_source_type: nil)
connect_object indirect_object, direct_source, direct_source_type: direct_source_type
return unless indirect_object.respond_to?(:recursive_dependencies)
indirect_object.recursive_dependencies.each do |dependency|
connect_object dependency, direct_source
end
end
def disconnect(indirect_object, direct_source)
def disconnect(indirect_object, direct_source, direct_source_type: nil)
direct_source_type ||= direct_source.class.base_class.to_s
connections.where(university: university,
indirect_object: indirect_object,
direct_source: direct_source)
direct_source_id: direct_source.id,
direct_source_type: direct_source_type)
.delete_all
end
......@@ -45,7 +47,7 @@ module Communication::Website::WithConnections
protected
def connect_object(indirect_object, direct_source)
def connect_object(indirect_object, direct_source, direct_source_type: nil)
return unless persisted?
# On ne connecte pas les objets inexistants
return if indirect_object.nil?
......@@ -56,9 +58,11 @@ module Communication::Website::WithConnections
# On ne connecte pas les objets directs
return if indirect_object.respond_to?(:website)
# puts "connect #{object} (#{object.class})"
direct_source_type ||= direct_source.class.base_class.to_s
connection = connections.where( university: university,
indirect_object: indirect_object,
direct_source: direct_source)
direct_source_id: direct_source.id,
direct_source_type: direct_source_type)
.first_or_create
connection.touch if connection.persisted?
end
......
<%
@organizations = @page.connected_organizations.ordered.page params[:page]
@organizations = @page.explicitly_connected_organizations.ordered.page params[:page]
%>
<%= osuny_panel University::Organization.model_name.human(count: 2) do %>
<%= simple_form_for :association, class_name: 'association' do |f| %>
......
<%
@people = @website.connected_people.ordered.page params[:page]
@people = @page.explicitly_connected_people.ordered.page params[:page]
%>
<%= osuny_panel University::Person.model_name.human(count: 2) do %>
<%= simple_form_for :association, class_name: 'association' do |f| %>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment