a. I’ve created a new admission form with the Form Builder. How do I replace the default form with my newly created one?
b. There is a text at the beginning of the form that says: “If you already have an account for {organisation} {systemName}, please log in now …” (I took this text example from another post)
I can replace the text in the string, but I cannot replace or delete the placeholders. Is it possible to replace the placeholders with anything else? If so, how?
c. Is there a way to get a list of available placeholders to use? (without being a programmer )
a) When you’re ready, go into School Admin > Admissions Settings to enable to the application form and customize the text for it.
b) You should be able to replace the string using String Replacement and remove the placeholders if you’d like, adding in your own static text. You can’t change the value of the placeholder, but you could replace “string {name} example” with “my string example” and this should work.
c) Placeholders depend only on the string they’re being used in, so they can’t be swapped in from other strings.
a) Ok.
b) Ok. For simple strings it seems to work very well.
However I’ve tried it in this string:
“If you alredy have a {organisation} {systemName}, please log in now to prevent creation of duplicate data about you! Once logged in, you can find the form under People > Admissions in the main menu. If you do not have an account for HIT Gibbon, please use the form below.”
I took this particular string because I found out (in the forum) that it has placeholders in it.
I was able to replace this “If you alredy have a {organisation} {systemName}” with another string, and it works.
But when I do the same for : “If you do not have an account for {organisation} {systemName}”, it does not work.
There is someone else with the same problem in the forum.
It is worth noting that if you don’t know that there are placeholders in the text, and the exact name of them, apparently you can’t use the replacement function. Because if you try to match with the displayed text it will not find it, as the text replaced by the placeholders does not exist anywhere before being displayed.
c) Sorry, I don’t understand this. I’ll appreciate it if you clarify this concept.
Without knowing the internals, I would think that a placeholder is there to be replaced by the value of an internal
variable, and it will take the current value of that variable when displayed. If it is not that way, could you please
explain how it works?
b) There are some strings in the system that still use an old-style string placeholder function, here are the two strings in their original form which can be replaced (one newer, one older):
`If you already have an account for {organisation} {systemName}, please log in now to prevent creation of duplicate data about you! Once logged in, you can find the form under {linkName} in the main menu.``
```
`If you do not have an account for %1$s %2$s, please use the form below.`
```
We are organically updating these old strings to new placeholders as we refactor the system, otherwise it would create a large translation burden to create a high volume of new strings in the system.
Be sure to use Partial string replacement if you are only replacing part of a longer string, or one term within the whole system.
c) If a string like "If you already have an account for {organisation} {systemName}" uses placeholders, then only these placeholders can be used in the string. There is not a list of placeholders available as they are not general-purpose, but only relate to how that string has been programmed in the codebase, eg:
`__('If you already have an account for {organisation} {systemName}, please log in now to prevent creation of duplicate data about you! Once logged in, you can find the form under {linkName} in the main menu.', [
'organisation' => $session->get('organisationNameShort'),
'systemName' => $session->get('systemName'),
'linkName' => __('People').' > '.__('Admissions'),
]`
```
Ok. Understood. Very detailed explanation!
So, for now, each case should be considered individually with the scope limited to that string, and probably it will require checking the corresponding code status, and based on that, decide how to build the right replacement for that string.
Thank you!!