View Issue Details

IDProjectCategoryView StatusLast Update
15346Bug reportsTheme editorpublic2019-10-18 11:02
Reporterroutard Assigned ToDenisChenu  
PrioritynoneSeveritycrash 
Status closedResolutionfixed 
Product Version4.0.0-RC3 
Fixed in Version4.0.0-RC5 
Summary15346: Since update from 4.00 RC3 to 4.00 RC4, Configuration/Themes link is broken (error 500)
Description

Hi!
I've just updated from RC3 to RC4 and I can't reach the Themes page any more (from the top menu "Configuration / Themes" link), I have an Error 500 page :

500 : Erreur interne au serveur - AdminController ne peut trouver la vue « themeoptions/partials/question_themes/installedthemelist ».
500 : Internal server error - AdminController can't find the view « themeoptions/partials/question_themes/installedthemelist ».

Everything was OK with RC3.

TagsNo tags attached.
Complete LimeSurvey version number (& build)4.0.0-RC4+190930
I will donate to the project if issue is resolvedNo
Sync to Zoho Project
Browser
Database & DB-Versiondon't know how to find
Server OS (if known)
Webserver software & version (if known)
PHP Version7.3

Activities

routard

routard

2019-10-01 10:14

reporter   ~53794

Database version is 421

The broken link is : /index.php/admin/themeoptions

ollehar

ollehar

2019-10-01 13:18

administrator   ~53795

Can you try with this link: /index.php?r=admin/themeoptions

ollehar

ollehar

2019-10-01 13:18

administrator   ~53796

Did you update using ftp? Did all files get transferred?

routard

routard

2019-10-01 19:27

reporter   ~53815

The link /index.php?r=admin/themeoptions doesn't work (it displays list of surveys page, same as root page "/")
I used automatic update as it is an unstable update from RC3 to RC4, no update key is required. All was OK.
Other links from the "Configuration/Parameters" menu have the the same : "/index.php/admin/XXXXXXXX" and all work fine! the only broken link is for the themes page.

routard

routard

2019-10-01 19:28

reporter   ~53816

The link /index.php?r=admin/themeoptions doesn't work (it displays list of surveys page, same as root page "/")
I used automatic update as it is an unstable update from RC3 to RC4, no update key is required. All was OK.
Other links from the "Configuration/Parameters" menu have the same path : "/index.php/admin/XXXXXXXX" and all work fine! the only broken link is for the themes page.

DenisChenu

DenisChenu

2019-10-02 09:06

developer   ~53818

Can you manually check if you have this files : https://github.com/LimeSurvey/LimeSurvey/tree/develop/application/views/admin/themeoptions/partials/question_themes ?

routard

routard

2019-10-03 08:07

reporter   ~53865

Hi!
availablethemelist.php => YES I have
installedthemelist.php => NO I don't have :-(

routard

routard

2019-10-03 08:19

reporter   ~53866

I've added installedthemelist.php and all seems to be OK... but why this file was missing during automatic update? Personnal bug (but the update said everything was OK) or general bug?
BTW, the standard theme "Fruity" and all the installed theme are said to be obsolete... why??? It is said : not compatible with 4th version of the API. And a warning: Utilisation de processString sans chaîne de caractères dans votre modèle (use of processString without character string in your template).
Thx for your help and great job

TorbayIntel

TorbayIntel

2019-10-04 14:38

reporter   ~53883

We are having the same issue.

We haven't started any public use of the system yet and I prefer not to do a major upgrade to the system once it's live so I have been cavelier with doing a ComfortUpdate from 3.something to 4rc3 and now from 4rc3 to 4rc4.

Everything was fine in 4rc3 but now in 4rc4 I am seeing the same issue "500: Internal Server Error
AdminController cannot find the requested view "themeoptions/partials/question_themes/installedthemelist". And indeed, installedthemelist.php is also missing for us.

I have also noticed that every theme, including the default ones, are considered incompatible with 4 but that is for a separate bug ticket.

routard

routard

2019-10-05 09:09

reporter   ~53904

In fact there are more bugs... Once I have copy installedthemelist.php , the "Configuration/Theme" link works fine. But whatever the theme I edit (I only have defaut ones + one child theme), when I choose "Question" item in the drop down menu (top right of the page), I have another 500 error :

