friends_ajax_core 0.0.51

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/app/assets/images/icons-16/icon-arrow-down-hover.png +0 -0
  3. data/app/assets/images/icons-16/icon-arrow-down.png +0 -0
  4. data/app/assets/images/icons-16/icon-arrow-right-hover.png +0 -0
  5. data/app/assets/images/icons-16/icon-arrow-right.png +0 -0
  6. data/app/assets/images/icons/icon-close.png +0 -0
  7. data/app/assets/images/icons/loader-16.png +0 -0
  8. data/app/assets/images/icons/loader-24.png +0 -0
  9. data/app/assets/images/menu/alpha-bg-60.png +0 -0
  10. data/app/assets/images/menu/alpha-bg-75.png +0 -0
  11. data/app/assets/images/menu/alpha-bg-95.png +0 -0
  12. data/app/assets/images/menu/alpha-bg-99.png +0 -0
  13. data/app/assets/javascripts/ajax_callbacks_core/common.js.erb +83 -0
  14. data/app/assets/javascripts/ajax_callbacks_core/forms.js.erb +27 -0
  15. data/app/assets/javascripts/ajax_callbacks_core/helpers.js.erb +216 -0
  16. data/app/assets/javascripts/ajax_ext_core/colorpicker.js +484 -0
  17. data/app/assets/javascripts/ajax_ext_core/date.js.erb +335 -0
  18. data/app/assets/javascripts/ajax_ext_core/faye.js +2 -0
  19. data/app/assets/javascripts/ajax_ext_core/jquery-json.js +178 -0
  20. data/app/assets/javascripts/ajax_ext_core/jquery-ui-timepicker-addon.js +1923 -0
  21. data/app/assets/javascripts/ajax_ext_core/jquery.hash.js +203 -0
  22. data/app/assets/javascripts/ajax_ext_core/jquery.jsonSuggest.js +25 -0
  23. data/app/assets/javascripts/ajax_ext_core/jquery.mtz.monthpicker.js +271 -0
  24. data/app/assets/javascripts/ajax_ext_core/preload_images.js +56 -0
  25. data/app/assets/javascripts/ajax_ui_core/autocomplete.js.erb +26 -0
  26. data/app/assets/javascripts/ajax_ui_core/datepicker.js.erb +144 -0
  27. data/app/assets/javascripts/ajax_ui_core/friends_ui.js.erb +23 -0
  28. data/app/assets/javascripts/ajax_ui_core/overlay.js.erb +85 -0
  29. data/app/assets/javascripts/ajax_ui_core/slide-down.js +163 -0
  30. data/app/assets/javascripts/friends_ajax_core.js.erb +11 -0
  31. data/app/assets/javascripts/init_ajax_core.js.erb +22 -0
  32. data/app/controllers/friends_ajax_controller.rb +6 -0
  33. data/app/helpers/friends_ajax_helper.rb +176 -0
  34. data/app/views/layouts/_ajax_overlay.html.erb +5 -0
  35. data/app/views/layouts/_info_overlay.html.erb +9 -0
  36. data/app/views/layouts/_invisible_overlay.html.erb +10 -0
  37. data/app/views/layouts/_layout_defaults.html.erb +39 -0
  38. data/app/views/layouts/_overlay_js.html.erb +30 -0
  39. data/app/views/layouts/ajax_overlay.html.erb +5 -0
  40. data/app/views/layouts/info_overlay.html.erb +9 -0
  41. data/config/routes.rb +10 -0
  42. data/lib/friends_ajax_core.rb +117 -0
  43. data/lib/friends_ajax_core/version.rb +4 -0
  44. metadata +143 -0
