r4 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +4 -0
  3. data/README.md +64 -0
  4. data/Rakefile +2 -0
  5. data/bin/console +14 -0
  6. data/bin/r4 +4 -0
  7. data/bin/setup +7 -0
  8. data/lib/r4.rb +5 -0
  9. data/lib/r4/config.rb +12 -0
  10. data/lib/r4/installations/default.rb +44 -0
  11. data/lib/r4/installations/testing.rb +4 -0
  12. data/lib/r4/odin.rb +76 -0
  13. data/lib/r4/recipes/bootstrap.rb +9 -0
  14. data/lib/r4/recipes/bootstrap_app.rb +10 -0
  15. data/lib/r4/recipes/devise.rb +94 -0
  16. data/lib/r4/recipes/exception_notification.rb +10 -0
  17. data/lib/r4/recipes/gemfile.rb +34 -0
  18. data/lib/r4/recipes/gitignore.rb +8 -0
  19. data/lib/r4/recipes/install_questions.rb +20 -0
  20. data/lib/r4/recipes/lazy_high_charts.rb +18 -0
  21. data/lib/r4/recipes/mysql.rb +22 -0
  22. data/lib/r4/recipes/rspec_generators.rb +18 -0
  23. data/lib/r4/recipes/upload_app.rb +9 -0
  24. data/lib/r4/recipes/wicked_pdf.rb +35 -0
  25. data/lib/r4/recipes/xlsx_support.rb +6 -0
  26. data/lib/r4/starter.rb +116 -0
  27. data/lib/r4/template/.ruby-version +1 -0
  28. data/lib/r4/template/app/assets/javascripts/main.js.rb +11 -0
  29. data/lib/r4/template/app/assets/stylesheets/custom.css.scss +128 -0
  30. data/lib/r4/template/app/assets/stylesheets/main.css.scss +7 -0
  31. data/lib/r4/template/app/assets/stylesheets/theme.css +7089 -0
  32. data/lib/r4/template/app/assets/stylesheets/timepress.css.scss +127 -0
  33. data/lib/r4/template/app/controllers/users_controller.rb +106 -0
  34. data/lib/r4/template/app/views/layouts/application.html.erb +64 -0
  35. data/lib/r4/template/app/views/users/_form.html.erb +64 -0
  36. data/lib/r4/template/app/views/users/edit.html.erb +10 -0
  37. data/lib/r4/template/app/views/users/edit_password.html.erb +49 -0
  38. data/lib/r4/template/app/views/users/index.html.erb +36 -0
  39. data/lib/r4/template/app/views/users/index.json.jbuilder +4 -0
  40. data/lib/r4/template/app/views/users/new.html.erb +9 -0
  41. data/lib/r4/template/app/views/users/show.html.erb +14 -0
  42. data/lib/r4/template/app/views/users/show.json.jbuilder +1 -0
  43. data/lib/r4/template/config/initializers/html_helpers.rb +99 -0
  44. data/lib/r4/template/config/locales/cs.yml +307 -0
  45. data/lib/r4/template/lib/tasks/bootstrap.rake +20 -0
  46. data/lib/r4/template/lib/tasks/upload.rake +24 -0
  47. data/lib/r4/version.rb +3 -0
  48. data/r4.gemspec +29 -0
  49. metadata +136 -0
