Subversion Repositories wimsdev

Rev

Rev 13760 | Blame | Compare with Previous | Last modification | View Log | RSS feed

!! add exercise in a sheet

max_exos=!defof MAX_EXOS in wimshome/public_html/bases/sys/define.conf
max_sheets=!defof MAX_SHEETS in wimshome/public_html/bases/sys/define.conf
title_limit=50
desc_limit=255
!if $scoring=yes
  !default require=10
  !default weight=1
!else
  require=0
  weight=0
!endif

!if $cmd=new or $cmd=resume
  sheets=
  !for i=1 to $sheettot
    sh=!record $i of wimshome/log/classes/$wims_class/sheets/.sheets
    !distribute lines $sh into a_,t_,title
    !if $a_<1
      sheets=!append line $i,$title to $sheets
    !endif
  !next i
  sheetcnt=!linecnt $sheets
  !ifval $sheetcnt=0
    error=no_sheet
    !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
  !! ------ print oef version cannot be inserted in a sheet
  tmptest=print=yes
  !if $tmptest isin $iniparm
    error=printversion
    !exit
  !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 $picksheet=$empty
    error=no_pick
    !exit
  !endif
  picksheet=$[floor($picksheet)]
  !if $picksheet=NaN or $picksheet<1 or $picksheet>min($max_sheets,$sheettot)
    error=bad_sheet
    !exit
  !endif
  sh=!record $picksheet of wimshome/log/classes/$wims_class/sheets/.sheets
  a=!line 1 of $sh
  !if $a>0
    error=bad_sheet
    !exit
  !endif
  exocnt=!recordcnt wimshome/log/classes/$wims_class/sheets/.sheet$picksheet
  !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
  !if $scoring=yes
    require=$[$require]
    weight=$[$weight]
    !if NaN isin $require
      require=0
    !endif
    !if NaN isin $weight
      weight=0
    !endif
    !bound require between 0,$[10*$require_limit] default 0
    !bound weight between 0,10 default 0
  !endif
  !for i=1 to $exocnt
    e=!record $i of wimshome/log/classes/$wims_class/sheets/.sheet$picksheet
    !distribute lines $e into wdi,win
    !if $dir=$wdi and $iniparm=$win
      test=$picksheet
      error=already_exist
      !exit
    !endif
  !next i
####
  iniparm2=!replace internal & by $\
$ in $iniparm
  !if exotrymax notin $iniparm2 and $newexotrymax>0
    iniparm2=exotrymax=$newexotrymax\
$iniparm2
  !endif
  iniparm2_cnt=!linecnt $iniparm2
  iniparm2=!replace internal & by $\
$ in $iniparm2
  !if $get_random=0
    !for i=1 to $get_qnum
      update_order=!append item $(update_ex$i) to $update_order
    !next
    get_exo=$(get_exo[$update_order])
  !endif

  iniparm2_cnt=!linecnt $iniparm2
  new_iniparm=
  equal==
  !for v in $get_exo
    new_iniparm=!append line exo=$v to $new_iniparm
  !next
  !for u=1 to $iniparm2_cnt
    l=!line $u of $iniparm2
    !if exotrymax isin $l
      new_iniparm=!append line exotrymax=$newexotrymax to $new_iniparm
    !else
      !if exo$equal notin $l =
        new_iniparm=!append line $l to $new_iniparm
      !endif
    !endif
  !next
  !if $equal notin $(new_iniparm[-1])
    new_iniparm=$new_iniparm=
  !endif
  new_iniparm=!replace internal $\
$ by & in $new_iniparm
  new_iniparm=!nospace $new_iniparm
  iniparm=$new_iniparm
  #####
  !appendfile wimshome/log/classes/$wims_class/sheets/.sheet$picksheet :$dir\
$iniparm\
$require\
$weight\
$ititle\
$idesc\
\
$iobs\
\
$iattribut

  exocnt=!recordcnt wimshome/log/classes/$wims_class/sheets/.sheet$picksheet
  wims_module_log=class $class: add No$exocnt to worksheet $picksheet
!endif