]> git.parisson.com Git - telemeta.git/commitdiff
the multi selection for playlist now work on collections
authorafilsaime <shadow_kungfu@hotmail.fr>
Tue, 9 Jun 2015 09:52:32 +0000 (11:52 +0200)
committerafilsaime <shadow_kungfu@hotmail.fr>
Tue, 9 Jun 2015 09:52:32 +0000 (11:52 +0200)
telemeta/haystack_urls.py
telemeta/templates/search/addplaylist.html
telemeta/templates/search/confirmation_add_playslist.html
telemeta/templates/search/mediacollection_listhaystack.html
telemeta/templates/search/search.html
telemeta/views/new_playlist.py

index 4acb0937d486869c05ec60d80e5921a718b505d7..0692c714125caad0c67640c0870b4f7b0890486b 100644 (file)
@@ -10,6 +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().display, name='haystack_playlist'),
+    url(r'^playlist_add/(?P<type>[A-Za-z0-9._-]+)/$', NewPlaylistView().display, name='haystack_playlist'),
     url(r'^playlist_confirmation/$',NewPlaylistView().addToPlaylist, name='add_confirmation'),
 )
index 3509777aa423a4e6b124c8c101ee4710f58ea65d..778bb45cf4ea42554c8538004e3c0dab46f673df 100644 (file)
 
             </tr>
            </thead><tbody>
-            {% for item in selected_items_list %}
-            <tr>
+           {% ifequal type "item" %}
+                {% for item in selected_items_list %}
+                    <tr>
 
-             <td><a href="#">
-                {{item}}</a></td>
-            </tr>
-            {% endfor %}
+                     <td><a href="#">
+                        {{item}}</a></td>
+                    </tr>
+                {% endfor %}
+            {% else %}
+                {% for item in selected_items_list %}
+                    <tr>
+
+                     <td><a href="#">
+                        {{item.title}}</a></td>
+                    </tr>
+                {% endfor %}
+            {% endifequal %}
             </tbody>
             </table>
         </div>
index 0cf4ce5dcfc4c4d160c313a97fe6f39724b12f5d..b5438e741165dd7288a92f731699e49140b6fba8 100644 (file)
 
         </tr>
        </thead><tbody>
-        {% for item in selected_items_list %}
-        <tr>
+       {% ifequal type "item" %}
+            {% for item in selected_items_list %}
+                <tr>
 
-         <td><a href="#">
-            {{item}}</a></td>
-        </tr>
-        {% endfor %}
+                 <td><a href="#">
+                    {{item}}</a></td>
+                </tr>
+            {% endfor %}
+        {% else %}
+            {% for item in selected_items_list %}
+                <tr>
+
+                 <td><a href="#">
+                    {{item.title}}</a></td>
+                </tr>
+            {% endfor %}
+        {% endifequal %}
         </tbody>
     </table></br>
     <a style="margin-top:10px" href="{{lastquerypath}}" id="btn" class="btn btn-default">return to search results</a>
index 07a90d4bd12e339446ba4ceb7d4805e381d842d9..2c5df32b755b6fbac781c1b1a0b4214ff13576dc 100644 (file)
@@ -5,39 +5,74 @@
 
 <table class="listing">
 <tr>
-    <th class="highlight">{% trans "Title" %}</th>
+    {% if user.is_authenticated %}
+        <th class="highlight"><input id="selectAll" type="checkbox"/> select all </th>
+        <th>{% trans "Title" %}</th>
+    {% else %}
+        <th class="highlight">{% trans "Title" %}</th>
+    {% endif %}
     <th>{% trans "Digitized" %}</th>
     <th>{% field_label "MediaCollection" "creator" %}</th>
     <th>{% trans "Recordist" %}</th>
     <th>{% trans "Recording period" %}</th>
     <th>{% trans "Code" %}</th>
 </tr>
-{% for result in page.object_list %}
-<tr {% if not forloop.counter0|divisibleby:"2" %}class="odd"{% endif %}>
-    <td class="highlight">
-        <a href="{% url "telemeta-collection-detail" result.object.public_id %}">{{ result.object.title }}</a>
-    </td>
-    <td>
-      {% if result.object.has_mediafile %}
-       <center><span class="glyphicon glyphicon-volume-up" style="font-size: 1.3em;"></span></center>
-      {% endif %}
-    </td>
+{% if user.is_authenticated %}
+    {% for result in page.object_list %}
+    <tr {% if not forloop.counter0|divisibleby:"2" %}class="odd"{% endif %}>
+        <td class="highlight"><input type="checkbox" class="check1" name="selected_items_list" value="{{ result.object.id }}"/></td>
+        <td>
+            <a href="{% url "telemeta-collection-detail" result.object.public_id %}">{{ result.object.title }}</a>
+        </td>
+        <td>
+          {% if result.object.has_mediafile %}
+           <center><span class="glyphicon glyphicon-volume-up" style="font-size: 1.3em;"></span></center>
+          {% endif %}
+        </td>
 
