r5 0.1.5

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.
Files changed (50) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +4 -0
  3. data/README.md +69 -0
  4. data/Rakefile +2 -0
  5. data/bin/console +14 -0
  6. data/bin/r5 +4 -0
  7. data/bin/setup +7 -0
  8. data/lib/r5.rb +5 -0
  9. data/lib/r5/config.rb +12 -0
  10. data/lib/r5/installations/default.rb +53 -0
  11. data/lib/r5/installations/testing.rb +4 -0
  12. data/lib/r5/odin.rb +76 -0
  13. data/lib/r5/recipes/bootstrap.rb +9 -0
  14. data/lib/r5/recipes/bootstrap_app.rb +10 -0
  15. data/lib/r5/recipes/devise.rb +94 -0
  16. data/lib/r5/recipes/exception_notification.rb +10 -0
  17. data/lib/r5/recipes/gemfile.rb +41 -0
  18. data/lib/r5/recipes/gitignore.rb +8 -0
  19. data/lib/r5/recipes/install_questions.rb +20 -0
  20. data/lib/r5/recipes/lazy_high_charts.rb +18 -0
  21. data/lib/r5/recipes/mail_settings.rb +22 -0
  22. data/lib/r5/recipes/mysql.rb +22 -0
  23. data/lib/r5/recipes/rspec_generators.rb +18 -0
  24. data/lib/r5/recipes/upload_app.rb +9 -0
  25. data/lib/r5/recipes/wicked_pdf.rb +35 -0
  26. data/lib/r5/recipes/xlsx_support.rb +6 -0
  27. data/lib/r5/starter.rb +116 -0
  28. data/lib/r5/template/.ruby-version +1 -0
  29. data/lib/r5/template/app/assets/javascripts/main.js.rb +11 -0
  30. data/lib/r5/template/app/assets/stylesheets/custom.css.scss +128 -0
  31. data/lib/r5/template/app/assets/stylesheets/main.css.scss +7 -0
  32. data/lib/r5/template/app/assets/stylesheets/theme.css +7089 -0
  33. data/lib/r5/template/app/assets/stylesheets/timepress.css.scss +127 -0
  34. data/lib/r5/template/app/controllers/users_controller.rb +106 -0
  35. data/lib/r5/template/app/views/layouts/application.html.erb +64 -0
  36. data/lib/r5/template/app/views/users/_form.html.erb +64 -0
  37. data/lib/r5/template/app/views/users/edit.html.erb +10 -0
  38. data/lib/r5/template/app/views/users/edit_password.html.erb +49 -0
  39. data/lib/r5/template/app/views/users/index.html.erb +36 -0
  40. data/lib/r5/template/app/views/users/index.json.jbuilder +4 -0
  41. data/lib/r5/template/app/views/users/new.html.erb +9 -0
  42. data/lib/r5/template/app/views/users/show.html.erb +14 -0
  43. data/lib/r5/template/app/views/users/show.json.jbuilder +1 -0
  44. data/lib/r5/template/config/initializers/html_helpers.rb +99 -0
  45. data/lib/r5/template/config/locales/cs.yml +307 -0
  46. data/lib/r5/template/lib/tasks/bootstrap.rake +20 -0
  47. data/lib/r5/template/lib/tasks/upload.rake +24 -0
  48. data/lib/r5/version.rb +3 -0
  49. data/r5.gemspec +29 -0
  50. metadata +137 -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