Mercurial > defr > drupal > core
comparison modules/profile/profile.js @ 1:c1f4ac30525a 6.0
Drupal 6.0
author | Franck Deroche <webmaster@defr.org> |
---|---|
date | Tue, 23 Dec 2008 14:28:28 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:5a113a1c4740 | 1:c1f4ac30525a |
---|---|
1 // $Id: profile.js,v 1.2 2007/12/08 14:06:22 goba Exp $ | |
2 | |
3 /** | |
4 * Add functionality to the profile drag and drop table. | |
5 * | |
6 * This behavior is dependent on the tableDrag behavior, since it uses the | |
7 * objects initialized in that behavior to update the row. It shows and hides | |
8 * a warning message when removing the last field from a profile category. | |
9 */ | |
10 Drupal.behaviors.profileDrag = function(context) { | |
11 var table = $('#profile-fields'); | |
12 var tableDrag = Drupal.tableDrag['profile-fields']; // Get the profile tableDrag object. | |
13 | |
14 // Add a handler for when a row is swapped, update empty categories. | |
15 tableDrag.row.prototype.onSwap = function(swappedRow) { | |
16 var rowObject = this; | |
17 $('tr.category-message', table).each(function() { | |
18 // If the dragged row is in this category, but above the message row, swap it down one space. | |
19 if ($(this).prev('tr').get(0) == rowObject.element) { | |
20 // Prevent a recursion problem when using the keyboard to move rows up. | |
21 if ((rowObject.method != 'keyboard' || rowObject.direction == 'down')) { | |
22 rowObject.swap('after', this); | |
23 } | |
24 } | |
25 // This category has become empty | |
26 if ($(this).next('tr').is(':not(.draggable)') || $(this).next('tr').size() == 0) { | |
27 $(this).removeClass('category-populated').addClass('category-empty'); | |
28 } | |
29 // This category has become populated. | |
30 else if ($(this).is('.category-empty')) { | |
31 $(this).removeClass('category-empty').addClass('category-populated'); | |
32 } | |
33 }); | |
34 }; | |
35 | |
36 // Add a handler so when a row is dropped, update fields dropped into new categories. | |
37 tableDrag.onDrop = function() { | |
38 dragObject = this; | |
39 if ($(dragObject.rowObject.element).prev('tr').is('.category-message')) { | |
40 var categoryRow = $(dragObject.rowObject.element).prev('tr').get(0); | |
41 var categoryNum = categoryRow.className.replace(/([^ ]+[ ]+)*category-([^ ]+)-message([ ]+[^ ]+)*/, '$2'); | |
42 var categoryField = $('select.profile-category', dragObject.rowObject.element); | |
43 var weightField = $('select.profile-weight', dragObject.rowObject.element); | |
44 var oldcategoryNum = weightField[0].className.replace(/([^ ]+[ ]+)*profile-weight-([^ ]+)([ ]+[^ ]+)*/, '$2'); | |
45 | |
46 if (!categoryField.is('.profile-category-'+ categoryNum)) { | |
47 categoryField.removeClass('profile-category-' + oldcategoryNum).addClass('profile-category-' + categoryNum); | |
48 weightField.removeClass('profile-weight-' + oldcategoryNum).addClass('profile-weight-' + categoryNum); | |
49 | |
50 categoryField.val(categoryField[0].options[categoryNum].value); | |
51 } | |
52 } | |
53 }; | |
54 }; |