Subversion Repositories wimsdev

Rev

Rev 16087 | Rev 16467 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

!! add exercise in a freework type=3 ; zonetype=wimsexo

max_exos=!defof MAX_EXOS in wimshome/public_html/bases/sys/define.conf
desc_limit=255

!! ----------- delete intro_sol>0 in iniparm
!if intro_expert isin $iniparm or intro_sol isin $iniparm 
    t=$ 
    tmp=!replace internal & by $t in $iniparm
    !if intro_sol isin $iniparm
      tmp2=!getopt intro_sol in $tmp
      !if $tmp2!=0
        ctmp=intro_sol=$tmp2
        iniparm=!replace internal $ctmp by intro_sol=0 in $iniparm
      !endif
    !else
      iniparm=$iniparm&intro_sol=0
    !endif 
    !if intro_expert isin $iniparm
      tmp2=!getopt intro_expert in $tmp
      !if $tmp2!=yes
        ctmp=intro_expert=$tmp2
        iniparm=!replace internal $ctmp by intro_expert=yes in $iniparm
      !endif
    !else
      iniparm=$iniparm&intro_expert=yes
    !endif
!else
     iniparm=$iniparm&intro_expert=yes&intro_sol=0
!endif 
!! --------- end

!if $cmd=new or $cmd=resume
  freeworkslist=$empty
  !for i=1 to $nbfreework
    sh=!record $i of wimshome/log/classes/$wims_class/freeworks/.freeworks
    !distribute lines $sh into stat,t_,title,t_,t_,type
    !if $stat<1 and $type=3
      nb_=!recordcnt wimshome/log/classes/$wims_class/freeworks/.freework$i
      j=1
      test=0
      !while $j<=$nb_ and $test=0
        dt=!record $j of wimshome/log/classes/$wims_class/freeworks/.freework$i
        dt=!word 1 of $dt
        !if wimsexo isin $dt
          test=1
        !endif
        !increase j
      !endwhile
      !if $test=1
        freeworkslist=!append line $i,$title to $freeworkslist
      !endif
    !endif
  !next i
  !if $freeworkslist=$empty
    freeworkscnt=0
  !else
    freeworkscnt=!linecnt $freeworkslist
  !endif
  !ifval $freeworkscnt=0
    error=addexo-nofreework
    notallowed=1
    !exit
  !endif
  test_transl=!module translation_language $dir
  !if $lang iswordof $test_transl
    tr_lang=yes
    title=!module title_$lang $dir
    desc=!module description_$lang $dir
  !endif
  !read getparm $iniparm exo exotrymax

  desc=!lookup $get_exo in wimshome/public_html/modules/$dir/Descindex
  obs=!lookup $get_exo in wimshome/public_html/modules/$dir/Obsindex
  !default title=!module title $dir
  !default desc=!module description $dir
  cat=!module category $dir
  !if exercise notin $cat and oef notin $cat
    error=not_exo
    !exit
  !endif
  !exit
!endif

!if $cmd=reply
  !if ../adm/ isin ../$dir or $dir=home or \
   (../devel/ isin ../$dir and $wims_devel_modules notwordof open)
    error=insert_fail
    !exit
  !endif
  !if $pickfreework=$empty
    error=no_pick
    !exit
  !endif
  pickfreework=$[floor($pickfreework)]
  !if $pickfreework=NaN or $pickfreework<1 or $picksfreework>min($max_freeworks,$nbfreeworks)
    error=bad_freework
    !exit
  !endif
  sh=!record $pickfreework of wimshome/log/classes/$wims_class/freeworks/.freeworks
  a=!line 1 of $sh
  t=!line 6 of $sh
  !if $a>0 or $t!=3
    nb_=!recordcnt wimshome/log/classes/$wims_class/freeworks/.freework$pickfreework
    j=1
    test=0
    !while $j<=$nb_ and $test=0
        dt=!record $j of wimshome/log/classes/$wims_class/freeworks/.freework$pickfreework
        dt=!word 1 of $dt
        !if wimsexo isin $dt
          test=1
        !endif
        !increase j
    !endwhile
    !if $test=0
      error=bad_freework
      !exit
    !endif
  !endif
  exocnt=!recordcnt wimshome/log/classes/$wims_class/freeworks/.Wfreework$pickfreework
  !if $exocnt>=$max_exos
    error=too_many_exos
    !exit
  !endif
  idesc=!singlespace $new_desc
  iattribut=$mod_attribut
  idesc=!char 1 to $desc_limit of $idesc
  iobs=!singlespace $obs
  iobs=!char 1 to $desc_limit of $iobs
  ititle=!singlespace $title
  ititle=!char 1 to $title_limit of $ititle
  !for i=1 to $exocnt
    e=!record $i of wimshome/log/classes/$wims_class/freeworks/.Wfreework$pickfreework
    !distribute lines $e into wdi,win
    !if $dir=$wdi and $iniparm=$win
      test=$pickfreework
      error=already_exist
      !exit
    !endif
  !next i
  !appendfile wimshome/log/classes/$wims_class/freeworks/.Wfreework$pickfreework :$dir\
$iniparm\
$ititle\
$idesc
  success=exo-insert
  exocnt=!recordcnt wimshome/log/classes/$wims_class/freeworks/.Wfreework$pickfreework
  wims_module_log=class $class: add No$exocnt to freework $pickfreework
!endif