xhive 1.0.7.pre → 1.0.8.pre

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
@@ -204,14 +204,27 @@ Create a new mapper record for the posts resources
204
204
  mapper = Xhive::Mapper.create(:resource => 'posts', :action => 'index', :page => posts_page)
205
205
  ```
206
206
 
207
+ Create a new mapper record for some specific post
208
+
209
+ ```
210
+ mapper = Xhive::Mapper.create(:resource => 'posts', :action => 'show', :key => '1', :page => posts_page)
211
+ ```
212
+
207
213
  From your posts controller, render the posts page
208
214
 
209
215
  ```
210
216
  class PostsController < ApplicationController
217
+ # This will render the page associated with the index action
211
218
  def index
212
219
  @posts = Post.limit(10)
213
220
  render_page_with :posts => @posts
214
221
  end
222
+
223
+ # This will render the page associated with the specific post
224
+ def show
225
+ @post = Post.find(params[:id])
226
+ render_page_with @post.id, :post => @post
227
+ end
215
228
  end
216
229
  ```
217
230
 
@@ -220,7 +233,6 @@ Using this feature you can let the designers implement the HTML/CSS to display t
220
233
  TODO
221
234
  ====
222
235
 
223
- * Implement the Image model
224
236
  * Remove as many dependencies as possible
225
237
  * Improve test coverage
226
238
 
Binary file
@@ -0,0 +1,11 @@
1
+ require_dependency "xhive/application_controller"
2
+
3
+ module Xhive
4
+ class ImagesController < ApplicationController
5
+ def show
6
+ @image = current_site.images.where(:image => "#{params[:id]}.#{params[:format]}").first
7
+ fail ActiveRecord::RecordNotFound unless @image.present?
8
+ redirect_to @image.image_url, :status => 301
9
+ end
10
+ end
11
+ end
@@ -8,8 +8,8 @@ module Xhive
8
8
  "<link href='#{xhive.stylesheets_path}' media='all' rel='stylesheet' type='text/css'/>".html_safe
9
9
  end
10
10
 
11
- def render_page_with(options={})
12
- page = current_site.mappers.page_for(controller_path, action_name)
11
+ def render_page_with(key = nil, options={})
12
+ page = current_site.mappers.page_for(controller_path, action_name, key)
13
13
  render :inline => page.presenter.render_content(options), :layout => true
14
14
  rescue
15
15
  render
@@ -0,0 +1,19 @@
1
+ require 'carrierwave'
2
+ require 'carrierwave/orm/activerecord'
3
+
4
+ module Xhive
5
+ class Image < ActiveRecord::Base
6
+ belongs_to :site
7
+
8
+ attr_accessible :image, :site_id, :title
9
+
10
+ validates :image, :presence => true
11
+ validates :site, :presence => true
12
+
13
+ mount_uploader :image, ImageUploader
14
+
15
+ def basename
16
+ File.basename(image.to_s)
17
+ end
18
+ end
19
+ end
@@ -10,8 +10,10 @@ module Xhive
10
10
  validates :site, :presence => true
11
11
  validates :page, :presence => true
12
12
 
13
- def self.page_for(resource, action)
14
- page = where(:resource => resource).where(:action => action).first.try(:page)
13
+ def self.page_for(resource, action, key = nil)
14
+ mapper = where(:resource => resource).where(:action => action)
15
+ mapper = mapper.where(:key => key) if key.present?
16
+ page = mapper.first.try(:page)
15
17
  fail ActiveRecord::RecordNotFound unless page.present?
16
18
  page
17
19
  end
@@ -5,6 +5,7 @@ module Xhive
5
5
  has_many :pages
6
6
  has_many :mappers
7
7
  has_many :stylesheets
8
+ has_many :images
8
9
 
9
10
  belongs_to :home_page, :class_name => 'Page'
10
11
 
@@ -0,0 +1,35 @@
1
+ require 'carrierwave'
2
+
3
+ module Xhive
4
+ class ImageUploader < ::CarrierWave::Uploader::Base
5
+ include ::CarrierWave::MiniMagick
6
+
7
+ include ::Sprockets::Helpers::RailsHelper
8
+ include ::Sprockets::Helpers::IsolatedHelper
9
+
10
+ def store_dir
11
+ "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
12
+ end
13
+
14
+ def default_url
15
+ asset_path "fallback/" + [version_name, "default.png"].compact.join('_')
16
+ end
17
+
18
+ def url
19
+ super.gsub('+', '%2B')
20
+ end
21
+
22
+ version :thumb do
23
+ process :resize_to_limit => [144, 94]
24
+ end
25
+
26
+ def extension_white_list
27
+ %w(jpg jpeg gif png)
28
+ end
29
+
30
+ # For heroku read-only filesystem
31
+ def cache_dir
32
+ "#{Rails.root}/tmp/uploads"
33
+ end
34
+ end
35
+ end
data/config/routes.rb CHANGED
@@ -6,6 +6,7 @@ Xhive::Engine.routes.draw do
6
6
  get 'stylesheets/custom.css', :to => 'stylesheets#index', :as => :stylesheets, :format => :css
7
7
 
8
8
  resources :stylesheets, :only => :show, :format => :css
9
+ resources :images, :only => :show
9
10
 
10
11
  get 'widgets/*widget', :to => 'widgets#show'
11
12
 
@@ -0,0 +1,6 @@
1
+ class AddKeyToXhiveMappers < ActiveRecord::Migration
2
+ def change
3
+ add_column :xhive_mappers, :key, :string
4
+ add_index :xhive_mappers, [:site_id, :resource, :action, :key]
5
+ end
6
+ end
@@ -0,0 +1,12 @@
1
+ class CreateXhiveImages < ActiveRecord::Migration
2
+ def change
3
+ create_table :xhive_images do |t|
4
+ t.string :image
5
+ t.string :title
6
+ t.integer :site_id
7
+
8
+ t.timestamps
9
+ end
10
+ add_index :xhive_images, [:site_id, :image]
11
+ end
12
+ end
data/lib/xhive/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Xhive
2
- VERSION = "1.0.7.pre"
2
+ VERSION = "1.0.8.pre"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xhive
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7.pre
4
+ version: 1.0.8.pre
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-31 00:00:00.000000000 Z
12
+ date: 2012-11-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -107,6 +107,38 @@ dependencies:
107
107
  - - ~>
108
108
  - !ruby/object:Gem::Version
109
109
  version: 3.2.3
110
+ - !ruby/object:Gem::Dependency
111
+ name: carrierwave
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: mini_magick
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
110
142
  - !ruby/object:Gem::Dependency
111
143
  name: sqlite3
112
144
  requirement: !ruby/object:Gem::Requirement
@@ -155,6 +187,22 @@ dependencies:
155
187
  - - ! '>='
156
188
  - !ruby/object:Gem::Version
157
189
  version: '0'
190
+ - !ruby/object:Gem::Dependency
191
+ name: mocha
192
+ requirement: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ type: :development
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
158
206
  description: Simple Rails AJAX CMS
159
207
  email:
160
208
  - marcelo@frozeek.com
@@ -162,17 +210,20 @@ executables: []
162
210
  extensions: []
163
211
  extra_rdoc_files: []
164
212
  files:
213
+ - app/assets/images/xhive/default.png
165
214
  - app/assets/javascripts/xhive/application.js
166
215
  - app/assets/javascripts/xhive/loader.js.coffee
167
216
  - app/assets/javascripts/xhive/pages.js
168
217
  - app/assets/stylesheets/xhive/application.css
169
218
  - app/assets/stylesheets/xhive/pages.css
170
219
  - app/controllers/xhive/application_controller.rb
220
+ - app/controllers/xhive/images_controller.rb
171
221
  - app/controllers/xhive/pages_controller.rb
172
222
  - app/controllers/xhive/stylesheets_controller.rb
173
223
  - app/controllers/xhive/widgets_controller.rb
174
224
  - app/helpers/xhive/application_helper.rb
175
225
  - app/models/xhive/anonymous_user.rb
226
+ - app/models/xhive/image.rb
176
227
  - app/models/xhive/mapper.rb
177
228
  - app/models/xhive/page.rb
178
229
  - app/models/xhive/site.rb
@@ -181,6 +232,7 @@ files:
181
232
  - app/presenters/xhive/page_presenter.rb
182
233
  - app/presenters/xhive/stylesheet_presenter.rb
183
234
  - app/presenters/xhive/user_presenter.rb
235
+ - app/uploaders/xhive/image_uploader.rb
184
236
  - app/views/layouts/xhive/application.html.erb
185
237
  - app/views/xhive/pages/show.html.erb
186
238
  - config/routes.rb
@@ -191,6 +243,8 @@ files:
191
243
  - db/migrate/20121016224054_create_xhive_stylesheets.rb
192
244
  - db/migrate/20121016224326_add_slug_index_to_pages.rb
193
245
  - db/migrate/20121019185702_create_xhive_mappers.rb
246
+ - db/migrate/20121031192552_add_key_to_xhive_mappers.rb
247
+ - db/migrate/20121101124925_create_xhive_images.rb
194
248
  - lib/tasks/xhive_tasks.rake
195
249
  - lib/xhive/base_tag.rb
196
250
  - lib/xhive/controller.rb
@@ -223,7 +277,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
223
277
  version: '0'
224
278
  segments:
225
279
  - 0
226
- hash: 230345765792334857
280
+ hash: -363105832108409294
227
281
  required_rubygems_version: !ruby/object:Gem::Requirement
228
282
  none: false
229
283
  requirements: