Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Repair Jira Macros

Marketplace portlet

Info

This page is still in progress - more to come.

The marketplace portlet is a new way for users to find content faster and easier.  Presented similarly to mobile app stores, users can search, review, and see more about an portlet than ever before.

This can be used in conjunction with the gallery/customize drawer or can serve as a replacement.

 

Main Ideas

Marketplace registry search replaces standard registry search in the portal

Entry Page

...

Screenshots of this portlet in action!

Initial View:

Image Added

 

Clicking on the Title takes you straight to the portlet.  Clicking on details takes you to the entry page.

How to have portlet participate in entry page?

By Default, every app will have an entry page.  Ways to enhance.  Check out these default entry pages...

Image Added

Image Added

 

Now take a look at a more robust entry page:

Image Added

How to add screenshots

Add some screen shots in this format screen_shotx and corresponding captions as screen_shotx_caption.

Order doesn't matter, as shown below.  Captions are also optional.

Code Block
<portlet-preference>
<name>screen_shot2_caption</name>
<readOnly>true</readOnly>
<value>One Stop Shopping</value>
</portlet-preference>
<portlet-preference>
<name>screen_shot1</name>
<readOnly>true</readOnly>
<value>http://image.shutterstock.com/display_pic_with_logo/427597/141533524/stock-photo-marketplace-road-sign-141533524.jpg</value>
</portlet-preference>
<portlet-preference>
<name>screen_shot1_caption</name>
<readOnly>true</readOnly>
<value>The really cool marketplace</value>
</portlet-preference>
<portlet-preference>
<name>screen_shot2</name>
<readOnly>true</readOnly>
<value>http://thumb7.shutterstock.com/display_pic_with_logo/248635/135897425/stock-photo-a-vending-machine-with-the-words-buy-apps-here-and-many-app-tiles-and-icons-ready-to-be-bought-and-135897425.jpg</value>
</portlet-preference>

 

How to add versioning

Version Release notes is completely optional.  Not having these preferences will keep uPortal behaving the same as pre-marketplace.

...

Code Block
<portlet-preference>
     <name>Version<<name>Initial_Release_Date</name>
     <readOnly>true</readOnly>
     <value>1.0.0<<value>21-02-2010 00:04:00</value>
</portlet-preference>
<portlet-preference>
     <name>Release_Date</name>
     <readOnly>true</readOnly>
     <value>Feb 5, 2014<<value>15-09-2013 00:04:01</value>
</portlet-preference>
<portlet-preference>
     <name>Release_Notes</name>
     <readOnly>true</readOnly>
     <value>Responsive Design!</value>
     <value>Doesn't Break</value>
     <value>Adds the ability to have Screenshots</value>
     <value>Adds the ability for version notes</value>
     <value>Search works</value>
     <value>See your favorite apps</value>
</portlet-preference>

 

The only portlet-preference needed is Version.  Without this, the release date and release notes won't show.  If for some reason, the value in version is left blank, this section will not showInitial Release Date is optional. Initial release date is a Joda Time "DateTime" field. The value of the preference should be "dd-MM-yyyy HH:mm:ss".

Release Date is optional.  If not added, nothing will show.  If for some reason, the value is blank, but the preference is still there, this will not show Release date is a Joda Time DateTime field.  The value of it should be "dd-MM-yyyy HH:mm:ss".

Release Notes is optional and also can be of any length.  After 3 notes, the front end will not show until the more button is clicked on the entry page.  When clicked, all notes will be shown and the link will change text to 'Less'.  When clicked, this will once again hide the extra notes, and the text will once again display 'More'.  If any value is blank, a blank line with a dash will appear.

University of Wisconsin Mockup

 

 Image Removed

Implemented screenshots:

 

With more than threeImage Removedwhen the more button is clicked: Image Removed

 

How to add Related Apps?

The entry page will show related portlets.  A related app is an app that belongs to the same category or is in a sub category of a given app.  The related app section only appears when there are any related apps (ie, no empty list will ever appear) and the list is limited to five (configurable via a java field).  The list of portlets shown is randomized, so it gives a little bit more life to the entry page.

Image Added

 

How to limit what users can see in the initial view?

There are two portlet preferences that help.  

Code Block
languagexml
<portlet-preference>
    <name>showAllPortlets</name>
    <readOnly>true</readOnly>
    <value>true</value>
</portlet-preference>
<portlet-preference>
    <name>showManagedPortlets</name>
    <readOnly>true</readOnly>
    <value>true</value>
</portlet-preference>

 

The showAllPortlets preference is false by default.  This preference allows the marketplace to show all portlets regardless of permission to subscribe/manage.  If set to false or the preference is not included, it will default to show only the portlets that you have permission to subscribe to.

The showManagedPortlets is true by default.  This preference will add to the displayed set, portlets that a user can manage.  Note, that if showAllPortlets is true, the showAllPortlets set will already include any managed portlets.

Proposed: Add another preference to hide certain admin portlets.  So you can show all but a few (ex: Portal Administration)

Categories

