How can i change the parent breadcrumb based on the page i am called from or how can i add a child node in MvcSiteMapNode - asp.net-mvc-4

I have a Person Create page which is called from two different pages. I want to show the parent node of this Create page based of the page i am called from.
<mvcSiteMapNode title="Create" controller="Person" action="Create" />
I want the above node to be inside the below parent node based from where it is called from.
<mvcSiteMapNode title="All People" controller="Person" action="AllPeople" key="AllPeople" >
</mvcSiteMapNode>
<mvcSiteMapNode title="People" controller="Person" action="Index" >
</mvcSiteMapNode>
Thanks in advance

To accomplish this, you need to make 2 separate nodes and ensure each one has a unique URL. MvcSiteMapProvider requires that each node has a unique routing signature in order to function. Each node would be placed as a child of the respective category.
You can make a unique URL by adding a value to the query string or by changing your routes so you have a completely different URL in each case. Once you have a unique URL in each case and have configured the route information to create each URL in your nodes, the breadcrumbs will work as expected.
<mvcSiteMapNode title="All People" controller="Person" action="AllPeople" key="AllPeople">
<mvcSiteMapNode title="Create" controller="Person" action="Create" category="AllPeople" />
</mvcSiteMapNode>
<mvcSiteMapNode title="People" controller="Person" action="Index">
<mvcSiteMapNode title="Create" controller="Person" action="Create" />
</mvcSiteMapNode>
Results in:
All People > Create (URL is /Person/Create?category=AllPeople)
People > Create (URL is /Person/Create)
However, there is one more thing you need to do if your duplicate page is Internet facing - add a canonical tag. This will tell search engines that you intended to put the same content on 2 different URLs. You can decide which specific URL you want to be shown in the index and then add the canonicalUrl with that URL or canonicalKey with the key of that node to the "duplicate" nodes.
<mvcSiteMapNode title="All People" controller="Person" action="AllPeople" key="AllPeople">
<mvcSiteMapNode title="Create" controller="Person" action="Create" category="AllPeople" canonicalKey="CreatePerson" />
</mvcSiteMapNode>
<mvcSiteMapNode title="People" controller="Person" action="Index">
<mvcSiteMapNode title="Create" controller="Person" action="Create" key="CreatePerson" />
</mvcSiteMapNode>
Then add a #Html.MvcSiteMap().CanonicalTag() HTML helper to the <head></head> section (usually in a layout page), and MvcSiteMapProvider will automatically generate the Canonical tag when necessary.
<head>
<meta charset="utf-8" />
<title>#Html.MvcSiteMap().SiteMapTitle() - My ASP.NET MVC Application</title>
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<meta name="viewport" content="width=device-width" />
#Html.MvcSiteMap().CanonicalTag()
#Html.MvcSiteMap().MetaRobotsTag()
#Styles.Render("~/Content/css")
#Scripts.Render("~/bundles/modernizr")
</head>
More information:
http://www.shiningtreasures.com/post/2013/08/10/mvcsitemapprovider-4-seo-features#canonical-tag
https://github.com/maartenba/MvcSiteMapProvider/wiki/Multiple-Navigation-Paths-to-a-Single-Page
http://www.mattcutts.com/blog/canonical-link-tag/
Be sure to check out the code download in the first post for a working demo.

Related

How can I test(or run) Intellij IDEA run configuration in CI?

I have some configurations in IDEA those saved in the project as XML files and I want them to be tested/verified in CI. I want to test them to make sure they could be running and will run successfully.
How can I do that?
Addition 1: For example, let's see this XML:
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="CurrenciesApp" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
<module name="sba-currencies-service" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="aero.s7.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<option name="SPRING_BOOT_MAIN_CLASS" value="aero.s7.CurrenciesApp" />
<option name="ALTERNATIVE_JRE_PATH" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
</component>
Addition 2: I'm stuck now in searching for some Maven plugin that can run those configurations.

Publishing Outlook add-in which uses Outlook preview element - SupportsSharedFolders

