mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
CIS Wochenplan Reservierung update
- Mitarbeiter autocomplete for reserving one hour for multiple Mitarbeiter at same time - possible to delete Reservations directly in Wochenplan
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
require_once('../../../config/cis.config.inc.php');
|
||||
require_once('../../../include/basis_db.class.php');
|
||||
require_once('../../../include/benutzer.class.php');
|
||||
require_once('../../../include/mitarbeiter.class.php');
|
||||
require_once('../../../include/studiengang.class.php');
|
||||
require_once('../../../include/functions.inc.php');
|
||||
require_once('../../../include/lehrverband.class.php');
|
||||
@@ -56,7 +57,30 @@ switch($_REQUEST['autocomplete'])
|
||||
echo json_encode($result_obj);
|
||||
}
|
||||
break;
|
||||
case 'mitarbeiter':
|
||||
$search=trim((isset($_REQUEST['term']) ? $_REQUEST['term']:''));
|
||||
if (is_null($search) ||$search=='')
|
||||
exit();
|
||||
|
||||
$mitarbeiter = new mitarbeiter();
|
||||
$searchItems = explode(' ',$search);
|
||||
|
||||
foreach ($searchItems as $searchItem)
|
||||
{
|
||||
if ($mitarbeiter->search($searchItem))
|
||||
{
|
||||
$result_obj = array();
|
||||
foreach ($mitarbeiter->result as $row)
|
||||
{
|
||||
$item['vorname'] = html_entity_decode($row->vorname);
|
||||
$item['nachname'] = html_entity_decode($row->nachname);
|
||||
$item['uid'] = html_entity_decode($row->uid);
|
||||
$result_obj[] = $item;
|
||||
}
|
||||
}
|
||||
}
|
||||
echo json_encode($result_obj);
|
||||
break;
|
||||
case 'getSemester':
|
||||
$studiengang = new studiengang();
|
||||
$data = array();
|
||||
|
||||
@@ -121,7 +121,7 @@ if (isset($_POST['titel']))
|
||||
<META charset="UTF-8">
|
||||
<TITLE><?php echo $p->t('lvplan/lehrveranstaltungsplan').' '.CAMPUS_NAME;?></TITLE>
|
||||
<?php include('../../../include/meta/jquery.php');?>
|
||||
|
||||
<script type="text/javascript" src="../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
function MM_jumpMenu(targ,selObj,restore)
|
||||
@@ -144,6 +144,45 @@ if (isset($_POST['titel']))
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
$("#user_uid").autocomplete({
|
||||
source: "lvplan_autocomplete.php?autocomplete=mitarbeiter",
|
||||
minLength:2,
|
||||
response: function(event, ui)
|
||||
{
|
||||
//Value und Label fuer die Anzeige setzen
|
||||
for(var i in ui.content)
|
||||
{
|
||||
ui.content[i].value=ui.content[i].vorname+" "+ui.content[i].nachname+" ("+ui.content[i].uid+")";
|
||||
ui.content[i].label=ui.content[i].vorname+" "+ui.content[i].nachname+" ("+ui.content[i].uid+")";
|
||||
}
|
||||
},
|
||||
select: function(event, ui)
|
||||
{
|
||||
var uid = ui.item.uid;
|
||||
|
||||
if ($("#lecturer_"+uid).length <= 0)
|
||||
{
|
||||
$("#user_uid").after("<input type='hidden' name='lecturer_uids[]' value='" + uid + "' id='lecturer_" + uid + "'>");
|
||||
$("#firstinputrow").after("<tr id='lecturerrow_"+uid+"'>" +
|
||||
"<td colspan='9'></td>" +
|
||||
"<td class='lecturercell'>" +
|
||||
"<div class='lecturercellname'>"+ui.item.value+"</div>" +
|
||||
"<div class='lecturercelldelete'>" +
|
||||
"<img src='../../../skin/images/delete_x.png' id='deleteLecturer_"+uid+"' width='11px' height='11px' title='<?php echo $p->t('global/löschen');?>'>" +
|
||||
"</div>" +
|
||||
"</td></tr>");
|
||||
$("#deleteLecturer_"+uid).click(
|
||||
function() {
|
||||
$("#lecturer_"+uid).remove();
|
||||
$("#lecturerrow_"+uid).remove();
|
||||
}
|
||||
);
|
||||
}
|
||||
$("#user_uid").val("");
|
||||
|
||||
return false;
|
||||
}
|
||||
});
|
||||
$("select[name='studiengang_kz']").change(function() {
|
||||
var studiengang_kz = $("select[name='studiengang_kz']").val();
|
||||
$.ajax({
|
||||
@@ -251,6 +290,7 @@ if (isset($_POST['titel']))
|
||||
';
|
||||
?>
|
||||
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
|
||||
<link href="../../../skin/jquery-ui-1.9.2.custom.min.css" rel="stylesheet" type="text/css">
|
||||
</HEAD>
|
||||
<BODY id="inhalt">
|
||||
<h1><?php echo $p->t('lvplan/wochenplan');?></h1>
|
||||
@@ -305,8 +345,51 @@ if (isset($_POST['reserve']))
|
||||
$reserve=$_POST['reserve'];
|
||||
else if (isset($_GET['reserve']))
|
||||
$reserve=$_GET['reserve'];
|
||||
|
||||
if (isset($_GET['reservtodelete']))
|
||||
$reservtodelete=$_GET['reservtodelete'];
|
||||
|
||||
// Loeschen von Reservierungen
|
||||
if (isset($reservtodelete))
|
||||
{
|
||||
if (is_array($reservtodelete))
|
||||
{
|
||||
foreach ($reservtodelete as $delete_id)
|
||||
{
|
||||
if (!is_numeric($delete_id))
|
||||
die('ungueltige ID');
|
||||
}
|
||||
|
||||
$reservierung = new reservierung();
|
||||
$reservdelcount = 0;
|
||||
$reservberechtigt = $rechte->isBerechtigt('lehre/reservierung', null, 'suid');
|
||||
|
||||
foreach ($reservtodelete as $delete_id)
|
||||
{
|
||||
if ($reservierung->load($delete_id))
|
||||
{
|
||||
if ($reservberechtigt || $reservierung->uid==$uid || $reservierung->insertvon==$uid)
|
||||
{
|
||||
if($reservierung->delete($delete_id))
|
||||
$reservdelcount++;
|
||||
else
|
||||
echo $reservierung->errormsg;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo '<b>'.$p->t('global/keineBerechtigung').'</b><br>';
|
||||
}
|
||||
}
|
||||
else
|
||||
echo '<b>'.$p->t('global/fehleraufgetreten').'!</b><br>';
|
||||
}
|
||||
}
|
||||
else
|
||||
die('<b>ungueltige IDs</b><br>');
|
||||
}
|
||||
|
||||
// Reservieren
|
||||
if (isset($reserve) && $raumres)
|
||||
elseif (isset($reserve) && $raumres)
|
||||
{
|
||||
$ort_obj = new ort();
|
||||
if(!$ort_obj->load($ort_kurzbz))
|
||||
@@ -358,20 +441,17 @@ if (isset($reserve) && $raumres)
|
||||
$reservierung->insertamum=date('Y-m-d H:i:s');
|
||||
$reservierung->insertvon=$uid;
|
||||
|
||||
if(isset($_REQUEST['studiengang_kz']))
|
||||
if(!empty($_REQUEST['lecturer_uids'] && isset($_REQUEST['studiengang_kz'])))
|
||||
{
|
||||
$lecturer_uids = $_REQUEST['lecturer_uids'];
|
||||
foreach ($lecturer_uids as $lecturer_uid)
|
||||
{
|
||||
$reservierung->studiengang_kz = $_REQUEST['studiengang_kz'];
|
||||
$reservierung->semester = $_REQUEST['semester'];
|
||||
$reservierung->verband = $_REQUEST['verband'];
|
||||
$reservierung->gruppe = $_REQUEST['gruppe'];
|
||||
$reservierung->gruppe_kurzbz = $_REQUEST['gruppe_kurzbz'];
|
||||
$reservierung->uid = $_REQUEST['user_uid'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$reservierung->studiengang_kz='0';
|
||||
$reservierung->uid = $uid;
|
||||
}
|
||||
$reservierung->uid = $lecturer_uid;
|
||||
|
||||
if(!$reservierung->save(true))
|
||||
echo $reservierung->errormsg;
|
||||
@@ -380,6 +460,17 @@ if (isset($reserve) && $raumres)
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$reservierung->studiengang_kz='0';
|
||||
$reservierung->uid = $uid;
|
||||
if(!$reservierung->save(true))
|
||||
echo $reservierung->errormsg;
|
||||
else
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<br>$ort_kurzbz ".$p->t('lvplan/bereitsReserviert').": $datum_res - Stunde $stunde <br>";
|
||||
}
|
||||
@@ -429,6 +520,8 @@ else
|
||||
|
||||
if (isset($count))
|
||||
echo "Es wurde".($count!=1?'n':'')." $count Stunde".($count!=1?'n':'')." reserviert!<BR>";
|
||||
if (isset($reservdelcount))
|
||||
echo "Es wurde".($reservdelcount!=1?'n':'')." $reservdelcount Stunde".($reservdelcount!=1?'n':'')." gelöscht!<BR>";
|
||||
?>
|
||||
|
||||
<P><br><?php echo $p->t('lvplan/fehlerUndFeedback');?> <A class="Item" href="mailto:<?php echo MAIL_LVPLAN?>"><?php echo $p->t('lvplan/lvKoordinationsstelle');?></A>.</P>
|
||||
|
||||
@@ -702,6 +702,7 @@ class wochenplan extends basis_db
|
||||
$datum=$datum_mon=$this->datum;
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user_uid);
|
||||
$reservberechtigt = $rechte->isBerechtigt('lehre/reservierung', null, 'suid');
|
||||
|
||||
for ($i=1; $i<=TAGE_PRO_WOCHE; $i++)
|
||||
{
|
||||
@@ -765,6 +766,12 @@ class wochenplan extends basis_db
|
||||
$reservierung=$lehrstunde->reservierung;
|
||||
}
|
||||
|
||||
$datum_res_lektor_start_m = date('Y-m-d', $datum_res_lektor_start);
|
||||
$datum_res_lektor_ende_m = date('Y-m-d', $datum_res_lektor_ende);
|
||||
$datum_m = date('Y-m-d',$datum);
|
||||
|
||||
$showdelete = $raumres && $this->type=='ort' && (/*$datum>=$datum_now && */$datum_m>=$datum_res_lektor_start_m && $datum_m<=$datum_res_lektor_ende_m);
|
||||
|
||||
if ($gruppieren)
|
||||
{
|
||||
// Unterrichtsnummer (Kollision?)
|
||||
@@ -836,6 +843,14 @@ class wochenplan extends basis_db
|
||||
if (isset($this->std_plan[$i][$j][0]->farbe))
|
||||
echo 'style="background-color: #'.$this->std_plan[$i][$j][0]->farbe.';"';
|
||||
echo '>'.$blink_ein.'<DIV align="center">';
|
||||
|
||||
$ort = $this->std_plan[$i][$j][0]->ort;
|
||||
|
||||
if ($showdelete)
|
||||
{
|
||||
$this->stpltable_deletelink($ort, $datum, $j, $user_uid, $reservberechtigt);
|
||||
}
|
||||
|
||||
// Link zu Details setzten
|
||||
echo '<A class="stpl_detail" onClick="window.open(';
|
||||
echo "'stpl_detail.php";
|
||||
@@ -845,7 +860,7 @@ class wochenplan extends basis_db
|
||||
echo '&sem='.$this->sem;
|
||||
echo '&ver='.$this->ver;
|
||||
echo '&grp='.$this->grp;
|
||||
echo '&ort_kurzbz='.$this->std_plan[$i][$j][0]->ort;
|
||||
echo '&ort_kurzbz='.$ort;
|
||||
echo "','Details', 'height=320,width=550,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=no,toolbar=no,location=no,menubar=no,dependent=yes');return false;";
|
||||
echo '" title="'.$this->convert_html_chars($titel).'" ';
|
||||
echo ' href="#">';
|
||||
@@ -902,6 +917,12 @@ class wochenplan extends basis_db
|
||||
echo 'style="background-color: #'.$uEinheit['farbe'].'; margin-bottom: 3px;"';
|
||||
echo '>';
|
||||
|
||||
// Löschlink anzeigen
|
||||
if ($showdelete)
|
||||
{
|
||||
$this->stpltable_deletelink($uEinheit['ort'][0], $datum, $j, $user_uid, $reservberechtigt);
|
||||
}
|
||||
|
||||
// Link zu Details setzten
|
||||
echo '<A class="stpl_detail" onClick="window.open(';
|
||||
echo "'stpl_detail.php";
|
||||
@@ -982,37 +1003,22 @@ class wochenplan extends basis_db
|
||||
{
|
||||
$check_all_checkbox='';
|
||||
|
||||
echo '<br><table><tr>';
|
||||
echo '<br><table><tr id="firstinputrow">';
|
||||
echo ' <td>'.$p->t('global/titel').':</td><td><input onchange="if (this.value.length>0 && document.getElementById(\'beschreibung\').value.length<1) {document.getElementById(\'beschreibung\').value=document.getElementById(\'titel\').value;document.getElementById(\'beschreibung\').focus();};" type="text" id="titel" name="titel" size="10" maxlength="10" value="" /></td> '.$this->crlf;
|
||||
echo ' <td>'.$p->t('global/beschreibung').':</td><td colspan="6"> <input onchange="if (this.value.length<1 && document.getElementById(\'titel\').value.length>0) {alert(\'Achtung! Speichern nur mit Beschreibung moeglich!\');this.focus();};" type="text" id="beschreibung" name="beschreibung" size="20" maxlength="32" value="" /> </td>'.$this->crlf;
|
||||
echo ' <td>'.$p->t('global/beschreibung').':</td><td colspan="5"> <input onchange="if (this.value.length<1 && document.getElementById(\'titel\').value.length>0) {alert(\'Achtung! Speichern nur mit Beschreibung moeglich!\');this.focus();};" type="text" id="beschreibung" name="beschreibung" size="20" maxlength="32" value="" /> </td>'.$this->crlf;
|
||||
|
||||
//Pruefen ob die erweiterte Reservierungsrechte vorhanden sind
|
||||
if ($rechte->isBerechtigt('lehre/reservierung', null, 'sui'))
|
||||
{
|
||||
$check_all_checkbox='';
|
||||
//Lektor
|
||||
echo '<td>'.$p->t('lvplan/lektor').':</td>
|
||||
<td><SELECT name="user_uid">'.$this->crlf;
|
||||
|
||||
$qry = "SELECT uid, kurzbz, vorname, nachname FROM campus.vw_mitarbeiter
|
||||
WHERE aktiv=true
|
||||
ORDER BY nachname, uid";
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
while ($row = $this->db_fetch_object($result))
|
||||
{
|
||||
if ($row->uid==$user_uid)
|
||||
$selected='selected="selected"';
|
||||
else
|
||||
$selected='';
|
||||
|
||||
echo '<OPTION value="'.$row->uid.'" '.$selected.'>'.$row->nachname.' '.$row->vorname.' - '.$row->uid.'</OPTION>'.$this->crlf;
|
||||
}
|
||||
}
|
||||
|
||||
echo '</SELECT></td>'.$this->crlf;
|
||||
echo '</tr><tr>'.$this->crlf;
|
||||
echo "<td>".$p->t('lvplan/lektor').":</td>
|
||||
<td><input class='search' placeholder='".$p->t('lvplan/nameEingeben')."' type='text' id='user_uid' size='32' value=''>".$this->crlf;
|
||||
echo '</td>'.$this->crlf;
|
||||
echo '<td> </td>';
|
||||
echo '</tr>';
|
||||
echo '<tr>'.$this->crlf;
|
||||
|
||||
//Studiengaenge Laden fuer die eine erweiterte Reservierungsberechtigung vorhanden ist
|
||||
$stg = new studiengang();
|
||||
@@ -1112,7 +1118,7 @@ class wochenplan extends basis_db
|
||||
echo '</td>';
|
||||
|
||||
echo '</tr></table></form>';
|
||||
echo ' <a href="stpl_reserve_list.php">'.$p->t('lvplan/reservierungenLoeschen').' </a>';
|
||||
echo ' <a href="stpl_reserve_list.php">'.$p->t('lvplan/meineReservierungenAnzeigen').' </a>';
|
||||
}
|
||||
elseif ($this->type=='ort' && $raumReservierbar == false)
|
||||
{
|
||||
@@ -2724,5 +2730,48 @@ class wochenplan extends basis_db
|
||||
}
|
||||
echo ' </tr></table></div></div></div></td></tr></table>'.$crlf;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt Link zum Löschen der Reservierungen für einen Ort zu einer Zeit zuürck.
|
||||
* @param $ort
|
||||
* @param $datum
|
||||
* @param $stunde
|
||||
* @param $user_uid eingeloggter User
|
||||
* @param $reservberechtigt erweiterte Reservierungsberechtigung
|
||||
*/
|
||||
private function stpltable_deletelink($ort, $datum, $stunde, $user_uid, $reservberechtigt)
|
||||
{
|
||||
global $p;
|
||||
$deleteberechtigt = false;
|
||||
$reservtodelete = array();
|
||||
|
||||
$qry = "SELECT reservierung_id, insertvon, uid FROM campus.tbl_reservierung
|
||||
WHERE ort_kurzbz=" . $this->db_add_param($ort) . "
|
||||
AND datum = " . $this->db_add_param(date('Y-m-d', $datum)) . "
|
||||
AND stunde = " . $this->db_add_param($stunde);
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
while ($row = $this->db_fetch_object($result))
|
||||
{
|
||||
if ($reservberechtigt || $row->uid == $user_uid || $row->insertvon == $user_uid)
|
||||
{
|
||||
$deleteberechtigt = true;
|
||||
$reservtodelete[] = $row->reservierung_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($deleteberechtigt)
|
||||
{
|
||||
$reservetodeleteurl = 'stpl_week.php?type=ort&ort_kurzbz='.$ort.'&datum='.$datum;
|
||||
$reservetodeleteurl .= '&reservtodelete[]='.implode("&reservtodelete[]=", $reservtodelete);
|
||||
echo '<div class="reservdelete">
|
||||
<a href="'.$reservetodeleteurl.'" title="' . $p->t('lvplan/reservierungenLoeschen') . '">
|
||||
<img src="../../../skin/images/cross.png" width="12px" height="12px"/>
|
||||
</a>
|
||||
</div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -642,6 +642,15 @@ TABLE.stdplan TD
|
||||
{
|
||||
background-color: #E9ECEE;
|
||||
}
|
||||
|
||||
/*reservation delete-"x"*/
|
||||
TABLE.stdplan div.reservdelete {
|
||||
text-align: right;
|
||||
margin-bottom:-4px;
|
||||
padding-top: 2px;
|
||||
padding-right: 2px;
|
||||
}
|
||||
|
||||
.row-even { /*liste1*/
|
||||
background-color:#f2f2f2;
|
||||
}
|
||||
@@ -650,6 +659,23 @@ TABLE.stdplan TD
|
||||
background-color:#ffffff;
|
||||
}
|
||||
|
||||
/*lecturer reservation rows*/
|
||||
td.lecturercell {
|
||||
border: 1px solid;
|
||||
}
|
||||
|
||||
td.lecturercell div.lecturercellname {
|
||||
width: 95%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
td.lecturercell div.lecturercelldelete {
|
||||
width: 5%;
|
||||
float: left;
|
||||
text-align: right;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/*
|
||||
==== Fonts ====
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user