@@ -0,0 +1,4 @@
1
+ json.array!(@users) do |user|
2
+ json.extract! user, :id
3
+ json.url user_url(user, format: :json)
4
+ end
@@ -0,0 +1,9 @@
1
+ <div class="page-header">
2
+ <%= link_to users_path, :class => 'btn btn-default' do %>
3
+ <span class="glyphicon glyphicon-list-alt"></span>
4
+ Zpět
5
+ <% end %>
6
+ <h1>Nový uživatel</h1>
7
+ </div>
8
+
9
+ <%= render 'form' %>
@@ -0,0 +1,14 @@
1
+ <div class="page-header">
2
+ <%= link_to users_path, :class => 'btn btn-default' do %>
3
+ <span class="glyphicon glyphicon-list-alt"></span>
4
+ Back
5
+ <% end %>
6
+ <%= link_to edit_user_path(@user), :class => 'btn btn-primary' do %>
7
+ <span class="glyphicon glyphicon-pencil"></span>
8
+ Edit
9
+ <% end %>
10
+ <h1>Show user</h1>
11
+ </div>
12
+
13
+ <dl class="dl-horizontal">
14
+ </dl>
@@ -0,0 +1 @@
1
+ json.extract! @user, :id, :created_at, :updated_at
@@ -0,0 +1,99 @@
1
+ module ApplicationHelper
2
+
3
+ def t_header name
4
+ header = t("activerecord.attributes.#{name}")
5
+ header[0] = header[0].upcase
6
+ header
7
+ end
8
+
9
+ # make long text short with '...'
10
+ def shorten text, length=20
11
+ return '' unless text.present?
12
+ res = text.scan /^(.{1,#{length}})(.*)/
13
+ "#{res[0][0]}#{res[0][1].present? ? '...' : ''}"
14
+ end
15
+
16
+ def num_warn condition
17
+ "num #{'warn' if condition}"
18
+ end
19
+
20
+ def records_filter
21
+ concat t('records') + ': ' +
22
+ select_tag('filter[per_page]', options_for_select(%w[30 50 100],
23
+ filter.params[:per_page]) ) + "\n"
24
+ end
25
+
26
+ def menu_item name, url, test
27
+ %Q{<li#{' class=active' if params[:controller]+params[:action]=~test }><a href="#{url}">#{ name }</a></li>}.html_safe
28
+ end
29
+
30
+ def dropdown_menu name, test, &block
31
+ out = %Q[<li #{"class='active'" if params[:controller] =~ /#{test}/} id='fat-menu' class='dropdown'>]
32
+ out += %Q[<a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">]
33
+ out += %Q[<i class="icon-user"></i>#{name}]
34
+ out += %Q[<i class="icon-caret-down"></i></a>]
35
+ out += %Q[<ul class="dropdown-menu">]
36
+ out += capture(&block)
37
+ out += %Q[</ul></li>]
38
+ out.html_safe
39
+ end
40
+
41
+ # same as I18n.l() but ignores nil
42
+ def lf date, options={}
43
+ l(date, options) if date
44
+ end
45
+
46
+ # selecting - yes, no, nil
47
+ def yes_no_select
48
+ [nil, [t('yes'), 'yes'], [t('no'), 'no'] ]
49
+ end
50
+
51
+ # same as I18n.l() but ignores nil
52
+ def lf date, options={}
53
+ options[:format] = options[:format].to_sym if options[:format]
54
+ I18n.l(date, options) if date
55
+ end
56
+
57
+ def num number, options={:precision=>2}
58
+ return number unless number.is_a? Numeric
59
+ return '' if options[:skip_zero] && number==0
60
+ number_with_precision( number, options )
61
+ end
62
+
63
+ def c_num number, precision=2, skip_zero=false
64
+ return '' if skip_zero && number==0
65
+ return number unless number.is_a? Float
66
+ number_with_precision( number, :precision=>precision, :delimiter => ' ')
67
+ # c_number_with_precision( number, precision )
68
+ end
69
+
70
+ def num3 number, skip_zero=false
71
+ c_num number, 3, skip_zero
72
+ end
73
+
74
+ def num2 number, skip_zero=false
75
+ c_num number, 2, skip_zero
76
+ end
77
+
78
+ def num0 number, skip_zero=false
79
+ return '' if skip_zero && number==0
80
+ return number if number.is_a? Fixnum
81
+ c_num number, 0, skip_zero
82
+ end
83
+
84
+ def numx number, precision=3, skip_zero=false
85
+ c_num number, precision, skip_zero
86
+ end
87
+
88
+ def delete_button objekt, text
89
+ link_to 'Odstranit', objekt, method: :delete, data: { confirm: text }, class: 'btn btn-danger pull-right' if params[:action] == 'edit'
90
+ end
91
+
92
+ def session_debug
93
+ "#{session['debug_params']}<br />#{link_to_function 'debug', "$('#debug_div').toggle()",
94
+ class: 'btn thin'}<hr class='separation'/><div class='box white spaced' id='debug_div'
95
+ style='display:none'>params:#{params.inspect}<br /><br />session#{session.inspect
96
+ }<br /><br />referrer:#{request.referrer}".html_safe if DEVEL && session['debug_params']
97
+ session['debug_params']=''
98
+ end
99
+ end
@@ -0,0 +1,307 @@
1
+ cs:
2
+ date:
3
+ abbr_day_names:
4
+ - Ne
5
+ - Po
6
+ - Út
7
+ - St
8
+ - Čt
9
+ - Pá
10
+ - So
11
+ abbr_month_names:
12
+ -
13
+ - led
14
+ - úno
15
+ - bře
16
+ - dub
17
+ - kvě
18
+ - čvn
19
+ - čvc
20
+ - srp
21
+ - zář
22
+ - říj
23
+ - lis
24
+ - pro
25
+ day_names:
26
+ - neděle
27
+ - pondělí
28
+ - úterý
29
+ - středa
30
+ - čtvrtek
31
+ - pátek
32
+ - sobota
33
+ formats:
34
+ default: ! '%d. %m. %Y'
35
+ long: ! '%d. %B %Y'
36
+ short: ! '%d %b'
37
+ pdf: ! '[%d/ %m/ %Y], [06:00] hodin'
38
+ pdf_en: ! '[%d/ %m/ %Y], [06:00] hours'
39
+ pdf_en_date: ! '[%d/ %m/ %Y]'
40
+ pdf_en_foot: ! '%d/ %m/ %Y'
41
+ month_names:
42
+ -
43
+ - leden
44
+ - únor
45
+ - březen
46
+ - duben
47
+ - květen
48
+ - červen
49
+ - červenec
50
+ - srpen
51
+ - září
52
+ - říjen
53
+ - listopad
54
+ - prosinec
55
+ order:
56
+ - :day
57
+ - :month
58
+ - :year
59
+ datetime:
60
+ distance_in_words:
61
+ about_x_hours:
62
+ one: asi hodinou
63
+ few: asi %{count} hodinami
64
+ other: asi %{count} hodinami
65
+ about_x_months:
66
+ one: asi měsícem
67
+ few: asi %{count} měsíci
68
+ other: asi %{count} měsíci
69
+ about_x_years:
70
+ one: asi rokem
71
+ few: asi %{count} roky
72
+ other: asi %{count} roky
73
+ almost_x_years:
74
+ one: téměř rokem
75
+ few: téměř %{count} roky
76
+ other: téměř %{count} roky
77
+ half_a_minute: půl minutou
78
+ less_than_x_minutes:
79
+ one: necelou minutou
80
+ few: ani ne %{count} minutami
81
+ other: ani ne %{count} minutami
82
+ less_than_x_seconds:
83
+ one: necelou sekundou
84
+ few: ani ne %{count} sekundami
85
+ other: ani ne %{count} sekundami
86
+ over_x_years:
87
+ one: více než rokem
88
+ few: více než %{count} roky
89
+ other: více než %{count} roky
90
+ x_days:
91
+ one: 24 hodinami
92
+ few: ! '%{count} dny'
93
+ other: ! '%{count} dny'
94
+ x_minutes:
95
+ one: minutou
96
+ few: ! '%{count} minutami'
97
+ other: ! '%{count} minutami'
98
+ x_months:
99
+ one: měsícem
100
+ few: ! '%{count} měsíci'
101
+ other: ! '%{count} měsíci'
102
+ x_seconds:
103
+ one: sekundou
104
+ few: ! '%{count} sekundami'
105
+ other: ! '%{count} sekundami'
106
+ prompts:
107
+ day: Den
108
+ hour: Hodina
109
+ minute: Minuta
110
+ month: Měsíc
111
+ second: Sekunda
112
+ year: Rok
113
+ errors:
114
+ format: ! '%{attribute} %{message}'
115
+ messages:
116
+ accepted: musí být potvrzeno
117
+ blank: je povinná položka
118
+ present: musí být prázdný/á/é
119
+ confirmation: nebylo potvrzeno
120
+ empty: nesmí být prázdný/á/é
121
+ equal_to: musí být rovno %{count}
122
+ even: musí být sudé číslo
123
+ exclusion: je vyhrazeno pro jiný účel
124
+ greater_than: musí být větší než %{count}
125
+ greater_than_or_equal_to: musí být větší nebo rovno %{count}
126
+ inclusion: není v seznamu povolených hodnot
127
+ invalid: není platná hodnota
128
+ less_than: musí být méně než %{count}
129
+ less_than_or_equal_to: musí být méně nebo rovno %{count}
130
+ not_a_number: není číslo
131
+ not_an_integer: musí být celé číslo
132
+ odd: musí být liché číslo
133
+ record_invalid: ! 'Validace je neúspešná: %{errors}'
134
+ restrict_dependent_destroy:
135
+ one: "Nemůžu smazat položku protože existuje závislá/ý/é %{record}"
136
+ many: "Nemůžu smazat položku protože existuje závislé/ý %{record}"
137
+ taken: již databáze obsahuje
138
+ too_long: je příliš dlouhý/á/é (max. %{count} znaků)
139
+ too_short: je příliš krátký/á/é (min. %{count} znaků)
140
+ wrong_length: nemá správnou délku (očekáváno %{count} znaků)
141
+ other_than: "musí být rozdílný/á/é od %{count}"
142
+ template:
143
+ body: ! 'Následující pole obsahují chybně vyplněné údaje: '
144
+ header:
145
+ one: Při ukládání objektu %{model} došlo k chybám a nebylo jej možné uložit
146
+ few: Při ukládání objektu %{model} došlo ke %{count} chybám a nebylo možné
147
+ jej uložit
148
+ other: Při ukládání objektu %{model} došlo ke %{count} chybám a nebylo možné
149
+ jej uložit
150
+ helpers:
151
+ select:
152
+ prompt: Prosím vyberte si
153
+ submit:
154
+ create: Vytvořit %{model}
155
+ submit: Uložit %{model}
156
+ update: Aktualizovat %{model}
157
+ number:
158
+ currency:
159
+ format:
160
+ delimiter: ! ' '
161
+ format: ! '%n %u'
162
+ precision: 2
163
+ separator: ! ','
164
+ significant: false
165
+ strip_insignificant_zeros: false
166
+ unit: Kč
167
+ format:
168
+ delimiter: ! '.'
169
+ precision: 3
170
+ separator: ','
171
+ significant: false
172
+ strip_insignificant_zeros: false
173
+ human:
174
+ decimal_units:
175
+ format: ! '%n %u'
176
+ units:
177
+ billion: Miliarda
178
+ million: Milion
179
+ quadrillion: Kvadrilion
180
+ thousand: Tisíc
181
+ trillion: Bilion
182
+ unit: ''
183
+ format:
184
+ delimiter: ''
185
+ precision: 1
186
+ significant: false
187
+ strip_insignificant_zeros: false
188
+ storage_units:
189
+ format: ! '%n %u'
190
+ units:
191
+ byte: B
192
+ gb: GB
193
+ kb: KB
194
+ mb: MB
195
+ tb: TB
196
+ percentage:
197
+ format:
198
+ delimiter: ''
199
+ format: "%n%"
200
+ precision:
201
+ format:
202
+ delimiter: ''
203
+ support:
204
+ array:
205
+ last_word_connector: ! ' a '
206
+ two_words_connector: ! ' a '
207
+ words_connector: ! ', '
208
+ time:
209
+ am: am
210
+ formats:
211
+ default: ! '%a %d. %B %Y %H:%M %z'
212
+ long: ! '%A %d. %B %Y %H:%M'
213
+ short: ! '%d. %m. %H:%M'
214
+ pm: pm
215
+
216
+ activerecord:
217
+ errors:
218
+ models:
219
+ user:
220
+ attributes:
221
+ password_confirmation:
222
+ confirmation: 'Hesla nesouhlasí.'
223
+ password:
224
+ too_short: 'Zvolené heslo je příliš krátké. Minimum je 6 znaků.'
225
+ current_password:
226
+ invalid: 'Současné heslo bylo zadáno chybně.'
227
+ email:
228
+ invalid: 'Zadali jste neplatný e-mail.'
229
+ taken: 'V systému již existuje uživatel se stejným e-mailem.'
230
+
231
+
232
+ #
233
+ # Czech translation for Devise - config/locales/devise.cz.yml
234
+ # 'cs' locale by https://github.com/bver
235
+ # Feel free to correct my translation.
236
+ #
237
+ # Note: devise.failure.invalid was intentionally changed from "email" to "identity" -
238
+ # - not all configurations use config.authentication_keys = [ :email ]
239
+ #
240
+ # Additional translations at http://github.com/plataformatec/devise/wiki/I18n
241
+
242
+
243
+ errors:
244
+ messages:
245
+ expired: "vypršel, požádejte prosím o nový"
246
+ not_found: "nenalezen"
247
+ already_confirmed: "byl již potvrzen, prosím, zkuste se přihlásit"
248
+ not_locked: "nebyl uzamčen"
249
+ not_saved:
250
+ one: "%{resource} nebyl uložen kvůli chybě:"
251
+ other: "%{resource} nebyl uložen kvůli %{count} chybám:"
252
+ confirmation_period_expired: "musí být potvrzen během %{period}, požádejte prosím o nový"
253
+
254
+ devise:
255
+ failure:
256
+ already_authenticated: 'Přihlášení již proběhlo.'
257
+ unauthenticated: 'Musíte se zaregistrovat nebo přihlásit, pak můžete pokračovat.'
258
+ unconfirmed: 'Musíte potvrdit svůj účet, pak můžete pokračovat.'
259
+ locked: 'Váš účet je uzamčen.'
260
+ not_found_in_database: 'Neplatný e-mail nebo heslo.'
261
+ invalid: 'Neplatný e-mail nebo heslo.'
262
+ invalid_token: 'Neplatný ověřovací symbol.'
263
+ timeout: 'Vaše relace vypršela, přihlašte se prosím znovu, pak můžete pokračovat.'
264
+ inactive: 'Váš účet ještě nebyl aktivován.'
265
+ sessions:
266
+ signed_in: 'Přihlášení úspěšné.'
267
+ signed_out: 'Odhlášení úspěšné.'
268
+ passwords:
269
+ send_instructions: 'Za několik minut obdržíte email s instrukcemi k nastavení nového hesla.'
270
+ updated: 'Vaše heslo bylo úspěšně změněno. Nyní jste přihlášen(a).'
271
+ updated_not_active: 'Vaše heslo bylo změněno.'
272
+ send_paranoid_instructions: "Pokud je e-mailová adresa v naší databázi, obdržíte na ni e-mail pro obnovení hesla."
273
+ no_token: "Tato stránka je přístupná pouze přes e-mail k obnovení hesla. Pokud jste se na stránku dostali z e-mailu pro obnovení hesla, zkontrolujte prosím, zda jste použili celou adresu."
274
+ confirmations:
275
+ send_instructions: 'Za několik minut obdržíte email s instrukcemi k potvrzení vašeho účtu.'
276
+ send_paranoid_instructions: 'Pokud je e-mailová adresa v naší databázi, obdržíte na ní instrukce pro potvrzení vašeho účtu.'
277
+ confirmed: 'Váš účet byl úspěšně potvrzen. Nyní jste přihlášen(a).'
278
+ registrations:
279
+ signed_up: 'Vítejte! Registrace byla úspěšná.'
280
+ signed_up_but_unconfirmed: 'Na váš email by měla přijít zpráva s odkazem pro aktivaci účtu.'
281
+ signed_up_but_inactive: 'Registrace byla úspěšná. Nicméně se nemůžete přihlásit, protože váš účet dosud nebyl aktivován.'
282
+ signed_up_but_locked: 'Registrace byla úspěšná. Nicméně se nemůžete přihlásit, protože váš účet je uzamčen.'
283
+ updated: 'Váš účet byl úspěšně aktualizován.'
284
+ update_needs_confirmation: "Váš účet byl aktualizován, nicméně musíme ověřit vaši adresu e-mailu. Poslali jsme vám e-mail s odkazem, použijte jej prosím pro potvrzení změny e-mailové adresy."
285
+ destroyed: 'Nashle! Váš účet byl úspěšně zrušen. Doufáme, že se brzy opět uvidíme.'
286
+ unlocks:
287
+ send_instructions: 'Za několik minut obdržíte email s instrukcemi, jak odemknout svůj účet.'
288
+ unlocked: 'Váš účet byl úspěšně odemknut. Nyní jste přihlášen(a).'
289
+ send_paranoid_instructions: 'Pokud váš účet existuje, obdržíte e-mail s instrukcemi pro jeho odemčení.'
290
+ omniauth_callbacks:
291
+ success: 'Úspěšná autorizace z účtu %{kind}.'
292
+ failure: 'Není možné autorizovat z %{kind}, protože: "%{reason}".'
293
+ mailer:
294
+ confirmation_instructions:
295
+ subject: 'Instrukce pro potvrzení účtu'
296
+ reset_password_instructions:
297
+ subject: 'Instrukce k nastavení nového hesla'
298
+ unlock_instructions:
299
+ subject: 'Instrukce k odemknutí účtu'
300
+
301
+ Action: 'Akce'
302
+ New: 'Nový'
303
+ Edit: 'Změnit'
304
+ Destroy: 'Smazat'
305
+ Save: 'Uložit'
306
+ Show: 'Zobrazit'
307
+ Back: 'Zpět'
@@ -0,0 +1,20 @@
1
+ namespace :app do
2
+ desc 'Bootstrap the application -- create admin/admin user, migrate database, etc'
3
+ task :bootstrap => :environment do
4
+
5
+ `rake db:migrate`
6
+ puts '* Migrated database'
7
+
8
+ u = User.new :login => "ADMIN_LOGIN",
9
+ :password => "ADMIN_PASSWORD",
10
+ :password_confirmation => "ADMIN_PASSWORD",
11
+ :email => "ADMIN_EMAIL",
12
+ :lastname => "ADMIN_LASTNAME"
13
+ u.admin = true
14
+ u.save
15
+ puts '* Created default *** INSECURE *** account.'
16
+ end
17
+
18
+ task :seed do
19
+ end
20
+ end