I am developing Outlook add-in which will work with shared mailboxes.
Currently, office add-ins are not available on delegate scenarios but MS has released preview build which supports these scenarios.
https://learn.microsoft.com/en-us/office/dev/add-ins/reference/manifest/supportssharedfolders
My problem is since the manifest.xml has preview elements; I can't upload the it at outlook.office365.com under my add-ins. I get following error.
This app can't be installed. The manifest file doesn't conform to the schema definition. The element 'DesktopFormFactor' in namespace 'http://schemas.microsoft.com/office/mailappversionoverrides/1.1' has invalid child element 'SupportsSharedFolders' in namespace 'http://schemas.microsoft.com/office/mailappversionoverrides/1.1'. List of possible elements expected: 'ExtensionPoint' in namespace 'http://schemas.microsoft.com/office/mailappversionoverrides/1.1'... The element 'DesktopFormFactor' in namespace 'http://schemas.microsoft.com/office/mailappversionoverrides/1.1' has invalid child element 'SupportsSharedFolders' in namespace 'http://schemas.microsoft.com/office/mailappversionoverrides/1.1'. List of possible elements expected: 'ExtensionPoint' in namespace 'http://schemas.microsoft.com/office/mailappversionoverrides/1.1'.
Anyone know any other way to deploy the add-in for users or even test it out without being to upload xml file?
Thanks in advance.
Copy of my manifest.xml file is here.
<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp
xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0"
xmlns:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides"
xsi:type="MailApp">
<Version>1.0.0.0</Version>
<ProviderName></ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="Sample1" />
<Description DefaultValue="First Sample Angular Add-in"/>
<IconUrl DefaultValue="xxxx.jpg" />
<HighResolutionIconUrl DefaultValue="https://localhost:3000/assets/hi-res-icon.png"/>
<!--If you plan to submit this add-in to the Office Store, uncomment the SupportUrl element below-->
<SupportUrl DefaultValue="https://localhost:3000/support.html" />
<!-- Domains that will be allowed when navigating. For example, if you use ShowTaskpane and then have an href link, navigation will only be allowed if the domain is on this list. -->
<AppDomains>
<AppDomain>AppDomain1</AppDomain>
<AppDomain>AppDomain2</AppDomain>
<AppDomain>AppDomain3</AppDomain>
</AppDomains>
<!--End Basic Settings. -->
<Hosts>
<Host Name="Mailbox" />
</Hosts>
<Requirements>
<Sets>
<Set Name="Mailbox" MinVersion="1.1" />
</Sets>
</Requirements>
<FormSettings>
<Form xsi:type="ItemRead">
<DesktopSettings>
<SourceLocation DefaultValue="https://localhost:3000/index.html"/>
<RequestedHeight>250</RequestedHeight>
</DesktopSettings>
</Form>
</FormSettings>
<Permissions>ReadWriteItem</Permissions>
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="ItemIs" ItemType="Message" FormType="Read" />
</Rule>
<DisableEntityHighlighting>false</DisableEntityHighlighting>
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
<Description resid="residDescription" />
<Requirements>
<bt:Sets DefaultMinVersion="1.3">
<bt:Set Name="Mailbox" />
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<!-- add information on form factors -->
</Host>
</Hosts>
<Resources>
<!-- add information on resources -->
</Resources>
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
<Requirements>
<bt:Sets DefaultMinVersion="1.3">
<bt:Set Name="Mailbox" />
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<!-- Location of the Functions that UI-less buttons can trigger (ExecuteFunction Actions). -->
<FunctionFile resid="functionFile" />
<SupportsSharedFolders>true</SupportsSharedFolders>
<!-- Message Read -->
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<!-- Use the default tab of the ExtensionPoint or create your own with <CustomTab id="myTab"> -->
<OfficeTab id="TabDefault">
<!-- Up to 6 Groups added per Tab -->
<Group id="msgReadGroup">
<Label resid="groupLabel" />
<!-- Launch the add-in : task pane button -->
<Control xsi:type="Button" id="msgReadOpenPaneButton">
<Label resid="paneReadButtonLabel" />
<Supertip>
<Title resid="paneReadSuperTipTitle" />
<Description resid="paneReadSuperTipDescription" />
</Supertip>
<Icon>
<bt:Image size="16" resid="icon16" />
<bt:Image size="32" resid="icon32" />
<bt:Image size="80" resid="icon80" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="messageReadTaskPaneUrl" />
</Action>
</Control>
<!-- Go to http://aka.ms/ButtonCommands to learn how to add more Controls: ExecuteFunction and Menu -->
</Group>
</OfficeTab>
</ExtensionPoint>
<!-- Go to http://aka.ms/ExtensionPointsCommands to learn how to add more Extension Points: MessageRead, AppointmentOrganizer, AppointmentAttendee -->
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<!-- add information on resources -->
</Resources>
</VersionOverrides>
</VersionOverrides>
</OfficeApp>
Explaining #Bubuhubu's answer, and hopefully helping other people out who hit this issue.
If you use the yo generator to initially create your manifest, as is documented in the following Microsoft how to article:
https://learn.microsoft.com/en-us/outlook/add-ins/addin-tutorial
You will notice that the <VersionOverrides> tag is created without a version number. This version of the VersionOverrides element does NOT support the <SupportsSharedFolders> tag, but the 1.1 version DOES.
You might think that you could simply change the xmlns and type tags of the VersionOverrides tag to 1.1 to get the tag supported, but apparently a 1.1 VersionOverrides tag is not supported within an OfficeApp tag. It is however, supported as a child element of a VersionOverrides 1.0 tag.
As a result the simplest way to fix this is to take your manifest.xml from the yo generatort and find:
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
And right after it add:
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
So that it now looks like this:
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
Likewise, near the end-of the document, find:
</VersionOverrides>
and change it to:
</VersionOverrides>
</VersionOverrides>
You can now utilize the <SupportsSharedFolders>, e.g. Your manifest.xml should look something like the following:
. . .
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
<Requirements>
<bt:Sets DefaultMinVersion="1.3">
<bt:Set Name="Mailbox" />
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<SupportsSharedFolders>true</SupportsSharedFolders>
. . .
</VersionOverrides>
</VersionOverrides>
</OfficeApp>
Hopefully this helps save someone some time.
BTW, apparently when you add a plugin in Outlook it can take up to 60 seconds for it to show up. As a result if you don't see your icon immediately, don't assume at first that it didn't work (Like I originally did).
I've experienced the same issue today. I was able to solve it by moving the
SupportsSharedFolders tag to the beginning of the DesktopFormFactor tag.
Instead of this:
...
<DesktopFormFactor>
<!-- Location of the Functions that UI-less buttons can trigger (ExecuteFunction Actions). -->
<FunctionFile resid="functionFile" />
<SupportsSharedFolders>true</SupportsSharedFolders>
<!-- Message Read -->
...
it should look like this
...
<DesktopFormFactor>
<SupportsSharedFolders>true</SupportsSharedFolders>
<!-- Location of the Functions that UI-less buttons can trigger (ExecuteFunction Actions). -->
<FunctionFile resid="functionFile" />
<!-- Message Read -->
...
Here is sample manifest file which worked for me.
<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp
xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0"
xmlns:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides"
xsi:type="MailApp">
<!-- Begin Basic Settings: Add-in metadata, used for all versions of Office unless override provided. -->
<!-- IMPORTANT! Id must be unique for your add-in, if you reuse this manifest ensure that you change this id to a new GUID. -->
<Id>XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX</Id>
<!--Version. Updates from the store only get triggered if there is a version change. -->
<Version>1.0.0.0</Version>
<ProviderName></ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<!-- The display name of your add-in. Used on the store and various places of the Office UI such as the add-ins dialog. -->
<DisplayName DefaultValue="" />
<Description DefaultValue=""/>
<!-- Icon for your add-in. Used on installation screens and the add-ins dialog. -->
<IconUrl DefaultValue="" />
<HighResolutionIconUrl DefaultValue="https://localhost:3000/assets/hi-res-icon.png"/>
<!--If you plan to submit this add-in to the Office Store, uncomment the SupportUrl element below-->
<SupportUrl DefaultValue="https://localhost:3000/support.html" />
<!-- Domains that will be allowed when navigating. For example, if you use ShowTaskpane and then have an href link, navigation will only be allowed if the domain is on this list. -->
<AppDomains>
<AppDomain>AppDomain1</AppDomain>
<AppDomain>AppDomain2</AppDomain>
<AppDomain>AppDomain3</AppDomain>
</AppDomains>
<!--End Basic Settings. -->
<Hosts>
<Host Name="Mailbox" />
</Hosts>
<Requirements>
<Sets>
<Set Name="Mailbox" MinVersion="1.1" />
</Sets>
</Requirements>
<FormSettings>
<Form xsi:type="ItemRead">
<DesktopSettings>
<SourceLocation DefaultValue="https://localhost:3000/index.html"/>
<RequestedHeight>250</RequestedHeight>
</DesktopSettings>
</Form>
</FormSettings>
<Permissions>ReadWriteItem</Permissions>
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="ItemIs" ItemType="Message" FormType="Read" />
</Rule>
<DisableEntityHighlighting>false</DisableEntityHighlighting>
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
<Requirements>
<bt:Sets DefaultMinVersion="1.3">
<bt:Set Name="Mailbox" />
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<!-- Location of the Functions that UI-less buttons can trigger (ExecuteFunction Actions). -->
<FunctionFile resid="functionFile" />
<!-- Message Read -->
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<!-- Use the default tab of the ExtensionPoint or create your own with <CustomTab id="myTab"> -->
<OfficeTab id="TabDefault">
<!-- Up to 6 Groups added per Tab -->
<Group id="msgReadGroup">
<Label resid="groupLabel" />
<!-- Launch the add-in : task pane button -->
<Control xsi:type="Button" id="msgReadOpenPaneButton">
<Label resid="paneReadButtonLabel" />
<Supertip>
<Title resid="paneReadSuperTipTitle" />
<Description resid="paneReadSuperTipDescription" />
</Supertip>
<Icon>
<bt:Image size="16" resid="icon16" />
<bt:Image size="32" resid="icon32" />
<bt:Image size="80" resid="icon80" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="messageReadTaskPaneUrl" />
</Action>
</Control>
<!-- Go to http://aka.ms/ButtonCommands to learn how to add more Controls: ExecuteFunction and Menu -->
</Group>
</OfficeTab>
</ExtensionPoint>
<!-- Go to http://aka.ms/ExtensionPointsCommands to learn how to add more Extension Points: MessageRead, AppointmentOrganizer, AppointmentAttendee -->
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="icon16" DefaultValue="https://localhost:3000/assets/XXXX-16.png"/>
<bt:Image id="icon32" DefaultValue="https://localhost:3000/assets/XXXX-32.png"/>
<bt:Image id="icon80" DefaultValue="https://localhost:3000/assets/XXXX-80.png"/>
</bt:Images>
<bt:Urls>
<bt:Url id="functionFile" DefaultValue="https://localhost:3000/function-file/function-file.html"/>
<bt:Url id="messageReadTaskPaneUrl" DefaultValue="https://localhost:3000/index.html"/>
</bt:Urls>
<bt:ShortStrings>
<bt:String id="groupLabel" DefaultValue="My Add-in Group"/>
<bt:String id="customTabLabel" DefaultValue="My Add-in Tab"/>
<bt:String id="paneReadButtonLabel" DefaultValue="Display all properties"/>
<bt:String id="paneReadSuperTipTitle" DefaultValue="Get all properties"/>
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="paneReadSuperTipDescription" DefaultValue="Opens a pane displaying all available properties. This is an example of a button that opens a task pane."/>
</bt:LongStrings>
</Resources>
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
<Requirements>
<bt:Sets DefaultMinVersion="1.3">
<bt:Set Name="Mailbox" />
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<SupportsSharedFolders>true</SupportsSharedFolders>
<!-- Location of the Functions that UI-less buttons can trigger (ExecuteFunction Actions). -->
<FunctionFile resid="functionFile" />
<!-- Message Read -->
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<!-- Use the default tab of the ExtensionPoint or create your own with <CustomTab id="myTab"> -->
<OfficeTab id="TabDefault">
<!-- Up to 6 Groups added per Tab -->
<Group id="msgReadGroup">
<Label resid="groupLabel" />
<!-- Launch the add-in : task pane button -->
<Control xsi:type="Button" id="msgReadOpenPaneButton">
<Label resid="paneReadButtonLabel" />
<Supertip>
<Title resid="paneReadSuperTipTitle" />
<Description resid="paneReadSuperTipDescription" />
</Supertip>
<Icon>
<bt:Image size="16" resid="icon16" />
<bt:Image size="32" resid="icon32" />
<bt:Image size="80" resid="icon80" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="messageReadTaskPaneUrl" />
</Action>
</Control>
<!-- Go to http://aka.ms/ButtonCommands to learn how to add more Controls: ExecuteFunction and Menu -->
</Group>
</OfficeTab>
</ExtensionPoint>
<!-- Go to http://aka.ms/ExtensionPointsCommands to learn how to add more Extension Points: MessageRead, AppointmentOrganizer, AppointmentAttendee -->
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="icon16" DefaultValue="https://localhost:3000/assets/XXXX-16.png"/>
<bt:Image id="icon32" DefaultValue="https://localhost:3000/assets/XXXXX-32.png"/>
<bt:Image id="icon80" DefaultValue="https://localhost:3000/assets/XXXX-80.png"/>
</bt:Images>
<bt:Urls>
<bt:Url id="functionFile" DefaultValue="https://localhost:3000/function-file/function-file.html"/>
<bt:Url id="messageReadTaskPaneUrl" DefaultValue="https://localhost:3000/index.html"/>
</bt:Urls>
<bt:ShortStrings>
<bt:String id="groupLabel" DefaultValue="My Add-in Group"/>
<bt:String id="customTabLabel" DefaultValue="My Add-in Tab"/>
<bt:String id="paneReadButtonLabel" DefaultValue="Display all properties"/>
<bt:String id="paneReadSuperTipTitle" DefaultValue="Get all properties"/>
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="paneReadSuperTipDescription" DefaultValue="Opens a pane displaying all available properties. This is an example of a button that opens a task pane."/>
</bt:LongStrings>
</Resources>
</VersionOverrides>
</VersionOverrides>
</OfficeApp>

