]> git.parisson.com Git - telemeta.git/commitdiff
implementing the facet selection for user playlist
authorafilsaime <shadow_kungfu@hotmail.fr>
Thu, 4 Jun 2015 12:18:53 +0000 (14:18 +0200)
committerafilsaime <shadow_kungfu@hotmail.fr>
Thu, 4 Jun 2015 12:18:53 +0000 (14:18 +0200)
src/django-haystack
telemeta/haystack_urls.py
telemeta/templates/search/addplaylist.html
telemeta/templates/search/confirmation_add_playslist.html [new file with mode: 0644]
telemeta/templates/search/search.html
telemeta/views/new_playlist.py

index 3c88d41f9a02299d031eef8114dfd4fdc5ed358f..0576c8093caf59bebedce75e0d711aacfd36f03f 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 3c88d41f9a02299d031eef8114dfd4fdc5ed358f
+Subproject commit 0576c8093caf59bebedce75e0d711aacfd36f03f
index 0eccfcef8727a357df9b1bd5a4c819c87b0a2759..4acb0937d486869c05ec60d80e5921a718b505d7 100644 (file)
@@ -1,5 +1,6 @@
 # -*- coding: utf-8 -*-
 from django.conf.urls import patterns, url
+from django.views.generic.base import TemplateView
 from telemeta.views.haystack_search import *
 from telemeta.views.new_playlist import *
 from haystack.forms import *
@@ -9,5 +10,6 @@ urlpatterns = patterns('',
     url(r'^quick/(?P<type>[A-Za-z0-9._-]+)/$', HaystackSearch(), name='haystack_search_type'),
     url(r'^advance/$', HaystackAdvanceSearch(form_class=HayAdvanceForm, template='search/advanceSearch.html'), name='haystack_advance_search'),
     url(r'^advance/(?P<type>[A-Za-z0-9._-]+)/$', HaystackAdvanceSearch(form_class=HayAdvanceForm, template='search/advanceSearch.html'), name='haystack_advance_search_type'),
-    url(r'^playlist_add/$', NewPlaylistView.as_view(), name='haystack_playlist'),
+    url(r'^playlist_add/$', NewPlaylistView().display, name='haystack_playlist'),
+    url(r'^playlist_confirmation/$',NewPlaylistView().addToPlaylist, name='add_confirmation'),
 )
index 90235f794508ae7ec9fe27640a469dfdb815f37a..eed259cc92624ec9ae0d39d105668b5fd5102942 100644 (file)
@@ -7,7 +7,88 @@
 {% endblock %}
 {% block extra_stylesheets %}
     <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}telemeta/css/jquery-ui.css" />
+    <style>
+        .overflow{
+            max-height:200px;
+        }
+
+        .module ul, li {
+            border-radius: 0px 0px 0px 0px;
+        }
+
+        .ui-selectmenu-button.ui-widget.ui-state-default{
+            background-image:none;
+            background-color:#6a0307;
+            border-color:#6a0307;
+            color:white;
+        }
+        .ui-selectmenu-button.ui-widget.ui-state-hover{
+            background-image:none;
+            background-color:#6a0307;
+            border-color:#6a0307;
+            color:white;
+        }
+
+        .ui-selectmenu-button.ui-widget.ui-state-focus{
+            background-image:none;
+            background-color:#6a0307;
+            border-color:#6a0307;
+            color:white;
+        }
+
+        .ui-selectmenu-button.ui-widget.ui-state-default .ui-icon{
+            background-image:url("{{ STATIC_URL }}telemeta/css/images/ui-icons_ffffff_256x240.png");
+        }
+
+        .ui-menu-item{
+            background-color:white;
+        }
+
+        .ui-menu-item.ui-state-focus{
+            background-image:none;
+            background-color:#6a0307;
+            border-color:#6a0307;
+            color:white;
+        }
+
+    </style>
 {% endblock %}
 {% block content %}
