Exemplo n.º 1
0
        private static IEnumerable <ID> GetInheritedTemplates(Item item)
        {
            if (item == null)
            {
                yield break;
            }

            if (StandardValuesManager.IsStandardValuesHolder(item))
            {
                yield break;
            }

            yield return(item.TemplateID);

            var template = Sitecore.Data.Managers.TemplateManager.GetTemplate(item);

            if (template == null)
            {
                yield break;
            }

            foreach (Template baseTemplate in template.GetBaseTemplates())
            {
                yield return(baseTemplate.ID);
            }
        }
Exemplo n.º 2
0
        public object ComputeFieldValue(IIndexable indexable)
        {
            var item             = (Item)(indexable as SitecoreIndexableItem);
            var isStandardValues = StandardValuesManager.IsStandardValuesHolder(item);

            return(isStandardValues);
        }
Exemplo n.º 3
0
        private static void WriteLayouts(XmlTextWriter output, Item[] layouts)
        {
            foreach (var item in layouts)
            {
                if (StandardValuesManager.IsStandardValuesHolder(item))
                {
                    continue;
                }

                if (item.Paths.Path.StartsWith("/sitecore/templates/branches", StringComparison.InvariantCultureIgnoreCase))
                {
                    continue;
                }

                var section = item.Parent.Name;
                var path    = item.Paths.Path;

                output.WriteStartElement("layout");

                output.WriteAttributeString("id", item.ID.ToString());
                output.WriteAttributeString("icon", Images.GetThemedImageSource(item.Appearance.Icon, ImageDimension.id16x16));
                output.WriteAttributeString("section", section);
                output.WriteAttributeString("path", path);

                output.WriteValue(item.Name);

                output.WriteEndElement();
            }
        }