-    <td>{{ result.object.creator }}</td>
-    <td>{{ result.object.apparent_collector }}</td>
-    <td>
-    {% if result.object.recorded_from_year %}
-        {{ result.object.recorded_from_year }}
-        {% if result.object.recorded_to_year and not result.object.recorded_to_year|equals:result.object.recorded_from_year %}
-            - {{ result.object.recorded_to_year }}
+        <td>{{ result.object.creator }}</td>
+        <td>{{ result.object.apparent_collector }}</td>
+        <td>
+        {% if result.object.recorded_from_year %}
+            {{ result.object.recorded_from_year }}
+            {% if result.object.recorded_to_year and not result.object.recorded_to_year|equals:result.object.recorded_from_year %}
+                - {{ result.object.recorded_to_year }}
+            {% endif %}
         {% endif %}
-    {% endif %}
-    </td>
-    <td>
-        {{ result.object.code|default:result.object.old_code }}
-    </td>
-</tr>
-{% endfor %}
+        </td>
+        <td>
+            {{ result.object.code|default:result.object.old_code }}
+        </td>
+    </tr>
+    {% endfor %}
+{% else %}
+    {% for result in page.object_list %}
+    <tr {% if not forloop.counter0|divisibleby:"2" %}class="odd"{% endif %}>
+        <td class="highlight">
+            <a href="{% url "telemeta-collection-detail" result.object.public_id %}">{{ result.object.title }}</a>
+        </td>
+        <td>
+          {% if result.object.has_mediafile %}
+           <center><span class="glyphicon glyphicon-volume-up" style="font-size: 1.3em;"></span></center>
+          {% endif %}
+        </td>
+
+        <td>{{ result.object.creator }}</td>
+        <td>{{ result.object.apparent_collector }}</td>
+        <td>
+        {% if result.object.recorded_from_year %}
+            {{ result.object.recorded_from_year }}
+            {% if result.object.recorded_to_year and not result.object.recorded_to_year|equals:result.object.recorded_from_year %}
+                - {{ result.object.recorded_to_year }}
+            {% endif %}
+        {% endif %}
+        </td>
+        <td>
+            {{ result.object.code|default:result.object.old_code }}
+        </td>
+    </tr>
+    {% endfor %}
+{% endif %}
 </table>
 {% else %}
     <p>{% trans "No collection" %}</p>
index 6faa362f00a22799ffb8bd3d1e372c7fd2c0b04e..30caef5ee18d862ea5297c73a8bd882f56883714 100644 (file)
@@ -7,6 +7,51 @@
 {% 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 %}
 
 
 
             <h1>{% trans "Results" %}</h1>
-
-            {% ifequal type 'item' %}
-                 <p><b>Items ({{item_count}}) | <a href="{% url "haystack_search_type" "collection" %}?{{request.GET.urlencode}}">Collections ({{collection_count}})</a></b></p>
-             {% else %}
-                {% ifequal type 'collection'%}
-                    <p><b><a href="{% url "haystack_search_type" "item" %}?{{request.GET.urlencode}}">Items ({{item_count}}) </a>| Collections ({{collection_count}})</b></p>
-                {% endifequal %}
-             {% endifequal %}
-             <div>
-                <form method="GET" action=".">
-                    <select onchange="location='?q={{ query }}&amp;page=1&amp;selected_facets={{selected_facets_url|join:'&selected_facets='}}&results_page='+this.options[this.selectedIndex].value" name="results_page">
-                        <option {% ifequal results_page 20 %}selected{% endifequal %} value="20">20</option>
-                        <option {% ifequal results_page 1 %}selected{% endifequal %} value="1">1</option>
-                        <option {% ifequal results_page 50 %}selected{% endifequal %} value="50">50</option>
-                        <option {% ifequal results_page 100 %}selected{% endifequal %} value="100">100</option>
-                        <option {% ifequal results_page 250 %}selected{% endifequal %} value="250">250</option>
-                        <option {% ifequal results_page 500 %}selected{% endifequal %} value="500">500</option>
-                        <option {% ifequal results_page 1000 %}selected{% endifequal %} value="1000">1000</option>
-                        <option {% ifequal results_page item_count %}selected{% endifequal %} value="{{item_count}}">ALL</option>
-                    </select>
-                </form>
+            <div class="row" style="margin-left:-15px">
+                <div class="col-md-4">
+                    {% ifequal type 'item' %}
+                         <p><b>Items ({{item_count}}) | <a href="{% url "haystack_search_type" "collection" %}?{{request.GET.urlencode}}">Collections ({{collection_count}})</a></b></p>
+                     {% else %}
+                        {% ifequal type 'collection'%}
+                            <p><b><a href="{% url "haystack_search_type" "item" %}?{{request.GET.urlencode}}">Items ({{item_count}}) </a>| Collections ({{collection_count}})</b></p>
+                        {% endifequal %}
+                     {% endifequal %}
+                 </div>
+                 <div class="col-md-4 col-md-offset-4" >
+                    <div class="pull-right"">
+                        <label style="display:inline-block;vertical-align:middle">results per page:</label>
+                        <form style="display:inline-block;vertical-align:middle" method="GET" action=".">
+                            <select id="results-per-page" onchange="location='?q={{ query }}&amp;page=1&amp;selected_facets={{selected_facets_url|join:'&selected_facets='}}&results_page='+this.options[this.selectedIndex].value" name="results_page">
+                                <option {% ifequal results_page 20 %}selected{% endifequal %} value="20">20</option>
+                                <option {% ifequal results_page 1 %}selected{% endifequal %} value="1">1</option>
+                                <option {% ifequal results_page 50 %}selected{% endifequal %} value="50">50</option>
+                                <option {% ifequal results_page 100 %}selected{% endifequal %} value="100">100</option>
+                                <option {% ifequal results_page 250 %}selected{% endifequal %} value="250">250</option>
+                                <option {% ifequal results_page 500 %}selected{% endifequal %} value="500">500</option>
+                                <option {% ifequal results_page 1000 %}selected{% endifequal %} value="1000">1000</option>
+                                <option {% ifequal results_page 10000 %}selected{% endifequal %} value="10000">10000</option>
+                            </select>
+                        </form>
+                    </div>
+                 </div>
              </div>
