User menu ajax request
So I have added a couple of custom components to the user menu that slides out when someone clicks their username at the top of the community. The two new components are simply a 'my notifications' and 'private messages' and look like normal links in the menu. For each of these I use the API to get a number for each and if they exist I add those numbers to the menu item. The menu updates the notification and private message counters on the standard items at the top of the menu (the bell and envelope icons) BUT what I really want to do is apply that same logic to my custom components so they also get the numbers updated. Currently, they update when the page loads and gets the information from the API. Is there a way I can update my custom components so that they get the numbers via the ajax request?jaread838 years agoChampion282Views0likes8CommentsTwitter doesn't show preview image
Hi folks. Bit of a conundrum. Two Blog posts Both have the same teaser image One has an image in the post body (https://community.spotify.com/t5/Spotify-Community-Blog/The-Tip-Off-Mega-Ran/ba-p/1423394) One doesn't (https://community.spotify.com/t5/Spotify-Community-Blog/The-Tip-Off-PAUW/ba-p/1482837) Both have very similar metadata (twitter and OG), yet, the second one, when posted to Twitter, doesn't show an image Sample data from both posts' source (I truncated some of the content to fit better). Working: <meta name="twitter:card" content="summary_large_image"/> <meta name="twitter:image" content="https://spotify.i.lithium.com/t5/image/serverpage/image-id/37601i6AF38D36D2B5161A/image-size/original?v=v2&px=-1"/> <meta name="twitter:site" content="@K1NGJ1M"/> <meta name="twitter:title" content="The Tip-Off: Mega Ran"/> <meta name="twitter:description" content="Underground Rap + 8bit beats + Final Fantasy VII = Mega Ran (Random) "/> <meta property="og:image" content="https://spotify.i.lithium.com/t5/image/serverpage/image-id/37601i6AF38D36D2B5161A?v=v2"/> <meta property="og:url" content="https://community.spotify.com/t5/Spotify-Community-Blog/The-Tip-Off-Mega-Ran/ba-p/1423394"/> <meta property="og:description" content=" Underground Rap + 8bit beats + Final Fantasy VII = Mega Ran (Random)"/> <meta content="The Tip-Off: Mega Ran" property="og:title"/> Not working: <meta name="twitter:card" content="summary_large_image"/> <meta name="twitter:image" content="https://spotify.i.lithium.com/t5/image/serverpage/image-id/53278i6A38FD1C959B4D63/image-size/original?v=v2&px=-1"/> <meta name="twitter:title" content="@roreyjones" name="twitter:site"/> <meta name="twitter:description" content="Tame Impala + The Doors + edgy, raw rock = PAUW. W"/> <meta property="og:image" content="https://spotify.i.lithium.com/t5/image/serverpage/image-id/53278i6A38FD1C959B4D63?v=v2"/> <meta property="og:url" content="https://community.spotify.com/t5/Spotify-Community-Blog/The-Tip-Off-PAUW/ba-p/1482837"/> <meta property="og:description" content="Tame Impala + The Doors + edgy, raw rock = PAUW. Wha"/> <meta content="The Tip-Off: PAUW" property="og:title"/> Anyone know what's going on?99Views0likes1CommentIn board merge API Is there any query parameter which can prevent/stop the email notifications?
Hi I am moving messages from one board to another using REST API's and I do not want to notify anybody. I want to turned off notifications. Is there any Query parameter or any node level setting that can prevent the notification. Thanks, Abhijeetabhijeet_raut8 years agoContributor141Views0likes2CommentsREST API v2 URL?
Can I submit LiQL queries through url requests? I need to do some filtering and data retreival that v1 does not allow. Specifically, given a node $display_id, I need the $id, $thread_id, $author_id, $body, and $post_date of all messages posted since $last_checked_date. The $display_id and $last_checked_date are variables that I wanted to provide in the url. I can almost do this with the.../restapi/vc/boards/id/$display_id/messages/linear?message_viewer.topic_sort_order=last_post_date&page=1 endpoint but it does not provide the message body. This would require me to make an individual REST API request for each message to get the body. I am hoping to accomplish this through REST API v2 but could also fall back to a custom endpoint (even though I hate freemarker ;) ).196Views0likes3Commentsopen API for joining or leaving groups
We are currently in the process of redesigning our group pages. My developer says he has searched high and low in the lithosphere, and cannot figure out if Lithium has any open APIs for joining or leaving a group? Do they exist? Thanks!Solvedbbraglio8 years agoExpert367Views0likes5Comments- ikogan8 years agoContributor156Views0likes4Comments
Rest Call to Invite User to Group
Whenever I do make an invite call:http://community.lithium.com/community-name/restapi/vc/groups/id/video_cards/invite, I always get a this error code: {"code":303,"message":"Permission Denied"} I've checked everything I can think of: session token for the call, permission of user (Rest_API and Administrator), and permission of user in the group (GroupAdmin with everything granted). I've sent invites to different users and I've tried different groups, but I always get the same "Permission Denied" message. Any help would be appreciated. Thanksmoconnor58 years agoAdept162Views0likes4CommentsLIQL Query To Get Messages With Labels Or Tags
I want to write a LIQL query which retrieves messages with Tags/Labels. I currently get a separate query for tags & labels in the response. Current Query SELECT subject,body,view_href,post_time_friendly,metrics.views,kudos.sum(weight) from messages where category.id in ('Discussion') and depth=0 ORDER BY post_time DESCvedagarw8 years agoGuide279Views0likes3CommentsREST APIs not returning all containers
I'm having issues with not getting correct responses back from the REST API myurl.com/restapi/vc/blogs returns <?xml version="1.0" encoding="utf-8" standalone="yes"?> <response status="success"> <blogs/> </response> despite the fact that there is a system blog. Similarly, a call to myurl.com/restapi/vc/categories/id/Prepaid/boards returns two boards - but that category has three boards, not two. And it's not an issue of not being able to access the missing board, since if I query for it directly using its ID, I get its details returned successfully Is this a known issue?Solvedleheinlein8 years agoContributor340Views0likes9Comments403 Forbidden Rest API Call
Hi, We make the same API call every 15 minutes to read our forums. The call works sometimes, but the majority of the time, the call is returning a 403 forbidden error: Method failed with STATUS_CODE 403 RETURNING NULL: HTTP/1.1 403 Forbidden Why would the same exact call be forbidden sometimes and then 15 minutes later work? Is the ownership/permissions incorrect? How can this be the case, if it works sometimes?matthew_d8 years agoMentor166Views0likes2CommentsLIQL queries and white spaces in freemarker
If I'm in the Studio option and go to the API call (LIQL) i can create a query such as: SELECT * FROM messages WHERE labels.text = "Hello World" This would return results correctly. But if i were to use <#assign x= rest("2.0b","/search?q=" + "SELECT *FROM messages WHERE labels.text = "Hello World"?url) /> It would show empty results. I'm assuming this is because the URL renders %20 for the whitespace. Is there anyway to work around this? ThanksSolved167Views0likes2CommentsRest call to get most active forum topics across community
Is there a REST call that will let me get the most commented onforum topics for a time period, that only pulls from forums, but can pull from all the forums in a community? We need "the most active" topics pulled into a widget. We are doing something similar with getting most replies to any posts, but it only pulls from a certain category, and pulls from all types of posts. We did that using this: categories/id/[id]/search/messages?q=is_root:true&sort_by=-replies&rangeTime=1M&restapi.response_style=view&restapi.format_detail=full_list_element If we could get the same stuff back, but for only topics and across the whole community, that would be great. Thanks in advance for any help.Solvedjordanepotter8 years agoMentor299Views1like6Commentscontact deflection form
Hi everyone - has anyone developed an experience where a customer begins submitting a question to a support form, and gets knowledge and/or community posts suggested to them based on what they are typing? I am looking for examples as well as some info on the effort involved to implement it. Is there anything "out of the box" to Lithium (like Active Cast widgets etc) that you used? Did you customize the search form component in some way? Thanks!lradden8 years agoMaven197Views1like6CommentsCustom form to submit message
Hi there. I'm hoping someone's done this already and won't mind sharing some insights, before I possibly start reinventing the proverbial wheel. I'm looking to get rid of Google forms and use Lithium's native API to let users submit basic form inputs. My goal is to have a custom page where users answers some simple questions and upon submit, use the API to post a new forum message to a specific board. The user submitting the message wouldn't necessarily have access to this board, so I suppose restadmin would have to be used. Thanks.240Views0likes5CommentsAjax search Before Post (Freemarker)
Description This example shows how to create a Freemarker component that makes an AJAX call to the Lithium REST API using JQuery to render a list of messages that match a search word after you've typed your message subject and have taken the cursor out of the search box. Some important points that this example demonstrates: How to use the <@liaAddScript> directive to add javascript to the page that will render below Lithium core JavaScript The proper way to namespace your JavaScript and guard against collisions with other JavaScript on the page How to make an AJAX call to the Lithium REST API Requirements Lithium version 9.18 or higher, Lithium Studio How to add this to a Lithium community There are two parts to adding an AJAX search to a page: Add a text key to be passed into the AJAX search component. Create the custom component. To add a text key: Go to Studio > Text Editor. Click Search. This empty search opens the list of text keys that you can edit. In the Text Properties area, enter this custom text key. custom.component.ajax_search_before_post.results_label = You may be interested in these similar messages: Click Save. To add a custom component: In Studio, go to the Components tab. Click New Component to create a new component. Enter a name and click Save. For example, ajax-search-before-post. Add the following markup to the component and click Save. <#assign result_list_size = 3 /> <#assign subject_input_class = "lia-form-subject-input" /> <#assign results_label = text.format("custom.component.ajax_search_before_post.results_label") /> <@liaAddScript> ;(function($) { if (typeof LITHIUM.CUSTOMER == "undefined") { LITHIUM.CUSTOMER = {}; } if (typeof LITHIUM.CUSTOMER.EXAMPLE == "undefined") { LITHIUM.CUSTOMER.EXAMPLE = {}; } LITHIUM.CUSTOMER.EXAMPLE.AjaxSearch = function() { $(document).ready(function() { $(".${subject_input_class}").each(function(index, subject_input) { var subject_input = $(subject_input); subject_input.parent().append("<div class='ajax-message-subject-search-results'></div>"); subject_input.blur(function() { var subj_input = $(subject_input); var subjectValue = subj_input.val(); if (subjectValue.length > 0) { $.ajax({ type: "GET", url: "/${community.id}/restapi/vc/search/messages", data: ({ "q":subjectValue, "page_size":"${result_list_size}", "restapi.response_style":"view", "xslt":"json.xsl" }), success: function(result) { $(subj_input).parent().find(".ajax-message-subject-search-results").each(function(index, results_div) { if (result.response.messages == null || result.response.messages.message.length < 1) { results_div.empty(); } else { var msgMarkup = "<div><span>${results_label}</span></div>"; msgMarkup += "<table class='lia-list-wide'>"; $.each(result.response.messages.message, function(index, msg) { msgMarkup += "<tr><td><a href='" + msg.view_href + "'>" + msg.subject.$ + "</a></td></tr>"; }); msgMarkup += "</table>"; $(results_div).empty().append(msgMarkup); } }); } }); } }); }); }); }; })(LITHIUM.jQuery); LITHIUM.CUSTOMER.EXAMPLE.AjaxSearch(); </@liaAddScript> Example Go to the Code Sample 1 Example Page to see this in action.DougS8 years agoKhoros Oracle1.6KViews9likes12CommentsAdding a class to the <body> tag
Hello, Is there a way to add a class to the <body> tag for our community? For example: <body class="CategoryPage lia-body desktop" id="lia-body"> I am currently adding this class with javascript, but I would like to avoid this solution if possible. document.body.className += “ desktop”; Thanks, WaydeWStoverMDP8 years agoContributor157Views0likes2CommentsError in post preview
Hello everyone, I would like to reach you about an issue I am currently experiencing. Our team created a custom social bar tool for a Lithium community that looks like this So we don't use the native Lithium social bar. Everything works fine except the following point : When you create any kind of post and want to preview itbefore publishing it, you can click on preview, and see how it will looks like. Including the related social bar. Actually we get this : It seems the preview mode cannot display the social bar, it ends witha freemarker error. Our guess is when the news is still a draft and you use the preview to see it, the social bar can not get back the URL ot the page as it is a draft, so it ends with an error. FTL stack trace ("~" means nesting-related): - Failed at: #assign href = env.context.message.we... [in template "Barre_Sociale_Orange" at line 11, column 5] But if you publishthe news, there isno more issue. We are using the following code : <#if coreNode.id?lower_case == 'trucs-astuces' || coreNode.id?lower_case == 'testeursosh' || coreNode.id?lower_case == 'testsencours' || coreNode.id?lower_case == 'testsmobiles' || coreNode.id?lower_case == 'testsapplis' || coreNode.id?lower_case == 'accessoires' || coreNode.id?lower_case == 'bienvenue' || coreNode.id?lower_case == 'accessoires' || page.interactionStyle == 'tkb' || page.interactionStyle == 'contest'> <#assign hashtag = "#Sosh" /> <#if coreNode.id?lower_case == 'bienvenue'> <#assign hashtag = "#Sosh" /> <#if page.context.message??> <#assign shareTitle= page.context.message.subject /> <#assign href= page.context.message.webUi.url /> <#assign id= page.context.message.id /> <#else> <#assign shareTitle= env.context.message.subject /> <#assign href= env.context.message.webUi.url /> <#assign id= env.context.message.id /> </#if> <#elseif coreNode.id?lower_case == 'testeursosh' || coreNode.id?lower_case == 'testsencours' || coreNode.id?lower_case == 'testsmobiles' || coreNode.id?lower_case == 'testsapplis' || coreNode.id?lower_case == 'accessoires' > <#assign hashtag = "#testeurSosh" /> <#if page.context.message??> <#assign shareTitle= page.context.message.subject /> <#assign href= page.context.message.webUi.url /> <#assign id= page.context.message.id /> <#else> <#assign shareTitle= env.context.message.subject /> <#assign href= env.context.message.webUi.url /> <#assign id= env.context.message.id /> </#if> <#elseif page.interactionStyle == 'tkb' || coreNode.id?lower_case == 'trucs-astuces' || page.interactionStyle == 'contest'> <#assign shareTitle= page.context.thread.topicMessage.subject /> <#assign id= page.context.thread.topicMessage.id/> <#assign href= http.request.url /> </#if> <div class="osocial-share" data-networks="facebook,twitter,googleplus" data-url="${href}?barresociale=2p" data-caption="" data-show-shared="true" data-twitter='{"text":"${shareTitle} ${hashtag}", "via":"Sosh_fr"}' data-enable-tracking="true" data-tracking-mode="comscore" data-comscore-tag="communauteSosh,barre_de_partage" data-skin="color"> </div> </#if> Any idea about how to fix the preview mode ? I hope I am clear, in any case thank you for your advice. Thomas See the freemarker template error here : FreeMarker template error (HTML_DEBUG mode; use RETHROW in production!) An error has occurred when reading existing sub-variable "url"; see cause exception! The type of the containing value was: extended_hash+string (lithium.eval.velocity.MessageWebUiTemplateModel wrapped into f.e.b.StringModel) ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign href = env.context.message.we... [in template "Barre_Sociale_Orange" at line 11, column 5] ---- Java stack trace (for programmers): ---- freemarker.core._TemplateModelException: [... Exception message was already printed; see it above ...] at freemarker.ext.beans.BeanModel.get(BeanModel.java:199) at freemarker.core.Dot._eval(Dot.java:40) at freemarker.core.Expression.eval(Expression.java:78) at freemarker.core.Assignment.accept(Assignment.java:131) at freemarker.core.Environment.visit(Environment.java:324) at freemarker.core.MixedContent.accept(MixedContent.java:54) at freemarker.core.Environment.visitByHiddingParent(Environment.java:345) at freemarker.core.IfBlock.accept(IfBlock.java:48) at freemarker.core.Environment.visit(Environment.java:324) at freemarker.core.MixedContent.accept(MixedContent.java:54) at freemarker.core.Environment.visitByHiddingParent(Environment.java:345) at freemarker.core.IfBlock.accept(IfBlock.java:48) at freemarker.core.Environment.visit(Environment.java:324) at freemarker.core.MixedContent.accept(MixedContent.java:54) at freemarker.core.Environment.visitByHiddingParent(Environment.java:345) at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:48) at freemarker.core.Environment.visit(Environment.java:324) at freemarker.core.Environment.process(Environment.java:302) at freemarker.template.Template.process(Template.java:325) at lithium.template.CustomTemplateFreeMarkerParser.parseInlineTemplateThrowException(CustomTemplateFreeMarkerParser.java:161) at lithium.template.CustomTemplateFreeMarkerParser.parseInlineTemplate(CustomTemplateFreeMarkerParser.java:183) at $CustomTemplateParser_3dc0fe57944ca7.parseInlineTemplate(Unknown Source) at $CustomTemplateParser_3dc0fe57944bd2.parseInlineTemplate(Unknown Source) at lithium.web2.services.layout.CustomComponentTemplateRenderable.render(CustomComponentTemplateRenderable.java:74) at lithium.tapestry.services.components.CssClassRenderableDecorator$1.render(CssClassRenderableDecorator.java:64) at org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:72) at org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:124) at org.apache.tapestry5.internal.services.PageRenderQueueImpl$1.renderMarkup(PageRenderQueueImpl.java:142) at lithium.tapestry.services.internal.InternalComponentRenderer$1.renderMarkup(InternalComponentRenderer.java:155) at org.apache.tapestry5.internal.services.PageRenderQueueImpl$Bridge.renderMarkup(PageRenderQueueImpl.java:62) at org.apache.tapestry5.internal.services.PageRenderQueueImpl.renderPartial(PageRenderQueueImpl.java:159) at $PageRenderQueue_3dc0fe57944c87.renderPartial(Unknown Source) at $PageRenderQueue_3dc0fe57944c86.renderPartial(Unknown Source) at org.apache.tapestry5.internal.services.PartialMarkupRendererTerminator.renderMarkup(PartialMarkupRendererTerminator.java:45) at lithium.web2.services.feedback.FeedbackTapestryModule$1.renderMarkup(FeedbackTapestryModule.java:57) at $PartialMarkupRenderer_3dc0fe579451d4.renderMarkup(Unknown Source) at lithium.web.javascript.tapestry.services.JavaScriptTapestryModule$2.renderMarkup(JavaScriptTapestryModule.java:161) at $PartialMarkupRenderer_3dc0fe579451d4.renderMarkup(Unknown Source) at org.apache.tapestry5.services.TapestryModule$37.renderMarkup(TapestryModule.java:2141) at $PartialMarkupRenderer_3dc0fe579451d4.renderMarkup(Unknown Source) at org.apache.tapestry5.services.TapestryModule$36.renderMarkup(TapestryModule.java:2125) at $PartialMarkupRenderer_3dc0fe579451d4.renderMarkup(Unknown Source) at org.apache.tapestry5.services.TapestryModule$35.renderMarkup(TapestryModule.java:2107) at $PartialMarkupRenderer_3dc0fe579451d4.renderMarkup(Unknown Source) at org.apache.tapestry5.services.TapestryModule$34.renderMarkup(TapestryModule.java:2091) at $PartialMarkupRenderer_3dc0fe579451d4.renderMarkup(Unknown Source) at org.apache.tapestry5.services.TapestryModule$33.renderMarkup(TapestryModule.java:2073) at $PartialMarkupRenderer_3dc0fe579451d4.renderMarkup(Unknown Source) at org.apache.tapestry5.services.TapestryModule$32.renderMarkup(TapestryModule.java:2048) at $PartialMarkupRenderer_3dc0fe579451d4.renderMarkup(Unknown Source) at lithium.web.javascript.tapestry.services.JavaScriptTapestryModule$1.renderMarkup(JavaScriptTapestryModule.java:141) at $PartialMarkupRenderer_3dc0fe579451d4.renderMarkup(Unknown Source) at $PartialMarkupRenderer_3dc0fe57944cb6.renderMarkup(Unknown Source) at lithium.tapestry.services.internal.InternalComponentRenderer.renderPartial(InternalComponentRenderer.java:171) at lithium.tapestry.services.internal.InternalComponentRenderer.render(InternalComponentRenderer.java:388) at lithium.tapestry.services.internal.InternalComponentRenderer.getInternalComponentJsonObect(InternalComponentRenderer.java:324) at lithium.tapestry.services.internal.InternalComponentRenderer.getComponentJsonObject(InternalComponentRenderer.java:291) at $ComponentRenderer_3dc0fe57944b19.getComponentJsonObject(Unknown Source) at lithium.web2.components.message.MessageEditorForm.onSuccess(MessageEditorForm.java:1131) at lithium.web2.components.message.MessageEditorForm.dispatchComponentEvent(MessageEditorForm.java) at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:940) at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1117) at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3100(ComponentPageElementImpl.java:61) at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1062) at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1059) at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124) at org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:146) at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1058) at org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.triggerContextEvent(InternalComponentResourcesImpl.java:302) at lithium.web2.components.li.Form.advised$onAction_3dc0fe57944d56(Form.java:644) at lithium.web2.components.li.Form$Invocation_onAction_3dc0fe57944d55.proceedToAdvisedMethod(Unknown Source) at org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:84) at org.apache.tapestry5.ioc.internal.services.LoggingAdvice.advise(LoggingAdvice.java:37) at org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:86) at lithium.web2.components.li.Form.onAction(Form.java) at lithium.web2.components.li.Form.dispatchComponentEvent(Form.java) at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:940) at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1117) at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3100(ComponentPageElementImpl.java:61) at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1062) at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1059) at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124) at org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:146) at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1058) at org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler.handle(AjaxComponentEventRequestHandler.java:110) at org.apache.tapestry5.internal.services.ajax.AjaxFormUpdateFilter.handle(AjaxFormUpdateFilter.java:56) at $ComponentEventRequestHandler_3dc0fe57945673.handle(Unknown Source) at $ComponentEventRequestHandler_3dc0fe5794566b.handle(Unknown Source) at org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42) at $ComponentEventRequestHandler_3dc0fe5794566c.handle(Unknown Source) at org.apache.tapestry5.upload.internal.services.UploadExceptionFilter.handle(UploadExceptionFilter.java:75) at $ComponentEventRequestHandler_3dc0fe5794566c.handle(Unknown Source) at org.apache.tapestry5.services.TapestryModule$41.handle(TapestryModule.java:2476) at $ComponentEventRequestHandler_3dc0fe5794566c.handle(Unknown Source) at lithium.web2.services.text.TextVariantSetupComponentActionRequestFilter.handle(TextVariantSetupComponentActionRequestFilter.java:122) at $ComponentEventRequestHandler_3dc0fe5794566c.handle(Unknown Source) at org.apache.tapestry5.upload.internal.services.HackUploadExceptionFilter.handle(HackUploadExceptionFilter.java:83) at $ComponentEventRequestHandler_3dc0fe5794566c.handle(Unknown Source) at lithium.web2.services.actions.NoIndexAndNoFollowActionEventRequestFilter.handle(NoIndexAndNoFollowActionEventRequestFilter.java:54) at $ComponentEventRequestHandler_3dc0fe5794566c.handle(Unknown Source) at lithium.web2.services.ticketing.TicketingComponentActionRequestHandlerDecorator.handle(TicketingComponentActionRequestHandlerDecorator.java:187) at lithium.studio.web.common.services.publish.PublishWorkflowComponentEventRequestHandler.handle(PublishWorkflowComponentEventRequestHandler.java:57) at lithium.studio.web.common.services.StudioPublishPreviewComponentEventRequestHandlerDecorator.handle(StudioPublishPreviewComponentEventRequestHandlerDecorator.java:53) at lithium.web2.services.corenode.CoreNodeProviderComponentActionRequestHandlerDecorator.handle(CoreNodeProviderComponentActionRequestHandlerDecorator.java:72) at lithium.web2.services.exceptions.ExceptionComponentEventRequestHandlerDecorator.handle(ExceptionComponentEventRequestHandlerDecorator.java:72) at lithium.tapestry.services.parameter.ParameterMapServiceComponentActionRequestHandlerDecorator.handle(ParameterMapServiceComponentActionRequestHandlerDecorator.java:77) at lithium.lia.components.tapestry.services.page.CurrentPageComponentEventRequestHandlerDecorator.handle(CurrentPageComponentEventRequestHandlerDecorator.java:67) at $ComponentEventRequestHandler_3dc0fe57944b2f.handle(Unknown Source) at org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43) at org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39) at $ComponentRequestHandler_3dc0fe57944b31.handleComponentEvent(Unknown Source) at $ComponentRequestHandler_3dc0fe57944af1.handleComponentEvent(Unknown Source) at org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:46) at $Dispatcher_3dc0fe57944af6.dispatch(Unknown Source) at $Dispatcher_3dc0fe57944ab9.dispatch(Unknown Source) at org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:302) at lithium.web2.services.feature.PageVersionRequestFilter.service(PageVersionRequestFilter.java:183) at $RequestHandler_3dc0fe57944aba.service(Unknown Source) at lithium.web2.services.routes.RoutesFilter.service(RoutesFilter.java:109) at $RequestHandler_3dc0fe57944aba.service(Unknown Source) at lithium.web2.services.mobile.MobileRequestFilter.service(MobileRequestFilter.java:174) at $RequestHandler_3dc0fe57944aba.service(Unknown Source) at lithium.kudos.web.common.services.KudosRewriteFilter.service(KudosRewriteFilter.java:79) at $RequestHandler_3dc0fe57944aba.service(Unknown Source) at lithium.wireless.web.common.services.WirelessRequestFilter.service(WirelessRequestFilter.java:186) at $RequestHandler_3dc0fe57944aba.service(Unknown Source) at lithium.web2.services.seourl.SeoRequestFilter.service(SeoRequestFilter.java:80) at $RequestHandler_3dc0fe57944aba.service(Unknown Source) at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26) at $RequestHandler_3dc0fe57944aba.service(Unknown Source) at org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:902) at $RequestHandler_3dc0fe57944aba.service(Unknown Source) at org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:892) at $RequestHandler_3dc0fe57944aba.service(Unknown Source) at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90) at $RequestHandler_3dc0fe57944aba.service(Unknown Source) at $RequestHandler_3dc0fe57944aa3.service(Unknown Source) at org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:253) at lithium.appcreator.web.common.services.AppSelectorServletRequestFilter.service(AppSelectorServletRequestFilter.java:66) at $HttpServletRequestHandler_3dc0fe57944aa4.service(Unknown Source) at org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:44) at $HttpServletRequestHandler_3dc0fe57944aa4.service(Unknown Source) at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62) at $HttpServletRequestFilter_3dc0fe57944a9f.service(Unknown Source) at $HttpServletRequestHandler_3dc0fe57944aa4.service(Unknown Source) at lithium.web2.services.request.LiaContextHttpServletRequestFilter.service(LiaContextHttpServletRequestFilter.java:64) at $HttpServletRequestHandler_3dc0fe57944aa4.service(Unknown Source) at org.apache.tapestry5.services.TapestryModule$1.service(TapestryModule.java:852) at $HttpServletRequestHandler_3dc0fe57944aa4.service(Unknown Source) at $HttpServletRequestHandler_3dc0fe57944a77.service(Unknown Source) at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:171) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.HttpRequestContextFilter.doHttpFilter(HttpRequestContextFilter.java:77) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.ContentSecurityPolicyHeaderFilter.doHttpFilter(ContentSecurityPolicyHeaderFilter.java:66) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.MaskedIpFilter.doHttpFilter(MaskedIpFilter.java:84) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.HashedIpFilter.doHttpFilter(HashedIpFilter.java:166) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.boards.servlet.pagecache.AnonymousPageCacheManager.doHttpFilter(AnonymousPageCacheManager.java:139) at lithium.boards.servlet.pagecache.AnonymousPageCacheFilter.doHttpFilter(AnonymousPageCacheFilter.java:41) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.boards.servlet.pagecache.PageCacheManager.doHttpFilter(PageCacheManager.java:403) at lithium.boards.servlet.pagecache.PageCacheFilter.doHttpFilter(PageCacheFilter.java:42) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.device.ClientDeviceDetectionFilter.doHttpFilter(ClientDeviceDetectionFilter.java:249) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.banuser.BannedUserFilter.doHttpFilter(BannedUserFilter.java:129) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.traffic.visitor.VisitorFilter.doHttpFilter(VisitorFilter.java:42) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.session.OptimizelySessionFilter.doHttpFilter(OptimizelySessionFilter.java:102) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.session.UserSessionFilter.doHttpFilter(UserSessionFilter.java:255) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.MultipartRequestHttpFilter.doHttpFilter(MultipartRequestHttpFilter.java:46) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.MimeFilter.doHttpFilter(MimeFilter.java:37) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.limit.StandardLimitPool.processRequest(StandardLimitPool.java:588) at lithium.servlet.limit.StandardLimitManager.processRequest(StandardLimitManager.java:190) at lithium.servlet.limit.LimitFilter.doHttpFilter(LimitFilter.java:67) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.RequestTransformFilter.doHttpFilter(RequestTransformFilter.java:72) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.MetricsFilter.doHttpFilter(MetricsFilter.java:95) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.SetHeaderValidationFilter.doHttpFilter(SetHeaderValidationFilter.java:52) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.SessionIdStripperFilter.doHttpFilter(SessionIdStripperFilter.java:44) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.device.AgentDetectionFilter.doHttpFilter(AgentDetectionFilter.java:111) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.session.ReplicatedSessionFilter.doFilter(ReplicatedSessionFilter.java:57) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.rewrite.RewriteFilter.doHttpFilter(RewriteFilter.java:410) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.FacebookSignedRequestFilter.doHttpFilter(FacebookSignedRequestFilter.java:128) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.BlackboxFilter.doHttpFilter(BlackboxFilter.java:88) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.OperationsLoggingFilter.doHttpFilter(OperationsLoggingFilter.java:117) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.tracking.TrackingManager.doHttpFilter(TrackingManager.java:263) at lithium.servlet.tracking.TrackingFilter.doHttpFilter(TrackingFilter.java:25) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.boards.servlet.ClearStateFilter.doHttpFilter(ClearStateFilter.java:65) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.util.http.GenericFilter.doHttpFilter(GenericFilter.java:21) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.NotSecureSessionCookieFilter.doHttpFilter(NotSecureSessionCookieFilter.java:76) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.AccessCheckFilter.doHttpFilter(AccessCheckFilter.java:107) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.util.servlet.P3PHeaderFilter.doHttpFilter(P3PHeaderFilter.java:80) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.VanityHostnameRedirectFilter.doHttpFilter(VanityHostnameRedirectFilter.java:96) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.CanonicalIpFilter.doHttpFilter(CanonicalIpFilter.java:50) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.ForwardedHeadersFilter.doHttpFilter(ForwardedHeadersFilter.java:313) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.funnel.FunnelManager.doHttpFilter(FunnelManager.java:74) at lithium.servlet.funnel.FunnelFilter.doHttpFilter(FunnelFilter.java:41) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at lithium.util.http.DelegatingApplicationFilterProxy.doFilter(DelegatingApplicationFilterProxy.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.apps.main.container.filters.ApplicationSelectorFilter.doHttpFilter(ApplicationSelectorFilter.java:176) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.PutTomcatRequestinAttributeFilter.doFilter(PutTomcatRequestinAttributeFilter.java:60) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:57) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at lithium.servlet.ThreadNameFilter.doHttpFilter(ThreadNameFilter.java:49) at lithium.util.http.HttpFilter.doFilter(HttpFilter.java:44) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at lithium.apps.main.webserver.Tomcat70Bootstrap$3.invoke(Tomcat70Bootstrap.java:393) at lithium.apps.main.webserver.Tomcat70Bootstrap$2.invoke(Tomcat70Bootstrap.java:346) at lithium.apps.main.webserver.SessionIdValidator.invoke(SessionIdValidator.java:107) at lithium.apps.main.webserver.ApplicationWebserverConfigurationValve.invoke(ApplicationWebserverConfigurationValve.java:69) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:1458) at freemarker.ext.beans.BeanModel.invokeThroughDescriptor(BeanModel.java:255) at freemarker.ext.beans.BeanModel.get(BeanModel.java:159) ... 358 more Caused by: java.lang.IllegalArgumentException: BlogArticlePage requires a referenceable article or comment,but the provided article or comment isn't referenceable - TransientMessage[baseMessage=null,board=[blog'News' - CoreNode(class lithium.boards.core.Board)[SQLCoreNodeinfo: owner=-1 metricsId=311 hidden=true hiddenAncestor=false deleted=false nodeId=77 parentNodeId=3 type=DaoNodeTypeRef[nodeTypeUid=3] displayId='Bienvenue' path=NodePath:/1/3/, depth:3]],messageBean=MessageBean[authorUser=User[uid=329,login=llagouarde],parent=<null>,subject=Test,body=<p>Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum <span>Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum v Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum</span></p>,teaser=,bodyFormat=html,titles=[],postDate=Tue Oct 04 17:37:33 CEST 2016,languageCode=FR,attributeMask=4231424,attributeValues=256,revisionComment=<null>,minorEdit=<null>,revisionAttentionState=<null>,revision=<null>,extensionBeans={class lithium.coreapi.boards.message.listeners.FilterMessageListenerIdentifier$Parameters=lithium.coreapi.boards.message.listeners.FilterMessageListenerIdentifier$Parameters@1c045c27, class lithium.coreapi.metadata.MetadataTargetChangeData=lithium.coreapi.metadata.MetadataTargetChangeData@548e8db, class lithium.coreapi.subscription.SubscriptionModule$MessagePostParameters=lithium.coreapi.subscription.SubscriptionModule$MessagePostParameters@5db846be, class lithium.coreapi.boards.message.listeners.ScheduledPublicationMessageListenerIdentifier$Parameters=lithium.coreapi.boards.message.listeners.ScheduledPublicationMessageListenerIdentifier$Parameters@36e54d2e},reasonBoxData=lithium.coreapi.boards.ReasonBoxData@83edab1,propertyChanges=[],actionParameterOverrides={}],lastEditUsernull,lastEditDate=null] at lithium.coreapi.blogs.ui.BlogArticlePageLinkRef.<init>(BlogArticlePageLinkRef.java:90) at lithium.blogs.BlogDiscussionStyleBehavior.getPageLinkRefForMessage(BlogDiscussionStyleBehavior.java:306) at lithium.urls.legacy.MessageToPageLinkRefMapper.mapObjectToPageLinkRef(MessageToPageLinkRefMapper.java:40) at lithium.urls.legacy.MessageToPageLinkRefMapper.mapObjectToPageLinkRef(MessageToPageLinkRefMapper.java:29) at lithium.urls.UrlManager.getDefaultPageLinkRefForObject(UrlManager.java:579) at lithium.coreapi.webui.urls.impl.LithiumObjectToDefaultPageLinkRefMapperServiceImpl.toDefaultPageLinkRef(LithiumObjectToDefaultPageLinkRefMapperServiceImpl.java:51) at lithium.coreapi.webui.urls.impl.LithiumObjectToDefaultPageUrlMapperServiceImpl.toDefaultUrl(LithiumObjectToDefaultPageUrlMapperServiceImpl.java:52) at lithium.eval.velocity.MessageWebUiTemplateModel.getUrl(MessageWebUiTemplateModel.java:48) ... 365 moreXprime8 years agoHelper154Views0likes1CommentLooking for help to create a Custom 'Latest Discussions' component aka LiveCast instant messanger
Hi Lithium pros, I'm looking for some help with a custom component that can be configured to display messages from and enable posting to a single thread (by registered members) in a way that looks like instant messaging. It should be able to poll that thread via API to update rather frequently. ....................... I've created lots of custom components and pages, but not sure how to approach this one. Basically, the question is How to push to refresh API calls frequently that it looks aka LiveCast messaging without reloading? Any help much appreciated, I hope I'm not alone here and someone already done something alike.irach158 years agoMaven42Views0likes0CommentsCalling all Search Guru's - Where does the filter=label come from
Hi! We are currently doing some analysis on customer searches (collected from a survey) and simulating customer steps and the results they get from the search engine in the community. When I was looking at one search term I noticed that applying the search term to the search on the home page would produce more results than if I'd take the actual external data reference which is http://h30434.www3.hp.com/t5/forums/searchpage/tab/message?filter=labels&q=0x6101bed So, basically it seems the customer did the search on the community page, the search term is 0x6101bed When I do the search from the home page I get this. http://h30434.www3.hp.com/t5/forums/searchpage/tab/message?q=0x6101bed To my knowledge, we do not have an option for filtering by label anywhere, at least not from the path the customer took. Does anyone know what could have caused the filter=labels to be added to the url? Thanks! Wendy173Views1like4CommentsGet the posts for specified time range in V1 or V2
As per this reply fromNicoB, we need to find the posts in the community created within the last 1 week. Instead of the board, I am trying this call for category, but it is not working, though it is not working for board as well. Category: /restapi/vc/search/messages/count?q=category_id:CATEGORY_ID%20AND%20date:[1453870303%20TO%201454563405]&sort_by=date Board: /restapi/vc/search/messages/count?q=board_id:BOARD_ID%20AND%20date:[1453870303%20TO%201454563405]&sort_by=date Unfortunately, there is no way in V2 to get the posts in a timerange as it needs depth=0, which means it only fetch the topics, is there any other way in V2 to fetch posts/replies in a time range? Also, if I click the link in the screenshot below in NicoB’s post, it returns the result, but if I copy paste that in browser, it doesn’t, any reasons?275Views0likes5Comments"Unterminated String literal" error when append component
Hey guys, I'm trying to append a component (e.g. pagination) to my page using jQuery's append()-function: $("mySelector").append('<@component id="common.widget.pager"/>'); But this piece of code causes a "SyntaxError: unterminated string literal" on my console. I think the reason could be all the "\n" signs, which appear within the components code. Is there an option or a workaround to append a component with the .append()-function? Cheers, Christiancike8 years agoChampion245Views1like11Commentsswear filter wildcards
We have a few banned words that will replace content with [censored] after posting but we have found that a user can get around the swear filters by adding HTML to their post content between the letters of the banned word. This could be <em> tags, <span> etc etc. Example: <p>This is a ban<em>n</em><strong>e</strong>d word</p> This is a banned word I know it looks weird but imagine the word 'banned' was not allowed, it bypasses the swear filter. The user themselves were not swearing, they actually just altered our company name in a negative way which is against our forum rules. They had replaced part of the word with <em> tags and it got past our filter. Is there a way to detect html within a banned word and ensure that it gets censored/replaced?jaread838 years agoChampion81Views0likes1CommentREST API for Post common/response moderation
Does the REST API support moderation of responses to a post ? Original Issue:Lithium Case portal number -00127745 Does the below option for moderation available via REST API ? https://community.lithium.com/t5/Set-up-tasks-for-Admins/Set-up-team-response-approval-reviews/ta-p/170503 Use Case: Technical resource comments on a post which needs to be approved by moderator before goes out for public consumption. We are trying to see if there are REST API option for doing this. 1. User creates a topic or post 2. Community responds 3. A qualified engineer or technical resource answers a query or posts a solution 4. Technical resource has to go to moderator Q instead of general community users. Local moderator approves or modifies the message for community users and approves.Solvedrrajesh8 years agoGuide285Views0likes6CommentsList of Component ID's and Widgets
I was wondering if there was a list/document of all the component id's and widgets that can be used within the XML page editor. I'm trying to build my own custom page but I can't seem to find the actual Blog Article under the Component > Blog list. Either way, I'd still like to see if I can get my hands on all the component id's so that I can just work in XML entirely without having to rely on the WYSIWYG in Page editoryeeyang8 years agoAdept260Views1like2CommentsList of Lithiums Standard Components
Is there any list of all the standard lithium components which we can use in the customizations? Requirement: On the threads page, we need to display the following action buttons Bookmark Subscribe Via Email Float this item Mark as new There are some more, but is there any consolidated list of this?177Views1like4CommentsAre there LiQL JOINs?
Is there such a thing as a LiQL JOIN command? I can't find anything. Right now I have to use a really contorted combination of <#import "common-functions.ftl" as utils /> <#assign query1 = rest("2.0","/search?q = SELECT somestuff FROM sometable WHERE someid = '9' "/> <#list query1 as query1> <#assignquery2 = rest("2.0","/search?q = SELECT otherstuffFROM othertableWHERE someid = '${query1.id}' "/> </#list> Which, as you can see, is a pain. So, can we JOIN in LiQL?SolvedInactive User8 years ago221Views1like2CommentsHow do I get message id from Post Page?
On the Post Page, I would like to display a message based on the topic's age. To do this, I first need to retrieve the ID of the topic message that is being replied to. Thefollowing didn't yield any results... <#if page.context.thread??> <div>topicMessage: ${page.context.thread.topicMessage.uniqueId}</div> </#if> <#if page.context.message??> <div>message: ${page.context.message.uniqueId}</div> </#if> How should I be retrieving the topic message ID from the Post Page?Solveddustin8 years agoExpert406Views0likes6CommentsUpdate user profile key using REST API in freemarker
Hi, I need to update a user profile key in my custom endpoint. I know the REST API to be used here: /users/id/${user_id}/profiles/name/${key}/set?value=${value} But I am not able to post this request using following code: <#assign updateKey= restadmin("/users/id/${user_id}/profiles/name/${key}/set?value=${value}") /> Any help would be appreciated. Thanks, Madhukandulmadhu8 years agoAdvisor79Views0likes0CommentsIf no one's there to see it, does an endpoint still run?
I was curious.. I am on Page A. I have endpoint E. Endpoint E is supposed to do a api call to post to a database field. If I close page A before the endpoint reaches the post command, does it still post? Or does it abort as soon as I close page A?Solved81Views0likes2CommentsActive class on navigation / changing blog page for a secondary blog
Hi, Apologies for combining two questions into one post, but here goes: We recently used the blog structure to create a secondary blog, this has now been incorporated into our site but in the navigation the active class is defined by: ${(page.interactionStyle == 'blog')?string("active", "")} Unfortunately with both 'blogs' in the navigation this is giving both an active class when on either of the blog pages. Does anybody know how to make this more specific to a particular blog? How do we set the new blog to have a different 'Blog Article Page' to the main blog? I'm able to create the component, but not sure how to tell that blog to look for a specific page other than the default. Any help / advice appreciated. KevKev_B8 years agoAdvisor72Views0likes1CommentGet and set custom user meta field
Hi, We have created a custom meta field in the user object with the help of Lithium services. But, not able to access this data. Any idea how can we get and set the value of this custom user meta field with the help of its key? Thanks in advance, Madhukandulmadhu8 years agoAdvisor130Views1like1CommentShowing a custom list of messages
Hi, On the idea page i try to 'group' the status update posts, and put them on top of the comments. I tried 2 paths, both failing due (my) lack of lithium specific API knowledge. So i hope you guys can help me out. Case current situation: [New idea] [comment #1] [comment #2] [comment #3] [Status update #1] [comment #4] [Status update #2] prefered situation: [New idea] [Status update #1] [Status update #2] [comment #1] [comment #2] [comment #3] [comment #4] What did i do so far: option 1: <custom component> <#assign results_list_size = 20 /> <#assign rest_query = "select * from messages where conversation.style='idea' and depth>0 and topic.id='${idea_id}' and subject matches 'Status changed' limit "+ results_list_size /> <@component id="forums.widget.message-list-panel" messages="rest_2.0:/search?q="+rest_query?url style="wide" numMessages="conv:"+results_list_size /> This works but now i get the status updates nicely in a list panel. I can't seem to find the widget that allows to show a message object to show as a message. Does it even excists? Option 2: <custom compontent> <#assign statusUpdates = rest("2.0","/search?q=" + "select * from messages where conversation.style='idea' and depth>0 and topic.id='${idea_id}' and subject matches 'Status changed' limit 300"?url)/> <#if statusUpdates.data?has_content> <#list statusUpdates.data.items as thread> <#attempt> <#assign userRef = thread.author.id/> <#assign threadID = thread.id/> <#assign body = thread.body!""/> <#assign postTimeFrienly = thread.post_time_friendly!""/> <#assign new_status = ??????/> <#assign if_edited_original_author = ??????/> <div class="statusUpdates"> ${userRef}-${threadID}-${body}-${postTimeFrienly} </div> </#attempt> </#list> </#if> The only thing i can find is the CURRENT status of the parent (the original Idea) but not to what status this post it updated to. I guess the status update 'created' a new post, but i can't seem to find how to get the status updated states. Does any one know how to achieve this nicely? ( i can 'extract' it from the message subject, but that wouldnt be a nice solution) This still leaves me how to get the post/edited history of a message. I would prefer to get a solution option 1 style. if that cant do option2 would still be a nice work around.SolvedWillem8 years agoGuide353Views0likes4CommentsSearch API and OOB search
Hi, I am seeing different results set and order of results when using V1 search API call and using OOB search component. Issearch API not designed to mimic the OOB component ? Do we have some more logic addedin OOB search onresults and their order? I am assuming default V1 API search gives us results ordered by best sorting like OOB have Appreciate the help. Thanks, Sachinsachin8 years agoMentor78Views0likes1CommentUsing API to add labels to ideas
I need to add predefined labels to about 300 ideas that we recently migrated from Jive. Is there an easier way to add these labels (other than manually). I'm new to REST API but eager to learn - is the above an example of a task that could be accomplished using this method? thanks, LainieSolvedLainieH8 years agoExpert486Views0likes6CommentsHow to show only 5 posts?
Hi guys, I need to show only 5 posts. Somehow I am able to show the latest posts but My query is not working to show up only 5 posts: Following is the code I have done: <#list restadmin("/roles/name/Administrator/users").users.user as user> <#-- REST call to get the user's roles --> <#list restadmin("/users/id/${user.id}/posts/latest?page_size=5").messages.message as recent> <a href="${recent.@view_href}">${recent.subject}</a></br> </#list> </#list> Out put for the above code: Its showing more then 8 posts at front end Can any one tell me how can I show only 5 posts?Solvedbhupen8 years agoAdvisor603Views0likes26Comments- 148Views0likes4Comments
Custom Component: Hide Preview?
While creating a custom component for a carousel, some of my absolutely positioned elements in my component covered up the text area to input the code ... forcing me to delete the nodes in the browser's Inspector. Is there a way to at least temporarily disable the preview? It'd be a nice feature for cases like this:SolvedInactive User8 years ago129Views0likes2CommentsTrying to create API call that returns list of blog posts filtered by specific tag value
Hi, I am trying to create a rest api call that returns a list of blog posts related to a specific blog board ID, but filtered to only blogs that have a specific tag applied to them. For example, the first part of the URL returns the 5 most recent blogs in category defined by stated ID: http://community.lithium.com/community-name/restapi/vc/blogs/id/video_cards/topics/recent?page_size=5 I would like to apply a filter on top of that, which limits the returned blogs to only those that have a specific tag value. I have tried applying the tagging/for/tags/text/[tag_text] filter but cannot get it to work. Any help on correct syntax would be much appreciated. Thanks, Michaelmichaelaar8 years agoContributor227Views0likes5CommentsIs it possible to perform rest API call without rest permissions?
Hi, We would like to make REST API call by using "rest" FreeMarkercontext object without rest API grant permissions. Is it possible? Or is it mandatory to have rest API grant permission to use "rest" FreeMarker contextobject? Your help could be highly appreciated. Thanks & Regards, Srujana Satya Datlasatya8 years agoExpert67Views0likes1CommentRWD Maximum Width?
I've been reading all sorts of tutorials, documentation, etc. and I think I'm likely just missing the obvious. How does one set the maximum width of a community in the responsive design? I'm familiar with grids, XAML, and all that fun stuff, but I'm still stumped and every solution I've thought of would have adverse affects in other parts of the design. And I see where to set the breakpoints that use the min width, but nothing regarding max width. All I'm trying to do is tell my community as a whole that I don't want it ever being any wider than about 1000px (exact width TBD). This includes the header, components, footer, etc. Anything outside the max width should be the background color. Thanks!JillianB8 years agoGenius46Views0likes0CommentsIdentifying partially completed profiles
I'm currently investigating the use of deferred profile completion, e.g. auto-create partially completed community profiles based on our SSO login. The problem here is that some of our custom components require profile information - display name in particular - that is only available on completed user profiles . I'm currently looking for ways to detect if a user's profile is only partially completed and I'm checking the registration completed property. It tried to identify via the user Freemarker context objectand checking for user.anonymous == false && user.registered == false (since I expected an incompleted profile to be non-anonymous, but not registered yet), but unfortunately a partially registered user is user.registered :( Anyone knows a different - ideally non-API reliant - way to determine that partially registered profile status?Solved556Views0likes8CommentsIs there a way to use forums.widget.message-list-panel with API v2.0?
Hi! I want to build a component to display topics from a user posted to some specific boards (each on different categories) and I would like to use "forums.widget.message-list-panel" to display the results. So... 1) Is there a way to build such an API v1.0 search query to get that information? Something like: [...]/restapi/vc/search/messages?q=(board.id:board1 OR board.id:board5) AND user.id:JoeDoe 2) I know I can build that query using API v2.0, but is it compatible with "forums.widget.message-list-panel"? 3) Does anyone knows if there's any documentation on these Lithium OOB components? Things like how many of them exist and how to use them, for example. I can always create my own 'presentation' component, but I want to know if there's a way to use Lithium's components for consistency purposes. Thanks!Solvedfuenteso8 years agoLeader264Views1like4CommentsHow to identify requested url of a "Node Not Found" error
If a node does not exist, thecoreNode context object seems to revert to a default. Is there any way in freemarker to check what node the user was attempting to reach? I would ideally be performing this check in the common.init so that I can run some logic to either show the NNF error or initiate a redirect, depending on what node was requested.147Views0likes1Comment