Rev 11661 | Blame | Compare with Previous | Last modification | View Log | RSS feed
# AddSheet
# permet d'ajouter une feuille vide à la classe qclass
!read scripts/check.class
!if $error!=$empty
!exit
!endif
#### RAPPEL : ################
## FORMAT of the /sheets/.sheets INDEX file :
#:SHEET STATUS
#EXPIRATION DATE
#SHEET TITLE
#SHEET DESCRIPTION
#######################
## FORMAT of a /sheets/.sheetN file :
#:MODULE (classes/$lang if it is an exercice of the class)
#PARAMS
#EXO REQUIRED POINTS
#EXO WEIGHT
#EXO TITLE
#EXO DESCRIPTION
#################################
## FORMAT of a log/classes/$qclass/.$sheet file :
# contains just one line :
# none
# or a line like ">startdate [<enddate] [IP]"
# TODO :
# Il faudrait aussi prendre en compte le fichier log/classes/$qclass/.$sheet
# qui apparait quand l'expiration des notes n'est pas vide.
list1=.,..,.sheets,.require,.weight,.severity
list2=!listfile -a $wims_home/log/classes/$qclass/sheets
list2=!lines2items $list2
list2=!listcomplement $list1 in $list2
n=!itemcnt $list2
!increase n
data1=!nonempty lines $data1
n1=!linecnt $data1
!for i=1 to $n1
l=!line $i of $data1
l=!translate = to $\
$ in $l
!distribute lines $l into name_,value_
!! remove leading, ending and multiples spaces
value_=!trim $value_
value_=!singlespace $value_
!if $name_ issametext expiration and $value_<=20150101
error= bad expiration date ($value_)
!exit
!endif
sh_$name_=$value_
!next i
sh_creation=!char 1 to 8 of $wims_now
sh_creation=!eval $sh_creation
## Ici par defaut je place la date d'expiration de la feuille a creation+1an.
## On pourrait aussi mettre simplement la meme date d'expiration que la classe
!default sh_expiration=$[$sh_creation+10000]
!default sh_title=Feuille d'exercices #$n
!default sh_description=Feuille d'exercices #$n
!default sh_sheetmode=0
############# contenu de la nouvelle feuille ##############################
## Par défaut, le contenu de la feuille est vide, autrement c'est une ligne
## dont les points-virgules seront interprétés comme des retours à la ligne
## les signes = sont interdits, il faut les remplacer par %3D
## la structure du contenu n'est pas vérifiée, c'est à vos risques et périls !
###########################################################################
!default sh_contents=
sh_contents=!translate ; to $\
$ in $sh_contents
sh_contents=!translate @ to = in $sh_contents
sheetcnt=!recordcnt wimshome/log/classes/$qclass/sheets/.sheets
!if $sheetcnt >= $MAX_SHEETS
error= error : The number of worksheets is limited to $MAX_SHEETS. You may not create worksheet #$[$sheetcnt+1].
!exit
!endif
!appendfile wimshome/log/classes/$qclass/sheets/.sheets \
:$sh_sheetmode\
$sh_expiration\
$sh_title\
$sh_description\
sheetcnt=!recordcnt wimshome/log/classes/$qclass/sheets/.sheets
!if $sheetcnt!=$n
error= error in sheet count ($sheetcnt records / $n files)
!exit
!endif
!writefile wimshome/log/classes/$qclass/sheets/.sheet$sheetcnt $sh_contents
#Pour la creation de la premiere feuille, on cree le fichier .severity
# On y definit la note maximale de la classe (par defaut, 10)
# A la place de ce test, il faudrait peut etre plutot verifier l'existence du fichier .severity
!if $sheetcnt=1
!writefile wimshome/log/classes/$qclass/sheets/.severity 10
!endif
# On definit le poids et la severité de cette feuille dans le fichier .severity (par defaut : 1 2 1)
!set DF_SEVERITY=!defof DF_SEVERITY in wimshome/public_html/bases/sys/define.conf
# Explication sur la sévérité :
# $WEIGHT $FORMULA $INDICATOR
!distribute words $DF_SEVERITY into default_weight,default_severity,default_indicator
# $WEIGHT is the sheet weight in class score
!bound sh_weight between 0 and 100000 default $default_weight
# $FORMULA is one of the 7 availables formulas (see adm/class/sheetformula for details) [max(I,Q), I, I*Q^0.3, I*Q^0.5, I*Q, I^2*Q, (I*Q)^2]
!bound sh_formula between integer 0 and 6 default $default_severity
# $INDICATOR is a severity Indicator (I0,I1,I2) (I in the previous formula)
# I0 : relatif au nombre de points cumulés,
# I1 : relatif à la moyenne meilleures notes obtenues
# I2 : relatif au minimum des n meilleures notes précédentes (niveau d'acquisition)
!bound sh_indicator between integer 0 and 2 default $default_indicator
!appendfile wimshome/log/classes/$qclass/sheets/.severity $sh_weight $sh_formula $sh_indicator
sheet_id=$n