500 : Internal server error
Unable to find template "/survey/questions/question_help/asterisk" (looked into: /limesurvey/themes/survey/vanilla/views, /home/liguecan/questionnaires/application/views).

All other items from the drop down menu work fine (survey list, welcome page, ... , quota exceeded, participant)

TorbayIntel

TorbayIntel

2019-10-07 11:10

reporter   ~53916

FYI, I have created a separate ticket (15365) for the compatibility issue of standard themes and version 4 of the LimeSurvey API.

https://bugs.limesurvey.org/view.php?id=15365

routard

routard

2019-10-17 08:07

reporter   ~54068

Hi! Any update? Still have the pbme with the drop down meny (see my last post) + compatibility theme issue (separated ticket created by TorbayIntel).
Thanks

DenisChenu

DenisChenu

2019-10-17 08:30

developer   ~54069

Unable to find template "/survey/questions/question_help/asterisk" (looked into: /limesurvey/themes/survey/vanilla/views, /home/liguecan/questionnaires/application/views).

Can confirm this issue in RC5 (git of this morning)

The file is here : https://github.com/LimeSurvey/LimeSurvey/tree/develop/application/views/survey/questions/question_help
But seems theme editor don't get the core file …

Twig_Error_Loader.html (27,505 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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Twig_Error_Loader</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>Twig_Error_Loader</h1>

	<p class="message">
		Unable to find template "/survey/questions/question_help/asterisk" 
(looked into: 
/mnt/data/shnoulle/nginx/www/develop/themes/survey/vanilla/views, 
/mnt/data/shnoulle/nginx/www/develop/application/views).	</p>

	<div class="source">
		<p class="file">/mnt/data/shnoulle/nginx/www/develop/application/third_party/Twig/Loader/Filesystem.php(247)</p>
		<div class="code"><pre><span class="ln">235</span>                 }
