Multiple Add-ins with the same custom ribbon group - ms-word

I want to target the same custom group in the ribbon as another one of my add-ins but Word just keeps creating new groups with the same name.
Here is what I have
Manifest 1
...
<Group id="MyCustomGroup">
<Label resid="MyCustomGroupLabel" />
<Control xsi:type="Button" id="MyCustomButton1">...</Control>
</Group>
...
Manifest 2
...
<Group id="MyCustomGroup">
<Label resid="MyCustomGroupLabel" />
<Control xsi:type="Button" id="MyCustomButton2">...</Control>
</Group>
...
I would expect to see the buttons in the same group, but instead it creates 2 groups with one icon in each.
I understand that there is a restriction on adding buttons to built-in groups, but I can't seem to work out how to do it for custom groups.

This is expected. With Office Web Add-ins, each custom ribbon group is linked to the unique <ID>, of the add-in that creates it, in the add-in's manifest. So, Office sees these as distinct groups.

Related

Why does this one single accesskey not work on Firefox?

I'm using Firefox on MacOS and a specific access key isn't working:
<label id="name_label" for="name" accesskey="n">Name</label>
<input id="name" name="name" value="" tabindex="1" type="text" />
This works on Safari and Chrome, but not Firefox. When I use Control+Option+n, the focus is not set on the "name" field. There are 2 other fields in the form, and their access keys work as expected. There are no conflicts on the page for the access key (i.e. accesskey="n" is only defined once). There are no conflicts on the page for the target element name (i.e. id="name" is only defined once).
I can use the developer tools to change the accesskey on that label to something else (e.g. w) and it works, so the link between the <label> and the <input> is correct. There is something about the n specifically.
I haven't been able to find any information online about any "access keys that don't work (for some reason)" but I'm starting to wonder if the n access key conflicts with something in Firefox.
Installed plug-ins are uBlock Origin, Firefox Devtools ADB Extension, and Power Close.

Keycloak - Assign User to group from registration form

I'm trying to create a custom registration form in Keycloak that will create the user and assign them to a group depending on a team drop down selection. Here is an example of my problem:
I have multiple teams that will be using keycloak and each team will have their own group in keycloak mapping out all the roles that they need access to. One app that will be using keycloak authentication is Grafana. When a user goes to Grafana and tries to register for a new account via keycloak, it creates the user, but because the user isn't assigned to a group, they land at an error page in Grafana because they don't have any privilege.
I'm trying to limit the amount of manual work to assign hundreds of users to groups after they register. I don't have access to LDAP or Active Directroy.
Here is an example of what i've tried in my custom register.ftl template.
<div class="${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('team',properties.kcFormGroupErrorClass!)}">
<div class="${properties.kcLabelWrapperClass!}">
<label for="groups" class="${properties.kcLabelClass!}">Team</label>
</div>
<div class="${properties.kcInputWrapperClass!}">
<select class="${properties.kcInputClass!}" id="groups" name="groups" value="${(register.formData['groups']!'')}">
<option value="group1">Group 1</option>
<option value="group2">Group 2</option>
<option value="group3">Group 3</option>
</select>
</div>
</div>
I was successfully able to add the group as a user attribute, and then thought I could execute a script after that uses the rest API to then assign the group, but I haven't had much luck with that either. I would like to stay away from assigning everyone to a default "view only" group because some groups don't need to be able to view all the apps that we will use.
If anyone has any ideas or could help point me in the right direction, please let me know. I have limited knowledge HTML & Javascript but know my way around Python.

Multiple conversation with different users in AIML

So what i want to do is to make a conversation between bot and a person, but the bot in the end must have at least 3 conversation between different persons. I was looking a lot for this but i cannot find anything that works.
Can somebody help me explaining how can i make multiple conversations between a bot and multiple users?
Bots developed in AIML aren't totally stateless as they can save per-user information while interacting with a user.
Your bot as a whole can interact with N number of users as there are no such limitations to AIML bots.
If you are saving variables using Set tag
<set name = "variable-name"> variable-value </set>
<category>
<pattern>I AM *</pattern>
<template>
Hi there <set name="name"> <star/>!</set>
</template>
</category>
Then it maybe stored for that particular user or as a global variable depending on the implementation of AIML specification you are using.
I am not much of an AIML expert but I do have used SIML for bot development.
In SIML however per-user information or variables are stored separately in the following fashion.
<Model>
<Pattern>WHAT IS MY NAME</Pattern>
<Response>Your name is <User Get="name"/></Response>
</Model>

