private775 icon

Install/uninstall list custom action (button)

private775 | PRO | 03/26/15 02:03:28 PM UTC | 0 ⭐ | 803 👁️ | Never ⏰ | []
PowerShell |

2.02 KB

|

None

|

0 👍

/

0 👎

$scriptDir = Split-Path $script:MyInvocation.MyCommand.Path
$configPath = "$($scriptDir)\configuration.ps1"
. $configPath
 
$xmlPath = "$($scriptDir)\MoveToArchive.xml"
 
$lists = @{
    "MWI" = @{
        "ACTIONID" = "{3285FA3D-623C-4805-96D7-A935387D0772}"
        "COMMANDGUID" = "{128A01C7-9833-4DCE-9507-FAD14A0B0959}"
    }
}
 
$jsFiles = @( "jquery-1.11.2.min.js", "handlebars-v3.0.0.js", "moment.min.js" )
 
function InstallCustomActions() {
    $s = get-spsite $siteUrl
    $w = $s.RootWeb
    $xmlContent = [System.IO.File]::ReadAllText($xmlPath)
 
    $len = $jsFiles.Length
    for($i = 0; $i -lt $len; $i++){
        $scriptlink = $w.UserCustomActions.Add()
        $scriptlink.Location = "ScriptLink"
        $scriptlink.Name = $jsFiles[$i]
        $scriptlink.ScriptSrc = "/_layouts/nova.bhb.policies.archive/JS/" + $jsFiles[$i]
        $scriptlink.Update()
    }
 
 
    foreach($listName in $lists.Keys){
        $xmlStr = $xmlContent
        foreach($idName in $lists[$listName].Keys){
            $xmlStr = $xmlStr.Replace($idName, $lists[$listName][$idName])
        }
        $l = $w.Lists.TryGetList($listName)
        if($l -eq $null){
            $errMsg = "List $($listName) doesn't exist"
            throw $errMsg
        }
        $actionUnlockPayment = $l.UserCustomActions.Add()
        $actionUnlockPayment.Location = "CommandUI.Ribbon"
        #$actionUnlockPayment.Rights = [Microsoft.SharePoint.SPBasePermissions]::EditListItems -bor [Microsoft.SharePoint.SPBasePermissions]::DeleteListItems
        $actionUnlockPayment.Sequence = 100
        $actionUnlockPayment.Title = "Move to the Archive"
        $actionUnlockPayment.CommandUIExtension = $xmlStr
        $actionUnlockPayment.Update()
    }
}
 
function UninstallCustomActions() {
    $s = get-spsite $siteUrl
    $w = $s.RootWeb
 
    $len = $jsFiles.Length
    for($i = 0; $i -lt $len; $i++){
        $w.UserCustomActions|?{$_.Name -eq $jsFiles[$i] }|% { $_ } |% {$_.Delete()}
    }
 
    foreach($listName in $lists.Keys){
        $l = $w.Lists.TryGetList($listName)
        if($l -eq $null){
            $errMsg = "List $($listName) doesn't exist"
            throw $errMsg
        }
        $l.UserCustomActions.Clear()
        $l.Update()
    }
}

Comments