Added images
authorveltr
Thu, 06 Sep 2012 17:21:11 +0200
changeset 37 db991a757015
parent 36 d249d36ecc37
child 38 092fc99f7558
Added images
client/css/renkan.css
client/data/test-data.json
client/img/ldt-elements.png
client/img/ldt-point.png
client/img/ldt-segment.png
client/img/ldt-tag.png
client/js/i18n.js
client/js/ldtjson-bin.js
client/js/main.js
client/js/models.js
client/js/paper-renderer.js
client/js/renkan-publish.js
client/js/twitter-bin.js
client/js/wikipedia-bin.js
client/render-test.html
--- a/client/css/renkan.css	Wed Sep 05 14:49:33 2012 +0200
+++ b/client/css/renkan.css	Thu Sep 06 17:21:11 2012 +0200
@@ -182,14 +182,14 @@
 }
 
 .Rk-Editor label {
-    display: inline-block; width: 80px;
+    display: inline-block; width: 70px;
 }
 
 a.Rk-Edit-Goto {
     display: block; float: right; width: 18px; height: 17px; margin: 1px 0; border: none; background: url(../img/goto.png);
 }
 
-.Rk-Edit-Title {
+.Rk-Edit-Title, .Rk-Edit-URI, .Rk-Edit-Image {
     font-size: 12px; width: 225px;
 }
 
@@ -197,6 +197,11 @@
     font-size: 12px; width: 205px;
 }
 
+.Rk-Edit-ImgPreview {
+    border: 1px solid #666; margin: 5px 0; min-height: 10px; display: block;
+    max-width: 100% !important; max-height: 100px !important;
+}
+
 .Rk-Editor textarea {
     width: 225px; height: 120px; resize: none;
 }
@@ -414,7 +419,7 @@
 }
 
 .Rk-Wikipedia-Icon {
-    float: left; width: 52px; height: 47px; background: url(../img/wikipedia.png);
+    float: left; margin: 3px;
 }
 
 .Rk-Wikipedia-Title-Icon {
@@ -441,18 +446,14 @@
     margin-left: 54px;
 }
 
