friends_ajax_core 0.0.51

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 (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