Browse Source

neues layout mit grid und bescheinigung

burningTyger 7 years ago
parent
commit
496bb2947d
3 changed files with 488 additions and 0 deletions
  1. 83 0
      views/bescheinigung_bewerbung.slim
  2. 84 0
      views/bescheinigung_bewerbung2.slim
  3. 321 0
      views/page.scss

+ 83 - 0
views/bescheinigung_bewerbung.slim

@@ -0,0 +1,83 @@
+#doc-einstellungen data-json='{"logo_top":"bk_logo_ohne_text.svg","logo_seite":"traeger_logo.svg","Name":"Bescheinigung für Bewerbung"}'
+link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/7.0.0/normalize.min.css"
+link rel="stylesheet" href=url("/css/page.css")
+  -schueler.each_with_index do |s,i|
+    -hj=s.halbjahr(jahr, abschnitt)
+    page.grid size="A4" orientation="portrait"
+      .seitenlogo
+        img src=url("/images/#{doc.get("logo_seite")}") height="160px" data-failover=url("/images/#{Document.default "logo_seite"}")
+      .header
+        img src=url("/images/#{doc.get("logo_top")}") width="100%" data-failover=url("/images/#{Document.default "logo_top"}")
+        hr.hr-rot
+        h5 Bescheinigung für Bewerbungszwecke
+      .main
+        b #{s.anrede} #{s.vorname} #{s.zusatz} #{s.name}
+        br /
+        |geboren am #{(s.geburtsdatum).strftime("%d.%m.%Y")} in #{s.geburtsort}
+        br /
+        'ist seit dem #{s.beginn_bildungsgang.strftime("%d.%m.%Y")} bis zur Aushändigung des Zeugnisses
+        |#{s.schueler_studierende} des Bildungsgangs
+        br/
+        b ==repo.fachklasse_info(hj, 'Zeugniskopf')
+        .voffset-2
+        |Der allgemeine Prüfungsausschuss stellte in seiner Abschlusskonferenz am #{(hj.konferenzdatum).strftime("%-d.%-m.%Y")} fest:
+        .voffset-1
+        |#{s.anrede} #{s.vorname} #{s.name} hat das staatliche
+        h5.text-center
+          =repo.fachklasse_info hj, "Examen"
+        'am
+        =>(hj.noten.find{|l| l.fach.fach_krz == "KO"}._lernentw || "FEHLT!") rescue (Warnung.add(s.name, "Kolloquium nicht angegeben");"Fehlt")
+        'bestanden.
+        .voffset-1
+        table.table-noten
+          -unless s.fachklasse.kennung.start_with? "210" #FS HP
+            tr
+              td Berufspraktische Leistungen
+              td.td-fach-note
+                span =s.bk_abschluss_leistungen.find{|l| l.fach_krz == "BLgesamt"}.note(:note_abschluss) rescue (Warnung.add(s.name, "BL nicht angegeben"); "Fehlt")
+          tr
+            td Kolloquium
+            td.td-fach-note
+              span =s.bk_abschluss_leistungen.find{|l| l.fach_krz == "KO"}.note(:note_abschluss) rescue (Warnung.add(s.name, "Kolloquium nicht angegeben"); "Fehlt")
+          -unless s.fachklasse.kennung.start_with? "210" #FS HP
+            tr
+              td
+                b Gesamtnote Berufspraxis
+              td.td-fach-note
+                span
+                  b=s.bk_abschluss_leistungen.find{|l| l.fach_krz == "BPgesamt"}.note(:note_abschluss) rescue (Warnung.add(s.name, "Berufspraktikum nicht angegeben"); "Fehlt")
+        |#{s.anrede} #{s.vorname} #{s.name} ist mit Abschluss des Berufspraktikums am XXXXX berechtigt, die Berufsbezeichnung
+        h5.text-center
+          =s.berufsbezeichnung_mw.gsub("- praxisintegrierte Form","")
+        |zu führen.
+        .voffset-1
+          |Der Abschluss ist im Deutschen und Europäischen Qualifikationsrahmen dem Niveau #{s.fachklasse.dqr_niveau} zugeordnet.
+        .voffset-2
+        |#{s.anrede}#{s.geschlecht==3 ? "n":""} #{s.vorname} #{s.name} wird die
+        h5.text-center Fachhochschulreife
+        |zuerkannt. Entsprechend der Vereinbarung über den Erwerb einer Fachhochschulreife
+         in beruflichen Bildungsgängen – Beschluss der Kultusministerkonferenz vom
+         5. Juni 1998 in der jeweils geltenden Fassung – berechtigt dieses Zeugnis in allen
+         Ländern der Bundesrepublik Deutschland zum Studium an Fachhochschulen und
+         entsprechender Studiengänge an Universitäten.
+        .voffset-2
+        table.table-noten
+          tr
+            td Durchschnittsnote:
+            td.td-fach-note
+              span =s.durchschnittsnote_fhr
+            td in Worten:
+            td.td-fach-note
+              span =s.durchschnittsnote_fhr_in_worten
+      .footer
+        |#{Schule.ort}, den #{hj.zeugnis_datum.strftime("%d.%m.%Y")}
+        .voffset-6
+        .flex-grid
+          .col
+          .col
+            hr
+            .text-center.klein
+              =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name}"
+              |– Vorsitzender des allgemeinen Prüfungsausschusses
+          .col
+

