VSTO Outlook Plugin - If Statement / CurrentUser - PullRequest
1 голос
/ 14 октября 2019

Возможно ли включить оператор If в плагин VSTO, который будет предлагать различные элементы контекстного меню на основе атрибутов текущего пользователя, например, Department?

Я пытаюсь использовать документацию здесь https://docs.microsoft.com/en-us/office/client-developer/outlook/pia/how-to-get-information-about-the-current-user, чтобы добавить к моему существующему коду:

 <contextMenu idMso="ContextMenuMailItem">
      <menu id="ReplyListContext" label="Choose a Quick Reply" insertBeforeMso="Copy">
        <button id="CharityContext" label="Charity Request" onAction="Charity_Click"/>
>
      </menu>
    </contextMenu>

 public void Charity_Click(Office.IRibbonControl control)
        {
            Outlook.Explorer explorer = Globals.ThisAddIn.Application.ActiveExplorer();
            if (explorer != null)
            {
                Outlook.Selection selection = explorer.Selection;
                if (selection.Count >= 1)
                {
                    Outlook.MailItem mailItem = selection[1] as Outlook.MailItem;
                    if (mailItem != null) //could be something other than MailItem

                    {
                        Outlook.MailItem response = mailItem.ReplyAll();

                        response.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;

                        response.HTMLBody = "<p>Thanks for your e-mail</p><p>text text text</p><p>Many thanks</p> " + response.HTMLBody;
                        response.Send();
                    }
                }
            }
        }

У меня есть несколько таких ответов, и я хочу, чтобы разные отделы были представлены с разными опциями при открытии Outlook

1 Ответ

0 голосов
/ 14 октября 2019

Вы можете использовать DynamicMenu

  1. В вашей ленте XML добавьте элемент dynamicmenu:

    <contextMenus>
            <contextMenu idMso='ContextMenuCell'>
                <dynamicMenu id='dynamicRoot' label='Sample Dynamic' getContent='GetMenuCustomContent' /> 
            </contextMenu>
    </contextMenus>
    
  2. Ваша функция обратного вызова GetMenuCustomContent будет вызываться всякий раз, когда приложению хоста (Outlook) необходимо создать меню.

  3. Возвращать различные XML в соответствии с CurrentUser.

    public string GetMenuCustomContent(IRibbonControl control)
    {
        // here get the current user and return different XML
        // accodring to any condition
    
        if(SomeOtherCondition)
        {
            return @"<menu xmlns='http://schemas.microsoft.com/office/2009/07/customui'>
                        <button id='some_button' label='UserType1' onAction='DoSomething'/>
                    </menu>";
        }
        else if (SomeOtherCondition)
        {
            return @"<menu xmlns='http://schemas.microsoft.com/office/2009/07/customui'>
                        <button id='some_button2' label='UserType2' onAction='DoSomething2'/>
                    </menu>";
        }
    
        return "";
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...