danielebarchiesi@0
|
1 (function($) {
|
danielebarchiesi@0
|
2
|
danielebarchiesi@0
|
3 /**
|
danielebarchiesi@0
|
4 * Attach this editor to a target element.
|
danielebarchiesi@0
|
5 *
|
danielebarchiesi@0
|
6 * @param context
|
danielebarchiesi@0
|
7 * A DOM element, supplied by Drupal.attachBehaviors().
|
danielebarchiesi@0
|
8 * @param params
|
danielebarchiesi@0
|
9 * An object containing input format parameters. Default parameters are:
|
danielebarchiesi@0
|
10 * - editor: The internal editor name.
|
danielebarchiesi@0
|
11 * - theme: The name/key of the editor theme/profile to use.
|
danielebarchiesi@0
|
12 * - field: The CSS id of the target element.
|
danielebarchiesi@0
|
13 * @param settings
|
danielebarchiesi@0
|
14 * An object containing editor settings for all enabled editor themes.
|
danielebarchiesi@0
|
15 */
|
danielebarchiesi@0
|
16 Drupal.wysiwyg.editor.attach.none = function(context, params, settings) {
|
danielebarchiesi@0
|
17 if (params.resizable) {
|
danielebarchiesi@0
|
18 var $wrapper = $('#' + params.field).parents('.form-textarea-wrapper:first');
|
danielebarchiesi@0
|
19 $wrapper.addClass('resizable');
|
danielebarchiesi@0
|
20 if (Drupal.behaviors.textarea) {
|
danielebarchiesi@0
|
21 Drupal.behaviors.textarea.attach();
|
danielebarchiesi@0
|
22 }
|
danielebarchiesi@0
|
23 }
|
danielebarchiesi@0
|
24 };
|
danielebarchiesi@0
|
25
|
danielebarchiesi@0
|
26 /**
|
danielebarchiesi@0
|
27 * Detach a single or all editors.
|
danielebarchiesi@0
|
28 *
|
danielebarchiesi@0
|
29 * The editor syncs its contents back to the original field before its instance
|
danielebarchiesi@0
|
30 * is removed.
|
danielebarchiesi@0
|
31 *
|
danielebarchiesi@0
|
32 * @param context
|
danielebarchiesi@0
|
33 * A DOM element, supplied by Drupal.attachBehaviors().
|
danielebarchiesi@0
|
34 * @param params
|
danielebarchiesi@0
|
35 * (optional) An object containing input format parameters. If defined,
|
danielebarchiesi@0
|
36 * only the editor instance in params.field should be detached. Otherwise,
|
danielebarchiesi@0
|
37 * all editors should be detached and saved, so they can be submitted in
|
danielebarchiesi@0
|
38 * AJAX/AHAH applications.
|
danielebarchiesi@0
|
39 * @param trigger
|
danielebarchiesi@0
|
40 * A string describing why the editor is being detached.
|
danielebarchiesi@0
|
41 * Possible triggers are:
|
danielebarchiesi@0
|
42 * - unload: (default) Another or no editor is about to take its place.
|
danielebarchiesi@0
|
43 * - move: Currently expected to produce the same result as unload.
|
danielebarchiesi@0
|
44 * - serialize: The form is about to be serialized before an AJAX request or
|
danielebarchiesi@0
|
45 * a normal form submission. If possible, perform a quick detach and leave
|
danielebarchiesi@0
|
46 * the editor's GUI elements in place to avoid flashes or scrolling issues.
|
danielebarchiesi@0
|
47 * @see Drupal.detachBehaviors
|
danielebarchiesi@0
|
48 */
|
danielebarchiesi@0
|
49 Drupal.wysiwyg.editor.detach.none = function (context, params, trigger) {
|
danielebarchiesi@0
|
50 if (typeof params != 'undefined' && (trigger != 'serialize')) {
|
danielebarchiesi@0
|
51 var $wrapper = $('#' + params.field).parents('.form-textarea-wrapper:first');
|
danielebarchiesi@0
|
52 $wrapper.removeOnce('textarea').removeClass('.resizable-textarea')
|
danielebarchiesi@0
|
53 .find('.grippie').remove();
|
danielebarchiesi@0
|
54 }
|
danielebarchiesi@0
|
55 };
|
danielebarchiesi@0
|
56
|
danielebarchiesi@0
|
57 /**
|
danielebarchiesi@0
|
58 * Instance methods for plain text areas.
|
danielebarchiesi@0
|
59 */
|
danielebarchiesi@0
|
60 Drupal.wysiwyg.editor.instance.none = {
|
danielebarchiesi@0
|
61 insert: function(content) {
|
danielebarchiesi@0
|
62 var editor = document.getElementById(this.field);
|
danielebarchiesi@0
|
63
|
danielebarchiesi@0
|
64 // IE support.
|
danielebarchiesi@0
|
65 if (document.selection) {
|
danielebarchiesi@0
|
66 editor.focus();
|
danielebarchiesi@0
|
67 var sel = document.selection.createRange();
|
danielebarchiesi@0
|
68 sel.text = content;
|
danielebarchiesi@0
|
69 }
|
danielebarchiesi@0
|
70 // Mozilla/Firefox/Netscape 7+ support.
|
danielebarchiesi@0
|
71 else if (editor.selectionStart || editor.selectionStart == '0') {
|
danielebarchiesi@0
|
72 var startPos = editor.selectionStart;
|
danielebarchiesi@0
|
73 var endPos = editor.selectionEnd;
|
danielebarchiesi@0
|
74 editor.value = editor.value.substring(0, startPos) + content + editor.value.substring(endPos, editor.value.length);
|
danielebarchiesi@0
|
75 }
|
danielebarchiesi@0
|
76 // Fallback, just add to the end of the content.
|
danielebarchiesi@0
|
77 else {
|
danielebarchiesi@0
|
78 editor.value += content;
|
danielebarchiesi@0
|
79 }
|
danielebarchiesi@0
|
80 },
|
danielebarchiesi@0
|
81
|
danielebarchiesi@0
|
82 setContent: function (content) {
|
danielebarchiesi@0
|
83 $('#' + this.field).val(content);
|
danielebarchiesi@0
|
84 },
|
danielebarchiesi@0
|
85
|
danielebarchiesi@0
|
86 getContent: function () {
|
danielebarchiesi@0
|
87 return $('#' + this.field).val();
|
danielebarchiesi@0
|
88 }
|
danielebarchiesi@0
|
89 };
|
danielebarchiesi@0
|
90
|
danielebarchiesi@0
|
91 })(jQuery);
|