refinerycms-multisite 0.0.1
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/.gitignore +96 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/Rakefile +2 -0
- data/app/controllers/admin/sites_controller.rb +10 -0
- data/app/controllers/application_controller.rb +8 -0
- data/app/helpers/admin/sites_helper.rb +10 -0
- data/app/helpers/application_helper.rb +2 -0
- data/app/models/hostname.rb +4 -0
- data/app/models/site.rb +34 -0
- data/app/views/admin/sites/_actions.html.erb +15 -0
- data/app/views/admin/sites/_form.html.erb +51 -0
- data/app/views/admin/sites/_hostname_fields.html.erb +5 -0
- data/app/views/admin/sites/_records.html.erb +22 -0
- data/app/views/admin/sites/_site.html.erb +20 -0
- data/app/views/admin/sites/_sites.html.erb +5 -0
- data/app/views/admin/sites/edit.html.erb +1 -0
- data/app/views/admin/sites/index.html.erb +15 -0
- data/app/views/admin/sites/new.html.erb +1 -0
- data/app/views/layouts/application.html.haml +20 -0
- data/app/views/shared/_footer.html.erb +4 -0
- data/app/views/shared/_header.html.erb +15 -0
- data/app/views/sitemap/index.xml.builder +22 -0
- data/config/locales/de.yml +11 -0
- data/config/locales/en.yml +13 -0
- data/config/routes.rb +9 -0
- data/db/migrate/20110418095543_create_sites.rb +14 -0
- data/db/migrate/20110418095626_create_hostnames.rb +13 -0
- data/db/seeds.rb +12 -0
- data/lib/generators/refinerycms_sites_generator.rb +8 -0
- data/lib/refinerycms-multisite/version.rb +5 -0
- data/lib/refinerycms-multisite.rb +22 -0
- data/lib/tasks/.gitkeep +0 -0
- data/readme.md +0 -0
- data/refinerycms-multisite.gemspec +25 -0
- data/spec/acceptance/acceptance_helper.rb +5 -0
- data/spec/acceptance/support/helpers.rb +5 -0
- data/spec/acceptance/support/paths.rb +9 -0
- data/spec/controllers/admin/site_controller_spec.rb +41 -0
- data/spec/factories.rb +13 -0
- data/spec/models/factory_girl_spec.rb +14 -0
- data/spec/models/hostname_spec.rb +17 -0
- data/spec/models/site_spec.rb +9 -0
- data/spec/views/inherited_resource_helpers.rb +20 -0
- metadata +152 -0
data/.gitignore
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
*.gem
|
|
2
|
+
Gemfile.lock
|
|
3
|
+
pkg/*
|
|
4
|
+
|
|
5
|
+
db/*.sqlite3
|
|
6
|
+
db/*.sqlite3.db
|
|
7
|
+
log/*.log
|
|
8
|
+
tmp/**/*
|
|
9
|
+
|
|
10
|
+
*~
|
|
11
|
+
\#*\#
|
|
12
|
+
config/database.yml
|
|
13
|
+
coverage/
|
|
14
|
+
db/*.sqlite3
|
|
15
|
+
db/*.sqlite3-journal
|
|
16
|
+
log/*.log
|
|
17
|
+
*.swp
|
|
18
|
+
nbproject
|
|
19
|
+
public/system/**/*
|
|
20
|
+
private/**/*
|
|
21
|
+
.DS_Store
|
|
22
|
+
webrat*html
|
|
23
|
+
mkmf.log
|
|
24
|
+
public/javascripts/all.js
|
|
25
|
+
public/stylesheets/all.css
|
|
26
|
+
.yardoc
|
|
27
|
+
.idea
|
|
28
|
+
# Rails
|
|
29
|
+
.bundle
|
|
30
|
+
db/*.sqlite3
|
|
31
|
+
db/*.sqlite3-journal
|
|
32
|
+
*.log
|
|
33
|
+
tmp/**/*
|
|
34
|
+
|
|
35
|
+
# Documentation
|
|
36
|
+
doc/api
|
|
37
|
+
doc/app
|
|
38
|
+
doc/*
|
|
39
|
+
.yardoc
|
|
40
|
+
.yardopts
|
|
41
|
+
|
|
42
|
+
# Public Uploads
|
|
43
|
+
public/system/*
|
|
44
|
+
public/themes/*
|
|
45
|
+
|
|
46
|
+
# Public Cache
|
|
47
|
+
public/javascripts/cache
|
|
48
|
+
public/stylesheets/cache
|
|
49
|
+
|
|
50
|
+
# Vendor Cache
|
|
51
|
+
vendor/cache
|
|
52
|
+
|
|
53
|
+
# Acts as Indexed
|
|
54
|
+
index/**/*
|
|
55
|
+
|
|
56
|
+
# Refinery Specific
|
|
57
|
+
*.tmproj
|
|
58
|
+
*.autobackupbyrefinery.*
|
|
59
|
+
.autotest
|
|
60
|
+
|
|
61
|
+
# Mac
|
|
62
|
+
.DS_Store
|
|
63
|
+
|
|
64
|
+
# Windows
|
|
65
|
+
Thumbs.db
|
|
66
|
+
|
|
67
|
+
# NetBeans
|
|
68
|
+
nbproject
|
|
69
|
+
|
|
70
|
+
# Eclipse
|
|
71
|
+
.project
|
|
72
|
+
|
|
73
|
+
# Redcar
|
|
74
|
+
.redcar
|
|
75
|
+
|
|
76
|
+
# Rubinius
|
|
77
|
+
*.rbc
|
|
78
|
+
|
|
79
|
+
# Vim
|
|
80
|
+
*.swp
|
|
81
|
+
*.swo
|
|
82
|
+
|
|
83
|
+
# RubyMine
|
|
84
|
+
.idea
|
|
85
|
+
|
|
86
|
+
# Backup
|
|
87
|
+
*~
|
|
88
|
+
|
|
89
|
+
# Capybara Bug
|
|
90
|
+
capybara-*html
|
|
91
|
+
|
|
92
|
+
# sass
|
|
93
|
+
.sass-cache
|
|
94
|
+
.sass-cache/*
|
|
95
|
+
|
|
96
|
+
|
data/.rvmrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
rvm ruby-1.8.7@refinerycms-multisite
|
data/Gemfile
ADDED
data/Rakefile
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
module Admin::SitesHelper
|
|
2
|
+
def link_to_add_fields(name, f, association)
|
|
3
|
+
new_object = f.object.class.reflect_on_association(association).klass.new
|
|
4
|
+
fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
|
|
5
|
+
render(association.to_s.singularize + "_fields", :f => builder)
|
|
6
|
+
end
|
|
7
|
+
link_to_function(name, "add_fields(this, \"#{association}\",
|
|
8
|
+
\"#{escape_javascript(fields)}\")")
|
|
9
|
+
end
|
|
10
|
+
end
|
data/app/models/site.rb
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
class Site < ActiveRecord::Base
|
|
2
|
+
belongs_to :page
|
|
3
|
+
attr_accessible :name, :page_id, :stylesheet, :hostnames,
|
|
4
|
+
:hostnames_attributes
|
|
5
|
+
|
|
6
|
+
has_many :hostnames,
|
|
7
|
+
:dependent => :destroy
|
|
8
|
+
|
|
9
|
+
accepts_nested_attributes_for :hostnames, :allow_destroy => true
|
|
10
|
+
|
|
11
|
+
def self.find_by_hostname(hostname)
|
|
12
|
+
Site.joins(:hostnames).where(:hostnames=>{:hostname=>hostname}).first ||
|
|
13
|
+
Site.joins(:hostnames).where(:hostnames=>{:hostname=>'*'}).first
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Monkey-Patch the Page-Controller for loading the right root-Page
|
|
17
|
+
PagesController.class_eval do
|
|
18
|
+
def home
|
|
19
|
+
if (@site)
|
|
20
|
+
error_404 unless (@page = Page.find(@site.page_id)).present?
|
|
21
|
+
else
|
|
22
|
+
error_404 unless (@page = Page.where(:link_url => '/').first).present?
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
# Monkey-Patch the Application-Controller for loading the current site
|
|
27
|
+
ApplicationController.class_eval do
|
|
28
|
+
before_filter :load_site
|
|
29
|
+
protected
|
|
30
|
+
def load_site
|
|
31
|
+
@site = Site.find_by_hostname(request.host)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<ul>
|
|
2
|
+
<li>
|
|
3
|
+
<%= render :partial => "/shared/admin/search",
|
|
4
|
+
:locals => {
|
|
5
|
+
:url => admin_sites_url
|
|
6
|
+
} %>
|
|
7
|
+
</li>
|
|
8
|
+
<li>
|
|
9
|
+
<%= link_to t('.new'), new_admin_site_url({
|
|
10
|
+
:dialog => true,
|
|
11
|
+
:width => 725,
|
|
12
|
+
:height => 475
|
|
13
|
+
}), :class => "add_icon" %>
|
|
14
|
+
</li>
|
|
15
|
+
</ul>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<%= form_for [:admin, @site] do |f| %>
|
|
2
|
+
|
|
3
|
+
<%= render :partial => "/shared/admin/error_messages",
|
|
4
|
+
:locals => {
|
|
5
|
+
:object => @site,
|
|
6
|
+
:include_object_name => true
|
|
7
|
+
} %>
|
|
8
|
+
|
|
9
|
+
<div class='field'>
|
|
10
|
+
<%= f.label :name %>
|
|
11
|
+
<%= f.text_field :name, :class => "larger widest" %>
|
|
12
|
+
</div>
|
|
13
|
+
<div class='field'>
|
|
14
|
+
<%= f.label :page_id %>
|
|
15
|
+
<%= f.select :page_id, nested_set_options(Page, @page) {|i| "#{'-' * i.level} #{i.title}" },
|
|
16
|
+
:include_blank => true %>
|
|
17
|
+
</div>
|
|
18
|
+
<div class='field'>
|
|
19
|
+
<%= f.label :stylesheet %>
|
|
20
|
+
<%= f.text_field :stylesheet%>
|
|
21
|
+
</div>
|
|
22
|
+
<%= f.label :hostnames %>
|
|
23
|
+
<%= f.fields_for :hostnames do |hf| %>
|
|
24
|
+
<%= render 'hostname_fields', :f=>hf %>
|
|
25
|
+
<% end %>
|
|
26
|
+
<p><%= link_to_add_fields refinery_icon_tag('add.png'), f,
|
|
27
|
+
:hostnames %></p>
|
|
28
|
+
<%= render :partial => "/shared/admin/form_actions",
|
|
29
|
+
:locals => {
|
|
30
|
+
:f => f,
|
|
31
|
+
:continue_editing => false,
|
|
32
|
+
:submit_button_title => t('.restart_may_be_in_order_html'),
|
|
33
|
+
:delete_title => t('delete', :scope => 'admin.sites'),
|
|
34
|
+
:delete_confirmation => t('message', :scope => 'shared.admin.delete',
|
|
35
|
+
:title => @site.name.to_s.titleize),
|
|
36
|
+
:hide_delete => (!@site.persisted? or from_dialog?)
|
|
37
|
+
} %>
|
|
38
|
+
<% end -%>
|
|
39
|
+
<% content_for :javascripts do %>
|
|
40
|
+
<script type="text/javascript">
|
|
41
|
+
function remove_fields(link) {
|
|
42
|
+
$(link).prev("input[type=hidden]").val("1");
|
|
43
|
+
$(link).closest(".fields").hide();
|
|
44
|
+
}
|
|
45
|
+
function add_fields(link, association, content) {
|
|
46
|
+
var new_id = new Date().getTime();
|
|
47
|
+
var regexp = new RegExp("new_" + association, "g");
|
|
48
|
+
$(link).before(content.replace(regexp, new_id));
|
|
49
|
+
}
|
|
50
|
+
</script>
|
|
51
|
+
<% end %>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<% if searching? %>
|
|
2
|
+
<h2>
|
|
3
|
+
<%= t('results_for', :scope => 'shared.admin.search', :query => params[:search]) %>
|
|
4
|
+
</h2>
|
|
5
|
+
<% end %>
|
|
6
|
+
<% if @sites.any? %>
|
|
7
|
+
<div class='pagination_container'>
|
|
8
|
+
<%= render :partial => 'sites' %>
|
|
9
|
+
</div>
|
|
10
|
+
<% else %>
|
|
11
|
+
<p>
|
|
12
|
+
<% if searching? %>
|
|
13
|
+
<%= t('no_results', :scope => 'shared.admin.search') %>
|
|
14
|
+
<% else %>
|
|
15
|
+
<strong>
|
|
16
|
+
<%= t('.empty_set') %>
|
|
17
|
+
<%= t('.create_first', :link => t('new', :scope => 'admin.sites.actions')
|
|
18
|
+
) %>
|
|
19
|
+
</strong>
|
|
20
|
+
<% end %>
|
|
21
|
+
</p>
|
|
22
|
+
<% end %>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<li class='clearfix record <%= cycle("on", "on-hover") %>'>
|
|
2
|
+
<span class='title'>
|
|
3
|
+
<%= site.name.to_s.titleize %>
|
|
4
|
+
<span class="preview">- <%= site.hostnames.map {|host| host.hostname+" "}
|
|
5
|
+
%></span>
|
|
6
|
+
</span>
|
|
7
|
+
<span class='actions'>
|
|
8
|
+
<%= link_to refinery_icon_tag('application_edit.png'),
|
|
9
|
+
edit_admin_site_path(site, :dialog => true,
|
|
10
|
+
:width => 725, :height => 525),
|
|
11
|
+
:title => t('edit', :scope => 'admin.sites') %>
|
|
12
|
+
<%= link_to refinery_icon_tag('delete.png'),
|
|
13
|
+
admin_site_path(site),
|
|
14
|
+
:class => 'cancel confirm-delete',
|
|
15
|
+
:title => t('delete', :scope => 'admin.sites'),
|
|
16
|
+
:confirm => t('message', :scope => 'shared.admin.delete',
|
|
17
|
+
:title => site.name),
|
|
18
|
+
:method => :delete %>
|
|
19
|
+
</span>
|
|
20
|
+
</li>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= render :partial => "form" %>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<div id='records'>
|
|
2
|
+
<%= render :partial => 'records' %>
|
|
3
|
+
</div>
|
|
4
|
+
<div id='actions'>
|
|
5
|
+
<%= render :partial => 'actions' %>
|
|
6
|
+
</div>
|
|
7
|
+
<% content_for :javascripts do %>
|
|
8
|
+
<script>
|
|
9
|
+
$(document).ready(function() {
|
|
10
|
+
$('#records ul li .actions a[href*=edit]').each(function(i, li) {
|
|
11
|
+
$(li).attr('name', $(li).attr('tooltip'));
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
</script>
|
|
15
|
+
<% end -%>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= render :partial => "form" %>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
!!!
|
|
2
|
+
- if @site.try(:stylesheet)
|
|
3
|
+
- content_for :stylesheets do
|
|
4
|
+
= stylesheet_link_tag @site.stylesheet
|
|
5
|
+
= render :partial => "/shared/html_tag"
|
|
6
|
+
- site_bar = render(:partial => "/shared/site_bar", :locals => {:head => true})
|
|
7
|
+
= render :partial => "/shared/head"
|
|
8
|
+
%body
|
|
9
|
+
/
|
|
10
|
+
= request.host
|
|
11
|
+
-#= site_bar
|
|
12
|
+
= render :partial => "/shared/ie6check" if request.env['HTTP_USER_AGENT'] =~ /MSIE/
|
|
13
|
+
#container
|
|
14
|
+
%header
|
|
15
|
+
= render :partial => "/shared/header"
|
|
16
|
+
%section#page
|
|
17
|
+
= yield
|
|
18
|
+
%footer
|
|
19
|
+
= render :partial => "/shared/footer"
|
|
20
|
+
= render :partial => "/shared/javascripts"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<h1 id='logo'>
|
|
2
|
+
<%= link_to RefinerySetting.find_or_set(:site_name, "Company Name"), root_path %>
|
|
3
|
+
</h1>
|
|
4
|
+
<%=
|
|
5
|
+
::Fiber.new {
|
|
6
|
+
::Fiber.yield(
|
|
7
|
+
render(:partial => "/shared/menu", :locals => {
|
|
8
|
+
:dom_id => 'menu',
|
|
9
|
+
:css => 'menu',
|
|
10
|
+
:roots => @menu_pages.where(:parent_id => @site.try(:page_id)),
|
|
11
|
+
:collection => @menu_pages.where(@menu_pages.arel_table[:parent_id].not_eq(nil)),
|
|
12
|
+
:selected_item => (@page if defined?(::Page))
|
|
13
|
+
})
|
|
14
|
+
)
|
|
15
|
+
}.resume %>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
xml.instruct!
|
|
2
|
+
|
|
3
|
+
xml.urlset "xmlns" => "http://www.sitemaps.org/schemas/sitemap/0.9" do
|
|
4
|
+
|
|
5
|
+
@pages.each do |page|
|
|
6
|
+
# exclude sites that are external to our own domain.
|
|
7
|
+
page_url = if page.url.is_a?(Hash)
|
|
8
|
+
# This is how most pages work without being overriden by link_url
|
|
9
|
+
page.url.merge({:only_path => false})
|
|
10
|
+
elsif page.url.to_s !~ /^http/
|
|
11
|
+
# handle relative link_url addresses.
|
|
12
|
+
"#{request.protocol}#{request.host_with_port}#{page.url}"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Add XML entry only if there is a valid page_url found above.
|
|
16
|
+
xml.url do
|
|
17
|
+
xml.loc url_for(page_url)
|
|
18
|
+
xml.lastmod page.updated_at.to_date
|
|
19
|
+
end if page_url.present?
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Sample localization file for English. Add more files in this directory for other locales.
|
|
2
|
+
# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
|
|
3
|
+
|
|
4
|
+
en:
|
|
5
|
+
plugins:
|
|
6
|
+
sites:
|
|
7
|
+
title: Sites
|
|
8
|
+
admin:
|
|
9
|
+
sites:
|
|
10
|
+
actions:
|
|
11
|
+
new: 'new site'
|
|
12
|
+
edit: 'edit site'
|
|
13
|
+
delete: 'remove site'
|
data/config/routes.rb
ADDED
data/db/seeds.rb
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# This file should contain all the record creation needed to seed the database with its default values.
|
|
2
|
+
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
|
|
3
|
+
#
|
|
4
|
+
# Examples:
|
|
5
|
+
#
|
|
6
|
+
# cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
|
|
7
|
+
# Mayor.create(:name => 'Daley', :city => cities.first)
|
|
8
|
+
# Refinery seeds
|
|
9
|
+
Dir[Rails.root.join('db', 'seeds', '*.rb').to_s].each do |file|
|
|
10
|
+
puts "Loading db/seeds/#{file.split(File::SEPARATOR).last}"
|
|
11
|
+
load(file)
|
|
12
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
|
|
2
|
+
require 'refinerycms-base'
|
|
3
|
+
|
|
4
|
+
module Refinery
|
|
5
|
+
module Sites
|
|
6
|
+
class Engine < Rails::Engine
|
|
7
|
+
initializer "static assets" do |app|
|
|
8
|
+
app.middleware.insert_after ::ActionDispatch::Static, ::ActionDispatch::Static, "#{root}/public"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
config.after_initialize do
|
|
12
|
+
Refinery::Plugin.register do |plugin|
|
|
13
|
+
plugin.name = "sites"
|
|
14
|
+
plugin.activity = {
|
|
15
|
+
:class => Site,
|
|
16
|
+
:title => 'name'
|
|
17
|
+
}
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
data/lib/tasks/.gitkeep
ADDED
|
File without changes
|
data/readme.md
ADDED
|
File without changes
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
|
3
|
+
require "refinerycms-multisite/version"
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |s|
|
|
6
|
+
s.name = "refinerycms-multisite"
|
|
7
|
+
s.version = Refinerycms::Multisite::VERSION
|
|
8
|
+
s.platform = Gem::Platform::RUBY
|
|
9
|
+
s.authors = ["Andreas König"]
|
|
10
|
+
s.email = ["koa@panter.ch"]
|
|
11
|
+
s.homepage = ""
|
|
12
|
+
s.summary = %q{Multisite-Plugin for Refinery-CMS}
|
|
13
|
+
s.description = %q{Manage multiple Site with Refinery-CMS}
|
|
14
|
+
|
|
15
|
+
s.rubyforge_project = "refinerycms-multisite"
|
|
16
|
+
s.add_dependency "refinerycms-pages"
|
|
17
|
+
s.add_development_dependency "refinerycms-testing"
|
|
18
|
+
s.add_development_dependency "shoulda-matchers"
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
s.files = `git ls-files`.split("\n")
|
|
22
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
23
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
|
24
|
+
s.require_paths = ["lib"]
|
|
25
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Admin::SitesController do
|
|
4
|
+
include Devise::TestHelpers
|
|
5
|
+
|
|
6
|
+
before(:each) do
|
|
7
|
+
sign_in Factory.create(:refinery_user)
|
|
8
|
+
@origin_site=Factory.create(:site)
|
|
9
|
+
@origin_site.save
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
context 'GET on new' do
|
|
13
|
+
before(:each) { get :new }
|
|
14
|
+
it('assigns a new site') { assigns(:site).should be_a_new(Site) }
|
|
15
|
+
it('responds with success') { response.should be_success }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
context 'POST on create' do
|
|
19
|
+
before(:each) { post :create, :post => Factory.attributes_for(:site) }
|
|
20
|
+
it('responds with a redirect') do
|
|
21
|
+
response.should redirect_to(:action=>:index)
|
|
22
|
+
end
|
|
23
|
+
it('creates a new site') { assigns(:site).should_not be_a_new_record }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
context 'persisted site' do
|
|
27
|
+
let(:site) { Factory(:site) }
|
|
28
|
+
context 'GET on edit' do
|
|
29
|
+
before(:each) { get :edit, :id => site }
|
|
30
|
+
it('response with success') { response.should be_success }
|
|
31
|
+
end
|
|
32
|
+
context 'GET on index' do
|
|
33
|
+
before(:each) { get :index }
|
|
34
|
+
it('response with success') { response.should be_success}
|
|
35
|
+
it('assigns sites') do
|
|
36
|
+
assigns(:sites).should include(@origin_site)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end
|
data/spec/factories.rb
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Factory.define :post do |f|
|
|
2
|
+
f.title 'Post title'
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
Factory.define :hostname do |f|
|
|
6
|
+
f.hostname 'example.com'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
Factory.define :site do |f|
|
|
10
|
+
f.name 'ex'
|
|
11
|
+
f.hostnames {|site| [site.association(:hostname),
|
|
12
|
+
site.association(:hostname, :hostname=>'test.host')]}
|
|
13
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "FactoryGirl" do
|
|
4
|
+
|
|
5
|
+
describe "a hostname by factory" do
|
|
6
|
+
let(:hostname){Factory.build(:hostname)}
|
|
7
|
+
it{hostname.should be_valid}
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe "a sites by factory" do
|
|
11
|
+
let(:site){Factory.build(:site)}
|
|
12
|
+
it{site.should be_valid}
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Hostname do
|
|
4
|
+
it 'initializes' do
|
|
5
|
+
Hostname.new.should_not be_nil
|
|
6
|
+
end
|
|
7
|
+
describe "hostname" do
|
|
8
|
+
it {should allow_value('localhost').for(:hostname)}
|
|
9
|
+
end
|
|
10
|
+
describe "find host example.com" do
|
|
11
|
+
it 'find saved hostname' do
|
|
12
|
+
Factory.build(:hostname, :hostname=>'example.com').save
|
|
13
|
+
|
|
14
|
+
Hostname.find_by_hostname('example.com').should_not be_nil
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module InheritedResourceHelpers
|
|
2
|
+
|
|
3
|
+
# mock url and other helper methods contributed by inherited resource
|
|
4
|
+
def mock_inherited_resource(resource)
|
|
5
|
+
view.stub(:collection_path).and_return('/collection_path')
|
|
6
|
+
view.stub(:edit_resource_path).and_return('/edit_resource_path')
|
|
7
|
+
view.stub(:new_resource_path).and_return('/new_resource_path')
|
|
8
|
+
view.stub(:parent_path).and_return('/parent_path')
|
|
9
|
+
view.stub(:resource_path).and_return('/resource_path')
|
|
10
|
+
|
|
11
|
+
view.stub(:collection_url).and_return('/collection_url')
|
|
12
|
+
view.stub(:edit_resource_url).and_return('/edit_resource_url')
|
|
13
|
+
view.stub(:new_resource_url).and_return('/new_resource_url')
|
|
14
|
+
view.stub(:parent_url).and_return('/parent_url')
|
|
15
|
+
view.stub(:resource_url).and_return('/resource_url')
|
|
16
|
+
|
|
17
|
+
view.stub(:collection).and_return([resource])
|
|
18
|
+
view.stub(:resource).and_return(resource)
|
|
19
|
+
end
|
|
20
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: refinerycms-multisite
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
hash: 29
|
|
5
|
+
prerelease:
|
|
6
|
+
segments:
|
|
7
|
+
- 0
|
|
8
|
+
- 0
|
|
9
|
+
- 1
|
|
10
|
+
version: 0.0.1
|
|
11
|
+
platform: ruby
|
|
12
|
+
authors:
|
|
13
|
+
- "Andreas K\xC3\xB6nig"
|
|
14
|
+
autorequire:
|
|
15
|
+
bindir: bin
|
|
16
|
+
cert_chain: []
|
|
17
|
+
|
|
18
|
+
date: 2011-04-26 00:00:00 +02:00
|
|
19
|
+
default_executable:
|
|
20
|
+
dependencies:
|
|
21
|
+
- !ruby/object:Gem::Dependency
|
|
22
|
+
name: refinerycms-pages
|
|
23
|
+
prerelease: false
|
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - ">="
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
hash: 3
|
|
30
|
+
segments:
|
|
31
|
+
- 0
|
|
32
|
+
version: "0"
|
|
33
|
+
type: :runtime
|
|
34
|
+
version_requirements: *id001
|
|
35
|
+
- !ruby/object:Gem::Dependency
|
|
36
|
+
name: refinerycms-testing
|
|
37
|
+
prerelease: false
|
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
|
39
|
+
none: false
|
|
40
|
+
requirements:
|
|
41
|
+
- - ">="
|
|
42
|
+
- !ruby/object:Gem::Version
|
|
43
|
+
hash: 3
|
|
44
|
+
segments:
|
|
45
|
+
- 0
|
|
46
|
+
version: "0"
|
|
47
|
+
type: :development
|
|
48
|
+
version_requirements: *id002
|
|
49
|
+
- !ruby/object:Gem::Dependency
|
|
50
|
+
name: shoulda-matchers
|
|
51
|
+
prerelease: false
|
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
|
53
|
+
none: false
|
|
54
|
+
requirements:
|
|
55
|
+
- - ">="
|
|
56
|
+
- !ruby/object:Gem::Version
|
|
57
|
+
hash: 3
|
|
58
|
+
segments:
|
|
59
|
+
- 0
|
|
60
|
+
version: "0"
|
|
61
|
+
type: :development
|
|
62
|
+
version_requirements: *id003
|
|
63
|
+
description: Manage multiple Site with Refinery-CMS
|
|
64
|
+
email:
|
|
65
|
+
- koa@panter.ch
|
|
66
|
+
executables: []
|
|
67
|
+
|
|
68
|
+
extensions: []
|
|
69
|
+
|
|
70
|
+
extra_rdoc_files: []
|
|
71
|
+
|
|
72
|
+
files:
|
|
73
|
+
- .gitignore
|
|
74
|
+
- .rvmrc
|
|
75
|
+
- Gemfile
|
|
76
|
+
- Rakefile
|
|
77
|
+
- app/controllers/admin/sites_controller.rb
|
|
78
|
+
- app/controllers/application_controller.rb
|
|
79
|
+
- app/helpers/admin/sites_helper.rb
|
|
80
|
+
- app/helpers/application_helper.rb
|
|
81
|
+
- app/models/hostname.rb
|
|
82
|
+
- app/models/site.rb
|
|
83
|
+
- app/views/admin/sites/_actions.html.erb
|
|
84
|
+
- app/views/admin/sites/_form.html.erb
|
|
85
|
+
- app/views/admin/sites/_hostname_fields.html.erb
|
|
86
|
+
- app/views/admin/sites/_records.html.erb
|
|
87
|
+
- app/views/admin/sites/_site.html.erb
|
|
88
|
+
- app/views/admin/sites/_sites.html.erb
|
|
89
|
+
- app/views/admin/sites/edit.html.erb
|
|
90
|
+
- app/views/admin/sites/index.html.erb
|
|
91
|
+
- app/views/admin/sites/new.html.erb
|
|
92
|
+
- app/views/layouts/application.html.haml
|
|
93
|
+
- app/views/shared/_footer.html.erb
|
|
94
|
+
- app/views/shared/_header.html.erb
|
|
95
|
+
- app/views/sitemap/index.xml.builder
|
|
96
|
+
- config/locales/de.yml
|
|
97
|
+
- config/locales/en.yml
|
|
98
|
+
- config/routes.rb
|
|
99
|
+
- db/migrate/20110418095543_create_sites.rb
|
|
100
|
+
- db/migrate/20110418095626_create_hostnames.rb
|
|
101
|
+
- db/seeds.rb
|
|
102
|
+
- lib/generators/refinerycms_sites_generator.rb
|
|
103
|
+
- lib/refinerycms-multisite.rb
|
|
104
|
+
- lib/refinerycms-multisite/version.rb
|
|
105
|
+
- lib/tasks/.gitkeep
|
|
106
|
+
- readme.md
|
|
107
|
+
- refinerycms-multisite.gemspec
|
|
108
|
+
- spec/acceptance/acceptance_helper.rb
|
|
109
|
+
- spec/acceptance/support/helpers.rb
|
|
110
|
+
- spec/acceptance/support/paths.rb
|
|
111
|
+
- spec/controllers/admin/site_controller_spec.rb
|
|
112
|
+
- spec/factories.rb
|
|
113
|
+
- spec/models/factory_girl_spec.rb
|
|
114
|
+
- spec/models/hostname_spec.rb
|
|
115
|
+
- spec/models/site_spec.rb
|
|
116
|
+
- spec/views/inherited_resource_helpers.rb
|
|
117
|
+
has_rdoc: true
|
|
118
|
+
homepage: ""
|
|
119
|
+
licenses: []
|
|
120
|
+
|
|
121
|
+
post_install_message:
|
|
122
|
+
rdoc_options: []
|
|
123
|
+
|
|
124
|
+
require_paths:
|
|
125
|
+
- lib
|
|
126
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
127
|
+
none: false
|
|
128
|
+
requirements:
|
|
129
|
+
- - ">="
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
hash: 3
|
|
132
|
+
segments:
|
|
133
|
+
- 0
|
|
134
|
+
version: "0"
|
|
135
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
136
|
+
none: false
|
|
137
|
+
requirements:
|
|
138
|
+
- - ">="
|
|
139
|
+
- !ruby/object:Gem::Version
|
|
140
|
+
hash: 3
|
|
141
|
+
segments:
|
|
142
|
+
- 0
|
|
143
|
+
version: "0"
|
|
144
|
+
requirements: []
|
|
145
|
+
|
|
146
|
+
rubyforge_project: refinerycms-multisite
|
|
147
|
+
rubygems_version: 1.6.2
|
|
148
|
+
signing_key:
|
|
149
|
+
specification_version: 3
|
|
150
|
+
summary: Multisite-Plugin for Refinery-CMS
|
|
151
|
+
test_files: []
|
|
152
|
+
|