Skip to content
Snippets Groups Projects
Commit 4c56488b authored by gnaegi's avatar gnaegi
Browse files

OO-650 fix broken course themes and filter mercurial meta directories

parent ee8c5f0f
No related branches found
No related tags found
No related merge requests found
...@@ -157,6 +157,7 @@ public class LayoutAdminController extends FormBasicController { ...@@ -157,6 +157,7 @@ public class LayoutAdminController extends FormBasicController {
if (name.equalsIgnoreCase("CVS")) return false; if (name.equalsIgnoreCase("CVS")) return false;
else if (name.equalsIgnoreCase(".DS_Store")) return false; else if (name.equalsIgnoreCase(".DS_Store")) return false;
else if (name.equalsIgnoreCase(".sass-cache")) return false; else if (name.equalsIgnoreCase(".sass-cache")) return false;
else if (name.equalsIgnoreCase(".hg")) return false;
else return true; else return true;
} }
} }
......
...@@ -62,6 +62,21 @@ public class CourseLayoutHelper { ...@@ -62,6 +62,21 @@ public class CourseLayoutHelper {
public static final String LAYOUT_COURSE_SUBFOLDER = "/layout"; public static final String LAYOUT_COURSE_SUBFOLDER = "/layout";
private static final String IFRAME_CSS = "/iframe.css"; private static final String IFRAME_CSS = "/iframe.css";
private static final String MAIN_CSS = "/main.css"; private static final String MAIN_CSS = "/main.css";
private static final VFSItemFilter themeNamesFilter = new VFSItemFilter() {
@Override
public boolean accept(VFSItem it) {
if (!(it instanceof VFSContainer)) return false;
// remove unwanted meta-dirs
else if (it.getName().equalsIgnoreCase("CVS")) return false;
else if (it.getName().equalsIgnoreCase(".DS_Store")) return false;
else if (it.getName().equalsIgnoreCase(".sass-cache")) return false;
else if (it.getName().equalsIgnoreCase(".hg")) return false;
// last check is blacklist
return !(layoutBlacklist.contains(it.getName()));
}
};
/** /**
* Array holding the folder-names of the blacklisted course-layouts * Array holding the folder-names of the blacklisted course-layouts
...@@ -157,26 +172,13 @@ public class CourseLayoutHelper { ...@@ -157,26 +172,13 @@ public class CourseLayoutHelper {
VFSContainer cThemeCont = new LocalFolderImpl(themesFile); VFSContainer cThemeCont = new LocalFolderImpl(themesFile);
cThemeCont = (VFSContainer) cThemeCont.resolve("/coursethemes"); cThemeCont = (VFSContainer) cThemeCont.resolve("/coursethemes");
if (cThemeCont != null) { if (cThemeCont != null) {
courseThemes = cThemeCont.getItems(new VFSItemFilter() { courseThemes = cThemeCont.getItems(themeNamesFilter);
@Override
public boolean accept(VFSItem it) {
if (!(it instanceof VFSContainer)) return false;
if (it.getName().equals("CVS") || it.getName().equals("cvs")) return false;
return !(layoutBlacklist.contains(it.getName()));
}
});
} }
// 2. now add the additional Templates from the current Theme // 2. now add the additional Templates from the current Theme
VFSContainer addThCont = CourseLayoutHelper.getOLATThemeCourseLayoutFolder(); VFSContainer addThCont = CourseLayoutHelper.getOLATThemeCourseLayoutFolder();
if (addThCont != null) { if (addThCont != null) {
List<VFSItem> additionalThemes = addThCont.getItems(new VFSItemFilter() { List<VFSItem> additionalThemes = addThCont.getItems(themeNamesFilter);
@Override
public boolean accept(VFSItem it) {
if (!(it instanceof VFSContainer)) return false;
return (!it.getName().equals("CVS") && !it.getName().equals("cvs"));
}
});
courseThemes.addAll(additionalThemes); courseThemes.addAll(additionalThemes);
} }
return courseThemes; return courseThemes;
...@@ -190,10 +192,27 @@ public class CourseLayoutHelper { ...@@ -190,10 +192,27 @@ public class CourseLayoutHelper {
* @return the courselayouts-folder or null * @return the courselayouts-folder or null
*/ */
public static VFSContainer getOLATThemeCourseLayoutFolder() { public static VFSContainer getOLATThemeCourseLayoutFolder() {
String staticThemesPath = WebappHelper.getContextRoot() + "/static/themes/"; VFSContainer courseLayoutFolder = null;
File tmpDir = new File(staticThemesPath); File themeDir = null;
VFSContainer addThCont = new LocalFolderImpl(tmpDir); // first attempt is to use custom theme path
return (VFSContainer) addThCont.resolve("/" + Settings.getGuiThemeIdentifyer() + "/courselayouts"); if (Settings.getGuiCustomThemePath() != null) {
themeDir = new File(Settings.getGuiCustomThemePath(), Settings.getGuiThemeIdentifyer());
if (themeDir.exists() && themeDir.isDirectory()) {
VFSContainer themeContainer = new LocalFolderImpl(themeDir);
courseLayoutFolder = (VFSContainer) themeContainer.resolve("/courselayouts");
}
}
// fallback is to use the standards themes directory in the web app
if (themeDir == null || !themeDir.exists() || !themeDir.isDirectory()) {
File themesDir = new File(WebappHelper.getContextRoot() + "/static/themes/");
themeDir = new File(themesDir, Settings.getGuiThemeIdentifyer());
}
// resolve now
if (themeDir != null && themeDir.exists() && themeDir.isDirectory()) {
VFSContainer themeContainer = new LocalFolderImpl(themeDir);
courseLayoutFolder = (VFSContainer) themeContainer.resolve("/courselayouts");
}
return courseLayoutFolder;
} }
/** /**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment