//private void ContentService_Copying(IContentService sender,CopyEventArgs<IContent> eventArgs) { // ActionModel copy = null; // int _currentUserId; // using(var contextReference = _context.EnsureUmbracoContext()) { // _currentUserId = contextReference.UmbracoContext.Security.CurrentUser.Id; // } // try { // using(var scope = _scopeProvider.CreateScope(autoComplete: true)) { // var sql = scope.SqlContext.Sql().Select("*").From<ActionModel>() // .Where<ActionModel>(x => x.id == 5); // copy = scope.Database.Fetch<ActionModel>(sql).FirstOrDefault(); // } // } // catch(Exception ex) { // _logger.Error<ActionModel>("Failed to get Content Protector setting for copy action: " + ex.Message); // } // if(copy != null) { // if(copy.nodes.Contains(eventArgs.Copy.Id.ToString())) { // if(!copy.userExceptions.Split(',').Contains(_currentUserId.ToString())) { // eventArgs.Cancel = true; // eventArgs.CanCancel = true; // eventArgs.Messages.Add(new EventMessage("Action rejected. Contact website admin","You cannot copy " + eventArgs.Copy.Name,EventMessageType.Error)); // } // } // } //} //private void ContentService_Moving(IContentService sender,MoveEventArgs<IContent> eventArgs) { // ActionModel move = null; // int _currentUserId; // using(var contextReference = _context.EnsureUmbracoContext()) { // _currentUserId = contextReference.UmbracoContext.Security.CurrentUser.Id; // } // try { // using(var scope = _scopeProvider.CreateScope(autoComplete: true)) { // var sql = scope.SqlContext.Sql().Select("*").From<ActionModel>() // .Where<ActionModel>(x => x.id == 2); // move = scope.Database.Fetch<ActionModel>(sql).FirstOrDefault(); // } // } // catch(Exception ex) { // _logger.Error<ActionModel>("Failed to get Content Protector setting for move action: " + ex.Message); // } // foreach(var node in eventArgs.MoveInfoCollection) { // if(move != null) { // if(move.nodes.Contains(node.Entity.Id.ToString()) || move.disableAction) { // if(!move.userExceptions.Split(',').Contains(_currentUserId.ToString())) { // eventArgs.CancelOperation(new EventMessage("Action rejected. Contact website admin","You cannot move " + node.Entity.Name,EventMessageType.Error)); // } // } // } // } //} private void ContentService_Saving(IContentService sender, ContentSavingEventArgs eventArgs) { ActionModel save = null; int _currentUserId; using (var contextReference = _context.EnsureUmbracoContext()) { _currentUserId = contextReference.UmbracoContext.Security.CurrentUser.Id; } try { using (var scope = _scopeProvider.CreateScope(autoComplete: true)) { var sql = scope.SqlContext.Sql().Select("*").From <ActionModel>() .Where <ActionModel>(x => x.id == 1); save = scope.Database.Fetch <ActionModel>(sql).FirstOrDefault(); } } catch (Exception ex) { _logger.Error <ActionModel>("Failed to get Content Protector setting for save action: " + ex.Message); } foreach (var node in eventArgs.SavedEntities) { if (save != null) { if (save.nodes.Split(',').Contains(node.Id.ToString()) || save.disableAction) { if (!save.userExceptions.Split(',').Contains(_currentUserId.ToString())) { eventArgs.CancelOperation(new EventMessage("Action rejected. Contact website admin", "You cannot save " + node.Name, EventMessageType.Error)); } } } } }
private void ContentService_Saving(IContentService sender, ContentSavingEventArgs e) { contentService = sender; using (var scope = scopeProvider.CreateScope()) { foreach (var node in e.SavedEntities) { var parentNodeId = node.ParentId; // If the document type is a resourceItem if (node.ContentType.Alias == BlogPage.ModelTypeAlias) { string parentModelTypeAlias = String.Empty; string modelTypeAlias = String.Empty; string datePropertyTypeAlias = String.Empty; switch (node.ContentType.Alias) { case BlogPage.ModelTypeAlias: modelTypeAlias = BlogPage.ModelTypeAlias; parentModelTypeAlias = Section.ModelTypeAlias; datePropertyTypeAlias = BlogPage.GetModelPropertyType(r => r.PublishedDate).Alias; break; default: throw new Exception("Error setting Model/Prop alias"); } IContent monthFolder; if (parentNodeId <= 0 && e.CanCancel) { e.CancelOperation(new EventMessage("Error", "Something went wrong with publishing the resource", EventMessageType.Error)); } var currentParent = GetCurrentParent(parentNodeId); var date = node.GetValue <DateTime>(datePropertyTypeAlias); if (date == DateTime.MinValue) { date = DateTime.Today; node.SetValue(datePropertyTypeAlias, date); } var dateYear = date.ToString("yyyy"); var dateMonth = date.ToString("MMMM"); if (currentParent.ContentType.Alias == DateFolder.ModelTypeAlias) { bool moveNode = VerifyOrMoveToCorrectLocation(scope, currentParent, dateYear, dateMonth, out monthFolder); if (moveNode) { node.SetParent(monthFolder); } } else if (currentParent.ContentType.Alias == parentModelTypeAlias) { monthFolder = MoveToCorrectLocation(scope, currentParent, dateYear, dateMonth); node.SetParent(monthFolder); } } } scope.Complete(); } }