Listed on every portlet's entry page is a list of categories that a portlet belongs too.  Clicking any of the categories will send the user back to the initial landing page with the category clicked in the filter.

Categories are also available for viewing on the initial landing page.  Clicking the category button will display all the categories that have portlets the user can view in the marketplace.  Because uPortal ships with a 'ALL CATEGORIES' category, there is a portlet preference that can be set to hide this 'root' category.  The default is to not show the 'root' category, so if this preference is not here, it won't show.  Here is the portlet preference example, where showing the root category will not be displayed:

Code Block
languagexml
<portlet-preference>
<name>showRootCategory</name>
<readOnly>true</readOnly>
<value>false</value>
</portlet-preference>

 

Here is a screenshot showing the categories displayed on the landing page, after the category button is clicked:

Image Added

Screenshot after the Entertainment category is clicked.  Notice the filtering!

Image Added

 

Featured Portlets!

In class org.jasig.portal.portlets.marketplace.PortletMarketplaceController is a static field:

private static String FEATURED_CATEGORY_NAME="Featured";

Any portlet with that as a category will become a "Featured" portlet.  Featured portlets are highlighted on the main landing page.  0 featured portlets and nothing (including the label) is shown.  If there is an odd number of featured portlets, the first appears in the middle, then the rest appears 2 per row.  The label is in the message.properties file for easy changing.

Image Added

 

Ratings!

Ratings are shown to the user on the entry page of a portlet.  User can select 1-5.  

 

Marketplace portlet entry pages include rating control.Image Added

 

Also, every portlet can be rated via the options menu!  1 rating per person per fname is allowed.  When the rating star system is displayed, it shows what the user had previously rated.  Of course, a user can always update their ratings and the appropriate places are updated.

Image Added

 

Rating also includes a text review component.  At this current time the only reviews you can see are your own.

The submit button submits both the rating and the review without page refreshing!  The submit button is disabled until the user gives a star rating.  The text component is optional.  There is a character remaining label to let the user know that only reviews up to 160 characters are allowed.  The text turns red when the characters get under 10 remaining.  The max length of reviews is configurable in this code block

Code Block
languagejava
titleIMarketplaceRating
collapsetrue
package org.jasig.portal.portlets.marketplace;
import org.jasig.portal.portlet.dao.jpa.MarketplaceRatingPK;
public interface IMarketplaceRating{
    public static final int MAX_RATING = 5;
    public static final int MIN_RATING = 0;
    public static final int REVIEW_MAX_LENGTH=160;

 

Go Button!

The go button will send the user to the portlet, a very nice way to use the portlet.

Image Added

 

Link Modal

Image Added

 

The long link is auto generated.  The short link is a portlet preference.

Code Block
languagexml
    <portlet-preference>
        <name>short_link</name>
        <readOnly>true</readOnly>
        <value>http://goo.gl/ALBYpJ</value>
    </portlet-preference>

 

First Epic Completed

Jira Legacy
serverSystem JIRA
serverIdd8d429a7-dc92-3696-85f0-1de5d4e9bcf6
keyUP-3955

Where is the code so far?

https://github.com/Jasig/uPortal/tree/marketplace

What this page still needs?

In addition to many things:

  • Filling out the sections
  • Creating an epic in jasig JIRA and copying University of Wisconsin's issues over
  • Screenshots should include screenshots of current production and of the mockups that UW designer created (this is what UW is specifically heading towards)

Who is interested in this work?

The University of Wisconsin is currently in a redesign and is working towards the mockups pictured above (when they get there).

Unlicensed user is actively working on this project at the UW.

  

Is this the end?

No.  UW has planned more improvements and is excited for other's suggestions and contributions.

What if I don't want to use this.

Turn off marketplace rating aggregation here by commenting these lines

Code Block
languagexml
titleuportal-war/src/main/resources/properties/portal.properties
################################################################################
##                                                                            ##
##                      Rating Aggregation Configuration                      ##
##                                                                            ##
################################################################################
# Every Six Hours
org.jasig.portal.aggr.PortletRatingAggregatorImpl.AggregatePortletRatingsPeriod=22284000
Code Block
languagexml
titleuportal-war/src/main/resources/properties/contexts/schedulerContext.xml
<task:scheduled ref="portletRatingAggregator" method="aggregatePortletRatings" fixed-delay="${org.jasig.portal.aggr.PortletRatingAggregatorImpl.AggregatePortletRatingsPeriod}" />

 

Turn off marketplace search results here by toggling the comment lines:

Code Block
languagexml
titleuportal-war/src/main/resources/properties/contexts/servicesContext.xml
<!--Toggle one of the next two via comment
        	Marketplace and PortletRegistry search are very similar.  Marketplace provides searching of
        	portlet preferences marked as screen_capture_x and will include a link to the marketplace
        	entry and possibly more to come
         -->
        <!--
        <bean class="org.jasig.portal.portlets.search.portletregistry.PortletRegistrySearchService"/>
        --> 
        <bean class="org.jasig.portal.portlets.marketplace.MarketplaceSearchService" />