shoestrap 1.1.1 → 1.2.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +45 -0
- data/features/command_wrapper_helper.rb +2 -2
- data/features/features_helper.rb +1 -1
- data/features/shoestrap/generators/admin_generator_spec.rb +50 -0
- data/features/shoestrap/generators/cms_generator_spec.rb +5 -0
- data/lib/generators/shoestrap/admin_generator.rb +75 -0
- data/lib/generators/shoestrap/base_generator.rb +7 -2
- data/lib/generators/shoestrap/cms_generator.rb +13 -9
- data/lib/shoestrap/version.rb +1 -1
- data/shoestrap.gemspec +2 -0
- data/templates/admin_generator/devise.html.haml +16 -0
- data/templates/admin_generator/devise_views/mailer/reset_password_instructions.html.haml +6 -0
- data/templates/admin_generator/devise_views/mailer/unlock_instructions.html.haml +5 -0
- data/templates/admin_generator/devise_views/passwords/edit.html.haml +11 -0
- data/templates/admin_generator/devise_views/passwords/new.html.haml +8 -0
- data/templates/admin_generator/devise_views/sessions/new.html.haml +9 -0
- data/templates/admin_generator/devise_views/shared/_links.haml +19 -0
- data/templates/admin_generator/translations/admin.de.yml +20 -0
- data/templates/admin_generator/translations/devise_admin.de.yml +31 -0
- data/templates/cms_generator/_main_navigation.html.haml +0 -1
- data/templates/cms_generator/base_controller_with_kuhsaft.rb +1 -1
- data/templates/cms_generator/base_controller_without_kuhsaft.rb +1 -1
- data/templates/cms_generator/inherited_views/base/_form.html.haml +4 -1
- data/templates/cms_generator/translations/{resource.yml → resource.yml.erb} +6 -4
- data/templates/cms_generator/translations/shoestrap_base.yml +1 -1
- metadata +17 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1ba2f15eb6a56881dad023f467e41abd045607d
|
4
|
+
data.tar.gz: 208c4381a6cf5d67ea8861b765f06f2fa3d7c58f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 382a19a644f9e9217c39bb9ac276bea57fbde51fdd1cd09b76c0023b891ccc1251317ee5c1efc55b2d2e9a2da87dc028614930889029f6d479bc0f3212a472fd
|
7
|
+
data.tar.gz: f1fb21c9875c81059c2ef5f1308dd0b7fd44cfc545647d14247282e1725d35c765fd9ccbac77054686021bea55ac8d8112f011da295336f3d4c07de20296d639
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -15,6 +15,51 @@ work. Your mileage may vary!
|
|
15
15
|
|
16
16
|
# Building a Rails App with shoestrap
|
17
17
|
|
18
|
+
## Generating a new application
|
19
|
+
|
20
|
+
You can generate a new rails application with shoestrap by using the
|
21
|
+
shoestrap new command:
|
22
|
+
|
23
|
+
```
|
24
|
+
shoestrap new foo
|
25
|
+
```
|
26
|
+
|
27
|
+
Since `shoestrap new` is just a wrapper for rails new, the options you
|
28
|
+
can pass to rails new can also be given to shoestrap. Additionally you
|
29
|
+
can specify following shoestrap specific options on the command line:
|
30
|
+
|
31
|
+
```
|
32
|
+
--kuhsaft=true # Will install and set up the Rails app with Kuhsaft
|
33
|
+
--css=bootstrap # Will set up the app to use the given CSS
|
34
|
+
# Framework. Available frameworks: foundation, bootstrap
|
35
|
+
```
|
36
|
+
|
37
|
+
## Generating a CMS Resource
|
38
|
+
|
39
|
+
Use the cms generator to generate a simple CRUD Backend for a given
|
40
|
+
resource:
|
41
|
+
|
42
|
+
```
|
43
|
+
rails generate shoestrap:cms car wheels:integer model:string
|
44
|
+
rake db:migrate
|
45
|
+
```
|
46
|
+
|
47
|
+
In the generated model you can specify which attributes are shown in the
|
48
|
+
index view, and which attributes are editable.
|
49
|
+
|
50
|
+
The CRUD Backend will be available under /cms/<resource-name>
|
51
|
+
|
52
|
+
## CMS Resources and Associations
|
53
|
+
|
54
|
+
If you want to show the name of an associaton, build a wrapper method
|
55
|
+
for it in the model and add it to the index_attributes.
|
56
|
+
|
57
|
+
## Adding Authentication to the CMS
|
58
|
+
|
59
|
+
The shoestrap admin generator will add an Admin model that uses devise
|
60
|
+
for authentication. It is not registerable, so you will have to create
|
61
|
+
the first user in the rails console.
|
62
|
+
|
18
63
|
## Meta Tags
|
19
64
|
|
20
65
|
Shoestrap expects you to define a `content_for :head block` where you
|
@@ -33,7 +33,7 @@ def generate_test_app_with_shoestrap(options=nil)
|
|
33
33
|
# destroy all scaffolds
|
34
34
|
Dir['app/models/*.rb','app/models/cms/*.rb'].each do |path|
|
35
35
|
model_name = File.basename(path).gsub(File.extname(path),'')
|
36
|
-
drop_shoestrap_scaffold_for
|
36
|
+
drop_shoestrap_scaffold_for(model_name, options) unless model_name == 'admin'
|
37
37
|
end
|
38
38
|
|
39
39
|
result = bundle_exec 'rake db:drop db:create db:migrate db:seed'
|
@@ -91,4 +91,4 @@ end
|
|
91
91
|
|
92
92
|
def ts
|
93
93
|
Time.now.strftime('%H:%M:%S')
|
94
|
-
end
|
94
|
+
end
|
data/features/features_helper.rb
CHANGED
@@ -0,0 +1,50 @@
|
|
1
|
+
require_relative '../../features_helper'
|
2
|
+
|
3
|
+
describe 'rails generate shoestrap:admin' do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
generate_test_app_with_shoestrap
|
7
|
+
rails 'generate shoestrap:admin'
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:app_path){ application_path }
|
11
|
+
|
12
|
+
it 'generates an admin cms model' do
|
13
|
+
expect(application_file('app/models/admin.rb')).not_to be_nil
|
14
|
+
expect(Dir.glob("#{app_path}/db/migrate/*create*admins*").size).to be 1
|
15
|
+
expect(application_file('config/routes.rb')).to match(/resources :admins/)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'installs devise' do
|
19
|
+
expect(application_file('Gemfile')).to match('devise')
|
20
|
+
expect(application_file('config/initializers/devise.rb')).not_to be_nil
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'disables the devise registerable module' do
|
24
|
+
expect(application_file('app/models/admin.rb')).not_to match(':registerable')
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'configures devise to use the devise layout' do
|
28
|
+
expect(application_file('config/initializers/devise.rb')).to match("devise_layout = 'devise'")
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'adds a before filter to kuhsaft controller' do
|
32
|
+
expect(application_file('config/initializers/kuhsaft.rb')).to match('before_filter :authenticate_admin!')
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'adds a before filter to shoestrap base controller' do
|
36
|
+
expect(application_file('app/controllers/shoestrap/base_controller.rb')).to match('before_filter :authenticate_admin!')
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'installs the devise layout' do
|
40
|
+
expect(application_file('app/views/layouts/devise.html.haml')).not_to be_nil
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'installs the devise views' do
|
44
|
+
expect(application_file('app/views/admins/sessions/new.html.haml')).not_to be_nil
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'installs the devise translations' do
|
48
|
+
expect(application_file('config/locales/de/admin.yml')).not_to be_nil
|
49
|
+
end
|
50
|
+
end
|
@@ -54,6 +54,11 @@ describe 'rails generate shoestrap:cms' do
|
|
54
54
|
expect(application_file('app/models/car.rb', options)).not_to be_nil
|
55
55
|
end
|
56
56
|
|
57
|
+
it 'uses the fields given in the command line to pre-fill editable and index attributes' do
|
58
|
+
expect(application_file('app/models/car.rb', options)).to match('editable_attributes :tires, :model')
|
59
|
+
expect(application_file('app/models/car.rb', options)).to match('index_attributes :tires, :model')
|
60
|
+
end
|
61
|
+
|
57
62
|
it 'generates a migration' do
|
58
63
|
expect(Dir.glob("#{app_path}/db/migrate/*create*cars*").size).to be 1
|
59
64
|
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'fileutils'
|
3
|
+
require_relative 'base_generator'
|
4
|
+
require_relative '../../shoestrap/shell'
|
5
|
+
|
6
|
+
module Shoestrap
|
7
|
+
class AdminGenerator < BaseGenerator
|
8
|
+
|
9
|
+
# FIXME: set editable attributes => could be fixed by dynamic editable attributes generation in cms generator
|
10
|
+
|
11
|
+
def generate_admin_model
|
12
|
+
generate 'shoestrap:cms', 'admin', 'first_name:string last_name:string'
|
13
|
+
end
|
14
|
+
|
15
|
+
def add_gems_and_bundle
|
16
|
+
gem 'devise'
|
17
|
+
gem 'devise-i18n'
|
18
|
+
Shell.exec('bundle')
|
19
|
+
ENV['BUNDLE_GEMFILE'] = File.join(Dir.pwd, 'Gemfile')
|
20
|
+
require 'bundler'
|
21
|
+
Bundler.require(:default)
|
22
|
+
end
|
23
|
+
|
24
|
+
def setup_devise
|
25
|
+
generate 'devise:install'
|
26
|
+
generate 'devise', 'admin'
|
27
|
+
gsub_file 'config/initializers/devise.rb', ' # config.scoped_views = false', ' config.scoped_views = true'
|
28
|
+
inject_into_file 'config/initializers/devise.rb', before: '# Use this hook to configure devise mailer, warden hooks and so forth.' do
|
29
|
+
<<-eos.gsub(/^ {8}/, '').chomp
|
30
|
+
Rails.application.config.to_prepare do
|
31
|
+
devise_layout = 'devise'
|
32
|
+
Devise::SessionsController.layout devise_layout
|
33
|
+
Devise::RegistrationsController.layout devise_layout
|
34
|
+
Devise::ConfirmationsController.layout devise_layout
|
35
|
+
Devise::UnlocksController.layout devise_layout
|
36
|
+
Devise::PasswordsController.layout devise_layout
|
37
|
+
end
|
38
|
+
|
39
|
+
eos
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def disable_registration
|
44
|
+
gsub_file 'app/models/admin.rb', / :registerable,/, ''
|
45
|
+
end
|
46
|
+
|
47
|
+
def add_before_filters
|
48
|
+
inject_into_file 'app/controllers/shoestrap/base_controller.rb', "before_filter :authenticate_admin!\n\n", before: 'def show'
|
49
|
+
inject_into_file 'config/initializers/kuhsaft.rb', before: ' Kuhsaft::Engine.configure do' do
|
50
|
+
<<-eos.gsub(/^ {4}/, '').chomp
|
51
|
+
Kuhsaft::Cms::AdminController.class_eval do
|
52
|
+
before_filter :authenticate_admin!
|
53
|
+
end
|
54
|
+
|
55
|
+
eos
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def install_views
|
60
|
+
copy_file 'devise.html.haml', 'app/views/layouts/devise.html.haml'
|
61
|
+
directory 'devise_views', 'app/views/admins'
|
62
|
+
end
|
63
|
+
|
64
|
+
def install_translations
|
65
|
+
copy_file 'translations/devise_admin.de.yml', 'config/locales/de/devise_admin.yml'
|
66
|
+
copy_file 'translations/admin.de.yml', 'config/locales/de/admin.yml', force: true
|
67
|
+
end
|
68
|
+
|
69
|
+
def add_logout_link
|
70
|
+
inject_into_file 'app/views/kuhsaft/cms/admin/_main_navigation.html.haml',
|
71
|
+
" = link_to t('.logout'), destroy_admin_session_path, :method => :delete\n",
|
72
|
+
after: "%p.navbar-text.pull-right\n"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -8,6 +8,11 @@ module Shoestrap
|
|
8
8
|
end
|
9
9
|
|
10
10
|
private
|
11
|
+
|
12
|
+
def kuhsaft_is_installed?
|
13
|
+
@kuhsaft_is_installed ||= !!defined?(Kuhsaft)
|
14
|
+
end
|
15
|
+
|
11
16
|
def shoestrap_logger
|
12
17
|
self.class.shoestrap_logger
|
13
18
|
end
|
@@ -26,6 +31,7 @@ module Shoestrap
|
|
26
31
|
end
|
27
32
|
|
28
33
|
private
|
34
|
+
|
29
35
|
def rails_root
|
30
36
|
if defined?(Rails) && Rails.respond_to?(:root)
|
31
37
|
Rails.root.to_s
|
@@ -36,6 +42,5 @@ module Shoestrap
|
|
36
42
|
end
|
37
43
|
end
|
38
44
|
end
|
39
|
-
|
40
45
|
end
|
41
|
-
end
|
46
|
+
end
|
@@ -22,13 +22,13 @@ module Shoestrap
|
|
22
22
|
def add_navigation_link
|
23
23
|
if kuhsaft_is_installed?
|
24
24
|
inject_into_file 'config/cms_navigation.rb', :before => 'primary.dom_class = \'nav\'' do
|
25
|
-
"primary.item :#{model_name}_nav, t('cms.#{
|
25
|
+
"primary.item :#{model_name}_nav, t('cms.#{plural_name}.navigation_title'), #{route_name}_path\n "
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
30
|
def add_model_and_migration
|
31
|
-
generate 'model', model_name
|
31
|
+
generate 'model', model_name, ARGV[1..-1].join(' ')
|
32
32
|
inject_into_file "app/models/#{model_name}.rb", before: 'class' do
|
33
33
|
"require 'shoestrap/cms_model'\n\n"
|
34
34
|
end
|
@@ -38,17 +38,17 @@ module Shoestrap
|
|
38
38
|
include Shoestrap::CMSModel
|
39
39
|
|
40
40
|
# TODO: Define what attributes are shown in the form and permitted by strong parameters
|
41
|
-
|
41
|
+
editable_attributes #{attribute_keys_as_string}
|
42
42
|
|
43
43
|
# TODO: Define what attributes are shown in the index view
|
44
|
-
|
44
|
+
index_attributes #{attribute_keys_as_string}
|
45
45
|
|
46
46
|
eos
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
50
|
def add_resource_translations
|
51
|
-
|
51
|
+
template 'translations/resource.yml.erb', "config/locales/de/#{model_name}.yml"
|
52
52
|
end
|
53
53
|
|
54
54
|
def add_controller
|
@@ -89,10 +89,6 @@ module Shoestrap
|
|
89
89
|
copy_file 'translations/shoestrap_base.yml', 'config/locales/de/shoestrap_base.yml'
|
90
90
|
end
|
91
91
|
|
92
|
-
def kuhsaft_is_installed?
|
93
|
-
@kuhsaft_is_installed ||= !!defined?(Kuhsaft)
|
94
|
-
end
|
95
|
-
|
96
92
|
def resource_route_name
|
97
93
|
"cms/#{model_name}"
|
98
94
|
end
|
@@ -112,5 +108,13 @@ module Shoestrap
|
|
112
108
|
def route_name
|
113
109
|
controller_name.gsub('/', '_')
|
114
110
|
end
|
111
|
+
|
112
|
+
def attributes
|
113
|
+
ARGV[1..-1].map {|x| x.split(':').first }
|
114
|
+
end
|
115
|
+
|
116
|
+
def attribute_keys_as_string
|
117
|
+
ARGV[1..-1].map {|x| ":#{x.split(':').first}" }.join(', ')
|
118
|
+
end
|
115
119
|
end
|
116
120
|
end
|
data/lib/shoestrap/version.rb
CHANGED
data/shoestrap.gemspec
CHANGED
@@ -36,6 +36,8 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.add_development_dependency "modernizr-rails"
|
37
37
|
spec.add_development_dependency "pry-rails"
|
38
38
|
spec.add_development_dependency "rails-i18n"
|
39
|
+
spec.add_development_dependency "devise-i18n"
|
40
|
+
spec.add_development_dependency "devise"
|
39
41
|
spec.add_development_dependency "i18n-missing_translations"
|
40
42
|
spec.add_development_dependency "capybara"
|
41
43
|
spec.add_development_dependency "capybara-webkit"
|
@@ -0,0 +1,16 @@
|
|
1
|
+
!!!
|
2
|
+
%html
|
3
|
+
%head
|
4
|
+
%meta{ charset: "utf-8" }
|
5
|
+
%title Screen Concept CMS
|
6
|
+
= stylesheet_link_tag 'kuhsaft/cms/application.css', :media => 'screen, projection'
|
7
|
+
= stylesheet_link_tag 'kuhsaft/cms/customizations.css', :media => 'screen, projection'
|
8
|
+
= csrf_meta_tag
|
9
|
+
|
10
|
+
%body
|
11
|
+
.container.cms
|
12
|
+
.row
|
13
|
+
.span3
|
14
|
+
.span6
|
15
|
+
= yield
|
16
|
+
.span3
|
@@ -0,0 +1,6 @@
|
|
1
|
+
%p
|
2
|
+
Hello #{@resource.email}!
|
3
|
+
%p Someone has requested a link to change your password. You can do this through the link below.
|
4
|
+
%p= link_to 'Change my password', edit_password_url(@resource, :reset_password_token => @resource.reset_password_token)
|
5
|
+
%p If you didn't request this, please ignore this email.
|
6
|
+
%p Your password won't change until you access the link above and create a new one.
|
@@ -0,0 +1,5 @@
|
|
1
|
+
%p
|
2
|
+
Hello #{@resource.email}!
|
3
|
+
%p Your account has been locked due to an excessive number of unsuccessful sign in attempts.
|
4
|
+
%p Click the link below to unlock your account:
|
5
|
+
%p= link_to 'Unlock my account', unlock_url(@resource, :unlock_token => @resource.unlock_token)
|
@@ -0,0 +1,11 @@
|
|
1
|
+
%h2= t('devise.change_password')
|
2
|
+
= simple_form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put }, :wrapper => :bootstrap) do |f|
|
3
|
+
= f.error_notification
|
4
|
+
= f.input :reset_password_token, :as => :hidden
|
5
|
+
= f.full_error :reset_password_token
|
6
|
+
.form-inputs
|
7
|
+
= f.input :password, :label => t("devise.new_password"), :required => true, :autofocus => true
|
8
|
+
= f.input :password_confirmation, :label => t("devise.confirm_new_password"), :required => true
|
9
|
+
.form-actions
|
10
|
+
= f.button :submit, t('devise.change_password')
|
11
|
+
= render "admin/shared/links"
|
@@ -0,0 +1,8 @@
|
|
1
|
+
%h2= t('devise.forgot_password')
|
2
|
+
= simple_form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post }, :wrapper => :bootstrap) do |f|
|
3
|
+
= f.error_notification
|
4
|
+
.form-inputs
|
5
|
+
= f.input :email, :required => true, :autofocus => true
|
6
|
+
.form-actions
|
7
|
+
= f.button :submit, t('devise.send_reset_password_instructions')
|
8
|
+
= render "admins/shared/links"
|
@@ -0,0 +1,9 @@
|
|
1
|
+
%h2=t('devise.sign_in')
|
2
|
+
= simple_form_for(resource, :as => resource_name, :url => session_path(resource_name), :wrapper => :bootstrap) do |f|
|
3
|
+
.form-inputs
|
4
|
+
= f.input :email, :required => false, :autofocus => true
|
5
|
+
= f.input :password, :required => false
|
6
|
+
= f.input :remember_me, :as => :boolean if devise_mapping.rememberable?
|
7
|
+
.form-actions
|
8
|
+
= f.button :submit, t('devise.sign_in')
|
9
|
+
= render "admins/shared/links"
|
@@ -0,0 +1,19 @@
|
|
1
|
+
- if controller_name != 'sessions'
|
2
|
+
= link_to t("devise.sign_in"), new_session_path(resource_name)
|
3
|
+
%br/
|
4
|
+
- if devise_mapping.registerable? && controller_name != 'registrations'
|
5
|
+
= link_to t("devise.sign_up"), new_registration_path(resource_name)
|
6
|
+
%br/
|
7
|
+
- if devise_mapping.recoverable? && controller_name != 'passwords'
|
8
|
+
= link_to t("devise.forgot_password"), new_password_path(resource_name)
|
9
|
+
%br/
|
10
|
+
- if devise_mapping.confirmable? && controller_name != 'confirmations'
|
11
|
+
= link_to t("devise.no_confirmation"), new_confirmation_path(resource_name)
|
12
|
+
%br/
|
13
|
+
- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks'
|
14
|
+
= link_to t("devise.no_unlock"), new_unlock_path(resource_name)
|
15
|
+
%br/
|
16
|
+
- if devise_mapping.omniauthable?
|
17
|
+
- resource_class.omniauth_providers.each do |provider|
|
18
|
+
= link_to "#{t('devise.sign_in_with')} #{provider.to_s.titleize}", omniauth_authorize_path(resource_name, provider)
|
19
|
+
%br/
|
@@ -0,0 +1,20 @@
|
|
1
|
+
de:
|
2
|
+
cms:
|
3
|
+
admins:
|
4
|
+
singular_name: Administrator
|
5
|
+
plural_name: Administratoren
|
6
|
+
navigation_title: Administratoren
|
7
|
+
|
8
|
+
activerecord:
|
9
|
+
attributes:
|
10
|
+
admin:
|
11
|
+
first_name: Vorname
|
12
|
+
last_name: Nachname
|
13
|
+
password: Passwort
|
14
|
+
password_confirmation: Passwort Bestätigung
|
15
|
+
email: E-Mail
|
16
|
+
|
17
|
+
models:
|
18
|
+
admin:
|
19
|
+
one: Administrator
|
20
|
+
other: Administartoren
|
@@ -0,0 +1,31 @@
|
|
1
|
+
de:
|
2
|
+
devise:
|
3
|
+
forgot_password: "Passwort vergessen?"
|
4
|
+
sign_up: "Registrieren"
|
5
|
+
sign_in: "Anmelden"
|
6
|
+
no_confirmation: "Kein Bestätigungsmail erhalten?"
|
7
|
+
no_unlock: "Keine E-Mail mit Informationen zum Entsperren erhalten?"
|
8
|
+
sign_in_with: "Anmelden mit"
|
9
|
+
send_reset_password_instructions: "Passwort zurücksetzen"
|
10
|
+
resend_unlock_instructions: "Konto entsperren"
|
11
|
+
logout: "Abmelden"
|
12
|
+
login: "Anmelden"
|
13
|
+
|
14
|
+
failure:
|
15
|
+
user:
|
16
|
+
not_found_in_database: "Ungültige Anmeldedaten."
|
17
|
+
admin:
|
18
|
+
not_found_in_database: "Ungültige Anmeldedaten."
|
19
|
+
|
20
|
+
activerecord:
|
21
|
+
errors:
|
22
|
+
models:
|
23
|
+
admin:
|
24
|
+
attributes:
|
25
|
+
email:
|
26
|
+
blank: 'Darf nicht leer sein!'
|
27
|
+
attributes:
|
28
|
+
user:
|
29
|
+
remember_me: "Angemeldet bleiben"
|
30
|
+
admin:
|
31
|
+
remember_me: "Angemeldet bleiben"
|
@@ -3,7 +3,10 @@
|
|
3
3
|
|
4
4
|
.form-inputs
|
5
5
|
- resource.class.editable_attributes.each do |column_name|
|
6
|
-
|
6
|
+
- if column_name.to_s.end_with? '_id'
|
7
|
+
= f.association column_name.to_s.gsub(/_id$/, '').to_sym
|
8
|
+
- else
|
9
|
+
= f.input column_name
|
7
10
|
|
8
11
|
.form-actions
|
9
12
|
= f.button :submit
|
@@ -1,16 +1,18 @@
|
|
1
1
|
de:
|
2
2
|
cms:
|
3
|
-
|
3
|
+
<%= plural_name %>:
|
4
4
|
singular_name: TRANSLATEME
|
5
5
|
plural_name: TRANSLATEME
|
6
6
|
navigation_title: TRANSLATEME
|
7
7
|
|
8
8
|
activerecord:
|
9
9
|
attributes:
|
10
|
-
|
11
|
-
|
10
|
+
<%= model_name %>:
|
11
|
+
<% attributes.each do |attr| -%>
|
12
|
+
<%= "#{attr}: TRANSLATE ME" %>
|
13
|
+
<% end -%>
|
12
14
|
|
13
15
|
models:
|
14
|
-
|
16
|
+
<%= model_name %>:
|
15
17
|
one: TRANSLATEME
|
16
18
|
other: TRANSLATEME
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shoestrap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0.pre1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felipe Kaufmann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -190,6 +190,7 @@ files:
|
|
190
190
|
- features/features_helper.rb
|
191
191
|
- features/postgres_helper.rb
|
192
192
|
- features/shoestrap/commands/new_command_spec.rb
|
193
|
+
- features/shoestrap/generators/admin_generator_spec.rb
|
193
194
|
- features/shoestrap/generators/bdd_generator_spec.rb
|
194
195
|
- features/shoestrap/generators/bootstrap_generator_spec.rb
|
195
196
|
- features/shoestrap/generators/cms_generator_spec.rb
|
@@ -198,6 +199,7 @@ files:
|
|
198
199
|
- features/shoestrap/generators/kuhsaft_generator_spec.rb
|
199
200
|
- features/shoestrap/generators/smacss_files_generator_spec.rb
|
200
201
|
- features/shoestrap/generators/view_files_generator_spec.rb
|
202
|
+
- lib/generators/shoestrap/admin_generator.rb
|
201
203
|
- lib/generators/shoestrap/base_generator.rb
|
202
204
|
- lib/generators/shoestrap/bdd_generator.rb
|
203
205
|
- lib/generators/shoestrap/bootstrap_generator.rb
|
@@ -223,6 +225,15 @@ files:
|
|
223
225
|
- spec/shoestrap/cli_spec.rb
|
224
226
|
- spec/shoestrap/cms_model.rb
|
225
227
|
- spec/spec_helper.rb
|
228
|
+
- templates/admin_generator/devise.html.haml
|
229
|
+
- templates/admin_generator/devise_views/mailer/reset_password_instructions.html.haml
|
230
|
+
- templates/admin_generator/devise_views/mailer/unlock_instructions.html.haml
|
231
|
+
- templates/admin_generator/devise_views/passwords/edit.html.haml
|
232
|
+
- templates/admin_generator/devise_views/passwords/new.html.haml
|
233
|
+
- templates/admin_generator/devise_views/sessions/new.html.haml
|
234
|
+
- templates/admin_generator/devise_views/shared/_links.haml
|
235
|
+
- templates/admin_generator/translations/admin.de.yml
|
236
|
+
- templates/admin_generator/translations/devise_admin.de.yml
|
226
237
|
- templates/application_generator/_typekit.html.haml
|
227
238
|
- templates/application_generator/application.html.haml
|
228
239
|
- templates/application_generator/application_helper.rb
|
@@ -243,7 +254,7 @@ files:
|
|
243
254
|
- templates/cms_generator/inherited_views/base/edit.html.haml
|
244
255
|
- templates/cms_generator/inherited_views/base/index.html.haml
|
245
256
|
- templates/cms_generator/inherited_views/base/new.html.haml
|
246
|
-
- templates/cms_generator/translations/resource.yml
|
257
|
+
- templates/cms_generator/translations/resource.yml.erb
|
247
258
|
- templates/cms_generator/translations/shoestrap_base.yml
|
248
259
|
- templates/coffee_files_generator/application.js.coffee
|
249
260
|
- templates/foundation_generator/_mixin.css.sass
|
@@ -280,9 +291,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
280
291
|
version: '0'
|
281
292
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
282
293
|
requirements:
|
283
|
-
- - '
|
294
|
+
- - '>'
|
284
295
|
- !ruby/object:Gem::Version
|
285
|
-
version:
|
296
|
+
version: 1.3.1
|
286
297
|
requirements: []
|
287
298
|
rubyforge_project:
|
288
299
|
rubygems_version: 2.0.3
|
@@ -295,6 +306,7 @@ test_files:
|
|
295
306
|
- features/features_helper.rb
|
296
307
|
- features/postgres_helper.rb
|
297
308
|
- features/shoestrap/commands/new_command_spec.rb
|
309
|
+
- features/shoestrap/generators/admin_generator_spec.rb
|
298
310
|
- features/shoestrap/generators/bdd_generator_spec.rb
|
299
311
|
- features/shoestrap/generators/bootstrap_generator_spec.rb
|
300
312
|
- features/shoestrap/generators/cms_generator_spec.rb
|