View Issue Details

This bug affects 1 person(s).
 6
IDProjectCategoryView StatusLast Update
07237Bug reportsTranslationpublic2013-02-07 22:45
Reporterrudinsky Assigned Toc_schmitz  
PrioritynormalSeveritypartial_block 
Status closedResolutionfixed 
Product Version2.00+ 
Fixed in Version2.00+ 
Summary07237: Sections cannot be translated
Description

Quick translate shows following problems:

1) Sections cannot be translated and do not display original text in translation boxes (e.g. Survey title and description, Welcome and end text)

  • see debug report created when opening quick translate interface PHP notice-when_selected_quick_translate.htm

2) Although section displays the original text in translation boxes and the text can be translated it is not stored after saving (e.g. Answer options). To be precise, first two options can be translated, but the third or other translations are ignored.

  • see PHP notice-when_changed_answer_options.htm
Steps To Reproduce

Problem nr.1:
Select survey
Go to Tools - Quick-translation
Select language
Select Survey title and description (and there is no Eglish text)
Translate Survey title and description
Save (and it is not stored)

Problem nr.2:
Select survey
Go to Tools - Quick-translation
Select language
Select Answer options
Translate third answer option (Q1 (1) University undergraduate)
Save (and it is not stored)

Additional Information

I have already applied patch provided in bug ID 07228 (http://bugs.limesurvey.org/view.php?id=7228)

TagsNo tags attached.
Attached Files
PHP notice-when_selected_quick_translate.htm (19,465 bytes)   
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><title>PHP notice</title><style type="text/css">
/*<![CDATA[*/
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;margin:0;padding:0;}
body{line-height:1;}
ol,ul{list-style:none;}
blockquote,q{quotes:none;}
blockquote:before,blockquote:after,q:before,q:after{content:none;}
:focus{outline:0;}
ins{text-decoration:none;}
del{text-decoration:line-through;}
table{border-collapse:collapse;border-spacing:0;}

body {
	font: normal 9pt "Verdana";
	color: #000;
	background: #fff;
}

h1 {
	font: normal 18pt "Verdana";
	color: #f00;
	margin-bottom: .5em;
}

h2 {
	font: normal 14pt "Verdana";
	color: #800000;
	margin-bottom: .5em;
}

h3 {
	font: bold 11pt "Verdana";
}

pre {
	font: normal 11pt Menlo, Consolas, "Lucida Console", Monospace;
}

pre span.error {
	display: block;
	background: #fce3e3;
}

pre span.ln {
	color: #999;
	padding-right: 0.5em;
	border-right: 1px solid #ccc;
}

pre span.error-ln {
	font-weight: bold;
}

.container {
	margin: 1em 4em;
}

.version {
	color: gray;
	font-size: 8pt;
	border-top: 1px solid #aaa;
	padding-top: 1em;
	margin-bottom: 1em;
}

.message {
	color: #000;
	padding: 1em;
	font-size: 11pt;
	background: #f3f3f3;
	-webkit-border-radius: 10px;
	-moz-border-radius: 10px;
	border-radius: 10px;
	margin-bottom: 1em;
	line-height: 160%;
}

.source {
	margin-bottom: 1em;
}

.code pre {
	background-color: #ffe;
	margin: 0.5em 0;
	padding: 0.5em;
	line-height: 125%;
	border: 1px solid #eee;
}

.source .file {
	margin-bottom: 1em;
	font-weight: bold;
}

.traces {
	margin: 2em 0;
}

.trace {
	margin: 0.5em 0;
	padding: 0.5em;
}

.trace.app {
	border: 1px dashed #c00;
}

.trace .number {
	text-align: right;
	width: 2em;
	padding: 0.5em;
}

.trace .content {
	padding: 0.5em;
}

.trace .plus,
.trace .minus {
	display:inline;
	vertical-align:middle;
	text-align:center;
	border:1px solid #000;
	color:#000;
	font-size:10px;
	line-height:10px;
	margin:0;
	padding:0 1px;
	width:10px;
	height:10px;
}

.trace.collapsed .minus,
.trace.expanded .plus,
.trace.collapsed pre {
	display: none;
}

.trace-file {
	cursor: pointer;
	padding: 0.2em;
}

.trace-file:hover {
	background: #f0ffff;
}
/*]]>*/
</style></head><body>
<div class="container">
	<h1>PHP notice</h1>

	<p class="message">
		Undefined offset: 0	</p>

	<div class="source">
		<p class="file">/usr/local/home/go-lab/go-lab/go-lab/limesurvey/application/controllers/admin/translate.php(176)</p>
		<div class="code"><pre><span class="ln">164</span>             $all_fields_empty = TRUE;
