Mercurial > defr > drupal > scald > dnd
comparison js/dnd-library.js @ 25:e71df38143d1
Added element counting, but there is a bug in textarea click counting -- it only works properly once a count has already been started via another mechanism.
author | David Eads <eads@chicagotech.org> |
---|---|
date | Wed, 11 Mar 2009 14:07:50 -0500 |
parents | 4f58fa0a9a6d |
children | 9a92410be362 |
comparison
equal
deleted
inserted
replaced
24:4f58fa0a9a6d | 25:e71df38143d1 |
---|---|
151 | 151 |
152 // Basic textareas | 152 // Basic textareas |
153 Drupal.behaviors.dndLibrary.attach_none = function(data, settings) { | 153 Drupal.behaviors.dndLibrary.attach_none = function(data, settings) { |
154 settings = $.extend({ | 154 settings = $.extend({ |
155 targets: $('#'+ data.field), | 155 targets: $('#'+ data.field), |
156 processTextAreaClick: function(target, clicked, representation_id, e, data) { | 156 processTextAreaClick: function(clicked, representation_id, e, data) { |
157 var target = this, $target = $(target); | |
158 | |
159 // Update element count | |
160 Drupal.behaviors.dndLibrary.countElements.call(target, representation_id); | |
161 | |
157 var snippet = '<p class="dnd-dropped-wrapper">' + Drupal.settings.dndEditorRepresentations[representation_id].body + '</p>'; | 162 var snippet = '<p class="dnd-dropped-wrapper">' + Drupal.settings.dndEditorRepresentations[representation_id].body + '</p>'; |
158 $(target).replaceSelection(snippet, true); | 163 $target.replaceSelection(snippet, true); |
159 } | 164 } |
160 }, settings); | 165 }, settings); |
161 $(settings.drop_selector).dnd(settings); | 166 $(settings.drop_selector).dnd(settings); |
162 } | 167 } |
163 | 168 |
197 processIframeDrop: function(drop, id_selector) { | 202 processIframeDrop: function(drop, id_selector) { |
198 var representation_id = id_selector.call(this, drop); | 203 var representation_id = id_selector.call(this, drop); |
199 var representation = Drupal.settings.dndEditorRepresentations[representation_id].body; | 204 var representation = Drupal.settings.dndEditorRepresentations[representation_id].body; |
200 var target = this, $target = $(target), $drop = $(drop), block; | 205 var target = this, $target = $(target), $drop = $(drop), block; |
201 | 206 |
202 // Keep a counter | 207 // Update element count |
203 var counter = $target.data('representation_counter'); | 208 Drupal.behaviors.dndLibrary.countElements.call(target, representation_id); |
204 if (!counter) { | |
205 counter = {} | |
206 counter[representation_id] = 1; | |
207 } else if (counter && !counter[representation_id]) { | |
208 counter[representation_id] = 1; | |
209 } else { | |
210 counter[representation_id] = counter[representation_id] + 1; | |
211 } | |
212 $target.data('representation_counter', counter); | |
213 | 209 |
214 // Search through block level parents | 210 // Search through block level parents |
215 $drop.parents().each(function() { | 211 $drop.parents().each(function() { |
216 var $this = $(this); | 212 var $this = $(this); |
217 if ($this.css('display') == 'block') { | 213 if ($this.css('display') == 'block') { |
289 } | 285 } |
290 }, settings); | 286 }, settings); |
291 | 287 |
292 $(settings.drop_selector).dnd(settings); | 288 $(settings.drop_selector).dnd(settings); |
293 } | 289 } |
290 | |
291 | |
292 // Keep a counter of times a representation ID has been used | |
293 Drupal.behaviors.dndLibrary.countElements = function(representation_id) { | |
294 // We need to track element usage betwen all editors, so we look for the | |
295 // parent form item | |
296 $target = $(this).parents('.form-item'); | |
297 var counter = $target.data('representation_counter'); | |
298 if (!counter) { | |
299 counter = {} | |
300 counter[representation_id] = 1; | |
301 } else if (counter && !counter[representation_id]) { | |
302 counter[representation_id] = 1; | |
303 } else { | |
304 counter[representation_id] = counter[representation_id] + 1; | |
305 } | |
306 $target.data('representation_counter', counter); | |
307 } |