# HG changeset patch # User cavaliet # Date 1343230104 -7200 # Node ID eea2dcb555c135cc844b6a1fa430f7cf33ec7261 # Parent 3820bc5dd6b72c6ed1335e5bd6c7c9aa79c6aa88 Content tag cloud and filter in workspace. diff -r 3820bc5dd6b7 -r eea2dcb555c1 src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/content_project_pagination.html --- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/content_project_pagination.html Tue Jul 24 17:16:05 2012 +0200 +++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/content_project_pagination.html Wed Jul 25 17:28:24 2012 +0200 @@ -1,42 +1,26 @@ {% load front_tags %} {% if nb_pages %} -

{% comment %} - alors ? : {{begin}} - {{middle}} - {{end}} - nb_pages = {{nb_pages}}
+ {% comment %}alors ? : {{begin}} - {{middle}} - {{end}} - nb_pages = {{nb_pages}}
alors ? : nb_pages = {{nb_pages}} - range = {{nb_pages|get_range}} - cur_page_nb = {{cur_page_nb}}
{% endcomment %} {% if 0 < cur_page_nb %}<< {% endif %} {% for i in begin %} - {% if i == cur_page_nb %} - {{i|add:'1'}} - {% else %} - {{i|add:'1'}} - {% endif %} -   + {% if i == cur_page_nb %}{{i|add:'1'}}{% else %}{{i|add:'1'}}{% endif %}  {% endfor %} {% if middle %} - ...  + ... {% for i in middle %} - {% if i == cur_page_nb %} - {{i|add:'1'}} - {% else %} - {{i|add:'1'}} - {% endif %} -   + {% if i == cur_page_nb %}{{i|add:'1'}}{% else %}{{i|add:'1'}}{% endif %}  {% endfor %} {% endif %} {% if end %} - ...  + ... {% for i in end %} - {% if i == cur_page_nb %} - {{i|add:'1'}} - {% else %} - {{i|add:'1'}} - {% endif %} -   + {% if i == cur_page_nb %}{{i|add:'1'}}{% else %}{{i|add:'1'}}{% endif %}  {% endfor %} {% endif %} {% if cur_page_nb|add:'1' < nb_pages %}>>{% endif %} -

{% endif %} +

diff -r 3820bc5dd6b7 -r eea2dcb555c1 src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/contentslist.html --- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/contentslist.html Tue Jul 24 17:16:05 2012 +0200 +++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/contentslist.html Wed Jul 25 17:28:24 2012 +0200 @@ -2,10 +2,21 @@ {% load thumbnail %} {% load front_tags %} + +
{% if tag_cloud|length > 0 %} +

+ {% for t in tag_cloud %} + {{t.name}}{% if not forloop.last %}, {% endif %} + {% endfor %} +

