kilt-cms 0.9.13 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.rdoc +3 -5
- data/app/controllers/kilt/kilt_controller.rb +1 -1
- data/app/views/kilt/form/{boolean.html.erb → _boolean.html.erb} +0 -0
- data/app/views/kilt/form/{datetime.html.erb → _datetime.html.erb} +0 -0
- data/app/views/kilt/form/{file.html.erb → _file.html.erb} +1 -1
- data/app/views/kilt/form/{html.html.erb → _html.html.erb} +0 -0
- data/app/views/kilt/form/{image.html.erb → _image.html.erb} +1 -1
- data/app/views/kilt/form/{longtext.html.erb → _longtext.html.erb} +0 -0
- data/app/views/kilt/form/{number.html.erb → _number.html.erb} +0 -0
- data/app/views/kilt/form/{select_one.html.erb → _select_one.html.erb} +0 -0
- data/app/views/kilt/form/{text.html.erb → _text.html.erb} +0 -0
- data/app/views/kilt/form/{vimeo.html.erb → _vimeo.html.erb} +0 -0
- data/app/views/kilt/form/{youtube.html.erb → _youtube.html.erb} +0 -0
- data/app/views/kilt/kilt/_form.html.erb +12 -10
- data/app/views/kilt/kilt/edit.html.erb +1 -1
- data/app/views/kilt/kilt/index.html.erb +3 -2
- data/app/views/kilt/kilt/list.html.erb +6 -9
- data/app/views/kilt/kilt/new.html.erb +1 -1
- data/app/views/layouts/kilt/cms/_menu.html.erb +2 -6
- data/lib/generators/kilt/backend_generator.rb +28 -6
- data/lib/generators/kilt/templates/backend/create_kilt_objects.rb +13 -0
- data/lib/generators/kilt/templates/backend/creds.yml.example +10 -5
- data/lib/generators/kilt/templates/backend/creds.yml.rethinkdb.example +22 -0
- data/lib/kilt.rb +34 -54
- data/lib/kilt/base.rb +3 -2
- data/lib/kilt/db/active_record.rb +50 -0
- data/lib/kilt/db/rethink_db.rb +108 -0
- data/lib/kilt/form.rb +7 -5
- data/lib/kilt/formatting.rb +39 -0
- data/lib/kilt/object.rb +32 -31
- data/lib/kilt/utils.rb +32 -39
- data/lib/kilt_object.rb +3 -0
- data/test/dummy/config/application.rb +1 -1
- data/test/dummy/config/database.yml +5 -0
- data/test/dummy/config/initializers/kilt.rb +1 -1
- data/test/dummy/config/kilt/config.yml +4 -13
- data/test/dummy/config/kilt/creds.yml +16 -11
- data/test/dummy/config/kilt/creds.yml.rethinkdb.example +22 -0
- data/test/dummy/config/routes.rb +1 -1
- data/test/dummy/db/migrate/20140519110428_create_kilt_objects.rb +13 -0
- data/test/dummy/db/schema.rb +29 -0
- data/test/dummy/log/development.log +551 -0
- data/test/dummy/public/uploads/image/timbo.jpg +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/18837248cb3274df9b7c6b0a5dcd56a5 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/20dffc9385ea740ceca470ee4e4b2197 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/23733156ea27da67211ba7ff763d76f0 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/3148655edeef1c319d57d0f9570acfd5 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/32ab48c63ad3bb6ddc1f419e51adb5db +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/36715e644093cfcb33ac795f3c9d66fe +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/36f9a7f6f43adb582ac6eec43b58eb30 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/3d8ca1585ee95c5efb388645d66cf377 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/413be9c73d25c7febe933f4619da7cf8 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4a935342c0113b534ad7622234965544 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4b5c4a1edd3823a6a6c39e06b6eb230a +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4c5736bf0bd429296d1a32930364897e +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4f26158b7a804a3e3c47ce0ceff2798c +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/542fc810f9cd36e7bed9a3e5e9670995 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/56f1e7d57d31bf3315e1e33732d57faa +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/5bea4c2d87ec725262213ed51575b485 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/6b6e86e81f5e8f80bb2b3d1e8f7ed7f3 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/6c2ddc22c04321c269de383e37cb519b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/7035e5c60f5da3b7fc12c472677483d0 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/704c682957c2beb38a1927ddb66cc557 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/74b6c3e00222b8bf31b0ecf50fcb0d38 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/91021bdb7ebb3d4f6fdf4e49909d4c07 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/914095efd3b33401a7f29f9fb05d72d6 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/9dd98bca318fb820a8451cafce020588 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/9f2c00a36b5b8c713a797b508c778a65 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/a88ab4e49bb7203b8e0586c38efdd2b0 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/acfc15d25fde8b933b06c91324755751 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/c0671678b70011547b80da0669d031cc +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/d6973c1d43f8ca41b98a6b640fda2616 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/dc676330961fd22be77c48cb77ec065f +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/ddc29f2c13cd99d017fd526b61dcb951 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/de45247cb814cafe20e9e46c79e470fe +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/df0b7c3ac590a286561806e813c2974f +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/dfa8b85e3c1273b7e69839e4e607c3e1 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/e22d705d0c889ec4837f183a9beec0f3 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/e3a4ad3549e1e57d03698a36daeff406 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/ef7c8ce46dfc9e9087ce84dbdfdd0011 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f4b5dd06a6113950c0f481cbc5a31a66 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/data/meta_request/1c3d4a4b-d7e1-4126-8bfc-572acbc2f675.json +1 -0
- data/test/dummy/tmp/data/meta_request/449ff78e-30d2-4cc5-bbb7-3397d04a4c46.json +1 -0
- data/test/dummy/tmp/data/meta_request/5974cfb9-99bd-4d5c-a4e1-6e352ecd2dd8.json +1 -0
- data/test/dummy/tmp/data/meta_request/960de12b-b1c5-4d44-937b-e3d8c00d682c.json +1 -0
- data/test/dummy/tmp/data/meta_request/9df9ad77-1b70-4fb7-ad18-f31f28c60c6c.json +1 -0
- data/test/dummy/tmp/data/meta_request/a5374758-4e16-487a-ab11-9a69a1abed2e.json +1 -0
- data/test/dummy/tmp/data/meta_request/a65d97b2-df1f-445e-99d5-615c4db5c4e1.json +1 -0
- data/test/dummy/tmp/data/meta_request/b3693c6f-23cd-4afe-ae82-38078eaa643a.json +1 -0
- data/test/dummy/tmp/data/meta_request/daa1c80a-bad3-4bc1-8f67-d586979cbedc.json +1 -0
- data/test/dummy/tmp/data/meta_request/e2e7621f-08e5-46dd-83c2-b87eb6d5fd45.json +1 -0
- data/test/empty.sqlite3 +0 -0
- data/test/generators/kilt/backend_generator_spec.rb +70 -0
- data/test/kilt/form_spec.rb +40 -51
- data/test/kilt/formatting_spec.rb +66 -0
- data/test/kilt/object_spec.rb +204 -0
- data/test/kilt/utils_spec.rb +147 -0
- data/test/kilt_object_spec.rb +12 -0
- data/test/kilt_spec.rb +422 -0
- data/test/minitest_helper.rb +58 -0
- metadata +164 -66
- data/test/dummy/tmp/data/meta_request/191f094a-5e87-4654-bc80-5acb51d3f903.json +0 -1
- data/test/dummy/tmp/data/meta_request/1eb9499d-2e84-47df-ac0a-da308031aa3a.json +0 -1
- data/test/dummy/tmp/data/meta_request/300cabd2-6e51-4b1b-ab55-a072049c2a0f.json +0 -1
- data/test/dummy/tmp/data/meta_request/3ec7ea74-e7a7-4f4d-9434-e08edfc12b8a.json +0 -1
- data/test/dummy/tmp/data/meta_request/5bb81411-321e-4cba-9ffa-87fcd8105ef4.json +0 -1
- data/test/dummy/tmp/data/meta_request/9d6e10c1-5b14-4199-852e-9f1e97132b8f.json +0 -1
- data/test/dummy/tmp/data/meta_request/a6403ed9-21f1-4a00-9725-4a1c544214f6.json +0 -1
- data/test/dummy/tmp/data/meta_request/b4487e0b-0a08-40a3-a364-e715e6765631.json +0 -1
- data/test/dummy/tmp/data/meta_request/d399f913-d3a5-4de3-b012-848377a702fc.json +0 -1
- data/test/dummy/tmp/data/meta_request/dcf95267-1855-4062-85c8-e880f8d62443.json +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92e36981513be1d52296ed4d4321e194a104c4dc
|
4
|
+
data.tar.gz: a6d90b7b31ef3246fa406a754dec05943469c030
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4ab8a4e06b2a8c2b979040006f8d39557e1c091b9521e7293ee9d8bce710b7e6b9e3a1c84a29c6173cb05f1220ebbf0cc9cea9be12be35df0231c23fda782f4
|
7
|
+
data.tar.gz: 7a13dd0365393f397a46c328f40f77c0f416f4f3fd04662ebe1d55fa96f975492b7da31c405a4f41e560d282973c6bb2b54229fb5395859439022107360c253c
|
data/README.rdoc
CHANGED
@@ -25,13 +25,11 @@ Note: We're trying to find a way around that last step, but for now we're just e
|
|
25
25
|
- Run the Kilt generator:
|
26
26
|
|
27
27
|
$ rails g kilt:install
|
28
|
-
|
29
|
-
- Create a creds file:
|
30
28
|
|
31
|
-
|
29
|
+
If you would like to use RethinkDB as your datastore, you'll need to copy the rethinkdb example. Add your database info to the creds.yml. You should have a RethinkDB set up and running already.
|
30
|
+
|
31
|
+
$ mv config/kilt/creds.yml.rethinkdb.example config/kilt/creds.yml
|
32
32
|
|
33
|
-
- Add your database info to the creds.yml. You should have a RethinkDB set up and running already.
|
34
|
-
|
35
33
|
- If you want to use S3 for your image and file uploads, add your S3 info to creds.yml. Also set the following in your config.yml:
|
36
34
|
|
37
35
|
storage:
|
@@ -114,7 +114,7 @@ module Kilt
|
|
114
114
|
private
|
115
115
|
|
116
116
|
def ensure_config
|
117
|
-
|
117
|
+
unless Kilt::Utils.config_is_valid?
|
118
118
|
lines = []
|
119
119
|
lines << '<pre>'
|
120
120
|
lines << 'The Kilt gem has been installed, but you haven\'t configured it yet.'
|
File without changes
|
File without changes
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
<% if object["#{field_name}"] && object["#{field_name}"] != '' %>
|
5
5
|
<div class="filename">
|
6
|
-
<span><%= link_to object["#{field_name}"], Kilt::Utils.download_location(
|
6
|
+
<span><%= link_to object["#{field_name}"], Kilt::Utils.download_location('file', object["#{field_name}"]), :target => '_blank' %>
|
7
7
|
<a class="button delete <% if !object["#{field_name}"] || object["#{field_name}"] == "" %>hidden<% end %>">Reset/remove file</a></span>
|
8
8
|
</div>
|
9
9
|
<% end %>
|
File without changes
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<% if object["#{field_name}"] && object["#{field_name}"] != '' %>
|
5
5
|
<div id="image-container-<%= index %>">
|
6
6
|
<div id="image-<%= index %>">
|
7
|
-
<%= image_tag Kilt::Utils.download_location(
|
7
|
+
<%= image_tag Kilt::Utils.download_location('image', object["#{field_name}"]), :width => '100%' %>
|
8
8
|
</div>
|
9
9
|
<div>
|
10
10
|
<a id="image-reset-<%= index%>" class="button delete <% if !object["#{field_name}"] || object["#{field_name}"] == "" %>hidden<% end %>">Reset/remove image</a>
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -2,18 +2,15 @@
|
|
2
2
|
<div class="wr">
|
3
3
|
|
4
4
|
<%
|
5
|
-
|
6
|
-
|
7
|
-
else
|
8
|
-
name = @type.pluralize.capitalize
|
9
|
-
end
|
5
|
+
singular = Kilt::Formatting.singular_name_of @type
|
6
|
+
plural = Kilt::Formatting.plural_name_of @type
|
10
7
|
%>
|
11
8
|
|
12
|
-
<h2><%= @object['name'] %> <small><%=
|
9
|
+
<h2><%= @object['name'] %> <small><%= singular %></small></h2>
|
13
10
|
|
14
11
|
<div class="page-actions">
|
15
|
-
<%= link_to "← Back to #{
|
16
|
-
<%= link_to "New #{
|
12
|
+
<%= link_to "← Back to #{plural}", list_path(@type), :class => 'button back' %>
|
13
|
+
<%= link_to "New #{singular}", new_object_path(@type), :class => 'button back' if !@object.empty? %>
|
17
14
|
</div>
|
18
15
|
|
19
16
|
<% if flash[:error] -%>
|
@@ -27,7 +24,12 @@
|
|
27
24
|
<%= form_tag @path, :method => "post", :multipart => true do %>
|
28
25
|
|
29
26
|
<% @object.fields.each_with_index do |(key, value), index| %>
|
30
|
-
<%= Kilt::Form.
|
27
|
+
<%= Kilt::Form.render_field(self, {
|
28
|
+
key: key,
|
29
|
+
value: value,
|
30
|
+
object: @object,
|
31
|
+
index: index
|
32
|
+
} ) %>
|
31
33
|
<% end %>
|
32
34
|
|
33
35
|
<div class="form-input actions">
|
@@ -36,4 +38,4 @@
|
|
36
38
|
|
37
39
|
<% end%>
|
38
40
|
|
39
|
-
</div>
|
41
|
+
</div>
|
@@ -1,2 +1,2 @@
|
|
1
1
|
<% @path = update_object_path(@type.pluralize, @slug) %>
|
2
|
-
<%= render :partial => 'form' %>
|
2
|
+
<%= render :partial => 'form' %>
|
@@ -2,8 +2,9 @@
|
|
2
2
|
<h2>Dashboard</h2>
|
3
3
|
|
4
4
|
<ul class="object-list">
|
5
|
-
<% @types.each do |type,
|
5
|
+
<% @types.each do |type, _| %>
|
6
|
+
<% name = Kilt::Formatting.plural_name_of(type) %>
|
6
7
|
<li><%= link_to name, list_path(type.pluralize) %></li>
|
7
8
|
<% end %>
|
8
9
|
</ul>
|
9
|
-
</div>
|
10
|
+
</div>
|
@@ -1,17 +1,14 @@
|
|
1
1
|
<div class="wr">
|
2
2
|
|
3
3
|
<%
|
4
|
-
|
5
|
-
|
6
|
-
else
|
7
|
-
name = @type.pluralize.capitalize
|
8
|
-
end
|
4
|
+
singular = Kilt::Formatting.singular_name_of @type
|
5
|
+
plural = Kilt::Formatting.plural_name_of @type
|
9
6
|
%>
|
10
7
|
|
11
|
-
<h2><%=
|
8
|
+
<h2><%= plural %></h2>
|
12
9
|
|
13
10
|
<div class="page-actions">
|
14
|
-
<%= link_to "New #{
|
11
|
+
<%= link_to "New #{singular}", new_object_path(@type.singularize), :class => 'button' %>
|
15
12
|
</div>
|
16
13
|
|
17
14
|
<!-- todo: search by title -->
|
@@ -26,7 +23,7 @@
|
|
26
23
|
|
27
24
|
<% if @objects.empty? %>
|
28
25
|
|
29
|
-
No <%=
|
26
|
+
No <%= plural %> found.
|
30
27
|
|
31
28
|
<% else %>
|
32
29
|
|
@@ -72,4 +69,4 @@
|
|
72
69
|
|
73
70
|
<% end %>
|
74
71
|
|
75
|
-
</div>
|
72
|
+
</div>
|
@@ -1,2 +1,2 @@
|
|
1
1
|
<% @path = create_object_path(@type.pluralize) %>
|
2
|
-
<%= render :partial => 'form' %>
|
2
|
+
<%= render :partial => 'form' %>
|
@@ -4,13 +4,9 @@
|
|
4
4
|
<a class="button small dashboard" href="<%= kilt_engine.root_path %>">Dashboard</a>
|
5
5
|
<% Kilt.types.each do |type| %>
|
6
6
|
<%
|
7
|
-
|
8
|
-
name = Kilt.send(type).name
|
9
|
-
else
|
10
|
-
name = type.pluralize.capitalize
|
11
|
-
end
|
7
|
+
plural = Kilt::Formatting.plural_name_of type
|
12
8
|
%>
|
13
|
-
<%= link_to
|
9
|
+
<%= link_to plural, list_path(type.pluralize), class: "button small dashboard" %>
|
14
10
|
<% end %>
|
15
11
|
</div>
|
16
12
|
</header>
|
@@ -7,14 +7,36 @@ module Kilt
|
|
7
7
|
source_root File.expand_path("../templates/backend", __FILE__)
|
8
8
|
|
9
9
|
def generate
|
10
|
-
|
11
|
-
|
10
|
+
add_the_config_file
|
11
|
+
add_the_credential_file_examples
|
12
|
+
add_the_database_migration_file
|
13
|
+
add_the_kilt_routes
|
14
|
+
add_the_initializer
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def add_the_config_file
|
12
20
|
template 'config.yml.erb', Rails.root.join('config', 'kilt', 'config.yml')
|
13
|
-
|
21
|
+
end
|
22
|
+
|
23
|
+
def add_the_credential_file_examples
|
24
|
+
copy_file 'creds.yml.example', Rails.root.join('config', 'kilt', 'creds.yml')
|
25
|
+
copy_file 'creds.yml.rethinkdb.example', Rails.root.join('config', 'kilt', 'creds.yml.rethinkdb.example')
|
26
|
+
end
|
27
|
+
|
28
|
+
def add_the_database_migration_file
|
29
|
+
copy_file 'create_kilt_objects.rb', Rails.root.join('db', 'migrate', Time.now.strftime("%Y%m%d%H%M%S") + "_create_kilt_objects.rb")
|
30
|
+
end
|
31
|
+
|
32
|
+
def add_the_kilt_routes
|
33
|
+
inject_into_file Rails.root.join('config', 'routes.rb'), "\n\tmount Kilt::Engine => '/admin', as: 'kilt_engine'\n", :after => ".routes.draw do\n"
|
34
|
+
end
|
35
|
+
|
36
|
+
def add_the_initializer
|
14
37
|
copy_file 'kilt.rb', Rails.root.join('config', 'initializers', 'kilt.rb')
|
15
|
-
inject_into_file Rails.root.join('config', 'routes.rb'), "\n\tmount Kilt::Engine => '/admin', as: 'kilt_engine'\n", :after => "#{Rails.application.class.parent_name.camelize}::Application.routes.draw do\n"
|
16
|
-
|
17
38
|
end
|
39
|
+
|
18
40
|
end
|
19
41
|
end
|
20
|
-
end
|
42
|
+
end
|
@@ -1,11 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
test:
|
2
|
+
db:
|
3
|
+
type: active_record
|
4
|
+
development:
|
5
|
+
db:
|
6
|
+
type: active_record
|
7
|
+
production:
|
8
|
+
db:
|
9
|
+
type: active_record
|
5
10
|
s3:
|
6
11
|
key: <S3 key>
|
7
12
|
secret: <S3 secret>
|
8
13
|
bucket: <S3 bucket>
|
9
14
|
auth:
|
10
15
|
username: <Username>
|
11
|
-
password: <Password>
|
16
|
+
password: <Password>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
test:
|
2
|
+
db:
|
3
|
+
host: 127.0.0.1
|
4
|
+
port: 28015
|
5
|
+
db: my_app_test
|
6
|
+
development:
|
7
|
+
db:
|
8
|
+
host: 127.0.0.1
|
9
|
+
port: 28015
|
10
|
+
db: my_app_development
|
11
|
+
production:
|
12
|
+
db:
|
13
|
+
host: ENV['KILT_HOST']
|
14
|
+
port: ENV['KILT_PORT']
|
15
|
+
db: ENV['KILT_DB']
|
16
|
+
s3:
|
17
|
+
key: <S3 key>
|
18
|
+
secret: <S3 secret>
|
19
|
+
bucket: <S3 bucket>
|
20
|
+
auth:
|
21
|
+
username: <Username>
|
22
|
+
password: <Password>
|
data/lib/kilt.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "kilt/base"
|
2
|
+
require_relative "kilt_object"
|
2
3
|
|
3
4
|
# Include the Rethink shortcut module, which will among other things instantiate a new
|
4
5
|
# Rethink object (as "r") if needed
|
@@ -38,20 +39,11 @@ module Kilt
|
|
38
39
|
# Example: Kilt.create(object)
|
39
40
|
def self.create(object)
|
40
41
|
object['created_at'] = object['updated_at'] = Time.now
|
41
|
-
object['unique_id']
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
if results.to_a.length > 0
|
47
|
-
object['slug'] = "#{object['slug']}-#{(Time.now.to_f * 1000).to_i}"
|
48
|
-
end
|
49
|
-
|
50
|
-
# Insert the record
|
51
|
-
r.db(Kilt.config.db.db).table('objects').insert(object.values).run
|
52
|
-
|
53
|
-
end
|
54
|
-
(result['errors'] == 0)
|
42
|
+
object['unique_id'] = "#{(Time.now.to_f * 1000).to_i}"
|
43
|
+
object['type'] = object.instance_eval { @type }
|
44
|
+
object['slug'] = slug_for object
|
45
|
+
|
46
|
+
Utils.database.create object
|
55
47
|
end
|
56
48
|
|
57
49
|
# Update an object
|
@@ -59,52 +51,25 @@ module Kilt
|
|
59
51
|
# Example: Kilt.update(object)
|
60
52
|
def self.update(slug, object)
|
61
53
|
object['updated_at'] = Time.now
|
62
|
-
|
63
|
-
|
64
|
-
# Keep the original slug handy
|
65
|
-
results = r.db(Kilt.config.db.db).table('objects').filter({'slug' => "#{slug}"}).limit(1).run
|
66
|
-
original = results.to_a.first['unique_id']
|
67
|
-
|
68
|
-
# Check for slug uniqueness
|
69
|
-
results = r.db(Kilt.config.db.db).table('objects').filter({'slug' => "#{object['slug']}"}).run
|
70
|
-
if results
|
71
|
-
result = results.to_a.first
|
72
|
-
if result && result['unique_id'] != original
|
73
|
-
object['slug'] = "#{Kilt::Utils.slugify(object['name'])}-#{(Time.now.to_f * 1000).to_i}"
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
# Update the record
|
78
|
-
r.db(Kilt.config.db.db).table('objects').filter({'unique_id' => "#{original}"}).update(object.values).run
|
79
|
-
|
80
|
-
end
|
81
|
-
(result['errors'] == 0)
|
82
|
-
end
|
54
|
+
object['slug'] = slug_for object
|
83
55
|
|
56
|
+
Utils.database.update object
|
57
|
+
end
|
84
58
|
|
85
59
|
# Delete an object
|
86
60
|
# Returns: boolean
|
87
61
|
# Example: Kilt.delete('some-object')
|
88
62
|
def self.delete(slug)
|
89
|
-
|
90
|
-
r.db(Kilt.config.db.db).table('objects').filter({'slug' => "#{slug.to_s}"}).delete().run
|
91
|
-
end
|
92
|
-
(result['errors'] == 0)
|
63
|
+
Utils.database.delete slug
|
93
64
|
end
|
94
65
|
|
95
66
|
# Get the content for a specific object
|
96
67
|
# Returns: Kilt::Object instance
|
97
68
|
# Example: Kilt.object('big-event')
|
98
69
|
def self.get(slug)
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
end
|
103
|
-
|
104
|
-
result = values.to_a.first
|
105
|
-
|
106
|
-
# create an object and return it
|
107
|
-
Kilt::Object.new(result['type'], result)
|
70
|
+
result = Utils.database.find(slug)
|
71
|
+
result ? Kilt::Object.new(result['type'], result)
|
72
|
+
: nil
|
108
73
|
end
|
109
74
|
|
110
75
|
# Get a list of objects
|
@@ -112,13 +77,28 @@ module Kilt
|
|
112
77
|
# Example: Kilt.objects('events')
|
113
78
|
# Used directly or via method_missing
|
114
79
|
def self.get_collection(object_type)
|
115
|
-
|
116
|
-
|
117
|
-
|
80
|
+
results = Utils.database.find_all_by_type object_type
|
81
|
+
Kilt::ObjectCollection.new results
|
82
|
+
end
|
83
|
+
|
84
|
+
class << self
|
85
|
+
|
86
|
+
private
|
87
|
+
|
88
|
+
def slug_is_unique_for? slug, object
|
89
|
+
result = Utils.database.find(slug)
|
90
|
+
return true if result.nil?
|
91
|
+
|
92
|
+
"#{result['unique_id']}" == "#{object['unique_id']}"
|
118
93
|
end
|
119
|
-
|
120
|
-
|
121
|
-
|
94
|
+
|
95
|
+
def slug_for object
|
96
|
+
slug = object['slug'].to_s.strip == '' ? Utils.slugify(object['name'])
|
97
|
+
: "#{object['slug']}"
|
98
|
+
slug_is_unique_for?(slug, object) ? slug
|
99
|
+
: "#{slug}-#{(Time.now.to_f * 1000).to_i}"
|
100
|
+
end
|
101
|
+
|
122
102
|
end
|
123
103
|
|
124
104
|
end
|