diff --git a/Gemfile b/Gemfile
index 4cfe8c83..bed5e274 100644
--- a/Gemfile
+++ b/Gemfile
@@ -13,8 +13,8 @@ gem 'mongo', '~> 1.5.2'
gem 'bson_ext', '~> 1.5.2'
gem 'mongoid', '~> 2.4.0'
gem 'locomotive_mongoid_acts_as_tree', :git => 'git@github.com:locomotivecms/mongoid_acts_as_tree.git'
-gem 'custom_fields', :path => '../gems/custom_fields' # DEV
-# gem 'custom_fields', :git => 'git://github.com/locomotivecms/custom_fields.git', :branch => 'experimental'
+# gem 'custom_fields', :path => '../gems/custom_fields' # DEV
+gem 'custom_fields', :git => 'git://github.com/locomotivecms/custom_fields.git', :branch => 'experimental'
gem 'kaminari'
gem 'haml', '~> 3.1.3'
@@ -57,19 +57,13 @@ group :development do
gem 'rspec-cells'
end
-group :test, :development do
- # gem 'linecache', '0.43', :platforms => :mri_18
- # gem 'ruby-debug', :platforms => :mri_18
- # gem 'ruby-debug19', :platforms => :mri_19
- gem 'cucumber-rails'
-end
-
group :test do
+ gem 'cucumber-rails'
gem 'autotest', :platforms => :mri
gem 'ZenTest', :platforms => :mri
gem 'growl-glue'
gem 'rspec-rails', '2.6.1'
- gem 'factory_girl_rails', '~> 1.1'
+ gem 'factory_girl_rails', '~> 1.3.0'
gem 'pickle'
gem 'xpath', '~> 0.1.4'
gem 'capybara'
@@ -82,4 +76,3 @@ end
group :production do
gem 'bushido', '0.0.35'
end
-
diff --git a/Gemfile.lock b/Gemfile.lock
index 0397884b..e29773ac 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,17 +1,19 @@
GIT
- remote: git@github.com:locomotivecms/mongoid_acts_as_tree.git
- revision: ca494d22c3d7946385aba1153c017d9c30e9f9d3
- specs:
- locomotive_mongoid_acts_as_tree (0.1.5.7)
-
-PATH
- remote: ../gems/custom_fields
+ remote: git://github.com/locomotivecms/custom_fields.git
+ revision: b187a16acbf581b4eef857d2958a69422407a047
+ branch: experimental
specs:
custom_fields (2.0.0.rc1)
activesupport (~> 3.1.3)
carrierwave-mongoid (~> 0.1.3)
mongoid (~> 2.4.0)
+GIT
+ remote: git@github.com:locomotivecms/mongoid_acts_as_tree.git
+ revision: ca494d22c3d7946385aba1153c017d9c30e9f9d3
+ specs:
+ locomotive_mongoid_acts_as_tree (0.1.5.7)
+
GEM
remote: http://rubygems.org/
specs:
@@ -78,10 +80,10 @@ GEM
cells (3.7.1)
actionpack (~> 3.0)
railties (~> 3.0)
- childprocess (0.2.8)
+ childprocess (0.3.0)
ffi (~> 1.0.6)
chunky_png (1.2.5)
- codemirror-rails (0.3.2)
+ codemirror-rails (2.2)
railties (~> 3.0)
coffee-script (2.2.0)
coffee-script-source
@@ -97,9 +99,9 @@ GEM
gherkin (~> 2.7.1)
json (>= 1.4.6)
term-ansicolor (>= 1.0.6)
- cucumber-rails (1.2.1)
- capybara (>= 1.1.2)
- cucumber (>= 1.1.3)
+ cucumber-rails (1.2.0)
+ capybara (>= 1.1.1)
+ cucumber (>= 1.1.1)
nokogiri (>= 1.5.0)
database_cleaner (0.7.0)
delayed_job (3.0.0)
@@ -112,17 +114,17 @@ GEM
orm_adapter (~> 0.0.3)
warden (~> 1.1)
diff-lcs (1.1.3)
- dragonfly (0.9.9)
+ dragonfly (0.9.10)
rack
ejs (1.0.0)
erubis (2.7.0)
excon (0.7.12)
execjs (1.2.13)
multi_json (~> 1.0)
- factory_girl (2.3.2)
+ factory_girl (2.2.0)
activesupport
- factory_girl_rails (1.4.0)
- factory_girl (~> 2.3.0)
+ factory_girl_rails (1.3.0)
+ factory_girl (~> 2.2.0)
railties (>= 3.0.0)
ffi (1.0.11)
flash_cookie_session (1.1.1)
@@ -141,7 +143,7 @@ GEM
formtastic (2.0.2)
rails (~> 3.0)
fssm (0.2.8.1)
- gherkin (2.7.2)
+ gherkin (2.7.3)
json (>= 1.4.6)
growl-glue (1.0.7)
haml (3.1.4)
@@ -182,7 +184,7 @@ GEM
net-ssh (>= 1.99.1)
net-ssh (2.1.4)
nokogiri (1.5.0)
- orm_adapter (0.0.5)
+ orm_adapter (0.0.6)
pickle (0.4.10)
cucumber (>= 0.8)
rake
@@ -303,7 +305,7 @@ DEPENDENCIES
delayed_job_mongoid (~> 1.0.8)
devise (~> 1.5.3)
dragonfly (~> 0.9.8)
- factory_girl_rails (~> 1.1)
+ factory_girl_rails (~> 1.3.0)
flash_cookie_session (~> 1.1.1)
fog (~> 1.0.0)
formtastic (~> 2.0.2)
diff --git a/config/locales/admin_ui.de.yml b/config/locales/admin_ui.de.yml
index 9f8d0554..35d409d8 100644
--- a/config/locales/admin_ui.de.yml
+++ b/config/locales/admin_ui.de.yml
@@ -6,6 +6,7 @@ de:
change_password: Update
new_item: "+ hinzufügen"
switch_to_site: Los
+ delete: "Löschen"
messages:
confirm: Bist du sicher ?
@@ -14,7 +15,9 @@ de:
header:
welcome: Willkommen, %{name}
see: Webseite ansehen
+ switch: Mandant wechseln
logout: Ausloggen
+ help: Hilfe
menu:
contents: Inhalte
assets: Galerien
@@ -49,6 +52,9 @@ de:
title: "Hi %{firstname}, nur damit du Bescheid weißt! Am %{date} wurde folgende neue Instanz erstellt."
type: "Model: %{type}"
+ sites_picker:
+ new: + Neuer Mandant
+
custom_fields:
edit:
title: Benutzerdefinierte Felder bearbeiten
@@ -136,6 +142,10 @@ de:
ask_for_name: "Bitte gib den neuen Namen der Webseite an"
memberships:
+ roles:
+ admin: Administrator
+ designer: Designer
+ author: Autor
new:
title: Neuer Account
help: "Bitte gib eine Email für den neuen Account an. Wenn diese noch nicht registriert ist, wirst du zu einem Formular zur Erstellung weitergeleitet."
@@ -179,6 +189,10 @@ de:
edit:
title: "Bearbeite %{file}"
help: "Diese Datei kann über folgende URL erreicht werden: %{url}"
+ help_image: "Das Bild kann über den folgenden Liquid Code in Seitenvorlagen oder Snipplets eingebunden werden: {{ '%{path}' | theme_image_tag }}.
Die aktuelle Bildgröße ist: %{width}px x %{height}px.
"
+ help_javascript: "Die Javascript Datei kann über den folgenden Liquid Code in Seitenvorlagen oder Snipplets eingebunden werden: {{ '%{path}' | javascript_tag }}.
"
+ help_stylesheet: "Die Stylesheet Datei kann über den folgenden Liquid Code in Seitenvorlagen oder Snipplets eingebunden werden: {{ '%{path}' | stylesheet_tag }}.
"
+
form:
picker_link: Füge eine Datei in den Code ein
choose_file: Datei auswählen
@@ -278,28 +292,19 @@ de:
installation:
common:
- title: Erst-Installation von getbenga
+ title: Locomotive CMS Initialisierung
next: Weiter
step_1:
- title: Schritt 1/3
- explanations: Dies ist der erste Schritt zur Installation von getbenga. Bitte lies die folgenden Texte genau durch.
- database:
- label: "Datenbank-Name: %{name}"
- notes: "All Verbindungseinstellungen für mongodb findest du in der config/mongoid.yml Datei."
- default_domain:
- label: "Standard Domain-Name: %{name}"
- notes: "Basically, Locomotive is a multi websites platform. Each site instance has a default entry, also called subdomain and based on the default domain name. Obviously, you are free to map other domains to your site instance working like aliases.
The default domain name value can be found in the config/initializers/locomotive.rb file."
- step_2:
- title: "Schritt 2/3 — Account erstellen"
+ title: "Schritt 1/2 — Zugang erstellen"
name: Nachname
firstname: Vorname
- company: Unternehmen
email: Email
password: Passwort
password_confirmation: Passwort-Bestätigung
- done: "Du hast bereits einen Account hinzugefügt:
%{name}, %{email}"
- next: Account erstellen
- step_3:
- title: "Schritt 3/3 — Erstelle deine erste Webseite"
- explanations: "Dies ist der letzte Schritt der Installation. Du kannst nun ein fertiges Template als zip-Datei hochladen. Hier findest du ein paar kostenlose Templates, die du gerne kostenlos verwenden kannst."
+ done: "Du hast bereits einen Zugang erstellt:
%{name}, %{email}"
+ next: Zugang erstellen
+ step_2:
+ title: "Schritt 2/2 — Webseite erstellen"
+ explanations: "Wenn Du schon ein Standard Template hochgeladen hast (siehe Hilfe), kannst Du es gleich benutzen. Oder Du kannst ein fertiges Template als zip-Datei hochladen. Hier findest du ein paar kostenlose Templates, die du gerne kostenlos verwenden kannst."
+ back_to_default_template: "Klicken Sie hier um die Standardvorlage zu verwenden."
next: Webseite erstellen
diff --git a/config/locales/formtastic.de.yml b/config/locales/formtastic.de.yml
index 1a73388d..ce1c8855 100644
--- a/config/locales/formtastic.de.yml
+++ b/config/locales/formtastic.de.yml
@@ -4,6 +4,8 @@ de:
information: Allgemeine Informationen
advanced_options: Fortgeschrittene Optionen
meta: Suchmaschinen-Metadaten
+ seo: SEO Einstellungen
+ robots_txt: Robots.txt Datei
code: Code
raw_template: Vorlage
credentials: Persönliche Daten
@@ -36,12 +38,18 @@ de:
source: Datei
samples: Beispiele kopieren
reset: Webseite zurücksetzen
+ default_site_template: "Benutze Standard Webseiten Template. Klicke hier, um ein anderes Template als zip-Datei hochzuladen."
content_type:
+ item_template: Baustein Template
api_accounts: Benachrichtigte Accounts
+ content_instance:
+ _slug: Permalink
account:
edit:
password: "Neues Passwort"
password_confirmation: "Bestätigung des neuen Passworts"
+ page:
+ seo_title: Titel
hints:
page:
@@ -50,12 +58,16 @@ de:
templatized: "Nutze diese Seite als Vorlage für einen Baustein, den du erstellt hast."
listed: "Regele, ob die Seite in den generierten Menüs angezeigt werden soll."
content_type_id: "Der Baustein für den diese Seite als Vorlage dienen soll."
- snippet:
- slug: "You need to know it in order to insert the snippet inside a page"
- site:
- meta_keywords: "Meta-Schlagworte, die im HEAD-Berecih der Webseite genutzt werden. Die einzelnen Wörter werden durch eine Leertaste getrennt. Diese werden für die Suchmaschinen benötigt."
+ seo_title: "Wähle einen Titel für den 'title' Tag im Seiten Header. Lass es leer, wenn der Seitentitel verwendet werden soll."
+ meta_keywords: "Meta-Schlagworte, die im HEAD-Bereich der Webseite genutzt werden. Die einzelnen Wörter werden durch eine Leertaste getrennt. Diese werden für die Suchmaschinen benötigt."
meta_description: "Meta-Beschreibung, die im HEAD-Bereich der Webseite genutzt wird. Diese wird für die Suchmaschinen benötigt."
- domain_name: "z.B: getbenga.com"
+ snippet:
+ slug: "Um ein Snippet einzubinden, musst Du diesen Slug benutzen."
+ site:
+ meta_keywords: "Meta-Schlagworte, die im HEAD-Bereich der Webseite genutzt werden. Die einzelnen Wörter werden durch eine Leertaste getrennt. Diese werden für die Suchmaschinen benötigt."
+ meta_description: "Meta-Beschreibung, die im HEAD-Bereich der Webseite genutzt wird. Diese wird für die Suchmaschinen benötigt."
+ domain_name: "z.B: locomotiveapp.org"
+ robots_txt: "Inhalt der /robots.txt Datei. Siehe auch diese Seite für mehr Informationen."
theme_asset:
slug: "Du musst die Dateiendung nicht angeben (.css or .js)"
edit:
@@ -71,10 +83,16 @@ de:
field:
name: "Merkmal verfügbar in den liquid-Templates"
hint: "Hilfe-Text, der im Formular des Bausteins direkt unter dem jeweiligen Feld angezeigt wird"
+ content_instance:
+ _slug: "Merkmal, was für die Erstellung der URL für diesen Baustein benutzt wird. (ex: \"template_page/{{ your_object._permalink }})\"."
+ seo_title: "Wähle einen Titel für den 'title' Tag im Seiten Header. Lass es leer, wenn der Seitentitel verwendet werden soll."
+ meta_keywords: "Meta-Schlagworte, die im HEAD-Bereich der Webseite genutzt werden. Die einzelnen Wörter werden durch eine Leertaste getrennt. Diese werden für die Suchmaschinen benötigt."
+ meta_description: "Meta-Beschreibung, die im HEAD-Bereich der Webseite genutzt wird. Diese wird für die Suchmaschinen benötigt."
import:
source: "Eine zip-Datei, die eine databse.yml, Assets und Templates enthält"
samples: "Bei Aktivierung werden auch Inhalte und Assets importiert"
reset: "Bei Aktivierung werden alle Daten deiner Webseite gelöscht, bevor die neue Webseite importiert wird"
content_type:
+ item_template: "Du kannst den Text für jeden Baustein einfach anpassen. Benutze einfach folgendes in Liquid : ({{ content.name }})"
api_enabled: "Dies wird genutzt, um Besuchern deiner Webseite die Möglichkeit zu geben neue Elemente zu erstellen (z.B: Nachrichten in einem Kontakt-Formular)"
- api_accounts: "Sobald ein Besucher ein neues Element erstellt, wird eine Benachrichtigungs-Email an alle unten aufgeführten Accounts gesendet"
\ No newline at end of file
+ api_accounts: "Sobald ein Besucher ein neues Element erstellt, wird eine Benachrichtigungs-Email an alle unten aufgeführten Accounts gesendet"
diff --git a/lib/locomotive/liquid/drops/contents.rb b/lib/locomotive/liquid/drops/contents.rb
deleted file mode 100644
index 3ba6841e..00000000
--- a/lib/locomotive/liquid/drops/contents.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-# DEPRECATED
-
-# module Locomotive
-# module Liquid
-# module Drops
-# class Contents < ::Liquid::Drop
-#
-# # TODO: refactoring
-#
-# def before_method(meth)
-# type = @context.registers[:site].content_types.where(:slug => meth.to_s).first
-# ProxyCollection.new(type)
-# end
-#
-# end
-#
-# class ProxyCollection < ::Liquid::Drop
-#
-# def initialize(content_type)
-# @content_type = content_type
-# @collection = nil
-# end
-#
-# def first
-# self.collection.first
-# end
-#
-# def last
-# self.collection.last
-# end
-#
-# def each(&block)
-# self.collection.each(&block)
-# end
-#
-# def each_with_index(&block)
-# self.collection.each_with_index(&block)
-# end
-#
-# def size
-# self.collection.size
-# end
-#
-# alias :length :size
-#
-# def empty?
-# self.collection.empty?
-# end
-#
-# def any?
-# self.collection.any?
-# end
-#
-# def api
-# { 'create' => @context.registers[:controller].send('api_contents_url', @content_type.slug) }
-# end
-#
-# def before_method(meth)
-# klass = @content_type.entries.klass # delegate to the proxy class
-#
-# if (meth.to_s =~ /^group_by_.+$/) == 0
-# klass.send(meth, :ordered_contents)
-# else
-# klass.send(meth)
-# end
-# end
-#
-# protected
-#
-# def paginate(options = {})
-# @collection = Kaminari.paginate_array(self.collection).page(options[:page]).per(options[:per_page])
-# end
-#
-# def collection
-# @collection ||= @content_type.ordered_contents(@context['with_scope'])
-# end
-# end
-#
-# end
-# end
-# end
diff --git a/locomotive_cms.gemspec b/locomotive_cms.gemspec
index 457c569e..766827b5 100644
--- a/locomotive_cms.gemspec
+++ b/locomotive_cms.gemspec
@@ -34,8 +34,7 @@ Gem::Specification.new do |s|
s.add_dependency 'sass', '3.1.2'
s.add_dependency 'locomotive_liquid', '2.2.2'
s.add_dependency 'formtastic', '~> 1.2.3'
- # s.add_dependency 'inherited_resources', '~> 1.1.2'
- s.add_dependency 'cells'
+ s.add_dependency 'cells', '~> 3.7.0'
s.add_dependency 'highline'
s.add_dependency 'sanitize'
@@ -54,9 +53,8 @@ Gem::Specification.new do |s|
s.add_dependency 'mimetype-fu'
s.add_dependency 'actionmailer-with-request'
s.add_dependency 'httparty', '0.7.8'
- s.add_dependency 'RedCloth', '4.2.8'
- s.add_dependency 'delayed_job', '3.0.0.pre4'
- s.add_dependency 'delayed_job_mongoid', '1.0.6'
+ s.add_dependency 'RedCloth', '4.2.9'
+ s.add_dependency 'delayed_job_mongoid', '1.0.8'
s.add_dependency 'rubyzip'
s.add_dependency 'locomotive_jammit-s3'
diff --git a/spec/cells/locomotive/global_actions_spec.rb b/spec/cells/locomotive/global_actions_spec.rb
index e2db9733..a07eecd7 100644
--- a/spec/cells/locomotive/global_actions_spec.rb
+++ b/spec/cells/locomotive/global_actions_spec.rb
@@ -5,7 +5,7 @@ describe Locomotive::GlobalActionsCell do
# as if it were a controller.
# render_views
- let(:menu) { render_cell('locomotive/global_actions', :show, :current_locomotive_account => FactoryGirl.build('admin user'), :current_site_url => 'http://www.yahoo.fr') }
+ let(:menu) { render_cell('admin/global_actions', :show, :current_admin => FactoryGirl.build('admin user'), :current_site_url => 'http://www.yahoo.fr') }
describe 'show menu' do
diff --git a/spec/controllers/locomotive/api_contents_controller_spec.rb b/spec/controllers/locomotive/api_contents_controller_spec.rb
deleted file mode 100644
index e55fe8fd..00000000
--- a/spec/controllers/locomotive/api_contents_controller_spec.rb
+++ /dev/null
@@ -1,91 +0,0 @@
-require 'spec_helper'
-
-describe Locomotive::ApiContentsController do
-
- before(:each) do
- @site = FactoryGirl.create('existing site')
- @site.content_types.first.tap do |content_type|
- content_type.entries_custom_fields.build :label => 'Name', :type => 'string', :required => true
- content_type.entries_custom_fields.build :label => 'Description', :type => 'text'
- content_type.entries_custom_fields.build :label => 'File', :type => 'file'
- content_type.entries_custom_fields.build :label => 'Active', :type => 'boolean'
- end.save
-
- controller.stubs(:require_site).returns(true)
- controller.stubs(:current_site).returns(@site)
- end
-
- describe 'API disabled' do
-
- it 'blocks the creation of a new instance' do
- post 'create', default_post_params
-
- response.code.should eq('403')
- response.body.should == 'Api not enabled'
- end
-
- end
-
- describe 'API enabled' do
-
- before(:each) do
- Locomotive::ContentType.any_instance.stubs(:api_enabled?).returns(true)
- end
-
- it 'saves a content' do
- post 'create', default_post_params
-
- response.should redirect_to('http://www.locomotivecms.com/success')
-
- @site.reload.content_types.first.entries.size.should == 1
- end
-
- it 'does not save a content if required parameters are missing' do
- post 'create', default_post_params(:content_entry => { :name => '' })
-
- response.should redirect_to('http://www.locomotivecms.com/failure')
-
- @site.reload.content_types.first.entries.size.should == 0
- end
-
- describe 'XSS vulnerability' do
-
- it 'sanitizes the params (simple example)' do
- post 'create', default_post_params(:content_entry => { :name => %(Hacking ) })
-
- entry = @site.reload.content_types.first.entries.first
-
- entry.name.should == "Hacking alert(\"You have been hacked\")"
- end
-
- it 'sanitizes the params (more complex example)' do
- post 'create', default_post_params(:content_entry => { :name => %(