2
0
mirror of https://github.com/ACSPRI/queXS synced 2024-04-02 12:12:16 +00:00
Files
CATI_Tool/include/limesurvey/admin/fck_LimeReplacementFields.php

447 lines
17 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/*
* LimeSurvey
* Copyright (C) 2007 The LimeSurvey Project Team / Carsten Schmitz
* All rights reserved.
* License: GNU/GPL License v2 or later, see LICENSE.php
* LimeSurvey is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*
* $Id: fck_LimeReplacementFields.php 11664 2011-12-16 05:19:42Z tmswhite $
*/
include_once("login_check.php");
if(!isset($_SESSION['loginID']))
{
die ("Unauthenticated Access Forbiden");
}
$surveyid=returnglobal('sid');
if (!isset($gid)) {$gid=returnglobal('gid');}
if (!isset($qid)) {$qid=returnglobal('qid');}
$fieldtype=preg_replace("/[^_.a-zA-Z0-9-]/", "",$_GET['fieldtype']);
$action=preg_replace("/[^_.a-zA-Z0-9-]/", "",$_GET['editedaction']);
//$InsertansUnsupportedtypes=Array('TEST-A','TEST-B','TEST-C','TEST-D');
$InsertansUnsupportedtypes=Array(); // Currently all question types are supported
$replFields=Array();
$isInstertansEnabled=false;
$limereplacementoutput="\t\t<script language=\"javascript\">\n"
. "\t\t\$(document).ready(function ()\n"
. "\t\t\t{\n"
. "\t\t\t\tLoadSelected() ;\n"
. "\t\t\t\tmydialog.SetOkButton( true ) ;\n"
. "\n"
. "SelectField( 'cquestions' ) ;\n"
. "\t});\n"
. "\n";
/**$limereplacementoutput="\n"
. "if (! oEditor.FCKBrowserInfo.IsIE)\n"
. "{\n"
. "\tinnertext = '' + dialog.EditorWindow.getSelection() + '' ;\n"
. "}\n"
. "else\n"
. "{\n"
. "\tinnertext = '' + dialog.EditorDocument.selection.createRange().text + '' ;\n"
. "}\n";
**/
$limereplacementoutput .= ""
. "\tvar eSelected = dialog.Selection.GetSelectedElement() ;\n"
. "\n";
/**
$limereplacementoutput="\n"
. "function LoadSelected()\n"
. "{\n"
. "\tif ( innertext == '' )\n"
. "return ;\n"
. "var replcode=innertext.substring(innertext.indexOf('{')+1,innertext.lastIndexOf('}'));\n"
. "document.getElementById('cquestions').value = replcode;\n"
. "}\n";
**/
$limereplacementoutput .= ""
. "\tfunction LoadSelected()\n"
. "\t{\n"
. "if ( !eSelected )\n"
. "\treturn ;\n"
. "if ( eSelected.tagName == 'SPAN' && eSelected._fckLimeReplacementFields )\n"
. "\t document.getElementById('cquestions').value = eSelected._fckLimeReplacementFields ;\n"
. "else\n"
. "\teSelected == null ;\n"
. "\t}\n";
$limereplacementoutput .= ""
. "\tfunction Ok()\n"
. "\t{\n"
. "var sValue = document.getElementById('cquestions').value ;\n"
. "FCKLimeReplacementFieldss.Add( sValue ) ;\n"
. "return true ;\n"
. "\t}\n";
$limereplacementoutput .= ""
. "\t</script>\n"
. "</head>\n";
$limereplacementoutput .= "\t<body scroll=\"no\" style=\"OVERFLOW: hidden;\">\n"
. "<table height=\"100%\" cellSpacing=\"0\" cellPadding=\"0\" width=\"100%\" border=\"0\">\n"
. "\t<tr>\n"
. "<td>\n";
switch ($fieldtype)
{
case 'survey-desc':
case 'survey-welc':
case 'survey-endtext':
case 'edittitle': // for translation
case 'editdescription': // for translation
case 'editwelcome': // for translation
case 'editend': // for translation
$replFields[]=array('TOKEN:FIRSTNAME',$clang->gT("First name from token"));
$replFields[]=array('TOKEN:LASTNAME',$clang->gT("Last name from token"));
$replFields[]=array('TOKEN:EMAIL',$clang->gT("Email from the token"));
$replFields[]=array('TOKEN:USESLEFT',$clang->gT("Uses left"));
$attributes=GetTokenFieldsAndNames($surveyid,true);
foreach ($attributes as $attributefield=>$attributedescription)
{
$replFields[]=array('TOKEN:'.strtoupper($attributefield), sprintf($clang->gT("Token attribute: %s"),$attributedescription));
}
$replFields[]=array('EXPIRY',$clang->gT("Survey expiration date"));
break;
case 'email-admin-notification':
$replFields[]=array('RELOADURL',$clang->gT("Reload URL"));
$replFields[]=array('VIEWRESPONSEURL',$clang->gT("View response URL"));
$replFields[]=array('EDITRESPONSEURL',$clang->gT("Edit response URL"));
$replFields[]=array('STATISTICSURL',$clang->gT("Statistics URL"));
$replFields[]=array('TOKEN',$clang->gT("Token code for this participant"));
$replFields[]=array('TOKEN:FIRSTNAME',$clang->gT("First name from token"));
$replFields[]=array('TOKEN:LASTNAME',$clang->gT("Last name from token"));
$replFields[]=array('TOKEN:USESLEFT',$clang->gT("Uses left"));
$replFields[]=array('SURVEYNAME',$clang->gT("Name of the survey"));
$replFields[]=array('SURVEYDESCRIPTION',$clang->gT("Description of the survey"));
$attributes=GetTokenFieldsAndNames($surveyid,true);
foreach ($attributes as $attributefield=>$attributedescription)
{
$replFields[]=array(strtoupper($attributefield), sprintf($clang->gT("Token attribute: %s"),$attributedescription));
}
$replFields[]=array('ADMINNAME',$clang->gT("Name of the survey administrator"));
$replFields[]=array('ADMINEMAIL',$clang->gT("Email address of the survey administrator"));
break;
case 'email-admin-resp':
$replFields[]=array('RELOADURL',$clang->gT("Reload URL"));
$replFields[]=array('VIEWRESPONSEURL',$clang->gT("View response URL"));
$replFields[]=array('EDITRESPONSEURL',$clang->gT("Edit response URL"));
$replFields[]=array('STATISTICSURL',$clang->gT("Statistics URL"));
$replFields[]=array('ANSWERTABLE',$clang->gT("Answers from this response"));
$replFields[]=array('TOKEN',$clang->gT("Token code for this participant"));
$replFields[]=array('TOKEN:FIRSTNAME',$clang->gT("First name from token"));
$replFields[]=array('TOKEN:LASTNAME',$clang->gT("Last name from token"));
$replFields[]=array('TOKEN:USESLEFT',$clang->gT("Uses left"));
$replFields[]=array('SURVEYNAME',$clang->gT("Name of the survey"));
$replFields[]=array('SURVEYDESCRIPTION',$clang->gT("Description of the survey"));
$attributes=GetTokenFieldsAndNames($surveyid,true);
foreach ($attributes as $attributefield=>$attributedescription)
{
$replFields[]=array(strtoupper($attributefield), sprintf($clang->gT("Token attribute: %s"),$attributedescription));
}
$replFields[]=array('ADMINNAME',$clang->gT("Name of the survey administrator"));
$replFields[]=array('ADMINEMAIL',$clang->gT("Email address of the survey administrator"));
break;
case 'email-inv':
case 'email-rem':
// these 3 fields are supported by email-inv and email-rem
// but not email-reg for the moment
$replFields[]=array('EMAIL',$clang->gT("Email from the token"));
$replFields[]=array('USESLEFT',$clang->gT("Uses left"));
$replFields[]=array('OPTOUTURL',$clang->gT("URL for a respondent to opt-out this survey"));
case 'email-reg':
$replFields[]=array('FIRSTNAME',$clang->gT("First name from token"));
$replFields[]=array('LASTNAME',$clang->gT("Last name from token"));
$replFields[]=array('SURVEYNAME',$clang->gT("Name of the survey"));
$replFields[]=array('SURVEYDESCRIPTION',$clang->gT("Description of the survey"));
$replFields[]=array('TOKEN',$clang->gT("Token code for this participant"));
$replFields[]=array('SURVEYID',$clang->gT("ID of the survey"));
$attributes=GetTokenFieldsAndNames($surveyid,true);
foreach ($attributes as $attributefield=>$attributedescription)
{
$replFields[]=array(strtoupper($attributefield), sprintf($clang->gT("Token attribute: %s"),$attributedescription));
}
$replFields[]=array('ADMINNAME',$clang->gT("Name of the survey administrator"));
$replFields[]=array('ADMINEMAIL',$clang->gT("Email address of the survey administrator"));
$replFields[]=array('SURVEYURL',$clang->gT("URL of the survey"));
$replFields[]=array('EXPIRY',$clang->gT("Survey expiration date"));
break;
case 'email-conf':
$replFields[]=array('TOKEN',$clang->gT("Token code for this participant"));
$replFields[]=array('FIRSTNAME',$clang->gT("First name from token"));
$replFields[]=array('LASTNAME',$clang->gT("Last name from token"));
$replFields[]=array('SURVEYNAME',$clang->gT("Name of the survey"));
$replFields[]=array('SURVEYDESCRIPTION',$clang->gT("Description of the survey"));
$attributes=GetTokenFieldsAndNames($surveyid,true);
foreach ($attributes as $attributefield=>$attributedescription)
{
$replFields[]=array(strtoupper($attributefield), sprintf($clang->gT("Token attribute: %s"),$attributedescription));
}
$replFields[]=array('ADMINNAME',$clang->gT("Name of the survey administrator"));
$replFields[]=array('ADMINEMAIL',$clang->gT("Email address of the survey administrator"));
$replFields[]=array('SURVEYURL',$clang->gT("URL of the survey"));
$replFields[]=array('EXPIRY',$clang->gT("Survey expiration date"));
// email-conf can accept insertans fields for non anonymous surveys
if (isset($surveyid))
{
$surveyInfo = getSurveyInfo($surveyid);
if ($surveyInfo['anonymized'] == "N")
{
$isInstertansEnabled=true;
}
}
break;
case 'group-desc':
case 'question-text':
case 'question-help':
case 'editgroup': // for translation
case 'editgroup_desc': // for translation
case 'editquestion': // for translation
case 'editquestion_help': // for translation
$replFields[]=array('TOKEN:FIRSTNAME',$clang->gT("First name from token"));
$replFields[]=array('TOKEN:LASTNAME',$clang->gT("Last name from token"));
$replFields[]=array('TOKEN:EMAIL',$clang->gT("Email from the token"));
$replFields[]=array('TOKEN:USESLEFT',$clang->gT("Uses left"));
$attributes=GetTokenFieldsAndNames($surveyid,true);
foreach ($attributes as $attributefield=>$attributedescription)
{
$replFields[]=array('TOKEN:'.strtoupper($attributefield), sprintf($clang->gT("Token attribute: %s"),$attributedescription));
}
$replFields[]=array('EXPIRY',$clang->gT("Survey expiration date"));
case 'editanswer':
$isInstertansEnabled=true;
break;
case 'assessment-text':
$replFields[]=array('TOTAL',$clang->gT("Overall assessment score"));
$replFields[]=array('PERC',$clang->gT("Assessment group score"));
break;
}
if ($isInstertansEnabled===true)
{
if (empty($surveyid)) {safe_die("No SID provided.");}
//2: Get all other questions that occur before this question that are pre-determined answer types
$fieldmap = createFieldMap($surveyid, 'full');
$surveyInfo = getSurveyInfo($surveyid);
$surveyformat = $surveyInfo['format'];// S, G, A
$prevquestion=null;
$previouspagequestion = true;
//Go through each question until we reach the current one
//error_log(print_r($qrows,true));
$questionlist=array();
foreach ($fieldmap as $field)
{
if (empty($field['qid'])) continue;
$AddQuestion=True;
switch ($action)
{
case 'addgroup':
$AddQuestion=True;
break;
case 'editgroup':
case 'editgroup_desc':
case 'translategroup':
if (empty($gid)) {safe_die("No GID provided.");}
if ($field['gid'] == $gid)
{
$AddQuestion=False;
}
break;
case 'addquestion':
if (empty($gid)) {safe_die("No GID provided.");}
if ( !is_null($prevquestion) &&
$prevquestion['gid'] == $gid &&
$field['gid'] != $gid)
{
$AddQuestion=False;
}
break;
case 'editanswer':
case 'copyquestion':
case 'editquestion':
case 'translatequestion':
case 'translateanswer':
if (empty($gid)) {safe_die("No GID provided.");}
if (empty($qid)) {safe_die("No QID provided.");}
if ($field['gid'] == $gid &&
$field['qid'] == $qid)
{
$AddQuestion=False;
}
break;
case 'emailtemplates':
// this is the case for email-conf
$AddQuestion=True;
break;
default:
safe_die("No Action provided.");
break;
}
if ( $AddQuestion===True)
{
if ($action == 'tokens' && $fieldtype == 'email-conf')
{
//For confirmation email all fields are valid
$previouspagequestion = true;
}
elseif ($surveyformat == "S")
{
$previouspagequestion = true;
}
elseif ($surveyformat == "G")
{
if ($previouspagequestion === true)
{ // Last question was on a previous page
if ($field["gid"] == $gid)
{ // This question is on same page
$previouspagequestion = false;
}
}
}
elseif ($surveyformat == "A")
{
$previouspagequestion = false;
}
$questionlist[]=array_merge($field,Array( "previouspage" => $previouspagequestion));
$prevquestion=$field;
}
else
{
break;
}
}
$questionscount=count($questionlist);
if ($questionscount > 0)
{
foreach($questionlist as $rows)
{
$question = $rows['question'];
if (isset($rows['subquestion'])) $question = "[{$rows['subquestion']}] " . $question;
if (isset($rows['subquestion1'])) $question = "[{$rows['subquestion1']}] " . $question;
if (isset($rows['subquestion2'])) $question = "[{$rows['subquestion2']}] " . $question;
$shortquestion=$rows['title'].": ".FlattenText($question);
$cquestions[]=array($shortquestion, $rows['qid'], $rows['type'], $rows['fieldname'],$rows['previouspage']);
} //foreach questionlist
} //if questionscount > 0
// Now I´ll add a hack to add the questions before as option
// if they are date type
}
if (count($replFields) > 0 || isset($cquestions) )
{
$limereplacementoutput .= "\t<select name='cquestions' id='cquestions' style='font-family:verdana; background-color: #FFFFFF; font-size:10; border: 0px;width:99%;' size='15' ondblclick='Ok();'>\n";
$noselection = false;
}
else
{
$limereplacementoutput .= $clang->gT("No replacement variable available for this field");
$noselection = true;
}
if (count($replFields) > 0)
{
$limereplacementoutput .= "<optgroup label='".$clang->gT("Standard Fields")."'>\n";
foreach ($replFields as $stdfield)
{
$limereplacementoutput .= "\t<option value='".$stdfield[0]."' title='".$stdfield[1]."'";
$limereplacementoutput .= ">".$stdfield[1]."</option>\n";
}
$limereplacementoutput .= "</optgroup>\n";
}
if (isset($cquestions))
{
$limereplacementoutput .= "<optgroup label='".$clang->gT("Previous Answers Fields")."'>\n";
foreach ($cquestions as $cqn)
{
$isDisabled="";
if (in_array($cqn[2],$InsertansUnsupportedtypes))
{
$isDisabled=" disabled='disabled'";
}
elseif ($cqn[4] === false)
{
$isDisabled=" disabled='disabled'";
}
$limereplacementoutput .= "\t<option value='INSERTANS:$cqn[3]' title='".$cqn[0]."'";
$limereplacementoutput .= " $isDisabled >$cqn[0]</option>\n";
}
$limereplacementoutput .= "</optgroup>\n";
}
if ($noselection === false)
{
$limereplacementoutput .= "\t</select>\n";
}
$limereplacementoutput .= "</td>\n"
. "\t</tr>\n";
if (isset($surveyformat))
{
switch ($surveyformat)
{
case 'A':
$limereplacementoutput .= "\t<tr>\n"
. "<td>\n";
$limereplacementoutput .= "\t<br />\n"
. "\t<font color='orange'>".$clang->gT("Some Question have been disabled")."</font>\n";
$limereplacementoutput .= "\t<br />\n"
. "\t".sprintf($clang->gT("Survey Format is %s:"), $clang->gT("All in one"))
. "\t<br />\n"
. "\t<i>".$clang->gT("Only Previous pages answers are available")."</i>\n"
. "\t<br />\n";
$limereplacementoutput .= "</td>\n"
. "\t</tr>\n";
break;
case 'G':
$limereplacementoutput .= "\t<tr>\n"
. "<td>\n";
$limereplacementoutput .= "\t<br /><font color='orange'>".$clang->gT("Some Question have been disabled")."</font>";
$limereplacementoutput .= "<br />".sprintf($clang->gT("Survey mode is set to %s:"), $clang->gT("Group by Group"))."<br/><i>".$clang->gT("Only Previous pages answers are available")."</i><br />";
$limereplacementoutput .= "</td>\n"
. "\t</tr>\n";
break;
}
}
$limereplacementoutput .= "</table>\n";
echo $limereplacementoutput;
exit;
?>