-.Rk-Ldt-Icon {
-    float: left; width: 49px; background: url(../img/ldt-elements.png);
-}
-
-.Rk-Ldt-TagIcon {
-    height: 19px;
+.Rk-Ldt-Tag-Icon {
+    float: left; margin: 0 2px 0 0;
 }
 
-.Rk-Ldt-PointIcon {
-    height: 29px; background-position: 0 -19px;
+.Rk-Ldt-Annotation-Icon {
+    float: left; margin: 3px;
 }
 
-.Rk-Ldt-SegmentIcon {
-    height: 29px; background-position: 0 -48px;
+.Rk-Clear {
+    clear: both;
 }
--- a/client/data/test-data.json	Wed Sep 05 14:49:33 2012 +0200
+++ b/client/data/test-data.json	Thu Sep 06 17:21:11 2012 +0200
@@ -1,19 +1,19 @@
 {
     "users": [
         {
-            "id": "u-anonymous",
+            "_id": "u-anonymous",
             "title": "anonymous",
             "uri": "",
             "description": "",
             "color": "#dd00dd"
         }, {
-            "id": "u-cybunk",
+            "_id": "u-cybunk",
             "title": "Samuel",
             "uri": "http://twitter.com/cybunk",
             "description": "",
             "color": "#e00000"
         }, {
-            "id": "u-raphv",
+            "_id": "u-raphv",
             "title": "Raphael",
             "uri": "http://twitter.com/raphv",
             "description": "",
@@ -22,7 +22,7 @@
     ],
     "nodes": [
         {
-            "id": "node-2012-08-22-9da6eef6c6391d05-0001",
+            "_id": "node-2012-08-22-9da6eef6c6391d05-0001",
             "title": "Chocs technologiques et tâches de l’université...",
             "uri": "http://ldt.iri.centrepompidou.fr/ldtplatform/ldt/front/player/e328e188-ff2f-11e0-b9e1-00145ea49a02/#id=s_6C326EED-B91A-AEDF-032D-40D9A60AAD7E",
             "description": "Bernard Stiegler:\nChocs technologiques et tâches de l’université. L'époque des digital studies\nベルナール・スティグレールによるプレゼンテーション『テクノロジーの衝撃と大学の諸課題――デジタル・スタディーズの時代』 (langue française フランス語)",
@@ -30,39 +30,43 @@
                 "x": 35.50145330596697,
                 "y": -79.8809523809524
             },
+            "image": "http://www.iri.centrepompidou.fr/dev/~veltr/hitachi-tests/img/ldt-segment.png",
             "created_by": "u-cybunk"
         }, {
-            "id": "node-2012-08-22-9da6eef6c6391d05-0002",
+            "_id": "node-2012-08-22-9da6eef6c6391d05-0002",
             "title": "Wiki: ベルナール・スティグレール",
             "uri": "http://ja.wikipedia.org/wiki/%E3%83%99%E3%83%AB%E3%83%8A%E3%83%BC%E3%83%AB%E3%83%BB%E3%82%B9%E3%83%86%E3%82%A3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%AB",
             "description": "|image_name = Bernard-Stiegler.jpg\n'''ベルナール・スティグレール'''('''Bernard Stiegler''',[[1952年]][[4月1日]] - )は、[[フランス]]の[[哲学者]]。\n",
             "position": {
-                "x": -196.21861947454883,
-                "y": -149.00697345010028
+                "x": -212.89325104742056,
+                "y": -142.05921029473706
             },
+            "image": "http://www.iri.centrepompidou.fr/dev/~veltr/hitachi-tests/img/wikipedia.png",
             "created_by": "u-raphv"
         }, {
-            "id": "node-2012-08-22-9da6eef6c6391d05-0003",
+            "_id": "node-2012-08-22-9da6eef6c6391d05-0003",
             "title": "Wiki: Bernard Stiegler",
             "uri": "http://fr.wikipedia.org/wiki/Bernard_Stiegler",
             "description": "Bernard Stiegler, né le 1 | avril | 1952, est un philosophe  français  qui axe sa réflexion sur les enjeux des mutations actuelles —  ... ",
             "position": {
-                "x": -203.78187077358191,
-                "y": -298.3662919065874
+                "x": -199.613212880364,
+                "y": -297.6715155910511
             },
+            "image": "http://www.iri.centrepompidou.fr/dev/~veltr/hitachi-tests/img/wikipedia.png",
             "created_by": "u-raphv"
         }, {
-            "id": "node-2012-08-22-9da6eef6c6391d05-0004",
+            "_id": "node-2012-08-22-9da6eef6c6391d05-0004",
             "title": "Tag: Stiegler",
             "uri": "http://ldt.iri.centrepompidou.fr/ldtplatform/ldt/front/search/?search=Stiegler&field=all",
             "description": "Tag 'Stiegler'",
             "position": {
-                "x": -82.30326393358813,
-                "y": -220.3518547582561
+                "x": -68.40773762286169,
+                "y": -205.76155213199334
             },
+            "image": "http://www.iri.centrepompidou.fr/dev/~veltr/hitachi-tests/img/ldt-tag.png",
             "created_by": "u-raphv"
         }, {
-            "id": "node-2012-08-22-9da6eef6c6391d05-0009",
+            "_id": "node-2012-08-22-9da6eef6c6391d05-0009",
             "title": "Wiki: Humanités numériques",
             "uri": "http://fr.wikipedia.org/wiki/Humanit%C3%A9s_num%C3%A9riques",
             "description": "une proposition de définition a été élaborée lors du THATCamp des 18 et 19 mai 2010 sous la forme d'un « Manifeste des digital humanities : ... ",
@@ -70,9 +74,10 @@
                 "x": -227.84295519248332,
                 "y": 91.1816115015538
             },
+            "image": "http://www.iri.centrepompidou.fr/dev/~veltr/hitachi-tests/img/wikipedia.png",
             "created_by": "u-raphv"
         }, {
-            "id": "node-2012-08-22-9da6eef6c6391d05-000a",
+            "_id": "node-2012-08-22-9da6eef6c6391d05-000a",
             "title": "Wiki: デジタル・ヒューマニティーズ",
             "uri": "http://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB%E3%83%BB%E3%83%92%E3%83%A5%E3%83%BC%E3%83%9E%E3%83%8B%E3%83%86%E3%82%A3%E3%83%BC%E3%82%BA",
             "description": "...(digital humanities)は、コンピューティングと人文科学(humanities)諸分野と間の接点に関して調査、研究、教育、および�\n* Centre for Computing in the Humanities\n",
@@ -80,19 +85,20 @@
                 "x": -221.48701615763574,
                 "y": 242.80740052545508
             },
+            "image": "http://www.iri.centrepompidou.fr/dev/~veltr/hitachi-tests/img/wikipedia.png",
             "created_by": "u-raphv"
         }, {
-            "id": "node-2012-08-22-9da6eef6c6391d05-000b",
+            "_id": "node-2012-08-22-9da6eef6c6391d05-000b",
             "title": "Digital studies",
             "uri": "",
             "description": "",
             "position": {
-                "x": -55.85113246487888,
-                "y": 51.55194408866958
+                "x": -62.798895620242085,
+                "y": 32.09820725365255
             },
             "created_by": "u-raphv"
         }, {
-            "id": "node-2012-08-22-9da6eef6c6391d05-000c",
+            "_id": "node-2012-08-22-9da6eef6c6391d05-000c",
             "title": "Digital Humanities",
             "uri": "",
             "description": "",
@@ -102,7 +108,7 @@
             },
             "created_by": "u-raphv"
         }, {
-            "id": "node-2012-08-22-b778a9fc31296d6b-0008",
+            "_id": "node-2012-08-22-b778a9fc31296d6b-0008",
             "title": "Les rétentions (Tweet)",
             "uri": "http://ldt.iri.centrepompidou.fr/ldtplatform/ldt/front/player/e328e188-ff2f-11e0-b9e1-00145ea49a02/#id=a924b90c-46a1-4f0a-9e13-bcf69f7b5de0-127750274034049024",
             "description": "Tweet by Vincent Puig: #tfcem Les rétentions primaires (perception) s'aggrégent et forment des rétentions secondaires (mémoire), gravées sur rétentions tertiaires",
@@ -110,52 +116,57 @@
                 "x": 186.15055288633457,
                 "y": -184.66836073709257
             },
+            "image": "http://a1.twimg.com/profile_images/379424006/PortaitVP120Ko_normal.jpg",
             "created_by": "u-cybunk"
         }, {
-            "id": "node-2012-08-22-b778a9fc31296d6b-0009",
+            "_id": "node-2012-08-22-b778a9fc31296d6b-0009",
             "title": "L'origine de la géométrie (Tweet)",
             "uri": "http://ldt.iri.centrepompidou.fr/ldtplatform/ldt/front/player/e328e188-ff2f-11e0-b9e1-00145ea49a02/#id=5b34ae61-ffb1-4535-a479-007cb0ef57e8-127752118743474177",
             "description": "Tweet by Vincent Puig: #tfcem L'origine de la géométrie: l'écriture est processus long de transindividuation. Nos tweets quasi temps réel sont de même nature++",
             "position": {
-                "x": 109.36171738186508,
-                "y": -322.7405203211109
+                "x": 87.82365160023906,
+                "y": -280.3591650733953
             },
+            "image": "http://a1.twimg.com/profile_images/379424006/PortaitVP120Ko_normal.jpg",
             "created_by": "u-cybunk"
         }, {
-            "id": "node-2012-08-22-b778a9fc31296d6b-000a",
+            "_id": "node-2012-08-22-b778a9fc31296d6b-000a",
             "title": "Polemictweet : un outil Digital Studies (Tweet)",
             "uri": "http://ldt.iri.centrepompidou.fr/ldtplatform/ldt/front/player/e328e188-ff2f-11e0-b9e1-00145ea49a02/#id=4b34e895-221b-467b-a0f2-8ff4ae87cae4-127758736415666177",
             "description": "Tweet by Vincent Puig:\n#tfcem Polemictweet : un outil Digital Studies pensé à l'IRI comme rétention tertiaire numérique avec les même armes que l'industrie",
             "position": {
-                "x": 174.8441677339912,
-                "y": 69.79052957489553
+                "x": 168.59118089416432,
+                "y": 57.97933221077804
             },
+            "image": "http://a1.twimg.com/profile_images/379424006/PortaitVP120Ko_normal.jpg",
             "created_by": "u-cybunk"
         }, {
-            "id": "node-2012-08-22-b778a9fc31296d6b-000f",
+            "_id": "node-2012-08-22-b778a9fc31296d6b-000f",
             "title": "Rétention (Définition AI)",
             "uri": "http://arsindustrialis.org/vocabulaire-ars-industrialis/r%C3%A9tention",
             "description": "Les rétentions sont ce qui est retenu ou recueilli par la conscience. Ce terme est emprunté à Husserl ; mais les rétentions tertiaires sont propres à la philosophie de Bernard Stiegler.\n\nLes rétentions sont des sélections : dans le flux de conscience que vous êtes vous ne pouvez pas tout retenir, ce que vous retenez est ce que vous êtes, mais ce que vous retenez dépend ce que vous avez déjà retenu.\n\nL’espèce humaine, étant originairement constituée par sa prothéticité, dispose d’une troisième mémoire, ni génétique, ni épigénétique : le milieu épiphylogénétique, comme ensemble des rétentions tertiaires formant des dispositifs rétentionels.",
             "position": {
-                "x": 240.98461723225768,
-                "y": -53.794373087027985
+                "x": 276.41820932461013,
+                "y": -62.82646518900019
             },
+            "image": "http://www.arsindustrialis.org/sites/default/files/userfiles/user3/Logovocabulairenoir.JPG",
             "created_by": "u-cybunk"
         }, {
-            "id": "node-2012-08-22-5b349e49066c1b01-0001",
+            "_id": "node-2012-08-22-5b349e49066c1b01-0001",
             "title": "Polemic Tweet",
             "uri": "http://polemictweet.com/",
             "description": "Polemic Tweet Web Site",
             "position": {
-                "x": 220.27339862010322,
-                "y": 209.95821750254615
+                "x": 220.96817493563964,
+                "y": 196.75746750735607
             },
+            "image": "http://www.polemictweet.com/images/ENMI_2010_logo.gif",
             "created_by": "u-cybunk"
         }
     ],
     "edges": [
         {
-            "id": "edge-2012-08-22-9da6eef6c6391d05-0005",
+            "_id": "edge-2012-08-22-9da6eef6c6391d05-0005",
             "title": "is about",
             "uri": "",
             "description": "",
@@ -163,7 +174,7 @@
             "to": "node-2012-08-22-9da6eef6c6391d05-0004",
             "created_by": "u-raphv"
         }, {
-            "id": "edge-2012-08-22-9da6eef6c6391d05-0006",
+            "_id": "edge-2012-08-22-9da6eef6c6391d05-0006",
             "title": "is about",
             "uri": "",
             "description": "",
@@ -171,7 +182,7 @@
             "to": "node-2012-08-22-9da6eef6c6391d05-0004",
             "created_by": "u-raphv"
         }, {
-            "id": "edge-2012-08-22-9da6eef6c6391d05-0007",
+            "_id": "edge-2012-08-22-9da6eef6c6391d05-0007",
             "title": "speech by",
             "uri": "",
             "description": "",
@@ -179,7 +190,7 @@
             "to": "node-2012-08-22-9da6eef6c6391d05-0004",
             "created_by": "u-raphv"
         }, {
-            "id": "edge-2012-08-22-b778a9fc31296d6b-0001",
+            "_id": "edge-2012-08-22-b778a9fc31296d6b-0001",
             "title": "is about",
             "uri": "",
             "description": "",
@@ -187,7 +198,7 @@
             "to": "node-2012-08-22-9da6eef6c6391d05-000b",
             "created_by": "u-raphv"
         }, {
-            "id": "edge-2012-08-22-b778a9fc31296d6b-0002",
+            "_id": "edge-2012-08-22-b778a9fc31296d6b-0002",
             "title": "Are related to",
             "uri": "",
             "description": "",
@@ -195,7 +206,7 @@
             "to": "node-2012-08-22-9da6eef6c6391d05-000c",
             "created_by": "u-raphv"
         }, {
-            "id": "edge-2012-08-22-b778a9fc31296d6b-0003",
+            "_id": "edge-2012-08-22-b778a9fc31296d6b-0003",
             "title": "is about",
             "uri": "",
             "description": "",
@@ -203,7 +214,7 @@
             "to": "node-2012-08-22-9da6eef6c6391d05-000c",
             "created_by": "u-raphv"
         }, {
-            "id": "edge-2012-08-22-b778a9fc31296d6b-0004",
+            "_id": "edge-2012-08-22-b778a9fc31296d6b-0004",
             "title": "is about",
             "uri": "",
             "description": "",
@@ -211,7 +222,7 @@
             "to": "node-2012-08-22-9da6eef6c6391d05-000c",
             "created_by": "u-raphv"
         }, {
-            "id": "edge-2012-08-22-b778a9fc31296d6b-000b",
+            "_id": "edge-2012-08-22-b778a9fc31296d6b-000b",
             "title": "is about",
             "uri": "",
             "description": "",
@@ -219,7 +230,7 @@
             "to": "node-2012-08-22-9da6eef6c6391d05-000b",
             "created_by": "u-raphv"
         }, {
-            "id": "edge-2012-08-22-b778a9fc31296d6b-000c",
+            "_id": "edge-2012-08-22-b778a9fc31296d6b-000c",
             "title": "tweeted during",
             "uri": "",
             "description": "",
@@ -227,7 +238,7 @@
             "to": "node-2012-08-22-9da6eef6c6391d05-0001",
             "created_by": "u-cybunk"
         }, {
-            "id": "edge-2012-08-22-b778a9fc31296d6b-000d",
+            "_id": "edge-2012-08-22-b778a9fc31296d6b-000d",
             "title": "tweeted during",
             "uri": "",
             "description": "",
@@ -235,7 +246,7 @@
             "to": "node-2012-08-22-9da6eef6c6391d05-0001",
             "created_by": "u-cybunk"
         }, {
-            "id": "edge-2012-08-22-b778a9fc31296d6b-000e",
+            "_id": "edge-2012-08-22-b778a9fc31296d6b-000e",
             "title": "tweeted during",
             "uri": "",
             "description": "",
@@ -243,7 +254,7 @@
             "to": "node-2012-08-22-9da6eef6c6391d05-0001",
             "created_by": "u-cybunk"
         }, {
-            "id": "edge-2012-08-22-b778a9fc31296d6b-0011",
+            "_id": "edge-2012-08-22-b778a9fc31296d6b-0011",
             "title": "is about",
             "uri": "",
             "description": "",
@@ -251,7 +262,7 @@
             "to": "node-2012-08-22-b778a9fc31296d6b-000f",
             "created_by": "u-cybunk"
         }, {
-            "id": "edge-2012-08-22-b778a9fc31296d6b-0012",
+            "_id": "edge-2012-08-22-b778a9fc31296d6b-0012",
             "title": "is about",
             "uri": "",
             "description": "",
@@ -259,13 +270,29 @@
             "to": "node-2012-08-22-b778a9fc31296d6b-000f",
             "created_by": "u-cybunk"
         }, {
-            "id": "edge-2012-08-22-5b349e49066c1b01-0002",
+            "_id": "edge-2012-08-22-5b349e49066c1b01-0002",
             "title": "is about",
             "uri": "",
             "description": "",
             "from": "node-2012-08-22-b778a9fc31296d6b-000a",
             "to": "node-2012-08-22-5b349e49066c1b01-0001",
             "created_by": "u-cybunk"
+        }, {
+            "_id": "edge-2012-09-06-70cc0c2d5e1112d3-0001",
+            "title": "is an example of",
+            "uri": "",
+            "description": "",
+            "from": "node-2012-08-22-b778a9fc31296d6b-000a",
+            "to": "node-2012-08-22-9da6eef6c6391d05-000b",
+            "created_by": "u-anonymous"
+        }, {
+            "_id": "edge-2012-09-06-70cc0c2d5e1112d3-0002",
+            "title": "tool used",
+            "uri": "",
+            "description": "",
+            "from": "node-2012-08-22-5b349e49066c1b01-0001",
+            "to": "node-2012-08-22-b778a9fc31296d6b-000a",
+            "created_by": "u-anonymous"
         }
     ]
 }
