ContributionsMost RecentMost LikesSolutionsDifference between popularity and kudos.sum(weight) API v2 sort I'm curious what the difference is between the API v2 messages sort when using 'popularity' vs 'kudos.sum(weight)'. The docs say that 'popularity' is based on kudos, so are those two sorts the same or different? Thanks Re: List of Lithium jQuery eventsThanks for checking on this SuzieList of Lithium jQuery events Using events like this is very powerful in custom code: $(document).on('LITHIUM:lightboxOpenEvent', function () { // do stuff } Is there a comprehensive list of these jQuery events? One we'd like to know about now is something like "groupJoinSuccess" - does that exist? I suppose I could try to search through the bundled JS but haven't tried that yet. Thanks! cc: SuzieH, JohnD API call for pending group requests? This count is rendered in the group-stats component but I cannot find an API call to get this number. My objective is to make it easier to see a count of how many group requests are pending.. right now the pending/requests tab has no count and renders even if there aren't any pending requests. My next idea would be to render the group-stats widget and just grab the text with Javascript, however the group-stats component is not rendering on the GroupMembersPage for me, only the GroupPage. Local javascript development strategies? Our team is trying to develop a solution to dev javascript locally. I don't think there is a solution for developing the @liaAddScript Javascript/jQuery in Freemarker files locally because that is bundled during deployment. I'm more interested in standalone files in web/html/assets/js or src/ - we have files in both places (one is a bundle and the others are standalone files). We'd like to do something like this: Serve up files from a local port Manipulate the DOM to remove the static file includes from the hosted site and replace with the local versions Watch file changes and reload accordingly We're working on this now, but I'd be interested to hear if others have found a good solution. My initial thoughts are that it will require a number of npm packages and some hacks to the way the @includeScript function works in dev environments. Any input is appreciated! Thanks Re: How to invite non-community members to a GroupThat's an interesting idea! There is, in fact, an API call that adds a user to a group: https://community.lithium.com/t5/Developer-Documentation/bd-p/dev-doc-portal?section=commv1&leaf-id=Group.add#Group.add You could likely use the coupon code to trigger the API call with restadmin in an endpoint and add the user to the group. Please share your progressRe: Truncate messages that get passed to email notificationsThis is a great question. Unfortunately, Velocity documentation isn't the best, here's what I've found: http://velocitycoder.com/string-substring-and-index-of/ #set ( $index = $notification.message.body.indexOf('</p>', 0) ) Have you tried using indexOf with a string value you know exists in the message? Might be good to check if the function is working correctly We plan to implement this at some point but haven't done any work. One consideration was using CSS max-height with some kind of fade mask effect. Support for max-height is a bit spotty though: https://www.campaignmonitor.com/css/box-model/max-height/ Good luck, please share updates if you find a good solutionRe: FreeMarker context object for a blog article on BlogArticlePage. "Teaser" refers to a text preview. You might be trying to get the "cover image".. in that case try this API v2 call https://community.lithium.com/t5/Developer-Documentation/bd-p/dev-doc-portal?section=commv2&collection=messages#fields-cover_image <#assign blogId = (page.context.message.uniqueId)! /> <#-- Then the v2 call is something like SELECT cover_image from messages WHERE id = '${blogId!}' --> Re: Create cookie in page initialization script returns log in issue The Common.init file can easily break your site. It's possible something with your code was slightly off, and that led to you losing access to all parts of the site (since it is in Common.init). Here's what I've used to set cookies in Common.init without any issues: <#assign newCookie = http.request.createCookie("cookieName", "value") /> ${newCookie.setMaxAge(28800)} <#--8 hours--> ${newCookie.setPath("/")} ${http.response.addCookie(newCookie)} Re: New Board Data from API Not Returning?Another thing that could be happening is you have boards that are inside a category restricted to certain user roles, or the boards themselves are restricted.. and the 'user' making the API call doesn't have these permissions.