Issue:
=====
Edit item options are missing in the ribbon and in the drop down of the items in a list
Cause:
=====
Issue is due to PermMask field schema has missing "RenderXMLUsingPattern", it can be at the site level, web level or list level
Resolution:
=====
Run the following script, it run through all the webs, including rootweb and lists and fixes the schema
===========================
$site = get-spsite <URL of the site collection>
function checkxml($field)
{
if($field.SchemaXml.Contains("RenderXMLUsingPattern"))
{
return $TRUE
}
else
{
return $FALSE
}
}
function fixxml($field)
{
[xml]$schema = $field.SchemaXml
$att = $schema.createattribute("RenderXMLUsingPattern")
$att.value = "TRUE"
$schema.field.attributes.append($att)
$field.schemaxml = $schema.innerxml
$field.update()
}
$web = $site.RootWeb
if(checkxml($web.Fields.GetFieldByInternalName("PermMask")))
{
write-host "Field at Root Level is fine"
}
else
{
fixxml($web.Fields.GetFieldByInternalName("PermMask"))
$web.update()
}
foreach ($webs in $site.AllWebs)
{
try { $fieldw = $webs.fields.getfieldbyinternalname("PermMask") }
catch [System.Exception] { write-host "Field not found in :" $webs.url }
if(checkxml($fieldw))
{
write-host "No broken field found at :" $web.url
}
else
{
write-host "Broken Field found at :" $web.url
fixxml($fieldw)
$web.update()
}
for($i = $webs.lists.count - 1; $i -ge 0; $i--)
{
$list = $webs.lists[$i]
try{ $fieldl = $list.fields.getfieldbyinternalname("PermMask") }
catch [System.Exception] { write-host "Permmask field not found in :" $list.title }
if(checkxml($fieldl))
{
write-host "No broken field found at :" $list.title
}
else
{
write-host "Broken Field found at :" $list.title
fixxml($fieldl)
}
}
}