@@ -0,0 +1,11 @@
1
+ // Loading external Source files, plugins etc...
2
+ //= require_tree ./ajax_ext_core
3
+ //
4
+ // Loading callback functions
5
+ //= require_tree ./ajax_callbacks_core
6
+ //
7
+ // Inits für UI Elemente
8
+ //= require_tree ./ajax_ui_core
9
+ //
10
+ // Finally load all th stuff!
11
+ //= require init_ajax_core
@@ -0,0 +1,22 @@
1
+ jQuery(function($){
2
+
3
+ // Laden aller Ajax-Relevanten Tools
4
+ // Funktion in callbacks/common
5
+ initAllAjaxTools();
6
+
7
+ // Boxen mit EqualHeights laden
8
+ // Funktion in smartconcepts/common
9
+
10
+ // esc key -> hide overlay and ajax windows!
11
+ $(document).keyup(function(e) {
12
+ if (e.keyCode == 27) { hideLoading(); $(".ajax-overlay").hide(); }
13
+ });
14
+
15
+ window.onbeforeunload = function(){ showLoading(); }
16
+
17
+ // Klick auf Overlaycontaier blendet ihn aus
18
+ $("#overlay_container").click(function(){
19
+ $(this).empty();
20
+ });
21
+
22
+ });
@@ -0,0 +1,6 @@
1
+ # -*- encoding : utf-8 -*-
2
+ class FriendsAjaxController < ApplicationController
3
+
4
+
5
+
6
+ end
@@ -0,0 +1,176 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module FriendsAjaxHelper
3
+ #== Rails 2.3 to 3 Fallbacks
4
+ def remote_function(options)
5
+ javascript_tag("remote_function('#{url_for(options[:url])}', '#{options[:update]}', true)")
6
+ end
7
+
8
+ #{ options[:with] ? options[:with]+"&" : '' } + " +
9
+
10
+ def remote_form_for(obj, options, &proc)
11
+ options[:html] ||= {}
12
+ html = {:remote => true}.merge!(options[:html])
13
+
14
+ opts_all = {:url => options[:url], :html => options[:html]}
15
+
16
+ form_for(obj, opts_all, &proc)
17
+ end
18
+
19
+ #== New and shiny polished Rails 3.2 Ajax Helper Functions
20
+
21
+ # Default Ajax Link for Links
22
+ def default_ajax_link(options ={})
23
+ link_data = {:remote => true}
24
+
25
+
26
+ options[:class] ||= ""
27
+ options[:class] << " #{AJAX_DEFAULT_LINK} #{AJAX_NOT_LOADED}"
28
+
29
+ options[:class] << " #{AJAX_UPDATE_DIV_SELECTOR}#{options[:update]}" if options[:update]
30
+
31
+ options[:class] << " #{AJAX_TINY_LOAD_TRIGGER}" if options[:tiny_loader] == true
32
+
33
+ if options[:submit]
34
+ link_data.merge!(AJAX_SUBMIT_DATA_TRIGGER => options[:submit])
35
+ end
36
+
37
+ # Callbacks/JS
38
+ if options[:callback]
39
+ link_data.merge!(HTML_DATA_CALLBACK => options[:callback])
40
+ end
41
+
42
+ if options[:append] == true
43
+ link_data.merge!(HTML_DATA_APPEND => true)
44
+ end
45
+
46
+ # Confirm-Message setzen: Entweder default, oder eigene Nachricht
47
+ if options[:confirm]
48
+ if options[:confirm] = true
49
+ link_data.merge!(:confirm => HTML_CONFIRM_DEFAULT.to_s)
50
+ else
51
+ link_data.merge(:confirm => options[:confirm])
52
+ end
53
+ end
54
+
55
+
56
+ if options[:push_progress] == true
57
+ options[:load_message] = false
58
+ options[:class] << " #{AJAX_PUSH_PROGRESS_TRIGGER}"
59
+ end
60
+
61
+
62
+ # Load-Message setzen: Entweder default oder eigene Nachricht
63
+ if options[:load_message] && (options[:load_message] != false && !options[:load_message].blank?)
64
+ options[:class] << " #{AJAX_LOAD_MESSAGE_TRIGGER}"
65
+ if options[:load_message].is_a?(String)
66
+ link_data.merge!(HTML_DATA_LOADING.to_s => options[:load_message])
67
+ end
68
+ elsif options[:load_message] == false
69
+ options[:class] << " #{AJAX_HIDE_LOAD_MESSAGE_SELECTOR}"
70
+ end
71
+
72
+ link_data.merge!(:class => options[:class])
73
+ link_data.merge!(:id => options[:id])
74
+ link_data.merge!(:title => options[:title])
75
+ link_data.merge!(:style => options[:style])
76
+
77
+ return link_data
78
+ end
79
+
80
+ #
81
+ def select_onchange_data(options ={})
82
+ link_data = {}
83
+
84
+
85
+ options[:class] ||= ""
86
+
87
+ options[:class] << " #{FORM_SELECT_CHANGE_SELECTOR} #{AJAX_NOT_LOADED}"
88
+
89
+ options[:class] << " #{AJAX_UPDATE_DIV_SELECTOR}#{options[:update]}" if options[:update]
90
+
91
+ options[:class] << " #{AJAX_TINY_LOAD_TRIGGER}" if options[:tiny_loader] == true
92
+
93
+ if options[:submit]
94
+ link_data.merge!(AJAX_SUBMIT_DATA_TRIGGER => options[:submit])
95
+ end
96
+
97
+ options[:with] ||= :id
98
+ if options[:with]
99
+ options[:url].merge!(options[:with] => HTML_URL_VALUE_PLACEHOLDER)
100
+ end
101
+
102
+ if options[:url]
103
+ link_data.merge!(HTML_DATA_TARGET_URL.to_s => url_for(options[:url]))
104
+ end
105
+
106
+ # Confirm-Message setzen: Entweder default, oder eigene Nachricht
107
+ if options[:confirm]
108
+ if options[:confirm] = true
109
+ link_data.merge!(:confirm => HTML_CONFIRM_DEFAULT.to_s)
110
+ else
111
+ link_data.merge(:confirm => options[:confirm])
112
+ end
113
+ end
114
+
115
+ # Load-Message setzen: Entweder default oder eigene Nachricht
116
+ if options[:load_message] && (options[:load_message] != false && !options[:load_message].blank?)
117
+ options[:class] << " #{AJAX_LOAD_MESSAGE_TRIGGER}"
118
+ if options[:load_message].is_a?(String)
119
+ link_data.merge!(HTML_DATA_LOADING.to_s => options[:load_message])
120
+ end
121
+ elsif options[:load_message] == false
122
+ options[:class] << " #{AJAX_HIDE_LOAD_MESSAGE_SELECTOR}"
123
+ end
124
+
125
+ link_data.merge!(:class => options[:class])
126
+ link_data.merge!(:id => options[:id])
127
+ link_data.merge!(:disabled => options[:disabled])
128
+
129
+ return link_data
130
+ end
131
+
132
+
133
+
134
+ # Creates a box that slides down and up to show/hide the content.
135
+ # * Use ':open => true' to set the box open by default
136
+ # * Use ':default_class => "className"' to set the class used for the header
137
+ def slide_down_box(title, options = {:open => false}, &block)
138
+ options[:default_class] ||= "icon-arrow-right"
139
+ options[:type] ||= :div
140
+
141
+
142
+ box_session_id = Digest::SHA1.hexdigest("#{params[:action]}-#{title}")
143
+
144
+ open = options[:open] #|| (session[:slidedown_boxes_open].include?(box_session_id) rescue false)
145
+
146
+ concat raw("<div class='js-slide-down-box plain #{'open' if open} #{options[:box_class]} #{options[:class]}' data-session-id='#{box_session_id}'>
147
+ <#{options[:type]} class='#{options[:default_class]} js-slidedown-button'>
148
+ #{title}
149
+ </#{options[:type]}>
150
+ <div class='js-slidedown-content'>")
151
+ yield
152
+ concat raw("</div></div>")
153
+ end
154
+
155
+ def pop_out_box(title, options = {:open => false}, &block)
156
+ options[:default_class] ||= "icon-arrow-right"
157
+ options[:type] ||= :div
158
+
159
+
160
+ box_session_id = Digest::SHA1.hexdigest("#{params[:action]}-#{title}")
161
+
162
+ open = options[:open] || (session[:slidedown_boxes_open].include?(box_session_id) rescue false)
163
+
164
+ concat raw("<div class='js-pop-out-box plain #{'open' if open} #{options[:box_class]} #{options[:class]}' data-session-id='#{box_session_id}'>
165
+ <#{options[:type]} class='#{options[:default_class]} js-pop-out-button'>
166
+ #{title}
167
+ </#{options[:type]}>
168
+ <div class='js-pop-out-content box rounded'>")
169
+ yield
170
+ concat raw("</div></div>")
171
+ end
172
+
173
+ def init_slidedown
174
+ raw("<script type='text/javascript'>init_slidedown();</script>")
175
+ end
176
+ end
@@ -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="<%= INFO_OVERLAY_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,10 @@
1
+ <% id = "I#{Digest::SHA1.hexdigest(params.inspect)}" %>
2
+ <div class="<%= INFO_OVERLAY_CLASS %> rounded invisible" id="<%= id %>">
3
+ <%= image_tag "icons/icon-close.png", :class => "close-link", :onclick => "$('##{id}').slideUp(200);" %>
4
+ <div class="info-overlay-content">
5
+ <div class="bold overlay-title"><%= @page_title %></div>
6
+ <%= yield %>
7
+ </div>
8
+ </div>
9
+
10
+ <%= render :partial => '/layouts/overlay_js', :locals => {:mode => :info, :id => id} %>
@@ -0,0 +1,39 @@
1
+ <!-- SmartCalc Display -->
2
+ <div id="js_smart_calculator_display" style="display:none"><span id="result"></span> | <span class="icon-ok link">Fertig</span></div>
3
+
4
+ <!-- Overlay Container -->
5
+ <div id="<%= AJAX_OVERLAY_CONTAINER_NAME %>"></div>
6
+ <div id="<%= AJAX_OVERLAY_CONTAINER_NAME_2 %>"></div>
7
+ <div id="pushserver_overlay"></div>
8
+
9
+ <!-- Loading Overlay -->
10
+ <div id ="loadingOverlay" style="display:none">
11
+ <a name="very_top"></a>
12
+ <div class="img-container box rounded" onmousedown="hideLoading();">
13
+ <%= image_tag("content-elements/ajax-loader.gif", :alt => "Lade Daten") %><br />
14
+ Daten werden geladen<br />
15
+ <span class="metainfo small link">ausblenden</span>
16
+ </div>
17
+ </div>
18
+
19
+ <!-- Pushserver Progress -->
20
+ <div id="<%= PUSHSERVER_PROGRESS_CONTAINER_DIV %>" style="display:none;">
21
+
22
+ </div>
23
+ <div id="<%= PUSHSERVER_PROGRESS_MESSAGE_DIV %>" class="box rounded" style="display:none;">
24
+ <%= image_tag "icons/icon-close.png", :onclick => "hidePushProgress();", :class => "close-button" %>
25
+ <div class="push-content"></div>
26
+ </div>
27
+
28
+ <div id="overlay_container" style="position: absolute; left: 0; top: 0; z-index: 5000">&nbsp;</div>
29
+
30
+ <!-- flash[:notice] & flash[:error] anzeige -->
31
+ <div id="<%= FLASH_AREA_DIV %>" class="">
32
+ <% if !flash[:notice].blank? %>
33
+ <%= javascript_tag("flashNoticeDisplay('#{flash[:notice]}', 'ok')") %>
34
+ <% end %>
35
+ <% if !flash[:error].blank? %>
36
+ <%= javascript_tag("flashNoticeDisplay('#{flash[:error]}', 'error')") %>
37
+ <% end %>
38
+ </div>
39
+
@@ -0,0 +1,30 @@
1
+ <%= tinymce %>
2
+ <%= init_slidedown %>
3
+ <script type="text/javascript">
4
+ overlay = $('#'+'<%= id %>');
5
+
6
+ <% if @no_copy == true && Rails.env == "production" %>
7
+ disableCopy();
8
+ <% end %>
9
+
10
+ <% if (params[:ajax_fullscreen].to_s == "true" || @ajax_fullscreen == true) %>
11
+ setAjaxFullscreen('<%= id %>');
12
+ <% end %>
13
+
14
+ <% if mode == :info %>
15
+ initInfoOverlay('<%= id %>');
16
+ <% end %>
17
+
18
+ initAllAjaxTools();
19
+
20
+ initOverlayZindexSetter(overlay);
21
+ overlay.draggable({
22
+ stop: function(event, ui) {
23
+ $(this).css("top",ui.position.top).css("left",ui.position.left);
24
+ }
25
+ });
26
+
27
+ // WIzzard init
28
+
29
+ $(document).scrollTop(0)
30
+ </script>
@@ -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="<%= INFO_OVERLAY_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,10 @@
1
+ # -*- encoding : utf-8 -*-
2
+ Rails.application.routes.draw do
3
+
4
+ #=== AJAX Routing
5
+ # Ajax Routen immer in Klartext, da diese auch in JS manuell verwendet werden.
6
+ get "/ajax/json_flash_data", :controller => "ajax", :action => "json_flash_data"
7
+ get "/ajax/auto_complete", :controller => "ajax", :action => "auto_complete"
8
+ get "/ajax/save_slidedown_box/:id", :controller => "ajax", :action => "save_slidedown_box"
9
+
10
+ end
@@ -0,0 +1,117 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require "friends_ajax_core/version"
3
+ require "friends_ajax_core"
4
+
5
+
6
+ module FriendsAjaxCore
7
+
8
+ class FriendsAjaxEngine < Rails::Engine
9
+
10
+ initializer "friends_ajax_core.load_const" do
11
+
12
+ # -*- encoding : utf-8 -*-
13
+ #= AJAX elemtent id's and ccs selectors
14
+
15
+ #== Default div id's, global layout etc...
16
+ # id name of the main Ajax Overlay Container
17
+ # there are tow defalt containers to provide more flexibility
18
+ ::AJAX_OVERLAY_CONTAINER_NAME = "ajax-overlay-container"
19
+ ::AJAX_OVERLAY_CONTAINER_NAME_2 = "ajax-overlay-container-2"
20
+
21
+ ::AJAX_OVERLAY_CLASS = "ajax-overlay"
22
+ ::INFO_OVERLAY_CLASS = "info-overlay"
23
+
24
+ ::AJAX_OVERLAY_LAYOUT = "ajax_overlay"
25
+ ::INFO_OVERLAY_LAYOUT = "info_overlay"
26
+
27
+
28
+ # Prefix for setting :update div via css
29
+ ::AJAX_UPDATE_DIV_SELECTOR = "update-div-"
30
+
31
+ # Default ajax link class name
32
+ ::AJAX_DEFAULT_LINK = "ajax-default-link"
33
+ ::AJAX_NOT_LOADED = "ajax-not-loaded"
34
+
35
+ # Trigger for showing load message box
36
+ ::AJAX_LOAD_MESSAGE_TRIGGER = "load-message-true"
37
+ ::AJAX_HIDE_LOAD_MESSAGE_SELECTOR = "hide-load-message"
38
+ ::AJAX_PUSH_PROGRESS_TRIGGER = "push-progress-trigger"
39
+
40
+
41
+ # Just show loader icon
42
+ ::AJAX_TINY_LOAD_TRIGGER = "tiny-loader"
43
+
44
+ # div area for showing flash notice/errors
45
+ ::FLASH_AREA_DIV = "notify-area"
46
+
47
+ # Werden Daten aus Formular etc. versendet?
48
+ ::AJAX_SUBMIT_DATA_TRIGGER = "data-submit-data"
49
+
50
+ # Trigger für EqualHeightFunktionen
51
+ # block-Elemente gleich hoch machen
52
+ ::EQUAL_HEIGHT_SELECTOR = "equal-height-cols"
53
+ ::EQUAL_HEIGHT_GROUP_DATA = "data-equal-height-group"
54
+
55
+
56
+ #== Footer, Filetree Pushserver div ids
57
+ # All elements which are used in the footer area, for filetree and pushserver
58
+
59
+ #=== Footer search
60
+ ::FOOTER_SEARCH_FORM_ID = "footer-search-form"
61
+ ::FOOTER_SEARCH_QUERY_ID = "footer-search-query"
62
+ ::FOOTER_SEARCH_RESULTS_ID = "footer-search-results"
63
+
64
+ #=== Filetree
65
+ ::FILE_TREE_FOLDER_LINK_CLOSED = "file-tree-directory-closed"
66
+ ::FILE_TREE_FOLDER_LINK_OPEN = "file-tree-directory-open"
67
+ ::FILE_TREE_PREFIX = "file-content"
68
+
69
+
70
+ #== Data Types (HTML 5 data-attribute)
71
+ # Bestätigung per confirm
72
+ ::HTML_DATA_CONFIRM = "data-confirm"
73
+ ::HTML_CONFIRM_DEFAULT = "Sind Sie sicher?"
74
+
75
+ # Nachricht für loadMessage
76
+ ::HTML_DATA_LOADING = "data-loading"
77
+ ::HTML_LOAD_DEFAULT = "Daten werden geladen"
78
+ ::HTML_TINY_LOAD_DEFAULT = "wird geladen"
79
+
80
+ # Wird ein Callbackausgeführt (JS)
81
+ ::HTML_DATA_CALLBACK = "data-callback"
82
+
83
+ # Ziel-Div wird nicht überschrieben
84
+ ::HTML_DATA_APPEND = "data-append"
85
+
86
+ #== Forms - Triggers for select onchange etc
87
+
88
+ # Ziel URL als HTML5-Data
89
+ ::HTML_DATA_TARGET_URL = "data-target-url"
90
+
91
+ # url-Paramter für ausgewählten Wert (ehem. :with => 'value='+this.value)
92
+ # Url Value replacment string
93
+ ::HTML_URL_VALUE_PLACEHOLDER = ".-."
94
+
95
+ # Selectbox für Ajax Trigger aktivieren
96
+ ::FORM_SELECT_CHANGE_SELECTOR = "select-onchange"
97
+
98
+ # Datepicker aktuelles Datum
99
+ ::HTML_DATA_CURRENT_DATE = "data-current-date"
100
+ ::HTML_DATA_CURRENT_YEAR = "data-selected-year"
101
+
102
+ # Autocomplete - Magical Dropdown boxes
103
+ ::AUTOCOMPLETE_SELECTOR = "autocomplete-text-field"
104
+ ::AUTOCOMPLETE_DATA_VALUE = "data-autocomplete-values"
105
+ ::AUTOCOMPLETE_SOURCE_URL = "/ajax/auto_complete?source="
106
+
107
+ #=== Concept
108
+ # Selector für Concept Datepickers
109
+ ::DEFAULT_DATEPICKER_SELECTOR = "default-date-picker"
110
+ ::DEFAULT_MONTHPICKER_SELECTOR = "default-month-picker"
111
+ ::DEFAULT_DATETIMEPICKER_SELECTOR = "default-datetime-picker"
112
+ end
113
+
114
+ end
115
+
116
+
117
+ end