fix #1159 edit jsp pages for virtual hosts
This commit is contained in:
parent
ba220a46ab
commit
4068f7b568
11 changed files with 135 additions and 163 deletions
|
@ -18,6 +18,7 @@ package org.codelibs.fess.app.web.admin.design;
|
|||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLDecoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
@ -26,6 +27,7 @@ import org.apache.commons.io.FileUtils;
|
|||
import org.codelibs.core.io.FileUtil;
|
||||
import org.codelibs.core.io.ResourceUtil;
|
||||
import org.codelibs.core.lang.StringUtil;
|
||||
import org.codelibs.core.misc.Pair;
|
||||
import org.codelibs.fess.Constants;
|
||||
import org.codelibs.fess.app.web.base.FessAdminAction;
|
||||
import org.codelibs.fess.exception.FessSystemException;
|
||||
|
@ -70,6 +72,7 @@ public class AdminDesignAction extends FessAdminAction {
|
|||
super.setupHtmlData(runtime);
|
||||
runtime.registerData("editable", editable());
|
||||
runtime.registerData("fileNameItems", loadFileNameItems());
|
||||
runtime.registerData("jspFileNameItems", loadJspFileNameItems());
|
||||
runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameDesign()));
|
||||
}
|
||||
|
||||
|
@ -77,6 +80,22 @@ public class AdminDesignAction extends FessAdminAction {
|
|||
return fessConfig.isWebDesignEditorEnabled();
|
||||
}
|
||||
|
||||
private List<Pair<String, String>> loadJspFileNameItems() {
|
||||
List<Pair<String, String>> jspItems = new ArrayList<>();
|
||||
for (final Pair<String, String> p : systemHelper.getDesignJspFileNames()) {
|
||||
jspItems.add(new Pair<>(":" + p.getFirst(), "/" + p.getSecond()));
|
||||
}
|
||||
for (String key : fessConfig.getVirtualHostKeys()) {
|
||||
if (StringUtil.isBlank(key)) {
|
||||
key = "/";
|
||||
}
|
||||
for (final Pair<String, String> p : systemHelper.getDesignJspFileNames()) {
|
||||
jspItems.add(new Pair<>(key + ":" + p.getFirst(), key + "/" + p.getSecond()));
|
||||
}
|
||||
}
|
||||
return jspItems;
|
||||
}
|
||||
|
||||
private List<String> loadFileNameItems() {
|
||||
final File baseDir = new File(getServletContext().getRealPath("/"));
|
||||
final List<String> fileNameItems = new ArrayList<>();
|
||||
|
@ -224,7 +243,7 @@ public class AdminDesignAction extends FessAdminAction {
|
|||
throw new FessSystemException("Invalid encoding", e);
|
||||
}
|
||||
saveToken();
|
||||
return asEditHtml();
|
||||
return asEditHtml(form);
|
||||
}
|
||||
|
||||
@Execute
|
||||
|
@ -237,7 +256,7 @@ public class AdminDesignAction extends FessAdminAction {
|
|||
throw new FessSystemException("Invalid encoding", e);
|
||||
}
|
||||
saveToken();
|
||||
return asEditHtml();
|
||||
return asEditHtml(form);
|
||||
}
|
||||
|
||||
@Execute
|
||||
|
@ -249,11 +268,11 @@ public class AdminDesignAction extends FessAdminAction {
|
|||
form.content = StringUtil.EMPTY;
|
||||
}
|
||||
|
||||
validate(form, messages -> {}, () -> asEditHtml());
|
||||
verifyToken(() -> asEditHtml());
|
||||
validate(form, messages -> {}, () -> asEditHtml(form));
|
||||
verifyToken(() -> asEditHtml(form));
|
||||
try {
|
||||
write(jspFile.getAbsolutePath(), form.content.getBytes(Constants.UTF_8));
|
||||
saveInfo(messages -> messages.addSuccessUpdateDesignJspFile(GLOBAL, systemHelper.getDesignJspFileName(form.fileName)));
|
||||
saveInfo(messages -> messages.addSuccessUpdateDesignJspFile(GLOBAL, jspFile.getAbsolutePath()));
|
||||
} catch (final Exception e) {
|
||||
logger.error("Failed to update {}", form.fileName, e);
|
||||
throwValidationError(messages -> messages.addErrorsFailedToUpdateJspFile(GLOBAL), () -> asListHtml());
|
||||
|
@ -285,15 +304,29 @@ public class AdminDesignAction extends FessAdminAction {
|
|||
}
|
||||
|
||||
private File getJspFile(final String fileName, final String jspType) {
|
||||
final String jspFileName = systemHelper.getDesignJspFileName(fileName);
|
||||
if (jspFileName == null) {
|
||||
throwValidationError(messages -> messages.addErrorsInvalidDesignJspFileName(GLOBAL), () -> asListHtml());
|
||||
try {
|
||||
final String[] values = URLDecoder.decode(fileName, Constants.UTF_8).split(":");
|
||||
if (values.length != 2) {
|
||||
throwValidationError(messages -> messages.addErrorsInvalidDesignJspFileName(GLOBAL), () -> asListHtml());
|
||||
}
|
||||
final String jspFileName = systemHelper.getDesignJspFileName(values[1]);
|
||||
if (jspFileName == null) {
|
||||
throwValidationError(messages -> messages.addErrorsInvalidDesignJspFileName(GLOBAL), () -> asListHtml());
|
||||
}
|
||||
String path;
|
||||
if ("view".equals(jspType)) {
|
||||
path = "/WEB-INF/" + jspType + values[0] + "/" + jspFileName;
|
||||
} else {
|
||||
path = "/WEB-INF/" + jspType + "/" + jspFileName;
|
||||
}
|
||||
final File jspFile = new File(getServletContext().getRealPath(path));
|
||||
if (!jspFile.exists()) {
|
||||
throwValidationError(messages -> messages.addErrorsDesignJspFileDoesNotExist(GLOBAL), () -> asListHtml());
|
||||
}
|
||||
return jspFile;
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new FessSystemException("Failed to decode " + fileName, e);
|
||||
}
|
||||
final File jspFile = new File(getServletContext().getRealPath("/WEB-INF/" + jspType + "/" + jspFileName));
|
||||
if (!jspFile.exists()) {
|
||||
throwValidationError(messages -> messages.addErrorsDesignJspFileDoesNotExist(GLOBAL), () -> asListHtml());
|
||||
}
|
||||
return jspFile;
|
||||
}
|
||||
|
||||
// ===================================================================================
|
||||
|
@ -312,7 +345,9 @@ public class AdminDesignAction extends FessAdminAction {
|
|||
});
|
||||
}
|
||||
|
||||
private HtmlResponse asEditHtml() {
|
||||
return asHtml(path_AdminDesign_AdminDesignEditJsp);
|
||||
private HtmlResponse asEditHtml(final EditForm form) {
|
||||
return asHtml(path_AdminDesign_AdminDesignEditJsp).renderWith(data -> {
|
||||
data.register("displayFileName", getJspFile(form.fileName, "view").getAbsolutePath());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -166,6 +166,7 @@ public class AdminGeneralAction extends FessAdminAction {
|
|||
|
||||
fessConfig.storeSystemProperties();
|
||||
ComponentUtil.getLdapManager().updateConfig();
|
||||
ComponentUtil.getSystemHelper().refreshDesignJspFiles();
|
||||
}
|
||||
|
||||
public static void updateForm(final FessConfig fessConfig, final EditForm form) {
|
||||
|
|
|
@ -15,16 +15,21 @@
|
|||
*/
|
||||
package org.codelibs.fess.helper;
|
||||
|
||||
import static org.codelibs.core.stream.StreamUtil.stream;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.InetAddress;
|
||||
import java.net.URLEncoder;
|
||||
import java.net.UnknownHostException;
|
||||
import java.nio.file.Files;
|
||||
import java.security.SecureRandom;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
@ -37,11 +42,13 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.PreDestroy;
|
||||
import javax.servlet.ServletContext;
|
||||
|
||||
import org.apache.commons.lang3.LocaleUtils;
|
||||
import org.apache.commons.lang3.RandomStringUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.codelibs.core.lang.StringUtil;
|
||||
import org.codelibs.core.misc.Pair;
|
||||
import org.codelibs.fess.Constants;
|
||||
import org.codelibs.fess.crawler.util.CharUtil;
|
||||
import org.codelibs.fess.mylasta.action.FessMessages;
|
||||
|
@ -53,6 +60,7 @@ import org.lastaflute.core.message.supplier.UserMessagesCreator;
|
|||
import org.lastaflute.web.TypicalAction;
|
||||
import org.lastaflute.web.ruts.process.ActionRuntime;
|
||||
import org.lastaflute.web.servlet.request.RequestManager;
|
||||
import org.lastaflute.web.util.LaServletContextUtil;
|
||||
import org.lastaflute.web.validation.ActionValidator;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -65,7 +73,7 @@ import com.ibm.icu.util.ULocale;
|
|||
public class SystemHelper {
|
||||
private static final Logger logger = LoggerFactory.getLogger(SystemHelper.class);
|
||||
|
||||
protected final Map<String, String> designJspFileNameMap = new HashMap<>();
|
||||
protected final Map<String, String> designJspFileNameMap = new LinkedHashMap<>();
|
||||
|
||||
protected final AtomicBoolean forceStop = new AtomicBoolean(false);
|
||||
|
||||
|
@ -206,6 +214,38 @@ public class SystemHelper {
|
|||
return designJspFileNameMap.get(fileName);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public Pair<String, String>[] getDesignJspFileNames() {
|
||||
return designJspFileNameMap.entrySet().stream().map(e -> new Pair<>(e.getKey(), e.getValue())).toArray(n -> new Pair[n]);
|
||||
}
|
||||
|
||||
public void refreshDesignJspFiles() {
|
||||
final ServletContext servletContext = LaServletContextUtil.getServletContext();
|
||||
stream(ComponentUtil.getFessConfig().getVirtualHostKeys()).of(
|
||||
stream -> stream.filter(s -> s != null && !s.equals("/")).forEach(
|
||||
key -> {
|
||||
designJspFileNameMap
|
||||
.entrySet()
|
||||
.stream()
|
||||
.forEach(
|
||||
e -> {
|
||||
final File jspFile =
|
||||
new File(servletContext.getRealPath("/WEB-INF/view" + key + "/" + e.getValue()));
|
||||
if (!jspFile.exists()) {
|
||||
jspFile.getParentFile().mkdirs();
|
||||
final File baseJspFile =
|
||||
new File(servletContext.getRealPath("/WEB-INF/view/" + e.getValue()));
|
||||
try {
|
||||
Files.copy(baseJspFile.toPath(), jspFile.toPath());
|
||||
} catch (IOException ex) {
|
||||
logger.warn("Could not copy from " + baseJspFile.getAbsolutePath() + " to "
|
||||
+ jspFile.getAbsolutePath(), ex);
|
||||
}
|
||||
}
|
||||
});
|
||||
}));
|
||||
}
|
||||
|
||||
public boolean isForceStop() {
|
||||
return forceStop.get();
|
||||
}
|
||||
|
|
|
@ -1615,23 +1615,8 @@ public interface FessProp {
|
|||
return getVirtualHostHeaders();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public default <T> T processVirtualHost(final Function<String, T> func, final T defaultValue) {
|
||||
Tuple3<String, String, String>[] hosts = (Tuple3<String, String, String>[]) propMap.get(VIRTUAL_HOST_HEADERS);
|
||||
if (hosts == null) {
|
||||
hosts = split(getVirtualHostHeaderValue(), "\n").get(stream -> stream.map(s -> {
|
||||
final String[] v1 = s.split("=");
|
||||
if (v1.length == 2) {
|
||||
final String[] v2 = v1[0].split(":");
|
||||
if (v2.length == 2) {
|
||||
return new Tuple3<>(v2[0].trim(), v2[0].trim(), "/" + v1[1].trim());
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}).filter(v -> v != null).toArray(n -> new Tuple3[n]));
|
||||
propMap.put(VIRTUAL_HOST_HEADERS, hosts);
|
||||
}
|
||||
final Tuple3<String, String, String>[] vHosts = hosts;
|
||||
final Tuple3<String, String, String>[] vHosts = getVirtualHosts();
|
||||
return LaRequestUtil.getOptionalRequest().map(req -> {
|
||||
for (final Tuple3<String, String, String> host : vHosts) {
|
||||
final String headerValue = req.getHeader(host.getValue1());
|
||||
|
@ -1643,6 +1628,44 @@ public interface FessProp {
|
|||
}).orElse(defaultValue);
|
||||
}
|
||||
|
||||
public default String[] getVirtualHostKeys() {
|
||||
return stream(getVirtualHosts()).get(stream -> stream.map(h -> h.getValue3()).toArray(n -> new String[n]));
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public default Tuple3<String, String, String>[] getVirtualHosts() {
|
||||
Tuple3<String, String, String>[] hosts = (Tuple3<String, String, String>[]) propMap.get(VIRTUAL_HOST_HEADERS);
|
||||
if (hosts == null) {
|
||||
hosts =
|
||||
split(getVirtualHostHeaderValue(), "\n").get(
|
||||
stream -> stream
|
||||
.map(s -> {
|
||||
final String[] v1 = s.split("=");
|
||||
if (v1.length == 2) {
|
||||
final String[] v2 = v1[0].split(":");
|
||||
if (v2.length == 2) {
|
||||
return new Tuple3<>(v2[0].trim(), v2[0].trim(), "/"
|
||||
+ v1[1].replaceAll("[^a-zA-Z0-9_]", StringUtil.EMPTY).trim());
|
||||
}
|
||||
}
|
||||
return null;
|
||||
})
|
||||
.filter(v -> {
|
||||
if (v == null) {
|
||||
return false;
|
||||
}
|
||||
if ("/admin".equalsIgnoreCase(v.getValue3()) || "/common".equalsIgnoreCase(v.getValue3())
|
||||
|| "/error".equalsIgnoreCase(v.getValue3()) || "/login".equalsIgnoreCase(v.getValue3())
|
||||
|| "/profile".equalsIgnoreCase(v.getValue3())) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}).toArray(n -> new Tuple3[n]));
|
||||
propMap.put(VIRTUAL_HOST_HEADERS, hosts);
|
||||
}
|
||||
return hosts;
|
||||
}
|
||||
|
||||
String getCrawlerFailureUrlStatusCodes();
|
||||
|
||||
public default boolean isCrawlerFailureUrlStatusCodes(final int code) {
|
||||
|
|
|
@ -490,22 +490,6 @@ labels.design_edit_button=Edit
|
|||
labels.design_download_button=Download
|
||||
labels.design_delete_button=Delete
|
||||
labels.design_use_default_button=Use Default
|
||||
labels.design_file_index=Top Page
|
||||
labels.design_file_footer=Footer
|
||||
labels.design_file_search=Results Page (Frame)
|
||||
labels.design_file_searchResults=Results Page (Content)
|
||||
labels.design_file_searchNoResult=Results Page (No Result)
|
||||
labels.design_file_searchOptions=Search Options Page
|
||||
labels.design_file_help=Help Page (Content)
|
||||
labels.design_file_header=Header
|
||||
labels.design_file_error=Search Error Page
|
||||
labels.design_file_cache=Cache Page
|
||||
labels.design_file_errorNotFound=Error Page (Not Found)
|
||||
labels.design_file_errorSystem=Error Page (System Error)
|
||||
labels.design_file_errorRedirect=Error Page (Redirect)
|
||||
labels.design_file_errorBadRequest=Error Page (BadRequest)
|
||||
labels.design_file_login=Login Page
|
||||
labels.design_file_profile=Profile Page
|
||||
labels.design_title_edit_content=Edit JSP File
|
||||
labels.design_button_update=Update
|
||||
labels.design_button_back=Back
|
||||
|
|
|
@ -490,22 +490,6 @@ labels.design_edit_button=Edit
|
|||
labels.design_download_button=Download
|
||||
labels.design_delete_button=Delete
|
||||
labels.design_use_default_button=Use Default
|
||||
labels.design_file_index=Top Page
|
||||
labels.design_file_footer=Footer
|
||||
labels.design_file_search=Results Page (Frame)
|
||||
labels.design_file_searchResults=Results Page (Content)
|
||||
labels.design_file_searchNoResult=Results Page (No Result)
|
||||
labels.design_file_searchOptions=Search Options Page
|
||||
labels.design_file_help=Help Page (Content)
|
||||
labels.design_file_header=Header
|
||||
labels.design_file_error=Search Error Page
|
||||
labels.design_file_cache=Cache Page
|
||||
labels.design_file_errorNotFound=Error Page (Not Found)
|
||||
labels.design_file_errorSystem=Error Page (System Error)
|
||||
labels.design_file_errorRedirect=Error Page (Redirect)
|
||||
labels.design_file_errorBadRequest=Error Page (BadRequest)
|
||||
labels.design_file_login=Login Page
|
||||
labels.design_file_profile=Profile Page
|
||||
labels.design_title_edit_content=Edit JSP File
|
||||
labels.design_button_update=Update
|
||||
labels.design_button_back=Back
|
||||
|
|
|
@ -483,22 +483,6 @@ labels.design_edit_button=\u7de8\u96c6
|
|||
labels.design_download_button=\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9
|
||||
labels.design_delete_button=\u524a\u9664
|
||||
labels.design_use_default_button=\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u4f7f\u7528
|
||||
labels.design_file_index=\u30c8\u30c3\u30d7\u30da\u30fc\u30b8
|
||||
labels.design_file_footer=\u30d5\u30c3\u30bf\u30fc
|
||||
labels.design_file_search=\u691c\u7d22\u7d50\u679c\u30da\u30fc\u30b8 (\u30d5\u30ec\u30fc\u30e0)
|
||||
labels.design_file_searchResults=\u691c\u7d22\u7d50\u679c\u30da\u30fc\u30b8 (\u30b3\u30f3\u30c6\u30f3\u30c4)
|
||||
labels.design_file_searchNoResult=\u691c\u7d22\u7d50\u679c\u30da\u30fc\u30b8 (\u7d50\u679c\u306a\u3057)
|
||||
labels.design_file_searchOptions=\u691c\u7d22\u30aa\u30d7\u30b7\u30e7\u30f3\u30da\u30fc\u30b8
|
||||
labels.design_file_help=\u30d8\u30eb\u30d7\u30da\u30fc\u30b8 (\u30b3\u30f3\u30c6\u30f3\u30c4)
|
||||
labels.design_file_header=\u30d8\u30c3\u30c0\u30fc
|
||||
labels.design_file_error=\u691c\u7d22\u30a8\u30e9\u30fc\u30da\u30fc\u30b8
|
||||
labels.design_file_cache=\u30ad\u30e3\u30c3\u30b7\u30e5\u30da\u30fc\u30b8
|
||||
labels.design_file_errorNotFound=\u30a8\u30e9\u30fc\u30da\u30fc\u30b8 (\u898b\u3064\u304b\u308a\u307e\u305b\u3093)
|
||||
labels.design_file_errorSystem=\u30a8\u30e9\u30fc\u30da\u30fc\u30b8 (\u30b7\u30b9\u30c6\u30e0\u30a8\u30e9\u30fc)
|
||||
labels.design_file_errorRedirect=\u30a8\u30e9\u30fc\u30da\u30fc\u30b8 (\u30ea\u30c0\u30a4\u30ec\u30af\u30c8)
|
||||
labels.design_file_errorBadRequest=\u30a8\u30e9\u30fc\u30da\u30fc\u30b8 (BadRequest)
|
||||
labels.design_file_login=\u30ed\u30b0\u30a4\u30f3\u30da\u30fc\u30b8
|
||||
labels.design_file_profile=\u8a2d\u5b9a\u30da\u30fc\u30b8
|
||||
labels.design_title_edit_content=\u30da\u30fc\u30b8\u306e\u7de8\u96c6\u30d5\u30a1\u30a4\u30eb\u306e\u8868\u793a
|
||||
labels.design_button_update=\u66f4\u65b0
|
||||
labels.design_button_back=\u623b\u308b
|
||||
|
|
|
@ -472,22 +472,6 @@ labels.design_edit_button = \ud3b8\uc9d1
|
|||
labels.design_download_button = \ub2e4\uc6b4\ub85c\ub4dc
|
||||
labels.design_delete_button = \uc0ad\uc81c
|
||||
labels.design_use_default_button = \uae30\ubcf8 \uc0ac\uc6a9
|
||||
labels.design_file_index = \uc0c1\ub2e8 \ud398\uc774\uc9c0
|
||||
labels.design_file_footer = \ud398\uc774\uc9c0 \ud558\ub2e8
|
||||
labels.design_file_search = \uac80\uc0c9 \uacb0\uacfc \ud398\uc774\uc9c0 (\ud504\ub808\uc784)
|
||||
labels.design_file_searchResults = \uac80\uc0c9 \uacb0\uacfc \ud398\uc774\uc9c0 (\ucee8\ud150\uce20)
|
||||
labels.design_file_searchNoResult = \uac80\uc0c9 \uacb0\uacfc \ud398\uc774\uc9c0 (\uacb0\uacfc \uc5c6\uc74c)
|
||||
labels.design_file_searchOptions = \uac80\uc0c9 \ud398\uc774\uc9c0
|
||||
labels.design_file_help = \ub3c4\uc6c0\ub9d0 \ud398\uc774\uc9c0 (\ucee8\ud150\uce20)
|
||||
labels.design_file_header = \ud5e4\ub354
|
||||
labels.design_file_error = \uac80\uc0c9 \uc5d0\ub7ec \ud398\uc774\uc9c0
|
||||
labels.design_file_cache = \uce90\uc2dc \ud398\uc774\uc9c0
|
||||
labels.design_file_errorNotFound = \uc5d0\ub7ec \ud398\uc774\uc9c0 (Not Found)
|
||||
labels.design_file_errorSystem = \uc5d0\ub7ec \ud398\uc774\uc9c0 (\uc2dc\uc2a4\ud15c \uc624\ub958)
|
||||
labels.design_file_errorRedirect = \uc5d0\ub7ec \ud398\uc774\uc9c0 (Redirect)
|
||||
labels.design_file_errorBadRequest = \uc5d0\ub7ec \ud398\uc774\uc9c0 (BadRequest)
|
||||
labels.design_file_login = \ub85c\uadf8\uc778 \ud398\uc774\uc9c0
|
||||
labels.design_file_profile = \uc124\uc815 \ud398\uc774\uc9c0
|
||||
labels.design_title_edit_content = \ud398\uc774\uc9c0 \ud3b8\uc9d1 \ud30c\uc77c\ubcf4\uae30
|
||||
labels.design_button_update = \uc5c5\ub370\uc774\ud2b8
|
||||
labels.design_button_back = \ub3cc\uc544\uac00\uae30
|
||||
|
|
|
@ -474,21 +474,6 @@ labels.design_edit_button=Edit
|
|||
labels.design_download_button=Download
|
||||
labels.design_delete_button=Delete
|
||||
labels.design_use_default_button=Use Default
|
||||
labels.design_file_index=Top Page
|
||||
labels.design_file_footer=Footer
|
||||
labels.design_file_search=Results Page (Frame)
|
||||
labels.design_file_searchResults=Results Page (Content)
|
||||
labels.design_file_searchNoResult=Results Page (No Result)
|
||||
labels.design_file_help=Help Page (Content)
|
||||
labels.design_file_header=Header
|
||||
labels.design_file_error=Search Error Page
|
||||
labels.design_file_cache=Cache Page
|
||||
labels.design_file_errorNotFound=Error Page (Not Found)
|
||||
labels.design_file_errorSystem=Error Page (System Error)
|
||||
labels.design_file_errorRedirect=Error Page (Redirect)
|
||||
labels.design_file_errorBadRequest=Error Page (BadRequest)
|
||||
labels.design_file_login=Login Page
|
||||
labels.design_file_profile=Profile Page
|
||||
labels.design_title_edit_content=Edit JSP File
|
||||
labels.design_button_update=Update
|
||||
labels.design_button_back=Back
|
||||
|
|
|
@ -109,57 +109,9 @@
|
|||
<div class="form-group">
|
||||
<la:errors property="fileName" />
|
||||
<la:select styleId="fileName" property="fileName" styleClass="form-control">
|
||||
<la:option value="index">
|
||||
<la:message key="labels.design_file_index" />
|
||||
</la:option>
|
||||
<la:option value="header">
|
||||
<la:message key="labels.design_file_header" />
|
||||
</la:option>
|
||||
<la:option value="footer">
|
||||
<la:message key="labels.design_file_footer" />
|
||||
</la:option>
|
||||
<la:option value="search">
|
||||
<la:message key="labels.design_file_search" />
|
||||
</la:option>
|
||||
<la:option value="searchResults">
|
||||
<la:message key="labels.design_file_searchResults" />
|
||||
</la:option>
|
||||
<la:option value="searchNoResult">
|
||||
<la:message key="labels.design_file_searchNoResult" />
|
||||
</la:option>
|
||||
<la:option value="searchOptions">
|
||||
<la:message key="labels.design_file_searchOptions" />
|
||||
</la:option>
|
||||
<la:option value="help">
|
||||
<la:message key="labels.design_file_help" />
|
||||
</la:option>
|
||||
<la:option value="cache">
|
||||
<la:message key="labels.design_file_cache" />
|
||||
</la:option>
|
||||
<%-- Error --%>
|
||||
<la:option value="error">
|
||||
<la:message key="labels.design_file_error" />
|
||||
</la:option>
|
||||
<la:option value="errorNotFound">
|
||||
<la:message key="labels.design_file_errorNotFound" />
|
||||
</la:option>
|
||||
<la:option value="errorSystem">
|
||||
<la:message key="labels.design_file_errorSystem" />
|
||||
</la:option>
|
||||
<la:option value="errorRedirect">
|
||||
<la:message key="labels.design_file_errorRedirect" />
|
||||
</la:option>
|
||||
<la:option value="errorBadRequest">
|
||||
<la:message key="labels.design_file_errorBadRequest" />
|
||||
</la:option>
|
||||
<%-- Login --%>
|
||||
<la:option value="login">
|
||||
<la:message key="labels.design_file_login" />
|
||||
</la:option>
|
||||
<%-- Profile --%>
|
||||
<la:option value="profile">
|
||||
<la:message key="labels.design_file_profile" />
|
||||
</la:option>
|
||||
<c:forEach var="item" items="${jspFileNameItems}">
|
||||
<la:option value="${f:u(item.first)}">${f:h(item.second)}</la:option>
|
||||
</c:forEach>
|
||||
</la:select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
</div>
|
||||
<!-- /.box-header -->
|
||||
<div class="box-body">
|
||||
<h4>${f:h(fileName)}</h4>
|
||||
<h4>${f:h(displayFileName)}</h4>
|
||||
<div>
|
||||
<la:errors property="content" />
|
||||
<la:textarea styleId="content" property="content" rows="20"
|
||||
|
|
Loading…
Add table
Reference in a new issue