<!-- 
RSS generated by JIRA (8.1.3#801003-sha1:6b6f07cffadda9a0d6efe24639daed8ce94dcdd6) at Sat Feb 10 05:49:31 GMT 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Rivet Logic Corporation JIRA </title>
    <link>https://issues.rivetlogic.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>8.1.3</version>
        <build-number>801003</build-number>
        <build-date>13-09-2019</build-date>
    </build-info>


<item>
            <title>[LRA-226] Create the suggestion box app</title>
                <link>https://issues.rivetlogic.com/browse/LRA-226</link>
                <project id="10765" key="LRA">Liferay Apps</project>
                    <description>The app should allow any portal user to submit suggestions. It should capture:&lt;br/&gt;
+ User name (non visible)&lt;br/&gt;
+ Date (non visible)&lt;br/&gt;
+ Suggestion category (using Liferay categories)&lt;br/&gt;
+ Suggestion title&lt;br/&gt;
+ Suggestion description&lt;br/&gt;
&lt;br/&gt;
the suggestion will be stored and the admin user will see a list of suggestion with this columns (should be able to sort by any column, by default it should be ordered by &amp;#39;date&amp;#39; new first and status &amp;#39;created&amp;#39;):&lt;br/&gt;
+ Submission Date&lt;br/&gt;
+ Category&lt;br/&gt;
+ Title&lt;br/&gt;
+ Status (created or received)&lt;br/&gt;
&lt;br/&gt;
Once the admin clicks on one of the suggestion she/he will see all the fields including now description and user. If the suggestion is not &amp;#39;received&amp;#39; yet she/he can enter a comment and receive it. If the suggestion is received then all fields will be readonly (including the date when it was received).&lt;br/&gt;
&lt;br/&gt;
The regular user can see a list of all the suggestions she/he has sent (should be able to sort by any column, by default it should be ordered by &amp;#39;date&amp;#39; new first and status &amp;#39;created&amp;#39;):&lt;br/&gt;
+ Submission Date&lt;br/&gt;
+ Category&lt;br/&gt;
+ Title&lt;br/&gt;
+ Status (created or received)&lt;br/&gt;
&lt;br/&gt;
Once the user clicks on one of the suggestion she/he will see all the fields and should be able to edit them or removed the suggestion if it is not received yet.&lt;br/&gt;
</description>
                <environment>It should work for liferay-portal-6.2.10.1-ee-ga1 and liferay-portal-6.2-ee-sp14&lt;br/&gt;
and liferay-portal-6.2.0-ce-ga1 and liferay-portal-6.2-ce-ga6</environment>
        <key id="60650">LRA-226</key>
            <summary>Create the suggestion box app</summary>
                <type id="3" iconUrl="https://issues.rivetlogic.com/secure/viewavatar?size=xsmall&amp;avatarId=11098&amp;avatarType=issuetype">Task</type>
                                            <priority id="3" iconUrl="https://issues.rivetlogic.com/images/icons/priorities/major.svg">Major</priority>
                        <status id="1" iconUrl="https://issues.rivetlogic.com/images/icons/statuses/open.png" description="The issue is open and ready for the assignee to start work on it.">Open</status>
                    <statusCategory id="2" key="new" colorName="blue-gray"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="manrique.varela">Manrique Varela [X]</assignee>
                                    <reporter username="mcalvo">mcalvo</reporter>
                        <labels>
                    </labels>
                <created>Mon, 15 Feb 2016 07:47:27 -0500</created>
                <updated>Thu, 7 Apr 2016 11:42:21 -0400</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                <comments>
                            <comment id="96365" author="mcalvo" created="Mon, 15 Feb 2016 07:53:19 -0500"  >As a reference you can see how something similar was implemented in this app:&lt;br/&gt;
&lt;a href=&quot;http://wiki.rivetlogic.com/display/LRA/Micro-site+Manager&quot;&gt;http://wiki.rivetlogic.com/display/LRA/Micro-site+Manager&lt;/a&gt;</comment>
                            <comment id="97249" author="mcalvo" created="Wed, 24 Feb 2016 11:00:12 -0500"  >Luis, the documentation for this app is here:&lt;br/&gt;
&lt;a href=&quot;http://wiki.rivetlogic.com/display/LRA/Suggestion+Box&quot;&gt;http://wiki.rivetlogic.com/display/LRA/Suggestion+Box&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
please ask Manrique for the link from where you can download the code.</comment>
                            <comment id="97256" author="manrique.varela" created="Wed, 24 Feb 2016 11:47:54 -0500"  >Luis, use this repo on my personal GitHub account  &lt;a href=&quot;https://github.com/manriquevarela/liferay-suggestion-box&quot;&gt;https://github.com/manriquevarela/liferay-suggestion-box&lt;/a&gt; </comment>
                            <comment id="97441" author="luis.hernandez" created="Fri, 26 Feb 2016 11:20:57 -0500"  >1 - [Bug] User can not edit a suggestion&lt;br/&gt;
&lt;br/&gt;
PRIORITY: &lt;br/&gt;
====================&lt;br/&gt;
Critical&lt;br/&gt;
&lt;br/&gt;
ENVIRONMENT: &lt;br/&gt;
==================== &lt;br/&gt;
LR Version: liferay-portal-6.2-ee-sp14&lt;br/&gt;
&lt;br/&gt;
REPRODUCIBILITY LEVEL: &lt;br/&gt;
==================== &lt;br/&gt;
Always &lt;br/&gt;
&lt;br/&gt;
STEPS: &lt;br/&gt;
==================== &lt;br/&gt;
1. Go to any page with the suggestions box portlet (configured previously)&lt;br/&gt;
2. Create a new suggestion as the next:&lt;br/&gt;
-Category: Any&lt;br/&gt;
-Title: Test update&lt;br/&gt;
-Description: Update this&lt;br/&gt;
&lt;br/&gt;
Click on &#8220;Save&#8221;&lt;br/&gt;
&lt;br/&gt;
3. Click on the options dropdown list, and click on &#8220;Edit&#8221;&lt;br/&gt;
4. Update any field, e.g: Description&lt;br/&gt;
5. Click on &#8220;Save&#8221;&lt;br/&gt;
&lt;br/&gt;
CURRENT RESULT: &lt;br/&gt;
==================== &lt;br/&gt;
Step 5: Two error message are displayed and the suggestion is not updated&lt;br/&gt;
Errors:&lt;br/&gt;
-&#8221;Your request failed to complete.&#8221;&lt;br/&gt;
-&#8221;You do not have permission to perform that operation.&#8221;&lt;br/&gt;
&lt;br/&gt;
Watch the next video:&lt;br/&gt;
&lt;a href=&quot;http://screencast.com/t/eLBvd9LqNihn&quot;&gt;http://screencast.com/t/eLBvd9LqNihn&lt;/a&gt; &lt;br/&gt;
&lt;br/&gt;
EXPECTED RESULT: &lt;br/&gt;
==================== &lt;br/&gt;
If the user was created the suggestion, that user should be able to update the suggestion.&lt;br/&gt;
&lt;br/&gt;
--Verified as fixed on 01-03-2016, resolution for this: Fixed--</comment>
                            <comment id="99871" author="mcalvo" created="Thu, 7 Apr 2016 11:42:11 -0400"  >I created a new suggestion, the admin users gets the notification. Then before the admin user clicks the notification link the suggestion was removed, and the admin user gets non self explanatory error and the console shows this:&lt;br/&gt;
&lt;br/&gt;
Apr 06, 2016 11:08:04 PM org.apache.catalina.startup.HostConfig deployDirectory&lt;br/&gt;
INFO: Deployment of web application directory /devm/liferay-portal-6.2-ee-sp14/tomcat-7.0.62/webapps/suggestion-box-portlet has finished in 2,406 ms&lt;br/&gt;
17:21:07,184 ERROR [http-bio-8080-exec-7][AutoLoginFilter:262] Current URL / generates exception: com.liferay.portal.kernel.exception.SystemException: com.liferay.util.EncryptorException: com.liferay.util.EncryptorException: javax.crypto.BadPaddingException: Given final block not properly padded&lt;br/&gt;
17:23:27,172 WARN  [liferay/mail-1][MailEngine:600] Failed to connect to a valid mail server. Please make sure one is properly configured. Could not connect to SMTP host: localhost, port: 25&lt;br/&gt;
17:24:42,500 ERROR [http-bio-8080-exec-4][AutoLoginFilter:262] Current URL /web/guest/test-suggestions generates exception: com.liferay.portal.kernel.exception.SystemException: com.liferay.util.EncryptorException: com.liferay.util.EncryptorException: javax.crypto.BadPaddingException: Given final block not properly padded&lt;br/&gt;
19:39:23,728 WARN  [http-bio-8080-exec-1][SuggestionPersistenceImpl:3171] No Suggestion exists with the primary key 3&lt;br/&gt;
Apr 07, 2016 7:39:23 PM org.apache.catalina.core.ApplicationDispatcher invoke&lt;br/&gt;
SEVERE: Servlet.service() for servlet jsp threw exception&lt;br/&gt;
com.rivetlogic.suggestionbox.NoSuchSuggestionException: No Suggestion exists with the primary key 3&lt;br/&gt;
	at com.rivetlogic.suggestionbox.service.persistence.SuggestionPersistenceImpl.findByPrimaryKey(SuggestionPersistenceImpl.java:3174)&lt;br/&gt;
	at com.rivetlogic.suggestionbox.service.persistence.SuggestionPersistenceImpl.findByPrimaryKey(SuggestionPersistenceImpl.java:3192)&lt;br/&gt;
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;br/&gt;
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)&lt;br/&gt;
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&lt;br/&gt;
	at java.lang.reflect.Method.invoke(Method.java:606)&lt;br/&gt;
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:320)&lt;br/&gt;
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)&lt;br/&gt;
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)&lt;br/&gt;
	at com.liferay.portal.dao.shard.advice.ShardPersistenceAdvice.invoke(ShardPersistenceAdvice.java:54)&lt;br/&gt;
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)&lt;br/&gt;
	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)&lt;br/&gt;
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)&lt;br/&gt;
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)&lt;br/&gt;
	at com.sun.proxy.$Proxy570.findByPrimaryKey(Unknown Source)&lt;br/&gt;
	at com.rivetlogic.suggestionbox.service.base.SuggestionLocalServiceBaseImpl.getSuggestion(SuggestionLocalServiceBaseImpl.java:231)&lt;br/&gt;
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;br/&gt;
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)&lt;br/&gt;
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&lt;br/&gt;
	at java.lang.reflect.Method.invoke(Method.java:606)&lt;br/&gt;
	at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:115)&lt;br/&gt;
	at com.liferay.portal.spring.transaction.DefaultTransactionExecutor.execute(DefaultTransactionExecutor.java:62)&lt;br/&gt;
	at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:51)&lt;br/&gt;
	at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)&lt;br/&gt;
	at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:175)&lt;br/&gt;
	at com.sun.proxy.$Proxy569.getSuggestion(Unknown Source)&lt;br/&gt;
	at com.rivetlogic.suggestionbox.service.SuggestionLocalServiceUtil.getSuggestion(SuggestionLocalServiceUtil.java:202)&lt;br/&gt;
	at org.apache.jsp.html.suggestionbox.edit_005fadmin_005fsuggestion_jsp._jspService(edit_005fadmin_005fsuggestion_jsp.java:287)&lt;br/&gt;
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)&lt;br/&gt;
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)&lt;br/&gt;
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)&lt;br/&gt;
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)&lt;br/&gt;
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)&lt;br/&gt;
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)&lt;br/&gt;
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)&lt;br/&gt;
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)&lt;br/&gt;
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)&lt;br/&gt;
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:119)&lt;br/&gt;
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)&lt;br/&gt;
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)&lt;br/&gt;
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)&lt;br/&gt;
	at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:604)&lt;br/&gt;
	at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:543)&lt;br/&gt;
	at com.liferay.portlet.PortletRequestDispatcherImpl.dispatch(PortletRequestDispatcherImpl.java:331)&lt;br/&gt;
	at com.liferay.portlet.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:112)&lt;br/&gt;
	at com.liferay.util.bridges.mvc.MVCPortlet.include(MVCPortlet.java:362)&lt;br/&gt;
	at com.liferay.util.bridges.mvc.MVCPortlet.include(MVCPortlet.java:378)&lt;br/&gt;
	at com.liferay.util.bridges.mvc.MVCPortlet.doDispatch(MVCPortlet.java:311)&lt;br/&gt;
	at javax.portlet.GenericPortlet.render(GenericPortlet.java:262)&lt;br/&gt;
	at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:103)&lt;br/&gt;
	at com.liferay.portlet.ScriptDataPortletFilter.doFilter(ScriptDataPortletFilter.java:55)&lt;br/&gt;
	at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:100)&lt;br/&gt;
	at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:64)&lt;br/&gt;
	at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:112)&lt;br/&gt;
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)&lt;br/&gt;
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)&lt;br/&gt;
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)&lt;br/&gt;
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)&lt;br/&gt;
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:119)&lt;br/&gt;
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)&lt;br/&gt;
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)&lt;br/&gt;
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)&lt;br/&gt;
	at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:604)&lt;br/&gt;
	at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:543)&lt;br/&gt;
	at com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:583)&lt;br/&gt;
	at com.liferay.portlet.InvokerPortletImpl.invokeRender(InvokerPortletImpl.java:656)&lt;br/&gt;
	at com.liferay.portlet.InvokerPortletImpl.render(InvokerPortletImpl.java:362)&lt;br/&gt;
	at org.apache.jsp.html.portal.render_005fportlet_jsp._jspService(render_005fportlet_jsp.java:1239)&lt;br/&gt;
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)&lt;br/&gt;
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)&lt;br/&gt;
	at com.liferay.portal.servlet.DirectRequestDispatcher.include(DirectRequestDispatcher.java:57)&lt;br/&gt;
	at com.liferay.portal.servlet.ClassLoaderRequestDispatcherWrapper.doDispatch(ClassLoaderRequestDispatcherWrapper.java:78)&lt;br/&gt;
</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                        <customfield id="customfield_11470" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_11170" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i050pr:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10070" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>29277</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>