kuhsaft 1.2.4 → 1.2.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.
data/README.md CHANGED
@@ -152,6 +152,14 @@ The `name` option is a unique identifier, which is also used for translating the
152
152
 
153
153
  activerecord.attributes.kuhsaft/image_size.sizes.#{name}
154
154
 
155
+ ## Configuring custom styles for bricks
156
+
157
+ Implement the `available_display_styles` on a brick model and return an array of css classnames: `['module-big', 'module-small']`. These styles can be applied to a brick instance through the UI. In the frontend, use `to_style_class` to get the configured styles:
158
+
159
+ %my-brick{ :class => brick.to_style_class}
160
+ = brick.text # ... etc
161
+
162
+
155
163
  ## Adding custom templates with placeholder bricks
156
164
 
157
165
  * Save your partial in `views/kuhsaft/placeholder_bricks/partials/_your_partial.html.haml`
@@ -30,9 +30,15 @@ sortableBrick = ->
30
30
  handle: '.brick-item-header',
31
31
  axis: "y",
32
32
  update: (event, ui) ->
33
- $(this).find(".brick-item").each (idx, elem) ->
33
+ idList = $(this).find("> .brick-item")
34
+ .each (idx, elem) ->
34
35
  $(this).find("input.position-field").val(idx+1)
35
- $(this).children('form').trigger('submit')
36
+ .map ->
37
+ $(this).data('id')
38
+
39
+ sortForm = $('#bricks-sort-form form')
40
+ sortForm.find('input[name="bricks[ids]"]').val(idList.toArray().join(','))
41
+ sortForm.trigger('submit')
36
42
  )
37
43
 
38
44
  window.initSubmitLinks = (selector = null)->
@@ -120,6 +120,12 @@ form
120
120
  a
121
121
  color: #666
122
122
 
123
+ .pages-list
124
+ > .branch-group
125
+ > .branch
126
+ .branch-title
127
+ font-weight: bold
128
+
123
129
  .branch-group
124
130
  .branch-group
125
131
  .branch-title
@@ -137,4 +143,12 @@ form
137
143
  p
138
144
  margin: 0
139
145
 
146
+ .dropdown-menu
147
+ > li
148
+ > .control-group
149
+ padding: 3px 20px
150
+
151
+ .control-label
152
+ font-weight: bold
153
+
140
154
  @import bootstrap-responsive
@@ -30,6 +30,15 @@ module Kuhsaft
30
30
  @brick.destroy
31
31
  end
32
32
 
33
+ def sort
34
+ if params[:bricks].present?
35
+ params[:bricks][:ids].split(',').each_with_index do |id, idx|
36
+ Kuhsaft::Brick.find(id).update_attribute(:position, idx.to_i + 1)
37
+ end
38
+ end
39
+ render :nothing => true
40
+ end
41
+
33
42
  end
34
43
  end
35
44
  end
@@ -60,9 +60,9 @@ module PagesHelper
60
60
  end
61
61
 
62
62
  def read_more_link(id)
63
- link_to(id, :'data-toggle' => 'collapse', :'data-target' => id, :class => 'button button-read-more') do
64
- @content = content_tag(:p, t('.read_more'), :class => 'read-more-text')
65
- @content << content_tag(:p, t('.read_less'), :class => 'read-less-text')
63
+ link_to(id, :'data-toggle' => 'collapse', :'data-target' => id, :class => 'collapsed button button-read-more') do
64
+ @content = content_tag(:p, t('kuhsaft.text_bricks.text_brick.read_more'), :class => 'read-more-text')
65
+ @content << content_tag(:p, t('kuhsaft.text_bricks.text_brick.read_less'), :class => 'read-less-text')
66
66
  end
67
67
  end
68
68
  end
@@ -7,11 +7,14 @@ module Kuhsaft
7
7
  scope :localized, lambda { where(:locale => I18n.locale) }
8
8
  default_scope order('position ASC').localized
9
9
 
10
+ serialize :display_styles, Array
11
+
10
12
  attr_accessible :locale,
11
13
  :position,
12
14
  :type,
13
15
  :brick_list_id,
14
- :brick_list_type
16
+ :brick_list_type,
17
+ :display_styles
15
18
 
16
19
  before_validation :set_locale
17
20
  before_validation :set_position
@@ -81,7 +84,7 @@ module Kuhsaft
81
84
 
82
85
  # Returns a css classname suitable for use in the frontend
83
86
  def to_style_class
84
- self.class.to_s.underscore.dasherize.gsub('/', '-')
87
+ ([self.class.to_s.underscore.dasherize.gsub('/', '-')] + self.display_styles).join(' ')
85
88
  end
86
89
 
