Commit 73e729f3 authored by gijs's avatar gijs

Merge branch 'master' of gitlab.constantvzw.org:osp/work.w

parents 5b2c76d5 aa58fc86
This diff is collapsed.
......@@ -10,8 +10,11 @@ window.W = window.W || {};
region: 'body',
onStart: function(options) {
this.showView(new W.BaseView());
var router = new W.ScoreRouter({application: this});
/** Starts the URL handling framework */
Backbone.history.start({
pushState: true,
......
......@@ -7,14 +7,23 @@ window.W = window.W || {};
'use strict';
W.ScoreController = Backbone.Marionette.Object.extend({
home: function () {
var baseView = this.getOption('application').getView();
var view = new W.HomeView();
baseView.showChildView('main', view);
},
about: function () {
var baseView = this.getOption('application').getView();
var view = new W.AboutView();
baseView.showChildView('main', view);
},
scoreList: function () {
var app = this.getOption('application');
// app.getRegion().empty();
var myListView = new W.ScoreListView();
app.showView(myListView);
var baseView = this.getOption('application').getView();
var view = new W.ScoreListView();
baseView.showChildView('main', view);
},
scoreDetail: function (id) {
var app = this.getOption('application');
var baseView = this.getOption('application').getView();
// Backbone relational refuse to instantiate more than one model
// with the same id
......@@ -25,7 +34,7 @@ window.W = window.W || {};
// Attach the views when the model is successfully fetched
scoreModel.fetch({
success: (function () {
app.showView(myScoreDetailView);
baseView.showChildView('main', myScoreDetailView);
}).bind(this)
});
}
......
......@@ -10,8 +10,10 @@ window.W = window.W || {};
// controller: W.ScoreController,
appRoutes: {
'': 'scoreList',
':id(/)': 'scoreDetail',
'': 'home',
'apropos(/)': 'about',
'partitions(/)': 'scoreList',
'partitions/:id(/)': 'scoreDetail',
},
initialize: function (options) {
......
......@@ -1164,7 +1164,7 @@ window.W = window.W || {};
title: newModel.get("title") + " (copy)",
}, {
success: function () {
Backbone.history.navigate('/' + newModel.id, {
Backbone.history.navigate('/partitions/' + newModel.id, {
trigger: true
});
}
......@@ -1401,6 +1401,8 @@ window.W = window.W || {};
W.ScoreListView = Backbone.Marionette.View.extend({
template: '#score-list-template',
attributes: { class: 'score-list' },
regions: {
search: '#search',
list: '#list',
......@@ -1420,11 +1422,7 @@ window.W = window.W || {};
currentPage: 1,
sortKey: "created_at",
order: -1
},
// queryParams: {
// search: "Ménagerie"
// }
}
});
var myListView = new W.ListView({
......@@ -1453,4 +1451,101 @@ window.W = window.W || {};
});
}
});
/**
* Other views
*/
W.AboutView = Backbone.Marionette.View.extend({
template: '#about-template',
attributes: { class: 'body-text body-text--about' }
});
W.HomeView = Backbone.Marionette.View.extend({
template: '#home-template',
regions: {
latest_updated: '#latest_updated'
},
onRender: function () {
var that = this;
document.title = 'Notation W';
var scoreCollection = new W.ScoreCollection([], {
state: {
pageSize: 10,
firstPage: 1,
currentPage: 1,
sortKey: "updated_at",
order: -1
}
});
var myListView = new W.ListView({
collection: scoreCollection
});
myListView.collection.fetch({
success: function () {
that.showChildView('latest_updated', myListView);
}
});
}
});
W.HeaderView = Backbone.Marionette.View.extend({
tagName: 'header',
template: '#header-template',
attributes: {
class: 'main-header'
},
ui: {
'toggle': '.btn-hamburger',
},
triggers: {
'click @ui.toggle': 'toggle',
},
onToggle: function() {
this.$el.toggleClass('main-header--collapsed');
}
});
/**
* Base view, the mother of all views
*/
W.BaseView = Backbone.Marionette.View.extend({
template: '#base-template',
attributes: {
class: 'outer-wrapper',
},
regions: {
header: {
el: '.main-header',
replaceElement: true
},
main: {
el: '.main-area',
// replaceElement: true
}
},
onRender: function () {
this.showChildView('header', new W.HeaderView());
}
});
})();
......@@ -7,10 +7,25 @@
<title>Notation W</title>
<!-- <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Oswald"> -->
<link rel="stylesheet" href="{% static 'playground/vendors/reset.css' %}">
<link rel="stylesheet" href="{% static 'playground/css/styles.css' %}">
<script id="base-template" type="text/template">
{% include "playground/underscore/base.mtpl" %}
</script>
<script id="header-template" type="text/template">
{% include "playground/underscore/header.mtpl" %}
</script>
<script id="home-template" type="text/template">
{% include "playground/underscore/home.mtpl" %}
</script>
<script id="about-template" type="text/template">
{% include "playground/underscore/about.mtpl" %}
</script>
<script id="score-list-template" type="text/template">
{% include "playground/underscore/score-list.mtpl" %}
</script>
......
<p>La notation W est un système de notation de l’action performée. La notation W permet aussi bien de transcrire une performance qui a déjà eu lieu (dans le cas d’une passation de rôle, par exemple, ou de la constitution d’un répertoire) que d’élaborer la partition générale d’un spectacle à venir. Dans tous les cas, elle se veut un instrument de partage et de clarification des enjeux d’un travail collectif, matérialisés et objectivés par la partition.</p>
<p>La notation W repose sur une succession d’énoncés centrés sur un verbe à l’infinitif, à la manière des instructions ou <em>tasks</em> de chorégraphes et d’artistes tels que Simone Forti, Yvonne Rainer ou Sol LeWitt. Ces énoncés, qui utilisent le langage ordinaire pour désigner l’action en train de se faire (et non son but), W les appelle des axes. Combinés entre eux selon des règles précises, les axes forment la base de la notation W.</p>
<p>La notation W permet d’envisager de manière immédiate l’ensemble des dimensions d’une action performée :</p>
<ul>
<li>sur un plan chronologique, la succession raisonnée des actions performées;</li>
<li>sur un plan analytique, l’explicitation de chaque axe, c’est­à­dire sa subdivision en sous­axes qui en précisent le sens et le contenu, eux­mêmes divisés en sous­sous­axes etc., jusqu’au degré de précision jugé nécessaire par le notateur;</li>
<li>sur un plan paradigmatique, les actions simultanées et/ou alternatives.</li>
</ul>
<p>Une partition W est un système ouvert, qui peut tout à fait contenir des morceaux d’autres systèmes notationnels (la partition d’une fugue de Bach, une chorégraphie de Merce Cunningham générée par LifeForms, le texte de <em>Richard III</em>, un plan de scène). Il ne s’agit donc pas de se substituer à un système de notation existant (la danse ou la musique, par exemple, disposent de systèmes notationnels complets et rigoureux) mais de créer une structure multidimensionnelle permettant d’intégrer leurs partitions (et d’autres : texte, conduites lumière, son enregistré...) dans un ensemble plus vaste et articulé.</p>
<div id="score" tabindex="1"></div>
<header class="main-header"></header>
<main class="main-area"></main>
<form class="create-form" action="" method="post">
<input type="text" name="title" placeholder="title" required>
<input type="submit" name="submit" value="create">
</form>
<section>
<h1>Créer une nouvelle partition</h1>
<form class="create-form" action="" method="post">
<input type="text" name="title" placeholder="titre" required>
<input type="submit" name="submit" value="Créer">
</form>
</section>
<!-- • FR/EN -->
<!-- • ateliers et présentations (agenda) -->
<!-- • texte de présentation (+ lien vers site W) -->
<!-- • “créer une partition W” > MODE EDIT -->
<!-- • “lire des partitions W existantes” > MODE LECTURE -->
<!-- • Aide -->
<!-- • crédits -->
<div class="btn-hamburger js-collapse">☰</div>
<nav>
Bienvenue {{ user.username }}
<ul>
{% if user.is_authenticated %}
<li><a href="{% url 'auth_logout' %}">Se déconnecter</a></li>
{% else %}
<li><a href="{% url 'auth_login' %}">Se connecter</a></li>
<li><a href="{% url 'registration_register' %}">S'inscrire</a></li>
{% endif %}
</ul>
</nav>
<div class="logo">
<h1><a href="/">Organon</a></h1>
<h2>Un logiciel pour noter l’action performée, développé par W</h2>
</div>
<nav>
<ul>
<li><a href="/apropos/">À propos</a></li> <!-- + crédits -->
<li><a href="/partitions/">Partitions</a></li>
<li><a href="#">Aide</a></li>
</ul>
</nav>
<div id="intro" class="body-text body-text--about">
<p>La notation W est un système de notation de l’action performée. La notation W permet aussi bien de transcrire une performance qui a déjà eu lieu (dans le cas d’une passation de rôle, par exemple, ou de la constitution d’un répertoire) que d’élaborer la partition générale d’un spectacle à venir. Dans tous les cas, elle se veut un instrument de partage et de clarification des enjeux d’un travail collectif, matérialisés et objectivés par la partition.</p>
<p><a href="/apropos/">En savoir plus</a></p>
</div>
<br>
<br>
<section>
<h1>Partitions mises à jour récemment</h1>
<div id="latest_updated"></div>
</section>
<a href="<%= id %>"><%= title %></a> <!-- (<a href="#" class="delete">supprimer</a>, <a href="#" class="duplicate">dupliquer</a>) -->
<a href="/partitions/<%= id %>"><%= title %></a> <!-- (<a href="#" class="delete">supprimer</a>, <a href="#" class="duplicate">dupliquer</a>) -->
<% if (hasPreviousPage) { %>
<span class="previous-page">Previous</span>
<span class="previous-page">Précédente</span> |
<% } %>
| page <%= currentPage %> de <%= lastPage %> |
page <%= currentPage %> de <%= lastPage %>
<% if (hasNextPage) { %>
<span class="next-page">Next</span>
| <span class="next-page">Suivante</span>
<% } %>
<div id="search"></div>
<div id="list"></div>
<div id="pagination"></div>
<div id="create"></div>
<br>
<br>
<div>
<h1>Partitions existantes</h1>
<div id="search"></div>
<div id="list"></div>
<div id="pagination"></div>
</div>
<div id="main-area">
<div id="expand-level-slider"></div>
<a href="../../" id="index-link">index</a>
<div id="axis-wrapper">
<ol></ol>
</div>
......
<input type="text" placeholder="Term" class="search-input">
<button class="search">search</button>
<input type="text" placeholder="Titre" class="search-input">
<button class="search">rechercher</button>
<br>
<br>
......@@ -37,7 +37,7 @@ class ScoreViewSet(viewsets.ModelViewSet):
"""
Expose a lighter set of fields when a list is required
"""
if self.action == 'list':
if self.action in ['list']:
return ScoreLightSerializer
else:
return ScoreSerializer
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment