add index (synthetic) to sections

This commit is contained in:
Torsten 2022-11-27 14:09:16 +02:00
parent 1823f5cb3e
commit 8d405e44e1
8 changed files with 31 additions and 15 deletions

View File

@ -18,12 +18,19 @@ module Cms
end end
def sections def sections
@content.collect{|section_data| Section.new(self , section_data)} sections = []
@content.each_with_index do |section_data, index|
sections << Section.new(self , index, section_data)
end
sections
end end
def find_section(section_id) def find_section(section_id)
content = @content.find{|section| section["id"] == section_id } @content.each_with_index do |section , index|
Section.new(self , content) next unless section["id"] == section_id
return Section.new(self , index , section)
end
raise "Page #{name} as no section #{section_id}"
end end
def first_template def first_template
@ -34,7 +41,7 @@ module Cms
section = Hash.new section = Hash.new
section['id'] = SecureRandom.hex(10) section['id'] = SecureRandom.hex(10)
@content << section @content << section
Section.new(self , section) Section.new(self , 0 , section)
end end
def save def save

View File

@ -4,16 +4,18 @@ module Cms
include ActiveModel::Conversion include ActiveModel::Conversion
include ActiveModel::Dirty include ActiveModel::Dirty
attr_reader :name , :content , :page attr_reader :name , :content , :page , :index
def persisted? def persisted?
false false
end end
def initialize(page , section_data) def initialize(page , index , section_data)
@page = page @page = page
raise "No number #{index}" unless index.is_a?(Integer)
raise "No has #{section_data}" unless section_data.is_a?(Hash)
@index = index
@content = section_data @content = section_data
# id = SecureRandom.hex(10) if new or not there
end end
def template def template

View File

@ -2,5 +2,6 @@
%h3.mt-4.text-lg.font-bold= key.upcase %h3.mt-4.text-lg.font-bold= key.upcase
%p= value %p= value
%p #{section.content['cards'].length} cards %p #{section.content['cards'].length} cards
%p view cards (index)
.relative.block.border.border-gray-100 .relative.block.border.border-gray-100
=image_tag("cms/card_preview/#{value}" , class: "w-full object-contain") =image_tag("cms/card_preview/#{value}" , class: "w-full object-contain")

View File

@ -1,4 +0,0 @@
.relative.block.border.border-gray-100
Cards number
.relative.block.border.border-gray-100
Card preview

View File

@ -1,4 +1,7 @@
.relative.block.border.border-gray-100 .relative.block.border.border-gray-100
%h3.mt-4.text-lg.font-bold= key.upcase %h3.mt-4.text-lg.font-bold= key.upcase
.relative.block.border.border-gray-100 .relative.block.border.border-gray-100
= image_tag "cms/" + value -if value
= image_tag "cms/" + value
-else
No image

View File

@ -1,3 +1,6 @@
.p-6 .p-6
%h3.mt-4.text-lg.font-bold= key.upcase %h3.mt-4.text-lg.font-bold= key.upcase
= image_tag "cms/" + value -if value
= image_tag "cms/" + value
-else
No image

View File

@ -1,5 +1,9 @@
%p#notice= notice %p#notice= notice
%h1 Page #{@page.name}
%h4 Section #{@section.id}
.grid.grid-cols-2.gap-2.m-8 .grid.grid-cols-2.gap-2.m-8
- @section.content.each do |key , value| - @section.content.each do |key , value|
= render "cms/sections/editors/#{key}", section: @section , key: key , value: value = render "cms/sections/editors/#{key}", section: @section , key: key , value: value

View File

@ -6,7 +6,8 @@
The rooms are in the old hospital wings, so most are old patient rooms, but there The rooms are in the old hospital wings, so most are old patient rooms, but there
are plenty of others too. Prices do not include electricity or vat, but do include are plenty of others too. Prices do not include electricity or vat, but do include
the use of common spaces, see below. the use of common spaces, see below.
image: makerspace.webp image:
id: b7d16d4da518bafd3d39
card_template: card_full_image card_template: card_full_image
cards: cards:
- header: Standard - header: Standard
@ -19,4 +20,3 @@
are large enough to be shared. The size is about 30m2 and the cost 240e. Like are large enough to be shared. The size is about 30m2 and the cost 240e. Like
the small rooms these are south facing, very light. the small rooms these are south facing, very light.
image: large.webp image: large.webp
id: b7d16d4da518bafd3d39