\ No newline at end of file
Binary file client/img/ldt-elements.png has changed
Binary file client/img/ldt-point.png has changed
Binary file client/img/ldt-segment.png has changed
Binary file client/img/ldt-tag.png has changed
--- a/client/js/i18n.js	Wed Sep 05 14:49:33 2012 +0200
+++ b/client/js/i18n.js	Thu Sep 06 17:21:11 2012 +0200
@@ -7,6 +7,7 @@
         edit_description: "Description:",
         edit_from: "From:",
         edit_to: "To:",
+        edit_image: "Image:",
         full_screen: "Full Screen",
         add_node: "Add Node",
         add_edge: "Add Edge",
@@ -26,11 +27,12 @@
     fr: {
         edit_node: "Édition d’un nœud",
         edit_edge: "Édition d’un lien",
-        edit_title: "Titre:",
-        edit_uri: "URI:",
+        edit_title: "Titre :",
+        edit_uri: "URI :",
         edit_description: "Description :",
-        edit_from: "De:",
-        edit_to: "Vers:",
+        edit_from: "De :",
+        edit_to: "Vers :",
+        edit_image: "Image :",
         full_screen: "Mode plein écran",
         add_node: "Ajouter un nœud",
         add_edge: "Ajouter un lien",
--- a/client/js/ldtjson-bin.js	Wed Sep 05 14:49:33 2012 +0200
+++ b/client/js/ldtjson-bin.js	Thu Sep 06 17:21:11 2012 +0200
@@ -3,13 +3,13 @@
 Rkns.Ldt.ProjectBin = Rkns.Utils.inherit(Rkns._BaseBin);
 
 Rkns.Ldt.ProjectBin.prototype.tagTemplate = Rkns._.template(
-    '<li class="Rk-Bin-Item" data-uri="<%=ldt_platform%>ldtplatform/ldt/front/search/?search=<%=encodedtitle%>&field=all" data-title="<%-title%>" data-description="Tag \'<%-title%>\'">'
-    + '<div class="Rk-Ldt-Icon Rk-Ldt-TagIcon"></div><h4><%-title%></h4></li>'
+    '<li class="Rk-Bin-Item" data-image="img/ldt-tag.png" data-uri="<%=ldt_platform%>ldtplatform/ldt/front/search/?search=<%=encodedtitle%>&field=all" data-title="<%-title%>" data-description="Tag \'<%-title%>\'">'
+    + '<img class="Rk-Ldt-Tag-Icon" src="img/ldt-tag.png" /><h4><%-title%></h4><div class="Rk-Clear"></div></li>'
 );
 
 Rkns.Ldt.ProjectBin.prototype.annotationTemplate = Rkns._.template(
-    '<li class="Rk-Bin-Item" data-uri="<%=ldt_platform%>ldtplatform/ldt/front/player/<%=mediaid%>/#id=<%=annotationid%>" data-title="<%-title%>" data-description="<%-description%>">'
-    + '<div class="Rk-Ldt-Icon Rk-Ldt-<%=type%>Icon"></div><h4><%-title%></h4><p><%-description%></p><p>Start: <%=start%>, End: <%=end%>, Duration: <%=duration%></p></li>'
+    '<li class="Rk-Bin-Item" data-image="<%=image%>" data-uri="<%=ldt_platform%>ldtplatform/ldt/front/player/<%=mediaid%>/#id=<%=annotationid%>" data-title="<%-title%>" data-description="<%-description%>">'
+    + '<img class="Rk-Ldt-Annotation-Icon" src="<%=image%>"/><h4><%-title%></h4><p><%-description%></p><p>Start: <%=start%>, End: <%=end%>, Duration: <%=duration%></p><div class="Rk-Clear"></div></li>'
 );
 
 Rkns.Ldt.ProjectBin.prototype._init = function(_renkan, _opts) {
@@ -54,7 +54,12 @@
             _html += Rkns._(_data.annotations).map(function(_annotation) {
                 var _description = _annotation.content.description,
                     _title = _annotation.content.title.replace(_description,""),
-                    _duration = _annotation.end - _annotation.begin;
+                    _duration = _annotation.end - _annotation.begin,
+                    _img = (
+                        (_annotation.content && _annotation.content.img && _annotation.content.img.src)
+                        ? _annotation.content.img.src
+                        : ( _duration ? "img/ldt-segment.png" : "img/ldt-point.png" )
+                    );
                 return _this.annotationTemplate({
                     ldt_platform: _this.ldt_platform,
                     title: _title,
@@ -64,7 +69,7 @@
                     duration: convertTC(_duration),
                     mediaid: _annotation.media,
                     annotationid: _annotation.id,
-                    type: _duration ? "Segment" : "Point"
+                    image: _img
                 });
             }).join("");
             
--- a/client/js/main.js	Wed Sep 05 14:49:33 2012 +0200
+++ b/client/js/main.js	Thu Sep 06 17:21:11 2012 +0200
@@ -166,7 +166,8 @@
                 _this.selected_bin_item = {
                     uri : $(_t).attr("data-uri"),
                     title : $(_t).attr("data-title"),
-                    description : $(_t).attr("data-description")
+                    description : $(_t).attr("data-description"),
+                    image: $(_t).attr("data-image")
                 }
                 return false;
             }
--- a/client/js/models.js	Wed Sep 05 14:49:33 2012 +0200
+++ b/client/js/models.js	Thu Sep 06 17:21:11 2012 +0200
@@ -87,6 +87,7 @@
                 uri: this.get("uri"),
                 description: this.get("description"),
                 position: this.get("position"),
+                image: this.get("image"),
                 created_by: this.get("created_by").get("_id")
             };
         },
