Bug Tracker

Ticket #1308 (closed enhancement: wontfix)

Opened 1 year ago

Last modified 5 months ago

allow multiple accept classes for droppables

Reported by: brett Assigned to: stefan
Type: enhancement Priority: minor
Milestone: 1.2 Component: interface
Version: 1.1.2 Keywords: droppable
Cc: Needs: Review

Description

could interface.droppable be enhanced to allow multiple classes for the accept parameter? similar to scriptaculous: http://wiki.script.aculo.us/scriptaculous/show/Droppables.add ("Set accept to a string or an array of strings describing CSS classes. The Droppable will only accept Draggables that have one or more of these CSS classes.")

Attachments

Change History

Changed 1 year ago by brett

I made what I think is a simple change to idrop.js (latest version) to facilitate multiple drop classes. Basically, dropCfg.a becomes an array in function "build", and when drag starts iterate over all accept classes.

this.dropCfg = {
	a : (typeof(o.accept) == 'string') ? [o.accept] : o.accept, //MODIFIED
	ac: o.activeclass||false,

and then from about line 87 becomes:

if (jQuery.iDrop.zones[i] != null) {
	var iEL = jQuery.iDrop.zones[i].get(0);
	jQuery.each(iEL.dropCfg.a, function (n, a){ //NEW
		if (jQuery(jQuery.iDrag.dragged).is('.' + a)) { //MODIFIED
			if (iEL.dropCfg.m == false) {
				iEL.dropCfg.p = jQuery.extend(
					jQuery.iUtil.getPositionLite(iEL),
					jQuery.iUtil.getSizeLite(iEL)
				);//jQuery.iUtil.getPos(iEL);
				iEL.dropCfg.m = true;
			}
			if (iEL.dropCfg.ac) {
				jQuery.iDrop.zones[i].addClass(iEL.dropCfg.ac);
			}
			jQuery.iDrop.highlighted[i] = jQuery.iDrop.zones[i];
			//if (jQuery.iSort && jQuery.iDrag.dragged.dragCfg.so) {
			if (jQuery.iSort && iEL.dropCfg.s && jQuery.iDrag.dragged.dragCfg.so) {
				iEL.dropCfg.el = jQuery('.' + iEL.dropCfg.a, iEL);
				elm.style.display = 'none';
				jQuery.iSort.measure(iEL);
				iEL.dropCfg.os = jQuery.iSort.serialize(jQuery.attr(iEL, 'id')).hash;
				elm.style.display = elm.dragCfg.oD;
				oneIsSortable = true;
			}
			if (iEL.dropCfg.onActivate) {
				iEL.dropCfg.onActivate.apply(jQuery.iDrop.zones[i].get(0), [jQuery.iDrag.dragged]);
			}
		}
	}); //NEW
}

If it's a good idea, I'd be happy to see this go into core - if not then my feelings won't be hurt.

Changed 5 months ago by scott.gonzalez

  • status changed from new to closed
  • resolution set to wontfix

Interface is no longer supported; consider switching to jQuery UI.

Note: See TracTickets for help on using tickets.