#77 bugblue-one-day-calendar-layout-patch
This commit is contained in:
parent
8591fb4b5f
commit
b3df228845
|
@ -325,7 +325,146 @@ function view_user_shifts() {
|
|||
|
||||
$shifts_table = "";
|
||||
$row_count = 0;
|
||||
foreach ($shifts as $shift) {
|
||||
//qqqq
|
||||
/*
|
||||
[0] => Array
|
||||
(
|
||||
[SID] => 1
|
||||
[start] => 1355958000
|
||||
[end] => 1355961600
|
||||
[RID] => 1
|
||||
[name] =>
|
||||
[URL] =>
|
||||
[PSID] =>
|
||||
[room_name] => test1
|
||||
)
|
||||
*/
|
||||
if(count($_SESSION['user_shifts']['days'])==1) {
|
||||
$myrooms=$rooms;
|
||||
foreach($myrooms as $k => $v) {
|
||||
if(array_search($v["id"],$_SESSION['user_shifts']['rooms'])===FALSE)
|
||||
unset($myrooms[$k]);
|
||||
}
|
||||
$first=date("U",strtotime($_SESSION['user_shifts']['days'][0]." 00:00:00"));
|
||||
$last=date("U",strtotime($_SESSION['user_shifts']['days'][0]." 23:59:59"));
|
||||
$maxshow=24*4;
|
||||
$block=array();
|
||||
foreach($myrooms as $room) {
|
||||
$rid=$room["id"];
|
||||
foreach($shifts as $shift) {
|
||||
if($shift["RID"]==$rid) {
|
||||
$blocks=($shift["end"]-$shift["start"])/(15*60);
|
||||
$firstblock=floor(($shift["start"]-$first)/(15*60));
|
||||
for($i=$firstblock;$i<$blocks+$firstblock && $i < $maxshow;$i++) {
|
||||
$block[$rid][$i]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$shifts_table="<table><tr><th>-</th>";
|
||||
foreach($myrooms as $room) {
|
||||
$rid=$room["id"];
|
||||
$colspan=1;
|
||||
foreach($block[$rid] as $max) if($max>$colspan) $colspan=$max;
|
||||
for($i=0;$i<$maxshow;$i++)
|
||||
$todo[$rid][$i]=$colspan;
|
||||
$shifts_table.="<th colspan=\"$colspan\">".$room['name']."</th>\n";
|
||||
}
|
||||
$shifts_table.="</tr>";
|
||||
for($i=0;$i<24*4;$i++) {
|
||||
$thistime=$first+($i*15*60);
|
||||
if($thistime%(60*60)==0) {
|
||||
$shifts_table.="<tr><th>".date("H:i",$thistime)."</th>";
|
||||
} else {
|
||||
$shifts_table.="<tr><th></th>";
|
||||
}
|
||||
foreach($myrooms as $room) {
|
||||
$rid=$room["id"];
|
||||
foreach($shifts as $shift) {
|
||||
if($shift["RID"]==$rid) {
|
||||
if(floor($shift["start"]/(15*60)) == $thistime/(15*60)) {
|
||||
$blocks=($shift["end"]-$shift["start"])/(15*60);
|
||||
if($blocks<1) $blocks=1;
|
||||
// qqqqqq
|
||||
$is_free = false;
|
||||
$shifts_row="";
|
||||
if (in_array('admin_shifts', $privileges))
|
||||
$shifts_row .= ' <a href="?p=user_shifts&edit_shift=' . $shift['SID'] . '">[edit]</a> <a href="?p=user_shifts&delete_shift=' . $shift['SID'] . '">[x]</a>';
|
||||
$shifts_row.= '<br />';
|
||||
$shift_has_special_needs = 0 < sql_num_query("SELECT `id` FROM `NeededAngelTypes` WHERE `shift_id` = " . $shift['SID']);
|
||||
$query = "SELECT *
|
||||
FROM `NeededAngelTypes`
|
||||
JOIN `AngelTypes`
|
||||
ON (`NeededAngelTypes`.`angel_type_id` = `AngelTypes`.`id`)
|
||||
WHERE ";
|
||||
if ($shift_has_special_needs)
|
||||
$query .= "`shift_id` = " . sql_escape($shift['SID']);
|
||||
else
|
||||
$query .= "`room_id` = " . sql_escape($shift['RID']);
|
||||
$query .= " AND `count` > 0
|
||||
AND `angel_type_id` IN (" . implode(',', $_SESSION['user_shifts']['types']) . ")
|
||||
ORDER BY `AngelTypes`.`name`";
|
||||
$angeltypes = sql_select($query);
|
||||
|
||||
if (count($angeltypes) > 0) {
|
||||
$my_shift = sql_num_query("SELECT * FROM `ShiftEntry` WHERE `SID`=" . sql_escape($shift['SID']) . " AND `UID`=" . sql_escape($user['UID']) . " LIMIT 1") > 0;
|
||||
foreach ($angeltypes as $angeltype) {
|
||||
$entries = sql_select("SELECT * FROM `ShiftEntry` JOIN `User` ON (`ShiftEntry`.`UID` = `User`.`UID`) WHERE `SID`=" . sql_escape($shift['SID']) . " AND `TID`=" . sql_escape($angeltype['id']) . " ORDER BY `Nick`");
|
||||
$entry_list = array ();
|
||||
foreach ($entries as $entry) {
|
||||
if($entry['Gekommen']==1)
|
||||
$style="font-weight:bold;";
|
||||
else
|
||||
$style="font-weight:normal;";
|
||||
if (in_array('user_shifts_admin', $privileges))
|
||||
$entry_list[] = "<span style=\"$style\">" . '<a href="' . page_link_to('user_myshifts') . '&id=' . $entry['UID'] . '">' . $entry['Nick'] . '</a> <a href="' . page_link_to('user_shifts') . '&entry_id=' . $entry['id'] . '">[x]</a></span>';
|
||||
else
|
||||
$entry_list[] = "<span style=\"$style\">" . $entry['Nick']."</span";
|
||||
}
|
||||
if ($angeltype['count'] - count($entries) > 0) {
|
||||
if ((time() < $shift['end'] && !$my_shift) || in_array('user_shifts_admin', $privileges)) {
|
||||
$entry_list[] = '<a href="' . page_link_to('user_shifts') . '&shift_id=' . $shift['SID'] . '&type_id=' . $angeltype['id'] . '">' . ($angeltype['count'] - count($entries)) . ' Helfer' . ($angeltype['count'] - count($entries) != 1 ? '' : '') . ' gebraucht »</a>';
|
||||
} else {
|
||||
$entry_list[] = ($angeltype['count'] - count($entries)) . ' Helfer gebraucht';
|
||||
}
|
||||
$is_free = true;
|
||||
}
|
||||
|
||||
$shifts_row .= '<b>' . $angeltype['name'] . ':</b> ';
|
||||
$shifts_row .= join(", ", $entry_list);
|
||||
$shifts_row .= '<br />';
|
||||
}
|
||||
if (in_array('user_shifts_admin', $privileges)) {
|
||||
$shifts_row .= '<a href="' . page_link_to('user_shifts') . '&shift_id=' . $shift['SID'] . '&type_id=' . $angeltype['id'] . '">Weitere Helfer eintragen »</a>';
|
||||
}
|
||||
}
|
||||
$color="";
|
||||
if($is_free) {
|
||||
$color="style=\"background: #F6CECE\";";
|
||||
} else {
|
||||
$color="style=\"background: #BCF5A9\";";
|
||||
}
|
||||
$shifts_table.="<td rowspan=$blocks $color>";
|
||||
if (($is_free && in_array(0, $_SESSION['user_shifts']['filled'])) || (!$is_free && in_array(1, $_SESSION['user_shifts']['filled']))) {
|
||||
$shifts_table.=$shifts_row;
|
||||
}
|
||||
$shifts_table.="</td>";
|
||||
for($j=0;$j<$blocks;$j++) {
|
||||
$todo[$rid][$i+$j]--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
while($todo[$rid][$i]) {
|
||||
$shifts_table.='<td style="border: 1px"></td>';
|
||||
$todo[$rid][$i]--;
|
||||
}
|
||||
}
|
||||
$shifts_table.="</tr>\n";
|
||||
}
|
||||
$shifts_table.="</table>";
|
||||
// qqq
|
||||
} else foreach ($shifts as $shift) {
|
||||
$info = array ();
|
||||
if (count($_SESSION['user_shifts']['days']) > 1)
|
||||
$info[] = date("Y-m-d", $shift['start']);
|
||||
|
|
Loading…
Reference in New Issue