Skip to content

Commit

Permalink
Refactored workplace app navigation calls.
Browse files Browse the repository at this point in the history
tHerrmann committed Aug 6, 2019

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent e5fed9c commit af287c6
Showing 19 changed files with 196 additions and 90 deletions.
16 changes: 8 additions & 8 deletions src/org/opencms/gwt/CmsCoreService.java
Original file line number Diff line number Diff line change
@@ -71,6 +71,7 @@
import org.opencms.ui.I_CmsDialogContext;
import org.opencms.ui.I_CmsDialogContextWithAdeContext;
import org.opencms.ui.actions.I_CmsADEAction;
import org.opencms.ui.apps.A_CmsWorkplaceApp;
import org.opencms.ui.apps.CmsFileExplorerConfiguration;
import org.opencms.ui.components.CmsBasicDialog.DialogWidth;
import org.opencms.ui.contextmenu.CmsMenuItemVisibilityMode;
@@ -431,14 +432,12 @@ public int compare(I_CmsContextMenuItem arg0, I_CmsContextMenuItem arg1) {
*/
public static String getFileExplorerLink(CmsObject cms, String siteRoot) {

return CmsVaadinUtils.getWorkplaceLink()
+ "#!"
+ CmsFileExplorerConfiguration.APP_ID
+ "/"
+ cms.getRequestContext().getCurrentProject().getUuid()
+ "!!"
+ siteRoot
+ "!!";
return CmsVaadinUtils.getWorkplaceLink(
CmsFileExplorerConfiguration.APP_ID,
cms.getRequestContext().getCurrentProject().getUuid()
+ A_CmsWorkplaceApp.PARAM_SEPARATOR
+ siteRoot
+ A_CmsWorkplaceApp.PARAM_SEPARATOR);
}

/**
@@ -706,6 +705,7 @@ public CmsUUID createUUID() {
/**
* @see org.opencms.gwt.shared.rpc.I_CmsCoreService#getBroadcast()
*/
@SuppressWarnings("unchecked")
public List<CmsBroadcastMessage> getBroadcast() {

Set<CmsBroadcast> repeatedBroadcasts = new HashSet<CmsBroadcast>();
3 changes: 2 additions & 1 deletion src/org/opencms/gwt/CmsQuickLaunchProvider.java
Original file line number Diff line number Diff line change
@@ -37,6 +37,7 @@
import org.opencms.main.CmsException;
import org.opencms.main.CmsLog;
import org.opencms.main.OpenCms;
import org.opencms.ui.CmsVaadinUtils;
import org.opencms.ui.apps.CmsAppVisibilityStatus;
import org.opencms.ui.apps.CmsFileExplorerConfiguration;
import org.opencms.ui.apps.CmsLegacyAppConfiguration;
@@ -162,7 +163,7 @@ public static List<CmsQuickLaunchData> getQuickLaunchData(
link = sitemapLink + "?path=" + page;
}
} else {
link = OpenCms.getSystemInfo().getWorkplaceContext() + "#!" + config.getId();
link = CmsVaadinUtils.getWorkplaceLink(config.getId());
}
Resource icon = config.getIcon();
String imageLink = "";
64 changes: 63 additions & 1 deletion src/org/opencms/ui/CmsVaadinUtils.java
Original file line number Diff line number Diff line change
@@ -46,6 +46,7 @@
import org.opencms.security.CmsOrganizationalUnit;
import org.opencms.security.CmsRole;
import org.opencms.security.I_CmsPrincipal;
import org.opencms.ui.apps.CmsAppWorkplaceUi;
import org.opencms.ui.apps.Messages;
import org.opencms.ui.apps.user.CmsOUHandler;
import org.opencms.ui.components.OpenCmsTheme;
@@ -912,7 +913,68 @@ public static Window getWindow(Component component) {
*/
public static String getWorkplaceLink() {

return CmsStringUtil.joinPaths("/", OpenCms.getSystemInfo().getContextPath(), "workplace");
return OpenCms.getSystemInfo().getWorkplaceContext();
}

/**
* Returns the workplace link for the given app.<p>
*
* @param appId the app id
*
* @return the workplace link
*/
public static String getWorkplaceLink(String appId) {

return getWorkplaceLink() + CmsAppWorkplaceUi.WORKPLACE_APP_ID_SEPARATOR + appId;
}

/**
* Returns the workplace link to the given app with the given state.<p>
*
* @param appId the app id
* @param appState the app state
*
* @return the workplace link
*/
public static String getWorkplaceLink(String appId, String appState) {

return getWorkplaceLink(appId) + CmsAppWorkplaceUi.WORKPLACE_STATE_SEPARATOR + appState;
}

/**
* Returns the workplace link to the given app with the given state including the given request parameters.<p>
*
* @param appId the app id
* @param appState the app state
* @param requestParameters the request parameters
*
* @return the workplace link
*/
public static String getWorkplaceLink(String appId, String appState, Map<String, String[]> requestParameters) {

String result = getWorkplaceLink();
if ((requestParameters != null) && !requestParameters.isEmpty()) {
boolean first = true;
for (Entry<String, String[]> param : requestParameters.entrySet()) {
for (String value : param.getValue()) {
if (first) {
result += "?";
} else {
result += "&";
}
result += param.getKey() + "=" + value;
first = false;
}
}
}

if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(appId)) {
result += CmsAppWorkplaceUi.WORKPLACE_APP_ID_SEPARATOR + appId;
}
if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(appState)) {
result += CmsAppWorkplaceUi.WORKPLACE_STATE_SEPARATOR + appState;
}
return result;
}

