9 |
9 |
10 function ajaxBoxValidateSelectorInput(boxid, eid, separator, fname, msg) { |
10 function ajaxBoxValidateSelectorInput(boxid, eid, separator, fname, msg) { |
11 var holderid = cw.utils.domid(boxid) + eid + 'Holder'; |
11 var holderid = cw.utils.domid(boxid) + eid + 'Holder'; |
12 var value = $('#' + holderid + 'Input').val(); |
12 var value = $('#' + holderid + 'Input').val(); |
13 if (separator) { |
13 if (separator) { |
14 value = $.map(value.split(separator), jQuery.trim); |
14 value = $.map(value.split(separator), jQuery.trim); |
15 } |
15 } |
16 var d = loadRemote('json', ajaxFuncArgs(fname, null, eid, value)); |
16 var d = loadRemote('json', ajaxFuncArgs(fname, null, eid, value)); |
17 d.addCallback(function() { |
17 d.addCallback(function() { |
18 $('#' + holderid).empty(); |
18 $('#' + holderid).empty(); |
19 var formparams = ajaxFuncArgs('render', null, 'boxes', boxid, eid); |
19 var formparams = ajaxFuncArgs('render', null, 'boxes', boxid, eid); |
20 $('#' + cw.utils.domid(boxid) + eid).loadxhtml('json', formparams); |
20 $('#' + cw.utils.domid(boxid) + eid).loadxhtml('json', formparams); |
21 if (msg) { |
21 if (msg) { |
22 document.location.hash = '#header'; |
22 document.location.hash = '#header'; |
23 updateMessage(msg); |
23 updateMessage(msg); |
24 } |
24 } |
25 }); |
25 }); |
26 } |
26 } |
27 |
27 |
28 function ajaxBoxRemoveLinkedEntity(boxid, eid, relatedeid, delfname, msg) { |
28 function ajaxBoxRemoveLinkedEntity(boxid, eid, relatedeid, delfname, msg) { |
29 var d = loadRemote('json', ajaxFuncArgs(delfname, null, eid, relatedeid)); |
29 var d = loadRemote('json', ajaxFuncArgs(delfname, null, eid, relatedeid)); |
30 d.addCallback(function() { |
30 d.addCallback(function() { |
31 var formparams = ajaxFuncArgs('render', null, 'boxes', boxid, eid); |
31 var formparams = ajaxFuncArgs('render', null, 'boxes', boxid, eid); |
32 $('#' + cw.utils.domid(boxid) + eid).loadxhtml('json', formparams); |
32 $('#' + cw.utils.domid(boxid) + eid).loadxhtml('json', formparams); |
33 if (msg) { |
33 if (msg) { |
34 document.location.hash = '#header'; |
34 document.location.hash = '#header'; |
35 updateMessage(msg); |
35 updateMessage(msg); |
36 } |
36 } |
37 }); |
37 }); |
38 } |
38 } |
39 |
39 |
40 function ajaxBoxShowSelector(boxid, eid, |
40 function ajaxBoxShowSelector(boxid, eid, |
41 unrelfname, |
41 unrelfname, |
42 addfname, msg, |
42 addfname, msg, |
43 oklabel, cancellabel, |
43 oklabel, cancellabel, |
44 separator) { |
44 separator) { |
45 var holderid = cw.utils.domid(boxid) + eid + 'Holder'; |
45 var holderid = cw.utils.domid(boxid) + eid + 'Holder'; |
46 var holder = $('#' + holderid); |
46 var holder = $('#' + holderid); |
47 if (holder.children().length) { |
47 if (holder.children().length) { |
48 holder.empty(); |
48 holder.empty(); |
49 } |
49 } |
50 else { |
50 else { |
51 var inputid = holderid + 'Input'; |
51 var inputid = holderid + 'Input'; |
52 var deferred = loadRemote('json', ajaxFuncArgs(unrelfname, null, eid)); |
52 var deferred = loadRemote('json', ajaxFuncArgs(unrelfname, null, eid)); |
53 deferred.addCallback(function (unrelated) { |
53 deferred.addCallback(function (unrelated) { |
54 var input = INPUT({'type': 'text', 'id': inputid, 'size': 20}); |
54 var input = INPUT({'type': 'text', 'id': inputid, 'size': 20}); |
55 holder.append(input).show(); |
55 holder.append(input).show(); |
56 $input = $(input); |
56 $input = $(input); |
57 $input.keypress(function (event) { |
57 $input.keypress(function (event) { |
58 if (event.keyCode == KEYS.KEY_ENTER) { |
58 if (event.keyCode == KEYS.KEY_ENTER) { |
59 // XXX not very user friendly: we should test that the suggestions |
59 // XXX not very user friendly: we should test that the suggestions |
60 // aren't visible anymore |
60 // aren't visible anymore |
61 ajaxBoxValidateSelectorInput(boxid, eid, separator, addfname, msg); |
61 ajaxBoxValidateSelectorInput(boxid, eid, separator, addfname, msg); |
62 } |
62 } |
63 }); |
63 }); |
64 var buttons = DIV({'class' : "sgformbuttons"}, |
64 var buttons = DIV({'class' : "sgformbuttons"}, |
65 A({'href' : "javascript: noop();", |
65 A({'href' : "javascript: noop();", |
66 'onclick' : cw.utils.strFuncCall('ajaxBoxValidateSelectorInput', |
66 'onclick' : cw.utils.strFuncCall('ajaxBoxValidateSelectorInput', |
67 boxid, eid, separator, addfname, msg)}, |
67 boxid, eid, separator, addfname, msg)}, |
68 oklabel), |
68 oklabel), |
69 ' / ', |
69 ' / ', |
70 A({'href' : "javascript: noop();", |
70 A({'href' : "javascript: noop();", |
71 'onclick' : '$("#' + holderid + '").empty()'}, |
71 'onclick' : '$("#' + holderid + '").empty()'}, |
72 cancellabel)); |
72 cancellabel)); |
73 holder.append(buttons); |
73 holder.append(buttons); |
74 $input.autocomplete(unrelated, { |
74 $input.autocomplete(unrelated, { |
75 multiple: separator, |
75 multiple: separator, |
76 max: 15 |
76 max: 15 |
77 }); |
77 }); |
78 $input.focus(); |
78 $input.focus(); |
79 }); |
79 }); |
80 } |
80 } |
81 } |
81 } |