<span class="ln">236</span> 
<span class="ln">237</span>                 return $this-&gt;cache[$name] = $path.'/'.$shortname;
<span class="ln">238</span>             }
<span class="ln">239</span>         }
<span class="ln">240</span> 
<span class="ln">241</span>         $this-&gt;errorCache[$name] = sprintf('Unable to find template "%s" (looked into: %s).', $name, implode(', ', $this-&gt;paths[$namespace]));
<span class="ln">242</span> 
<span class="ln">243</span>         if (!$throw) {
<span class="ln">244</span>             return false;
<span class="ln">245</span>         }
<span class="ln">246</span> 
<span class="error"><span class="ln error-ln">247</span>         throw new Twig_Error_Loader($this-&gt;errorCache[$name]);
</span><span class="ln">248</span>     }
<span class="ln">249</span> 
<span class="ln">250</span>     protected function parseName($name, $default = self::MAIN_NAMESPACE)
<span class="ln">251</span>     {
<span class="ln">252</span>         if (isset($name[0]) &amp;&amp; '@' == $name[0]) {
<span class="ln">253</span>             if (false === $pos = strpos($name, '/')) {
<span class="ln">254</span>                 throw new Twig_Error_Loader(sprintf('Malformed namespaced template name "%s" (expecting "@namespace/template_name").', $name));
<span class="ln">255</span>             }
<span class="ln">256</span> 
<span class="ln">257</span>             $namespace = substr($name, 1, $pos - 1);
<span class="ln">258</span>             $shortname = substr($name, $pos + 1);
<span class="ln">259</span> 
</pre></div>	</div>

	<div class="traces">
		<h2>Stack Trace</h2>
				<table style="width:100%;">
						<tbody><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>
										&nbsp;/mnt/data/shnoulle/nginx/www/develop/application/third_party/Twig/Loader/Filesystem.php(159): <strong>Twig_Loader_Filesystem</strong>-&gt;<strong>findTemplate</strong>("/survey/questions/question_help/asterisk")				</div>

				<div class="code"><pre><span class="ln">154</span>     /**
<span class="ln">155</span>      * {@inheritdoc}
<span class="ln">156</span>      */
<span class="ln">157</span>     public function getCacheKey($name)
<span class="ln">158</span>     {
<span class="error"><span class="ln error-ln">159</span>         $path = $this-&gt;findTemplate($name);
</span><span class="ln">160</span>         $len = strlen($this-&gt;rootPath);
<span class="ln">161</span>         if (0 === strncmp($this-&gt;rootPath, $path, $len)) {
<span class="ln">162</span>             return substr($path, $len);
<span class="ln">163</span>         }
<span class="ln">164</span> 
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#1			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/develop/application/third_party/Twig/Environment.php(329): <strong>Twig_Loader_Filesystem</strong>-&gt;<strong>getCacheKey</strong>("/survey/questions/question_help/asterisk")				</div>

				<div class="code"><pre><span class="ln">324</span>      *
<span class="ln">325</span>      * @return string The template class name
<span class="ln">326</span>      */
<span class="ln">327</span>     public function getTemplateClass($name, $index = null)
<span class="ln">328</span>     {
<span class="error"><span class="ln error-ln">329</span>         $key = $this-&gt;getLoader()-&gt;getCacheKey($name).$this-&gt;optionsHash;
</span><span class="ln">330</span> 
<span class="ln">331</span>         return $this-&gt;templateClassPrefix.hash('sha256', $key).(null === $index ? '' : '_'.$index);
<span class="ln">332</span>     }
<span class="ln">333</span> 
<span class="ln">334</span>     /**
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#2			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/develop/application/third_party/Twig/Environment.php(418): <strong>Twig_Environment</strong>-&gt;<strong>getTemplateClass</strong>("/survey/questions/question_help/asterisk", null)				</div>

				<div class="code"><pre><span class="ln">413</span>      *
<span class="ln">414</span>      * @internal
<span class="ln">415</span>      */
<span class="ln">416</span>     public function loadTemplate($name, $index = null)
<span class="ln">417</span>     {
<span class="error"><span class="ln error-ln">418</span>         $cls = $this-&gt;getTemplateClass($name, $index);
</span><span class="ln">419</span> 
<span class="ln">420</span>         if (isset($this-&gt;loadedTemplates[$cls])) {
<span class="ln">421</span>             return $this-&gt;loadedTemplates[$cls];
<span class="ln">422</span>         }
<span class="ln">423</span> 
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#3			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/develop/application/core/LSETwigViewRenderer.php(686): <strong>Twig_Environment</strong>-&gt;<strong>loadTemplate</strong>("/survey/questions/question_help/asterisk")				</div>

				<div class="code"><pre><span class="ln">681</span>     public function renderPartial($twigView,$aData)
<span class="ln">682</span>     {
<span class="ln">683</span>         $oTemplate = Template::getLastInstance();
<span class="ln">684</span>         $aData = $this-&gt;getAdditionalInfos($aData, $oTemplate);
<span class="ln">685</span>         $this-&gt;addRecursiveTemplatesPath($oTemplate);
<span class="error"><span class="ln error-ln">686</span>         return $this-&gt;_twig-&gt;loadTemplate($twigView)-&gt;render($aData);
</span><span class="ln">687</span>     }
<span class="ln">688</span> 
<span class="ln">689</span>     /**
<span class="ln">690</span>      * Get the final source file for current context
<span class="ln">691</span>      * Currently used in theme editor
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#4			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/develop/application/controllers/admin/themes.php(1084): <strong>LSETwigViewRenderer</strong>-&gt;<strong>renderPartial</strong>("/survey/questions/question_help/asterisk",
 array("aSurveyInfo" =&gt; array("id" =&gt; array("welcomecontainer" 
=&gt; "welcome-container", "outerframe" =&gt; "outerframeContainer", 
"mainrow" =&gt; "main-row", "maincol" =&gt; "main-col", ...), "class" 
=&gt; array("welcomecontainer" =&gt; "", "surveyname" =&gt; " 
survey-name ", "description" =&gt; " survey-description ", "welcome" 
=&gt; " survey-welcome ", ...), "attr" =&gt; array("questioncounttext" 
=&gt; "", "outerframe" =&gt; "", "html" =&gt; "", "maincolformdivainput"
 =&gt; " type="password" id="token" name="token" value="" required ", 
...), "metas" =&gt; "    ", ...)))				</div>

				<div class="code"><pre><span class="ln">1079</span>               // TODO: try if it can be removed
<span class="ln">1080</span>                 $aReplacements = array(
<span class="ln">1081</span>                     'QUESTION_TEXT' =&gt; gT("How many roads must a man walk down?"),
<span class="ln">1082</span>                     'QUESTION_CODE' =&gt; 'Q1 ',
<span class="ln">1083</span>                     'QUESTIONHELP' =&gt; $this-&gt;getController()-&gt;renderPartial('/survey/questions/question_help/questionhelp', array('classes' =&gt; '', 'questionHelp'=&gt;gT("This is some helpful text.")), true),
<span class="error"><span class="ln error-ln">1084</span>                     'QUESTION_MANDATORY' =&gt; App()-&gt;twigRenderer-&gt;renderPartial('/survey/questions/question_help/asterisk', array()),
</span><span class="ln">1085</span>                     'QUESTION_MAN_CLASS' =&gt; ' mandatory',
<span class="ln">1086</span>                     'QUESTION_ESSENTIALS' =&gt; 'id="question1"',
<span class="ln">1087</span>                     'QUESTION_CLASS' =&gt; 'list-radio',
<span class="ln">1088</span>                     'QUESTION_NUMBER' =&gt; '1',
<span class="ln">1089</span>                     'QUESTION_VALID_MESSAGE'=&gt;$this-&gt;getController()-&gt;renderPartial('/survey/questions/question_help/em-tip', array(
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#5			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/develop/application/controllers/admin/themes.php(499): <strong>themes</strong>-&gt;<strong>_initialise</strong>("extends_fruity", "question", "layout_global.twig", true, ...)				</div>

				<div class="code"><pre><span class="ln">494</span>         /* Keep Bootstrap Package clean after loading template : because template can update boostrap */
<span class="ln">495</span>         $aBootstrapPackage = Yii::app()-&gt;clientScript-&gt;packages['bootstrap-admin'];
<span class="ln">496</span> 
<span class="ln">497</span> 
<span class="ln">498</span> 
<span class="error"><span class="ln error-ln">499</span>         $aViewUrls = $this-&gt;_initialise($templatename, $screenname, $editfile, true, true);
</span><span class="ln">500</span> 
<span class="ln">501</span>         App()-&gt;getClientScript()-&gt;reset();
<span class="ln">502</span>         Yii::app()-&gt;clientScript-&gt;packages['bootstrap'] = $aBootstrapPackage;
<span class="ln">503</span>         App()-&gt;getClientScript()-&gt;registerScriptFile(App()-&gt;getConfig('adminscripts').'templates.js');
<span class="ln">504</span>         App()-&gt;getClientScript()-&gt;registerPackage('ace');
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#6			</td>
			<td class="content">
				<div class="trace-file">
										&nbsp;unknown(0): <strong>themes</strong>-&gt;<strong>index</strong>("layout_global.twig", "question", "extends_fruity")				</div>

							</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#7			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/develop/framework/web/actions/CAction.php(109): <strong>ReflectionMethod</strong>-&gt;<strong>invokeArgs</strong>(themes, array("layout_global.twig", "question", "extends_fruity"))				</div>

				<div class="code"><pre><span class="ln">104</span>             elseif($param-&gt;isDefaultValueAvailable())
<span class="ln">105</span>                 $ps[]=$param-&gt;getDefaultValue();
<span class="ln">106</span>             else
<span class="ln">107</span>                 return false;
<span class="ln">108</span>         }
<span class="error"><span class="ln error-ln">109</span>         $method-&gt;invokeArgs($object,$ps);
</span><span class="ln">110</span>         return true;
<span class="ln">111</span>     }
<span class="ln">112</span> }
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#8			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/develop/application/core/Survey_Common_Action.php(86): <strong>CAction</strong>-&gt;<strong>runWithParamsInternal</strong>(themes,
 ReflectionMethod, array("r" =&gt; "admin/themes", "sa" =&gt; "view", 
"editfile" =&gt; "layout_global.twig", "templatename" =&gt; 
"extends_fruity", ...))				</div>

				<div class="code"><pre><span class="ln">81</span>             $oMethod = new ReflectionMethod($this, $sDefault);
