Пример #1
0
    protected void Page_Init(object sender, EventArgs e)
    {
        //if (this.form.TemplateContainer.Controls.Count <= 1) return;
        PXCache cache       = this.ds.DataGraph.Caches[typeof(FeaturesSet)];
        var     features    = new List <string>();
        var     disabled    = new List <string>();
        var     subfeatures = new Dictionary <string, List <string> >(StringComparer.InvariantCultureIgnoreCase);

        foreach (string field in cache.Fields)
        {
            string parentName   = null;
            bool   featureFound = false;


            var featureAttributes = cache.GetAttributes(null, field).OfType <FeatureAttribute>();
            foreach (FeatureAttribute feature in featureAttributes)
            {
                featureFound = feature.Visible;
                if (feature.Top != true && feature.Parent != null)
                {
                    parentName = feature.Parent.Name;
                }
            }

            if (!featureFound)
            {
                continue;
            }

            if (parentName != null)
            {
                if (!subfeatures.ContainsKey(parentName))
                {
                    subfeatures.Add(parentName, new List <string>());
                }
                subfeatures[parentName].Add(field);
            }
            else
            {
                features.Add(field);
            }

            if (PXAccess.FeatureReadOnly(field) || (parentName != null && PXAccess.FeatureReadOnly(parentName)))
            {
                disabled.Add(field);
            }
        }
        AddControls(0, features, subfeatures, disabled);
    }