mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-19 16:02:15 +00:00
Mailverteiler Personenliste mit Filter erweitert
In der Personenliste der Mailverteiler kann nun mit Filtern die Liste eingeschränkt werden. Diesen Personen kann man dann direkt ein Mail schreiben (mit dem eigenen Mailclient)
This commit is contained in:
+142
-19
@@ -50,35 +50,142 @@ echo '<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link href="../../skin/style.css.php" rel="stylesheet" type="text/css">
|
||||
<link rel="stylesheet" href="../../skin/tablesort.css" type="text/css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../../skin/jquery-ui-1.9.2.custom.min.css">
|
||||
<script type="text/javascript" src="../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
|
||||
<script type="text/javascript" src="../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
|
||||
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript" src="../../include/js/jquery.ui.datepicker.translation.js"></script>
|
||||
<script type="text/javascript" src="../../vendor/jquery/sizzle/sizzle.js"></script>
|
||||
<link href="../../skin/style.css.php" rel="stylesheet" type="text/css">';
|
||||
|
||||
include('../../include/meta/jquery.php');
|
||||
include('../../include/meta/jquery-tablesorter.php');
|
||||
|
||||
?>
|
||||
<script src="../../vendor/rmariuzzo/jquery-checkboxes/dist/jquery.checkboxes-1.0.7.min.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function()
|
||||
{
|
||||
$("#table").tablesorter(
|
||||
{
|
||||
sortList: [[0,0]],
|
||||
widgets: [\'zebra\'],
|
||||
sortList: [[1,0]],
|
||||
widgets: ["zebra", "filter", "stickyHeaders"],
|
||||
headers: { 0: {sorter: false, filter: false}},
|
||||
widgetOptions : {filter_saveFilters : false,
|
||||
filter_functions : {
|
||||
// Add select menu to this column
|
||||
3 : {
|
||||
"M" : function(e, n, f, i, $r, c, data) { return /M/.test(e); },
|
||||
"W" : function(e, n, f, i, $r, c, data) { return /W/.test(e); }
|
||||
},
|
||||
4 : {
|
||||
" - " : function(e, n, f, i, $r, c, data) { return /-/.test(e); },
|
||||
"Ja" : function(e, n, f, i, $r, c, data) { return /Ja/.test(e); },
|
||||
"Nein" : function(e, n, f, i, $r, c, data) { return /Nein/.test(e); }
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
// Set number of result rows after filtering
|
||||
.bind("filterEnd",function(e, t)
|
||||
{
|
||||
var rows = $('table.hasFilters tbody tr:visible').length;
|
||||
$("#rowCounter").html(rows);
|
||||
});
|
||||
|
||||
$("#toggle").on("click", function(e)
|
||||
{
|
||||
$("#table").checkboxes("toggle");
|
||||
e.preventDefault();
|
||||
if ($("input.chkbox:checked").length > 0)
|
||||
$("#mailSendButton").html('<?php echo $p->t('mailverteiler/mailAnMarkierteSenden'); ?>');
|
||||
else
|
||||
$("#mailSendButton").html('<?php echo $p->t('mailverteiler/mailAnAlleSenden'); ?>');
|
||||
});
|
||||
|
||||
$("#uncheck").on("click", function(e)
|
||||
{
|
||||
$("#table").checkboxes("uncheck");
|
||||
e.preventDefault();
|
||||
if ($("input.chkbox:checked").length > 0)
|
||||
$("#mailSendButton").html('<?php echo $p->t('mailverteiler/mailAnMarkierteSenden'); ?>');
|
||||
else
|
||||
$("#mailSendButton").html('<?php echo $p->t('mailverteiler/mailAnAlleSenden'); ?>');
|
||||
});
|
||||
|
||||
$("#table").checkboxes("range", true);
|
||||
|
||||
$('.chkbox').change(function()
|
||||
{
|
||||
if ($("input.chkbox:checked").length > 0)
|
||||
$("#mailSendButton").html('<?php echo $p->t('mailverteiler/mailAnMarkierteSenden'); ?>');
|
||||
else
|
||||
$("#mailSendButton").html('<?php echo $p->t('mailverteiler/mailAnAlleSenden'); ?>');
|
||||
});
|
||||
}
|
||||
);
|
||||
function SendMail()
|
||||
{
|
||||
// Wenn Checkboxen markiert sind, an diese senden, sonst an alle
|
||||
if ($("input.chkbox:checked").length > 0)
|
||||
{
|
||||
var elements = $("input.chkbox:checked");
|
||||
}
|
||||
else
|
||||
{
|
||||
var elements = $("input.chkbox:visible");
|
||||
}
|
||||
|
||||
var mailadressen = "";
|
||||
var adresse = "";
|
||||
var counter = 0;
|
||||
|
||||
// Schleife ueber die einzelnen Elemente
|
||||
// Aus Spamgründen dürfen je Nachricht maximal 100 Empfänger enthalten sein
|
||||
// Deshalb wird nach 100 Einträgen ein neues window.location.href erzeugt
|
||||
// Außerdem darf die URL nicht länger als 2048 Zeichen sein
|
||||
$.each(elements, function(index, item)
|
||||
{
|
||||
adresse = $(this).closest("tr").find("td.clm_email a:first").attr("href");
|
||||
adresse = adresse.replace(/^mailto?:/, "") + ";";
|
||||
if (counter > 0 && (counter % 100 === 0) || (mailadressen.length + adresse.length > 2048))
|
||||
{
|
||||
window.location.href = "mailto:?bcc="+mailadressen;
|
||||
mailadressen = "";
|
||||
counter = 0;
|
||||
}
|
||||
mailadressen += adresse;
|
||||
counter ++;
|
||||
});
|
||||
window.location.href = "mailto:?bcc="+mailadressen;
|
||||
}
|
||||
</script>
|
||||
<title>' . $p->t('mailverteiler/personenImVerteiler') . '</title>
|
||||
<style type="text/css">
|
||||
.buttongreen, a.buttongreen
|
||||
{
|
||||
cursor: pointer;
|
||||
color: #FFFFFF;
|
||||
margin: 0 5px 5px 0;
|
||||
text-decoration: none;
|
||||
border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
background-color: #5cb85c;
|
||||
border-top: 3px solid #5cb85c;
|
||||
border-bottom: 3px solid #5cb85c;
|
||||
border-right: 8px solid #5cb85c;
|
||||
border-left: 8px solid #5cb85c;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
</style>
|
||||
<?php
|
||||
echo ' <title>' . $p->t('mailverteiler/personenImVerteiler') . '</title>
|
||||
</head>
|
||||
<body id="inhalt">';
|
||||
|
||||
$qry = "SELECT
|
||||
uid, vorname, nachname
|
||||
uid, vorname, nachname, geschlecht, fixangestellt
|
||||
FROM
|
||||
campus.vw_benutzer
|
||||
JOIN
|
||||
tbl_benutzergruppe USING (uid)
|
||||
LEFT JOIN
|
||||
public.tbl_mitarbeiter ON (uid = mitarbeiter_uid)
|
||||
WHERE
|
||||
gruppe_kurzbz=".$db->db_add_param($gruppe_kurzbz);
|
||||
|
||||
@@ -96,16 +203,29 @@ $qry = "SELECT
|
||||
|
||||
$qry .= " ORDER BY
|
||||
nachname, vorname";
|
||||
|
||||
echo '<p>'.$p->t('mailverteiler/anleitungstextMailPersInGroup').'<p>';
|
||||
echo '<a class="buttongreen" href="#" onclick="SendMail()" id="mailSendButton">' . $p->t('mailverteiler/mailAnAlleSenden') . '</a>';
|
||||
|
||||
if ($result = $db->db_query($qry))
|
||||
{
|
||||
echo '<p>' . $row = $db->db_num_rows($result) . ' ' . $p->t('mailverteiler/personen');
|
||||
echo '<p><span id="rowCounter">' . $row = $db->db_num_rows($result) . '</span> ' . $p->t('mailverteiler/personen') . '</p>';
|
||||
}
|
||||
|
||||
echo '<table class="tablesorter" id="table">
|
||||
echo '
|
||||
<table class="tablesorter" id="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: center; width: 80px">
|
||||
<nobr>
|
||||
<a href="#" data-toggle="checkboxes" data-action="toggle" id="toggle" title="Alle markieren / Invertieren"><img src="../../skin/images/checkbox_toggle.png" name="toggle"></a>
|
||||
<a href="#" data-toggle="checkboxes" data-action="uncheck" id="uncheck" title="Keine markieren"><img src="../../skin/images/checkbox_uncheck.png" name="toggle"></a>
|
||||
</nobr>
|
||||
</th>
|
||||
<th>' . $p->t('global/nachname') . '</th>
|
||||
<th>' . $p->t('global/vorname') . '</th>
|
||||
<th>' . $p->t('global/geschlecht') . '</th>
|
||||
<th>' . $p->t('global/fixangestellt') . '</th>
|
||||
<th>' . $p->t('global/mail') . '</th>
|
||||
</tr></thead><tbody>';
|
||||
|
||||
@@ -113,11 +233,14 @@ if ($result = $db->db_query($qry))
|
||||
{
|
||||
while ($row = $db->db_fetch_object($result))
|
||||
{
|
||||
echo "<tr>";
|
||||
echo " <td>$row->nachname</td>";
|
||||
echo " <td>$row->vorname</td>";
|
||||
echo " <td><a href='mailto:$row->uid@" . DOMAIN . "' class='Item'>$row->uid@" . DOMAIN . "</a></td>";
|
||||
echo "</tr>";
|
||||
echo '<tr>';
|
||||
echo ' <td style="text-align: center"><input type="checkbox" class="chkbox" id="checkbox_'.$row->uid.'" name="checkbox['.$row->uid.']"></td>';
|
||||
echo ' <td>'.$row->nachname.'</td>';
|
||||
echo ' <td>'.$row->vorname.'</td>';
|
||||
echo ' <td>'.strtoupper($row->geschlecht).'</td>';
|
||||
echo ' <td>'.($row->fixangestellt != '' ? ($row->fixangestellt == 't' ? 'Ja' : 'Nein') :'-').'</td>';
|
||||
echo ' <td class="clm_email"><a href="mailto:'.$row->uid.'@' . DOMAIN . '" class="Item">'.$row->uid .'@' . DOMAIN . '</a></td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
}
|
||||
echo '
|
||||
|
||||
+124
-15
@@ -32,26 +32,124 @@ echo '<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link href="../../skin/style.css.php" rel="stylesheet" type="text/css">
|
||||
<link rel="stylesheet" href="../../skin/tablesort.css" type="text/css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../../skin/jquery-ui-1.9.2.custom.min.css">
|
||||
<script type="text/javascript" src="../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
|
||||
<script type="text/javascript" src="../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
|
||||
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript" src="../../include/js/jquery.ui.datepicker.translation.js"></script>
|
||||
<script type="text/javascript" src="../../vendor/jquery/sizzle/sizzle.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function()
|
||||
<link href="../../skin/style.css.php" rel="stylesheet" type="text/css">';
|
||||
|
||||
include('../../include/meta/jquery.php');
|
||||
include('../../include/meta/jquery-tablesorter.php');
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function()
|
||||
{
|
||||
$("#table").tablesorter(
|
||||
{
|
||||
sortList: [[0,0]],
|
||||
widgets: [\'zebra\'],
|
||||
sortList: [[1,0]],
|
||||
widgets: ["zebra", "filter", "stickyHeaders"],
|
||||
headers: { 0: {sorter: false, filter: false}},
|
||||
widgetOptions : {filter_saveFilters : false,
|
||||
filter_functions : {
|
||||
// Add select menu to this column
|
||||
3 : {
|
||||
"M" : function(e, n, f, i, $r, c, data) { return /M/.test(e); },
|
||||
"W" : function(e, n, f, i, $r, c, data) { return /W/.test(e); }
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
// Set number of result rows after filtering
|
||||
.bind("filterEnd",function(e, t)
|
||||
{
|
||||
var rows = $('table.hasFilters tbody tr:visible').length;
|
||||
$("#rowCounter").html(rows);
|
||||
});
|
||||
|
||||
$("#toggle").on("click", function(e)
|
||||
{
|
||||
$("#table").checkboxes("toggle");
|
||||
e.preventDefault();
|
||||
if ($("input.chkbox:checked").length > 0)
|
||||
$("#mailSendButton").html('<?php echo $p->t('mailverteiler/mailAnMarkierteSenden'); ?>');
|
||||
else
|
||||
$("#mailSendButton").html('<?php echo $p->t('mailverteiler/mailAnAlleSenden'); ?>');
|
||||
});
|
||||
|
||||
$("#uncheck").on("click", function(e)
|
||||
{
|
||||
$("#table").checkboxes("uncheck");
|
||||
e.preventDefault();
|
||||
if ($("input.chkbox:checked").length > 0)
|
||||
$("#mailSendButton").html('<?php echo $p->t('mailverteiler/mailAnMarkierteSenden'); ?>');
|
||||
else
|
||||
$("#mailSendButton").html('<?php echo $p->t('mailverteiler/mailAnAlleSenden'); ?>');
|
||||
});
|
||||
|
||||
$("#table").checkboxes("range", true);
|
||||
|
||||
$('.chkbox').change(function()
|
||||
{
|
||||
if ($("input.chkbox:checked").length > 0)
|
||||
$("#mailSendButton").html('<?php echo $p->t('mailverteiler/mailAnMarkierteSenden'); ?>');
|
||||
else
|
||||
$("#mailSendButton").html('<?php echo $p->t('mailverteiler/mailAnAlleSenden'); ?>');
|
||||
});
|
||||
}
|
||||
);
|
||||
function SendMail()
|
||||
{
|
||||
// Wenn Checkboxen markiert sind, an diese senden, sonst an alle
|
||||
if ($("input.chkbox:checked").length > 0)
|
||||
{
|
||||
var elements = $("input.chkbox:checked");
|
||||
}
|
||||
else
|
||||
{
|
||||
var elements = $("input.chkbox:visible");
|
||||
}
|
||||
|
||||
var mailadressen = "";
|
||||
var adresse = "";
|
||||
var counter = 0;
|
||||
|
||||
// Schleife ueber die einzelnen Elemente
|
||||
// Aus Spamgründen dürfen je Nachricht maximal 100 Empfänger enthalten sein
|
||||
// Deshalb wird nach 100 Einträgen ein neues window.location.href erzeugt
|
||||
// Außerdem darf die URL nicht länger als 2048 Zeichen sein
|
||||
$.each(elements, function(index, item)
|
||||
{
|
||||
adresse = $(this).closest("tr").find("td.clm_email a:first").attr("href");
|
||||
adresse = adresse.replace(/^mailto?:/, "") + ";";
|
||||
if (counter > 0 && (counter % 100 === 0) || (mailadressen.length + adresse.length > 2048))
|
||||
{
|
||||
window.location.href = "mailto:?bcc="+mailadressen;
|
||||
mailadressen = "";
|
||||
counter = 0;
|
||||
}
|
||||
mailadressen += adresse;
|
||||
counter ++;
|
||||
});
|
||||
window.location.href = "mailto:?bcc="+mailadressen;
|
||||
}
|
||||
</script>
|
||||
<style type="text/css">
|
||||
.buttongreen, a.buttongreen
|
||||
{
|
||||
cursor: pointer;
|
||||
color: #FFFFFF;
|
||||
margin: 0 5px 5px 0;
|
||||
text-decoration: none;
|
||||
border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
background-color: #5cb85c;
|
||||
border-top: 3px solid #5cb85c;
|
||||
border-bottom: 3px solid #5cb85c;
|
||||
border-right: 8px solid #5cb85c;
|
||||
border-left: 8px solid #5cb85c;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<?php echo '
|
||||
<title>'.$p->t('mailverteiler/personenImVerteiler').'</title>
|
||||
<body>';
|
||||
|
||||
@@ -64,7 +162,7 @@ if (!isset($_GET['kz']))
|
||||
if (isset($_GET['all']))
|
||||
{
|
||||
$qry = "SELECT
|
||||
vorname, nachname, uid
|
||||
vorname, nachname, uid, geschlecht
|
||||
FROM
|
||||
campus.vw_student
|
||||
WHERE
|
||||
@@ -95,16 +193,25 @@ else
|
||||
|
||||
$qry.= ' ORDER BY nachname, vorname';
|
||||
}
|
||||
echo '<p>'.$p->t('mailverteiler/anleitungstextMailPersInGroup').'<p>';
|
||||
echo '<a class="buttongreen" href="#" onclick="SendMail()" id="mailSendButton">' . $p->t('mailverteiler/mailAnAlleSenden') . '</a>';
|
||||
if ($result = $db->db_query($qry))
|
||||
{
|
||||
echo '<p>'.$row=$db->db_num_rows($result).' '.$p->t('mailverteiler/personen');
|
||||
echo '<p><span id="rowCounter">'.$row=$db->db_num_rows($result).'</span> '.$p->t('mailverteiler/personen').'</p>';
|
||||
}
|
||||
echo '
|
||||
<table class="tablesorter" id="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: center; width: 80px">
|
||||
<nobr>
|
||||
<a href="#" data-toggle="checkboxes" data-action="toggle" id="toggle" title="Alle markieren / Invertieren"><img src="../../skin/images/checkbox_toggle.png" name="toggle"></a>
|
||||
<a href="#" data-toggle="checkboxes" data-action="uncheck" id="uncheck" title="Keine markieren"><img src="../../skin/images/checkbox_uncheck.png" name="toggle"></a>
|
||||
</nobr>
|
||||
</th>
|
||||
<th>'.$p->t('global/nachname').'</th>
|
||||
<th>'.$p->t('global/vorname').'</th>
|
||||
<th>' . $p->t('global/geschlecht') . '</th>
|
||||
<th>'.$p->t('global/mail').'</th>
|
||||
</tr>
|
||||
</thead><tbody>';
|
||||
@@ -114,9 +221,11 @@ if ($result = $db->db_query($qry))
|
||||
while ($row = $db->db_fetch_object($result))
|
||||
{
|
||||
echo "<tr>";
|
||||
echo ' <td style="text-align: center"><input type="checkbox" class="chkbox" id="checkbox_'.$row->uid.'" name="checkbox['.$row->uid.']"></td>';
|
||||
echo " <td>$row->nachname</td>";
|
||||
echo " <td>$row->vorname</td>";
|
||||
echo " <td><a href='mailto:$row->uid@".DOMAIN."' class='Item'>$row->uid@".DOMAIN."</a></td>";
|
||||
echo ' <td>'.strtoupper($row->geschlecht).'</td>';
|
||||
echo ' <td class="clm_email"><a href="mailto:'.$row->uid.'@' . DOMAIN . '" class="Item">'.$row->uid .'@' . DOMAIN . '</a></td>';
|
||||
echo "</tr>";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user