Subversion Repositories wimsdev

Rev

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

# ShareContent :
# Partage le contenu (exercices pour le moment) d'une classe $qclass avec la classe $data1, a condition que les 2 classes soient liees a $rclass
# $option va contenir le type de contenu à partager

!default option=exo

!read scripts/check.class
!if $error!=$empty
 !exit
!endif
src_class=$qclass
src_class_dir=$wims_class_dir

qclass=$data1
!read scripts/check.class
!if $error!=$empty
 !exit
!endif

!readdef $classdeffile
  
!if $class_type>1
  # on ne partage du contenu que si la destination est une classe simple ou une sous-classe.
  error=class $qclass is a superclass
  !exit
!endif

# Cas ou le partage se fait sur la liste des execices
!if exo iswordof $option
  #######
  # On verifie que les exercices de la classe destination ne sont pas deja lies a une autre classe
  log=!sh readlink $wims_class_dir/src
  !if $log!=$empty
    shared = !defof sharing_exo in wimshome/log/classes/$qclass/neighbors
        error=sorry, this class is already using contents of another class. ($shared)
        !exit
  !endif

  #######
  # On verifie qu'il n'y a aucun exercice existant dans la classe destination
  # Pour compter les exos, on utilise le fichier Extitles de la classe
  exotitlelist=!record 0 of wimshome/log/classes/$qclass/Extitles
  exocount=!linecnt $exotitlelist
  !if $exocount>0
   error=Destination class ($qclass) not empty (already $exocount exercices)
   !exit
  !endif

  #######
  # On supprime le dossiers src/ (s'il existe) :
  log=!sh rmdir $wims_class_dir/src
  !if $log!=$empty
        error=sorry, an error occured in directory suppression ($log)
        !exit
  !endif


  # On remplace ensuite ce dossier par un lien vers le contenu a partager de la 1ere classe.
# TODO : ici il faudrait rendre ces liens relatifs plutot qu'absolus, pour plus de perenité.

  log=!sh ln -s $src_class_dir/src/ $wims_class_dir/src \
  ln -s $src_class_dir/def/ $wims_class_dir/def \
  ln -s $src_class_dir/Exindex $wims_class_dir/Exindex \
  ln -s $src_class_dir/Extitles $wims_class_dir/Extitles
!endif

!if $log!=$empty
        error=sorry, an error occured in link creation ($log)
        !exit
!endif

# voici la liste des types d'objets potentiellement partageables
share_types = exo, sheet, exam, doc, forum, user, sup, motd, vote, cdt, livret, seq

# Les fichiers "neighbors" de chaque classe
neighbors_dest=wimshome/log/classes/$qclass/neighbors
neighbors_src=wimshome/log/classes/$src_class/neighbors

# Pour chaque type de partage defini dans $option, on modifie le parametre associe dans les 2 classes
!for t in $share_types
        !if $option iswordof $t
                t_1 = !defof sharable_$t in $neighbors_src      
                !if $t_1 !=$empty
                        t_1=$t_1,
                !endif  
                !setdef sharable_$t=$t_1$qclass in $neighbors_src
                !setdef sharing_$t=$src_class in $neighbors_dest
        !endif
!next t

# puis on définit des parametres generaux
n_sup = !defof n_sup in $neighbors_src
!if $n_sup !=$empty
        n_sup=$n_sup,
!endif
n_part = !defof n_part in $neighbors_src
!if $n_part !=$empty
        n_part=$n_part,
!endif
!setdef n_sup=$n_sup$qclass in $neighbors_src
!setdef n_part=$n_part,$qclass in $neighbors_src
!setdef n_sup=$src_class in $neighbors_dest
!setdef n_part=$src_class in $neighbors_dest

t_1 = !defof sharable_all in $neighbors_src
!if $t_1 !=$empty
        t_1=$t_1,
!endif
!setdef sharable_all=$t_1$qclass in $neighbors_src
!setdef sharing_all=$src_class in $neighbors_dest