How do I add an incident number and short description to the Survey?

jackiem
Kilo Contributor

Hello,

I am trying to add the incident number and short description to the survey.   I can add the incident number to the email but I would like it to appear directly within the survey take page.    

I found one suggestion to pass the parameter of the incident number through the URL and default the value of a question on the survey to javascript:RP.getParameterValue("incidentnum") but I do not see a field for the default value of a question. I could find the field in the legacy survey but not under the new surveys in Fuji.  

How do I add the incident number and description into either the survey intro or somewhere on the survey take page?

thank you,

Jackie

1 ACCEPTED SOLUTION

My apologies Jackie - I just assumed that survey was a system delivered UI page since it sounded like it was. I looked at ours a little closer - survey was a page we created based off of assessment_take2 (so that we would not lose the future updates). The code above was put inside this tag: <div class="assessment">, you can play with it to get it in the right spot on the page.


View solution in original post

30 REPLIES 30

Hi Jocelyn



Yes, It worked for me


Hi Abhithen,



What did you do differently?



Thanks,


Jocelyn


Hi Jocelyn



I had to play around a bit with the assessment_take2 page. Finally ended up modifying the HTML to get the required fields on the page.


ash36
Kilo Contributor

can you share the details?

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
	<j:if test="${GlideMobileExtensions.getDeviceType() != 'doctype'}">
		<g:requires name="scripts/lib/jquery_includes.js" />
	</j:if>
	<g:requires name="scripts/json2.jsx" />
	<g:requires name="scripts/catalog.js" includes="true" />
	<g:requires name="scripts/js_includes_assessment.js" includes="true" />

	<j:set var="jvar_isComingFromSurveyCreator" value="${sysparm_isSurveyCreator}" />
	<j:set var="jvar_isReaderView" value="${HTML:sysparm_reader_view}" />
	<j:set var="jvar_hidepreview" value="no" />
	<g:evaluate jelly="true" var="jvar_assessable_type">
		var metricTypeId = '';
		if(typeof jelly.sysparm_assessable_type !== 'undefined'){
			metricTypeId = SNC.GlideHTMLSanitizer.sanitize(jelly.sysparm_assessable_type);
			var metricTypeRegex = new RegExp("^\\w{32}$");
			if(!metricTypeRegex.test(metricTypeId)){
				metricTypeId = '';
			}
		}
		metricTypeId;
	</g:evaluate>
	<g2:evaluate var="jvar_attachrole" expression="gs.getProperty('glide.attachment.role')" />
	<g:evaluate var="jvar_hideClose">
		var hideClose = '${sysparm_hide_close}' == 'true';
		hideClose;
	</g:evaluate>
	<g:evaluate var="jvar_assessment_type">
		var metricGR = new GlideRecord("asmt_metric_type");
		metricGR.addQuery('sys_id', '${jvar_assessable_type}');
		metricGR.query();
		var evaluation_type = gs.getMessage('assessment');
		if (metricGR.next())
			evaluation_type = metricGR.evaluation_method.getChoiceValue().toLowerCase();
		evaluation_type;
	</g:evaluate>
	<g:evaluate var="jvar_is_public_survey">
		var isPublicSurvey = "false";
		var metricGR = new GlideRecord("asmt_metric_type");
		metricGR.addQuery('sys_id', '${jvar_assessable_type}');
		metricGR.query();
		if (metricGR.next() ${AND} metricGR.allow_public ${AND} '${jvar_assessment_type}' == 'survey')
			isPublicSurvey = "true";
		isPublicSurvey;
	</g:evaluate>
	<g:evaluate var="jvar_redirect_to_login">
    var isUserLoggedIn = gs.isLoggedIn();
	var redirectLogin = "false";
	if((('${jvar_is_public_survey}' == 'false') || ('${jvar_assessable_sysid}' == 'not_authorized')) ${AND} !isUserLoggedIn)
	redirectLogin = "true";
	redirectLogin;
	</g:evaluate>
	<j:if test="${jvar_redirect_to_login == 'true'}">
	<script>document.location.href = "assessment_redirect.do?sysparm_survey_url=${sysparm_this_url}";</script>
	</j:if>
	<g:evaluate jelly="true" var="jvar_assessable_sysid">
		var asmtInstanceId = '';
		if(typeof jelly.sysparm_assessable_sysid !== 'undefined'){
			asmtInstanceId = SNC.GlideHTMLSanitizer.sanitize(jelly.sysparm_assessable_sysid);
			var asmtInstanceRegex = new RegExp("^\\w+$");
			if(!asmtInstanceRegex.test(asmtInstanceId)){
				asmtInstanceId = 'invalidsysid';
			}
		}
		if (asmtInstanceId == '') {
			var instance = new SNC.AssessmentCreation().createOrGetAssessment('${jvar_assessable_type}', '', gs.getUserID());
		} else if(asmtInstanceId =='invalidsysid'){
			instance = 'invalidsysid';
		}else{
			var temp = new SNC.AssessmentCreation().checkAssessmentAllowed('${jvar_assessable_type}', asmtInstanceId, gs.getUserID());
			if ('${sysparm_isSurveyCreator}' == 'yes' || ('${jvar_isReaderView}' == 'true' ${AND} gs.hasRole('survey_admin')))
				var instance = asmtInstanceId;
			else if (temp != "" ${AND} temp != "wip")
				var instance = temp;
			else
				var instance = asmtInstanceId;
		}
		if (instance.substring(0, 6) == 'notyet') {
			var when = instance.substring(6);
			instance = 'notyet';
		}
		instance;
	</g:evaluate>

	<g:requires name="styles/assessment.css" />
	<j:if test="${jvar_assessable_sysid == 'invalidsysid'}">
		<g:evaluate>
			var msg = gs.getMessage('The assessable record is invalid');
			gs.addErrorMessage(msg);
		</g:evaluate>
	</j:if>

	<j:if test="${jvar_assessable_sysid == 'completed'}">
		<g:evaluate>
			var msg = gs.getMessage('You have completed this {0}', '${jvar_assessment_type}');
			gs.addInfoMessage(msg);
		</g:evaluate>
	</j:if>

	<j:if test="${jvar_assessable_sysid == 'canceled'}">
		<g:evaluate>
			var msg = gs.getMessage('This {0} has been canceled', '${jvar_assessment_type}');
			gs.addErrorMessage(msg);
		</g:evaluate>
	</j:if>

	<j:if test="${jvar_assessable_sysid == 'save'}">
		<j:if test="${sysparm_inst_due_date == ''}">
			<g:evaluate>
				var msg = gs.getMessage('Your responses have been saved');
				gs.addInfoMessage(msg);
			</g:evaluate>
		</j:if>
		<j:if test="${sysparm_inst_due_date != ''}">
			<g:evaluate>
				var msgArr = [];
				msgArr.push('${jvar_assessment_type}');
				msgArr.push('${sysparm_inst_due_date}');
				var msg = gs.getMessage('Your responses have been saved. You can complete this {0} before {1}', msgArr);
				gs.addInfoMessage(msg);
			</g:evaluate>
		</j:if>
	</j:if>

	<j:if test="${jvar_assessable_sysid == 'cancel'}">
		<j:set var="jvar_inst_due_date" value="${sysparm_inst_due_date}" />
		<j:set var="jvar_isUserLoggedIn" value="${isUserLoggedIn}" />
		<j:if test="${jvar_inst_due_date == '' || !jvar_isUserLoggedIn}">
			<g:evaluate>
				var msg = gs.getMessage('Your responses have not been saved');
				gs.addErrorMessage(msg);
			</g:evaluate>
		</j:if>
		<j:if test="${jvar_inst_due_date != '' &amp;&amp; jvar_isUserLoggedIn}">
			<g:evaluate>
				var msgArr = [];
				msgArr.push('${jvar_assessment_type}');
				msgArr.push('${sysparm_inst_due_date}');
				var msg = gs.getMessage('Your responses have not been saved. You can complete this {0} before {1}', msgArr);
				gs.addErrorMessage(msg);
			</g:evaluate>
		</j:if>
	</j:if>

	<j:if test="${jvar_assessable_sysid == 'close'}">
		<g:evaluate>
			var msg = gs.getMessage('Preview has been closed');
			gs.addErrorMessage(msg);
		</g:evaluate>
	</j:if>

	<j:if test="${jvar_assessable_sysid == 'notyet'}">
		<g:evaluate>
			var msg = gs.getMessage('You have recently completed this Survey, it will be available in the future');
			gs.addErrorMessage(msg);
		</g:evaluate>
	</j:if>

	<j:if test="${(jvar_assessable_sysid == 'not_authorized')}">
		<g:evaluate>
			var msg = gs.getMessage('You are not authorized to take this {0}', '${jvar_assessment_type}');
			gs.addErrorMessage(msg);
		</g:evaluate>
	</j:if>

	<j:if test="${jvar_assessable_sysid == 'not_available'}">
		<g:evaluate>
			var msg = gs.getMessage('This {0} is not currently available, check back later', '${jvar_assessment_type}');
			gs.addErrorMessage(msg);
		</g:evaluate>
	</j:if>

	<j:if test="${jvar_assessable_sysid == 'invalidtype'}">
		<g:evaluate>
			var msg = gs.getMessage('There was an unexpected failure with this assessment, invalid type provided');
			gs.addErrorMessage(msg);
		</g:evaluate>
	</j:if>

	<j:if test="${jvar_assessable_sysid == 'inactive'}">
		<g:evaluate>
			var msg = gs.getMessage('This {0} is no longer active', '${jvar_assessment_type}');
			gs.addErrorMessage(msg);
		</g:evaluate>
	</j:if>

	<j:if test="${jvar_assessable_sysid == 'draft_state'}">
		<g:evaluate>
			var msg = gs.getMessage('This {0} has not yet been published', '${jvar_assessment_type}');
			gs.addErrorMessage(msg);
		</g:evaluate>
	</j:if>

	<j:if test="${jvar_assessable_sysid == 'isscheduled'}">
		<g:evaluate>
			var msg = gs.getMessage('An incorrect assessment or survey was provided - on demand expected');
			gs.addErrorMessage(msg);
		</g:evaluate>
	</j:if>

	<j:if test="${jvar_assessable_sysid == 'notsurvey'}">
		<g:evaluate>
			var msg = gs.getMessage('An incorrect assessment was provided - survey expected');
			gs.addErrorMessage(msg);
		</g:evaluate>
	</j:if>

	<j:if test="${jvar_assessable_sysid == 'nousers'}">
		<g:evaluate>
			var msg = gs.getMessage('Unable to generate assessment, no user was provided');
			gs.addErrorMessage(msg);
		</g:evaluate>
	</j:if>

	<j:if test="${jvar_assessable_sysid == 'nosources'}">
		<g:evaluate>
			var msg = gs.getMessage('Unable to generate assessment, no source was provided');
			gs.addErrorMessage(msg);
		</g:evaluate>
	</j:if>

	<j:if test="${jvar_assessable_sysid.length() == 32}">
		<g:evaluate var="jvar_preview">
			var isPreview = false;
			var gr = new GlideRecord("asmt_assessment_instance");
			gr.get(instance);
			if (gr.isValidRecord())
			isPreview = gr.getValue("preview");
		</g:evaluate>
		<g:evaluate var="jvar_task_record_url">
			var gr = new GlideRecord("asmt_assessment_instance");
			gr.get(instance);
			var task_record = "";
			var task_table = "";
			var task_record_url = "";
			if(gr.trigger_table){
				var tr = new GlideRecord(gr.trigger_table);
				if(tr.get(gr.trigger_id)){
					task_record_url = gr.trigger_table + ".do?sys_id=" + gr.trigger_id;
					task_table = tr.getClassDisplayValue();
					task_record = tr.getDisplayValue();
				}
			}
			task_record_url;
		</g:evaluate>
		<g2:evaluate var="jvar_can_write">
			var gr = new GlideRecord('asmt_assessment_instance');
			gr.get(instance);
			gr.canWrite();
		</g2:evaluate>
	</j:if>
	<j:if test="${jvar_assessable_sysid.length() != 32}">
		<g:evaluate var="jvar_preview">
			var isPreview = false;
		</g:evaluate>
		<g:evaluate var="jvar_task_record_url">
			var task_record_url = "";
			var task_record = "";
			var task_table="";
		</g:evaluate>
	</j:if>
	<j:if test="${isPreview == true}">
		<g:evaluate var="jvar_hidepreview">
			if ('${sysparm_isSurveyCreator}' == 'yes') {
			value = 'no';
			} else {
			var metricGR = new GlideRecord("asmt_metric_type");
			metricGR.addQuery('sys_id', '${jvar_assessable_type}');
			metricGR.query();
			if (metricGR.next())
			metricGR.deleteRecord();
			value = "yes";
			}
		</g:evaluate>

		<j:if test="${jvar_isComingFromSurveyCreator != 'yes'}">
			<g:evaluate>
				var msg = gs.getMessage('This preview instance has not been saved.');
				gs.addErrorMessage(msg);
			</g:evaluate>
		</j:if>
	</j:if>

	<g:ui_form>
		<input type="hidden" id="type_sysID" name="type_sysID" value="${jvar_assessable_type}" />
		<input type="hidden" id="instance_sysID" name="instance_sysID" value="${jvar_assessable_sysid}" />
		<input type="hidden" id="selection_result" name="selection_result" value="" />
		<input type="hidden" id="hiddenQuestions" name="hiddenQuestions" value="" />
		<input type="hidden" id="attachmentQuestions" name="attachmentQuestions" value="" /> 
		<input name="sys_target" id="sys_target" type="HIDDEN" value="asmt_assessment_instance" />
		<input name="sys_uniqueValue" id="sys_uniqueValue" type="HIDDEN" value="${jvar_assessable_sysid}" />
		<j:if test="${jvar_hidepreview == 'no'}">
			<div class="assessment">
				<table class="wrap">  
                 <tbody>  
                  <g2:evaluate var="jvar_type" expression="var typeGR='';  
                   var instanceGR = new GlideRecord('asmt_assessment_instance');  
                   instanceGR.addQuery('sys_id', '${jvar_assessable_sysid}');  
                   instanceGR.query();  
                   if (instanceGR.next()) {  
                     typeGR = new GlideRecord('asmt_metric_type');  
                     typeGR.addQuery('sys_id', instanceGR.metric_type);  
                     typeGR.query();  
                  } " />  
<j2:if test="$[typeof typeGR == 'object']">  
<j2:if test="$[typeGR.next()]">  
<!--<div style="background-color: #767676;margin-top: 2px;font-weight: bold;padding: 2px 6px 2px 6px;color: #ffffff;">  -->
<!--  <img src="images/context.gifx"></img>  -->
<!--  $[typeGR.name] --> 
  <!-- </div>  -->
 <!-- end_note may contain HTML formatting -->  
   <g2:no_escape>$[NS:typeGR.introduction]</g2:no_escape>
 <div align="center" style="width:100%; border:1px solder red;">  
 <div align="left" style="font-weight: bold;padding-bottom:5px; margin-bottom:0px;">Ticket Details: </div>  
 <div align="left" style="font-weight: bold;padding-bottom:5px; margin-bottom:0px;"> $[instanceGR.trigger_id.getDisplayValue()]  </div>
 <div align="left" style="font-weight: bold;padding-bottom:5px; margin-bottom:0px;"> Short Description: $[instanceGR.trigger_id.short_description]  </div>	
 <div align="left" style="font-weight: bold;padding-bottom:5px; margin-bottom:0px;"> Assigned To: $[instanceGR.trigger_id.assigned_to.getDisplayValue()]  </div>	 
	 
	 
		 
 <!-- <div align="left">  
 <g2:evaluate var="jvar_record" expression="var recordGR='';  
 gs.log(instanceGR.trigger_table + ' ' + instanceGR.trigger_id + ' This is coming from the page directly');  
 var recordGR = new GlideRecord(instanceGR.trigger_table);  
 recordGR.addQuery('sys_id', instanceGR.trigger_id);  
 recordGR.query();   