Unable to add Outlook 2016 web add-in to windows and Mac clients

I am trying to create a very simple web outlook add-ins (Using JavaScript + HTML5 + CSS). This is the same add-in described in the tutorial.
https://learn.microsoft.com/en-us/outlook/add-ins/quick-start?tabs=visual-studio
I am able to create the add-in and add it to Outlook 2016 web client. When I open the outlook web client and use the add-in, it works perfectly.
Now I am trying to add same add-in to Outlook 2016 client installed on Windows and MAC. On both the machines when I search and add the add-in (with add from file option), it gets added successfully. I get the “installed successfully “message. I even see it under “my add-ins” option. But it does not show up in the toolbar. When I again open the store and check the “my add-in” list, the add-in is disappeared form the list. This means it never got installed correctly.
Since I am new to this, I am not able to determine the reason or debug the issue. Is there any change I need to do to manifest file? Currently I am using the same manifest file for web client, windows and mac based client. Also how do I debug this?
Update:
Here is the manifest file I am using for registering add-in in web client. I am using the same file for windows and mac clients. Is the manifest file different?
<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp
xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0"
xmlns:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides/1.0"
xsi:type="MailApp">
<!-- Begin Basic Settings: Add-in metadata, used for all versions of Office unless override provided. -->
<!-- IMPORTANT! Id must be unique for your add-in, if you reuse this manifest ensure that you change this id to a new GUID. -->
<Id>771983a0-73ed-45a0-90d9-0fd546592d94</Id>
<!--Version. Updates from the store only get triggered if there is a version change. -->
<Version>1.0.0.0</Version>
<ProviderName>Amey Kale</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<!-- The display name of your add-in. Used on the store and various places of the Office UI such as the add-ins dialog. -->
<DisplayName DefaultValue="My Office Add-in" />
<Description DefaultValue="My First Outlook Add-in"/>
<!-- Icon for your add-in. Used on installation screens and the add-ins dialog. -->
<IconUrl DefaultValue="https://localhost/OWA/" />
<HighResolutionIconUrl DefaultValue="https://dev.sgsuite.com/OWA/assets/hi-res-icon.png"/>
<!--If you plan to submit this add-in to the Office Store, uncomment the SupportUrl element below-->
<SupportUrl DefaultValue="https://dev.sgsuite.com/OWA/assets/hi-res-icon.png" />
<!-- Domains that will be allowed when navigating. For example, if you use ShowTaskpane and then have an href link, navigation will only be allowed if the domain is on this list. -->
<AppDomains>
<AppDomain>AppDomain1</AppDomain>
<AppDomain>AppDomain2</AppDomain>
<AppDomain>AppDomain3</AppDomain>
</AppDomains>
<!--End Basic Settings. -->
<Hosts>
<Host Name="Mailbox" />
</Hosts>
<Requirements>
<Sets>
<Set Name="Mailbox" MinVersion="1.1" />
</Sets>
</Requirements>
<FormSettings>
<Form xsi:type="ItemRead">
<DesktopSettings>
<SourceLocation DefaultValue="https://dev.sgsuite.com/OWA/index.html"/>
<RequestedHeight>250</RequestedHeight>
</DesktopSettings>
</Form>
</FormSettings>
<Permissions>ReadWriteItem</Permissions>
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="ItemIs" ItemType="Message" FormType="Read" />
</Rule>
<DisableEntityHighlighting>false</DisableEntityHighlighting>
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
<Requirements>
<bt:Sets DefaultMinVersion="1.3">
<bt:Set Name="Mailbox" />
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<!-- Location of the Functions that UI-less buttons can trigger (ExecuteFunction Actions). -->
<FunctionFile resid="functionFile" />
<!-- Message Read -->
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<!-- Use the default tab of the ExtensionPoint or create your own with <CustomTab id="myTab"> -->
<OfficeTab id="TabDefault">
<!-- Up to 6 Groups added per Tab -->
<Group id="msgReadGroup">
<Label resid="groupLabel" />
<!-- Launch the add-in : task pane button -->
<Control xsi:type="Button" id="msgReadOpenPaneButton">
<Label resid="paneReadButtonLabel" />
<Supertip>
<Title resid="paneReadSuperTipTitle" />
<Description resid="paneReadSuperTipDescription" />
</Supertip>
<Icon>
<bt:Image size="16" resid="icon16" />
<bt:Image size="32" resid="icon32" />
<bt:Image size="80" resid="icon80" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="messageReadTaskPaneUrl" />
</Action>
</Control>
<!-- Go to http://aka.ms/ButtonCommands to learn how to add more Controls: ExecuteFunction and Menu -->
</Group>
</OfficeTab>
</ExtensionPoint>
<!-- Go to http://aka.ms/ExtensionPointsCommands to learn how to add more Extension Points: MessageRead, AppointmentOrganizer, AppointmentAttendee -->
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="icon16" DefaultValue="https://dev.sgsuite.com/OWA/assets/icon-16.png"/>
<bt:Image id="icon32" DefaultValue="https://dev.sgsuite.com/OWA/assets/icon-32.png"/>
<bt:Image id="icon80" DefaultValue="https://dev.sgsuite.com/OWA/assets/icon-80.png"/>
</bt:Images>
<bt:Urls>
<bt:Url id="functionFile" DefaultValue="https://dev.sgsuite.com/OWA/function-file/function-file.html"/>
<bt:Url id="messageReadTaskPaneUrl" DefaultValue="https://dev.sgsuite.com/OWA/index.html"/>
</bt:Urls>
<bt:ShortStrings>
<bt:String id="groupLabel" DefaultValue="My Add-in Group"/>
<bt:String id="customTabLabel" DefaultValue="My Add-in Tab"/>
<bt:String id="paneReadButtonLabel" DefaultValue="Display all properties"/>
<bt:String id="paneReadSuperTipTitle" DefaultValue="Get all properties"/>
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="paneReadSuperTipDescription" DefaultValue="Opens a pane displaying all available properties. This is an example of a button that opens a task pane."/>
</bt:LongStrings>
</Resources>
</VersionOverrides>
</OfficeApp>
When registering the add-in from desktop client, I am getting following certificate error:
But when I register it from web client it does not give me this error, even though the web server is same.

