Commit bc2dfffe authored by Carsten  Rose's avatar Carsten Rose
Browse files

Merge branch 'develop' into S13788_datetimepicker_selectable_weekdays

parents f98ebc20 6956badc
Pipeline #6959 passed with stage
in 1 minute and 54 seconds
......@@ -246,12 +246,10 @@ Setup CSS & JS
file05 = typo3conf/ext/qfq/Resources/Public/Css/qfq-bs.css
file06 = typo3conf/ext/qfq/Resources/Public/Css/tablesorter-bootstrap.css
file07 = typo3conf/ext/qfq/Resources/Public/Css/font-awesome.min.css
file08 = typo3conf/ext/qfq/Resources/Public/Css/bootstrap-datetimepicker.min.css
# Only needed in case FullCalendar is used
file08 = typo3conf/ext/qfq/Resources/Public/Css/fullcalendar.min.css
# Only needed in case FormElement 'datetime'/'date' is used
file09 = typo3conf/ext/qfq/Resources/Public/Css/bootstrap-datetimepicker.min.css
file09 = typo3conf/ext/qfq/Resources/Public/Css/fullcalendar.min.css
}
page.includeJS {
......@@ -268,17 +266,16 @@ Setup CSS & JS
file11 = typo3conf/ext/qfq/Resources/Public/JavaScript/jquery.tablesorter.pager.min.js
file12 = typo3conf/ext/qfq/Resources/Public/JavaScript/widget-columnSelector.min.js
file13 = typo3conf/ext/qfq/Resources/Public/JavaScript/widget-output.min.js
file14 = typo3conf/ext/qfq/Resources/Public/JavaScript/bootstrap-datetimepicker.min.js
# Only needed in case FormElement 'annotate' is used.
file14 = typo3conf/ext/qfq/Resources/Public/JavaScript/fabric.min.js
file15 = typo3conf/ext/qfq/Resources/Public/JavaScript/qfq.fabric.min.js
file15 = typo3conf/ext/qfq/Resources/Public/JavaScript/fabric.min.js
file16 = typo3conf/ext/qfq/Resources/Public/JavaScript/qfq.fabric.min.js
# Only needed in case FullCalendar is used
file16 = typo3conf/ext/qfq/Resources/Public/JavaScript/moment.min.js
file17 = typo3conf/ext/qfq/Resources/Public/JavaScript/fullcalendar.min.js
# Only needed in case FullCalendar is used.
file17 = typo3conf/ext/qfq/Resources/Public/JavaScript/moment.min.js
file18 = typo3conf/ext/qfq/Resources/Public/JavaScript/fullcalendar.min.js
# Only needed in case FormElement 'datetime'/'date' is used
file18 = typo3conf/ext/qfq/Resources/Public/JavaScript/bootstrap-datetimepicker.min.js
}
......
......@@ -858,8 +858,12 @@ abstract class AbstractBuildForm {
}
}
// Typehead might deliver an array, which is unwanted: fix this
if (is_array($value) && isset($value[0][API_TYPEAHEAD_VALUE])) {
$value = $value[0][API_TYPEAHEAD_VALUE];
}
if ($formElement[FE_ENCODE] === FE_ENCODE_SPECIALCHAR) {
// $value = htmlspecialchars_decode($value, ENT_QUOTES);
$value = Support::htmlEntityEncodeDecode(MODE_DECODE, $value);
} elseif ($formElement[FE_ENCODE] === FE_ENCODE_SINGLE_TICK) {
$value = OnString::escapeSingleTickInHtml($value);
......@@ -3139,7 +3143,7 @@ abstract class AbstractBuildForm {
}
// if FE type datetime and showSeconds is set, corrected format is needed
if($formElement[FE_TYPE] === FE_TYPE_DATETIME && $formElement[FE_SHOW_SECONDS] == 1 && $defaultDateFormat === 'DD.MM.YYYY HH:mm') {
if ($formElement[FE_TYPE] === FE_TYPE_DATETIME && $formElement[FE_SHOW_SECONDS] == 1 && $defaultDateFormat === 'DD.MM.YYYY HH:mm') {
$defaultDateFormat .= ':ss';
}
......@@ -3148,10 +3152,10 @@ abstract class AbstractBuildForm {
if ($formElement[FE_DATE_FORMAT] === 'hh:mm' || $formElement[FE_DATE_FORMAT] === 'hh:mm:ss' || $formElement[FE_SHOW_SECONDS] == 1) {
if ($formElement[FE_DATE_FORMAT] === 'HH:mm:ss' || $formElement[FE_SHOW_SECONDS] == 1) {
$defaultDateFormat = 'HH:mm:ss';
}else {
} else {
$defaultDateFormat = 'hh:mm';
}
}else{
} else {
$defaultDateFormat = 'HH:mm';
}
}
......
......@@ -35,6 +35,8 @@ var QfqNS = QfqNS || {};
this.tabs = {};
this.currentTab = this.getActiveTabFromDOM();
this.eventEmitter = new EventEmitter();
this.currentFormName = $('#' + this.tabId + ' .active a[data-toggle="tab"]')[0].hash.slice(1).split("_")[0];
this.currentRecordId = $('#' + this.tabId + ' a[data-toggle="tab"]')[0].id.split("-")[2];
// Fill this.tabs
this.fillTabInformation();
......
......@@ -45,7 +45,36 @@ var QfqNS = QfqNS || {};
try {
this.bsTabs = new n.BSTabs(this.settings.tabsId);
var storedFormInfos = [];
// get current state from session storage
if(sessionStorage.getItem("formInfos") !== null) {
storedFormInfos = JSON.parse(sessionStorage.getItem("formInfos"));
}
var currentForm = this.bsTabs.currentFormName;
var currentRecordId = this.bsTabs.currentRecordId;
var actualIndex = -1;
var indexNr = 0;
if(storedFormInfos.length !== 0){
if(storedFormInfos[0] !== ''){
storedFormInfos.forEach(function callback(element){
if(element === currentForm && storedFormInfos[indexNr+2] === currentRecordId){
actualIndex = indexNr;
}
indexNr++;
});
}
}
var currentState = this.settings.pageState.getPageState();
// load from sessionStorage or from path given hash if not empty
if(actualIndex !== -1 && location.hash === "") {
currentState = storedFormInfos[actualIndex+1];
}
if (currentState !== "") {
this.bsTabs.activateTab(currentState);
n.PageTitle.setSubTitle(this.bsTabs.getTabName(currentState));
......@@ -151,6 +180,53 @@ var QfqNS = QfqNS || {};
}
var currentTabId = obj.target.getCurrentTab();
n.Log.debug('Saving state: ' + currentTabId);
// Implementation save current state in session storage
var storedFormInfos = [];
if(sessionStorage.getItem("formInfos") !== null){
storedFormInfos = JSON.parse(sessionStorage.getItem("formInfos"));
}
var currentForm = obj.target.currentFormName;
var currentRecordId = obj.target.currentRecordId;
var actualIndex = -1;
var indexNr = 0;
if(storedFormInfos.length !== 0) {
if(storedFormInfos[0] !== ''){
storedFormInfos.forEach(function callback(element){
if(element === currentForm && storedFormInfos[indexNr + 2] === currentRecordId){
actualIndex = indexNr;
}
indexNr++;
});
}
}
// fill sessionStorage, there are 3 ways for filling the sessionStorage: 1.If empty - first time filling, 2.If there is anything - add it to them, 3
// 1.If array from storage is empty - fill it first time
if(storedFormInfos.length === 0){
storedFormInfos[0] = currentForm;
storedFormInfos[1] = currentTabId;
storedFormInfos[2] = currentRecordId;
// 2.If there is anything in storage but not the actual opened forms - add this new information to the existing array
}else if(actualIndex === -1) {
storedFormInfos[indexNr] = currentForm;
storedFormInfos[indexNr + 1] = currentTabId;
storedFormInfos[indexNr + 2] = currentRecordId;
// 3.If actual openend form is included in sessionStorage - only change the array values of the existing informations
}else{
storedFormInfos[actualIndex] = currentForm;
storedFormInfos[actualIndex + 1] = currentTabId;
storedFormInfos[actualIndex + 2] = currentRecordId;
}
// Set sessionStorage with customized array
sessionStorage.setItem("formInfos" , JSON.stringify(storedFormInfos));
n.PageTitle.setSubTitle(obj.target.getTabName(currentTabId));
this.settings.pageState.setPageState(currentTabId, n.PageTitle.get());
};
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment