comparison js/dnd-library.js @ 2:5a44c430b7ac

Added dnd_test module, tons and tons of fixes and changes.
author David Eads <eads@chicagotech.org>
date Tue, 17 Feb 2009 15:34:56 -0600
parents cee053085755
children c2eb995212bf
comparison
equal deleted inserted replaced
1:cee053085755 2:5a44c430b7ac
1 Drupal.behaviors.dndLibrary = function(context) {
2 var libraries = Drupal.settings.dndEnabledLibraries;
3
4 // Loop over libraries keyed by the textarea they are associated with
5 for (var textarea_id in libraries) {
6
7 var library = $('#' + textarea_id + '-dnd-library');
8
9 // Ajax pager: This seems like it is bad to be here
10 $('.pager a', library).click(function(e, data) {
11 $.getJSON(this.href, function(data) {
12 $('.library', library).html('');
13 for (item in data.library) {
14 $('.library', library).append(data.library[item].library);
15 Drupal.settings.dndEditorRepresentations[item] = data.library[item].editor;
16 Drupal.behaviors.dndLibrary(context); // Durn event reattachment
17 }
18 });
19 return false;
20 });
21
22 // Bind Drag and Drop plugin invocation to wywsiwygAttach event
23 $('#' + textarea_id).bind('wysiwygAttach', function(e, data) {
24 var settings = {
25 renderRepresentation: function(target, drop, representation_id) {
26 console.log(representation_id);
27 return Drupal.settings.dndEditorRepresentations[representation_id];
28 }
29 }
30 settings = $.extend(settings, libraries[textarea_id]);
31
32 // Get editor attachment function
33 var editor_fn = 'attach_' + data.editor;
34 if ($.isFunction(window.Drupal.behaviors.dndLibrary[editor_fn])) {
35 window.Drupal.behaviors.dndLibrary[editor_fn](data, settings);
36 }
37 });
38
39 // @TODO track and clear intervals to save memory at the cost of
40 // more processing?
41 $('#' + textarea_id).bind('wysiwygDetach', function(e, data) {
42 console.log('detach');
43 });
44 }
45 }
46
47 Drupal.behaviors.dndLibrary.attach_tinymce = function(data, settings) {
48 var tiny = tinyMCE.getInstanceById(data.field);
49 $('#'+ data.field +'-wrapper iframe').load(function() {
50 settings = $.extend({
51 targets: $('#'+ data.field +'-wrapper iframe'),
52 insertAfter: '<p><span id="__caret">_</span></p>',
53 postprocessDrop: function() {
54 // Get our special span, select it, delete it, and hope the caret
55 // resets correctly.
56 tiny.selection.select(tiny.dom.get('__caret'));
57 tiny.execCommand('Delete', false, null);
58 tiny.dom.remove('__caret');
59 }
60 }, settings);
61
62 $(settings.drop_selector).dnd(settings);
63 });
64 }