Add-in command menu on MessageReadCommandSurface gets disabled in Outlook for Mac

We have an Outlook add-in which uses add-in commands that works great in Outlook 2016 for Windows and OWA but has a problem in Outlook 2016 for Mac with menu type controls on the main Outlook Home TAB (MessageReadCommandSurface). For this type of add-in command the menu becomes broken in that you cannot select items past the first two items on the list.
As you cursor down the menu each button is selected but once you get to the 3rd item the selection disappears and you cannot activate any buttons. If you cursor up past the top of the menu you regain selectability for the top two items, but if you cursor down again the problem returns. Even menus with 2 items have a problem as if you move the cursor down past the bottom of the list the menu becomes inactive until you move the cursor up past the top and back down.
In case it was something we did I tried creating a super trimmed-down manifest with a simple task pane triggered from its two buttons:
<DesktopFormFactor>
<FunctionFile resid="functionFile" />
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<OfficeTab id="TabDefault">
<Group id="group1">
<Label resid="strProdGroupName" />
<Control xsi:type="Menu" id="menu1">
<Label resid="strAbout" />
<Supertip>
<Title resid="strAbout" />
<Description resid="lsOpenAboutTaskPane" />
</Supertip>
<Icon>
<bt:Image size="16" resid="logo-icon-16" />
<bt:Image size="32" resid="logo-icon-32" />
<bt:Image size="80" resid="logo-icon-80" />
</Icon>
<Items>
<Item id="item1">
<Label resid="strAbout" />
<Supertip>
<Title resid="strAbout" />
<Description resid="lsOpenAboutTaskPane" />
</Supertip>
<Icon>
<bt:Image size="16" resid="logo-icon-16" />
<bt:Image size="32" resid="logo-icon-32" />
<bt:Image size="80" resid="logo-icon-80" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="aboutPage" />
</Action>
</Item>
<Item id="item2">
<Label resid="strAbout" />
<Supertip>
<Title resid="strAbout" />
<Description resid="lsOpenAboutTaskPane" />
</Supertip>
<Icon>
<bt:Image size="16" resid="logo-icon-16" />
<bt:Image size="32" resid="logo-icon-32" />
<bt:Image size="80" resid="logo-icon-80" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="aboutPage" />
</Action>
</Item>
</Items>
</Control>
</Group>
</OfficeTab>
</ExtensionPoint>
</DesktopFormFactor>
This simple menu reproduced the issue.
Some details:
The menu works fine if you pop out the email and use the menu from the email's Message TAB.
You have to open a task pane from the menu twice to trigger the issue.
Popping out an email then closing it restores the menu.
Issue does not occur in Outlook for Windows or OWA.
I realize this is a weird issue and might be something we are doing wrong, but testing suggests it isn't something we are doing.
Questions:
Has anyone else encountered this issue?
It would be ideal to try a different add-in which uses an add-in command menu on the MessageReadCommandSurface. Does anyone know of an Outlook add-in with such a menu that we can try? Maybe something free from the Store?
Any suggestions what we can try to nail down this issue?
Does anyone know of a known issues list for office.js add-ins running under Outlook for Mac?
Thanks
Thanks for letting us know.
Will you be able to share the outlook and OS version?
Also, are you able to repro it every time or is the issue intermittent?

