Pārlūkot izejas kodu

:recycle: extend sort by subtype to blog posts

tags/0.9.0
J 4 gadus atpakaļ
vecāks
revīzija
3515134b12

+ 11
- 18
vue-theme/functions.php Parādīt failu

@@ -88,25 +88,18 @@ add_action( 'wp_enqueue_scripts', 'vue_theme_scripts' );
88 88
  * disable endpoints in rest api
89 89
  **/
90 90
 add_filter( 'rest_endpoints', function ( $endpoints ) {
91
-    if ( isset( $endpoints['/wp/v2/users'] ) ) {
92
-        unset( $endpoints['/wp/v2/users'] );
93
-    }
94
-    if ( isset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] ) ) {
95
-        unset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] );
96
-    }
97
-
98
-    if ( isset( $endpoints['/wp/v2/comments'] ) ) {
99
-        unset( $endpoints['/wp/v2/comments'] );
100
-    }
101
-    if ( isset( $endpoints['/wp/v2/comments/(?P<id>[\d]+)'] ) ) {
102
-        unset( $endpoints['/wp/v2/comments/(?P<id>[\d]+)'] );
103
-    }
104
-
105
-    if ( isset( $endpoints['/wp/v2/settings'] ) ) {
106
-        unset( $endpoints['/wp/v2/settings'] );
107
-    }
91
+    $remove = [
92
+        'users',
93
+        'users/(?P<id>[\d]+)',
94
+        'comments',
95
+        'comments/(?P<id>[\d]+)',
96
+        'settings',
97
+    ];
98
+    foreach( $remove as $endpoint )
99
+        if ( isset( $endpoints['/wp/v2/' . $endpoint] ) )
100
+            unset( $endpoints['/wp/v2/' . $endpoint] );
108 101
     return $endpoints;
109
-    } );
102
+} );
110 103
 
111 104
 // Remove wordpress version number from files
112 105
 remove_action( 'wp_head', 'wp_generator' );

+ 9
- 42
vue-theme/src/components/sidebars/sidebar.vue Parādīt failu

@@ -1,49 +1,21 @@
1 1
 <template lang="pug">
2 2
 aside.sidebar
3 3
     section
4
-        //- if not single layout Artist sorting
5
-        .shadow(v-if="type === 'artist' && layout !== 'single'")
6
-            h3.t-up sort {{ type }} by
7
-            ul.t-up
8
-                li(v-for="option in sortOptions")
9
-                    router-link(:to="`/${type}/sorted/${sortTypes[option]}`")
10
-                        p {{ option }}
11
-
12
-        
13
-        //- type specific sidebar
14
-        .shadow(v-else)
15
-            h3.t-up.t-b {{ type }} specific sidebar more
16
-
17
-        //- if not single layout Exhibitions sorting
18
-        .shadow(v-if="type === 'exhibition' && layout !== 'single'")
4
+        //- if not single layout with sorting
5
+        .shadow(v-if="['artist', 'exhibition', 'event', 'post'].includes(type) && layout !== 'single'")
19 6
             h3.t-up sort {{ type }} by
20 7
             ul.t-up
21 8
                 li(v-for="option in sortOptions")
22 9
                     router-link(:to="`/${type}/sorted/${sortTypes[option]}`")
23 10
                         p {{ option }}
24 11
                 //- temporary reminder
25
-                p 
26
-                    router-link(:to="`/exhibition/sorted/by-date`")
27
-                        p by all
28
-                p 
29
-                    router-link(:to="`/exhibition/sorted/by-current-and-upcoming`")
30
-                        p by current and upcoming
31
-
32
-        //- if not single layout Events sorting
33
-        .shadow(v-if="type === 'event' && layout === 'list'")
34
-            h3.t-up sort {{ type }} by
35
-            ul.t-up
36
-                li(v-for="option in sortOptions")
37
-                    router-link(:to="`/${type}/sorted/${sortTypes[option]}`")
38
-                        p {{ option }}
39
-                //- temporary reminder
40
-                p 
41
-                    router-link(:to="`/event/sorted/by-date`")
42
-                        p by all
43
-                p 
44
-                    router-link(:to="`/event/sorted/by-current-and-upcoming`")
45
-                        p by current and upcoming
46
-            
12
+                template(v-if="['exhibition', 'event'].includes(type) && layout === 'list'")
13
+                    p 
14
+                        router-link(:to="`/${type}/sorted/by-date`")
15
+                            p by all
16
+                    p 
17
+                        router-link(:to="`/${type}/sorted/by-current-and-upcoming`")
18
+                            p by current and upcoming
47 19
 
48 20
         //- p2p types and related posts
49 21
         .shadow(v-if="layout === 'single' && Object.keys(related).length" v-for="p2pPostType in Object.keys(related)")
@@ -60,11 +32,6 @@ aside.sidebar
60 32
             exhibitions-sidebar
61 33
         //- single layout Post sidebar
62 34
         .shadow(v-if="type === 'post'")
63
-            h3.t-up sort {{ type }} by
64
-                ul.t-up
65
-                    li(v-for="option in sortOptions")
66
-                        router-link(:to="`/${type}/sorted/${sortTypes[option]}`")
67
-                            p {{ option }}
68 35
             exhibitions-sidebar
69 36
             br
70 37
             events-sidebar

+ 0
- 1
vue-theme/src/store/modules/artist.js Parādīt failu

@@ -51,7 +51,6 @@ const _arrangeByType = artistsList => {
51 51
         flatPacked.push({ slug: type, title: type, inbetween: true })
52 52
         byType[type].forEach(artist => flatPacked.push(artist))
53 53
     })
54
-    console.log('flatPacked :', flatPacked)
55 54
     return flatPacked
56 55
 }
57 56
 

+ 23
- 1
vue-theme/src/store/modules/post.js Parādīt failu

@@ -1,4 +1,5 @@
1 1
 import api from '../../utils/api'
2
+import { sortTypes } from '../../utils/helpers'
2 3
 
3 4
 const state = {
4 5
     all: [],
@@ -11,12 +12,33 @@ const getters = {
11 12
     allPostsLoaded: state => state.loaded,
12 13
 }
13 14
 
15
+const _arrangeByType = postsList => {
16
+    const byType = {}
17
+    postsList.forEach(post => {
18
+        const subtypes = post.categories
19
+        subtypes.forEach(type => {
20
+            if(!byType[type]) byType[type] = []
21
+            byType[type].push(post)
22
+        })
23
+    })
24
+    const flatPacked = []
25
+    Object.keys(byType).forEach(type => {
26
+        flatPacked.push({ slug: type, title: type, inbetween: true })
27
+        byType[type].forEach(post => flatPacked.push(post))
28
+    })
29
+    return flatPacked
30
+}
31
+
14 32
 const actions = {
15 33
     getAllPosts({ commit }, { sortType, params }) {
16 34
         commit('CLEAR_POSTS')
17 35
         commit('POSTS_LOADED', false)
18 36
         const storeFetch = (posts => {
19
-            commit('STORE_FETCHED_POSTS', { posts })
37
+            let repacked = posts
38
+            if(sortType == sortTypes.subtype) {
39
+                repacked = _arrangeByType(posts)
40
+            }
41
+            commit('STORE_FETCHED_POSTS', { posts: repacked })
20 42
             commit('POSTS_LOADED', true)
21 43
         }) 
22 44
         return api.getByType({ type: 'post', sort: sortType, params, cb: storeFetch })

Notiek ielāde…
Atcelt
Saglabāt