comparison js/dnd-library.js @ 38:9e27e0aca323

Allow the library to specify a possible legend for the element. This legend will be placed *outside* the atom representation, which means that it's freely editable in the rich text and won't be taken over by Scald.
author Franck Deroche <franck@defr.org>
date Fri, 18 Sep 2009 15:17:05 +0200
parents bb510db429c9
children 3a8422ac941c
comparison
equal deleted inserted replaced
37:bb510db429c9 38:9e27e0aca323
168 var target = this, $target = $(target); 168 var target = this, $target = $(target);
169 169
170 // Update element count 170 // Update element count
171 Drupal.behaviors.dndLibrary.countElements.call(target, representation_id); 171 Drupal.behaviors.dndLibrary.countElements.call(target, representation_id);
172 172
173 var snippet = '<p class="dnd-drop-wrapper">' + Drupal.settings.dndEditorRepresentations[representation_id].body + '</p>'; 173 var rep = Drupal.settings.dndEditorRepresentations[representation_id];
174 var snippet = '<div class="dnd-drop-wrapper">' + rep.body + '</div>';
175 if (rep.meta.legend) {
176 snippet += rep.meta.legend;
177 }
174 $target.replaceSelection(snippet, true); 178 $target.replaceSelection(snippet, true);
175 } 179 }
176 }, settings); 180 }, settings);
177 $(settings.drop_selector).dnd(settings); 181 $(settings.drop_selector).dnd(settings);
178 } 182 }
222 }); 226 });
223 }, 227 },
224 processIframeDrop: function(drop, id_selector) { 228 processIframeDrop: function(drop, id_selector) {
225 var representation_id = id_selector.call(this, drop); 229 var representation_id = id_selector.call(this, drop);
226 var representation = Drupal.settings.dndEditorRepresentations[representation_id].body; 230 var representation = Drupal.settings.dndEditorRepresentations[representation_id].body;
231 var legend = Drupal.settings.dndEditorRepresentations[representation_id].meta.legend;
227 var target = this, $target = $(target), $drop = $(drop), block; 232 var target = this, $target = $(target), $drop = $(drop), block;
228 233
229 // Update element count 234 // Update element count
230 Drupal.behaviors.dndLibrary.countElements(target, representation_id); 235 Drupal.behaviors.dndLibrary.countElements(target, representation_id);
231 236
240 245
241 // Remove dropped item 246 // Remove dropped item
242 $drop.remove(); 247 $drop.remove();
243 248
244 // Create an element to insert 249 // Create an element to insert
245 var insert = dom.create('p', {'class' : 'dnd-drop-wrapper', 'id' : 'dnd-inserted'}, representation); 250 var insert = dom.create('div', {'class' : 'dnd-drop-wrapper', 'id' : 'dnd-inserted'}, representation);
246 251
247 // The no-parent case 252 // The no-parent case
248 if ($(block).is('body')) { 253 if ($(block).is('body')) {
249 s.setNode(insert); 254 s.setNode(insert);
250 } 255 }
252 var old_id = block.id; 257 var old_id = block.id;
253 block.id = 'target-block'; 258 block.id = 'target-block';
254 $block = $('#target-block', $target.contents()); 259 $block = $('#target-block', $target.contents());
255 260
256 // @TODO is finding the parent broken in safari?? 261 // @TODO is finding the parent broken in safari??
257 $block.after('<p class="dnd-drop-wrapper" id="dnd-inserted">' + representation + '</p>'); 262 var snip = '<div class="dnd-drop-wrapper" id="dnd-inserted">' + representation + '</div>';
263 if (legend) {
264 snip += legend;
265 }
266 $block.after(snip);
258 267
259 // The active target block should be empty 268 // The active target block should be empty
260 if ($('#target-block:dnd_empty', $target.contents()).length > 0) { 269 if ($('#target-block:dnd_empty', $target.contents()).length > 0) {
261 $('#target-block', $target.contents()).remove(); 270 $('#target-block', $target.contents()).remove();
262 } else if (old_id) { 271 } else if (old_id) {