87
90
  # Returns a unique DOM id suitable for use in the frontend
@@ -89,6 +92,11 @@ module Kuhsaft
89
92
  "#{self.class.to_s.underscore.dasherize.gsub('/', '-')}-#{id}"
90
93
  end
91
94
 
95
+ # return a list of css classnames that can be applied to the brick
96
+ def available_display_styles
97
+ []
98
+ end
99
+
92
100
  def backend_label(options = {})
93
101
  label = self.class.model_name.human
94
102
  if options[:parenthesis] == true
@@ -1,5 +1,5 @@
1
- .brick-item{ :id => brick.to_brick_item_id, :class => brick.to_style_class }
2
- = simple_form_for brick, :as => :brick, :url => kuhsaft.cms_brick_path(brick), :remote => true, :html => { :id => nil } do |form|
1
+ .brick-item{ :id => brick.to_brick_item_id, :class => brick.to_style_class, 'data-id' => brick.id }
2
+ = simple_form_for brick, :as => :brick, :url => kuhsaft.cms_brick_path(brick), :remote => !brick.uploader?, :html => { :id => nil } do |form|
3
3
  = form.hidden_field :position, :class => 'position-field'
4
4
  .brick-item-header.clearfix
5
5
  .pull-left
@@ -15,6 +15,14 @@
15
15
  = link_to kuhsaft.cms_brick_path(brick), :class => 'btn btn-small btn-danger', :confirm => t('kuhsaft.cms.bricks.brick_item.confirm'), :method => :delete, :remote => true do
16
16
  %i.icon-trash.icon-white
17
17
 
18
+ - # possible styles
19
+ - unless brick.available_display_styles.empty?
20
+ %a.btn.btn-small.dropdown-toggle{ 'data-toggle' => 'dropdown', 'href' => '#' }
21
+ %i.icon-tint
22
+ %ul.dropdown-menu.pull-right
23
+ %li
24
+ = form.input :display_styles, :collection => brick.available_display_styles, :as => :check_boxes
25
+
18
26
  - # addable child dropdown menu
19
27
  - if brick.respond_to?(:brick_list)
20
28
  = render 'brick_type_dropdown', :brick_list => brick
@@ -30,7 +38,6 @@
30
38
  %a.submit{ :href => '#', :class => 'btn btn-success btn-small ', 'data-title' => '', 'data-content' => t('.saved') }
31
39
  = t('.save')
32
40
 
33
-
34
41
  - if brick.renders_own_childs?
35
42
  .brick-item-childs
36
43
  = render brick.to_edit_childs_partial_path, :brick => brick
@@ -0,0 +1,3 @@
1
+ #bricks-sort-form
2
+ = form_for :bricks, :url => sort_cms_bricks_path, :remote => true do |f|
3
+ = f.hidden_field :ids
@@ -1 +1,6 @@
1
1
  $("##{@brick.brick_list.to_brick_list_id}.brick-list").append("#{j(render('kuhsaft/cms/bricks/brick_item', :brick => @brick))}").find("> .empty-state").remove()
2
+
3
+ - # need a reference to the new dom node, so a new query is needed here
4
+ var newlyInsertedBrick = $("##{@brick.to_brick_item_id}")
5
+ initSavePopover(newlyInsertedBrick)
6
+ initSubmitLinks(newlyInsertedBrick)
@@ -1,6 +1,6 @@
1
1
  $("##{@brick.to_brick_item_id}").replaceWith("#{j(render('kuhsaft/cms/bricks/brick_item', :brick => @brick))}")
2
2
 
3
- // need a reference to the new dom node, so a new query is needed here
3
+ - # need a reference to the new dom node, so a new query is needed here
4
4
  var newlyInsertedBrick = $("##{@brick.to_brick_item_id}")
5
5
  initSavePopover(newlyInsertedBrick)
6
6
  initSubmitLinks(newlyInsertedBrick)
@@ -26,3 +26,5 @@
26
26
  .btn-group
27
27
  = render 'brick_type_dropdown', :brick_list => @page
28
28
  = render 'kuhsaft/cms/bricks/brick_list', :brick_list => @page
29
+
30
+ = render 'kuhsaft/cms/bricks/sort_form'
@@ -1,8 +1,13 @@
1
1
  %h1= controller.request.host
2
2
  .actions.row
3
- .span9
3
+ .span5
4
4
  .span3
5
5
  = link_to kuhsaft.new_cms_page_path, :class => 'btn btn-primary' do
6
6
  %i.icon-plus-sign.icon-white
7
7
  = t('.add_page')
8
- = render :partial => 'branch', :locals => { :pages => @pages }
8
+ .span4
9
+
10
+ .row
11
+ .span8.pages-list
12
+ = render :partial => 'branch', :locals => { :pages => @pages }
13
+ .span4
@@ -14,8 +14,8 @@
14
14
 
