Skip to content

Commit

Permalink
Fixed issue #13803: Deprecated confirm box since 3.0 alpha
Browse files Browse the repository at this point in the history
  • Loading branch information
lacrioque committed Jun 27, 2018
1 parent 9c22a06 commit 32ceb09
Show file tree
Hide file tree
Showing 11 changed files with 160 additions and 12 deletions.
3 changes: 2 additions & 1 deletion application/config/third_party.php
Expand Up @@ -44,7 +44,8 @@
'yiistrap'.$minVersion.'.css',
),
'js'=>array(
'bootstrap'.$minVersion.'.js'
'bootstrap'.$minVersion.'.js',
'plugins/bootstrapconfirm/bootstrapconfirm'.$minVersion.'.js'
),
'depends' => array(
'jquery',
Expand Down
7 changes: 6 additions & 1 deletion application/extensions/LimeScript/LimeScript.php
Expand Up @@ -19,7 +19,12 @@ public function run()
$data['replacementFields']['path'] = App()->createUrl("admin/limereplacementfields/sa/index/");
$json = json_encode($data, JSON_FORCE_OBJECT);
$script = "LS.data = $json;\n"
. "LS.lang = {};\n"
. "LS.lang = {
confirm: {
confirm_cancel: '".gT('Cancel')."',
confirm_ok: '".gT('OK')."'
}
};\n"
. "$.ajaxSetup({data: {YII_CSRF_TOKEN: LS.data.csrfToken}});";
App()->getClientScript()->registerScript('LimeScript', $script, CClientScript::POS_HEAD);
}
Expand Down
7 changes: 6 additions & 1 deletion application/helpers/SurveyRuntimeHelper.php
Expand Up @@ -1286,7 +1286,12 @@ public function setJavascriptVar($iSurveyId = '')
$aLSJavascriptVar['bNumRealValue'] = (int) (bool) Yii::app()->getConfig('bNumRealValue', 0);
$aRadix = getRadixPointData($aSurveyinfo['surveyls_numberformat']);
$aLSJavascriptVar['sLEMradix'] = $aRadix['separator'];
$aLSJavascriptVar['lang'] = new stdClass; // To add more easily some lang string here
$aLSJavascriptVar['lang'] = [
"confirm" => [
"confirm_cancel" => gT('Cancel'),
"confirm_ok" => gT('OK'),
],
]; // To add more easily some lang string here
$aLSJavascriptVar['showpopup'] = (int) Yii::app()->getConfig('showpopups');
$aLSJavascriptVar['startPopups'] = new stdClass;
$aLSJavascriptVar['debugMode'] = Yii::app()->getConfig('debug');
Expand Down
Expand Up @@ -18,7 +18,7 @@
var lsbrowsertitle = '".gT('Label set browser','js')."';
var lsdetailurl = '".Yii::app()->createUrl('/admin/questions/sa/ajaxlabelsetdetails')."';
var lspickurl = '".Yii::app()->createUrl('/admin/questions/sa/ajaxlabelsetpicker')."';
var ok = '".gT('Ok')."';
var ok = '".gT('OK')."';
var saveaslabletitle = '".gT('Save as label set','js')."';
var sCheckLabelURL = '".Yii::app()->createUrl('/admin/questions/sa/ajaxchecklabel')."';
var sImageURL = '".Yii::app()->getConfig('adminimageurl')."';
Expand Down
32 changes: 32 additions & 0 deletions assets/packages/bootstrap/plugins/bootstrapconfirm/README.md
@@ -0,0 +1,32 @@
#bsconfirm instead of jsconfirm

usage is really easy, instead of

```javascript
if(confirm(confirmText)) {
//do something
}
```

Just do

```javascript
$.bsconfirm(confirmText, LSvar.lang, function onClickOK(){
//do something
}
);
```

If you like you may even add a "on click cancel button" function

```javascript
$.bsconfirm(confirmText, LSvar.lang, function onClickOK(){
//do something
}, function onClickCancelButton(){
//do something
}
);
```

To compile this please install babel and unglifyjs.

@@ -0,0 +1,37 @@
'use strict';

