Newer
Older
module Communication::Website::Menu::WithAutomatism
extend ActiveSupport::Concern
def generate_automatically
begin
suspend_git_sync
clear_items
create_items
ensure
reactivate_git_sync
end
end
def stop_automatism!
update_column :automatic, false
end
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
def suspend_git_sync
# TODO
end
def clear_items
# TODO est-ce bien de ne pas gérer les dépendances avec un destroy? Effet de bord?
items.delete_all
end
def create_items
home = website.pages.root.first
create_items_for_children_of(home)
end
def create_items_for_children_of(page, parent_item = nil)
page.children.ordered.each do |child_page|
next if child_page.default_menu_identifier != identifier
create_item_for(child_page, parent_item)
end
end
def create_item_for(page, parent_item = nil)
item = items.create kind: :page,
about: page,
title: page.title,
position: page.position,
website: website,
university: university,
parent: parent_item
create_items_for_children_of(page, item)
end
def reactivate_git_sync
# TODO
end