diff --git a/addons/index.html b/addons/index.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/cis/private/lehre/abmeldung.php b/cis/private/lehre/abmeldung.php
new file mode 100644
index 000000000..d8fa70a5f
--- /dev/null
+++ b/cis/private/lehre/abmeldung.php
@@ -0,0 +1,117 @@
+
+ */
+require_once('../../../config/cis.config.inc.php');
+require_once('../../../config/global.config.inc.php');
+require_once('../../../include/functions.inc.php');
+require_once('../../../include/phrasen.class.php');
+require_once('../../../include/lvangebot.class.php');
+require_once('../../../include/benutzergruppe.class.php');
+require_once('../../../include/lehrveranstaltung.class.php');
+
+$sprache = getSprache();
+$p = new phrasen($sprache);
+
+if (!$db = new basis_db())
+ die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung'));
+
+if (!$user=get_uid())
+ die($p->t('global/nichtAngemeldet'));
+
+echo '
+
+
+
+
+
+
+'.$p->t('lehre/abmeldung').' ';
+
+if(!isset($_GET['lvid']) || !isset($_GET['stsem']))
+{
+ die('Fehlerhafte Parameterübergabe');
+}
+
+$lvid = $_GET['lvid'];
+$stsem = $_GET['stsem'];
+
+$lvangebot = new lvangebot();
+$gruppen = $lvangebot->AbmeldungMoeglich($lvid, $stsem, $user);
+if(count($gruppen)>0)
+{
+ if(isset($_POST['gruppe']))
+ {
+ $gruppe = $_POST['gruppe'];
+ if(in_array($gruppe, $gruppen))
+ {
+ $benutzergruppe = new benutzergruppe();
+ if($benutzergruppe->delete($user, $gruppe))
+ {
+ echo $p->t('lehre/AbmeldungErfolgreich');
+ // Menuebaum neu Laden damit die LV nicht mehr angezeigt wird
+ echo '';
+ }
+ else
+ {
+ echo $benutzergruppe->errormsg;
+ }
+ }
+ else
+ {
+ echo $p->t('lehre/AbmeldungAusGruppeNichtMoeglich');
+ }
+ }
+ else
+ {
+ foreach($gruppen as $gruppe)
+ {
+ $lehrveranstaltung = new lehrveranstaltung();
+ $lehrveranstaltung->load($lvid);
+
+ if(defined('CIS_LEHRVERANSTALTUNG_LEHRFACH_ANZEIGEN') && CIS_LEHRVERANSTALTUNG_LEHRFACH_ANZEIGEN)
+ {
+ $qry = "SELECT
+ lehrfach_id
+ FROM
+ lehre.tbl_lehreinheit
+ JOIN lehre.tbl_lehreinheitgruppe USING(lehreinheit_id)
+ WHERE
+ gruppe_kurzbz=".$db->db_add_param($gruppe)."
+ AND lehrveranstaltung_id=".$db->db_add_param($lvid)."
+ AND studiensemester_kurzbz=".$db->db_add_param($stsem);
+ if($result = $db->db_query($qry))
+ {
+ if($row = $db->db_fetch_object($result))
+ {
+ $lehrveranstaltung->load($row->lehrfach_id);
+ }
+ }
+ }
+ echo ' ';
+ }
+ }
+}
+
+echo '
+';
+
diff --git a/cis/private/lehre/lesson.php b/cis/private/lehre/lesson.php
index 9b2d03695..963730b90 100644
--- a/cis/private/lehre/lesson.php
+++ b/cis/private/lehre/lesson.php
@@ -30,6 +30,7 @@ require_once('../../../include/studiengang.class.php');
require_once('../../../include/moodle.class.php');
require_once('../../../include/phrasen.class.php');
require_once('../../../include/lehre_tools.class.php');
+require_once('../../../include/lvangebot.class.php');
$sprache = getSprache();
$p = new phrasen($sprache);
@@ -141,17 +142,17 @@ if (isset($_GET["handbuch"])){
studiengang_kz==0)
- $angezeigtes_stsem = $stsem->getNearest();
- else
- $angezeigtes_stsem = $stsem->getNearest($semester);
+ $stsem = new studiensemester();
+ if($studiensemester_kurzbz!='')
+ $angezeigtes_stsem=$studiensemester_kurzbz;
+ else
+ {
+ if($lv->studiengang_kz==0)
+ $angezeigtes_stsem = $stsem->getNearest();
+ else
+ $angezeigtes_stsem = $stsem->getNearest($semester);
}
-
+ $lehrfach_id='';
if(defined('CIS_LEHRVERANSTALTUNG_LEHRFACH_ANZEIGEN') && CIS_LEHRVERANSTALTUNG_LEHRFACH_ANZEIGEN)
{
// Wenn der eingeloggte User zu einer der Lehreinheiten zugeteilt ist
@@ -165,7 +166,8 @@ if (isset($_GET["handbuch"])){
JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
WHERE
studiensemester_kurzbz=".$db->db_add_param($angezeigtes_stsem)."
- AND mitarbeiter_uid=".$db->db_add_param($user);
+ AND mitarbeiter_uid=".$db->db_add_param($user)."
+ AND lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER);
}
else
{
@@ -186,16 +188,19 @@ if (isset($_GET["handbuch"])){
{
if($row = $db->db_fetch_object($result))
{
- $lehrfach = new lehrveranstaltung();
+ $lehrfach = new lehrveranstaltung();
$lehrfach->load($row->lehrfach_id);
-
- echo $lehrfach->bezeichnung_arr[$sprache].' - '.$lv_obj->bezeichnung_arr[$sprache];
+ $lehrfach_id=$row->lehrfach_id;
+ if($lehrfach->bezeichnung_arr[$sprache]==$lv_obj->bezeichnung_arr[$sprache])
+ echo $lv_obj->bezeichnung_arr[$sprache];
+ else
+ echo $lehrfach->bezeichnung_arr[$sprache].' - '.$lv_obj->bezeichnung_arr[$sprache];
}
}
else
echo $lv_obj->bezeichnung_arr[$sprache];
}
- }
+ }
else
echo $lv_obj->bezeichnung_arr[$sprache];
@@ -223,8 +228,14 @@ if (isset($_GET["handbuch"])){
lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER)." AND
tbl_lehreinheitmitarbeiter.mitarbeiter_uid NOT like '_Dummy%' AND
tbl_benutzer.aktiv=true AND tbl_person.aktiv=true AND
- studiensemester_kurzbz=".$db->db_add_param($angezeigtes_stsem)."
- ORDER BY uid, lvleiter desc) as a ORDER BY lvleiter desc, nachname, vorname";
+ studiensemester_kurzbz=".$db->db_add_param($angezeigtes_stsem);
+
+ // Wenn das Lehrfach angezeigt werden nur die Lektoren angezeigt die dieser
+ // Lehreinheit / Lehrfach zugeordnet sind
+ if($lehrfach_id!='')
+ $qry.=" AND tbl_lehreinheit.lehrfach_id=".$db->db_add_param($lehrfach_id);
+
+ $qry.=" ORDER BY uid, lvleiter desc) as a ORDER BY lvleiter desc, nachname, vorname";
if(!$result = $db->db_query($qry))
{
diff --git a/include/lvangebot.class.php b/include/lvangebot.class.php
index 6fc521cdf..61594771c 100644
--- a/include/lvangebot.class.php
+++ b/include/lvangebot.class.php
@@ -448,5 +448,46 @@ class lvangebot extends basis_db
return false;
}
}
+
+ /**
+ * Prueft ob eine Abmeldung von einer Lehrveranstaltung moeglich ist
+ * und liefert die Gruppen von denen sich abgemeldet werden kann
+ * @param $lehrveranstaltung_id
+ * @param $studiensemester_kurzbz
+ * @param $uid
+ * @return $gruppen Array mit den Gruppen
+ */
+ public function AbmeldungMoeglich($lehrveranstaltung_id, $studiensemester_kurzbz, $uid)
+ {
+ $qry = "SELECT
+ gruppe_kurzbz
+ FROM
+ lehre.tbl_lvangebot
+ JOIN public.tbl_benutzergruppe USING(studiensemester_kurzbz, gruppe_kurzbz)
+ WHERE
+ tbl_lvangebot.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
+ AND tbl_benutzergruppe.uid=".$this->db_add_param($uid)."
+ AND (tbl_lvangebot.lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
+ OR tbl_lvangebot.lehrveranstaltung_id IN(SELECT lehrveranstaltung_id_kompatibel
+ FROM lehre.tbl_lehrveranstaltung_kompatibel
+ WHERE lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
+ )
+ )";
+
+ if($result = $this->db_query($qry))
+ {
+ $gruppen=array();
+ while($row = $this->db_fetch_object($result))
+ {
+ $gruppen[] = $row->gruppe_kurzbz;
+ }
+ return $gruppen;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
}
?>
diff --git a/include/tw/cis_menu_lv.inc.php b/include/tw/cis_menu_lv.inc.php
index b21a29151..bf1eb92ee 100644
--- a/include/tw/cis_menu_lv.inc.php
+++ b/include/tw/cis_menu_lv.inc.php
@@ -693,6 +693,28 @@ function checkZeilenUmbruch()
echo ' ';
}
+ checkZeilenUmbruch();
+
+ if(!defined('CIS_LEHRVERANSTALTUNG_ABMELDUNG_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_ABMELDUNG_ANZEIGEN)
+ {
+ if(!$is_lector)
+ {
+ $lvangebot = new lvangebot();
+ $gruppen = $lvangebot->AbmeldungMoeglich($lvid, $angezeigtes_stsem, $user);
+ if(count($gruppen)>0)
+ {
+ //Abmelden von der Lehrveranstaltung
+ $eintraegeprozeile++;
+ echo '';
+ echo '';
+ echo ' ';
+
+ echo "".$p->t('lehre/abmelden')." ";
+ echo ' ';
+ }
+ }
+ }
+
//Anzeigen von zusaetzlichen Lehre-Tools
$lehretools = new lehre_tools();
diff --git a/locale/de-AT/lehre.php b/locale/de-AT/lehre.php
index e9a9ac722..75a600892 100755
--- a/locale/de-AT/lehre.php
+++ b/locale/de-AT/lehre.php
@@ -35,4 +35,9 @@ $this->phrasen['lehre/mail']='E-Mail an Studierende';
$this->phrasen['lehre/keinMailverteiler']='Für die Gruppe(n) %s existiert kein Verteiler! Die Studierenden in diesen Gruppen bekommen kein Mail.';
$this->phrasen['lehre/pinboard']='Pinboard';
+$this->phrasen['lehre/abmelden']='Abmelden';
+$this->phrasen['lehre/abmeldung']='Abmeldung';
+$this->phrasen['lehre/AbmeldungErfolgreich']='Sie wurden erfolgreich von der Lehrveranstaltung abgemeldet';
+$this->phrasen['lehre/AbmeldungAusGruppeNichtMoeglich']='Sie können sich nicht von dieser Lehrveranstaltung abmelden';
+$this->phrasen['lehre/confirmAbmeldung']='Wollen Sie sich wirklich von der Lehrveranstaltung "%s" abmelden?';
?>