* Restructure feature popup header to handle string of different lengths
* Apply new feature popup header structure to call recording
* Apply new feature popup header structure to caller ID
* Apply new feature popup header structure to conferencing
* Apply new feature popup header structure to do not disturbe
* Apply new feature popup header structure to faxbox
* Apply new feature popup header structure to Find Me Follow Me
* Apply new feature popup header structure to Hotdesking
* Apply new feature popup header structure to Music On Hold
* Apply new feature popup header structure to Voicemail to Email
* Clean up remaining feature popup specific styling
* Apply new feature popup header structure to groups features
* Add assign to template
* Get users for the template
* Add translations
* Load in assignTo template
* Handle no owner case
* Fix translation reference
* Adhere to linter
* Clean up code
* Fix code style
* Update translation to be in devices.popupSettings
* Get user list in devicesGetEditData
* Fix templating
* Add default value to dropdown
* Remove error from listUsers call
* Rename usersData to users
* Ensure deviceData.users is not save to device
* Move users field to extra
* Move delete statements
* Move translations to popupsettings
* Conditionally show the buy numbers action for groups
* Conditionally show the buy numbers action for users
* Conditionally show the buy numbers action for strategy
* Only allow user type update if different from original
* Clean up user type assignment on user update
* Clean-up user type assignment on user creation
* Fix linting error + use lodash#oderBy to sort descendingly
* Check if service plan exists before user count increment
* See if user types are available when sorting users
* Move sub-module templates in their own `views` folder
By using `getTemplate()` we can specify which sub-module a template is
related to, enabling this behavior.
The templates names were shortened by stripping the name of their
sub-module from it since they are stored under their sub-module folder.
String templates are created using `getTemplate()` instead of
`monster.template()` that we are trying to depreciate.
* Only use `getTemplate()` for both regular and string templates
When creating groups on SmartPBX, the app automatically generates
baseGroup/userGroup callflows depending on which users are part of the
group. On the other end, the Callflows app only creates a group without
any callflow.
Since SmartPBX is listing all groups, an error was raised when trying to
view the details of group created through the Callflows app since an
associated callflow does not exist.
* Allow toggle via config between two caller id selection methods
This only affects caller ID for users. If
monster.config.whitelabel.allowAnyOwnedNumberAsCallerID is falsy, the
old way of assigning caller ID will be activated i.e. users can only
have their caller ID set to numbers assigned to them, otherwise the main
number is used. If monster.config.whitelabel.allowAnyOwnedNumberAsCallerID
is truthy, the user can also have any number owned by the account used as
their caller ID.
* Add automatic eslint fixes
* Eslint fix: make mixed user of && and || tidier