<span class="ln">82</span>         }
<span class="ln">83</span> 
<span class="ln">84</span>         // We're all good to go, let's execute it
<span class="ln">85</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">86</span>         return parent::runWithParamsInternal($this, $oMethod, $params);
</span><span class="ln">87</span>     }
<span class="ln">88</span> 
<span class="ln">89</span>     /**
<span class="ln">90</span>      * Some functions have different parameters, which are just an alias of the
<span class="ln">91</span>      * usual parameters we're getting in the url. This function just populates
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#9			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/develop/application/controllers/admin/themes.php(33): <strong>Survey_Common_Action</strong>-&gt;<strong>runWithParams</strong>(array("r"
 =&gt; "admin/themes", "sa" =&gt; "view", "editfile" =&gt; 
"layout_global.twig", "templatename" =&gt; "extends_fruity", ...))				</div>

				<div class="code"><pre><span class="ln">28</span>     public function runWithParams($params)
<span class="ln">29</span>     {
<span class="ln">30</span> 
<span class="ln">31</span>         $sTemplateName = Yii::app()-&gt;request-&gt;getPost('templatename', '');
<span class="ln">32</span>         if (Permission::model()-&gt;hasGlobalPermission('templates', 'read') || Permission::model()-&gt;hasTemplatePermission($sTemplateName)) {
<span class="error"><span class="ln error-ln">33</span>             parent::runWithParams($params);
</span><span class="ln">34</span>         } else {
<span class="ln">35</span>             Yii::app()-&gt;setFlashMessage(gT("We are sorry but you don't have permissions to do this."), 'error');
<span class="ln">36</span>             $this-&gt;getController()-&gt;redirect(array("admin/themeoptions"));
<span class="ln">37</span>         }
<span class="ln">38</span>     }
</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>
										&nbsp;/mnt/data/shnoulle/nginx/www/develop/framework/web/CController.php(308): <strong>themes</strong>-&gt;<strong>runWithParams</strong>(array("r"
 =&gt; "admin/themes", "sa" =&gt; "view", "editfile" =&gt; 
"layout_global.twig", "templatename" =&gt; "extends_fruity", ...))				</div>

				<div class="code"><pre><span class="ln">303</span>     {
<span class="ln">304</span>         $priorAction=$this-&gt;_action;
<span class="ln">305</span>         $this-&gt;_action=$action;
<span class="ln">306</span>         if($this-&gt;beforeAction($action))
<span class="ln">307</span>         {
<span class="error"><span class="ln error-ln">308</span>             if($action-&gt;runWithParams($this-&gt;getActionParams())===false)
</span><span class="ln">309</span>                 $this-&gt;invalidActionParams($action);
<span class="ln">310</span>             else
<span class="ln">311</span>                 $this-&gt;afterAction($action);
<span class="ln">312</span>         }
<span class="ln">313</span>         $this-&gt;_action=$priorAction;
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#11			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/develop/framework/web/CController.php(286): <strong>CController</strong>-&gt;<strong>runAction</strong>(themes)				</div>

				<div class="code"><pre><span class="ln">281</span>      * @see runAction
<span class="ln">282</span>      */
<span class="ln">283</span>     public function runActionWithFilters($action,$filters)
<span class="ln">284</span>     {
<span class="ln">285</span>         if(empty($filters))
<span class="error"><span class="ln error-ln">286</span>             $this-&gt;runAction($action);
</span><span class="ln">287</span>         else
<span class="ln">288</span>         {
<span class="ln">289</span>             $priorAction=$this-&gt;_action;
<span class="ln">290</span>             $this-&gt;_action=$action;
<span class="ln">291</span>             CFilterChain::create($this,$action,$filters)-&gt;run();
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#12			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/develop/framework/web/CController.php(265): <strong>CController</strong>-&gt;<strong>runActionWithFilters</strong>(themes, array())				</div>

				<div class="code"><pre><span class="ln">260</span>         {
<span class="ln">261</span>             if(($parent=$this-&gt;getModule())===null)
<span class="ln">262</span>                 $parent=Yii::app();
<span class="ln">263</span>             if($parent-&gt;beforeControllerAction($this,$action))
<span class="ln">264</span>             {
<span class="error"><span class="ln error-ln">265</span>                 $this-&gt;runActionWithFilters($action,$this-&gt;filters());
</span><span class="ln">266</span>                 $parent-&gt;afterControllerAction($this,$action);
<span class="ln">267</span>             }
<span class="ln">268</span>         }
<span class="ln">269</span>         else
<span class="ln">270</span>             $this-&gt;missingAction($actionID);
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#13			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/develop/application/controllers/AdminController.php(163): <strong>CController</strong>-&gt;<strong>run</strong>("themes")				</div>

				<div class="code"><pre><span class="ln">158</span>         }
<span class="ln">159</span> 
<span class="ln">160</span>         $this-&gt;runModuleController($action);
<span class="ln">161</span> 
<span class="ln">162</span> 
<span class="error"><span class="ln error-ln">163</span>         return parent::run($action);
</span><span class="ln">164</span>     }
<span class="ln">165</span> 
<span class="ln">166</span>     /**
<span class="ln">167</span>      * Starting with LS4, 3rd party developper can extends any of the LimeSurve controllers.
<span class="ln">168</span>      */
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#14			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/develop/framework/web/CWebApplication.php(282): <strong>AdminController</strong>-&gt;<strong>run</strong>("themes")				</div>

				<div class="code"><pre><span class="ln">277</span>         {
<span class="ln">278</span>             list($controller,$actionID)=$ca;
<span class="ln">279</span>             $oldController=$this-&gt;_controller;
<span class="ln">280</span>             $this-&gt;_controller=$controller;
<span class="ln">281</span>             $controller-&gt;init();
<span class="error"><span class="ln error-ln">282</span>             $controller-&gt;run($actionID);
</span><span class="ln">283</span>             $this-&gt;_controller=$oldController;
<span class="ln">284</span>         }
<span class="ln">285</span>         else
<span class="ln">286</span>             throw new CHttpException(404,Yii::t('yii','Unable to resolve the request "{route}".',
<span class="ln">287</span>                 array('{route}'=&gt;$route===''?$this-&gt;defaultController:$route)));
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#15			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/develop/framework/web/CWebApplication.php(141): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>("admin/themes")				</div>

				<div class="code"><pre><span class="ln">136</span>             foreach(array_splice($this-&gt;catchAllRequest,1) as $name=&gt;$value)
