Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Web Development
  3. SharePoint
  4. Using Powershell, how are dropdown based custom webpart properties set?

Using Powershell, how are dropdown based custom webpart properties set?

Scheduled Pinned Locked Moved SharePoint
sharepointdesignwindows-adminquestion
2 Posts 2 Posters 3 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Offline
    L Offline
    littleGreenDude
    wrote on last edited by
    #1

    I have the following Powershell function:

    function Add-WebPartToPage {

    \[CmdletBinding()\]
    
    Param(
    
       \[Parameter(Mandatory=$true, Position=0, ValueFromPipeline=$true)\]
    
       \[System.Object\]$web,
    
       \[Parameter(Mandatory=$true, Position=1)\]
    
       \[string\]$pageTitle,
    
       \[Parameter(Mandatory=$true, Position=2)\]
    
       \[Microsoft.SharePoint.SPList\]$list,       
    
       \[Parameter(Mandatory=$false, Position=3)\]
    
       \[System.Object\]$webpart,
    
       \[Parameter(Mandatory=$false, Position=4)\]
       
       \[string\]$webPartTitle,
    
       \[Parameter(Mandatory=$false, Position=5)\]
       
       \[string\]$panelTitle,
    
       \[Parameter(Mandatory=$false, Position=6)\]
       
       \[int\]$CSPUElevel,
    
       \[Parameter(Mandatory=$false, Position=7)\]
       
       \[int\]$panelType
    
    )
    

    Process

    {

        #if webpart specified then add it to the page
        if($webpart)
        {
            $pageName = $list.Title + "/$pageTitle.aspx"
    		$pageName = $pageName -replace " ",""
            $page = $web.GetFile($pageName)
            $page.CheckOut()
            $mgr = $web.GetLimitedWebPartManager($pageName, \[System.Web.UI.WebControls.WebParts.PersonalizationScope\]::Shared)
              
    		if($webPartTitle)
    		{
    			$webpart.Title = $webPartTitle
    		}
            $webpart.ChromeType = "None"
    		#++ Extended Settings
            if($webpart.GetType().Name -eq "DynamicWebPart")
            {
            # 
                $pinProperties = $webpart.GetType().GetProperties()
                foreach ($prop in $pinProperties)
                {
    			    if(($panelTitle) -and ($prop.Name -eq "PanelTitle"))
    			    {   
                        $webpart.PanelTitle = $panelTitle
    			    }
    			    if(($CSPUElevel) -and ($prop.Name -eq "CSPUElevel"))
    			    {
                        $webpart.CSPUElevel = $CSPUElevel
    			    }
    			    if(($panelType) -and ($prop.Name -eq "PanelType"))
    			    {
    				    $webpart.PanelType = $panelType
    			    }
                }
            }
    		#-- End of Extended Settings
            $mgr.AddWebPart($webpart, "FullPage", 0)
            Write-Host -f Green "Webpart $webpart.WebBrowsableObject added to the page"
            
            $page.CheckIn("Checked in Automatically")
            #$page.Publish("Published Automatically")
        }
    

    }

    }

    Everything works fine until it gets to the extended properties of the webpart. Within that logic, the panel title will set correc

    B 1 Reply Last reply
    0
    • L littleGreenDude

      I have the following Powershell function:

      function Add-WebPartToPage {

      \[CmdletBinding()\]
      
      Param(
      
         \[Parameter(Mandatory=$true, Position=0, ValueFromPipeline=$true)\]
      
         \[System.Object\]$web,
      
         \[Parameter(Mandatory=$true, Position=1)\]
      
         \[string\]$pageTitle,
      
         \[Parameter(Mandatory=$true, Position=2)\]
      
         \[Microsoft.SharePoint.SPList\]$list,       
      
         \[Parameter(Mandatory=$false, Position=3)\]
      
         \[System.Object\]$webpart,
      
         \[Parameter(Mandatory=$false, Position=4)\]
         
         \[string\]$webPartTitle,
      
         \[Parameter(Mandatory=$false, Position=5)\]
         
         \[string\]$panelTitle,
      
         \[Parameter(Mandatory=$false, Position=6)\]
         
         \[int\]$CSPUElevel,
      
         \[Parameter(Mandatory=$false, Position=7)\]
         
         \[int\]$panelType
      
      )
      

      Process

      {

          #if webpart specified then add it to the page
          if($webpart)
          {
              $pageName = $list.Title + "/$pageTitle.aspx"
      		$pageName = $pageName -replace " ",""
              $page = $web.GetFile($pageName)
              $page.CheckOut()
              $mgr = $web.GetLimitedWebPartManager($pageName, \[System.Web.UI.WebControls.WebParts.PersonalizationScope\]::Shared)
                
      		if($webPartTitle)
      		{
      			$webpart.Title = $webPartTitle
      		}
              $webpart.ChromeType = "None"
      		#++ Extended Settings
              if($webpart.GetType().Name -eq "DynamicWebPart")
              {
              # 
                  $pinProperties = $webpart.GetType().GetProperties()
                  foreach ($prop in $pinProperties)
                  {
      			    if(($panelTitle) -and ($prop.Name -eq "PanelTitle"))
      			    {   
                          $webpart.PanelTitle = $panelTitle
      			    }
      			    if(($CSPUElevel) -and ($prop.Name -eq "CSPUElevel"))
      			    {
                          $webpart.CSPUElevel = $CSPUElevel
      			    }
      			    if(($panelType) -and ($prop.Name -eq "PanelType"))
      			    {
      				    $webpart.PanelType = $panelType
      			    }
                  }
              }
      		#-- End of Extended Settings
              $mgr.AddWebPart($webpart, "FullPage", 0)
              Write-Host -f Green "Webpart $webpart.WebBrowsableObject added to the page"
              
              $page.CheckIn("Checked in Automatically")
              #$page.Publish("Published Automatically")
          }
      

      }

      }

      Everything works fine until it gets to the extended properties of the webpart. Within that logic, the panel title will set correc

      B Offline
      B Offline
      Beginner Luck
      wrote on last edited by
      #2

      yes you can

      1 Reply Last reply
      0
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • World
      • Users
      • Groups