source: products/quintagroup.referencedatagridfield/trunk/quintagroup/referencedatagridfield/skins/referencedatagridfield/referencebrowser.js @ 2279

Last change on this file since 2279 was 2279, checked in by mylan, 14 years ago

Update templates, javascript for update link, title, uid data for added reference

File size: 4.8 KB
Line 
1// function to open the popup window
2function getOrderIndex(currnode) {
3    if (typeof(dataGridFieldFunctions) == "object") {
4        var rows = dataGridFieldFunctions.getWidgetRows(currnode);
5        var row = dataGridFieldFunctions.getParentElementById(currnode, "datagridwidget-row");     
6        if(row == null) {
7            alert("Couldn't find DataGridWidget row");
8            return;
9        }
10
11        var idx = null
12
13        // We can't use nextSibling because of blank text nodes in some browsers
14        // Need to find the index of the row
15        for(var t = 0; t < rows.length; t++) {
16            if(rows[t] == row) {
17                idx = t;
18                break;
19            }
20        }
21
22        // Abort if the current row wasn't found
23        if(idx == null)
24            return;
25        return idx;
26    }
27    return;
28}
29
30function getOrderedElement(widget_id, order_idx) {
31    // First get first element for the current field
32    var element=document.getElementById(widget_id);
33
34    // If it is about DataGridField use it to chose correct element
35    if (typeof(dataGridFieldFunctions) == "object" && order_idx >= 0) {
36        var rows = dataGridFieldFunctions.getWidgetRows(element);
37        if (rows.length >= order_idx) {
38            var row = rows[order_idx]
39            var inputs = row.getElementsByTagName("input")
40            for (var i=0;i<=inputs.length;i++) {
41                if (inputs[i].id == widget_id) {
42                    element = inputs[i];
43                    break;
44                }
45            }
46        }
47    }
48    return element;
49}
50
51
52function referencebrowser_openBrowser(path, fieldName, at_url, fieldRealName, fieldTitleName, fieldLinkName, currnode) {
53    var url = path + '/referencebrowser_popup?fieldName=' + fieldName + '&fieldRealName=' + fieldRealName +'&at_url=' + at_url;
54
55    var order_idx = getOrderIndex(currnode);
56    url += (order_idx)? '&order_idx=' + order_idx: "";
57    url += (typeof(fieldTitleName) != 'undefined')? '&fieldTitleName=' + fieldTitleName: "";
58    url += (typeof(fieldLinkName) != 'undefined')? '&fieldLinkName=' + fieldLinkName: "";
59
60    atrefpopup = window.open(url, 'referencebrowser_popup','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=500,height=550');
61}
62
63// function for Array detecting
64function typeOf(value) {
65    var s = typeof value;
66    if (s === 'object') {
67        if (value) {
68            if (value instanceof Array) {
69                s = 'array';
70            }
71        } else {
72            s = 'null';
73        }
74    }
75    return s;
76}
77
78// function to return a reference from the popup window back into the widget
79function referencebrowser_setReference(widget_id, uid, label, multi, order_idx, widget_title_id, link_title, widget_link_id, link_path)
80{
81    if (order_idx >= 0) {
82        // process ReferenceDataGridField
83        element=getOrderedElement(widget_id, order_idx);
84        element.value=uid;
85        element=getOrderedElement(widget_title_id, order_idx);
86        element.value=link_title;
87        element=getOrderedElement(widget_link_id, order_idx);
88        element.value=link_path;
89    } else if (multi==0) {
90        // differentiate between the single and mulitselect widget
91        // since the single widget has an extra label field.
92        element=document.getElementById(widget_id);
93        label_element=document.getElementById(widget_id + '_label');
94        element.value=uid;
95        label_element.value=label;
96    } else {
97         // check if the item isn't already in the list
98         var current_values = cssQuery('#' + widget_id + ' input');
99         for (var i=0; i < current_values.length; i++) {
100            if (current_values[i].value == uid) {
101              return false;
102            }
103          }         
104          // now add the new item
105          list=document.getElementById(widget_id);
106          li = document.createElement('li');
107          label_element = document.createElement('label');
108          input = document.createElement('input');
109          input.type = 'checkbox';
110          input.value = uid;
111          input.checked = true;
112          input.name = widget_id + ':list';
113          label_element.appendChild(input);
114          label_element.appendChild(document.createTextNode(label));
115          li.appendChild(label_element);
116          list.appendChild(li);
117          // fix on IE7 - check *after* adding to DOM
118          input.checked = true;
119    }
120}
121
122// function to clear the reference field or remove items
123// from the multivalued reference list.
124function referencebrowser_removeReference(widget_id, multi)
125{
126    if (multi) {
127        list=document.getElementById(widget_id)
128        for (var x=list.length-1; x >= 0; x--) {
129          if (list[x].selected) {
130            list[x]=null;
131          }
132        }
133        for (var x=0; x < list.length; x++) {
134            list[x].selected='selected';
135          }       
136    } else {
137        element=document.getElementById(widget_id);
138        label_element=document.getElementById(widget_id + '_label');
139        label_element.value = "";
140        element.value="";
141    }
142}
143
144
Note: See TracBrowser for help on using the repository browser.