Nesting templates in Tiles, why are attributes undefined in the included template?

I use Tiles 2 in my web application, and the basic setup I've got in my tiles.xml file is this:
<tiles-definitions>
<definition name="mainLayout" template="/jsp/layout.jsp">
<put-attribute name="header" value=""/>
<put-attribute name="menu" value="/jsp/defaultMenu.jsp" />
<put-attribute name="content" value="" />
<put-attribute name="footer" value="/jsp/footer.jsp" />
</definition>
<definition name="HomePage" extends="mainLayout">
<put-attribute name="content" type="template" value="/jsp/home.jsp"/>
<put-attribute name="homeClass" value="active" />
</definition>
... rest omitted for brevity.
In layout.jsp, which defines the layout, I include the menu in the appropriate place.
<tiles:insertAttribute name="menu" />
So, then inside my menu template, I wanted to use the homeClass attribute defined in tiles.xml.
<tiles:insertAttribute name='homeClass'/>
but I get an error about the homeClass attribute not being defined. If I do an insertAttribute in my layout.jsp, the value is defined properly, but I need it defined in the menu JSP, included from my layout.
So, my question is: How can I have the homeClass attribute passed correctly not just to my layout template, but to the menu template which is included from the layout template?
I believe you could use nested template definitions:
<definition name="mainLayout" template="/jsp/layout.jsp">
<put-attribute name="header" value=""/>
<put-attribute name="menu">
<definition template="/jsp/defaultMenu.jsp">
<put-attribute name="homeClass" value="active"/>
</definition>
</put-attribute>
<put-attribute name="content" value="" />
<put-attribute name="footer" value="/jsp/footer.jsp" />
</definition>