- persondatasetjs works with ajaxlib

- added js object to persondatasetjs
- no locking when details accessed from freigegeben
- tablesorter filter remains when getting back from details page
This commit is contained in:
alex
2018-06-06 15:54:39 +02:00
parent 96be91f78e
commit 5f2b02c441
7 changed files with 177 additions and 172 deletions
@@ -129,24 +129,31 @@ class InfoCenter extends FHC_Controller
$personexists = $this->PersonModel->load($person_id);
if(isError($personexists))
if (isError($personexists))
show_error($personexists->retval);
if (empty($personexists->retval))
show_error('person does not exist!');
//mark person as locked for editing
$result = $this->PersonLockModel->lockPerson($person_id, $this->uid, self::APP);
$show_lock_link_get = $this->input->get('show_lock_link');
$show_lock_link = !isset($show_lock_link_get) || $show_lock_link_get === '1';
if(isError($result))
show_error($result->retval);
if ($show_lock_link)
{
//mark person as locked for editing
$result = $this->PersonLockModel->lockPerson($person_id, $this->uid, self::APP);
if (isError($result))
show_error($result->retval);
}
$persondata = $this->_loadPersonData($person_id);
$prestudentdata = $this->_loadPrestudentData($person_id);
$data = array_merge(
$persondata,
$prestudentdata
$prestudentdata,
array('show_lock_link' => $show_lock_link)
);
$data['fhc_controller_id'] = $this->fhc_controller_id;
@@ -162,7 +169,7 @@ class InfoCenter extends FHC_Controller
{
$result = $this->PersonLockModel->unlockPerson($person_id, self::APP);
if(isError($result))
if (isError($result))
show_error($result->retval);
redirect(self::URL_PREFIX.'?fhc_controller_id='.$this->fhc_controller_id);
@@ -245,9 +252,7 @@ class InfoCenter extends FHC_Controller
$data['data'] = $studienordnung->retval[0]->data;
}
$this->load->view('system/infocenter/studiengangZgvInfo.php',
$data
);
$this->load->view('system/infocenter/studiengangZgvInfo.php', $data);
}
/**
@@ -721,6 +726,18 @@ class InfoCenter extends FHC_Controller
);
}
/**
* Wrapper for setNavigationMenu, returns JSON message
*/
public function setNavigationMenuArrayJson()
{
$this->setNavigationMenuArray();
$this->output
->set_content_type('application/json')
->set_output(json_encode(success('success')));
}
private function _fillFilters($filters, &$tofill)
{
foreach ($filters as $filterId => $description)
@@ -69,17 +69,16 @@
</div>
<div class="col-lg-4">
<div class="headerright text-right">
<?php echo $this->p->t('global', 'wirdBearbeitetVon').':' ?>
<?php
if (isset($lockedby)):
echo $this->p->t('global', 'wirdBearbeitetVon') . ': ';
echo $lockedby;
?>
&nbsp;&nbsp;
<a href="../unlockPerson/<?php echo $stammdaten->person_id; ?>
?fhc_controller_id=<?php echo $fhc_controller_id; ?>">
<i class="fa fa-sign-out"></i>&nbsp;
<?php echo ucfirst($this->p->t('ui', 'freigeben')) ?>
</a>
if (!isset($show_lock_link) || $show_lock_link === true): ?>
&nbsp;&nbsp;
<a href="../unlockPerson/<?php echo $stammdaten->person_id; ?>?fhc_controller_id=<?php echo $fhc_controller_id; ?>">
<i class="fa fa-sign-out"></i>&nbsp;<?php echo ucfirst($this->p->t('ui', 'freigeben')) ?>
</a>
<?php endif; ?>
<?php endif; ?>
</div>
</div>
@@ -172,7 +172,7 @@
'formatRaw' => function($datasetRaw) {
$datasetRaw->{'Details'} = sprintf(
'<a href="%s/%s?fhc_controller_id=%s">Details</a>',
'<a href="%s/%s?show_lock_link=0&fhc_controller_id=%s">Details</a>',
site_url('system/infocenter/InfoCenter/showDetails'),
$datasetRaw->{'PersonId'},
(isset($_GET['fhc_controller_id'])?$_GET['fhc_controller_id']:'')
+2 -2
View File
@@ -23,7 +23,7 @@
}
/*arrow toggle for panels*/
.panel-heading .accordion-toggle:before{
.panel-heading .accordion-toggle.arrowcollapse:before{
/* symbol for "opening" panels */
font-family: 'Glyphicons Halflings'; /* essential for enabling glyphicon */
content: "\e114"; /* adjust as needed, taken from bootstrap.css */
@@ -32,7 +32,7 @@
color: grey; /* adjust as needed */
}
.panel-heading .accordion-toggle.collapsed:before{
.panel-heading .accordion-toggle.collapsed.arrowcollapse:before{
/* symbol for "collapsed" panels */
content: "\e080"; /* adjust as needed, taken from bootstrap.css */
}
+19 -3
View File
@@ -22,7 +22,7 @@ function sideMenuHook()
filter_id: $(this).attr('value')
},
{
successCallback: refreshSideMenu // NOTE: to be checked
successCallback: InfocenterPersonDataset.refreshSideMenu // NOTE: to be checked
}
);
});
@@ -390,6 +390,9 @@ var FHC_FilterWidget = {
},
{
successCallback: function(data, textStatus, jqXHR) {
//tablesorter filter local storage clean
$("#filterTableDataset").trigger("filterResetSaved");
FHC_FilterWidget._resetSelectedFields();
FHC_FilterWidget.renderSelectedFields();
@@ -442,6 +445,9 @@ var FHC_FilterWidget = {
},
{
successCallback: function(data, textStatus, jqXHR) {
//tablesorter filter local storage clean
$("#filterTableDataset").trigger("filterResetSaved");
FHC_FilterWidget._resetSelectedFields();
FHC_FilterWidget.renderSelectedFields();
@@ -671,9 +677,19 @@ var FHC_FilterWidget = {
&& $('#filterTableDataset').hasClass('table-condensed'))
{
$("#filterTableDataset").tablesorter({
widgets: ["zebra", "filter"]
widgets: ["zebra", "filter"],
widgetOptions: {
filter_saveFilters : true
}
});
// reset filter storage if there is a filter id in url TODO: find better solution
var filter_id = FHC_AjaxClient.getUrlParameter("filter_id");
if (typeof filter_id !== 'undefined')
{
$("#filterTableDataset").trigger("filterResetSaved");
}
var config = $('#filterTableDataset')[0].config;
$.tablesorter.updateAll(config, true, null);
}
@@ -733,7 +749,7 @@ $(document).ready(function() {
filter_page: FHC_FilterWidget._getFilterPage()
},
{
successCallback: refreshSideMenu // NOTE: to be checked
successCallback: InfocenterPersonDataset.refreshSideMenu // NOTE: to be checked
}
);
}
+5 -10
View File
@@ -6,9 +6,8 @@ const CALLED_PATH = FHC_JS_DATA_STORAGE_OBJECT.called_path;
/**
* javascript file for infocenterDetails page
*/
$(document).ready(
function ()
{
$(document).ready(function ()
{
//initialise table sorter
Tablesort.addTablesorter("doctable", [[2, 1], [1, 0]], ["zebra"]);
Tablesort.addTablesorter("nachgdoctable", [[2, 0], [1, 1]], ["zebra"]);
@@ -209,8 +208,7 @@ var InfocenterDetails = {
{
FHC_AjaxClient.ajaxCallGet(
CALLED_PATH + "/getLastPrestudentWithZgvJson/" + encodeURIComponent(personid),
{
},
null,
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.hasData(data))
@@ -319,13 +317,11 @@ var InfocenterDetails = {
{
FHC_AjaxClient.ajaxCallGet(
CALLED_PATH + "/getStudienjahrEnd",
{
},
null,
{
successCallback: function(data, textStatus, jqXHR) {
if (data)
{
console.log("studienjahr end executed");
var engdate = $.datepicker.parseDate("yy-mm-dd", data);
var gerdate = $.datepicker.formatDate("dd.mm.yy", engdate);
$("#parkdate").val(gerdate);
@@ -339,8 +335,7 @@ var InfocenterDetails = {
{
FHC_AjaxClient.ajaxCallGet(
CALLED_PATH + "/getParkedDate/"+encodeURIComponent(personid),
{
},
null,
{
successCallback: function(data, textStatus, jqXHR) {
InfocenterDetails._refreshParking(data);
+116 -138
View File
@@ -3,151 +3,129 @@
*/
$(document).ready(function() {
appendTableActionsHtml();
InfocenterPersonDataset.appendTableActionsHtml();
// setTableActions();
});
/**
* adds person table additional actions html (above and beneath it)
*/
function appendTableActionsHtml()
{
var currurl = window.location.href;
var url = currurl.replace(/infocenter\/InfoCenter(.*)/, "Messages/write");
var InfocenterPersonDataset = {
var formHtml = '<form id="sendMsgsForm" method="post" action="'+ url +'" target="_blank"></form>';
$("#datasetActionsTop").before(formHtml);
var selectAllHtml =
'<a href="javascript:void(0)" class="selectAll">' +
'<i class="fa fa-check"></i>&nbsp;Alle</a>&nbsp;&nbsp;' +
'<a href="javascript:void(0)" class="unselectAll">' +
'<i class="fa fa-times"></i>&nbsp;Keinen</a>&nbsp;&nbsp;&nbsp;&nbsp;';
var actionHtml = 'Mit Ausgew&auml;hlten:&nbsp;&nbsp;' +
'<a href="javascript:void(0)" class="sendMsgsLink">' +
'<i class="fa fa-envelope"></i>&nbsp;Nachricht senden</a>';
var legendHtml = '<i class="fa fa-circle text-danger"></i> Gesperrt&nbsp;&nbsp;&nbsp;&nbsp;' +
'<i class="fa fa-circle text-info"></i> Geparkt';
var personcount = 0;
$.ajax({
url: window.location.pathname.replace('infocenter/InfoCenter', 'Filters/rowNumber'),
method: "GET",
data: {
fhc_controller_id: getUrlParameter("fhc_controller_id"),
filter_page: FHC_JS_DATA_STORAGE_OBJECT.called_path + "/" + FHC_JS_DATA_STORAGE_OBJECT.called_method
},
dataType: "json"
})
.done(function(data, textStatus, jqXHR) {
if (data != null)
{
if (data.rowNumber != null)
{
personcount = data.rowNumber;
var persontext = personcount === 1 ? "Person" : "Personen";
var countHtml = personcount + " " + persontext;
$("#datasetActionsTop, #datasetActionsBottom").append(
"<div class='row'>"+
"<div class='col-xs-6'>" + selectAllHtml + "&nbsp;&nbsp;" + actionHtml + "</div>"+
"<div class='col-xs-4'>" + legendHtml + "</div>"+
"<div class='col-xs-2 text-right'>" + countHtml + "</div>"+
"<div class='clearfix'></div>"+
"</div>"
);
$("#datasetActionsBottom").append("<br><br>");
}
setTableActions();
}
}).fail(function(jqXHR, textStatus, errorThrown) {
alert(textStatus);
});
}
/**
* sets functionality for the actions above and beneath the person table
*/
function setTableActions()
{
$(".sendMsgsLink").click(function() {
var idsel = $("#filterTableDataset input:checked[name=PersonId\\[\\]]");
if(idsel.length > 0)
{
var form = $("#sendMsgsForm");
form.find("input[type=hidden]").remove();
for (var i = 0; i < idsel.length; i++)
{
var id = $(idsel[i]).val();
form.append("<input type='hidden' name='person_id[]' value='" + id + "'>");
}
form.submit();
}
});
$(".selectAll").click(function()
{
//select only trs if not filtered by tablesorter
var trs = $("#filterTableDataset tbody tr").not(".filtered");
trs.find("input[name=PersonId\\[\\]]").prop("checked", true);
}
);
$(".unselectAll").click(function()
{
var trs = $("#filterTableDataset tbody tr").not(".filtered");
trs.find("input[name=PersonId\\[\\]]").prop("checked", false);
}
);
}
/**
*
*/
function getUrlParameter(sParam)
{
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++)
/**
* adds person table additional actions html (above and beneath it)
/*
*/
appendTableActionsHtml: function()
{
sParameterName = sURLVariables[i].split('=');
var currurl = window.location.href;
var url = currurl.replace(/infocenter\/InfoCenter(.*)/, "Messages/write");
if (sParameterName[0] === sParam)
{
return sParameterName[1];
}
}
}
var formHtml = '<form id="sendMsgsForm" method="post" action="'+ url +'" target="_blank"></form>';
$("#datasetActionsTop").before(formHtml);
/**
* Refreshes the side menu
*/
function refreshSideMenu()
{
$.ajax({
url: window.location.pathname+"/setNavigationMenuArray",
method: "GET",
data: {
fhc_controller_id: getUrlParameter("fhc_controller_id")
}
})
.done(function(data, textStatus, jqXHR) {
var selectAllHtml =
'<a href="javascript:void(0)" class="selectAll">' +
'<i class="fa fa-check"></i>&nbsp;Alle</a>&nbsp;&nbsp;' +
'<a href="javascript:void(0)" class="unselectAll">' +
'<i class="fa fa-times"></i>&nbsp;Keinen</a>&nbsp;&nbsp;&nbsp;&nbsp;';
FHC_NavigationWidget.renderSideMenu();
var actionHtml = 'Mit Ausgew&auml;hlten:&nbsp;&nbsp;' +
'<a href="javascript:void(0)" class="sendMsgsLink">' +
'<i class="fa fa-envelope"></i>&nbsp;Nachricht senden</a>';
}).fail(function(jqXHR, textStatus, errorThrown) {
alert(textStatus);
});
}
var legendHtml = '<i class="fa fa-circle text-danger"></i> Gesperrt&nbsp;&nbsp;&nbsp;&nbsp;' +
'<i class="fa fa-circle text-info"></i> Geparkt';
var personcount = 0;
FHC_AjaxClient.ajaxCallGet(
'system/Filters/rowNumber',
{
filter_page: FHC_JS_DATA_STORAGE_OBJECT.called_path + "/" + FHC_JS_DATA_STORAGE_OBJECT.called_method
},
{
successCallback: function(data, textStatus, jqXHR) {
if (data != null)
{
if (data.rowNumber != null)
{
personcount = data.rowNumber;
var persontext = personcount === 1 ? "Person" : "Personen";
var countHtml = personcount + " " + persontext;
$("#datasetActionsTop, #datasetActionsBottom").append(
"<div class='row'>"+
"<div class='col-xs-6'>" + selectAllHtml + "&nbsp;&nbsp;" + actionHtml + "</div>"+
"<div class='col-xs-4'>" + legendHtml + "</div>"+
"<div class='col-xs-2 text-right'>" + countHtml + "</div>"+
"<div class='clearfix'></div>"+
"</div>"
);
$("#datasetActionsBottom").append("<br><br>");
}
InfocenterPersonDataset.setTableActions();
}
},
errorCallback: function(jqXHR, textStatus, errorThrown) {
alert(textStatus);
}
}
);
},
/**
* sets functionality for the actions above and beneath the person table
*/
setTableActions: function()
{
$(".sendMsgsLink").click(function() {
var idsel = $("#filterTableDataset input:checked[name=PersonId\\[\\]]");
if(idsel.length > 0)
{
var form = $("#sendMsgsForm");
form.find("input[type=hidden]").remove();
for (var i = 0; i < idsel.length; i++)
{
var id = $(idsel[i]).val();
form.append("<input type='hidden' name='person_id[]' value='" + id + "'>");
}
form.submit();
}
});
$(".selectAll").click(function()
{
//select only trs if not filtered by tablesorter
var trs = $("#filterTableDataset tbody tr").not(".filtered");
trs.find("input[name=PersonId\\[\\]]").prop("checked", true);
}
);
$(".unselectAll").click(function()
{
var trs = $("#filterTableDataset tbody tr").not(".filtered");
trs.find("input[name=PersonId\\[\\]]").prop("checked", false);
}
);
},
/**
* Refreshes the side menu
*/
refreshSideMenu: function()
{
FHC_AjaxClient.ajaxCallGet(
'system/infocenter/InfoCenter/setNavigationMenuArrayJson',
null,
{
successCallback: function(data, textStatus, jqXHR) {
FHC_NavigationWidget.renderSideMenu();
},
errorCallback: function(jqXHR, textStatus, errorThrown) {
alert(textStatus);
}
}
);
}
};