<span class="ln">137</span>                 $_GET[$name]=$value;
<span class="ln">138</span>         }
<span class="ln">139</span>         else
<span class="ln">140</span>             $route=$this-&gt;getUrlManager()-&gt;parseUrl($this-&gt;getRequest());
<span class="error"><span class="ln error-ln">141</span>         $this-&gt;runController($route);
</span><span class="ln">142</span>     }
<span class="ln">143</span> 
<span class="ln">144</span>     /**
<span class="ln">145</span>      * Registers the core application components.
<span class="ln">146</span>      * This method overrides the parent implementation by registering additional core components.
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#16			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/develop/framework/base/CApplication.php(185): <strong>CWebApplication</strong>-&gt;<strong>processRequest</strong>()				</div>

				<div class="code"><pre><span class="ln">180</span>     public function run()
<span class="ln">181</span>     {
<span class="ln">182</span>         if($this-&gt;hasEventHandler('onBeginRequest'))
<span class="ln">183</span>             $this-&gt;onBeginRequest(new CEvent($this));
<span class="ln">184</span>         register_shutdown_function(array($this,'end'),0,false);
<span class="error"><span class="ln error-ln">185</span>         $this-&gt;processRequest();
</span><span class="ln">186</span>         if($this-&gt;hasEventHandler('onEndRequest'))
<span class="ln">187</span>             $this-&gt;onEndRequest(new CEvent($this));
<span class="ln">188</span>     }
<span class="ln">189</span> 
<span class="ln">190</span>     /**
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#17			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/develop/index.php(195): <strong>CApplication</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">190</span> require_once APPPATH . 'core/LSYii_Application' . EXT;
<span class="ln">191</span> 
<span class="ln">192</span> $config = require_once(APPPATH . 'config/internal' . EXT);
<span class="ln">193</span> 
<span class="ln">194</span> Yii::$enableIncludePath = false;
<span class="error"><span class="ln error-ln">195</span> Yii::createApplication('LSYii_Application', $config)-&gt;run();
</span><span class="ln">196</span> 
<span class="ln">197</span> /* End of file index.php */
<span class="ln">198</span> /* Location: ./index.php */
</pre></div>			</td>
		</tr>
				</tbody></table>
	</div>

	<div class="version">
		2019-10-17 06:28:27 nginx/1.16.1 <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.21	</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>
