Ejemplo n.º 1
0
        /// <summary>
        /// Reloads the attribute values.
        /// </summary>
        public void ReloadAttributeValues()
        {
            using (new Rock.Data.UnitOfWorkScope())
            {
                Rock.CMS.BlockInstanceService blockInstanceService = new CMS.BlockInstanceService();
                Rock.CMS.BlockInstance        blockInstanceModel   = blockInstanceService.Get(this.Id);

                if (blockInstanceModel != null)
                {
                    Rock.Attribute.Helper.LoadAttributes(blockInstanceModel);

                    this.AttributeValues = blockInstanceModel.AttributeValues;

                    this.AttributeIds = new List <int>();
                    if (blockInstanceModel.Attributes != null)
                    {
                        foreach (var category in blockInstanceModel.Attributes)
                        {
                            foreach (var attribute in category.Value)
                            {
                                this.AttributeIds.Add(attribute.Id);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void UpdateBlockInstance(string id, Rock.CMS.DTO.BlockInstance BlockInstance)
        {
            var currentUser = Rock.CMS.UserService.GetCurrentUser();

            if (currentUser == null)
            {
                throw new WebFaultException <string>("Must be logged in", System.Net.HttpStatusCode.Forbidden);
            }

            using (Rock.Data.UnitOfWorkScope uow = new Rock.Data.UnitOfWorkScope())
            {
                uow.objectContext.Configuration.ProxyCreationEnabled = false;
                Rock.CMS.BlockInstanceService BlockInstanceService  = new Rock.CMS.BlockInstanceService();
                Rock.CMS.BlockInstance        existingBlockInstance = BlockInstanceService.Get(int.Parse(id));
                if (existingBlockInstance.Authorized("Edit", currentUser))
                {
                    uow.objectContext.Entry(existingBlockInstance).CurrentValues.SetValues(BlockInstance);

                    if (existingBlockInstance.IsValid)
                    {
                        BlockInstanceService.Save(existingBlockInstance, currentUser.PersonId);
                    }
                    else
                    {
                        throw new WebFaultException <string>(existingBlockInstance.ValidationResults.AsDelimited(", "), System.Net.HttpStatusCode.BadRequest);
                    }
                }
                else
                {
                    throw new WebFaultException <string>("Not Authorized to Edit this BlockInstance", System.Net.HttpStatusCode.Forbidden);
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Returns BlockInstance object from cache.  If blockInstance does not already exist in cache, it
        /// will be read and added to cache
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static BlockInstance Read(int id)
        {
            string cacheKey = BlockInstance.CacheKey(id);

            ObjectCache   cache         = MemoryCache.Default;
            BlockInstance blockInstance = cache[cacheKey] as BlockInstance;

            if (blockInstance != null)
            {
                return(blockInstance);
            }
            else
            {
                Rock.CMS.BlockInstanceService blockInstanceService = new CMS.BlockInstanceService();
                Rock.CMS.BlockInstance        blockInstanceModel   = blockInstanceService.Get(id);
                if (blockInstanceModel != null)
                {
                    Rock.Attribute.Helper.LoadAttributes(blockInstanceModel);

                    blockInstance = BlockInstance.CopyModel(blockInstanceModel);

                    cache.Set(cacheKey, blockInstance, new CacheItemPolicy());

                    return(blockInstance);
                }
                else
                {
                    return(null);
                }
            }
        }
Ejemplo n.º 4
0
        private static BlockInstance CopyModel(Rock.CMS.BlockInstance blockInstanceModel)
        {
            BlockInstance blockInstance = new BlockInstance();

            blockInstance.Id      = blockInstanceModel.Id;
            blockInstance.BlockId = blockInstanceModel.BlockId;
            blockInstance.Name    = blockInstanceModel.Name;
            blockInstance.Zone    = blockInstanceModel.Zone;
            blockInstance.BlockInstanceLocation = blockInstanceModel.Page != null ? BlockInstanceLocation.Page : BlockInstanceLocation.Layout;
            blockInstance.Order = blockInstanceModel.Order;
            blockInstance.OutputCacheDuration = blockInstanceModel.OutputCacheDuration;
            blockInstance.AttributeValues     = blockInstanceModel.AttributeValues;
            blockInstance.AttributeIds        = new List <int>();
            if (blockInstanceModel.Attributes != null)
            {
                foreach (var category in blockInstanceModel.Attributes)
                {
                    foreach (var attribute in category.Value)
                    {
                        blockInstance.AttributeIds.Add(attribute.Id);
                    }
                }
            }

            blockInstance.AuthEntity      = blockInstanceModel.AuthEntity;
            blockInstance.InstanceActions = blockInstanceModel.SupportedActions;

            return(blockInstance);
        }
Ejemplo n.º 5
0
        public Rock.CMS.DTO.BlockInstance ApiGet(string id, string apiKey)
        {
            using (Rock.Data.UnitOfWorkScope uow = new Rock.Data.UnitOfWorkScope())
            {
                Rock.CMS.UserService userService = new Rock.CMS.UserService();
                Rock.CMS.User        user        = userService.Queryable().Where(u => u.ApiKey == apiKey).FirstOrDefault();

                if (user != null)
                {
                    uow.objectContext.Configuration.ProxyCreationEnabled = false;
                    Rock.CMS.BlockInstanceService BlockInstanceService = new Rock.CMS.BlockInstanceService();
                    Rock.CMS.BlockInstance        BlockInstance        = BlockInstanceService.Get(int.Parse(id));
                    if (BlockInstance.Authorized("View", user))
                    {
                        return(BlockInstance.DataTransferObject);
                    }
                    else
                    {
                        throw new WebFaultException <string>("Not Authorized to View this BlockInstance", System.Net.HttpStatusCode.Forbidden);
                    }
                }
                else
                {
                    throw new WebFaultException <string>("Invalid API Key", System.Net.HttpStatusCode.Forbidden);
                }
            }
        }
Ejemplo n.º 6
0
        public void DeleteBlockInstance(string id)
        {
            var currentUser = Rock.CMS.UserService.GetCurrentUser();

            if (currentUser == null)
            {
                throw new WebFaultException <string>("Must be logged in", System.Net.HttpStatusCode.Forbidden);
            }

            using (Rock.Data.UnitOfWorkScope uow = new Rock.Data.UnitOfWorkScope())
            {
                uow.objectContext.Configuration.ProxyCreationEnabled = false;
                Rock.CMS.BlockInstanceService BlockInstanceService = new Rock.CMS.BlockInstanceService();
                Rock.CMS.BlockInstance        BlockInstance        = BlockInstanceService.Get(int.Parse(id));
                if (BlockInstance.Authorized("Edit", currentUser))
                {
                    BlockInstanceService.Delete(BlockInstance, currentUser.PersonId);
                    BlockInstanceService.Save(BlockInstance, currentUser.PersonId);
                }
                else
                {
                    throw new WebFaultException <string>("Not Authorized to Edit this BlockInstance", System.Net.HttpStatusCode.Forbidden);
                }
            }
        }
Ejemplo n.º 7
0
        public void ApiDeleteBlockInstance(string id, string apiKey)
        {
            using (Rock.Data.UnitOfWorkScope uow = new Rock.Data.UnitOfWorkScope())
            {
                Rock.CMS.UserService userService = new Rock.CMS.UserService();
                Rock.CMS.User        user        = userService.Queryable().Where(u => u.ApiKey == apiKey).FirstOrDefault();

                if (user != null)
                {
                    uow.objectContext.Configuration.ProxyCreationEnabled = false;
                    Rock.CMS.BlockInstanceService BlockInstanceService = new Rock.CMS.BlockInstanceService();
                    Rock.CMS.BlockInstance        BlockInstance        = BlockInstanceService.Get(int.Parse(id));
                    if (BlockInstance.Authorized("Edit", user))
                    {
                        BlockInstanceService.Delete(BlockInstance, user.PersonId);
                        BlockInstanceService.Save(BlockInstance, user.PersonId);
                    }
                    else
                    {
                        throw new WebFaultException <string>("Not Authorized to Edit this BlockInstance", System.Net.HttpStatusCode.Forbidden);
                    }
                }
                else
                {
                    throw new WebFaultException <string>("Invalid API Key", System.Net.HttpStatusCode.Forbidden);
                }
            }
        }
Ejemplo n.º 8
0
        public void ApiCreateBlockInstance(string apiKey, Rock.CMS.DTO.BlockInstance BlockInstance)
        {
            using (Rock.Data.UnitOfWorkScope uow = new Rock.Data.UnitOfWorkScope())
            {
                Rock.CMS.UserService userService = new Rock.CMS.UserService();
                Rock.CMS.User        user        = userService.Queryable().Where(u => u.ApiKey == apiKey).FirstOrDefault();

                if (user != null)
                {
                    uow.objectContext.Configuration.ProxyCreationEnabled = false;
                    Rock.CMS.BlockInstanceService BlockInstanceService  = new Rock.CMS.BlockInstanceService();
                    Rock.CMS.BlockInstance        existingBlockInstance = new Rock.CMS.BlockInstance();
                    BlockInstanceService.Add(existingBlockInstance, user.PersonId);
                    uow.objectContext.Entry(existingBlockInstance).CurrentValues.SetValues(BlockInstance);

                    if (existingBlockInstance.IsValid)
                    {
                        BlockInstanceService.Save(existingBlockInstance, user.PersonId);
                    }
                    else
                    {
                        throw new WebFaultException <string>(existingBlockInstance.ValidationResults.AsDelimited(", "), System.Net.HttpStatusCode.BadRequest);
                    }
                }
                else
                {
                    throw new WebFaultException <string>("Invalid API Key", System.Net.HttpStatusCode.Forbidden);
                }
            }
        }
Ejemplo n.º 9
0
        protected void masterPage_OnSave(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                using (new Rock.Data.UnitOfWorkScope())
                {
                    Rock.CMS.BlockInstanceService blockInstanceService = new Rock.CMS.BlockInstanceService();
                    Rock.CMS.BlockInstance        blockInstance        = blockInstanceService.Get(_blockInstance.Id);

                    Rock.Attribute.Helper.LoadAttributes(blockInstance);

                    blockInstance.Name = tbBlockName.Text;
                    blockInstance.OutputCacheDuration = Int32.Parse(tbCacheDuration.Text);
                    blockInstanceService.Save(blockInstance, CurrentPersonId);

                    Rock.Attribute.Helper.GetEditValues(phAttributes, _blockInstance);
                    _blockInstance.SaveAttributeValues(CurrentPersonId);

                    Rock.Web.Cache.BlockInstance.Flush(_blockInstance.Id);
                }

                string script = "window.parent.closeModal()";
                ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "close-modal", script, true);
            }
        }
Ejemplo n.º 10
0
        protected void ShowEdit(Rock.Web.Cache.BlockInstanceLocation location, int blockInstanceId)
        {
            Rock.CMS.BlockInstance blockInstance = blockInstanceService.Get(blockInstanceId);
            hfBlockLocation.Value = location.ConvertToString();

            if (blockInstance != null)
            {
                lAction.Text               = "Edit ";
                hfBlockInstanceId.Value    = blockInstance.Id.ToString();
                ddlBlockType.SelectedValue = blockInstance.Block.Id.ToString();
                tbBlockName.Text           = blockInstance.Name;
            }
            else
            {
                lAction.Text               = "Add ";
                hfBlockInstanceId.Value    = "0";
                ddlBlockType.SelectedIndex = -1;
                tbBlockName.Text           = string.Empty;
            }

            lAction.Text += hfBlockLocation.Value;

            pnlLists.Visible   = false;
            pnlDetails.Visible = true;
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Adds BlockInstance model to cache, and returns cached object
        /// </summary>
        /// <param name="blockInstanceModel"></param>
        /// <returns></returns>
        public static BlockInstance Read(Rock.CMS.BlockInstance blockInstanceModel)
        {
            BlockInstance blockInstance = BlockInstance.CopyModel(blockInstanceModel);

            string      cacheKey = BlockInstance.CacheKey(blockInstanceModel.Id);
            ObjectCache cache    = MemoryCache.Default;

            cache.Set(cacheKey, blockInstance, new CacheItemPolicy());

            return(blockInstance);
        }
Ejemplo n.º 12
0
        protected void btnSave_Click( object sender, EventArgs e )
        {
            Rock.CMS.BlockInstance blockInstance;

            int blockInstanceId = 0;
            if ( !Int32.TryParse( hfBlockInstanceId.Value, out blockInstanceId ) )
                blockInstanceId = 0;

            if ( blockInstanceId == 0 )
            {
                blockInstance = new Rock.CMS.BlockInstance();

                Rock.Web.Cache.BlockInstanceLocation location = hfBlockLocation.Value.ConvertToEnum<Rock.Web.Cache.BlockInstanceLocation>();
                if ( location == Rock.Web.Cache.BlockInstanceLocation.Layout )
                {
                    blockInstance.Layout = _page.Layout;
                    blockInstance.PageId = null;
                }
                else
                {
                    blockInstance.Layout = null;
                    blockInstance.PageId = _page.Id;
                }

                blockInstance.Zone = _zoneName;

                Rock.CMS.BlockInstance lastBlock =
                    blockInstanceService.GetByLayoutAndPageIdAndZone( null, _page.Id, _zoneName ).
                                                OrderByDescending( b => b.Order ).FirstOrDefault();

                if ( lastBlock != null )
                    blockInstance.Order = lastBlock.Order + 1;
                else
                    blockInstance.Order = 0;

                blockInstanceService.Add( blockInstance, CurrentPersonId );
            }
            else
                blockInstance = blockInstanceService.Get( blockInstanceId );

            blockInstance.Name = tbBlockName.Text;
            blockInstance.BlockId = Convert.ToInt32( ddlBlockType.SelectedValue );

            blockInstanceService.Save( blockInstance, CurrentPersonId );

            Rock.Security.Authorization.CopyAuthorization( _page, blockInstance, CurrentPersonId );
            _page.FlushBlockInstances();

            BindGrids();

            pnlDetails.Visible = false;
            pnlLists.Visible = true;
        }
Ejemplo n.º 13
0
        protected void gPageBlocks_Delete(object sender, RowEventArgs e)
        {
            Rock.CMS.BlockInstance blockInstance = blockInstanceService.Get(( int )gPageBlocks.DataKeys[e.RowIndex]["id"]);
            if (BlockInstance != null)
            {
                blockInstanceService.Delete(blockInstance, CurrentPersonId);
                blockInstanceService.Save(blockInstance, CurrentPersonId);

                _page.FlushBlockInstances();
            }

            BindGrids();
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Saves the attribute values.
        /// </summary>
        /// <param name="personId">The person id.</param>
        public void SaveAttributeValues(int?personId)
        {
            Rock.CMS.BlockInstanceService blockInstanceService = new CMS.BlockInstanceService();
            Rock.CMS.BlockInstance        blockInstanceModel   = blockInstanceService.Get(this.Id);

            if (blockInstanceModel != null)
            {
                Rock.Attribute.Helper.LoadAttributes(blockInstanceModel);
                foreach (var category in blockInstanceModel.Attributes)
                {
                    foreach (var attribute in category.Value)
                    {
                        Rock.Attribute.Helper.SaveAttributeValues(blockInstanceModel, attribute, this.AttributeValues[attribute.Key].Value, personId);
                    }
                }
            }
        }
Ejemplo n.º 15
0
        public void ApiMove(string id, string apiKey, Rock.CMS.DTO.BlockInstance BlockInstance)
        {
            using (Rock.Data.UnitOfWorkScope uow = new Rock.Data.UnitOfWorkScope())
            {
                Rock.CMS.UserService userService = new Rock.CMS.UserService();
                Rock.CMS.User        user        = userService.Queryable().Where(u => u.ApiKey == apiKey).FirstOrDefault();

                if (user != null)
                {
                    uow.objectContext.Configuration.ProxyCreationEnabled = false;
                    Rock.CMS.BlockInstanceService BlockInstanceService  = new Rock.CMS.BlockInstanceService();
                    Rock.CMS.BlockInstance        existingBlockInstance = BlockInstanceService.Get(int.Parse(id));

                    if (existingBlockInstance.Authorized("Edit", user))
                    {
                        // If the block was moved from or to the layout section, then all the pages
                        // that use that layout need to be flushed from cache
                        if (existingBlockInstance.Layout != BlockInstance.Layout)
                        {
                            if (existingBlockInstance.Layout != null)
                            {
                                Rock.Web.Cache.Page.FlushLayout(existingBlockInstance.Layout);
                            }
                            if (BlockInstance.Layout != null)
                            {
                                Rock.Web.Cache.Page.FlushLayout(BlockInstance.Layout);
                            }
                        }

                        uow.objectContext.Entry(existingBlockInstance).CurrentValues.SetValues(BlockInstance);
                        BlockInstanceService.Move(existingBlockInstance);
                        BlockInstanceService.Save(existingBlockInstance, user.PersonId);
                    }
                    else
                    {
                        throw new WebFaultException <string>("Not Authorized to Edit this BlockInstance", System.Net.HttpStatusCode.Forbidden);
                    }
                }
                else
                {
                    throw new WebFaultException <string>("Invalid API Key", System.Net.HttpStatusCode.Forbidden);
                }
            }
        }
Ejemplo n.º 16
0
        public void Move(string id, Rock.CMS.DTO.BlockInstance BlockInstance)
        {
            var currentUser = Rock.CMS.UserService.GetCurrentUser();

            if (currentUser == null)
            {
                throw new WebFaultException <string>("Must be logged in", System.Net.HttpStatusCode.Forbidden);
            }

            using (Rock.Data.UnitOfWorkScope uow = new Rock.Data.UnitOfWorkScope())
            {
                uow.objectContext.Configuration.ProxyCreationEnabled = false;
                Rock.CMS.BlockInstanceService BlockInstanceService  = new Rock.CMS.BlockInstanceService();
                Rock.CMS.BlockInstance        existingBlockInstance = BlockInstanceService.Get(int.Parse(id));

                if (existingBlockInstance.Authorized("Edit", currentUser))
                {
                    // If the block was moved from or to the layout section, then all the pages
                    // that use that layout need to be flushed from cache
                    if (existingBlockInstance.Layout != BlockInstance.Layout)
                    {
                        if (existingBlockInstance.Layout != null)
                        {
                            Rock.Web.Cache.Page.FlushLayout(existingBlockInstance.Layout);
                        }
                        if (BlockInstance.Layout != null)
                        {
                            Rock.Web.Cache.Page.FlushLayout(BlockInstance.Layout);
                        }
                    }

                    uow.objectContext.Entry(existingBlockInstance).CurrentValues.SetValues(BlockInstance);
                    BlockInstanceService.Move(existingBlockInstance);
                    BlockInstanceService.Save(existingBlockInstance, currentUser.PersonId);
                }
                else
                {
                    throw new WebFaultException <string>("Not Authorized to Edit this BlockInstance", System.Net.HttpStatusCode.Forbidden);
                }
            }
        }
Ejemplo n.º 17
0
        public void ApiCreateBlockInstance( string apiKey, Rock.CMS.DTO.BlockInstance BlockInstance )
        {
            using ( Rock.Data.UnitOfWorkScope uow = new Rock.Data.UnitOfWorkScope() )
            {
                Rock.CMS.UserService userService = new Rock.CMS.UserService();
                Rock.CMS.User user = userService.Queryable().Where( u => u.ApiKey == apiKey ).FirstOrDefault();

                if (user != null)
                {
                    uow.objectContext.Configuration.ProxyCreationEnabled = false;
                    Rock.CMS.BlockInstanceService BlockInstanceService = new Rock.CMS.BlockInstanceService();
                    Rock.CMS.BlockInstance existingBlockInstance = new Rock.CMS.BlockInstance();
                    BlockInstanceService.Add( existingBlockInstance, user.PersonId );
                    uow.objectContext.Entry(existingBlockInstance).CurrentValues.SetValues(BlockInstance);

                    if (existingBlockInstance.IsValid)
                        BlockInstanceService.Save( existingBlockInstance, user.PersonId );
                    else
                        throw new WebFaultException<string>( existingBlockInstance.ValidationResults.AsDelimited(", "), System.Net.HttpStatusCode.BadRequest );
                }
                else
                    throw new WebFaultException<string>( "Invalid API Key", System.Net.HttpStatusCode.Forbidden );
            }
        }
Ejemplo n.º 18
0
        public Rock.CMS.DTO.BlockInstance Get(string id)
        {
            var currentUser = Rock.CMS.UserService.GetCurrentUser();

            if (currentUser == null)
            {
                throw new WebFaultException <string>("Must be logged in", System.Net.HttpStatusCode.Forbidden);
            }

            using (Rock.Data.UnitOfWorkScope uow = new Rock.Data.UnitOfWorkScope())
            {
                uow.objectContext.Configuration.ProxyCreationEnabled = false;
                Rock.CMS.BlockInstanceService BlockInstanceService = new Rock.CMS.BlockInstanceService();
                Rock.CMS.BlockInstance        BlockInstance        = BlockInstanceService.Get(int.Parse(id));
                if (BlockInstance.Authorized("View", currentUser))
                {
                    return(BlockInstance.DataTransferObject);
                }
                else
                {
                    throw new WebFaultException <string>("Not Authorized to View this BlockInstance", System.Net.HttpStatusCode.Forbidden);
                }
            }
        }
Ejemplo n.º 19
0
        public void CreateBlockInstance( Rock.CMS.DTO.BlockInstance BlockInstance )
        {
            var currentUser = Rock.CMS.UserService.GetCurrentUser();
            if ( currentUser == null )
                throw new WebFaultException<string>("Must be logged in", System.Net.HttpStatusCode.Forbidden );

            using ( Rock.Data.UnitOfWorkScope uow = new Rock.Data.UnitOfWorkScope() )
            {
                uow.objectContext.Configuration.ProxyCreationEnabled = false;
                Rock.CMS.BlockInstanceService BlockInstanceService = new Rock.CMS.BlockInstanceService();
                Rock.CMS.BlockInstance existingBlockInstance = new Rock.CMS.BlockInstance();
                BlockInstanceService.Add( existingBlockInstance, currentUser.PersonId );
                uow.objectContext.Entry(existingBlockInstance).CurrentValues.SetValues(BlockInstance);

                if (existingBlockInstance.IsValid)
                    BlockInstanceService.Save( existingBlockInstance, currentUser.PersonId );
                else
                    throw new WebFaultException<string>( existingBlockInstance.ValidationResults.AsDelimited(", "), System.Net.HttpStatusCode.BadRequest );
            }
        }
Ejemplo n.º 20
0
        protected void btnSave_Click(object sender, EventArgs e)
        {
            Rock.CMS.BlockInstance blockInstance;

            int blockInstanceId = 0;

            if (!Int32.TryParse(hfBlockInstanceId.Value, out blockInstanceId))
            {
                blockInstanceId = 0;
            }

            if (blockInstanceId == 0)
            {
                blockInstance = new Rock.CMS.BlockInstance();

                Rock.Web.Cache.BlockInstanceLocation location = hfBlockLocation.Value.ConvertToEnum <Rock.Web.Cache.BlockInstanceLocation>();
                if (location == Rock.Web.Cache.BlockInstanceLocation.Layout)
                {
                    blockInstance.Layout = _page.Layout;
                    blockInstance.PageId = null;
                }
                else
                {
                    blockInstance.Layout = null;
                    blockInstance.PageId = _page.Id;
                }

                blockInstance.Zone = _zoneName;

                Rock.CMS.BlockInstance lastBlock =
                    blockInstanceService.GetByLayoutAndPageIdAndZone(null, _page.Id, _zoneName).
                    OrderByDescending(b => b.Order).FirstOrDefault();

                if (lastBlock != null)
                {
                    blockInstance.Order = lastBlock.Order + 1;
                }
                else
                {
                    blockInstance.Order = 0;
                }

                blockInstanceService.Add(blockInstance, CurrentPersonId);
            }
            else
            {
                blockInstance = blockInstanceService.Get(blockInstanceId);
            }

            blockInstance.Name    = tbBlockName.Text;
            blockInstance.BlockId = Convert.ToInt32(ddlBlockType.SelectedValue);

            blockInstanceService.Save(blockInstance, CurrentPersonId);

            Rock.Security.Authorization.CopyAuthorization(_page, blockInstance, CurrentPersonId);
            _page.FlushBlockInstances();

            BindGrids();

            pnlDetails.Visible = false;
            pnlLists.Visible   = true;
        }