+ 84 - 0
views/bescheinigung_bewerbung2.slim

@@ -0,0 +1,84 @@
+#doc-einstellungen data-json='{"logo_top":"bk_logo_ohne_text.svg","logo_seite":"traeger_logo.svg","Name":"Bescheinigung für Bewerbung – Alternative"}'
+link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/7.0.0/normalize.min.css"
+link rel="stylesheet" href=url("/css/page.css")
+  -schueler.each_with_index do |s,i|
+    -hj=s.halbjahr(jahr, abschnitt)
+    page.grid size="A4" orientation="portrait"
+      .seitenlogo
+        img src=url("/images/#{doc.get("logo_seite")}") height="160px" data-failover=url("/images/#{Document.default "logo_seite"}")
+      .header
+        img src=url("/images/#{doc.get("logo_top")}") width="100%" data-failover=url("/images/#{Document.default "logo_top"}")
+        hr.hr-rot
+        h5 Bescheinigung für Bewerbungszwecke
+      .main
+        b #{s.anrede} #{s.vorname} #{s.zusatz} #{s.name}
+        br /
+        |geboren am #{(s.geburtsdatum).strftime("%d.%m.%Y")} in #{s.geburtsort}
+        br /
+        'ist seit dem #{s.beginn_bildungsgang.strftime("%d.%m.%Y")} bis zur Aushändigung des Zeugnisses
+        |#{s.schueler_studierende} des Bildungsgangs
+        br/
+        b ==repo.fachklasse_info(hj, 'Zeugniskopf')
+        .voffset-2
+        |Der allgemeine Prüfungsausschuss stellte in seiner Abschlusskonferenz am #{(hj.konferenzdatum).strftime("%-d.%-m.%Y")} fest:
+        .voffset-1
+        |#{s.anrede} #{s.vorname} #{s.name} hat das staatliche
+        b<> =repo.fachklasse_info hj, "Examen"
+        'am
+        =>(hj.noten.find{|l| l.fach.fach_krz == "KO"}._lernentw || "FEHLT!") rescue (Warnung.add(s.name, "Kolloquium nicht angegeben");"Fehlt")
+        'bestanden.
+        .voffset-1
+        table.table-noten
+          -unless s.fachklasse.kennung.start_with? "210" #FS HP
+            tr
+              td Berufspraktische Leistungen
+              td.td-fach-note
+                span =s.bk_abschluss_leistungen.find{|l| l.fach_krz == "BLgesamt"}.note(:note_abschluss) rescue (Warnung.add(s.name, "BL nicht angegeben"); "Fehlt")
+          tr
+            td Kolloquium
+            td.td-fach-note
+              span =s.bk_abschluss_leistungen.find{|l| l.fach_krz == "KO"}.note(:note_abschluss) rescue (Warnung.add(s.name, "Kolloquium nicht angegeben"); "Fehlt")
+          -unless s.fachklasse.kennung.start_with? "210" #FS HP
+            tr
+              td
+                b Gesamtnote Berufspraxis
+              td.td-fach-note
+                span
+                  b=s.bk_abschluss_leistungen.find{|l| l.fach_krz == "BPgesamt"}.note(:note_abschluss) rescue (Warnung.add(s.name, "Berufspraktikum nicht angegeben"); "Fehlt")
+        |#{s.anrede} #{s.vorname} #{s.name} ist mit Abschluss des Berufspraktikums am XXXXX berechtigt, die Berufsbezeichnung
+        b<> =s.berufsbezeichnung_mw.gsub("- praxisintegrierte Form","")
+        |zu führen.
+        .voffset-1
+        |Der Abschluss ist im Deutschen und Europäischen Qualifikationsrahmen dem Niveau #{s.fachklasse.dqr_niveau} zugeordnet.
+        .voffset-2
+        |#{s.anrede}#{s.geschlecht==3 ? "n":""} #{s.vorname} #{s.name} wird die
+        b<> Fachhochschulreife
+        |zuerkannt.
+        .voffset-1
+        |Entsprechend der Vereinbarung über den Erwerb einer Fachhochschulreife
+         in beruflichen Bildungsgängen – Beschluss der Kultusministerkonferenz vom
+         5. Juni 1998 in der jeweils geltenden Fassung – berechtigt dieses Zeugnis in allen
+         Ländern der Bundesrepublik Deutschland zum Studium an Fachhochschulen und
+         entsprechender Studiengänge an Universitäten.
+        .voffset-2
+        table.table-noten
+          tr
+            td Durchschnittsnote:
+            td.td-fach-note
+              span =s.durchschnittsnote_fhr
+            td in&nbsp;Worten:
+            td.td-fach-note
+              span =s.durchschnittsnote_fhr_in_worten
+      .footer
+        |#{Schule.ort}, den #{hj.zeugnis_datum.strftime("%d.%m.%Y")}
+        .voffset-6
+        .flex-grid
+          .col
+          .col
+            hr
+            .text-center.klein
+              =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name}"
+              |– Vorsitzender des allgemeinen Prüfungsausschusses
+          .col
+
+