Twig_Error_Loader.html (27,505 bytes)   
DenisChenu

DenisChenu

2019-10-17 08:35

developer   ~54070

Oh …

Hack https://github.com/LimeSurvey/LimeSurvey/blob/develop/application/views/survey/questions/question_help/asterisk.twig (just add TEST after <div class="asterisk pull-left">) : clean twig cache (rm -Rf)
Asterisk part was not updated …

DenisChenu

DenisChenu

2019-10-17 08:43

developer   ~54071

OK … multiple issue

  1. core system survey/questions/question_help/asterisk.twig
  2. Seem application/views was not registered in theme editor : 1st issue to fix
  3. vanilla question.twig load subviews/survey/question_subviews/asterisk.twig : must load same directory : 2nd issue to fix
DenisChenu

DenisChenu

2019-10-17 19:39

developer   ~54092

Last edited: 2019-10-17 19:40

View 2 revisions

https://github.com/LimeSurvey/LimeSurvey/commit/b4932dd789a2dd9515b9f0aac7a7662816890abd

Seems it still have only the alert about processString (seems to have a NULL value somewhere).
Since it's the last issue : please close this one and report another :)

routard

routard

2019-10-18 08:59

reporter   ~54093

Hi! OK, I've updated /application/controllers/admin/themes.php and seems to be OK : "question" item is available in the drop down menu on the editor page (and yes still processString alert).
Which other bug should I report? Theme compatibility with version 4 of the API?