<span class="ln">165</span> 
<span class="ln">166</span>             $resultbase = $this-&gt;query($type, &quot;querybase&quot;, $iSurveyID, $tolang, $baselang);
<span class="ln">167</span>             $resultto = $this-&gt;query($type, &quot;queryto&quot;, $iSurveyID, $tolang, $baselang);
<span class="ln">168</span>             $aData['baselangdesc'] = $baselangdesc;
<span class="ln">169</span>             $aData['tolangdesc'] = $tolangdesc;
<span class="ln">170</span>             $aData['type'] = $type;
<span class="ln">171</span>             $aData['translateTabs'] = $this-&gt;displayTranslateFieldsHeader($baselangdesc, $tolangdesc, $type);
<span class="ln">172</span>             $aViewUrls['output'] .= $this-&gt;getController()-&gt;render(&quot;/admin/translate/translatetabs_view&quot;, $aData, true);
<span class="ln">173</span>             foreach ( $resultbase as $rowfrom )
<span class="ln">174</span>             {
<span class="ln">175</span>                 $textfrom = htmlspecialchars_decode($rowfrom[$amTypeOptions[&quot;dbColumn&quot;]]);
<span class="error"><span class="ln error-ln">176</span>                 $textto = $resultto[$i][$amTypeOptions[&quot;dbColumn&quot;]];
</span><span class="ln">177</span>                 if ( $associated )
<span class="ln">178</span>                 {
<span class="ln">179</span>                     $textfrom2 = htmlspecialchars_decode($resultbase2[$i][$amTypeOptions2[&quot;dbColumn&quot;]]);
<span class="ln">180</span>                     $textto2 = $resultto2[$i][$amTypeOptions2[&quot;dbColumn&quot;]];
<span class="ln">181</span>                 }
<span class="ln">182</span> 
<span class="ln">183</span>                 $gid = ( $amTypeOptions[&quot;gid&quot;] == TRUE ) ? $gid = $rowfrom['gid'] : NULL;
<span class="ln">184</span>                 $qid = ( $amTypeOptions[&quot;qid&quot;] == TRUE ) ? $qid = $rowfrom['qid'] : NULL;
<span class="ln">185</span> 
<span class="ln">186</span>                 $textform_length = strlen(trim($textfrom));
<span class="ln">187</span>                 if ( $textform_length &gt; 0 )
<span class="ln">188</span>                 {
</pre></div>	</div>

	<div class="traces">
		<h2>Stack Trace</h2>
				<table style="width:100%;">
						<tr class="trace app expanded">
			<td class="number">
				#0			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/application/controllers/admin/translate.php(85): <strong>translate</strong>-&gt;<strong>_displayUntranslatedFields</strong>(&quot;797488&quot;, &quot;nl&quot;, &quot;en&quot;, array(&quot;title&quot;, &quot;welcome&quot;, &quot;group&quot;, &quot;question&quot;, ...), ...)				</div>

				<div class="code"><pre><span class="ln">80</span>                 $this-&gt;_translateSave($iSurveyID, $tolang, $baselang, $tab_names);
<span class="ln">81</span>             }
<span class="ln">82</span> 
<span class="ln">83</span>             $tolangdesc = $supportedLanguages[$tolang]['description'];
<span class="ln">84</span>             // Display tabs with fields to translate, as well as input fields for translated values
<span class="error"><span class="ln error-ln">85</span>             $aViewUrls = array_merge($aViewUrls, $this-&gt;_displayUntranslatedFields($iSurveyID, $tolang, $baselang, $tab_names, $baselangdesc, $tolangdesc));
</span><span class="ln">86</span>             //var_dump(array_keys($aViewUrls));die();
<span class="ln">87</span>         }
<span class="ln">88</span> 
<span class="ln">89</span>         $this-&gt;_renderWrappedTemplate('translate', $aViewUrls, $aData);
<span class="ln">90</span>     }
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#1			</td>
			<td class="content">
				<div class="trace-file">
										 unknown(0): <strong>translate</strong>-&gt;<strong>index</strong>()				</div>

							</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#2			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/framework/web/actions/CAction.php(107): <strong>ReflectionMethod</strong>-&gt;<strong>invokeArgs</strong>(translate, array())				</div>

				<div class="code"><pre><span class="ln">102</span>             else if($param-&gt;isDefaultValueAvailable())
<span class="ln">103</span>                 $ps[]=$param-&gt;getDefaultValue();
<span class="ln">104</span>             else
<span class="ln">105</span>                 return false;
<span class="ln">106</span>         }
<span class="error"><span class="ln error-ln">107</span>         $method-&gt;invokeArgs($object,$ps);
</span><span class="ln">108</span>         return true;
<span class="ln">109</span>     }
<span class="ln">110</span> }
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#3			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/application/core/Survey_Common_Action.php(100): <strong>CAction</strong>-&gt;<strong>runWithParamsInternal</strong>(translate, ReflectionMethod, array(&quot;surveyid&quot; =&gt; &quot;797488&quot;, &quot;sa&quot; =&gt; &quot;index&quot;, &quot;iSurveyId&quot; =&gt; &quot;797488&quot;, &quot;iSurveyID&quot; =&gt; &quot;797488&quot;))				</div>

				<div class="code"><pre><span class="ln">095</span>             $oMethod = new ReflectionMethod($this, $sDefault);
