Question

Actuellement, lorsque je clique sur une action personnalisée pour exécuter un flux de travail sur un élément sélectionné, le Browswer navigue loin de la page actuelle pour afficher le formulaire d'initiation. Ce ne serait pas un tel problème, sauf que lorsque je clique sur Démarrer ou Annuler pour vous déplacer sur le navigateur Navigation de la bibliothèque associée n'est pas la page du navigateur à l'origine avant de démarrer le flux de travail.

Ce comportement est hostile. J'ai besoin du navigateur pour revenir à la page d'origine après le démarrage / l'annulation du flux de travail. Il serait également acceptable que le formulaire d'initiation soit ouvert dans une boîte de dialogue modale tant qu'elle remonte à la page d'origine lorsqu'elle est fermée.

J'ai accès à l'administrateur au site que je modifie et je peux apporter des modifications avec SPDesigner 2010. J'ai récemment été installé sur Infopath2010 et s'il y a un moyen de le faire là-bas, je serais le plus agréable à la solution.

J'ai nettoyé les fichiers (* .xml, * .xoml, * .xoSn, * .xom.rules) dans le répertoire du workflow sous "Tous les fichiers" dans le navigateur de site SPD2010 mais n'ont trouvé aucune option XML / ASPX Même Vaguement ressemblant à des propriétés pouvant indiquer SharePoint comment ouvrir le formulaire.

Toute aide que vous pourriez partager serait appréciée.

Était-ce utile?

La solution

Inspired by the page Custom SharePoint Context Action links and Modal Dialogs I will now proceed to answer my own question.

Using these pages as references:

SharePoint Javascript: Create a modal dialog
SharePoint current site base URL
Start a Workflow from item column
Get ID of Selected Item

The solution requires some sleuthing.

You'll need to know:

  1. The List or Library Guid. This can be found in the list properties area when viewing the list or library in SharePoint Designer. Also it's found in workflow initiation form URLs.
  2. The Workflow Guid. Again, this can be tricky to find. It's not listed anywhere in SharePoint Designer. I found mine by accident. It's often displayed in the workflow initiation URL.

To find these:

Make a custom action to initiate the workflow (hint: make sure it can be manually started), then click/select the ribbon/menu item to perform the custom action.

The URL appears in the browser's URL text box at the top.

Example workflow intiation URL:

http://<site url>/_layouts/IniWrkflIP.aspx?List={11449cc0-e482-4971-9ec7-f12e812f4489}&ID=56&TemplateID={c810bee8-8799-40ac-a8db-d564a12c668d}  

Notice in the middle of this URL there's a parameter passing the selected item's ID to the workflow. Without this the workflow will fail to start.

The List/Library GUID is here:

List={11449cc0-e482-4971-9ec7-f12e812f4489}&

And the Workflow ID is here at the end

TemplateID={c810bee8-8799-40ac-a8db-d564a12c668d}

Notice in the middle of this URL there's a parameter passing the selected item's ID to the workflow. Without this the workflow will fail to start.

ID=56&

SharePoint generates all three of these parameters internally when you click the custom action. We're going to use the List and Workflow IDs, and because the user will select any item in the list, we'll use Javascript to determine this ID.

The JavaScript:

Here is the bit of Javascript that will open a modal dialog displaying a workflow initation form for the currently selected item. Place this code into the "Navigate To Url" field of your custom action:

javascript:OpenPopUpPageWithTitle(L_Menu_BaseUrl + "/_layouts/IniWrkflIP.aspx?List={11449cc0-e482-4971-9ec7-f12e812f4489}&ID=" + SP.ListOperation.Selection.getSelectedItems(SP.ClientContext.get_current())[0].id + "&TemplateID={c810bee8-8799-40ac-a8db-d564a12c668d}", RefreshOnDialogClose, 600, 400, 'Assign To')  

Let's look at the code Piece by Piece

The first part should be obvious, this allows us to run chunk of javascript code. In this case we're using the OpenPopUpPageWithTitle method which seems to be SharePoint specific. See the 1st reference URL for more info on this method.

javascript:OpenPopUpPageWithTitle(  

Next the constant at the start of the first paratemeter, "L_Menu_BaseUrl", returns the site, or subsite base URL. This is an internal JavaScript constant that SharePoint creates. See the 2nd reference URL for more info.

L_Menu_BaseUrl +  

In the next part we're telling the method where within this site/subsite is the aspx page we want to display, and the parameters it needs to initiate a workflow for the selected item. The question mark denotes we're going to pass some parameters to the ASPX page.

"/_layouts/IniWrkflIP.aspx?  

The first URL parameter is the List or Library GUID.

List={11449cc0-e482-4971-9ec7-f12e812f4489}&  

The next URL parameter is the ID of the first selected list item. We interrupt the string literal so we can use some javascript to return the first selected item. See The 4th reference URL to learn a little bit more about this.

&ID=" + SP.ListOperation.Selection.getSelectedItems(SP.ClientContext.get_current())[0].id + "&  

The last URL parameter refers to the workflow itself. Make sure to close the string literal before we pass off the next OpenPopUpPageWithTitle parameter.

TemplateID={c810bee8-8799-40ac-a8db-d564a12c668d}",  

Afterwards there are four more parameters:

RefreshOnDialogClose, 600, 400, 'Assign To')  

The first part is the action we want the site to perform when the dialog is closed. There are likely many of these actions it just so happened that the site I found used the one I want as well.

RefreshOnDialogclose

The following two parameters give the width and height, in pixels, of the resultant modal dialog window.

600, 400,

The last one is the page title. I just used the title of the workflow.

"Assign To")

Summary

Now, when we select a list or library item and choose to perform a custom action (wherever it's configured to be) the workflow initiation displays in a user-friendly modal dialog window.

It's unfortunate that the only way to have the workflow initiate in a model dialog is by using this custom action 'hack' (as far as I know).

This helpful tip took me some hours of learning and investigating so I hope you find it useful. Enjoy.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top