/**
20 changes: 19 additions & 1 deletion src/org/opencms/ui/apps/CmsAppWorkplaceUi.java
Original file line number Diff line number Diff line change
@@ -104,6 +104,12 @@ public void enter(ViewChangeEvent event) {
/** The OpenCms window title prefix. */
public static final String WINDOW_TITLE_PREFIX = "OpenCms - ";

/** The workplace app id separator. */
public static final String WORKPLACE_APP_ID_SEPARATOR = "#!";

/** The workplace state separator. */
public static final String WORKPLACE_STATE_SEPARATOR = "/";

/** Logger instance for this class. */
private static final Log LOG = CmsLog.getLog(CmsAppWorkplaceUi.class);

@@ -223,6 +229,7 @@ public void changeCurrentAppState(String state) {
/**
* Checks for new broadcasts.<p>
*/
@SuppressWarnings("unchecked")
public void checkBroadcasts() {

Set<CmsBroadcast> repeatedBroadcasts = new HashSet<CmsBroadcast>();
@@ -489,7 +496,18 @@ public void showApp(I_CmsWorkplaceAppConfiguration appConfig) {
*/
public void showApp(I_CmsWorkplaceAppConfiguration appConfig, String state) {

getNavigator().navigateTo(appConfig.getId() + "/" + state);
getNavigator().navigateTo(appConfig.getId() + WORKPLACE_STATE_SEPARATOR + state);
}

/**
* Navigates to the given app.<p>
*
* @param appId the app id
* @param state the app state to call
*/
public void showApp(String appId, String state) {

getNavigator().navigateTo(appId + WORKPLACE_STATE_SEPARATOR + state);
}

/**
23 changes: 20 additions & 3 deletions src/org/opencms/ui/apps/CmsEditor.java
Original file line number Diff line number Diff line change
@@ -40,6 +40,7 @@
import org.opencms.main.OpenCms;
import org.opencms.security.CmsRole;
import org.opencms.ui.A_CmsUI;
import org.opencms.ui.CmsVaadinUtils;
import org.opencms.ui.components.CmsErrorDialog;
import org.opencms.ui.components.I_CmsWindowCloseListener;
import org.opencms.ui.editors.I_CmsEditor;
@@ -90,24 +91,40 @@ public class CmsEditor
/** The editor instance. */
private I_CmsEditor m_editorInstance;

/**
* Returns the edit link for given resource structure id.<p>
*
* @param structureId the resource structure is
* @param plainText if plain text/source editing is required
* @param backLink the back link location
*
* @return the state
*/
public static String getEditLink(CmsUUID structureId, boolean plainText, String backLink) {

return CmsVaadinUtils.getWorkplaceLink(
org.opencms.ui.apps.CmsEditorConfiguration.APP_ID,
getEditState(structureId, plainText, backLink));
}

/**
* Returns the edit state for the given resource structure id.<p>
*
* @param resourceId the resource structure is
* @param structureId the resource structure id
* @param plainText if plain text/source editing is required
* @param backLink the back link location
*
* @return the state
*/
public static String getEditState(CmsUUID resourceId, boolean plainText, String backLink) {
public static String getEditState(CmsUUID structureId, boolean plainText, String backLink) {

try {
backLink = URLEncoder.encode(backLink, CmsEncoder.ENCODING_UTF_8);
} catch (UnsupportedEncodingException e) {
LOG.error(e.getLocalizedMessage(), e);
}
String state = "";
state = A_CmsWorkplaceApp.addParamToState(state, CmsEditor.RESOURCE_ID_PREFIX, resourceId.toString());
state = A_CmsWorkplaceApp.addParamToState(state, CmsEditor.RESOURCE_ID_PREFIX, structureId.toString());
state = A_CmsWorkplaceApp.addParamToState(state, CmsEditor.PLAIN_TEXT_PREFIX, String.valueOf(plainText));
state = A_CmsWorkplaceApp.addParamToState(state, CmsEditor.BACK_LINK_PREFIX, backLink);
return state;
16 changes: 9 additions & 7 deletions src/org/opencms/ui/apps/CmsFileExplorer.java
Original file line number Diff line number Diff line change
@@ -353,7 +353,7 @@ public StateBean(String siteRoot, String folder, String projectId) {
*/
public static StateBean parse(String state) {

List<String> fields = CmsStringUtil.splitAsList(state, "!!");
List<String> fields = CmsStringUtil.splitAsList(state, A_CmsWorkplaceApp.PARAM_SEPARATOR);
if (fields.size() >= 3) {
String projectId = fields.get(0);
String siteRoot = fields.get(1);
@@ -375,7 +375,12 @@ public static StateBean parse(String state) {
*/
public String asString() {

String result = m_projectId + "!!" + m_siteRoot + "!!" + m_folder + "!!";
String result = m_projectId
+ A_CmsWorkplaceApp.PARAM_SEPARATOR
+ m_siteRoot
+ A_CmsWorkplaceApp.PARAM_SEPARATOR
+ m_folder
+ A_CmsWorkplaceApp.PARAM_SEPARATOR;
return result;
}

@@ -453,9 +458,6 @@ public void setSelectedResource(String resource) {
/** Site selector site root property. */
public static final String SITE_ROOT = "site_root";

/** The state separator string. */
public static final String STATE_SEPARATOR = "!!";

/** Threshold for updating the complete folder after file changes. */
public static final int UPDATE_FOLDER_THRESHOLD = 200;

@@ -1898,9 +1900,9 @@ public void onUploadFinished(List<String> uploadedFiles) {
private String normalizeState(String state) {

String result = "";
if (state.contains(STATE_SEPARATOR)) {
if (state.contains(A_CmsWorkplaceApp.PARAM_SEPARATOR)) {
result = state;
while (result.startsWith("/")) {
while (result.startsWith(CmsAppWorkplaceUi.WORKPLACE_STATE_SEPARATOR)) {
result = result.substring(1);
}
}
17 changes: 8 additions & 9 deletions src/org/opencms/ui/apps/cacheadmin/CmsImageCacheTable.java
Original file line number Diff line number Diff line change
@@ -35,6 +35,7 @@
import org.opencms.main.OpenCms;
import org.opencms.ui.A_CmsUI;
import org.opencms.ui.CmsVaadinUtils;
import org.opencms.ui.apps.A_CmsWorkplaceApp;
import org.opencms.ui.apps.CmsAppWorkplaceUi;
import org.opencms.ui.apps.CmsFileExplorerConfiguration;
import org.opencms.ui.apps.Messages;
@@ -389,18 +390,16 @@ CmsObject getRootCms() {
void openExplorerForParent(String rootPath, String uuid) {

String parentPath = CmsResource.getParentFolder(rootPath);

CmsAppWorkplaceUi.get().getNavigator().navigateTo(
CmsFileExplorerConfiguration.APP_ID
+ "/"
+ A_CmsUI.getCmsObject().getRequestContext().getCurrentProject().getUuid()
+ "!!"
CmsAppWorkplaceUi.get().showApp(
CmsFileExplorerConfiguration.APP_ID,
A_CmsUI.getCmsObject().getRequestContext().getCurrentProject().getUuid()
+ A_CmsWorkplaceApp.PARAM_SEPARATOR
+ A_CmsUI.getCmsObject().getRequestContext().getSiteRoot()
+ "!!"
+ A_CmsWorkplaceApp.PARAM_SEPARATOR
+ parentPath.substring(A_CmsUI.getCmsObject().getRequestContext().getSiteRoot().length())
+ "!!"
+ A_CmsWorkplaceApp.PARAM_SEPARATOR
+ uuid
+ "!!");
+ A_CmsWorkplaceApp.PARAM_SEPARATOR);
}

/**
14 changes: 8 additions & 6 deletions src/org/opencms/ui/apps/dbmanager/CmsPropertyTable.java
Original file line number Diff line number Diff line change
@@ -52,17 +52,17 @@
import java.util.Locale;
import java.util.Set;

import com.vaadin.server.Resource;
import com.vaadin.shared.MouseEventDetails.MouseButton;
import com.vaadin.ui.Window;
import com.vaadin.ui.themes.ValoTheme;
import com.vaadin.v7.data.Item;
import com.vaadin.v7.data.util.IndexedContainer;
import com.vaadin.v7.data.util.filter.Or;
import com.vaadin.v7.data.util.filter.SimpleStringFilter;
import com.vaadin.v7.event.ItemClickEvent;
import com.vaadin.v7.event.ItemClickEvent.ItemClickListener;
import com.vaadin.server.Resource;
import com.vaadin.shared.MouseEventDetails.MouseButton;
import com.vaadin.v7.ui.Table;
import com.vaadin.ui.Window;
import com.vaadin.ui.themes.ValoTheme;

/**
* Class for the table containing all property definitions in the system.<p>
@@ -94,6 +94,7 @@ protected enum TableColumn {
* @param defaultValue of column
*/
TableColumn(String headerMessage, Class<?> type, Object defaultValue) {

m_headerMessage = headerMessage;
m_type = type;
m_defaultValue = defaultValue;
@@ -353,8 +354,9 @@ protected void showResources(String propertyName) {
} catch (CmsException e) {
//
}
CmsAppWorkplaceUi.get().getNavigator().navigateTo(
CmsSourceSearchAppConfiguration.APP_ID + "/" + CmsSourceSearchApp.generateState(settings));
CmsAppWorkplaceUi.get().showApp(
CmsSourceSearchAppConfiguration.APP_ID,
CmsSourceSearchApp.generateState(settings));
}

/**
Original file line number Diff line number Diff line change
@@ -43,11 +43,11 @@
import java.util.Iterator;
import java.util.List;

import com.vaadin.v7.shared.ui.label.ContentMode;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Component;
import com.vaadin.v7.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.HorizontalLayout;
import com.vaadin.v7.ui.Label;
import com.vaadin.v7.ui.VerticalLayout;
@@ -201,8 +201,9 @@ public void buttonClick(ClickEvent event) {
settings.setTypes(statResult.getType().getTypeName());
}
settings.setType(SearchType.fullText);
CmsAppWorkplaceUi.get().getNavigator().navigateTo(
CmsSourceSearchAppConfiguration.APP_ID + "/" + CmsSourceSearchApp.generateState(settings));
CmsAppWorkplaceUi.get().showApp(
CmsSourceSearchAppConfiguration.APP_ID,
CmsSourceSearchApp.generateState(settings));
}
});

Original file line number Diff line number Diff line change
@@ -195,7 +195,7 @@ String getCaptionKey() {
static class CmsStateBean {

/**State seperator. */
protected static String STATE_SEPERATOR = "!!";
protected static String STATE_SEPERATOR = A_CmsWorkplaceApp.PARAM_SEPARATOR;

/**Seperator for resources in state. */
private static String RESOURCE_SEPERATOR = ";";
Original file line number Diff line number Diff line change
@@ -420,8 +420,9 @@ public void executeAction(Set<String> data) {
settings.setSearchpattern(".*");
settings.setTypes(data.iterator().next());
settings.setType(SearchType.fullText);
CmsAppWorkplaceUi.get().getNavigator().navigateTo(
CmsSourceSearchAppConfiguration.APP_ID + "/" + CmsSourceSearchApp.generateState(settings));
CmsAppWorkplaceUi.get().showApp(
CmsSourceSearchAppConfiguration.APP_ID,
CmsSourceSearchApp.generateState(settings));

}

Loading

0 comments on commit af287c6

Please sign in to comment.