/// <summary>
        /// Run project item finished generating which will move the sprite png into the SPI due to
        /// some VS quirk which means you can't call 'replace params' in the vstemplate for png files.
        /// </summary>
        /// <param name="projectItem">The project item</param>
        public override void RunProjectItemFinishedGenerating(ProjectItem projectItem)
        {
            base.RunProjectItemFinishedGenerating(projectItem);

            if (projectItem.Name.ToLower() == "tempsprites.png")
            {
                //Find the temp sprite project item
                ProjectItem spritesItem = DTEManager.FindItemByName(projectItem.ContainingProject.ProjectItems, "tempsprites.png", true);
                //We don't want this so bin it from the solution
                spritesItem.Remove();

                ProjectItem parent = spiItem.Collection.Parent as ProjectItem;

                FileInfo sourceFile = new FileInfo(spritesItem.FileNames[0]);

                FileInfo parentFile  = new FileInfo(parent.FileNames[0]);
                string   newFileName = parentFile.Directory.ToString() + Path.DirectorySeparatorChar + "sprites.png";

                File.Move(sourceFile.ToString(), newFileName);

                parent.ProjectItems.AddFromFileCopy(newFileName);

                //Final tidy up
                if (sourceFile.Exists)
                {
                    sourceFile.Delete();
                }
            }
            else
            {
                spiItem = projectItem;
            }
        }
Пример #2
0
        public override void RunWizardFinished()
        {
            base.RunWizardFinished();

            // required to push changes from DTE.Project to ISharePointProject
            ISharePointProject spProject = DTEManager.ActiveSharePointProject;

            spProject.Synchronize();

            string projectPath = Path.GetDirectoryName(spProject.FullPath);

            ISharePointProjectItem webTemplate      = DTEManager.FindSPIItemByName(projectItemName, spProject);
            ISharePointProjectItem webTemplateStamp = DTEManager.FindSPIItemByName(String.Format("{0}Stamp", projectItemName), spProject);
            ISharePointProjectItem publishingPage   = DTEManager.FindSPIItemByName(String.Format("{0}PublishingPage", projectItemName), spProject);
            ISharePointProjectItem wikiPage         = DTEManager.FindSPIItemByName(String.Format("{0}WikiPage", projectItemName), spProject);
            ISharePointProjectItem webPartPage      = DTEManager.FindSPIItemByName(String.Format("{0}WebPartPage", projectItemName), spProject);

            ISharePointProjectFeature webTemplateFeature            = spProject.Features[projectItemName];
            ISharePointProjectFeature webTemplateStampFeature       = spProject.Features[String.Format("{0}Stamp", projectItemName)];
            ISharePointProjectFeature webTemplateWelcomePageFeature = spProject.Features[String.Format("{0}WelcomePage", projectItemName)];

            // remove automatically added feature associations
            foreach (ISharePointProjectFeature feature in spProject.Features)
            {
                feature.ProjectItems.Remove(webTemplate);
                feature.ProjectItems.Remove(webTemplateStamp);
                feature.ProjectItems.Remove(publishingPage);
                feature.ProjectItems.Remove(wikiPage);
                feature.ProjectItems.Remove(webPartPage);
            }

            // add standard spis to own features
            webTemplateFeature.ProjectItems.Add(webTemplate);
            webTemplateStampFeature.ProjectItems.Add(webTemplateStamp);
            webTemplateWelcomePageFeature.ProjectItems.Add(publishingPage);
            webTemplateWelcomePageFeature.ProjectItems.Add(wikiPage);
            webTemplateWelcomePageFeature.ProjectItems.Add(webPartPage);

            ProjectItem pagesFolder            = DTEManager.FindItemByName(DTEManager.ActiveProject.ProjectItems, "Pages", true);
            ProjectItem defaultPageProjectItem = null;

            switch (welcomePageType)
            {
            case WelcomePageType.WebPartPage:
                DTEManager.SafeDeleteProjectItem(DTEManager.FindItemByName(pagesFolder.ProjectItems, String.Format("{0}WikiPage", projectItemName), true));
                DTEManager.SafeDeleteProjectItem(DTEManager.FindItemByName(pagesFolder.ProjectItems, String.Format("{0}PublishingPage", projectItemName), true));
                defaultPageProjectItem = DTEManager.FindItemByName(pagesFolder.ProjectItems, String.Format("{0}WebPartPage", projectItemName), true);
                break;

            case WelcomePageType.WikiPage:
                DTEManager.SafeDeleteProjectItem(DTEManager.FindItemByName(pagesFolder.ProjectItems, String.Format("{0}WebPartPage", projectItemName), true));
                DTEManager.SafeDeleteProjectItem(DTEManager.FindItemByName(pagesFolder.ProjectItems, String.Format("{0}PublishingPage", projectItemName), true));
                defaultPageProjectItem = DTEManager.FindItemByName(pagesFolder.ProjectItems, String.Format("{0}WikiPage", projectItemName), true);
                break;

            case WelcomePageType.PublishingPage:
                DTEManager.SafeDeleteProjectItem(DTEManager.FindItemByName(pagesFolder.ProjectItems, String.Format("{0}WikiPage", projectItemName), true));
                DTEManager.SafeDeleteProjectItem(DTEManager.FindItemByName(pagesFolder.ProjectItems, String.Format("{0}WebPartPage", projectItemName), true));
                defaultPageProjectItem = DTEManager.FindItemByName(pagesFolder.ProjectItems, String.Format("{0}PublishingPage", projectItemName), true);
                break;
            }

            if (defaultPageProjectItem != null)
            {
                defaultPageProjectItem.Name = String.Format("{0}Default", projectItemName);
            }
        }