{% endif %} + +
{% trans "name" %}
diff -r 3820bc5dd6b7 -r eea2dcb555c1 src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html --- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html Tue Jul 24 17:16:05 2012 +0200 +++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html Wed Jul 25 17:28:24 2012 +0200 @@ -3,9 +3,10 @@ {% load front_tags %} {% if nb_pj_pages %} - {% load navigation %}{% build_pagination nb_pj_pages current_project_page "projects_page clickable" %} + {% endif %}
{% trans "name" %} diff -r 3820bc5dd6b7 -r eea2dcb555c1 src/ldt/ldt/ldt_utils/views/content.py --- a/src/ldt/ldt/ldt_utils/views/content.py Tue Jul 24 17:16:05 2012 +0200 +++ b/src/ldt/ldt/ldt_utils/views/content.py Wed Jul 25 17:28:24 2012 +0200 @@ -14,6 +14,7 @@ from ldt.security.utils import assign_perm_to_obj, add_change_attr, get_userlist, get_userlist_model from ldt.security.cache import cached_assign from ldt.user.forms import PictureForm +from tagging.models import Tag, TaggedItem from urllib2 import urlparse import ldt.utils.path as ldt_utils_path import logging @@ -393,21 +394,35 @@ num_page = 0 if request.GET.has_key('num_page'): num_page = int(request.GET["num_page"]) + tag_filter = "" + if request.GET.has_key('tag_filter'): + tag_filter = request.GET["tag_filter"] # We paginate the content list, in case of filter or not - if filter: + if filter and not tag_filter : content_nb = Content.safe_objects.filter(title__icontains=filter).count() - nb_ct_pages = int(math.ceil(content_nb / settings.LDT_MAX_CONTENTS_PER_PAGE)) + nb_ct_pages = int(math.ceil(content_nb / settings.LDT_MAX_CONTENTS_PER_PAGE)) + 1 content_list = Content.safe_objects.filter(title__icontains=filter)[(num_page*settings.LDT_MAX_CONTENTS_PER_PAGE):((num_page+1)*settings.LDT_MAX_CONTENTS_PER_PAGE)] #@UndefinedVariable + elif filter and tag_filter : + #TaggedItem.objects.get_by_model(Content.objects.all(), '"'+tag_filter+'"') + content_nb = TaggedItem.objects.get_by_model(Content.safe_objects.filter(title__icontains=filter), '"'+tag_filter+'"').count() + nb_ct_pages = int(math.ceil(content_nb / settings.LDT_MAX_CONTENTS_PER_PAGE)) + 1 + content_list = TaggedItem.objects.get_by_model(Content.safe_objects.filter(title__icontains=filter), '"'+tag_filter+'"')[(num_page*settings.LDT_MAX_CONTENTS_PER_PAGE):((num_page+1)*settings.LDT_MAX_CONTENTS_PER_PAGE)] #@UndefinedVariable + elif tag_filter and not filter: + content_nb = TaggedItem.objects.get_by_model(Content.safe_objects.all(), '"'+tag_filter+'"').count() + nb_ct_pages = int(math.ceil(content_nb / settings.LDT_MAX_CONTENTS_PER_PAGE)) +1 + content_list = TaggedItem.objects.get_by_model(Content.safe_objects.all(), '"'+tag_filter+'"')[(num_page*settings.LDT_MAX_CONTENTS_PER_PAGE):((num_page+1)*settings.LDT_MAX_CONTENTS_PER_PAGE)] #@UndefinedVariable else: content_nb, nb_ct_pages, content_list = get_contents_page(num_page, request.user) #Change attributes with object permissions content_list = add_change_attr(request.user, content_list) + # Get the all tags list + tag_cloud = get_content_tags() is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1); return render_to_response("ldt/ldt_utils/partial/contentslist.html", {'contents': content_list, 'nb_ct_pages': nb_ct_pages, 'content_nb': content_nb, 'current_content_page':float(num_page), - 'is_gecko': is_gecko + 'tag_cloud': tag_cloud, 'current_content_tag':tag_filter, 'is_gecko': is_gecko }, context_instance=RequestContext(request)) @@ -417,3 +432,10 @@ nb_ct_pages = int(math.ceil(content_nb / settings.LDT_MAX_CONTENTS_PER_PAGE)) content_list = add_change_attr(user, Content.safe_objects.all()[(num_page*settings.LDT_MAX_CONTENTS_PER_PAGE):((num_page+1)*settings.LDT_MAX_CONTENTS_PER_PAGE)]) #@UndefinedVariable return content_nb, nb_ct_pages, content_list + + +def get_content_tags(limit=None, steps=10): + if limit is None: + return Tag.objects.cloud_for_model(Content, steps=steps) + else : + return Tag.objects.cloud_for_model(Content, steps=steps)[:limit] diff -r 3820bc5dd6b7 -r eea2dcb555c1 src/ldt/ldt/ldt_utils/views/front.py --- a/src/ldt/ldt/ldt_utils/views/front.py Tue Jul 24 17:16:05 2012 +0200 +++ b/src/ldt/ldt/ldt_utils/views/front.py Wed Jul 25 17:28:24 2012 +0200 @@ -7,6 +7,7 @@ from guardian.shortcuts import get_objects_for_group from ldt.ldt_utils.models import Content, Project from ldt.ldt_utils.forms import SearchForm +from ldt.ldt_utils.views.content import get_content_tags from ldt.ldt_utils.views.workspace import get_search_results from tagging.models import Tag, TaggedItem import base64 @@ -146,8 +147,4 @@ return render_to_response('front/front_search_results.html', {'results': results, 'nb_results' : nb, 'search' : search, 'field': field, 'tag_label':content_tag, 'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/'}, context_instance=RequestContext(request)) -def get_content_tags(limit=None, steps=10): - if limit is None: - return Tag.objects.cloud_for_model(Content, steps=steps) - else : - return Tag.objects.cloud_for_model(Content, steps=steps)[:limit] + diff -r 3820bc5dd6b7 -r eea2dcb555c1 src/ldt/ldt/ldt_utils/views/workspace.py --- a/src/ldt/ldt/ldt_utils/views/workspace.py Tue Jul 24 17:16:05 2012 +0200 +++ b/src/ldt/ldt/ldt_utils/views/workspace.py Wed Jul 25 17:28:24 2012 +0200 @@ -14,7 +14,7 @@ from ldt.ldt_utils.models import Content, Project, Segment from ldt.ldt_utils.utils import boolean_convert from ldt.ldt_utils.projectserializer import ProjectSerializer -from ldt.ldt_utils.views.content import get_contents_page +from ldt.ldt_utils.views.content import get_contents_page, get_content_tags from ldt.ldt_utils.views.project import get_projects_page, get_published_projects_page from ldt.security.utils import add_change_attr, get_userlist from lxml.html import fragment_fromstring @@ -34,7 +34,8 @@ content_nb, nb_ct_pages, content_list = get_contents_page(num_page, request.user) # get list of projects owned by the current user project_nb, nb_pj_pages, project_list = get_projects_page(num_page, request.user) - #project_list = add_change_attr(request.user, Project.safe_objects.filter(owner=request.user)[:settings.LDT_MAX_PROJECTS_PER_PAGE]) #@UndefinedVariable + # Get the all tags list + tag_cloud = get_content_tags() is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1); @@ -49,7 +50,7 @@ return render_to_response("ldt/ldt_utils/workspace.html", {'contents': content_list, 'nb_ct_pages': nb_ct_pages, 'content_nb': content_nb, 'current_content_page':float(num_page), 'projects': project_list, 'nb_pj_pages': nb_pj_pages, 'project_nb': project_nb, 'current_project_page':float(num_page), - 'is_gecko': is_gecko, #'project_api_url':"match.url_name", + 'tag_cloud': tag_cloud, 'is_gecko': is_gecko, #'project_api_url':"match.url_name", #'project_api_view':match.url_name,'project_api_args':"project_api_args",'project_api_kwargs':"project_api_kwargs" }, context_instance=RequestContext(request)) diff -r 3820bc5dd6b7 -r eea2dcb555c1 src/ldt/ldt/static/ldt/css/workspace.css --- a/src/ldt/ldt/static/ldt/css/workspace.css Tue Jul 24 17:16:05 2012 +0200 +++ b/src/ldt/ldt/static/ldt/css/workspace.css Wed Jul 25 17:28:24 2012 +0200 @@ -205,7 +205,7 @@ } #contentleft input[type=checkbox] { - float: left; + float: left; } .shareicon { @@ -232,10 +232,18 @@ } .prev_next_cont_proj { - margin: 0 0 5px; - float: right; + margin-left: -40px; + margin-right: 0; + list-style: none outside none; } -.prev_next_cont_proj a, .prev_next_cont_proj a:visited{ +.prev_next_cont_proj li { + float: right; + margin: 0 0 -10px; +} +#content_tags_li{ + float: left; +} +.prev_next_cont_proj a, .prev_next_cont_proj a:visited, #content_tags_cloud a, #content_tags_cloud a:visited, #no_content_tag{ color: #0063DC; text-decoration: none; } \ No newline at end of file diff -r 3820bc5dd6b7 -r eea2dcb555c1 src/ldt/ldt/static/ldt/js/projectscontents.js --- a/src/ldt/ldt/static/ldt/js/projectscontents.js Tue Jul 24 17:16:05 2012 +0200 +++ b/src/ldt/ldt/static/ldt/js/projectscontents.js Wed Jul 25 17:28:24 2012 +0200 @@ -127,7 +127,7 @@ }; } -function searchCallback(target, container_selector, url, timeout, num_page) { +function searchCallback(target, container_selector, url, timeout, num_page, tag_filter) { timeout = typeof(timeout) !== 'undefined' ? timeout : 0; target = $(target); @@ -151,13 +151,22 @@ var filterVal = "_" + encodeURIComponent(target.realVal()); url = url.replace('__FILTER__',filterVal); url = url.replace('__ID_GROUP__',$('#id_group').val()); - if(num_page){ + var data_obj = null; + if(num_page || tag_filter){ + data_obj = {}; + if(num_page){ + data_obj["num_page"] = num_page; + } + if(tag_filter){ + data_obj["tag_filter"] = tag_filter; + } + } + if(data_obj!=null){ $.ajax({ url: url, cache: false, type: 'GET', - data: {num_page:num_page - }, + data: data_obj, success: function(data, status, request) { $(container_selector).html(data); target.next(".searchajaxloader").hide(); @@ -198,7 +207,7 @@ init_events_base(base_node, embed_url); // Content pagination in workspace home - $('.contents_page').click(function(e){ + $('.contents_page',base_node).click(function(e){ num_page = $(this).attr('alt'); if(num_page=="prev"){ num_page = parseInt($('#current_content_page').val()) - 1; @@ -206,9 +215,23 @@ else if(num_page=="next"){ num_page = parseInt($('#current_content_page').val()) + 1; } - searchCallback($("#searchcontentsinput"),"#contentslistcontainer",content_filter_url,0,num_page); + searchCallback($("#searchcontentsinput"),"#contentslistcontainer",content_filter_url,0,num_page,$('#current_content_tag').val()); }); + // Content pagination in workspace home with tag/category filter + $("#content_tags_cloud",base_node).toggle(false); + $("#content_tags",base_node).click(function(){ + $("#content_tags_cloud").slideToggle("fast"); + }); + $('.contents_tag',base_node).click(function(e){ + $('#searchcontentsinput').val(""); + $('#current_content_tag').val($(this).attr('alt')); + searchCallback($("#searchcontentsinput"),"#contentslistcontainer",content_filter_url,0,0,$('#current_content_tag').val()); + }); + $("#no_content_tag",base_node).click(function(){ + searchCallback($("#searchcontentsinput"),"#contentslistcontainer",content_filter_url,0,0); + }); + $('.content_link_create').each(function(i){ $(this).attr("target","_blank"); });