|
||
|
API examples for newer versions Please visit the latest API Examples documentation to view API examples for newer versions of Kentico. |
The following example performs checkout of the sample document created by the example in the Sample documents and objects topic. Please note that check-in/check-out must be enabled for the respective workflow for this example to be functional.
private bool CheckOut() { TreeProvider tree = new TreeProvider(CMSContext.CurrentUser);
// Prepare parameters string siteName = CMSContext.CurrentSiteName; string aliasPath = "/API-Example"; string culture = "en-us"; bool combineWithDefaultCulture = false; string classNames = TreeProvider.ALL_CLASSNAMES; string where = null; string orderBy = null; int maxRelativeLevel = -1; bool selectOnlyPublished = false; string columns = null;
// Get the document TreeNode node = DocumentHelper.GetDocument(siteName, aliasPath, culture, combineWithDefaultCulture, classNames, where, orderBy, maxRelativeLevel, selectOnlyPublished, columns, tree);
if (node != null) { // Create a new Workflow manager instance WorkflowManager workflowmanager = WorkflowManager.GetInstance(tree);
// Make sure the document uses workflow WorkflowInfo workflow = workflowmanager.GetNodeWorkflow(node);
if (workflow != null) { // Check if the workflow uses check-in/check-out functionality if (workflow.UseCheckInCheckOut(CMSContext.CurrentSiteName)) { // The document has to be checked in if (!node.IsCheckedOut) { // Create a new version manager instance VersionManager versionmanager = VersionManager.GetInstance(tree);
// Check out the document to create a new document version versionmanager.CheckOut(node);
return true; } else { apiCheckOut.ErrorMessage = "The document has already been checked out."; } } else { apiCheckOut.ErrorMessage = "The workflow does not use check-in/check-out. See the \"Edit document\" example, which checks the document out and in automatically."; } } else { apiCheckOut.ErrorMessage = "The document doesn't use workflow."; } }
return false; } |
The following example edits the document checked out by the previous example. If the document hasn't been checked out, it creates a new modified version of the document.
private bool EditDocument() { TreeProvider tree = new TreeProvider(CMSContext.CurrentUser);
// Prepare parameters string siteName = CMSContext.CurrentSiteName; string aliasPath = "/API-Example"; string culture = "en-us"; bool combineWithDefaultCulture = false; string classNames = TreeProvider.ALL_CLASSNAMES; string where = null; string orderBy = null; int maxRelativeLevel = -1; bool selectOnlyPublished = false; string columns = null;
// Get the document TreeNode node = DocumentHelper.GetDocument(siteName, aliasPath, culture, combineWithDefaultCulture, classNames, where, orderBy, maxRelativeLevel, selectOnlyPublished, columns, tree);
if (node != null) { WorkflowManager workflowmanager = WorkflowManager.GetInstance(tree);
// Make sure the document uses workflow WorkflowInfo workflow = workflowmanager.GetNodeWorkflow(node);
if (workflow != null) { // Check if the workflow uses check-in/check-out bool autoCheck = !workflow.UseCheckInCheckOut(CMSContext.CurrentSiteName);
// Create a new version manager instance VersionManager versionmanager = VersionManager.GetInstance(tree);
// If it does not use check-in/check-out, check out the document automatically if (autoCheck) { versionmanager.CheckOut(node); }
if (node.IsCheckedOut) { // Edit the last version of the document string newName = node.DocumentName.ToLower();
node.DocumentName = newName; node.SetValue("MenuItemName", newName);
// Save the document version DocumentHelper.UpdateDocument(node, tree);
// Automatically check in if (autoCheck) { versionmanager.CheckIn(node, null, null); }
return true; } else { apiEditDocument.ErrorMessage = "The document hasn't been checked out."; } } else { apiEditDocument.ErrorMessage = "The document doesn't use workflow."; } }
return false; } |
Use the following example to check the document in. Please note that check-in/check-out must be enabled for the respective workflow for this example to be functional.
private bool CheckIn() { TreeProvider tree = new TreeProvider(CMSContext.CurrentUser);
// Prepare parameters string siteName = CMSContext.CurrentSiteName; string aliasPath = "/API-Example"; string culture = "en-us"; bool combineWithDefaultCulture = false; string classNames = TreeProvider.ALL_CLASSNAMES; string where = null; string orderBy = null; int maxRelativeLevel = -1; bool selectOnlyPublished = false; string columns = null;
// Get the document TreeNode node = DocumentHelper.GetDocument(siteName, aliasPath, culture, combineWithDefaultCulture, classNames, where, orderBy, maxRelativeLevel, selectOnlyPublished, columns, tree);
if (node != null) { WorkflowManager workflowmanager = WorkflowManager.GetInstance(tree);
// Make sure the document uses workflow WorkflowInfo workflow = workflowmanager.GetNodeWorkflow(node);
if (workflow != null) { if (node.IsCheckedOut) { VersionManager versionmanager = VersionManager.GetInstance(tree);
// Check in the document versionmanager.CheckIn(node, null, null);
return true; } else { apiCheckIn.ErrorMessage = "The document hasn't been checked out."; } } else { apiCheckIn.ErrorMessage = "The document doesn't use workflow."; } }
return false; } |
You can also check the document back in by reverting the check-out used above.
private bool UndoCheckout() { TreeProvider tree = new TreeProvider(CMSContext.CurrentUser);
// Prepare parameters string siteName = CMSContext.CurrentSiteName; string aliasPath = "/API-Example"; string culture = "en-us"; bool combineWithDefaultCulture = false; string classNames = TreeProvider.ALL_CLASSNAMES; string where = null; string orderBy = null; int maxRelativeLevel = -1; bool selectOnlyPublished = false; string columns = null;
// Get the document TreeNode node = DocumentHelper.GetDocument(siteName, aliasPath, culture, combineWithDefaultCulture, classNames, where, orderBy, maxRelativeLevel, selectOnlyPublished, columns, tree);
if (node != null) { WorkflowManager workflowmanager = WorkflowManager.GetInstance(tree);
// Make sure the document uses workflow WorkflowInfo workflow = workflowmanager.GetNodeWorkflow(node);
if (workflow != null) { if (node.IsCheckedOut) { VersionManager versionmanager = VersionManager.GetInstance(tree);
// Undo the checkout versionmanager.UndoCheckOut(node);
return true; } else { apiUndoCheckout.ErrorMessage = "The document hasn't been checked out."; } } else { apiUndoCheckout.ErrorMessage = "The document doesn't use workflow."; } }
return false; } |