--- a/client/js/paper-renderer.js	Wed Sep 05 14:49:33 2012 +0200
+++ b/client/js/paper-renderer.js	Thu Sep 06 17:21:11 2012 +0200
@@ -2,9 +2,9 @@
     _MARGIN_X: 80,
     _MARGIN_Y: 50,
     _MIN_DRAG_DISTANCE: 2,
-    _NODE_RADIUS: 15,
-    _NODE_BUTTON_INNER: 16,
-    _NODE_BUTTON_OUTER: 50,
+    _NODE_RADIUS: 25,
+    _NODE_BUTTON_INNER: 26,
+    _NODE_BUTTON_OUTER: 60,
     _EDGE_BUTTON_INNER: 1,
     _EDGE_BUTTON_OUTER: 40,
     _NODE_FONT_SIZE: 10,
@@ -205,7 +205,6 @@
     this.link_button = new Rkns.Renderer.NodeLinkButton(this.renderer, {});
     this.link_button.node_representation = this;
     this.title.paragraphStyle.justification = 'center';
-    this.title.__representation = this;
 }
 
 Rkns.Renderer.Node.prototype.redraw = function() {
@@ -213,11 +212,43 @@
     this.paper_coords = this.renderer.toPaperCoords(_model_coords);
     this.circle.position = this.paper_coords;
     this.title.content = this.model.get("title");
-    this.title.position = this.paper_coords.add([0, 2 * Rkns.Renderer._NODE_RADIUS]);
+    this.title.position = this.paper_coords.add([0, Rkns.Renderer._NODE_RADIUS + 1.5 *Rkns.Renderer._NODE_FONT_SIZE]);
     this.circle.strokeColor = this.model.get("created_by").get("color");
     this.edit_button.moveTo(this.paper_coords);
     this.remove_button.moveTo(this.paper_coords);
     this.link_button.moveTo(this.paper_coords);
+    var _img = this.model.get("image");
+    if (_img && _img !== this.img) {
+        var _image = new Image(),
+            _this = this;
+        _image.onload = function() {
+            if (_this.node_image) {
+                _this.node_image.remove();
+            }
+            _this.renderer.node_layer.activate();
+            var _ratio = Math.min(1, 2 * Rkns.Renderer._NODE_RADIUS / _image.width, 2 * Rkns.Renderer._NODE_RADIUS / _image.height );
+            var _raster = new paper.Raster(_image);
+            var _clip = new paper.Path.Circle([0, 0], Rkns.Renderer._NODE_RADIUS);
+            _raster.scale(_ratio);
+            _this.node_image = new paper.Group(_clip, _raster);
+            _this.node_image.opacity = .9;
+            /* This is a workaround to allow clipping at group level */
+            _this.node_image.clipped = true;
+            _this.node_image.position = _this.paper_coords;
+            _this.node_image.__representation = _this;
+            paper.view.draw();
+        }
+        _image.src = _img;
+    }
+    this.img = _img;
+    if (this.node_image) {
+        if (!this.img) {
+            this.node_image.remove();
+            delete this.node_image;
+        } else {
+            this.node_image.position = this.paper_coords;
+        }
+    }
 }
 
 Rkns.Renderer.Node.prototype.paperShift = function(_delta) {
@@ -236,7 +267,7 @@
     this.renderer.removeRepresentationsOfType("editor");
     var _editor = this.renderer.addRepresentation("NodeEditor",null);
     _editor.node_representation = this;
-    _editor.redraw();
+    _editor.draw();
 }
 
 Rkns.Renderer.Node.prototype.select = function() {
@@ -264,11 +295,17 @@
 }
 
 Rkns.Renderer.Node.prototype.highlight = function() {
-    this.circle.fillColor = "#ffffc0";
+    this.circle.fillColor = "#ffff80";
+    if (this.node_image) {
+        this.node_image.opacity = .5;
+    }
 }
 
 Rkns.Renderer.Node.prototype.unhighlight = function(_newTarget) {
     this.circle.fillColor = "#ffffff";
+    if (this.node_image) {
+        this.node_image.opacity = .9;
+    }
 }
 
 Rkns.Renderer.Node.prototype.mouseup = function(_event) {
@@ -285,6 +322,9 @@
     this.link_button.destroy();
     this.circle.remove();
     this.title.remove();
+    if (this.node_image) {
+        this.node_image.remove();
+    }
 }
 
 /* */
@@ -309,7 +349,6 @@
         fillColor: 'black'
     };
     this.text.paragraphStyle.justification = 'center';
-    this.text.__representation = this;
     this.text_angle = 0;
     this.arrow_angle = 0;
     this.edit_button = new Rkns.Renderer.EdgeEditButton(this.renderer, {});
@@ -360,7 +399,7 @@
     this.renderer.removeRepresentationsOfType("editor");
     var _editor = this.renderer.addRepresentation("EdgeEditor",null);
     _editor.edge_representation = this;
-    _editor.redraw();
+    _editor.draw();
 }
 
 Rkns.Renderer.Edge.prototype.select = function() {
@@ -503,41 +542,51 @@
     + '<p><label><%=l10n.edit_title%></label><input class="Rk-Edit-Title" type="text" value="<%=node.title%>"/></p>'
     + '<p><label><%=l10n.edit_uri%></label><input class="Rk-Edit-URI" type="text" value="<%=node.uri%>"/><a class="Rk-Edit-Goto" href="<%=node.uri%>" target="_blank"></a></p>'
     + '<p><label><%=l10n.edit_description%></label><textarea class="Rk-Edit-Description"><%=node.description%></textarea></p>'
+    + '<p><label><%=l10n.edit_image%></label><input class="Rk-Edit-Image" type="text" value="<%=node.image%>"/><img class="Rk-Edit-ImgPreview" src="<%=node.image%>" /></p>'
     + '<p><label><%=l10n.created_by%></label> <span class="Rk-UserColor" style="background:<%=node.created_by_color%>;"></span><%=node.created_by_title%></p>'
 );
 
