
Changelog:


Neu: examplix

- gebraucht wird modifizierter atlantis filter Befehl
  der exportiert alle Schler nach students.cfg.filter
  und holt dann die der gewnschten Klasse heraus



changelog:


Version 0.0.8 (22-06-2015)
   - added EXTRA_SUBJECT (same as LOOP_SUBJECT without beeing part 
     of the average)

... missing changelog ...

Version 0.0.2 (xx-yy-2008)

- Checked that the following works before creating the final *.pdf (--year):
   - change the order of names in students.conf
   - remove a student from students.conf


Network Steps:

1) Class-teacher:
   examplix --create name --class class1,class2,... --year --teacher name

   creates:
   A) directory $HOME/netexamplix/tmp/klasse-schuljahr   OK!
   B) klasse-schuljahr/students.cfg                      OK!
   B) klasse-schuljahr/teachers.cfg                      OK!
   C) klasse-schuljahr/translate.cfg                     OK!
   D) year.cfg (midyear.cfg,exam.cfg)                    OK!
   E) supervisors.cfg
   F) typeout.cfg

2) Class-teacher:
   edit students.cfg                                     OK!
   edit year.cfg (midyear.cfg,exam.cfg)                  OK!

3) Class-teacher:
   examplix --tasks name --year --teacher name

   creates:
   A) create what every teacher has to do
      klasse-schuljahr/tasks/year/* is for reference/backup
         (make this read-only)
      klasse-schuljahr/collect/year/* is for editing
         (
           make this editable by the user, that is part of the name:
           bz_*.xls is editable by user bz only
         )
      - if a teacher does not exist(i.e erst,zweit
        for Deutsch/Gemeinschaftskunde, ...), then put the task files to the
        class-teacher, which will take care for the data to be collected

        OK


   B) examplix --result name --year --teacher bz
      to create empty results/klasse-schuljahr.pdf


4) Class-teacher:
   after checking, if 3) is correct (use the *.pdf),
   the whole $HOME/netexamplix/tmp/klasse-schuljahr tree is:

      examplix --result name --teacher name       (make sure all files exist)
      examplix --import name --teacher name       (checks out to every users $HOME)

   does the following

   A) import 'name' into CVS using account 'netexamplix'


   B) checkout a copy of this tree using account 'netexamplix' to
       $HOME/netexamplix/klasse-schuljahr (without tmp)

   C) check if checked out stuff is the same as what was checked in
    (using diff??)
      then delete the original tree in $HOME/netexamplix/tmp

   D) send mail to all teachers, that class-teachers expects teachers to edit
      $HOME/netexamplix/klasse-schuljahr/collect/year/login_...

   E) change permissions so that a user can only edit the file he has to change


5) Teachers edit their files
   (they have the possibility to check in their file expicitly,
    when they're done)
   (they have the possibility to check out results from others and
    create a current *.pdf)
   Send mail, when a teacher has filled out all he/she has to do
   or when its incomplete



6) Class-teacher:
   Creates results:
   A) check in all expected files from the teachers
   B) update his local copy
   C) create a pdf
   D) check in the created pdf
   E) check out the pdf to all teachers


7) The class-conference takes place, using the *.pdf

8) The Class-teacher adds marks(Verhalten/Mitarbeit)/changes
   prints it again(Hardcopy before archiving)

9) Archiving
   and archives the *.pdf
   A) Backprint 'Entwurf' is removed
   B) Every teachers tree is removed
   C) Every teacher becomes a copy in $HOME/netexamplix/archive/*.pdf
   D) The cvs project is cleaned up (deleted)



To think about:

create year,midyear,exam all at once?

make it possible to check out the CVS-tree,
   including updates from the users
   edit it at home,
   create a *.pdf from it

a way to run the scripts (root permissions, because of checking
in/out other users cvs tree.)


simplified way:

there is only one checked out tree in an exchange dir for all teachers that
participate:

every user can edit only his file,
only group teachers can read the checked out tree

a cronjob compiles a *.pdf in short intervalls during the days before conference




Todo netexamplix:

fetch teachermapping from system (gecos)


############################################################
Old todo list from CVS tree problectix:
############################################################
Bugs: results wird nicht automatisch angelegt
      results/year ...

 Beim CVS Auschecken fehlen diese Verzeichnisse oft, weil sie
leer sind.


sollte jetzt tun pr 2006-2007


BUG:
Names in Exams are without Space after comma, when textfile students.cfg has no space.




NEXT:

make examplix work again for year, midyear

create Anmeldenotenfile to add comments in midyear and year
(see below for )



Todo:

#### exam

create a comment file for arbitrary comments:

ZWEIT="Nicht teilgenommen wegen Zweitausbildung"
HSR="Nicht teilgenommen wegen Hochschulreife"
FHSR="Nicht teilgenommen wegen Fach-Hochschulreife"

If the override.xls contains a Word that exists in the comment-file
then
  print * on the pdf and add the comment to the user
else
  print \colorbox{---} to show there is a mark missing
finish


create a language file (Halbjahr, ...)


- calculate if user is 'versetzt'
  print zgef = Erreichen des Klassenziels ist gefhrdet
        zegef   "                          erheblich  "

- create override File
- create results a Excel, csv, ...


##### help

- create user/help

- contents:
    - help.pdf
    - list.pdf  (empty list for correction by hand)
         - all users
         - portrait-format
         - empty column headers (fill out by hand)

##### tasks

- create column with equal width (now manually set From A to M in create_xls_file)

- create a config file with:
   - Abgabedatum
   - ...
  use this file to create a Help-Paper

  use perl template toolkit for that



- include tasks for single mark subjects (Deutsch,
  Gemeinschaftskunde, Wirtschaftskunde) in exam.conf

  BELIEBIG;SINGLE; ...  wie andere Zeilen

  Erzeugt bis zu 4 (oder 5) SINGLE-Fcher in einer Tabelle.


- use teachers config file with:
   shortname, longname, email
       (make it fetchable on a sophomorix2-system)


- print overview of 'who corrects what' on the help.pdf

  subject | problem list | Erstkorrektur | Zweitkorrektur
  Mathe     M1,M2          sv              bz

- print source of exam.conf on help.pdf?

- format cells to fill out in "one digit after comma"



##### results

- show SINGLE-subjects

- convert 2,4, 2.4 , ... to 2.4 by means of a hash

- convert the averages 2.5, ... to 2,5 using a hash

- show error FORMAT, when value extracted from spreadsheet is missing in hash

- use landscape when horizontal space is not sufficent
- use blue for Drittkorrektur

- Break long names intelligently

- NF (No file error when Anmeldenote file is missing)


Parse Notes from the cells:


> Is there any way to read the notes/comments attached to a cell using
> SpreadSheet::ParseExcel or a different module? I searched CPAN and
> google and didnt find any hints.
>
You can use Win32::OLE to do this:
######################################
use Win32::OLE;
use Win32::OLE::Const 'Microsoft Excel';
use strict;

my $xl = Win32::OLE->GetActiveObject('Excel.Application') ||
Win32::OLE->new('Excel.Application');
die "Cannot start Excel" unless $xl;

my $workbook=$xl-> Workbooks->Open('C:\\temp\\book1.xls');
my $worksheet=$workbook->Worksheets('Sheet1');

my $LastRow = $worksheet->UsedRange->Find({What=>"*",
SearchDirection=>xlPrevious,
SearchOrder=>xlByRows})->{Row};

my $LastCol = $worksheet->UsedRange->Find({What=>"*",
SearchDirection=>xlPrevious,
SearchOrder=>xlByColumns})->{Column};

print "Number of used rows: $LastRow\n";
print "Number of used cols: $LastCol\n";

my $lnRow=1;
my $lnCol=1;

while ($lnRow <= $LastRow) {
$lnCol = 1 if ($lnCol > $LastCol);
my $notes = $worksheet->Cells($lnRow,$lnCol)->{NoteText};
print $notes,"\n" if ($notes);
$lnRow++ if $lnCol == 1;
$lnCol++;
}

$xl->Quit;
__END__
###############################




##################################################
Done:
##################################################

- calculate results using weighing
- Format results with latex longtable








############################################################
What examplix does:
############################################################

Programm to

1. split an exam into parts, which are corrected from different persons.

2. Give them simple Excel-files to fill out while correcting.

3. Collect the foles and Calculate a common mark.



BUGS:

openoffice: the cells must be formatted as text.

excel 2000: works as expected










