diff --git a/modules/frontend/frontend-js-web/.classpath b/modules/frontend/frontend-js-web/.classpath
new file mode 100644
index 00000000000000..3fbf8eec37623a
--- /dev/null
+++ b/modules/frontend/frontend-js-web/.classpath
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/frontend/frontend-js-web/.project b/modules/frontend/frontend-js-web/.project
new file mode 100644
index 00000000000000..62221bd462d82e
--- /dev/null
+++ b/modules/frontend/frontend-js-web/.project
@@ -0,0 +1,16 @@
+
+
+
+ frontend-js-web-master
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
\ No newline at end of file
diff --git a/modules/frontend/frontend-js-web/bnd.bnd b/modules/frontend/frontend-js-web/bnd.bnd
new file mode 100644
index 00000000000000..857d2cdcc89dd3
--- /dev/null
+++ b/modules/frontend/frontend-js-web/bnd.bnd
@@ -0,0 +1,89 @@
+Bundle-Name: Liferay Frontend JS Web
+Bundle-SymbolicName: com.liferay.frontend.js.web
+Bundle-Version: 1.0.0
+Import-Package:\
+ com.liferay.portal,\
+ com.liferay.portal.kernel.bean,\
+ com.liferay.portal.kernel.cal,\
+ com.liferay.portal.kernel.captcha,\
+ com.liferay.portal.kernel.configuration,\
+ com.liferay.portal.kernel.dao.orm,\
+ com.liferay.portal.kernel.dao.search,\
+ com.liferay.portal.kernel.exception,\
+ com.liferay.portal.kernel.json,\
+ com.liferay.portal.kernel.language,\
+ com.liferay.portal.kernel.lar,\
+ com.liferay.portal.kernel.log,\
+ com.liferay.portal.kernel.messaging,\
+ com.liferay.portal.kernel.plugin,\
+ com.liferay.portal.kernel.portlet,\
+ com.liferay.portal.kernel.repository.model,\
+ com.liferay.portal.kernel.search,\
+ com.liferay.portal.kernel.servlet,\
+ com.liferay.portal.kernel.servlet.taglib.ui,\
+ com.liferay.portal.kernel.settings,\
+ com.liferay.portal.kernel.staging,\
+ com.liferay.portal.kernel.template,\
+ com.liferay.portal.kernel.upload,\
+ com.liferay.portal.kernel.util,\
+ com.liferay.portal.kernel.web,\
+ com.liferay.portal.kernel.workflow,\
+ com.liferay.portal.kernel.xuggler,\
+ com.liferay.portal.layoutconfiguration.util,\
+ com.liferay.portal.model,\
+ com.liferay.portal.model.impl,\
+ com.liferay.portal.plugin,\
+ com.liferay.portal.portletfilerepository,\
+ com.liferay.portal.security.auth,\
+ com.liferay.portal.security.permission,\
+ com.liferay.portal.security.sso,\
+ com.liferay.portal.service,\
+ com.liferay.portal.service.permission,\
+ com.liferay.portal.struts,\
+ com.liferay.portal.theme,\
+ com.liferay.portal.upload,\
+ com.liferay.portal.util,\
+ com.liferay.portal.util.comparator,\
+ com.liferay.portal.webserver,\
+ com.liferay.portlet,\
+ com.liferay.portlet.asset,\
+ com.liferay.portlet.asset.model,\
+ com.liferay.portlet.asset.service,\
+ com.liferay.portlet.asset.service.persistence,\
+ com.liferay.portlet.asset.util,\
+ com.liferay.portlet.blogs.model,\
+ com.liferay.portlet.documentlibrary,\
+ com.liferay.portlet.documentlibrary.antivirus,\
+ com.liferay.portlet.documentlibrary.model,\
+ com.liferay.portlet.documentlibrary.service,\
+ com.liferay.portlet.documentlibrary.util,\
+ com.liferay.portlet.dynamicdatamapping,\
+ com.liferay.portlet.dynamicdatamapping.model,\
+ com.liferay.portlet.dynamicdatamapping.service.permission,\
+ com.liferay.portlet.dynamicdatamapping.storage,\
+ com.liferay.portlet.expando.model,\
+ com.liferay.portlet.journal,\
+ com.liferay.portlet.journal.model,\
+ com.liferay.portlet.journal.service,\
+ com.liferay.portlet.journal.util,\
+ com.liferay.portlet.messageboards.model,\
+ com.liferay.portlet.messageboards.service,\
+ com.liferay.portlet.messageboards.util,\
+ com.liferay.portlet.ratings,\
+ com.liferay.portlet.ratings.transformer,\
+ com.liferay.portlet.rolesadmin.util,\
+ com.liferay.portlet.trash.model,\
+ com.liferay.portlet.trash.util,\
+ com.liferay.portlet.usergroupsadmin.search,\
+ com.liferay.portlet.usersadmin.util,\
+ *
+Include-Resource:\
+ classes,\
+ META-INF/resources=src/META-INF/resources,\
+ META-INF/resources/html/js=tmp,\
+ @../../../util-java/util-java.jar!/com/liferay/util/Encryptor.class,\
+ @../../../util-java/util-java.jar!/com/liferay/util/EncryptorException.class
+
+Web-ContextPath: /frontend-js-web
+
+-donotcopy: (\.touch|.*_diffs.*)
\ No newline at end of file
diff --git a/modules/frontend/frontend-js-web/build.gradle b/modules/frontend/frontend-js-web/build.gradle
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/modules/frontend/frontend-js-web/build.xml b/modules/frontend/frontend-js-web/build.xml
new file mode 100644
index 00000000000000..47cd84ee31ef14
--- /dev/null
+++ b/modules/frontend/frontend-js-web/build.xml
@@ -0,0 +1,286 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${alloy.file}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${alloyeditor.file}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/frontend/frontend-js-web/ivy.xml b/modules/frontend/frontend-js-web/ivy.xml
new file mode 100644
index 00000000000000..d6b985c7b6f9ab
--- /dev/null
+++ b/modules/frontend/frontend-js-web/ivy.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/portal-web/docroot/html/js/barebone.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/barebone.jsp
similarity index 100%
rename from portal-web/docroot/html/js/barebone.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/barebone.jsp
diff --git a/portal-web/docroot/html/js/editor/alloyeditor.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/alloyeditor.jsp
similarity index 98%
rename from portal-web/docroot/html/js/editor/alloyeditor.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/alloyeditor.jsp
index c54b4f6dd7f1ef..8ae6fc09cfcd83 100644
--- a/portal-web/docroot/html/js/editor/alloyeditor.jsp
+++ b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/alloyeditor.jsp
@@ -14,7 +14,7 @@
*/
--%>
-<%@ include file="/html/taglib/init.jsp" %>
+<%@ include file="/html/js/editor/init.jsp" %>
<%
String portletId = portletDisplay.getRootPortletId();
@@ -74,7 +74,7 @@ boolean skipEditorLoading = GetterUtil.getBoolean((String)request.getAttribute("
" rel="stylesheet" type="text/css" />
<%
- long javaScriptLastModified = ServletContextUtil.getLastModified(application, "/html/js/", true);
+ long javaScriptLastModified = PortalWebResourcesUtil.getLastModified();
%>
diff --git a/portal-web/docroot/html/js/editor/alloyeditor_diffs/buttons/button_image_selector.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/alloyeditor_diffs/buttons/button_image_selector.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/alloyeditor_diffs/buttons/button_image_selector.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/alloyeditor_diffs/buttons/button_image_selector.js
diff --git a/portal-web/docroot/html/js/editor/bbcode.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/bbcode.jsp
similarity index 95%
rename from portal-web/docroot/html/js/editor/bbcode.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/bbcode.jsp
index ac8da7a1b32f0a..ce7c9e1bccc6dd 100644
--- a/portal-web/docroot/html/js/editor/bbcode.jsp
+++ b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/bbcode.jsp
@@ -14,7 +14,7 @@
*/
--%>
-<%@ include file="/html/taglib/init.jsp" %>
+<%@ include file="/html/js/editor/init.jsp" %>
<%
String cssClass = GetterUtil.getString((String)request.getAttribute("liferay-ui:input-editor:cssClass"));
diff --git a/portal-web/docroot/html/js/editor/ckeditor.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor.jsp
similarity index 95%
rename from portal-web/docroot/html/js/editor/ckeditor.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor.jsp
index 558dca5c9699f8..5401bcd6727139 100644
--- a/portal-web/docroot/html/js/editor/ckeditor.jsp
+++ b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor.jsp
@@ -14,7 +14,7 @@
*/
--%>
-<%@ include file="/html/taglib/init.jsp" %>
+<%@ include file="/html/js/editor/init.jsp" %>
<%
LiferayPortletResponse liferayPortletResponse = (LiferayPortletResponse)portletResponse;
@@ -463,7 +463,7 @@ if (inlineEdit && Validator.isNotNull(inlineEditSaveURL)) {
CKEDITOR.<%= inlineEdit ? "inline" : "replace" %>(
'<%= name %>',
{
- customConfig: '<%= PortalUtil.getPathContext() %>/html/js/editor/ckeditor/<%= HtmlUtil.escapeJS(ckEditorConfigFileName) %>?p_p_id=<%= HttpUtil.encodeURL(portletId) %>&p_main_path=<%= HttpUtil.encodeURL(mainPath) %>&contentsLanguageId=<%= HttpUtil.encodeURL(contentsLanguageId) %>&colorSchemeCssClass=<%= HttpUtil.encodeURL(themeDisplay.getColorScheme().getCssClass()) %>&cssClasses=<%= HttpUtil.encodeURL(cssClasses) %>&cssPath=<%= HttpUtil.encodeURL(themeDisplay.getPathThemeCss()) %>&doAsGroupId=<%= HttpUtil.encodeURL(String.valueOf(doAsGroupId)) %>&doAsUserId=<%= HttpUtil.encodeURL(doAsUserId) %>&imagesPath=<%= HttpUtil.encodeURL(themeDisplay.getPathThemeImages()) %>&inlineEdit=<%= inlineEdit %><%= configParams %>&languageId=<%= HttpUtil.encodeURL(LocaleUtil.toLanguageId(locale)) %>&name=<%= name %>&resizable=<%= resizable %>&showSource=<%= showSource %>',
+ customConfig: '<%= themeDisplay.getPathJavaScript() %>/editor/ckeditor/<%= HtmlUtil.escapeJS(ckEditorConfigFileName) %>?p_p_id=<%= HttpUtil.encodeURL(portletId) %>&p_main_path=<%= HttpUtil.encodeURL(mainPath) %>&contentsLanguageId=<%= HttpUtil.encodeURL(contentsLanguageId) %>&colorSchemeCssClass=<%= HttpUtil.encodeURL(themeDisplay.getColorScheme().getCssClass()) %>&cssClasses=<%= HttpUtil.encodeURL(cssClasses) %>&cssPath=<%= HttpUtil.encodeURL(themeDisplay.getPathThemeCss()) %>&doAsGroupId=<%= HttpUtil.encodeURL(String.valueOf(doAsGroupId)) %>&doAsUserId=<%= HttpUtil.encodeURL(doAsUserId) %>&imagesPath=<%= HttpUtil.encodeURL(themeDisplay.getPathThemeImages()) %>&inlineEdit=<%= inlineEdit %><%= configParams %>&languageId=<%= HttpUtil.encodeURL(LocaleUtil.toLanguageId(locale)) %>&name=<%= name %>&resizable=<%= resizable %>&showSource=<%= showSource %>',
filebrowserBrowseUrl: filebrowserBrowseUrl,
filebrowserFlashBrowseUrl: filebrowserFlashBrowseUrl,
filebrowserImageBrowseLinkUrl: filebrowserImageBrowseLinkUrl,
diff --git a/portal-web/docroot/html/js/editor/ckeditor_bbcode.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_bbcode.jsp
similarity index 78%
rename from portal-web/docroot/html/js/editor/ckeditor_bbcode.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_bbcode.jsp
index 2350174ada89eb..f6ed07077db047 100644
--- a/portal-web/docroot/html/js/editor/ckeditor_bbcode.jsp
+++ b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_bbcode.jsp
@@ -16,6 +16,8 @@
<%@ taglib uri="http://liferay.com/tld/util" prefix="liferay-util" %>
-
+<%@ page import="com.liferay.portal.kernel.servlet.PortalWebResourcesUtil" %>
+
+
\ No newline at end of file
diff --git a/portal-web/docroot/html/js/editor/ckeditor_creole.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_creole.jsp
similarity index 79%
rename from portal-web/docroot/html/js/editor/ckeditor_creole.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_creole.jsp
index bfa092401c6e29..7a4ee15f3ced77 100644
--- a/portal-web/docroot/html/js/editor/ckeditor_creole.jsp
+++ b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_creole.jsp
@@ -16,7 +16,9 @@
<%@ taglib uri="http://liferay.com/tld/util" prefix="liferay-util" %>
-
+<%@ page import="com.liferay.portal.kernel.servlet.PortalWebResourcesUtil" %>
+
+
\ No newline at end of file
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/ckconfig-ext.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/ckconfig-ext.jsp
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/ckconfig-ext.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/ckconfig-ext.jsp
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/ckconfig.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/ckconfig.jsp
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/ckconfig.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/ckconfig.jsp
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/ckconfig_bbcode-ext.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/ckconfig_bbcode-ext.jsp
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/ckconfig_bbcode-ext.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/ckconfig_bbcode-ext.jsp
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/ckconfig_bbcode.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/ckconfig_bbcode.jsp
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/ckconfig_bbcode.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/ckconfig_bbcode.jsp
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/ckconfig_creole-ext.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/ckconfig_creole-ext.jsp
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/ckconfig_creole-ext.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/ckconfig_creole-ext.jsp
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/ckconfig_creole.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/ckconfig_creole.jsp
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/ckconfig_creole.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/ckconfig_creole.jsp
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/main.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/main.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/main.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/main.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/a11yhelpbtn/plugin.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/a11yhelpbtn/plugin.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/a11yhelpbtn/plugin.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/a11yhelpbtn/plugin.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/ajaxsave/assets/save.png b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/ajaxsave/assets/save.png
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/ajaxsave/assets/save.png
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/ajaxsave/assets/save.png
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/ajaxsave/plugin.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/ajaxsave/plugin.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/ajaxsave/plugin.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/ajaxsave/plugin.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/autocomplete/autocomplete.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/autocomplete/autocomplete.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/autocomplete/autocomplete.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/autocomplete/autocomplete.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/autocomplete/plugin.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/autocomplete/plugin.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/autocomplete/plugin.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/autocomplete/plugin.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/bbcode/bbcode_data_processor.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/bbcode/bbcode_data_processor.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/bbcode/bbcode_data_processor.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/bbcode/bbcode_data_processor.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/bbcode/bbcode_parser.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/bbcode/bbcode_parser.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/bbcode/bbcode_parser.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/bbcode/bbcode_parser.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/bbcode/bbcode_utils.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/bbcode/bbcode_utils.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/bbcode/bbcode_utils.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/bbcode/bbcode_utils.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/bbcode/converter.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/bbcode/converter.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/bbcode/converter.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/bbcode/converter.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/bbcode/lexer.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/bbcode/lexer.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/bbcode/lexer.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/bbcode/lexer.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/bbcode/parser.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/bbcode/parser.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/bbcode/parser.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/bbcode/parser.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/bbcode/plugin.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/bbcode/plugin.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/bbcode/plugin.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/bbcode/plugin.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/creole/creole_data_processor.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/creole/creole_data_processor.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/creole/creole_data_processor.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/creole/creole_data_processor.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/creole/creole_parser.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/creole/creole_parser.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/creole/creole_parser.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/creole/creole_parser.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/creole/plugin.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/creole/plugin.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/creole/plugin.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/creole/plugin.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/lfrpopup/plugin.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/lfrpopup/plugin.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/lfrpopup/plugin.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/lfrpopup/plugin.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/media/dialogs/audio.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/media/dialogs/audio.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/media/dialogs/audio.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/media/dialogs/audio.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/media/dialogs/video.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/media/dialogs/video.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/media/dialogs/video.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/media/dialogs/video.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/media/icons/icon_audio.png b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/media/icons/icon_audio.png
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/media/icons/icon_audio.png
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/media/icons/icon_audio.png
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/media/icons/icon_video.png b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/media/icons/icon_video.png
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/media/icons/icon_video.png
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/media/icons/icon_video.png
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/media/icons/placeholder_audio.png b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/media/icons/placeholder_audio.png
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/media/icons/placeholder_audio.png
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/media/icons/placeholder_audio.png
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/media/icons/placeholder_video.png b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/media/icons/placeholder_video.png
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/media/icons/placeholder_video.png
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/media/icons/placeholder_video.png
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/media/plugin.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/media/plugin.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/media/plugin.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/media/plugin.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/restore/assets/restore.png b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/restore/assets/restore.png
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/restore/assets/restore.png
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/restore/assets/restore.png
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/restore/plugin.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/restore/plugin.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/restore/plugin.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/restore/plugin.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/wikilink/dialogs/link.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/wikilink/dialogs/link.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/wikilink/dialogs/link.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/wikilink/dialogs/link.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/wikilink/plugin.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/wikilink/plugin.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_diffs/plugins/wikilink/plugin.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_diffs/plugins/wikilink/plugin.js
diff --git a/portal-web/docroot/html/js/editor/ckeditor_init.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_init.jsp
similarity index 100%
rename from portal-web/docroot/html/js/editor/ckeditor_init.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/ckeditor_init.jsp
diff --git a/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/init.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/init.jsp
new file mode 100644
index 00000000000000..b01462ff0c9d27
--- /dev/null
+++ b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/init.jsp
@@ -0,0 +1,83 @@
+<%--
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+
+<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
+
+<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui" %>
+<%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet" %>
+<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %>
+<%@ taglib uri="http://liferay.com/tld/util" prefix="liferay-util" %>
+
+<%@ page import="com.liferay.portal.kernel.json.JSONObject" %><%@
+page import="com.liferay.portal.kernel.language.LanguageUtil" %><%@
+page import="com.liferay.portal.kernel.portlet.LiferayPortletResponse" %><%@
+page import="com.liferay.portal.kernel.portlet.LiferayWindowState" %><%@
+page import="com.liferay.portal.kernel.servlet.PortalWebResourcesUtil" %><%@
+page import="com.liferay.portal.kernel.servlet.ServletContextUtil" %><%@
+page import="com.liferay.portal.kernel.util.GetterUtil" %><%@
+page import="com.liferay.portal.kernel.util.HtmlUtil" %><%@
+page import="com.liferay.portal.kernel.util.HttpUtil" %><%@
+page import="com.liferay.portal.kernel.util.JavaConstants" %><%@
+page import="com.liferay.portal.kernel.util.LocaleUtil" %><%@
+page import="com.liferay.portal.kernel.util.ParamUtil" %><%@
+page import="com.liferay.portal.kernel.util.SetUtil" %><%@
+page import="com.liferay.portal.kernel.util.StringBundler" %><%@
+page import="com.liferay.portal.kernel.util.StringPool" %><%@
+page import="com.liferay.portal.kernel.util.TextFormatter" %><%@
+page import="com.liferay.portal.kernel.util.UnicodeFormatter" %><%@
+page import="com.liferay.portal.kernel.util.Validator" %><%@
+page import="com.liferay.portal.util.PortalUtil" %><%@
+page import="com.liferay.portal.util.PortletKeys" %><%@
+page import="com.liferay.portal.util.SessionClicks" %><%@
+page import="com.liferay.portlet.PortletURLUtil" %><%@
+page import="com.liferay.util.Encryptor" %>
+
+<%@ page import="java.util.Locale" %><%@
+page import="java.util.Map" %><%@
+page import="java.util.Set" %>
+
+<%@ page import="javax.portlet.PortletRequest" %><%@
+page import="javax.portlet.PortletResponse" %><%@
+page import="javax.portlet.PortletURL" %>
+
+
+
+<%
+PortletRequest portletRequest = (PortletRequest)request.getAttribute(JavaConstants.JAVAX_PORTLET_REQUEST);
+
+PortletResponse portletResponse = (PortletResponse)request.getAttribute(JavaConstants.JAVAX_PORTLET_RESPONSE);
+
+String namespace = StringPool.BLANK;
+
+boolean auiFormUseNamespace = GetterUtil.getBoolean((String)request.getAttribute("aui:form:useNamespace"), true);
+
+if ((portletResponse != null) && auiFormUseNamespace) {
+ namespace = GetterUtil.getString(request.getAttribute("aui:form:portletNamespace"), portletResponse.getNamespace());
+}
+
+String currentURL = null;
+
+if ((portletRequest != null) && (portletResponse != null)) {
+ PortletURL currentURLObj = PortletURLUtil.getCurrent(PortalUtil.getLiferayPortletRequest(portletRequest), PortalUtil.getLiferayPortletResponse(portletResponse));
+
+ currentURL = currentURLObj.toString();
+}
+else {
+ currentURL = PortalUtil.getCurrentURL(request);
+}
+%>
\ No newline at end of file
diff --git a/portal-web/docroot/html/js/editor/simple.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/simple.jsp
similarity index 98%
rename from portal-web/docroot/html/js/editor/simple.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/simple.jsp
index d1585d27b389dc..e67d9334cc0c38 100644
--- a/portal-web/docroot/html/js/editor/simple.jsp
+++ b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/simple.jsp
@@ -14,7 +14,7 @@
*/
--%>
-<%@ include file="/html/taglib/init.jsp" %>
+<%@ include file="/html/js/editor/init.jsp" %>
<%
String portletId = portletDisplay.getRootPortletId();
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/ar.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/ar.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/ar.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/ar.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/bg_BG.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/bg_BG.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/bg_BG.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/bg_BG.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/ca.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/ca.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/ca.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/ca.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/cs.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/cs.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/cs.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/cs.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/de.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/de.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/de.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/de.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/el.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/el.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/el.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/el.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/en_CA.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/en_CA.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/en_CA.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/en_CA.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/en_GB.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/en_GB.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/en_GB.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/en_GB.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/es.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/es.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/es.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/es.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/et.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/et.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/et.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/et.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/eu.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/eu.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/eu.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/eu.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/fa.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/fa.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/fa.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/fa.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/fi.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/fi.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/fi.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/fi.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/fr_FR.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/fr_FR.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/fr_FR.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/fr_FR.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/gl.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/gl.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/gl.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/gl.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/he_IL.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/he_IL.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/he_IL.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/he_IL.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/hr.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/hr.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/hr.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/hr.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/hu_HU.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/hu_HU.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/hu_HU.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/hu_HU.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/id.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/id.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/id.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/id.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/it.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/it.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/it.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/it.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/ja.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/ja.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/ja.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/ja.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/ko_KR.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/ko_KR.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/ko_KR.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/ko_KR.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/lt.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/lt.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/lt.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/lt.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/nb_NO.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/nb_NO.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/nb_NO.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/nb_NO.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/nl.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/nl.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/nl.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/nl.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/pl.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/pl.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/pl.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/pl.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/pt_BR.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/pt_BR.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/pt_BR.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/pt_BR.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/pt_PT.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/pt_PT.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/pt_PT.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/pt_PT.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/ro.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/ro.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/ro.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/ro.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/ru.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/ru.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/ru.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/ru.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/sk.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/sk.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/sk.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/sk.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/sl_SI.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/sl_SI.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/sl_SI.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/sl_SI.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/sr.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/sr.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/sr.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/sr.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/sv_SE.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/sv_SE.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/sv_SE.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/sv_SE.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/tr_TR.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/tr_TR.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/tr_TR.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/tr_TR.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/uk.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/uk.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/uk.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/uk.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/vi.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/vi.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/vi.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/vi.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/zh_CN.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/zh_CN.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/zh_CN.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/zh_CN.js
diff --git a/portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/zh_TW.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/zh_TW.js
similarity index 100%
rename from portal-web/docroot/html/js/editor/tiny_mce_diffs/langs/zh_TW.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tiny_mce_diffs/langs/zh_TW.js
diff --git a/portal-web/docroot/html/js/editor/tinymce.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tinymce.jsp
similarity index 98%
rename from portal-web/docroot/html/js/editor/tinymce.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tinymce.jsp
index 34aa252daecc7f..475beb7fb063b8 100644
--- a/portal-web/docroot/html/js/editor/tinymce.jsp
+++ b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tinymce.jsp
@@ -14,7 +14,7 @@
*/
--%>
-<%@ include file="/html/taglib/init.jsp" %>
+<%@ include file="/html/js/editor/init.jsp" %>
<%
String portletId = portletDisplay.getRootPortletId();
@@ -59,7 +59,7 @@ String toolbarSet = (String)request.getAttribute("liferay-ui:input-editor:toolba
<%
- long javaScriptLastModified = ServletContextUtil.getLastModified(application, "/html/js/", true);
+ long javaScriptLastModified = PortalWebResourcesUtil.getLastModified();
%>
diff --git a/portal-web/docroot/html/js/editor/tinymce_simple.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tinymce_simple.jsp
similarity index 99%
rename from portal-web/docroot/html/js/editor/tinymce_simple.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tinymce_simple.jsp
index 5ba16855a2fe31..8245c52a839fac 100644
--- a/portal-web/docroot/html/js/editor/tinymce_simple.jsp
+++ b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tinymce_simple.jsp
@@ -14,7 +14,7 @@
*/
--%>
-<%@ include file="/html/taglib/init.jsp" %>
+<%@ include file="/html/js/editor/init.jsp" %>
<%
String portletId = portletDisplay.getRootPortletId();
diff --git a/portal-web/docroot/html/js/editor/tinymcesimple.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tinymcesimple.jsp
similarity index 100%
rename from portal-web/docroot/html/js/editor/tinymcesimple.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/editor/tinymcesimple.jsp
diff --git a/portal-web/docroot/html/js/everything.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/everything.jsp
similarity index 100%
rename from portal-web/docroot/html/js/everything.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/everything.jsp
diff --git a/portal-web/docroot/html/js/jquery/fm.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/jquery/fm.js
similarity index 100%
rename from portal-web/docroot/html/js/jquery/fm.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/jquery/fm.js
diff --git a/portal-web/docroot/html/js/jquery/form.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/jquery/form.js
similarity index 100%
rename from portal-web/docroot/html/js/jquery/form.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/jquery/form.js
diff --git a/portal-web/docroot/html/js/jquery/jquery.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/jquery/jquery.js
similarity index 100%
rename from portal-web/docroot/html/js/jquery/jquery.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/jquery/jquery.js
diff --git a/portal-web/docroot/html/js/liferay/address.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/address.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/address.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/address.js
diff --git a/portal-web/docroot/html/js/liferay/alloyeditor.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/alloyeditor.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/alloyeditor.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/alloyeditor.js
diff --git a/portal-web/docroot/html/js/liferay/alloyeditor_source.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/alloyeditor_source.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/alloyeditor_source.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/alloyeditor_source.js
diff --git a/portal-web/docroot/html/js/liferay/app_view_move.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/app_view_move.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/app_view_move.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/app_view_move.js
diff --git a/portal-web/docroot/html/js/liferay/app_view_move_touch.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/app_view_move_touch.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/app_view_move_touch.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/app_view_move_touch.js
diff --git a/portal-web/docroot/html/js/liferay/app_view_select.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/app_view_select.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/app_view_select.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/app_view_select.js
diff --git a/portal-web/docroot/html/js/liferay/asset_categories_selector.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/asset_categories_selector.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/asset_categories_selector.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/asset_categories_selector.js
diff --git a/portal-web/docroot/html/js/liferay/asset_tags_selector.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/asset_tags_selector.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/asset_tags_selector.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/asset_tags_selector.js
diff --git a/portal-web/docroot/html/js/liferay/aui_sandbox.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/aui_sandbox.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/aui_sandbox.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/aui_sandbox.js
diff --git a/portal-web/docroot/html/js/liferay/auto_fields.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/auto_fields.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/auto_fields.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/auto_fields.js
diff --git a/portal-web/docroot/html/js/liferay/autocomplete_input.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/autocomplete_input.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/autocomplete_input.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/autocomplete_input.js
diff --git a/portal-web/docroot/html/js/liferay/autocomplete_input_caretindex.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/autocomplete_input_caretindex.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/autocomplete_input_caretindex.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/autocomplete_input_caretindex.js
diff --git a/portal-web/docroot/html/js/liferay/autocomplete_input_caretindex_sel.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/autocomplete_input_caretindex_sel.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/autocomplete_input_caretindex_sel.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/autocomplete_input_caretindex_sel.js
diff --git a/portal-web/docroot/html/js/liferay/autocomplete_input_caretoffset.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/autocomplete_input_caretoffset.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/autocomplete_input_caretoffset.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/autocomplete_input_caretoffset.js
diff --git a/portal-web/docroot/html/js/liferay/autocomplete_input_caretoffset_sel.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/autocomplete_input_caretoffset_sel.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/autocomplete_input_caretoffset_sel.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/autocomplete_input_caretoffset_sel.js
diff --git a/portal-web/docroot/html/js/liferay/autocomplete_textarea.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/autocomplete_textarea.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/autocomplete_textarea.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/autocomplete_textarea.js
diff --git a/portal-web/docroot/html/js/liferay/available_languages.jsp b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/available_languages.jsp
similarity index 100%
rename from portal-web/docroot/html/js/liferay/available_languages.jsp
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/available_languages.jsp
diff --git a/portal-web/docroot/html/js/liferay/browser_selectors.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/browser_selectors.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/browser_selectors.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/browser_selectors.js
diff --git a/portal-web/docroot/html/js/liferay/cover_cropper.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/cover_cropper.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/cover_cropper.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/cover_cropper.js
diff --git a/portal-web/docroot/html/js/liferay/crop_region.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/crop_region.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/crop_region.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/crop_region.js
diff --git a/portal-web/docroot/html/js/liferay/ddm_form.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/ddm_form.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/ddm_form.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/ddm_form.js
diff --git a/portal-web/docroot/html/js/liferay/dependency.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dependency.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/dependency.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dependency.js
diff --git a/portal-web/docroot/html/js/liferay/deprecated.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/deprecated.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/deprecated.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/deprecated.js
diff --git a/portal-web/docroot/html/js/liferay/diff_version_comparator.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/diff_version_comparator.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/diff_version_comparator.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/diff_version_comparator.js
diff --git a/portal-web/docroot/html/js/liferay/dockbar.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/dockbar.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar.js
diff --git a/portal-web/docroot/html/js/liferay/dockbar_add_application.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_add_application.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/dockbar_add_application.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_add_application.js
diff --git a/portal-web/docroot/html/js/liferay/dockbar_add_base.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_add_base.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/dockbar_add_base.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_add_base.js
diff --git a/portal-web/docroot/html/js/liferay/dockbar_add_content.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_add_content.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/dockbar_add_content.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_add_content.js
diff --git a/portal-web/docroot/html/js/liferay/dockbar_add_content_drag_drop.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_add_content_drag_drop.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/dockbar_add_content_drag_drop.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_add_content_drag_drop.js
diff --git a/portal-web/docroot/html/js/liferay/dockbar_add_content_preview.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_add_content_preview.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/dockbar_add_content_preview.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_add_content_preview.js
diff --git a/portal-web/docroot/html/js/liferay/dockbar_add_content_search.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_add_content_search.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/dockbar_add_content_search.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_add_content_search.js
diff --git a/portal-web/docroot/html/js/liferay/dockbar_add_page.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_add_page.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/dockbar_add_page.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_add_page.js
diff --git a/portal-web/docroot/html/js/liferay/dockbar_add_page_search.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_add_page_search.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/dockbar_add_page_search.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_add_page_search.js
diff --git a/portal-web/docroot/html/js/liferay/dockbar_add_page_template_search.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_add_page_template_search.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/dockbar_add_page_template_search.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_add_page_template_search.js
diff --git a/portal-web/docroot/html/js/liferay/dockbar_device_preview.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_device_preview.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/dockbar_device_preview.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_device_preview.js
diff --git a/portal-web/docroot/html/js/liferay/dockbar_keyboard_interaction.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_keyboard_interaction.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/dockbar_keyboard_interaction.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_keyboard_interaction.js
diff --git a/portal-web/docroot/html/js/liferay/dockbar_portlet_dd.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_portlet_dd.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/dockbar_portlet_dd.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_portlet_dd.js
diff --git a/portal-web/docroot/html/js/liferay/dockbar_underlay.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_underlay.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/dockbar_underlay.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dockbar_underlay.js
diff --git a/portal-web/docroot/html/js/liferay/dynamic_select.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dynamic_select.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/dynamic_select.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/dynamic_select.js
diff --git a/portal-web/docroot/html/js/liferay/editor_image_uploader.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/editor_image_uploader.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/editor_image_uploader.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/editor_image_uploader.js
diff --git a/portal-web/docroot/html/js/liferay/events.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/events.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/events.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/events.js
diff --git a/portal-web/docroot/html/js/liferay/form.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/form.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/form.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/form.js
diff --git a/portal-web/docroot/html/js/liferay/form_placeholders.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/form_placeholders.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/form_placeholders.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/form_placeholders.js
diff --git a/portal-web/docroot/html/js/liferay/fullscreen_source_editor.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/fullscreen_source_editor.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/fullscreen_source_editor.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/fullscreen_source_editor.js
diff --git a/portal-web/docroot/html/js/liferay/history.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/history.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/history.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/history.js
diff --git a/portal-web/docroot/html/js/liferay/history_html5.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/history_html5.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/history_html5.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/history_html5.js
diff --git a/portal-web/docroot/html/js/liferay/history_manager.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/history_manager.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/history_manager.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/history_manager.js
diff --git a/portal-web/docroot/html/js/liferay/hudcrumbs.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/hudcrumbs.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/hudcrumbs.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/hudcrumbs.js
diff --git a/portal-web/docroot/html/js/liferay/icon.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/icon.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/icon.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/icon.js
diff --git a/portal-web/docroot/html/js/liferay/image_selector.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/image_selector.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/image_selector.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/image_selector.js
diff --git a/portal-web/docroot/html/js/liferay/inline_editor_base.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/inline_editor_base.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/inline_editor_base.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/inline_editor_base.js
diff --git a/portal-web/docroot/html/js/liferay/input_localized.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/input_localized.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/input_localized.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/input_localized.js
diff --git a/portal-web/docroot/html/js/liferay/input_move_boxes.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/input_move_boxes.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/input_move_boxes.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/input_move_boxes.js
diff --git a/portal-web/docroot/html/js/liferay/input_move_boxes_touch.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/input_move_boxes_touch.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/input_move_boxes_touch.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/input_move_boxes_touch.js
diff --git a/portal-web/docroot/html/js/liferay/language.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/language.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/language.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/language.js
diff --git a/portal-web/docroot/html/js/liferay/layout.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layout.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/layout.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layout.js
diff --git a/portal-web/docroot/html/js/liferay/layout_column.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layout_column.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/layout_column.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layout_column.js
diff --git a/portal-web/docroot/html/js/liferay/layout_customization_settings.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layout_customization_settings.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/layout_customization_settings.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layout_customization_settings.js
diff --git a/portal-web/docroot/html/js/liferay/layout_exporter.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layout_exporter.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/layout_exporter.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layout_exporter.js
diff --git a/portal-web/docroot/html/js/liferay/layout_freeform.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layout_freeform.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/layout_freeform.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layout_freeform.js
diff --git a/portal-web/docroot/html/js/liferay/layouts_tree.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layouts_tree.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/layouts_tree.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layouts_tree.js
diff --git a/portal-web/docroot/html/js/liferay/layouts_tree_check_content_display_page.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layouts_tree_check_content_display_page.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/layouts_tree_check_content_display_page.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layouts_tree_check_content_display_page.js
diff --git a/portal-web/docroot/html/js/liferay/layouts_tree_node_task.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layouts_tree_node_task.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/layouts_tree_node_task.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layouts_tree_node_task.js
diff --git a/portal-web/docroot/html/js/liferay/layouts_tree_selectable.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layouts_tree_selectable.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/layouts_tree_selectable.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layouts_tree_selectable.js
diff --git a/portal-web/docroot/html/js/liferay/layouts_tree_state.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layouts_tree_state.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/layouts_tree_state.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/layouts_tree_state.js
diff --git a/portal-web/docroot/html/js/liferay/liferay.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/liferay.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/liferay.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/liferay.js
diff --git a/portal-web/docroot/html/js/liferay/list_view.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/list_view.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/list_view.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/list_view.js
diff --git a/portal-web/docroot/html/js/liferay/logo_editor.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/logo_editor.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/logo_editor.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/logo_editor.js
diff --git a/portal-web/docroot/html/js/liferay/logo_selector.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/logo_selector.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/logo_selector.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/logo_selector.js
diff --git a/portal-web/docroot/html/js/liferay/look_and_feel.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/look_and_feel.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/look_and_feel.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/look_and_feel.js
diff --git a/portal-web/docroot/html/js/liferay/map_base.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/map_base.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/map_base.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/map_base.js
diff --git a/portal-web/docroot/html/js/liferay/map_google.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/map_google.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/map_google.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/map_google.js
diff --git a/portal-web/docroot/html/js/liferay/map_openstreet.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/map_openstreet.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/map_openstreet.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/map_openstreet.js
diff --git a/portal-web/docroot/html/js/liferay/menu.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/menu.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/menu.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/menu.js
diff --git a/portal-web/docroot/html/js/liferay/menu_filter.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/menu_filter.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/menu_filter.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/menu_filter.js
diff --git a/portal-web/docroot/html/js/liferay/menu_toggle.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/menu_toggle.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/menu_toggle.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/menu_toggle.js
diff --git a/portal-web/docroot/html/js/liferay/message.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/message.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/message.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/message.js
diff --git a/portal-web/docroot/html/js/liferay/modules.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/modules.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/modules.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/modules.js
diff --git a/portal-web/docroot/html/js/liferay/navigation.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/navigation.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/navigation.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/navigation.js
diff --git a/portal-web/docroot/html/js/liferay/navigation_interaction.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/navigation_interaction.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/navigation_interaction.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/navigation_interaction.js
diff --git a/portal-web/docroot/html/js/liferay/navigation_interaction_touch.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/navigation_interaction_touch.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/navigation_interaction_touch.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/navigation_interaction_touch.js
diff --git a/portal-web/docroot/html/js/liferay/navigation_touch.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/navigation_touch.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/navigation_touch.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/navigation_touch.js
diff --git a/portal-web/docroot/html/js/liferay/node.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/node.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/node.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/node.js
diff --git a/portal-web/docroot/html/js/liferay/notice.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/notice.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/notice.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/notice.js
diff --git a/portal-web/docroot/html/js/liferay/pagination.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/pagination.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/pagination.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/pagination.js
diff --git a/portal-web/docroot/html/js/liferay/panel_search.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/panel_search.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/panel_search.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/panel_search.js
diff --git a/portal-web/docroot/html/js/liferay/poller.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/poller.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/poller.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/poller.js
diff --git a/portal-web/docroot/html/js/liferay/portal.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/portal.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/portal.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/portal.js
diff --git a/portal-web/docroot/html/js/liferay/portlet.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/portlet.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/portlet.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/portlet.js
diff --git a/portal-web/docroot/html/js/liferay/portlet_base.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/portlet_base.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/portlet_base.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/portlet_base.js
diff --git a/portal-web/docroot/html/js/liferay/portlet_sharing.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/portlet_sharing.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/portlet_sharing.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/portlet_sharing.js
diff --git a/portal-web/docroot/html/js/liferay/portlet_url.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/portlet_url.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/portlet_url.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/portlet_url.js
diff --git a/portal-web/docroot/html/js/liferay/preview.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/preview.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/preview.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/preview.js
diff --git a/portal-web/docroot/html/js/liferay/progress.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/progress.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/progress.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/progress.js
diff --git a/portal-web/docroot/html/js/liferay/ratings.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/ratings.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/ratings.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/ratings.js
diff --git a/portal-web/docroot/html/js/liferay/resize_rtl.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/resize_rtl.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/resize_rtl.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/resize_rtl.js
diff --git a/portal-web/docroot/html/js/liferay/restore_entry.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/restore_entry.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/restore_entry.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/restore_entry.js
diff --git a/portal-web/docroot/html/js/liferay/search_container.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/search_container.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/search_container.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/search_container.js
diff --git a/portal-web/docroot/html/js/liferay/search_filter.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/search_filter.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/search_filter.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/search_filter.js
diff --git a/portal-web/docroot/html/js/liferay/service_datasource.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/service_datasource.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/service_datasource.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/service_datasource.js
diff --git a/portal-web/docroot/html/js/liferay/session.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/session.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/session.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/session.js
diff --git a/portal-web/docroot/html/js/liferay/sign_in_modal.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/sign_in_modal.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/sign_in_modal.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/sign_in_modal.js
diff --git a/portal-web/docroot/html/js/liferay/social_bookmarks.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/social_bookmarks.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/social_bookmarks.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/social_bookmarks.js
diff --git a/portal-web/docroot/html/js/liferay/source_editor.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/source_editor.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/source_editor.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/source_editor.js
diff --git a/portal-web/docroot/html/js/liferay/storage_formatter.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/storage_formatter.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/storage_formatter.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/storage_formatter.js
diff --git a/portal-web/docroot/html/js/liferay/store.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/store.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/store.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/store.js
diff --git a/portal-web/docroot/html/js/liferay/surface.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/surface.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/surface.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/surface.js
diff --git a/portal-web/docroot/html/js/liferay/surface_app.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/surface_app.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/surface_app.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/surface_app.js
diff --git a/portal-web/docroot/html/js/liferay/toggler_interaction.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/toggler_interaction.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/toggler_interaction.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/toggler_interaction.js
diff --git a/portal-web/docroot/html/js/liferay/toggler_key_filter.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/toggler_key_filter.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/toggler_key_filter.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/toggler_key_filter.js
diff --git a/portal-web/docroot/html/js/liferay/token_list.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/token_list.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/token_list.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/token_list.js
diff --git a/portal-web/docroot/html/js/liferay/translation_manager.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/translation_manager.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/translation_manager.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/translation_manager.js
diff --git a/portal-web/docroot/html/js/liferay/undo_manager.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/undo_manager.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/undo_manager.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/undo_manager.js
diff --git a/portal-web/docroot/html/js/liferay/upload.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/upload.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/upload.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/upload.js
diff --git a/portal-web/docroot/html/js/liferay/util.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/util.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/util.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/util.js
diff --git a/portal-web/docroot/html/js/liferay/util_window.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/util_window.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/util_window.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/util_window.js
diff --git a/portal-web/docroot/html/js/liferay/widget.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/widget.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/widget.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/widget.js
diff --git a/portal-web/docroot/html/js/liferay/widget_size_animation_plugin.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/widget_size_animation_plugin.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/widget_size_animation_plugin.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/widget_size_animation_plugin.js
diff --git a/portal-web/docroot/html/js/liferay/widget_zindex.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/widget_zindex.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/widget_zindex.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/widget_zindex.js
diff --git a/portal-web/docroot/html/js/liferay/workflow.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/workflow.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/workflow.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/workflow.js
diff --git a/portal-web/docroot/html/js/liferay/xml_formatter.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/xml_formatter.js
similarity index 100%
rename from portal-web/docroot/html/js/liferay/xml_formatter.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/liferay/xml_formatter.js
diff --git a/portal-web/docroot/html/js/lodash/lodash.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/lodash/lodash.js
similarity index 100%
rename from portal-web/docroot/html/js/lodash/lodash.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/lodash/lodash.js
diff --git a/portal-web/docroot/html/js/lodash/util.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/lodash/util.js
similarity index 100%
rename from portal-web/docroot/html/js/lodash/util.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/lodash/util.js
diff --git a/portal-web/docroot/html/js/misc/swfobject.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/misc/swfobject.js
similarity index 100%
rename from portal-web/docroot/html/js/misc/swfobject.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/misc/swfobject.js
diff --git a/portal-web/docroot/html/js/misc/swfupload/swfupload.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/misc/swfupload/swfupload.js
similarity index 100%
rename from portal-web/docroot/html/js/misc/swfupload/swfupload.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/misc/swfupload/swfupload.js
diff --git a/portal-web/docroot/html/js/misc/swfupload/swfupload_f10.swf b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/misc/swfupload/swfupload_f10.swf
similarity index 100%
rename from portal-web/docroot/html/js/misc/swfupload/swfupload_f10.swf
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/misc/swfupload/swfupload_f10.swf
diff --git a/portal-web/docroot/html/js/misc/swfupload/swfupload_f8.swf b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/misc/swfupload/swfupload_f8.swf
similarity index 100%
rename from portal-web/docroot/html/js/misc/swfupload/swfupload_f8.swf
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/misc/swfupload/swfupload_f8.swf
diff --git a/portal-web/docroot/html/js/misc/swfupload/swfupload_f9.swf b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/misc/swfupload/swfupload_f9.swf
similarity index 100%
rename from portal-web/docroot/html/js/misc/swfupload/swfupload_f9.swf
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/misc/swfupload/swfupload_f9.swf
diff --git a/portal-web/docroot/html/js/misc/video_player/mpw_player.swf b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/misc/video_player/mpw_player.swf
similarity index 100%
rename from portal-web/docroot/html/js/misc/video_player/mpw_player.swf
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/misc/video_player/mpw_player.swf
diff --git a/portal-web/docroot/html/js/misc/xp_progress.js b/modules/frontend/frontend-js-web/src/META-INF/resources/html/js/misc/xp_progress.js
similarity index 100%
rename from portal-web/docroot/html/js/misc/xp_progress.js
rename to modules/frontend/frontend-js-web/src/META-INF/resources/html/js/misc/xp_progress.js
diff --git a/modules/frontend/frontend-js-web/src/com/liferay/frontend/js/web/DefaultPortalWebResources.java b/modules/frontend/frontend-js-web/src/com/liferay/frontend/js/web/DefaultPortalWebResources.java
new file mode 100644
index 00000000000000..8ded715ff985f5
--- /dev/null
+++ b/modules/frontend/frontend-js-web/src/com/liferay/frontend/js/web/DefaultPortalWebResources.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package com.liferay.frontend.js.web;
+
+import com.liferay.portal.kernel.servlet.PortalWebResources;
+
+import javax.servlet.ServletContext;
+
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+
+/**
+ * @author Peter Fellwock
+ */
+@Component(immediate = true, service = PortalWebResources.class)
+public class DefaultPortalWebResources implements PortalWebResources {
+
+ @Override
+ public String getContextPath() {
+ return _servletContext.getContextPath();
+ }
+
+ @Override
+ public long getLastModified() {
+ return _bundle.getLastModified();
+ }
+
+ @Override
+ public ServletContext getServletContext() {
+ return _servletContext;
+ }
+
+ @Activate
+ protected void activate(BundleContext bundleContext) {
+ _bundle = bundleContext.getBundle();
+ }
+
+ @Reference(
+ target = "(osgi.web.symbolicname=com.liferay.frontend.js.web)"
+ )
+ protected void setServletContext(ServletContext servletContext) {
+ _servletContext = servletContext;
+ }
+
+ private Bundle _bundle;
+ private ServletContext _servletContext;
+
+}
\ No newline at end of file
diff --git a/portal-impl/src/com/liferay/portal/events/ServicePreAction.java b/portal-impl/src/com/liferay/portal/events/ServicePreAction.java
index 86405182037ca9..cf0c6036466a17 100644
--- a/portal-impl/src/com/liferay/portal/events/ServicePreAction.java
+++ b/portal-impl/src/com/liferay/portal/events/ServicePreAction.java
@@ -30,6 +30,7 @@
import com.liferay.portal.kernel.portlet.LiferayWindowState;
import com.liferay.portal.kernel.servlet.BrowserSnifferUtil;
import com.liferay.portal.kernel.servlet.HttpHeaders;
+import com.liferay.portal.kernel.servlet.PortalWebResourcesUtil;
import com.liferay.portal.kernel.servlet.SessionErrors;
import com.liferay.portal.kernel.util.ColorSchemeFactoryUtil;
import com.liferay.portal.kernel.util.CookieKeys;
@@ -818,7 +819,8 @@ else if (group.isLayoutPrototype()) {
themeDisplay.setPathFriendlyURLPrivateUser(friendlyURLPrivateUserPath);
themeDisplay.setPathFriendlyURLPublic(friendlyURLPublicPath);
themeDisplay.setPathImage(imagePath);
- themeDisplay.setPathJavaScript(contextPath.concat("/html/js"));
+ themeDisplay.setPathJavaScript(
+ PortalWebResourcesUtil.getContextPath().concat("/html/js"));
themeDisplay.setPathMain(mainPath);
themeDisplay.setPathSound(contextPath.concat("/html/sound"));
themeDisplay.setPermissionChecker(permissionChecker);
diff --git a/portal-impl/src/com/liferay/portal/servlet/filters/aggregate/AggregateFilter.java b/portal-impl/src/com/liferay/portal/servlet/filters/aggregate/AggregateFilter.java
index 61483da8b8f930..adec0c8f629140 100644
--- a/portal-impl/src/com/liferay/portal/servlet/filters/aggregate/AggregateFilter.java
+++ b/portal-impl/src/com/liferay/portal/servlet/filters/aggregate/AggregateFilter.java
@@ -22,6 +22,7 @@
import com.liferay.portal.kernel.servlet.BrowserSniffer;
import com.liferay.portal.kernel.servlet.BufferCacheServletResponse;
import com.liferay.portal.kernel.servlet.HttpHeaders;
+import com.liferay.portal.kernel.servlet.PortalWebResourcesUtil;
import com.liferay.portal.kernel.servlet.ServletResponseUtil;
import com.liferay.portal.kernel.util.ArrayUtil;
import com.liferay.portal.kernel.util.CharPool;
@@ -260,7 +261,11 @@ protected Object getBundleContent(
String bundleDirName = PropsUtil.get(
PropsKeys.JAVASCRIPT_BUNDLE_DIR, new Filter(bundleId));
- URL bundleDirURL = _servletContext.getResource(bundleDirName);
+ ServletContext portalWebResourcesServletContext =
+ PortalWebResourcesUtil.getServletContext();
+
+ URL bundleDirURL = portalWebResourcesServletContext.getResource(
+ bundleDirName);
if (bundleDirURL == null) {
return null;
@@ -276,7 +281,7 @@ protected Object getBundleContent(
boolean staleCache = false;
for (String fileName : fileNames) {
- URL resourceURL = _servletContext.getResource(
+ URL resourceURL = portalWebResourcesServletContext.getResource(
bundleDirName.concat(StringPool.SLASH).concat(fileName));
if (resourceURL == null) {
@@ -312,7 +317,9 @@ protected Object getBundleContent(
}
else {
content = aggregateJavaScript(
- new ServletPaths(_servletContext, bundleDirName), fileNames);
+ new ServletPaths(
+ portalWebResourcesServletContext, bundleDirName),
+ fileNames);
}
response.setContentType(ContentTypes.TEXT_JAVASCRIPT);
@@ -513,6 +520,19 @@ protected String getJavaScriptContent(URL resourceURL) throws IOException {
return getJavaScriptContent(resourceURL.toString(), content);
}
+ @Override
+ protected boolean isModuleRequest(HttpServletRequest request) {
+ String requestURI = request.getRequestURI();
+
+ String contextPath = PortalWebResourcesUtil.getContextPath();
+
+ if (requestURI.startsWith(contextPath)) {
+ return false;
+ }
+
+ return super.isModuleRequest(request);
+ }
+
@Override
protected void processFilter(
HttpServletRequest request, HttpServletResponse response,
diff --git a/portal-impl/src/com/liferay/portal/servlet/filters/aggregate/ServletPaths.java b/portal-impl/src/com/liferay/portal/servlet/filters/aggregate/ServletPaths.java
index 2ea5043e0ff769..8e1271a6465ef9 100644
--- a/portal-impl/src/com/liferay/portal/servlet/filters/aggregate/ServletPaths.java
+++ b/portal-impl/src/com/liferay/portal/servlet/filters/aggregate/ServletPaths.java
@@ -16,7 +16,6 @@
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
-import com.liferay.portal.kernel.servlet.ServletContextUtil;
import com.liferay.portal.kernel.util.CharPool;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
@@ -24,7 +23,6 @@
import java.io.IOException;
-import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
@@ -53,9 +51,7 @@ public static String getParentPath(String resourcePath) {
return resourcePath;
}
- public ServletPaths(ServletContext servletContext, String resourcePath)
- throws MalformedURLException {
-
+ public ServletPaths(ServletContext servletContext, String resourcePath) {
if (servletContext == null) {
throw new NullPointerException("Servlet context is null");
}
@@ -65,13 +61,6 @@ public ServletPaths(ServletContext servletContext, String resourcePath)
}
_servletContext = servletContext;
-
- String rootPath = ServletContextUtil.getRootPath(_servletContext);
-
- if (resourcePath.startsWith(rootPath)) {
- resourcePath = resourcePath.substring(rootPath.length());
- }
-
_resourcePath = resourcePath;
}
diff --git a/portal-impl/src/com/liferay/portal/tools/SassToCssBuilder.java b/portal-impl/src/com/liferay/portal/tools/SassToCssBuilder.java
index 341baa6436226b..fc1e554ec2baae 100644
--- a/portal-impl/src/com/liferay/portal/tools/SassToCssBuilder.java
+++ b/portal-impl/src/com/liferay/portal/tools/SassToCssBuilder.java
@@ -160,7 +160,7 @@ private void _collectSassFiles(
new String[] {
"**\\_diffs\\**", "**\\.sass-cache*\\**",
"**\\.sass_cache_*\\**", "**\\_sass_cache_*\\**",
- "**\\_styled\\**", "**\\_unstyled\\**"
+ "**\\_styled\\**", "**\\_unstyled\\**", "**\\tmp\\**"
});
directoryScanner.setIncludes(new String[] {"**\\*.css"});
diff --git a/portal-impl/test/unit/com/liferay/portal/servlet/filters/aggregate/ServletPathsTest.java b/portal-impl/test/unit/com/liferay/portal/servlet/filters/aggregate/ServletPathsTest.java
index 0ba46eec5db83a..97c90c55621670 100644
--- a/portal-impl/test/unit/com/liferay/portal/servlet/filters/aggregate/ServletPathsTest.java
+++ b/portal-impl/test/unit/com/liferay/portal/servlet/filters/aggregate/ServletPathsTest.java
@@ -69,7 +69,7 @@ public static void tearDownClass() {
}
@Test
- public void testConstructor() throws MalformedURLException {
+ public void testConstructor() {
try {
new ServletPaths(null, null);
@@ -91,10 +91,8 @@ public void testConstructor() throws MalformedURLException {
ServletContext servletContext = _prepareServletContext(
new MockServletContext());
- String rootPath = ServletContextUtil.getRootPath(servletContext);
-
ServletPaths servletPaths = new ServletPaths(
- servletContext, rootPath + "/test1/test2/");
+ servletContext, "/test1/test2/");
Assert.assertEquals("/test1/test2/", servletPaths.getResourcePath());
@@ -104,7 +102,7 @@ public void testConstructor() throws MalformedURLException {
}
@Test
- public void testDown() throws MalformedURLException {
+ public void testDown() {
ServletContext servletContext = _prepareServletContext(
new MockServletContext());
diff --git a/portal-service/src/com/liferay/portal/kernel/servlet/PortalWebResources.java b/portal-service/src/com/liferay/portal/kernel/servlet/PortalWebResources.java
new file mode 100644
index 00000000000000..4ffeab46487f4b
--- /dev/null
+++ b/portal-service/src/com/liferay/portal/kernel/servlet/PortalWebResources.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package com.liferay.portal.kernel.servlet;
+
+import javax.servlet.ServletContext;
+
+/**
+ * @author Peter Fellwock
+ */
+public interface PortalWebResources {
+
+ public String getContextPath();
+
+ public long getLastModified();
+
+ public ServletContext getServletContext();
+
+}
\ No newline at end of file
diff --git a/portal-service/src/com/liferay/portal/kernel/servlet/PortalWebResourcesUtil.java b/portal-service/src/com/liferay/portal/kernel/servlet/PortalWebResourcesUtil.java
new file mode 100644
index 00000000000000..601862175e8dc1
--- /dev/null
+++ b/portal-service/src/com/liferay/portal/kernel/servlet/PortalWebResourcesUtil.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package com.liferay.portal.kernel.servlet;
+
+import com.liferay.registry.Registry;
+import com.liferay.registry.RegistryUtil;
+import com.liferay.registry.ServiceTracker;
+
+import javax.servlet.ServletContext;
+
+/**
+ * @author Peter Fellwock
+ */
+public class PortalWebResourcesUtil {
+
+ public static String getContextPath() {
+ return getPortalWebResources().getContextPath();
+ }
+
+ public static long getLastModified() {
+ return getPortalWebResources().getLastModified();
+ }
+
+ public static PortalWebResources getPortalWebResources() {
+ return _instance._serviceTracker.getService();
+ }
+
+ public static ServletContext getServletContext() {
+ return getPortalWebResources().getServletContext();
+ }
+
+ private PortalWebResourcesUtil() {
+ Registry registry = RegistryUtil.getRegistry();
+
+ _serviceTracker = registry.trackServices(PortalWebResources.class);
+
+ _serviceTracker.open();
+ }
+
+ private static final PortalWebResourcesUtil _instance =
+ new PortalWebResourcesUtil();
+
+ private final ServiceTracker
+ _serviceTracker;
+
+}
\ No newline at end of file
diff --git a/portal-web/build.xml b/portal-web/build.xml
index 0d3c45de678165..9eedd0c93b589d 100644
--- a/portal-web/build.xml
+++ b/portal-web/build.xml
@@ -7,12 +7,8 @@
-
-
-
-
+
-
@@ -49,133 +45,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${alloy.file}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -240,76 +110,95 @@
-
-
+
+
-
+
-
+
-
+
-
-
- ${alloyeditor.file}
-
-
-
-
-
-
+
-
-
-
+
-
+
+
-
-
-
-
-
-
-
+
+
-
+
-
+
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -347,187 +236,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${creole_parser.content}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -681,7 +389,7 @@
${ide.js.content}
-
+
@@ -755,35 +463,6 @@
/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -823,10 +502,6 @@
-
-
-
-
diff --git a/portal-web/docroot/html/common/init.jsp b/portal-web/docroot/html/common/init.jsp
index f089dcbdbb388d..aab5dc126991fd 100644
--- a/portal-web/docroot/html/common/init.jsp
+++ b/portal-web/docroot/html/common/init.jsp
@@ -97,8 +97,8 @@ page import="com.liferay.portal.kernel.servlet.BrowserSnifferUtil" %><%@
page import="com.liferay.portal.kernel.servlet.BufferCacheServletResponse" %><%@
page import="com.liferay.portal.kernel.servlet.MultiSessionMessages" %><%@
page import="com.liferay.portal.kernel.servlet.PortalMessages" %><%@
+page import="com.liferay.portal.kernel.servlet.PortalWebResourcesUtil" %><%@
page import="com.liferay.portal.kernel.servlet.ServletContextPool" %><%@
-page import="com.liferay.portal.kernel.servlet.ServletContextUtil" %><%@
page import="com.liferay.portal.kernel.servlet.SessionErrors" %><%@
page import="com.liferay.portal.kernel.servlet.SessionMessages" %><%@
page import="com.liferay.portal.kernel.servlet.taglib.ui.MenuItem" %><%@
diff --git a/portal-web/docroot/html/common/themes/top_js.jspf b/portal-web/docroot/html/common/themes/top_js.jspf
index 7a530bab563452..63358e7cf3edd6 100644
--- a/portal-web/docroot/html/common/themes/top_js.jspf
+++ b/portal-web/docroot/html/common/themes/top_js.jspf
@@ -262,7 +262,7 @@
Liferay.AUI = {
<%
- long javaScriptLastModified = ServletContextUtil.getLastModified(application, "/html/js/", true);
+ long javaScriptLastModified = PortalWebResourcesUtil.getLastModified();
%>
getAvailableLangPath: function() {
@@ -289,7 +289,7 @@
return filter;
},
getJavaScriptRootPath: function() {
- return '<%= themeDisplay.getPathContext() %>/html/js';
+ return '<%= themeDisplay.getPathJavaScript() %>';
},
getLangPath: function() {
return '<%= PortalUtil.getStaticResourceURL(request, "aui_lang.jsp", javaScriptLastModified) %>';
diff --git a/util-taglib/src/com/liferay/taglib/FileAvailabilityUtil.java b/util-taglib/src/com/liferay/taglib/FileAvailabilityUtil.java
index d749a03246f1ab..931e34a67300d3 100644
--- a/util-taglib/src/com/liferay/taglib/FileAvailabilityUtil.java
+++ b/util-taglib/src/com/liferay/taglib/FileAvailabilityUtil.java
@@ -14,6 +14,7 @@
package com.liferay.taglib;
+import com.liferay.portal.kernel.servlet.PortalWebResourcesUtil;
import com.liferay.portal.kernel.util.CharPool;
import com.liferay.portal.kernel.util.Validator;
@@ -43,6 +44,10 @@ public static boolean isAvailable(
return true;
}
+ if (path.startsWith(PortalWebResourcesUtil.getContextPath())) {
+ return true;
+ }
+
Map availabilities = _getAvailabilities(
servletContext);
diff --git a/util-taglib/src/com/liferay/taglib/ui/InputEditorTag.java b/util-taglib/src/com/liferay/taglib/ui/InputEditorTag.java
index 035cc4a40675a6..f731cc8b7e6807 100644
--- a/util-taglib/src/com/liferay/taglib/ui/InputEditorTag.java
+++ b/util-taglib/src/com/liferay/taglib/ui/InputEditorTag.java
@@ -282,7 +282,11 @@ protected String getPage() {
}
protected String getPage(String editorName) {
- return "/html/js/editor/" + editorName + ".jsp";
+ ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
+ WebKeys.THEME_DISPLAY);
+
+ return themeDisplay.getPathJavaScript() + "/editor/" +
+ editorName + ".jsp";
}
@Override