@@ -1465,44 +1465,55 @@ bool CResource::ReadIncludedHTML(CXMLNode* pRoot)
14651465
14661466            if  (!strFilename.empty ())
14671467            {
1468-                 std::string strFullFilename;
14691468                ReplaceSlashes (strFilename);
14701469
1471-                 if  (IsFilenameUsed (strFilename,  false ))
1470+                 if  (! IsValidFilePath (strFilename. c_str () ))
14721471                {
1473-                     CLogger::LogPrintf (" WARNING: Duplicate html file in resource '%s': '%s'\n "  , m_strResourceName.c_str (), strFilename.c_str ());
1472+                     m_strFailureReason = SString (" Couldn't find html %s for resource %s\n "  , strFilename.c_str (), m_strResourceName.c_str ());
1473+                     CLogger::ErrorPrintf (m_strFailureReason);
1474+                     return  false ;
14741475                }
14751476
1476-                 //  Try to find the file 
1477-                 if  (IsValidFilePath (strFilename. c_str ()) &&  GetFilePath (strFilename. c_str (), strFullFilename ))
1477+                 std::vector<std::string> vecFiles =  GetFilePaths (strFilename. c_str ()); 
1478+                 if  (vecFiles. empty ( ))
14781479                {
1479-                     //  This one is supposed to be default, but there's already a default page
1480-                     if  (bFoundDefault && bIsDefault)
1480+                     if  (glob::has_magic (strFilename))
14811481                    {
1482-                         CLogger::LogPrintf (" Only one html item can be default per resource, ignoring %s in %s\n "  , strFilename.c_str (),
1483-                                            m_strResourceName.c_str ());
1484-                         bIsDefault = false ;
1482+                         m_ResourceFilesCountPerDir[strFilename] = vecFiles.size ();
1483+                         continue ;
14851484                    }
14861485
1487-                     //  If this is supposed to be default, we've now found our default page
1488-                     if  (bIsDefault)
1489-                         bFoundDefault = true ;
1490- 
1491-                     //  Create a new resource HTML file and add it to the list
1492-                     auto  pResourceFile = new  CResourceHTMLItem (this , strFilename.c_str (), strFullFilename.c_str (), &Attributes, bIsDefault, bIsRaw,
1493-                                                                bIsRestricted, m_bOOPEnabledInMetaXml);
1494-                     m_ResourceFiles.push_back (pResourceFile);
1495- 
1496-                     //  This is the first HTML file? Remember it
1497-                     if  (!pFirstHTML)
1498-                         pFirstHTML = pResourceFile;
1499-                 }
1500-                 else 
1501-                 {
15021486                    m_strFailureReason = SString (" Couldn't find html %s for resource %s\n "  , strFilename.c_str (), m_strResourceName.c_str ());
15031487                    CLogger::ErrorPrintf (m_strFailureReason);
15041488                    return  false ;
15051489                }
1490+ 
1491+                 for  (const  std::string& strFilePath : vecFiles)
1492+                 {
1493+                     std::string strFullFilename;
1494+ 
1495+                     if  (GetFilePath (strFilePath.c_str (), strFullFilename))
1496+                     {
1497+                         //  This one is supposed to be default, but there's already a default page
1498+                         if  (bFoundDefault && bIsDefault)
1499+                         {
1500+                             CLogger::LogPrintf (" Only one html item can be default per resource, ignoring %s in %s\n "  , strFilename.c_str (), m_strResourceName.c_str ());
1501+                             bIsDefault = false ;
1502+                         }
1503+ 
1504+                         //  If this is supposed to be default, we've now found our default page
1505+                         if  (bIsDefault)
1506+                             bFoundDefault = true ;
1507+ 
1508+                         //  Create a new resource HTML file and add it to the list
1509+                         auto  pResourceFile = new  CResourceHTMLItem (this , strFilename.c_str (), strFullFilename.c_str (), &Attributes, bIsDefault, bIsRaw, bIsRestricted, m_bOOPEnabledInMetaXml);
1510+                         m_ResourceFiles.push_back (pResourceFile);
1511+ 
1512+                         //  This is the first HTML file? Remember it
1513+                         if  (!pFirstHTML)
1514+                             pFirstHTML = pResourceFile;
1515+                     }
1516+                 }
15061517            }
15071518            else 
15081519            {
0 commit comments