merrycms 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. data/README +15 -0
  2. data/app/controllers/admin/base_controller.rb +11 -0
  3. data/app/controllers/admin/categories_controller.rb +63 -0
  4. data/app/controllers/admin/pages_controller.rb +73 -0
  5. data/app/controllers/admin/translations_controller.rb +55 -0
  6. data/app/controllers/admin/users_controller.rb +53 -0
  7. data/app/helpers/admin/categories_helper.rb +32 -0
  8. data/app/helpers/admin/pages_helper.rb +24 -0
  9. data/app/helpers/admin/translations_helper.rb +25 -0
  10. data/app/helpers/admin/users_helper.rb +10 -0
  11. data/app/models/category.rb +11 -0
  12. data/app/models/page.rb +66 -0
  13. data/app/models/role.rb +6 -0
  14. data/app/models/translation.rb +48 -0
  15. data/app/models/user.rb +42 -0
  16. data/app/views/admin/_nav.html.erb +10 -0
  17. data/app/views/admin/categories/_form.erb +24 -0
  18. data/app/views/admin/categories/edit.html.erb +3 -0
  19. data/app/views/admin/categories/index.html.erb +22 -0
  20. data/app/views/admin/categories/new.html.erb +3 -0
  21. data/app/views/admin/categories/sort.html.erb +29 -0
  22. data/app/views/admin/pages/_form.html.erb +25 -0
  23. data/app/views/admin/pages/_search.erb +15 -0
  24. data/app/views/admin/pages/edit.html.erb +3 -0
  25. data/app/views/admin/pages/index.html.erb +32 -0
  26. data/app/views/admin/pages/new.html.erb +3 -0
  27. data/app/views/admin/translations/_filter.html.erb +8 -0
  28. data/app/views/admin/translations/destroy.js +4 -0
  29. data/app/views/admin/translations/index.html.erb +40 -0
  30. data/app/views/admin/translations/new.html.erb +49 -0
  31. data/app/views/admin/users/_form.html.erb +33 -0
  32. data/app/views/admin/users/edit.html.erb +3 -0
  33. data/app/views/admin/users/index.html.erb +18 -0
  34. data/app/views/admin/users/new.html.erb +3 -0
  35. data/app/views/devise/confirmations/new.html.erb +10 -0
  36. data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  37. data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  38. data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  39. data/app/views/devise/passwords/edit.html.erb +15 -0
  40. data/app/views/devise/passwords/new.html.erb +16 -0
  41. data/app/views/devise/registrations/edit.html.erb +24 -0
  42. data/app/views/devise/registrations/new.html.erb +31 -0
  43. data/app/views/devise/sessions/new.html.erb +24 -0
  44. data/app/views/devise/shared/_links.erb +19 -0
  45. data/app/views/devise/unlocks/new.html.erb +11 -0
  46. data/app/views/layouts/admin.html.erb +22 -0
  47. data/app/views/layouts/login.html.erb +17 -0
  48. data/app/views/shared/_error_messages.html.erb +9 -0
  49. data/app/views/shared/_flashbox.html.erb +5 -0
  50. data/app/views/shared/_toplinks.html.erb +8 -0
  51. data/config/locales/en/admin/missing.yml +4 -0
  52. data/config/locales/fr/admin/admin.fr.yml +9 -0
  53. data/config/locales/fr/admin/category.fr.yml +22 -0
  54. data/config/locales/fr/admin/devise.fr.yml +129 -0
  55. data/config/locales/fr/admin/merrycms.fr.yml +6 -0
  56. data/config/locales/fr/admin/missing.yml +5 -0
  57. data/config/locales/fr/admin/pages.fr.yml +51 -0
  58. data/config/locales/fr/admin/pagination.fr.yml +6 -0
  59. data/config/locales/fr/admin/toplinks.fr.yml +9 -0
  60. data/config/locales/fr/admin/translations.fr.yml +46 -0
  61. data/config/locales/fr/admin/users.fr.yml +14 -0
  62. data/lib/generators/merrycms/install_generator.rb +78 -0
  63. data/lib/generators/merrycms/templates/create_pages_and_categories_migration.rb +36 -0
  64. data/lib/generators/merrycms/templates/create_roles_migration.rb +14 -0
  65. data/lib/generators/merrycms/templates/create_translations_migration.rb +17 -0
  66. data/lib/generators/merrycms/templates/devise_create_users_migration.rb +26 -0
  67. data/lib/generators/merrycms/templates/devise_initializer.rb +142 -0
  68. data/lib/generators/merrycms/templates/locale_initializer.rb +10 -0
  69. data/lib/generators/merrycms/templates/roles_users_migration.rb +13 -0
  70. data/lib/generators/merrycms/views_generator.rb +11 -0
  71. data/lib/merrycms/engine.rb +38 -0
  72. data/lib/merrycms/rails/routes.rb +35 -0
  73. data/lib/merrycms/railties/merrycms_tasks.rake +72 -0
  74. data/lib/merrycms.rb +1 -0
  75. metadata +270 -0
