jqajax_core2 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. checksums.yaml +7 -0
  2. data/app/assets/javascripts/jqac2/core.js.coffee.erb +109 -0
  3. data/app/assets/javascripts/jqac2/helpers.js.coffee.erb +52 -0
  4. data/app/assets/javascripts/jqac2/initializer.js.coffee.erb +30 -0
  5. data/app/assets/javascripts/jqac2/loading.js.coffee.erb +58 -0
  6. data/app/assets/javascripts/jqac2/modal.js.coffee.erb +83 -0
  7. data/app/assets/javascripts/jqac2/validation.js.coffee.erb +244 -0
  8. data/app/assets/javascripts/jqac2/widget_classes/checkbox_slidedown.coffee +33 -0
  9. data/app/assets/javascripts/jqac2/widgets.js.coffee +27 -0
  10. data/app/assets/javascripts/jqajax-core2.js.erb +8 -0
  11. data/app/assets/stylesheets/jqajax-core2.scss.erb +54 -0
  12. data/app/assets/stylesheets/jqajax2-variables.scss +10 -0
  13. data/app/controllers/jqac2_controller.rb +9 -0
  14. data/app/helpers/jqajax_core_helper.rb +139 -0
  15. data/app/helpers/jqajax_validation_helper.rb +76 -0
  16. data/app/helpers/jqajax_view_helper.rb +29 -0
  17. data/app/views/jqajax/_flash.html.erb +9 -0
  18. data/app/views/jqajax/_loader.html.erb +4 -0
  19. data/app/views/jqajax/_modal.html.erb +14 -0
  20. data/app/views/jqajax/_overlay.html.erb +11 -0
  21. data/app/views/layouts/_ajax_overlay.html.erb +5 -0
  22. data/app/views/layouts/_info_overlay.html.erb +9 -0
  23. data/app/views/layouts/jqac2_modal.html.erb +9 -0
  24. data/config/locales/jqac2.validations.de.yml +12 -0
  25. data/config/routes.rb +10 -0
  26. data/lib/jqajax_core2/application_controller_ext.rb +17 -0
  27. data/lib/jqajax_core2/config.rb +31 -0
  28. data/lib/jqajax_core2/engine.rb +10 -0
  29. data/lib/jqajax_core2/validations.rb +147 -0
  30. data/lib/jqajax_core2.rb +107 -0
  31. metadata +159 -0
