dotCMS / core

Headless/Hybrid Content Management System for Enterprises
http://dotcms.com
Other
850 stars 467 forks source link

Develop Tabbed Interface Structure for Hidden Column #30016

Closed oidacra closed 10 hours ago

oidacra commented 2 weeks ago

Parent Issue

30014

Task

Create the tabbed interface structure for the hidden column, including the Info, History, and Settings tabs.

Proposed Objective

Same as Parent Issue

Proposed Priority

Same as Parent Issue

Acceptance Criteria

Screenshot 2024-09-16 at 11 38 21 AM

Assumptions & Initiation Needs

Quality Assurance Notes & Workarounds

hmoreras commented 9 hours ago

QA Note:

This task is to add the tabs only, the format of the contet of each tab will be worked in other tasks.

The History and Settings tabs are not available yet until the content is implmented. so currenty it looks like this:

image
victoralfaro-dotcms commented 7 hours ago

Docker image dotcms/dotcms:trunk_ec4a905

image image New section added, however Info tab is missing probably due to disclaimer mentioned in https://github.com/dotCMS/core/issues/30016#issuecomment-2384208157. image When adding new content, there is no Refresh icon displayed for Workflow. image Also seeing this error in the logs when saving contentlet:

dotcms-app-1  | 23:46:48.360  ERROR business.WorkflowAPIImpl - Failed to fire Workflow Action 'Save' [ceca71a0-deee-4999-bd47-b01baa1bcfc8]: Contentlet with ID 'Unknown/New' ['Test'] has invalid/missing field(s). - Fields: [REQUIRED]: URL Title (urlTitle)
dotcms-app-1  | 23:46:48.360  WARN  mapper.RuntimeExceptionMapper - Contentlet with ID 'Unknown/New' ['Test'] has invalid/missing field(s). - Fields: [REQUIRED]: URL Title (urlTitle)
dotcms-app-1  | com.dotmarketing.exception.DotRuntimeException: Contentlet with ID 'Unknown/New' ['Test'] has invalid/missing field(s). - Fields: [REQUIRED]: URL Title (urlTitle)
dotcms-app-1  |         at com.dotcms.util.ThreadContextUtil.wrapVoidNoReindex(ThreadContextUtil.java:88) ~[?:?]
dotcms-app-1  |         at com.dotmarketing.portlets.workflows.business.WorkflowAPIImpl.fireContentWorkflow(WorkflowAPIImpl.java:3380) ~[?:?]
dotcms-app-1  |         at com.dotcms.rest.api.v1.workflow.WorkflowResource.fireAction(WorkflowResource.java:2844) ~[?:?]
dotcms-app-1  |         at com.dotcms.rest.api.v1.workflow.WorkflowResource.fireActionSinglePart(WorkflowResource.java:4237) ~[?:?]
dotcms-app-1  |         at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?]
dotcms-app-1  |         at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:124) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:167) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:469) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:391) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:80) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:253) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.internal.Errors.process(Errors.java:292) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.internal.Errors.process(Errors.java:274) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.internal.Errors.process(Errors.java:244) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:232) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:679) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:392) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:365) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:318) ~[?:?]
dotcms-app-1  |         at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
dotcms-app-1  |         at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
dotcms-app-1  |         at com.dotmarketing.filters.CMSFilter.doFilterInternal(CMSFilter.java:198) ~[?:?]
dotcms-app-1  |         at com.dotmarketing.filters.CMSFilter.doFilter(CMSFilter.java:59) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
dotcms-app-1  |         at com.dotcms.filters.interceptor.AbstractWebInterceptorSupportFilter.doFilter(AbstractWebInterceptorSupportFilter.java:90) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
dotcms-app-1  |         at com.dotcms.filters.interceptor.AbstractWebInterceptorSupportFilter.doFilter(AbstractWebInterceptorSupportFilter.java:90) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
dotcms-app-1  |         at com.dotcms.visitor.filter.servlet.VisitorFilter.doFilter(VisitorFilter.java:95) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
dotcms-app-1  |         at com.dotcms.vanityurl.filters.VanityURLFilter.doFilter(VanityURLFilter.java:107) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
dotcms-app-1  |         at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176) ~[?:?]
dotcms-app-1  |         at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) ~[?:?]
dotcms-app-1  |         at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) ~[?:?]
dotcms-app-1  |         at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:389) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
dotcms-app-1  |         at com.dotmarketing.filters.TimeMachineFilter.doFilter(TimeMachineFilter.java:137) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
dotcms-app-1  |         at com.dotmarketing.filters.ThreadNameFilter.doFilter(ThreadNameFilter.java:88) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
dotcms-app-1  |         at com.dotmarketing.filters.CookiesFilter.doFilter(CookiesFilter.java:53) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
dotcms-app-1  |         at com.dotmarketing.filters.CharsetEncodingFilter.doFilter(CharsetEncodingFilter.java:99) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
dotcms-app-1  |         at com.dotcms.filters.interceptor.AbstractWebInterceptorSupportFilter.doFilter(AbstractWebInterceptorSupportFilter.java:90) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:129) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
dotcms-app-1  |         at com.dotcms.filters.NormalizationFilter.doFilter(NormalizationFilter.java:89) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:765) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[?:?]
dotcms-app-1  |         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) ~[?:?]
dotcms-app-1  |         at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) ~[?:?]
dotcms-app-1  |         at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[?:?]
dotcms-app-1  |         at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) ~[?:?]
dotcms-app-1  |         at org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.doRun(Nio2Endpoint.java:1732) ~[?:?]
dotcms-app-1  |         at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[?:?]
dotcms-app-1  |         at org.apache.tomcat.util.net.AbstractEndpoint.processSocket(AbstractEndpoint.java:1295) ~[?:?]
dotcms-app-1  |         at org.apache.tomcat.util.net.Nio2Endpoint.setSocketOptions(Nio2Endpoint.java:339) ~[?:?]
dotcms-app-1  |         at org.apache.tomcat.util.net.Nio2Endpoint$Nio2Acceptor.completed(Nio2Endpoint.java:479) ~[?:?]
dotcms-app-1  |         at org.apache.tomcat.util.net.Nio2Endpoint$Nio2Acceptor.completed(Nio2Endpoint.java:415) ~[?:?]
dotcms-app-1  |         at java.base/sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:129) ~[?:?]
dotcms-app-1  |         at java.base/sun.nio.ch.Invoker.invokeDirect(Invoker.java:160) ~[?:?]
dotcms-app-1  |         at java.base/sun.nio.ch.Invoker.invoke(Invoker.java:188) ~[?:?]
dotcms-app-1  |         at java.base/sun.nio.ch.UnixAsynchronousServerSocketChannelImpl.onEvent(UnixAsynchronousServerSocketChannelImpl.java:194) ~[?:?]
dotcms-app-1  |         at java.base/sun.nio.ch.EPollPort$EventHandlerTask.run(EPollPort.java:305) ~[?:?]
dotcms-app-1  |         at java.base/sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:113) ~[?:?]
dotcms-app-1  |         at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
dotcms-app-1  |         at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
dotcms-app-1  |         at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]
dotcms-app-1  | Caused by: com.dotmarketing.portlets.workflows.business.DotWorkflowException: Contentlet with ID 'Unknown/New' ['Test'] has invalid/missing field(s). - Fields: [REQUIRED]: URL Title (urlTitle)
dotcms-app-1  |         at com.dotmarketing.portlets.workflows.business.WorkflowAPIImpl.fireWorkflowPostCheckin(WorkflowAPIImpl.java:2452) ~[?:?]
dotcms-app-1  |         at com.dotmarketing.portlets.workflows.business.WorkflowAPIImpl.lambda$fireContentWorkflow$73(WorkflowAPIImpl.java:3380) ~[?:?]
dotcms-app-1  |         at com.dotcms.util.ThreadContextUtil.wrapVoidNoReindex(ThreadContextUtil.java:85) ~[?:?]
dotcms-app-1  |         ... 102 more
dotcms-app-1  | Caused by: com.dotmarketing.portlets.workflows.model.WorkflowActionFailureException: Contentlet with ID 'Unknown/New' ['Test'] has invalid/missing field(s). - Fields: [REQUIRED]: URL Title (urlTitle)
dotcms-app-1  |         at com.dotmarketing.portlets.workflows.actionlet.SaveContentAsDraftActionlet.executeAction(SaveContentAsDraftActionlet.java:132) ~[?:?]
dotcms-app-1  |         at com.dotmarketing.portlets.workflows.business.WorkflowAPIImpl.fireWorkflowPostCheckin(WorkflowAPIImpl.java:2423) ~[?:?]
dotcms-app-1  |         at com.dotmarketing.portlets.workflows.business.WorkflowAPIImpl.lambda$fireContentWorkflow$73(WorkflowAPIImpl.java:3380) ~[?:?]
dotcms-app-1  |         at com.dotcms.util.ThreadContextUtil.wrapVoidNoReindex(ThreadContextUtil.java:85) ~[?:?]
dotcms-app-1  |         ... 102 more
dotcms-app-1  | Caused by: com.dotmarketing.portlets.contentlet.business.DotContentletValidationException: Contentlet with ID 'Unknown/New' ['Test'] has invalid/missing field(s). - Fields: [REQUIRED]: URL Title (urlTitle)
dotcms-app-1  |         at com.dotcms.content.elasticsearch.business.ESContentletAPIImpl.validateContentlet(ESContentletAPIImpl.java:7385) ~[?:?]
dotcms-app-1  |         at com.dotcms.content.elasticsearch.business.ESContentletAPIImpl.validateContentlet(ESContentletAPIImpl.java:8131) ~[?:?]
dotcms-app-1  |         at com.dotmarketing.portlets.contentlet.business.ContentletAPIInterceptor.validateContentlet(ContentletAPIInterceptor.java:2271) ~[?:?]
dotcms-app-1  |         at com.dotcms.content.elasticsearch.business.ESContentletAPIImpl.internalCheckin(ESContentletAPIImpl.java:5391) ~[?:?]
dotcms-app-1  |         at com.dotcms.content.elasticsearch.business.ESContentletAPIImpl.lambda$checkin$59(ESContentletAPIImpl.java:5001) ~[?:?]
dotcms-app-1  |         at com.dotcms.concurrent.lock.StripedLockImpl.tryLock(StripedLockImpl.java:100) ~[?:?]
dotcms-app-1  |         at com.dotcms.concurrent.lock.StripedLockImpl.tryLock(StripedLockImpl.java:55) ~[?:?]
dotcms-app-1  |         at com.dotcms.concurrent.lock.IdentifierStripedLock.tryLock(IdentifierStripedLock.java:16) ~[?:?]
dotcms-app-1  |         at com.dotcms.content.elasticsearch.business.ESContentletAPIImpl.checkin(ESContentletAPIImpl.java:5000) ~[?:?]
dotcms-app-1  |         at com.dotcms.content.elasticsearch.business.ESContentletAPIImpl.checkin(ESContentletAPIImpl.java:4902) ~[?:?]
dotcms-app-1  |         at com.dotcms.content.elasticsearch.business.ESContentletAPIImpl.saveDraft(ESContentletAPIImpl.java:9566) ~[?:?]
dotcms-app-1  |         at com.dotmarketing.portlets.contentlet.business.ContentletAPIInterceptor.saveDraft(ContentletAPIInterceptor.java:2858) ~[?:?]
dotcms-app-1  |         at com.dotmarketing.portlets.workflows.actionlet.SaveContentAsDraftActionlet.executeAction(SaveContentAsDraftActionlet.java:120) ~[?:?]
dotcms-app-1  |         at com.dotmarketing.portlets.workflows.business.WorkflowAPIImpl.fireWorkflowPostCheckin(WorkflowAPIImpl.java:2423) ~[?:?]
dotcms-app-1  |         at com.dotmarketing.portlets.workflows.business.WorkflowAPIImpl.lambda$fireContentWorkflow$73(WorkflowAPIImpl.java:3380) ~[?:?]
dotcms-app-1  |         at com.dotcms.util.ThreadContextUtil.wrapVoidNoReindex(ThreadContextUtil.java:85) ~[?:?]
dotcms-app-1  |         ... 102 more