-Rkns.Renderer.NodeEditor.prototype.redraw = function() {
-    var _coords = this.node_representation.paper_coords,
-        _model = this.node_representation.model;
+Rkns.Renderer.NodeEditor.prototype.draw = function() {
+    var _model = this.node_representation.model;
     this.editor_$
         .html(this.template({
             node: {
                 title: _model.get("title"),
                 uri: _model.get("uri"),
                 description: _model.get("description"),
+                image: _model.get("image") || "",
                 created_by_color: _model.get("created_by").get("color"),
                 created_by_title: _model.get("created_by").get("title")
             },
             l10n: this.renderer.renkan.l10n
-        }))
-        .show();
-    Rkns.Renderer.Utils.drawEditBox(_coords, this.editor_block, 250, 20, this.editor_$);
+        }));
+    this.redraw();
     var _this = this;
     this.editor_$.find(".Rk-CloseX").click(function() {
         _this.renderer.removeRepresentation(_this);
         paper.view.draw();
     });
     this.editor_$.find("input, textarea").bind("keyup change", function() {
-        _this.editor_$.find(".Rk-Edit-Goto").attr("href",_this.editor_$.find(".Rk-Edit-URI").val());
+        var _uri = _this.editor_$.find(".Rk-Edit-URI").val(),
+            _image = _this.editor_$.find(".Rk-Edit-Image").val();
+        _this.editor_$.find(".Rk-Edit-ImgPreview").attr("src", _image);
+        _this.editor_$.find(".Rk-Edit-Goto").attr("href",_uri);
         var _data = {
             title: _this.editor_$.find(".Rk-Edit-Title").val(),
             description: _this.editor_$.find(".Rk-Edit-Description").val(),
-            uri: _this.editor_$.find(".Rk-Edit-URI").val()
+            uri: _uri,
+            image: _image
         }
         _model.set(_data);
-        paper.view.draw();
+        _this.redraw();
     });
     this.editor_$.find(".Rk-Edit-Title")[0].focus();
+}
+
+Rkns.Renderer.NodeEditor.prototype.redraw = function() {
+    var _coords = this.node_representation.paper_coords;
+    Rkns.Renderer.Utils.drawEditBox(_coords, this.editor_block, 250, 20, this.editor_$);
+    this.editor_$.show();
     paper.view.draw();
 }
 
@@ -578,9 +627,8 @@
     + '<p><label><%=l10n.created_by%> </label><span class="Rk-UserColor" style="background:<%=edge.created_by_color%>;"></span><%=edge.created_by_title%></p>'
 );
 