jQuery.extend({
bsconfirm: function bsconfirm(text, i18n, cbok, cbcancel) {

cbok = cbok || function () {
$('#identity__bsconfirmModal').modal('hide');
};
cbcancel = cbcancel || function () {
$('#identity__bsconfirmModal').modal('hide');
};
i18n = i18n || {};

var modal = $('\n <div id="identity__bsconfirmModal" class="modal fade">\n <div class="modal-dialog">\n <div class="modal-content">\n <div class="modal-body">\n <button type="button" class="close" data-dismiss="modal">&times;</button>\n ' + text + '\n </div>\n <div class="modal-footer">\n <button id="identity__bsconfirmModal_button_cancel" type="button" class="btn btn-default">' + (i18n.confirm_cancel || '<i class="fa fa-times"></i>') + '</button>\n <button id="identity__bsconfirmModal_button_ok" type="button" class="btn btn-danger">' + (i18n.confirm_ok || '<i class="fa fa-check"></i>') + '</button>\n </div>\n </div>\n </div>\n </div>\n ');

if ($('body').find('#identity__bsconfirmModal').length == 0) {
$('body').append(modal);
} else {
$('body').find('#identity__bsconfirmModal').remove();
$('body').append(modal);
}

modal.modal({
backdrop: "static",
show: true
});

modal.on('hidden.bs.modal', function () {
modal.remove();
});
modal.on('shown.bs.modal', function () {
$('#identity__bsconfirmModal_button_ok').on('click', cbok);
$('#identity__bsconfirmModal_button_cancel').on('click', cbcancel);
});
}
});

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

@@ -0,0 +1,45 @@
jQuery.extend({
bsconfirm : function(text, i18n, cbok, cbcancel){

cbok = cbok || function(){$('#identity__bsconfirmModal').modal('hide');};
cbcancel = cbcancel || function(){$('#identity__bsconfirmModal').modal('hide');};
i18n = i18n || {};

const modal = $(`
<div id="identity__bsconfirmModal" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<button type="button" class="close" data-dismiss="modal">&times;</button>
${text}
</div>
<div class="modal-footer">
<button id="identity__bsconfirmModal_button_cancel" type="button" class="btn btn-default">${i18n.confirm_cancel || '<i class="fa fa-times"></i>'}</button>
<button id="identity__bsconfirmModal_button_ok" type="button" class="btn btn-danger">${i18n.confirm_ok || '<i class="fa fa-check"></i>'}</button>
</div>
</div>
</div>
</div>
`);

if($('body').find('#identity__bsconfirmModal').length == 0) {
$('body').append(modal);
} else {
$('body').find('#identity__bsconfirmModal').remove();
$('body').append(modal);
}

modal.modal({
backdrop: "static",
show: true,
});

modal.on('hidden.bs.modal', function(){
modal.remove();
});
modal.on('shown.bs.modal', function(){
$('#identity__bsconfirmModal_button_ok').on('click', cbok);
$('#identity__bsconfirmModal_button_cancel').on('click', cbcancel);
});
}
});
2 changes: 2 additions & 0 deletions assets/packages/bootstrap/plugins/bootstrapconfirm/compile.sh
@@ -0,0 +1,2 @@
babel bootstrapconfirm.src.js > bootstrapconfirm.js
uglifyjs --compress -- bootstrapconfirm.js > bootstrapconfirm.min.js
@@ -0,0 +1,7 @@
{
"dependencies": {
"babel-preset-env": "^1.7.0",
"babel-cli": "^6.26.0",
"uglifyjs": "^2.4.11"
}
}
29 changes: 21 additions & 8 deletions assets/packages/limesurvey/survey.js
Expand Up @@ -290,15 +290,28 @@ function activateActionLink(){
* @var object[] submits : name.value to submit
*/
function confirmSurveyDialog(text,title,submits){
if(confirm(text)){
$.each(submits, function(name, value) {
$("<input/>",{
'type':"hidden",
'name':name,
'value':value,
}).appendTo('form#limesurvey');
if($.bsconfirm !== undefined) {

This comment has been minimized.

Copy link
@Shnoulle

Shnoulle Jun 28, 2018

Collaborator

Just for information , previously : https://bugs.limesurvey.org/view.php?id=11977 it's not in «default/base» template, but only for advanced template. Like alert …

And there was some discussion about this part …

$.bsconfirm(text, LSvar.lang.confirm, function(){
$.each(submits, function(name, value) {
$("<input/>",{
'type':"hidden",
'name':name,
'value':value,
}).appendTo('form#limesurvey');
});
$('form#limesurvey').submit();
});
$('form#limesurvey').submit();
} else {
if(confirm(text)){
$.each(submits, function(name, value) {
$("<input/>",{
'type':"hidden",
'name':name,
'value':value,
}).appendTo('form#limesurvey');
});
$('form#limesurvey').submit();
}
}
}
/**
Expand Down

0 comments on commit 32ceb09

Please sign in to comment.