Можно ли разрешить пользователям блога SharePoint комментировать, но не создавать сообщения? - PullRequest
1 голос
/ 27 апреля 2010

Изучая разрешения, кажется, нет никакого различия между комментарием и сообщением в блоге.

Я могу назначить пользователей вкладчиками, что позволяет им комментировать и означает, что их сообщения требуют одобрения. Но я бы хотел помешать им создать сообщение даже в виде черновика.

Большое спасибо

Ответы [ 2 ]

1 голос
/ 28 апреля 2010

Я взломал его!

На главной странице есть возможность управлять сообщениями.На этой странице есть возможность установить разрешения.Отлично.

0 голосов
/ 27 апреля 2010

Блог на Моем сайте создается с помощью функции «Мои блоги» (863DA2AC-3873-4930-8498-752886210911). Внутри получателя функции находится следующий код, который изменяет список комментариев, устанавливая права на редактирование только для своих собственных функций, нарушает наследование ролей и предоставляет доступ к группе посетителей:

int num2;
SPList list3;
SPRoleDefinition byType;
SPRoleAssignment assignment;
UserProfileManager manager;
string str2;
string[] strArray2;
int num3;
string str = parent.RootWeb.AllProperties["vti_associatevisitorgroup"] as string;
SPGroup principal = null;
if (!string.IsNullOrEmpty(str))
{
    num2 = int.Parse(str, CultureInfo.InvariantCulture);
    principal = parent.RootWeb.SiteGroups.GetByID(num2);
}
list3 = GetList(web, SPListTemplateType.Comments);
list3.WriteSecurity = 2;
byType = web.RoleDefinitions.GetByType(SPRoleType.Contributor);
list3.BreakRoleInheritance(true);
web.AllowUnsafeUpdates = true;
if (principal == null)
{
    manager = new UserProfileManager(ServerContext.GetContext(parent));
    strArray2 = manager.PersonalSiteReaders.Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries);
    num3 = 0;
    while (num3 < strArray2.Length)
    {
        str2 = strArray2[num3];
        try
        {
            SPRoleAssignment roleAssignment = new SPRoleAssignment(str2, null, null, null);
            roleAssignment.RoleDefinitionBindings.Add(byType);
            list3.RoleAssignments.Add(roleAssignment);
        }
        catch (Exception exception)
        {
            ULS.SendTraceTag(ULSTagID.tag_7otc, ULSCat.msoulscat_SPS_UserProfiles, ULSTraceLevel.Medium, "Ignored one invalid user for the personal site reader (%s): %s.", new object[] { str2, exception });
        }
        num3++;
    }
}
else
{
    assignment = new SPRoleAssignment(principal);
    assignment.RoleDefinitionBindings.Add(byType);
    list3.RoleAssignments.Add(assignment);
}
list3.Update();
ULS.SendTraceTag(ULSTagID.tag_6y3j, ULSCat.msoulscat_SPS_UserProfiles, ULSTraceLevel.Medium, "Successfully activated MySite Blog Feature");

Я бы, вероятно, написал собственный Feature Receiver, который делает нечто подобное. Однако если мне нужен только один блог в семействе сайтов, а URL-адрес блога является приемлемым, я могу попробовать создать блог, активировав функцию «Мои блоги сайта».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...