-Rkns.Renderer.EdgeEditor.prototype.redraw = function() {
-    var _coords = this.edge_representation.paper_coords,
-        _model = this.edge_representation.model;
+Rkns.Renderer.EdgeEditor.prototype.draw = function() {
+    var _model = this.edge_representation.model;
     this.editor_$
         .html(this.template({
             edge: {
@@ -595,9 +643,8 @@
                 created_by_title: _model.get("created_by").get("title")
             },
             l10n: this.renderer.renkan.l10n
-        }))
-        .show();
-    Rkns.Renderer.Utils.drawEditBox(_coords, this.editor_block, 250, 5, this.editor_$);
+        }));
+    this.redraw();
     var _this = this;
     this.editor_$.find(".Rk-CloseX").click(function() {
         _this.renderer.removeRepresentation(_this);
@@ -610,8 +657,13 @@
             uri: _this.editor_$.find(".Rk-Edit-URI").val()
         }
         _model.set(_data);
-        paper.view.draw();
+        _this.redraw();
     });
+}
+Rkns.Renderer.EdgeEditor.prototype.redraw = function() {
+    var _coords = this.edge_representation.paper_coords;
+    Rkns.Renderer.Utils.drawEditBox(_coords, this.editor_block, 250, 5, this.editor_$);
+    this.editor_$.show();
     paper.view.draw();
 }
 
@@ -1288,6 +1340,7 @@
                 uri: _newEl.uri,
                 title: _newEl.title,
                 description: _newEl.description,
+                image: _newEl.image,
                 position: {
                     x: _coords.x,
                     y: _coords.y
--- a/client/js/renkan-publish.js	Wed Sep 05 14:49:33 2012 +0200
+++ b/client/js/renkan-publish.js	Thu Sep 06 17:21:11 2012 +0200
@@ -125,6 +125,7 @@
             uri: this.get("uri"),
             description: this.get("description"),
             position: this.get("position"),
+            image: this.get("image"),
             created_by: this.get("created_by").get("_id")
         }
     },
@@ -291,7 +292,7 @@
     _MARGIN_X: 80,
     _MARGIN_Y: 50,
     _MIN_DRAG_DISTANCE: 2,
-    _NODE_RADIUS: 15,
+    _NODE_RADIUS: 20,
     _NODE_FONT_SIZE: 10,
     _EDGE_FONT_SIZE: 9,
     _NODE_MAX_CHAR: 30,
@@ -408,6 +409,38 @@
     this.title.content = Rkns.Renderer.Utils.shortenText(this.model.get("title"), Rkns.Renderer._NODE_MAX_CHAR);
     this.title.position = this.paper_coords.add([0, 2 * Rkns.Renderer._NODE_RADIUS]);
     this.circle.strokeColor = this.model.get("created_by").get("color");
+    var _img = this.model.get("image");
+    if (_img && _img !== this.img) {
+        var _image = new Image(),
+            _this = this;
+        _image.onload = function() {
+            if (_this.node_image) {
+                _this.node_image.remove();
+            }
+            _this.renderer.node_layer.activate();
+            var _ratio = Math.min(1, 2 * Rkns.Renderer._NODE_RADIUS / _image.width, 2 * Rkns.Renderer._NODE_RADIUS / _image.height );
+            var _raster = new paper.Raster(_image);
+            var _clip = new paper.Path.Circle([0, 0], Rkns.Renderer._NODE_RADIUS);
+            _raster.scale(_ratio);
+            _this.node_image = new paper.Group(_clip, _raster);
+            _this.node_image.opacity = .9;
+            /* This is a workaround to allow clipping at group level */
+            _this.node_image.clipped = true;
+            _this.node_image.position = _this.paper_coords;
+            _this.node_image.__representation = _this;
+            paper.view.draw();
+        }
+        _image.src = _img;
+    }
+    this.img = _img;
+    if (this.node_image) {
+        if (!this.img) {
+            this.node_image.remove();
+            delete this.node_image;
+        } else {
+            this.node_image.position = this.paper_coords;
+        }
+    }
 }
 
 Rkns.Renderer.Node.prototype.paperShift = function(_delta) {
@@ -420,18 +453,24 @@
     this.renderer.removeRepresentationsOfType("tooltip");
     var _tooltip = this.renderer.addRepresentation("NodeTooltip",null);
     _tooltip.node_representation = this;
-    _tooltip.redraw();
+    _tooltip.draw();
 }
 
 Rkns.Renderer.Node.prototype.select = function() {
     this.circle.strokeWidth = 3;
-    this.circle.fillColor = "#ffffc0";
+    this.circle.fillColor = "#ffff80";
+    if (this.node_image) {
+        this.node_image.opacity = .5;
+    }
     paper.view.draw();
 }
 
 Rkns.Renderer.Node.prototype.unselect = function() {
     this.circle.strokeWidth = 1;
     this.circle.fillColor = "#ffffff";
+    if (this.node_image) {
+        this.node_image.opacity = .9;
+    }
     paper.view.draw();
 }
 
@@ -441,6 +480,9 @@
 Rkns.Renderer.Node.prototype.destroy = function(_event) {
     this.circle.remove();
     this.title.remove();
+    if (this.node_image) {
+        this.node_image.remove();
+    }
 }
 
 /* */
@@ -510,7 +552,7 @@
     this.renderer.removeRepresentationsOfType("tooltip");
     var _tooltip = this.renderer.addRepresentation("EdgeTooltip",null);
     _tooltip.edge_representation = this;
-    _tooltip.redraw();
+    _tooltip.draw();
 }
 
 Rkns.Renderer.Edge.prototype.select = function() {
@@ -571,9 +613,8 @@
     + '<p><%=description%></p>'
 );
 
-Rkns.Renderer.NodeTooltip.prototype.redraw = function() {
-    var _coords = this.node_representation.paper_coords,
-        _model = this.node_representation.model,
+Rkns.Renderer.NodeTooltip.prototype.draw = function() {
+    var _model = this.node_representation.model,
         _title = _model.get("title"),
         _uri = _model.get("uri");
     this.tooltip_$
@@ -581,17 +622,18 @@
             a: (_uri ? '<a href="' + _uri + '" target="_blank">' : '' ) + _title + (_uri ? '</a>' : '' ),
             description: _model.get("description").replace(/(\n|\r|\r\n)/mg,' ').substr(0,180).replace(/(^.{150,179})[\s].+$/m,'$1&hellip;')
         }))