<span class="ln">096</span>         }
<span class="ln">097</span> 
<span class="ln">098</span>         // We're all good to go, let's execute it
<span class="ln">099</span>         // runWithParamsInternal would automatically get the parameters of the method and populate them as required with the params
<span class="error"><span class="ln error-ln">100</span>         return parent::runWithParamsInternal($this, $oMethod, $params);
</span><span class="ln">101</span>     }
<span class="ln">102</span> 
<span class="ln">103</span>     /**
<span class="ln">104</span>     * Some functions have different parameters, which are just an alias of the
<span class="ln">105</span>     * usual parameters we're getting in the url. This function just populates
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#4			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/framework/web/CController.php(309): <strong>Survey_Common_Action</strong>-&gt;<strong>runWithParams</strong>(array(&quot;surveyid&quot; =&gt; &quot;797488&quot;, &quot;sa&quot; =&gt; &quot;index&quot;))				</div>

				<div class="code"><pre><span class="ln">304</span>     {
<span class="ln">305</span>         $priorAction=$this-&gt;_action;
<span class="ln">306</span>         $this-&gt;_action=$action;
<span class="ln">307</span>         if($this-&gt;beforeAction($action))
<span class="ln">308</span>         {
<span class="error"><span class="ln error-ln">309</span>             if($action-&gt;runWithParams($this-&gt;getActionParams())===false)
</span><span class="ln">310</span>                 $this-&gt;invalidActionParams($action);
<span class="ln">311</span>             else
<span class="ln">312</span>                 $this-&gt;afterAction($action);
<span class="ln">313</span>         }
<span class="ln">314</span>         $this-&gt;_action=$priorAction;
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#5			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/framework/web/CController.php(287): <strong>CController</strong>-&gt;<strong>runAction</strong>(translate)				</div>

				<div class="code"><pre><span class="ln">282</span>      * @see runAction
<span class="ln">283</span>      */
<span class="ln">284</span>     public function runActionWithFilters($action,$filters)
<span class="ln">285</span>     {
<span class="ln">286</span>         if(empty($filters))
<span class="error"><span class="ln error-ln">287</span>             $this-&gt;runAction($action);
</span><span class="ln">288</span>         else
<span class="ln">289</span>         {
<span class="ln">290</span>             $priorAction=$this-&gt;_action;
<span class="ln">291</span>             $this-&gt;_action=$action;
<span class="ln">292</span>             CFilterChain::create($this,$action,$filters)-&gt;run();
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#6			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/framework/web/CController.php(266): <strong>CController</strong>-&gt;<strong>runActionWithFilters</strong>(translate, array())				</div>

				<div class="code"><pre><span class="ln">261</span>         {
<span class="ln">262</span>             if(($parent=$this-&gt;getModule())===null)
<span class="ln">263</span>                 $parent=Yii::app();
<span class="ln">264</span>             if($parent-&gt;beforeControllerAction($this,$action))
<span class="ln">265</span>             {
<span class="error"><span class="ln error-ln">266</span>                 $this-&gt;runActionWithFilters($action,$this-&gt;filters());
</span><span class="ln">267</span>                 $parent-&gt;afterControllerAction($this,$action);
<span class="ln">268</span>             }
<span class="ln">269</span>         }
<span class="ln">270</span>         else
<span class="ln">271</span>             $this-&gt;missingAction($actionID);
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#7			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/application/controllers/AdminController.php(169): <strong>CController</strong>-&gt;<strong>run</strong>(&quot;translate&quot;)				</div>

				<div class="code"><pre><span class="ln">164</span>                     $this-&gt;redirect($this-&gt;createUrl('/admin/authentication/sa/login'));
<span class="ln">165</span>                 }
<span class="ln">166</span>                 
<span class="ln">167</span>             }
<span class="ln">168</span> 
<span class="error"><span class="ln error-ln">169</span>             return parent::run($action);
</span><span class="ln">170</span>     }
<span class="ln">171</span> 
<span class="ln">172</span>     /**
<span class="ln">173</span>     * Routes all the actions to their respective places
<span class="ln">174</span>     *
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#8			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/framework/web/CWebApplication.php(276): <strong>AdminController</strong>-&gt;<strong>run</strong>(&quot;translate&quot;)				</div>

				<div class="code"><pre><span class="ln">271</span>         {
<span class="ln">272</span>             list($controller,$actionID)=$ca;
<span class="ln">273</span>             $oldController=$this-&gt;_controller;
<span class="ln">274</span>             $this-&gt;_controller=$controller;
<span class="ln">275</span>             $controller-&gt;init();
<span class="error"><span class="ln error-ln">276</span>             $controller-&gt;run($actionID);
</span><span class="ln">277</span>             $this-&gt;_controller=$oldController;
<span class="ln">278</span>         }
<span class="ln">279</span>         else
<span class="ln">280</span>             throw new CHttpException(404,Yii::t('yii','Unable to resolve the request &quot;{route}&quot;.',
<span class="ln">281</span>                 array('{route}'=&gt;$route===''?$this-&gt;defaultController:$route)));
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#9			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/framework/web/CWebApplication.php(135): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>(&quot;admin/translate/sa/index&quot;)				</div>

				<div class="code"><pre><span class="ln">130</span>             foreach(array_splice($this-&gt;catchAllRequest,1) as $name=&gt;$value)
<span class="ln">131</span>                 $_GET[$name]=$value;
<span class="ln">132</span>         }
<span class="ln">133</span>         else
<span class="ln">134</span>             $route=$this-&gt;getUrlManager()-&gt;parseUrl($this-&gt;getRequest());
<span class="error"><span class="ln error-ln">135</span>         $this-&gt;runController($route);
</span><span class="ln">136</span>     }
<span class="ln">137</span> 
<span class="ln">138</span>     /**
<span class="ln">139</span>      * Registers the core application components.
<span class="ln">140</span>      * This method overrides the parent implementation by registering additional core components.
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#10			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/framework/base/CApplication.php(162): <strong>CWebApplication</strong>-&gt;<strong>processRequest</strong>()				</div>

				<div class="code"><pre><span class="ln">157</span>      */
