Fix #22 and #24: Escape slashes in tags in URLs
[grauphel.git] / controller / guicontroller.php
index 15380c7..d48296d 100644 (file)
@@ -130,6 +130,9 @@ class GuiController extends Controller
                             'guid' => $guid, 'username' => $this->user->getUid()
                         )
                     ),
+                    'text' => $this->urlGen->linkToRoute(
+                        'grauphel.notes.text', array('guid' => $guid)
+                    ),
                     'xml' => $this->urlGen->linkToRoute(
                         'grauphel.notes.xml', array('guid' => $guid)
                     ),
@@ -165,6 +168,7 @@ class GuiController extends Controller
      */
     public function tag($rawtag)
     {
+        $rawtag = $this->unescapeTagFromUrl($rawtag);
         $notes = $this->getNotes()->loadNotesOverview(null, $rawtag, true);
         usort(
             $notes,
@@ -285,7 +289,8 @@ class GuiController extends Controller
                     'name' => $name,
                     'id'   => $rawtag,
                     'href' => $this->urlGen->linkToRoute(
-                        'grauphel.gui.tag', array('rawtag' => $rawtag)
+                        'grauphel.gui.tag',
+                        array('rawtag' => $this->escapeTagForUrl($rawtag))
                     ),
                     'selected' => $rawtag == $selectedRawtag,
                 );
@@ -349,5 +354,15 @@ class GuiController extends Controller
         }
         return false;
     }
+
+    protected function escapeTagForUrl($rawtag)
+    {
+        return str_replace('/', '%2F', $rawtag);
+    }
+
+    protected function unescapeTagFromUrl($rawtag)
+    {
+        return str_replace('%2F', '/', $rawtag);
+    }
 }
 ?>