breeze_cms 0.9.5
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 +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +24 -0
- data/Rakefile +6 -0
- data/app/assets/config/breeze_manifest.js +2 -0
- data/app/assets/images/breeze/breeze_logo.png +0 -0
- data/app/assets/images/breeze/card_preview/card_feature_box.png +0 -0
- data/app/assets/images/breeze/card_preview/card_feature_normal.png +0 -0
- data/app/assets/images/breeze/card_preview/card_full_image.png +0 -0
- data/app/assets/images/breeze/card_preview/card_gap_square.png +0 -0
- data/app/assets/images/breeze/card_preview/card_large_image.png +0 -0
- data/app/assets/images/breeze/card_preview/card_normal_round.png +0 -0
- data/app/assets/images/breeze/card_preview/card_normal_square.png +0 -0
- data/app/assets/images/breeze/card_preview/card_wide_square.png +0 -0
- data/app/assets/images/breeze/card_preview/form_field.png +0 -0
- data/app/assets/images/breeze/home.jpg +0 -0
- data/app/assets/images/breeze/section_preview/blog_header.png +0 -0
- data/app/assets/images/breeze/section_preview/form_section.png +0 -0
- data/app/assets/images/breeze/section_preview/section_cards.png +0 -0
- data/app/assets/images/breeze/section_preview/section_feature.png +0 -0
- data/app/assets/images/breeze/section_preview/section_full_image.png +0 -0
- data/app/assets/images/breeze/section_preview/section_full_up.png +0 -0
- data/app/assets/images/breeze/section_preview/section_half_image.png +0 -0
- data/app/assets/images/breeze/section_preview/section_large_image.png +0 -0
- data/app/assets/images/breeze/section_preview/section_news.png +0 -0
- data/app/assets/images/breeze/section_preview/section_slider.png +0 -0
- data/app/assets/images/breeze/section_preview/section_small_image.png +0 -0
- data/app/assets/images/breeze/section_preview/section_spacer.png +0 -0
- data/app/assets/images/breeze/section_preview/section_text.png +0 -0
- data/app/assets/javascript/breeze_application.js.rb +101 -0
- data/app/assets/javascript/marked.js +6 -0
- data/app/assets/stylesheets/breeze/breeze.css +3633 -0
- data/app/assets/stylesheets/breeze/breeze.email.css +1344 -0
- data/app/assets/stylesheets/breeze.tailwind.css +2 -0
- data/app/assets/stylesheets/breeze_tailwind_styles.css +21 -0
- data/app/assets/stylesheets/tailwind_base.css +3 -0
- data/app/controllers/breeze/application_controller.rb +4 -0
- data/app/controllers/breeze/breeze_controller.rb +16 -0
- data/app/controllers/breeze/cards_controller.rb +58 -0
- data/app/controllers/breeze/changes_controller.rb +45 -0
- data/app/controllers/breeze/form_controller.rb +67 -0
- data/app/controllers/breeze/images_controller.rb +100 -0
- data/app/controllers/breeze/pages_controller.rb +66 -0
- data/app/controllers/breeze/sections_controller.rb +96 -0
- data/app/controllers/breeze/styles_controller.rb +11 -0
- data/app/controllers/breeze/translations_controller.rb +56 -0
- data/app/controllers/breeze/view_controller.rb +10 -0
- data/app/helpers/breeze/breeze_helper.rb +54 -0
- data/app/helpers/breeze/cards_helper.rb +11 -0
- data/app/helpers/breeze/changes_helper.rb +29 -0
- data/app/helpers/breeze/form_helper.rb +5 -0
- data/app/helpers/breeze/images_helper.rb +57 -0
- data/app/helpers/breeze/options_helper.rb +120 -0
- data/app/helpers/breeze/pages_helper.rb +5 -0
- data/app/helpers/breeze/sections_helper.rb +14 -0
- data/app/helpers/breeze/styles_helper.rb +4 -0
- data/app/helpers/breeze/translations_helper.rb +14 -0
- data/app/helpers/breeze/view_helper.rb +74 -0
- data/app/jobs/breeze/application_job.rb +4 -0
- data/app/mailers/breeze/application_mailer.rb +6 -0
- data/app/models/breeze/active_base.rb +34 -0
- data/app/models/breeze/active_yaml.rb +143 -0
- data/app/models/breeze/card.rb +90 -0
- data/app/models/breeze/card_style.rb +12 -0
- data/app/models/breeze/change_set.rb +58 -0
- data/app/models/breeze/image.rb +104 -0
- data/app/models/breeze/option_definition.rb +43 -0
- data/app/models/breeze/page.rb +97 -0
- data/app/models/breeze/page_style.rb +12 -0
- data/app/models/breeze/section.rb +137 -0
- data/app/models/breeze/section_style.rb +17 -0
- data/app/models/breeze/shared_base.rb +20 -0
- data/app/models/breeze/style.rb +17 -0
- data/app/models/breeze/translation.rb +83 -0
- data/app/models/breeze/view_base.rb +134 -0
- data/app/views/breeze/cards/index.haml +84 -0
- data/app/views/breeze/changes/index.haml +52 -0
- data/app/views/breeze/form/_editor.haml +33 -0
- data/app/views/breeze/form/form.haml +8 -0
- data/app/views/breeze/images/_editor.haml +144 -0
- data/app/views/breeze/images/index.haml +83 -0
- data/app/views/breeze/images/new.haml +12 -0
- data/app/views/breeze/images/show.haml +60 -0
- data/app/views/breeze/pages/_sections.rabl +4 -0
- data/app/views/breeze/pages/index.haml +49 -0
- data/app/views/breeze/pages/show.haml +85 -0
- data/app/views/breeze/sections/_option_form_date.haml +4 -0
- data/app/views/breeze/sections/_option_form_select.haml +4 -0
- data/app/views/breeze/sections/_option_form_text.haml +4 -0
- data/app/views/breeze/sections/_overlay.haml +33 -0
- data/app/views/breeze/sections/_section.rabl +5 -0
- data/app/views/breeze/sections/_sections_pagination.haml +29 -0
- data/app/views/breeze/sections/index.haml +88 -0
- data/app/views/breeze/sections/new.haml +12 -0
- data/app/views/breeze/sections/select_card_template.haml +13 -0
- data/app/views/breeze/sections/select_template.haml +15 -0
- data/app/views/breeze/sections/show.haml +91 -0
- data/app/views/breeze/styles/_options.haml +9 -0
- data/app/views/breeze/styles/index.haml +84 -0
- data/app/views/breeze/translations/_row.haml +29 -0
- data/app/views/breeze/translations/show.haml +79 -0
- data/app/views/breeze/view/_blog_header.haml +13 -0
- data/app/views/breeze/view/_form_section.haml +21 -0
- data/app/views/breeze/view/_section_cards.haml +17 -0
- data/app/views/breeze/view/_section_feature.haml +13 -0
- data/app/views/breeze/view/_section_full_image.haml +10 -0
- data/app/views/breeze/view/_section_full_up.haml +11 -0
- data/app/views/breeze/view/_section_half_image.haml +13 -0
- data/app/views/breeze/view/_section_large_image.haml +13 -0
- data/app/views/breeze/view/_section_news.haml +16 -0
- data/app/views/breeze/view/_section_slider.haml +51 -0
- data/app/views/breeze/view/_section_small_image.haml +11 -0
- data/app/views/breeze/view/_section_spacer.haml +1 -0
- data/app/views/breeze/view/_section_text.haml +17 -0
- data/app/views/breeze/view/cards/_card_feature_box.haml +13 -0
- data/app/views/breeze/view/cards/_card_feature_normal.haml +7 -0
- data/app/views/breeze/view/cards/_card_full_image.haml +10 -0
- data/app/views/breeze/view/cards/_card_gap_square.haml +11 -0
- data/app/views/breeze/view/cards/_card_large_image.haml +6 -0
- data/app/views/breeze/view/cards/_card_normal_round.haml +8 -0
- data/app/views/breeze/view/cards/_card_normal_square.haml +9 -0
- data/app/views/breeze/view/cards/_card_wide_square.haml +8 -0
- data/app/views/breeze/view/cards/_form_field.haml +8 -0
- data/app/views/breeze/view/elements/_button.haml +4 -0
- data/app/views/breeze/view/page.haml +2 -0
- data/app/views/layouts/breeze/_header.haml +37 -0
- data/app/views/layouts/breeze/_messages.haml +28 -0
- data/app/views/layouts/breeze/application.haml +20 -0
- data/app/views/layouts/mailer.html.haml +8 -0
- data/app/views/layouts/mailer.text.erb +1 -0
- data/config/breeze/card_styles.yml +129 -0
- data/config/breeze/option_definitions.yml +129 -0
- data/config/breeze/page_styles.yml +12 -0
- data/config/breeze/section_styles.yml +199 -0
- data/config/initializers/breeze.rb +13 -0
- data/config/initializers/rabl.rb +31 -0
- data/config/initializers/simple_form.rb +212 -0
- data/config/routes.rb +40 -0
- data/config/tailwind.config.js +17 -0
- data/config/tailwind.email.js +14 -0
- data/lib/breeze/engine.rb +97 -0
- data/lib/breeze/shared_helper.rb +44 -0
- data/lib/breeze/version.rb +3 -0
- data/lib/breeze.rb +104 -0
- data/lib/generators/breeze/install/install_generator.rb +19 -0
- data/lib/generators/breeze/install/templates/empty.yml +1 -0
- data/lib/generators/breeze/install/templates/initializer.rb +70 -0
- data/lib/generators/breeze/update/update_generator.rb +11 -0
- data/lib/tasks/condense.rake +60 -0
- data/lib/tasks/consistency.rake +84 -0
- metadata +371 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
.prose {
|
|
2
|
+
max-width: 100%;
|
|
3
|
+
color: inherit;
|
|
4
|
+
--tw-prose-bullets: #6b7280;
|
|
5
|
+
--tw-prose-headings: inherit;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
@layer components {
|
|
9
|
+
.button {
|
|
10
|
+
@apply inline-block rounded-lg px-3 py-2 text-base font-medium border border-gray-500 hover:border-black;
|
|
11
|
+
}
|
|
12
|
+
.change {
|
|
13
|
+
@apply bg-cyan-200;
|
|
14
|
+
}
|
|
15
|
+
.remove {
|
|
16
|
+
@apply bg-red-200;
|
|
17
|
+
}
|
|
18
|
+
.action {
|
|
19
|
+
@apply bg-green-200;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module Breeze
|
|
2
|
+
class BreezeController < ::ApplicationController
|
|
3
|
+
before_action :authenticate_if
|
|
4
|
+
layout "breeze/application"
|
|
5
|
+
|
|
6
|
+
def authenticate_if
|
|
7
|
+
return unless respond_to? :"authenticate_member!"
|
|
8
|
+
authenticate_member!
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def current_member_email
|
|
12
|
+
return "breeze_user" unless respond_to? :current_member
|
|
13
|
+
current_member.email
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
module Breeze
|
|
2
|
+
class CardsController < BreezeController
|
|
3
|
+
before_action :set_card , except: [:index , :new]
|
|
4
|
+
|
|
5
|
+
def index
|
|
6
|
+
@section = Section.find(params[:section_id])
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def set_image
|
|
10
|
+
@card.image_id = params[:image_id].to_i
|
|
11
|
+
@card.edit_save(current_member_email)
|
|
12
|
+
message = @card.image ? "#{@card.image.name} selected" : "Image removed"
|
|
13
|
+
redirect_to section_cards_url(@card.section.id) , notice: message
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def move
|
|
17
|
+
if( params[:dir] == "up")
|
|
18
|
+
@card.move_up
|
|
19
|
+
else
|
|
20
|
+
@card.move_down
|
|
21
|
+
end
|
|
22
|
+
@card.edit_save(current_member_email)
|
|
23
|
+
redirect_to section_cards_url(@card.section.id),notice: "#{@card.header} moved"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def new
|
|
27
|
+
@section = Section.find(params[:section_id] || params[:card_id])
|
|
28
|
+
new_card = @section.new_card
|
|
29
|
+
new_card.add_save(current_member_email)
|
|
30
|
+
redirect_to section_cards_url(@section.id) , notice: "Card created"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def destroy
|
|
34
|
+
@card.delete_and_reset_index(current_member_email)
|
|
35
|
+
redirect_to section_cards_url(@card.section.id) , notice: "#{@card.header} removed"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def update
|
|
39
|
+
@card.update(params[:card])
|
|
40
|
+
@card.update_options( params[:options])
|
|
41
|
+
@card.edit_save(current_member_email)
|
|
42
|
+
respond_to do |format|
|
|
43
|
+
format.html do
|
|
44
|
+
redirect_to section_cards_url(@card.section_id) , notice: "Updated #{@card.header}"
|
|
45
|
+
end
|
|
46
|
+
format.json { render status: 200, json: {} }
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
private
|
|
52
|
+
def set_card
|
|
53
|
+
card_id = params[:id] || params[:card_id]
|
|
54
|
+
@card = Card.find( card_id )
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require "open3"
|
|
2
|
+
|
|
3
|
+
module Breeze
|
|
4
|
+
class ChangesController < BreezeController
|
|
5
|
+
|
|
6
|
+
def index
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def commit
|
|
10
|
+
if params[:message].blank?
|
|
11
|
+
message = "must have message"
|
|
12
|
+
redirect_to changes_index_url , alert: message
|
|
13
|
+
else
|
|
14
|
+
out = capture("git add breeze")
|
|
15
|
+
out = capture("git add #{Image.asset_root}" , out)
|
|
16
|
+
out = capture("git config --local user.email #{current_member_email}" ,out)
|
|
17
|
+
out = capture('git commit -m "' + params[:message] + '"' ,out)
|
|
18
|
+
out = capture("git pull --rebase=true" ,out)
|
|
19
|
+
out = capture("git push" ,out)
|
|
20
|
+
ChangeSet.current.zero
|
|
21
|
+
redirect_to changes_index_url , notice: "Changes commited, #{out}"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def reset
|
|
26
|
+
begin
|
|
27
|
+
out = capture("git checkout #{Breeze.data_dir}")
|
|
28
|
+
out = capture("git checkout #{Breeze::Image.asset_root}" , out)
|
|
29
|
+
ChangeSet.current.zero
|
|
30
|
+
message = "Changes reset"
|
|
31
|
+
rescue
|
|
32
|
+
message = "Unknown error occured"
|
|
33
|
+
end
|
|
34
|
+
redirect_to changes_index_url , notice: message
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
private
|
|
38
|
+
def capture(cmd , previous = "")
|
|
39
|
+
out , ignore_status = Open3.capture2e(cmd)
|
|
40
|
+
puts "CMD:#{ignore_status}: #{cmd}"
|
|
41
|
+
puts out
|
|
42
|
+
previous + "\n" + out
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
module Breeze
|
|
2
|
+
class FormController < ::ApplicationController
|
|
3
|
+
|
|
4
|
+
def post
|
|
5
|
+
@section = Section.find( params[:section_id] )
|
|
6
|
+
@errors = { }
|
|
7
|
+
return if bot_alert
|
|
8
|
+
check_maths
|
|
9
|
+
verify_data
|
|
10
|
+
if( @errors.length > 0)
|
|
11
|
+
render "breeze/form/form"
|
|
12
|
+
else
|
|
13
|
+
dispatch_form_data( )
|
|
14
|
+
redirect_to main_app.root_url , notice: @section.option("ok_message")
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
def dispatch_form_data
|
|
21
|
+
puts "Dispatch data"
|
|
22
|
+
data = {}
|
|
23
|
+
@section.cards.each do |card|
|
|
24
|
+
data[card.header] = params[card.header]
|
|
25
|
+
end
|
|
26
|
+
if(@section.has_option?("handler") )
|
|
27
|
+
puts "Sending data"
|
|
28
|
+
@section.option("handler").constantize.new.handle_form(@section, data)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def verify_data
|
|
33
|
+
@section.cards.each do |card|
|
|
34
|
+
check_option( card , params[card.header])
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
def check_option(card , value)
|
|
38
|
+
return unless value.blank?
|
|
39
|
+
compulsory = card.option("compulsory") != "no"
|
|
40
|
+
return unless compulsory
|
|
41
|
+
# check different types
|
|
42
|
+
message = card.text
|
|
43
|
+
message = "May not be empty" if message.blank?
|
|
44
|
+
@errors[card.header] = message
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def check_maths
|
|
48
|
+
key = params[:bot_fudder].to_i / 2
|
|
49
|
+
if( (2*key + 1).to_s != params[:challenge])
|
|
50
|
+
@errors[:challenge] = "Check the anti bot maths, it wasn't: #{params[:challenge]}"
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def bot_alert
|
|
55
|
+
if @section.nil?
|
|
56
|
+
head :ok
|
|
57
|
+
return true
|
|
58
|
+
end
|
|
59
|
+
key = params[:bot_fudder]
|
|
60
|
+
if key.to_i.to_s != key
|
|
61
|
+
head :ok
|
|
62
|
+
return true
|
|
63
|
+
end
|
|
64
|
+
return false
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
require "mini_magick"
|
|
2
|
+
|
|
3
|
+
module Breeze
|
|
4
|
+
class ImagesController < BreezeController
|
|
5
|
+
before_action :set_image, only: %i[ update destroy show scale crop copy ]
|
|
6
|
+
|
|
7
|
+
def index
|
|
8
|
+
@images = get_images
|
|
9
|
+
@image_data = @images.collect{|i|
|
|
10
|
+
data = i.data.dup
|
|
11
|
+
data[:url] = view_context.asset_path(i.asset_name)
|
|
12
|
+
data[:link] = build_select_link_for(i)
|
|
13
|
+
data[:updated_at] = i.updated_at.to_date if i.updated_at
|
|
14
|
+
data[:created] = i.updated_at.to_i
|
|
15
|
+
data[:aspect_ratio] = i.aspect_ratio.join("/")
|
|
16
|
+
data[:ratio] = i.aspect_ratio
|
|
17
|
+
data
|
|
18
|
+
}
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def destroy
|
|
22
|
+
@image.destroy(current_member_email)
|
|
23
|
+
redirect_to :images , notice: "Image #{@image.name} deleted"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def update
|
|
27
|
+
@image.name = params[:name]
|
|
28
|
+
@image.tags = params[:tags]
|
|
29
|
+
@image.edit_save(current_member_email)
|
|
30
|
+
redirect_to image_path(@image) , notice: "Image updated"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def scale
|
|
34
|
+
@image.scale( params[:scale] )
|
|
35
|
+
@image.edit_save(current_member_email)
|
|
36
|
+
redirect_to image_path(@image) , notice: "Image was scaled"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def crop
|
|
40
|
+
size = "#{params[:size_x]}x#{params[:size_y]}+#{params[:off_x]}+#{params[:off_y]}"
|
|
41
|
+
@image.crop( size )
|
|
42
|
+
@image.edit_save(current_member_email)
|
|
43
|
+
redirect_to image_path(@image) , notice: "Image was resized"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def show
|
|
47
|
+
@sections = Section.find_all(:image_id, params[:id].to_i)
|
|
48
|
+
@cards = Card.find_all(:image_id, params[:id].to_i)
|
|
49
|
+
@used = ((@cards.length > 0) || (@sections.length > 0))
|
|
50
|
+
@image_data = @image.data
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def copy
|
|
54
|
+
image = @image.copy
|
|
55
|
+
image.add_save(current_member_email)
|
|
56
|
+
redirect_to image_path(image.id) , notice: "Image copied"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def create
|
|
60
|
+
image = Image.create_new(params['filename'] ,params['tags'], params['image_file'])
|
|
61
|
+
image.add_save current_member_email
|
|
62
|
+
where_to = determine_redirect(image)
|
|
63
|
+
redirect_to where_to , notice: "New image created: #{image.name}"
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
private
|
|
67
|
+
|
|
68
|
+
def get_images
|
|
69
|
+
images = Image.all
|
|
70
|
+
return images unless params[:unused]
|
|
71
|
+
hash = images.collect{|i| [i.id , i ] }.to_h
|
|
72
|
+
Section.all.each{ |s| hash.delete(s.image&.id)}
|
|
73
|
+
Card.all.each{ |s| hash.delete(s.image&.id)}
|
|
74
|
+
hash.values
|
|
75
|
+
end
|
|
76
|
+
def set_image
|
|
77
|
+
@image = Image.find(params[:id] || params[:image_id])
|
|
78
|
+
end
|
|
79
|
+
def determine_redirect(image)
|
|
80
|
+
if(params[:section_id])
|
|
81
|
+
view_context.section_set_image_url(params[:section_id],image_id: image.id )
|
|
82
|
+
elsif(params[:card_id])
|
|
83
|
+
view_context.card_set_image_url(params[:card_id],image_id: image.id )
|
|
84
|
+
else
|
|
85
|
+
:images
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def build_select_link_for(image)
|
|
90
|
+
if(params[:section_id])
|
|
91
|
+
return view_context.section_set_image_url(params[:section_id] , image_id: image.id)
|
|
92
|
+
end
|
|
93
|
+
if(params[:card_id])
|
|
94
|
+
return view_context.card_set_image_url(params[:card_id] , image_id: image.id)
|
|
95
|
+
end
|
|
96
|
+
view_context.image_url(image.id)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
module Breeze
|
|
2
|
+
class PagesController < BreezeController
|
|
3
|
+
|
|
4
|
+
before_action :set_page, only: %i[ update destroy show ]
|
|
5
|
+
|
|
6
|
+
def index
|
|
7
|
+
if(! params[:type].blank?)
|
|
8
|
+
@pages = Page.find_all(:type, params[:type])
|
|
9
|
+
else
|
|
10
|
+
@pages = Page.all
|
|
11
|
+
end
|
|
12
|
+
@page_styles = PageStyle.all
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def show
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def update
|
|
20
|
+
if( !params[:name].blank? && (params[:name] != @page.name))
|
|
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
|
+
end
|
|
33
|
+
redirect_to page_url(@page) , notice: message
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def create
|
|
37
|
+
name = params[:name]
|
|
38
|
+
if( name.blank? )
|
|
39
|
+
flash.alert = "Must enter name"
|
|
40
|
+
redirect_to pages_url
|
|
41
|
+
else
|
|
42
|
+
@page = Page.new_page(name , params[:type])
|
|
43
|
+
@page.add_save(current_member_email)
|
|
44
|
+
template = PageStyle.find_by_type(@page.type).section_template
|
|
45
|
+
if(template)
|
|
46
|
+
section = @page.new_section(template)
|
|
47
|
+
section.add_save(current_member_email)
|
|
48
|
+
redirect_to section_url(section.id) , notice: "Page was successfully created."
|
|
49
|
+
else
|
|
50
|
+
redirect_to page_url(@page.id) , notice: "Page was successfully created. Choose first section"
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def destroy
|
|
56
|
+
@page.delete_save!(current_member_email)
|
|
57
|
+
redirect_to pages_url, notice: "Page #{@page.name} was removed."
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
private
|
|
61
|
+
def set_page
|
|
62
|
+
@page = Page.find(params[:id])
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
module Breeze
|
|
2
|
+
class SectionsController < BreezeController
|
|
3
|
+
before_action :set_section , except: [:index, :new]
|
|
4
|
+
|
|
5
|
+
def index
|
|
6
|
+
@page = Page.find(params[:page_id])
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def show
|
|
10
|
+
@ids = [ @section.type_id ]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def select_template
|
|
14
|
+
@sections = SectionStyle.all
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def select_card_template
|
|
18
|
+
@cards = CardStyle.all
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def new
|
|
22
|
+
page = Page.find(params[:page_id] || params[:section_id])
|
|
23
|
+
template = params[:template]
|
|
24
|
+
new_section = page.new_section(template)
|
|
25
|
+
new_section.add_save(current_member_email)
|
|
26
|
+
if(template.blank?) # new
|
|
27
|
+
redirect_to section_select_template_url(new_section.id), notice: "New section created"
|
|
28
|
+
else # copy
|
|
29
|
+
redirect_to section_url(new_section.id), notice: "Section copied"
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def destroy
|
|
34
|
+
@section.delete_and_reset_index(current_member_email)
|
|
35
|
+
redirect_to page_sections_url(@section.page.id) , notice: "Section #{@section.header} removed"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def set_image
|
|
39
|
+
@section.image_id = params[:image_id].to_i
|
|
40
|
+
@section.edit_save(current_member_email)
|
|
41
|
+
message = @section.image ? "#{@section.image.name} selected" : "Image removed"
|
|
42
|
+
redirect_to section_url(@section.id) , notice: message
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def set_template
|
|
46
|
+
template = params[:template]
|
|
47
|
+
raise "no template given" if template.blank?
|
|
48
|
+
style = SectionStyle.find_by_template(template)
|
|
49
|
+
raise "no such template #{template}" unless style
|
|
50
|
+
if(! style.has_cards?)
|
|
51
|
+
if( @section.cards.length > 0 )
|
|
52
|
+
redirect_to section_url(@section.id) , alert: "Must delete cards first"
|
|
53
|
+
return
|
|
54
|
+
end
|
|
55
|
+
@section.card_template = ""
|
|
56
|
+
end
|
|
57
|
+
@section.set_template( template )
|
|
58
|
+
@section.edit_save(current_member_email)
|
|
59
|
+
redirect_to section_url(@section.id)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def set_card_template
|
|
63
|
+
card_template = params[:card_template]
|
|
64
|
+
raise "no card template given" if card_template.blank?
|
|
65
|
+
@section.card_template = card_template
|
|
66
|
+
@section.edit_save(current_member_email)
|
|
67
|
+
redirect_to section_url(@section.id)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def move
|
|
71
|
+
if( params[:dir] == "up")
|
|
72
|
+
@section.move_up
|
|
73
|
+
else
|
|
74
|
+
@section.move_down
|
|
75
|
+
end
|
|
76
|
+
@section.edit_save(current_member_email)
|
|
77
|
+
redirect_to page_sections_url(@section.page.id)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def update
|
|
81
|
+
@section.update(params[:section])
|
|
82
|
+
@section.update_options( params[:options])
|
|
83
|
+
@section.edit_save(current_member_email)
|
|
84
|
+
respond_to do |format|
|
|
85
|
+
format.html { redirect_to :section , notice: "Update ok" }
|
|
86
|
+
format.json { render status: 200, json: {} }
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
private
|
|
91
|
+
def set_section
|
|
92
|
+
@section = Section.find( params[:id] || params[:section_id] )
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
end
|
|
96
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
module Breeze
|
|
2
|
+
class TranslationsController < BreezeController
|
|
3
|
+
before_action :set_translation, only: %i[ edit update destroy ]
|
|
4
|
+
|
|
5
|
+
# show all translation for a page
|
|
6
|
+
def show
|
|
7
|
+
@page = Page.find(params[:id].to_i)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# GET /translations/new
|
|
11
|
+
def new
|
|
12
|
+
@translation = Translation.new
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# GET /translations/1/edit
|
|
16
|
+
def edit
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# POST /translations
|
|
20
|
+
def create
|
|
21
|
+
@translation = Translation.new(translation_params)
|
|
22
|
+
|
|
23
|
+
if @translation.save
|
|
24
|
+
redirect_to @translation, notice: "Translation was successfully created."
|
|
25
|
+
else
|
|
26
|
+
render :new, status: :unprocessable_entity
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# PATCH/PUT /translations/1
|
|
31
|
+
def update
|
|
32
|
+
respond_to do |format|
|
|
33
|
+
@translation.update(params[:translation] , "user")
|
|
34
|
+
format.html { redirect_to(@translation, :notice => 'User was successfully updated.') }
|
|
35
|
+
format.json { render status: 200, json: {} }
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# DELETE /translations/1
|
|
40
|
+
def destroy
|
|
41
|
+
@translation.destroy
|
|
42
|
+
redirect_to translations_url, notice: "Translation was successfully destroyed.", status: :see_other
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
private
|
|
46
|
+
# Use callbacks to share common setup or constraints between actions.
|
|
47
|
+
def set_translation
|
|
48
|
+
@translation = Translation.find(params[:id])
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Only allow a list of trusted parameters through.
|
|
52
|
+
def translation_params
|
|
53
|
+
params.fetch(:translation, {})
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
|
|
2
|
+
module Breeze
|
|
3
|
+
module BreezeHelper
|
|
4
|
+
include OptionsHelper
|
|
5
|
+
include SharedHelper
|
|
6
|
+
|
|
7
|
+
def updated_by(owner)
|
|
8
|
+
member = owner.updated_by
|
|
9
|
+
return member if member.is_a? String
|
|
10
|
+
return "" if member.nil?
|
|
11
|
+
return member.name if member.respond_to? :name
|
|
12
|
+
member.email
|
|
13
|
+
end
|
|
14
|
+
def aspect_ratio image
|
|
15
|
+
x , y = image.aspect_ratio
|
|
16
|
+
"#{x} / #{y}"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def card_field_name(card)
|
|
20
|
+
name = card.header
|
|
21
|
+
name += "*" unless card.option("compulsory") == "no"
|
|
22
|
+
name
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def last_change_digit
|
|
26
|
+
last = ChangeSet.current.last
|
|
27
|
+
return 10 unless last
|
|
28
|
+
last = (Time.now - last).to_i
|
|
29
|
+
return 10 if ( last >= 600 )
|
|
30
|
+
digit = last / 60
|
|
31
|
+
digit
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def last_change_class
|
|
35
|
+
digit = last_change_digit
|
|
36
|
+
return "" if digit > 9
|
|
37
|
+
digit = 9 - digit
|
|
38
|
+
reds = { "1" => "bg-red-100","2" => "bg-red-200","3" => "bg-red-100",
|
|
39
|
+
"4" => "bg-red-400","5" => "bg-red-500","6" => "bg-red-600",
|
|
40
|
+
"7" => "bg-red-700","8" => "bg-red-600","9" => "bg-red-900"}
|
|
41
|
+
|
|
42
|
+
clazz = reds[digit.to_s].to_s
|
|
43
|
+
clazz += " " + "text-white" if digit > 7
|
|
44
|
+
clazz
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def last_change_text
|
|
48
|
+
digit = last_change_digit
|
|
49
|
+
return "no change" if digit > 9
|
|
50
|
+
"#{digit} min. by #{ChangeSet.current.last_editor}"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module Breeze
|
|
2
|
+
module CardsHelper
|
|
3
|
+
include ViewHelper #for previews
|
|
4
|
+
|
|
5
|
+
def card_section_select(card)
|
|
6
|
+
card_sections = card.section.page.sections
|
|
7
|
+
card_sections.delete_if{|c| c.card_template.blank?}
|
|
8
|
+
card_sections.collect{|s| [s.header , s.id]}
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'open3'
|
|
2
|
+
module Breeze
|
|
3
|
+
module ChangesHelper
|
|
4
|
+
|
|
5
|
+
def branch
|
|
6
|
+
%x[git branch]
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def cms_part? name
|
|
10
|
+
return true if name.include?( Breeze.images_dir )
|
|
11
|
+
return true if name.include?(Breeze.data_dir)
|
|
12
|
+
false
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def changeset( type , element)
|
|
16
|
+
case type
|
|
17
|
+
when :add
|
|
18
|
+
ChangeSet.current.added( element )
|
|
19
|
+
when :edit
|
|
20
|
+
ChangeSet.current.edited( element )
|
|
21
|
+
when :delete
|
|
22
|
+
ChangeSet.current.deleted( element )
|
|
23
|
+
else
|
|
24
|
+
raise "unrecognized type #{type}"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
end
|