-             {{results_page}}
-             {{selected_facets_url|join:'&selected_facets='}}
              {% include "search/filters.html" %}
 
-            <form method="POST" action="{% url "haystack_playlist"%} ">{% csrf_token %}
+            <form method="POST" action="{% url "haystack_playlist" type %} ">{% csrf_token %}
              {% with object_list as items %}
                 <div class="fullpage">
                     {% ifequal type 'item' %}
                     });
                 }
             });
+            $(document).ready(function() {
+            $("#results-per-page").selectmenu({
+                icons : {button: "ui-icon-carat-2-n-s"}
+            }).selectmenu("menuWidget").addClass("overflow");
+        });
         });
     </script>
 {% endblock %}
index 6fb2f98095ea69f85a4f5999a17f022501924e9d..b60fc8555cdef42ba4a202757c1c524c7d876a33 100644 (file)
@@ -5,21 +5,32 @@ import uuid
 
 class NewPlaylistView(object):
 
-    def display(self, request):
+    def display(self, request, type=None):
+
+        self.type=type
 
         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))
+        if self.type =="items":
+            for itemid in idlist:
+                itemlist.append(MediaItem.objects.all().get(id=itemid))
+
+        if self.type =="collection":
+            for itemid in idlist:
+                itemlist.append(MediaCollection.objects.all().get(id=itemid))
+
         context = RequestContext(request, {
                 'selected_items_list': itemlist,
                 'existing_playlists': Playlist.objects.all().filter(author=request.user),
+                'type':self.type,
                 'lastquerypath':request.POST.get('lastquerypath')})
         return HttpResponse(template_name.render(context))
 
-    def addToPlaylist(self, request):
+    def addToPlaylist(self, request, type=None):
+        self.type=type
+
         template_name = loader.get_template('search/confirmation_add_playslist.html')
 
         idlist = request.POST.getlist('item_id')
@@ -27,15 +38,24 @@ class NewPlaylistView(object):
         selected_playlist = Playlist.objects.all().get(id=selected_playlist_id)
 
         itemlist = []
-        for itemid in idlist:
-            itemlist.append(MediaItem.objects.all().get(id=itemid))
+        if self.type == "item":
+            for itemid in idlist:
+                itemlist.append(MediaItem.objects.all().get(id=itemid))
+
+            for item in itemlist:
+                new_id = uuid.uuid4()
+                PlaylistResource.objects.get_or_create(resource_type='item',public_id=new_id,resource_id=item.id,playlist=selected_playlist)
+        else:
+            for itemid in idlist:
+                itemlist.append(MediaCollection.objects.all().get(id=itemid))
 
-        for item in itemlist:
-            new_id = uuid.uuid4()
-            PlaylistResource.objects.get_or_create(resource_type='item',public_id=new_id,resource_id=item.id,playlist=selected_playlist)
+            for item in itemlist:
+                new_id = uuid.uuid4()
+                PlaylistResource.objects.get_or_create(resource_type='collection',public_id=new_id,resource_id=item.id,playlist=selected_playlist)
 
         context = RequestContext(request, {
                 'selected_items_list': itemlist,
+                'type':self.type,
                 'lastquerypath': request.POST.get('lastquerypath')})
         return HttpResponse(template_name.render(context))