@@ -0,0 +1,54 @@
1
+ @import "jqajax2-variables";
2
+
3
+ #<%= JqajaxCore2::Config.overlay[:div_id] %> {
4
+ position: fixed; z-index: 5000;
5
+ top: 0; left: 0;
6
+ background: $jqac2-overlay-bg-color;
7
+
8
+
9
+ .overlay-content-box {
10
+ background: #fff;
11
+ padding: 12px;
12
+ border: solid 1px #ddd;
13
+ text-align: center;
14
+ max-width: 200px;
15
+ cursor: pointer;
16
+ position: fixed;
17
+ z-index: 5001;
18
+
19
+ .overlay-loader {
20
+ margin-bottom: 5px;
21
+ }
22
+
23
+ .overlay-title {
24
+ margin-bottom: 12px;
25
+ }
26
+
27
+ .overlay-link {
28
+ font-size: 10px;
29
+ }
30
+ }
31
+ }
32
+
33
+ #<%= JqajaxCore2::Config.loading[:flash_area_div] %> {
34
+
35
+ position: fixed; max-width: 400px; z-index: 10001;
36
+
37
+ <% if JqajaxCore2::Config.loading[:flash_area_position] == :bottom_left %>
38
+ left: $jqac2-flash-x-space; bottom: $jqac2-flash-y-space;
39
+ <% elsif JqajaxCore2::Config.loading[:flash_area_position] == :bottom_right %>
40
+ right: $jqac2-flash-x-space; bottom: $jqac2-flash-y-space;
41
+ <% elsif JqajaxCore2::Config.loading[:flash_area_position] == :top_left %>
42
+ left: $jqac2-flash-x-space; top: $jqac2-flash-y-space;
43
+ <% elsif JqajaxCore2::Config.loading[:flash_area_position] == :top_right %>
44
+ right: $jqac2-flash-x-space; top: $jqac2-flash-y-space;
45
+ <% end %>
46
+
47
+ .jqac2-notify { background: #fff; padding: .5em 1em; -moz-border-radius: 5px; border-radius: 5px; }
48
+ .jqac2-notify.ok { border: solid 2px $jqac2-flash-ok; }
49
+ .jqac2-notify.error { border: solid 2px $jqac2-flash-error; }
50
+ .jqac2-notify.neutral { border: solid 2px $jqac2-flash-neutral; }
51
+
52
+ }
53
+
54
+
@@ -0,0 +1,10 @@
1
+ // Defining style for the loading overlay
2
+ $jqac2-overlay-bg-color: rgba(255,255,255, 0.7);
3
+
4
+ // Position and style for flash overlay
5
+ $jqac2-flash-y-space: 20px ;
6
+ $jqac2-flash-x-space: 20px ;
7
+
8
+ $jqac2-flash-error: red;
9
+ $jqac2-flash-ok: green;
10
+ $jqac2-flash-neutral: orange;
@@ -0,0 +1,9 @@
1
+ # -*- encoding : utf-8 -*-
2
+ class Jqac2Controller < ApplicationController
3
+
4
+ # flash[:notice/error] Laden
5
+ def json_flash_data
6
+ render :text => flash.to_json, :status => 200
7
+ end
8
+
9
+ end
@@ -0,0 +1,139 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module JqajaxCoreHelper
3
+
4
+
5
+ #== New and shiny polished Rails 3.2 Ajax Helper Functions
6
+
7
+ # Default Ajax Link for Links
8
+ def default_ajax_link(options ={})
9
+ link_data = init_link_data(options)
10
+
11
+ link_data.merge!(:title => options[:title])
12
+ options[:class] ||= ""
13
+ options[:class] << " #{JqajaxCore2::Config.core[:ajax_link_class]} #{JqajaxCore2::Config.core[:no_ajax_link_class]}"
14
+
15
+ if options[:append] == true
16
+ link_data.merge!(JqajaxCore2::Config.html_data[:append] => true)
17
+ end
18
+
19
+ # Load-Message setzen: Entweder default oder eigene Nachricht
20
+ if options[:load_message] && (options[:load_message] != false && !options[:load_message].blank?)
21
+ options[:class] << " #{AJAX_LOAD_MESSAGE_TRIGGER}"
22
+ if options[:load_message].is_a?(String)
23
+ link_data.merge!(JqajaxCore2::Config.loading[:load_message].to_s => options[:load_message])
24
+ end
25
+ elsif options[:load_message] == false
26
+ options[:class] << " #{AJAX_HIDE_LOAD_MESSAGE_SELECTOR}"
27
+ end
28
+
29
+ link_data.merge!(html_defaults_from_options(options))
30
+
31
+ return link_data
32
+ end
33
+
34
+ #
35
+ def select_onchange_data(options ={})
36
+ link_data = init_link_data(options)
37
+
38
+ link_data.merge!(:disabled => options[:disabled])
39
+ options[:class] ||= ""
40
+ options[:class] << " #{JqajaxCore2::Config.core[:select_onchange_selector]} #{JqajaxCore2::Config.core[:no_ajax_link_class]}"
41
+
42
+ options[:with] ||= :id
43
+
44
+ options[:url].merge!(options[:with] => JqajaxCore2::Config.core[:url_placeholder])
45
+
46
+ url_scope = options[:scope].nil? ? main_app : options[:scope]
47
+
48
+ link_data.merge!(JqajaxCore2::Config.html_data[:target_url].to_s => url_scope.url_for(options[:url]))
49
+
50
+ # Load-Message setzen: Entweder default oder eigene Nachricht
51
+ if options[:load_message] && (options[:load_message] != false && !options[:load_message].blank?)
52
+ options[:class] << " #{AJAX_LOAD_MESSAGE_TRIGGER}"
53
+ if options[:load_message].is_a?(String)
54
+ link_data.merge!(JqajaxCore2::Config.loading[:load_message].to_s => options[:load_message])
55
+ end
56
+ elsif options[:load_message] == false
57
+ options[:class] << " #{AJAX_HIDE_LOAD_MESSAGE_SELECTOR}"
58
+ end
59
+
60
+ link_data.merge!(html_defaults_from_options(options))
61
+
62
+ return link_data
63
+ end
64
+
65
+
66
+
67
+ # Creates a box that slides down and up to show/hide the content.
68
+ # * Use ':open => true' to set the box open by default
69
+ # * Use ':default_class => "className"' to set the class used for the header
70
+ def slide_down_box(title, options = {:open => false}, &block)
71
+ options[:default_class] ||= "icon-arrow-right"
72
+ options[:type] ||= :div
73
+
74
+
75
+ box_session_id = Digest::SHA1.hexdigest("#{params[:action]}-#{title}")
76
+
77
+ open = options[:open] #|| (session[:slidedown_boxes_open].include?(box_session_id) rescue false)
78
+
79
+ concat raw("<div class='js-slide-down-box plain #{'open' if open} #{options[:box_class]} #{options[:class]}' data-session-id='#{box_session_id}'>
80
+ <#{options[:type]} class='#{options[:default_class]} js-slidedown-button'>
81
+ #{title}
82
+ </#{options[:type]}>
83
+ <div class='js-slidedown-content'>")
84
+ yield
85
+ concat raw("</div></div>")
86
+ end
87
+
88
+
89
+
90
+ def init_slidedown
91
+ raw("<script type='text/javascript'>init_slidedown();</script>")
92
+ end
93
+
94
+
95
+ private
96
+
97
+ def init_link_data(options = {})
98
+ link_data = {:remote => true }
99
+ link_data.merge!(:method => options[:method]) if options[:method]
100
+ link_data.merge!(update_div_from_options(options))
101
+ link_data.merge!(submit_from_options(options))
102
+ link_data.merge!(callback_from_options(options))
103
+ link_data.merge!(confirm_message_from_options(options))
104
+ return link_data
105
+ end
106
+
107
+ def confirm_message_from_options(options = {})
108
+ # Confirm-Message setzen: Entweder default, oder eigene Nachricht
109
+ if options[:confirm]
110
+ { JqajaxCore2::Config.html_data[:confirm] => (options[:confirm] == true ? JqajaxCore2::Config.core[:confirm_default] : options[:confirm].to_s )}
111
+ else
112
+ return {}
113
+ end
114
+ end
115
+
116
+ def callback_from_options(options = {})
117
+ options[:callback] ? {JqajaxCore2::Config.html_data[:callback] => options[:callback]} : {}
118
+ end
119
+
120
+ def submit_from_options(options = {})
121
+ options[:submit] ? {
122
+ JqajaxCore2::Config.html_data[:submit_data] => options[:submit],
123
+ :method => "POST"
124
+ } : {}
125
+ end
126
+
127
+ def update_div_from_options(options = {})
128
+ options[:update] ? { JqajaxCore2::Config.core[:update_div] => options[:update]} : {}
129
+ end
130
+
131
+ def html_defaults_from_options(options = {})
132
+ l = {}
133
+ l.merge!(:class => options[:class])
134
+ l.merge!(:id => options[:id])
135
+ l.merge!(:style => options[:style])
136
+ return l
137
+ end
138
+
139
+ end
@@ -0,0 +1,76 @@
1
+ module JqajaxValidationHelper
2
+
3
+ def jqac2_validation_for(*vtypes)
4
+ if vtypes.last.is_a?(Hash)
5
+ options = vtypes.last
6
+ vtypes.pop
7
+ else
8
+ options = {}
9
+ end
10
+
11
+ current_data_attributes = options.delete(:data) || {}
12
+
13
+ # if a custom class for the form field wrapper is required....
14
+ current_data_attributes.merge!(wrapper_class: options[:wrapper_class]) if options[:wrapper_class]
15
+
16
+ # validierungsoptionen
17
+ if options[:validator_options]
18
+ options[:validator_options].each do |opt, val|
19
+ options.merge!(jqac2_data_attribute_for(opt) => val)
20
+ end
21
+ options.delete(:validator_options)
22
+ end
23
+
24
+ data_messages = []
25
+ if options[:hint]
26
+ data_messages << options[:hint]
27
+ end
28
+
29
+ vtypes.each do |vtype|
30
+ if JqajaxCore2::Validations.settings[vtype.to_sym]
31
+ options.merge!(:class => [options[:class], JqajaxCore2::Validations.settings[vtype.to_sym][:class]].compact.join(" "))
32
+ if I18n.exists?("jqac2.validations.hints.#{vtype}") && options[:show_hint] == true
33
+ data_messages << I18n.t("jqac2.validations.hints.#{vtype}")
34
+ end
35
+ elsif vtype.nil?
36
+ options
37
+ else
38
+ raise ArgumentError, "Validation of type #{vtype} is not known"
39
+ end
40
+ end
41
+
42
+ if data_messages.any?
43
+ current_data_attributes.merge!(validation_messages: data_messages.compact.join(";"))
44
+ end
45
+
46
+ return options.merge(data: current_data_attributes)
47
+ end
48
+
49
+ def jqac2_validation_class_for(*vtypes)
50
+ css = []
51
+ vtypes.each do |vtype|
52
+ if !vtype.nil?
53
+ if JqajaxCore2::Validations.settings[vtype.to_sym]
54
+ css << JqajaxCore2::Validations.settings[vtype.to_sym][:class]
55
+ else
56
+ raise ArgumentError, "Validation of type #{vtype} is not known"
57
+ end
58
+ end
59
+ end
60
+
61
+ return css.join(" ")
62
+ end
63
+
64
+ def jqac2_validate_form
65
+ JqajaxCore2::Validations.form_validation_class
66
+ end
67
+
68
+ def jqac2_data_attribute_for(m="bla")
69
+ "data-#{JqajaxCore2::Validations.data_prefix}-#{m.to_s.dasherize}"
70
+ end
71
+
72
+ def init_jqac2_validator
73
+ javascript_tag("JqAjaxCore2.Validation.initForms()")
74
+ end
75
+
76
+ end
@@ -0,0 +1,29 @@
1
+ module JqajaxViewHelper
2
+
3
+
4
+ def include_jqajax_overlay
5
+ render :partial => "/jqajax/overlay"
6
+ end
7
+
8
+ def include_jqajax_flash
9
+ render :partial => "/jqajax/flash"
10
+ end
11
+
12
+ def include_jqajax_core(*elements)
13
+ elements = %w(overlay flash) if elements.empty?
14
+
15
+ elements.each do |e|
16
+ concat(self.send("include_jqajax_#{e}"))
17
+ end
18
+ return nil
19
+ end
20
+
21
+
22
+
23
+ def jqajax_modal(options = {}, &block)
24
+ options[:draggable] = JqajaxCore2::Config.modal[:draggable]
25
+ render "/jqajax/modal", :options => options, :content => capture(&block)
26
+ end
27
+
28
+
29
+ end
@@ -0,0 +1,9 @@
1
+ <%# flash[:notice] & flash[:error] display %>
2
+ <div id="<%= JqajaxCore2::Config.loading[:flash_area_div] %>" class="">
3
+ <% if !flash[:notice].blank? %>
4
+ <%= javascript_tag("JqAjaxCore2.Loading.flashNoticeDisplay('#{flash[:notice]}', 'ok')") %>
5
+ <% end %>
6
+ <% if !flash[:error].blank? %>
7
+ <%= javascript_tag("JqAjaxCore2.Loading.flashNoticeDisplay('#{flash[:error]}', 'error')") %>
8
+ <% end %>
9
+ </div>
@@ -0,0 +1,4 @@
1
+ <div class="jqac-inline-loader cf">
2
+ <div class="overlay-loader"><img src="<%= JqajaxCore2::Config.loading[:loader_img] %>"></div>
3
+ <div class="overlay-title">{TXT}</div>
4
+ <%= link_to JqajaxCore2::Config.overlay[:hide_label], "#", :class => "overlay-link" %>
@@ -0,0 +1,14 @@
1
+ <% id = "I#{Digest::SHA1.hexdigest(params.inspect)}" %>
2
+ <div class="<%= JqajaxCore2::Config.modal[:css_class] %> rounded" id="<%= id %>">
3
+ <%= image_tag JqajaxCore2::Config.modal[:close_icon_img], :class => "close-link", :onclick => "JqAjaxCore2.Modal.hideModal('#{id}')" %>
4
+ <div class="info-overlay-content">
5
+ <%= content %>
6
+ </div>
7
+ </div>
8
+
9
+ <script type="text/javascript">
10
+ JqAjaxCore2.Modal.initModal('<%= id %>')
11
+ <% if options[:draggable] %>
12
+ JqAjaxCore2.Modal.setModalDraggable('<%= id %>')
13
+ <% end %>
14
+ </script>
@@ -0,0 +1,11 @@
1
+ <%# Default content Container %>
2
+ <div id="<%= JqajaxCore2::Config.core[:ajax_content_container_id] %>"></div>
3
+
4
+ <%# Loading Overlayer %>
5
+ <div id="<%= JqajaxCore2::Config.overlay[:div_id] %>" style="display:none">
6
+ <div class="overlay-content-box" onmousedown="JqAjaxCore2.Loading.hideLoading();">
7
+ <div class="overlay-loader"><%= image_tag(JqajaxCore2::Config.loading[:loader_img]) %></div>
8
+ <div class="overlay-title"><%= JqajaxCore2::Config.overlay[:info_text] %></div>
9
+ <%= link_to JqajaxCore2::Config.overlay[:hide_label], "#", :class => "overlay-link" %>
10
+ </div>
11
+ </div>
@@ -0,0 +1,5 @@
1
+ <% id = "A#{Digest::SHA1.hexdigest(Time.now.to_s + rand(1000).to_s)}" %>
2
+ <% ajax_overlay(id) do %>
3
+ <%= yield %>
4
+ <% end %>
5
+ <%= render :partial => '/layouts/overlay_js', :locals => {:mode => :ajax, :id => id} %>
@@ -0,0 +1,9 @@
1
+ <% id = "I#{Digest::SHA1.hexdigest(params.inspect)}" %>
2
+ <div class="<%= JqajaxCore2::Config.modal[:css_class] %> rounded" id="<%= id %>">
3
+ <%= image_tag "icons/icon-close.png", :class => "close-link", :onclick => "$('##{id}').slideUp(200);" %>
4
+ <div class="info-overlay-content">
5
+ <%= yield %>
6
+ </div>
7
+ </div>
8
+
9
+ <%= render :partial => '/layouts/overlay_js', :locals => {:mode => :info, :id => id} %>
@@ -0,0 +1,9 @@
1
+ <% id = "I#{Digest::SHA1.hexdigest(params.inspect)}" %>
2
+ <div class="<%= JqajaxCore2::Config.modal[:css_class] %> rounded" id="<%= id %>">
3
+ <%= image_tag "icons/icon-close.png", :class => "close-link", :onclick => "$('##{id}').slideUp(200);" %>
4
+ <div class="info-overlay-content">
5
+ <%= yield %>
6
+ </div>
7
+ </div>
8
+
9
+
@@ -0,0 +1,12 @@
1
+ de:
2
+ jqac2:
3
+ validations:
4
+ hints:
5
+ phone_int: 'Telefonnummer im intl. Format: +xx xxx...'
6
+ letters_only: 'Nur Buchstaben (A-Z) und Leerzeichen'
7
+ alphanumeric: 'Nur Buchstaben (A-Z), Zahlen (0-9) und Leerzeichen'
8
+ zip: 'Postleitzahl, 4-5-stellige Nummer, führende "0" erlaubt'
9
+ date: 'Datum im Format TT.MM.JJJJ'
10
+ datemonth: 'Datum im Format MM.JJJJ'
11
+ datetime: 'Datum/Uhrzeit im Format DD.MM.YYYY HH:MM'
12
+ required: 'Pflichtfeld'
data/config/routes.rb ADDED
@@ -0,0 +1,10 @@
1
+ # -*- encoding : utf-8 -*-
2
+ JqAjaxCore2::Engine.routes.draw do
3
+
4
+ #=== AJAX Routing
5
+ # Ajax Routen immer in Klartext, da diese auch in JS manuell verwendet werden.
6
+ get "/jqca2/jqac2_flash", :controller => "jqac2", :action => "json_flash_data"
7
+ #get "/jqca2/auto_complete", :controller => "ajax", :action => "auto_complete"
8
+ #get "/jqca2/save_slidedown_box/:id", :controller => "ajax", :action => "save_slidedown_box"
9
+
10
+ end
@@ -0,0 +1,17 @@
1
+ module JqajaxCore2
2
+ module ApplicationControllerExt
3
+
4
+ def render_blank_ajax
5
+ render :text => nil, :status => 200, :content_type => "text/html"
6
+ end
7
+
8
+ def ajax_layout(layout_name="info_overlay")
9
+ render :layout => layout_name if request.xhr?
10
+ end
11
+
12
+ def ajax_text(text)
13
+ render :text => text.html_safe, :status => 200, :content_type => "text/html"
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,31 @@
1
+ module JqajaxCore2
2
+ class Config
3
+
4
+ #= Core Setting
5
+ cattr_accessor :core, :prefix
6
+ self.core = {}
7
+
8
+ #= HTML Data-Attributes
9
+ # Naming of the HTML data-attributes for the link element config
10
+ cattr_accessor :html_data
11
+ self.html_data = {}
12
+
13
+ #= Overlay and Loading Settings
14
+ # Config for loading overlay, flash notifiers etc.
15
+ cattr_accessor :overlay, :loading
16
+ self.overlay = {}
17
+ self.loading = {}
18
+
19
+ #= Modal Settings
20
+ # Config for appearance and behavior of modal dialog
21
+ cattr_accessor :modal
22
+ self.modal = {}
23
+
24
+ def self.initialize
25
+
26
+
27
+
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,10 @@
1
+ module JqAjaxCore2
2
+
3
+ class Engine < Rails::Engine
4
+
5
+
6
+
7
+ end
8
+
9
+
10
+ end
@@ -0,0 +1,147 @@
1
+ module JqajaxCore2
2
+ class Validations
3
+
4
+ cattr_accessor :settings, :checkbox_validation_class, :skip_validation_class, :form_validation_class, :prefix, :data_prefix, :error_description_class, :validation_description_class
5
+
6
+ self.prefix = "#{JqajaxCore2::Config.prefix}-vld"
7
+ self.data_prefix = "data-#{JqajaxCore2::Config.prefix}"
8
+
9
+ # Defition der Verüfgbaren validierungen:
10
+ # - Ist :regexp gesetzt, wird automatisch eine Validierungsfunktion für die Regexp in JS angelegt
11
+ # bei fehler wird die :message zurückgegeben
12
+ # - Ist keine Regexp angegeben muss eine Funktion manuell erstellt werden
13
+
14
+ self.settings = {
15
+
16
+ :email => {
17
+ :class => "#{self.prefix}-email-validation",
18
+ :regexp => '/[a-zA-Z0-9\.\-_]{1,}@[a-zA-Z0-9\.\-_]{1,}\.[a-zA-Z0-9\.\-_]{2,4}/',
19
+ :message => "Keine gültige E-Mail-Adresse"
20
+ },
21
+
22
+ :phone => {
23
+ :class => "#{self.prefix}-phone-validation",
24
+ :regexp => '/[0-9+]{1,}[0-9\ \/]{1,}/',
25
+ :message => "Keine gültige Telefonnummer"
26
+ },
27
+
28
+ :phone_int => {
29
+ :class => "#{self.prefix}-phone-int-validation",
30
+ :regexp => '/\+[1-9]{1}[0-9]{1,3}\ ?[0-9\ ]{1,}/',
31
+ :message => "Keine gültige Telefonnummer (Format +xx xxx...)"
32
+ },
33
+
34
+ :letters_only => {
35
+ class: "#{self.prefix}-letters-validation",
36
+ regexp: '/^[A-z\ ]+$/',
37
+ message: "Nur Buchstaben und Leerzeichen"
38
+ },
39
+
40
+ :alphanumeric => {
41
+ class: "#{self.prefix}-alphanum-validation",
42
+ regexp: '/^[A-z0-9\ ]+$/',
43
+ message: "Nur Buchstaben, Zahlen und Leerzeichen"
44
+ },
45
+
46
+ :zip => {
47
+ :class => "#{self.prefix}-zip-validation",
48
+ :regexp => '/[0-9]{4,5}/',
49
+ :message => "Ungültige PLZ"
50
+ },
51
+
52
+ :number => {
53
+ :class => "#{self.prefix}-nr-validation",
54
+ :regexp => '/[0-9\ ]{1,}/',
55
+ :message => "Ungültige Zahl",
56
+ },
57
+
58
+ :currency => {
59
+ :class => "#{self.prefix}-currency-validation",
60
+ :regexp => '/[0-9\.\,0]{1,}/',
61
+ :message => "Ungültige Eingabe",
62
+ },
63
+
64
+ #== Validations for dates etc...
65
+ :date => {
66
+ :class => "#{self.prefix}-date-validation",
67
+ # TODO: Regexp does not catch fake dates like 99.99.9999
68
+ :regexp => "/([0-9]{2}\.[0-9]{2}\.[0-9]{4})|([0-9]{4}-[0-9]{2}-[0-9]{2})/",
69
+ :message => "Ungültiges Datum"
70
+ },
71
+
72
+ :datemonth => {
73
+ :class => "#{self.prefix}-date-month-validation",
74
+ :regexp => "/[0-9]{2}\.[0-9]{4}/",
75
+ :message => "Ungültiges Format (MM.JJJJ)",
76
+ },
77
+
78
+ :datetime => {
79
+ :class => "#{self.prefix}-datetime-validation",
80
+ :regexp => "/[0-9]{2}\.[0-9]{2}\.[0-9]{4}\ [0-9]{2}\:[0-9]{2}/",
81
+ :message => "Ungültiges Format (DD.MM.YYYY HH:MM)",
82
+ },
83
+
84
+ #:date_in_future => {
85
+ # :class => "#{self.prefix}-date-in-future-validation",
86
+ # :message => "Datum darf nicht in der Vergangenheit liegen",
87
+ #}
88
+ #
89
+ #:date_min_age => {
90
+ # :class => "#{self.prefix}-date-min-ag-validation",
91
+ # :data => {:min_age => 18}
92
+ # :message => "Ungültiges Geburtsdatum",
93
+ #}
94
+
95
+
96
+ #== Validations for Passwords, Confirmation etc...
97
+
98
+ :password_simple => {
99
+ :class => "#{self.prefix}-simple-pass-validation",
100
+ # Data-Attributes used by the method, and their default values
101
+ :data => {:length => 6},
102
+ :message => "Min. [Length] Zeichen, min. Buchstaben und Zahlen"
103
+
104
+ },
105
+
106
+ :confirmation => {
107
+ :class => "#{self.prefix}-confirmation",
108
+ :data => {:confirm_field => "", :confirm_name => ""},
109
+ :message => "Bestätigung von [ConfirmName] stimmt nicht überein"
110
+ },
111
+
112
+ :exact => {
113
+ :class => "#{self.prefix}-exact-validation",
114
+ :data => {:value => ""},
115
+ :message => "Eingabe ungültig"
116
+ },
117
+
118
+ :length => {
119
+ :class => "#{self.prefix}-length-validation",
120
+ :data => {:length => 0},
121
+ :message => "[Length] Zeichen"
122
+ },
123
+
124
+ :required => {
125
+ :class => "#{self.prefix}-required-validation",
126
+ :regexp => '/[a-zA-Z0-9]{1,}/',
127
+ :empty => false,
128
+ :message => "Pflichtfeld"
129
+ },
130
+
131
+ :from_service => {
132
+ :class => "#{self.prefix}-from-service",
133
+ :data => {:url => "#", :additional_values => {}.to_json }
134
+ },
135
+
136
+ :none => {
137
+ class: "#{self.prefix}-none"
138
+ }
139
+ }
140
+
141
+ self.checkbox_validation_class = "#{self.prefix}-validate-checkbox"
142
+ self.skip_validation_class = "#{self.prefix}-skip-validation"
143
+ self.form_validation_class = "#{self.prefix}-form-validation"
144
+ self.error_description_class = "error-description"
145
+ self.validation_description_class = "validation-description"
146
+ end
147
+ end