diff options
-rw-r--r-- | askbot/skins/default/media/js/live_search.js | 21 | ||||
-rw-r--r-- | askbot/skins/default/media/js/utils.js | 25 | ||||
-rw-r--r-- | askbot/skins/default/templates/blocks/header.html | 2 | ||||
-rw-r--r-- | askbot/skins/default/templates/blocks/input_bar.html | 6 | ||||
-rw-r--r-- | askbot/skins/default/templates/blocks/paginator.html | 2 | ||||
-rw-r--r-- | askbot/skins/default/templates/macros.html | 18 | ||||
-rw-r--r-- | askbot/skins/default/templates/main_page/headline.html | 8 | ||||
-rw-r--r-- | askbot/skins/default/templates/main_page/javascript.html | 18 | ||||
-rw-r--r-- | askbot/skins/default/templates/main_page/nothing_found.html | 8 | ||||
-rw-r--r-- | askbot/skins/default/templates/main_page/paginator.html | 2 | ||||
-rw-r--r-- | askbot/skins/default/templates/question.html | 5 | ||||
-rw-r--r-- | askbot/skins/default/templates/tags.html | 2 | ||||
-rw-r--r-- | askbot/skins/default/templates/user_profile/user_stats.html | 3 | ||||
-rw-r--r-- | askbot/skins/default/templates/user_profile/users_questions.html | 2 | ||||
-rw-r--r-- | askbot/urls.py | 29 | ||||
-rw-r--r-- | askbot/views/readers.py | 4 |
16 files changed, 109 insertions, 46 deletions
diff --git a/askbot/skins/default/media/js/live_search.js b/askbot/skins/default/media/js/live_search.js index 392320a0..919722dd 100644 --- a/askbot/skins/default/media/js/live_search.js +++ b/askbot/skins/default/media/js/live_search.js @@ -373,8 +373,7 @@ var liveSearch = function(){ var remove_search_tag = function(tag_name){ $.ajax({ - url: askbot['urls']['questions'], - data: {remove_tag: tag_name}, + url: askbot['urls']['questions']+'remove_tag:'+escape(tag_name)+'/', dataType: 'json', success: render_result, complete: try_again @@ -444,7 +443,7 @@ var liveSearch = function(){ render_faces(data['faces']); render_related_tags(data['related_tags'], data['query_string']); render_relevance_sort_tab(data['query_string']); - set_active_sort_tab(sortMethod, query_string); + set_active_sort_tab(sortMethod, data['query_string']); query.focus(); //show new div with a fadeIn effect @@ -465,7 +464,7 @@ var liveSearch = function(){ var post_data = {query: query_text}; $.ajax({ url: search_url, - data: {query: query_text, sort: sort_method}, + //data: {query: query_text, sort: sort_method}, dataType: 'json', success: render_result, complete: try_again @@ -498,7 +497,7 @@ var liveSearch = function(){ query = $('input#keywords'); refresh_main_page(); }, - init: function(mode){ + init: function(mode, query_string){ if (mode === 'main_page'){ //live search for the main page query = $('input#keywords'); @@ -512,6 +511,18 @@ var liveSearch = function(){ sortMethod = 'relevance-desc'; } } + params = query_string.split('/') + for (var i = 0; i < params.length; i++){ + if (params[i] !== ''){ + if (params[i].substring(0, 5) == "sort:"){ //change the sort method + search_url += 'sort:'+sortMethod+'/' + search_url += 'query:'+ cur_text.split(' ').join('+') + '/' //we add the query here + } + else{ + search_url += params[i] + '/'; + } + } + } send_query(cur_text, sortMethod); }; restart_query = function() { diff --git a/askbot/skins/default/media/js/utils.js b/askbot/skins/default/media/js/utils.js index c79d739f..764d6770 100644 --- a/askbot/skins/default/media/js/utils.js +++ b/askbot/skins/default/media/js/utils.js @@ -357,19 +357,30 @@ Tag.prototype.createDom = function(){ if (this.isLinkable()){ var url = askbot['urls']['questions']; if (this._url_params !== null){ - params = this._url_params.split('&') - tag_p = 'tags=' + escape(this.getName()); + params = this._url_params.split('/') for (var i = 0; i < params.length; i++){ - if (params[i] !== tag_p){ - url += params[i] + '&'; + if (params[i] !== ''){ + if (params[i].substring(0, 5) == "tags:"){ + tags = params[i].substr(5).split('+'); + new_tags = '' + for(var j = 0; j < tags.length; j++){ + if(tags[j] !== this.getName()){ + new_tags += tags[j] + '+'; + } + } + new_tags += escape(this.getName()) + url += 'tags:'+new_tags+'/' + } + else{ + url += params[i] + '/'; + } } } - //url += params + '&'; } else{ - url += '?' + url += 'tags:' + escape(this.getName()) + '/'; } - url += 'tags=' + escape(this.getName()); + this._inner_element.attr('href', url); } diff --git a/askbot/skins/default/templates/blocks/header.html b/askbot/skins/default/templates/blocks/header.html index d7359007..f480d3c7 100644 --- a/askbot/skins/default/templates/blocks/header.html +++ b/askbot/skins/default/templates/blocks/header.html @@ -3,7 +3,7 @@ <div id="ab-header"> <div class="content-wrapper"> {% if settings.SHOW_LOGO %} - <a id="ab-logo" href="{% url questions %}?start_over=true"><img + <a id="ab-logo" href="{% url questions %}start_over:true/"><img src="{{ settings.SITE_LOGO_URL|media }}" title="{% trans %}back to home page{% endtrans %}" alt="{% trans site=settings.APP_SHORT_NAME %}{{site}} logo{% endtrans %}"/></a> diff --git a/askbot/skins/default/templates/blocks/input_bar.html b/askbot/skins/default/templates/blocks/input_bar.html index bed97eb4..58849ca5 100644 --- a/askbot/skins/default/templates/blocks/input_bar.html +++ b/askbot/skins/default/templates/blocks/input_bar.html @@ -8,7 +8,7 @@ {% elif active_tab == "users" %} action="{% url users %}" {% else %} - action="{% url questions %}" + action="{% url questions %}" id="searchForm" {% endif %} method="get"> {# class was searchInput #} @@ -28,10 +28,10 @@ value="x" name="reset_query" {# todo - make sure it works on Enter keypress #} - onclick="window.location.href='{% url questions %}?reset_query=true'" + onclick="window.location.href='{% url questions %}reset_query:true/'" class="cancelSearchBtn"/> {% endif %} - <input type="submit" value="{% trans %}search{% endtrans %}" name="search" class="searchBtn" /> + <input type="submit" value="{% trans %}search{% endtrans %}" name="search" class="searchBtn" id='searchButton'/> {% if active_tab == "tags" %} <input type="hidden" name="t" value="tag"/> {% else %} diff --git a/askbot/skins/default/templates/blocks/paginator.html b/askbot/skins/default/templates/blocks/paginator.html index 9782407f..cef84f12 100644 --- a/askbot/skins/default/templates/blocks/paginator.html +++ b/askbot/skins/default/templates/blocks/paginator.html @@ -1,4 +1,4 @@ <!-- paginator.html --> {% import "macros.html" as macros %} -{{ macros.paginator(paginator_context)}} +{{ macros.paginator(paginator_context, active_tab = active_tab)}} <!-- end paginator.html --> diff --git a/askbot/skins/default/templates/macros.html b/askbot/skins/default/templates/macros.html index 432e6c4c..fd1bcf57 100644 --- a/askbot/skins/default/templates/macros.html +++ b/askbot/skins/default/templates/macros.html @@ -136,17 +136,17 @@ </div> {%- endmacro -%} -{%- macro paginator(p, position='left') -%}{# p is paginator context dictionary #} +{%- macro paginator(p, position='left', active_tab='') -%}{# p is paginator context dictionary #} {% spaceless %} {% if p.is_paginated %} <div class="paginator" style="float:{{position}}"> {% if p.has_previous %} - <span class="prev"><a href="{{p.base_url}}page={{ p.previous }}{{ p.extend_url }}" title="{% trans %}previous{% endtrans %}"> + <span class="prev"><a href="{% if active_tab == "questions" %}{% url questions%}{% endif %}{{p.base_url}}page{% if active_tab == "questions" %}:{%else%}={%endif%}{{ p.previous }}/{{ p.extend_url }}" title="{% trans %}previous{% endtrans %}"> « {% trans %}previous{% endtrans %}</a></span> {% endif %} {% if not p.in_leading_range %} {% for num in p.pages_outside_trailing_range %} - <span class="page"><a href="{{p.base_url}}page={{ num }}{{ p.extend_url }}" >{{ num }}</a></span> + <span class="page"><a href="{% if active_tab == "questions" %}{% url questions%}{% endif %}{{p.base_url}}page{% if active_tab == "questions" %}:{%else%}={%endif%}{{ num }}/{{ p.extend_url }}" >{{ num }}</a></span> {% endfor %} ... {% endif %} @@ -155,18 +155,18 @@ {% if num == p.page and p.pages != 1%} <span class="curr" title="{% trans %}current page{% endtrans %}">{{ num }}</span> {% else %} - <span class="page"><a href="{{p.base_url}}page={{ num }}{{ p.extend_url }}" title="{% trans %}page number {{num}}{% endtrans %}">{{ num }}</a></span> + <span class="page"><a href="{% if active_tab == "questions" %}{% url questions%}{% endif %}{{p.base_url}}page{% if active_tab == "questions" %}:{%else%}={%endif%}{{ num }}/{{ p.extend_url }}" title="{% trans %}page number {{num}}{% endtrans %}">{{ num }}</a></span> {% endif %} {% endfor %} {% if not p.in_trailing_range %} ... {% for num in p.pages_outside_leading_range|reverse %} - <span class="page"><a href="{{p.base_url}}page={{ num }}{{ p.extend_url }}" title="{% trans %}page number {{ num }}{% endtrans %}">{{ num }}</a></span> + <span class="page"><a href="{% if active_tab == "questions" %}{% url questions%}{% endif %}{{p.base_url}}page{% if active_tab == "questions" %}:{%else%}={%endif%}{{ num }}/{{ p.extend_url }}" title="{% trans %}page number {{ num }}{% endtrans %}">{{ num }}</a></span> {% endfor %} {% endif %} {% if p.has_next %} - <span class="next"><a href="{{p.base_url}}page={{ p.next }}{{ p.extend_url }}" title="{% trans %}next page{% endtrans %}">{% trans %}next page{% endtrans %} »</a></span> + <span class="next"><a href="{% if active_tab == "questions" %}{% url questions%}{% endif %}{{p.base_url}}page{% if active_tab == "questions" %}:{%else%}={%endif%}{{ p.next }}/{{ p.extend_url }}" title="{% trans %}next page{% endtrans %}">{% trans %}next page{% endtrans %} »</a></span> {% endif %} </div> {% endif %} @@ -181,19 +181,19 @@ {% if p.page_size == 10 %} <span class="curr">10</span> {% else %} - <span class="page"><a href="{{p.base_url}}page_size=10">10</a></span> + <span class="page"><a href="{% url questions %}{{p.base_url}}page_size:10/">10</a></span> {% endif %} {% if p.page_size == 30 %} <span class="curr">30</span> {% else %} - <span class="page"><a href="{{p.base_url}}page_size=30">30</a></span> + <span class="page"><a href="{% url questions %}{{p.base_url}}page_size:30/">30</a></span> {% endif %} {% if p.page_size == 50 %} <span class="curr">50</span> {% else %} - <span class="page"><a href="{{p.base_url}}page_size=50">50</a></span> + <span class="page"><a href="{% url questions %}{{p.base_url}}page_size:50/">50</a></span> {% endif %} </div> {% endif %} diff --git a/askbot/skins/default/templates/main_page/headline.html b/askbot/skins/default/templates/main_page/headline.html index 130a9bd9..4b92ba35 100644 --- a/askbot/skins/default/templates/main_page/headline.html +++ b/askbot/skins/default/templates/main_page/headline.html @@ -28,16 +28,16 @@ <p class="search-tips">{% trans %}Search tips:{% endtrans %} {% if reset_method_count > 1 %} {% if author_name %} - <a href="{% url questions %}?reset_author=true">{% trans %}reset author{% endtrans %}</a> + <a href="{% url questions %}reset_author:true/">{% trans %}reset author{% endtrans %}</a> {% endif %} {% if search_tags %}{% if author_name and query %}, {% elif author_name %}{% trans %} or {% endtrans %}{% endif %} - <a href="{% url questions %}?reset_tags=true">{% trans %}reset tags{% endtrans %}</a> + <a href="{% url questions %}reset_tags:true/">{% trans %}reset tags{% endtrans %}</a> {% endif %} {% if query %}{% trans %} or {% endtrans %} - <a href="{% url questions %}?start_over=true">{% trans %}start over{% endtrans %}</a> + <a href="{% url questions %}start_over:true/">{% trans %}start over{% endtrans %}</a> {% endif %} {% else %} - <a href="{% url questions %}?start_over=true">{% trans %}start over{% endtrans %}</a> + <a href="{% url questions %}start_over:true/">{% trans %}start over{% endtrans %}</a> {% endif %} {% trans %} - to expand, or dig in by adding more tags and revising the query.{% endtrans %} </p> diff --git a/askbot/skins/default/templates/main_page/javascript.html b/askbot/skins/default/templates/main_page/javascript.html index deef318c..2232164e 100644 --- a/askbot/skins/default/templates/main_page/javascript.html +++ b/askbot/skins/default/templates/main_page/javascript.html @@ -5,7 +5,7 @@ $(document).ready(function(){ /*var on_tab = '#nav_questions'; $(on_tab).attr('className','on');*/ - liveSearch().init('main_page'); + liveSearch().init('main_page', '{{query_string}}'); Hilite.exact = false; Hilite.elementid = "question-list"; Hilite.debug_referrer = location.href; @@ -43,3 +43,19 @@ <script type='text/javascript' src='{{"/js/tag_selector.js"|media}}'></script> {% endif %} <script type="text/javascript" src="{{"/js/live_search.js"|media}}"></script> +{% if active_tab != "tags" and active_tab != "users" %} +<script> +$("form#searchForm").submit(function(event) { + event.preventDefault(); + form_action = $("form#searchForm").attr('action') + query = $("input#keywords").attr('value').split(' ').join('+') + $("input#keywords").attr('value', '') + $("input#searchButton").attr('value', '') + form_action += 'section:{{parameters.scope}}/sort:{{parameters.sort}}/' + + 'query:' + query + '/search:search/' + + '{% if parameters.tags %}tags:{{parameters.tags}}/{% endif %}' + + '{% if parameters.author %}author:{{parameters.author}}/{% endif %}' + window.location.href = form_action; +}); +</script> +{% endif %} diff --git a/askbot/skins/default/templates/main_page/nothing_found.html b/askbot/skins/default/templates/main_page/nothing_found.html index 50f2f340..1f590709 100644 --- a/askbot/skins/default/templates/main_page/nothing_found.html +++ b/askbot/skins/default/templates/main_page/nothing_found.html @@ -13,16 +13,16 @@ {% trans %}You can expand your search by {% endtrans %} {% if reset_method_count > 1 %} {% if author_name %} - <a href="{% url questions %}?reset_author=true">{% trans %}resetting author{% endtrans %}</a> + <a href="{% url questions %}reset_author:true/">{% trans %}resetting author{% endtrans %}</a> {% endif %} {% if search_tags %}{% if author_name and query %}, {% elif author_name %}{% trans %} or {% endtrans %}{% endif %} - <a href="{% url questions %}?reset_tags=true">{% trans %}resetting tags{% endtrans %}</a> + <a href="{% url questions %}reset_tags:true/">{% trans %}resetting tags{% endtrans %}</a> {% endif %} {% if query %}{% trans %} or {% endtrans %} - <a href="{% url questions %}?start_over=true">{% trans %}starting over{% endtrans %}</a> + <a href="{% url questions %}start_over:true/">{% trans %}starting over{% endtrans %}</a> {% endif %} {% else %} - <a href="{% url questions %}?start_over=true">{% trans %}starting over{% endtrans %}</a> + <a href="{% url questions %}start_over:true/">{% trans %}starting over{% endtrans %}</a> {% endif %} </p> {% endif %} diff --git a/askbot/skins/default/templates/main_page/paginator.html b/askbot/skins/default/templates/main_page/paginator.html index cf45cc0c..dd52e019 100644 --- a/askbot/skins/default/templates/main_page/paginator.html +++ b/askbot/skins/default/templates/main_page/paginator.html @@ -1,7 +1,7 @@ {% import "macros.html" as macros %} {% if questions_count > page_size %}{# todo: remove magic number #} <div id="pager" class="pager"> - {{ macros.paginator(context|setup_paginator, position='left') }} + {{ macros.paginator(context|setup_paginator, position='left', active_tab=active_tab) }} {{ macros.pagesize_switch(context, position='right') }} </div> {% endif %} diff --git a/askbot/skins/default/templates/question.html b/askbot/skins/default/templates/question.html index 282b47b4..f46faa2f 100644 --- a/askbot/skins/default/templates/question.html +++ b/askbot/skins/default/templates/question.html @@ -68,7 +68,8 @@ {{ macros.tag_widget( tag, css_class = 'post-tag', - html_tag = 'li' + html_tag = 'li', + url_params = 'start_over:true', ) }} {% endfor %} @@ -443,7 +444,7 @@ {{ macros.tag_widget( tag, html_tag = 'div', - url_params = 'start_over=true', + url_params = 'start_over:true', extra_content = '<span class="tag-number">× ' ~ tag.used_count|intcomma ~ '</span>' ) diff --git a/askbot/skins/default/templates/tags.html b/askbot/skins/default/templates/tags.html index 7d9026af..19383bb8 100644 --- a/askbot/skins/default/templates/tags.html +++ b/askbot/skins/default/templates/tags.html @@ -37,7 +37,7 @@ <li> {{ macros.tag_widget( tag = tag.name, - url_params = 'start_over=true', + url_params = 'start_over:true', html_tag = 'div', extra_content = '<span class="tag-number">× ' ~ tag.used_count|intcomma ~ '</span>' diff --git a/askbot/skins/default/templates/user_profile/user_stats.html b/askbot/skins/default/templates/user_profile/user_stats.html index d9002d30..6e882199 100644 --- a/askbot/skins/default/templates/user_profile/user_stats.html +++ b/askbot/skins/default/templates/user_profile/user_stats.html @@ -73,8 +73,7 @@ tag.name, html_tag = 'div', url_params = - "author=" ~ view_user.id ~ - "&start_over=true", + "/start_over:true/author:" ~ view_user.id, extra_content = '<span class="tag-number">× ' ~ tag.user_tag_usage_count|intcomma ~ diff --git a/askbot/skins/default/templates/user_profile/users_questions.html b/askbot/skins/default/templates/user_profile/users_questions.html index 41809a62..fc7bda60 100644 --- a/askbot/skins/default/templates/user_profile/users_questions.html +++ b/askbot/skins/default/templates/user_profile/users_questions.html @@ -2,7 +2,7 @@ {% import "macros.html" as macros %} <div class="user-stats-table"> {% for question in questions %} - {{macros.question_summary(question, extra_class='narrow')}} + {{macros.question_summary(question, extra_class='narrow', query_string="start_over:true/")}} {% endfor %} </div> <!-- end users_questions.html --> diff --git a/askbot/urls.py b/askbot/urls.py index 60a955f7..0cf36412 100644 --- a/askbot/urls.py +++ b/askbot/urls.py @@ -65,7 +65,7 @@ urlpatterns = patterns('', name='answer_revisions' ), url(#this url works both normally and through ajax - r'^%s/section:(?P<scope>\w+)/sort:(?P<sort>[\w\-]+)/tags:(?P<tags>[\w\-\+]+)/$' % _('questions'), + r'^%s/section:(?P<scope>\w+)/sort:(?P<sort>[\w\-]+)/tags:(?P<tags>[\w\d\-\+\#]+)/$' % _('questions'), views.readers.questions, name='questions' ), @@ -74,7 +74,32 @@ urlpatterns = patterns('', views.readers.questions, name='questions' ), - url(#this url works both normally and through ajax + url( + r'^%s/remove_tag:(?P<remove_tag>[\w\d\-\#]+)/$' % _('questions'), + views.readers.questions, + name='questions' + ), + url( + r'^%s/reset_tags:(?P<reset_tags>\w+)/$' % _('questions'), + views.readers.questions, + name='questions' + ), + url( + r'^%s/reset_author:(?P<reset_author>\w+)/$' % _('questions'), + views.readers.questions, + name='questions' + ), + url( + r'^%s/reset_query:(?P<reset_query>\w+)/$' % _('questions'), + views.readers.questions, + name='questions' + ), + url( + r'^%s/start_over:(?P<start_over>\w+)/$' % _('questions'), #Nota: hay start over con mas parametros + views.readers.questions, + name='questions' + ), + url( r'^%s$' % _('questions/'), views.readers.questions, name='questions' diff --git a/askbot/views/readers.py b/askbot/views/readers.py index c5a289ed..3163ce61 100644 --- a/askbot/views/readers.py +++ b/askbot/views/readers.py @@ -94,7 +94,7 @@ def questions(request, scope=const.DEFAULT_POST_SCOPE, sort=const.DEFAULT_POST_S if start_over: params_dict['start_over'] = start_over if remove_tag: - params_dict['remove_tag'] = remove_tag + params_dict['remove_tag'] = remove_tag.decode("utf8") if page_size: params_dict['page_size'] = page_size @@ -151,7 +151,7 @@ def questions(request, scope=const.DEFAULT_POST_SCOPE, sort=const.DEFAULT_POST_S 'has_next': page.has_next(), 'previous': page.previous_page_number(), 'next': page.next_page_number(), - 'base_url' : request.path + search_state.query_string() + '&',#todo in T sort=>sort_method + 'base_url' : search_state.query_string(),#todo in T sort=>sort_method 'page_size' : search_state.page_size,#todo in T pagesize -> page_size 'parameters': search_state.make_parameters(), } |