dragdrop: make class aware of multiple instances and make wz_dragdrop::ADD_DTHML() more performant

This commit is contained in:
Christian Binder 2007-01-05 13:56:28 +00:00
parent 7cb034e071
commit 4a0af9f977
2 changed files with 33 additions and 10 deletions

View File

@ -120,7 +120,7 @@ class dragdrop
if(!$GLOBALS['egw_info']['flags']['wz_dragdrop_included']) if(!$GLOBALS['egw_info']['flags']['wz_dragdrop_included'])
{ {
$GLOBALS['egw_info']['flags']['need_footer'] .= '<script language="JavaScript" type="text/javascript" src="'.$GLOBALS['egw_info']['server']['webserver_url'].'/phpgwapi/js/wz_dragdrop/wz_dragdrop.js"></script>'."\n"; $GLOBALS['egw_info']['flags']['need_footer'] .= '<script language="JavaScript" type="text/javascript" src="'.$GLOBALS['egw_info']['server']['webserver_url'].'/phpgwapi/js/wz_dragdrop/wz_dragdrop.js"></script>'."\n";
$GLOBALS['egw_info']['flags']['wz_dragdrop_included'] = True; $GLOBALS['egw_info']['flags']['wz_dragdrop_included'] = true;
} }
// include actionScripts // include actionScripts
@ -128,7 +128,7 @@ class dragdrop
{ {
foreach($this->actionScripts as $i => $actionScript) foreach($this->actionScripts as $i => $actionScript)
{ {
$GLOBALS['egw_info']['flags']['need_footer'] .= "<script language='JavaScript' type='text/javascript' src='".$actionScript['file']."'></script>\n"; $GLOBALS['egw_info']['flags']['need_footer'] .= '<script language="JavaScript" type="text/javascript" src="'.$actionScript['file'].'"></script>'."\n";
} }
} }
@ -137,20 +137,22 @@ class dragdrop
{ {
foreach($this->draggables as $i=>$element) foreach($this->draggables as $i=>$element)
{ {
$element_names_array[] = "\"".$element['name']."\""; $element_names_array[] = '"'.$element['name'].'"+CURSOR_HAND+TRANSPARENT+SCROLL';
} }
} }
if(is_array($this->droppables)) if(is_array($this->droppables))
{ {
foreach($this->droppables as $i=>$element) foreach($this->droppables as $i=>$element)
{ {
$element_names_array[] = "\"".$element['name']."\""; $element_names_array[] = '"'.$element['name'].'"';
} }
} }
if(is_array($element_names_array)) if(is_array($element_names_array))
{ {
$element_names=implode(",",$element_names_array); $element_names=implode(',',$element_names_array);
$GLOBALS['egw_info']['flags']['need_footer'] .= '<script language="JavaScript" type="text/javascript">SET_DHTML(SCROLL,TRANSPARENT,CURSOR_HAND,'.$element_names.');</script>'."\n"; $GLOBALS['egw_info']['flags']['need_footer'] .= '<script language="JavaScript" type="text/javascript">'."\n";
$GLOBALS['egw_info']['flags']['need_footer'] .= $this->DHTMLcommand().'('.$element_names.')'."\n";
$GLOBALS['egw_info']['flags']['need_footer'] .= '</script>'."\n";
} }
// set special params for draggable elements // set special params for draggable elements
@ -315,4 +317,22 @@ class dragdrop
return false; return false;
} }
/**
* evaluate the right DHTML command for adding DHTML objects
*
* @return string 'SET_DHTML' or 'ADD_DHTML'
*/
function DHTMLcommand()
{
if(!$GLOBALS['egw_info']['flags']['wz_dragdrop_runonce_SET_DHTML'])
{
$GLOBALS['egw_info']['flags']['wz_dragdrop_runonce_SET_DHTML'] = true;
return 'SET_DHTML';
}
else
{
return 'ADD_DHTML';
}
}
} }

View File

@ -1360,11 +1360,14 @@ function SET_DHTML()
window.onunload = dd.finlz; window.onunload = dd.finlz;
dd.setDwnHdl(PICK); dd.setDwnHdl(PICK);
} }
function ADD_DHTML(d_o) // layers only! function ADD_DHTML() // layers only!
{ {
d_o = new DDObj(d_o); var d_a = arguments, d_o, d_i = d_a.length; while(d_i--)
dd.addElt(d_o); {
dd.addProps(d_o); d_o = new DDObj(d_a[d_i]);
dd.addElt(d_o);
dd.addProps(d_o);
}
dd.mkWzDom(); dd.mkWzDom();
} }