" />  
<j2:if test="$[typeof recordGR == 'object']"> 
	<j2:if test="recordGR.next()">
  <div style="margin-bottom:0px;"><b>Incident number:</b>  
  $[recordGR.number]  
  </div>  
  <div style="margin-bottom:0px;"><b>Description:</b>  
  $[recordGR.short_description]  
  </div>  
 </j2:if>
  
</j2:if>  
</div>  -->
</div>  
</j2:if>  
</j2:if>  
<g2:com.snc.assessment_core_take assessment="${jvar_assessable_sysid}" />  
</tbody> 
</table>  
						
			</div>
			<div class="assessmentButtonRow">   
				                                
				                                <j:if test="${jvar_assessable_sysid != 'completed'}">
												<j:if test="${isPreview != true}">
													<j:if test="${jvar_isReaderView != 'true'}">
													<button class="btn btn-primary" type="submit" onClick="return submitAssessment();" id="submit" name="submit">${gs.getMessage('Submit')}
													</button>
													<!--<button class="btn btn-default" type="submit" onClick="return saveAssessment();" id="save" name="save">${gs.getMessage('Save')}
													</button> -->
													<button class="btn btn-default" type="submit" onClick="return cancelAssessment();" id="cancel" name="cancel">${gs.getMessage('Cancel')}
													</button>
													</j:if>
												</j:if>
				</j:if>
				
				
								
												<j:if test="${isPreview == true}">
													<j:if test="${hideClose != true}">
														<button class="button listactions" type="submit" onClick="return closeAssessment();" id="close" name="close">${gs.getMessage('Close')}
														</button>
													</j:if>
												</j:if>
											</div>
		</j:if>
	</g:ui_form>

	<j2:if test="${gs.getProperty('com.snc.assessment.signature_authentication')=='false'}">
		<j2:set var='jvar_signature_authentication' value='false' />
	</j2:if>
	<j2:if test="${gs.getProperty('com.snc.assessment.signature_authentication')=='true'}">
		<j2:set var='jvar_signature_authentication' value='true' />
	</j2:if>

	<g:ui_form>
		<div id='overlay'>
			<div id="Authentication">
				<g:ui_form>
					<input type="hidden" name="jvar_signature_authentication" id="jvar_signature_authentication" value="$[jvar_signature_authentication]" />
					<input type="hidden" id="approve_edit" name="approve_edit" value="false" />
					<input type="hidden" id="approved" name="approved" value="false" />
					<input type="hidden" id="sysapproval_id" name="sysapproval_id" value="${sysparm_approval_id}" />
					<table id="authenticate_table">
						<tr style="vertical-align: top;">
							<td colspan="2">
								<table id="authentication_header" style="width:100%; font-weight:bold; background-color:#eee;">
									<tbody>
										<tr>
											<td style="vertical-align: middle; width:100%;">
												Signature Authentication
											</td>
											<td style="text-align: right;">
												<span>
													<img id="popup_close_image" height="12" onclick="cancel()" style="vertical-align: top; cursor: pointer;" width="12" src="images/x.gifx" class="" />
												</span>
											</td>
										</tr>
									</tbody>
								</table>
							</td>
						</tr>
						<tr>
							<td>${gs.getMessage('User name:')}</td>
							<td>
								<input type="text" name="userName" id="userName" readonly='true' />
							</td>
						</tr>
						<tr>
							<td>${gs.getMessage('Password')}:</td>
							<td>
								<input type="password" name="user_password" id="user_password" />
							</td>
						</tr>
						<tr id="invalid_login_img" style="display:none">
							<td colspan="2">
								<table>
									<tr>
										<td>
											<img src="./images/error.gifx" />
										</td>
										<td width="100%">
											<SPAN id="invalid_login_text" style="font-weight:bold;">
												${gs.getMessage('Password invalid')}
											</SPAN>
										</td>
									</tr>
								</table>
							</td>
						</tr>
						<tr id="dialog_buttons">
							<td colspan="2" align="center">
								<button type="submit" onClick="checkLogin();return false;" id="ok" name="ok">${gs.getMessage('Ok')}</button>$[SP]
								<button type="submit" onClick="cancel();return false;" id="quit" name="quit">${gs.getMessage('Cancel')}</button>
							</td>
						</tr>
					</table>

				</g:ui_form>
			</div>
			<!-- overlay -->
		</div>
	</g:ui_form>

	<!-- emit g_user support -->
	<g2:client_script type="user" />
</j:jelly>

I had made the modifications from Line 314 to 318