--- a/.settings/org.eclipse.core.resources.prefs Tue Sep 02 17:55:25 2014 +0200
+++ b/.settings/org.eclipse.core.resources.prefs Wed Sep 03 16:43:52 2014 +0200
@@ -48,6 +48,7 @@
encoding//src/hdalab/urls.py=utf-8
encoding//src/hdalab/utils.py=utf-8
encoding//src/hdalab/views/ajax.py=utf-8
+encoding//src/hdalab/views/editorial.py=utf-8
encoding//src/hdalab/views/pages.py=utf-8
encoding//src/hdalab/views/profile.py=utf-8
encoding//web/hdalab/config.py=utf-8
--- a/src/hdabo/views.py Tue Sep 02 17:55:25 2014 +0200
+++ b/src/hdabo/views.py Wed Sep 03 16:43:52 2014 +0200
@@ -598,6 +598,7 @@
class AddOrUpdateFolder(TemplateView):
template_name = "add_or_update_folder.html"
+ redirect_view = 'folders'
def get(self, request, folder_pk=None):
folder = None
@@ -623,7 +624,7 @@
folder.save()
- return redirect('folders')
+ return redirect(self.redirect_view)
@@ -670,6 +671,7 @@
class DeleteFolder(View):
+ redirect_view = 'folders'
def get(self, request, folder_pk=None):
folder = None
@@ -677,7 +679,7 @@
folder = get_object_or_404(Folder, pk=folder_pk)
folder.delete()
- return redirect('folders')
+ return redirect(self.redirect_view)
--- a/src/hdalab/settings.py Tue Sep 02 17:55:25 2014 +0200
+++ b/src/hdalab/settings.py Wed Sep 03 16:43:52 2014 +0200
@@ -167,5 +167,5 @@
if 'LOGIN_REDIRECT_URL' not in locals():
LOGIN_REDIRECT_URL = BASE_URL + "hdabo"
if 'LOGIN_URL' not in locals():
- LOGIN_URL = BASE_URL + "hdabo/accounts/login"
+ LOGIN_URL = BASE_URL + "hdalab/hdabo/accounts/login"
--- a/src/hdalab/static/hdalab/css/profile.css Tue Sep 02 17:55:25 2014 +0200
+++ b/src/hdalab/static/hdalab/css/profile.css Wed Sep 03 16:43:52 2014 +0200
@@ -29,4 +29,26 @@
}
.headerSortDown{
background-image:url('../img/desc.gif');
+}
+
+/* editorialisation part */
+.hand_cursor {
+ cursor: pointer;
+}
+
+.folder-input{
+ width: 500px;
+}
+textarea.folder-input{
+ height: 120px;
+}
+.remove-ds-from-folder{
+ font-weight: bold;
+ color: #50a4a3;
+}
+.remove-ds-from-folder:hover{
+ color: #4F5155;
+}
+td.list{
+ padding-left: 18px !important;
}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hdalab/static/hdalab/js/folders.js Wed Sep 03 16:43:52 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").on( "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('<li data-dsid="' + dsid + '">' + e.target.innerHTML + ' <span class="remove-ds-from-folder hand_cursor">X</span></li>');
+ });
+ },
+ 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() });
+ }
+ });
+
+});
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hdalab/templates/editorial/add_or_update_folder.html Wed Sep 03 16:43:52 2014 +0200
@@ -0,0 +1,44 @@
+{% extends "base.html" %}
+{% load static %}
+{% block title %}Hdalab - Éditorialisation : Créer ou modifier un dossier{% endblock %}
+
+{% block css_import %}
+{{block.super}}
+<link rel="stylesheet" type="text/css" href="{% static 'hdalab/css/profile.css' %}" />
+{% endblock %}
+
+{% block js_import %}
+{{block.super}}
+<script type="text/javascript" src="{% static 'hdalab/js/folders.js' %}"></script>
+<script type="text/javascript">
+ var global_csrf_token = "{{ csrf_token }}";
+ var static_url = "{% static '' %}";
+ var search_url = "{% url 'searchajax' %}";
+</script>
+{% endblock %}
+
+{% block main_content %}
+<form class="folder-form" method="POST" action="{% url 'hdalab_add_or_update_folder' %}" autocomplete="off">
+{% csrf_token %}
+{% if folder %}<input type="hidden" name="pk" value="{{folder.pk}}" />{% endif %}
+<p>Url (adresse de la page sur le portail Histoire de Arts) :<br/>
+ <input class="folder-input" type="text" name="url" value="{% if folder %}{{folder.url}}{% endif %}" required="required"/>
+</p>
+<p>Titre :<br/><input class="folder-input" type="text" name="title" value="{% if folder %}{{folder.title}}{% endif %}"/></p>
+<p>Description :<br/><textarea class="folder-input" name="description">{% if folder %}{{folder.description}}{% endif %}</textarea></p>
+<p> </p>
+<p>Liste des fiches associées au dossier :</p>
+<input type="hidden" name="ds_ids" id="ds_ids" value="{% if folder %}{% for d in folder.datasheets.all %}{{ d.pk }},{% endfor %}{% endif %}" />
+<ul id="ds-list">
+ {% if folder %}{% for d in folder.datasheets.all %}
+ <li data-dsid="{{ d.pk }}">{{ d.title }} <span class="remove-ds-from-folder hand_cursor">X</span></li>
+ {% endfor %}{% endif %}
+</ul>
+<p>Rechercher dans les fiches existantes (cliquez sur un résultat pour l'ajouter) :</p>
+<p><input type="text" id="ds-search" value=""/> <span id="ok_search" class="hand_cursor"><b>OK</b></span>
+<div id="ds-search-list"></div>
+<p> </p>
+<p> </p>
+<button type="submit">Envoyer</button>
+</form>
+{% endblock %}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hdalab/templates/editorial/folders.html Wed Sep 03 16:43:52 2014 +0200
@@ -0,0 +1,33 @@
+{% extends "base.html" %}
+{% load static %}
+{% load hdabo_tags %}
+{% block title %}HdaLab - Éditorialisation : Tous les dossiers{% endblock %}
+
+{% block css_import %}
+{{block.super}}
+<link rel="stylesheet" type="text/css" href="{% static 'hdalab/css/profile.css' %}" />
+{% endblock %}
+
+{% block main_content %}
+<p><a href="{% url 'add_or_update_folder' %}">Nouveau dossier</a></p>
+<table>
+ <tr class="border_bottom">
+ <th>Url</th>
+ <th>Titre</th>
+ <th>Description</th>
+ <th>Liste</th>
+ <th>Éditer</th>
+ <th>Effacer</th>
+ </tr>
+ {% for f in folders %}
+ <tr class="border_bottom">
+ <td><a href="{{f.url}}" title="{{f.url}}" target="_blank">{{f.url|short_url}}</a></td>
+ <td>{{f.title}}</td>
+ <td>{{f.description}}</td>
+ <td class="list"><ul>{% for d in f.datasheets.all %}<li>{{ d.title }}</li>{% endfor %}</ul></td>
+ <td class="text_centered"><a href="{% url 'hdalab_add_or_update_folder' folder_pk=f.pk %}"><img src="{% static 'hdabo/img/pen.png' %}"/></a></td>
+ <td class="text_centered"><a class="" href="{% url 'hdalab_delete_folder' folder_pk=f.pk %}" onclick="return confirm('Êtes-vous sûr(e) ? Cette action est définitive.')"><img src="{% static 'hdabo/img/tag_remove.png' %}"/></a></td>
+ </tr>
+ {% endfor %}
+</table>
+{% endblock %}
--- a/src/hdalab/urls.py Tue Sep 02 17:55:25 2014 +0200
+++ b/src/hdalab/urls.py Wed Sep 03 16:43:52 2014 +0200
@@ -4,6 +4,8 @@
from hdalab.views.profile import ProfileHome, RenkanEdit, HdalabRenkanGetPut,\
RenkanNew, RenkanPublicList, HdalabRenkanCopy, HdalabRenkanDelete
from django.contrib.auth.decorators import login_required
+from hdalab.views.editorial import HdalabFolders, HdalabAddOrUpdateFolder,\
+ HdalabDeleteFolder
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
@@ -42,6 +44,10 @@
url(r'^renkan/public/$', RenkanPublicList.as_view(), name='renkan_public_list'),
url(r'^ajaxlogin/$', "hdalab.views.profile.ajax_login", name='ajax_login'),
url(r'^ajaxloginok/$', TemplateView.as_view(template_name="ajax_identification/ajax_login_ok.html"), name='ajax_login_ok'),
+ url(r'^edito/folders/$', login_required(HdalabFolders.as_view()), name='hdalab_folders'),
+ url(r'^edito/folder/$', login_required(HdalabAddOrUpdateFolder.as_view()), name='hdalab_add_or_update_folder'),
+ url(r'^edito/folder/(?P<folder_pk>[\w-]+)$', login_required(HdalabAddOrUpdateFolder.as_view()), name='hdalab_add_or_update_folder'),
+ url(r'^edito/deletefolder/(?P<folder_pk>[\w-]+)$', login_required(HdalabDeleteFolder.as_view()), name='hdalab_delete_folder'),
)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hdalab/views/editorial.py Wed Sep 03 16:43:52 2014 +0200
@@ -0,0 +1,33 @@
+# -*- coding: utf-8 -*-
+'''
+Created on Jul 01, 2014
+
+@author: tc
+'''
+
+#from datetime import datetime
+from django.conf import settings
+from django.shortcuts import get_object_or_404, redirect
+#from django.views.generic import TemplateView, View
+from hdabo.models import Folder
+from hdabo.views import Folders, AddOrUpdateFolder, SearchDatasheet,\
+ DeleteFolder
+
+
+import logging
+logger = logging.getLogger(__name__)
+
+
+class HdalabFolders(Folders):
+ template_name = "editorial/folders.html"
+
+
+
+class HdalabAddOrUpdateFolder(AddOrUpdateFolder):
+ template_name = "editorial/add_or_update_folder.html"
+ redirect_view = 'hdalab_folders'
+
+
+
+class HdalabDeleteFolder(DeleteFolder):
+ redirect_view = 'hdalab_folders'
\ No newline at end of file