Exemplo n.º 4
0
        public override void Check(ValidationWriter output, Item item)
        {
            Assert.ArgumentNotNull(output, nameof(output));
            Assert.ArgumentNotNull(item, nameof(item));

            if (StandardValuesManager.IsStandardValuesHolder(item))
            {
                return;
            }

            var layoutField = item.Fields[FieldIDs.LayoutField];

            if (layoutField == null)
            {
                return;
            }

            if (string.IsNullOrEmpty(layoutField.Value))
            {
                return;
            }

            if (layoutField.ContainsStandardValue)
            {
                return;
            }

            if (layoutField.Value != layoutField.GetStandardValue())
            {
                output.Write(SeverityLevel.Suggestion, "Layout on item overrides layout on standard values item", "The layout on the item overrides the layout on the standard values item. Changing the layout on the standard values item will not change the layout on this item.", "Change the layout so it accommodates both layouts and store that layout on the standard values item.", item);
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Returns true if Template inherits from given template id
        /// </summary>
        /// <param name="item">Item to check</param>
        /// <param name="id">Id of template to check for</param>
        /// <returns>True if item inherits from template</returns>
        public static bool InheritsFromTemplate(this Item item, ID id)
        {
            if (item == null || StandardValuesManager.IsStandardValuesHolder(item))
            {
                return(false);
            }

            // Check if it is directly inheriting
            if (item.TemplateID == id)
            {
                return(true);
            }

            // Else check the base templates.
            var template = Sitecore.Data.Managers.TemplateManager.GetTemplate(item);

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

            foreach (Template template2 in template.GetBaseTemplates())
            {
                if (template2 == null)
                {
                    continue;
                }
                if (template2.ID.Guid == id.Guid)
                {
                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 6
0
        private static bool IsItemValid(this Item item)
        {
            if (((item != null) && !item.Paths.IsMasterPart) && !StandardValuesManager.IsStandardValuesHolder(item))
            {
                item.Fields.ReadAll();
                item.Fields.Sort();
                foreach (Field field in item.Fields)
                {
                    if (!string.IsNullOrEmpty(field.Validation) && !Regex.IsMatch(field.Value, field.Validation, RegexOptions.Singleline))
                    {
                        return(false);
                    }
                }


                var formValue = WebUtil.GetFormValue("scValidatorsKey");
                if (!string.IsNullOrEmpty(formValue))
                {
                    var validators = ValidatorManager.GetValidators(ValidatorsMode.ValidatorBar, formValue);
                    var options    = new ValidatorOptions(true);
                    ValidatorManager.Validate(validators, options);
                    var valid = ValidatorResult.Valid;
                    foreach (BaseValidator validator in validators)
                    {
                        var result = validator.Result;
                        if (validator.ItemUri != null)
                        {
                            var item1 = Client.ContentDatabase.GetItem(validator.ItemUri.ToDataUri());
                            if (((item1 != null) && StandardValuesManager.IsStandardValuesHolder(item1)) && (result > ValidatorResult.CriticalError))
                            {
                                result = ValidatorResult.CriticalError;
                            }
                        }

                        if (result > valid)
                        {
                            valid = validator.Result;
                        }

                        if (validator.IsEvaluating && (validator.MaxValidatorResult >= ValidatorResult.CriticalError))
                        {
                            return(false);
                        }
                    }

                    switch (valid)
                    {
                    case ValidatorResult.CriticalError:
                        return(false);

                    case ValidatorResult.FatalError:

                        return(false);
                    }
                }
            }

            return(true);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Checks context and configuration to see if user should be able to input more characters than specified by the limit
        /// </summary>
        /// <returns>The prevent typing.</returns>
        bool ShouldPreventTyping()
        {
            Item item = Sitecore.Context.ContentDatabase.GetItem(ItemID);

            if (StandardValuesManager.IsStandardValuesHolder(item))
            {
                return(false);
            }

            return(PreventTyping);
        }
Exemplo n.º 8
0
        public static IEnumerable <Item> GetItemsByTemplate([NotNull] this Database database, [NotNull] params ID[] templateId)
        {
            var indexName = "sitecore_" + database.Name.ToLowerInvariant() + "_index";

            var index = ContentSearchManager.GetIndex(indexName);

            using (var context = index.CreateSearchContext())
            {
                var queryable = context.GetQueryable <SearchResultItem>().Where(item => templateId.Contains(item.TemplateId)).Select(item => item.ItemId).ToList().Distinct();

                return(queryable.Select(database.GetItem).Where(i => i != null && !StandardValuesManager.IsStandardValuesHolder(i) && i.Name != "$name"));
            }
        }
Exemplo n.º 9
0
        public override PipelineProcessorResponseValue ProcessRequest()
        {
            var processorResponseValue = new PipelineProcessorResponseValue();
            var items = base.RequestContext.GetSaveArgs().Items;
            var list  = ((IEnumerable <SaveArgs.SaveItem>)items).SelectMany <SaveArgs.SaveItem, SaveArgs.SaveField>((Func <SaveArgs.SaveItem, IEnumerable <SaveArgs.SaveField> >)(i => (IEnumerable <SaveArgs.SaveField>)i.Fields)).ToList <SaveArgs.SaveField>();
            var obj   = this.RequestContext.Item.Database.GetItem(items[0].ID, items[0].Language);

            if (obj == null || obj.Paths.IsMasterPart || StandardValuesManager.IsStandardValuesHolder(obj))
            {
                return(processorResponseValue);
            }
            var fields = WebUtility.GetFields(this.RequestContext.Item.Database, this.RequestContext.FieldValues);
            var fieldValidationErrorList = new List <FieldValidationError>();

            foreach (var pageEditorField in fields)
            {
                var field                = this.RequestContext.Item.Database.GetItem(pageEditorField.ItemID, pageEditorField.Language).Fields[pageEditorField.FieldID];
                var valueToValidate      = list.FirstOrDefault <SaveArgs.SaveField>((Func <SaveArgs.SaveField, bool>)(f => f.ID == field.ID))?.Value ?? field.Value;
                var fieldValidationError = this.ItemFieldValidator.GetFieldTypeValidationError(field, valueToValidate) ?? this.ItemFieldValidator.GetFieldRegexValidationError(field, valueToValidate);
                if (fieldValidationError != null)
                {
                    fieldValidationErrorList.Add(fieldValidationError);
                }
            }

            var validators = ValidationHelpers.GetValidatorCollection(obj);

            if (validators == null)
            {
                return(processorResponseValue);
            }
            var validationErrorsCustom =
                ValidationHelpers.AreFieldsValid(validators);

            if (validationErrorsCustom.Any())
            {
                var invalidFields = validationErrorsCustom.Select(i => obj.Database.GetItem(i).Name).ToList();

                processorResponseValue.ConfirmMessage = $"{obj.DisplayName ?? obj.Name} has content entry errors in {obj.Language} on the following fields: {Environment.NewLine}" +
                                                        $"{string.Join(Environment.NewLine, invalidFields)}{Environment.NewLine} " +
                                                        "It will not be published in that language";
            }
            processorResponseValue.Value = (object)fieldValidationErrorList;
            return(processorResponseValue);
        }
Exemplo n.º 10
0
        public override void Check(ValidationWriter output, Item item)
        {
            Assert.ArgumentNotNull(output, nameof(output));
            Assert.ArgumentNotNull(item, nameof(item));

            if (item.TemplateID != TemplateIDs.Sublayout)
            {
                return;
            }

            if (StandardValuesManager.IsStandardValuesHolder(item))
            {
                return;
            }

            if (item.Paths.Path.StartsWith("/sitecore/templates/branches", StringComparison.InvariantCultureIgnoreCase))
            {
                return;
            }

            var path = item["Path"];

            if (string.IsNullOrEmpty(path))
            {
                return;
            }

            if (path.EndsWith("$name.ascx", StringComparison.InvariantCultureIgnoreCase))
            {
                return;
            }

            if (FileUtil.Exists(path))
            {
                return;
            }

            output.Write(SeverityLevel.Error, "Valid sublayout file", string.Format("The \"Path\" field points to the non-existing file: {0}", path), "Either point the \"Path\" field to another file or create a new file.", item);
        }
Exemplo n.º 11
0
        public override void Check(ValidationWriter output, Item item)
        {
            Assert.ArgumentNotNull(output, nameof(output));
            Assert.ArgumentNotNull(item, nameof(item));

            if (item.TemplateID != TemplateIDs.Workflow)
            {
                return;
            }

            if (StandardValuesManager.IsStandardValuesHolder(item))
            {
                return;
            }

            if (item.Name == "$name")
            {
                return;
            }

            var initialState = item["Initial state"];

            if (string.IsNullOrEmpty(initialState))
            {
                output.Write(SeverityLevel.Suggestion, "Workflow should have an initial state", string.Format("The workflow {0} has no initial state.", item.Appearance.DisplayName), "Open the workflow and set an initial state.");
                return;
            }

            var state = item.Database.GetItem(initialState);

            if (state != null)
            {
                return;
            }

            output.Write(SeverityLevel.Warning, "Workflow should have an initial state", string.Format("The workflow \"{0}\" has an initial state that does not exist.", item.Appearance.DisplayName), "Open the workflow and set an initial state.");
        }
Exemplo n.º 12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="item"></param>
        private void PropagateLayoutChanges(Item item)
        {
            if (item != null)
            {
                if (StandardValuesManager.IsStandardValuesHolder(item))
                {
                    Item oldItem = item.Database.GetItem(item.ID, item.Language, item.Version);

                    string layout = item[FieldIDs.LayoutField];

                    string oldLayout = oldItem[FieldIDs.LayoutField];

                    if (layout != oldLayout)
                    {
                        string delta = XmlDeltas.GetDelta(layout, oldLayout);

                        foreach (Template templ in TemplateManager.GetTemplate(item).GetDescendants())
                        {
                            ApplyDeltaToStandardValues(templ, delta, item.Language, item.Version, item.Database);
                        }
                    }
                }
            }
        }
Exemplo n.º 13
0
        public void OnItemDeleted(object sender, EventArgs args)
        {
            Item deletedItem = Event.ExtractParameter(args, 0) as Item;

            if (deletedItem != null && TemplateManager.IsFieldPartOfTemplate(SitecronConstants.SiteCronFieldIds.CronExpression, deletedItem) && !StandardValuesManager.IsStandardValuesHolder(deletedItem))
            {
                Log.Info("Sitecron based Item Deleted/Archived, reloading Jobs.", this);
                _scheduleManager.ScheduleAllJobs();
            }
        }
Exemplo n.º 14
0
        public void OnItemSaved(object sender, EventArgs args)
        {
            Item savedItem = null;
            ItemSavedRemoteEventArgs remoteArgs = args as ItemSavedRemoteEventArgs;
            ItemChanges savedItemChanges        = Event.ExtractParameter(args, 1) as ItemChanges;

            //Thank you Mike Edwards!
            if (remoteArgs != null)
            {
                savedItem = remoteArgs.Item;
            }
            else
            {
                savedItem = Event.ExtractParameter(args, 0) as Item;
            }

            if (savedItem != null && TemplateManager.IsFieldPartOfTemplate(SitecronConstants.SiteCronFieldIds.CronExpression, savedItem) && !StandardValuesManager.IsStandardValuesHolder(savedItem))
            {
                if (savedItemChanges != null && savedItemChanges.FieldChanges.ContainsAnyOf(SiteCronFieldIds.LastRunUTC, SiteCronFieldIds.NextRunUTC, SiteCronFieldIds.ExecutionTime, SiteCronFieldIds.LastRunLog))
                {
                    Log.Info("Sitecron - Ignoring Saved Handler due to stats update.", this);
                }
                else
                {
                    Log.Info("Sitecron based Item Saved/Created, reloading Jobs.", this);
                    _scheduleManager.ScheduleAllJobs();
                }
            }
            else
            {
                try
                {
                    string typeName = Settings.GetSetting(SitecronConstants.SettingsNames.SiteCronSavedHandlerType);
                    if (!string.IsNullOrEmpty(typeName))
                    {
                        Type type = Type.GetType(typeName);
                        if (type != null)
                        {
                            object instance = Activator.CreateInstance(type);
                            if (instance != null && instance is ISavedHandler)
                            {
                                MethodInfo method = type.GetMethod("OnItemSaved");
                                if (method != null)
                                {
                                    method.Invoke(instance, new object[] { sender, args });
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Log.Error("Sitecron OnItemSaved Custom Type ERROR: " + ex.Message, ex, this);
                }
            }
        }
        public void OnItemSaving(object sender, EventArgs args)
        {
            Item savingItem = null;
            ItemSavedRemoteEventArgs remoteArgs = args as ItemSavedRemoteEventArgs;

            //Thank you Mike Edwards!
            if (remoteArgs != null)
            {
                savingItem = remoteArgs.Item;
            }
            else
            {
                savingItem = Event.ExtractParameter(args, 0) as Item;
            }

            if (savingItem != null && TemplateManager.IsFieldPartOfTemplate(SitecronConstants.SiteCronFieldIds.CronExpression, savingItem) && !StandardValuesManager.IsStandardValuesHolder(savingItem) && !_inProcess.Contains(savingItem.ID))
            {
                _inProcess.Add(savingItem.ID);

                Item existingItem = savingItem.Database.GetItem(savingItem.ID, savingItem.Language, savingItem.Version);
                if (existingItem.Fields[SitecronConstants.FieldNames.Disable].Value != savingItem.Fields[SitecronConstants.FieldNames.Disable].Value)
                {
                    string appendText = "";
                    string icon = "";
                    if (savingItem.Fields[SitecronConstants.FieldNames.Disable].Value == "1")
                    {
                        appendText = " _DISABLED_";
                        icon = "Applications/32x32/gears_stop.png";
                    }
                    else
                        icon = "Applications/32x32/gears.png";

                    savingItem.Appearance.Icon = icon;
                    savingItem.Appearance.DisplayName = string.Concat(savingItem.Name, appendText);
                }
                _inProcess.Remove(savingItem.ID);
            }
        }
 internal virtual void ProcessItemUpdate(Item item)
 {
     RemovePrefix(StandardValuesManager.IsStandardValuesHolder(item) ? item.Database.Name : GetCacheKey(item));
 }
Exemplo n.º 17
0
        private void UpdateLanguageFallbackDependentItems(IProviderUpdateContext context, SitecoreIndexableItem versionIndexable, IndexEntryOperationContext operationContext)
        {
            if (operationContext == null || operationContext.NeedUpdateAllLanguages)
            {
                return;
            }
            var  item          = versionIndexable.Item;
            bool?currentValue1 = Switcher <bool?, LanguageFallbackFieldSwitcher> .CurrentValue;

            if ((!currentValue1.GetValueOrDefault() ? 1 : (!currentValue1.HasValue ? 1 : 0)) != 0)
            {
                bool?currentValue2 = Switcher <bool?, LanguageFallbackItemSwitcher> .CurrentValue;
                if ((!currentValue2.GetValueOrDefault() ? 1 : (!currentValue2.HasValue ? 1 : 0)) != 0 || StandardValuesManager.IsStandardValuesHolder(item) && item.Fields[FieldIDs.EnableItemFallback].GetValue(false) != "1")
                {
                    return;
                }
                using (new LanguageFallbackItemSwitcher(new bool?(false)))
                {
                    if (item.Fields[FieldIDs.EnableItemFallback].GetValue(true, true, false) != "1")
                    {
                        return;
                    }
                }
            }
            if (!item.Versions.IsLatestVersion())
            {
                return;
            }
            foreach (var indexable in Enumerable.Select(Enumerable.Where <Item>(Enumerable.SelectMany(LanguageFallbackManager.GetDependentLanguages(item.Language, item.Database, item.ID), language =>
            {
                var item2 = item.Database.GetItem(item.ID, language);
                if (item2 == null)
                {
                    return(new Item[0]);
                }
                return(item2.Versions.GetVersions());
            }), item1 => !IsExcludedFromIndex(item1, false)), item1 => PrepareIndexableVersion(item1, context)))
            {
                Operations.Update(indexable, context, context.Index.Configuration);
            }
        }
Exemplo n.º 18
0
        public void OnItemDeleted(object sender, EventArgs args)
        {
            Item deletedItem = null;
            ID   parentId    = null;
            ItemDeletedRemoteEventArgs remoteArgs = args as ItemDeletedRemoteEventArgs;

            if (remoteArgs != null)
            {
                deletedItem = remoteArgs.Item;
                parentId    = Event.ExtractParameter(remoteArgs, 1) as ID;
            }
            else
            {
                deletedItem = Event.ExtractParameter(args, 0) as Item;
                parentId    = Event.ExtractParameter(args, 1) as ID;
            }

            if (deletedItem != null && TemplateManager.IsFieldPartOfTemplate(SitecronConstants.SiteCronFieldIds.CronExpression, deletedItem) && !StandardValuesManager.IsStandardValuesHolder(deletedItem) && parentId != SitecronConstants.ItemIds.AutoFolderID)
            {
                Log.Info("SiteCron based Item Archived/Deleted, reloading Jobs. (Execute now jobs excluded)", this);
                _scheduleManager.ScheduleAllJobs();
            }
        }