public override void Execute(object parameter)
        {
            var context = parameter as ItemDependencyContext;

            if (context == null)
            {
                return;
            }

            var templateId        = IdManager.GetItemId("/sitecore/templates/System/Templates/Template");
            var templateSectionId = IdManager.GetItemId("/sitecore/templates/System/Templates/Template section");
            var templateFieldId   = IdManager.GetItemId("/sitecore/templates/System/Templates/Template field");

            context.Control.SetCheckBoxes(delegate(ItemDependencyListView.ItemDescriptor i)
            {
                if (i.IsChecked)
                {
                    return;
                }

                i.IsChecked = i.Item.TemplateId == templateId || i.Item.TemplateId == templateSectionId || i.Item.TemplateId == templateFieldId;
            });

            context.Control.RefreshItems();
        }
示例#2
0
        public override bool CanExecute(object parameter)
        {
            var context = parameter as IItemSelectionContext;

            if (context == null)
            {
                return(false);
            }

            if (!context.Items.Any())
            {
                return(false);
            }

            var templateId = IdManager.GetItemId("/sitecore/templates/System/Templates/Template");

            foreach (var item in context.Items)
            {
                var templatedItem = item as ITemplatedItem;
                if (templatedItem == null)
                {
                    return(false);
                }

                if (templatedItem.TemplateId != templateId)
                {
                    return(false);
                }
            }

            return(true);
        }
示例#3
0
        protected virtual void Register([NotNull] Site site, [NotNull] List <EnvDTE.ProjectItem> items)
        {
            Debug.ArgumentNotNull(site, nameof(site));
            Debug.ArgumentNotNull(items, nameof(items));

            var databaseUri = new DatabaseUri(site, new DatabaseName("master"));

            var dialog = new SelectItemDialog();

            dialog.Initialize(DialogTitle, databaseUri, DefaultItemPath);

            if (AppHost.Shell.ShowDialog(dialog) != true)
            {
                return;
            }

            var     selectedItemUri = dialog.SelectedItemUri;
            ItemUri templateUri;

            Guid guid;

            if (Guid.TryParse(TemplateItemPath, out guid))
            {
                templateUri = new ItemUri(databaseUri, new ItemId(guid));
            }
            else
            {
                templateUri = new ItemUri(databaseUri, IdManager.GetItemId(TemplateItemPath));
            }

            var item = items.FirstOrDefault();

            if (item == null)
            {
                return;
            }

            var project = ProjectManager.GetProject(item);

            if (project == null)
            {
                return;
            }

            var itemUris = CreateItems(project, items, selectedItemUri, templateUri);
            var itemUri  = itemUris.FirstOrDefault();

            if (itemUri == null)
            {
                return;
            }

            if (AppHost.CurrentContentTree != null)
            {
                AppHost.CurrentContentTree.Locate(itemUri);
            }

            AppHost.OpenContentEditor(itemUri);
        }
        private static bool GetSelectedInsertOptions([NotNull] IItem item, [NotNull] List <ItemId> selectedItems)
        {
            Debug.ArgumentNotNull(item, nameof(item));
            Debug.ArgumentNotNull(selectedItems, nameof(selectedItems));

            Item i = null;

            bool[] busy =
            {
                true
            };

            GetValueCompleted <Item> completed = delegate(Item value)
            {
                if (!busy[0])
                {
                    return;
                }

                i       = value;
                busy[0] = false;
            };

            AppHost.Server.GetItem(new ItemVersionUri(item.ItemUri, LanguageManager.CurrentLanguage, Data.Version.Latest), completed);

            if (!AppHost.DoEvents(ref busy[0]))
            {
                return(false);
            }

            if (i == null)
            {
                return(false);
            }

            var fieldId = IdManager.GetItemId("/sitecore/templates/System/Templates/Sections/Insert Options/Insert Options/__Masters");
            var field   = i.Fields.FirstOrDefault(f => f != null && f.TemplateFieldId == fieldId);

            if (field == null || string.IsNullOrEmpty(field.Value))
            {
                return(true);
            }

            var values = field.Value.Replace(",", "|");

            foreach (var s in values.Split('|'))
            {
                if (!string.IsNullOrEmpty(s))
                {
                    selectedItems.Add(new ItemId(new Guid(s)));
                }
            }

            return(true);
        }
示例#5
0
        public override void Execute(object parameter)
        {
            var context = parameter as IItemSelectionContext;

            if (context == null)
            {
                return;
            }

            var item = context.Items.FirstOrDefault() as ITemplatedItem;

            if (item == null)
            {
                return;
            }

            var parentUri   = item.ItemUri;
            var templateUri = new ItemUri(item.ItemUri.DatabaseUri, IdManager.GetItemId("/sitecore/templates/System/Templates/Template"));

            var parameterTemplateUri = parentUri.Site.DataService.AddFromTemplate(parentUri, templateUri, item.Name + @"-Parameters");

            if (parameterTemplateUri == ItemUri.Empty)
            {
                return;
            }

            AppHost.Server.UpdateItem(parameterTemplateUri, BaseTemplateFieldId, ControlBaseItemId.ToString());

            var parameterTemplateFieldId = new FieldId(new Guid("{7D24E54F-5C16-4314-90C9-6051AA1A7DA1}"));

            var fields = new List <Tuple <FieldId, string> >
            {
                new Tuple <FieldId, string>(parameterTemplateFieldId, parameterTemplateUri.ItemId.ToString()),
                new Tuple <FieldId, string>(DataSourceLocation, "PageSettings"),
                new Tuple <FieldId, string>(DataSourceTemplate, parameterTemplateUri.ItemId.ToString())
            };

            AppHost.Server.UpdateItem(parentUri, fields);

            AppHost.Windows.OpenTemplateDesigner(parameterTemplateUri);

            Notifications.RaiseItemAdded(this, new ItemVersionUri(parameterTemplateUri, LanguageManager.CurrentLanguage, Data.Version.Latest), parentUri);

            var activeContentTree = ActiveContext.ActiveContentTree;

            if (item is ItemTreeViewItem && activeContentTree != null)
            {
                var treeViewItem = activeContentTree.ContentTreeView.ExpandTo(parameterTemplateUri);
                if (treeViewItem != null)
                {
                    treeViewItem.IsSelected = true;
                }
            }
        }
示例#6
0
        private void Browse([NotNull] object sender, [NotNull] RoutedEventArgs e)
        {
            Debug.ArgumentNotNull(sender, nameof(sender));
            Debug.ArgumentNotNull(e, nameof(e));

            var sourceField = SourceField;

            if (sourceField == null)
            {
                return;
            }

            var itemId = ItemUri.ItemId;

            if (itemId == ItemId.Empty)
            {
                itemId = IdManager.GetItemId("/sitecore/content");
            }

            var itemUri = new ItemUri(sourceField.FieldUris.First().ItemVersionUri.DatabaseUri, itemId);

            var dialog = new SelectItemDialog();

            dialog.Initialize(Rocks.Resources.Browse, itemUri);

            if (AppHost.Shell.ShowDialog(dialog) != true)
            {
                return;
            }

            itemUri = dialog.SelectedItemUri;
            if (itemUri == ItemUri.Empty)
            {
                return;
            }

            ItemUri  = itemUri;
            LinkType = @"internal";

            var selectedItemTemplateId = dialog.SelectedItemTemplateId;

            if (selectedItemTemplateId != null && IdManager.GetTemplateType(selectedItemTemplateId) == "media")
            {
                LinkType = @"media";
            }

            UpdateValue();
            RaiseModified();
            Render();
        }
示例#7
0
        public void Search([NotNull] string queryText, [NotNull] string field, int pageNumber)
        {
            Assert.ArgumentNotNull(queryText, nameof(queryText));
            Assert.ArgumentNotNull(field, nameof(field));

            if (string.IsNullOrEmpty(queryText))
            {
                queryText = @"_updated:[00010101 TO 21003112]";
            }

            queryText = queryText.Replace(@"\", @"\\");

            var root = new ItemUri(new DatabaseUri(Site, DatabaseName.Master), IdManager.GetItemId("/sitecore/media library"));

            Site.DataService.SearchMedia(queryText, root.DatabaseUri, field, string.Empty, root, pageNumber, LoadHits);
        }
        private void HandleItemsDragOver([NotNull] object sender, [NotNull] DragEventArgs e)
        {
            Debug.ArgumentNotNull(sender, nameof(sender));
            Debug.ArgumentNotNull(e, nameof(e));

            if (e.Source != ScrollViewer)
            {
                return;
            }

            if (!e.Data.GetDataPresent(DragManager.DragIdentifier))
            {
                return;
            }

            e.Effects = DragDropEffects.None;
            e.Handled = true;

            var items = e.Data.GetData(DragManager.DragIdentifier) as IEnumerable <IItem>;

            if (items == null)
            {
                return;
            }

            if (items.Count() != 1)
            {
                return;
            }

            var item = items.First() as ITemplatedItem;

            if (item == null)
            {
                return;
            }

            var templateSectionId = IdManager.GetItemId("/sitecore/templates/System/Templates/Template section");
            var templateFieldId   = IdManager.GetItemId("/sitecore/templates/System/Templates/Template field");

            if (item.TemplateId != templateSectionId && item.TemplateId != templateFieldId)
            {
                return;
            }

            e.Effects = DragDropEffects.Copy;
        }
        private bool IsMediaItem()
        {
            var item = this;

            var mediaLibraryId = IdManager.GetItemId("/sitecore/media library");

            while (item != null)
            {
                if (item.Item.ItemId == mediaLibraryId)
                {
                    return(true);
                }

                item = item.GetParentTreeViewItem() as ItemTreeViewItem;
            }

            return(false);
        }
示例#10
0
        public override bool CanExecute(object parameter)
        {
            var context = parameter as ContentTreeContext;

            if (context == null)
            {
                return(false);
            }

            if (context.SelectedItems.Count() != 1)
            {
                return(false);
            }

            var item = context.SelectedItems.FirstOrDefault() as ItemTreeViewItem;

            if (item == null)
            {
                return(false);
            }

            if (IdManager.GetTemplateType(item.Item.TemplateId) != "folder")
            {
                return(false);
            }

            if (item.Item.TemplateId != IdManager.GetItemId("/sitecore/templates/System/Templates/Template Folder"))
            {
                var path = item.GetPath();
                if (!path.Contains(@"/sitecore/templates/"))
                {
                    return(false);
                }
            }

            if ((item.Site.DataService.FeatureCapabilities & DataServiceFeatureCapabilities.EditTemplate) != DataServiceFeatureCapabilities.EditTemplate)
            {
                return(false);
            }

            return(true);
        }
        private void HandleItemsDrop([NotNull] object sender, [NotNull] DragEventArgs e)
        {
            Debug.ArgumentNotNull(sender, nameof(sender));
            Debug.ArgumentNotNull(e, nameof(e));

            if (!e.Data.GetDataPresent(DragManager.DragIdentifier))
            {
                return;
            }

            e.Handled = true;

            var items = e.Data.GetData(DragManager.DragIdentifier) as IEnumerable <IItem>;

            if (items == null)
            {
                return;
            }

            var item = items.First() as ITemplatedItem;

            if (item == null)
            {
                return;
            }

            var templateSectionId = IdManager.GetItemId("/sitecore/templates/System/Templates/Template section");

            if (item.TemplateId == templateSectionId)
            {
                TemplateUri.Site.DataService.ExecuteAsync("Templates.GetSectionXml", DropTemplateSection, item.ItemUri.DatabaseName.Name, item.ItemUri.ItemId.ToString(), false);
            }

            var templateFieldId = IdManager.GetItemId("/sitecore/templates/System/Templates/Template field");

            if (item.TemplateId == templateFieldId)
            {
                TemplateUri.Site.DataService.ExecuteAsync("Templates.GetFieldXml", DropTemplateField, item.ItemUri.DatabaseName.Name, item.ItemUri.ItemId.ToString(), false);
            }
        }
示例#12
0
        private void Opened([NotNull] object sender, [NotNull] RoutedEventArgs e)
        {
            Debug.ArgumentNotNull(sender, nameof(sender));
            Debug.ArgumentNotNull(e, nameof(e));

            var menuItem = e.Source as MenuItem;

            if (menuItem == null)
            {
                return;
            }

            if (menuItem.Items.Count != 1)
            {
                return;
            }

            var m = menuItem.Items[0] as MenuItem;

            if (m == null || m.Tag as string != @"loading")
            {
                return;
            }

            if (Context == null)
            {
                return;
            }

            var to       = DateTime.Now.AddDays(1).ToString(@"yyyyMMdd");
            var from     = DateTime.Now.AddDays(-7).ToString(@"yyyyMMdd");
            var query    = string.Format(@"[{0} TO {1}]", from, to);
            var fieldUri = Context.Field.FieldUris.First();
            var root     = new ItemUri(fieldUri.ItemVersionUri.DatabaseUri, IdManager.GetItemId("/sitecore/media library"));

            GetItemsCompleted <ItemHeader> callback = items => LoadRecentMedia(menuItem, items);

            fieldUri.Site.DataService.SearchMedia(query, fieldUri.ItemVersionUri.DatabaseUri, "__updated", string.Empty, root, 0, callback);
        }
 public override ItemId GetRootItemId()
 {
     return(IdManager.GetItemId("/sitecore/layout/Renderings"));
 }
示例#14
0
        public override void Execute(object parameter)
        {
            var context = parameter as ContentTreeContext;

            if (context == null)
            {
                AppHost.MessageBox(Resources.NewTemplate_Execute_, Resources.NewTemplate_Execute_Create_New_Template, MessageBoxButton.OK, MessageBoxImage.Information);
                return;
            }

            var item = context.SelectedItems.FirstOrDefault() as ItemTreeViewItem;

            if (item == null)
            {
                AppHost.MessageBox(Resources.NewTemplate_Execute_There_is_no_active_item_, Resources.NewTemplate_Execute_Create_New_Template, MessageBoxButton.OK, MessageBoxImage.Information);
                return;
            }

            // get template name
            var dialog = new NewTemplateDialog();

            dialog.Initialize("New Template", item.ItemUri.DatabaseUri, new[]
            {
                IdManager.GetItemId("/sitecore/templates/System/Templates/Standard template")
            });
            if (AppHost.Shell.ShowDialog(dialog) != true)
            {
                return;
            }

            // create template item
            var templateName = dialog.ItemName;
            var templateUri  = new ItemUri(item.ItemUri.DatabaseUri, IdManager.GetItemId("/sitecore/templates/System/Templates/Template"));

            var itemUri = item.ItemUri.Site.DataService.AddFromTemplate(item.ItemUri, templateUri, templateName);

            if (itemUri == ItemUri.Empty)
            {
                AppHost.MessageBox(Resources.NewTemplate_Execute_Failed_to_create_the_template_, Resources.NewTemplate_Execute_Create_New_Template, MessageBoxButton.OK, MessageBoxImage.Information);
                return;
            }

            var baseTemplates = string.Join("|", dialog.SelectedTemplates.Select(i => i.ToString()));

            if (string.IsNullOrEmpty(baseTemplates))
            {
                baseTemplates = IdManager.GetItemId("/sitecore/templates/System/Templates/Standard template").ToString();
            }

            // set "Base Template" field
            var baseTemplateField = new Field
            {
                Value    = baseTemplates,
                HasValue = true
            };

            baseTemplateField.FieldUris.Add(new FieldUri(new ItemVersionUri(itemUri, LanguageManager.CurrentLanguage, Data.Version.Latest), BaseTemplateFieldId));

            var fields = new List <Field>
            {
                baseTemplateField
            };

            itemUri.Site.DataService.Save(itemUri.DatabaseName, fields);

            if (dialog.CreateStandardValues)
            {
                CreateStandardValues(itemUri);
            }

            // expand tree
            context.ContentTree.ExpandTo(itemUri);

            // design template
            AppHost.Windows.Factory.OpenTemplateDesigner(itemUri);

            Notifications.RaiseItemAdded(this, new ItemVersionUri(itemUri, LanguageManager.CurrentLanguage, Data.Version.Latest), item.ItemUri);
        }
 public LayoutFileItemHandler()
 {
     TemplateId = IdManager.GetItemId(IdManager.SitecoreTemplatesSystemLayoutLayout);
     FieldId    = new FieldId(IdManager.GetItemId(IdManager.SitecoreTemplatesSystemLayoutLayoutDataPath).ToGuid());
 }
        public override void Execute(object parameter)
        {
            var context = parameter as LayoutDesignerContext;

            if (context == null)
            {
                return;
            }

            var selectedItem = context.SelectedItem;

            if (selectedItem == null)
            {
                return;
            }

            var item = selectedItem as PlaceholderItem;

            if (item == null)
            {
                return;
            }

            if (!string.IsNullOrEmpty(item.MetaDataItemId))
            {
                GetValueCompleted <Item> completed = delegate(Item placeholderSettingsItem)
                {
                    var selectedItems = new List <ItemId>();

                    var allowedControls = placeholderSettingsItem.Fields.FirstOrDefault(f => f.Name == "Allowed Controls");
                    if (allowedControls != null)
                    {
                        selectedItems.AddRange(allowedControls.Value.Split(Pipe, StringSplitOptions.RemoveEmptyEntries).Where(v => !string.IsNullOrWhiteSpace(v)).Select(id => new ItemId(new Guid(id))));
                    }

                    SetAllowed(item, selectedItems);
                };

                var itemVersionUri = new ItemVersionUri(new ItemUri(item.DatabaseUri, new ItemId(new Guid(item.MetaDataItemId))), Language.Current, Data.Version.Latest);
                item.DatabaseUri.Site.DataService.GetItemFieldsAsync(itemVersionUri, completed);

                return;
            }

            var d = new SelectItemDialog();

            d.Initialize("Create Placeholder Settings Item", item.DatabaseUri, "/sitecore/layout/Placeholder Settings");
            if (AppHost.Shell.ShowDialog(d) != true)
            {
                return;
            }

            var templateId  = IdManager.GetItemId("/sitecore/templates/System/Layout/Placeholder");
            var templateUri = new ItemUri(item.DatabaseUri, templateId);

            var newItemUri = AppHost.Server.AddFromTemplate(d.SelectedItemUri, templateUri, item.Name + "Settings");

            if (newItemUri == ItemUri.Empty)
            {
                return;
            }

            item.MetaDataItemId = newItemUri.ItemId.ToString();
            SetAllowed(item, Enumerable.Empty <ItemId>());
        }
 public CreateMvcLayoutHandler()
 {
     FileType     = "MvcLayout";
     TemplateName = "Layout";
     TemplateId   = IdManager.GetItemId("/sitecore/templates/System/Layout/Layout");
 }
 public XsltFileItemHandler()
 {
     TemplateId = IdManager.GetItemId(IdManager.SitecoreTemplatesSystemLayoutRenderingsXslRendering);
     FieldId    = new FieldId(IdManager.GetItemId(IdManager.SitecoreTemplatesSystemLayoutRenderingsXslRenderingDataPath).ToGuid());
 }
示例#19
0
        public override void Execute(object parameter)
        {
            var context = parameter as IItemSelectionContext;

            if (context == null)
            {
                return;
            }

            var item = context.Items.FirstOrDefault();

            if (item == null)
            {
                return;
            }

            var itemId = IdManager.GetItemId("/sitecore/system/Workflows");
            SelectItemDialog dialog;

            while (true)
            {
                dialog = new SelectItemDialog();

                dialog.Initialize(Resources.SetWorkflowState_Execute_Select_Workflow_State, new ItemUri(item.ItemUri.DatabaseUri, itemId));

                if (AppHost.Shell.ShowDialog(dialog) != true)
                {
                    return;
                }

                itemId = dialog.SelectedItemUri.ItemId;

                if (dialog.SelectedItemTemplateId == workflowStateId)
                {
                    break;
                }

                if (AppHost.MessageBox(Resources.SetWorkflowState_Execute_, Resources.Error, MessageBoxButton.OKCancel, MessageBoxImage.Question) != MessageBoxResult.OK)
                {
                    return;
                }
            }

            var stateId = dialog.SelectedItemUri.ItemId;

            var itemIdList   = context.GetItemIdList();
            var databaseName = context.Items.First().ItemUri.DatabaseName.ToString();

            ExecuteCompleted completed = delegate(string response, ExecuteResult result)
            {
                if (!DataService.HandleExecute(response, result))
                {
                    return;
                }

                var workflowFieldId = IdManager.GetFieldId("/sitecore/templates/System/Templates/Sections/Workflow/Workflow/__Workflow");
                var stateFieldId    = IdManager.GetFieldId("/sitecore/templates/System/Templates/Sections/Workflow/Workflow/__Workflow state");

                foreach (var i in context.Items)
                {
                    var itemVersionUri = new ItemVersionUri(i.ItemUri, LanguageManager.CurrentLanguage, Data.Version.Latest);

                    var fieldUri = new FieldUri(itemVersionUri, stateFieldId);
                    Notifications.RaiseFieldChanged(this, fieldUri, stateId.ToString());

                    fieldUri = new FieldUri(itemVersionUri, workflowFieldId);
                    Notifications.RaiseFieldChanged(this, fieldUri, response);
                }
            };

            item.ItemUri.Site.DataService.ExecuteAsync("Workflows.SetWorkflowState", completed, databaseName, itemIdList, stateId.ToString());
        }
        public override void Execute(object parameter)
        {
            var context = parameter as ContentTreeContext;

            if (context == null)
            {
                return;
            }

            var item = context.SelectedItems.FirstOrDefault() as ItemTreeViewItem;

            if (item == null)
            {
                return;
            }

            var parent = item.Parent as ItemTreeViewItem;

            if (parent == null)
            {
                return;
            }

            var templateName = string.Format(Resources.NewDerivedTemplate_Execute_New__0_, item.Text);

            templateName = AppHost.Prompt(Resources.NewDerivedTemplate_Execute_Enter_the_Name_of_the_Derived_Template_, Resources.NewDerivedTemplate_Execute_Derived_Template, templateName);
            if (templateName == null)
            {
                return;
            }

            var parentUri = parent.ItemUri;

            // create template item
            var templateUri = new ItemUri(parent.ItemUri.DatabaseUri, IdManager.GetItemId("/sitecore/templates/System/Templates/Template"));

            var itemUri = parent.ItemUri.Site.DataService.AddFromTemplate(parentUri, templateUri, templateName);

            if (itemUri == ItemUri.Empty)
            {
                return;
            }

            // set "Base Template" field
            var baseTemplateField = new Field
            {
                Value    = item.ItemUri.ItemId.ToString(),
                HasValue = true
            };

            baseTemplateField.FieldUris.Add(new FieldUri(new ItemVersionUri(itemUri, LanguageManager.CurrentLanguage, Data.Version.Latest), baseTemplateFieldId));

            var fields = new List <Field>
            {
                baseTemplateField
            };

            itemUri.Site.DataService.Save(itemUri.DatabaseName, fields);

            // expand tree
            context.ContentTree.ExpandTo(itemUri);

            // design template
            AppHost.Windows.Factory.OpenTemplateDesigner(itemUri);

            Notifications.RaiseItemAdded(this, new ItemVersionUri(itemUri, LanguageManager.CurrentLanguage, Data.Version.Latest), parentUri);
        }