Rev 17171 | Blame | Compare with Previous | Last modification | View Log | RSS feed
!! generic fill.after (also used by clickFill and dragFill)
!set list=!singlespace $wims_fill_list
!set list=!nonempty items $list
!if $wims_fill_type=dragfill
!if keeporder notwordof $wims_fill_option
!set t_=!itemcnt $list
!ifval $t_<=$filltotal or $t_<=12
!set list=!shuffle $list
!else
!set list=!sort items $list
!endif
!endif
!else
!set list=!listuniq $list
!if keeporder notwordof $wims_fill_option
!set list=!sort items $list
!endif
!endif
!if shuffle iswordof $wims_fill_option
!set list=!shuffle $list
!endif
!if sort iswordof $wims_fill_option
!set list=!sort items $list
!endif
!set fill_check=$list
!set list=!singlespace $list
!set objcnt=!itemcnt $list
!set list=!items2lines $list
!set objs=!replace internal " by \" in $list
!set objs=!replace internal ' by \' in $list
!set objs=!replace internal $\
$ by ',' in '$objs'
!set Objs=!replace internal \ by \\ in $list
!set Objs=!replace internal " by \" in $Objs
!set Objs=!replace internal ' by \' in $Objs
!set Objs=!replace internal $\
$ by ',' in '$Objs'
!if transparent iswordof $wims_fill_option
!set leftcolor=''
!set clcolor=''
!else
!set leftcolor='#ffd080'
!set clcolor='#C0A060'
!endif
!set leftcolor2='#c0c0c0'
!set rightcolor='#87ceeb'
!set crcolor='#6060ff'
!set align_option=!getopt align in $wims_fill_option
!set align_option=!tolower $align_option
!bound align_option within left,right,center default center
!set crleft='<div class="wims_fill_object" style="text-align:$align_option;justify-content:$align_option"><div class="fill_content">'
!set crright='<\/div><\/div>'
!set wims_ins_alt=none
!set tolx=$[round($fill_sx*2/3)]
!set toly=$[round($fill_sy*2/3)]
!reset formfields
!for t=1 to $fillcnt
!set t_=!item $t of $dynapi_fill_fields
!set formfields=!append item document.forms['replyform'].reply$t_ to $formfields
!next t
!if $wims_fill_type=dragfill
!set objcnt2=$objcnt
!else
!set objcnt2=$[$objcnt+1]
!endif
!read js/dynapi3.phtml
<script>
/*<![CDATA[*/
!if $fill_reposition=yes
!reset reposition_x,reposition_y
!for i=1 to $fillcnt
!distribute item $(reposition_$i) into rx,ry
!default rx=0
!default ry=0
!set reposition_x=!append item $rx to $reposition_x
!set reposition_y=!append item $ry to $reposition_y
!next i
var f_reposition_x=new Array($reposition_x,0);
var f_reposition_y=new Array($reposition_y,0);
!endif
var f_objs=new Array($objs,'?');
var f_Objs=new Array($Objs,'?');
var f_starts=new Array($fillstarts,$filltotal);
var f_cut=new Array($fillcutpoints,0);
var f_curr=new Array($fillstarts);
var f_fillnames=new Array($fill_namelist,0);
var f_major=new Array($filltotal);
var f_minor=new Array($filltotal);
var f_det=new Array($filltotal);
var f_lyr=new Array($filltotal);
var f_lbis=new Array($objcnt2);
var f_fields=new Array($formfields);
var f_xrel=new Array($filltotal);
var f_yrel=new Array($filltotal);
var f_dstartx, f_dstarty;
var f_rcolor=new Array($objcnt2);
var f_cll=-1;
var f_clr=-1;
//dynapi.library.include('dynapi.debug');
dynapi.onLoad(function() {
//dynapi.debug.print('Fill Onload');
var i,j;
var mev={};
$fillafter_js
mev.onclick = function(e) {
var clicked=e.getSource();
var i;
for(i=0;i<$filltotal;i++) {
if(clicked==f_lyr[i]) {f_cleft(i); return;}
}
}
var mev2={};
mev2.ondragstart = function(e) {
var r=e.getSource();
var i;
for(i=0;i<$objcnt2 && r!=f_lbis[i];i++);
if(f_clr>=0 && i!=f_clr) f_lbis[f_clr].setBgColor(f_rcolor[f_clr]);
r.setZIndex(1000); r.setBgColor($crcolor);
f_dstartx=r.getPageX(); f_dstarty=r.getPageY();
}
mev2.ondragend = function(e) {
var l=e.getSource();
var i;
for(i=0;i<$objcnt2;i++) {
if(l==f_lbis[i]) {f_cright(i); return;}
}
}
for(i=0;i<$fillcnt;i++) for(j=f_starts[i];j<f_starts[i+1];j++) {
f_major[j]=i; f_minor[j]=j-f_starts[i]; f_det[j]=-1;
}
for(i=0;i<$filltotal;i++) {
var xx,yy;
xx=0; yy=0;
if(f_minor[i]>0) {
xx+=(f_minor[i]%f_cut[f_major[i]])*$fill_sx;
yy+=Math.floor(f_minor[i]/f_cut[f_major[i]])*$fill_sy;
}
!if $fill_reposition=yes
xx+=f_reposition_x[f_major[i]];
yy+=f_reposition_y[f_major[i]];
!endif
f_xrel[i]=xx;f_yrel[i]=yy;
f_lyr[i]=new DynLayer();
f_lyr[i].setCssClass("wims_droppable");
f_toleft(f_lyr[i],i);
//f_lyr[i].setBgColor($leftcolor);
f_lyr[i].addEventListener(mev);
dynapi.document.addChild(f_lyr[i]);
if(f_minor[i]==0) f_lyr[i].setHTML($crleft+'?'+$crright);
}
for(i=0;i<$objcnt2;i++) {
f_lbis[i]=new DynLayer();
f_lbis[i].setCssClass("wims_grabbable");
f_toright(f_lbis[i],i);
DragEvent.enableDragEvents(f_lbis[i]);
f_lbis[i].addEventListener(mev2);
dynapi.document.addChild(f_lbis[i]);
if(i<$objcnt) f_rcolor[i]=$rightcolor;
else f_rcolor[i]=$leftcolor;
f_lbis[i].setBgColor(f_rcolor[i]);
f_lbis[i].setHTML($crleft+f_objs[i]+$crright);
}
!if $fillcnt=1
f_cll=0; f_lyr[0].setBgColor($clcolor);
!endif
});
function f_toleft(l,n) {
l.setAnchor({topA:'fill'+f_fillnames[f_major[n]],
leftA:'fill'+f_fillnames[f_major[n]],
left:f_xrel[n],top:f_yrel[n],
stretchH:$fill_sx,stretchV:$fill_sy});
}
function f_toright(l,n) {
l.setAnchor({topA:'fillobj'+(n+1),
leftA:'fillobj'+(n+1),left:-$fill_sx,
stretchH:$fill_sx,stretchV:$fill_sy});
}
function f_putval(l) {
var vv,i,j;
for(i=f_starts[l];i<f_curr[l];i++) if(f_det[i]<0) {
for(j=i;j<f_curr[l]-1;j++) {
if(f_det[j+1]>=0) {
!if $wims_fill_type=dragfill
f_toleft(f_lbis[f_det[j+1]],j);
!else
f_lyr[j].setHTML(f_lyr[j+1].getHTML());
!endif
f_lyr[j].setBgColor(f_lyr[j+1].getBgColor());
}
f_det[j]=f_det[j+1];
}
f_det[j]=-1; f_curr[l]--;
!! f_lyr[j].setBgColor($leftcolor);
!if $wims_fill_type!=dragfill
f_lyr[j].setHTML('');
if(j==f_starts[l]) f_lyr[j].setHTML($crleft+'?'+$crright);
!endif
}
if(f_curr[l]<=f_starts[l]) vv='';
else {
vv=f_Objs[f_det[f_starts[l]]];
for(i=f_starts[l]+1;i<f_curr[l];i++) vv=vv+','+f_Objs[f_det[i]];
}
f_fields[l].value=vv;
!if $wims_fill_type=dragfill
if(f_curr[l]>f_starts[l]) f_lyr[f_curr[l]-1].setBgColor($leftcolor);
!endif
if(f_curr[l]<f_starts[l+1]) {
f_cll=f_curr[l];
f_lyr[f_curr[l]].setBgColor($clcolor);
}
}
function f_corr(l,r) {
f_lbis[r].setBgColor(f_rcolor[r]);
if(r>=$objcnt) {
f_toright(f_lbis[r],r);
f_cll=-1;f_clr=-1;
f_det[l]=-1; f_putval(f_major[l]);
return;
}
!if $wims_fill_type=dragfill
f_toleft(f_lbis[r],l);
if(f_det[l]>=0 && f_det[l]!=r)
f_toright(f_lbis[f_det[l]],f_det[l]);
!else
f_toright(f_lbis[r],r);
f_lyr[l].setHTML($crleft+f_objs[r]+$crright);
f_lyr[l].setBgColor($leftcolor2);
!endif
if(f_curr[f_major[l]]<=l) f_curr[f_major[l]]=l+1;
if(f_clr>=0) f_lbis[f_clr].setBgColor(f_rcolor[f_clr]);
f_det[l]=r; f_cll=-1;f_clr=-1;
f_putval(f_major[l]);
}
function f_stickleft(n) {
var i=f_curr[f_major[n]];
if(n<=i) return n; else return i;
}
function f_cleft(n) {
n=f_stickleft(n);
if(f_clr==-1) {
f_lyr[n].setBgColor($clcolor);
if(f_cll>=0) {
if(f_det[f_cll]<0) f_lyr[f_cll].setBgColor($leftcolor);
else f_lyr[f_cll].setBgColor($leftcolor2);
}
if(f_cll==n) f_cll=-1; else f_cll=n;
return;
}
else {f_corr(n,f_clr);}
}
function f_cright(n) {
var l,xx,yy,t;
xx=f_lbis[n].getPageX(); yy=f_lbis[n].getPageY();
if(Math.abs(xx-f_dstartx)+Math.abs(yy-f_dstarty)>8) {
if(f_cll>=0) f_lyr[f_cll].setBgColor($leftcolor);
for(l=0;l<$filltotal &&
(Math.abs(xx-f_lyr[l].getPageX())>$tolx ||
Math.abs(yy-f_lyr[l].getPageY())>$toly);l++);
if(l<$filltotal) f_cll=f_stickleft(l);
else {f_cll=-1;f_clr=n;}
}
else if(n>=$objcnt && f_cll>=0 && f_det[f_cll]<0) {
f_lyr[f_cll].setBgColor($leftcolor); f_cll=-1;
}
!if $wims_fill_type=dragfill
for(t=0;t<$filltotal && f_det[t]!=n;t++);
if(t<$filltotal && t!=f_cll) {
var cllsave=f_cll;
f_det[t]=-1; f_putval(f_major[t]);
if(f_cll>=0) f_lyr[f_cll].setBgColor($leftcolor);
f_cll=cllsave;
}
!endif
if(f_cll==-1) {
f_lbis[n].setBgColor($crcolor);
if(f_clr>=0) f_lbis[f_clr].setBgColor(f_rcolor[f_clr]);
if(f_clr==n) f_clr=-1; else f_clr=n;
f_toright(f_lbis[n],n);
}
else {f_corr(f_cll,n);}
f_lbis[n].setZIndex(100);
}
/*]]>*/
</script>
!reset wims_ins_alt
!set vertical=text-top
<div style="text-align:left;">
!for i_=1 to $objcnt2
!set l_=!item $i_ of $wims_fill_list
<img style="width:$(fill_sx)px;height:$[$fill_sy+10]px;vertical-align:$vertical;" src="gifs/transparent.gif" alt="transparent">
<a id="fillobj$i_"><img style="width:1px;height:1px" src="gifs/transparent.gif" alt="transparent"></a>
!next i_
</div>
<br class="clearall spacer">