diff --git a/app/models/wiki_page.rb b/app/models/wiki_page.rb
index 30db2b13dc0c4f61f3d1388b1ab914a38ab0f2e9..425384d3df4c5cde13ab9fdded7d597c9d3aef3b 100644
--- a/app/models/wiki_page.rb
+++ b/app/models/wiki_page.rb
@@ -13,17 +13,14 @@ class WikiPage
   end
 
   def self.group_by_directory(pages)
-    directories = {}
+    return {} if pages.blank?
+    directories = { '/' => [] }
 
     pages.each do |page|
-      if page.slug.include?('/')
-        # Directory hierarchy is given by matching from the beginning up to
-        # the last forward slash.
-        directory = page.slug.match(/\A(.+)\//)[1]
-        directories[directory] = add_to_directory(directories[directory], page)
-      else
-        directories['root'] = add_to_directory(directories['root'], page)
-      end
+      directory = page.wiki.page_title_and_dir(page.slug).last
+      directory = '/' if directory.blank?
+      directories[directory] ||= []
+      directories[directory] << page
     end
 
     directories