typus 0.9.27 → 0.9.28
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.
- data/README.rdoc +1 -1
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/app/controllers/admin/master_controller.rb +31 -9
- data/app/controllers/typus_controller.rb +6 -2
- data/app/helpers/admin/form_helper.rb +10 -3
- data/app/helpers/admin/sidebar_helper.rb +30 -14
- data/app/helpers/admin/table_helper.rb +38 -27
- data/app/views/admin/dashboard/_sidebar.html.erb +1 -1
- data/app/views/admin/resources/show.html.erb +18 -3
- data/app/views/admin/shared/_pagination.html.erb +4 -4
- data/config/locales/de.yml +1 -4
- data/config/locales/es.yml +1 -4
- data/config/locales/fr.yml +99 -0
- data/config/locales/language.yml.template +81 -88
- data/config/locales/pt-BR.yml +17 -23
- data/config/locales/ru.yml +1 -6
- data/generators/typus/templates/config/initializers/typus.rb +2 -1
- data/generators/typus/templates/public/stylesheets/admin/screen.css +6 -3
- data/lib/typus/active_record.rb +6 -8
- data/lib/typus/authentication.rb +5 -8
- data/lib/typus/configuration.rb +2 -1
- data/lib/typus/user.rb +22 -22
- data/lib/typus.rb +13 -1
- data/lib/vendor/rss_parser.rb +20 -0
- data/test/functional/admin/assets_controller_test.rb +3 -4
- data/test/functional/admin/categories_controller_test.rb +1 -2
- data/test/functional/admin/comments_controller_test.rb +3 -2
- data/test/functional/admin/master_controller_test.rb +46 -0
- data/test/functional/admin/posts_controller_test.rb +41 -2
- data/test/functional/admin/status_controller_test.rb +1 -2
- data/test/functional/admin/typus_users_controller_test.rb +1 -2
- data/test/functional/typus_controller_test.rb +12 -9
- data/test/helpers/admin/sidebar_helper_test.rb +25 -1
- data/test/helpers/admin/table_helper_test.rb +30 -1
- data/test/lib/active_record_test.rb +5 -0
- data/test/lib/configuration_test.rb +2 -1
- data/test/lib/typus_test.rb +10 -0
- data/test/unit/typus_user_test.rb +2 -2
- data/test/vendor/paginator_test.rb +2 -0
- data/typus.gemspec +4 -2
- metadata +4 -2
data/README.rdoc
CHANGED
@@ -141,7 +141,7 @@ This feature is a work in progress. Only previews images.
|
|
141
141
|
- Komzák Nándor (Code, bugfixes & feedback) http://github.com/rubymood
|
142
142
|
- Michael Grunewalder (German translation) http://michael.grunewalder.com
|
143
143
|
- Tim Harvey (Code) http://www.timharvey.net/
|
144
|
-
- Ned Baldessin (
|
144
|
+
- Ned Baldessin (French translation and code) http://github.com/nedbaldessin
|
145
145
|
- Robert Rouse (Code) - Ruby 1.9 compatibility fixes.
|
146
146
|
|
147
147
|
== Acknowledgments
|
data/Rakefile
CHANGED
@@ -57,5 +57,5 @@ begin
|
|
57
57
|
gemspec.authors = ["Francesc Esplugas"]
|
58
58
|
end
|
59
59
|
rescue LoadError
|
60
|
-
puts "Jeweler not available. Install it with: sudo gem install
|
60
|
+
puts "Jeweler not available. Install it with: sudo gem install jeweler -s http://gemcutter.org"
|
61
61
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.9.
|
1
|
+
0.9.28
|
@@ -67,6 +67,8 @@ class Admin::MasterController < ApplicationController
|
|
67
67
|
|
68
68
|
def new
|
69
69
|
|
70
|
+
check_ownership_of_referal_item
|
71
|
+
|
70
72
|
item_params = params.dup
|
71
73
|
%w( controller action resource resource_id back_to selected ).each do |param|
|
72
74
|
item_params.delete(param)
|
@@ -87,7 +89,7 @@ class Admin::MasterController < ApplicationController
|
|
87
89
|
|
88
90
|
@item = @resource[:class].new(params[:item])
|
89
91
|
|
90
|
-
if @
|
92
|
+
if @resource[:class].typus_user_id?
|
91
93
|
@item.attributes = { Typus.user_fk => @current_user.id }
|
92
94
|
end
|
93
95
|
|
@@ -130,7 +132,13 @@ class Admin::MasterController < ApplicationController
|
|
130
132
|
end
|
131
133
|
|
132
134
|
def update
|
135
|
+
|
133
136
|
if @item.update_attributes(params[:item])
|
137
|
+
|
138
|
+
if @resource[:class].typus_user_id? && !@current_user.is_root?
|
139
|
+
@item.update_attributes Typus.user_fk => @current_user.id
|
140
|
+
end
|
141
|
+
|
134
142
|
flash[:success] = _("{{model}} successfully updated.", :model => @resource[:class].typus_human_name)
|
135
143
|
path = if @resource[:class].typus_options_for(:index_after_save)
|
136
144
|
params[:back_to] ? "#{params[:back_to]}##{@resource[:self]}" : { :action => 'index' }
|
@@ -138,10 +146,14 @@ class Admin::MasterController < ApplicationController
|
|
138
146
|
{ :action => @resource[:class].typus_options_for(:default_action_on_item), :id => @item.id, :back_to => params[:back_to] }
|
139
147
|
end
|
140
148
|
redirect_to path
|
149
|
+
|
141
150
|
else
|
151
|
+
|
142
152
|
@previous, @next = @item.previous_and_next
|
143
153
|
select_template :edit
|
154
|
+
|
144
155
|
end
|
156
|
+
|
145
157
|
end
|
146
158
|
|
147
159
|
def destroy
|
@@ -247,16 +259,19 @@ private
|
|
247
259
|
# If item is owned by another user, we only can perform a
|
248
260
|
# show action on the item. Updated item is also blocked.
|
249
261
|
#
|
250
|
-
# before_filter :check_ownership_of_item, :only => [ :edit, :update, :destroy
|
262
|
+
# before_filter :check_ownership_of_item, :only => [ :edit, :update, :destroy,
|
263
|
+
# :toggle, :position,
|
264
|
+
# :relate, :unrelate ]
|
251
265
|
#
|
252
266
|
def check_ownership_of_item
|
253
267
|
|
254
|
-
#
|
268
|
+
# By-pass if current_user is root.
|
255
269
|
return if @current_user.is_root?
|
256
270
|
|
257
|
-
|
258
|
-
|
259
|
-
|
271
|
+
condition_typus_users = @item.respond_to?(Typus.relationship) && !@item.send(Typus.relationship).include?(@current_user)
|
272
|
+
condition_typus_user_id = @item.respond_to?(Typus.user_fk) && !@item.owned_by?(@current_user)
|
273
|
+
|
274
|
+
if condition_typus_users || condition_typus_user_id
|
260
275
|
flash[:notice] = _("You don't have permission to access this item.")
|
261
276
|
redirect_to request.referer || admin_dashboard_path
|
262
277
|
end
|
@@ -268,9 +283,8 @@ private
|
|
268
283
|
# By-pass if current_user is root.
|
269
284
|
return if @current_user.is_root?
|
270
285
|
|
271
|
-
#
|
272
|
-
#
|
273
|
-
# related items.
|
286
|
+
# Show only related items it @resource has a foreign_key (Typus.user_fk)
|
287
|
+
# related to the logged user.
|
274
288
|
if @resource[:class].typus_user_id?
|
275
289
|
condition = { Typus.user_fk => @current_user }
|
276
290
|
@conditions = @resource[:class].merge_conditions(@conditions, condition)
|
@@ -278,6 +292,14 @@ private
|
|
278
292
|
|
279
293
|
end
|
280
294
|
|
295
|
+
def check_ownership_of_referal_item
|
296
|
+
return unless params[:resource] && params[:resource_id]
|
297
|
+
klass = params[:resource].classify.constantize
|
298
|
+
return if !klass.typus_user_id?
|
299
|
+
item = klass.find(params[:resource_id])
|
300
|
+
raise "You're not owner of this record." unless item.owned_by?(@current_user)
|
301
|
+
end
|
302
|
+
|
281
303
|
def set_fields
|
282
304
|
@fields = case params[:action]
|
283
305
|
when 'index'
|
@@ -102,8 +102,12 @@ class TypusController < ApplicationController
|
|
102
102
|
|
103
103
|
if request.post?
|
104
104
|
|
105
|
-
|
106
|
-
|
105
|
+
password = 'columbia'
|
106
|
+
|
107
|
+
user = Typus.user_class.generate(:email => params[:user][:email],
|
108
|
+
:password => 'columbia',
|
109
|
+
:role => Typus::Configuration.options[:root])
|
110
|
+
user.status = true
|
107
111
|
|
108
112
|
if user.save
|
109
113
|
session[:typus_user_id] = user.id
|
@@ -203,7 +203,6 @@ module Admin::FormHelper
|
|
203
203
|
|
204
204
|
def typus_relationships
|
205
205
|
|
206
|
-
# OPTIMIZE
|
207
206
|
@back_to = '/' + [ params[:controller], params[:action], params[:id] ].compact.join('/')
|
208
207
|
|
209
208
|
returning(String.new) do |html|
|
@@ -297,16 +296,24 @@ module Admin::FormHelper
|
|
297
296
|
reflection = @resource[:class].reflect_on_association(field.to_sym)
|
298
297
|
association = reflection.macro
|
299
298
|
|
299
|
+
condition = !(@resource[:class].typus_user_id? && @current_user.id == @item.send(Typus.user_fk))
|
300
|
+
|
301
|
+
unless condition
|
302
|
+
add_new = <<-HTML
|
303
|
+
<small>#{link_to _("Add new"), :controller => field, :action => 'new', :back_to => @back_to, :resource => @resource[:self], :resource_id => @item.id if @current_user.can_perform?(model_to_relate, 'create')}</small>
|
304
|
+
HTML
|
305
|
+
end
|
306
|
+
|
300
307
|
html << <<-HTML
|
301
308
|
<a name="#{field}"></a>
|
302
309
|
<div class="box_relationships">
|
303
310
|
<h2>
|
304
311
|
#{link_to model_to_relate.typus_human_name.pluralize, :controller => "admin/#{model_to_relate_as_resource}"}
|
305
|
-
|
312
|
+
#{add_new}
|
306
313
|
</h2>
|
307
314
|
HTML
|
308
315
|
items_to_relate = (model_to_relate.find(:all) - @item.send(field))
|
309
|
-
unless items_to_relate.empty?
|
316
|
+
unless condition || items_to_relate.empty?
|
310
317
|
html << <<-HTML
|
311
318
|
#{form_tag :action => 'relate', :id => @item.id}
|
312
319
|
#{hidden_field :related, :model, :value => model_to_relate}
|
@@ -28,18 +28,14 @@ module Admin::SidebarHelper
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
# OPTIMIZE
|
32
31
|
case params[:action]
|
33
32
|
when 'show'
|
34
|
-
if @
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
items << (link_to _("Edit entry"), :action => 'edit', :id => @item.id)
|
41
|
-
end
|
42
|
-
end
|
33
|
+
condition = if @resource[:class].typus_user_id? && !@current_user.is_root?
|
34
|
+
@item.owned_by?(@current_user)
|
35
|
+
else
|
36
|
+
@current_user.can_perform?(@resource[:class], 'destroy')
|
37
|
+
end
|
38
|
+
items << (link_to _("Edit entry"), :action => 'edit', :id => @item.id) if condition
|
43
39
|
end
|
44
40
|
|
45
41
|
@resource[:class].typus_actions_for(params[:action]).each do |action|
|
@@ -89,12 +85,32 @@ module Admin::SidebarHelper
|
|
89
85
|
|
90
86
|
end
|
91
87
|
|
92
|
-
def previous_and_next
|
88
|
+
def previous_and_next(klass = @resource[:class])
|
89
|
+
|
93
90
|
return [] unless %w( edit show update ).include?(params[:action])
|
91
|
+
|
92
|
+
# Verify ownership of record to define the kind of action which can be
|
93
|
+
# performed on the record.
|
94
|
+
|
94
95
|
returning(Array.new) do |items|
|
95
|
-
|
96
|
-
|
96
|
+
if @next
|
97
|
+
action = if klass.typus_user_id? && !@current_user.is_root?
|
98
|
+
@next.owned_by?(@current_user) ? 'edit' : 'show'
|
99
|
+
else
|
100
|
+
!@current_user.can_perform?(klass, 'edit') ? 'show' : params[:action]
|
101
|
+
end
|
102
|
+
items << (link_to _("Next"), params.merge(:action => action, :id => @next.id))
|
103
|
+
end
|
104
|
+
if @previous
|
105
|
+
action = if klass.typus_user_id? && !@current_user.is_root?
|
106
|
+
@previous.owned_by?(@current_user) ? 'edit' : 'show'
|
107
|
+
else
|
108
|
+
!@current_user.can_perform?(klass, 'edit') ? 'show' : params[:action]
|
109
|
+
end
|
110
|
+
items << (link_to _("Previous"), params.merge(:action => action, :id => @previous.id))
|
111
|
+
end
|
97
112
|
end
|
113
|
+
|
98
114
|
end
|
99
115
|
|
100
116
|
def search
|
@@ -178,7 +194,7 @@ function surfto_#{model_pluralized}(form) {
|
|
178
194
|
<!-- /Embedded JS -->
|
179
195
|
<form class="form" action="#"><p>
|
180
196
|
<select name="#{model_pluralized}" onChange="surfto_#{model_pluralized}(this.form)">
|
181
|
-
<option value="#{url_for params_without_filter}">#{_("
|
197
|
+
<option value="#{url_for params_without_filter}">#{_("Filter by")} #{_(model.typus_human_name)}</option>
|
182
198
|
#{items.join("\n")}
|
183
199
|
</select>
|
184
200
|
</p></form>
|
@@ -33,7 +33,7 @@ module Admin::TableHelper
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
action = if
|
36
|
+
action = if model.typus_user_id? && !@current_user.is_root?
|
37
37
|
# If there's a typus_user_id column on the table and logged user is not root ...
|
38
38
|
item.owned_by?(@current_user) ? 'edit' : 'show'
|
39
39
|
elsif !@current_user.can_perform?(model, 'edit')
|
@@ -47,46 +47,57 @@ module Admin::TableHelper
|
|
47
47
|
<td width="10px">#{content}</td>
|
48
48
|
HTML
|
49
49
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
if @current_user.can_perform?(model, 'delete')
|
50
|
+
##
|
51
|
+
# This controls the action to perform. If we are on a model list we
|
52
|
+
# will remove the entry, but if we inside a model we will remove the
|
53
|
+
# relationship between the models.
|
54
|
+
#
|
55
|
+
# Only shown is the user can destroy/unrelate items.
|
56
|
+
#
|
58
57
|
|
59
58
|
trash = "<div class=\"sprite trash\">Trash</div>"
|
59
|
+
unrelate = "<div class=\"sprite unrelate\">Unrelate</div>"
|
60
60
|
|
61
61
|
case params[:action]
|
62
62
|
when 'index'
|
63
|
-
|
64
|
-
|
63
|
+
condition = if model.typus_user_id? && !@current_user.is_root?
|
64
|
+
item.owned_by?(@current_user)
|
65
|
+
else
|
66
|
+
@current_user.can_perform?(model, 'destroy')
|
67
|
+
end
|
68
|
+
perform = link_to trash, { :action => 'destroy', :id => item.id },
|
69
|
+
:title => _("Remove"),
|
65
70
|
:confirm => _("Remove entry?"),
|
66
|
-
:method => :delete
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
71
|
+
:method => :delete if condition
|
72
|
+
when 'edit'
|
73
|
+
# If we are editing content, we can relate and unrelate always!
|
74
|
+
perform = link_to unrelate, { :action => 'unrelate', :id => params[:id], :association => association, :resource => model, :resource_id => item.id },
|
75
|
+
:title => _("Unrelate"),
|
76
|
+
:confirm => _("Unrelate {{unrelate_model}} from {{unrelate_model_from}}?",
|
77
|
+
:unrelate_model => model.typus_human_name,
|
78
|
+
:unrelate_model_from => @resource[:class].typus_human_name)
|
79
|
+
when 'show'
|
80
|
+
# If we are showing content, we only can relate and unrelate if we are
|
81
|
+
# the owners of the owner record.
|
82
|
+
# If the owner record doesn't have a foreign key (Typus.user_fk) we look
|
83
|
+
# each item to verify the ownership.
|
84
|
+
condition = if @resource[:class].typus_user_id? && !@current_user.is_root?
|
85
|
+
@item.owned_by?(@current_user)
|
86
|
+
end
|
87
|
+
perform = link_to unrelate, { :action => 'unrelate', :id => params[:id], :association => association, :resource => model, :resource_id => item.id },
|
88
|
+
:title => _("Unrelate"),
|
89
|
+
:confirm => _("Unrelate {{unrelate_model}} from {{unrelate_model_from}}?",
|
90
|
+
:unrelate_model => model.typus_human_name,
|
91
|
+
:unrelate_model_from => @resource[:class].typus_human_name) if condition
|
76
92
|
end
|
77
93
|
|
78
94
|
html << <<-HTML
|
79
95
|
<td width="10px">#{perform}</td>
|
96
|
+
</tr>
|
80
97
|
HTML
|
81
98
|
|
82
99
|
end
|
83
100
|
|
84
|
-
html << <<-HTML
|
85
|
-
</tr>
|
86
|
-
HTML
|
87
|
-
|
88
|
-
end
|
89
|
-
|
90
101
|
html << "</table>"
|
91
102
|
|
92
103
|
end
|
@@ -2,6 +2,6 @@
|
|
2
2
|
|
3
3
|
<p>Documentation is available <%= link_to 'here', 'http://intraducibles.com/projects/typus', :rel => 'external' %>.</p>
|
4
4
|
|
5
|
-
<p>If you need help don't hesitate in joining the <%= link_to '
|
5
|
+
<p>If you need help don't hesitate in joining the <%= link_to 'mailing list', 'http://groups.google.com/group/typus', :rel => 'external' %>.</p>
|
6
6
|
|
7
7
|
<p>Replace this sidebar dropping a file named <code>_sidebar.html.erb</code> on the <code>app/views/admin/dashboard</code> folder.</p>
|
@@ -9,9 +9,24 @@
|
|
9
9
|
<%= typus_block :location => @resource[:self], :partial => 'show' %>
|
10
10
|
|
11
11
|
<dl>
|
12
|
-
<%- @fields.
|
13
|
-
<dt><%=h @resource[:class].human_attribute_name(
|
14
|
-
|
12
|
+
<%- @fields.each do |field| -%>
|
13
|
+
<dt><%=h @resource[:class].human_attribute_name(field.first) %></dt>
|
14
|
+
<%-
|
15
|
+
data_type = field.last
|
16
|
+
raw_data = @item.send(field.first)
|
17
|
+
data = case data_type
|
18
|
+
when :boolean
|
19
|
+
boolean_hash = @resource[:class].typus_boolean(field.first)
|
20
|
+
!raw_data.nil? ? boolean_hash["#{raw_data}".to_sym] : @resource[:class].typus_options_for(:nil)
|
21
|
+
when :belongs_to
|
22
|
+
raw_data.typus_name
|
23
|
+
when :text
|
24
|
+
defined?(RDiscount) ? markdown(raw_data) : raw_data
|
25
|
+
else
|
26
|
+
raw_data
|
27
|
+
end
|
28
|
+
-%>
|
29
|
+
<dd><%= !data.blank? ? (data_type.eql?(:text) ? markdown(data) : h(data)) : '—' %></dd>
|
15
30
|
<%- end -%>
|
16
31
|
</dl>
|
17
32
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
<div class="pagination">
|
2
2
|
|
3
3
|
<% if @items.prev? %>
|
4
|
-
<%= link_to
|
4
|
+
<%= link_to "← " + _("Previous"), params.merge(:page => @items.prev.number, :anchor => @options[:anchor]) %>
|
5
5
|
<% else %>
|
6
|
-
<span class="disabled"><%=
|
6
|
+
<span class="disabled"><%= "← " + _("Previous") %></span>
|
7
7
|
<% end %>
|
8
8
|
|
9
9
|
<% last_page = 0 -%>
|
@@ -20,9 +20,9 @@
|
|
20
20
|
<% end -%>
|
21
21
|
|
22
22
|
<% if @items.next? %>
|
23
|
-
<%= link_to _("Next →"
|
23
|
+
<%= link_to _("Next") + " →", params.merge(:page => @items.next.number, :anchor => @options[:anchor]) %>
|
24
24
|
<% else %>
|
25
|
-
<span class="disabled"><%= _("Next →"
|
25
|
+
<span class="disabled"><%= _("Next") + " →" %></span>
|
26
26
|
<% end %>
|
27
27
|
|
28
28
|
</div>
|
data/config/locales/de.yml
CHANGED
@@ -38,8 +38,6 @@ de:
|
|
38
38
|
"Back to list": "Zur7uuml;ck zur Liste"
|
39
39
|
"Actions": "Aktionen"
|
40
40
|
"Add": "Zufügen"
|
41
|
-
"← Previous": "← Vorheriger"
|
42
|
-
"Next →": "Nächster &rarr"
|
43
41
|
"Previous": "Vorheriger"
|
44
42
|
"Next": "Nächster"
|
45
43
|
"Search": "Suchen"
|
@@ -70,7 +68,7 @@ de:
|
|
70
68
|
"Resources": "Resourcen"
|
71
69
|
"Up": "Hoch"
|
72
70
|
"Down": "Runter"
|
73
|
-
"
|
71
|
+
"Filter by": "filter nach"
|
74
72
|
"Checked if active": "Angekreuzt wenn activiert"
|
75
73
|
"As you're not the admin or the owner of this record you cannot edit it": "Nur der Administrator oder der Eigent7uuml;er des Datensates kann ihn bearbeiten"
|
76
74
|
"You can't change your role": "Sie können Ihre Rolle nicht ändern"
|
@@ -82,7 +80,6 @@ de:
|
|
82
80
|
"{{current_user_role}} can't perform action. ({{action}})": "{{current_user_role}} kann die Aktion nicht ausführen. ({{action}})"
|
83
81
|
"{{current_user_role}} can't go to {{action}} on {{controller}}": "{{current_user_role}} kann {{action}} von {{controller}} nicht asuführen"
|
84
82
|
"{{current_user_role}} can't delete this item": "{{current_user_role}} kann diesen Eintrag nicht löschen"
|
85
|
-
"{{current_user_role}} can't perform action ({{action}})": "{{current_user_role}} kann diese Aktion nicht ausführen"
|
86
83
|
"{{current_user_role}} can't display items": "{{current_user_role}} kann Einträge nicht anzeigen"
|
87
84
|
"You can update your password at": "Sie k7ouml;nnen Ihr Passwort ändern unter"
|
88
85
|
"If you didn't request a password update, you can ignore this message": "Falls Sie keine Passwort Äderung beantragt haben, können Sie diese nachricht ignorieren"
|
data/config/locales/es.yml
CHANGED
@@ -38,8 +38,6 @@ es:
|
|
38
38
|
"Back to list": "Volver al listado"
|
39
39
|
"Actions": "Acciones"
|
40
40
|
"Add": "Añadir"
|
41
|
-
"← Previous": "← Anterior"
|
42
|
-
"Next →": "Siguente →"
|
43
41
|
"Previous": "Anterior"
|
44
42
|
"Next": "Siguiente"
|
45
43
|
"Search": "Búsqueda"
|
@@ -70,7 +68,7 @@ es:
|
|
70
68
|
"Resources": "Recursos"
|
71
69
|
"Up": "Subir"
|
72
70
|
"Down": "Bajar"
|
73
|
-
"
|
71
|
+
"Filter by": "filtrar por"
|
74
72
|
"Checked if active": "Marca para activar"
|
75
73
|
"As you're not the admin or the owner of this record you cannot edit it": "Como no eres el admin o el propietario de este registro no puedes editarlo."
|
76
74
|
"You can't change your role": "No puedes cambiar tu propio rol."
|
@@ -82,7 +80,6 @@ es:
|
|
82
80
|
"{{current_user_role}} can't perform action. ({{action}})": "{{current_user_role}} no puede realizar la acción. ({{action}})"
|
83
81
|
"{{current_user_role}} can't go to {{action}} on {{controller}}": "{{current_user_role}} no pude ir a {{action}} en {{controller}}."
|
84
82
|
"{{current_user_role}} can't delete this item": "{{current_user_role}} no puede borrar este elemento."
|
85
|
-
"{{current_user_role}} can't perform action ({{action}})": "{{current_user_role}} no puede relizar la accion ({{action}})"
|
86
83
|
"{{current_user_role}} can't display items": "{{current_user_role}} no puede mostrar los elementos."
|
87
84
|
"You can update your password at": "Puedes actualizar tu contraseña en"
|
88
85
|
"If you didn't request a password update, you can ignore this message": "Si no pediste una actualización de tu contraseña, puedes ignorar este mensaje."
|
@@ -0,0 +1,99 @@
|
|
1
|
+
# French translations for Typus
|
2
|
+
# by Ned Baldessin <http://github.com/nedbaldessin>
|
3
|
+
|
4
|
+
fr:
|
5
|
+
"Email": "Email"
|
6
|
+
"Password": "Mot de passe"
|
7
|
+
"Password confirmation": "Confirmation du mot de passe"
|
8
|
+
"Sign in": "Entrer"
|
9
|
+
"Recover password": "Récupérer le mot de passe"
|
10
|
+
"Sign up": "Ouvrir un compte"
|
11
|
+
"Enter your email below to create the first user": "Entrez votre adresse email pour créer le premier utilisateur"
|
12
|
+
"That doesn't seem like a valid email address": "L'adresse email ne semble pas valide"
|
13
|
+
"I remember my password": "Je me souviens du mot de passe"
|
14
|
+
"Password recovery link sent to your email": "Un email vous a été envoyé pour la récupération de votre mot de passe"
|
15
|
+
"A valid token is required": "Un token valide est nécessaire"
|
16
|
+
"The email and/or password you entered is invalid": "L'adresse email et/ou le mot de passe sont incorrects"
|
17
|
+
"There are not defined applications in config/typus/*.yml": "Aucune application définie dans config/typus/*.yml"
|
18
|
+
"Overview": "Vision générale"
|
19
|
+
"Options": "Options"
|
20
|
+
"Password confirm": "Confirmation du mot de passe"
|
21
|
+
"Change password": "Modifier le mot de passe"
|
22
|
+
"There are no {{records}}": "Il n'y aucun(e) {{records}}."
|
23
|
+
"There are no {{records}} under this filter": "Il n'y a aucun(e) {{records}} avec ce filtre."
|
24
|
+
"Dashboard": "Tableau de bord"
|
25
|
+
"Create entry": "Créer"
|
26
|
+
"Update entry": "Mettre-à-jour"
|
27
|
+
"New": "Nouveau"
|
28
|
+
"Show": "Voir"
|
29
|
+
"Edit": "Éditer"
|
30
|
+
"Login": "Identification"
|
31
|
+
"Setup": "Configurer"
|
32
|
+
"Create": "Créer"
|
33
|
+
"Sign out": "Déconnexion"
|
34
|
+
"Update": "Mettre-à-jour"
|
35
|
+
"View site": "Voir le site"
|
36
|
+
"Logged as": "Identifié comme"
|
37
|
+
"Remove filter": "Supprimer le filtre"
|
38
|
+
"Back to list": "Retour liste"
|
39
|
+
"Actions": "Actions"
|
40
|
+
"Add": "Ajouter"
|
41
|
+
"Previous": "Précédent"
|
42
|
+
"Next": "Suivant"
|
43
|
+
"Search": "Recherche"
|
44
|
+
"Search by": "Rechercher par"
|
45
|
+
"{{model}} successfully updated": "{{model}} correctement mis(e)-à-jour."
|
46
|
+
"{{model}} successfully created": "{{model}} correctement créé(e)."
|
47
|
+
"{{model}} successfully removed": "{{model}} correctement supprimé(e)."
|
48
|
+
"{{model}} {{attribute}} changed": "{{model}} {{attribute}} modifié."
|
49
|
+
"You're adding a new {{resource_from}} to {{resource_to}}": "Vous ajoutez un(e) {{resource_from}} à un(e) {{resource_to}}."
|
50
|
+
"You're adding a new {{resource_from}}": "Vous ajoutez un nouveau {{resource_from}}."
|
51
|
+
"You're updating a {{resource_from}} for {{resource_to}}": "Vous mettez-à-jour un(e) {{resource_from}} pour un(e) {{resource_to}}."
|
52
|
+
"You're updating a {{resource_from}}": "Vous mettez-à-jour un(e) {{resource_from}}."
|
53
|
+
"Toggle is disabled": "Le basculement est désactivé"
|
54
|
+
"Record moved {{to}}": "Entrées réordonnées"
|
55
|
+
"{{model_a}} related to {{model_b}}": "{{model_a}} associé à {{model_b}}."
|
56
|
+
"{{model_a}} successfully assigned to {{model_b}}": "{{model_a}} associé à {{model_b}}."
|
57
|
+
"{{model_a}} unrelated from {{model_b}}": "{{model_a}} dissocié de {{model_b}}."
|
58
|
+
"{{model_a}} removed from {{model_b}}": "{{model_a}} retiré de {{model_b}}."
|
59
|
+
"Your new password is {{password}}": "Votre nouveau mot-de-passe est {{password}}."
|
60
|
+
"Add entry": "Ajouter une entrée"
|
61
|
+
"Go to": "Aller"
|
62
|
+
"First name": "Prénom"
|
63
|
+
"Last name": "Nom de famille"
|
64
|
+
"Roles": "Rôles"
|
65
|
+
"Status": "État"
|
66
|
+
"Typus User": "Utilisateur admin"
|
67
|
+
"System Users Administration": "Modifier les utilisateurs de l'admin"
|
68
|
+
"Resources": "Ressources"
|
69
|
+
"Up": "Monter"
|
70
|
+
"Down": "Descendre"
|
71
|
+
"Filter by": "Filtrer par"
|
72
|
+
"Checked if active": "Coché si actif"
|
73
|
+
"As you're not the admin or the owner of this record you cannot edit it": "Vous n'êtes pas le propriétaire de cette entrée, ou un administrateur, par conséquent vous ne pouvez pas le modifier"
|
74
|
+
"You can't change your role": "Vous ne pouvez pas changer votre propre rôle."
|
75
|
+
"Error! Typus User or role doesn't exist": "Une erreur est survenue. L'utilisateur ou le rôle sont inconnus."
|
76
|
+
"You can't toggle your status": "Vous ne pouvez pas basculer votre statut"
|
77
|
+
"You're not allowed to toggle status": "Vous n'êtes pas autorisé à basculer votre statut"
|
78
|
+
"You can't remove yourself": "Vous ne pouvez pas supprimer votre propre compte"
|
79
|
+
"You're not allowed to remove Typus Users": "Vous n'avez pas le droit de supprimer des utilisateurs de l'administration"
|
80
|
+
"{{current_user_role}} can't perform action. ({{action}})": "{{current_user_role}} ne peut effectuer l'action ({{action}})"
|
81
|
+
"{{current_user_role}} can't go to {{action}} on {{controller}}": "{{current_user_role}} ne peut effectuer {{action}} sur {{controller}}"
|
82
|
+
"{{current_user_role}} can't delete this item": "{{current_user_role}} ne peut supprimer cette entrée"
|
83
|
+
"{{current_user_role}} can't perform action ({{action}})": "{{current_user_role}} ne peut effectuer l'action ({{action}})"
|
84
|
+
"Record owned by another user": "Cette entrée est la propriété d'un autre utilisateur"
|
85
|
+
"{{current_user_role}} can't display items": "Un utilisateur de rôle {{current_user_role}} ne peut pas afficher ces éléments."
|
86
|
+
"You can update your password at": "Vous pouvez modifier votre mot de passe ici"
|
87
|
+
"If you didn't request a password update, you can ignore this message": "Si vous n'avez pas demandé à mettre à jour votre mot de passe, vous pouvez ignorer ce message"
|
88
|
+
"Reset password": "Renouveler le mot de passe"
|
89
|
+
"Add new": "Ajouter nouveau"
|
90
|
+
"Do you want to cancel it?": "Voulez-vous annuler?"
|
91
|
+
"Click here": "Cliquer ici"
|
92
|
+
"Are you sure you want to leave this page?": "Êtes-vous certain de vouloir quitter cette page?"
|
93
|
+
"If you have made any changes to the fields without clicking the Save/Update entry button, your changes will be lost": "Si vous avez effectué des modifications sans cliquer sur le bouton Enregistrer ou Mettre à jour, ces modifications seront perdues."
|
94
|
+
"Click OK to continue, or click Cancel to stay on this page": "Cliquez sur Ok pour continuer, ou Annuler pour rester sur cette page."
|
95
|
+
"Remove entry?": "Supprimer l'entrée?"
|
96
|
+
"Unrelate {{unrelate_model}} from {{unrelate_model_from}}?": "Dissocier {{unrelate_model}} de {{unrelate_model_from}}?"
|
97
|
+
"Change {{attribute}}?": "Changer {{attribute}}?"
|
98
|
+
"True":
|
99
|
+
"False":
|