From 9b8fa7746ac45c50af5024d02001e6b311ac7462 Mon Sep 17 00:00:00 2001 From: Ioannis Igoumenos Date: Wed, 22 Feb 2023 22:10:10 +0200 Subject: [PATCH] Person_canvas_improvements (#78) * Dynamically calculate mvea Model name * Localizations load from CAKEPHP helper * Update access to txt lexicals --- app/src/View/Helper/VueHelper.php | 74 +++++++++++++++++++ app/templates/element/mveaJs.php | 12 +-- .../js/comanage/components/mvea/mvea-item.js | 4 +- .../js/comanage/components/mvea/mveas.js | 30 +------- .../js/comanage/components/utils/helpers.js | 8 +- 5 files changed, 91 insertions(+), 37 deletions(-) create mode 100644 app/src/View/Helper/VueHelper.php diff --git a/app/src/View/Helper/VueHelper.php b/app/src/View/Helper/VueHelper.php new file mode 100644 index 000000000..7230ba524 --- /dev/null +++ b/app/src/View/Helper/VueHelper.php @@ -0,0 +1,74 @@ + [ + 'login', + 'primary', + 'datepicker.hour', + 'unverified' + ], + 'information' => [ + 'global.value.none', + 'datepicker.hour' + ] + ]; + + /** + * Helper which will produce an array of configured locales + * + * @param string $lang The language of the locale + * + * @return array [] + * @since COmanage Registry v5.0.0 + */ + + public function locales(string $lang = 'en_US'): array { + + I18n::setLocale($lang); + + $locales = []; + foreach ($this->locales_list as $domain => $key_list) { + foreach ($key_list as $key) { + $locales[$key] = __d($domain, $key); + } + } + + return $locales; + } + +} \ No newline at end of file diff --git a/app/templates/element/mveaJs.php b/app/templates/element/mveaJs.php index 3d5e43e57..517e777e7 100644 --- a/app/templates/element/mveaJs.php +++ b/app/templates/element/mveaJs.php @@ -37,6 +37,9 @@ // Get the CSRF Token in JavaScript $token = $this->request->getAttribute('csrfToken'); +// Load my helper functions +$vueHelper = $this->loadHelper('Vue'); + // Create an MVEA component - typically this is represented as a card on a canvas page ?> @@ -59,14 +62,7 @@ mveaController: '', webroot: 'request->getAttribute('webroot') ?>' }, - txt: { - login: '', - none: '', - primary: '', - status: '', - unverified: '', - visit: '' - }, + txt: JSON.parse('locales()) ?>'), isLoading: true } }, diff --git a/app/webroot/js/comanage/components/mvea/mvea-item.js b/app/webroot/js/comanage/components/mvea/mvea-item.js index f504aca29..ff0fccfc6 100644 --- a/app/webroot/js/comanage/components/mvea/mvea-item.js +++ b/app/webroot/js/comanage/components/mvea/mvea-item.js @@ -90,7 +90,7 @@ export default {
  • {{ this.mvea.tag }} @@ -126,7 +126,7 @@ export default {
  • {{ this.mvea.type.display_name }} diff --git a/app/webroot/js/comanage/components/mvea/mveas.js b/app/webroot/js/comanage/components/mvea/mveas.js index 6e60fc271..2b98a5292 100644 --- a/app/webroot/js/comanage/components/mvea/mveas.js +++ b/app/webroot/js/comanage/components/mvea/mveas.js @@ -25,6 +25,9 @@ */ import MveaItem from './mvea-item.js'; +import { + camelize +} from '../utils/helpers.js'; export default { props: { @@ -42,32 +45,7 @@ export default { }, computed: { mveaModel: function() { - switch(this.core.mveaType) { - case 'names': - return this.mveas.Names; - break; - case 'email_addresses': - return this.mveas.EmailAddresses; - break; - case 'identifiers': - return this.mveas.Identifiers; - break; - case 'ad_hoc_attributes': - return this.mveas.AdHocAttributes; - break; - case 'addresses': - return this.mveas.Addresses; - break; - case 'telephone_numbers': - return this.mveas.TelephoneNumbers; - break; - case 'urls': - return this.mveas.Urls; - break; - case 'pronouns': - return this.mveas.Pronouns; - break; - } + return this.mveas?.[camelize(this.core.mveaType)] } }, template: ` diff --git a/app/webroot/js/comanage/components/utils/helpers.js b/app/webroot/js/comanage/components/utils/helpers.js index 299cf2888..aeed98b1e 100644 --- a/app/webroot/js/comanage/components/utils/helpers.js +++ b/app/webroot/js/comanage/components/utils/helpers.js @@ -44,6 +44,12 @@ const constructLanguageString = (abbreviation) => { return `${regionNameEngish.of(abbreviation)} (${regionNameLocale.of(abbreviation)})`; } +// Snake case to Camel case +const camelize = (word) => { + return word.split("_").map(word => (word[0].toUpperCase() + word.slice(1))).join('') +} + export { - constructLanguageString + constructLanguageString, + camelize } \ No newline at end of file