basepack 0.0.2 → 0.1.0
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.
- checksums.yaml +4 -4
- data/Gemfile +2 -2
- data/README.md +64 -44
- data/app/assets/javascripts/basepack/loading_spinner.coffee.erb +2 -2
- data/app/controllers/basepack/base_controller.rb +22 -1
- data/app/views/forms/_bulk_edit.html.haml +1 -1
- data/app/views/forms/_export.html.haml +18 -17
- data/app/views/forms/_import.html.haml +2 -2
- data/app/views/forms/_import_configuration_csv.html.haml +10 -7
- data/app/views/forms/_query.html.haml +8 -8
- data/app/views/forms/_show.html.haml +1 -1
- data/app/views/forms/_show_without_blanks.html.haml +1 -1
- data/app/views/forms/buttons/_apply.html.haml +1 -1
- data/app/views/forms/buttons/_bulk_delete.html.haml +3 -3
- data/app/views/forms/buttons/_create.html.haml +1 -2
- data/app/views/forms/buttons/_delete.html.haml +1 -1
- data/app/views/forms/buttons/_edit.html.haml +1 -1
- data/app/views/forms/buttons/_export.html.haml +1 -2
- data/app/views/forms/buttons/_import.html.haml +1 -1
- data/app/views/forms/buttons/_print.html.haml +1 -1
- data/app/views/forms/buttons/_query.html.haml +3 -3
- data/app/views/forms/buttons/_submit_create.html.haml +1 -1
- data/app/views/forms/edit/_form_colorpicker.html.haml +4 -4
- data/app/views/forms/edit/_form_datetime.html.haml +4 -4
- data/app/views/forms/edit/_form_enumeration.html.haml +19 -20
- data/app/views/forms/edit/_tag_list_with_suggestions.html.haml +1 -1
- data/config/basepack-settings.yml +2 -1
- data/config/locales/cs.yml +60 -5
- data/config/locales/en.yml +53 -9
- data/config/locales/kaminari.en.yml +1 -1
- data/lib/basepack.rb +1 -0
- data/lib/basepack/engine.rb +1 -0
- data/lib/basepack/forms/query.rb +1 -1
- data/lib/basepack/import/model_dragonfly.rb +2 -2
- data/lib/basepack/rails_admin/fields_types/phone.rb +61 -0
- data/lib/basepack/version.rb +1 -1
- data/lib/generators/basepack/install_generator.rb +41 -24
- data/lib/generators/basepack/templates/import.rb +4 -1
- data/lib/generators/rails/scaffold_controller_generator.rb +12 -0
- data/spec/dummy_app/app/controllers/employee_with_destroyable_nesteds_controller.rb +3 -0
- data/spec/dummy_app/app/models/employee_with_destroyable_nested.rb +6 -0
- data/spec/dummy_app/config/routes.rb +6 -2
- data/spec/dummy_app/db/development.sqlite3 +0 -0
- data/spec/dummy_app/db/migrate/20140117153133_add_phone_to_employee.rb +5 -0
- data/spec/dummy_app/db/schema.rb +2 -27
- data/spec/dummy_app/db/test.sqlite3 +0 -0
- data/spec/dummy_app/log/development.log +2907 -0
- data/spec/dummy_app/log/test.log +16850 -0
- data/spec/dummy_app/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/spec/dummy_app/tmp/cache/assets/development/sprockets/6f4d8a75f9952ad791647a0c21be66d3 +0 -0
- data/spec/dummy_app/tmp/cache/assets/development/sprockets/93a7167bf36c621d305a9481e3d25bce +0 -0
- data/spec/dummy_app/tmp/cache/assets/development/sprockets/a6fad88c8628b92fa21b43b1aa76cf7d +0 -0
- data/spec/dummy_app/tmp/cache/assets/development/sprockets/b8a8c2faf730407b004ec269c26473d7 +0 -0
- data/spec/dummy_app/tmp/cache/assets/development/sprockets/cb1f853dc4682e46b8f6922910af7491 +0 -0
- data/spec/dummy_app/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/spec/dummy_app/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/0006b869e74d698c8b4e140f70f87b90 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/2d71a2a9ba73844a029c993068e478d5 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/2f416db7ec3594c66c478e2c70dc5032 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/3202398591e97bce52539e961f5516c4 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/6659113c653e0ca831f730df1b6b0558 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/780412261881a814294a5333a4a042d2 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/7af866e59b2c1fec401995dbceaf6e72 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/8618734b87c2e32d68b15881891d9286 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/93a7167bf36c621d305a9481e3d25bce +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/9b856b2df0d8b82ecd548aebe2c5268f +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/a6fad88c8628b92fa21b43b1aa76cf7d +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/c174814b8349dc263c8f65404949e933 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/c81fa603414eab811f5a75f5be6fc7a0 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/dbc50e82415d51f2497fbc2dc1983bc2 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/dcaf58e5c22740a96f5f349888c4cc6f +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/ed9f6df23839a0fd1983de2fcda43c5c +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/spec/dummy_app/tmp/capybara/capybara-201312292242327883099760.html +127 -0
- data/spec/integration/basic/edit/basepack_basic_edit_spec.rb +58 -0
- data/spec/integration/basic/show/basepack_basic_show_spec.rb +49 -0
- metadata +58 -7
- data/lib/generators/basepack/templates/dragonfly.rb +0 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 42b4c4e9de574ee382862177ef70d09534fdde0b
|
|
4
|
+
data.tar.gz: 62e39464fbf10f75dd1f47ed47806b430ceceaf1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6a1b4624838eee920a54a6103b470cea5bcb417b3388697b455507c1e1a893c43fbfc22a54e127dab2610bd926b5efd2ede84c6c5b25507b9610f5d8364e1880
|
|
7
|
+
data.tar.gz: aeef6cc1cab16311d1fb27c9e5648f30184c36eb0f7f75bf576c6a50eadb4d62493b99a11cc21b5405b1f1a1a94eacb71bae250f95909ba70e6b120de073abf5
|
data/Gemfile
CHANGED
|
@@ -16,7 +16,7 @@ group :test, :development do
|
|
|
16
16
|
gem 'capybara'
|
|
17
17
|
gem 'warden'
|
|
18
18
|
gem 'database_cleaner'
|
|
19
|
-
gem 'dragonfly', '
|
|
19
|
+
gem 'dragonfly', '~> 1.0.2'
|
|
20
20
|
gem 'rack-cache', :require => 'rack/cache'
|
|
21
21
|
gem 'paperclip', '>= 3.4'
|
|
22
22
|
gem 'timecop'
|
|
@@ -32,7 +32,7 @@ group :test, :development do
|
|
|
32
32
|
gem 'sass-rails', '~> 4.0.0'
|
|
33
33
|
gem 'bootstrap-sass', '~> 2.2'
|
|
34
34
|
gem 'launchy'
|
|
35
|
-
gem "twitter-bootstrap-rails"
|
|
35
|
+
gem "twitter-bootstrap-rails", "~> 2.2.8"
|
|
36
36
|
gem "selenium-webdriver"
|
|
37
37
|
gem "simple_form"
|
|
38
38
|
end
|
data/README.md
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
Basepack
|
|
2
2
|
=======
|
|
3
|
+
[](http://badge.fury.io/rb/basepack)
|
|
3
4
|
[](http://travis-ci.org/lksv/base_pack)
|
|
4
5
|
[](https://gemnasium.com/lksv/basepack)
|
|
5
6
|
|
|
6
7
|
**Basepack** is a Ruby on Rails framework for quick creation of information
|
|
7
|
-
systems.
|
|
8
|
+
systems.
|
|
9
|
+
|
|
10
|
+
**Basepack** dramatically helps you to start your new project.
|
|
11
|
+
There are out of the box form fields like: date (datepicker), datetime, html5
|
|
12
|
+
wysiwig, tags, file upload and others. Further more there is support for
|
|
13
|
+
dynamic field hiding depending on state of other fields as well as
|
|
14
|
+
options of selectbox content modifications dependant on other fields.
|
|
15
|
+
|
|
16
|
+
**Basepack** contains a lot of predefined forms, views and actions which you might need
|
|
17
|
+
(filter form, bulk changes, delete\_all, import, export, ...).
|
|
8
18
|
|
|
9
19
|
## Features
|
|
10
20
|
|
|
@@ -15,18 +25,24 @@ systems.
|
|
|
15
25
|
* Automatic form validation
|
|
16
26
|
* Import and Export functionality for resource
|
|
17
27
|
* Easy way to create custom actions
|
|
28
|
+
* Security: permited parameters are automatically defined against fields in edit forms which are (read-write).
|
|
18
29
|
* Authentication (via [Devise](ttps://github.com/plataformatec/devise))
|
|
19
30
|
* Authorization (via [Cancan](https://github.com/ryanb/cancan.git))
|
|
20
31
|
|
|
32
|
+
All the field form definitions are done by [RailsAdmin](https://github.com/sferik/rails_admin) and are configured
|
|
33
|
+
accordingly. It simplifies configuration process and if you wish to use
|
|
34
|
+
RailsAdmin as an admin interface.
|
|
35
|
+
|
|
36
|
+
|
|
21
37
|
## Documentation
|
|
22
38
|
|
|
23
|
-
[
|
|
39
|
+
[Tutorial](https://github.com/lksv/basepack/wiki/Tutorial)
|
|
24
40
|
|
|
25
41
|
See project [wiki](https://github.com/lksv/basepack/wiki).
|
|
26
42
|
|
|
27
43
|
## Demo
|
|
28
44
|
|
|
29
|
-
*
|
|
45
|
+
*Currently [zorec](https://github.com/zorec) is preparing
|
|
30
46
|
[basepace_example application](https://github.com/zorec/basepack_example)*
|
|
31
47
|
|
|
32
48
|
The running application will be available at [http://basepack-example.herokuapp.com/](http://basepack-example.herokuapp.com/)
|
|
@@ -35,7 +51,7 @@ The running application will be available at [http://basepack-example.herokuapp.
|
|
|
35
51
|
|
|
36
52
|
In your `Gemfile`, add the following dependencies:
|
|
37
53
|
|
|
38
|
-
gem "basepack"
|
|
54
|
+
gem "basepack"
|
|
39
55
|
|
|
40
56
|
Run:
|
|
41
57
|
|
|
@@ -45,23 +61,13 @@ And then run:
|
|
|
45
61
|
|
|
46
62
|
rails g basepack:install
|
|
47
63
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
* inherited\_resources
|
|
52
|
-
* ransack
|
|
53
|
-
* kaminari
|
|
54
|
-
* simple\_form
|
|
55
|
-
* settingslogic
|
|
56
|
-
* twitter-bootstrap-rails
|
|
57
|
-
* bootbox-rails
|
|
58
|
-
|
|
59
|
-
if you don't already have them installed.
|
|
64
|
+
The generator will install several gems. Also, generator asks to delete
|
|
65
|
+
`app/views/layouts/application.html.erb` because differend .haml version will be created.
|
|
66
|
+
If you don't know what to answer then answer 'yes' to generator's question.
|
|
60
67
|
|
|
61
|
-
|
|
62
|
-
:manage, :all``` to enable anybody to perform any
|
|
63
|
-
|
|
64
|
-
wiki](https://github.com/ryanb/cancan/wiki/Defining-Abilities).
|
|
68
|
+
In a bigger project do not forget to change ability in `app/models/ability.rb`. By
|
|
69
|
+
default, the generator adds ```can :manage, :all``` to enable anybody to perform any action on any object.
|
|
70
|
+
See more on [CanCan wiki](https://github.com/ryanb/cancan/wiki/Defining-Abilities).
|
|
65
71
|
|
|
66
72
|
Migrate your database and start the server:
|
|
67
73
|
|
|
@@ -82,14 +88,20 @@ Then
|
|
|
82
88
|
```rake db:migrate```
|
|
83
89
|
```rails s```
|
|
84
90
|
|
|
85
|
-
Notice that
|
|
91
|
+
Notice that:
|
|
92
|
+
1. Generated controllers inherits form ResourcesController.
|
|
93
|
+
2. Files for views are not generated (directories appp/views/projects
|
|
94
|
+
and appp/views/tasks are empty), but all RESTful actions are working correctly.
|
|
95
|
+
It is because views inherit default structure from controller inheritance)
|
|
96
|
+
and you can easily override these defaults by creating appropriate files.
|
|
86
97
|
|
|
87
98
|
## Basic usage
|
|
88
99
|
|
|
89
100
|
After scaffolding your resources, you can customize fields used in individual actions by [Railsdmin DSL](https://github.com/sferik/rails_admin/wiki/Railsadmin-DSL)
|
|
90
101
|
|
|
91
102
|
File ```app/models/project.rb```:
|
|
92
|
-
|
|
103
|
+
|
|
104
|
+
```ruby
|
|
93
105
|
class Project < ActiveRecord::Base
|
|
94
106
|
has_many :tasks, inverse_of: :project
|
|
95
107
|
validates :name, :short_description, presence: true
|
|
@@ -120,16 +132,27 @@ end
|
|
|
120
132
|
```
|
|
121
133
|
|
|
122
134
|
File ```app/models/task.rb```
|
|
123
|
-
```
|
|
135
|
+
```ruby
|
|
124
136
|
class Task < ActiveRecord::Base
|
|
125
137
|
belongs_to :project, inverse_of: :tasks
|
|
126
|
-
belongs_to :user
|
|
138
|
+
belongs_to :user, inverse_of: :tasks
|
|
127
139
|
end
|
|
128
140
|
```
|
|
129
|
-
|
|
141
|
+
|
|
142
|
+
Add folowing line to ```app/models/user``` file:
|
|
143
|
+
```ruby
|
|
144
|
+
has_many tasks, inverse_of: user
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Pleas note that ```inverse_of``` option is included on association. It is
|
|
148
|
+
necessary for correct functioning of **Basepack**, see
|
|
149
|
+
[Rails documentation](http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#label-Bi-directional+associations)
|
|
150
|
+
and [RailsAdmin
|
|
151
|
+
wiki](https://github.com/sferik/rails_admin/wiki/Associations-basics#inverse_of-avoiding-edit-association-spaghetti-issues)
|
|
152
|
+
for explaination.
|
|
130
153
|
|
|
131
154
|
|
|
132
|
-
|
|
155
|
+
Almoust all the staff what Baseback do is through Basepack::BaseController which inherit from ResourcesController. Full inheritance hierarchy looks this way:
|
|
133
156
|
```
|
|
134
157
|
ProjectsController < ResourcesController < Basepack::BaseController < InheritedResources::Base
|
|
135
158
|
```
|
|
@@ -137,18 +160,14 @@ ProjectsController < ResourcesController < Basepack::BaseController < InheritedR
|
|
|
137
160
|
|
|
138
161
|
If you are not familiar with [InheritedResources](https://github.com/josevalim/inherited_resources), take a look at it.
|
|
139
162
|
|
|
140
|
-
Basepack::BaseController adds to it:
|
|
141
|
-
* strong parameters handling
|
|
142
|
-
* ```options``` method
|
|
143
|
-
* ```taggings``` method
|
|
144
|
-
* ```build_resource``` method
|
|
145
|
-
|
|
146
163
|
You do NOT need to define permitted parameters anymore. It is defined by RailsAdmin DSL, more precisely by what you set as visible in edit action.
|
|
147
164
|
So file ```app/models/project.rb```:
|
|
148
165
|
|
|
149
|
-
```
|
|
166
|
+
```ruby
|
|
150
167
|
class Project < ActiveRecord::Base
|
|
151
|
-
|
|
168
|
+
#...
|
|
169
|
+
rails_admin do
|
|
170
|
+
#...
|
|
152
171
|
edit do
|
|
153
172
|
field :name
|
|
154
173
|
field :short_description
|
|
@@ -156,7 +175,7 @@ class Project < ActiveRecord::Base
|
|
|
156
175
|
field :start
|
|
157
176
|
field :finish
|
|
158
177
|
end
|
|
159
|
-
|
|
178
|
+
end
|
|
160
179
|
end
|
|
161
180
|
```
|
|
162
181
|
|
|
@@ -191,14 +210,7 @@ background architecture it is recommended to get to know at least with:
|
|
|
191
210
|
**Basepack** was also
|
|
192
211
|
inspired by [RailsAdmin](https://github.com/sferik/rails_admin) and
|
|
193
212
|
still using [RailsAdmin
|
|
194
|
-
DSL](https://github.com/sferik/rails_admin/wiki/Railsadmin-DSL) for defining the forms.
|
|
195
|
-
|
|
196
|
-
TODO - explain the concept. Class ```Basepack::Form::Base``` and ```Basepack::Form::Fields::Base```.
|
|
197
|
-
Controller action as ```<form_name>_form_for``` and ```form_factory_rails_admin```.
|
|
198
|
-
|
|
199
|
-
## Customining Views
|
|
200
|
-
|
|
201
|
-
## Customizing Form View
|
|
213
|
+
DSL](https://github.com/sferik/rails_admin/wiki/Railsadmin-DSL) for defining the forms, sessins and fields group.
|
|
202
214
|
|
|
203
215
|
License
|
|
204
216
|
=======
|
|
@@ -208,8 +220,16 @@ This project rocks and uses LGPL-LICENSE.
|
|
|
208
220
|
Credits
|
|
209
221
|
=======
|
|
210
222
|
|
|
211
|
-
[RailsAdmin](https://github.com/sferik/rails_admin) field forms was
|
|
223
|
+
[RailsAdmin](https://github.com/sferik/rails_admin) field views and some forms (export form) was
|
|
212
224
|
originaly taken from rails-admin.
|
|
213
225
|
|
|
214
226
|
[nested_form_ui](https://github.com/tb/nested_form_ui) - stylesheed and
|
|
215
227
|
code for orderable was inspired by this project.
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
[](https://github.com/igrigorik/ga-beacon)
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
@remove_spinner()
|
|
7
7
|
spinner_html: '
|
|
8
8
|
<div class="modal hide fade" id="page-spinner">
|
|
9
|
-
<div class="modal-head card-title"> <%= I18n.t :loading %></div>
|
|
9
|
+
<div class="modal-head card-title"> <%= I18n.t :"misc.loading" %></div>
|
|
10
10
|
<div class="modal-body card-body">
|
|
11
11
|
<i class="icon-spinner icon-spin icon-2x"></i>
|
|
12
|
-
 <%= I18n.t :loading %>
|
|
12
|
+
 <%= I18n.t :"misc.loading" %>
|
|
13
13
|
</div>
|
|
14
14
|
</div>
|
|
15
15
|
'
|
|
@@ -159,7 +159,7 @@ module Basepack
|
|
|
159
159
|
if filter.save
|
|
160
160
|
flash.now[:notice] = message_new_done(Basepack::Utils.model_config(filter_class).label)
|
|
161
161
|
else
|
|
162
|
-
flash.now[:error] = I18n.t
|
|
162
|
+
flash.now[:error] = I18n.t('basepack.query.error_filter')
|
|
163
163
|
end
|
|
164
164
|
end
|
|
165
165
|
|
|
@@ -491,6 +491,27 @@ module Basepack
|
|
|
491
491
|
end
|
|
492
492
|
end
|
|
493
493
|
|
|
494
|
+
# Returns array of associations which are automatically included within
|
|
495
|
+
# list form. Is is particulary handfull when you are showing some value
|
|
496
|
+
# form associated model in the list column.
|
|
497
|
+
# For example, image you need to show list of task with their assigne:
|
|
498
|
+
# class Task < ActiveRecord::Base
|
|
499
|
+
# belongs_to :assigne, class_name: 'User'
|
|
500
|
+
# delegate :name, to: assignee, prefix: true
|
|
501
|
+
# rails_admin do
|
|
502
|
+
# list do
|
|
503
|
+
# field :name
|
|
504
|
+
# field :assignee_name
|
|
505
|
+
# end
|
|
506
|
+
# end
|
|
507
|
+
# end
|
|
508
|
+
#
|
|
509
|
+
# This method returns all association of defined fields which are
|
|
510
|
+
# belongs_to_association or has_one_association type
|
|
511
|
+
# Association from the example above is included by default.
|
|
512
|
+
#
|
|
513
|
+
# You can extend/redefine this method in subclass for futher include.
|
|
514
|
+
#
|
|
494
515
|
def collection_includes
|
|
495
516
|
resource_config.fields.select do |f|
|
|
496
517
|
f.type.in?([:belongs_to_association, :has_one_association]) && !f.polymorphic?
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
.form-export
|
|
2
2
|
.well.well-small
|
|
3
|
-
|
|
3
|
+
= I18n.t('basepack.export.no_exported_items', default: [:'admin.export.no_exported_items'])
|
|
4
|
+
\:
|
|
4
5
|
%b= export_form.collection.total_count
|
|
5
6
|
|
|
6
7
|
= form_tag form.path, method: 'post', class: 'form-horizontal denser' do
|
|
@@ -14,9 +15,9 @@
|
|
|
14
15
|
%label.checkbox{:for => 'check_all'}
|
|
15
16
|
= 'Vybrat všechny pole'
|
|
16
17
|
= check_box_tag 'check_all', 'all', true, data: {toggle: "checkboxes", target: "input[name^='schema[]']"}
|
|
17
|
-
%legend= t('admin.export.select')
|
|
18
|
+
%legend= t('basepack.export.select', default: [:'admin.export.select'])
|
|
18
19
|
.control-group
|
|
19
|
-
%label.control-label{"data-toggle" => 'tooltip', title: t('admin.export.click_to_reverse_selection'), :onclick => 'jQuery(this).siblings(".controls").find("input").click()'}= t('admin.export.fields_from', :name => resource_config.label_plural.downcase)
|
|
20
|
+
%label.control-label{"data-toggle" => 'tooltip', title: t('basepack.export.click_to_reverse_selection', default: [:'admin.export.click_to_reverse_selection']), :onclick => 'jQuery(this).siblings(".controls").find("input").click()'}= t('basepack.export.fields_from', default: [:'admin.export.fields_from'], :name => resource_config.label_plural.downcase)
|
|
20
21
|
.controls
|
|
21
22
|
- form.visible_fields.select {|f| !f.association? || f.polymorphic? }.each do |field|
|
|
22
23
|
%label.checkbox{for: "schema_#{field.name}"}
|
|
@@ -25,7 +26,7 @@
|
|
|
25
26
|
|
|
26
27
|
- form.visible_fields.select {|f| f.association? && !f.polymorphic? }.each do |field|
|
|
27
28
|
.control-group
|
|
28
|
-
%label.control-label{"data-toggle" => 'tooltip', title: t('admin.export.click_to_reverse_selection'), :onclick => 'jQuery(this).siblings(".controls").find("input").click()'}= t('admin.export.fields_from_associated', :name => field.label.downcase)
|
|
29
|
+
%label.control-label{"data-toggle" => 'tooltip', title: t('basepack.export.click_to_reverse_selection', default: [:'admin.export.click_to_reverse_selection']), :onclick => 'jQuery(this).siblings(".controls").find("input").click()'}= t('basepack.export.fields_from_associated', default: [:'admin.export.fields_from_associated'], :name => field.label.downcase)
|
|
29
30
|
.controls
|
|
30
31
|
- field.nform.visible_fields.reject {|f| f.association? }.each do |afield|
|
|
31
32
|
%label.checkbox{:for => "schema_#{field.name}_#{afield.name}"}
|
|
@@ -33,38 +34,38 @@
|
|
|
33
34
|
= afield.label
|
|
34
35
|
|
|
35
36
|
%fieldset
|
|
36
|
-
%legend= t('admin.export.options_for', :name => 'csv')
|
|
37
|
+
%legend= t('basepack.export.options_for', default: [:'admin.export.options_for'], :name => 'csv')
|
|
37
38
|
-#.control-group
|
|
38
39
|
-# - guessed_encoding = (Rails.configuration.database_configuration[Rails.env]['encoding'].presence rescue 'UTF-8') || 'UTF-8'
|
|
39
|
-
-# %label.control-label{:for => "csv_options_encoding_to"}= t('admin.export.csv.encoding_to')
|
|
40
|
+
-# %label.control-label{:for => "csv_options_encoding_to"}= t('basepack.export.csv.encoding_to', default: [:'admin.export.csv.encoding_to'])
|
|
40
41
|
-# .controls
|
|
41
42
|
-# -# from http://books.google.com/support/partner/bin/answer.py?answer=30990 :
|
|
42
43
|
-# = select_tag 'csv_options[encoding_to]', options_for_select(["", "UTF-8", "UTF-16LE", "UTF-16BE", "UTF-32LE", "UTF-32BE", "UTF-7", "ISO-8859-1", "ISO-8859-15", "IBM-850", "MacRoman", "Windows-1252", "ISO-8859-3", "IBM-852", "ISO-8859-2", "MacCE", "Windows-1250", "IBM-855", "ISO-8859-5", "ISO-IR-111", "KOI8-R", "MacCyrillic", "Windows-1251", "CP-866", "KOI-U", "MacUkranian", "GB2312", "GBK", "GB18030", "HZ", "ISO-2022-CN", "Big5", "Big5-HKSCS", "EUC-TW", "EUC-JP", "ISO-2022-JP", "Shift_JIS", "EUC-KR", "UHC", "JOHAB", "ISO-2022-KR"])
|
|
43
|
-
-# %p.help-block= t('admin.export.csv.encoding_to_help', :name => guessed_encoding)
|
|
44
|
+
-# %p.help-block= t('basepack.export.csv.encoding_to_help', default: [:'admin.export.csv.encoding_to_help'], :name => guessed_encoding)
|
|
44
45
|
|
|
45
46
|
.control-group
|
|
46
|
-
%label.control-label{:for => "csv_options_skip_header"}= t('admin.export.csv.skip_header')
|
|
47
|
+
%label.control-label{:for => "csv_options_skip_header"}= t('basepack.export.csv.skip_header', default: [:'admin.export.csv.skip_header'])
|
|
47
48
|
.controls
|
|
48
49
|
= check_box_tag 'csv_options[skip_header]', 'true'
|
|
49
|
-
%p.help-block= t('admin.export.csv.skip_header_help')
|
|
50
|
+
%p.help-block= t('basepack.export.csv.skip_header_help', default: [:'admin.export.csv.skip_header_help'])
|
|
50
51
|
|
|
51
52
|
.control-group
|
|
52
|
-
%label.control-label{:for => "csv_options_col_sep"}= t('admin.export.csv.col_sep')
|
|
53
|
+
%label.control-label{:for => "csv_options_col_sep"}= t('basepack.export.csv.col_sep.label', default: [:'admin.export.csv.col_sep'])
|
|
53
54
|
.controls
|
|
54
55
|
= select_tag 'csv_options[col_sep]',
|
|
55
56
|
options_for_select({'' => Basepack::Settings.export.default_col_sep,
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
'
|
|
59
|
-
%p.help-block= t('admin.export.csv.col_sep_help', :value => Basepack::Settings.export.default_col_sep)
|
|
57
|
+
t('basepack.export.csv.col_sep.comma') => ',',
|
|
58
|
+
t('basepack.export.csv.col_sep.semicolon') => ';',
|
|
59
|
+
t('basepack.export.csv.col_sep.tab') => "'\t'" })
|
|
60
|
+
%p.help-block= t('basepack.export.csv.col_sep_help', default: [:'admin.export.csv.col_sep_help'], :value => Basepack::Settings.export.default_col_sep)
|
|
60
61
|
|
|
61
62
|
.form-actions
|
|
62
63
|
.pull-right
|
|
63
64
|
%button.btn.btn-primary{:type => "submit", :name => 'csv'}
|
|
64
65
|
%i.icon-white.icon-ok
|
|
65
|
-
= t("admin.export.confirmation", :name => 'csv')
|
|
66
|
+
= t("basepack.export.confirmation", default: :"admin.export.confirmation", :name => 'csv')
|
|
66
67
|
%button.btn.btn-info{:type => "submit", :name => 'json'}
|
|
67
|
-
= t("admin.export.confirmation", :name => 'json')
|
|
68
|
+
= t("basepack.export.confirmation", default: :"admin.export.confirmation", :name => 'json')
|
|
68
69
|
%button.btn.btn-info{:type => "submit", :name => 'xml'}
|
|
69
|
-
= t("admin.export.confirmation", :name => 'xml')
|
|
70
|
+
= t("basepack.export.confirmation", default: :"admin.export.confirmation", :name => 'xml')
|
|
70
71
|
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
%legend
|
|
1
|
+
%legend= I18n.t('basepack.import.csv.configuration')
|
|
2
2
|
|
|
3
3
|
= form.render_form do
|
|
4
4
|
.form-inputs
|
|
5
|
-
= form.builder.input :col_sep, label: t('
|
|
5
|
+
= form.builder.input :col_sep, label: t('basepack.export.csv.col_sep.label') do
|
|
6
6
|
%select{name: "import[configuration][col_sep]"}
|
|
7
|
-
= options_for_select({
|
|
8
|
-
|
|
7
|
+
= options_for_select({I18n.t('basepack.export.csv.col_sep.comma') => Basepack::Settings.import.default_col_sep,
|
|
8
|
+
I18n.t('basepack.export.csv.col_sep.semicolon') => ';',
|
|
9
|
+
I18n.t('basepack.export.csv.col_sep.tab') => "'\t'"},
|
|
10
|
+
configuration[:col_sep] || ',')
|
|
11
|
+
= form.builder.input :blank_vals, label: I18n.t('basepack.import.csv.blank_vals.label') do
|
|
9
12
|
%select{name: "import[configuration][blank_vals]"}
|
|
10
|
-
= options_for_select({
|
|
13
|
+
= options_for_select({I18n.t('basepack.import.csv.blank_vals.skip') => 'skip', I18n.t('basepack.import.csv.blank_vals.use') => 'use'}, configuration[:blank_vals] || 'skip')
|
|
11
14
|
%hr
|
|
12
15
|
- mapping = configuration[:mapping] || []
|
|
13
16
|
- csv_cols.each_with_index do |col, i|
|
|
14
|
-
= form.builder.input :"col_#{i}", label: html_escape(col.presence ||
|
|
17
|
+
= form.builder.input :"col_#{i}", label: html_escape(col.presence || I18n.t('basepack.import.csv.column', idx: i+1)) do
|
|
15
18
|
%select{name: "import[configuration][mapping][]"}
|
|
16
19
|
= options_for_select(select_options, select_options.find {|o| o[0] == col} || mapping[i])
|
|
17
20
|
.form-actions
|
|
@@ -20,4 +23,4 @@
|
|
|
20
23
|
%button.btn.btn-primary{type: "submit", name: "import[state]", value: "not_started",
|
|
21
24
|
'data-disable-with' => "<i class='icon-white icon-ok'></i> #{t("admin.form.save")}"}
|
|
22
25
|
%i.icon-white.icon-ok
|
|
23
|
-
|
|
26
|
+
= I18n.t('basepack.import.csv.start')
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
html: {method: :post, id: 'filter-form', class: 'form-horizontal form-search'} do |f|
|
|
4
4
|
.modal-header
|
|
5
5
|
= render 'forms/buttons/modal_close'
|
|
6
|
-
%h3= I18n.t('
|
|
6
|
+
%h3= I18n.t('basepack.query.filter')
|
|
7
7
|
|
|
8
8
|
.modal-body
|
|
9
9
|
= form_display_base_errors form.resource_filter
|
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
= yield(:query)
|
|
12
12
|
- else
|
|
13
13
|
.input-append
|
|
14
|
-
= text_field_tag 'query', form.query, autofocus: true, placeholder: I18n.t('
|
|
15
|
-
%button{type: "submit", class: "btn", title: I18n.t('
|
|
14
|
+
= text_field_tag 'query', form.query, autofocus: true, placeholder: I18n.t('basepack.query.filter'), class: "search-query"
|
|
15
|
+
%button{type: "submit", class: "btn", title: I18n.t('basepack.query.filter'), 'data-disable-with' => "<i class='icon-search'></i>"}
|
|
16
16
|
%i.icon-search
|
|
17
17
|
#complex-filters-menu.dropdown.pull-right
|
|
18
18
|
%a.btn.dropdown-toggle{href: "#", "data-toggle" => "dropdown"}
|
|
19
|
-
= I18n.t('
|
|
19
|
+
= I18n.t('basepack.query.add_filter')
|
|
20
20
|
%span.caret
|
|
21
21
|
= render "forms/query_menu", form: form
|
|
22
22
|
.clearfix
|
|
@@ -35,18 +35,18 @@
|
|
|
35
35
|
- unless form.edit_ql
|
|
36
36
|
= button_tag class: 'btn', name: 'edit_ql', data: {"remote-form" => "parent=form", "remote-target" => "parent=.form-query"} do
|
|
37
37
|
%i.icon-pencil
|
|
38
|
-
=I18n.t('
|
|
38
|
+
=I18n.t('basepack.query.modify_query')
|
|
39
39
|
- if Basepack::Settings.filters.model_name and can?(:create, Basepack::Settings.filters.model_name.constantize)
|
|
40
40
|
= hidden_field_tag 'filter_name'
|
|
41
|
-
= button_tag class: 'btn', id: 'filter-add', title: I18n.t('
|
|
41
|
+
= button_tag class: 'btn', id: 'filter-add', title: I18n.t('basepack.query.save_filter') do
|
|
42
42
|
%i.icon-plus
|
|
43
|
-
=I18n.t('
|
|
43
|
+
=I18n.t('basepack.query.save_filter')
|
|
44
44
|
:javascript
|
|
45
45
|
jQuery(function($) {
|
|
46
46
|
$("#filter-add").click(function(e) {
|
|
47
47
|
e.preventDefault();
|
|
48
48
|
|
|
49
|
-
bootbox.prompt(#{I18n.t('
|
|
49
|
+
bootbox.prompt(#{I18n.t('basepack.query.enter_filter_name').to_json}, function(result) {
|
|
50
50
|
if (result) {
|
|
51
51
|
$('#filter-form input[name=filter_name]').val(result);
|
|
52
52
|
$('#filter-form').submit();
|