/[drupal]/contributions/modules/draggableviews/draggableviews.js
ViewVC logotype

Contents of /contributions/modules/draggableviews/draggableviews.js

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3 - (show annotations) (download) (as text)
Fri Sep 19 09:47:12 2008 UTC (14 months, 1 week ago) by sevi
Branch: MAIN
CVS Tags: DRUPAL-6--3-0, DRUPAL-6--3-1, HEAD
Branch point for: DRUPAL-6--3
Changes since 1.2: +112 -18 lines
File MIME type: text/javascript
Module rewritten
Rebuilding broken structures automatically
1 //check js availability
2 if (Drupal.jsEnabled) {
3 //start at onload-event
4 $(document).ready(draggableviews_load);
5 }
6
7 //load editfield-plugin
8 function draggableviews_load(){
9 $(".tabledrag-root").each( function(i) {
10 var nid = $(this).find('td > .hidden_nid').attr('value');
11 $(this).find('td:first').each( function(i) {
12 //$(this).append('<a class="draggableviews-expand" href="#" onclick="javascript:draggableviews_collapse('+nid+')">collapse</a>');
13 $(this).append('<div class="draggableviews-expand" href="#"></div>').children('.draggableviews-expand').bind('click', function(){draggableviews_collapse(nid);});
14 });
15
16 // apply collapsed/expanded state
17 if (Drupal.settings.draggableviews.states) {
18 if (Drupal.settings.draggableviews.states[nid]) {
19 // when list should be collapsed..
20 if (Drupal.settings.draggableviews.states[nid] == 1) {
21 // ..collapse list
22 draggableviews_collapse(nid);
23
24 // and set hidden field
25 draggableviews_set_state_field(nid, true);
26 }
27 }
28 }
29 });
30
31 // collapse all by default if set
32 if( Drupal.settings.draggableviews.expand_default &&
33 Drupal.settings.draggableviews.expand_default == 1 )
34 {
35 draggableviews_collapse_all();
36 }
37 }
38
39 function draggableviews_expand(parent_id){
40 // show elements
41 draggableviews_show(parent_id);
42
43 // swap link to collapse link
44 $("tr:has(td > .hidden_nid[value="+parent_id+"])").each( function (i){
45 $(this).find('.draggableviews-collapse').each( function (i){
46 $(this).unbind('click');
47 $(this).attr('class', 'draggableviews-expand');
48 $(this).bind('click', function(){ draggableviews_collapse(parent_id); });
49 // set state as value of a hidden field
50 draggableviews_set_state_field(parent_id, false);
51 });
52 });
53 }
54
55 // show recursively
56 function draggableviews_show(parent_id) {
57 $("tr:has(td > ." + Drupal.settings.draggableviews.parent + "[value="+parent_id+"])").each( function (i){
58 $(this).show();
59 var nid = $(this).find('td > .hidden_nid').attr('value');
60 if (nid) {
61 draggableviews_show(nid);
62 }
63 });
64 }
65
66 function draggableviews_collapse(parent_id){
67 // hide elements
68 draggableviews_hide(parent_id);
69
70 // swap link to expand link
71 $("tr:has(td > .hidden_nid[value=" + parent_id + "])").each( function (i){
72 $(this).find('.draggableviews-expand').each( function (i){
73 //$(this).unbind('onclick');
74 $(this).unbind('click');
75 $(this).attr('class', 'draggableviews-collapse');
76 $(this).bind('click', function(){ draggableviews_expand(parent_id); });
77
78 // set state as value of a hidden field
79 draggableviews_set_state_field(parent_id, true);
80 });
81 });
82 }
83
84 // hide recursively
85 function draggableviews_hide(parent_id) {
86 $("tr:has(td > ." + Drupal.settings.draggableviews.parent + "[value="+parent_id+"])").each( function (i){
87 $(this).hide();
88 var nid = $(this).find('td > .hidden_nid').attr('value');
89 if (nid) {
90 draggableviews_hide(nid);
91 }
92 });
93 }
94
95 function draggableviews_collapse_all() {
96 // hide elements
97 $("tr:has(td > ." + Drupal.settings.draggableviews.parent + "[value<>0])").each( function (i) {
98 $(this).hide();
99 });
100
101 // swap links to expand links
102 $("tr:has(td > .hidden_nid)").each( function (i){
103 var parent_id = $(this).find('td > .hidden_nid').attr('value');
104
105 $(this).find('.draggableviews-expand').each( function (i){
106 // set new action and class
107 $(this).unbind('click');
108 $(this).attr('class', 'draggableviews-collapse');
109 $(this).bind('click', function(){ draggableviews_expand(parent_id); });
110
111 // set collapsed/expanded state
112 draggableviews_set_state_field(parent_id, true);
113 });
114 });
115
116 // $(this).bind('click', function(){ draggableviews_expand(1); });
117 //});
118 }
119
120 // save state of expanded/collapsed fields in a hidden field
121 function draggableviews_set_state_field(parent_id, state) {
122 //build field name
123 var field_name = 'draggableviews_collapsed_' + parent_id;
124
125 $("input[name='hidden_nid'][value='" + parent_id + "']")
126 .parent().each( function(i){
127 var replaced = false;
128
129 // "check" if field already exists (..by just selecting it)
130 $(this).find('input[name="' + field_name + '"]').each( function(i){
131 $(this).attr('value', state?'1':'0');
132 replaced = true;
133 });
134 // if no field existed yet -> create it
135 if (replaced == false) {
136 $(this).append('<input type="hidden" name="' + field_name + '" value="' + (state?'1':'0') + '" />');
137 }
138 });
139 }

  ViewVC Help
Powered by ViewVC 1.1.2