Legoktm has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/400455 )
Change subject: Fix broken open search links
......................................................................
Fix broken open search links
We need to rewrite the URLs and names in open_search.xml, and since it's
a small XML file we might as well just replace it with our own entirely.
Each backend will have its own open_search.xml endpoint, with identical
<ShortName> but unique <Description>.
Bug: T183728
Change-Id: I1b84db58d0c28f5305ae0d376bef707a63ebf87b
---
M app.py
A templates/open_search.xml
2 files changed, 43 insertions(+), 7 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/labs/codesearch
refs/changes/55/400455/1
diff --git a/app.py b/app.py
index 029b9bd..3888262 100644
--- a/app.py
+++ b/app.py
@@ -18,9 +18,10 @@
"""
from flask import Flask, Response, request, redirect, url_for, \
- send_from_directory
+ send_from_directory, render_template
import os
+import re
import requests
import traceback
@@ -33,6 +34,15 @@
'things': 6083,
'core': 6084,
}
+DESCRIPTIONS = {
+ 'search': 'Everything',
+ 'core': 'MediaWiki core',
+ 'extensions': 'Extensions',
+ 'skins': 'Skins',
+ 'things': 'Extensions & skins',
+}
+
+LINK_OPENSEARCH = re.compile('<link rel="search" .*?/>', flags=re.DOTALL)
@app.route('/favicon.ico')
@@ -44,7 +54,8 @@
mimetype='image/vnd.microsoft.icon')
-def index_url(target, text, current):
+def index_url(target, current):
+ text = DESCRIPTIONS[target]
if target == current:
return '<b>%s</b>' % text
else:
@@ -74,11 +85,11 @@
{things}
</div>
""".format(
- search=index_url('search', 'Everything', backend),
- core=index_url('core', 'MediaWiki core', backend),
- ext=index_url('extensions', 'Extensions', backend),
- skins=index_url('skins', 'Skins', backend),
- things=index_url('things', 'Extensions & skins', backend)
+ search=index_url('search', backend),
+ core=index_url('core', backend),
+ ext=index_url('extensions', backend),
+ skins=index_url('skins', backend),
+ things=index_url('things', backend)
)
title = '<title>MediaWiki code search</title>'
@@ -92,14 +103,29 @@
</p>
"""
+ opensearch_link = """
+<link rel="search" href="%s"
+ type="application/opensearchdescription+xml"
+ title="MediaWiki code search" />
+""" % url_for('opensearch', backend=backend, description=DESCRIPTIONS[backend])
+
def mangle(text):
text = text.replace('<body>', '<body>' + header)
text = text.replace('</body>', footer + '</body>')
text = text.replace('<title>Hound</title>', title)
+ text = LINK_OPENSEARCH.sub(opensearch_link, text)
return text
return proxy(backend, mangle=mangle)
[email protected]('/<backend>/open_search.xml')
+def opensearch(backend):
+ if backend not in BACKENDS:
+ return 'invalid backend'
+ temp = render_template('open_search.xml', backend=backend)
+ return Response(temp, content_type='text/xml')
+
+
@app.route('/<backend>/<path:path>')
def proxy(backend, path='', mangle=False):
if backend not in BACKENDS:
diff --git a/templates/open_search.xml b/templates/open_search.xml
new file mode 100644
index 0000000..b8b16e8
--- /dev/null
+++ b/templates/open_search.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
+ <ShortName>MediaWiki code search</ShortName>
+ <Description>Search MediaWiki code ({{description}})</Description>
+ <Tags>mediawiki</Tags>
+ <Url type="text/html"
+ method="get"
+ template="https://codesearch.wmflabs.org/{{ backend
}}/?q={searchTerms}" />
+</OpenSearchDescription>
--
To view, visit https://gerrit.wikimedia.org/r/400455
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I1b84db58d0c28f5305ae0d376bef707a63ebf87b
Gerrit-PatchSet: 1
Gerrit-Project: labs/codesearch
Gerrit-Branch: master
Gerrit-Owner: Legoktm <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits