lipsiadmin 5.0.8 → 5.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +11 -0
- data/README.rdoc +1 -1
- data/Rakefile +7 -7
- data/lib/controller/ext.rb +4 -2
- data/lib/data_base/utility_scopes.rb +14 -6
- data/lib/locale/de.yml +16 -0
- data/lib/locale/en.yml +3 -3
- data/lib/version.rb +1 -1
- data/lib/view/helpers/backend_helper.rb +4 -9
- data/lib/view/helpers/ext/component.rb +10 -2
- data/lib/view/helpers/ext/grid.rb +24 -2
- data/lipsiadmin_generators/backend/backend_generator.rb +1 -1
- data/lipsiadmin_generators/backend/templates/config/locales/backend/de.yml +225 -0
- data/lipsiadmin_generators/backend/templates/config/locales/models/account/de.yml +15 -0
- data/lipsiadmin_generators/backend/templates/config/locales/rails/de.yml +173 -0
- data/lipsiadmin_generators/frontend/templates/config/locales/frontend/de.yml +6 -0
- data/resources/javascripts/ux.js +47 -11
- data/resources/javascripts/ux.min.js +3 -2
- metadata +7 -2
data/CHANGELOG
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
2009-12-1
|
2
|
+
* Bump to 5.0.9
|
3
|
+
* Fixed an error in lipsiadmin default locales
|
4
|
+
* Added Template Paths for grids and custom template for grid [Ragunalth]
|
5
|
+
* Added German Translations [Peter]
|
6
|
+
* Aliased Methods named_scope search to ext_search and paginate to ext_paginate to avoid conflicts.
|
7
|
+
* Updated the Readme
|
8
|
+
* Removed an unusued back_to helper
|
9
|
+
* Fixed a bug with simple_error_messages_for [joe1chen]
|
10
|
+
* Fixed a bug in generators on Windows [Paolo Angelini]
|
11
|
+
|
1
12
|
2009-09-09
|
2
13
|
* Bump to 5.0.8
|
3
14
|
* Changed the rake lipsiadmin:update:javascripts now update also backend.js.erb and locale.js.erb
|
data/README.rdoc
CHANGED
@@ -69,5 +69,5 @@ Please contribute in coding, patch, and submitting translation api documentation
|
|
69
69
|
|
70
70
|
Official Site can be found here:: http://www.lipsiadmin.com
|
71
71
|
Community can be found here:: http://groups.google.com/group/lipsiadmin
|
72
|
-
Api documentation can be found here:: http://api.
|
72
|
+
Api documentation can be found here:: http://api.lipsiadmin.com
|
73
73
|
Follow us on twitter:: http://twitter.com/daddye
|
data/Rakefile
CHANGED
@@ -27,13 +27,6 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
|
|
27
27
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
28
28
|
end
|
29
29
|
|
30
|
-
desc 'Clean up files.'
|
31
|
-
task :clean do |t|
|
32
|
-
FileUtils.rm_rf "doc"
|
33
|
-
FileUtils.rm_rf "tmp"
|
34
|
-
FileUtils.rm_rf "pkg"
|
35
|
-
end
|
36
|
-
|
37
30
|
spec = Gem::Specification.new do |s|
|
38
31
|
s.name = PKG_NAME
|
39
32
|
s.version = PKG_VERSION
|
@@ -50,6 +43,13 @@ spec = Gem::Specification.new do |s|
|
|
50
43
|
s.add_dependency('rails', '>= 2.2.1')
|
51
44
|
end
|
52
45
|
|
46
|
+
desc 'Clean up files.'
|
47
|
+
task :clean do |t|
|
48
|
+
FileUtils.rm_rf "doc"
|
49
|
+
FileUtils.rm_rf "tmp"
|
50
|
+
FileUtils.rm_rf "pkg"
|
51
|
+
end
|
52
|
+
|
53
53
|
Rake::GemPackageTask.new(spec) do |p|
|
54
54
|
p.gem_spec = spec
|
55
55
|
p.need_tar = true
|
data/lib/controller/ext.rb
CHANGED
@@ -154,10 +154,12 @@ module Lipsiadmin
|
|
154
154
|
# store_data(params, :include => :posts)
|
155
155
|
#
|
156
156
|
def store_data(params, options={})
|
157
|
+
# Some can tell me that this method made two identical queries one for count one for paginate.
|
158
|
+
# We don't use the select count because in some circumstances require much time than select *.
|
157
159
|
@model.send(:with_scope, :find => options) do
|
158
|
-
collection = @model.
|
160
|
+
collection = @model.ext_search(params)
|
159
161
|
collection_count = collection.length
|
160
|
-
collection_paginated = collection.
|
162
|
+
collection_paginated = collection.ext_paginate(params)
|
161
163
|
{ :results => store_data_from(collection_paginated), :count => collection_count }
|
162
164
|
end
|
163
165
|
end
|
@@ -8,14 +8,14 @@ module Lipsiadmin
|
|
8
8
|
#
|
9
9
|
# Examples:
|
10
10
|
#
|
11
|
-
# invoices = current_account.store.invoices.with(:order).
|
11
|
+
# invoices = current_account.store.invoices.with(:order).ext_search(params)
|
12
12
|
# invoices_count = invoices.size
|
13
|
-
# invoices_paginated = invoices.
|
13
|
+
# invoices_paginated = invoices.ext_paginate(params)
|
14
14
|
#
|
15
15
|
module UtilityScopes
|
16
16
|
def self.included(base)#:nodoc:
|
17
17
|
base.class_eval do
|
18
|
-
named_scope :
|
18
|
+
named_scope :ext_search, lambda { |params|
|
19
19
|
order = params[:sort].blank? && params[:dir].blank? ? nil : "#{params[:sort]} #{params[:dir]}"
|
20
20
|
conditions = nil
|
21
21
|
|
@@ -26,13 +26,21 @@ module Lipsiadmin
|
|
26
26
|
|
27
27
|
{ :conditions => conditions }
|
28
28
|
}
|
29
|
-
|
30
|
-
named_scope :paginate, lambda { |params|
|
29
|
+
named_scope :ext_paginate, lambda { |params|
|
31
30
|
order = params[:sort].blank? && params[:dir].blank? ? nil : "#{params[:sort]} #{params[:dir]}"
|
32
31
|
{ :order => order, :limit => params[:limit], :offset => params[:start] }
|
33
32
|
}
|
34
|
-
|
35
33
|
named_scope :with, lambda { |*associations| { :include => associations } }
|
34
|
+
|
35
|
+
# You or your plugins (ex: will_paginate) now can override the search/paginate
|
36
|
+
# at the moment we can't remove them for backward compatibility.
|
37
|
+
(class << self; self end).instance_eval do
|
38
|
+
%w(search paginate).each do |name|
|
39
|
+
define_method name do |*args|
|
40
|
+
send("ext_#{name}", *args)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
36
44
|
end
|
37
45
|
end
|
38
46
|
end
|
data/lib/locale/de.yml
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
de:
|
2
|
+
lipsiadmin:
|
3
|
+
labels:
|
4
|
+
not_found: "Nicht gefunden"
|
5
|
+
buttons:
|
6
|
+
save: "Sichern"
|
7
|
+
exceptions:
|
8
|
+
"404":
|
9
|
+
title: "Die Seite, nach denen Du suchst, existiert nicht !"
|
10
|
+
description: "Du hast bestimmt die Adresse vertippt oder die Seite ist umgezogen!"
|
11
|
+
"422":
|
12
|
+
title: "Die �nderung, die Du willst, wurde abgelehnt !"
|
13
|
+
description: "Du versucht was zu �ndern, wo Du kein Zugriff hast!"
|
14
|
+
"500":
|
15
|
+
title: "Wir entschuldigen uns, aber etwas lief schief!"
|
16
|
+
description: "Wir wurden �ber dieses Thema informiert und wir werden innerhalb k�rzester Zeit hier nachschauen!"
|
data/lib/locale/en.yml
CHANGED
@@ -5,12 +5,12 @@ en:
|
|
5
5
|
buttons:
|
6
6
|
save: "Save"
|
7
7
|
exceptions:
|
8
|
-
404:
|
8
|
+
"404":
|
9
9
|
title: "The page you were looking for doesn't exist"
|
10
10
|
description: "You may have mistyped the address or the page may have moved."
|
11
|
-
422:
|
11
|
+
"422":
|
12
12
|
title: "The change you wanted was rejected"
|
13
13
|
description: "Maybe you tried to change something you didn't have access to."
|
14
|
-
500:
|
14
|
+
"500":
|
15
15
|
title: "We're sorry, but something went wrong"
|
16
16
|
description: "We've been notified about this issue and we'll take a look at it shortly"
|
data/lib/version.rb
CHANGED
@@ -27,14 +27,14 @@ module Lipsiadmin
|
|
27
27
|
|
28
28
|
I18n.with_options :locale => options[:locale], :scope => [:activerecord, :errors, :template] do |locale|
|
29
29
|
header_message = if options.include?(:header_message)
|
30
|
-
options[:header_message]
|
30
|
+
escape_javascript(options[:header_message])
|
31
31
|
else
|
32
32
|
object_name = options[:object_name].to_s.gsub('_', ' ')
|
33
33
|
object_name = I18n.t(object_name, :default => object_name, :scope => [:activerecord, :models], :count => 1)
|
34
|
-
locale.t :header, :count => count, :model => object_name
|
34
|
+
escape_javascript(locale.t :header, :count => count, :model => object_name)
|
35
35
|
end
|
36
|
-
message = options.include?(:message) ? options[:message] : locale.t(:body)
|
37
|
-
error_messages = objects.sum {|object| object.errors.full_messages.map {|msg| content_tag(:li,
|
36
|
+
message = escape_javascript(options.include?(:message) ? options[:message] : locale.t(:body))
|
37
|
+
error_messages = objects.sum {|object| object.errors.full_messages.map {|msg| content_tag(:li, escape_javascript(msg)) } }.join
|
38
38
|
|
39
39
|
contents = ''
|
40
40
|
contents << content_tag(:p, message) unless message.blank?
|
@@ -179,11 +179,6 @@ module Lipsiadmin
|
|
179
179
|
I18n.t("activerecord.attributes.#{instance}.#{method}", :default => method.to_s.humanize)
|
180
180
|
end
|
181
181
|
|
182
|
-
# Store the location to come back from for example an extjs grid
|
183
|
-
def back_to(location)
|
184
|
-
content_tag(:script, "Backend.app.backTo(#{url_for(location)})", :type => Mime::JS)
|
185
|
-
end
|
186
|
-
|
187
182
|
# Generate the menu from the Lispiadmin::AccessControl
|
188
183
|
def backend_menu
|
189
184
|
config = AccountAccess.maps_for(current_account).collect(&:project_modules).flatten.uniq.collect(&:config)
|
@@ -14,8 +14,14 @@ module Lipsiadmin#:nodoc:
|
|
14
14
|
#
|
15
15
|
# Component.new("Ext.grid.GroupingView", { :forceFit => true });
|
16
16
|
#
|
17
|
+
# If you want to override our default templates you can do easly with:
|
18
|
+
#
|
19
|
+
# Lipsiadmin::Ext::Component.template_paths.unshift("/path/to/my/js/templates")
|
20
|
+
#
|
17
21
|
class Component
|
18
|
-
|
22
|
+
@@template_paths = ["#{File.dirname(__FILE__)}/templates", "#{Rails.root}/app/views/backend"]
|
23
|
+
cattr_accessor :template_paths
|
24
|
+
|
19
25
|
def initialize(klass, options={}, &block)#:nodoc:
|
20
26
|
@klass = klass
|
21
27
|
@prefix = options.delete(:prefix)
|
@@ -191,7 +197,9 @@ module Lipsiadmin#:nodoc:
|
|
191
197
|
private
|
192
198
|
def render_javascript(template, assigns)
|
193
199
|
assigns.each { |key, value| instance_variable_set("@#{key}", value) }
|
194
|
-
|
200
|
+
path = template_paths.find { |f| File.exist?(File.join(f, "#{template}.js.erb")) }
|
201
|
+
raise_error "Sorry but we didn't found the template #{template}.js.erb in your template_paths" unless path
|
202
|
+
template = File.read(File.join(path, "#{template}.js.erb"))
|
195
203
|
return ERB.new(template).result(binding)
|
196
204
|
end
|
197
205
|
|
@@ -59,6 +59,7 @@ module Lipsiadmin
|
|
59
59
|
viewConfig :forceFit => true
|
60
60
|
border false
|
61
61
|
bodyBorder false
|
62
|
+
template :default
|
62
63
|
clicksToEdit 1
|
63
64
|
region "center"
|
64
65
|
sm :checkbox
|
@@ -203,8 +204,29 @@ module Lipsiadmin
|
|
203
204
|
add_object(:cm, cm)
|
204
205
|
end
|
205
206
|
|
207
|
+
# Define the template to use for build grid functions (add/delete/edit)
|
208
|
+
#
|
209
|
+
# Default we use:
|
210
|
+
#
|
211
|
+
# /path/to/lipsiadmin/lib/view/helpers/ext/templates/grid_functions.js.erb
|
212
|
+
#
|
213
|
+
# But you can easy add your own paths like:
|
214
|
+
#
|
215
|
+
# Lipsiadmin::Ext::Component.template_paths.unshift("/path/to/my/js/templates")
|
216
|
+
#
|
217
|
+
# Or direct by grid:
|
218
|
+
#
|
219
|
+
# # products/show.rjs
|
220
|
+
# page.grid :editable => true do |grid|
|
221
|
+
# grid.id "grid-products"
|
222
|
+
# grid.template "products/grid_functions"
|
223
|
+
# ...
|
224
|
+
#
|
225
|
+
def template(value)
|
226
|
+
@template = value == :default ? :grid_functions : value
|
227
|
+
end
|
206
228
|
|
207
|
-
# Define if the grid need to be added to
|
229
|
+
# Define if the grid need to be added to contentDynamic
|
208
230
|
#
|
209
231
|
# Backend.app.addItem(#{get_var});
|
210
232
|
#
|
@@ -275,7 +297,7 @@ module Lipsiadmin
|
|
275
297
|
raise_error "You must provide the store." if config[:store].blank?
|
276
298
|
end
|
277
299
|
|
278
|
-
after << render_javascript(
|
300
|
+
after << render_javascript(@template, :var => get_var, :store => config[:store], :sm => config[:sm], :tbar => config[:tbar], :editable => @editable, :un => @un)
|
279
301
|
|
280
302
|
if @render
|
281
303
|
after << "Backend.app.addItem(#{get_var});" if @render
|
@@ -25,7 +25,7 @@ end
|
|
25
25
|
|
26
26
|
m.append("config/routes.rb", routes, "ActionController::Routing::Routes.draw do |map|")
|
27
27
|
m.append("public/robots.txt", "User-agent: *\nDisallow: /backend")
|
28
|
-
m.append("
|
28
|
+
m.append("Rakefile", lipsiadmin_task)
|
29
29
|
|
30
30
|
m.create_all("controllers", "app/controllers")
|
31
31
|
m.create_all("helpers", "app/helpers")
|
@@ -0,0 +1,225 @@
|
|
1
|
+
# If you translate this into other language or have something to fix please send me an email at: d.dagostino@lipsiasoft.com
|
2
|
+
de:
|
3
|
+
backend:
|
4
|
+
tabs:
|
5
|
+
general: "General"
|
6
|
+
titles:
|
7
|
+
welcome: "Willkommen"
|
8
|
+
general:
|
9
|
+
list: "Liste {{model}}"
|
10
|
+
editForm: "�ndern {{model}} {{value}}"
|
11
|
+
newForm: "Neu {{model}}"
|
12
|
+
cantDelete: "Du kannst diesen Satz nicht l�schen!"
|
13
|
+
page: "Seite"
|
14
|
+
of: "von"
|
15
|
+
sessions:
|
16
|
+
wrong: "Ung�ltige E-Mail oder Passwort"
|
17
|
+
logout: "Korrekt abgemeldet!"
|
18
|
+
menus:
|
19
|
+
account: "Benutzerkonto"
|
20
|
+
list: "Liste"
|
21
|
+
new: "Neu"
|
22
|
+
help: "Hilfe"
|
23
|
+
labels:
|
24
|
+
none: "Nichts"
|
25
|
+
add: "Hinzuf�gen"
|
26
|
+
remove: "Entfernen"
|
27
|
+
upload_file: "Hochladen Datei"
|
28
|
+
upload_files: "Hochladen Datei"
|
29
|
+
upload_image: "Hochladen Image"
|
30
|
+
upload_images: "Hochladen Images"
|
31
|
+
texts:
|
32
|
+
order_updated: Auftrag aktualisiert!
|
33
|
+
javascripts:
|
34
|
+
buttons:
|
35
|
+
add: "Hinzuf�gen"
|
36
|
+
edit: "�ndern"
|
37
|
+
remove: "L�schen"
|
38
|
+
back: "Zur�ck"
|
39
|
+
save: "Sichern"
|
40
|
+
close: "Schliessen"
|
41
|
+
select: "Selektieren"
|
42
|
+
help: "Hilfe"
|
43
|
+
send: "Senden"
|
44
|
+
help:
|
45
|
+
title: "Support Anfrage"
|
46
|
+
description: "Sag uns, welches Problem Du hast und wie wir es reproduzieren k�nnen"
|
47
|
+
compliments: "Ihre Anfrage wurde korrekt geliefert."
|
48
|
+
labels:
|
49
|
+
all: "Alle "
|
50
|
+
search: "Suchen "
|
51
|
+
messages:
|
52
|
+
compliments:
|
53
|
+
title: "Gratulation"
|
54
|
+
message: "Ihre Daten wurden korrekt gesichert!"
|
55
|
+
wait:
|
56
|
+
title: "Senden Daten"
|
57
|
+
message: "Senden Daten zu dem Server..."
|
58
|
+
confirm:
|
59
|
+
title: "Sind Sie sicher?"
|
60
|
+
message: "Sind sie sicher {0} Elemente zu l�schen?"
|
61
|
+
alert:
|
62
|
+
title: "Achtung"
|
63
|
+
message: "Es gibt einige Verbindungs-Probleme.<br />Kontaktiere technische Unterst�tzung."
|
64
|
+
notConfigured: "Diese Funktion ist noch nicht feriggestellt.<br />Kontaktiere technische Unterst�tzung."
|
65
|
+
notSelected: "Du mu�t mindestens ein Satz selektieren"
|
66
|
+
|
67
|
+
emails:
|
68
|
+
registration:
|
69
|
+
object: "Ihr Benutzerkonto wurde aktiviert"
|
70
|
+
body: "Hallo {{name}},\nIhr Benutzerkonto wurde aktiviert.\n\nDu kanst Dich mit dem folgenden Email-Kennung und Passwort anmelden:\n\n- Email: {{email}}\n- Passwort: {{password}}\n\nbenutze folgende URL: {{url}}"
|
71
|
+
support:
|
72
|
+
object: "Support Anfrage"
|
73
|
+
footer: "\n---------------------------\nViele Gr��e,\nLipsiaSoft s.r.l."
|
74
|
+
|
75
|
+
print:
|
76
|
+
footer:
|
77
|
+
page: "Seite"
|
78
|
+
page_of: "von"
|
79
|
+
|
80
|
+
extjs:
|
81
|
+
dateFormat: "d.m.Y"
|
82
|
+
dateTimeFormat: "d.m.Y G:i"
|
83
|
+
ddText: "{0} selektierten Datensatz/-s�tze"
|
84
|
+
closeText: "Schliesse diesen Tab"
|
85
|
+
invalidText: "Der Wert in diesem Feld ist ung�ltig"
|
86
|
+
msg: "Lade..."
|
87
|
+
emptyText: ""
|
88
|
+
splitRegion:
|
89
|
+
splitTip: "Ziehen um Gr��e zu ver�ndern."
|
90
|
+
collapsibleSplitTip: "Ziehen um Gr��e zu ver�ndern. Doppelklick zum verstecken."
|
91
|
+
messageBox:
|
92
|
+
ok: "OK"
|
93
|
+
yesse: "Ja"
|
94
|
+
cancel: "Abbruch"
|
95
|
+
none: "Nein"
|
96
|
+
datePicker:
|
97
|
+
todayText: "Heute"
|
98
|
+
minText: "Dieses Datum ist vor dem Minimum-Datum"
|
99
|
+
maxText: "Dieses Datum ist nach dem Maximum-Datum"
|
100
|
+
disabledDaysText: ""
|
101
|
+
disabledDatesText: ""
|
102
|
+
nextText: 'N�chsten Monat (Control+Rechts)'
|
103
|
+
prevText: 'Vorherigen Monat(Control+Links)'
|
104
|
+
monthYearText: 'W�hle ein Monat (Control+Auf/Runter um Jahre zu �ndern)'
|
105
|
+
todayTip: "{0} (Leertaste)"
|
106
|
+
format: "d.m.y"
|
107
|
+
cancelText: "Abbruch"
|
108
|
+
okText: " OK "
|
109
|
+
startDay: 0
|
110
|
+
grid:
|
111
|
+
gridView:
|
112
|
+
sortAscText: "Sortiere aufsteigend"
|
113
|
+
sortDescText: "Sortiere absteigend"
|
114
|
+
lockText: "Sperren Spalte"
|
115
|
+
unlockText: "Spaltesperre aufheben"
|
116
|
+
columnsText: "Spalte"
|
117
|
+
groupingView:
|
118
|
+
emptyGroupText: '(Nichts)'
|
119
|
+
groupByText: 'Gruppiere mit diesem Feld'
|
120
|
+
showGroupsText: 'Anzeige in Gruppen'
|
121
|
+
propertyColumnModel:
|
122
|
+
nameText: "Name"
|
123
|
+
valueText: "Wert"
|
124
|
+
dateFormat: "m/j/Y"
|
125
|
+
search:
|
126
|
+
searchText: "Suche"
|
127
|
+
searchTipText: "F�ge ein Wort ein oder dr�cke Suchen"
|
128
|
+
selectAllText: "Selektiere alle"
|
129
|
+
minCharsTipText: "F�ge mindestens {0} Zeichen ein"
|
130
|
+
pagingToolbar:
|
131
|
+
beforePageText: "Seite"
|
132
|
+
afterPageText: "von {0}"
|
133
|
+
firstText: "Erste Seite"
|
134
|
+
prevText: "Vorherige Seite"
|
135
|
+
nextText: "N�chste Seite"
|
136
|
+
lastText: "Letzte Seite"
|
137
|
+
refreshText: "Auffrischen"
|
138
|
+
displayMsg: "Anzeige {0} - {1} von {2}"
|
139
|
+
emptyMsg: 'Keine Daten zum Anzeigen'
|
140
|
+
form:
|
141
|
+
textField:
|
142
|
+
minLengthText: "Die minimale Eingabel�nge f�r dieses Feld ist {0}"
|
143
|
+
maxLengthText: "Die maximale Eingabel�nge f�r dieses Feld ist {0}"
|
144
|
+
blankText: "Dieses Feld wird ben�tigt"
|
145
|
+
regexText: ""
|
146
|
+
emptyText: ""
|
147
|
+
numberField:
|
148
|
+
minText: "Der minimale Wert f�r dieses Feld ist {0}"
|
149
|
+
maxText: "Der maximale Wert f�r dieses Feld ist {0}"
|
150
|
+
nanText: "{0} ist nicht eine g�ltige Zahl"
|
151
|
+
dateField:
|
152
|
+
disabledDaysText: "Nicht verf�gbar"
|
153
|
+
disabledDatesText: "Nicht verf�gbar"
|
154
|
+
minText: "Das Datum in diesem Feld muss nach dem {0} sein"
|
155
|
+
maxText: "Das Datum in diesem Feld muss vor dem {0} sein"
|
156
|
+
invalidText: "{0} ist kein g�ltiges Datum - es muss in dem Format sein: {1}"
|
157
|
+
format: "d.m.y"
|
158
|
+
altFormats: "d.m.Y|m/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d"
|
159
|
+
comboBox:
|
160
|
+
loadingText: "Lade..."
|
161
|
+
valueNotFoundText: ""
|
162
|
+
vTypes:
|
163
|
+
emailText: 'Dieses Feld soll eine E-Mail Adresse in dem Format "user@domain.com" sein'
|
164
|
+
urlText: 'Dieses Feld soll eine URL in dem Format "http://www.domain.com" sein'
|
165
|
+
alphaText: 'Dieses Feld soll nur Buchstaben und _ enthalten'
|
166
|
+
alphanumText: 'Dieses Feld soll nur Buchstaben, Nummern und _ enthalten'
|
167
|
+
htmlEditor:
|
168
|
+
createLinkText: 'Bitte gebe die URL f�r den Link ein:'
|
169
|
+
buttonTips:
|
170
|
+
bold:
|
171
|
+
title: 'Fett (Ctrl+B)'
|
172
|
+
text: 'Stelle den selektierten Text fett dar.'
|
173
|
+
cls: 'x-html-editor-tip'
|
174
|
+
italic:
|
175
|
+
title: 'Italic (Ctrl+I)'
|
176
|
+
text: 'Stelle den selektierten Text italic dar.'
|
177
|
+
cls: 'x-html-editor-tip'
|
178
|
+
underline:
|
179
|
+
title: 'Untertrichen (Ctrl+U)'
|
180
|
+
text: 'Unterstreicht den selektierten Text.'
|
181
|
+
cls: 'x-html-editor-tip'
|
182
|
+
increasefontsize:
|
183
|
+
title: 'Vergr��ern Text'
|
184
|
+
text: 'Vergr��ert die Schriftgr��e.'
|
185
|
+
cls: 'x-html-editor-tip'
|
186
|
+
decreasefontsize:
|
187
|
+
title: 'Verkleinern Text'
|
188
|
+
text: 'Verkleinert die Schriftgr��e.'
|
189
|
+
cls: 'x-html-editor-tip'
|
190
|
+
backcolor:
|
191
|
+
title: 'Text Hintergrund Farbe'
|
192
|
+
text: '�ndert Hintergrundfarbe des selektierten Textes'
|
193
|
+
cls: 'x-html-editor-tip'
|
194
|
+
forecolor:
|
195
|
+
title: 'Text Schrift Farbe'
|
196
|
+
text: '�ndert die Farbe des selektierten Textes'
|
197
|
+
cls: 'x-html-editor-tip'
|
198
|
+
justifyleft:
|
199
|
+
title: 'Text linksb�ndig anordnen'
|
200
|
+
text: 'Stelle text linksb�ndig dar'
|
201
|
+
cls: 'x-html-editor-tip'
|
202
|
+
justifycenter:
|
203
|
+
title: 'Zentriere Text'
|
204
|
+
text: 'Zentriert den Text in dem Editor.'
|
205
|
+
cls: 'x-html-editor-tip'
|
206
|
+
justifyright:
|
207
|
+
title: 'Text rechtsb�ndig anordnen'
|
208
|
+
text: 'Stelle text rechtsb�ndig dar.'
|
209
|
+
cls: 'x-html-editor-tip'
|
210
|
+
insertunorderedlist:
|
211
|
+
title: 'Gliederungs-Liste'
|
212
|
+
text: 'Beginnt eine Gliederungsliste.'
|
213
|
+
cls: 'x-html-editor-tip'
|
214
|
+
insertorderedlist:
|
215
|
+
title: 'Nummerierte Liste'
|
216
|
+
text: 'Beginnt eine nummerierte Liste.'
|
217
|
+
cls: 'x-html-editor-tip'
|
218
|
+
createlink:
|
219
|
+
title: 'Hyperlink'
|
220
|
+
text: 'Stelle selektierten Text als Hyperlink dar.'
|
221
|
+
cls: 'x-html-editor-tip'
|
222
|
+
sourceedit:
|
223
|
+
title: 'Quelle Editieren'
|
224
|
+
text: 'Wechsel zur Quelle im Editierungs-Modus.'
|
225
|
+
cls: 'x-html-editor-tip'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Diese Datei wird ben�tigt Modelle/Tabelle und ihre Attribute/Spalten zu �bersetzen
|
2
|
+
de:
|
3
|
+
activerecord:
|
4
|
+
# �bersetze Model namen. Benutzt in Model.human_name()
|
5
|
+
#models:
|
6
|
+
# Zum Beispiel:
|
7
|
+
# user: "Dude"
|
8
|
+
# wird das "User" Model �bersetzen in "Dude"
|
9
|
+
|
10
|
+
# �bersetzt Model Attribute Namen. Benutzt in Model.human_attribute_name(attribute).
|
11
|
+
#attributes:
|
12
|
+
# Zum Beispiel:
|
13
|
+
# user:
|
14
|
+
# login: "Handle"
|
15
|
+
# wird das "User Attribute "login" als "Handle" �bersezen
|
@@ -0,0 +1,173 @@
|
|
1
|
+
de:
|
2
|
+
date:
|
3
|
+
formats:
|
4
|
+
# Benutze die strftime Parameter f�r die Formatierung
|
5
|
+
# Wenn keine Formate angegeben wurde, wird "default" benutzt.
|
6
|
+
# Du kannst andere Formate hier bieten, wenn Du willst.
|
7
|
+
default: "&d.&m.%Y"
|
8
|
+
short: "%b %d"
|
9
|
+
long: "%B %d, %Y"
|
10
|
+
|
11
|
+
day_names: [Sontag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag]
|
12
|
+
abbr_day_names: [Son, Mon, Die, Mit, Don, Fre, Sam]
|
13
|
+
|
14
|
+
# Vergesse nicht "nil" am Anfang, da gibt es nichts als ein 0-ten Monat
|
15
|
+
month_names: [~, Januar, Februar, Marz, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember]
|
16
|
+
abbr_month_names: [~, Jan, Feb, Mar, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez]
|
17
|
+
# Benutzt in date_select and datime_select.
|
18
|
+
order: [ day, :month, :year ]
|
19
|
+
|
20
|
+
time:
|
21
|
+
formats:
|
22
|
+
default: "%a, %d %b %Y %H:%M:%S %z"
|
23
|
+
short: "%d %b %H:%M"
|
24
|
+
long: "%B %d, %Y %H:%M"
|
25
|
+
am: "am"
|
26
|
+
pm: "pm"
|
27
|
+
|
28
|
+
# Benutzt in array.to_sentence.
|
29
|
+
support:
|
30
|
+
select:
|
31
|
+
prompt: "Bitte selektiere "
|
32
|
+
array:
|
33
|
+
words_connector: ", "
|
34
|
+
two_words_connector: " und "
|
35
|
+
last_word_connector: ", und "
|
36
|
+
|
37
|
+
number:
|
38
|
+
# Benutzt in number_with_delimiter()
|
39
|
+
# Dies sind also die Standard-Einstellungen f�r W�hrung, Prozezentwerte, Genauigkeit und
|
40
|
+
# These are also the defaults for 'currency', 'percentage', 'precision', and 'human'
|
41
|
+
format:
|
42
|
+
# Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5)
|
43
|
+
separator: ","
|
44
|
+
# Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three)
|
45
|
+
delimiter: "."
|
46
|
+
# Anzahl von Dezimalstellen hinter dem
|
47
|
+
# Number of decimals, behind the separator (the number 1 with a precision of 2 gives: 1.00)
|
48
|
+
precision: 2
|
49
|
+
|
50
|
+
# Benutzt in number_to_currency()
|
51
|
+
currency:
|
52
|
+
format:
|
53
|
+
# Where is the currency sign? %u is the currency unit, %n the number (default: $5.00)
|
54
|
+
format: "%n %u"
|
55
|
+
unit: "�"
|
56
|
+
# These three are to override number.format and are optional
|
57
|
+
separator: ","
|
58
|
+
delimiter: "."
|
59
|
+
precision: 2
|
60
|
+
|
61
|
+
# Benutzt in number_to_percentage()
|
62
|
+
percentage:
|
63
|
+
format:
|
64
|
+
# These three are to override number.format and are optional
|
65
|
+
# separator:
|
66
|
+
delimiter: ""
|
67
|
+
# precision:
|
68
|
+
|
69
|
+
# Benutzt in number_to_precision()
|
70
|
+
precision:
|
71
|
+
format:
|
72
|
+
# These three are to override number.format and are optional
|
73
|
+
# separator:
|
74
|
+
delimiter: ""
|
75
|
+
# precision:
|
76
|
+
|
77
|
+
# Benutzt in number_to_human_size()
|
78
|
+
human:
|
79
|
+
format:
|
80
|
+
# These three are to override number.format and are optional
|
81
|
+
# separator:
|
82
|
+
delimiter: ""
|
83
|
+
precision: 1
|
84
|
+
|
85
|
+
storage_units:
|
86
|
+
# Storage units output formatting.
|
87
|
+
# %u is the storage unit, %n is the number (default: 2 MB)
|
88
|
+
format: "%n %u"
|
89
|
+
units:
|
90
|
+
byte:
|
91
|
+
one: "Byte"
|
92
|
+
other: "Bytes"
|
93
|
+
kb: "KB"
|
94
|
+
mb: "MB"
|
95
|
+
gb: "GB"
|
96
|
+
tb: "TB"
|
97
|
+
|
98
|
+
# Benutzt in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words()
|
99
|
+
datetime:
|
100
|
+
distance_in_words:
|
101
|
+
half_a_minute: "eine halbe Minute"
|
102
|
+
less_than_x_seconds:
|
103
|
+
one: "weniger als 1 Sekunde"
|
104
|
+
other: "weniger als {{count}} Sekunden"
|
105
|
+
x_seconds:
|
106
|
+
one: "1 Sekunde"
|
107
|
+
other: "{{count}} Sekunden"
|
108
|
+
less_than_x_minutes:
|
109
|
+
one: "weniger als eine Minute"
|
110
|
+
other: "weniger als {{count}} Minuten"
|
111
|
+
x_minutes:
|
112
|
+
one: "1 Minute"
|
113
|
+
other: "{{count}} Minuten"
|
114
|
+
about_x_hours:
|
115
|
+
one: "�ber 1 Stunde"
|
116
|
+
other: "�ber {{count}} Stunden"
|
117
|
+
x_days:
|
118
|
+
one: "1 Tag"
|
119
|
+
other: "{{count}} Tage"
|
120
|
+
about_x_months:
|
121
|
+
one: "�ber 1 Monat"
|
122
|
+
other: "�ber {{count}} Monate"
|
123
|
+
x_months:
|
124
|
+
one: "1 Monat"
|
125
|
+
other: "{{count}} Monate"
|
126
|
+
about_x_years:
|
127
|
+
one: "�ber 1 Jahr"
|
128
|
+
other: "�ber {{count}} Jahre"
|
129
|
+
over_x_years:
|
130
|
+
one: "vor 1 Jahr"
|
131
|
+
other: "vor {{count}} Jahre"
|
132
|
+
prompts:
|
133
|
+
year: "Jahr"
|
134
|
+
month: "Monat"
|
135
|
+
day: "Tag"
|
136
|
+
hour: "Stunde"
|
137
|
+
minute: "Minute"
|
138
|
+
second: "Sekunde"
|
139
|
+
|
140
|
+
activerecord:
|
141
|
+
errors:
|
142
|
+
template:
|
143
|
+
header:
|
144
|
+
one: "1 Fehler verhindert, dass Objekt {{model}} gesichert werden kann"
|
145
|
+
other: "{{count}} Fehler verhindern, dass Objekt {{model}} gesichert werden kann"
|
146
|
+
# Die Variable :count ist auch verf�gbar
|
147
|
+
body: "Es existieren Probleme mit den follgenden Feldern:"
|
148
|
+
# The values :model, :attribute and :value are always available for interpolation
|
149
|
+
# The value :count is available when applicable. Can be used for pluralization.
|
150
|
+
messages:
|
151
|
+
inclusion: "ist nicht in der Liste enthalten"
|
152
|
+
exclusion: "ist reserviert"
|
153
|
+
invalid: "ist ung�ltig"
|
154
|
+
confirmation: "entspricht nicht der Best�tigung"
|
155
|
+
accepted: "muss akzeptiert werden"
|
156
|
+
empty: "Darf nicht leer sein"
|
157
|
+
blank: "Darf nicht nur Leerzeichen sein"
|
158
|
+
too_long: "ist zu lang (Maximum ist {{count}} Zeichen)"
|
159
|
+
too_short: "ist zu kurz (Minimum ist {{count}} Zeichen)"
|
160
|
+
wrong_length: "ist ung�ltiger L�nge (soll {{count}} Zeichen sein)"
|
161
|
+
taken: "has already been taken"
|
162
|
+
not_a_number: "ist nicht eine Nummer"
|
163
|
+
greater_than: "muss gr��er sein als {{count}}"
|
164
|
+
greater_than_or_equal_to: "muss gr��er gleich sein als {{count}}"
|
165
|
+
equal_to: "muss gleich sein als {{count}}"
|
166
|
+
less_than: "muss weniger sein als {{count}}"
|
167
|
+
less_than_or_equal_to: "muss weniger oder gleich sein als {{count}}"
|
168
|
+
odd: "muss ungerade sein"
|
169
|
+
even: "muss gerade sein"
|
170
|
+
record_invalid: "Validierung schlug fehl: {{errors}}"
|
171
|
+
content_type: "Datei-Format wird nicht unterst�tzt"
|
172
|
+
# F�ge deine eigenen Fehler hier an oder in dem Modell/attributes Scope.
|
173
|
+
|
@@ -0,0 +1,6 @@
|
|
1
|
+
# Diese Datei wird f�r �bersetzungen des Frontends (UI-Screens) ben�tigt
|
2
|
+
# Wir erinnern Dich daran, dass im Backend eine einfache Methode in Style "Kauderwelsch" f�r die �bersetzung eingef�hrt wurde
|
3
|
+
# So kannst Du schreiben "�bersetze mich in Deutsch"[] wird sein I18n.t("translate_me_in_german", :default => "�bersetze mich in Deutsch")
|
4
|
+
|
5
|
+
de:
|
6
|
+
translate_me_in_german: �bersetze mich in Deutsch
|
data/resources/javascripts/ux.js
CHANGED
@@ -680,7 +680,6 @@ Ext.extend(Ext.grid.Search, Ext.util.Observable, {
|
|
680
680
|
* @cfg {String} searchText Text to display on menu button
|
681
681
|
*/
|
682
682
|
,searchText:'Search'
|
683
|
-
|
684
683
|
/**
|
685
684
|
* @cfg {String} searchTipText Text to display as input tooltip. Set to '' for no tooltip
|
686
685
|
*/
|
@@ -801,18 +800,19 @@ Ext.extend(Ext.grid.Search, Ext.util.Observable, {
|
|
801
800
|
*/
|
802
801
|
,init:function(grid) {
|
803
802
|
this.grid = grid;
|
804
|
-
|
803
|
+
this.id = this.grid.id+'-search';
|
804
|
+
|
805
805
|
// setup toolbar container if id was given
|
806
806
|
if('string' === typeof this.toolbarContainer) {
|
807
807
|
this.toolbarContainer = Ext.getCmp(this.toolbarContainer);
|
808
808
|
}
|
809
809
|
|
810
810
|
// do our processing after grid render and reconfigure
|
811
|
-
grid.
|
811
|
+
grid.store.load = grid.store.load.createInterceptor(this.load, this);
|
812
|
+
grid.onRender = grid.onRender.createSequence(this.onRender, this);
|
812
813
|
grid.reconfigure = grid.reconfigure.createSequence(this.reconfigure, this);
|
813
814
|
} // eo function init
|
814
|
-
|
815
|
-
// {{{
|
815
|
+
|
816
816
|
/**
|
817
817
|
* private add plugin controls to <b>existing</b> toolbar and calls reconfigure
|
818
818
|
*/
|
@@ -873,9 +873,9 @@ Ext.extend(Ext.grid.Search, Ext.util.Observable, {
|
|
873
873
|
}, this, {single:true});
|
874
874
|
|
875
875
|
tb.add(this.field);
|
876
|
-
|
877
|
-
//
|
878
|
-
this.
|
876
|
+
|
877
|
+
// Init our State/Configuration
|
878
|
+
this.initState();
|
879
879
|
|
880
880
|
// keyMap
|
881
881
|
if(this.shortcutKey && this.shortcutModifier) {
|
@@ -898,6 +898,43 @@ Ext.extend(Ext.grid.Search, Ext.util.Observable, {
|
|
898
898
|
} // eo function onRender
|
899
899
|
// }}}
|
900
900
|
// {{{
|
901
|
+
|
902
|
+
// private
|
903
|
+
,initState:function(){
|
904
|
+
if(Ext.state.Manager){
|
905
|
+
var state = Ext.state.Manager.get(this.id);
|
906
|
+
this.applyState(state)
|
907
|
+
}
|
908
|
+
}
|
909
|
+
,applyState:function(state){
|
910
|
+
if(state){
|
911
|
+
if(state.checked && state.checked instanceof Array) { this.checkIndexes=state.checked };
|
912
|
+
if(state.value) { this.field.setValue(state.value) };
|
913
|
+
}
|
914
|
+
this.reconfigure();
|
915
|
+
this.onTriggerSearch();
|
916
|
+
}
|
917
|
+
,saveState:function(){
|
918
|
+
if(Ext.state.Manager){
|
919
|
+
var state = this.getState();
|
920
|
+
Ext.state.Manager.set(this.id, state);
|
921
|
+
}
|
922
|
+
}
|
923
|
+
,getState:function(){
|
924
|
+
var checked = [];
|
925
|
+
this.menu.items.each(function(item) {
|
926
|
+
if (item.dataIndex && item.checked) { checked.push(item.dataIndex) }
|
927
|
+
});
|
928
|
+
this.inited = true;
|
929
|
+
return { value: this.field.getValue(), checked: checked }
|
930
|
+
}
|
931
|
+
/**
|
932
|
+
* Prevent our grid from double datastore loading
|
933
|
+
* @private
|
934
|
+
*/
|
935
|
+
,load:function(){
|
936
|
+
return (this.field != undefined && this.inited == true)
|
937
|
+
}
|
901
938
|
/**
|
902
939
|
* field el keypup event handler. Triggers the search
|
903
940
|
* @private
|
@@ -919,6 +956,7 @@ Ext.extend(Ext.grid.Search, Ext.util.Observable, {
|
|
919
956
|
this.field.focus();
|
920
957
|
this.onTriggerSearch();
|
921
958
|
}
|
959
|
+
this.saveState();
|
922
960
|
} // eo function onTriggerClear
|
923
961
|
// }}}
|
924
962
|
// {{{
|
@@ -985,7 +1023,7 @@ Ext.extend(Ext.grid.Search, Ext.util.Observable, {
|
|
985
1023
|
// reload store
|
986
1024
|
store.reload();
|
987
1025
|
}
|
988
|
-
|
1026
|
+
this.saveState();
|
989
1027
|
} // eo function onTriggerSearch
|
990
1028
|
// }}}
|
991
1029
|
// {{{
|
@@ -1017,7 +1055,6 @@ Ext.extend(Ext.grid.Search, Ext.util.Observable, {
|
|
1017
1055
|
* private (re)configures the plugin, creates menu items from column model
|
1018
1056
|
*/
|
1019
1057
|
,reconfigure:function() {
|
1020
|
-
|
1021
1058
|
// {{{
|
1022
1059
|
// remove old items
|
1023
1060
|
var menu = this.menu;
|
@@ -1099,7 +1136,6 @@ Ext.extend(Ext.grid.Search, Ext.util.Observable, {
|
|
1099
1136
|
}); // eo extend
|
1100
1137
|
|
1101
1138
|
// eof
|
1102
|
-
|
1103
1139
|
/**
|
1104
1140
|
* This class store state session of extjs in the database for the current account
|
1105
1141
|
*/
|
@@ -1,2 +1,3 @@
|
|
1
|
-
Ext.util.Format.eurMoney=function(v){v=(Math.round((v-0)*100))/100;v=(v==Math.floor(v))?v+".00":((v*10==Math.floor(v*10))?v+"0":v);return v+" €"};Ext.util.Format.boolRenderer=function(v,p,record){p.css+=" x-grid3-check-col-td";return'<div class="x-grid3-check-col'+(v?"-on":"")+" x-grid3-cc-"+this.id+'"> </div>'};var treeDropConfig={getDropPoint:function(e,n,dd){var tn=n.node;if(tn.isRoot){return tn.allowChildren!==false?"append":false}var dragEl=n.ddel;var t=Ext.lib.Dom.getY(dragEl),b=t+dragEl.offsetHeight;var y=Ext.lib.Event.getPageY(e);var noAppend=tn.allowChildren===false;if(this.appendOnly||tn.parentNode.allowChildren===false){return noAppend?false:"append"}var noBelow=false;if(!this.allowParentInsert){noBelow=tn.hasChildNodes()&&tn.isExpanded()}var q=(b-t)/(noAppend?2:3);if(y>=t&&y<(t+q)){return"above"}else{if(!noBelow&&(noAppend||y>=b-q&&y<=b)){return"below"}else{return"append"}}},completeDrop:function(de){var ns=de.dropNode,p=de.point,t=de.target;if(!Ext.isArray(ns)){ns=[ns]}var n;for(var i=0,len=ns.length;i<len;i++){n=ns[i];if(p=="above"){t.parentNode.insertBefore(n,t)}else{if(p=="below"){t.parentNode.insertBefore(n,t.nextSibling)}else{t.leaf=false;t.appendChild(n)}}}n.ui.focus();if(this.tree.hlDrop){n.ui.highlight()}t.ui.endDrop();this.tree.fireEvent("nodedrop",de)}};Ext.grid.CheckColumn=function(config){Ext.apply(this,config);if(!this.id){this.id=Ext.id()}this.renderer=this.renderer.createDelegate(this)};Ext.grid.CheckColumn.prototype={init:function(grid){this.grid=grid;this.grid.on("render",function(){var view=this.grid.getView();view.mainBody.on("mousedown",this.onMouseDown,this)},this)},onMouseDown:function(e,t){if(t.className&&t.className.indexOf("x-grid3-cc-"+this.id)!=-1){e.stopEvent();var index=this.grid.getView().findRowIndex(t);var record=this.grid.store.getAt(index);var editEvent={grid:this.grid,record:this.grid.store.getAt(index),field:this.dataIndex,value:!record.data[this.dataIndex],originalValue:record.data[this.dataIndex],row:index,column:this.grid.getColumnModel().findColumnIndex(this.dataIndex)};record.set(this.dataIndex,editEvent.value);this.grid.getSelectionModel().selectRow(index);this.grid.fireEvent("afteredit",editEvent)}},renderer:function(v,p,record){p.css+=" x-grid3-check-col-td";return'<div class="x-grid3-check-col'+(v?"-on":"")+" x-grid3-cc-"+this.id+'"> </div>'}};Ext.form.DateTimeField=Ext.extend(Ext.form.Field,{defaultAutoCreate:{tag:"input",type:"hidden"},timeWidth:100,dateWidth:100,dtSeparator:" ",hiddenFormat:"Y-m-d H:i:s",otherToNow:true,dateFormat:"d/m/y",timeFormat:"H:i",allowBlank:true,hideTime:false,initComponent:function(){Ext.form.DateTimeField.superclass.initComponent.call(this);var dateConfig=Ext.apply({},{id:this.id+"-date",format:this.dateFormat||Ext.form.DateField.prototype.format,width:this.dateWidth,allowBlank:this.allowBlank,selectOnFocus:this.selectOnFocus,listeners:{blur:{scope:this,fn:this.onBlur},focus:{scope:this,fn:this.onFocus}}},this.dateConfig);this.df=new Ext.form.DateField(dateConfig);this.df.ownerCt=this;delete (this.dateFormat);var timeConfig=Ext.apply({},{id:this.id+"-time",format:this.timeFormat||Ext.form.TimeField.prototype.format,allowBlank:(this.hideTime||this.allowBlank),width:this.timeWidth,selectOnFocus:this.selectOnFocus,listeners:{blur:{scope:this,fn:this.onBlur},focus:{scope:this,fn:this.onFocus}}},this.timeConfig);this.tf=new Ext.form.TimeField(timeConfig);this.tf.ownerCt=this;delete (this.timeFormat);this.relayEvents(this.df,["focus","specialkey","invalid","valid"]);this.relayEvents(this.tf,["focus","specialkey","invalid","valid"])},onRender:function(ct,position){if(this.isRendered){return}Ext.form.DateTimeField.superclass.onRender.call(this,ct,position);var t;var timeStyle=this.hideTime?"display:none":"";t=Ext.DomHelper.append(ct,{tag:"table",style:"border-collapse:collapse",children:[{tag:"tr",children:[{tag:"td",style:"padding-right:17px",cls:"datetime-date"},{tag:"td",cls:"datetime-time",style:timeStyle}]}]},true);this.tableEl=t;this.wrap=t.wrap();this.wrap.on("mousedown",this.onMouseDown,this,{delay:10});this.df.render(t.child("td.datetime-date"));this.tf.render(t.child("td.datetime-time"));this.df.wrap.setStyle({width:this.dateWidth});this.tf.wrap.setStyle({width:this.timeWidth});if(Ext.isIE&&Ext.isStrict){t.select("input").applyStyles({top:0})}this.on("specialkey",this.onSpecialKey,this);this.df.el.swallowEvent(["keydown","keypress"]);this.tf.el.swallowEvent(["keydown","keypress"]);if("side"===this.msgTarget){var elp=this.el.findParent(".x-form-element",10,true);this.errorIcon=elp.createChild({cls:"x-form-invalid-icon"});this.df.errorIcon=this.errorIcon;this.tf.errorIcon=this.errorIcon}if(!this.el.dom.name){this.el.dom.name=this.hiddenName||this.name||this.id}this.df.el.dom.removeAttribute("name");this.tf.el.dom.removeAttribute("name");this.isRendered=true;if(this.el.dom.value){this.setValue(this.el.dom.value)}else{this.setValue(new Date());this.updateHidden()}},adjustSize:Ext.BoxComponent.prototype.adjustSize,alignErrorIcon:function(){this.errorIcon.alignTo(this.tableEl,"tl-tr",[2,0])},initDateValue:function(){this.dateValue=this.otherToNow?new Date():
|
2
|
-
this.tf.show()}else{this.df.hide();this.tf.hide()}return this},show:function(){return this.setVisible(true)},hide:function(){return this.setVisible(false)},updateDate:function(){var d=this.df.getValue();if(d){if(!(this.dateValue instanceof Date)){this.initDateValue();if(!this.tf.getValue()){this.setTime(this.dateValue)}}this.dateValue.setMonth(0);this.dateValue.setFullYear(d.getFullYear());this.dateValue.setMonth(d.getMonth());this.dateValue.setDate(d.getDate())}else{this.dateValue="";this.setTime("")}},updateTime:function(){var t=this.tf.getValue();if(t&&!(t instanceof Date)){t=Date.parseDate(t,this.tf.format)}if(t&&!this.df.getValue()){this.initDateValue();this.setDate(this.dateValue)}if(this.dateValue instanceof Date){if(t){this.dateValue.setHours(t.getHours());this.dateValue.setMinutes(t.getMinutes());this.dateValue.setSeconds(t.getSeconds())}else{this.dateValue.setHours(0);this.dateValue.setMinutes(0);this.dateValue.setSeconds(0)}}},updateHidden:function(){if(this.isRendered){var value=this.dateValue instanceof Date?this.dateValue.format(this.hiddenFormat):"";this.el.dom.value=value}},updateValue:function(){this.updateDate();this.updateTime();this.updateHidden();return},validate:function(){return this.df.validate()&&this.tf.validate()},renderer:function(field){var format=field.editor.dateFormat||Ext.form.DateTime.prototype.dateFormat;format+=" "+(field.editor.timeFormat||Ext.form.DateTime.prototype.timeFormat);var renderer=function(val){var retval=Ext.util.Format.date(val,format);return retval};return renderer}});Ext.reg("datetimefield",Ext.form.DateTimeField);Ext.grid.Search=function(config){Ext.apply(this,config);Ext.grid.Search.superclass.constructor.call(this)};Ext.extend(Ext.grid.Search,Ext.util.Observable,{autoFocus:true,searchText:"Search",searchTipText:"Insert a word or press Search",selectAllText:"Select All",position:"top",iconCls:"check",checkIndexes:"all",disableIndexes:[],dateFormat:undefined,showSelectAll:true,menuStyle:"checkbox",minCharsTipText:"Insert at least {0} characters",mode:"remote",width:200,xtype:"gridsearch",paramNames:{fields:"fields",query:"query"},shortcutKey:"r",shortcutModifier:"alt",align:"right",minLength:3,init:function(grid){this.grid=grid;if("string"===typeof this.toolbarContainer){this.toolbarContainer=Ext.getCmp(this.toolbarContainer)}grid.onRender=grid.onRender.createSequence(this.onRender,this);grid.reconfigure=grid.reconfigure.createSequence(this.reconfigure,this)},onRender:function(){var panel=this.toolbarContainer||this.grid;var tb="bottom"===this.position?panel.bottomToolbar:panel.topToolbar;this.menu=new Ext.menu.Menu();if("right"===this.align){tb.addFill()}else{if(0<tb.items.getCount()){tb.addSeparator()}}tb.add({text:this.searchText,menu:this.menu});this.field=new Ext.form.TwinTriggerField({width:this.width,selectOnFocus:undefined===this.selectOnFocus?true:this.selectOnFocus,trigger1Class:"x-form-clear-trigger",trigger2Class:this.minChars?"x-hidden":"x-form-search-trigger",onTrigger1Click:this.minChars?Ext.emptyFn:this.onTriggerClear.createDelegate(this),onTrigger2Click:this.onTriggerSearch.createDelegate(this),minLength:this.minLength});this.field.on("render",function(){this.field.el.dom.qtip=this.minChars?String.format(this.minCharsTipText,this.minChars):this.searchTipText;if(this.minChars){this.field.el.on({scope:this,buffer:300,keyup:this.onKeyUp})}var map=new Ext.KeyMap(this.field.el,[{key:Ext.EventObject.ENTER,scope:this,fn:this.onTriggerSearch},{key:Ext.EventObject.ESC,scope:this,fn:this.onTriggerClear}]);map.stopEvent=true},this,{single:true});tb.add(this.field);this.
|
1
|
+
Ext.util.Format.eurMoney=function(v){v=(Math.round((v-0)*100))/100;v=(v==Math.floor(v))?v+".00":((v*10==Math.floor(v*10))?v+"0":v);return v+" €"};Ext.util.Format.percentage=function(v,p,record){return(v+" %")};Ext.util.Format.boolRenderer=function(v,p,record){p.css+=" x-grid3-check-col-td";return'<div class="x-grid3-check-col'+(v?"-on":"")+" x-grid3-cc-"+this.id+'"> </div>'};var treeDropConfig={getDropPoint:function(e,n,dd){var tn=n.node;if(tn.isRoot){return tn.allowChildren!==false?"append":false}var dragEl=n.ddel;var t=Ext.lib.Dom.getY(dragEl),b=t+dragEl.offsetHeight;var y=Ext.lib.Event.getPageY(e);var noAppend=tn.allowChildren===false;if(this.appendOnly||tn.parentNode.allowChildren===false){return noAppend?false:"append"}var noBelow=false;if(!this.allowParentInsert){noBelow=tn.hasChildNodes()&&tn.isExpanded()}var q=(b-t)/(noAppend?2:3);if(y>=t&&y<(t+q)){return"above"}else{if(!noBelow&&(noAppend||y>=b-q&&y<=b)){return"below"}else{return"append"}}},completeDrop:function(de){var ns=de.dropNode,p=de.point,t=de.target;if(!Ext.isArray(ns)){ns=[ns]}var n;for(var i=0,len=ns.length;i<len;i++){n=ns[i];if(p=="above"){t.parentNode.insertBefore(n,t)}else{if(p=="below"){t.parentNode.insertBefore(n,t.nextSibling)}else{t.leaf=false;t.appendChild(n)}}}n.ui.focus();if(this.tree.hlDrop){n.ui.highlight()}t.ui.endDrop();this.tree.fireEvent("nodedrop",de)}};Ext.grid.CheckColumn=function(config){Ext.apply(this,config);if(!this.id){this.id=Ext.id()}this.renderer=this.renderer.createDelegate(this)};Ext.grid.CheckColumn.prototype={init:function(grid){this.grid=grid;this.grid.on("render",function(){var view=this.grid.getView();view.mainBody.on("mousedown",this.onMouseDown,this)},this)},onMouseDown:function(e,t){if(t.className&&t.className.indexOf("x-grid3-cc-"+this.id)!=-1){e.stopEvent();var index=this.grid.getView().findRowIndex(t);var record=this.grid.store.getAt(index);var editEvent={grid:this.grid,record:this.grid.store.getAt(index),field:this.dataIndex,value:!record.data[this.dataIndex],originalValue:record.data[this.dataIndex],row:index,column:this.grid.getColumnModel().findColumnIndex(this.dataIndex)};record.set(this.dataIndex,editEvent.value);this.grid.getSelectionModel().selectRow(index);this.grid.fireEvent("afteredit",editEvent)}},renderer:function(v,p,record){p.css+=" x-grid3-check-col-td";return'<div class="x-grid3-check-col'+(v?"-on":"")+" x-grid3-cc-"+this.id+'"> </div>'}};Ext.form.DateTimeField=Ext.extend(Ext.form.Field,{defaultAutoCreate:{tag:"input",type:"hidden"},timeWidth:100,dateWidth:100,dtSeparator:" ",hiddenFormat:"Y-m-d H:i:s",otherToNow:true,dateFormat:"d/m/y",timeFormat:"H:i",allowBlank:true,hideTime:false,initComponent:function(){Ext.form.DateTimeField.superclass.initComponent.call(this);var dateConfig=Ext.apply({},{id:this.id+"-date",format:this.dateFormat||Ext.form.DateField.prototype.format,width:this.dateWidth,allowBlank:this.allowBlank,selectOnFocus:this.selectOnFocus,listeners:{blur:{scope:this,fn:this.onBlur},focus:{scope:this,fn:this.onFocus}}},this.dateConfig);this.df=new Ext.form.DateField(dateConfig);this.df.ownerCt=this;delete (this.dateFormat);var timeConfig=Ext.apply({},{id:this.id+"-time",format:this.timeFormat||Ext.form.TimeField.prototype.format,allowBlank:(this.hideTime||this.allowBlank),width:this.timeWidth,selectOnFocus:this.selectOnFocus,listeners:{blur:{scope:this,fn:this.onBlur},focus:{scope:this,fn:this.onFocus}}},this.timeConfig);this.tf=new Ext.form.TimeField(timeConfig);this.tf.ownerCt=this;delete (this.timeFormat);this.relayEvents(this.df,["focus","specialkey","invalid","valid"]);this.relayEvents(this.tf,["focus","specialkey","invalid","valid"])},onRender:function(ct,position){if(this.isRendered){return}Ext.form.DateTimeField.superclass.onRender.call(this,ct,position);var t;var timeStyle=this.hideTime?"display:none":"";t=Ext.DomHelper.append(ct,{tag:"table",style:"border-collapse:collapse",children:[{tag:"tr",children:[{tag:"td",style:"padding-right:17px",cls:"datetime-date"},{tag:"td",cls:"datetime-time",style:timeStyle}]}]},true);this.tableEl=t;this.wrap=t.wrap();this.wrap.on("mousedown",this.onMouseDown,this,{delay:10});this.df.render(t.child("td.datetime-date"));this.tf.render(t.child("td.datetime-time"));this.df.wrap.setStyle({width:this.dateWidth});this.tf.wrap.setStyle({width:this.timeWidth});if(Ext.isIE&&Ext.isStrict){t.select("input").applyStyles({top:0})}this.on("specialkey",this.onSpecialKey,this);this.df.el.swallowEvent(["keydown","keypress"]);this.tf.el.swallowEvent(["keydown","keypress"]);if("side"===this.msgTarget){var elp=this.el.findParent(".x-form-element",10,true);this.errorIcon=elp.createChild({cls:"x-form-invalid-icon"});this.df.errorIcon=this.errorIcon;this.tf.errorIcon=this.errorIcon}if(!this.el.dom.name){this.el.dom.name=this.hiddenName||this.name||this.id}this.df.el.dom.removeAttribute("name");this.tf.el.dom.removeAttribute("name");this.isRendered=true;if(this.el.dom.value){this.setValue(this.el.dom.value)}else{if(true===this.emptyToNow){this.setValue(new Date());this.updateHidden()}}},adjustSize:Ext.BoxComponent.prototype.adjustSize,alignErrorIcon:function(){this.errorIcon.alignTo(this.tableEl,"tl-tr",[2,0])},initDateValue:function(){this.dateValue=this.otherToNow?new Date():""},clearInvalid:function(){this.df.clearInvalid();this.tf.clearInvalid()},beforeDestroy:function(){if(this.isRendered){this.wrap.removeAllListeners();this.wrap.remove();this.tableEl.remove();this.df.destroy();this.tf.destroy()}},disable:function(){if(this.isRendered){this.df.disabled=this.disabled;this.df.onDisable();this.tf.onDisable()}this.disabled=true;this.df.disabled=true;this.tf.disabled=true;this.fireEvent("disable",this);return this},enable:function(){if(this.rendered){this.df.onEnable();this.tf.onEnable()}this.disabled=false;this.df.disabled=false;this.tf.disabled=false;this.fireEvent("enable",this);return this},focus:function(){this.df.focus()},getPositionEl:function(){return this.wrap},getResizeEl:function(){return this.wrap},getValue:function(){return this.dateValue?new Date(this.dateValue):""},isValid:function(){return this.df.isValid()&&this.tf.isValid()},isVisible:function(){return this.df.rendered&&this.df.getActionEl().isVisible()},onBlur:function(f){if(this.wrapClick){f.focus();this.wrapClick=false}this.updateDate();this.updateTime();this.updateHidden();(function(){if(!this.df.hasFocus&&!this.tf.hasFocus){var v=this.getValue();if(String(v)!==String(this.startValue)){this.fireEvent("change",this,v,this.startValue)}this.hasFocus=false;this.fireEvent("blur",this)}}).defer(100,this)},onFocus:function(){if(!this.hasFocus){this.hasFocus=true;this.startValue=this.getValue();this.fireEvent("focus",this)}},onMouseDown:function(e){if(!this.disabled){this.wrapClick="td"===e.target.nodeName.toLowerCase()}},onSpecialKey:function(t,e){var key=e.getKey();if(key===e.TAB){if(t===this.df&&!e.shiftKey){e.stopEvent();this.tf.focus()}if(t===this.tf&&e.shiftKey){e.stopEvent();this.df.focus()}}if(key===e.ENTER){this.updateValue()}},setDate:function(date){this.df.setValue(date)},setTime:function(date){this.tf.setRawValue(date)},setSize:function(w,h){if(!w){return}if("below"===this.timePosition){this.df.setSize(w,h);this.tf.setSize(w,h);if(Ext.isIE){this.df.el.up("td").setWidth(w);this.tf.el.up("td").setWidth(w)}}else{this.df.setSize(w-this.timeWidth-4,h);this.tf.setSize(this.timeWidth,h);if(Ext.isIE){this.df.el.up("td").setWidth(w-this.timeWidth-4);this.tf.el.up("td").setWidth(this.timeWidth)}}},setValue:function(val){if(!val&&true===this.emptyToNow){this.setValue(new Date());return}else{if(!val){this.setDate("");this.setTime("");this.updateValue();return}}if("number"===typeof val){val=new Date(val)}else{if("string"===typeof val&&this.hiddenFormat){val=Date.parseDate(val,this.hiddenFormat)}}val=val?val:new Date(1970,0,1,0,0,0);var da,time;if(val instanceof Date){this.setDate(val);this.setTime(val.format(this.timeFormat));this.dateValue=new Date(val)}else{da=val.split(this.dtSeparator);this.setDate(da[0]);if(da[1]){if(da[2]){da[1]+=da[2]
|
2
|
+
}var hh=da[1].split(":");this.setTime(hh[0]+":"+hh[1])}}},setVisible:function(visible){if(visible){this.df.show();this.tf.show()}else{this.df.hide();this.tf.hide()}return this},show:function(){return this.setVisible(true)},hide:function(){return this.setVisible(false)},updateDate:function(){var d=this.df.getValue();if(d){if(!(this.dateValue instanceof Date)){this.initDateValue();if(!this.tf.getValue()){this.setTime(this.dateValue)}}this.dateValue.setMonth(0);this.dateValue.setFullYear(d.getFullYear());this.dateValue.setMonth(d.getMonth());this.dateValue.setDate(d.getDate())}else{this.dateValue="";this.setTime("")}},updateTime:function(){var t=this.tf.getValue();if(t&&!(t instanceof Date)){t=Date.parseDate(t,this.tf.format)}if(t&&!this.df.getValue()){this.initDateValue();this.setDate(this.dateValue)}if(this.dateValue instanceof Date){if(t){this.dateValue.setHours(t.getHours());this.dateValue.setMinutes(t.getMinutes());this.dateValue.setSeconds(t.getSeconds())}else{this.dateValue.setHours(0);this.dateValue.setMinutes(0);this.dateValue.setSeconds(0)}}},updateHidden:function(){if(this.isRendered){var value=this.dateValue instanceof Date?this.dateValue.format(this.hiddenFormat):"";this.el.dom.value=value}},updateValue:function(){this.updateDate();this.updateTime();this.updateHidden();return},validate:function(){return this.df.validate()&&this.tf.validate()},renderer:function(field){var format=field.editor.dateFormat||Ext.form.DateTime.prototype.dateFormat;format+=" "+(field.editor.timeFormat||Ext.form.DateTime.prototype.timeFormat);var renderer=function(val){var retval=Ext.util.Format.date(val,format);return retval};return renderer}});Ext.reg("datetimefield",Ext.form.DateTimeField);Ext.grid.Search=function(config){Ext.apply(this,config);Ext.grid.Search.superclass.constructor.call(this)};Ext.extend(Ext.grid.Search,Ext.util.Observable,{autoFocus:true,searchText:"Search",searchTipText:"Insert a word or press Search",selectAllText:"Select All",position:"top",iconCls:"check",checkIndexes:"all",disableIndexes:[],dateFormat:undefined,showSelectAll:true,menuStyle:"checkbox",minCharsTipText:"Insert at least {0} characters",mode:"remote",width:200,xtype:"gridsearch",paramNames:{fields:"fields",query:"query"},shortcutKey:"r",shortcutModifier:"alt",align:"right",minLength:3,init:function(grid){this.grid=grid;this.id=this.grid.id+"-search";if("string"===typeof this.toolbarContainer){this.toolbarContainer=Ext.getCmp(this.toolbarContainer)}grid.store.load=grid.store.load.createInterceptor(this.load,this);grid.onRender=grid.onRender.createSequence(this.onRender,this);grid.reconfigure=grid.reconfigure.createSequence(this.reconfigure,this)},onRender:function(){var panel=this.toolbarContainer||this.grid;var tb="bottom"===this.position?panel.bottomToolbar:panel.topToolbar;this.menu=new Ext.menu.Menu();if("right"===this.align){tb.addFill()}else{if(0<tb.items.getCount()){tb.addSeparator()}}tb.add({text:this.searchText,menu:this.menu});this.field=new Ext.form.TwinTriggerField({width:this.width,selectOnFocus:undefined===this.selectOnFocus?true:this.selectOnFocus,trigger1Class:"x-form-clear-trigger",trigger2Class:this.minChars?"x-hidden":"x-form-search-trigger",onTrigger1Click:this.minChars?Ext.emptyFn:this.onTriggerClear.createDelegate(this),onTrigger2Click:this.onTriggerSearch.createDelegate(this),minLength:this.minLength});this.field.on("render",function(){this.field.el.dom.qtip=this.minChars?String.format(this.minCharsTipText,this.minChars):this.searchTipText;if(this.minChars){this.field.el.on({scope:this,buffer:300,keyup:this.onKeyUp})}var map=new Ext.KeyMap(this.field.el,[{key:Ext.EventObject.ENTER,scope:this,fn:this.onTriggerSearch},{key:Ext.EventObject.ESC,scope:this,fn:this.onTriggerClear}]);map.stopEvent=true},this,{single:true});tb.add(this.field);this.initState();if(this.shortcutKey&&this.shortcutModifier){var shortcutEl=this.grid.getEl();var shortcutCfg=[{key:this.shortcutKey,scope:this,stopEvent:true,fn:function(){this.field.focus()}}];shortcutCfg[0][this.shortcutModifier]=true;this.keymap=new Ext.KeyMap(shortcutEl,shortcutCfg)}if(true===this.autoFocus){this.grid.store.on({scope:this,load:function(){this.field.focus()}})}},initState:function(){if(Ext.state.Manager){var state=Ext.state.Manager.get(this.id);this.applyState(state)}},applyState:function(state){if(state){if(state.checked&&state.checked instanceof Array){this.checkIndexes=state.checked}if(state.value){this.field.setValue(state.value)}}this.reconfigure();this.onTriggerSearch()},saveState:function(){if(Ext.state.Manager){var state=this.getState();Ext.state.Manager.set(this.id,state)}},getState:function(){var checked=[];this.menu.items.each(function(item){if(item.dataIndex&&item.checked){checked.push(item.dataIndex)}});this.inited=true;return{value:this.field.getValue(),checked:checked}},load:function(){return(this.field!=undefined&&this.inited==true)},onKeyUp:function(){var length=this.field.getValue().toString().length;if(0===length||this.minChars<=length){this.onTriggerSearch()}},onTriggerClear:function(){if(this.field.getValue()){this.field.setValue("");this.field.focus();this.onTriggerSearch()}this.saveState()},onTriggerSearch:function(){if(!this.field.isValid()){return}var val=this.field.getValue();var store=this.grid.store;if("local"===this.mode){store.clearFilter();if(val){store.filterBy(function(r){var retval=false;this.menu.items.each(function(item){if(!item.checked||retval){return}var rv=r.get(item.dataIndex);rv=rv instanceof Date?rv.format(this.dateFormat||r.fields.get(item.dataIndex).dateFormat):rv;var re=new RegExp(val,"gi");retval=re.test(rv)},this);if(retval){return true}return retval},this)}else{}}else{if(store.lastOptions&&store.lastOptions.params){store.lastOptions.params[store.paramNames.start]=0}var fields=[];this.menu.items.each(function(item){if(item.checked&&item.dataIndex){fields.push(item.dataIndex)}});delete (store.baseParams[this.paramNames.fields]);delete (store.baseParams[this.paramNames.query]);if(store.lastOptions&&store.lastOptions.params){delete (store.lastOptions.params[this.paramNames.fields]);delete (store.lastOptions.params[this.paramNames.query])}if(fields.length){store.baseParams[this.paramNames.fields]=fields.compact().join();store.baseParams[this.paramNames.query]=val}store.reload()}this.saveState()},setDisabled:function(){this.field.setDisabled.apply(this.field,arguments)},enable:function(){this.setDisabled(false)},disable:function(){this.setDisabled(true)},reconfigure:function(){var menu=this.menu;menu.removeAll();if(this.showSelectAll&&"radio"!==this.menuStyle){menu.add(new Ext.menu.CheckItem({text:this.selectAllText,checked:!(this.checkIndexes instanceof Array),hideOnClick:false,handler:function(item){var checked=!item.checked;item.parentMenu.items.each(function(i){if(item!==i&&i.setChecked&&!i.disabled){i.setChecked(checked)}})}}),"-")}var cm=this.grid.colModel;var group=undefined;if("radio"===this.menuStyle){group="g"+(new Date).getTime()}Ext.each(cm.config,function(config){var disable=false;if(config.header&&config.dataIndex&&config.sortable){Ext.each(this.disableIndexes,function(item){disable=disable?disable:item===config.dataIndex});if(!disable){menu.add(new Ext.menu.CheckItem({text:config.header,hideOnClick:false,group:group,checked:"all"===this.checkIndexes,dataIndex:config.dataIndex}))}}},this);if(this.checkIndexes instanceof Array){Ext.each(this.checkIndexes,function(di){var item=menu.items.find(function(itm){return itm.dataIndex===di});if(item){item.setChecked(true,true)}},this)}if(this.readonlyIndexes instanceof Array){Ext.each(this.readonlyIndexes,function(di){var item=menu.items.find(function(itm){return itm.dataIndex===di});if(item){item.disable()}},this)}}});Ext.state.DataBaseProvider=function(config){Ext.state.DataBaseProvider.superclass.constructor.call(this);this.path="/backend/state_sessions";Ext.apply(this,config);this.state=this.readCookies()};Ext.extend(Ext.state.DataBaseProvider,Ext.state.Provider,{set:function(name,value){if(typeof value=="undefined"||value===null){this.clear(name);
|
3
|
+
return}this.setCookie(name,value);Ext.state.DataBaseProvider.superclass.set.call(this,name,value)},clear:function(name){this.clearCookie(name);Ext.state.DataBaseProvider.superclass.clear.call(this,name)},readCookies:function(){var cookies={};var values=[];new Ajax.Request(this.path,{method:"GET",asynchronous:false,onSuccess:function(response,request){values=Ext.decode(response.responseText)}});values.each(function(f){if(f.state_session&&f.state_session.component&&f.state_session.component.substring(0,3)=="ys-"){cookies[f.state_session.component.substr(3)]=this.decodeValue(f.state_session.data)}},this);return cookies},setCookie:function(name,value){Ext.Ajax.request({url:this.path,method:"POST",params:{id:"ys-"+name,data:this.encodeValue(value)}})},clearCookie:function(name){Ext.Ajax.request({url:this.path+"/ys-"+name,method:"DELETE"})}});
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lipsiadmin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.
|
4
|
+
version: 5.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Davide D'Agostino
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-12-01 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -57,10 +57,13 @@ files:
|
|
57
57
|
- lipsiadmin_generators/backend/templates/config/initializers/config.rb
|
58
58
|
- lipsiadmin_generators/backend/templates/config/initializers/emails.rb
|
59
59
|
- lipsiadmin_generators/backend/templates/config/initializers/exception_notifier.rb
|
60
|
+
- lipsiadmin_generators/backend/templates/config/locales/backend/de.yml
|
60
61
|
- lipsiadmin_generators/backend/templates/config/locales/backend/en.yml
|
61
62
|
- lipsiadmin_generators/backend/templates/config/locales/backend/it.yml
|
63
|
+
- lipsiadmin_generators/backend/templates/config/locales/models/account/de.yml
|
62
64
|
- lipsiadmin_generators/backend/templates/config/locales/models/account/en.yml
|
63
65
|
- lipsiadmin_generators/backend/templates/config/locales/models/account/it.yml
|
66
|
+
- lipsiadmin_generators/backend/templates/config/locales/rails/de.yml
|
64
67
|
- lipsiadmin_generators/backend/templates/config/locales/rails/en.yml
|
65
68
|
- lipsiadmin_generators/backend/templates/config/locales/rails/it.yml
|
66
69
|
- lipsiadmin_generators/backend/templates/controllers/backend/accounts_controller.rb
|
@@ -360,6 +363,7 @@ files:
|
|
360
363
|
- lipsiadmin_generators/backend_page/templates/view_new.html.haml
|
361
364
|
- lipsiadmin_generators/frontend/frontend_generator.rb
|
362
365
|
- lipsiadmin_generators/frontend/REMEMBER
|
366
|
+
- lipsiadmin_generators/frontend/templates/config/locales/frontend/de.yml
|
363
367
|
- lipsiadmin_generators/frontend/templates/config/locales/frontend/en.yml
|
364
368
|
- lipsiadmin_generators/frontend/templates/config/locales/frontend/it.yml
|
365
369
|
- lipsiadmin_generators/frontend/templates/controllers/frontend/base_controller.rb
|
@@ -407,6 +411,7 @@ files:
|
|
407
411
|
- lib/generator.rb
|
408
412
|
- lib/lipsiadmin.rb
|
409
413
|
- lib/lipsiadmin_tasks.rb
|
414
|
+
- lib/locale/de.yml
|
410
415
|
- lib/locale/en.yml
|
411
416
|
- lib/locale/it.yml
|
412
417
|
- lib/loops/base.rb
|