-        .show();
-    Rkns.Renderer.Utils.drawTooltip(_coords, this.tooltip_block, 250, 15, this.tooltip_$);
+    this.redraw();
     var _this = this;
     this.tooltip_$.find(".Rk-CloseX").click(function() {
         _this.renderer.removeRepresentation(_this);
         paper.view.draw();
     });
-    this.tooltip_$.find("input, textarea").bind("keyup change", function() {
-        _this.tooltip_$.find(".Rk-Edit-Goto").attr("href",_this.tooltip_$.find(".Rk-Edit-URI").val());
-    });
-    paper.view.draw();
+}
+
+Rkns.Renderer.NodeTooltip.prototype.redraw = function() {
+    var _coords = this.node_representation.paper_coords;
+    Rkns.Renderer.Utils.drawTooltip(_coords, this.tooltip_block, 250, 10, this.tooltip_$);
+    this.tooltip_$.show();
 }
 
 Rkns.Renderer.NodeTooltip.prototype.destroy = function() {
@@ -627,23 +669,27 @@
     + '<p><%=description%></p>'
 );
 
-Rkns.Renderer.EdgeTooltip.prototype.redraw = function() {
-    var _coords = this.edge_representation.paper_coords,
-        _model = this.edge_representation.model,
+Rkns.Renderer.EdgeTooltip.prototype.draw = function() {
+    var _model = this.edge_representation.model,
         _title = _model.get("title"),
         _uri = _model.get("uri");
     this.tooltip_$
         .html(this.template({
             a: (_uri ? '<a href="' + _uri + '" target="_blank">' : '' ) + _title + (_uri ? '</a>' : '' ),
             description: _model.get("description").replace(/(\n|\r|\r\n)/mg,' ').substr(0,180).replace(/(^.{150,179})[\s].+$/m,'$1&hellip;')
-        }))
-        .show();
-    Rkns.Renderer.Utils.drawTooltip(_coords, this.tooltip_block, 250, 5, this.tooltip_$);
+        }));
+    this.redraw();
     var _this = this;
     this.tooltip_$.find(".Rk-CloseX").click(function() {
         _this.renderer.removeRepresentation(_this);
         paper.view.draw();
     });
+}
+
+Rkns.Renderer.EdgeTooltip.prototype.redraw = function() {
+    var _coords = this.edge_representation.paper_coords;
+    Rkns.Renderer.Utils.drawTooltip(_coords, this.tooltip_block, 250, 5, this.tooltip_$);
+    this.tooltip_$.show();
     paper.view.draw();
 }
 
--- a/client/js/twitter-bin.js	Wed Sep 05 14:49:33 2012 +0200
+++ b/client/js/twitter-bin.js	Thu Sep 06 17:21:11 2012 +0200
@@ -26,7 +26,7 @@
 
 Rkns.Twitter.Bin.prototype.tweetTemplate = Rkns._.template(
     '<li class="Rk-Twitter-Tweet Rk-Bin-Item" data-uri="http://twitter.com/<%=tweet.from_user%>/status/<%=tweet.id_str%>" '
-    + 'data-title="Tweet by @<%=tweet.from_user%>" data-description="<%-tweet.text%>">'
+    + 'data-title="Tweet by @<%=tweet.from_user%>" data-description="<%-tweet.text%>" data-image="<%=tweet.profile_image_url%>">'
     + '<img class="Rk-Twitter-TwImage" src="<%=tweet.profile_image_url%>" />'
     + '<h4 class="Rk-Twitter-TwTitle"><a href="http://twitter.com/<%=tweet.from_user%>" target="_blank">@<%=tweet.from_user%></a> (<%=tweet.from_user_name%>)</h4>'
     + '<p class="Rk-Twitter-TwDate"><%=date%></p>'
--- a/client/js/wikipedia-bin.js	Wed Sep 05 14:49:33 2012 +0200
+++ b/client/js/wikipedia-bin.js	Thu Sep 06 17:21:11 2012 +0200
@@ -27,8 +27,8 @@
 
 Rkns.Wikipedia.Bin.prototype.resultTemplate = Rkns._.template(
     '<li class="Rk-Wikipedia-Result Rk-Bin-Item" data-uri="<%=wpurl%>" '
-    + 'data-title="Wikipedia: <%=result.title%>" data-description="<%=wpdesc%>">'
-    + '<div class="Rk-Wikipedia-Icon"></div><h4 class="Rk-Wikipedia-Title"><a href="<%=wpurl%>" target="_blank"><%=highlightedtitle%></a></h4>'
+    + 'data-title="Wikipedia: <%=result.title%>" data-description="<%=wpdesc%>" data-image="img/wikipedia.png">'
+    + '<img class="Rk-Wikipedia-Icon" src="img/wikipedia.png"></div><h4 class="Rk-Wikipedia-Title"><a href="<%=wpurl%>" target="_blank"><%=highlightedtitle%></a></h4>'
     + '<p class="Rk-Wikipedia-Snippet"><%=result.snippet%></p></li>'
 );
 
--- a/client/render-test.html	Wed Sep 05 14:49:33 2012 +0200
+++ b/client/render-test.html	Thu Sep 06 17:21:11 2012 +0200
@@ -46,7 +46,7 @@
                             title: "LDT Project",
                             bin: Rkns.Ldt.ProjectBin,
                             project_id: "67280b1c-ff30-11e0-a82d-00145ea49a02",
-                            ldt_platform: "http://capsicum/pf/"
+                            ldt_platform: "http://ldt.iri.centrepompidou.fr/"
                         }
                     ],
                     search: [