symphonia 2.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +674 -0
- data/README.md +16 -0
- data/Rakefile +44 -0
- data/app/assets/images/bg-checker.png +0 -0
- data/app/assets/images/bullet.gif +0 -0
- data/app/assets/images/close.png +0 -0
- data/app/assets/images/loading.gif +0 -0
- data/app/assets/images/next.png +0 -0
- data/app/assets/images/prev.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/autogrow/plugin.js +232 -0
- data/app/assets/javascripts/ckeditor/plugins/autogrow/samples/autogrow.html +102 -0
- data/app/assets/javascripts/ckeditor/plugins/image_chooser/icons/addimage.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/image_chooser/plugin.js +15 -0
- data/app/assets/javascripts/symphonia/Sortable.js +1249 -0
- data/app/assets/javascripts/symphonia/_core.js +45 -0
- data/app/assets/javascripts/symphonia/application.js.erb +147 -0
- data/app/assets/javascripts/symphonia/filters.js +44 -0
- data/app/assets/javascripts/symphonia/symphonia_bootstrap_dialog.js +136 -0
- data/app/assets/javascripts/symphonia/symphonia_ckeditor.js +55 -0
- data/app/assets/stylesheets/symphonia/application.css +4 -0
- data/app/assets/stylesheets/symphonia/basic.scss +218 -0
- data/app/assets/stylesheets/symphonia/filters.scss +19 -0
- data/app/assets/stylesheets/symphonia/symphonia_bootstrap.scss +56 -0
- data/app/channels/application_cable/channel.rb +5 -0
- data/app/controllers/symphonia/accounts_controller.rb +169 -0
- data/app/controllers/symphonia/admin_controller.rb +22 -0
- data/app/controllers/symphonia/api_controller.rb +64 -0
- data/app/controllers/symphonia/application_controller.rb +8 -0
- data/app/controllers/symphonia/attachments_controller.rb +37 -0
- data/app/controllers/symphonia/filters_controller.rb +23 -0
- data/app/controllers/symphonia/images_controller.rb +16 -0
- data/app/controllers/symphonia/login_controller.rb +80 -0
- data/app/controllers/symphonia/roles_controller.rb +100 -0
- data/app/controllers/symphonia/user_sessions_controller.rb +16 -0
- data/app/controllers/symphonia/users_controller.rb +168 -0
- data/app/helpers/symphonia/application_helper.rb +422 -0
- data/app/helpers/symphonia/bootstrap_modal_helper.rb +59 -0
- data/app/helpers/symphonia/form_helper.rb +50 -0
- data/app/helpers/symphonia/renderer_helper.rb +85 -0
- data/app/mailers/symphonia/application_mailer.rb +6 -0
- data/app/mailers/symphonia/notifier.rb +42 -0
- data/app/models/symphonia/admin_module.rb +18 -0
- data/app/models/symphonia/application_record.rb +14 -0
- data/app/models/symphonia/attachment.rb +16 -0
- data/app/models/symphonia/common_file.rb +9 -0
- data/app/models/symphonia/email_preference.rb +5 -0
- data/app/models/symphonia/image.rb +46 -0
- data/app/models/symphonia/preference.rb +12 -0
- data/app/models/symphonia/role.rb +55 -0
- data/app/models/symphonia/swagger/error_model.rb +19 -0
- data/app/models/symphonia/swagger/responses.rb +27 -0
- data/app/models/symphonia/user.rb +141 -0
- data/app/models/symphonia/user_session.rb +19 -0
- data/app/views/common/403.html.erb +5 -0
- data/app/views/common/404.html.erb +2 -0
- data/app/views/layouts/symphonia/_modal.html.erb +19 -0
- data/app/views/layouts/symphonia/_query.html.erb +51 -0
- data/app/views/layouts/symphonia/application.html.erb +45 -0
- data/app/views/layouts/symphonia/application.pdf.erb +15 -0
- data/app/views/layouts/symphonia/mailer.html.erb +13 -0
- data/app/views/symphonia/accounts/_detail.html.erb +65 -0
- data/app/views/symphonia/accounts/_form.html.erb +14 -0
- data/app/views/symphonia/accounts/edit.html.erb +9 -0
- data/app/views/symphonia/accounts/edit.js.erb +5 -0
- data/app/views/symphonia/accounts/lost_password.html.erb +6 -0
- data/app/views/symphonia/accounts/lost_password.js.erb +3 -0
- data/app/views/symphonia/accounts/new_activation.html.erb +11 -0
- data/app/views/symphonia/accounts/new_activation.js.erb +6 -0
- data/app/views/symphonia/accounts/register.html.erb +20 -0
- data/app/views/symphonia/accounts/reset_password.html.erb +18 -0
- data/app/views/symphonia/accounts/update.js.erb +1 -0
- data/app/views/symphonia/admin/index.html.erb +15 -0
- data/app/views/symphonia/attachments/destroy.js.erb +1 -0
- data/app/views/symphonia/common/_editable_images_grid.html.erb +12 -0
- data/app/views/symphonia/common/_filters.html.erb +23 -0
- data/app/views/symphonia/common/_locale_chooser.html.erb +16 -0
- data/app/views/symphonia/common/_share_links.html.erb +5 -0
- data/app/views/symphonia/filters/options.html.erb +36 -0
- data/app/views/symphonia/filters/options.js.erb +9 -0
- data/app/views/symphonia/filters/table.html.erb +21 -0
- data/app/views/symphonia/login/_form.html.erb +19 -0
- data/app/views/symphonia/login/new.html.erb +11 -0
- data/app/views/symphonia/login_sessions/new.html.erb +1 -0
- data/app/views/symphonia/notifier/activation_user.html.erb +7 -0
- data/app/views/symphonia/notifier/activation_user.text.erb +3 -0
- data/app/views/symphonia/notifier/reset_password_user.html.erb +7 -0
- data/app/views/symphonia/notifier/reset_password_user.text.erb +3 -0
- data/app/views/symphonia/notifier/test_mail.html.erb +2 -0
- data/app/views/symphonia/notifier/test_mail.text.erb +3 -0
- data/app/views/symphonia/notifier/user_change_to_active.html.erb +3 -0
- data/app/views/symphonia/notifier/user_change_to_active.text.erb +1 -0
- data/app/views/symphonia/notifier/user_registered.html.erb +13 -0
- data/app/views/symphonia/notifier/user_registered.text.erb +8 -0
- data/app/views/symphonia/roles/_form.html.erb +30 -0
- data/app/views/symphonia/roles/edit.html.erb +5 -0
- data/app/views/symphonia/roles/index.html.erb +6 -0
- data/app/views/symphonia/roles/new.html.erb +4 -0
- data/app/views/symphonia/roles/show.html.erb +5 -0
- data/app/views/symphonia/users/_form.html.erb +13 -0
- data/app/views/symphonia/users/edit.html.erb +26 -0
- data/app/views/symphonia/users/edit.js.erb +3 -0
- data/app/views/symphonia/users/edit_current.html.erb +7 -0
- data/app/views/symphonia/users/index.html.erb +5 -0
- data/app/views/symphonia/users/new.html.erb +8 -0
- data/app/views/symphonia/users/show.html.erb +63 -0
- data/config/locales/cs.yml +233 -0
- data/config/locales/en.yml +47 -0
- data/config/routes.rb +52 -0
- data/db/migrate/20130714140500_create_users.rb +49 -0
- data/db/migrate/20130714140501_create_roles.rb +16 -0
- data/db/migrate/20130714140502_create_preferences.rb +26 -0
- data/db/migrate/20130828175114_create_attachments.rb +20 -0
- data/db/migrate/20141213204351_create_admin_modules.rb +20 -0
- data/db/seeds.rb +12 -0
- data/lib/generators/symphonia/entity_controller/entity_controller_generator.rb +48 -0
- data/lib/generators/symphonia/entity_controller/templates/controller.rb +100 -0
- data/lib/generators/symphonia/query/query_generator.rb +37 -0
- data/lib/generators/symphonia/setup/setup_generator.rb +52 -0
- data/lib/generators/symphonia/setup/templates/404.html +26 -0
- data/lib/generators/symphonia/setup/templates/500.html +37 -0
- data/lib/generators/symphonia/setup/templates/Gemfile +18 -0
- data/lib/generators/symphonia/setup/templates/base_layout.html.erb +46 -0
- data/lib/generators/symphonia/setup/templates/design.scss +4 -0
- data/lib/generators/symphonia/setup/templates/settings.rb +65 -0
- data/lib/generators/symphonia/setup/templates/spec_helper.rb +18 -0
- data/lib/symphonia/action_cable/connection.rb +31 -0
- data/lib/symphonia/admin_constraint.rb +9 -0
- data/lib/symphonia/attachable.rb +35 -0
- data/lib/symphonia/base_controller.rb +96 -0
- data/lib/symphonia/bootstrap_link_render.rb +69 -0
- data/lib/symphonia/controller_extensions.rb +200 -0
- data/lib/symphonia/engine.rb +137 -0
- data/lib/symphonia/form_builder.rb +137 -0
- data/lib/symphonia/menu_manager.rb +23 -0
- data/lib/symphonia/model_attributes/attribute.rb +137 -0
- data/lib/symphonia/model_attributes.rb +102 -0
- data/lib/symphonia/model_filters/base.rb +82 -0
- data/lib/symphonia/model_filters/boolean_filter.rb +26 -0
- data/lib/symphonia/model_filters/date_filter.rb +81 -0
- data/lib/symphonia/model_filters/integer_filter.rb +18 -0
- data/lib/symphonia/model_filters/select_filter.rb +48 -0
- data/lib/symphonia/model_filters/string_filter.rb +18 -0
- data/lib/symphonia/model_filters.rb +10 -0
- data/lib/symphonia/object.rb +31 -0
- data/lib/symphonia/permissions.rb +93 -0
- data/lib/symphonia/query.rb +275 -0
- data/lib/symphonia/query_columns/attribute_column.rb +43 -0
- data/lib/symphonia/query_columns/generic_column.rb +165 -0
- data/lib/symphonia/query_columns.rb +8 -0
- data/lib/symphonia/spec_helper.rb +4 -0
- data/lib/symphonia/user_management.rb +58 -0
- data/lib/symphonia/version.rb +4 -0
- data/lib/symphonia.rb +20 -0
- data/spec/controllers/account_controller_spec.rb +90 -0
- data/spec/controllers/admin_controller_spec.rb +35 -0
- data/spec/controllers/api_controller_spec.rb +9 -0
- data/spec/controllers/filters_controller_spec.rb +35 -0
- data/spec/controllers/images_controller_spec.rb +5 -0
- data/spec/controllers/login_controller_spec.rb +20 -0
- data/spec/controllers/roles_controller_spec.rb +12 -0
- data/spec/controllers/users_controller_spec.rb +47 -0
- data/spec/factories/factories.rb +52 -0
- data/spec/helpers/symphonia/application_helper_spec.rb +62 -0
- data/spec/mailers/previews/symphonia/notifier_preview.rb +27 -0
- data/spec/mailers/symphonia/notifier_spec.rb +76 -0
- data/spec/models/attachment_spec.rb +22 -0
- data/spec/models/query/attribute_spec.rb +8 -0
- data/spec/models/query/symphonia_query_spec.rb +70 -0
- data/spec/models/role_spec.rb +13 -0
- data/spec/models/user_spec.rb +10 -0
- data/spec/rails_helper.rb +13 -0
- data/spec/requests/accounts_spec.rb +118 -0
- data/spec/requests/attachments_controller_spec.rb +23 -0
- data/spec/requests/login_spec.rb +26 -0
- data/spec/requests/roles_spec.rb +10 -0
- data/spec/requests/users_spec.rb +50 -0
- data/spec/spec_helper.rb +101 -0
- data/spec/support/common_file.txt +2 -0
- data/spec/support/query.rb +36 -0
- data/spec/support/shared.rb +62 -0
- data/spec/support/shared_controllers.rb +31 -0
- data/spec/support/stub_users.rb +32 -0
- data/spec/support/symphonia.jpg +0 -0
- data/spec/support/wait_for_ajax.rb +15 -0
- data/spec/version_spec.rb +5 -0
- data/spec/views/filters/options.html.erb_spec.rb +14 -0
- metadata +697 -0
@@ -0,0 +1,63 @@
|
|
1
|
+
<%#= render(partial: 'symphonia/accounts/detail', locals: {account: @user, use_service_buttons: Symphonia::User.current != @user}) -%>
|
2
|
+
|
3
|
+
<div class="card col-md-9 col-xlg-6 mx-auto">
|
4
|
+
<div class="card-body">
|
5
|
+
<h4 class="card-title"><%= html_title(@user.name).join %></h4>
|
6
|
+
<div class="card-text row">
|
7
|
+
<div class="col-sm-8">
|
8
|
+
<% %i(login email admin).each do |attribute| %>
|
9
|
+
<% next if @user.send(attribute).to_s.blank? %>
|
10
|
+
<dt><%= @user.class.human_attribute_name attribute %></dt>
|
11
|
+
<dd><%= @user.format_value(attribute, self) %></dd>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<% if @user.role %>
|
15
|
+
<dt><%= @user.class.human_attribute_name :role %></dt>
|
16
|
+
<dd><%= @user.format_value(:role, Symphonia::User.current.admin? && self || nil) %></dd>
|
17
|
+
<% end %>
|
18
|
+
|
19
|
+
<% if @user.preferences.any? %>
|
20
|
+
<dt><%= t(:label_user_notifications) %></dt>
|
21
|
+
<% @user.preferences.each do |p| %>
|
22
|
+
<dd>- <%= (t(p.name, scope: :preferences)) %></dd>
|
23
|
+
<% end -%>
|
24
|
+
<% end %>
|
25
|
+
</div>
|
26
|
+
<div class="col-sm-4">
|
27
|
+
|
28
|
+
<% if Symphonia::User.current.admin? %>
|
29
|
+
<%= link_to(icon('edit', t(:button_edit)), edit_user_path(@user), class: 'btn btn-primary btn-block') %>
|
30
|
+
<% if true %>
|
31
|
+
<% if @user.active? %>
|
32
|
+
<%= link_to(icon('lock', t(:button_archive)), archive_user_path(@user, back_url: polymorphic_path(@user)), data: { method: 'post', confirm: t(:text_are_you_sure) }, class: 'btn btn-secondary btn-block') %>
|
33
|
+
<% elsif @user.status_new? %>
|
34
|
+
<%= link_to(icon('bolt', t(:button_active)), unarchive_user_path(@user, back_url: polymorphic_path(@user)), class: 'btn btn-secondary', data: { method: 'post', confirm: t(:text_are_you_sure) + "\n #{t(:text_confirm_send_unlock_mail)}" }) %>
|
35
|
+
<% else %>
|
36
|
+
<%= link_to(icon('unlock', t(:button_unarchive)), unarchive_user_path(@user, back_url: polymorphic_path(@user)), class: 'btn btn-secondary btn-block', data: { method: 'post', confirm: t(:text_are_you_sure) + "\n #{t(:text_confirm_send_unlock_mail)}" }) %>
|
37
|
+
<% end %>
|
38
|
+
<%= link_to(icon('delete', t(:button_delete)), @user, class: 'btn btn-danger btn-block', method: 'delete', data: { confirm: t(:text_are_you_sure) }) %>
|
39
|
+
<% end -%>
|
40
|
+
<% else %>
|
41
|
+
<%= link_to(icon('edit', t(:button_edit)), edit_user_path(@user), class: 'btn btn-primary btn-block', remote: true) %>
|
42
|
+
<% end %>
|
43
|
+
<%= link_to(icon('key', t(:detail)), 'javascript:void(0)', onclick: %q{Symphonia.dialog.show('customer_detail')}, class: 'btn btn-info btn-block') %>
|
44
|
+
</div>
|
45
|
+
|
46
|
+
</div>
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
|
50
|
+
<div id="customer_detail" style="display: none">
|
51
|
+
<div class="clearfix">
|
52
|
+
<%= content_tag(:strong, @user.class.human_attribute_name(:current_login_at), :class => 'col-xs-6') %>
|
53
|
+
<%= content_tag(:div, @user.current_login_at ? time_tag(@user.current_login_at) : '-', :class => 'col-xs-6') %>
|
54
|
+
<%= content_tag(:strong, @user.class.human_attribute_name(:current_login_ip), :class => 'col-xs-6') %>
|
55
|
+
<%= content_tag(:div, @user.current_login_ip || '-', :class => 'col-xs-6') %>
|
56
|
+
<%= content_tag(:strong, @user.class.human_attribute_name(:last_login_at), :class => 'col-xs-6') %>
|
57
|
+
<%= content_tag(:div, @user.last_login_at ? time_tag(@user.last_login_at.localtime) : '-', :class => 'col-xs-6') %>
|
58
|
+
<%= content_tag(:strong, @user.class.human_attribute_name(:last_login_ip), :class => 'col-xs-6') %>
|
59
|
+
<%= content_tag(:div, @user.last_login_ip || '-', :class => 'col-xs-6') %>
|
60
|
+
<%= content_tag(:strong, @user.class.human_attribute_name(:single_access_token), :class => 'col-xs-6') %>
|
61
|
+
<%= content_tag(:div, text_field_tag(:token, @user.single_access_token, :style => 'border:none'), :class => 'col-xs-6') %>
|
62
|
+
</div>
|
63
|
+
</div>
|
@@ -0,0 +1,233 @@
|
|
1
|
+
cs:
|
2
|
+
general_locale: Čeština
|
3
|
+
authlogic:
|
4
|
+
text_login_failed: Přihlášení se nezdařilo
|
5
|
+
error_messages:
|
6
|
+
# login_blank: can not be blank
|
7
|
+
login_not_found: nenalezeno
|
8
|
+
login_invalid: obsahuje neplatné znaky
|
9
|
+
consecutive_failed_logins_limit_exceeded: Váš účet byl zablokován. Příliš mnoho nezdařených pokusů o přihlášení. Kontaktujte prosím správce.
|
10
|
+
email_invalid: není platný
|
11
|
+
# password_blank: can not be blank
|
12
|
+
password_invalid: je chybné
|
13
|
+
not_active: Účet není aktivován
|
14
|
+
# not_confirmed: Your account is not confirmed
|
15
|
+
# not_approved: Your account is not approved
|
16
|
+
# no_authentication_details: You did not provide any details for authentication.
|
17
|
+
general_credentials_error: login nebo heslo
|
18
|
+
models:
|
19
|
+
user_session: Přihlášení
|
20
|
+
attributes:
|
21
|
+
user_session:
|
22
|
+
remember_me: Zapamatovat
|
23
|
+
time:
|
24
|
+
past: Minulost
|
25
|
+
present: Současnot
|
26
|
+
future: Budoucnost
|
27
|
+
formats:
|
28
|
+
default: "%d. %B %Y %H:%M"
|
29
|
+
short: "%-d. %-m. %Y %H:%M"
|
30
|
+
attributes:
|
31
|
+
updated_at: Aktualizováno
|
32
|
+
created_at: Vytvořeno
|
33
|
+
name: Název
|
34
|
+
title: Název
|
35
|
+
description: Popis
|
36
|
+
content: Obsah
|
37
|
+
author: Autor
|
38
|
+
mail: 'E-mail'
|
39
|
+
note: Poznámka
|
40
|
+
status: Stav
|
41
|
+
password: Heslo
|
42
|
+
password_confirmation: Potvrzení hesla
|
43
|
+
login: Login
|
44
|
+
activerecord:
|
45
|
+
models:
|
46
|
+
symphonia/user: 'Uživatel'
|
47
|
+
role: 'Role'
|
48
|
+
image: 'Obrázek'
|
49
|
+
common_file: 'Soubor'
|
50
|
+
attachment: Příloha
|
51
|
+
errors:
|
52
|
+
template:
|
53
|
+
body: "Formulář obsahuje chybně vyplněná pole:"
|
54
|
+
attributes:
|
55
|
+
attachment:
|
56
|
+
attachment_file_name: Název souboru
|
57
|
+
attachment_content_type: Typ
|
58
|
+
attachment_file_size: Velikost
|
59
|
+
attachment_updated_at: Aktualizován
|
60
|
+
symphonia/user:
|
61
|
+
login: Přihlašovací jméno
|
62
|
+
name: Jméno
|
63
|
+
first_name: Jméno
|
64
|
+
last_name: Příjmení
|
65
|
+
admin: Administrátor
|
66
|
+
status: Stav
|
67
|
+
language: Jazyk
|
68
|
+
password: 'Heslo'
|
69
|
+
password_confirmation: 'Potvrzení hesla'
|
70
|
+
single_access_token: 'Přihlašovací klíč'
|
71
|
+
login_count: 'Počet přihlášení'
|
72
|
+
failed_login_count: 'Počet neúspěšných pokusů o přihlášení'
|
73
|
+
current_login_at: 'Součané přihlášení'
|
74
|
+
current_login_ip: 'IP adresa současného přihlášení'
|
75
|
+
last_login_ip: 'IP adresa posledního přihlášení'
|
76
|
+
last_login_at: 'Poslední přihlášení'
|
77
|
+
edited_by: 'Upravil'
|
78
|
+
edited_at: 'Upraveno'
|
79
|
+
role_id: 'Role'
|
80
|
+
ssl: Používat SSL?
|
81
|
+
|
82
|
+
recaptcha:
|
83
|
+
errors:
|
84
|
+
verification_failed: 'Nesprávný text z obrázku'
|
85
|
+
|
86
|
+
helpers:
|
87
|
+
submit:
|
88
|
+
create: Vytvořit
|
89
|
+
submit: Uložit
|
90
|
+
update: Aktualizovat
|
91
|
+
|
92
|
+
|
93
|
+
meta_title: ''
|
94
|
+
meta_description: ''
|
95
|
+
meta_keywords: ''
|
96
|
+
|
97
|
+
"true": 'Ano'
|
98
|
+
"false": 'Ne'
|
99
|
+
none: 'Žádné'
|
100
|
+
nothing: 'Nic'
|
101
|
+
language: 'Čeština'
|
102
|
+
|
103
|
+
button_add: Přidat
|
104
|
+
button_edit: Upravit
|
105
|
+
button_delete: Smazat
|
106
|
+
button_show: Zobrazit
|
107
|
+
button_new: Nový
|
108
|
+
button_create: Vytvořit
|
109
|
+
button_create_and_continue: Vytvořit a pokračovat
|
110
|
+
button_submit: Odeslat
|
111
|
+
button_submit_and_continue: Uložit a pokračovat
|
112
|
+
button_update: Upravit
|
113
|
+
button_back: Zpět
|
114
|
+
button_cancel: Zrušit
|
115
|
+
button_archive: Zamknout
|
116
|
+
button_unarchive: Odemknout
|
117
|
+
button_active: Aktivovat
|
118
|
+
button_login: Přihlásit
|
119
|
+
button_logout: Odhlásit
|
120
|
+
button_apply_filter: Filtruj
|
121
|
+
button_apply: Použit
|
122
|
+
button_reset: Vymazat
|
123
|
+
button_print: Tisknout
|
124
|
+
button_confirm: Potvrdit
|
125
|
+
button_save: Uložit
|
126
|
+
button_close: Zavřít
|
127
|
+
button_continue: Pokračovat
|
128
|
+
button_download: Stáhnout
|
129
|
+
button_search: Hledej
|
130
|
+
button_administration: Administrace
|
131
|
+
button_register: Registrovat
|
132
|
+
text_are_you_sure: Jsi si jistý?
|
133
|
+
text_updated: Uloženo
|
134
|
+
text_created: Úspěšně vytvořeno
|
135
|
+
text_destroyed: Záznam smazán
|
136
|
+
text_successfully_logout: Odhlášen
|
137
|
+
text_no_data: Žádné záznamy
|
138
|
+
text_access_deny: Přístup odepřen
|
139
|
+
text_login_require: Přihlaste se prosím
|
140
|
+
text_user_registered: Děkujeme za registraci. Váš účet bude nyní aktivován administrátorem. O dokončení aktivace Vás budeme informovat emailem.
|
141
|
+
text_user_not_found_or_token_invalid: Uživatel nenalezen
|
142
|
+
text_activation_success: Aktivace proběhla úspěšně
|
143
|
+
text_user_alerady_active: Tento účet je již aktivován
|
144
|
+
text_user_not_found: Účet nenalezen
|
145
|
+
text_activation_resend: Aktivační odkaz odeslán
|
146
|
+
text_reset_password_resend: Informace o změně hesla odeslány
|
147
|
+
text_explanation_recaptcha: 'Opište prosím tato dvě slova:'
|
148
|
+
text_or: nebo
|
149
|
+
text_confirm_send_unlock_mail: Po aktivaci účtu bude uživateli zaslán email.
|
150
|
+
text_error_no_data_file_input: Nebyl vybrán žádný soubor
|
151
|
+
text_image_successfully_destroy: Obrázek byl smazán
|
152
|
+
text_common_file_successfully_destroy: Soubor byl smazán
|
153
|
+
text_error_query_not_init: Filtry nejsou nastaveny. Registruj query!
|
154
|
+
text_error_there_is_no_filters_available: Nejsou zaregistrované žádné validní filtry.
|
155
|
+
text_error_login_required: Přihlašte se prosím
|
156
|
+
|
157
|
+
title_toggle_multiselect: Přepnout multiselect
|
158
|
+
title_login: Přihlášení
|
159
|
+
title_advanced_filters: Pokročilé filtrování
|
160
|
+
title_add_images: Přidat obrázky
|
161
|
+
|
162
|
+
label_home: Domů
|
163
|
+
label_my_account: Můj účet
|
164
|
+
label_preferences: Správa
|
165
|
+
label_users: Uživatelé
|
166
|
+
label_user_new: Nový uživatel
|
167
|
+
label_roles: Role
|
168
|
+
label_role_new: Nová role
|
169
|
+
label_register_new_user: Registrace nového uživatele
|
170
|
+
label_filters: Filtry
|
171
|
+
label_user_notifications: E-mailová oznámení
|
172
|
+
label_reset_password: Zapomenuté heslo
|
173
|
+
label_send_activation_again: Zaslat znovu aktivační email
|
174
|
+
label_status: Stav
|
175
|
+
label_overview: Přehled
|
176
|
+
label_edit: Upravit
|
177
|
+
|
178
|
+
label_images: Obrázky
|
179
|
+
label_files: Soubory
|
180
|
+
|
181
|
+
label_loading: Nahrávám...
|
182
|
+
|
183
|
+
legend_form_basic_fields: Základní údaje
|
184
|
+
|
185
|
+
subject_activation_mail: Aktivace účtu
|
186
|
+
subject_reset_password_mail: Zapomenuté heslo
|
187
|
+
subject_user_registered: Registrován nový uživatel
|
188
|
+
mailer:
|
189
|
+
text_html_user_created: Byl zaregistrován nový uživatel.
|
190
|
+
text_html_reset_password: 'Nové heslo si můžete nastavit zde:'
|
191
|
+
text_html_activation_account: "Děkujeme za registraci,\n Váš účet je třeba aktivovat otevřením následujího odkazu:"
|
192
|
+
|
193
|
+
will_paginate:
|
194
|
+
previous_label: Předchozí
|
195
|
+
next_label: Další
|
196
|
+
page_gap: "…"
|
197
|
+
|
198
|
+
symphonia/user:
|
199
|
+
statuses:
|
200
|
+
active: Aktivní
|
201
|
+
pending: Nový
|
202
|
+
archived: Archivovaný
|
203
|
+
|
204
|
+
preferences:
|
205
|
+
notify_after_user_registered: 'Po registraci nového uživatele'
|
206
|
+
|
207
|
+
permissions:
|
208
|
+
view_users: 'Zobrazení uživatelů'
|
209
|
+
manage_users: 'Správa uživatelů'
|
210
|
+
label_total: "Celkem"
|
211
|
+
share_on:
|
212
|
+
title:
|
213
|
+
facebook: Sdílej na Facebooku !
|
214
|
+
twitter: Sdílej na Twitteru !
|
215
|
+
google_plus: Sdílej na Google Plus !
|
216
|
+
label_search: "Hledat"
|
217
|
+
query_options:
|
218
|
+
columns: Sloupce
|
219
|
+
filters: Filtry
|
220
|
+
filter_date:
|
221
|
+
from: Od
|
222
|
+
to: Do
|
223
|
+
values:
|
224
|
+
today: Dnes
|
225
|
+
this_month: Tento měsíc
|
226
|
+
this_year: Tento rok
|
227
|
+
custom: Vlastní
|
228
|
+
status:
|
229
|
+
active: Aktivní
|
230
|
+
archive: Archivovaný
|
231
|
+
change_status:
|
232
|
+
active: Aktivovat
|
233
|
+
archive: Archivovat
|
@@ -0,0 +1,47 @@
|
|
1
|
+
en:
|
2
|
+
general_locale: English
|
3
|
+
authlogic:
|
4
|
+
text_login_failed: 'Login failed'
|
5
|
+
error_messages:
|
6
|
+
# login_blank: can not be blank
|
7
|
+
login_not_found: 'not found'
|
8
|
+
login_invalid: 'is invalid'
|
9
|
+
consecutive_failed_logins_limit_exceeded: 'Your account has been blocked. You trying too many logged in. Please contact administrator.'
|
10
|
+
email_invalid: 'is invalid'
|
11
|
+
# password_blank: can not be blank
|
12
|
+
password_invalid: 'is invalid'
|
13
|
+
not_active: 'Account is not activated'
|
14
|
+
# not_confirmed: Your account is not confirmed
|
15
|
+
# not_approved: Your account is not approved
|
16
|
+
# no_authentication_details: You did not provide any details for authentication.
|
17
|
+
# general_credentials_error: Login/Password combination is not valid
|
18
|
+
|
19
|
+
meta_title: ''
|
20
|
+
meta_description: ''
|
21
|
+
meta_keywords: ''
|
22
|
+
|
23
|
+
"true": 'Yes'
|
24
|
+
"false": 'No'
|
25
|
+
none: 'None'
|
26
|
+
nothing: 'Nothing'
|
27
|
+
language: 'English'
|
28
|
+
button_add: Add
|
29
|
+
button_edit: Edit
|
30
|
+
button_delete: Delete
|
31
|
+
button_show: Show
|
32
|
+
button_new: New
|
33
|
+
button_create: Create
|
34
|
+
button_create_and_continue: Create and continue
|
35
|
+
button_submit: Odeslat
|
36
|
+
button_submit_and_continue: Submit and continue
|
37
|
+
button_update: Update
|
38
|
+
button_back: Back
|
39
|
+
button_save: Save
|
40
|
+
text_are_you_sure: "Are you sure?"
|
41
|
+
share_on:
|
42
|
+
title:
|
43
|
+
facebook: Share on Facebooku !
|
44
|
+
twitter: Share on Twitteru !
|
45
|
+
google_plus: Share on Google Plus !
|
46
|
+
|
47
|
+
label_search: "Search"
|
data/config/routes.rb
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'sidekiq/web'
|
2
|
+
require 'symphonia/admin_constraint'
|
3
|
+
Symphonia::Engine.routes.draw do
|
4
|
+
|
5
|
+
get :api, to: 'api#index'
|
6
|
+
|
7
|
+
get '/login', to: 'user_sessions#new'
|
8
|
+
delete '/logout', to: 'user_sessions#destroy'
|
9
|
+
get '/register', to: 'accounts#register', as: 'account_register'
|
10
|
+
post '/register', to: 'accounts#create'
|
11
|
+
|
12
|
+
get '/activation/:activation_code', to: 'accounts#activation'
|
13
|
+
get '/reset_password/:id', to: 'accounts#reset_password', as: 'reset_password'
|
14
|
+
|
15
|
+
scope 'admin' do
|
16
|
+
get 'user/current', to: 'users#show', as: 'user_current'
|
17
|
+
|
18
|
+
root 'admin#index'
|
19
|
+
|
20
|
+
resources :roles
|
21
|
+
resources :user_sessions
|
22
|
+
resources :users do
|
23
|
+
member do
|
24
|
+
post :archive
|
25
|
+
post :unarchive
|
26
|
+
end
|
27
|
+
end
|
28
|
+
resource :account do
|
29
|
+
collection do
|
30
|
+
get :new_activation
|
31
|
+
get :resend_activation
|
32
|
+
post :resend_activation
|
33
|
+
get :lost_password
|
34
|
+
post :lost_password
|
35
|
+
end
|
36
|
+
member do
|
37
|
+
match :reset_password, via: [:get, :put]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
get 'filters/:type/options', to: 'filters#options', as: 'filters_options'
|
42
|
+
|
43
|
+
match 'attachments/:id', to: 'attachments#show', via: [:get, :post], as: 'attachment'
|
44
|
+
delete 'attachments/:id', to: 'attachments#destroy', as: 'destroy_attachment'
|
45
|
+
patch 'attachments(/:id)/reorder(/:position)', to: 'attachments#reorder', as: 'reorder_attachment'
|
46
|
+
|
47
|
+
get 'test_mail', to: 'admin#test_mail'
|
48
|
+
|
49
|
+
mount ::Sidekiq::Web => '/sidekiq', constraints: Symphonia::AdminConstraint.new
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
class CreateUsers < ActiveRecord::Migration[5.1]
|
2
|
+
def up
|
3
|
+
create_table :users, force: true do |t|
|
4
|
+
t.boolean :admin, null: false, default: false
|
5
|
+
t.integer :status, null: false, default: 1, index: true
|
6
|
+
|
7
|
+
t.string :login, null: false
|
8
|
+
t.string :first_name
|
9
|
+
t.string :last_name
|
10
|
+
t.string :email, null: false
|
11
|
+
t.string :language, null: true
|
12
|
+
# Authlogic::ActsAsAuthentic::Password
|
13
|
+
t.string :crypted_password
|
14
|
+
t.string :password_salt
|
15
|
+
|
16
|
+
# Authlogic::ActsAsAuthentic::PersistenceToken
|
17
|
+
t.string :persistence_token
|
18
|
+
t.index :persistence_token, unique: true
|
19
|
+
|
20
|
+
# Authlogic::ActsAsAuthentic::SingleAccessToken
|
21
|
+
t.string :single_access_token
|
22
|
+
t.index :single_access_token, unique: true
|
23
|
+
|
24
|
+
# Authlogic::ActsAsAuthentic::PerishableToken
|
25
|
+
t.string :perishable_token
|
26
|
+
t.index :perishable_token, unique: true
|
27
|
+
|
28
|
+
# Authlogic::Session::MagicColumns
|
29
|
+
t.integer :login_count, default: 0, null: false
|
30
|
+
t.integer :failed_login_count, default: 0, null: false
|
31
|
+
t.datetime :last_request_at
|
32
|
+
t.datetime :current_login_at
|
33
|
+
t.datetime :last_login_at
|
34
|
+
t.string :current_login_ip
|
35
|
+
t.string :last_login_ip
|
36
|
+
|
37
|
+
t.references :edited_by
|
38
|
+
t.datetime :edited_at
|
39
|
+
|
40
|
+
t.references :role
|
41
|
+
|
42
|
+
t.timestamps
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def down
|
47
|
+
drop_table :users
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class CreateRoles < ActiveRecord::Migration[5.1]
|
2
|
+
def up
|
3
|
+
create_table :roles do |t|
|
4
|
+
t.string :name, :null => false
|
5
|
+
t.text :description, :null => true
|
6
|
+
|
7
|
+
t.text :permissions
|
8
|
+
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def down
|
14
|
+
drop_table :roles
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class CreatePreferences < ActiveRecord::Migration[5.1]
|
2
|
+
def up
|
3
|
+
create_table :preferences do |t|
|
4
|
+
t.string :name, null: false, index: true
|
5
|
+
t.string :value
|
6
|
+
t.string :type
|
7
|
+
t.boolean :restrict, default: false
|
8
|
+
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
|
12
|
+
create_table :preferences_users, id: false do |t|
|
13
|
+
t.references :user
|
14
|
+
t.references :preference
|
15
|
+
end
|
16
|
+
|
17
|
+
add_index :preferences_users, [:user_id, :preference_id]
|
18
|
+
|
19
|
+
Symphonia::EmailPreference.create(name: 'notify_after_user_registered', restrict: true)
|
20
|
+
end
|
21
|
+
|
22
|
+
def down
|
23
|
+
drop_table :preferences
|
24
|
+
drop_table :preferences_users
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class CreateAttachments < ActiveRecord::Migration[5.1]
|
2
|
+
def change
|
3
|
+
create_table :attachments do |t|
|
4
|
+
t.string :type
|
5
|
+
t.string :attachment_file_name, null: false
|
6
|
+
t.string :attachment_content_type, null: false
|
7
|
+
t.integer :attachment_file_size, null: false
|
8
|
+
t.datetime :attachment_updated_at, null: false
|
9
|
+
|
10
|
+
t.references :attachable, polymorphic: true, null: true
|
11
|
+
|
12
|
+
t.text :description, null: true
|
13
|
+
t.integer :position, default: 1, index: true
|
14
|
+
|
15
|
+
t.timestamps null: false
|
16
|
+
|
17
|
+
t.index([:type, :attachable_type])
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class CreateAdminModules < ActiveRecord::Migration[5.1]
|
2
|
+
def up
|
3
|
+
create_table :admin_modules do |t|
|
4
|
+
t.string :type
|
5
|
+
t.string :title
|
6
|
+
t.text :description
|
7
|
+
t.string :panel_type, :default => 'default'
|
8
|
+
t.text :settings#, :limit => 100.megabytes
|
9
|
+
t.belongs_to :user, :null => true
|
10
|
+
|
11
|
+
t.integer :position, default: 1, index: true
|
12
|
+
|
13
|
+
t.timestamps
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def down
|
18
|
+
drop_table(:admin_modules)
|
19
|
+
end
|
20
|
+
end
|
data/db/seeds.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
u = Symphonia::User.new
|
2
|
+
u.attributes = {
|
3
|
+
login: 'admin',
|
4
|
+
first_name: 'Lukáš',
|
5
|
+
last_name: 'Pokorný',
|
6
|
+
email: 'luk4s.pokorny@gmail.com',
|
7
|
+
password: 'admin',
|
8
|
+
password_confirmation: 'admin',
|
9
|
+
admin: true
|
10
|
+
}
|
11
|
+
u.single_access_token = SecureRandom.hex(20)
|
12
|
+
u.save!(validate: false)
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'rails/generators/resource_helpers'
|
2
|
+
module Symphonia
|
3
|
+
module Generators
|
4
|
+
class EntityController < Rails::Generators::NamedBase
|
5
|
+
include Rails::Generators::ResourceHelpers
|
6
|
+
|
7
|
+
source_root File.expand_path("../templates", __FILE__)
|
8
|
+
|
9
|
+
check_class_collision suffix: "Controller"
|
10
|
+
|
11
|
+
class_option :helper, type: :boolean
|
12
|
+
class_option :orm, banner: "NAME", type: :string, required: true,
|
13
|
+
desc: "ORM to generate the controller for"
|
14
|
+
class_option :api, type: :boolean,
|
15
|
+
desc: "Generates API controller"
|
16
|
+
|
17
|
+
class_option :namespace, type: :string
|
18
|
+
|
19
|
+
argument :attributes, type: :array, default: [], banner: "field:type field:type"
|
20
|
+
|
21
|
+
def create_controller_files
|
22
|
+
template_file = options.api? ? "api_controller.rb" : "controller.rb"
|
23
|
+
template template_file, File.join("app/controllers", controller_class_path, "#{controller_file_name}_controller.rb")
|
24
|
+
end
|
25
|
+
|
26
|
+
hook_for :helper, in: :rails do |invoked|
|
27
|
+
invoke invoked, [ controller_name ]
|
28
|
+
end
|
29
|
+
|
30
|
+
def namespace
|
31
|
+
options['namespace'] && options['namespace'].safe_constantize || super
|
32
|
+
end
|
33
|
+
|
34
|
+
def show_helper # :doc:
|
35
|
+
"#{singular_table_name}_path(@#{singular_table_name})"
|
36
|
+
end
|
37
|
+
|
38
|
+
def edit_helper # :doc:
|
39
|
+
"edit_#{show_helper}"
|
40
|
+
end
|
41
|
+
|
42
|
+
def new_helper # :doc:
|
43
|
+
"new_#{singular_table_name}_path"
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|