<span class="ln">158</span>     public function run()
<span class="ln">159</span>     {
<span class="ln">160</span>         if($this-&gt;hasEventHandler('onBeginRequest'))
<span class="ln">161</span>             $this-&gt;onBeginRequest(new CEvent($this));
<span class="error"><span class="ln error-ln">162</span>         $this-&gt;processRequest();
</span><span class="ln">163</span>         if($this-&gt;hasEventHandler('onEndRequest'))
<span class="ln">164</span>             $this-&gt;onEndRequest(new CEvent($this));
<span class="ln">165</span>     }
<span class="ln">166</span> 
<span class="ln">167</span>     /**
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#11			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/index.php(178): <strong>CApplication</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">173</span>  *
<span class="ln">174</span>  */
<span class="ln">175</span> require_once BASEPATH . 'yii' . EXT;
<span class="ln">176</span> require_once APPPATH . 'core/LSYii_Application' . EXT;
<span class="ln">177</span> 
<span class="error"><span class="ln error-ln">178</span> Yii::createApplication('LSYii_Application', APPPATH . 'config/config' . EXT)-&gt;run();
</span><span class="ln">179</span> 
<span class="ln">180</span> /* End of file index.php */
<span class="ln">181</span> /* Location: ./index.php */
</pre></div>			</td>
		</tr>
				</table>
	</div>

	<div class="version">
		2013-01-27 19:31:11 Apache/2.2.14 (Ubuntu) <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.10	</div>
</div>

<script type="text/javascript">
/*<![CDATA[*/
var traceReg = new RegExp("(^|\\s)trace-file(\\s|$)");
var collapsedReg = new RegExp("(^|\\s)collapsed(\\s|$)");

var e = document.getElementsByTagName("div");
for(var j=0,len=e.length;j<len;j++){
	if(traceReg.test(e[j].className)){
		e[j].onclick = function(){
			var trace = this.parentNode.parentNode;
			if(collapsedReg.test(trace.className))
				trace.className = trace.className.replace("collapsed", "expanded");
			else
				trace.className = trace.className.replace("expanded", "collapsed");
		}
	}
}
/*]]>*/
</script>

</body></html>
PHP notice-when_changed_answer_options.htm (19,500 bytes)   
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><title>PHP notice</title><style type="text/css">
/*<![CDATA[*/
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;margin:0;padding:0;}
body{line-height:1;}
ol,ul{list-style:none;}
blockquote,q{quotes:none;}
blockquote:before,blockquote:after,q:before,q:after{content:none;}
:focus{outline:0;}
ins{text-decoration:none;}
del{text-decoration:line-through;}
table{border-collapse:collapse;border-spacing:0;}

body {
	font: normal 9pt "Verdana";
	color: #000;
	background: #fff;
}

h1 {
	font: normal 18pt "Verdana";
	color: #f00;
	margin-bottom: .5em;
}

h2 {
	font: normal 14pt "Verdana";
	color: #800000;
	margin-bottom: .5em;
}

h3 {
	font: bold 11pt "Verdana";
}

pre {
	font: normal 11pt Menlo, Consolas, "Lucida Console", Monospace;
}

pre span.error {
	display: block;
	background: #fce3e3;
}

pre span.ln {
	color: #999;
	padding-right: 0.5em;
	border-right: 1px solid #ccc;
}

pre span.error-ln {
	font-weight: bold;
}

