brightcontent 2.1.5 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +88 -1
  3. data/VERSION +1 -1
  4. metadata +9 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 63c828218e98472278afe774745ba8ac6e708b21
4
- data.tar.gz: 581e8ed28905320b607820485eb65aecce8f305f
3
+ metadata.gz: 800182b4749990ccc8ef59573dbdf6fa6cc4093b
4
+ data.tar.gz: 484c9676dc21e37938f0c6b47b51f4e6acb88884
5
5
  SHA512:
6
- metadata.gz: c1511bf4722afabd1cb9a9cb21ce1566f81b3a04f08d9b36178162f831968dd81b125a547a7fc1c63d50d2380dd2ae28a4d5442b4f64b596c832aeb4e824c5e3
7
- data.tar.gz: bb6cba9a6eed2529dd8031fe9d01902615974978499a3898a458544d840aeb5330cfcd31808cda063dc0a38f0ccf902f28ba7c830d4f1a930deda8d1ec90c8ee
6
+ metadata.gz: b2abef9adc1716146aea208e4c5fbc639b3065c90d401f0d772177272e37bd71d5306a5983d20c25f95e2f3b18abdf080694dbca0688f51b9e5debeed3d5d712
7
+ data.tar.gz: 7162bc6bc2ede2f89d113d63f2b836570878958369f98943240212b221b9280412818a88012d7dd7c3fa4a87d2bfe233b3ed03f66c67c8ff25428e8384430dc6
data/README.md CHANGED
@@ -11,7 +11,7 @@ Brightcontent, yet another rails CMS / admin panel
11
11
  * No standard 'cms-modules', we hate those, making custom is easy enough
12
12
  * Built in the rails way, use your normals models, only controllers and views are provided
13
13
  * Only exception: Page model is provided with tree structure, sorting, hidden and pretty urls like `/services/cleaning/houses`
14
- * Rails 4 only
14
+ * Rails 4 only (currently >= 4.2 is not supported)
15
15
  * Strong Parameters support
16
16
 
17
17
  ![Brightcontent preview](doc/browser.jpg)
@@ -48,6 +48,93 @@ To add the resource to brightcontent run:
48
48
 
49
49
  Gratz! Projects can now be controlled with Brightcontent.
50
50
 
51
+ Filters
52
+ -------
53
+
54
+ Using `filter_fields` you may define filters for your index pages:
55
+
56
+ ```ruby
57
+ class BlogsController < Brightcontent::BaseController
58
+ filter_fields :author, :name
59
+ end
60
+ ```
61
+
62
+ The above will render two filters on the blogs index page. Blog belongs to Author, therefore by default the filter is displayed as a drop-down list containing all authors that have blogs. The name-filter is displayed as a drop-down list containing all values for the `name` attribute found in the blogs table.
63
+
64
+ ### Options
65
+
66
+ In order to control the way filters are displayed and how they behave you can supply options:
67
+
68
+ ```ruby
69
+ # Supplying options:
70
+ filter_fields author: { ... }, name: { ... }
71
+
72
+ # Combining filters without options and filters with options:
73
+ filter_fields :author, name: { ... }
74
+ ```
75
+
76
+ Basically all options are delegated to `SimpleForm::FormBuilder#input`, such as `:as`, `:input_html`, and `:label_method`. Refer to [Simple Form's documentation](http://www.rubydoc.info/github/plataformatec/simple_form/master/SimpleForm/FormBuilder#input-instance_method) for more information.
77
+
78
+ #### Other options
79
+
80
+ ##### <tt>:collection</tt>
81
+
82
+ Extends SimpleForm's `:collection` option. It also accepts a Proc, or method name as a symbol. It defaults to either a list of all existing values for the corresponding attribute or a list of all associated records in case of a belongs-to relationship.
83
+
84
+ ##### <tt>:predicate</tt>
85
+
86
+ Allows for specifying the Ransack search predicate to be used. Set it to `false` to avoid a predicate. Defaults to "cont" (contains) for string type filters (`:string` or `:search`) and to "eq" (equals) for all other types. It defaults to `false` if the field name refers to [a ransackable scope](https://github.com/activerecord-hackery/ransack#using-scopesclass-methods). For more information refer to [Ransack's documentation](https://github.com/activerecord-hackery/ransack/wiki/Basic-Searching).
87
+
88
+ ### Examples
89
+
90
+ ```ruby
91
+ class BlogsController < Brightcontent::BaseController
92
+ # Two default drop-down list filters:
93
+ filter_fields :name, :author
94
+
95
+ # Free form text filter, returns all blogs where name contains given query:
96
+ filter_fields name: { as: :string, predicate: "cont" }
97
+
98
+ # Same as above:
99
+ filter_fields name: { as: :string }
100
+
101
+ # Customized label:
102
+ filter_fields author: { label: "Written by" }
103
+
104
+ # Select filter with custom options:
105
+ filter_fields name: { collection: ["Game reviews", "Programming tips", "Arthur's blog"] }
106
+
107
+ # Belongs-to filter with custom options:
108
+ filter_fields author: { collection: ->{ Author.order(:name) }, label_method: :display_name }
109
+
110
+ # Or by means of a controller method:
111
+ filter_fields author: { collection: :published_authors }
112
+
113
+ # Or even a fully customized filter, using a fictitious custom SimpleForm input field:
114
+ filter_fields author: { as: :remote_select, url: "/authors.json?order=name" }
115
+
116
+ # Filter by start date:
117
+ filter_fields created_at: { as: :date, predicate: "gteq", label: "Posted since" }
118
+
119
+ # Filter by scope (see definition of Blog below):
120
+ filter_fields exclude_inactive: { as: :select, collection: [["Yes", true], ["No", false]] }
121
+
122
+ private
123
+
124
+ def published_authors
125
+ Author.published
126
+ end
127
+ end
128
+
129
+ def Blog < ActiveRecord::Base
130
+ scope :exclude_inactive, ->{ where(active: true) }
131
+
132
+ def self.ransackable_scopes(auth_object = nil)
133
+ [:exclude_inactive]
134
+ end
135
+ end
136
+ ```
137
+
51
138
  Pages
52
139
  -----
53
140
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.1.5
1
+ 2.2.0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brightcontent
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.5
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Developers at Brightin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-18 00:00:00.000000000 Z
11
+ date: 2015-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: brightcontent-core
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 2.1.5
19
+ version: 2.2.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 2.1.5
26
+ version: 2.2.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: brightcontent-pages
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 2.1.5
33
+ version: 2.2.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: 2.1.5
40
+ version: 2.2.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: brightcontent-attachments
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 2.1.5
47
+ version: 2.2.0
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.1.5
54
+ version: 2.2.0
55
55
  description: Brightcontent, yet another Rails CMS / admin panel
56
56
  email: developers@brightin.nl
57
57
  executables: []
@@ -80,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
80
  version: '0'
81
81
  requirements: []
82
82
  rubyforge_project:
83
- rubygems_version: 2.2.2
83
+ rubygems_version: 2.4.5
84
84
  signing_key:
85
85
  specification_version: 4
86
86
  summary: Brightcontent gem