15
15
  #toolbar
16
16
  .container.cms
17
- .row-fluid
18
- .span-12
17
+ .row
18
+ .span12
19
19
  = render 'content_language_switch'
20
20
  = render 'flash', :flash => flash
21
21
  = yield
@@ -1,7 +1,10 @@
1
1
  Kuhsaft::Engine.routes.draw do
2
2
  namespace :cms do
3
3
  resources :pages, :except => :show
4
- resources :bricks, :except => [:new, :edit, :index]
4
+ resources :bricks, :except => [:new, :edit, :index] do
5
+ post :sort, :on => :collection
6
+ end
7
+
5
8
  resources :assets
6
9
  root :to => 'pages#index'
7
10
  end
@@ -0,0 +1,5 @@
1
+ class AddDisplayStylesToBricks < ActiveRecord::Migration
2
+ def change
3
+ add_column :kuhsaft_bricks, :display_styles, :text
4
+ end
5
+ end
@@ -82,5 +82,9 @@ module Kuhsaft
82
82
  @brick_types ||= Kuhsaft::BrickTypeFilter.new(self)
83
83
  end
84
84
 
85
+ def uploader?
86
+ self.class.ancestors.include? CarrierWave::Mount::Extension
87
+ end
88
+
85
89
  end
86
90
  end
@@ -1,3 +1,3 @@
1
1
  module Kuhsaft
2
- VERSION = "1.2.4"
2
+ VERSION = "1.2.5"
3
3
  end
@@ -60,6 +60,12 @@ module Dummy
60
60
 
61
61
  # Version of your assets, change this if you want to expire all your assets
62
62
  config.assets.version = '1.0'
63
+
64
+ config.to_prepare do
65
+ Kuhsaft::Engine.configure do
66
+ config.image_sizes.build_defaults! # creates 960x540 and 320x180 sizes
67
+ end
68
+ end
63
69
  end
64
70
  end
65
71
 
@@ -122,4 +122,10 @@ describe Kuhsaft::Brick do
122
122
  brick.backend_label(:parenthesis => true).should == '(Text)'
123
123
  end
124
124
  end
125
+
126
+ describe '#uploader?' do
127
+ it 'returns false' do
128
+ brick.uploader?.should be_false
129
+ end
130
+ end
125
131
  end
@@ -39,4 +39,10 @@ describe Kuhsaft::ImageBrick do
39
39
  image_brick.user_can_add_childs?.should be_false
40
40
  end
41
41
  end
42
+
43
+ describe '#uploader?' do
44
+ it 'returns true' do
45
+ image_brick.uploader?.should be_true
46
+ end
47
+ end
42
48
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kuhsaft
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 1.2.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-02-27 00:00:00.000000000 Z
14
+ date: 2013-03-01 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rspec
@@ -367,6 +367,7 @@ files:
367
367
  - app/views/kuhsaft/cms/assets/new.html.haml
368
368
  - app/views/kuhsaft/cms/bricks/_brick_item.html.haml
369
369
  - app/views/kuhsaft/cms/bricks/_brick_list.html.haml
370
+ - app/views/kuhsaft/cms/bricks/_sort_form.html.haml
370
371
  - app/views/kuhsaft/cms/bricks/create.js.haml
371
372
  - app/views/kuhsaft/cms/bricks/destroy.js.haml
372
373
  - app/views/kuhsaft/cms/bricks/update.js.haml
@@ -427,6 +428,7 @@ files:
427
428
  - db/migrate/06_add_template_name_to_kuhsaft_bricks.rb
428
429
  - db/migrate/07_add_default_value_to_brick_type_enabled.rb
429
430
  - db/migrate/20130206141601_remove_cms_admin.rb
431
+ - db/migrate/8_add_display_styles_to_bricks.rb
430
432
  - db/seeds.rb
431
433
  - lib/generators/kuhsaft/translations/add_generator.rb
432
434
  - lib/kuhsaft/brick_list.rb
@@ -514,7 +516,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
514
516
  version: '0'
515
517
  segments:
516
518
  - 0
517
- hash: 414492348047311349
519
+ hash: 2608277375441050996
518
520
  required_rubygems_version: !ruby/object:Gem::Requirement
519
521
  none: false
520
522
  requirements:
@@ -523,7 +525,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
523
525
  version: '0'
524
526
  segments:
525
527
  - 0
526
- hash: 414492348047311349
528
+ hash: 2608277375441050996
527
529
  requirements: []
528
530
  rubyforge_project: kuhsaft
529
531
  rubygems_version: 1.8.24