changeset 299:794dfdb722e7

Use more proper URLs for non-default endpoints. Make the `templates:` endpoint not a search/query endpoint.
author Ludovic Chabant <ludovic@chabant.com>
date Mon, 29 Sep 2014 00:10:45 -0700
parents 8bf279b1e8f8
children 62d54e55208a
files wikked/assets/js/wikked/handlebars.js wikked/assets/tpl/read-page.html wikked/resources/defaults.cfg wikked/views/__init__.py wikked/views/edit.py wikked/views/read.py
diffstat 6 files changed, 24 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/wikked/assets/js/wikked/handlebars.js	Mon Sep 29 00:09:22 2014 -0700
+++ b/wikked/assets/js/wikked/handlebars.js	Mon Sep 29 00:10:45 2014 -0700
@@ -107,7 +107,7 @@
     });
     Handlebars.registerHelper('get_cat_url', function(url, options) {
         url = url.toString();
-        return '/#/read/category:' + url.replace(/^\//, '');
+        return '/#/read/' + url.replace(/^\//, '');
     });
 });
 
--- a/wikked/assets/tpl/read-page.html	Mon Sep 29 00:09:22 2014 -0700
+++ b/wikked/assets/tpl/read-page.html	Mon Sep 29 00:10:45 2014 -0700
@@ -2,8 +2,8 @@
     {{#ifnot meta.notitle}}
     <header>
         <h1>{{meta.title}}</h1>
-        {{#if meta_query}}
-        <div class="decorator">{{meta_query}}</div>
+        {{#if endpoint}}
+        <div class="decorator">{{endpoint}}</div>
         {{/if}}
         {{#if redirected_from}}
         <div class="decorator"><small>Redirected from 
--- a/wikked/resources/defaults.cfg	Mon Sep 29 00:09:22 2014 -0700
+++ b/wikked/resources/defaults.cfg	Mon Sep 29 00:10:45 2014 -0700
@@ -11,6 +11,9 @@
 [endpoint:special]
 query=False
 
+[endpoint:templates]
+query=False
+
 [endpoint:user]
 query=False
 default=special:User
--- a/wikked/views/__init__.py	Mon Sep 29 00:09:22 2014 -0700
+++ b/wikked/views/__init__.py	Mon Sep 29 00:10:45 2014 -0700
@@ -15,18 +15,18 @@
 
 
 def url_from_viewarg(url):
-    url = urllib.unquote(url)
-    endpoint, path = split_page_url(url)
+    endpoint, path = split_url_from_viewarg(url)
     if endpoint:
-        return u'%s:/%s' % (endpoint, path)
-    return u'/' + path
+        return u'%s:%s' % (endpoint, path)
+    return path
 
 
 def split_url_from_viewarg(url):
     url = urllib.unquote(url)
     endpoint, path = split_page_url(url)
-    value = string.rsplit(path, '/', 1)[-1]
-    return (endpoint, value, u'/' + path)
+    if endpoint:
+        return (endpoint, path)
+    return (None, u'/' + path)
 
 
 def make_page_title(url):
@@ -100,7 +100,7 @@
     result = []
     for item in category:
         result.append({
-            'url': urllib.quote(item.encode('utf-8')),
+            'url': u'category:/' + urllib.quote(item.encode('utf-8')),
             'name': item
             })
     return result
--- a/wikked/views/edit.py	Mon Sep 29 00:09:22 2014 -0700
+++ b/wikked/views/edit.py	Mon Sep 29 00:10:45 2014 -0700
@@ -98,7 +98,7 @@
 
 @app.route('/api/edit/<path:url>', methods=['GET', 'POST'])
 def api_edit_page(url):
-    endpoint, value, path = split_url_from_viewarg(url)
+    endpoint, path = split_url_from_viewarg(url)
 
     if request.method == 'GET':
         url = path
@@ -106,10 +106,10 @@
         custom_data = None
         if endpoint is not None:
             url = u'%s:%s' % (endpoint, path)
-            default_title = u'%s: %s' % (endpoint, value)
+            default_title = u'%s: %s' % (endpoint, path)
             custom_data = {
                     'meta_query': endpoint,
-                    'meta_value': value
+                    'meta_value': path.lstrip('/')
                     }
 
         return get_edit_page(
@@ -121,7 +121,7 @@
     default_message = u'Edited ' + url
     if endpoint is not None:
         url = u'%s:%s' % (endpoint, path)
-        default_message = u'Edited %s %s' % (endpoint, value)
+        default_message = u'Edited %s %s' % (endpoint, path.lstrip('/'))
     return do_edit_page(url, default_message)
 
 
--- a/wikked/views/read.py	Mon Sep 29 00:09:22 2014 -0700
+++ b/wikked/views/read.py	Mon Sep 29 00:10:45 2014 -0700
@@ -70,7 +70,7 @@
 
     no_redirect = ('no_redirect' in request.args)
 
-    endpoint, value, path = split_url_from_viewarg(url)
+    endpoint, path = split_url_from_viewarg(url)
     if endpoint is None:
         # Normal page.
         visited_paths = []
@@ -121,11 +121,15 @@
         if not endpoint_info.query:
             # Not a query-based endpoint (like categories). Let's just
             # return the text.
-            result = {'meta': get_page_meta(info_page), 'text': info_page.text}
+            result = {
+                    'endpoint': endpoint,
+                    'meta': get_page_meta(info_page),
+                    'text': info_page.text}
             result.update(additional_info)
             return jsonify(result)
 
     # Get the list of pages to show here.
+    value = path.lstrip('/')
     query = {endpoint: [value]}
     pages = g.wiki.getPages(meta_query=query,
             fields=['url', 'title', 'text', 'meta'])
@@ -143,6 +147,7 @@
     # under either a default text, or the text from the meta page.
     text = render_template('meta_page.html', **tpl_data)
     result = {
+            'endpoint': endpoint,
             'meta_query': endpoint,
             'meta_value': value,
             'query': query,