diff --git a/src/admin/components/lists/events-list.vue b/src/admin/components/lists/events-list.vue index 5b2560ecd..cf5bb34c5 100644 --- a/src/admin/components/lists/events-list.vue +++ b/src/admin/components/lists/events-list.vue @@ -53,7 +53,6 @@ }" v-html="event.user_name" /> -<<<<<<< HEAD
@@ -308,9 +322,6 @@
import Pagination from '../../components/search/pagination.vue'
import { mapActions, mapGetters } from 'vuex';
- // import TainacanCardsList from '../../components/item-view-modes/tainacan-cards-list.vue';
- // import TainacanListList from '../../components/item-view-modes/tainacan-list-list.vue';
-
export default {
name: 'ItemsPage',
data() {
@@ -327,7 +338,8 @@
isOnTheme: false,
futureSearchQuery: '',
isHeaderShrinked: false,
- localTableFields: []
+ localTableFields: [],
+ registeredViewModes: tainacan_plugin.registered_view_modes
}
},
props: {
diff --git a/src/api/endpoints/class-tainacan-rest-items-controller.php b/src/api/endpoints/class-tainacan-rest-items-controller.php
index 9424b3132..16c6670cb 100644
--- a/src/api/endpoints/class-tainacan-rest-items-controller.php
+++ b/src/api/endpoints/class-tainacan-rest-items-controller.php
@@ -220,23 +220,30 @@ class REST_Items_Controller extends REST_Controller {
$response = [];
- if ( isset($request['view_mode_template']) ) {
+ $return_template = false;
+
+ if ( isset($request['view_mode']) ) {
// TODO: Check if requested view mode is really enabled for current collection
- $view_mode = \Tainacan\Theme_Helper::get_instance()->get_view_mode($request['view_mode_template']);
-
- if ( $view_mode && isset($view_mode['template']) && file_exists($view_mode['template']) ) {
-
- ob_start();
-
- global $wp_query;
- $wp_query = $items;
- $displayed_metadata = array_map(function($el) { return (int) $el; }, $request['fetch_only']['meta']);
- include $view_mode['template'];
-
- $response = ob_get_clean();
- }
+ $view_mode = \Tainacan\Theme_Helper::get_instance()->get_view_mode($request['view_mode']);
+ if ($view_mode && $view_mode['type'] == 'template' && isset($view_mode['template']) && file_exists($view_mode['template'])) {
+ $return_template = true;
+ }
+
+ }
+
+ if ( $return_template ) {
+
+ ob_start();
+
+ global $wp_query;
+ $wp_query = $items;
+ $displayed_metadata = array_map(function($el) { return (int) $el; }, $request['fetch_only']['meta']);
+ include $view_mode['template'];
+
+ $response = ob_get_clean();
+
} else {
if ($items->have_posts()) {
diff --git a/src/js/event-bus-search.js b/src/js/event-bus-search.js
index 189399b0b..ec0a3d97a 100644
--- a/src/js/event-bus-search.js
+++ b/src/js/event-bus-search.js
@@ -126,7 +126,10 @@ export default {
this.$emit( 'hasToPrepareFieldsAndFilters', to);
else {
this.$emit( 'isLoadingItems', true);
- this.$store.dispatch('collection/fetchItems', { 'collectionId': this.collectionId, 'isOnTheme': (this.$route.name == null) })
+ this.$store.dispatch('collection/fetchItems',
+ { 'collectionId': this.collectionId,
+ 'isOnTheme': (this.$route.name == null)
+ })
.then((res) => {
this.$emit( 'isLoadingItems', false);
this.$emit( 'hasFiltered', res.hasFiltered);
diff --git a/src/js/store/modules/collection/actions.js b/src/js/store/modules/collection/actions.js
index 459c7440e..a431dd565 100644
--- a/src/js/store/modules/collection/actions.js
+++ b/src/js/store/modules/collection/actions.js
@@ -24,17 +24,18 @@ export const fetchItems = ({ rootGetters, dispatch, commit }, { collectionId, is
axios.tainacan.get(endpoint + qs.stringify(postQueries) )
.then(res => {
+
let items = res.data;
-
- if (postQueries['format'] != 'table' && postQueries['format'] != undefined && postQueries['format'] != '') {
+ let viewModeObject = tainacan_plugin.registered_view_modes[postQueries.view_mode];
+
+ if (isOnTheme && viewModeObject != undefined && viewModeObject.type == 'template') {
commit('setItemsListTemplate', items );
- dispatch('search/setTotalItems', res.headers['x-wp-total'], { root: true } );
resolve({'itemsListTemplate': items, 'total': res.headers['x-wp-total'], hasFiltered: hasFiltered});
} else {
commit('setItems', items );
- dispatch('search/setTotalItems', res.headers['x-wp-total'], { root: true } );
resolve({'items': items, 'total': res.headers['x-wp-total'], hasFiltered: hasFiltered});
}
+ dispatch('search/setTotalItems', res.headers['x-wp-total'], { root: true } );
})
.catch(error => reject(error));
});
diff --git a/src/js/store/modules/search/actions.js b/src/js/store/modules/search/actions.js
index 8ecbe3713..0fba89260 100644
--- a/src/js/store/modules/search/actions.js
+++ b/src/js/store/modules/search/actions.js
@@ -97,7 +97,7 @@ export const setSearchQuery = ({ commit }, searchQuery ) => {
commit('setSearchQuery', searchQuery );
};
-// Set ViewMode (format)
+// Set ViewMode (view_mode)
export const setViewMode = ({ commit }, viewMode ) => {
commit('setViewMode', viewMode );
};
\ No newline at end of file
diff --git a/src/js/store/modules/search/getters.js b/src/js/store/modules/search/getters.js
index 7ce5bab83..b65c1058b 100644
--- a/src/js/store/modules/search/getters.js
+++ b/src/js/store/modules/search/getters.js
@@ -45,7 +45,7 @@ export const getStatus = state => {
}
export const getViewMode = state => {
- return state.postquery.format;
+ return state.postquery.view_mode;
}
export const getFetchOnly = state => {
diff --git a/src/js/store/modules/search/index.js b/src/js/store/modules/search/index.js
index 45a3f5bd5..0b42bd391 100644
--- a/src/js/store/modules/search/index.js
+++ b/src/js/store/modules/search/index.js
@@ -19,7 +19,7 @@ const state = {
'1': 'creation_date',
'2': 'author_name'
},
- format: 'table'
+ view_mode: 'table'
},
totalItems: 0
};
diff --git a/src/js/store/modules/search/mutations.js b/src/js/store/modules/search/mutations.js
index a198e0171..1a4657cb1 100644
--- a/src/js/store/modules/search/mutations.js
+++ b/src/js/store/modules/search/mutations.js
@@ -115,5 +115,5 @@ export const setStatus = ( state, status ) => {
};
export const setViewMode = ( state, viewMode ) => {
- state.postquery.format = viewMode;
+ state.postquery.view_mode = viewMode;
};
\ No newline at end of file
diff --git a/src/theme-helper/class-tainacan-theme-helper.php b/src/theme-helper/class-tainacan-theme-helper.php
index 0307f8c26..76265cbdc 100644
--- a/src/theme-helper/class-tainacan-theme-helper.php
+++ b/src/theme-helper/class-tainacan-theme-helper.php
@@ -48,6 +48,13 @@ class Theme_Helper {
add_filter('get_the_archive_title', array($this, 'filter_archive_title'));
add_shortcode( 'tainacan-search', array($this, 'search_shortcode'));
+
+ $this->register_view_mode('table', [
+ 'label' => __('Table', 'tainacan'),
+ 'dynamic_metadata' => true,
+ 'icon' => '',
+ 'type' => 'component',
+ ]);
}
diff --git a/src/admin/components/lists/view-mode-table.vue b/src/theme-helper/table-view-mode.vue
similarity index 97%
rename from src/admin/components/lists/view-mode-table.vue
rename to src/theme-helper/table-view-mode.vue
index 45df8cdf5..7de8790f0 100644
--- a/src/admin/components/lists/view-mode-table.vue
+++ b/src/theme-helper/table-view-mode.vue
@@ -1,8 +1,7 @@
+
@@ -91,14 +89,14 @@
@@ -82,7 +81,6 @@
-