コード例 #1
0
        private string GetProjectVariantsString()
        {
            const string SINGLE_PROJECT_VARIANT = @"<PROJECTVARIANT guid=""{0}"" checked=""{1}""/>";

            var checkedProjectVariants = ProjectVariants.Aggregate("",
                                                                   (s, variant) =>
                                                                   s + SINGLE_PROJECT_VARIANT.RQLFormat(variant, true));

            var uncheckedProjectVariants = Project.ProjectVariants.Except(ProjectVariants)
                                           .Aggregate("",
                                                      (s, variant) =>
                                                      s + SINGLE_PROJECT_VARIANT.RQLFormat(variant, false));
            var projectVariants = checkedProjectVariants + uncheckedProjectVariants;

            return(projectVariants);
        }
コード例 #2
0
        public void Assign(ILookup <ITemplateVariant, ProjectVariantAssignmentSettings> assignments)
        {
            const string ASSIGN_PROJECT_VARIANT =
                @"<TEMPLATE guid=""{0}""><TEMPLATEVARIANTS>{1}</TEMPLATEVARIANTS></TEMPLATE>";
            const string SINGLE_ASSIGNMENT =
                @"<TEMPLATEVARIANT guid=""{0}""><PROJECTVARIANTS action=""assign"">{1}</PROJECTVARIANTS></TEMPLATEVARIANT>";
            const string SINGLE_PROJECT_VARIANT =
                @"<PROJECTVARIANT donotgenerate=""{1}"" donotusetidy=""{2}"" guid=""{0}"" />";


            var builder = new StringBuilder();

            foreach (var curEntry in assignments)
            {
                var projectVariants = curEntry.Aggregate("", (s, variant) => s + SINGLE_PROJECT_VARIANT.RQLFormat(variant.ProjectVariant, !variant.IsPublishing, variant.IsNotUsingTidy));
                builder.Append(SINGLE_ASSIGNMENT.RQLFormat(curEntry.Key, projectVariants));
            }

            Project.ExecuteRQL(ASSIGN_PROJECT_VARIANT.RQLFormat(_contentClass, builder), RqlType.SessionKeyInProject);
            InvalidateCache();
        }