-{{ selected_items_list }}
+    <form method="POST" action="{%url "add_confirmation"%}">{% csrf_token %}
+        <select name="playlist_id" style="min-width:200px" id="selection">
+            {% for playlist in existing_playlists %}
+                <option value="{{playlist.id}}">{{playlist.title}}</option>
+            {% endfor %}
+        </select>
+        <table class="listing">
+       <thead>
+        <tr><th>{% trans "Title"%}</th>
+
+        </tr>
+       </thead><tbody>
+        {% for item in selected_items_list %}
+        <tr>
+
+         <td><a href="#">
+            {{item.title}}</a></td>
+        </tr>
+        {% endfor %}
+        </tbody>
+      </table>
+      {% for item in selected_items_list %}
+          <input type="hidden" name="item_id" value="{{item.id}}"/>
+      {% endfor %}
+      <input type="submit" value="add to playlist"/>
+  </form>
+{% endblock %}
+{% block extra_javascript %}
+    <script src="{{ STATIC_URL }}telemeta/js/jquery.js" type="text/javascript"></script>
+    <script src="{{ STATIC_URL }}telemeta/js/jquery-ui.min.js" type="text/javascript"></script>
+    <script>
+        $(document).ready(function() {
+            $("#selection").selectmenu({
+                icons : {button: "ui-icon-carat-2-n-s"}
+            }).selectmenu("menuWidget").addClass("overflow");
+        });
+    </script>
 {% endblock %}
\ No newline at end of file
diff --git a/telemeta/templates/search/confirmation_add_playslist.html b/telemeta/templates/search/confirmation_add_playslist.html
new file mode 100644 (file)
index 0000000..26e0f8b
--- /dev/null
@@ -0,0 +1,11 @@
+{% extends 'telemeta/base.html' %}
+{% load telemeta_utils %}
+{% load i18n %}
+
+{% block title %}
+{% trans "Playlist Confirmation" %}
+{% endblock %}
+{% block content %}
+    {{existing_playlists}}
+    <h1>Added to PlayList</h1>
+{% endblock %}
\ No newline at end of file
index 8ef1ca5222ddfab67e54daae85a35b038bddb59c..bd306e59a862c19e00f19dcdb8321e114f0b5383 100644 (file)
@@ -34,7 +34,7 @@
              {% endifequal %}
              {% include "search/filters.html" %}
 
-            <form method="GET" action="{% url "haystack_playlist"%} ">
+            <form method="POST" action="{% url "haystack_playlist"%} ">{% csrf_token %}
              {% with object_list as items %}
                 <div class="fullpage">
                     {% ifequal type 'item' %}
index 646342cc7d32e618a8fd05c74a6d1bec1e65bc1d..de2f144f83dd2d772ad45089b1cef4d331a51116 100644 (file)
@@ -2,15 +2,38 @@
 from telemeta.views.core import *
 from telemeta.models import *
 
-class NewPlaylistView(TemplateView):
-    template_name = 'search/addplaylist.html'
-    def get_context_data(self, **kwargs):
-        # Call the base implementation first to get a context
-        context = super(NewPlaylistView, self).get_context_data(**kwargs)
-        # Add in the publisher
-        idlist = self.request.GET.getlist('selected_items_list')
+class NewPlaylistView(object):
+
+    def display(self, request):
+
+        template_name = loader.get_template('search/addplaylist.html')
+
+        idlist = request.POST.getlist('selected_items_list')
         itemlist = []
         for itemid in idlist:
             itemlist.append(MediaItem.objects.all().get(id=itemid))
-        context['selected_items_list'] = itemlist
-        return context
\ No newline at end of file
+        context = RequestContext(request, {
+                'selected_items_list': itemlist,
+                'existing_playlists': Playlist.objects.all()})
+        return HttpResponse(template_name.render(context))
+
+    def addToPlaylist(self, request):
+        template_name = loader.get_template('search/confirmation_add_playslist.html')
+
+        idlist = request.POST.getlist('item_id')
+        selected_playlist_id = request.POST.get('playlist_id')
+        selected_playlist = Playlist.objects.all().get(id=selected_playlist_id)
+
+        itemlist = []
+        for itemid in idlist:
+            itemlist.append(MediaItem.objects.all().get(id=itemid))
+
+        for item in itemlist:
+            resource = PlaylistResource(resource_type='item',public_id='4567891542',resource_id=item.id,playlist=selected_playlist)
+            resource.save()
+
+        context = RequestContext(request, {
+                'existing_playlists': idlist})
+        return HttpResponse(template_name.render(context))
+
+