added buttons for recent and VRE Folders, still missing the server side impl.

git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/user/workspace-widget-portlet@167375 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Massimiliano Assante 2018-05-08 16:02:03 +00:00
parent 212419b86b
commit e439e1855a
5 changed files with 98 additions and 6 deletions

View File

@ -5,8 +5,11 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import javax.portlet.ResourceRequest; import javax.portlet.ResourceRequest;
import javax.servlet.http.HttpServletRequest;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.common.portal.GCubePortalConstants;
import org.gcube.common.portal.PortalContext;
import org.gcube.common.storagehub.client.plugins.AbstractPlugin; import org.gcube.common.storagehub.client.plugins.AbstractPlugin;
import org.gcube.common.storagehub.client.proxies.ItemManagerClient; import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient; import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient;
@ -88,6 +91,27 @@ public class StorageHubServiceUtil {
return null; return null;
} }
public static String getWorkspaceFolderURL(HttpServletRequest request) {
String userName = Utils.getCurrentUser(request).getUsername();
String scope = Utils.getCurrentContext(request);
String authorizationToken = Utils.getCurrentUserToken(scope, userName);
SecurityTokenProvider.instance.set(authorizationToken);
String siteLandingPagePath = PortalContext.getConfiguration().getSiteLandingPagePath(request);
String toReturn = siteLandingPagePath;
try {
WorkspaceManagerClient wsclient = AbstractPlugin.workspace().build();
String itemId = wsclient.getVreFolder("hl:accounting").getId();
toReturn = new String(new StringBuffer(siteLandingPagePath)
.append(GCubePortalConstants.USER_WORKSPACE_FRIENDLY_URL)
.append("?itemid=")
.append(itemId));
}catch (Exception e) {
e.printStackTrace();
}
return toReturn;
}
} }

View File