How do channels work exactly with AppFlow? App showing wrong build on first load

I built an app that I got into apple’s test flight and today I sent out the notifications to users to start beta testing, but for some reason it is showing the user the previous build. If the user closes the app and reopens the app it shows the current version.
In my config.xml file I have defined
<plugin name="cordova-plugin-ionic" spec="5.2.8">
<variable name="APP_ID" value="9dab4a60" />
<variable name="CHANNEL_NAME" value="Master" />
<variable name="UPDATE_METHOD" value="auto" />
<variable name="UPDATE_API" value="https://api.ionicjs.com" />
<variable name="MAX_STORE" value="2" />
<variable name="MIN_BACKGROUND_DURATION" value="30" />
</plugin>
Is something wrong here? Not sure why this is happening. This also was happening to me when I was testing on my own device using a development provisioning profile. I had to always open the app once, close it and reopen it to see the new build. Any ideas?
Possibly when you first made the app the method should be background. So it downloads the updates and only updates on the next run.
The auto method checks the splash and installs immediately.
I also still have questions about the live deploy. In your case you have to generate a new package build. I realize that live deploy does not update when you add native plugin. Have you been through this?

RDFa OfferCatalog Syntax

I have been trying to find the best way to link two items together using RDFa, specifically linking a Person to multiple SoftwareApplication entries.
The way I currently do this on the author page is:
<div class="container text-center" vocab="http://schema.org/" typeof="Person">
...
<span property="hasOfferCatalog" typeof="OfferCatalog">
<meta property="numberOfItems" content="10" />
<span property="itemListElement" typeof="CreativeWork">
<meta property="name" content="Project Name" />
<meta property="url" content="https://www.my-domain.tld/ProjectName/" />
</span>
...
As above the project is actually a SoftwareApplication, and the URL has a complete RDFa/Schema.org definition of it, but if i put:
typeof="SoftwareApplication"
on the author's page then, kind of expectedly, Google's Structured Markup validator throws errors about required values not being present for it, CreativeWork throws no errors but is less specific. I don't really want to repeat the entire SoftwareApplication metadata everywhere the project is referenced, I'd rather just say "go look at this URL".
What is the correct/best way to cross reference the SoftwareApplication pages from the author page? in the project the reverse reference is easy as there is an Author attribute, which can be of type Person, which is acceptable with just name and URL.
Once I know the correct RDFa way of referencing I'll apply the tags to content in the page rather than using meta tags.
To link items together, you need a suitable property. Like author (to state which Person is the creator of the SoftwareApplication), or like hasOfferCatalog (to state which SoftwareApplication is offered by the Person).
Inverse properties
In most cases, Schema.org defines its properties only for one direction. So there is only author, and no authorOf. If you need the property for the other direction, you can use RDFa’s rev attribute.
Linking instead of repeating
If you don’t want to repeat your data (i.e., only define it once and link/refer to this definition instead), you can provide a URL value. Schema.org allows this for all properties, even if URL is not listed as expected type. If you want to follow Semantic Web best practices, give your entities URLs (as identifiers) with RDFa’s resource attribute, and use these URLs as property values to refer to the entities.
For this, simply use one of the linking elements (e.g., elements with href or src attribute).
Example
Using the author case as example:
<!-- on the page about the software: /software/5 -->
<div typeof="schema:SoftwareApplication" resource="/software/5#this">
Author:
<a property="schema:author" typeof="schema:Person" href="/persons/alice#i">Alice</a>
</div>
<!-- on the page about the person: /persons/alice -->
<div typeof="schema:Person" resource="/persons/alice#i">
Authored by:
<a rev="schema:author" typeof="schema:SoftwareApplication" href="/software/5#this">Software 5</a>
</div>
Errors in Google’s SDTT
If the Structured Data Testing Tool gives errors about missing properties, note that it doesn’t mean that something is wrong with your markup. Schema.org never requires a property.
It just means that these properties are required for getting a certain Google search feature. So ignore these errors if you don’t want to get the feature (or if you can’t provide all required properties).
Thank you for the other response, I'll have a read over the linked resources, I have also found a solution to the specific case in my question.
Google Search Console has a page on Carousels which shows that you can use ListItem, which only "needs" URL, to populate the hasOfferCatalog property. E.g.
<span property="itemListElement" typeof="ListItem">
<meta property="position" content="1" />
<meta property="url" content="https://www.my-domain.tld/ProjectName/" />
</span>