DenisChenu

DenisChenu

2019-10-18 09:00

developer   ~54094

For bug to be reported separatly in my opinion

  1. processString alert : we must find where there are the null value sent. Because we don't send a null value in master
  2. The theme compatibility alert
routard

routard

2019-10-18 11:02

reporter   ~54095

OK, these two bugs have been reported here by TorbayIntel (see above) : https://bugs.limesurvey.org/view.php?id=15365
This one is closed. Thanks for ur help.

Issue History

Date Modified Username Field Change
2019-10-01 10:05 routard New Issue
2019-10-01 10:14 routard Note Added: 53794
2019-10-01 13:18 ollehar Note Added: 53795
2019-10-01 13:18 ollehar Note Added: 53796
2019-10-01 13:18 ollehar Status new => feedback
2019-10-01 19:27 routard Note Added: 53815
2019-10-01 19:27 routard Status feedback => new
2019-10-01 19:28 routard Note Added: 53816
2019-10-02 09:06 DenisChenu Note Added: 53818
2019-10-03 08:07 routard Note Added: 53865
2019-10-03 08:19 routard Note Added: 53866
2019-10-04 14:38 TorbayIntel Note Added: 53883
2019-10-05 09:09 routard Note Added: 53904
2019-10-07 11:10 TorbayIntel Note Added: 53916
2019-10-17 08:07 routard Note Added: 54068
2019-10-17 08:30 DenisChenu File Added: Twig_Error_Loader.html
2019-10-17 08:30 DenisChenu Note Added: 54069
2019-10-17 08:35 DenisChenu Note Added: 54070
2019-10-17 08:43 DenisChenu Note Added: 54071
2019-10-17 19:39 DenisChenu Status new => feedback
2019-10-17 19:39 DenisChenu Note Added: 54092
2019-10-17 19:40 DenisChenu Note Edited: 54092 View Revisions
2019-10-18 08:59 routard Note Added: 54093
2019-10-18 08:59 routard Status feedback => new
2019-10-18 09:00 DenisChenu Note Added: 54094
2019-10-18 09:01 DenisChenu Assigned To => DenisChenu
2019-10-18 09:01 DenisChenu Status new => closed
2019-10-18 09:01 DenisChenu Resolution open => fixed
2019-10-18 09:01 DenisChenu Fixed in Version => 4.0.0-RC5
2019-10-18 11:02 routard Note Added: 54095