diff --git a/dotCMS/gradle.properties b/dotCMS/gradle.properties index 3a1c0e3f62a4..24721a2256f4 100644 --- a/dotCMS/gradle.properties +++ b/dotCMS/gradle.properties @@ -1,4 +1,4 @@ -dotcmsReleaseVersion=4.1.0 +dotcmsReleaseVersion=4.2.0 coreWebReleaseVersion=latest tomcatInstallRepo=https://github.com/dotCMS/tomcat.git diff --git a/dotCMS/src/integration-test/java/com/dotcms/contenttype/test/FieldFactoryImplTest.java b/dotCMS/src/integration-test/java/com/dotcms/contenttype/test/FieldFactoryImplTest.java index 08bc46033cee..0bb1809b8bc0 100644 --- a/dotCMS/src/integration-test/java/com/dotcms/contenttype/test/FieldFactoryImplTest.java +++ b/dotCMS/src/integration-test/java/com/dotcms/contenttype/test/FieldFactoryImplTest.java @@ -24,8 +24,10 @@ import com.dotcms.contenttype.model.field.ImmutableBinaryField; import com.dotcms.contenttype.model.field.ImmutableDateTimeField; import com.dotcms.contenttype.model.field.ImmutableFieldVariable; +import com.dotcms.contenttype.model.field.ImmutableSelectField; import com.dotcms.contenttype.model.field.ImmutableTextAreaField; import com.dotcms.contenttype.model.field.ImmutableTextField; +import com.dotcms.contenttype.model.field.SelectField; import com.dotcms.contenttype.model.field.TextField; import com.dotcms.contenttype.model.type.BaseContentType; import com.dotcms.contenttype.model.type.ContentType; @@ -156,6 +158,44 @@ public void testTextDBColumn() throws Exception { assertThat("field2 text data type", field2.dataType() == DataTypes.TEXT); assertThat("field2 text db column", field2.dbColumn().matches("text[0-9]+")); } + + + + @Test + public void testBadIntDBColumn() throws Exception { + + String uu = UUID.randomUUID().toString(); + + TextField textField = ImmutableTextField.builder().name("test field" + uu) + .variable(TEST_VAR_PREFIX + uu).contentTypeId(Constants.NEWS).hint("my hint") + .dataType(DataTypes.INTEGER).dbColumn("bad1").build(); + + Field savedField = fieldFactory.save(textField); + String inode = savedField.inode(); + Field field2 = fieldFactory.byId(inode); + assertThat("testBadIntDBColumn text data type", field2.dataType() == DataTypes.INTEGER); + assertThat("testBadIntDBColumn text db column", field2.dbColumn().matches("integer[0-9]+")); + } + + + @Test + public void testBadBoolDBColumn() throws Exception { + + String uu = UUID.randomUUID().toString(); + + SelectField selectField = ImmutableSelectField.builder().name("test field" + uu) + .variable(TEST_VAR_PREFIX + uu).contentTypeId(Constants.NEWS).hint("my hint") + .dataType(DataTypes.BOOL).dbColumn("notreal").values("").build(); + + Field savedField = fieldFactory.save(selectField); + String inode = savedField.inode(); + Field field2 = fieldFactory.byId(inode); + assertThat("testBadBoolDBColumn select data type", field2.dataType() == DataTypes.BOOL); + assertThat("testBadBoolDBColumn select db column", field2.dbColumn().matches("bool[0-9]+")); + } + + + @Test public void testTextIntColumn() throws Exception { diff --git a/dotCMS/src/integration-test/java/com/dotcms/rest/api/v1/contenttype/ContentTypeResourceTest.java b/dotCMS/src/integration-test/java/com/dotcms/rest/api/v1/contenttype/ContentTypeResourceTest.java index 83b45d4cb17d..01f13d45bfce 100644 --- a/dotCMS/src/integration-test/java/com/dotcms/rest/api/v1/contenttype/ContentTypeResourceTest.java +++ b/dotCMS/src/integration-test/java/com/dotcms/rest/api/v1/contenttype/ContentTypeResourceTest.java @@ -257,7 +257,7 @@ private static void assertContentTypeUpdate(ContentType contentType) { private static void assertResponse_OK(Response response){ assertNotNull(response); - assertEquals(response.getStatus(), 200); + assertEquals(200, response.getStatus()); assertNotNull(response.getEntity()); assertTrue(response.getEntity() instanceof ResponseEntityView); assertTrue( @@ -268,12 +268,12 @@ private static void assertResponse_OK(Response response){ private static void assertResponse_NOT_FOUND(Response response){ assertNotNull(response); - assertEquals(response.getStatus(), 404); + assertEquals(404, response.getStatus()); } private static void assertResponse_BAD_REQUEST(Response response){ assertNotNull(response); - assertEquals(response.getStatus(), 400); + assertEquals(400, response.getStatus()); } diff --git a/dotCMS/src/integration-test/java/com/dotcms/rest/api/v1/contenttype/FieldResourceTest.java b/dotCMS/src/integration-test/java/com/dotcms/rest/api/v1/contenttype/FieldResourceTest.java index 392ec95351a1..c72f819343b7 100644 --- a/dotCMS/src/integration-test/java/com/dotcms/rest/api/v1/contenttype/FieldResourceTest.java +++ b/dotCMS/src/integration-test/java/com/dotcms/rest/api/v1/contenttype/FieldResourceTest.java @@ -38,7 +38,6 @@ import com.dotcms.contenttype.model.field.TextField; import com.dotcms.contenttype.model.field.TimeField; import com.dotcms.contenttype.model.field.WysiwygField; -import com.dotcms.contenttype.model.type.BaseContentType; import com.dotcms.contenttype.model.type.ContentType; import com.dotcms.contenttype.model.type.ContentTypeBuilder; import com.dotcms.contenttype.model.type.SimpleContentType; @@ -64,18 +63,16 @@ public class FieldResourceTest { private static final ObjectMapper mapper = new ObjectMapper(); - private static final String typeName="fieldResourceTest " + UUIDUtil.uuid(); + private static final String typeName="fieldResourceTest" + UUIDUtil.uuid(); @BeforeClass public static void prepare() throws Exception{ IntegrationTestInitService.getInstance().init(); - - + ContentType type = ContentTypeBuilder.builder(SimpleContentType.class).name(typeName).variable(typeName).build(); type = APILocator.getContentTypeAPI(APILocator.systemUser()).save(type); Field field = FieldBuilder.builder(TextField.class).name("text").contentTypeId(type.id()).build(); APILocator.getContentTypeFieldAPI().save(field,APILocator.systemUser()); - } @@ -2349,7 +2346,7 @@ private void testField(AbstractFieldTester fieldTester) throws Exception { private static void assertResponse_OK(Response response){ assertNotNull(response); - assertEquals(response.getStatus(), 200); + assertEquals(200, response.getStatus()); assertNotNull(response.getEntity()); assertTrue(response.getEntity() instanceof ResponseEntityView); assertTrue( @@ -2360,7 +2357,7 @@ private static void assertResponse_OK(Response response){ private static void assertResponse_NOT_FOUND(Response response){ assertNotNull(response); - assertEquals(response.getStatus(), 404); + assertEquals(404, response.getStatus()); assertNotNull(response.getEntity()); } @@ -2378,13 +2375,8 @@ private static Field convertMapToField(Map fieldMap) { } } - - - - private static ContentType getContentType() throws DotDataException, DotSecurityException { User user = APILocator.getUserAPI().getSystemUser(); - //return APILocator.getContentTypeAPI(user).search(" velocity_var_name = 'Testimonial'").get(0); return APILocator.getContentTypeAPI(user).find(typeName); } diff --git a/dotCMS/src/integration-test/java/com/dotcms/rest/api/v1/contenttype/FieldVariableResourceTest.java b/dotCMS/src/integration-test/java/com/dotcms/rest/api/v1/contenttype/FieldVariableResourceTest.java index e42aec5c2f3e..e3f2563fe551 100644 --- a/dotCMS/src/integration-test/java/com/dotcms/rest/api/v1/contenttype/FieldVariableResourceTest.java +++ b/dotCMS/src/integration-test/java/com/dotcms/rest/api/v1/contenttype/FieldVariableResourceTest.java @@ -11,8 +11,12 @@ import javax.servlet.http.HttpServletRequest; import com.dotcms.contenttype.model.field.Field; +import com.dotcms.contenttype.model.field.FieldBuilder; import com.dotcms.contenttype.model.field.FieldVariable; +import com.dotcms.contenttype.model.field.TextField; import com.dotcms.contenttype.model.type.ContentType; +import com.dotcms.contenttype.model.type.ContentTypeBuilder; +import com.dotcms.contenttype.model.type.SimpleContentType; import com.dotcms.mock.request.MockAttributeRequest; import com.dotcms.mock.request.MockHeaderRequest; import com.dotcms.mock.request.MockHttpRequest; @@ -23,6 +27,8 @@ import com.dotcms.util.IntegrationTestInitService; import com.dotmarketing.business.APILocator; import com.dotmarketing.exception.DotDataException; +import com.dotmarketing.exception.DotSecurityException; +import com.dotmarketing.util.UUIDUtil; import com.fasterxml.jackson.databind.ObjectMapper; import com.liferay.portal.model.User; @@ -33,10 +39,17 @@ public class FieldVariableResourceTest { private static final ObjectMapper mapper = new ObjectMapper(); + private static final String typeName="fieldVariableResourceTest" + UUIDUtil.uuid(); + private static final String fieldName="name"; @BeforeClass public static void prepare() throws Exception{ IntegrationTestInitService.getInstance().init(); + + ContentType type = ContentTypeBuilder.builder(SimpleContentType.class).name(typeName).variable(typeName).build(); + type = APILocator.getContentTypeAPI(APILocator.systemUser()).save(type); + Field field = FieldBuilder.builder(TextField.class).name(fieldName).contentTypeId(type.id()).build(); + APILocator.getContentTypeFieldAPI().save(field,APILocator.systemUser()); } @@ -336,7 +349,7 @@ private static void assertFieldVariableUpdate(FieldVariable fieldVariable, Field private static void assertResponse_OK(Response response){ assertNotNull(response); - assertEquals(response.getStatus(), 200); + assertEquals(200, response.getStatus()); assertNotNull(response.getEntity()); assertTrue(response.getEntity() instanceof ResponseEntityView); assertTrue( @@ -347,7 +360,7 @@ private static void assertResponse_OK(Response response){ private static void assertResponse_NOT_FOUND(Response response){ assertNotNull(response); - assertEquals(response.getStatus(), 404); + assertEquals(404, response.getStatus()); assertNotNull(response.getEntity()); } @@ -363,15 +376,15 @@ private static FieldVariable convertMapToFieldVariable(Map field } } - private static ContentType getContentType() throws DotDataException { + private static ContentType getContentType() throws DotDataException, DotSecurityException { User user = APILocator.getUserAPI().getSystemUser(); - return APILocator.getContentTypeAPI(user).search(" velocity_var_name = 'Testimonial'").get(0); + return APILocator.getContentTypeAPI(user).find(typeName); } private static Field getField(ContentType contentType) throws DotDataException { - return APILocator.getContentTypeFieldAPI().byContentTypeAndVar(contentType, "name"); + return APILocator.getContentTypeFieldAPI().byContentTypeAndVar(contentType, fieldName); } private static HttpServletRequest getHttpRequest() { diff --git a/dotCMS/src/main/java/com/dotcms/contenttype/business/FieldFactoryImpl.java b/dotCMS/src/main/java/com/dotcms/contenttype/business/FieldFactoryImpl.java index b0de0ec6fc49..0bc70246a8b9 100644 --- a/dotCMS/src/main/java/com/dotcms/contenttype/business/FieldFactoryImpl.java +++ b/dotCMS/src/main/java/com/dotcms/contenttype/business/FieldFactoryImpl.java @@ -32,6 +32,7 @@ import com.dotmarketing.business.APILocator; import com.dotmarketing.business.CacheLocator; import com.dotmarketing.business.DotStateException; +import com.dotmarketing.business.DotValidationException; import com.dotmarketing.common.db.DotConnect; import com.dotmarketing.db.LocalTransaction; import com.dotmarketing.exception.DotDataException; @@ -159,8 +160,8 @@ private Field normalizeData(final Field throwAwayField) throws DotDataException FieldBuilder builder = FieldBuilder.builder(throwAwayField); Field returnField = throwAwayField; - if("constant".equals(throwAwayField.dbColumn()) && !(throwAwayField instanceof ConstantField)) { - builder = ImmutableConstantField.builder().from(throwAwayField); + if("constant".equals(returnField.dbColumn()) && !(returnField instanceof ConstantField)) { + builder = ImmutableConstantField.builder().from(returnField); builder.dbColumn(DataTypes.SYSTEM.value); returnField = builder.build(); } @@ -174,8 +175,13 @@ private Field normalizeData(final Field throwAwayField) throws DotDataException builder.dbColumn(DataTypes.SYSTEM.value); returnField = builder.build(); } - // if this is a new column assign a db column - if(returnField.dbColumn()==null){ + + + // if this is a new column validate and assign a db column + try{ + validateDbColumn(returnField); + } + catch(Throwable e){ builder.dbColumn(nextAvailableColumn(returnField)); returnField = builder.build(); } @@ -225,6 +231,7 @@ private Field dbSaveUpdate(final Field throwAwayField) throws DotDataException { builder.readOnly(oldField.readOnly()); builder.dataType(oldField.dataType()); builder.dbColumn(oldField.dbColumn()); + } catch (NotFoundInDbException e) { List fieldsAlreadyAdded = byContentTypeId(throwAwayField.contentTypeId()); // assign an inode and db column if needed diff --git a/dotCMS/src/main/java/com/dotmarketing/portlets/contentlet/ajax/ContentletAjax.java b/dotCMS/src/main/java/com/dotmarketing/portlets/contentlet/ajax/ContentletAjax.java index 1524a670adf7..911aed699f55 100644 --- a/dotCMS/src/main/java/com/dotmarketing/portlets/contentlet/ajax/ContentletAjax.java +++ b/dotCMS/src/main/java/com/dotmarketing/portlets/contentlet/ajax/ContentletAjax.java @@ -1,5 +1,23 @@ package com.dotmarketing.portlets.contentlet.ajax; +import static com.dotmarketing.business.PermissionAPI.PERMISSION_PUBLISH; +import static com.dotmarketing.business.PermissionAPI.PERMISSION_READ; +import static com.dotmarketing.business.PermissionAPI.PERMISSION_WRITE; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + import com.dotcms.content.elasticsearch.util.ESUtils; import com.dotcms.enterprise.FormAJAXProxy; import com.dotcms.enterprise.LicenseUtil; @@ -9,7 +27,6 @@ import com.dotmarketing.beans.Permission; import com.dotmarketing.business.APILocator; import com.dotmarketing.business.CacheLocator; -import com.dotmarketing.business.DotCacheException; import com.dotmarketing.business.DotStateException; import com.dotmarketing.business.FactoryLocator; import com.dotmarketing.business.PermissionAPI; @@ -40,7 +57,6 @@ import com.dotmarketing.portlets.languagesmanager.model.LanguageKey; import com.dotmarketing.portlets.structure.StructureUtil; import com.dotmarketing.portlets.structure.factories.FieldFactory; - import com.dotmarketing.portlets.structure.model.Field; import com.dotmarketing.portlets.structure.model.Field.FieldType; import com.dotmarketing.portlets.structure.model.Relationship; @@ -52,6 +68,7 @@ import com.dotmarketing.util.DateUtil; import com.dotmarketing.util.InodeUtils; import com.dotmarketing.util.Logger; +import com.dotmarketing.util.PageRequestModeUtil; import com.dotmarketing.util.PaginatedArrayList; import com.dotmarketing.util.RegEX; import com.dotmarketing.util.RegExMatch; @@ -59,7 +76,6 @@ import com.dotmarketing.util.UUIDGenerator; import com.dotmarketing.util.UtilHTML; import com.dotmarketing.util.UtilMethods; -import com.dotmarketing.util.VelocityUtil; import com.dotmarketing.util.WebKeys; import com.dotmarketing.util.json.JSONArray; import com.dotmarketing.util.json.JSONException; @@ -72,24 +88,6 @@ import com.liferay.util.FileUtil; import com.liferay.util.servlet.SessionMessages; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; - -import static com.dotmarketing.business.PermissionAPI.PERMISSION_PUBLISH; -import static com.dotmarketing.business.PermissionAPI.PERMISSION_READ; -import static com.dotmarketing.business.PermissionAPI.PERMISSION_WRITE; - /** * This class handles the communication between the view and the back-end * service that returns information to the user regarding Contentlets in dotCMS. @@ -1386,6 +1384,19 @@ public Map saveContent(List formData, boolean isAutoSave, if(contentlet.isHTMLPage()) { HTMLPageAsset page = APILocator.getHTMLPageAssetAPI().fromContentlet(contentlet); callbackData.put("htmlPageReferer", page.getURI() + "?" + WebKeys.HTMLPAGE_LANGUAGE + "=" + page.getLanguageId() + "&host_id=" + page.getHost()); + HttpSession session = req.getSession(); + boolean contentLocked = false; + boolean iCanLock = false; + + try{ + contentLocked = page.isLocked(); + iCanLock = APILocator.getContentletAPI().canLock(contentlet, user); + }catch(DotLockException e){ + iCanLock=false; + contentLocked = false; + } + + PageRequestModeUtil.setBackEndModeInSession(req, contentLocked, iCanLock); } } diff --git a/dotCMS/src/main/java/com/dotmarketing/portlets/folders/action/OrderMenuAction.java b/dotCMS/src/main/java/com/dotmarketing/portlets/folders/action/OrderMenuAction.java index 6b0f87a475af..4445a6a7f879 100644 --- a/dotCMS/src/main/java/com/dotmarketing/portlets/folders/action/OrderMenuAction.java +++ b/dotCMS/src/main/java/com/dotmarketing/portlets/folders/action/OrderMenuAction.java @@ -1,11 +1,11 @@ package com.dotmarketing.portlets.folders.action; import java.util.ArrayList; -import java.util.Enumeration; import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.regex.Matcher; @@ -93,7 +93,8 @@ public void processAction(ActionMapping mapping, ActionForm form, PortletConfig doReorderMenu = ((Boolean)l.get(1)).booleanValue(); } if(doReorderMenu){ - navs = _orderMenuItemsDragAndDrop(req,res,config,form); + + navs = _orderMenuItemsDragAndDrop(getOrderedElements(req)); }else{ Logger.warn(this, "Possible hack attack: User submitting menu post of which they have no permissions to"); _sendToReferral(req,res,req.getParameter("referer")); @@ -138,6 +139,28 @@ public void processAction(ActionMapping mapping, ActionForm form, PortletConfig } } + /** + * Splits the parameter reorder_result and creates a map that contains the arranged list of items + * @param req + * @return + */ + private Map getOrderedElements(ActionRequest req){ + + String reorderResult; + Map orderedItems; + + orderedItems = new HashMap<>(); + reorderResult = req.getParameter("reorder_result"); + + if (reorderResult != null){ + for(String listItem:reorderResult.split("&")){ + orderedItems.put(listItem.split("=")[0], listItem.split("=")[1]); + } + } + + return orderedItems; + } + private Hashtable _getMenuItems(ActionRequest req, ActionResponse res,PortletConfig config,ActionForm form, int startLevel) throws Exception { @@ -209,28 +232,23 @@ private Hashtable _getMenuItems(ActionRequest req, ActionResponse res,PortletCon * changes. Note that XSS validation is performed on the query String, so * it's important to avoid using dangerous characters for parameter names. * - * @param req - * - The HTTP request. - * @param res - * - The HTTP response. - * @param config - * @param form + * @param items + * - List of sorted elements. * @return * @throws Exception * An error occurred during the save process or the query String * parameters may be incorrect. */ - private List _orderMenuItemsDragAndDrop(ActionRequest req, - ActionResponse res, PortletConfig config, ActionForm form) + private List _orderMenuItemsDragAndDrop(Map items) throws Exception { List ret = new ArrayList(); try { - Enumeration parameterNames = req.getParameterNames(); + HashMap> hashMap = new HashMap>(); - while (parameterNames.hasMoreElements()) { - String parameterName = (String) parameterNames.nextElement(); + for(String parameterName: items.keySet()) { + if (parameterName.startsWith("list")) { - String value = req.getParameter(parameterName); + String value = items.get(parameterName); // Restore square brackets which are NOT allowed in URLs parameterName = parameterName.replaceAll("__", "["); parameterName = parameterName.replaceAll("---", "]"); @@ -507,10 +525,14 @@ protected List buildNavigationTree(List items, int depth, User user) thr sb.append("\n"); sb.append("function serialize(){\n"); sb.append("var values = \"\";\n"); + String sortCreate = ""; for (int i = 0; i < ids.size(); i++) { int internalCounter = (Integer) ids.get(i); String id = "list" + internalCounter; - String sortCreate = "values += \"&\" + Sortable.serialize('" + id + "');\n"; + if (i>0){ + sortCreate = "values += \"&\";\n"; + } + sortCreate += "values += Sortable.serialize('" + id + "');\n"; sb.append(sortCreate); } sb.append("values = values.replace(/\\[/g, '__');\n"); diff --git a/dotCMS/src/main/java/com/dotmarketing/portlets/htmlpages/action/PreviewHTMLPageAction.java b/dotCMS/src/main/java/com/dotmarketing/portlets/htmlpages/action/PreviewHTMLPageAction.java index 2d28a6547a51..a4ef711f7da5 100644 --- a/dotCMS/src/main/java/com/dotmarketing/portlets/htmlpages/action/PreviewHTMLPageAction.java +++ b/dotCMS/src/main/java/com/dotmarketing/portlets/htmlpages/action/PreviewHTMLPageAction.java @@ -20,6 +20,7 @@ import com.dotmarketing.util.ActivityLogger; import com.dotmarketing.util.HostUtil; import com.dotmarketing.util.Logger; +import com.dotmarketing.util.PageRequestModeUtil; import com.dotmarketing.util.UtilMethods; import com.dotmarketing.util.WebKeys; import com.liferay.portal.language.LanguageUtil; @@ -86,17 +87,7 @@ public void processAction(ActionMapping mapping, ActionForm form, PortletConfig HttpServletRequest hreq = reqImpl.getHttpServletRequest(); // gets the session object for the messages - HttpSession session = hreq.getSession(); - if(contentLocked && iCanLock){ - session.setAttribute(com.dotmarketing.util.WebKeys.EDIT_MODE_SESSION, "true"); - session.setAttribute(com.dotmarketing.util.WebKeys.PREVIEW_MODE_SESSION, null); - session.setAttribute(com.dotmarketing.util.WebKeys.ADMIN_MODE_SESSION, "true"); - } - else{ - session.setAttribute(com.dotmarketing.util.WebKeys.EDIT_MODE_SESSION, null); - session.setAttribute(com.dotmarketing.util.WebKeys.PREVIEW_MODE_SESSION, "true"); - session.setAttribute(com.dotmarketing.util.WebKeys.ADMIN_MODE_SESSION, "true"); - } + PageRequestModeUtil.setBackEndModeInSession(hreq, contentLocked, iCanLock); IHTMLPage htmlPage = _previewHTMLPages(req, user); diff --git a/dotCMS/src/main/java/com/dotmarketing/util/PageRequestModeUtil.java b/dotCMS/src/main/java/com/dotmarketing/util/PageRequestModeUtil.java index eea6934ec8a0..73d3ed30a24d 100644 --- a/dotCMS/src/main/java/com/dotmarketing/util/PageRequestModeUtil.java +++ b/dotCMS/src/main/java/com/dotmarketing/util/PageRequestModeUtil.java @@ -48,5 +48,24 @@ public static boolean isLive( HttpServletRequest request ){ return !( isAdminMode(session) && (isEditMode(session) || isPreviewMode(session))); } + /** + * Activate the Edit or preview mode in session depending of the content state + * @param request Http request + * @param contentLocked boolean is the content locked + * @param canLock boolean can the user loc the content + */ + public static void setBackEndModeInSession( HttpServletRequest request, boolean contentLocked, boolean canLock ){ + HttpSession session = request.getSession(false); + if(contentLocked && canLock){ + session.setAttribute(com.dotmarketing.util.WebKeys.EDIT_MODE_SESSION, "true"); + session.setAttribute(com.dotmarketing.util.WebKeys.PREVIEW_MODE_SESSION, null); + session.setAttribute(com.dotmarketing.util.WebKeys.ADMIN_MODE_SESSION, "true"); + }else{ + session.setAttribute(com.dotmarketing.util.WebKeys.EDIT_MODE_SESSION, null); + session.setAttribute(com.dotmarketing.util.WebKeys.PREVIEW_MODE_SESSION, "true"); + session.setAttribute(com.dotmarketing.util.WebKeys.ADMIN_MODE_SESSION, "true"); + } + } + } diff --git a/dotCMS/src/main/webapp/html/portlet/ext/folders/order_menu.jsp b/dotCMS/src/main/webapp/html/portlet/ext/folders/order_menu.jsp index 0e1e61460415..1951d5394c87 100644 --- a/dotCMS/src/main/webapp/html/portlet/ext/folders/order_menu.jsp +++ b/dotCMS/src/main/webapp/html/portlet/ext/folders/order_menu.jsp @@ -40,7 +40,7 @@ function savechanges() { form = document.getElementById('fm'); form.cmd.value = "generatemenu"; form.action = ''; - form.action = form.action + serialize(); + document.getElementById('reorder_result').value = serialize(); submitForm(form); } function moveMenuItemDown(menuItem,parentFolder){ @@ -117,7 +117,7 @@ pagePath=<%=pagePath%> "> "> "> - +