web/data/cubicweb.ajax.box.js
branchstable
changeset 6215 759cf097f5aa
parent 5949 2a273c896a38
child 6448 8590d82e9b1b
equal deleted inserted replaced
6214:e03808843325 6215:759cf097f5aa
     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 }