public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            //Get The Quick Launch and add a new root node if it doesn't already exist
            SPNavigationNodeCollection quickLinkNodes = ((SPWeb)(properties.Feature.Parent)).Navigation.QuickLaunch;
            SPNavigationNode           rootNode       = quickLinkNodes[0];

            if (rootNode.Title != rootNodeTitle)
            {
                rootNode = new SPNavigationNode(rootNodeTitle, ((SPWeb)(properties.Feature.Parent)).Url, false);
                quickLinkNodes.AddAsFirst(rootNode);
            }

            //Delete Items if they already exist
            foreach (SPNavigationNode quickLinkNode in rootNode.Children)
            {
                quickLinkNode.Delete();
            }

            //Add the Custom Links based on the Dictionary
            foreach (KeyValuePair <string, string> kvp in GetNav())
            {
                // add security trimmed nodes, set all to external=false
                var newNode = new SPNavigationNode(kvp.Key, kvp.Value, false);
                rootNode.Children.AddAsLast(newNode);
            }
            quickLinkNodes.Parent.Update();
        }
        public static void AddNavigationForPage(SPWeb web, SPFile page, string linkName)
        {
            SPNavigationNodeCollection navItems = web.Navigation.QuickLaunch;
            SPNavigationNode           newNode  = new SPNavigationNode(linkName, page.Url, false);

            navItems.AddAsFirst(newNode);
            web.Update();
        }
        public SPNavigationNodeInstance AddAsFirst(SPNavigationNodeInstance node)
        {
            if (node == null)
            {
                throw new JavaScriptException(Engine, "Error", "node must be specified.");
            }

            var result = m_navigationNodeCollection.AddAsFirst(node.SPNavigationNode);

            return(result == null
                ? null
                : new SPNavigationNodeInstance(Engine.Object.InstancePrototype, result));
        }
예제 #4
0
        private static void AddParentNode(SPWeb web, SPNavigationNodeCollection topnav)
        {
            SPWeb            parentWeb = web.ParentWeb;
            string           linkTitle = parentWeb.Title;
            SPNavigationNode node      = new SPNavigationNode(linkTitle, parentWeb.ServerRelativeUrl);

            node = topnav.AddAsFirst(node);

            if (!parentWeb.IsRootWeb)
            {
                AddParentNode(parentWeb, topnav);
            }
        }
예제 #5
0
        private void ConfigTopNavigationBar(SPWeb web)
        {
            SPNavigationNodeCollection topnav = web.Navigation.TopNavigationBar;

            if (topnav.Count == 1 && topnav[0].Title == "Home" && topnav[0].Url == web.ServerRelativeUrl)
            {
                topnav.Delete(topnav[0]);

                string           linkTitle = web.Title;
                SPNavigationNode node      = new SPNavigationNode(linkTitle, web.ServerRelativeUrl);
                node = topnav.AddAsFirst(node);
            }
        }
예제 #6
0
        public static void ProvisionWebStructure(this SPWeb web, WebDefinitionCollection subsites)
        {
            foreach (var site in subsites)
            {
                var existed = web.Webs.Cast <SPWeb>().Where(p => p.Url.Contains(site.Url)).FirstOrDefault();

                if (existed != null && !site.Overwrite)
                {
                    continue;
                }
                if (existed != null && site.Overwrite)
                {
                    DeleteSite(existed);
                }

                var newSite = web.AddSite(site.Url.Trim(), site.Name.Trim(), site.Template.Trim());
                if (newSite == null)
                {
                    continue;
                }
                //Provision Lists
                //Provision Features
                foreach (var feature in site.Features)
                {
                    newSite.Features.Add(feature.Guid);
                    //newSite.Update();
                }

                //BreakRoleInheritance
                if (site.BreakRoleInheritance)
                {
                    try
                    {
                        newSite.AllowUnsafeUpdates = true;

                        if (!newSite.HasUniqueRoleAssignments)
                        {
                            newSite.BreakRoleInheritance(false);
                        }

                        //create group
                        string groupOwners = site.Name.Trim() + " Owners";
                        newSite.CreateNewGroup(groupOwners, "Use this group to grant people full control permissions to the SharePoint site: " + site.Name.Trim(), SPRoleType.Administrator);

                        string groupMembers = site.Name.Trim() + " Members";
                        newSite.CreateNewGroup(groupMembers, "Use this group to grant people contribute permissions to the SharePoint site: " + site.Name.Trim(), SPRoleType.Contributor);

                        string groupVisitors = site.Name.Trim() + " Visitors";
                        newSite.CreateNewGroup(groupVisitors, "Use this group to grant people read permissions to the SharePoint site: " + site.Name.Trim(), SPRoleType.Reader);

                        newSite.Update();

                        Utility.ChangeSPGroupOwnerBySPGroup(newSite, groupOwners, groupOwners);
                        Utility.ChangeSPGroupOwnerBySPGroup(newSite, groupMembers, groupOwners);
                        Utility.ChangeSPGroupOwnerBySPGroup(newSite, groupVisitors, groupOwners);

                        SPUser authenUsers = newSite.EnsureUser("NT AUTHORITY\\authenticated users");
                        if (authenUsers != null)
                        {
                            SPGroup spGrp = newSite.Groups[groupVisitors];
                            if (spGrp != null)
                            {
                                spGrp.AddUser(authenUsers);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                    }
                    finally
                    {
                        newSite.AllowUnsafeUpdates = false;
                    }
                }


                //provision Top Navigation Bar
                try
                {
                    newSite.AllowUnsafeUpdates = true;

                    SPNavigationNodeCollection topnav = newSite.Navigation.TopNavigationBar;

                    //clear all
                    for (int i = topnav.Count - 1; i >= 0; i--)
                    {
                        topnav.Delete(topnav[i]);
                    }

                    string           linkTitle = newSite.Title;
                    SPNavigationNode node      = new SPNavigationNode(linkTitle, newSite.ServerRelativeUrl);
                    node = topnav.AddAsLast(node);

                    SPWeb            rootWeb       = web.Site.RootWeb;
                    string           linkRootTitle = rootWeb.Title;
                    SPNavigationNode nodeRoot      = new SPNavigationNode(linkRootTitle, rootWeb.ServerRelativeUrl);
                    nodeRoot = topnav.AddAsFirst(nodeRoot);

                    //AddParentNode(newSite, topnav);
                }
                catch (Exception ex)
                {
                }
                finally
                {
                    newSite.AllowUnsafeUpdates = false;
                }

                if (site.SubSites.Count > 0)
                {
                    newSite.ProvisionWebStructure(site.SubSites);
                }
            }
        }