HI Benjamin,
With the redirection and launch of Word the onComplete event never gets
fired. I have tried many different things but none have proved fruitful.
the issue has nothing to do with the actual command in the oncomplete.
This is easy to prove by simply removing the redirection
(repsonse.sendRedirect(redirectURL)) in the Action bean - in which case
the oncomplete event fires and the panel closes.
You'll see from my underlying code that the method signature matches that
which you have mentioned below.
public void prepareToCreateOfficeDocument() throws ClientException {
// need to validate the date again! date is required
if (!DocumentDatePrefix.isFilePrefixValid(fileName)) {
facesMessages.add("Invalid file name prefix. All file names
must start with a valid date in the format yyyyMMdd");
return;
}
redirectUrl = officeTemplateListManager.liveCreateInContextUrl(
quickLaunchName, docTitle, fileName);
FacesContext ctx = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse)
ctx.getExternalContext().getResponse();
try {
response.sendRedirect(redirectUrl);
} catch (IOException e) {
e.printStackTrace();
facesMessages.add("Error creating office document - cannot
launch office product");
}
return;
}
For now I have added an Exit button to the modal popup... not elegant, but
makes it usable for the time being.
Regards,
Bruce.
--------------------
metaLogic
ph. +1.905.629.7775 x225
fax +1.905.629.9887
http://metaLogic.ca
From: Benjamin Jalon <[email protected]>
To: Bruce Grant <[email protected]>
Cc: [email protected]
Date: 03/28/2010 11:44 AM
Subject: Re: [Ecm] Launching LiveEdit in code
First of all please reply to the list, not only me. All your problem can
help others.
I understand in the fragment "create_folder_panel.xhtml", in my example
you add oncomplete event in it and it doesn't work ?
If I'm right, in fact, if you look inside this fragment in nuxeo-dam you
have something like that :
<a4j:form id="yourFormId" ajaxSingle="true">
... here your form ...
<a4j:commandButton styleClass="button"
value="#{messages['command.folder.create']}"
action="#{yourActionsBean.yourMethod}"
data="#{facesContext.maximumSeverity.ordinal ge 2}"
oncomplete="Richfaces.hideModalPanel('theNameOfYourModalPanel');"
reRender="id1ToRerender, id2ToRerender" />
</a4j:form>
In my example, theNameOfYourModalPanel = createFolderFormPanel
Be careful of the signature of your action yourActionsBean.yourMethod :
public void yourMethod() throws ... {
...
}
Benjamin
On 25 March 2010 14:33, Bruce Grant <[email protected]> wrote:
Hi Benjamin,
Thanks for the suggestion.
I tried this, and can get the popup working (which is nice in itself) but
this doesnt solve the problem. When I launch the redirect in code the
oncomplete event of the button on the modal panel never fires, so the
panel doesnt get hidden.
Any other ideas?
Thanks,
bruce.
--------------------
metaLogic
ph. +1.905.629.7775 x225
fax +1.905.629.9887
http://metaLogic.ca
From: Benjamin Jalon <[email protected]>
To: Bruce Grant <[email protected]>
Date: 03/15/2010 06:40 PM
Subject: Re: [Ecm] Launching LiveEdit in code
Maybe you can inspire with this code that we use in Nuxeo Dam to create a
modal popup with rich:modalPanel :
http://hg.nuxeo.org/nuxeo-dam/file/299e8850213b/nuxeo-dam-webapp/src/main/resources/nuxeo.war/incl/admin/folders.xhtml
You can see that to create your popup modal you use that :
<rich:modalPanel id="createFolderFormPanel" autosized="true"
styleClass="CreateFolderFormPanel">
<f:facet name="header">
<h:panelGroup>
<!-- here the title of the modalPanel -->
<h:outputText value="#{messages['title.createFolder']}"/>
</h:panelGroup>
</f:facet>
<f:facet name="controls">
<h:panelGroup>
<!-- here the the cancel button on the top right of the modalPanel
-->
<a4j:form id="createFolderHideForm">
<a4j:commandLink
actionListener="#{editableListBean.resetAllListsCachedModels}"
id="createFolderHideLink"
onclick="Richfaces.hideModalPanel('createFolderFormPanel')"
immediate="true" reRender="createFolderPanel">
<h:graphicImage value="/img/close.png" styleClass="hidelink"
/>
</a4j:commandLink>
</a4j:form>
</h:panelGroup>
</f:facet>
<!-- here the content of your modalPanel -->
<ui:include src="/incl/create_folder_panel.xhtml" />
</rich:modalPanel>
Add this to you commandButton to close your ModalPanel
oncomplete="if (!data) { Richfaces.hideModalPanel('createFolderFormPanel')
};"
And that to open your panel and call your method to initialize the backend
:
<a4j:commandLink
action="#{folderAdminActions.resetNewFolder()}"
immediate="true"
reRender="createFolderPanel"
oncomplete=
"Richfaces.showModalPanel('createFolderFormPanel')"
id="folder_creation_button"
rendered="#{notReadOnly}">
<h:outputText value="#{messages['command.createFolder']}" />
</a4j:commandLink>
Hope this help...
Benjamin
On 15 March 2010 15:37, Bruce Grant <[email protected]> wrote:
I have a form to capture the title and file name of an office document.
The form has a commandLink to invoke a backend method that then builds the
necessary LiveEdit url and redirects to that url. This works fine and Word
is invoked and the document gets the right title and filename.
However, I also need to be able to force the ajax region that defines the
form (that captures title and file name) to refresh to hide the input
fields (for title and file name) and then display a launch message (not
yet included). I have tried a number of different approaches to make this
happen but none have worked. I have attached relevant code snippets below.
Does anyone have any ideas on how to force the region to refresh after the
LiveEdit redirection?
This is the code that validates the filename and then redirects... to the
livedit URL (liveCreateInContextURL is a modified version of the
Nuxeo-provided liveCreate code)
public String createOfficeDocument() throws ClientException {
// need to validate the date again! date is required
if (!DocumentDatePrefix.isFilePrefixValid(fileName)) {
facesMessages.add("Invalid file name prefix. All file names
must start with a valid date in the format yyyyMMdd");
return ACTION_PAGE_QUICK_LAUNCH;
}
redirectUrl =
officeTemplateListManager.liveCreateInContextUrl(quickLaunchName,
docTitle, fileName);
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse httpResponse = (HttpServletResponse)
context.getExternalContext().getResponse();
try {
httpResponse.sendRedirect(redirectUrl);
} catch (IOException e) {
e.printStackTrace();
}
// reset attributes
setDocTitle("");
setFileName("");
return "";
}
The XHTML that collects the data. I have tried a number of different
options and none have worked
<ui:define name="body">
<div>
<a4j:region>
<a4j:form>
<a4j:outputPanel id="panel1"
ajaxRendered="true">
<h3><h:outputText
value="#{messages['ca.metalogic.officedocument.metadata.form.title']}"
/></h3>
<h:outputText
value="#{messages['ca.metalogic.officedocument.metadata.form.subtitle']}"
rendered="#{quickLaunchActions.isEditMode}" />
<ui:include
src="/incl/message_banner.xhtml" />
<h:panelGrid columns="2"
styleClass="dataInput"
columnClasses="mckQuickLaunchLabelColumn, mckQuickLaunchFieldColumn"
rendered="#{quickLaunchActions.isEditMode}">
<h:outputLabel
for="doctitle" class="required" value="Document Title:" />
<h:panelGroup>
<h:inputText
id="doctitle" value="#{quickLaunchActions.docTitle}" required="true"
size="80" />
<h:message
for="doctitle" />
</h:panelGroup>
</h:panelGrid>
<h:panelGrid columns="2"
styleClass="dataInput"
columnClasses="mckQuickLaunchLabelColumn, mckQuickLaunchFieldColumn"
rendered="#{quickLaunchActions.isEditMode}">
<h:outputLabel
for="filename" class="required" value="Office Document Name:" />
<h:panelGroup>
<h:inputText
id="filename" value="#{quickLaunchActions.fileName}" required="true"
size="80" />
<h:message
for="filename" />
</h:panelGroup>
</h:panelGrid>
</a4j:outputPanel>
<h:panelGrid columns="1"
styleClass="dataInput" rendered="#{quickLaunchActions.isEditMode}">
<a4j:commandLink
id="saveOfficeMetadata" value="Create Document" immediate="true"
action="#{quickLaunchActions.createOfficeDocument}"
reRender="panel1" />
</h:panelGrid>
</a4j:form>
</a4j:region></div>
</ui:define>
_______________________________________________
ECM mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm
To unsubscribe, go to http://lists.nuxeo.com/mailman/options/ecm
_______________________________________________
ECM mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm
To unsubscribe, go to http://lists.nuxeo.com/mailman/options/ecm