.container {
	margin: 1em 4em;
}

.version {
	color: gray;
	font-size: 8pt;
	border-top: 1px solid #aaa;
	padding-top: 1em;
	margin-bottom: 1em;
}

.message {
	color: #000;
	padding: 1em;
	font-size: 11pt;
	background: #f3f3f3;
	-webkit-border-radius: 10px;
	-moz-border-radius: 10px;
	border-radius: 10px;
	margin-bottom: 1em;
	line-height: 160%;
}

.source {
	margin-bottom: 1em;
}

.code pre {
	background-color: #ffe;
	margin: 0.5em 0;
	padding: 0.5em;
	line-height: 125%;
	border: 1px solid #eee;
}

.source .file {
	margin-bottom: 1em;
	font-weight: bold;
}

.traces {
	margin: 2em 0;
}

.trace {
	margin: 0.5em 0;
	padding: 0.5em;
}

.trace.app {
	border: 1px dashed #c00;
}

.trace .number {
	text-align: right;
	width: 2em;
	padding: 0.5em;
}

.trace .content {
	padding: 0.5em;
}

.trace .plus,
.trace .minus {
	display:inline;
	vertical-align:middle;
	text-align:center;
	border:1px solid #000;
	color:#000;
	font-size:10px;
	line-height:10px;
	margin:0;
	padding:0 1px;
	width:10px;
	height:10px;
}

.trace.collapsed .minus,
.trace.expanded .plus,
.trace.collapsed pre {
	display: none;
}

.trace-file {
	cursor: pointer;
	padding: 0.2em;
}

.trace-file:hover {
	background: #f0ffff;
}
/*]]>*/
</style></head><body>
<div class="container">
	<h1>PHP notice</h1>

	<p class="message">
		Undefined offset: 0	</p>

	<div class="source">
		<p class="file">/usr/local/home/go-lab/go-lab/go-lab/limesurvey/application/controllers/admin/translate.php(176)</p>
		<div class="code"><pre><span class="ln">164</span>             $all_fields_empty = TRUE;
<span class="ln">165</span> 
<span class="ln">166</span>             $resultbase = $this-&gt;query($type, &quot;querybase&quot;, $iSurveyID, $tolang, $baselang);
<span class="ln">167</span>             $resultto = $this-&gt;query($type, &quot;queryto&quot;, $iSurveyID, $tolang, $baselang);
<span class="ln">168</span>             $aData['baselangdesc'] = $baselangdesc;
<span class="ln">169</span>             $aData['tolangdesc'] = $tolangdesc;
<span class="ln">170</span>             $aData['type'] = $type;
<span class="ln">171</span>             $aData['translateTabs'] = $this-&gt;displayTranslateFieldsHeader($baselangdesc, $tolangdesc, $type);
<span class="ln">172</span>             $aViewUrls['output'] .= $this-&gt;getController()-&gt;render(&quot;/admin/translate/translatetabs_view&quot;, $aData, true);
<span class="ln">173</span>             foreach ( $resultbase as $rowfrom )
<span class="ln">174</span>             {
<span class="ln">175</span>                 $textfrom = htmlspecialchars_decode($rowfrom[$amTypeOptions[&quot;dbColumn&quot;]]);
<span class="error"><span class="ln error-ln">176</span>                 $textto = $resultto[$i][$amTypeOptions[&quot;dbColumn&quot;]];
</span><span class="ln">177</span>                 if ( $associated )
<span class="ln">178</span>                 {
<span class="ln">179</span>                     $textfrom2 = htmlspecialchars_decode($resultbase2[$i][$amTypeOptions2[&quot;dbColumn&quot;]]);
<span class="ln">180</span>                     $textto2 = $resultto2[$i][$amTypeOptions2[&quot;dbColumn&quot;]];
<span class="ln">181</span>                 }
<span class="ln">182</span> 
<span class="ln">183</span>                 $gid = ( $amTypeOptions[&quot;gid&quot;] == TRUE ) ? $gid = $rowfrom['gid'] : NULL;
<span class="ln">184</span>                 $qid = ( $amTypeOptions[&quot;qid&quot;] == TRUE ) ? $qid = $rowfrom['qid'] : NULL;
<span class="ln">185</span> 
<span class="ln">186</span>                 $textform_length = strlen(trim($textfrom));
<span class="ln">187</span>                 if ( $textform_length &gt; 0 )
<span class="ln">188</span>                 {
</pre></div>	</div>

	<div class="traces">
		<h2>Stack Trace</h2>
				<table style="width:100%;">
						<tr class="trace app expanded">
			<td class="number">
				#0			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/application/controllers/admin/translate.php(85): <strong>translate</strong>-&gt;<strong>_displayUntranslatedFields</strong>(&quot;797488&quot;, &quot;de&quot;, &quot;en&quot;, array(&quot;title&quot;, &quot;welcome&quot;, &quot;group&quot;, &quot;question&quot;, ...), ...)				</div>

				<div class="code"><pre><span class="ln">80</span>                 $this-&gt;_translateSave($iSurveyID, $tolang, $baselang, $tab_names);
<span class="ln">81</span>             }
<span class="ln">82</span> 
<span class="ln">83</span>             $tolangdesc = $supportedLanguages[$tolang]['description'];
<span class="ln">84</span>             // Display tabs with fields to translate, as well as input fields for translated values
<span class="error"><span class="ln error-ln">85</span>             $aViewUrls = array_merge($aViewUrls, $this-&gt;_displayUntranslatedFields($iSurveyID, $tolang, $baselang, $tab_names, $baselangdesc, $tolangdesc));
</span><span class="ln">86</span>             //var_dump(array_keys($aViewUrls));die();
<span class="ln">87</span>         }
<span class="ln">88</span> 
<span class="ln">89</span>         $this-&gt;_renderWrappedTemplate('translate', $aViewUrls, $aData);
<span class="ln">90</span>     }
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#1			</td>
			<td class="content">
				<div class="trace-file">
										 unknown(0): <strong>translate</strong>-&gt;<strong>index</strong>()				</div>

							</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#2			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/framework/web/actions/CAction.php(107): <strong>ReflectionMethod</strong>-&gt;<strong>invokeArgs</strong>(translate, array())				</div>

				<div class="code"><pre><span class="ln">102</span>             else if($param-&gt;isDefaultValueAvailable())
