r866 - in trunk: . script src/main/java/org/ourproject/kune/app src/main/java/org/ourproject/kune/app/public/css src/main/java/org/ourproject/kune/app/server src/main/java/org/ourproject/kune/docs/client src/main/java/org/ourproject/kune/docs/client/ctx/admin src/main/java/org/ourproject/kune/platf/client/services src/main/java/org/ourproject/kune/platf/client/ui/dialogs src/main/java/org/ourproject/kune/platf/server src/main/java/org/ourproject/kune/platf/server/manager/impl src/main/java/or
Author: vjrj Date: 2008-09-10 06:51:49 +0200 (Wed, 10 Sep 2008) New Revision: 866 Added: trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileUploadManagerRevisited.java trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntitySubTitle.java trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitle.java Modified: trunk/INSTALL trunk/script/css-compact-and-tidy.css trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml trunk/src/main/java/org/ourproject/kune/app/public/css/all.css trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java trunk/src/main/java/org/ourproject/kune/docs/client/ctx/admin/AdminContextPresenter.java trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/FileUploaderDialog.java trunk/src/main/java/org/ourproject/kune/platf/server/InitData.java trunk/src/main/java/org/ourproject/kune/platf/server/PlatformServerModule.java trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileUploadManagerDefault.java trunk/src/main/java/org/ourproject/kune/platf/server/properties/KuneProperties.java trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SiteRPC.java trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPanel.java trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorView.java trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntitySubTitlePresenter.java trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePresenter.java trunk/src/main/resources/META-INF/persistence.xml trunk/src/main/resources/kune.properties trunk/src/main/webapp/WEB-INF/web.xml Log: FileUpload (Server side and Client Side) rewrited. Renaming now works editing in place (in context tree). Important! New location for indexes: /var/lib/lucene ---> /var/lib/kune/lucene Uploads will be stored in: /var/lib/kune/uploads/<folder-token>/<filename> /var/lib/kune/uploads/<folder-token>/<filename.1> ... for files with same name see INSTALL for details Modified: trunk/INSTALL =================================================================== --- trunk/INSTALL 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/INSTALL 2008-09-10 04:51:49 UTC (rev 866) @@ -26,10 +26,17 @@ GRANT ALL PRIVILEGES ON kune_test.* TO kune@localhost IDENTIFIED BY 'db4kune'; FLUSH PRIVILEGES; +- Configure upload directory: + + sudo mkdir -p /var/lib/kune/uploads/ + sudo chown yourUser:yourUser /var/lib/kune/uploads + +you can use other location (see kune.properties) + - Configurate hibernate-search (GNU/Linux instructions, look persistence.xml if you want to change indexes destination): # yourUser is the user you are using to develop/run the application - sudo mkdir -p /var/lib/lucene/kune_dev/indexes - sudo mkdir -p /var/lib/lucene/kune_test/indexes + sudo mkdir -p /var/lib/kune/lucene/kune_dev/indexes + sudo mkdir -p /var/lib/kune/lucene/kune_test/indexes sudo chown yourUser:yourUser /var/lib/lucene/kune_dev/indexes sudo chown yourUser:yourUser /var/lib/lucene/kune_test/indexes Modified: trunk/script/css-compact-and-tidy.css =================================================================== --- trunk/script/css-compact-and-tidy.css 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/script/css-compact-and-tidy.css 2008-09-10 04:51:49 UTC (rev 866) @@ -7,7 +7,8 @@ EXTTMPFILE=$ORIG/js/ext/resources/css/ext-all.css-tmp -sed 's/normal 11px/normal 100\%/g' $ORIG/js/ext/resources/css/ext-all.css |\ +sed 's/x.btn button{border:0 none;background:transparent;font:normal 11px tahoma,verdana,helvetica;/x-btn button{border:0 none;background:transparent;/g' $ORIG/js/ext/resources/css/ext-all.css |\ +sed 's/normal 11px/normal 100\%/g' |\ sed 's/bold 11px/bold 100\%/g' |\ sed 's/normal 12px/normal 100\%/g' |\ sed 's/bold 12px/bold 100\%/g' |\ Modified: trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml =================================================================== --- trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml 2008-09-10 04:51:49 UTC (rev 866) @@ -4,8 +4,6 @@ <!-- http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/4d38c... --> <set-property name="gwt.suppressNonStaticFinalFieldWarnings" value="true" /> - - <inherits name="org.cafesip.gwtcomp.GWTComponents" /> <inherits name="com.calclab.suco.Suco" /> Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/all.css =================================================================== --- trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-09-10 04:51:49 UTC (rev 866) @@ -246,7 +246,7 @@ .x-fieldset-body{overflow:hidden;} .x-btn{font:normal 100% arial,sans;cursor:pointer;white-space:nowrap;} -.x-btn button{border:0 none;background:transparent;font:normal 100% arial,sans;padding-left:3px;padding-right:3px;cursor:pointer;margin:0;overflow:visible;width:auto;-moz-outline:0 none;outline:0 none;} +.x-btn button{border:0 none;background:transparent;padding-left:3px;padding-right:3px;cursor:pointer;margin:0;overflow:visible;width:auto;-moz-outline:0 none;outline:0 none;} * html .ext-ie .x-btn button{width:1px;} .ext-gecko .x-btn button{padding-left:0;padding-right:0;} .ext-ie .x-btn button{padding-top:2px;} Modified: trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java 2008-09-10 04:51:49 UTC (rev 866) @@ -57,54 +57,54 @@ private final Module configModule; public KuneRackModule() { - this("development", "kune.properties", null); + this("development", "kune.properties", null); } public KuneRackModule(final String jpaUnit, final String propertiesFileName, final Scope sessionScope) { - configModule = new AbstractModule() { - public void configure() { - bindInterceptor(Matchers.any(), new NotInObject(), new LoggerMethodInterceptor()); - bindConstant().annotatedWith(JpaUnit.class).to(jpaUnit); - bindConstant().annotatedWith(PropertiesFileName.class).to(propertiesFileName); - if (sessionScope != null) { - bindScope(SessionScoped.class, sessionScope); - } - } - }; + configModule = new AbstractModule() { + public void configure() { + bindInterceptor(Matchers.any(), new NotInObject(), new LoggerMethodInterceptor()); + bindConstant().annotatedWith(JpaUnit.class).to(jpaUnit); + bindConstant().annotatedWith(PropertiesFileName.class).to(propertiesFileName); + if (sessionScope != null) { + bindScope(SessionScoped.class, sessionScope); + } + } + }; } @SuppressWarnings("unchecked") public void configure(final RackBuilder builder) { - installGuiceModules(builder); + installGuiceModules(builder); - builder.add(KuneContainerListener.class); + builder.add(KuneContainerListener.class); - builder.exclude("/http-bind.*"); - builder.exclude("/services/fileupload.*"); - builder.at(".*").install(new LogFilter()); - builder.at(".*").install(new GuiceFilter()); + builder.exclude("/http-bind.*"); + builder.exclude("/services/fileupload.*"); + builder.at(".*").install(new LogFilter()); + builder.at(".*").install(new GuiceFilter()); - builder.at("^/$").install(new RedirectFilter("/kune/")); - builder.at("^/kune$").install(new RedirectFilter("/kune/")); + builder.at("^/$").install(new RedirectFilter("/kune/")); + builder.at("^/kune$").install(new RedirectFilter("/kune/")); - builder.at("^/kune/$").install(new ListenerFilter(KuneApplicationListener.class), - new ForwardFilter("/gwt/org.ourproject.kune.app.Kune/Kune.html")); + builder.at("^/kune/$").install(new ListenerFilter(KuneApplicationListener.class), + new ForwardFilter("/gwt/org.ourproject.kune.app.Kune/Kune.html")); - builder.installGWTServices("^/kune/", SiteService.class, GroupService.class, ContentService.class, - UserService.class, SocialNetworkService.class, I18nService.class); - builder.installRESTServices("^/kune/json/", TestJSONService.class, GroupJSONService.class, - UserJSONService.class, I18nTranslationJSONService.class, ContentJSONService.class); + builder.installGWTServices("^/kune/", SiteService.class, GroupService.class, ContentService.class, + UserService.class, SocialNetworkService.class, I18nService.class); + builder.installRESTServices("^/kune/json/", TestJSONService.class, GroupJSONService.class, + UserJSONService.class, I18nTranslationJSONService.class, ContentJSONService.class); - builder.at("^/kune/(.*)$").install(new ForwardFilter("^/kune/(.*)$", "/gwt/org.ourproject.kune.app.Kune/{0}")); + builder.at("^/kune/(.*)$").install(new ForwardFilter("^/kune/(.*)$", "/gwt/org.ourproject.kune.app.Kune/{0}")); } private void installGuiceModules(final RackBuilder builder) { - builder.use(new ServletModule()); - builder.use(new PlatformServerModule()); - builder.use(new DocumentServerModule()); - builder.use(new ChatServerModule()); - builder.use(new RESTServicesModule()); - builder.use(configModule); + builder.use(new ServletModule()); + builder.use(new PlatformServerModule()); + builder.use(new DocumentServerModule()); + builder.use(new ChatServerModule()); + builder.use(new RESTServicesModule()); + builder.use(configModule); } } Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java 2008-09-10 04:51:49 UTC (rev 866) @@ -38,8 +38,8 @@ import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton; import org.ourproject.kune.workspace.client.tags.TagsSummary; import org.ourproject.kune.workspace.client.themes.WsThemePresenter; -import org.ourproject.kune.workspace.client.title.EntitySubTitlePresenter; -import org.ourproject.kune.workspace.client.title.EntityTitlePresenter; +import org.ourproject.kune.workspace.client.title.EntitySubTitle; +import org.ourproject.kune.workspace.client.title.EntityTitle; import com.calclab.suco.client.module.AbstractModule; import com.calclab.suco.client.provider.Factory; @@ -67,7 +67,7 @@ public AdminContext create() { final AdminContextPresenter presenter = new AdminContextPresenter($(Session.class), $(StateManager.class), $$(TagsSummary.class), $$(ContentServiceAsync.class), - $(EntityTitlePresenter.class), $(EntitySubTitlePresenter.class)); + $(EntityTitle.class), $(EntitySubTitle.class)); final AdminContextView view = new AdminContextPanel(presenter, i18n); presenter.init(view); return presenter; Modified: trunk/src/main/java/org/ourproject/kune/docs/client/ctx/admin/AdminContextPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/client/ctx/admin/AdminContextPresenter.java 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/docs/client/ctx/admin/AdminContextPresenter.java 2008-09-10 04:51:49 UTC (rev 866) @@ -35,8 +35,8 @@ import org.ourproject.kune.platf.client.state.StateManager; import org.ourproject.kune.workspace.client.site.Site; import org.ourproject.kune.workspace.client.tags.TagsSummary; -import org.ourproject.kune.workspace.client.title.EntitySubTitlePresenter; -import org.ourproject.kune.workspace.client.title.EntityTitlePresenter; +import org.ourproject.kune.workspace.client.title.EntitySubTitle; +import org.ourproject.kune.workspace.client.title.EntityTitle; import com.calclab.suco.client.provider.Provider; @@ -46,20 +46,20 @@ private final Session session; private final Provider<TagsSummary> tagsSummaryProvider; private final Provider<ContentServiceAsync> contentServiceProvider; - private final EntitySubTitlePresenter entitySubTitlePresenter; - private final EntityTitlePresenter entityTitlePresenter; + private final EntitySubTitle entitySubTitle; + private final EntityTitle entityTitle; private final StateManager stateManager; public AdminContextPresenter(final Session session, final StateManager stateManager, final Provider<TagsSummary> tagsSummaryProvider, - final Provider<ContentServiceAsync> contentServiceProvider, - final EntityTitlePresenter entityTitlePresenter, final EntitySubTitlePresenter entitySubTitlePresenter) { + final Provider<ContentServiceAsync> contentServiceProvider, final EntityTitle entityTitle, + final EntitySubTitle entitySubTitle) { this.session = session; this.stateManager = stateManager; this.tagsSummaryProvider = tagsSummaryProvider; this.contentServiceProvider = contentServiceProvider; - this.entityTitlePresenter = entityTitlePresenter; - this.entitySubTitlePresenter = entitySubTitlePresenter; + this.entityTitle = entityTitle; + this.entitySubTitle = entitySubTitle; } public void addAuthor(final String authorShortName) { @@ -93,7 +93,7 @@ currentState.getDocumentId(), langCode, new AsyncCallbackSimple<I18nLanguageDTO>() { public void onSuccess(final I18nLanguageDTO lang) { Site.hideProgress(); - entitySubTitlePresenter.setContentLanguage(lang.getEnglishName()); + entitySubTitle.setContentLanguage(lang.getEnglishName()); } }); } @@ -113,7 +113,7 @@ currentState.getDocumentId(), publishedOn, new AsyncCallbackSimple<Object>() { public void onSuccess(final Object result) { Site.hideProgress(); - entityTitlePresenter.setContentDate(publishedOn); + entityTitle.setContentDate(publishedOn); } }); Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java 2008-09-10 04:51:49 UTC (rev 866) @@ -126,8 +126,10 @@ import org.ourproject.kune.workspace.client.tags.TagsSummaryPresenter; import org.ourproject.kune.workspace.client.themes.WsThemePanel; import org.ourproject.kune.workspace.client.themes.WsThemePresenter; +import org.ourproject.kune.workspace.client.title.EntitySubTitle; import org.ourproject.kune.workspace.client.title.EntitySubTitlePanel; import org.ourproject.kune.workspace.client.title.EntitySubTitlePresenter; +import org.ourproject.kune.workspace.client.title.EntityTitle; import org.ourproject.kune.workspace.client.title.EntityTitlePanel; import org.ourproject.kune.workspace.client.title.EntityTitlePresenter; @@ -445,8 +447,8 @@ } }); - register(SingletonScope.class, new Factory<EntityTitlePresenter>(EntityTitlePresenter.class) { - public EntityTitlePresenter create() { + register(SingletonScope.class, new Factory<EntityTitle>(EntityTitle.class) { + public EntityTitle create() { final EntityTitlePresenter presenter = new EntityTitlePresenter(i18n, $(KuneErrorHandler.class), $(StateManager.class), $(Session.class), $$(ContentServiceAsync.class)); final EntityTitlePanel panel = new EntityTitlePanel(ws, presenter); @@ -455,8 +457,8 @@ } }); - register(SingletonScope.class, new Factory<EntitySubTitlePresenter>(EntitySubTitlePresenter.class) { - public EntitySubTitlePresenter create() { + register(SingletonScope.class, new Factory<EntitySubTitle>(EntitySubTitle.class) { + public EntitySubTitle create() { final EntitySubTitlePresenter presenter = new EntitySubTitlePresenter(i18n, $(StateManager.class)); final EntitySubTitlePanel panel = new EntitySubTitlePanel(presenter, i18n, ws); presenter.init(panel); @@ -587,7 +589,7 @@ register(SingletonScope.class, new Factory<ContextNavigator>(ContextNavigator.class) { public ContextNavigator create() { final ContextNavigatorPresenter presenter = new ContextNavigatorPresenter($(StateManager.class), - $(Session.class), $$(ContentServiceAsync.class), i18n); + $(Session.class), $$(ContentServiceAsync.class), i18n, $(EntityTitle.class)); final ContextNavigatorPanel panel = new ContextNavigatorPanel(presenter, i18n, $(StateManager.class), ws, $$(ActionManager.class)); presenter.init(panel); @@ -597,7 +599,7 @@ register(SingletonScope.class, new Factory<FileUploader>(FileUploader.class) { public FileUploader create() { - final FileUploaderDialog panel = new FileUploaderDialog(i18n, ws); + final FileUploaderDialog panel = new FileUploaderDialog(i18n, ws, $(Session.class)); return panel; } }); @@ -621,8 +623,8 @@ $(GroupSummary.class); $(EntityLogo.class); - $(EntityTitlePresenter.class); - $(EntitySubTitlePresenter.class); + $(EntityTitle.class); + $(EntitySubTitle.class); $(WsThemePresenter.class); $(EntityLicensePresenter.class); $(RateIt.class); Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/FileUploaderDialog.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/FileUploaderDialog.java 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/FileUploaderDialog.java 2008-09-10 04:51:49 UTC (rev 866) @@ -1,10 +1,14 @@ package org.ourproject.kune.platf.client.ui.dialogs; +import org.ourproject.kune.platf.client.state.Session; import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService; import org.ourproject.kune.workspace.client.site.Site; import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton; +import com.allen_sauer.gwt.log.client.Log; +import com.google.gwt.core.client.JavaScriptObject; import com.gwtext.client.core.EventObject; +import com.gwtext.client.core.UrlParam; import com.gwtext.client.widgets.Button; import com.gwtext.client.widgets.ToolbarButton; import com.gwtext.client.widgets.event.ButtonListenerAdapter; @@ -20,25 +24,57 @@ private final I18nUITranslationService i18n; private final WorkspaceSkeleton ws; - public FileUploaderDialog(final I18nUITranslationService i18n, final WorkspaceSkeleton ws) { + public FileUploaderDialog(final I18nUITranslationService i18n, final WorkspaceSkeleton ws, final Session session) { this.i18n = i18n; this.ws = ws; dialog = new UploadDialog(i18n.t("File uploader"), false, true); + // dialog.setUploadAutostart(true); + dialog.setResetOnHide(false); dialog.addListener(new UploadDialogListenerAdapter() { + @Override + public void onFileUploadStart(final UploadDialog source, final String filename) { + setUploadParams(session.getUserHash(), session.getCurrentState().getStateToken().toString(), filename); + } + + @Override public void onUploadComplete(final UploadDialog source) { - Site.info(i18n.t("Upload completed")); - // traybarButton.destroy(); - // traybarButton = null; + if (!dialog.isVisible()) { + Site.info(i18n.t("Upload completed")); + traybarButton.destroy(); + traybarButton = null; + } } + + @Override + public void onUploadError(final UploadDialog source, final String filename, final JavaScriptObject data) { + showError(); + } + + @Override + public void onUploadFailed(final UploadDialog source, final String filename) { + showError(); + } + + private void setUploadParams(final String userhash, final String currentStateToken, final String filename) { + Log.info("Setting upload params"); + final UrlParam param[] = new UrlParam[3]; + param[0] = new UrlParam("userhash", userhash); + param[1] = new UrlParam("currentStateToken", currentStateToken); + param[2] = new UrlParam("filename", filename); + dialog.setBaseParams(param); + dialog.setPostVarName(filename); + } + + private void showError() { + if (!dialog.isVisible()) { + Site.veryImportant(i18n.t("Error uploading")); + } + } + }); dialog.setUrl(URL); - // final UrlParam param[] = new UrlParam[2]; - // param[0] = new UrlParam("name1", "value1"); - // param[1] = new UrlParam("name2", "value2"); - // dialog.setBaseParams(param); - // dialog.setPostVarName("myvar"); } public void hide() { Modified: trunk/src/main/java/org/ourproject/kune/platf/server/InitData.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/InitData.java 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/platf/server/InitData.java 2008-09-10 04:51:49 UTC (rev 866) @@ -39,6 +39,8 @@ private String defaultWsTheme; private String[] wsThemes; private String siteLogoUrl; + private String galleryPermittedExtensions; + private String maxFileSizeInMb; public String getChatDomain() { return chatDomain; @@ -60,6 +62,10 @@ return defaultWsTheme; } + public String getGalleryPermittedExtensions() { + return galleryPermittedExtensions; + } + public List<I18nLanguage> getLanguages() { return languages; } @@ -68,6 +74,10 @@ return licenses; } + public String getMaxFileSizeInMb() { + return maxFileSizeInMb; + } + public String getSiteDomain() { return siteDomain; } @@ -108,6 +118,10 @@ this.defaultWsTheme = defaultWsTheme; } + public void setGalleryPermittedExtensions(final String galleryPermittedExtensions) { + this.galleryPermittedExtensions = galleryPermittedExtensions; + } + public void setLanguages(final List<I18nLanguage> languages) { this.languages = languages; } @@ -116,6 +130,10 @@ this.licenses = licenses; } + public void setMaxFileSizeInMb(final String maxFileSizeInMb) { + this.maxFileSizeInMb = maxFileSizeInMb; + } + public void setSiteDomain(final String siteDomain) { this.siteDomain = siteDomain; } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/PlatformServerModule.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/PlatformServerModule.java 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/platf/server/PlatformServerModule.java 2008-09-10 04:51:49 UTC (rev 866) @@ -64,6 +64,7 @@ import org.ourproject.kune.platf.server.manager.TagManager; import org.ourproject.kune.platf.server.manager.ToolConfigurationManager; import org.ourproject.kune.platf.server.manager.UserManager; +import org.ourproject.kune.platf.server.manager.impl.FileUploadManagerRevisited; import org.ourproject.kune.platf.server.manager.impl.GroupManagerDefault; import org.ourproject.kune.platf.server.manager.impl.I18nCountryManagerDefault; import org.ourproject.kune.platf.server.manager.impl.I18nLanguageManagerDefault; @@ -107,6 +108,7 @@ bind(KuneProperties.class).to(KunePropertiesDefault.class); bind(Mapper.class).to(DozerMapper.class); bind(ToolRegistry.class); + bind(FileUploadManagerRevisited.class); bindInterceptor(Matchers.any(), Matchers.annotatedWith(Authenticated.class), outermostCall(new AuthenticatedMethodInterceptor())); Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileUploadManagerDefault.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileUploadManagerDefault.java 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileUploadManagerDefault.java 2008-09-10 04:51:49 UTC (rev 866) @@ -18,11 +18,16 @@ public static final Log log = LogFactory.getLog(FileUploadManagerDefault.class); private HashMap<String, File> files; + @SuppressWarnings("unchecked") public FormResponse onSubmit(final HttpServlet servlet, final HttpServletRequest request) { for (final Map.Entry<String, File> entry : files.entrySet()) { log.info("file uploaded: " + entry.getKey()); } + /** + * + * http://max-bazhenov.com/dev/upload-dialog-2.0/index.php + * * Server side handler. * * The files in the queue are posted one at a time, the file field name @@ -30,7 +35,7 @@ * following properties: { success: true|false, // required error: * 'Error or success message' // optional, also can be named 'message' } */ - return new FormResponse(HttpServletResponse.SC_OK, "{success: true, error: ''}", false); + return new FormResponse(HttpServletResponse.SC_OK, "{'success':true,'message':'OK'}", false); } public void setFileList(final HashMap<String, File> files) { Added: trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileUploadManagerRevisited.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileUploadManagerRevisited.java 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileUploadManagerRevisited.java 2008-09-10 04:51:49 UTC (rev 866) @@ -0,0 +1,116 @@ +package org.ourproject.kune.platf.server.manager.impl; + +import java.io.File; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.util.Iterator; +import java.util.List; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import net.sf.json.JSONObject; + +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.FileUploadException; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; +import org.apache.commons.fileupload.servlet.ServletFileUpload; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.ourproject.kune.platf.server.properties.KuneProperties; + +import com.google.inject.Inject; +import com.google.inject.servlet.RequestScoped; + +@RequestScoped +public class FileUploadManagerRevisited extends HttpServlet { + + public static final Log log = LogFactory.getLog(FileUploadManagerRevisited.class); + + private static final long serialVersionUID = 1L; + + @Inject + KuneProperties kuneProperties; + + @SuppressWarnings( { "unchecked", "deprecation" }) + protected void doPost(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, + IOException { + + // i18n + String jsonResponse = createJsonResponse(true, "OK"); + + final DiskFileItemFactory factory = new DiskFileItemFactory(); + // maximum size that will be stored in memory + factory.setSizeThreshold(4096); + // the location for saving data that is larger than getSizeThreshold() + factory.setRepository(new File("/tmp")); + + if (!ServletFileUpload.isMultipartContent(req)) { + log.warn("Not a multipart upload"); + } + + final ServletFileUpload upload = new ServletFileUpload(factory); + // maximum size before a FileUploadException will be thrown + // upload.setSizeMax(new + // Integer(kuneProperties.get(KuneProperties.UPLOAD_MAX_FILE_SIZE)) * + // 1024 * 1024); + upload.setSizeMax(5 * 1024 * 1024); + + try { + final List fileItems = upload.parseRequest(req); + for (final Iterator iterator = fileItems.iterator(); iterator.hasNext();) { + final FileItem item = (FileItem) iterator.next(); + if (item.isFormField()) { + final String name = item.getFieldName(); + final String value = item.getString(); + log.info("name: " + name + " value: " + value); + } else { + final String fileName = item.getName(); + log.info("file: " + fileName + " fieldName: " + item.getFieldName() + " size: " + item.getSize()); + // item.write(new + // File(kuneProperties.get(KuneProperties.UPLOAD_LOCATION), + // fileName)); + item.write(new File("/var/lib/kune/uploads", fileName)); + } + } + } catch (final FileUploadException e) { + jsonResponse = createJsonResponse(false, "Error: File too large"); + } catch (final Exception e) { + jsonResponse = createJsonResponse(false, "Error uploading file"); + e.printStackTrace(); + } + + final Writer w = new OutputStreamWriter(resp.getOutputStream()); + w.write(jsonResponse); + w.close(); + resp.setStatus(HttpServletResponse.SC_OK); + } + + private String createJsonResponse(final boolean success, final String message) { + /** + * + * http://max-bazhenov.com/dev/upload-dialog-2.0/index.php + * + * Server side handler. + * + * The files in the queue are posted one at a time, the file field name + * is 'file'. The handler should return json encoded object with + * following properties: { success: true|false, // required error: + * 'Error or success message' // optional, also can be named 'message' } + */ + + JSONObject response = null; + try { + response = new JSONObject(); + response.put("success", success); + response.put("error", message); + response.put("code", "232"); + } catch (final Exception e) { + log.error("Error building response"); + } + return response.toString(); + } +} Modified: trunk/src/main/java/org/ourproject/kune/platf/server/properties/KuneProperties.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/properties/KuneProperties.java 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/platf/server/properties/KuneProperties.java 2008-09-10 04:51:49 UTC (rev 866) @@ -29,6 +29,9 @@ public String WS_THEMES_DEF = "kune.wsthemes.default"; public String WS_THEMES = "kune.wsthemes"; public String SITE_LOGO_URL = "kune.sitelogourl"; + public String UPLOAD_GALLERY_PERMITTED_EXTS = "kune.upload.gallerypermittedextensions"; + public String UPLOAD_MAX_FILE_SIZE = "kune.upload.maxfilesizeinmegas"; + public String UPLOAD_LOCATION = "kune.upload.location"; public String get(String key); Modified: trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SiteRPC.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SiteRPC.java 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SiteRPC.java 2008-09-10 04:51:49 UTC (rev 866) @@ -89,6 +89,8 @@ data.setWsThemes(this.kuneProperties.get(KuneProperties.WS_THEMES).split(",")); data.setDefaultWsTheme(this.kuneProperties.get(KuneProperties.WS_THEMES_DEF)); data.setSiteLogoUrl(kuneProperties.get(KuneProperties.SITE_LOGO_URL)); + data.setGalleryPermittedExtensions(kuneProperties.get(KuneProperties.UPLOAD_GALLERY_PERMITTED_EXTS)); + data.setMaxFileSizeInMb(kuneProperties.get(KuneProperties.UPLOAD_MAX_FILE_SIZE)); return mapper.map(data, InitDataDTO.class); } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPanel.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPanel.java 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPanel.java 2008-09-10 04:51:49 UTC (rev 866) @@ -38,11 +38,8 @@ import com.gwtext.client.core.EventObject; import com.gwtext.client.data.Node; import com.gwtext.client.widgets.Button; -import com.gwtext.client.widgets.Editor; -import com.gwtext.client.widgets.Panel; import com.gwtext.client.widgets.ToolbarButton; import com.gwtext.client.widgets.event.ButtonListenerAdapter; -import com.gwtext.client.widgets.event.EditorListenerAdapter; import com.gwtext.client.widgets.form.TextField; import com.gwtext.client.widgets.menu.BaseItem; import com.gwtext.client.widgets.menu.Item; @@ -64,10 +61,12 @@ private final WorkspaceSkeleton ws; private final Provider<ActionManager> actionManagerProvider; private final StateManager stateManager; + private final ContextNavigatorPresenter presenter; public ContextNavigatorPanel(final ContextNavigatorPresenter presenter, final I18nTranslationService i18n, final StateManager stateManager, final WorkspaceSkeleton ws, final Provider<ActionManager> actionManagerProvider) { + this.presenter = presenter; this.stateManager = stateManager; this.ws = ws; this.actionManagerProvider = actionManagerProvider; @@ -98,16 +97,23 @@ child.disable(); break; } - contextMenus.put(nodeId, createItemMenu(item.getActionCollection(), item.getStateToken())); + createItemMenu(nodeId, item.getActionCollection(), item.getStateToken()); final TreeNode parent = treePanel.getNodeById(item.getParentId()); if (parent != null) { - Log.info("Adding child node: " + nodeId + " to folder: " + item.getParentId()); + // Log.info("Adding child node: " + nodeId + " to folder: " + + // item.getParentId()); + child.addListener(new TreeNodeListenerAdapter() { + @Override + public void onTextChange(final Node node, final String text, final String oldText) { + presenter.onItemRename(getToken(node), text, oldText); + } + }); if (!item.getStateToken().hasAll()) { child.setExpandable(true); child.addListener(new TreeNodeListenerAdapter() { public void onExpand(final Node node) { treePanel.getNodeById(node.getId()).select(); - stateManager.gotoToken(node.getAttribute("href").substring(1)); + stateManager.gotoToken(getToken(node)); } }); } else { @@ -120,7 +126,7 @@ } else { // the node already created if (contextMenus.get(nodeId) == null && item.getActionCollection() != null) { - contextMenus.put(nodeId, createItemMenu(item.getActionCollection(), item.getStateToken())); + createItemMenu(nodeId, item.getActionCollection(), item.getStateToken()); } } @@ -156,6 +162,11 @@ setToolbarActions(toolBar, stateToken, actions); } + public void setItemText(final String genId, final String text) { + final TreeNode node = getNode(genId); + node.setText(text); + } + public void setRootItem(final String id, final String text, final StateToken stateToken) { if (treePanel == null || treePanel.getNodeById(id) == null) { createTreePanel(id); @@ -167,27 +178,32 @@ setToolbarActions(toolBar, stateToken, actions); } - private Menu createItemMenu(final ActionCollection<StateToken> actionCollection, final StateToken stateToken) { - if (actionCollection != null) { - final Menu menu = new Menu(); - // Remove if when retrieved rights of siblings - for (final ActionDescriptor<StateToken> action : actionCollection) { - final Item item = new Item(action.getText()); - item.setIcon(action.getIconUrl()); - menu.addItem(item); - item.addListener(new BaseItemListenerAdapter() { - public void onClick(final BaseItem item, final EventObject e) { - DeferredCommand.addCommand(new Command() { - public void execute() { - actionManagerProvider.get().doAction(action, stateToken); + private void createItemMenu(final String nodeId, final ActionCollection<StateToken> actionCollection, + final StateToken stateToken) { + DeferredCommand.addCommand(new Command() { + public void execute() { + Menu menu = null; + if (actionCollection != null) { + menu = new Menu(); + // Remove if when retrieved rights of siblings + for (final ActionDescriptor<StateToken> action : actionCollection) { + final Item item = new Item(action.getText()); + item.setIcon(action.getIconUrl()); + menu.addItem(item); + item.addListener(new BaseItemListenerAdapter() { + public void onClick(final BaseItem item, final EventObject e) { + DeferredCommand.addCommand(new Command() { + public void execute() { + actionManagerProvider.get().doAction(action, stateToken); + } + }); } }); } - }); + } + contextMenus.put(nodeId, menu); } - return menu; - } - return null; + }); } private Menu createToolbarMenu(final Toolbar bar, final String iconUrl, final String menuTitle) { @@ -236,20 +252,10 @@ treePanel.setRootNode(root); final TextField field = new TextField(); treeEditor = new TreeEditor(treePanel, field); - treeEditor.addListener(new EditorListenerAdapter() { - // public boolean doBeforeComplete(final Editor source, final Object - // value, final Object startValue) { - // return false; - // } - - public void onComplete(final Editor source, final Object value, final Object startValue) { - // TODO Auto-generated method stub - } - }); - final Panel panel = new Panel(); - panel.setBorder(false); - panel.add(treePanel); - ws.getEntityWorkspace().setContext(panel); + // final Panel panel = new Panel(); + // panel.setBorder(false); + // panel.add(treePanel); + ws.getEntityWorkspace().setContext(treePanel); } private void doAction(final ActionDescriptor<StateToken> action, final StateToken stateToken) { @@ -264,6 +270,10 @@ return node; } + private String getToken(final Node node) { + return node.getAttribute("href").substring(1); + } + private void setToolbarActions(final Toolbar toolBar, final StateToken stateToken, final ActionCollection<StateToken> actions) { toolBar.removeAll(); Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java 2008-09-10 04:51:49 UTC (rev 866) @@ -34,17 +34,18 @@ import org.ourproject.kune.platf.client.dto.StateDTO; import org.ourproject.kune.platf.client.dto.StateToken; import org.ourproject.kune.platf.client.dto.UserInfoDTO; -import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple; import org.ourproject.kune.platf.client.rpc.ContentServiceAsync; import org.ourproject.kune.platf.client.state.Session; import org.ourproject.kune.platf.client.state.StateManager; import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService; import org.ourproject.kune.workspace.client.site.Site; +import org.ourproject.kune.workspace.client.title.EntityTitle; import com.calclab.suco.client.provider.Provider; import com.calclab.suco.client.signal.Slot; import com.calclab.suco.client.signal.Slot0; import com.calclab.suco.client.signal.Slot2; +import com.google.gwt.user.client.rpc.AsyncCallback; public class ContextNavigatorPresenter implements ContextNavigator { @@ -57,13 +58,16 @@ private final ArrayList<String> draggables; private final ArrayList<String> droppables; private final HashMap<String, String> contentTypesIcons; + private final EntityTitle entityTitle; public ContextNavigatorPresenter(final StateManager stateManager, final Session session, - final Provider<ContentServiceAsync> contentServiceProvider, final I18nUITranslationService i18n) { + final Provider<ContentServiceAsync> contentServiceProvider, final I18nUITranslationService i18n, + final EntityTitle entityTitle) { this.stateManager = stateManager; this.session = session; this.contentServiceProvider = contentServiceProvider; this.i18n = i18n; + this.entityTitle = entityTitle; actions = new HashMap<String, ActionCollection<StateToken>>(); draggables = new ArrayList<String>(); droppables = new ArrayList<String>(); @@ -115,16 +119,27 @@ }); } - public void onTitleRename(final String newName, final String token) { - Site.showProgressSaving(); - final StateDTO currentState = session.getCurrentState(); - contentServiceProvider.get().rename(session.getUserHash(), currentState.getGroup().getShortName(), token, - newName, new AsyncCallbackSimple<String>() { - public void onSuccess(final String result) { - stateManager.reloadContextAndTitles(); - Site.hideProgress(); - } - }); + public void onItemRename(final String token, final String newName, final String oldName) { + if (!newName.equals(oldName)) { + Site.showProgress(i18n.t("Renaming")); + final StateDTO currentState = session.getCurrentState(); + contentServiceProvider.get().rename(session.getUserHash(), currentState.getGroup().getShortName(), token, + newName, new AsyncCallback<String>() { + public void onFailure(final Throwable caught) { + view.setItemText(genId(new StateToken(token)), oldName); + Site.error(i18n.t("Error renaming")); + Site.hideProgress(); + } + + public void onSuccess(final String result) { + Site.hideProgress(); + if (session.getCurrentState().getStateToken().getEncoded().equals(token)) { + // I have to update EntityTitle + entityTitle.setContentTitle(newName); + } + } + }); + } } public void registerContentTypeIcon(final String contentTypeId, final String iconUrl) { Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorView.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorView.java 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorView.java 2008-09-10 04:51:49 UTC (rev 866) @@ -36,6 +36,8 @@ void setBottomActions(StateToken stateToken, ActionCollection<StateToken> actions); + void setItemText(String genId, String text); + void setRootItem(String id, String text, StateToken stateToken); void setTopActions(StateToken stateToken, ActionCollection<StateToken> actions); Added: trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntitySubTitle.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntitySubTitle.java 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntitySubTitle.java 2008-09-10 04:51:49 UTC (rev 866) @@ -0,0 +1,7 @@ +package org.ourproject.kune.workspace.client.title; + +public interface EntitySubTitle { + + void setContentLanguage(String langName); + +} Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntitySubTitlePresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntitySubTitlePresenter.java 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntitySubTitlePresenter.java 2008-09-10 04:51:49 UTC (rev 866) @@ -27,7 +27,7 @@ import com.calclab.suco.client.signal.Slot; -public class EntitySubTitlePresenter { +public class EntitySubTitlePresenter implements EntitySubTitle { private EntitySubTitleView view; private final I18nTranslationService i18n; Added: trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitle.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitle.java 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitle.java 2008-09-10 04:51:49 UTC (rev 866) @@ -0,0 +1,11 @@ +package org.ourproject.kune.workspace.client.title; + +import java.util.Date; + +public interface EntityTitle { + + void setContentDate(Date publishedOn); + + void setContentTitle(String title); + +} Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePresenter.java 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePresenter.java 2008-09-10 04:51:49 UTC (rev 866) @@ -36,7 +36,7 @@ import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.user.client.rpc.AsyncCallback; -public class EntityTitlePresenter { +public class EntityTitlePresenter implements EntityTitle { private EntityTitleView view; private final I18nTranslationService i18n; @@ -68,7 +68,24 @@ this.view = view; } - public void onTitleRename(final String newName) { + public void setContentDate(final Date publishedOn) { + final DateTimeFormat fmt = DateTimeFormat.getFormat("MM/dd/yyyy, Z"); + view.setContentDate(i18n.t("Published on: [%s]", fmt.format(publishedOn))); + } + + /** + * Used renaming from context + */ + public void setContentTitle(final String title) { + view.setContentTitle(title); + } + + public void setContentTitle(final String title, final boolean editable) { + setContentTitle(title); + view.setContentTitleEditable(editable); + } + + protected void onTitleRename(final String newName) { Site.showProgressSaving(); final StateDTO currentState = session.getCurrentState(); contentServiceProvider.get().rename(session.getUserHash(), currentState.getGroup().getShortName(), @@ -87,20 +104,10 @@ Site.hideProgress(); } - public void setContentDate(final Date publishedOn) { - final DateTimeFormat fmt = DateTimeFormat.getFormat("MM/dd/yyyy, Z"); - view.setContentDate(i18n.t("Published on: [%s]", fmt.format(publishedOn))); - } - private void setContentDateVisible(final boolean visible) { view.setDateVisible(visible); } - private void setContentTitle(final String title, final boolean editable) { - view.setContentTitle(title); - view.setContentTitleEditable(editable); - } - private void setState(final StateDTO state) { if (state.hasDocument()) { setContentTitle(state.getTitle(), state.getContentRights().isEditable()); Modified: trunk/src/main/resources/META-INF/persistence.xml =================================================================== --- trunk/src/main/resources/META-INF/persistence.xml 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/resources/META-INF/persistence.xml 2008-09-10 04:51:49 UTC (rev 866) @@ -30,7 +30,7 @@ <property name="hibernate.search.default.directory_provider" value="org.hibernate.search.store.FSDirectoryProvider" /> <property name="hibernate.search.default.indexBase" - value="/var/lib/lucene/kune_dev/indexes" /> + value="/var/lib/kune/lucene/kune_dev/indexes" /> </properties> </persistence-unit> @@ -59,7 +59,7 @@ <property name="hibernate.search.default.directory_provider" value="org.hibernate.search.store.FSDirectoryProvider" /> <property name="hibernate.search.default.indexBase" - value="/var/lib/lucene/kune_test/indexes" /> + value="/var/lib/kune/lucene/kune_test/indexes" /> </properties> </persistence-unit> Modified: trunk/src/main/resources/kune.properties =================================================================== --- trunk/src/main/resources/kune.properties 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/resources/kune.properties 2008-09-10 04:51:49 UTC (rev 866) @@ -22,4 +22,8 @@ kune.wsthemes = default,green,blue,grey,purple,red kune.wsthemes.default = default -kune.sitelogourl = images/kune-logo-16px.png \ No newline at end of file +kune.sitelogourl = images/kune-logo-16px.png + +kune.upload.location = /var/lib/kune/upload/ +kune.upload.gallerypermittedextensions = jpg,jpeg,png,gif,bmp,svg,avi,mpg,mpeg,ogg,mov +kune.upload.maxfilesizeinmegas = 10 Modified: trunk/src/main/webapp/WEB-INF/web.xml =================================================================== --- trunk/src/main/webapp/WEB-INF/web.xml 2008-09-09 18:00:21 UTC (rev 865) +++ trunk/src/main/webapp/WEB-INF/web.xml 2008-09-10 04:51:49 UTC (rev 866) @@ -46,10 +46,22 @@ <url-pattern>/http-bind/</url-pattern> </servlet-mapping> - <!-- Change the servlet name and mapping with appropriate name and URL pattern respectively --> <servlet> <servlet-name>FileUploadService</servlet-name> <servlet-class> + org.ourproject.kune.platf.server.manager.impl.FileUploadManagerRevisited + </servlet-class> + </servlet> + + <servlet-mapping> + <servlet-name>FileUploadService</servlet-name> + <url-pattern>/services/fileupload</url-pattern> + </servlet-mapping> + + <!-- Change the servlet name and mapping with appropriate name and URL pattern respectively --> + <servlet> + <servlet-name>FileUploadServiceOld</servlet-name> + <servlet-class> org.cafesip.gwtcomp.server.FileUploadServlet </servlet-class> @@ -64,8 +76,8 @@ </servlet> <servlet-mapping> - <servlet-name>FileUploadService</servlet-name> - <url-pattern>/services/fileupload</url-pattern> + <servlet-name>FileUploadServiceOld</servlet-name> + <url-pattern>/services/fileuploadold</url-pattern> </servlet-mapping> </web-app>
participants (1)
-
vjrj