@ -40,6 +40,11 @@ public class WorkspaceWidget extends MVCPortlet {
private static com.liferay.portal.kernel.log.Log _log = LogFactoryUtil.getLog(WorkspaceWidget.class); private static com.liferay.portal.kernel.log.Log _log = LogFactoryUtil.getLog(WorkspaceWidget.class);
public static String BREADCRUMB_ATTR = "BREADCRUMB_ATTR_name"; public static String BREADCRUMB_ATTR = "BREADCRUMB_ATTR_name";
/**
* all the AJAX calls are served by this method, to discriminate the operation we use the parameters:
* - when fileToDownloadId parameters is not empty the request is for a file download
* - when
*/
@Override @Override
public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws IOException, PortletException { public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws IOException, PortletException {
String fileToDownloadId = ParamUtil.getString(resourceRequest, "fileToDownloadId", null); String fileToDownloadId = ParamUtil.getString(resourceRequest, "fileToDownloadId", null);
@ -57,7 +62,7 @@ public class WorkspaceWidget extends MVCPortlet {
//the user is browsing the workspace //the user is browsing the workspace
else { else {
String cmd = ParamUtil.getString(resourceRequest, "cmd", ""); String cmd = ParamUtil.getString(resourceRequest, "cmd", "");
PortalUtil.getHttpServletRequest(resourceRequest); System.out.println("******** CMD="+cmd);
String selectedItemId = "root"; String selectedItemId = "root";
String selectedItemName = ""; String selectedItemName = "";
if (cmd != null && cmd.split("_selectedName").length > 1) { if (cmd != null && cmd.split("_selectedName").length > 1) {

View File

@ -1,3 +1,30 @@
.workspace-widget-portlet h1.portlet-title {
display: none;
}
.workspace-widget-portlet div.ws-breadcrumb-container > ul.breadcrumb {
padding-left: 0;
background-color: transparent;
}
.workspace-widget-portlet .ws-recents {
float: right;
text-align: right;
}
.workspace-widget-portlet .ws-recents a {
display: inline-flex;
vertical-align: middle;
align-items: center;
border-radius: 4px;
padding: 0 2px;
}
.workspace-widget-portlet .ws-recents a:hover {
cursor: pointer;
text-decoration: none;
background-color: #f1f1f1;
border: 1px solid #f1f1f1;
}
.workspace-widget-portlet table thead { .workspace-widget-portlet table thead {
background: #f8f8f8; background: #f8f8f8;
color: #0a0a0a; color: #0a0a0a;
@ -43,6 +70,7 @@
.workspace-widget-portlet select, input[type="file"] { .workspace-widget-portlet select, input[type="file"] {
line-height: 15px; line-height: 15px;
width: 150px;
} }
.workspace-widget-portlet table.dataTable tbody>tr.selected, table.dataTable tbody>tr>.selected .workspace-widget-portlet table.dataTable tbody>tr.selected, table.dataTable tbody>tr>.selected

View File

@ -40,6 +40,12 @@
<%@page import="com.liferay.portlet.dynamicdatamapping.model.DDMStructure"%> <%@page import="com.liferay.portlet.dynamicdatamapping.model.DDMStructure"%>
<%@page import="com.liferay.portal.security.permission.ActionKeys"%> <%@page import="com.liferay.portal.security.permission.ActionKeys"%>
<%@page import="javax.portlet.PortletSession"%> <%@page import="javax.portlet.PortletSession"%>
<%@page import="com.liferay.portal.model.User"%>
<%@page import="com.liferay.portal.service.UserLocalServiceUtil"%>
<%@page import="com.liferay.portal.service.GroupLocalServiceUtil"%>
<%@page import="org.gcube.portlets.user.wswidget.StorageHubServiceUtil"%>
<portlet:defineObjects /> <portlet:defineObjects />
<liferay-theme:defineObjects /> <liferay-theme:defineObjects />

View File

@ -1,18 +1,39 @@
<%@page import="com.liferay.portal.model.User"%>
<%@page import="com.liferay.portal.service.UserLocalServiceUtil"%>
<%@include file="init.jsp"%> <%@include file="init.jsp"%>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" <link href="https://fonts.googleapis.com/icon?family=Material+Icons"
rel="stylesheet"> rel="stylesheet">
<% pageContext.setAttribute("currentGroup", GroupLocalServiceUtil.getGroup(PortalUtil.getScopeGroupId(request)));
%>
<script src="<%=renderRequest.getContextPath()%>/js/datatables.min.js"></script> <script src="<%=renderRequest.getContextPath()%>/js/datatables.min.js"></script>
<portlet:resourceURL var="usersCustomDataSourceURL"> <portlet:resourceURL var="usersCustomDataSourceURL">
<portlet:param name="cmd" value="itemId=" /> <portlet:param name="cmd" value="itemId=" />
</portlet:resourceURL> </portlet:resourceURL>
<portlet:resourceURL var="downloadFileURL"> <portlet:resourceURL var="downloadFileURL">
<portlet:param name="fileToDownloadId" value="itemId=" /> <portlet:param name="fileToDownloadId" value="itemId=" />
</portlet:resourceURL> </portlet:resourceURL>
<div class="ws-breadcrumb-container"></div>
<table width="100%" style="border: none; border-collapse: inherit;">
<tr>
<td><div class="ws-breadcrumb-container"></div></td>
<c:choose>
<c:when test="${currentGroup.getParentGroupId() > 0}">
<td><div class="ws-recents">
<a><i style="font-size: 1.2em;" class="material-icons">access_time</i>
<span>Recent</span></a>
</div></td>
</c:when>
<c:otherwise>
<td><div class="ws-recents">
<a><i class="material-icons">folder_special</i>&nbsp;
<span>VRE Folders</span></a>
</div></td>
</c:otherwise>
</c:choose>
</tr>
</table>
<table id="userTable" class="display" cellspacing="0" width="100%"> <table id="userTable" class="display" cellspacing="0" width="100%">
<thead> <thead>
<tr> <tr>
@ -22,6 +43,14 @@
</tr> </tr>
</thead> </thead>
</table> </table>
<c:if test="${currentGroup.getParentGroupId() > 0}">
<div class="ws-go">
<a href="<%= StorageHubServiceUtil.getWorkspaceFolderURL(request) %>" target="_blank">
<i class="icon-folder-open" style="font-size: 14px;"></i>&nbsp;
<span>Go to shared workspace</span>
</a>
</div>
</c:if>
<script> <script>
function loadItemsListIntoTable(itemId, itemName) { function loadItemsListIntoTable(itemId, itemName) {
var table = $('#userTable').DataTable(); var table = $('#userTable').DataTable();
@ -36,7 +65,7 @@ function downloadItem(itemId) {
function mainTable() { function mainTable() {
var table = $('#userTable').DataTable( { var table = $('#userTable').DataTable( {
retrieve: true, // tell DataTables that you are aware that the initialisation options can't be changed after initialisation, and that should that occur, that you just want the DataTable instance to be returned. retrieve: true, // tell DataTables that you are aware that the initialisation options can't be changed after initialisation, and that should that occur, that you just want the DataTable instance to be returned.
"lengthMenu": [ [6, 12, 25, 50, -1], [6, 12, 25, 50, "All"] ], "lengthMenu": [ [5, 12, 25, 50, -1], [5, 12, 25, 50, "All"] ],
"dom": "<'row'<'small-6 columns'><'small-6 columns'>r>t<'row'<'mydt-pagination'p><'#mydtwrap'<'mydt-block'l><i>>'>", "dom": "<'row'<'small-6 columns'><'small-6 columns'>r>t<'row'<'mydt-pagination'p><'#mydtwrap'<'mydt-block'l><i>>'>",
select: { select: {
style: 'single' style: 'single'