View Issue Details

This bug affects 1 person(s).
 6
IDProjectCategoryView StatusLast Update
20007Bug reportsTheme editorpublic2025-11-13 18:29
ReporterDenisChenu Assigned To 
PrioritynoneSeverityminor 
Status newResolutionopen 
Product Version6.6.x 
Summary20007: Unable to import theme with only css update
Description

When try to import a theme with only css update : receive an error

Steps To Reproduce

Steps to reproduce

1 Go to theme list

  1. Extend vanilla
  2. Save custom.css
  3. export
  4. delete
  5. import just exported theme

Expected result

get the theme ready with custom.css

Actual result

Unable to edit theme Twig\Error\LoaderError
The "/var/www/limesurvey/upload/themes/survey/vanilla_cssupdate/views/" directory does not exist ("/var/www/limesurvey/upload/themes/survey/vanilla_cssupdate/views/").

TagsNo tags attached.
Attached Files
vanilla_cssupdate.zip (109,787 bytes)
index.php.html (372 bytes)   
<html data-lt-installed="true"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body><h1>Twig\Error\LoaderError</h1>
<p>The 
"/media/shnoulle/data/webdev/master/upload/themes/survey/
vanilla_cssupdate/views/" directory does not exist 
("/media/shnoulle/data/webdev/master/upload/themes/survey/
vanilla_cssupdate/views/").</p></body></html>
index.php.html (372 bytes)   
Bug heat6
Complete LimeSurvey version number (& build)6.12
I will donate to the project if issue is resolvedNo
Browsernot relevant
Database type & versionnot relevant
Server OS (if known)not relevant
Webserver software & version (if known)not relevant
PHP Versionnot relevant

Users monitoring this issue

There are no users monitoring this issue.

Activities

DenisChenu

DenisChenu

2025-03-12 16:32

developer   ~82234

On 5.X : zip file have empty directory, not in 6.X

My opinion : empty view directory must be allowed : don't break, create on demand.

Matijs

Matijs

2025-10-18 17:29

reporter   ~83605

Even if I put (LS) files in the views directory (layout_global.twig in this case) I still get the error that the views directory does niet exist.

import.png (59,883 bytes)   
import.png (59,883 bytes)   
c_schmitz

c_schmitz

2025-11-13 18:19

administrator   ~83787

@DenisChenu
I checked this with the latest version and could not reproduce, so this is most likely fixed for good.
Can you check, please?

DenisChenu

DenisChenu

2025-11-13 18:25

developer   ~83793

Have another issue with included theme now

can import BUT

The "/media/shnoulle/data/webdev/master/upload/themes/survey/vanilla_cssupdate/views/" directory does not exist ("/media/shnoulle/data/webdev/master/upload/themes/survey/vanilla_cssupdate/views/").

Save (layout_gloab) :
theme seems strange

DenisChenu

DenisChenu

2025-11-13 18:26

developer   ~83794

OK with live survey

DenisChenu

DenisChenu

2025-11-13 18:26

developer   ~83795

Maybe auto create needed directory when edit theme ?

DenisChenu

DenisChenu

2025-11-13 18:29

developer   ~83797

The template sample HTML file (and related files)

Template Sample.html (22,088 bytes)   
<!DOCTYPE html>
<html lang="fr" dir="ltr" class="js fr dir-ltr" data-lt-installed="true"><head>



            




    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="generator" content="LimeSurvey http://www.limesurvey.org">

        

    <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/jquery-ui.css">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/font-awesome.css">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/ibm-sans.css">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/ibm-serif.css">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/remixicon.css">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/tempus-dominus.min.css">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/roboto.css">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/icomoon.css">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/select2.css">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/select2-bootstrap-5-theme.css">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/lstutorial.css">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/adminsidepanel.css">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/noto.css">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/survey.css">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/embeddables.css">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/base.css">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/theme.css">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/noTablesOnMobile.css">
<link rel="stylesheet" type="text/css" href="Template%20Sample_fichiers/custom.css">
<script type="text/javascript">window.debugState = {frontend : (0 === 1), backend : (0 === 1)};</script><script type="text/javascript" src="Template%20Sample_fichiers/jquery.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/jquery-migrate.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/jquery-ui.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/adminsidepanel.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/js.cookie.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/moment-with-locales.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/popper-tempus.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/datepickerInit.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/lslog.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/pjax.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/loadPjax.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/select2.full.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/ckeditor.js" class="headScriptTag"></script><style>.cke{visibility:hidden;}</style>
<script type="text/javascript" src="Template%20Sample_fichiers/config.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/ckeditoradditions.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/bootstrap_5.min.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/em_javascript.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/survey.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/template-core.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/theme.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/ajaxify.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/custom.js" class="headScriptTag"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/nojs.js" class="headScriptTag"></script>
<script type="text/javascript">
/*<![CDATA[*/

           window.LS = window.LS || {}; window.LS.globalUserId = "1";
LSvar= LSvar || {};
LSvar.bFixNumAuto = 1;
LSvar.bNumRealValue = 0;
/*]]>*/
</script>
<title>
         Template Sample 
    </title>
            <link rel="shortcut icon" href="http://webdev.local/master/tmp/assets/5ad7cf48/favicon.ico">
        <script type="text/javascript">
        if(window.basicThemeScripts === undefined){ 
            window.basicThemeScripts = new ThemeScripts(); 
        } 
    </script>
        
            
        
        
    <style>
        body .top-container {
            margin-top: 70px;
        }
    </style>


    
</head>

        <body class=" vanilla_cssupdate vanilla font-noto lang-en  brand-logo" data-thememode="light" style="padding-top: 246px;">

                            <span style="display: none;" id="__emcache_debug" value="off"></span>
        
                            <div id="beginScripts" class="script-container">
                <script type="text/javascript" src="Template%20Sample_fichiers/adminbasics.js"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/modaleditor.js"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/decimal.js"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/decimalcustom.js"></script>

            </div>
               

                <article>

            <div id="dynamicReloadContainer">
            
                                                                <!-- Bootstrap Navigation Bar -->
            <div id="survey-nav" class="navbar navbar-light bg-light navbar-expand-md fixed-top border-bottom pt-0 pb-0">
        <div class="container-fluid">
                            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="small-screens-menus" aria-expanded="false">
                    <span class="visually-hidden-focusable">Tools</span>
                    <span class="navbar-toggler-icon" aria-hidden="true"></span>
                </button>
                                                    <div class="navbar-brand logo-container d-none d-md-block">
                    <img class="logo img-fluid" src="Template%20Sample_fichiers/logo.png" alt=" Template Sample ">
                </div>
                                        <div id="navbar" class="collapse navbar-collapse navbar-nav-scroll pt-2">
                    <ul class="nav navbar-nav navbar-action-link navbar-right ms-auto">
                            <!-- Load unfinished survey button -->
    <li class="nav-item ls-no-js-hidden px-2">
        <a href="#" data-limesurvey-submit="{ &quot;loadall&quot;:&quot;loadall&quot; }" class="nav-link ls-link-action ls-link-loadall">
            Load unfinished survey
        </a>
    </li>




                        


       
                        

            <!-- Question index, group,  -->
        <li class="dropdown nav-item ls-no-js-hidden px-2 index-menu-">
            <a class="dropdown-toggle nav-link" data-bs-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" href="#">
                Question index
                <span class="caret"></span>
            </a>
            <ul class="dropdown-menu dropdown-menu-end">
                                                                        
                                                            <li class="list-group-item">
                        <a href="" data-limesurvey-submit="" class="dropdown-item  ">
                            A group without step status styling
                        </a>
                    </li>
                                                                        
                                                                        
                <li class="list-group-item">
                        <a href="" data-limesurvey-submit="" class="dropdown-item   bg-warning">
                            This group is unanswered
                        </a>
                    </li>
                                                                        
                                                                        
                <li class="list-group-item">
                        <a href="" data-limesurvey-submit="" class="dropdown-item   bg-danger">
                            This group has an error
                        </a>
                    </li>
                                                                        
                                                                        
                <li class="list-group-item">
                        <a href="" data-limesurvey-submit="" class="dropdown-item   disabled">
                            Current group is disabled
                        </a>
                    </li>
                            </ul>
        </li>
    
        
                        

        
    <!-- Language Changer, top menu version -->
    <li class="ls-no-js-hidden form-change-lang dropdown nav-item px-2">
        <a class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" href="#" data-bs-target="#language-dropdown">
                        Language: English
            <span class="caret"></span>
        </a>
        <ul class="dropdown-menu dropdown-menu-end" id="language-dropdown">
                                        <li class="index-item">
                    <a href="#" data-limesurvey-lang="en" class="dropdown-item ls-language-link">
                        English
                    </a>
                </li>
                            <li class="index-item">
                    <a href="#" data-limesurvey-lang="de" class="dropdown-item ls-language-link">
                        German
                    </a>
                </li>
                    </ul>
    </li>





                    </ul>
                </div>
                    </div>
    </div>

                
                                                    
                
                <!-- Outer Frame Container -->
                                                                            <!-- outer frame container -->
<div class=" outerframe    container-md  " id="outerframeContainer">
        
<!-- Main Row -->
<div id="main-row">
    <!-- Main Col -->
    <div class="  col-centered  space-col" id="main-col">

                                




                        

                                        



<!-- No JavaScript alert -->
<div class=" ls-js-hidden warningjs  alert alert-danger " data-type="checkjavascript">
    Caution: JavaScript execution is disabled in your browser or for 
this website. You may not be able to answer all questions in this 
survey. Please, verify your browser parameters.
</div>


    
    <!-- Start of language change Form-->
    <form id="firstpage-changelang" autocomplete="off" class="form" method="post">
<input type="hidden" value="dmpobjc3SGNFUHFoYVJqME9yQVhNUDhLbmd4RGkzQlHCewsiiKPwOVSdHzFcVSC3b-ZzBUb56_ren8a_G1lnYA==" name="YII_CSRF_TOKEN">


    
    
        
            <!-- Language Changer -->
    <div class="   form-change-lang row row-cols-lg-auto g-1">
        <label class="  col-form-label col-auto fw-bold" for="lang">
            <span class="control-label">Language:</span>
        </label>
        <div class="col-auto">
                <select class="form-control" name="lang" id="lang">
<option value="en" selected="selected">English</option>
<option value="de">German</option>
</select>
        </div>
        <div class="col-auto">
        <!-- for no js functionality (need form) -->
                <button type="submit" value="changelang" name="move" class="btn btn-primary ls-language-changer-item ">Change the language</button>
        </div>
    </div>

        
    


    </form>







<!-- Start of the main Form-->
<form id="limesurvey" name="limesurvey" autocomplete="off" class="survey-form-container form" method="post">
<input type="hidden" value="dmpobjc3SGNFUHFoYVJqME9yQVhNUDhLbmd4RGkzQlHCewsiiKPwOVSdHzFcVSC3b-ZzBUb56_ren8a_G1lnYA==" name="YII_CSRF_TOKEN">

<!-- Ajax value -->
<!-- Needs to be set by javascript! Because if JavaScript is disabled, ajaxmode will completely fail! -->



<!-- Field Names -->
<input type="hidden" name="fieldnames" value="" id="fieldnames">



<!-- Submit button -->
<button type="submit" id="defaultbtn" value="default" name="move" class="submit d-none" style="display:none">default</button>
 <!-- main form -->

        

        
<!-- Welcome Message -->
<div id="welcome-container" class="">

    <!-- Survey Name -->
    <h1 class=" survey-name  text-center">
         Template Sample 
    </h1>

    <!-- Survey description -->
    <div class=" survey-description  text-info text-center">
        <p>This is a sample survey description. It could be quite long.</p><p>But this one isn't.</p><p>
    </p></div>

    <!-- Welcome text -->
    <div class=" survey-welcome  h5 text-primary">
        <p>Welcome to this sample survey </p><p> </p><p> You should have a great time doing this </p><p> 
    </p></div>

    <!-- Question count -->
    <div class=" number-of-questions   text-muted">
        <div class=" question-count-text ">

                                </div>
  </div>
</div>


    
<!-- Privacy message -->

<div class=" privacy  row">
    <div class="   col-12 col-centered">
                                                                                                                
<div class="form-check">
    <input required="" class=" form-check-input" type="checkbox" name="datasecurity_accepted" id="datasecurity_accepted">
    <label for="datasecurity_accepted" class="form-check-label fw-bold "> <a href="#data-security-modal-" data-bs-toggle="collapse"> Show privacy policy </a>  </label>
</div>
<div class="collapse fade" id="data-security-modal-">
    <div class="card card-primary">
        <div class="card-header bg-primary">
            <h4 class="modal-title">Privacy policy</h4>
        </div>
        <div class="card-body ">
             Your privacy policy text is shown here. 
        </div>
        <div class="ls-no-js-hidden card-footer">
            <button type="button" class="btn btn-primary" onclick="$('#datasecurity_accepted').prop('checked',true).trigger('change');" data-bs-dismiss="modal">
                Accept
            </button>
            <button type="button" class="btn btn-outline-secondary" onclick="$('#data-security-modal-').collapse('hide');">
                Close
            </button>
        </div>
    </div>
</div>
<script>
$(function() {
    $("#ls-button-submit").on("click", function() {
        if(!$('#datasecurity_accepted').prop('checked')) {
            /* dynamic show error */
            $('#datasecurity_error').removeClass("ls-js-hidden");
            if($('#datasecurity_error').length) {
                /* add it in aria and role */
                $('#datasecurity_error').attr("role", "alert");
                $('#datasecurity_accepted').attr("aria-describedby", "datasecurity_error ");
            }
        }
    });
});
$("#datasecurity_accepted").on("change", function() {
    if($('#datasecurity_accepted').prop('checked')) {
        /* dynamic hide error */
        $('#datasecurity_error').addClass("ls-js-hidden");
    }
});
</script>

                                        </div>
</div>


        

<!-- PRESENT THE NAVIGATOR -->
<div class="    row navigator space-col" id="navigator-container">

    <!-- Previous button container -->
    <div class="   col-6 text-start">

                            <!-- Button previous -->
            <button id="ls-button-previous" type="submit" value="moveprev" name="move" accesskey="p" class="   ls-move-btn ls-move-previous-btn action--ls-button-previous btn btn-lg btn-outline-secondary ">
                Previous
            </button>
            </div>
    <div class="   col-6 text-end">

                
                                        <!-- Button Next -->
                <button id="ls-button-submit" type="submit" value="movenext" name="move" accesskey="n" class="   ls-move-btn ls-move-next-btn ls-move-submit-btn action--ls-button-submit  btn btn-lg btn-primary ">
                    Next
                </button>
                        </div>
</div>
<!-- Extra navigator part -->
    <!-- extra tools, can be shown with javascript too (just remove ls-js-hidden class -->
    <div class="row ls-js-hidden">
        <!-- Extra button container -->
        <div class="col-6 clearall-saveall-wrapper">
                                <button type="submit" value="loadall" name="loadall" accesskey="l" class="ls-saveaction ls-loadall  action--ls-button-submit btn btn-outline-secondary">Load unfinished survey</button>

                                        
<div class="">
    <div class="">
        <label class="col-form-label fw-bold ls-js-hidden">
            <input value="confirm" name="confirm-clearall" type="checkbox" class="me-2 "><span class="control-label">Please confirm you want to clear your response?</span>
        </label>
        <button type="submit" name="clearall" value="clearall" data-confirmedby="confirm-clearall" class="ls-clearaction ls-clearall btn btn-link" title="This action need to be confirmed.">Exit and clear survey</button>
    </div>
</div>

                    </div>
         <!-- Index container -->
                    
<div class="col-md-6 index-wrapper">
            <div class="list-group index-button-full">
  <div class="list-group-item">
      <div class="h4 list-group-item-heading">Question index</div>
  </div>
                      <button type="submit" name="move" value="" class="list-group-item  ">A group without step status styling</button>
                                  <button type="submit" name="move" value="" class="list-group-item   list-group-item-warning">This group is unanswered</button>
                                  <button type="submit" name="move" value="" class="list-group-item   list-group-item-danger">This group has an error</button>
                                  <button type="submit" name="move" value="" class="list-group-item   disabled">Current group is disabled</button>
  </div>

    
    </div>

            </div>



<input type="hidden" name="ajax" value="off" id="ajax"></form> <!-- main form -->



            

    </div> <!-- main col -->
</div> <!-- main row -->
</div>
                
                                


<!-- Bootstrap Modal Alert -->
<div id="bootstrap-alert-box-modal" class=" modal fade ">
    <div class=" modal-dialog ">
        <div class=" modal-content ">
            <div class=" modal-header " style="min-height:40px;">
                <button type="button" data-bs-dismiss="modal" aria-hidden="true" class=" btn-close "></button>
                <div class=" modal-title">&nbsp;</div>
            </div>
            <div class=" modal-body ">
            </div>
                        <div class=" modal-footer ">
                <a href="#" data-bs-dismiss="modal" class=" btn btn-outline-secondary ">Close</a>
            </div>
                    </div>
    </div>
</div>


                                

                        </div>

        </article>
                    
                            <div id="bottomScripts" class="script-container">
                <script type="text/javascript" src="Template%20Sample_fichiers/lstutorial.js"></script>
<script type="text/javascript" src="Template%20Sample_fichiers/embeddables.js"></script>
<script type="text/javascript">
/*<![CDATA[*/
activateLanguageChanger(); 

                if(window.basicThemeScripts === undefined){ 
                    window.basicThemeScripts = new ThemeScripts(); 
                } 
                basicThemeScripts.initGlobal(); 
                
jQuery(document).off('pjax:scriptcomplete.mainBottom').on('ready pjax:scriptcomplete.mainBottom', function() {
activateActionLink();
activateConfirmButton();
basicThemeScripts.initTopMenuLanguageChanger('.ls-language-link ', 'form#limesurvey'); 

    $('#limesurvey').append('<input type="hidden" name="ajax" value="off" id="ajax" />');
    

    if(window.basicThemeScripts === undefined){ 
        window.basicThemeScripts = new ThemeScripts(); 
    } 

});
jQuery(document).off('pjax:scriptsuccess.debugger').on('pjax:scriptsuccess.debugger',function(e) { console.ls.log('PJAX scriptsuccess', e); });
jQuery(document).off('pjax:scripterror.debugger').on('pjax:scripterror.debugger',function(e) { console.ls.log('PJAX scripterror', e); });
jQuery(document).off('pjax:scripttimeout.debugger').on('pjax:scripttimeout.debugger',function(e) { console.ls.log('PJAX scripttimeout', e); });
jQuery(document).off('pjax:success.debugger').on('pjax:success.debugger',function(e) { console.ls.log('PJAX success', e);});
jQuery(document).off('pjax:error.debugger').on('pjax:error.debugger',function(e) { console.ls.log('PJAX error', e);});
/*]]>*/
</script>

            </div>
           

                    <script>
                window.basicThemeScripts.init();
            </script>
                
    

</body></html>
Template Sample.html (22,088 bytes)   
Template Sample_fichiers.zip (1,823,193 bytes)

Issue History

Date Modified Username Field Change
2025-03-12 16:31 DenisChenu New Issue
2025-03-12 16:31 DenisChenu File Added: vanilla_cssupdate.zip
2025-03-12 16:31 DenisChenu File Added: index.php.html
2025-03-12 16:32 DenisChenu Note Added: 82234
2025-03-12 16:32 DenisChenu Bug heat 0 => 2
2025-10-18 17:29 Matijs Note Added: 83605
2025-10-18 17:29 Matijs File Added: import.png
2025-10-18 17:29 Matijs Bug heat 2 => 4
2025-11-13 18:19 c_schmitz Note Added: 83787
2025-11-13 18:19 c_schmitz Bug heat 4 => 6
2025-11-13 18:25 DenisChenu Note Added: 83793
2025-11-13 18:25 DenisChenu File Added: Capture d’écran du 2025-11-13 18-20-53.png
2025-11-13 18:25 DenisChenu File Added: Capture d’écran du 2025-11-13 18-21-41.png
2025-11-13 18:25 DenisChenu File Added: Capture d’écran du 2025-11-13 18-25-00.png
2025-11-13 18:26 DenisChenu Note Added: 83794
2025-11-13 18:26 DenisChenu Note Added: 83795
2025-11-13 18:29 DenisChenu Note Added: 83797
2025-11-13 18:29 DenisChenu File Added: Template Sample.html
2025-11-13 18:29 DenisChenu File Added: Template Sample_fichiers.zip