<span class="ln">103</span>                 $ps[]=$param-&gt;getDefaultValue();
<span class="ln">104</span>             else
<span class="ln">105</span>                 return false;
<span class="ln">106</span>         }
<span class="error"><span class="ln error-ln">107</span>         $method-&gt;invokeArgs($object,$ps);
</span><span class="ln">108</span>         return true;
<span class="ln">109</span>     }
<span class="ln">110</span> }
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#3			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/application/core/Survey_Common_Action.php(100): <strong>CAction</strong>-&gt;<strong>runWithParamsInternal</strong>(translate, ReflectionMethod, array(&quot;surveyid&quot; =&gt; &quot;797488&quot;, &quot;lang&quot; =&gt; &quot;de&quot;, &quot;sa&quot; =&gt; &quot;index&quot;, &quot;iSurveyId&quot; =&gt; &quot;797488&quot;, ...))				</div>

				<div class="code"><pre><span class="ln">095</span>             $oMethod = new ReflectionMethod($this, $sDefault);
<span class="ln">096</span>         }
<span class="ln">097</span> 
<span class="ln">098</span>         // We're all good to go, let's execute it
<span class="ln">099</span>         // runWithParamsInternal would automatically get the parameters of the method and populate them as required with the params
<span class="error"><span class="ln error-ln">100</span>         return parent::runWithParamsInternal($this, $oMethod, $params);
</span><span class="ln">101</span>     }
<span class="ln">102</span> 
<span class="ln">103</span>     /**
<span class="ln">104</span>     * Some functions have different parameters, which are just an alias of the
<span class="ln">105</span>     * usual parameters we're getting in the url. This function just populates
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#4			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/framework/web/CController.php(309): <strong>Survey_Common_Action</strong>-&gt;<strong>runWithParams</strong>(array(&quot;surveyid&quot; =&gt; &quot;797488&quot;, &quot;lang&quot; =&gt; &quot;de&quot;, &quot;sa&quot; =&gt; &quot;index&quot;))				</div>

				<div class="code"><pre><span class="ln">304</span>     {
<span class="ln">305</span>         $priorAction=$this-&gt;_action;
<span class="ln">306</span>         $this-&gt;_action=$action;
<span class="ln">307</span>         if($this-&gt;beforeAction($action))
<span class="ln">308</span>         {
<span class="error"><span class="ln error-ln">309</span>             if($action-&gt;runWithParams($this-&gt;getActionParams())===false)
</span><span class="ln">310</span>                 $this-&gt;invalidActionParams($action);
<span class="ln">311</span>             else
<span class="ln">312</span>                 $this-&gt;afterAction($action);
<span class="ln">313</span>         }
<span class="ln">314</span>         $this-&gt;_action=$priorAction;
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#5			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/framework/web/CController.php(287): <strong>CController</strong>-&gt;<strong>runAction</strong>(translate)				</div>

				<div class="code"><pre><span class="ln">282</span>      * @see runAction
<span class="ln">283</span>      */
<span class="ln">284</span>     public function runActionWithFilters($action,$filters)
<span class="ln">285</span>     {
<span class="ln">286</span>         if(empty($filters))
<span class="error"><span class="ln error-ln">287</span>             $this-&gt;runAction($action);
</span><span class="ln">288</span>         else
<span class="ln">289</span>         {
<span class="ln">290</span>             $priorAction=$this-&gt;_action;
<span class="ln">291</span>             $this-&gt;_action=$action;
<span class="ln">292</span>             CFilterChain::create($this,$action,$filters)-&gt;run();
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#6			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/framework/web/CController.php(266): <strong>CController</strong>-&gt;<strong>runActionWithFilters</strong>(translate, array())				</div>

				<div class="code"><pre><span class="ln">261</span>         {
<span class="ln">262</span>             if(($parent=$this-&gt;getModule())===null)
<span class="ln">263</span>                 $parent=Yii::app();
<span class="ln">264</span>             if($parent-&gt;beforeControllerAction($this,$action))
<span class="ln">265</span>             {
<span class="error"><span class="ln error-ln">266</span>                 $this-&gt;runActionWithFilters($action,$this-&gt;filters());
</span><span class="ln">267</span>                 $parent-&gt;afterControllerAction($this,$action);
<span class="ln">268</span>             }
<span class="ln">269</span>         }
<span class="ln">270</span>         else
<span class="ln">271</span>             $this-&gt;missingAction($actionID);
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#7			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/application/controllers/AdminController.php(169): <strong>CController</strong>-&gt;<strong>run</strong>(&quot;translate&quot;)				</div>

				<div class="code"><pre><span class="ln">164</span>                     $this-&gt;redirect($this-&gt;createUrl('/admin/authentication/sa/login'));
<span class="ln">165</span>                 }
<span class="ln">166</span>                 
<span class="ln">167</span>             }
<span class="ln">168</span> 
<span class="error"><span class="ln error-ln">169</span>             return parent::run($action);
</span><span class="ln">170</span>     }
<span class="ln">171</span> 
<span class="ln">172</span>     /**
<span class="ln">173</span>     * Routes all the actions to their respective places
<span class="ln">174</span>     *
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#8			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/framework/web/CWebApplication.php(276): <strong>AdminController</strong>-&gt;<strong>run</strong>(&quot;translate&quot;)				</div>

				<div class="code"><pre><span class="ln">271</span>         {
<span class="ln">272</span>             list($controller,$actionID)=$ca;
<span class="ln">273</span>             $oldController=$this-&gt;_controller;
<span class="ln">274</span>             $this-&gt;_controller=$controller;
<span class="ln">275</span>             $controller-&gt;init();
<span class="error"><span class="ln error-ln">276</span>             $controller-&gt;run($actionID);
</span><span class="ln">277</span>             $this-&gt;_controller=$oldController;
<span class="ln">278</span>         }
<span class="ln">279</span>         else
<span class="ln">280</span>             throw new CHttpException(404,Yii::t('yii','Unable to resolve the request &quot;{route}&quot;.',
<span class="ln">281</span>                 array('{route}'=&gt;$route===''?$this-&gt;defaultController:$route)));
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#9			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/framework/web/CWebApplication.php(135): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>(&quot;admin/translate/sa/index&quot;)				</div>

				<div class="code"><pre><span class="ln">130</span>             foreach(array_splice($this-&gt;catchAllRequest,1) as $name=&gt;$value)
<span class="ln">131</span>                 $_GET[$name]=$value;
<span class="ln">132</span>         }
<span class="ln">133</span>         else
<span class="ln">134</span>             $route=$this-&gt;getUrlManager()-&gt;parseUrl($this-&gt;getRequest());
<span class="error"><span class="ln error-ln">135</span>         $this-&gt;runController($route);
</span><span class="ln">136</span>     }
<span class="ln">137</span> 
<span class="ln">138</span>     /**
<span class="ln">139</span>      * Registers the core application components.
<span class="ln">140</span>      * This method overrides the parent implementation by registering additional core components.
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#10			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/framework/base/CApplication.php(162): <strong>CWebApplication</strong>-&gt;<strong>processRequest</strong>()				</div>

				<div class="code"><pre><span class="ln">157</span>      */