+ 321 - 0
views/page.scss

@@ -0,0 +1,321 @@
+$font-stack: "Tex Gyre Heros";
+$font-color-light: #c0c0c0;
+
+@font-face {
+  font-family: 'TeX Gyre Heros';
+  src: url('/fonts/texgyreheros-regular-webfont.woff') format('woff');
+  font-style: normal;
+}
+
+@font-face {
+  font-family: 'TeX Gyre Heros';
+  src: url('/fonts/texgyreheros-bold-webfont.woff') format('woff');
+  font-style: normal;
+  font-weight: bold;
+}
+
+@font-face {
+  font-family: 'TeX Gyre Heros';
+  src: url('/fonts/texgyreheros-italic-webfont.woff') format('woff');
+  font-style: italic;
+}
+
+@font-face {
+  font-family: 'TeX Gyre Heros';
+  src: url('/fonts/texgyreheros-bolditalic-webfont.woff') format('woff');
+  font-style: italic;
+  font-weight: bold;
+}
+
+.voffset-halb {
+  margin-top: 0.5rem
+}
+@for $i from 1 through 20 {
+  .voffset-#{$i} {
+    margin-top: #{$i}rem
+}}
+
+.text-center { text-align: center !important; }
+
+hr {
+  border: 0;
+  border-top: 1px solid #eee;
+  border-color: #000;
+  height: 1px;
+  margin: 3px 0;
+  &.hr-rot {
+    border-color: #ff2700;
+    margin: 8px 0;
+  }
+  &.hr-grau {
+    border-color: rgb(100,100,100) !important;
+  }
+}
+.table-eng {
+  margin-bottom: 0px;
+  td {
+    padding: 1px !important;
+    font-size: 9pt;
+  }
+}
+.table-noten {
+  margin-bottom: 1em;
+}
+.fach-bezeichnung {
+  padding-left: 10mm;
+  &.padding-5 {
+    padding-left: 2em;
+  }
+}
+.td-fach-note {
+  border: 5px white solid;
+  padding: 0;
+  width: 12em;
+  span {
+    // background-color: #c0c0c0 !important;
+    background-color: #dcdcdc !important;
+    text-align: center;
+    width: 10em;
+    display: block;
+    vertical-align: middle;
+    margin:0 auto;
+    &.e-note {
+      background-color: white !important;
+      width: 17em;
+      margin: 0;
+      padding: 0;
+    }
+  }
+}
+.td-padding-extra {
+  padding: 2mm 0 2mm 0;
+}
+.fachgruppe-margin {
+  padding-top: 0.3em;
+}
+.fett {
+  font-weight: bolder;
+}
+.lernfeld-lernbereich {
+  padding-left: 2em;
+}
+.lernbereich {
+  padding-left: 20mm;
+}
+.pull-bottom {
+  position: absolute;
+  bottom: 0;
+  padding: 0;
+  //row zu kurz, wenn Text nicht mehrzeilig ist
+  // width: 100%;
+  // evtl so besser:
+  display:block; width: auto;
+  .schulnummer {
+    text-align: right;
+  }
+}
+.font-small * {
+  font-size: 0.9rem !important;
+}
+.kleiner-10rem {
+  font-size: 0.9rem;
+}
+.kleiner-20rem {
+  font-size: 0.8rem;
+}
+.kleiner-30rem {
+  font-size: 0.7rem;
+}
+.kleiner-40rem {
+  font-size: 0.6rem;
+}
+.klein {
+  font-size: 8pt;
+}
+.klein-7 {
+  font-size: 7pt;
+}
+.klein-8 {
+  font-size: 8pt;
+}
+.klein-9 {
+  font-size: 9pt;
+}
+.eng {
+  line-height: 1.3em;
+}
+.grau *{
+  color: rgb(100,100,100) !important;
+}
+ul.dashes {
+  list-style-type: none;
+  padding-left: 1em;
+  li:before {
+    content: "–";
+    position: absolute;
+    margin-left: -1em;
+  }
+}
+.wasserzeichen {
+  position: absolute;
+  opacity: 0.5;
+  z-index: 99;
+  color: red;
+  font-size: 96pt;
+}
+
+.seitenlogo {
+  position: absolute;
+  bottom: 10mm;
+  left: 10mm;
+}
+* {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+}
+html {
+  font-size: 62.5%; }
+body {
+  font-size: 1.33em; /* currently ems cause chrome bug misinterpreting rems on body element */
+  line-height: 1.5;
+  font-weight: normal;
+  font-family: $font-stack;
+  color: #333;
+}
+/* Typography
+–––––––––––––––––––––––––––––––––––––––––––––––––– */
+h1, h2, h3, h4, h5, h6 {
+  margin-top: 0;
+  margin-bottom: 0;
+  font-weight: 400;
+}
+h1 { font-size: 4.0rem; line-height: 1.2;  letter-spacing: -.1rem;}
+h2 { font-size: 3.6rem; line-height: 1.25; letter-spacing: -.1rem; }
+h3 { font-size: 3.0rem; line-height: 1.3;  letter-spacing: -.1rem; }
+h4 { font-size: 2.4rem; line-height: 1.35; letter-spacing: -.08rem; }
+h5 { font-size: 1.8rem; line-height: 1.5;  letter-spacing: -.05rem; }
+h6 { font-size: 1.5rem; line-height: 1.6;  letter-spacing: 0; }
+p  { margin-top: 0; }
+
+page {
+  position: relative;
+  padding: 10mm 25mm 10mm 25mm;
+  display: block;
+  border: 1px solid black;
+  -webkit-box-shadow: 5px 5px 4px 0px rgba(192,192,192,1);
+  -moz-box-shadow: 5px 5px 4px 0px rgba(192,192,192,1);
+  box-shadow: 5px 5px 4px 0px rgba(192,192,192,1);
+  -webkit-print-color-adjust: exact;
+}
+page[size="A4"][orientation="portrait"] {
+  width: 210mm;
+  height: 297mm;
+}
+page[size="A4"][orientation="landscape"] {
+  width: 297mm;
+  height: 210mm;
+}
+page[size="A3"][orientation="portrait"] {
+  width: 420mm;
+  height: 297mm;
+}
+page[size="A3"][orientation="landscape"] {
+  width: 297mm;
+  height: 420mm;
+}
+page[size="A5"][orientation="landscape"] {
+  width: 14.8cm;
+  height: 21cm;
+}
+page[size="A5"][orientation="portrait"] {
+  width: 21cm;
+  height: 14.8cm;
+}
+
+.grid {
+   display: grid;
+   grid-template-columns: auto;
+   grid-template-rows: auto 1fr auto;
+   grid-template-areas: "header"
+                        "main"
+                        "footer";
+   grid-gap: 0px;
+   align-content: start;
+}
+
+.header {
+  grid-area: header;
+  align-self: start;
+}
+.main {
+  grid-area: main;
+  align-self: start;
+}
+.footer {
+  grid-area: footer;
+  align-self: end;
+}
+
+.flex-grid {
+  display: flex;
+}
+.col {
+  flex: 1;
+}
+
+.subpage {
+  font: 10pt $font-stack;
+  background-color: white;
+  position: relative;
+  min-height: 100%;
+  &.font-size-8 {
+    font: 8pt $font-stack;
+  }
+  &.font-size-11 {
+    font: 11pt $font-stack;
+  }
+}
+table.fixed {
+  table-layout: fixed;
+  table th, table td {
+    overflow: hidden;
+  }
+}
+
+@media print {
+  * {
+    //alles was Farbe hat mitdrucken
+    -webkit-print-color-adjust: exact;
+  }
+  //Bootstrap-Eigenart Links mit auszudrucken...
+  a[href]:after {
+    content: "";
+  }
+  .container {
+    padding: 0;
+    margin: 0;
+  }
+  page {
+    page-break-after: always;
+    margin: 0px;
+    border: none;
+    margin-bottom: 0px;
+    -webkit-box-shadow:initial;
+    -moz-box-shadow:initial;
+    box-shadow: initial;
+  }
+  @page {
+    page[size="A4"][orientation="portrait"] {
+      size: A4 portrait;
+    }
+    page[size="A4"][orientation="landscape"] {
+      size: A4 landscape;
+    }
+    page[size="A3"][orientation="portrait"] {
+      size: A3 portrait;
+    }
+    page[size="A3"][orientation="landscape"] {
+      size: A3 landscape;
+    }
+  }
+}