Skip to content

Commit

Permalink
Fixed issue #15979: "Save and add group" plus "Save and add question"…
Browse files Browse the repository at this point in the history
… do not work correctly. (#1515)

Updated question groups controller and Vue to handle the different scenarios ('save-and-new' and 'save-and-new-question') with redirects. Removed links from the "Save and..." buttons. Updated side panel's updateQuestiongroups mutation to trigger the link update.
  • Loading branch information
gabrieljenik committed Aug 10, 2020
1 parent 4b0890a commit 1b7c70c
Show file tree
Hide file tree
Showing 9 changed files with 59 additions and 28 deletions.
36 changes: 29 additions & 7 deletions application/controllers/admin/questiongroups.php
Original file line number Diff line number Diff line change
Expand Up @@ -515,6 +515,7 @@ public function saveQuestionGroupData($sid)
{
$questionGroup = App()->request->getPost('questionGroup', []);
$questionGroupI10N = App()->request->getPost('questionGroupI10N', []);
$sScenario = App()->request->getPost('scenario', '');
$iSurveyId = (int) $sid;

$oQuestionGroup = QuestionGroup::model()->findByPk($questionGroup['gid']);
Expand All @@ -525,13 +526,34 @@ public function saveQuestionGroupData($sid)
}

$landOnSideMenuTab = 'structure';
$sRedirectUrl = $this->getController()->createUrl(
'admin/questiongroups/sa/view/',
[
'surveyid' => $iSurveyId,
'gid' => $oQuestionGroup->gid,
'landOnSideMenuTab' => $landOnSideMenuTab]
);
switch ($sScenario) {
case 'save-and-new-question':
$sRedirectUrl = $this->getController()->createUrl(
'admin/questions/sa/newquestion/',
[
'surveyid' => $iSurveyId,
'gid' => $oQuestionGroup->gid,
]
);
break;
case 'save-and-new':
$sRedirectUrl = $this->getController()->createUrl(
'admin/questiongroups/sa/add/',
[
'surveyid' => $iSurveyId,
]
);
break;
default:
$sRedirectUrl = $this->getController()->createUrl(
'admin/questiongroups/sa/view/',
[
'surveyid' => $iSurveyId,
'gid' => $oQuestionGroup->gid,
'landOnSideMenuTab' => $landOnSideMenuTab
]
);
}

$success = $this->_applyI10N($oQuestionGroup, $questionGroupI10N);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -244,11 +244,6 @@

// Save and Close Button
if ($ownsSaveButton == true) {
$saveAndNewLink = $this->createUrl("admin/questiongroups/sa/add/", ["surveyid" => $sid]);

$paramArray = $gid != null ? [ "surveyid" => $sid, 'gid' => $gid] : [ "surveyid" => $sid ];
$saveAndAddQuestionLink = $this->createUrl("admin/questions/sa/newquestion/", $paramArray);

$saveButton = [
'id' => 'save',
'name' => gT('Save'),
Expand All @@ -264,7 +259,7 @@
'id' => 'save-and-new-button',
'name' => gT('Save and add group'),
'icon' => 'fa fa-plus-square',
'url' => $saveAndNewLink,
'scenario' => 'save-and-new',
'isSaveButton' => true,
'class' => 'btn-default',
];
Expand All @@ -274,7 +269,7 @@
'id' => 'save-and-new-question-button',
'icon' => 'fa fa-plus',
'name' => gT('Save and add question'),
'url' => $saveAndAddQuestionLink,
'scenario' => 'save-and-new-question',
'isSaveButton' => true,
'class' => 'btn-default',
];
Expand Down
2 changes: 1 addition & 1 deletion assets/packages/questiongroup/build.min/css/main.css

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 10 additions & 4 deletions assets/packages/questiongroup/build/js/questiongroupedit.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
/******/
/******/ var hotApplyOnUpdate = true;
/******/ // eslint-disable-next-line no-unused-vars
/******/ var hotCurrentHash = "7bea8fa14fa5b844b577";
/******/ var hotCurrentHash = "07522311524c7026f31e";
/******/ var hotRequestTimeout = 10000;
/******/ var hotCurrentModuleData = {};
/******/ var hotCurrentChildModule;
Expand Down Expand Up @@ -148871,8 +148871,9 @@ __webpack_require__.r(__webpack_exports__);

var redirect = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var redirectUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var scenario = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
this.loading = true;
this.$store.dispatch('saveQuestionGroupData').then(function (result) {
this.$store.dispatch('saveQuestionGroupData', scenario).then(function (result) {
window.LS.notifyFader(result.data.message, 'well-lg bg-primary text-center');

_this2.$log.log('OBJECT AFTER TRANSFER: ', result);
Expand Down Expand Up @@ -148936,7 +148937,9 @@ __webpack_require__.r(__webpack_exports__);
});
LS.EventBus.$off('componentFormSubmit');
LS.EventBus.$on('componentFormSubmit', function (payload) {
_this4.submitCurrentState(payload.id == '#save-and-close-button', payload.url != '#' ? payload.url : false);
var redirect = payload.id == 'save-and-close-button' || payload.id == 'save-and-new-question-button' || payload.id == 'save-and-new-button';

_this4.submitCurrentState(redirect, payload.url != '#' ? payload.url : false, payload.scenario || '');
});

if (window.QuestionGroupEditData.startInEditView) {
Expand Down Expand Up @@ -186048,13 +186051,16 @@ __webpack_require__.r(__webpack_exports__);
});
},
saveQuestionGroupData: function saveQuestionGroupData(context) {
var scenario = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';

if (context.state.inTransfer) {
return Promise.resolve(false);
}

var transferObject = lodash_merge__WEBPACK_IMPORTED_MODULE_2___default()({
'questionGroup': context.state.currentQuestionGroup,
'questionGroupI10N': context.state.currentQuestionGroupI10N
'questionGroupI10N': context.state.currentQuestionGroupI10N,
'scenario': scenario
}, window.LS.data.csrfTokenData);
return new Promise(function (resolve, reject) {
context.commit('setInTransfer', true);
Expand Down

Large diffs are not rendered by default.

13 changes: 10 additions & 3 deletions assets/packages/questiongroup/src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,9 @@ export default {
eventSet() {
this.event = null;
},
submitCurrentState(redirect = false, redirectUrl = false) {
submitCurrentState(redirect = false, redirectUrl = false, scenario = false) {
this.loading = true;
this.$store.dispatch('saveQuestionGroupData').then(
this.$store.dispatch('saveQuestionGroupData', scenario).then(
(result) => {
window.LS.notifyFader(result.data.message, 'well-lg bg-primary text-center');
this.$log.log('OBJECT AFTER TRANSFER: ', result);
Expand Down Expand Up @@ -146,7 +146,14 @@ export default {
LS.EventBus.$off('componentFormSubmit');
LS.EventBus.$on('componentFormSubmit', (payload) => {
this.submitCurrentState((payload.id == '#save-and-close-button'), payload.url != '#' ? payload.url : false);
let redirect = (payload.id == 'save-and-close-button' ||
payload.id == 'save-and-new-question-button' ||
payload.id == 'save-and-new-button');
this.submitCurrentState(
redirect,
payload.url != '#' ? payload.url : false,
payload.scenario || ''
);
});
if(window.QuestionGroupEditData.startInEditView) {
Expand Down
5 changes: 3 additions & 2 deletions assets/packages/questiongroup/src/storage/actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,14 +69,15 @@ export default {
});
});
},
saveQuestionGroupData: (context) => {
saveQuestionGroupData: (context, scenario='') => {
if(context.state.inTransfer ) {
return Promise.resolve(false);
}

let transferObject = merge({
'questionGroup': context.state.currentQuestionGroup,
'questionGroupI10N': context.state.currentQuestionGroupI10N
'questionGroupI10N': context.state.currentQuestionGroupI10N,
'scenario': scenario
}, window.LS.data.csrfTokenData);

return new Promise((resolve, reject) => {
Expand Down

0 comments on commit 1b7c70c

Please sign in to comment.