# HG changeset patch # User cavaliet # Date 1403090762 -7200 # Node ID f473bed524cd8fbe27f85eff699dc0016abd673f # Parent b2eb3e9e6956681a5f64454bbede9073236af9f9 Folder management with datasheet list diff -r b2eb3e9e6956 -r f473bed524cd src/hdabo/static/hdabo/css/style.css --- a/src/hdabo/static/hdabo/css/style.css Tue Jun 17 16:07:40 2014 +0200 +++ b/src/hdabo/static/hdabo/css/style.css Wed Jun 18 13:26:02 2014 +0200 @@ -423,4 +423,11 @@ } textarea.folder-input{ height: 120px; +} +.remove-ds-from-folder{ + font-weight: bold; + color: #50a4a3; +} +.remove-ds-from-folder:hover{ + color: #4F5155; } \ No newline at end of file diff -r b2eb3e9e6956 -r f473bed524cd src/hdabo/static/hdabo/js/folders.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hdabo/static/hdabo/js/folders.js Wed Jun 18 13:26:02 2014 +0200 @@ -0,0 +1,56 @@ +// -*- coding: utf-8 -*- +$(document).ready(function(){ + + $("form").bind("keypress", function (e) { + if (e.keyCode == 13) { + return false; + } + }); + + $(".remove-ds-from-folder").live( "click", function(e) { + var li = e.target.parentNode; + var dsid = li.getAttribute("data-dsid"); + var list = $("#ds_ids").val().split(","); + var index = list.indexOf(dsid); + if (index > -1) { + list.splice(index, 1); + li.parentNode.removeChild(li); + } + $("#ds_ids").val( list.join(",") ); + }); + + function loadDatasheets(url, data){ + $.ajax({ + url: url, + type: 'GET', + data: data, + // bug with jquery >= 1.5, "json" adds a callback so we don't specify dataType + //dataType: 'json', + success: function(msg, textStatus, XMLHttpRequest) { + $('#ds-search-list').html(msg); + $(".ajax-link").click(function(e){ + e.preventDefault(); + loadDatasheets(e.target.getAttribute("href")); + }); + $(".result_link").click(function(e){ + var dsid = e.target.getAttribute("data-dsid"); + // add datasheet id to the folder's list + $("#ds_ids").val( $("#ds_ids").val() + (($("#ds_ids").val()=="") ? "" : ",") + dsid ); + // add datasheet id to the folder's list + var newds = $("#ds-list").append('
  • ' + e.target.innerHTML + ' X
  • '); + }); + }, + error: function(jqXHR, textStatus, errorThrown) { + resp = $.parseJSON(jqXHR.responseText); + alert(resp.message); + } + }); + } + + $("#ok_search").click(function(){ + if($("#ds-search").val()!=""){ + loadDatasheets(search_url, { q:$('#ds-search').val() }); + } + }); + +}); diff -r b2eb3e9e6956 -r f473bed524cd src/hdabo/templates/add_or_update_folder.html --- a/src/hdabo/templates/add_or_update_folder.html Tue Jun 17 16:07:40 2014 +0200 +++ b/src/hdabo/templates/add_or_update_folder.html Wed Jun 18 13:26:02 2014 +0200 @@ -1,14 +1,43 @@ {% extends "hdabo_base.html" %} {% block title %}HDA - BO : Créer ou modifier un dossier{% endblock %} - + +{% block js_import %} +{{block.super}} + +{% endblock %} + +{% block js_declaration %} + {{block.super}} + +{% endblock %} + {% block content %} {{block.super}} -
    + {% csrf_token %} - -

    Url (adresse de la page sur le portail Histoire de Arts) :

    +{% if folder %}{% endif %} +

    Url (adresse de la page sur le portail Histoire de Arts) :
    + +

    Titre :

    Description :

    +

     

    +

    Liste des fiches associées au dossier :

    + + +

    Rechercher dans les fiches existantes (cliquez sur un résultat pour l'ajouter) :

    +

    OK +

    +

     

    +

     

    {% endblock %} diff -r b2eb3e9e6956 -r f473bed524cd src/hdabo/templates/folders.html --- a/src/hdabo/templates/folders.html Tue Jun 17 16:07:40 2014 +0200 +++ b/src/hdabo/templates/folders.html Wed Jun 18 13:26:02 2014 +0200 @@ -19,13 +19,7 @@ {{f.url|short_url}} {{f.title}} {{f.description}} - - - + diff -r b2eb3e9e6956 -r f473bed524cd src/hdabo/templates/partial/search_datasheet_for_folders.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hdabo/templates/partial/search_datasheet_for_folders.html Wed Jun 18 13:26:02 2014 +0200 @@ -0,0 +1,21 @@ +{% if query %} +

    Page {{page.number}}/{{paginator.num_pages}}

    + + {% if page.has_previous or page.has_next %} +
    + {% if page.has_previous %} + {% endif %}« Prec.{% if page.has_previous %} + {% endif %} + | + {% if page.has_next %} + {% endif %}Suiv. »{% if page.has_next %} + {% endif %} +
    + {% endif %} +{% else %} +

    Aucun résultat.

    +{% endif %} diff -r b2eb3e9e6956 -r f473bed524cd src/hdabo/urls.py --- a/src/hdabo/urls.py Tue Jun 17 16:07:40 2014 +0200 +++ b/src/hdabo/urls.py Wed Jun 18 13:26:02 2014 +0200 @@ -1,7 +1,7 @@ from django.conf.urls import patterns, include, url from django.contrib import admin from django.contrib.auth import urls as auth_url -from .views import AddOrUpdateFolder, Folders +from .views import AddOrUpdateFolder, Folders, SearchDatasheet # Uncomment the next two lines to enable the admin: @@ -49,4 +49,5 @@ url(r'^folders/$', Folders.as_view(), name='folders'), url(r'^folder/$', AddOrUpdateFolder.as_view(), name='add_or_update_folder'), url(r'^folder/(?P[\w-]+)$', AddOrUpdateFolder.as_view(), name='add_or_update_folder'), + url(r'^searchajax/$', SearchDatasheet(), name='searchajax'), ) diff -r b2eb3e9e6956 -r f473bed524cd src/hdabo/views.py --- a/src/hdabo/views.py Tue Jun 17 16:07:40 2014 +0200 +++ b/src/hdabo/views.py Wed Jun 18 13:26:02 2014 +0200 @@ -18,6 +18,7 @@ import django.utils.simplejson as json import re from django.views.generic.base import TemplateView, View +from haystack.views import SearchView @login_required @@ -613,10 +614,22 @@ folder.url = request.POST["url"] folder.title = request.POST["title"] folder.description = request.POST["description"] + + if "ds_ids" in request.POST and request.POST["ds_ids"]!="": + ds_ids = request.POST["ds_ids"].split(",") + ds_ids = filter(None, ds_ids) # fastest + folder.datasheets = Datasheet.objects.filter(pk__in=ds_ids) + folder.save() return redirect('folders') +class SearchDatasheet(SearchView): + + template = "partial/search_datasheet_for_folders.html" + + +