Rev 4924 | Rev 8839 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
!read adm/language lang/names.phtml
wims_helper=chapter=4&open=4_oef#oef
wims_form_method=post
wims_nw=existing catmodule catmodule1 newone oef_fname level vsave \
delete deltitle mode realtest deffile wims_noexport \
empty wims_module_log class_header
wims_nr=wims_sesrandom
wims_trustfile=oef/embed.phtml oef/special.phtml oef/togetfile.proc
slib/circuits/draw slib/circuits/drawcomp slib/circuits/range\
slib/circuits/comppos
!distribute item 100,30,10,40 into answerlim,choicelim,condlim,promptlim
!bound mode within raw,file,model default $
!read tabletheme
!if $wims_user!=$empty or $wims_developer!=$empty
!default oef_author=!trim $wims_firstname $wims_lastname
!default oef_email=$wims_email
!if $wims_developer!=$empty
!read adm/getdeveloper
!default oef_author=$dv_name
!default oef_email=$dv_email
!endif
!if $newone=1
existing=
newone=
!endif
!if (..devel/ notin ..$catmodule or $wims_developer=$empty) and \
$existing!=$empty and $wims_user!=supervisor \
and ..*/$wims_user. notin ..*/$existing
existing=
!endif
!if $existing!=$empty and $level=$empty
!if $catmodule!=$empty
!if ..devel/ isin ..$catmodule and ($wims_developer= or \
..devel/$wims_developer notin ..$catmodule)
!goto nonexist
!endif
!if .. isin $catmodule or ..adm/ isin ..$catmodule or \
..classes/ isin ..$catmodule
!goto nonexist
!endif
!endif
src=!mexec catexisting.sh $existing
!if $src!=$empty
mode=raw
level=1
!else
:nonexist
error=not_exist
del=$existing
exiting=
!exit
!endif
!endif
!else
existing=
!endif
!if $cmd=help
!if $realtest=yes
!changeto oef/var.proc
!endif
!exit
!endif
!if $delete!=$empty
!if $wims_class==$empty
error=not_class
!exit
!endif
!if $wims_user!=supervisor
error=not_supervisor
!exit
!endif
del=!word 1 of $delete
delete=
deleted=!mexec delexo.sh $del
!if $deleted=$empty
error=not_exist
!else
wims_module_log=delete $wims_class/$del
!endif
!exit
!endif
!if $mode=model and $model!=$empty
model=!text select abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 in $model
!sh cp -f $wims_home/public_html/scripts/model/$lang/src/$model.oef $wims_home/sessions/$wims_session/user-deposit\
cp -f $wims_home/sessions/$wims_session/user-deposit $wims_home/sessions/$wims_session/submit.oef
!if $level=3 and $realtest=yes
!mexec makedef.sh
!endif
!reset status
model=
!endif
!if $level=2 and $mode=model
!read model/cut.proc
!if $cnt<6 or $sps=$empty or $parms=$empty or $desc=$empty or\
$model_type=$empty or statementrec=$empty
mode=
!goto nomodel
!endif
!endif
!if $level=2 and $mode=$empty
!read model/cut.proc
!if $cnt>=6 and $sps!=$empty and $parms!=$empty and $desc!=$empty and\
$model_type!=$empty and statementrec>1
mode=model
rawinp=
!endif
!endif
:nomodel
!if $level=3 and $realtest=yes
oef_test=yes
!changeto oef/var.proc
!else
!if $realtest=no
question=
hint=
solution=
status=
varcnt=0
replycnt=0
choicecnt=0
score=
!if $mode=model
!for i=1 to 100
reply$i=
!next i
!endif model
!endif realtest
!reset status realtest retest
!endif level=3
!if $rawinp!=$empty
mode=raw
level=1
rawinp=
!endif
!if $mode=raw and $level<=2
modeltest=!recordcnt wimshome/sessions/$wims_session/submit.oef
!if $modeltest>6
modeltest=!record 0 of wimshome/sessions/$wims_session/submit.oef
modeltest=!getopt type in $modeltest
!if $modeltest!=$empty
modeltest=yes
!sh cd $wims_home/sessions/$wims_session\
[ -s user-deposit ] || cp -f submit.oef user-deposit
!endif
!endif
!endif
!bound oef_format within tex,html default html
!bound oef_answercnt between integer 0 and $answerlim default 1
!bound oef_choicecnt between integer 0 and $choicelim default 0
!bound oef_condcnt between integer 0 and $condlim default 0
!bound oef_precision within 100,1000,10000,100000,1000000 default 10000
!bound oef_computeanswer within yes,no default no
!bound level between integer 0 and 7 default 0
!if $level=6 and $wims_user!=supervisor
level=1
!endif
!for i in l,r
oef_range$i=!trim $(oef_range$i)
!if $(oef_range$i)!=$empty
oef_range$i=$[$(oef_range$i)]
!if NaN isin $(oef_range$i)] or Inf isin $(oef_range$i)
oef_range$i=
!endif
!endif
!next i
!default oef_rangel=-5
!default oef_ranger=5
!if $oef_rangel=$oef_ranger
oef_rangel=-5
oef_ranger=5
!endif
!if $oef_rangel>$oef_ranger
range=$oef_rangel
oef_rangel=$oef_ranger
oef_ranger=$range
!endif
!if $level>1 and $mode=$empty
oef_title=!trim $oef_title
!if $oef_title=$empty and $level>1
error=no_title
!exit
!endif
# !if $oef_answercnt+$oef_choicecnt<=0
# error=no_answer
# !exit
# !endif
!endif
!if $level=7 and $wims_developer!=$empty
!reset file_name_src
list_mod=!sh ls $wims_home/public_html/modules/devel/$wims_developer
list_mod=!words2items $list_mod
list_mod_oef=
!for a in $list_mod
category = !module category devel/$wims_developer/$a
!if oef isin $category
list_mod_oef=!append item $a to $list_mod_oef
!endif
!next
!if $list_mod_oef=$empty
error = $error oefempty
!endif
!endif
!if $level=3
!if $mode=$empty
header=\language{$lang}\
\range{$oef_rangel..$oef_ranger}
!for i in author,email,computeanswer,format,precision
oef_$i=!trim $(oef_$i)
!if $(oef_$i)!=$empty
header=!append line \$i{$(oef_$i)} to $header
!endif
!next i
oef_statement=!trim $oef_statement
!if $oef_statement=$empty
error=no_statement
!exit
!endif
answers=
!for i=1 to $oef_answercnt
ansprompt$i=!trim $(ansprompt$i)
prompt=!char 1 to $promptlim of $(ansprompt$i)
ansgood$i=!trim $(ansgood$i)
!if $prompt!=$empty and $(ansgood$i)!=$empty
!default anstype$i=default
answers=!append line \answer{$prompt}{$(ansgood$i)}{type=$(anstype$i)} to $answers
!endif
!next i
replycnt=!linecnt $answers
choices=
!for i=1 to $oef_choicecnt
choiprompt$i=!trim $(choiprompt$i)
prompt=!char 1 to $promptlim of $(choiprompt$i)
choigood$i=!trim $(choigood$i)
choibad$i=!trim $(choibad$i)
!if $prompt!=$empty and $(choigood$i)!=$empty and $(choibad$i)!=$empty
choices=!append line \choice{$prompt}{$(choigood$i)}{$(choibad$i)} to $choices
!endif
!next i
choicecnt=!linecnt $choices
conditions=
!for i=1 to $oef_condcnt
cn=!trim $(Condname$i)
ct=!trim $(Condtest$i)
!if $cn!=$empty and $ct!=$empty
conditions=!append line \condition{$cn}{$ct} to $conditions
!endif
!next i
# !ifval $replycnt+$choicecnt=0
# error=no_reply2
# !exit
# !endif
oef_hint=!trim $oef_hint
!if $oef_hint!=$empty
hints=\hint{$oef_hint}
!endif
oef_solution=!trim $oef_solution
!if $oef_solution!=$empty
solutions=\solution{$oef_solution}
!endif
source=!mexec makedef.sh
!else
!if $mode=model
!read model/cutback.proc
!endif
!mexec makedef.sh
!endif mode=$empty
status=waiting
oef2wims_out=!record 0 of wimshome/$wims_sesdir/oef2wims.out
!if ERROR iswordof $oef2wims_out
:diagerror
test=!line 1 of $oef2wims_out
!if ERROR notin $test
oef2wims_out=!line 2 to -1 of $oef2wims_out
!endif
error=def_fail
!exit
!endif
replycnt=
choicecnt=
varcnt=
!read wimshome/$wims_sesdir/submit.def
!if $replycnt=$empty or $choicecnt=$empty or $varcnt=$empty
!goto diagerror
!exit
!endif
title=!trim $title
!if $title=$empty
error=empty_title
!exit
!endif
oef_fname=
titlen=!charcnt $title
!for i=1 to $titlen
c=!char $i of $title
!if $c isin 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_
oef_fname=$oef_fname$c
!endif
!next i
oef_fname=!char 1 to 14 of $oef_fname
!if $wims_user!=$empty and $wims_user!=supervisor
oef_fname=$wims_user.$oef_fname
!endif
!endif
!if $level=4 and $wims_user!=$empty
regout=!mexec regclass.sh
reg1=!word 1 of $regout
!if $reg1=success
fnamebase=!word 2 of $regout
existing=$fnamebase
success=1
!else
error=!word 2 of $regout
!if $error!=already
!exit
!else
error=
already=yes
!endif
!endif
!if $wims_user!=supervisor and ..devel/ notin ..$catmodule
prefix=$wims_user.
!else
prefix=
!endif
wims_module_log=Regclass $wims_class $mode $prefix$oef_title
!endif
!if $level=4
!if $catmodule1 !=
catmodule=devel/$wims_developer/$catmodule1
!reset catmodule1
!endif
existing_new=!replace internal .oef by in $file_name_src
!set existing_new=!text select ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_1234567890 in $existing_new
!if $existing_new != $empty
existing=$existing_new
!endif
!endif
!if $level=4 and $wims_developer!=$empty and ..devel/ isin ..$catmodule and \
.. notin $catmodule $existing
wims_exec_error=
!sh cp $wims_home/sessions/$wims_session/submit.oef modules/$catmodule/src/$existing.oef\
cd modules/$catmodule; src2def
test_image=!sh ls $wims_home/sessions/$wims_session/getfile/oefimg 2>/dev/null
!if $test_image!=$empty
!reset test_common
test_common=!defof common_images in wimshome/public_html/modules/$catmodule/var.proc
!if $test_common!=$empty
!if $test_common notwordof no yes
wims_exec_error=!append word imagedir=$test_common to $wims_exec_error
!else
!if $test_common iswordof no or $test_common=$empty
im_dir=images/$existing
!else
im_dir=images
!endif
!sh mkdir -p modules/$catmodule/$im_dir ;\
cp $wims_home/sessions/$wims_session/getfile/oefimg/* modules/$catmodule/$im_dir
!endif
!endif
!endif
!reset test_image
!reset already regout prefix
!if $wims_exec_error=$empty
reg1=success
regout=$existing
!else
reg1=fail
!endif
wims_module_log=Regdev $catmodule $existing
!goto l4end
!endif
!if ($level=4 and $wims_user=$empty) or $level=5
regout=!mexec regpub.sh
reg1=!word 1 of $regout
!if $reg1=success
fnamebase=!word 2 of $regout
!else
error=!word 2 of $regout
!exit
!endif
wims_module_log=Regpub $mode $oef_title
!endif
:l4end
!if $level=6
!if $wims_deposit!=$empty and .. notin $wims_deposit and / notin $wims_deposit
!read adm/du $wims_home/log/classes/$wims_class
!if $du>=$wims_class_quota-1
quota=yes
!else
!sh cd $wims_home/$wims_sesdir\
mkdir -p getfile/oefimg\
mv user-deposit getfile/oefimg/$wims_deposit\
cp oefdeposit user-deposit 2>/dev/null
!endif
imgfname=$wims_deposit
wims_deposit=
!else
!sh cd $wims_home/$wims_sesdir\
if [ -f user-deposit ]; then cp user-deposit oefdeposit; fi
!if $delfile!=$empty and .. notin $delfile
!sh rm -f $wims_home/$wims_sesdir/getfile/oefimg/$delfile
!endif
!endif
imglist=!filelist $wims_home/$wims_sesdir/getfile/oefimg
imglist=!words2items $imglist
!endif