Пример #1
0
        public void LoadItemsCompleted()
        {
            AppHost.Output.Log("LoadItemsCompleted");
            ContentModel.BuildModel();
            ContentModel.IsModified = false;

            RenderItems();

            AppHost.Selection.Track(Pane, ContentModel.Items.Select(item => new TrackSelectionDescriptor(item)));

            ActiveContext.RaiseContentModelChanged();

            ItemBreadcrumb.EndLoading();
        }
Пример #2
0
        private void RenderItems()
        {
            Editor.IsEnabled = true;

            var contentModel = ContentModel;

            if (contentModel.IsEmpty)
            {
                ShowEmptyEditor();
                return;
            }

            UpdateCaption(contentModel);

            LoadEditor();

            ItemBreadcrumb.Update(contentModel);
            Ribbon.Update(this);

            if (LoadItemsOperation != null && LoadItemsOperation.Options.AddToJournal)
            {
                Journal.Push(contentModel.UriList);
            }
        }
Пример #3
0
        public ContentEditor()
        {
            ContentModel = new ContentModel();
            Journal      = new Journal <List <ItemVersionUri> >();

            InitializeComponent();

            AppearanceOptions = AppearanceManager.GetDefaultAppearanceOptions(this);

            BackButton.CommandTarget    = this;
            ForwardButton.CommandTarget = this;
            Filter = string.Empty;
            ItemBreadcrumb.Initialize(this);

            Notifications.RegisterItemEvents(this, modified: ItemModified, renamed: ItemRenamed, deleted: ItemDeleted);
            Notifications.RegisterFieldEvents(this, FieldChanged);
            Notifications.RegisterTemplateEvents(this, saved: TemplateSaved, changed: TemplateChanged);

            GotFocus += FocusControl;
            Loaded   += ControlLoaded;
            Notifications.Unloaded += ControlUnloaded;

            FilterWidth.Width = new GridLength(AppHost.Settings.GetInt("ContentEditor", "SplitterPosition", 150));
        }
Пример #4
0
        public void LoadItems([NotNull] List <ItemVersionUri> itemUriList, [NotNull] LoadItemsOptions options)
        {
            Assert.ArgumentNotNull(itemUriList, nameof(itemUriList));
            Assert.ArgumentNotNull(options, nameof(options));

            if (LoadItemsOperation != null && LoadItemsOperation.ItemsToLoad > 0)
            {
                AppHost.MessageBox(Rocks.Resources.You_are_already_loading_items, Rocks.Resources.ContentEditorLoadItemsLoading_in_Progress, MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return;
            }

            if (ContentModel.IsModified)
            {
                if (options.ForceReload)
                {
                    switch (AppHost.MessageBox("There are unsaved changes.\n\nDo you want to save?", "Information", MessageBoxButton.YesNoCancel, MessageBoxImage.Question))
                    {
                    case MessageBoxResult.Cancel:
                        return;

                    case MessageBoxResult.Yes:
                        Save();
                        break;

                    case MessageBoxResult.No:
                        break;
                    }
                }
                else
                {
                    options.NewTab      = true;
                    options.ForceReload = true;
                    AppHost.Windows.OpenContentEditor(itemUriList, options);
                    return;
                }
            }

            Pane.Caption = Rocks.Resources.Loading;
            ItemBreadcrumb.StartLoading();

            Editor.IsEnabled = false;
            try
            {
                ClearFieldControls(ContentModel);

                LoadItemsOperation = new LoadItemsOperation
                {
                    ItemsToLoad = itemUriList.Count,
                    Options     = options
                };

                var pipeline = LoadItemsPipeline.Run().WithParameters(itemUriList, LoadItemsOperation);

                ContentModel = pipeline.ContentModel;

                if (itemUriList.Count == 0)
                {
                    LoadItemsCompleted();
                    return;
                }

                try
                {
                    foreach (var uri in itemUriList)
                    {
                        if (uri.Site.DataService.GetItemFieldsAsync(uri, GetItemFieldsCallback))
                        {
                            continue;
                        }

                        AppHost.Output.Log("Failed to load item: " + uri.ItemId);
                        LoadItemsOperation.ItemsToLoad = 0;
                        return;
                    }
                }
                catch
                {
                    AppHost.Output.Log("Failed to load items");
                    LoadItemsOperation.ItemsToLoad = 0;
                    throw;
                }
            }
            finally
            {
                Editor.IsEnabled = true;
            }
        }