diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php
index 3fb97f887..2f66e0e2d 100644
--- a/application/controllers/system/infocenter/InfoCenter.php
+++ b/application/controllers/system/infocenter/InfoCenter.php
@@ -102,9 +102,11 @@ class InfoCenter extends Auth_Controller
'reloadNotizen' => 'infocenter:r',
'reloadLogs' => 'infocenter:r',
'outputAkteContent' => 'infocenter:r',
- 'getParkedDate' => 'infocenter:r',
+ 'getPostponeDate' => 'infocenter:r',
'park' => 'infocenter:rw',
'unpark' => 'infocenter:rw',
+ 'setOnHold' => 'infocenter:rw',
+ 'removeOnHold' => 'infocenter:rw',
'getStudienjahrEnd' => 'infocenter:r',
'setNavigationMenuArrayJson' => 'infocenter:r'
)
@@ -713,11 +715,32 @@ class InfoCenter extends Auth_Controller
* Gets the date until which a person is parked
* @param $person_id
*/
- public function getParkedDate($person_id)
+ public function getPostponeDate($person_id)
{
+ $result = array(
+ 'type' => null,
+ 'date' => null
+ );
+
$parkedDate = $this->personloglib->getParkedDate($person_id);
- $this->outputJsonSuccess(array($parkedDate));
+ if (isset($parkedDate))
+ {
+ $result['type'] = 'parked';
+ $result['date'] = $parkedDate;
+ }
+ else
+ {
+ $onholdDate = $this->personloglib->getOnHoldDate($person_id);
+
+ if (isset($onholdDate))
+ {
+ $result['type'] = 'onhold';
+ $result['date'] = $onholdDate;
+ }
+ }
+
+ $this->outputJsonSuccess($result);
}
/**
@@ -745,6 +768,31 @@ class InfoCenter extends Auth_Controller
$this->outputJson($result);
}
+ /**
+ * Sets a person on hold ("zurückstellen")
+ */
+ public function setOnHold()
+ {
+ $person_id = $this->input->post('person_id');
+ $date = $this->input->post('onholddate');
+
+ $result = $this->personloglib->setOnHold($person_id, date_format(date_create($date), 'Y-m-d'), self::TAETIGKEIT, self::APP, null, $this->_uid);
+
+ $this->outputJson($result);
+ }
+
+ /**
+ * Removed on hold status of a person
+ */
+ public function removeOnHold()
+ {
+ $person_id = $this->input->post('person_id');
+
+ $result = $this->personloglib->removeOnHold($person_id);
+
+ $this->outputJson($result);
+ }
+
/**
* Gets the End date of the current Studienjahr
*/
diff --git a/application/libraries/PersonLogLib.php b/application/libraries/PersonLogLib.php
index b56937dfe..299fc8ce2 100644
--- a/application/libraries/PersonLogLib.php
+++ b/application/libraries/PersonLogLib.php
@@ -8,6 +8,7 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
class PersonLogLib
{
const PARKED_LOGNAME = 'Parked';
+ const ONHOLD_LOGNAME = 'Onhold';
/**
* Constructor
@@ -91,26 +92,20 @@ class PersonLogLib
*/
public function park($person_id, $date, $taetigkeit_kurzbz, $app = 'core', $oe_kurzbz = null, $user = null)
{
- $logdata = array(
+ $onhold = $this->getOnHoldDate($person_id);
+
+ if (hasData($onhold))
+ return error("Person already on hold");
+
+ $logjson = array(
'name' => self::PARKED_LOGNAME
);
- $data = array(
- 'person_id' => $person_id,
- 'zeitpunkt' => $date,
- 'taetigkeit_kurzbz' => $taetigkeit_kurzbz,
- 'app' => $app,
- 'oe_kurzbz' => $oe_kurzbz,
- 'logtype_kurzbz' => 'Processstate',
- 'logdata' => json_encode($logdata),
- 'insertvon' => $user
- );
-
- return $this->ci->PersonLogModel->insert($data);
+ return $this->_savePsLog($person_id, $date, $taetigkeit_kurzbz, $logjson, $app, $oe_kurzbz, $user);
}
/**
- * Unparks a person, i.e. removes all log entries in the future
+ * Unparks a person, i.e. removes all log entries in the future with logname for parking
* @param $person_id
* @return array with deleted logids
*/
@@ -131,17 +126,9 @@ class PersonLogLib
{
$deleted[] = $log->log_id;
}
- else
- {
- return $delresult;
- }
}
}
}
- else
- {
- return $result;
- }
return success($deleted);
}
@@ -172,4 +159,111 @@ class PersonLogLib
return $parkeddate;
}
+
+ /**
+ * Sets person on hold, i.e. marks a person so no actions are expected for the person (e.g. as a prestudent).
+ * Done by adding a logentry with a special name. can be undone only manually by clicking button.
+ * @param $person_id
+ * @param $date
+ * @param $taetigkeit_kurzbz
+ * @param string $app
+ * @param null $oe_kurzbz
+ * @param null $user
+ * @return array
+ */
+ public function setOnHold($person_id, $date, $taetigkeit_kurzbz, $app = 'core', $oe_kurzbz = null, $user = null)
+ {
+ $parked = $this->getParkedDate($person_id);
+
+ if (hasData($parked))
+ return error("Person already parked");
+
+ $logjson = array(
+ 'name' => self::ONHOLD_LOGNAME
+ );
+
+ return $this->_savePsLog($person_id, $date, $taetigkeit_kurzbz, $logjson, $app, $oe_kurzbz, $user);
+ }
+
+ /**
+ * Removes on hold status, i.e. removes all log entries with logname for on hold
+ * @param $person_id
+ * @return array
+ */
+ public function removeOnHold($person_id)
+ {
+ $deleted = array();
+
+ $result = $this->ci->PersonLogModel->filterLog($person_id);
+ if (hasData($result))
+ {
+ foreach ($result->retval as $log)
+ {
+ $logdata = json_decode($log->logdata);
+ if (isset($logdata->name) && $logdata->name === self::ONHOLD_LOGNAME)
+ {
+ $delresult = $this->ci->PersonLogModel->deleteLog($log->log_id);
+ if (isSuccess($delresult))
+ {
+ $deleted[] = $log->log_id;
+ }
+ }
+ }
+ }
+ return success($deleted);
+ }
+
+ /**
+ * Gets date until which a person is on hold
+ * @param $person_id
+ * @return the date if person is on hold, null otherwise
+ */
+ public function getOnHoldDate($person_id)
+ {
+ $result = $this->ci->PersonLogModel->filterLog($person_id);
+
+ $onholddate = null;
+
+ if (hasData($result))
+ {
+ foreach ($result->retval as $log)
+ {
+ $logdata = json_decode($log->logdata);
+ if (isset($logdata->name) && $logdata->name === self::ONHOLD_LOGNAME)
+ {
+ $onholddate = $log->zeitpunkt;
+ break;
+ }
+ }
+ }
+
+ return $onholddate;
+ }
+
+ /**
+ * Saves a processstate log with specified parameters, including a specified log date.
+ * @param $person_id
+ * @param $date
+ * @param $taetigkeit_kurzbz
+ * @param $logjson
+ * @param string $app
+ * @param null $oe_kurzbz
+ * @param null $user
+ * @return mixed
+ */
+ private function _savePsLog($person_id, $date, $taetigkeit_kurzbz, $logjson, $app = 'core', $oe_kurzbz = null, $user = null)
+ {
+ $data = array(
+ 'person_id' => $person_id,
+ 'zeitpunkt' => $date,
+ 'taetigkeit_kurzbz' => $taetigkeit_kurzbz,
+ 'app' => $app,
+ 'oe_kurzbz' => $oe_kurzbz,
+ 'logtype_kurzbz' => 'Processstate',
+ 'logdata' => json_encode($logjson),
+ 'insertvon' => $user
+ );
+
+ return $this->ci->PersonLogModel->insert($data);
+ }
}
diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php
index 04b99b057..49f0c7af6 100644
--- a/application/views/system/infocenter/infocenterData.php
+++ b/application/views/system/infocenter/infocenterData.php
@@ -7,6 +7,7 @@
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'New application\', \'Interessent rejected\'';
$LOGDATA_NAME_PARKED = '\'Parked\'';
+ $LOGDATA_NAME_ONHOLD = '\'Onhold\'';
$LOGTYPE_KURZBZ = '\'Processstate\'';
$STATUS_KURZBZ = '\'Wartender\', \'Bewerber\', \'Aufgenommener\', \'Student\'';
$ADDITIONAL_STG = '10021,10027';
@@ -24,6 +25,7 @@
pl.zeitpunkt AS "LockDate",
pl.lockuser AS "LockUser",
pd.parkdate AS "ParkDate",
+ ohd.onholddate AS "OnholdDate",
(
SELECT l.zeitpunkt
FROM system.tbl_log l
@@ -228,6 +230,14 @@
AND l.logdata->>\'name\' = '.$LOGDATA_NAME_PARKED.'
AND l.zeitpunkt >= NOW()
) pd USING(person_id)
+ LEFT JOIN (
+ SELECT l.person_id,
+ l.zeitpunkt AS onholddate
+ FROM system.tbl_log l
+ WHERE l.logtype_kurzbz = '.$LOGTYPE_KURZBZ.'
+ AND l.logdata->>\'name\' = '.$LOGDATA_NAME_ONHOLD.'
+ AND l.zeitpunkt >= NOW()
+ ) ohd USING(person_id)
WHERE
EXISTS (
SELECT 1
@@ -278,6 +288,7 @@
ucfirst($this->p->t('global', 'sperrdatum')),
ucfirst($this->p->t('global', 'gesperrtVon')),
ucfirst($this->p->t('global', 'parkdatum')),
+ ucfirst($this->p->t('global', 'rueckstelldatum')),
ucfirst($this->p->t('global', 'letzteAktion')),
'Aktionstyp',
'AnzahlAktePflicht',
@@ -340,6 +351,11 @@
$datasetRaw->{'ParkDate'} = '-';
}
+ if ($datasetRaw->{'OnholdDate'} == null)
+ {
+ $datasetRaw->{'OnholdDate'} = '-';
+ }
+
if ($datasetRaw->{'StgAbgeschickt'} == null)
{
$datasetRaw->{'StgAbgeschickt'} = '-';
@@ -376,6 +392,11 @@
$mark = FilterWidget::DEFAULT_MARK_ROW_CLASS;
}
+ if ($datasetRaw->OnholdDate != null)
+ {
+ $mark = "text-success";
+ }
+
// Parking has priority over locking
if ($datasetRaw->ParkDate != null)
{
diff --git a/application/views/system/infocenter/infocenterDetails.php b/application/views/system/infocenter/infocenterDetails.php
index 9e708d076..ab4e3533e 100644
--- a/application/views/system/infocenter/infocenterDetails.php
+++ b/application/views/system/infocenter/infocenterDetails.php
@@ -34,7 +34,14 @@
'nichtsZumAusparken',
'fehlerBeimAusparken',
'fehlerBeimParken',
- 'bewerberGeparktBis'
+ 'bewerberGeparktBis',
+ 'bewerberOnHold',
+ 'bewerberOnHoldEntfernen',
+ 'bewerberOnHoldBis',
+ 'nichtsZumEntfernen',
+ 'fehlerBeimEntfernen',
+ 'rueckstelldatumUeberschritten',
+ 'parkenZurueckstellenInfo'
),
'ui' => array(
'gespeichert',
@@ -176,7 +183,7 @@
-
+
load->view('system/infocenter/logs.php'); ?>
diff --git a/public/css/infocenter/infocenterDetails.css b/public/css/infocenter/infocenterDetails.css
index b8bdc84bf..38a7824fa 100644
--- a/public/css/infocenter/infocenterDetails.css
+++ b/public/css/infocenter/infocenterDetails.css
@@ -65,4 +65,31 @@
#scrollToTop:hover{
background-color: lightgrey;
-}
\ No newline at end of file
+}
+
+#postponedate{
+ height: 25px;
+ width: 99px
+}
+
+#postponedatelabel{
+ font-weight: normal;
+}
+
+@media screen and (max-width: 1510px)
+{
+ #postponing{
+ text-align: center;
+ }
+ #postponedatelabel{
+ display: block;
+ margin-top: 20px;
+ }
+}
+
+@media screen and (max-width: 768px)
+{
+ #postponedate {
+ display: inline-block
+ }
+}
diff --git a/public/js/infocenter/infocenterDetails.js b/public/js/infocenter/infocenterDetails.js
index a43b36df8..0bcb88124 100644
--- a/public/js/infocenter/infocenterDetails.js
+++ b/public/js/infocenter/infocenterDetails.js
@@ -10,111 +10,113 @@ const STGFREIGABE_MESSAGE_VORLAGE = "InfocenterSTGfreigegeben";
//Statusgründe for which no Studiengang Freigabe Message should be sent
const FIT_PROGRAMM_STUDIENGAENGE = [10021, 10027];
+const PARKEDNAME = 'parked';
+const ONHOLDNAME = 'onhold';
+
/**
* javascript file for infocenterDetails page
*/
$(document).ready(function ()
{
- //initialise table sorter
- Tablesort.addTablesorter("doctable", [[2, 1], [1, 0]], ["zebra"]);
- Tablesort.addTablesorter("nachgdoctable", [[2, 0], [1, 1]], ["zebra"]);
+ //initialise table sorter
+ Tablesort.addTablesorter("doctable", [[2, 1], [1, 0]], ["zebra"]);
+ Tablesort.addTablesorter("nachgdoctable", [[2, 0], [1, 1]], ["zebra"]);
- InfocenterDetails._formatMessageTable();
- InfocenterDetails._formatNotizTable();
- InfocenterDetails._formatLogTable();
+ InfocenterDetails._formatMessageTable();
+ InfocenterDetails._formatNotizTable();
+ InfocenterDetails._formatLogTable();
- var personid = $("#hiddenpersonid").val();
-
- //add submit event to message send link
- $("#sendmsglink").click(function ()
- {
- $("#sendmsgform").submit();
- });
-
- //add click events to "formal geprüft" checkboxes
- $(".prchbox").click(function ()
- {
- var boxid = this.id;
- var akteid = boxid.substr(boxid.indexOf("_") + 1);
- var checked = this.checked;
- InfocenterDetails.saveFormalGeprueft(personid, akteid, checked)
- });
-
- //add click events to zgv Prüfung section
- InfocenterDetails._addZgvPruefungEvents(personid);
-
- MessageList.initMessageList();
-
- //save notiz
- $("#notizform").on("submit", function (e)
- {
- e.preventDefault();
- var notizid = $("#notizform :input[name='hiddenNotizId']").val();
- var formdata = $(this).serializeArray();
- var data = {};
-
- data.person_id = personid;
-
- for (var i = 0; i < formdata.length; i++)
- {
- data[formdata[i].name] = formdata[i].value;
- }
-
- $("#notizmsg").empty();
-
- if (notizid !== '')
- {
- InfocenterDetails.updateNotiz(notizid, data);
- }
- else
- {
- InfocenterDetails.saveNotiz(personid, data);
- }
- }
- );
-
- //update notiz - autofill notizform
- $(document).on("click", "#notiztable tbody tr", function ()
- {
- $("#notizmsg").empty();
-
- var notizid = $(this).find("td.hiddennotizid").html();
-
- InfocenterDetails.getNotiz(notizid);
- }
- );
-
- //update notiz - abbrechen-button: reset styles
- $("#notizform :input[type='reset']").click(function ()
- {
- InfocenterDetails._resetNotizFields();
- }
- );
-
- //check if person is parked and display it
- InfocenterDetails.getParkedDate(personid);
-
- if ($(document).scrollTop() > 20)
- $("#scrollToTop").show();
-
- //scroll to top button
- $(window).scroll(function()
- {
- if ($(document).scrollTop() > 20)
- $("#scrollToTop").show();
- else
- $("#scrollToTop").hide();
- }
- );
-
- $("#scrollToTop").click(function()
- {
- $('html,body').animate({scrollTop:0},250,'linear');
- }
- )
+ var personid = $("#hiddenpersonid").val();
+ //add submit event to message send link
+ $("#sendmsglink").click(function ()
+ {
+ $("#sendmsgform").submit();
});
+ //add click events to "formal geprüft" checkboxes
+ $(".prchbox").click(function ()
+ {
+ var boxid = this.id;
+ var akteid = boxid.substr(boxid.indexOf("_") + 1);
+ var checked = this.checked;
+ InfocenterDetails.saveFormalGeprueft(personid, akteid, checked)
+ });
+
+ //add click events to zgv Prüfung section
+ InfocenterDetails._addZgvPruefungEvents(personid);
+
+ MessageList.initMessageList();
+
+ //save notiz
+ $("#notizform").on("submit", function (e)
+ {
+ e.preventDefault();
+ var notizid = $("#notizform :input[name='hiddenNotizId']").val();
+ var formdata = $(this).serializeArray();
+ var data = {};
+
+ data.person_id = personid;
+
+ for (var i = 0; i < formdata.length; i++)
+ {
+ data[formdata[i].name] = formdata[i].value;
+ }
+
+ $("#notizmsg").empty();
+
+ if (notizid !== '')
+ {
+ InfocenterDetails.updateNotiz(notizid, data);
+ }
+ else
+ {
+ InfocenterDetails.saveNotiz(personid, data);
+ }
+ }
+ );
+
+ //update notiz - autofill notizform
+ $(document).on("click", "#notiztable tbody tr", function ()
+ {
+ $("#notizmsg").empty();
+
+ var notizid = $(this).find("td.hiddennotizid").html();
+
+ InfocenterDetails.getNotiz(notizid);
+ }
+ );
+
+ //update notiz - abbrechen-button: reset styles
+ $("#notizform :input[type='reset']").click(function ()
+ {
+ InfocenterDetails._resetNotizFields();
+ }
+ );
+
+ //check if person is postponed (parked, on hold...) and display it
+ InfocenterDetails.getPostponeDate(personid);
+
+ if ($(document).scrollTop() > 20)
+ $("#scrollToTop").show();
+
+ //scroll to top button
+ $(window).scroll(function()
+ {
+ if ($(document).scrollTop() > 20)
+ $("#scrollToTop").show();
+ else
+ $("#scrollToTop").hide();
+ }
+ );
+
+ $("#scrollToTop").click(function()
+ {
+ $('html,body').animate({scrollTop:0},250,'linear');
+ }
+ )
+});
+
var InfocenterDetails = {
openZgvInfoForPrestudent: function(prestudent_id)
@@ -397,7 +399,7 @@ var InfocenterDetails = {
{
var engdate = $.datepicker.parseDate("yy-mm-dd", FHC_AjaxClient.getData(data)[0]);
var gerdate = $.datepicker.formatDate("dd.mm.yy", engdate);
- $("#parkdate").val(gerdate);
+ $("#postponedate").val(gerdate);
}
},
errorCallback: function()
@@ -408,19 +410,19 @@ var InfocenterDetails = {
}
);
},
- getParkedDate: function(personid)
+ getPostponeDate: function(personid)
{
FHC_AjaxClient.ajaxCallGet(
- CALLED_PATH + "/getParkedDate/"+encodeURIComponent(personid),
+ CALLED_PATH + "/getPostponeDate/"+encodeURIComponent(personid),
null,
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.hasData(data))
{
- var parkedDate = FHC_AjaxClient.getData(data)[0];
- InfocenterDetails._refreshParking(parkedDate);
+ var postponeobj = FHC_AjaxClient.getData(data);
+ InfocenterDetails._refreshPostpone(postponeobj);
InfocenterDetails._refreshLog();
- if (parkedDate === null)
+ if (postponeobj === null || postponeobj.type === null)
InfocenterDetails.getStudienjahrEnd();
}
},
@@ -435,7 +437,7 @@ var InfocenterDetails = {
parkPerson: function(personid, date)
{
var parkError = function(){
- $("#parkmsg").text(" Fehler beim Parken!");
+ $("#postponemsg").text(" Fehler beim Parken!");
};
FHC_AjaxClient.ajaxCallPost(
@@ -447,7 +449,7 @@ var InfocenterDetails = {
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.hasData(data))
- InfocenterDetails.getParkedDate(personid);
+ InfocenterDetails.getPostponeDate(personid);
else
{
parkError();
@@ -469,13 +471,62 @@ var InfocenterDetails = {
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.hasData(data))
{
- InfocenterDetails.getParkedDate(personid);
+ InfocenterDetails.getPostponeDate(personid);
}
else
- $("#unparkmsg").removeClass().addClass("text-warning").text(FHC_PhrasesLib.t('infocenter', 'nichtsZumAusparken'));
+ $("#unpostponemsg").removeClass().addClass("text-warning").text(FHC_PhrasesLib.t('infocenter', 'nichtsZumAusparken'));
},
errorCallback: function(){
- $("#unparkmsg").removeClass().addClass("text-danger").text(FHC_PhrasesLib.t('infocenter', 'fehlerBeimAusparken'));
+ $("#unpostponemsg").removeClass().addClass("text-danger").text(FHC_PhrasesLib.t('infocenter', 'fehlerBeimAusparken'));
+ },
+ veilTimeout: 0
+ }
+ );
+ },
+ setPersonOnHold: function(personid, date)
+ {
+ var onHoldError = function(){
+ $("#postponemsg").text(" Fehler beim Setzen auf On Hold!");
+ };
+
+ FHC_AjaxClient.ajaxCallPost(
+ CALLED_PATH + '/setOnHold',
+ {
+ "person_id": personid,
+ "onholddate": date
+ },
+ {
+ successCallback: function(data, textStatus, jqXHR) {
+ if (FHC_AjaxClient.hasData(data))
+ InfocenterDetails.getPostponeDate(personid);
+ else
+ {
+ onHoldError();
+ }
+ },
+ errorCallback: onHoldError,
+ veilTimeout: 0
+ }
+ );
+ },
+ removePersonOnHold: function(personid)
+ {
+ FHC_AjaxClient.ajaxCallPost(
+ CALLED_PATH + '/removeOnHold',
+ {
+ "person_id": personid
+ },
+ {
+ successCallback: function(data, textStatus, jqXHR) {
+ if (FHC_AjaxClient.hasData(data))
+ {
+ InfocenterDetails.getPostponeDate(personid);
+ }
+ else
+ $("#unpostponemsg").removeClass().addClass("text-warning").text(FHC_PhrasesLib.t('infocenter', 'nichtsZumEntfernen'));
+ },
+ errorCallback: function(){
+ $("#unpostponemsg").removeClass().addClass("text-danger").text(FHC_PhrasesLib.t('infocenter', 'fehlerBeimEntfernen'));
},
veilTimeout: 0
}
@@ -864,50 +915,94 @@ var InfocenterDetails = {
}
);
},
- _refreshParking: function(date)
+ _refreshPostpone: function(postponeobj)
{
- if (date === null)
+ var personid = $("#hiddenpersonid").val();
+ if (postponeobj === null || postponeobj.date === null || postponeobj.type === null)
{
- $("#parking").html(
+ //show both park and on hold buttons if not parked and not on hold
+ $("#postponing").html(
'
'+
' '+
- FHC_PhrasesLib.t('global', 'bis') + ' '+
- ' '+
- ''+
+ ' '+
+ ''+
+ ''+
'
');
- $("#parkdate").datepicker({
+ $("#postponedate").datepicker({
"dateFormat": "dd.mm.yy",
- "minDate": 0
+ "minDate": 1
});
$("#parklink").click(
function ()
{
- var personid = $("#hiddenpersonid").val();
- var date = $("#parkdate").val();
-
+ var date = $("#postponedate").val();
InfocenterDetails.parkPerson(personid, date);
}
);
+
+ $("#onholdlink").click(
+
+ function ()
+ {
+ var date = $("#postponedate").val();
+ InfocenterDetails.setPersonOnHold(personid, date);
+ }
+ );
}
else
{
- var parkdate = $.datepicker.parseDate("yy-mm-dd", date);
- var gerparkdate = $.datepicker.formatDate("dd.mm.yy", parkdate);
- $("#parking").html(
- FHC_PhrasesLib.t('infocenter', 'bewerberGeparktBis')+' '+gerparkdate+' '+
- '
'+
- '
'
+ //info if parked/on hold and possibility to undo parking/on hold
+ var postponedate = $.datepicker.parseDate("yy-mm-dd", postponeobj.date);
+ var gerpostponedate = $.datepicker.formatDate("dd.mm.yy", postponedate);
+
+ //var postponehtml = "";
+ var callbackforundo = null;
+ var removePhrase = "";
+ var postponedPhrase = "";
+ var postponedtext = "";
+
+ if (postponeobj.type === PARKEDNAME)
+ {
+ removePhrase = 'bewerberAusparken';
+ postponedtext = FHC_PhrasesLib.t('infocenter', 'bewerberGeparktBis')+' '+gerpostponedate;
+
+ callbackforundo = function ()
+ {
+ InfocenterDetails.unparkPerson(personid);
+ }
+ }
+ else if (postponeobj.type === ONHOLDNAME)
+ {
+ removePhrase = 'bewerberOnHoldEntfernen';
+ postponedtext = FHC_PhrasesLib.t('infocenter', 'bewerberOnHoldBis')+' '+gerpostponedate;
+
+ var currdate = new Date();
+
+ if (currdate > postponedate)
+ postponedtext = "
"+postponedtext+"";
+
+ callbackforundo = function ()
+ {
+ InfocenterDetails.removePersonOnHold(personid);
+ }
+ }
+
+ var postponehtml = postponedtext+' '+
+ '
'+
+ '
';
+
+
+ $("#postponing").html(
+ postponehtml
);
- $("#unparklink").click(
- function ()
- {
- var personid = $("#hiddenpersonid").val();
- InfocenterDetails.unparkPerson(personid, date);
- }
+ $("#unpostponelink").click(
+ callbackforundo
);
}
},
diff --git a/public/js/infocenter/infocenterPersonDataset.js b/public/js/infocenter/infocenterPersonDataset.js
index 816dd2fda..45e30008c 100644
--- a/public/js/infocenter/infocenterPersonDataset.js
+++ b/public/js/infocenter/infocenterPersonDataset.js
@@ -50,7 +50,8 @@ var InfocenterPersonDataset = {
'
Nachricht senden';
var legendHtml = '
Gesperrt ' +
- '
Geparkt';
+ '
Geparkt ' +
+ '
Zurückgestellt';
// userdefined Semestervariable shown independently of personcount,
// it is possible to change the semester
diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php
index ee48365bc..a0bc82135 100644
--- a/system/phrasesupdate.php
+++ b/system/phrasesupdate.php
@@ -3451,9 +3451,150 @@ $phrases = array(
)
)
),
-
-
- //
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'bewerberOnHold',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'BewerberIn zurückstellen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Put applicant on hold',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'bewerberOnHoldEntfernen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Zurückstellung entfernen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Remove on hold state',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'bewerberOnHoldBis',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'BewerberIn zurückgestellt bis',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Applicant on hold until',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'nichtsZumEntfernen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Nichts zum Entfernen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Nothing to remove',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'fehlerBeimEntfernen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Fehler beim Entfernen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Error when removing',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'rueckstelldatumUeberschritten',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Zurückstelldatum überschritten!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Exceeded date for on hold!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'category' => 'infocenter',
+ 'phrase' => 'parkenZurueckstellenInfo',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Geparkte und zurückgestellte BewerberInnen werden von der Bearbeitung temporär ausgenommen.
+Geparkte BewerberInnen werden zum angegebenen Datum automatisch entparkt, während zurückgestellte BewerberInnen nur manuell durch Drücken des Buttons den Zurückgestellt-Status verlieren.
+Bei einer Zurückstellung dient das Datum nur der Erinnerung.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Parked applicants and applicants on hold are temporarily excluded from the infocenter workflow.
+Parked applicants are unparked automatically, whereas applicants on hold loose the status only when clicking the button manually.
+When on hold, the date is only a reminder.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'password',