@@ -0,0 +1,15 @@
1
+ <%= form_for @search, :url => admin_pages_path, :html => {:method => :get, :class => 'search'} do |f| %>
2
+ <div>
3
+ <h3><%= t('pages.search.title') %></h3>
4
+ <div class='top'>
5
+ <%= f.label :title_or_content_contains, t('pages.search.page_title'), :class => 'desc' %>
6
+ <%= f.text_field :title_or_content_contains, :size => "20" %>
7
+ </div>
8
+ <div class='top'>
9
+ <label>&nbsp;</label>
10
+ <p>
11
+ <%= f.submit t('pages.search.submit') %>
12
+ </p>
13
+ </div>
14
+ </div>
15
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <h1><%= t('pages.edit.title') %></h1>
2
+
3
+ <%= render :partial => "form", :locals => { :page => @page } %>
@@ -0,0 +1,32 @@
1
+ <h1><%= t('pages.index.title') %></h1>
2
+
3
+ <p><%= link_to t('pages.index.new_page'), new_admin_page_path, :class => "button" %></p>
4
+
5
+ <%= render 'search' %>
6
+
7
+ <table>
8
+ <tr>
9
+ <th><%= t('activerecord.attributes.page.title') %></th>
10
+ <th><%= t('activerecord.attributes.page.link') %></th>
11
+ <th><%= t('categories.category') %></th>
12
+ <th><%= t('pages.state') %></th>
13
+ <th></th>
14
+ </tr>
15
+ <% if @pages.size == 0 %>
16
+ <tr>
17
+ <td colspan="5">Aucune page</td>
18
+ </tr>
19
+ <% else %>
20
+ <% @pages.each do |page| %>
21
+ <tr>
22
+ <td><%= link_to page.title, edit_admin_page_path(page) %></a></td>
23
+ <td><%= page.link %></td>
24
+ <td><%= display_page_category(page) %></td>
25
+ <td><%= display_state(page) %></td>
26
+ <td><%= display_events(page) %></td>
27
+ </tr>
28
+ <% end %>
29
+ <% end %>
30
+ </table>
31
+
32
+ <%= paginate @pages %>
@@ -0,0 +1,3 @@
1
+ <h1><%= t('pages.new.title') %></h1>
2
+
3
+ <%= render :partial => "form", :locals => { :page => @page } %>
@@ -0,0 +1,8 @@
1
+ <%= form_tag new_admin_translation_path, :method => :get do %>
2
+ <div>
3
+ <%= hidden_field_tag "language", params[:language] %>
4
+ <%= hidden_field_tag "type", params[:type] %>
5
+ <%= text_field_tag "query", params[:query] %>
6
+ <%= submit_tag t('translations.filter') %>
7
+ </div>
8
+ <% end %>
@@ -0,0 +1,4 @@
1
+ $("#translation-<%= @translation.id %>")
2
+ .hide()
3
+ .find(".translation-destroy")
4
+ .val(true);
@@ -0,0 +1,40 @@
1
+ <div id="translations">
2
+ <h1><%= t('translations.index.title') %></h1>
3
+
4
+ <p>
5
+ <%= t('translations.available_locales')%> : <%= display_available_locales %>
6
+ </p>
7
+
8
+ <h2><%= t('translations.pending') %></h2>
9
+ <% if @pending_translations.size > 0 %>
10
+ <ul class='pending'>
11
+ <% @pending_translations.each do |translation| %>
12
+ <li>
13
+ <%= link_to t("translations.locales.#{translation[0]}"), new_admin_translation_path(:language => translation[0], :type => 'pending') %>
14
+ <span class="count"><%= translation[1].size %></span>
15
+ </li>
16
+ <% end %>
17
+ </ul>
18
+ <% else %>
19
+ <p><%= t('translations.no_pending') %></p>
20
+ <% end %>
21
+
22
+ <h2><%= t('translations.all') %></h2>
23
+ <% if @all_translations.size > 0 %>
24
+ <ul class='all'>
25
+ <% @all_translations.each do |translation| %>
26
+ <li>
27
+ <%= link_to t("translations.locales.#{translation[0]}"), new_admin_translation_path(:language => translation[0]) %>
28
+ <span class="count"><%= translation[1].size %></span>
29
+ </li>
30
+ <% end %>
31
+ </ul>
32
+ <% else %>
33
+ <p><%= t('translations.no_translation') %></p>
34
+ <% end %>
35
+
36
+ <p>
37
+ <%= link_to t('translations.dump.link'), dump_admin_translations_path, :confirm => t('translations.dump.confirm'), :class => 'button' %>
38
+ </p>
39
+
40
+ </div>
@@ -0,0 +1,49 @@
1
+ <div id="translations">
2
+ <h1><%= t('translations.new.title') %></h1>
3
+
4
+ <p><%= t('translations.you_are_editing') %> : <%= t("translations.version.#{params[:language]}") %></p>
5
+
6
+ <%= render "filter" %>
7
+
8
+ <%= paginate @translations %>
9
+
10
+ <%= form_tag admin_translations_path do %>
11
+ <table>
12
+ <tr>
13
+ <th><%= t('translations.key') %></th>
14
+ <th><%= t("translations.locales.#{params[:language]}")%></th>
15
+ <th></th>
16
+ </tr>
17
+ <% @translations.each_with_index do |translation, index| %>
18
+ <tr id="translation-<%= translation[:id] %>">
19
+ <td>
20
+ <%= display_translation_if_exist(translation) %>
21
+ <span class='key'><%= translation.key %></span></td>
22
+ <td>
23
+ <%= hidden_field_tag "translations[#{index}][id]", translation[:id] %>
24
+ <%= hidden_field_tag "translations[#{index}][locale]", translation[:locale] %>
25
+ <%= hidden_field_tag "translations[#{index}][key]", translation[:key] %>
26
+ <%= hidden_field_tag "translations[#{index}][destroy]", false, :class => 'translation-destroy' %>
27
+ <%= text_area_tag "translations[#{index}][value]", translation[:value] %>
28
+ </td>
29
+ <td class="actions"><%= link_to t('translations.delete'), admin_translation_path(translation[:id], :type => params[:type], :language => params[:language]), :method => :delete, :class => :delete, :remote => true %></td>
30
+ </tr>
31
+ <% end %>
32
+ <tr>
33
+ <td colspan="3">
34
+ <%= submit_tag t('translations.submit') %>
35
+ <%= link_to t("cancel"), admin_translations_path %>
36
+ </td>
37
+ </tr>
38
+ </table>
39
+ <% end %>
40
+ </div>
41
+
42
+ <% content_for (:head) do %>
43
+ <script type="text/javascript">
44
+ $(function() {
45
+
46
+ $('table textarea').autoResize().trigger('change');
47
+ });
48
+ </script>
49
+ <% end %>
@@ -0,0 +1,33 @@
1
+ <%= form_for [:admin, @user] do |f| %>
2
+ <%= render "shared/error_messages", :target => @user %>
3
+ <div>
4
+ <%= f.label :email, :class => "desc required" %>
5
+ <%= f.text_field :email, :size => "60" %>
6
+ </div>
7
+ <div>
8
+ <%= f.label :password, t('users.password'), :class => "desc required" %>
9
+ <%= f.password_field :password, :size => "30" %>
10
+ </div>
11
+ <div>
12
+ <%= f.label :password_confirmation, t('users.password_confirmation'), :class => "desc required" %>
13
+ <%= f.password_field :password_confirmation, :size => "30" %>
14
+ </div>
15
+
16
+ <ul id="roles">
17
+ <% for role in Role::ROLES %>
18
+ <li><%= check_box_tag "roles[]", role, @user.has_role?(role), :disabled => @user.last_admin? %><%= role %></li>
19
+ <% end -%>
20
+ </ul>
21
+
22
+ <div>
23
+ <%= f.submit "Envoyer" %>
24
+ <%= link_to t('cancel'), admin_users_path %>
25
+ </div>
26
+ <% end %>
27
+
28
+ <% if @user.id %>
29
+ <%= form_for [:admin, @user], :html => { :method => "delete" } do |f| %>
30
+ <input type="hidden" name="_method" value="delete" />
31
+ <button type="submit">Supprimer cet utilisateur</button>
32
+ <% end %>
33
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <h1><%= t('users.edit.title') %></h1>
2
+
3
+ <%= render :partial => "form", :locals => { :user => @user } %>
@@ -0,0 +1,18 @@
1
+ <h1><%= t('users.index.title')%></h1>
2
+
3
+ <p><%= link_to "Ajouter un utilisateur", new_admin_user_path, :class => "button" %></p>
4
+
5
+ <table>
6
+ <tr>
7
+ <th><%= t('activerecord.attributes.user.email') %></th>
8
+ <th><%= t('users.index.roles') %></th>
9
+ </tr>
10
+ <% for user in @users %>
11
+ <tr>
12
+ <td><%= link_to user.email, edit_admin_user_path(user) %></td>
13
+ <td><%= display_user_roles(user) %></td>
14
+ </tr>
15
+ <% end %>
16
+ </table>
17
+
18
+ <%= paginate @users %>
@@ -0,0 +1,3 @@
1
+ <h1><%= t('users.new.title') %></h1>
2
+
3
+ <%= render :partial => "form", :locals => { :user => @user } %>
@@ -0,0 +1,10 @@
1
+ <h2>Resend confirmation instructions</h2>
2
+
3
+ <%= form_for(resource, :as => resource_name, :url => confirmation_path(resource_name), :html => { :method => :post }) do |f| %>
4
+ <p><%= f.label :email %><br />
5
+ <%= f.text_field :email %></p>
6
+
7
+ <p><%= f.submit "Resend confirmation instructions" %></p>
8
+ <% end %>
9
+
10
+ <%= render :partial => "devise/shared/links" %>
@@ -0,0 +1,5 @@
1
+ <p>Welcome <%= @resource.email %>!</p>
2
+
3
+ <p>You can confirm your account through the link below:</p>
4
+
5
+ <p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p>
@@ -0,0 +1,8 @@
1
+ <p>Hello <%= @resource.email %>!</p>
2
+
3
+ <p>Someone has requested a link to change your password, and you can do this through the link below.</p>
4
+
5
+ <p><%= link_to 'Change my password', edit_password_url(@resource, :reset_password_token => @resource.reset_password_token) %></p>
6
+
7
+ <p>If you didn't request this, please ignore this email.</p>
8
+ <p>Your password won't change until you access the link above and create a new one.</p>
@@ -0,0 +1,7 @@
1
+ <p>Hello <%= @resource.email %>!</p>
2
+
3
+ <p>Your account has been locked due to an excessive amount of unsuccessful sign in attempts.</p>
4
+
5
+ <p>Click the link below to unlock your account:</p>
6
+
7
+ <p><%= link_to 'Unlock my account', unlock_url(@resource, :unlock_token => @resource.unlock_token) %></p>
@@ -0,0 +1,15 @@
1
+ <h2>Change your password</h2>
2
+
3
+ <%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put }) do |f| %>
4
+ <%= f.hidden_field :reset_password_token %>
5
+
6
+ <p><%= f.label :password %><br />
7
+ <%= f.password_field :password %></p>
8
+
9
+ <p><%= f.label :password_confirmation %><br />
10
+ <%= f.password_field :password_confirmation %></p>
11
+
12
+ <p><%= f.submit "Change my password" %></p>
13
+ <% end %>
14
+
15
+ <%= render :partial => "devise/shared/links" %>
@@ -0,0 +1,16 @@
1
+ <h1><%= t('.title') %></h1>
2
+
3
+ <%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post }) do |f| %>
4
+ <%= render "shared/error_messages", :target => resource %>
5
+ <ul>
6
+ <li>
7
+ <%= f.label :email, :class => 'desc' %>
8
+ <%= f.text_field :email %>
9
+ </li>
10
+ <li>
11
+ <%= f.submit t('.send_me_reset_password_instructions') %>
12
+ </li>
13
+ </ul>
14
+ <% end %>
15
+
16
+ <%= render :partial => "devise/shared/links" %>
@@ -0,0 +1,24 @@
1
+ <h2>Edit <%= resource_name.to_s.humanize %></h2>
2
+
3
+ <%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| %>
4
+
5
+ <p><%= f.label :email %><br />
6
+ <%= f.text_field :email %></p>
7
+
8
+ <p><%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />
9
+ <%= f.password_field :password %></p>
10
+
11
+ <p><%= f.label :password_confirmation %><br />
12
+ <%= f.password_field :password_confirmation %></p>
13
+
14
+ <p><%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
15
+ <%= f.password_field :current_password %></p>
16
+
17
+ <p><%= f.submit "Update" %></p>
18
+ <% end %>
19
+
20
+ <h3>Cancel my account</h3>
21
+
22
+ <p>Unhappy? <%= link_to "Cancel my account", registration_path(resource_name), :confirm => "Are you sure?", :method => :delete %>.</p>
23
+
24
+ <%= link_to "Back", :back %>
@@ -0,0 +1,31 @@
1
+ <h1><%= t('.title') %></h1>
2
+
3
+ <%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
4
+ <%= render "shared/error_messages", :target => resource %>
5
+ <ul>
6
+ <li>
7
+ <%= f.label :email, :class => 'desc' %>
8
+ <%= f.text_field :email %>
9
+ </li>
10
+ <li>
11
+ <%= f.label :password, t('.password'), :class => 'desc' %>
12
+ <%= f.password_field :password %>
13
+ </li>
14
+ <li>
15
+ <%= f.label :password_confirmation, t('.password_confirmation'), :class => 'desc' %>
16
+ <%= f.password_field :password_confirmation %>
17
+ </li>
18
+ <li>
19
+ <%= f.submit t('.sign_up') %>
20
+ </li>
21
+ </ul>
22
+ </p>
23
+
24
+ <p></p>
25
+
26
+ <p></p>
27
+
28
+ <p></p>
29
+ <% end %>
30
+
31
+ <%= render :partial => "devise/shared/links" %>
@@ -0,0 +1,24 @@
1
+ <h1><%= t('.title') %></h1>
2
+
3
+ <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
4
+ <ul>
5
+ <li>
6
+ <%= f.label :email, :class => "desc" %>
7
+ <%= f.text_field :email %>
8
+ </li>
9
+ <li>
10
+ <%= f.label :password, t(".password"), :class => "desc" %>
11
+ <%= f.password_field :password %>
12
+ </li>
13
+ <% if devise_mapping.rememberable? -%>
14
+ <li>
15
+ <%= f.check_box :remember_me, :class => "checkbox" %> <%= f.label :remember_me, t(".remember_me"), :class => "choice" %>
16
+ </li>
17
+ <% end -%>
18
+ <li>
19
+ <%= f.submit t(".sign_in") %>
20
+ </li>
21
+ </ul>
22
+ <% end %>
23
+
24
+ <%= render :partial => "devise/shared/links" %>
@@ -0,0 +1,19 @@
1
+ <%- if controller_name != 'sessions' %>
2
+ <%= link_to t(".sign_in"), new_session_path(resource_name) %>&nbsp;
3
+ <% end -%>
4
+
5
+ <%- if devise_mapping.registerable? && controller_name != 'registrations' %>
6
+ <%= link_to t(".sign_up"), new_registration_path(resource_name) %>&nbsp;
7
+ <% end -%>
8
+
9
+ <%- if devise_mapping.recoverable? && controller_name != 'passwords' %>
10
+ <%= link_to t('.forgot_your_password?'), new_password_path(resource_name) %>&nbsp;
11
+ <% end -%>
12
+
13
+ <%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
14
+ <%= link_to t('.didnt_receive_confirmation_instructions?'), new_confirmation_path(resource_name) %>&nbsp;
15
+ <% end -%>
16
+
17
+ <%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>
18
+ <%= link_to t('.didnt_receive_unlock_instructions?'), new_unlock_path(resource_name) %>&nbsp;
19
+ <% end -%>
@@ -0,0 +1,11 @@
1
+ <h2>Resend unlock instructions</h2>
2
+
3
+ <%= form_for(resource, :as => resource_name, :url => unlock_path(resource_name), :html => { :method => :post }) do |f| %>
4
+
5
+ <p><%= f.label :email %><br />
6
+ <%= f.text_field :email %></p>
7
+
8
+ <p><%= f.submit "Resend unlock instructions" %></p>
9
+ <% end %>
10
+
11
+ <%= render :partial => "devise/shared/links" %>
@@ -0,0 +1,22 @@
1
+ <html>
2
+ <head>
3
+ <title>:: Admin ::</title>
4
+ <%= stylesheet_link_tag ['reset', 'font', 'form', 'admin'] %>
5
+ <%= javascript_include_tag ['jquery', 'jquery-ui.min', 'autoresize.jquery.min', 'rails', 'admin'] %>
6
+ <%= csrf_meta_tag %>
7
+
8
+ <%= yield(:head) %>
9
+
10
+ </head>
11
+ <body>
12
+ <div id="container"><div id="wrapper">
13
+ <%= render 'shared/toplinks' %>
14
+ <%= render 'admin/nav' %>
15
+ <div id="main">
16
+ <%= render 'shared/flashbox' %>
17
+
18
+ <%= yield %>
19
+ </div>
20
+ </div></div>
21
+ </body>
22
+ </html>
@@ -0,0 +1,17 @@
1
+ <html>
2
+ <head>
3
+ <title>:: Login ::</title>
4
+ <%= stylesheet_link_tag ['reset', 'font', 'form', 'login'] %>
5
+ <%= javascript_include_tag :defaults %>
6
+ <%= csrf_meta_tag %>
7
+ </head>
8
+ <body id="login">
9
+ <div id="container"><div id="wrapper">
10
+ <div id="main">
11
+ <%= render 'shared/flashbox' %>
12
+
13
+ <%= yield %>
14
+ </div>
15
+ </div></div>
16
+ </body>
17
+ </html>
@@ -0,0 +1,9 @@
1
+ <% if target.errors.any? %>
2
+ <div id="errorExplanation">
3
+ <ul>
4
+ <% target.errors.each do |attr, msg| %>
5
+ <li><%= msg %></li>
6
+ <% end %>
7
+ </ul>
8
+ </div>
9
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <% if notice %>
2
+ <p class="notice"><%= notice %></p>
3
+ <% elsif alert %>
4
+ <p class="alert"><%= alert %></p>
5
+ <% end %>
@@ -0,0 +1,8 @@
1
+ <div id="toplinks">
2
+ <% if user_signed_in? %>
3
+ <%= t('.signed_in_as', :user => current_user.email) %>.
4
+ <%= link_to t('.sign_out'), destroy_user_session_path %>
5
+ <% else %>
6
+ <%= link_to t('.sign_up'), new_user_registration_path %> <%= t('.or') %> <%= link_to t('.sign_in'), new_user_session_path %>
7
+ <% end %>
8
+ </div>
@@ -0,0 +1,4 @@
1
+ en:
2
+ i18n:
3
+ plural:
4
+ keys: [:zero, :one, :other]
@@ -0,0 +1,9 @@
1
+ fr:
2
+ admin:
3
+ nav:
4
+ pages: Pages
5
+ users: Utilisateurs
6
+ categories: Catégories
7
+ layouts:
8
+ admin:
9
+ signed_in_as: "Connecté en tant que %{user}"
@@ -0,0 +1,22 @@
1
+ fr:
2
+ categories:
3
+ name: Nom
4
+ link: Lien
5
+ parent: Parent
6
+ category: Catégorie
7
+
8
+ submit: Envoyer
9
+ delete: Supprimer cette catégorie
10
+
11
+ links:
12
+ new: Nouvelle catégorie
13
+ edit: modifier
14
+ sort: trier
15
+
16
+ edit:
17
+ title: Modifier la catégorie
18
+ new:
19
+ title: Ajouter une catégorie
20
+ sort:
21
+ title: Trier les catégories
22
+ stop_sorting: arréter de trier