Settings: Load settings in vue with window.config

pull/3959/head
Julio 4 years ago
parent 4e2670cb76
commit eba065a171
  1. 8
      assets/vue/App.vue
  2. 21
      assets/vue/components/layout/DashboardLayout.vue
  3. 32
      src/CoreBundle/EventListener/TwigListener.php
  4. 2
      src/CoreBundle/Resources/views/Layout/vue_setup.html.twig

@ -142,12 +142,18 @@ export default {
let app = document.getElementById('app');
let isAuthenticated = false;
if (!isEmpty(window.user)) {
console.log('APP.vue: is logged in as ' + window.user.username);
this.user = window.user;
isAuthenticated = true;
}
console.log(this.user);
if (!isEmpty(window.config)) {
console.log('Config: ', window.config);
this.config = window.config;
}
let payload = {isAuthenticated: isAuthenticated, user: this.user};
this.$store.dispatch("security/onRefresh", payload);

@ -188,7 +188,13 @@
<div class="q-mt-md">
<div class="flex flex-center q-gutter-xs">
<a class="GNL__drawer-footer-link" href="javascript:void(0)" aria-label="About">Chamilo</a>
<a
class="GNL__drawer-footer-link"
href="javascript:void(0)"
>
{{ config['platform.site_name'] }}
{{ config['platform.institution'] }}
</a>
</div>
</div>
</q-list>
@ -197,17 +203,13 @@
<!-- <q-drawer show-if-above v-model="rightDrawerOpen" side="right" elevated>-->
<!-- &lt;!&ndash; drawer content &ndash;&gt;-->
<!-- </q-drawer>-->
<q-page-container>
<q-page
class="q-layout-padding"
>
<Breadcrumb v-if="this.showBreadcrumb" :legacy="this.breadcrumb"/>
<router-view />
<slot></slot>
</q-page>
</q-page-container>
</q-layout>
@ -218,7 +220,6 @@ import {mapGetters, useStore} from "vuex";
import isEmpty from "lodash/isEmpty";
import useState from "../../hooks/useState";
import {computed, ref, toRefs} from "vue";
import Breadcrumb from '../../components/Breadcrumb.vue';
export default {
@ -230,11 +231,14 @@ export default {
const { isSidebarOpen, isSettingsPanelOpen, isSearchPanelOpen, isNotificationsPanelOpen } = useState();
const rightDrawerOpen = ref(false);
const { showBreadcrumb } = toRefs(props);
const config = ref([]);
/*const store = useStore();
const currentUser = store.getters["security/getUser"];*/
if (!isEmpty(window.config)) {
config.value = window.config;
}
return {
config,
//currentUser,
showBreadcrumb,
isSettingsPanelOpen,
@ -251,7 +255,6 @@ export default {
data: () => ({
user: {},
moved: true,
showBreadcrumb: true,
linksUser: [
//{ icon: 'home', url: '/', text: 'Home' },
//{ icon: 'star_border', url: '/', text: 'News' },

@ -8,6 +8,7 @@ namespace Chamilo\CoreBundle\EventListener;
use Chamilo\CoreBundle\Entity\User;
use Chamilo\CoreBundle\Repository\Node\IllustrationRepository;
use Chamilo\CoreBundle\Settings\SettingsManager;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\User\UserInterface;
@ -19,18 +20,22 @@ class TwigListener
private SerializerInterface $serializer;
private Environment $twig;
private TokenStorageInterface $tokenStorage;
private IllustrationRepository $illustrationRepository;
private SettingsManager $settingsManager;
//private IllustrationRepository $illustrationRepository;
public function __construct(
Environment $twig,
SerializerInterface $serializer,
TokenStorageInterface $tokenStorage,
IllustrationRepository $illustrationRepository
SettingsManager $settingsManager
//IllustrationRepository $illustrationRepository
) {
$this->twig = $twig;
$this->tokenStorage = $tokenStorage;
$this->serializer = $serializer;
$this->illustrationRepository = $illustrationRepository;
$this->settingsManager = $settingsManager;
//$this->illustrationRepository = $illustrationRepository;
}
public function __invoke(RequestEvent $event): void
@ -39,7 +44,6 @@ class TwigListener
$token = $this->tokenStorage->getToken();
$data = null;
$avatar = null;
$isAuth = false;
if (null !== $token) {
$user = $token->getUser();
@ -49,15 +53,31 @@ class TwigListener
$data = $this->serializer->serialize($userClone, 'jsonld', [
'groups' => ['user_json:read'],
]);
$avatar = $this->illustrationRepository->getIllustrationUrl($userClone);
$isAuth = true;
}
}
$settings = [
'platform.site_name',
'platform.timezone',
'platform.theme',
'platform.administrator_name',
'platform.administrator_surname',
'editor.enabled_mathjax',
//'editor.translate_html',
];
$config = [];
foreach ($settings as $variable) {
$value = $this->settingsManager->getSetting($variable);
$config[$variable] = $value;
}
//$this->twig->addGlobal('text_direction', api_get_text_direction());
$this->twig->addGlobal('from_vue', $request->request->get('from_vue') ? 1 : 0);
$this->twig->addGlobal('is_authenticated', json_encode($isAuth));
$this->twig->addGlobal('user_json', $data ?? json_encode([]));
$this->twig->addGlobal('user_avatar', $avatar);
$this->twig->addGlobal('config_json', json_encode($config));
}
}

@ -1,5 +1,7 @@
<script>
window.config = {{ config_json | raw }};
window.user = {{ user_json | raw }};
{% if legacy_breadcrumb is defined %}
window.breadcrumb = {{ legacy_breadcrumb | raw }};
{% else %}

Loading…
Cancel
Save