Esempio n. 1
0
        public async Task SaveAsync(Models.AdminMenu tree)
        {
            if (tree.IsReadonly)
            {
                throw new ArgumentException("The object is read-only");
            }

            var adminMenuList = await LoadAdminMenuListAsync();

            var preexisting = adminMenuList.AdminMenu.FirstOrDefault(x => String.Equals(x.Id, tree.Id, StringComparison.OrdinalIgnoreCase));

            // it's new? add it
            if (preexisting == null)
            {
                adminMenuList.AdminMenu.Add(tree);
            }
            else // not new: replace it
            {
                var index = adminMenuList.AdminMenu.IndexOf(preexisting);
                adminMenuList.AdminMenu[index] = tree;
            }

            _session.Save(adminMenuList);
            _signal.DeferredSignalToken(AdminMenuCacheKey);
        }
Esempio n. 2
0
        public async Task RemoveTemplateAsync(string name)
        {
            var document = await LoadTemplatesDocumentAsync();

            document.Templates.Remove(name);

            _session.Save(document);
            _signal.DeferredSignalToken(CacheKey);
        }
Esempio n. 3
0
        public async Task DeleteQueryAsync(string name)
        {
            var existing = await LoadDocumentAsync();

            existing.Queries.Remove(name);

            _session.Save(existing);
            _signal.DeferredSignalToken(QueriesDocumentCacheKey);

            return;
        }
Esempio n. 4
0
        public async Task DeleteSitemapAsync(string sitemapId)
        {
            var existing = await LoadDocumentAsync();

            existing.Sitemaps.Remove(sitemapId);

            _session.Save(existing);
            _signal.DeferredSignalToken(SitemapsDocumentCacheKey);

            BuildAllSitemapRouteEntries(existing);

            return;
        }
        public async Task UpdateIndexAsync(LuceneIndexSettings settings)
        {
            if (settings.IsReadonly)
            {
                throw new ArgumentException("The object is read-only");
            }

            var document = await LoadDocumentAsync();

            document.LuceneIndexSettings[settings.IndexName] = settings;

            Session.Save(document);
            _signal.DeferredSignalToken(CacheKey);
        }
        private void SignalLayerChanged(ContentItem contentItem)
        {
            var layerMetadata = contentItem.As <LayerMetadata>();

            if (layerMetadata != null)
            {
                _signal.DeferredSignalToken(LayerChangeToken);
            }
        }
Esempio n. 7
0
        public async Task UpdateCustomStyleSiteSettingsAsync(ISite site)
        {
            // Persists new data.
            Session.Save(site);

            // Invalidates the cache after the session is committed.
            _memoryCache.Remove(CacheKey);
            _signal.DeferredSignalToken(CacheKey);

            //Reset ShellHost to apply settings
            await _orchardHost.ReloadShellContextAsync(_currentShellSettings);
        }
        private void UpdateContentDefinitionRecord()
        {
            var contentDefinitionRecord = LoadContentDefinitionRecord();

            contentDefinitionRecord.Serial++;
            _contentDefinitionStore.SaveContentDefinitionAsync(contentDefinitionRecord).GetAwaiter().GetResult();

            // Cache invalidation at the end of the scope.
            _signal.DeferredSignalToken(CacheKey);

            // If multiple updates in the same scope, types and parts may need to be rebuilt.
            _scopedTypeDefinitions.Clear();
            _scopedPartDefinitions.Clear();
        }
Esempio n. 9
0
        public async Task UpdateAsync(LayersDocument layers)
        {
            if (layers.IsReadonly)
            {
                throw new ArgumentException("The object is read-only");
            }

            var existing = await LoadLayersAsync();

            existing.Layers = layers.Layers;

            _session.Save(existing);
            _signal.DeferredSignalToken(LayersCacheKey);
        }
Esempio n. 10
0
        /// <inheritdoc/>
        public Task UpdateSiteSettingsAsync(ISite site)
        {
            if (site.IsReadonly)
            {
                throw new ArgumentException("The object is read-only");
            }

            // Persists new data.
            Session.Save(site);

            // Invalidates the cache after the session is committed.
            _signal.DeferredSignalToken(SiteCacheKey);

            return(Task.CompletedTask);
        }
Esempio n. 11
0
        public async Task <IActionResult> UpdatePosition(string contentItemId, double position, string zone)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageLayers))
            {
                return(StatusCode(401));
            }

            // Load the latest version first if any
            var contentItem = await _contentManager.GetAsync(contentItemId, VersionOptions.Latest);

            if (contentItem == null)
            {
                return(StatusCode(404));
            }

            var layerMetadata = contentItem.As <LayerMetadata>();

            if (layerMetadata == null)
            {
                return(StatusCode(403));
            }

            layerMetadata.Position = position;
            layerMetadata.Zone     = zone;

            contentItem.Apply(layerMetadata);

            _session.Save(contentItem);

            // In case the moved contentItem is the draft for a published contentItem we update it's position too.
            // We do that because we want the position of published and draft version to be the same.
            if (contentItem.IsPublished() == false)
            {
                var publishedContentItem = await _contentManager.GetAsync(contentItemId, VersionOptions.Published);

                if (publishedContentItem != null)
                {
                    layerMetadata = contentItem.As <LayerMetadata>();

                    if (layerMetadata == null)
                    {
                        return(StatusCode(403));
                    }

                    layerMetadata.Position = position;
                    layerMetadata.Zone     = zone;

                    publishedContentItem.Apply(layerMetadata);

                    _session.Save(publishedContentItem);
                }
            }

            // Clear the cache after the session is committed.
            _signal.DeferredSignalToken(LayerMetadataHandler.LayerChangeToken);

            if (Request.Headers != null && Request.Headers["X-Requested-With"] == "XMLHttpRequest")
            {
                return(StatusCode(200));
            }
            else
            {
                return(RedirectToAction("Index"));
            }
        }
Esempio n. 12
0
 private void UpdateRoles(RolesDocument roles)
 {
     roles.Serial++;
     _session.Save(roles);
     _signal.DeferredSignalToken(Key);
 }