Subversion Repositories wimsdev

Rev

Rev 16467 | 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

tmptest=print=yes
!if $tmptest isin $iniparm
  error=printversion
  notallowed=1
  !exit
!endif

!! ----------- delete intro_sol>0 and intro_feed in iniparm
    t=$ 
    tmp=!replace internal & by $t in $iniparm
    !for type in sol,feed
      !if intro_$type isin $iniparm
        tmp2=!getopt intro_$type in $tmp
        !if $tmp2!=0
          ctmp=intro_$type=$tmp2
          iniparm=!replace internal $ctmp by intro_$type=0 in $iniparm
        !endif
      !else
        iniparm=$iniparm&intro_$type=0
      !endif
    !next type
    !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
!! --------- 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
  module_cat=!module category $dir
  !if exercise notin $module_cat and oef notin $module_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
  !if oef isin $module_cat
    copara=!listintersect $copara and solution,feedback
  !else
    !reset copara
  !endif
  !appendfile wimshome/log/classes/$wims_class/freeworks/.Wfreework$pickfreework :$dir\
$iniparm\
$ititle\
$idesc\
$copara
  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