private static bool IsInvalidVersioningAction(Content context, string actionName) { if (string.IsNullOrEmpty(actionName) || context == null) { return(false); } actionName = actionName.ToLower(); var generic = context.ContentHandler as GenericContent; if (generic == null) { return(false); } switch (actionName) { case "checkin": return(!SavingAction.HasCheckIn(generic)); case "checkout": return((generic.VersioningMode <= VersioningType.None && !(generic is IFile || generic.NodeType.IsInstaceOfOrDerivedFrom("Page"))) || !SavingAction.HasCheckOut(generic)); case "undocheckout": return(!SavingAction.HasUndoCheckOut(generic)); case "forceundocheckout": return(!SavingAction.HasForceUndoCheckOutRight(generic)); case "publish": return(generic.VersioningMode <= VersioningType.None || !SavingAction.HasPublish(generic)); case "approve": case "reject": return(!generic.Approvable); default: return(false); } }
protected virtual void SetButtonVisibility() { HideAllButtons(); if (this.ContentView == null) { return; } SetButtonVisible(this.CancelButton, true); var contentType = this.ContentView.ContentHandler as ContentType; if (contentType != null) { if (SecurityHandler.HasPermission(contentType, PermissionType.Save)) { SetButtonVisible(this.CheckoutSaveCheckinButton, true); } return; } var genericContent = this.ContentView.ContentHandler as GenericContent; if (genericContent == null) { return; } switch (genericContent.Version.Status) { case VersionStatus.Approved: case VersionStatus.Rejected: if (SavingAction.HasCheckOut(genericContent)) { SetButtonVisible(this.CheckoutSaveButton, true); } if (SavingAction.HasSave(genericContent)) { SetButtonVisible(this.CheckoutSaveCheckinButton, true); } break; case VersionStatus.Locked: if (SavingAction.HasSave(genericContent)) { SetButtonVisible(this.SaveButton, true); } if (SavingAction.HasCheckIn(genericContent)) { SetButtonVisible(this.SaveCheckinButton, true); } break; case VersionStatus.Draft: if (genericContent.Id == 0) { if (SavingAction.HasSave(genericContent)) { SetButtonVisible(this.CheckoutSaveCheckinButton, true); } } else { if (SavingAction.HasCheckOut(genericContent)) { SetButtonVisible(this.CheckoutSaveButton, true); } if (SavingAction.HasSave(genericContent)) { SetButtonVisible(this.CheckoutSaveCheckinButton, true); } } if (SavingAction.HasPublish(genericContent)) { SetButtonVisible(this.PublishButton, true); } break; case VersionStatus.Pending: if (genericContent.Id == 0) { if (SavingAction.HasSave(genericContent)) { SetButtonVisible(this.SaveButton, true); } } else { if (SavingAction.HasCheckOut(genericContent)) { SetButtonVisible(this.CheckoutSaveButton, true); } } break; } }
public override Control CreateActionButtons(DefaultButtonType button) { var _isContentType = false; var currentButtonsControl = CurrentControl as DefaultButtons; if (currentButtonsControl == null) { return(null); } if (currentButtonsControl.CurrentGC == null) { // // ContentType is always being handled specially. // var nodeTypeName = currentButtonsControl.CurrentNode.GetType().Name; // // treat contenttype behaviour 'til the final solution // if (nodeTypeName.Equals("RuntimeContentHandler")) { _isContentType = true; } else { if (!nodeTypeName.Equals(typeof(ContentType).Name)) { return(null); } _isContentType = true; } } var currentGenericContent = currentButtonsControl.CurrentGC; SecurityHandler security = null; if (!_isContentType) { security = currentButtonsControl.NewContent ? currentGenericContent.Parent.Security : currentGenericContent.Security; } switch (button) { case DefaultButtonType.CheckIn: if (currentButtonsControl.VisibleCheckIn && !_isContentType && SavingAction.HasCheckIn(currentGenericContent)) { return(new Button { ID = "btnCheckIn", Text = (HttpContext.GetGlobalResourceObject("Portal", "CheckIn") as string), CommandName = "checkin", Enabled = true, EnableViewState = false }); } break; case DefaultButtonType.CheckOut: var isInWorkspaceAction = PortalContext.Current.ContextWorkspace != null; if (currentButtonsControl.VisibleCheckOut && !_isContentType && SavingAction.HasCheckOut(currentGenericContent)) { // // TODO: checkout button must be displayed in the next release // In Beta 5 this function is not allowed. Check the Task 3978. // if (isInWorkspaceAction) { return(null); } return(new Button { ID = "btnCheckOut", Text = (HttpContext.GetGlobalResourceObject("Portal", "CheckOut") as string), CommandName = "checkout", Enabled = true, EnableViewState = false }); } break; case DefaultButtonType.UndoCheckOut: if (currentButtonsControl.VisibleUndoCheckOut && !_isContentType && SavingAction.HasUndoCheckOut(currentGenericContent)) { return(new Button { ID = "btnUndoCheckOut", Text = (HttpContext.GetGlobalResourceObject("Portal", "UndoCheckOut") as string), CommandName = "undocheckout", Enabled = true, EnableViewState = false }); } break; case DefaultButtonType.Save: var saveButton = new Button { ID = "btnSave", Text = (HttpContext.GetGlobalResourceObject("Portal", "Save") as string), CommandName = "save", Enabled = true, EnableViewState = false }; if (currentButtonsControl.VisibleSave && !_isContentType && SavingAction.HasSave(currentGenericContent)) { if (currentButtonsControl.NewContent ? security.HasPermission(PermissionType.AddNew) : security.HasPermission(PermissionType.Save)) { return(saveButton); } } if (_isContentType) { return(saveButton); } break; case DefaultButtonType.Publish: if (currentButtonsControl.VisiblePublish && !_isContentType && SavingAction.HasPublish(currentGenericContent)) { return(new Button { ID = "btnPublish", Text = (HttpContext.GetGlobalResourceObject("Portal", "Publish") as string), CommandName = "publish", Enabled = true, EnableViewState = false }); } break; case DefaultButtonType.Approve: if (currentButtonsControl.VisibleApprove && !_isContentType && SavingAction.HasApprove(currentGenericContent)) { return(new Button { ID = "btnApprove", Text = (HttpContext.GetGlobalResourceObject("Portal", "Approve") as string), CommandName = "approve", Enabled = true, EnableViewState = false }); } break; case DefaultButtonType.Reject: if (currentButtonsControl.VisibleReject && !_isContentType && SavingAction.HasReject(currentGenericContent)) { return(new Button { ID = "btnReject", Text = (HttpContext.GetGlobalResourceObject("Portal", "Reject") as string), CommandName = "reject", Enabled = true, EnableViewState = false }); } break; case DefaultButtonType.Cancel: if (currentButtonsControl.VisibleCancel) { return(new Button { ID = "btnCancel", Text = (HttpContext.GetGlobalResourceObject("Portal", "Cancel") as string), CommandName = "cancel", Enabled = true, EnableViewState = false }); } break; case DefaultButtonType.ForceUndoCheckOut: if (currentButtonsControl.VisibleForceUndoCheckOut && !_isContentType && SavingAction.HasForceUndoCheckOutRight(currentGenericContent)) { return(new Button { ID = "btnForceUndoCheckOut", Text = (HttpContext.GetGlobalResourceObject("Portal", "ForceUndoCheckOut") as string), CommandName = "forceundocheckout", Enabled = true, EnableViewState = false }); } break; case DefaultButtonType.None: case DefaultButtonType.Custom: break; default: throw new ArgumentOutOfRangeException("button"); } return(null); }