<span class="ln">158</span>     public function run()
<span class="ln">159</span>     {
<span class="ln">160</span>         if($this-&gt;hasEventHandler('onBeginRequest'))
<span class="ln">161</span>             $this-&gt;onBeginRequest(new CEvent($this));
<span class="error"><span class="ln error-ln">162</span>         $this-&gt;processRequest();
</span><span class="ln">163</span>         if($this-&gt;hasEventHandler('onEndRequest'))
<span class="ln">164</span>             $this-&gt;onEndRequest(new CEvent($this));
<span class="ln">165</span>     }
<span class="ln">166</span> 
<span class="ln">167</span>     /**
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#11			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										 /usr/local/home/go-lab/go-lab/go-lab/limesurvey/index.php(178): <strong>CApplication</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">173</span>  *
<span class="ln">174</span>  */
<span class="ln">175</span> require_once BASEPATH . 'yii' . EXT;
<span class="ln">176</span> require_once APPPATH . 'core/LSYii_Application' . EXT;
<span class="ln">177</span> 
<span class="error"><span class="ln error-ln">178</span> Yii::createApplication('LSYii_Application', APPPATH . 'config/config' . EXT)-&gt;run();
</span><span class="ln">179</span> 
<span class="ln">180</span> /* End of file index.php */
<span class="ln">181</span> /* Location: ./index.php */
</pre></div>			</td>
		</tr>
				</table>
	</div>

	<div class="version">
		2013-01-27 19:33:28 Apache/2.2.14 (Ubuntu) <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.10	</div>
