Pages: Add enabled filter + admin can see enabled=false + add link in settings

pull/4020/head^2
Julio 4 years ago
parent d074b618f7
commit 4560b82e5f
  1. 17
      assets/vue/components/page/Form.vue
  2. 2
      assets/vue/pages/Home.vue
  3. 4
      assets/vue/views/page/Create.vue
  4. 9
      assets/vue/views/page/List.vue
  5. 1
      public/main/admin/index.php
  6. 4
      src/CoreBundle/DataProvider/Extension/PageExtension.php
  7. 3
      src/CoreBundle/Entity/Page.php

@ -14,16 +14,15 @@
<q-checkbox v-model="item.enabled" :label="$t('Enabled')"/>
</div>
<q-select v-model="item.category" :options="categories" :label="$t('Category')"
<q-select
v-model="item.category"
:options="categories" :label="$t('Category')"
option-value="id"
option-label="title"
/>
<q-select v-model="item.locale" :options="locales" :label="$t('Locale')"/>
<TinyEditor
id="item_content"
v-model="item.content"
@ -58,11 +57,8 @@ import {computed, ref} from "vue";
import {mapGetters, useStore} from "vuex";
import isEmpty from 'lodash/isEmpty';
import Dropdown from "primevue/dropdown";
export default {
name: 'PageForm',
components:{Dropdown},
setup () {
let locales = ref([]);
const store = useStore();
@ -98,7 +94,7 @@ export default {
title: null,
content: null,
locale: null,
enabled: null,
enabled: true,
};
},
computed: {
@ -110,8 +106,6 @@ export default {
if (this.values) {
this.values.creator = this.currentUser['@id'];
this.values.url = '/api/access_urls/' + window.access_url_id;
if (!isEmpty(this.values.category)) {
this.values.category = this.values.category['@id'];
}
@ -139,6 +133,9 @@ export default {
title: {
required,
},
enabled: {
required,
},
content: {
required,
},

@ -56,7 +56,7 @@ export default {
console.log(error);
});
axios.get(ENTRYPOINT + 'pages.json?category.title=home').then(response => {
axios.get(ENTRYPOINT + 'pages.json?category.title=home&enabled=1').then(response => {
if (Array.isArray(response.data)) {
state.pages = response.data;
}

@ -32,7 +32,9 @@ export default {
},
data() {
return {
item: {}
item: {
enabled: true
}
};
},
computed: {

@ -10,10 +10,10 @@
<v-icon icon="mdi-file-plus"/>
{{ $t('New page') }}
</Button>
<Button label="{{ $t('Delete selected') }}" class="btn btn-danger " @click="confirmDeleteMultiple" :disabled="!selectedItems || !selectedItems.length">
<v-icon icon="mdi-delete"/>
{{ $t('Delete selected') }}
</Button>
<!-- <Button label="{{ $t('Delete selected') }}" class="btn btn-danger " @click="confirmDeleteMultiple" :disabled="!selectedItems || !selectedItems.length">-->
<!-- <v-icon icon="mdi-delete"/>-->
<!-- {{ $t('Delete selected') }}-->
<!-- </Button>-->
</div>
</div>
</div>
@ -53,6 +53,7 @@
<Column field="locale" :header="$t('Locale')" />
<Column field="category.title" :header="$t('Category')" />
<Column field="enabled" :header="$t('Enabled')" />
<Column :exportable="false">
<template #body="slotProps">

@ -339,6 +339,7 @@ if (api_is_platform_admin()) {
$items[] = ['url' => 'settings.php?category=Plugins', 'label' => get_lang('Plugins')];
$items[] = ['url' => 'settings.php?category=Regions', 'label' => get_lang('Regions')];
$items[] = ['url' => 'system_announcements.php', 'label' => get_lang('Portal news')];
$items[] = ['url' => '/resources/pages', 'label' => get_lang('Pages')];
$items[] = [
'url' => api_get_path(WEB_CODE_PATH).'calendar/agenda_js.php?type=admin',
'label' => get_lang('Global agenda'),

@ -62,5 +62,9 @@ final class PageExtension implements QueryCollectionExtensionInterface //, Query
->setParameter('locale', $request->getLocale())
;
}
if (!$this->security->isGranted('ROLE_ADMIN')) {
$qb->andWhere("$alias.enabled = 1");
}
}
}

@ -26,7 +26,7 @@ use Symfony\Component\Validator\Constraints as Assert;
#[ApiResource(
collectionOperations: [
'get' => [
'security' => "is_granted('ROLE_USER')",
//'security' => "is_granted('ROLE_USER')",
],
'post' => [
'security' => "is_granted('ROLE_ADMIN')",
@ -54,6 +54,7 @@ use Symfony\Component\Validator\Constraints as Assert;
#[ApiFilter(SearchFilter::class, properties: [
'locale' => 'exact',
'url' => 'exact',
'enabled' => 'exact',
'category' => 'exact',
'category.title' => 'partial',
])]

Loading…
Cancel
Save