breeze_cms 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/breeze/breeze.css +396 -390
- data/app/assets/stylesheets/breeze/breeze.email.css +288 -283
- data/app/assets/stylesheets/breeze_tailwind_styles.css +5 -1
- data/app/controllers/breeze/images_controller.rb +14 -4
- data/app/controllers/breeze/pages_controller.rb +3 -10
- data/app/controllers/breeze/view_controller.rb +6 -1
- data/app/models/breeze/active_yaml.rb +23 -0
- data/app/models/breeze/image.rb +30 -20
- data/app/views/breeze/images/_editor.haml +12 -0
- data/app/views/breeze/images/show.haml +25 -10
- data/app/views/breeze/view/cards/_card_normal_round.haml +1 -1
- data/app/views/breeze/view/page.haml +2 -0
- data/config/breeze/option_definitions.yml +7 -2
- data/config/breeze/page_styles.yml +4 -2
- data/config/initializers/simple_form_tailwind.rb +148 -0
- data/lib/breeze/engine.rb +8 -5
- data/lib/breeze/version.rb +1 -1
- metadata +23 -37
- data/config/initializers/simple_form.rb +0 -212
@@ -57,10 +57,20 @@ module Breeze
|
|
57
57
|
end
|
58
58
|
|
59
59
|
def create
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
60
|
+
io = params['image_file']
|
61
|
+
if(io)
|
62
|
+
_ , endi = io.original_filename.split("/").last.split(".")
|
63
|
+
if( ["jpg","jpeg","png","webp"].include? endi.downcase)
|
64
|
+
image = Image.create_new(params["filename"] ,params['tags'], params['image_file'])
|
65
|
+
image.add_save current_member_email
|
66
|
+
where_to = determine_redirect(image)
|
67
|
+
redirect_to where_to , notice: "New image created: #{image.name}"
|
68
|
+
else
|
69
|
+
redirect_to new_image_url , alert: "Only jpg, png or tiff allowed"
|
70
|
+
end
|
71
|
+
else
|
72
|
+
redirect_to new_image_url , alert: "No file"
|
73
|
+
end
|
64
74
|
end
|
65
75
|
|
66
76
|
private
|
@@ -19,17 +19,10 @@ module Breeze
|
|
19
19
|
def update
|
20
20
|
if( !params[:name].blank? && (params[:name] != @page.name))
|
21
21
|
@page.set_name params[:name]
|
22
|
-
@page.edit_save(current_member_email)
|
23
|
-
message = "Page renamed"
|
24
|
-
end
|
25
|
-
options = params[:option]
|
26
|
-
if options
|
27
|
-
@page.option_definitions.each do |option|
|
28
|
-
@page.set_option(option.name, options[option.name])
|
29
|
-
end
|
30
|
-
@page.edit_save(current_member_email)
|
31
|
-
message = "Options saved"
|
32
22
|
end
|
23
|
+
@page.update_options( params[:options])
|
24
|
+
@page.edit_save(current_member_email)
|
25
|
+
message = "Saved"
|
33
26
|
redirect_to page_url(@page) , notice: message
|
34
27
|
end
|
35
28
|
|
@@ -5,7 +5,12 @@ module Breeze
|
|
5
5
|
locale = params[:lang] || I18n.default_locale
|
6
6
|
I18n.locale = locale
|
7
7
|
@page = Page.find_by_name(params[:id])
|
8
|
-
|
8
|
+
if @page.nil?
|
9
|
+
redirect_to "/" , alert: "No page #{params[:id]}"
|
10
|
+
else
|
11
|
+
@title = @page.options["title"] if @page.options
|
12
|
+
@description = @page.options["description"] if @page.options
|
13
|
+
end
|
9
14
|
end
|
10
15
|
|
11
16
|
end
|
@@ -56,6 +56,23 @@ module Breeze
|
|
56
56
|
find_by( :id , id )
|
57
57
|
end
|
58
58
|
|
59
|
+
def next_id(id)
|
60
|
+
dir_id(id , 1)
|
61
|
+
end
|
62
|
+
|
63
|
+
def previous_id(id)
|
64
|
+
dir_id(id , -1)
|
65
|
+
end
|
66
|
+
|
67
|
+
def dir_id(id , inc)
|
68
|
+
while((id > 0) && (id < 300)) do
|
69
|
+
id += inc
|
70
|
+
if(is = find_by(:id , id))
|
71
|
+
return is
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
59
76
|
def find_by( field , value )
|
60
77
|
found = yaml_file.detect { |record| record[field] == value }
|
61
78
|
return nil unless found
|
@@ -114,6 +131,12 @@ module Breeze
|
|
114
131
|
File.join(self.path , full_name )
|
115
132
|
end
|
116
133
|
|
134
|
+
def largest
|
135
|
+
largest = 0
|
136
|
+
yaml_file.each { |item| largest = item[:id] if item[:id] > largest }
|
137
|
+
largest
|
138
|
+
end
|
139
|
+
|
117
140
|
#create a new data point by adding the hash
|
118
141
|
def append(data)
|
119
142
|
largest = 0
|
data/app/models/breeze/image.rb
CHANGED
@@ -43,6 +43,36 @@ module Breeze
|
|
43
43
|
mini.crop( to_size )
|
44
44
|
init_file_size
|
45
45
|
end
|
46
|
+
|
47
|
+
def destroy(editor)
|
48
|
+
File.delete self.full_filename
|
49
|
+
delete_save!(editor)
|
50
|
+
end
|
51
|
+
|
52
|
+
def asset_name
|
53
|
+
Breeze.images_dir + "/" + self.id.to_s + "." + self.type
|
54
|
+
end
|
55
|
+
|
56
|
+
def full_filename
|
57
|
+
full_filename = self.id.to_s + "." + self.type
|
58
|
+
Rails.root.join(Image.asset_root, full_filename)
|
59
|
+
end
|
60
|
+
|
61
|
+
def init_file_size
|
62
|
+
magick_image = MiniMagick::Image.open(full_filename)
|
63
|
+
self.width = magick_image.width
|
64
|
+
self.height = magick_image.height
|
65
|
+
self.size = (magick_image.size/1024).to_i
|
66
|
+
end
|
67
|
+
|
68
|
+
def next_image
|
69
|
+
self.class.next_id(id)
|
70
|
+
end
|
71
|
+
|
72
|
+
def previous_image
|
73
|
+
self.class.previous_id(id)
|
74
|
+
end
|
75
|
+
|
46
76
|
#save an io as new image. The filename is the id, type taken from io
|
47
77
|
def self.create_new(name , tags, io)
|
48
78
|
original , end_ = io.original_filename.split("/").last.split(".")
|
@@ -61,19 +91,6 @@ module Breeze
|
|
61
91
|
new_id = Image.append(image_data)
|
62
92
|
Image.new(image_data)
|
63
93
|
end
|
64
|
-
def destroy(editor)
|
65
|
-
File.delete self.full_filename
|
66
|
-
delete_save!(editor)
|
67
|
-
end
|
68
|
-
|
69
|
-
def asset_name
|
70
|
-
Breeze.images_dir + "/" + self.id.to_s + "." + self.type
|
71
|
-
end
|
72
|
-
|
73
|
-
def full_filename
|
74
|
-
full_filename = self.id.to_s + "." + self.type
|
75
|
-
Rails.root.join(Image.asset_root, full_filename)
|
76
|
-
end
|
77
94
|
|
78
95
|
def self.transform
|
79
96
|
Image.all.each do |image|
|
@@ -89,13 +106,6 @@ module Breeze
|
|
89
106
|
end
|
90
107
|
end
|
91
108
|
|
92
|
-
def init_file_size
|
93
|
-
magick_image = MiniMagick::Image.open(full_filename)
|
94
|
-
self.width = magick_image.width
|
95
|
-
self.height = magick_image.height
|
96
|
-
self.size = (magick_image.size/1024).to_i
|
97
|
-
end
|
98
|
-
|
99
109
|
def self.asset_root
|
100
110
|
"app/assets/images/" + Breeze.images_dir
|
101
111
|
end
|
@@ -4,6 +4,14 @@
|
|
4
4
|
.flex.justify-between.mx-20
|
5
5
|
.flex.justify-between
|
6
6
|
%div.justify-self-start.ml-20.mr-10
|
7
|
+
%b Presets
|
8
|
+
600
|
9
|
+
%input{ name: :pre, type: "radio", value: "600", "v-on:input": "handle_preset($event)" }/
|
10
|
+
800
|
11
|
+
%input{ name: :pre, type: "radio", value: "800", "v-on:input": "handle_preset($event)" }/
|
12
|
+
1800
|
13
|
+
%input{ name: :pre, type: "radio", value: "1800", "v-on:input": "handle_preset($event)" }/
|
14
|
+
%br
|
7
15
|
%b Scale {{scaled_x}} x {{scaled_y}}
|
8
16
|
%br/
|
9
17
|
%input{":min": 20 , ":max": 100 , ":step": 0.1 , :type => "range",
|
@@ -111,6 +119,10 @@
|
|
111
119
|
@size_y = new_y
|
112
120
|
end
|
113
121
|
|
122
|
+
def handle_preset(event)
|
123
|
+
@scale = (100 * event.target.value.to_f ) / @size_x
|
124
|
+
end
|
125
|
+
|
114
126
|
def handle_size_x(event)
|
115
127
|
set_size_x(event.target.value.to_f)
|
116
128
|
end
|
@@ -7,6 +7,26 @@
|
|
7
7
|
= form_tag( breeze.image_copy_path(@image.id) , method: :post) do
|
8
8
|
%button.mx-40.button.change Copy
|
9
9
|
|
10
|
+
.grid.grid-cols-3.gap-10
|
11
|
+
%p
|
12
|
+
- if img = @image.previous_image
|
13
|
+
= link_to "Prev #{img.id}" , breeze.image_path(img)
|
14
|
+
-else
|
15
|
+
None
|
16
|
+
%p
|
17
|
+
Current
|
18
|
+
=@image.id
|
19
|
+
%p
|
20
|
+
- if img = @image.next_image
|
21
|
+
= link_to "Next #{img.id}" , breeze.image_path(img)
|
22
|
+
-else
|
23
|
+
None
|
24
|
+
-unless @used
|
25
|
+
%p.align-center Not used
|
26
|
+
= form_tag( breeze.image_path(@image.id) , {method: :delete } ) do
|
27
|
+
%button.button.remove{type: :submit} Delete
|
28
|
+
|
29
|
+
|
10
30
|
.flex.m-20
|
11
31
|
.left.flex.gap-2.mt-3
|
12
32
|
%p
|
@@ -37,24 +57,19 @@
|
|
37
57
|
Sections using the image
|
38
58
|
-@sections.each do |section|
|
39
59
|
%p
|
40
|
-
= link_to section.header , breeze.section_path(section)
|
60
|
+
= link_to section.header , breeze.section_path(section) , target: :blank
|
41
61
|
%p
|
42
62
|
%em on Page
|
43
63
|
%p
|
44
|
-
= link_to section.page.name ,
|
64
|
+
= link_to section.page.name , "/#{section.page.name}" , target: :blank
|
45
65
|
.grid.grid-cols-3.gap-10
|
46
66
|
%p.col-span-3.font-bold
|
47
67
|
Cards using the image
|
48
68
|
-@cards.each do |card|
|
49
69
|
%p
|
50
|
-
=
|
70
|
+
- link = card.header.blank? ? "(nil)" : card.header
|
71
|
+
= link_to link , breeze.section_cards_path(card.section) , target: :blank
|
51
72
|
%p
|
52
73
|
%em on Page
|
53
74
|
%p
|
54
|
-
= link_to card.section.page.name ,
|
55
|
-
|
56
|
-
-else
|
57
|
-
%p.align-center Not used, you may delete
|
58
|
-
%p
|
59
|
-
= form_tag( breeze.image_path(@image.id) , {method: :delete } ) do
|
60
|
-
%button.button.remove{type: :submit} Delete
|
75
|
+
= link_to card.section.page.name , "/" + card.section.page.name , target: :blank
|
@@ -3,6 +3,6 @@
|
|
3
3
|
%h3.card_header.p-5.text-2xl.bg-gray-100.text-black.font-bold{ text_align_option(card)}= card.header_text(current_lang)
|
4
4
|
%div.h-full{background_option(card)}
|
5
5
|
.p-5{options(card , :text_align , :text_color)}
|
6
|
-
.card_text.m-2.text-sm.leading-relaxed
|
6
|
+
.card_text.m-2.text-sm.leading-relaxed{ prose_classes }
|
7
7
|
= markdown(card,current_lang)
|
8
8
|
=view_button(card , "my-2")
|
@@ -88,8 +88,8 @@
|
|
88
88
|
:values: left center right
|
89
89
|
:default: center
|
90
90
|
:id: 17
|
91
|
-
- :name:
|
92
|
-
:description:
|
91
|
+
- :name: title
|
92
|
+
:description: Title for page
|
93
93
|
:values:
|
94
94
|
:default:
|
95
95
|
:id: 18
|
@@ -127,3 +127,8 @@
|
|
127
127
|
:values: h-8 h-16 h-24 h-32 h-40 h-48 h-64 h-96
|
128
128
|
:default: h-24
|
129
129
|
:id: 24
|
130
|
+
- :name: description
|
131
|
+
:description: Meta description for page
|
132
|
+
:values:
|
133
|
+
:default:
|
134
|
+
:id: 25
|
@@ -1,9 +1,11 @@
|
|
1
1
|
---
|
2
2
|
- :type: page
|
3
3
|
:description: A general page, may contain anykind of section.
|
4
|
-
No restrictions of any kind.
|
4
|
+
No restrictions of any kind. Title goes to the page title and
|
5
|
+
description to meta.
|
5
6
|
:options:
|
6
|
-
-
|
7
|
+
- title
|
8
|
+
- description
|
7
9
|
- :type: blog
|
8
10
|
:description: An news or similar article.
|
9
11
|
:section_template: blog_header
|
@@ -0,0 +1,148 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "simple_form"
|
3
|
+
|
4
|
+
# Use this setup block to configure all options available in SimpleForm.
|
5
|
+
SimpleForm.setup do |config|
|
6
|
+
# Default class for buttons
|
7
|
+
config.button_class = 'my-2 bg-blue-500 hover:bg-blue-700 text-white font-bold text-sm py-2 px-4 rounded'
|
8
|
+
|
9
|
+
# Define the default class of the input wrapper of the boolean input.
|
10
|
+
config.boolean_label_class = ''
|
11
|
+
|
12
|
+
# How the label text should be generated altogether with the required text.
|
13
|
+
config.label_text = ->(label, required, _explicit_label) { "#{label} #{required}" }
|
14
|
+
|
15
|
+
# Define the way to render check boxes / radio buttons with labels.
|
16
|
+
config.boolean_style = :inline
|
17
|
+
|
18
|
+
# You can wrap each item in a collection of radio/check boxes with a tag
|
19
|
+
config.item_wrapper_tag = :div
|
20
|
+
|
21
|
+
# Defines if the default input wrapper class should be included in radio
|
22
|
+
# collection wrappers.
|
23
|
+
config.include_default_input_wrapper_class = false
|
24
|
+
|
25
|
+
# CSS class to add for error notification helper.
|
26
|
+
config.error_notification_class = 'text-white px-6 py-4 border-0 rounded relative mb-4 bg-red-400'
|
27
|
+
|
28
|
+
# Method used to tidy up errors. Specify any Rails Array method.
|
29
|
+
# :first lists the first message for each field.
|
30
|
+
# :to_sentence to list all errors for each field.
|
31
|
+
config.error_method = :to_sentence
|
32
|
+
|
33
|
+
# add validation classes to `input_field`
|
34
|
+
config.input_field_error_class = 'border-red-500'
|
35
|
+
config.input_field_valid_class = 'border-green-400'
|
36
|
+
config.label_class = 'text-sm font-medium text-gray-600'
|
37
|
+
|
38
|
+
# vertical forms
|
39
|
+
#
|
40
|
+
# vertical default_wrapper
|
41
|
+
config.wrappers :vertical_form, tag: 'div', class: 'mb-4' do |b|
|
42
|
+
b.use :html5
|
43
|
+
b.use :placeholder
|
44
|
+
b.optional :maxlength
|
45
|
+
b.optional :minlength
|
46
|
+
b.optional :pattern
|
47
|
+
b.optional :min_max
|
48
|
+
b.optional :readonly
|
49
|
+
b.use :label, class: 'block', error_class: 'text-red-500'
|
50
|
+
b.use :input,
|
51
|
+
class: 'shadow appearance-none border border-gray-300 rounded w-full py-2 px-3 bg-white focus:outline-none focus:ring-0 focus:border-blue-500 text-gray-400 leading-6 transition-colors duration-200 ease-in-out', error_class: 'border-red-500', valid_class: 'border-green-400'
|
52
|
+
b.use :full_error, wrap_with: { tag: 'p', class: 'mt-2 text-red-500 text-xs italic' }
|
53
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'mt-2 text-grey-700 text-xs italic' }
|
54
|
+
end
|
55
|
+
|
56
|
+
# vertical input for boolean (aka checkboxes)
|
57
|
+
config.wrappers :vertical_boolean, tag: 'div', class: 'mb-4 flex items-start', error_class: '' do |b|
|
58
|
+
b.use :html5
|
59
|
+
b.optional :readonly
|
60
|
+
b.wrapper tag: 'div', class: 'flex items-center h-5' do |ba|
|
61
|
+
ba.use :input,
|
62
|
+
class: 'focus:ring-2 focus:ring-indigo-500 ring-offset-2 h-4 w-4 text-indigo-600 border-gray-300 rounded'
|
63
|
+
end
|
64
|
+
b.wrapper tag: 'div', class: 'ml-3 text-sm' do |bb|
|
65
|
+
bb.use :label, class: 'block', error_class: 'text-red-500'
|
66
|
+
bb.use :hint, wrap_with: { tag: 'p', class: 'block text-grey-700 text-xs italic' }
|
67
|
+
bb.use :full_error, wrap_with: { tag: 'p', class: 'block text-red-500 text-xs italic' }
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# vertical input for radio buttons and check boxes
|
72
|
+
config.wrappers :vertical_collection, item_wrapper_class: 'flex items-center',
|
73
|
+
item_label_class: 'my-1 ml-3 block text-sm font-medium text-gray-400', tag: 'div', class: 'my-4' do |b|
|
74
|
+
b.use :html5
|
75
|
+
b.optional :readonly
|
76
|
+
b.wrapper :legend_tag, tag: 'legend', class: 'text-sm font-medium text-gray-600',
|
77
|
+
error_class: 'text-red-500' do |ba|
|
78
|
+
ba.use :label_text
|
79
|
+
end
|
80
|
+
b.use :input,
|
81
|
+
class: 'focus:ring-2 focus:ring-indigo-500 ring-offset-2 h-4 w-4 text-indigo-600 border-gray-300 rounded', error_class: 'text-red-500', valid_class: 'text-green-400'
|
82
|
+
b.use :full_error, wrap_with: { tag: 'p', class: 'block mt-2 text-red-500 text-xs italic' }
|
83
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'mt-2 text-grey-700 text-xs italic' }
|
84
|
+
end
|
85
|
+
|
86
|
+
# vertical file input
|
87
|
+
config.wrappers :vertical_file, tag: 'div', class: '' do |b|
|
88
|
+
b.use :html5
|
89
|
+
b.use :placeholder
|
90
|
+
b.optional :maxlength
|
91
|
+
b.optional :minlength
|
92
|
+
b.optional :readonly
|
93
|
+
b.use :label, class: 'text-sm font-medium text-gray-600 block', error_class: 'text-red-500'
|
94
|
+
b.use :input, class: 'w-full text-gray-500 px-3 py-2 border rounded', error_class: 'text-red-500 border-red-500',
|
95
|
+
valid_class: 'text-green-400'
|
96
|
+
b.use :full_error, wrap_with: { tag: 'p', class: 'mt-2 text-red-500 text-xs italic' }
|
97
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'mt-2 text-grey-700 text-xs italic' }
|
98
|
+
end
|
99
|
+
|
100
|
+
# vertical multi select
|
101
|
+
config.wrappers :vertical_multi_select, tag: 'div', class: 'my-4', error_class: 'f', valid_class: '' do |b|
|
102
|
+
b.use :html5
|
103
|
+
b.optional :readonly
|
104
|
+
b.wrapper :legend_tag, tag: 'legend', class: 'text-sm font-medium text-gray-600',
|
105
|
+
error_class: 'text-red-500' do |ba|
|
106
|
+
ba.use :label_text
|
107
|
+
end
|
108
|
+
b.wrapper tag: 'div', class: 'inline-flex space-x-1' do |ba|
|
109
|
+
# ba.use :input, class: 'flex w-auto w-auto text-gray-500 text-sm border-gray-300 rounded p-2', error_class: 'text-red-500', valid_class: 'text-green-400'
|
110
|
+
ba.use :input,
|
111
|
+
class: 'flex w-auto w-auto shadow appearance-none border border-gray-300 rounded w-full p-2 bg-white focus:outline-none focus:border-blue-500 text-gray-400 leading-4 transition-colors duration-200 ease-in-out'
|
112
|
+
end
|
113
|
+
b.use :full_error, wrap_with: { tag: 'p', class: 'mt-2 text-red-500 text-xs italic' }
|
114
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'mt-2 text-grey-700 text-xs italic' }
|
115
|
+
end
|
116
|
+
|
117
|
+
# vertical range input
|
118
|
+
config.wrappers :vertical_range, tag: 'div', class: 'my-4', error_class: 'text-red-500',
|
119
|
+
valid_class: 'text-green-400' do |b|
|
120
|
+
b.use :html5
|
121
|
+
b.use :placeholder
|
122
|
+
b.optional :readonly
|
123
|
+
b.optional :step
|
124
|
+
b.use :label, class: 'text-sm font-medium text-gray-600 block', error_class: 'text-red-500'
|
125
|
+
b.wrapper tag: 'div', class: 'flex items-center h-5' do |ba|
|
126
|
+
ba.use :input, class: 'rounded-lg overflow-hidden appearance-none bg-gray-400 h-3 w-full text-gray-300',
|
127
|
+
error_class: 'text-red-500', valid_class: 'text-green-400'
|
128
|
+
end
|
129
|
+
b.use :full_error, wrap_with: { tag: 'p', class: 'mt-2 text-red-500 text-xs italic' }
|
130
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'mt-2 text-grey-700 text-xs italic' }
|
131
|
+
end
|
132
|
+
|
133
|
+
# The default wrapper to be used by the FormBuilder.
|
134
|
+
config.default_wrapper = :vertical_form
|
135
|
+
|
136
|
+
# Custom wrappers for input types. This should be a hash containing an input
|
137
|
+
# type as key and the wrapper that will be used for all inputs with specified type.
|
138
|
+
config.wrapper_mappings = {
|
139
|
+
boolean: :vertical_boolean,
|
140
|
+
check_boxes: :vertical_collection,
|
141
|
+
date: :vertical_multi_select,
|
142
|
+
datetime: :vertical_multi_select,
|
143
|
+
file: :vertical_file,
|
144
|
+
radio_buttons: :vertical_collection,
|
145
|
+
range: :vertical_range,
|
146
|
+
time: :vertical_multi_select
|
147
|
+
}
|
148
|
+
end
|
data/lib/breeze/engine.rb
CHANGED
@@ -4,8 +4,7 @@ require "ruby2js/filter/functions"
|
|
4
4
|
require "ruby2js/haml"
|
5
5
|
require "ruby2js/filter/vue"
|
6
6
|
require "breeze/shared_helper"
|
7
|
-
require "simple_form"
|
8
|
-
require "simple_form_tailwind_css"
|
7
|
+
#require "simple_form"
|
9
8
|
require "haml-rails"
|
10
9
|
require "opal-rails"
|
11
10
|
require "opal-jquery"
|
@@ -28,9 +27,13 @@ module Breeze
|
|
28
27
|
|
29
28
|
initializer "after_initialize" do |app|
|
30
29
|
ActiveSupport::Reloader.to_prepare do
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
begin
|
31
|
+
[Section, Card, Page, Image, PageStyle,
|
32
|
+
SectionStyle, CardStyle, OptionDefinition].each do |clazz|
|
33
|
+
clazz.reload
|
34
|
+
end
|
35
|
+
rescue Errno::ENOENT => e
|
36
|
+
puts e
|
34
37
|
end
|
35
38
|
end
|
36
39
|
end
|
data/lib/breeze/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: breeze_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Torsten
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -28,58 +28,58 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: haml-rails
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '2
|
47
|
+
version: '2'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '2
|
54
|
+
version: '2'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: redcarpet
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '3
|
61
|
+
version: '3'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '3
|
68
|
+
version: '3'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: mini_magick
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: ruby2js
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,33 +101,19 @@ dependencies:
|
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: '6.0'
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
105
|
-
requirement: !ruby/object:Gem::Requirement
|
106
|
-
requirements:
|
107
|
-
- - "~>"
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '1.0'
|
110
|
-
type: :runtime
|
111
|
-
prerelease: false
|
112
|
-
version_requirements: !ruby/object:Gem::Requirement
|
113
|
-
requirements:
|
114
|
-
- - "~>"
|
115
|
-
- !ruby/object:Gem::Version
|
116
|
-
version: '1.0'
|
117
|
-
- !ruby/object:Gem::Dependency
|
118
|
-
name: simple_form
|
104
|
+
name: simple_form-tailwind
|
119
105
|
requirement: !ruby/object:Gem::Requirement
|
120
106
|
requirements:
|
121
|
-
- -
|
107
|
+
- - ">="
|
122
108
|
- !ruby/object:Gem::Version
|
123
|
-
version:
|
109
|
+
version: '0'
|
124
110
|
type: :runtime
|
125
111
|
prerelease: false
|
126
112
|
version_requirements: !ruby/object:Gem::Requirement
|
127
113
|
requirements:
|
128
|
-
- -
|
114
|
+
- - ">="
|
129
115
|
- !ruby/object:Gem::Version
|
130
|
-
version:
|
116
|
+
version: '0'
|
131
117
|
- !ruby/object:Gem::Dependency
|
132
118
|
name: opal-rails
|
133
119
|
requirement: !ruby/object:Gem::Requirement
|
@@ -176,14 +162,14 @@ dependencies:
|
|
176
162
|
requirements:
|
177
163
|
- - "~>"
|
178
164
|
- !ruby/object:Gem::Version
|
179
|
-
version: '2.
|
165
|
+
version: '2.7'
|
180
166
|
type: :runtime
|
181
167
|
prerelease: false
|
182
168
|
version_requirements: !ruby/object:Gem::Requirement
|
183
169
|
requirements:
|
184
170
|
- - "~>"
|
185
171
|
- !ruby/object:Gem::Version
|
186
|
-
version: '2.
|
172
|
+
version: '2.7'
|
187
173
|
- !ruby/object:Gem::Dependency
|
188
174
|
name: rabl
|
189
175
|
requirement: !ruby/object:Gem::Requirement
|
@@ -343,7 +329,7 @@ files:
|
|
343
329
|
- config/breeze/section_styles.yml
|
344
330
|
- config/initializers/breeze.rb
|
345
331
|
- config/initializers/rabl.rb
|
346
|
-
- config/initializers/
|
332
|
+
- config/initializers/simple_form_tailwind.rb
|
347
333
|
- config/locales/breeze_en.yml
|
348
334
|
- config/routes.rb
|
349
335
|
- config/tailwind.config.js
|
@@ -381,7 +367,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
381
367
|
- !ruby/object:Gem::Version
|
382
368
|
version: '0'
|
383
369
|
requirements: []
|
384
|
-
rubygems_version: 3.
|
370
|
+
rubygems_version: 3.5.23
|
385
371
|
signing_key:
|
386
372
|
specification_version: 4
|
387
373
|
summary: The tailwind based, developers CMS
|