</div>

<script type="text/javascript">
/*<![CDATA[*/
var traceReg = new RegExp("(^|\\s)trace-file(\\s|$)");
var collapsedReg = new RegExp("(^|\\s)collapsed(\\s|$)");

var e = document.getElementsByTagName("div");
for(var j=0,len=e.length;j<len;j++){
	if(traceReg.test(e[j].className)){
		e[j].onclick = function(){
			var trace = this.parentNode.parentNode;
			if(collapsedReg.test(trace.className))
				trace.className = trace.className.replace("collapsed", "expanded");
			else
				trace.className = trace.className.replace("expanded", "collapsed");
		}
	}
}
/*]]>*/
</script>

</body></html>
Bug heat6
Complete LimeSurvey version number (& build)130122
I will donate to the project if issue is resolvedYes
BrowserFirefox 18.0.1, Mozilla Firefox for Ubuntu, canonical - 1.0
Database type & version5.1.66-0+squeeze1
Server OS (if known)Linux ooo 2.6.32-45-server #102-Ubuntu SMP Wed Jan 2 22:53:00 UTC 2013 x86_64 GNU/Linu
Webserver software & version (if known)Apache 2.0
PHP VersionPHP Version 5.3.2-1ubuntu4.18

Users monitoring this issue

tigger

Activities

rudinsky

rudinsky

2013-01-28 19:16

reporter   ~23851

I can clarify the first problem. When you create a survey and add an additional language, then you won't be able to edit the text elements of Introduction/Welcome/End messages.

Neither by "Edit text elements" in "Survey properties" or by "Quick-translate" in "Tools".

c_schmitz

c_schmitz

2013-01-29 12:34

administrator   ~23875

Fix committed to master branch: http://bugs.limesurvey.org/plugin.php?page=Source/view&amp;id=11522

c_schmitz

c_schmitz

2013-01-29 12:44

administrator   ~23876

After updating to the new release version you should run the LimeSurvey integrity check which will fix the issue.

c_schmitz

c_schmitz

2013-01-29 12:44

administrator   ~23877

New version 2.00+ Build 120129 released

c_schmitz

c_schmitz

2013-02-07 22:45

administrator   ~23999

Fix committed to 2.1 branch: http://bugs.limesurvey.org/plugin.php?page=Source/view&amp;id=11589

Related Changesets

LimeSurvey: master 5c2dbc65

2013-01-29 11:33:49

c_schmitz

Details Diff
Fixed issue 07237: Survey cannot be translated Affected Issues
07237
mod - application/controllers/admin/checkintegrity.php Diff File
mod - application/controllers/admin/database.php Diff File

LimeSurvey: 2.1 5798a2aa

2013-01-29 11:33:49

c_schmitz

Details Diff
Fixed issue 07237: Survey cannot be translated Affected Issues
07237
mod - application/controllers/admin/checkintegrity.php Diff File
mod - application/controllers/admin/database.php Diff File

Issue History

Date Modified Username Field Change
2013-01-27 21:43 rudinsky New Issue
2013-01-27 21:43 rudinsky File Added: limesurvey_survey_797488.lss
2013-01-27 21:44 rudinsky File Added: PHP notice-when_selected_quick_translate.htm
2013-01-27 21:44 rudinsky File Added: PHP notice-when_changed_answer_options.htm
2013-01-28 19:16 rudinsky Note Added: 23851
2013-01-29 10:58 c_schmitz Assigned To => c_schmitz
2013-01-29 10:58 c_schmitz Status new => assigned
2013-01-29 12:33 c_schmitz Status assigned => resolved
2013-01-29 12:33 c_schmitz Fixed in Version => 2.00+
2013-01-29 12:33 c_schmitz Resolution open => fixed
2013-01-29 12:34 c_schmitz Changeset attached => LimeSurvey master 5c2dbc65
2013-01-29 12:34 c_schmitz Note Added: 23875
2013-01-29 12:44 c_schmitz Note Added: 23876
2013-01-29 12:44 c_schmitz Note Added: 23877
2013-01-29 12:44 c_schmitz Status resolved => closed
2013-01-29 19:09 tigger Issue Monitored: tigger
2013-01-29 19:16 tigger Issue cloned: 07249
2013-02-07 22:45 c_schmitz Changeset attached => LimeSurvey 2.1 5798a2aa
2013-02-07 22:45 c_schmitz Note Added: 23999
2021-08-03 08:36 guest Bug heat 4 => 6