basic contents and projects display
authorymh <ymh.work@gmail.com>
Wed, 01 Sep 2010 09:50:05 +0200
changeset 40 509e30b9f5c9
parent 39 da2f0d5221d8
child 41 a5719dcb742a
basic contents and projects display
web/franceculture/templates/base.html
web/franceculture/templates/franceculture/partial/contentslist.html
web/franceculture/templates/franceculture/partial/projectslist.html
web/franceculture/templates/franceculture/workspace.html
web/franceculture/templates/ldt/ldt_utils/content_list.html
web/franceculture/templates/ldt/ldt_utils/ldt_list.html
web/franceculture/urls.py
web/franceculture/views.py
web/ldt/ldt_utils/templates/ldt/ldt_utils/content_list.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/ldt_list.html
web/ldt/ldt_utils/urls.py
web/ldt/ldt_utils/utils.py
web/ldt/ldt_utils/views.py
web/ldt/media/css/dashboard.css
web/ldt/media/css/ldt.css
web/ldt/media/css/style.css
web/ldt/media/css/style_base.css
web/static/css/LdtPlayer.css
web/static/css/custom_player.css
web/static/css/nyroModal.css
web/static/css/style.css
web/static/css/tabs.css
web/static/css/workspace.css
web/static/img/ajax-loader-16x16.gif
web/static/img/ajax-loader-43x43.gif
web/static/img/ajaxLoader.gif
--- a/web/franceculture/templates/base.html	Fri Aug 27 08:25:18 2010 +0200
+++ b/web/franceculture/templates/base.html	Wed Sep 01 09:50:05 2010 +0200
@@ -6,8 +6,9 @@
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{LANGUAGE_CODE}}" lang="{{LANGUAGE_CODE}}">
 <head>
+	<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
     <meta http-equiv="content-language" content="{{LANGUAGE_CODE}}" />
-    <link rel="SHORTCUT ICON" href="{{MEDIA_URL}}/img/favicon.ico">
+    <link rel="SHORTCUT ICON" href="{{MEDIA_URL}}/img/favicon.ico" />
     <title>{% block title %}France Culture{% endblock %}</title>
     {% block js_import %}
     <script type="text/javascript" src="{{MEDIA_URL}}js/jquery.min.js"></script>
@@ -51,10 +52,11 @@
 				{% if user.is_authenticated %}
 				{% url franceculture.views.workspace as workspace_url %}
 				{% url ldt.ldt_utils.views.list_ldt as space_url %}
+				{% url ldt.ldt_utils.views.list_content as content_url %}
 				{% url ldt.user.views.profile  as profile_url %}
 				    <ul class="tabs">
 						<li class='{% active request "active" workspace_url %}'><a href="{{ workspace_url }}" >{% trans "home" %}</a></li>
-						<li class='{% active request "active" "" %}'><a href="#">{% trans "contents" %}</a></li>
+						<li class='{% active request "active" content_url %}'><a href="{{ content_url }}">{% trans "contents" %}</a></li>
 						<li class='{% active request "active" space_url %}'><a href="{{ space_url }}">{% trans "indexation projects" %}</a></li>
 						<li class='{% active request "active" "" %}'><a href="#">{% trans "accounts" %}</a></li>
 			            <li class='{% active request "active" profile_url %}'><a href="{{ profile_url }}" >{% trans "Profiles" %}</a> </li>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/franceculture/templates/franceculture/partial/contentslist.html	Wed Sep 01 09:50:05 2010 +0200
@@ -0,0 +1,24 @@
+{% load i18n %}
+<table class="projectscontentstable">
+    <thead class="projectscontentsheader" id="contentsheader">
+      <tr>
+    	<th>&nbsp;</th>
+    	<th>{% trans "name" %}</th>
+      </tr>
+    </thead>
+	<tfoot class="projectscontentsfooter">
+	  <tr>
+	       <td colspan="2">+</td>
+	       <td>{% trans "Create content" %}</td>
+	  </tr>
+	</tfoot>
+    <tbody class="projectscontentsbody">
+{% for content in contents %}
+	<tr class="imageline {% cycle 'projectscontentsoddline' 'projectscontentsevenline'%}">
+	    <td class="cellimg"><div class="cellimgdiv"><img src="{{MEDIA_URL}}/img/document_add.gif" title="{% trans 'create project' %}" alt="{% trans 'create project' %}" href="{% url ldt.ldt_utils.views.create_project content.iri_id %}" class="ldt_link_create"/></div></td>
+	    <td class="cellimg"><div class="cellimgdiv"><img  alt="{% trans 'preview media'%}" title="{% trans 'preview media'%}" src="{{MEDIA_URL}}/img/control_play.gif" href="{% url ldt.ldt_utils.views.index content.iri_id %}" class="ldt_link"/></div></td>
+	    <td class="contenttitle">{{ content.title }}</td>
+	</tr>
+{% endfor %}
+	</tbody>
+</table>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/franceculture/templates/franceculture/partial/projectslist.html	Wed Sep 01 09:50:05 2010 +0200
@@ -0,0 +1,34 @@
+{% load i18n %}
+<table class="projectscontentstable">
+    <thead class="projectscontentsheader" id="projectsheader">
+      <tr>
+    	<th>&nbsp;</th>
+    	<th>{% trans "name" %}</th>
+      </tr>
+    </thead>
+   	<tfoot class="projectscontentsfooter">
+	  <tr>
+	      <td colspan="4">+</td>
+	      <td>{% trans "Create project" %}</td>
+	  </tr>
+	</tfoot>		    
+    <tbody class="projectscontentsbody">
+{% for project in projects %}
+    <tr class="imageline {% cycle 'projectscontentsoddline' 'projectscontentsevenline'%}" >
+        {% url ldt.ldt_utils.views.project_json_id project.ldt_id as json_url_id %}
+        <td class="cellimg"><div class="cellimgdiv">
+        {% ifequal project.state 2 %}
+        <img src="{{BASE_URL}}static/admin/img/admin/icon-yes.gif" alt="{% trans 'Project published, click to unpublish' %}" title="{% trans 'Project published, click to unpublish' %}" class="publishedproject" id="project_{{project.ldt_id}}" />
+        {% else %}
+        <img src="{{BASE_URL}}static/admin/img/admin/icon-no.gif" alt="{% trans 'Project not published, click to publish' %}" title="{% trans 'Project not published, click to publish' %}" class="unpublishedproject" id="project_{{project.ldt_id}}" />
+        {% endifequal %}
+        </div>
+        </td>
+        <td class="cellimg"><div class="cellimgdiv"><img src="{{MEDIA_URL}}/img/document_edit.gif" href="{% url ldt.ldt_utils.views.indexProject project.ldt_id %}" class="ldt_link" alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/></div></td>
+        <td class="cellimg"><div class="cellimgdiv"><img src="{{MEDIA_URL}}/img/documents_duplicate.gif" href="{% url ldt.ldt_utils.views.copy_project project.ldt_id %}" class="ldt_link_create" alt="{% trans 'copy project' %}" title="{% trans 'copy project' %}"/></div></td>
+        <td class="cellimg"><div class="cellimgdiv"><img src="{{MEDIA_URL}}/img/plugin.gif" href="{% url ldt.ldt_utils.views.copy_project project.ldt_id %}" id="player_project_{{project.ldt_id}}" class="ldt_link_embed" alt="{% trans 'link json by id' %}" title="{% trans 'link json by id' %}"/></div></td>
+        <td class="projecttitle">{{ project.title }}</td>
+    </tr>
+{% endfor %}
+    </tbody>
+</table>
--- a/web/franceculture/templates/franceculture/workspace.html	Fri Aug 27 08:25:18 2010 +0200
+++ b/web/franceculture/templates/franceculture/workspace.html	Wed Sep 01 09:50:05 2010 +0200
@@ -4,43 +4,59 @@
 {% block js_declaration %}
 {{block.super}}
 <script type="text/javascript">
-$(document).ready(function(){
+
+$.fn.realVal = function() {
+	var obj = $(this[0]);
+	if(obj.val) {
+		if(obj.val() == obj.attr('defaultText')) {
+			return '';
+		}
+		else {
+			return obj.val();
+		}
+	}
+	else {
+		return null;
+	}
+};
+
+function init_events(base_node) {
 
-	$('.ldt_link').nyroModal({
-           	type: 'iframe',
-           	forceType: 'iframe',
-       		height:662, 
-       		width:1022,
-       		bgColor: 'rgb(239, 239, 239)',
-       		padding: 5,
-       		titleFromIframe: false
-          	});
-        	
-     $('.ldt_link_create').nyroModal({
-            type: 'iframe',
-            forceType: 'iframe',
-            height:662, 
-            width:1022,
-            bgColor: 'rgb(239, 239, 239)',
-            padding: 5,
-            titleFromIframe: false,
-            beforeHideContent: function(elts, settings, callback){
-	             try {
-		              var res = $('#ldtInitSwf',$('#nyroModalIframe').contents());
-		              if(res.length > 0)
-		              {
-		              	   res.get(0).forceSave();
-		              }
-	             }
-	             catch(err)
-	             {
-	              // do nothing
-	             }                   
-	             callback();
-            }
-        });
+	$('.ldt_link',base_node).nyroModal({
+       	type: 'iframe',
+       	forceType: 'iframe',
+   		height:662, 
+   		width:1022,
+   		bgColor: 'rgb(239, 239, 239)',
+   		padding: 5,
+   		titleFromIframe: false
+      	});
+    	
+ 	$('.ldt_link_create',base_node).nyroModal({
+        type: 'iframe',
+        forceType: 'iframe',
+        height:662, 
+        width:1022,
+        bgColor: 'rgb(239, 239, 239)',
+        padding: 5,
+        titleFromIframe: false,
+        beforeHideContent: function(elts, settings, callback){
+             try {
+	              var res = $('#ldtInitSwf',$('#nyroModalIframe').contents());
+	              if(res.length > 0)
+	              {
+	              	   res.get(0).forceSave();
+	              }
+             }
+             catch(err)
+             {
+              // do nothing
+             }                   
+             callback();
+        	}
+    	});
 
-	$('.ldt_link_embed').click(function(e) {
+	$('.ldt_link_embed',base_node).click(function(e) {
 		e.preventDefault();
 		link = $(e.target);
 		json_url = link.attr("href");
@@ -56,50 +72,93 @@
 		  		width:650,
 		  		bgColor: 'rgb(239, 239, 239)',
 		  		padding: 5,
-		    url: '{% url franceculture.views.popup_embed %}?json_url='+escape(json_url)+'&player_id='+escape(player_id),
+		    url: '{% url franceculture.views.popup_embed %}?json_url='+escape(json_url)+'&amp;player_id='+escape(player_id),
 		   });
 		   return false;
 	});
 
-	$("input").keydown(function (e) {
+
+	$('.imageline',base_node).each(function(i) {
+	    tr = $(this);
+		tr.mouseover(function() {
+	    	$('.cellimgdiv',this).css('visibility', 'visible');
+		}); 
+		tr.mouseout(function() {
+	    	$('.cellimgdiv',this).css('visibility', 'hidden');
+		});
+	});    
+		
+}
+
+function searchCallback(target, container_selector, url) {
+
+	var target = $(target); 
+
+	if(target.attr('timer')) {
+		clearTimeout(target.attr('timer'));
+	}
+	
+	target.attr('timer',setTimeout(function() {
+		target.next(".searchajaxloader").show();
+		url = url.replace('__FILTER__',escape($(target).realVal()));
+		$(container_selector).load(url, null, function() {
+			target.next(".searchajaxloader").hide();
+			init_events($(container_selector));
+			target.removeAttr('timer');
+		});
+	},
+	300));
+};
+
+$(document).ready(function(){	
+	
+	$(".searchfieldinputbase").keydown(function (e) {
 	 	if(e.which == 27) {
 	 	 	$(e.target).blur();
+	 	 	$(e.target).next(".searchajaxloader").hide();
 	 	}
 	});
- 	 
-    $('.searchfieldinput').each(function(i) {
-         sbox = $(this);
-         if(sbox.val() != '') {
-        	 sbox.attr('defaultText', sbox.val());
-         }
 
-         sbox.focus(function() {
-             box = $(this);
-             if(box.val() == box.attr('defaultText')) {
-                 box.val('');
-                 box.toggleClass("searchfieldinput");
-             }
-         });
+	$("#searchcontentsinput").keyup(function (e) {
+		var url = "{% url franceculture.views.contentsfilter filter='__FILTER__' %}";
+		var container_selector="#contentslistcontainer";
+		searchCallback(e.target, container_selector, url);
+	});
 
-         sbox.blur(function() {
-             box = $(this);
-             if(box.val() == '' && box.attr('defaultText')) {
-                 box.val(box.attr('defaultText'));
-                 box.toggleClass("searchfieldinput");
-             }
-         });
-         
-    });
+	$("#searchprojectsinput").keyup(function (e) {
+		var url = "{% url franceculture.views.projectsfilter filter='__FILTER__' is_owner='false' %}";
+		var container_selector="#projectslistcontainer";
+		searchCallback(e.target, container_selector, url);		
+	});
+	
+	 
+	$('.searchfieldinput').each(function(i) {
+	     sbox = $(this);
+	     if(sbox.val() != '') {
+	    	 sbox.attr('defaultText', sbox.val());
+	     }
+	
+	     sbox.focus(function() {
+	         box = $(this);
+	         if(box.val() == box.attr('defaultText')) {
+	             box.val('');
+	             box.toggleClass("searchfieldinput");
+	         }
+	     });
+	
+	     sbox.blur(function() {
+	         box = $(this);
+	         if(box.val() == '' && box.attr('defaultText')) {
+	             box.val(box.attr('defaultText'));
+	             box.toggleClass("searchfieldinput");
+	         }
+	     });
 
-    $('.imageline').each(function(i) {
-        tr = $(this);
-    	tr.mouseover(function() {
-        	$('.cellimgdiv',this).css('visibility', 'visible');
-    	}); 
-    	tr.mouseout(function() {
-        	$('.cellimgdiv',this).css('visibility', 'hidden');
-    	});
-    });    
+	     
+	});
+
+	init_events(document);
+
 });
 </script>
 
@@ -116,77 +175,22 @@
 	    <div class="span-12 last titlediv" >
 			<div class="span-8 projectscontentstitle">{% trans "content list" %}</div>
 			<div class="span-4 last searchfielddiv" >
-			    <div class="searchfield"><input class="searchfieldinput searchfieldinputbase" value="{% trans 'search' %}" /></div>
+			    <div class="searchfield"><input id="searchcontentsinput" class="searchfieldinput searchfieldinputbase" value="{% trans 'search' %}" /><img id="contentsajaxloader" class="searchajaxloader" src="{{MEDIA_URL}}/img/ajax-loader-16x16.gif" alt="loader"/></div>
 			</div>
 		</div>
-		<div class="span-12 last projectscontentsdiv" >
-		<table class="projectscontentstable">
-		    <thead class="projectscontentsheader" id="contentsheader">
-		      <tr>
-		    	<th>&nbsp;</th>
-		    	<th>{% trans "name" %}</th>
-		      </tr>
-		    </thead>
-			<tfoot class="projectscontentsfooter">
-			  <tr>
-			       <td colspan="2">+</td>
-			       <td>{% trans "Create media" %}</td>
-			     </tr>
-			</tfoot>
-		    <tbody class="projectscontentsbody">
-		{% for content in contents %}
-			<tr class="imageline {% cycle 'projectscontentsoddline' 'projectscontentsevenline'%}">
-			    <td class="cellimg"><div class="cellimgdiv"><img src="{{MEDIA_URL}}/img/document_add.gif" title="{% trans 'create project' %}" alt="{% trans 'create project' %}" href="{% url ldt.ldt_utils.views.create_project content.iri_id %}" class="ldt_link_create"/></div></td>
-			    <td class="cellimg"><div class="cellimgdiv"><img  alt="{% trans 'preview media'%}" title="{% trans 'preview media'%}" src="{{MEDIA_URL}}/img/control_play.gif" href="{% url ldt.ldt_utils.views.index content.iri_id %}" class="ldt_link"/></div></td>
-			    <td class="contenttitle">{{ content.title }}</td>
-			</tr>
-		{% endfor %}
-		
-			</tbody>
-		</table>
+		<div class="span-12 last projectscontentsdiv" id="contentslistcontainer">
+		{% include "franceculture/partial/contentslist.html" %}
 		</div>
 	</div>		
 	<div class="span-12 last" id="projectsdiv">
 		<div class="span-12 last titlediv" >
 			<div class="span-8 projectscontentstitle" >{% trans "project list" %}</div>
 			<div class="span-4 last searchfielddiv" >
-			    <div class="searchfield"><input class="searchfieldinput searchfieldinputbase" value="{% trans 'search' %}" /></div>
+			    <div class="searchfield"><input id="searchprojectsinput" class="searchfieldinput searchfieldinputbase" value="{% trans 'search' %}" /><img id="projectsajaxloader" class="searchajaxloader" src="{{MEDIA_URL}}/img/ajax-loader-16x16.gif" alt="loader"/></div>
 			</div>
 		</div>
-		<div class="span-12 last projectscontentsdiv" >
-		<table class="projectscontentstable">
-		    <thead class="projectscontentsheader" id="projectsheader">
-		      <tr>
-		    	<th>&nbsp;</th>
-		    	<th>{% trans "name" %}</th>
-		      </tr>
-		    </thead>
-		   	<tfoot class="projectscontentsfooter">
-			  <tr>
-			      <td colspan="4">+</td>
-			      <td>{% trans "Create project" %}</td>
-			  </tr>
-			</tfoot>		    
-		{% for project in projects %}
-		    <tbody class="projectscontentsbody">
-		    <tr class="imageline {% cycle 'projectscontentsoddline' 'projectscontentsevenline'%}" >
-		        {% url ldt.ldt_utils.views.project_json_id project.ldt_id as json_url_id %}
-		        <td class="cellimg"><div class="cellimgdiv">
-		        {% ifequal project.state 2 %}
-		        <img src="{{BASE_URL}}static/admin/img/admin/icon-yes.gif" alt="{% trans 'Project published, click to unpublish' %}" title="{% trans 'Project published, click to unpublish' %}"/>
-		        {% else %}
-		        <img src="{{BASE_URL}}static/admin/img/admin/icon-no.gif" alt="{% trans 'Project not published, click to publish' %}" title="{% trans 'Project not published, click to publish' %}"/>
-		        {% endifequal %}
-		        </div>
-		        </td>
-		        <td class="cellimg"><div class="cellimgdiv"><img src="{{MEDIA_URL}}/img/document_edit.gif" href="{% url ldt.ldt_utils.views.indexProject project.ldt_id %}" class="ldt_link" alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/></div></td>
-		        <td class="cellimg"><div class="cellimgdiv"><img src="{{MEDIA_URL}}/img/documents_duplicate.gif" href="{% url ldt.ldt_utils.views.copy_project project.ldt_id %}" class="ldt_link_create" alt="{% trans 'copy project' %}" title="{% trans 'copy project' %}"/></div></td>
-		        <td class="cellimg"><div class="cellimgdiv"><img src="{{MEDIA_URL}}/img/plugin.gif" href="{% url ldt.ldt_utils.views.copy_project project.ldt_id %}" id="player_project_{{project.ldt_id}}" class="ldt_link_embed" alt="{% trans 'link json by id' %}" title="{% trans 'link json by id' %}"/></div></td>
-		        <td class="projecttitle">{{ project.title }}</td>
-		    </tr>
-		    </tbody>
-		{% endfor %}
-		</table>
+		<div class="span-12 last projectscontentsdiv" id="projectslistcontainer">
+		{% include "franceculture/partial/projectslist.html" %}
 		</div>
 	</div>
 </div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/franceculture/templates/ldt/ldt_utils/content_list.html	Wed Sep 01 09:50:05 2010 +0200
@@ -0,0 +1,184 @@
+{% extends "base.html" %}
+{% load i18n %}
+
+{% block js_declaration %}
+{{block.super}}
+<script type="text/javascript">
+
+searchcontentfilterurl = "{% url franceculture.views.contentsfilter filter='__FILTER__' %}";
+
+$.fn.realVal = function() {
+	var obj = $(this[0]);
+	if(obj.val) {
+		if(obj.val() == obj.attr('defaultText')) {
+			return '';
+		}
+		else {
+			return obj.val();
+		}
+	}
+	else {
+		return null;
+	}
+};
+
+
+function init_events(base_node) {
+
+	$('.ldt_link',base_node).nyroModal({
+       	type: 'iframe',
+       	forceType: 'iframe',
+   		height:662, 
+   		width:1022,
+   		bgColor: 'rgb(239, 239, 239)',
+   		padding: 5,
+   		titleFromIframe: false
+      	});
+    	
+ 	$('.ldt_link_create',base_node).nyroModal({
+        type: 'iframe',
+        forceType: 'iframe',
+        height:662, 
+        width:1022,
+        bgColor: 'rgb(239, 239, 239)',
+        padding: 5,
+        titleFromIframe: false,
+        beforeHideContent: function(elts, settings, callback){
+             try {
+	              var res = $('#ldtInitSwf',$('#nyroModalIframe').contents());
+	              if(res.length > 0)
+	              {
+	              	   res.get(0).forceSave();
+	              }
+             }
+             catch(err)
+             {
+              // do nothing
+             }                   
+             callback();
+        	}
+    	});
+
+	$('.ldt_link_embed',base_node).click(function(e) {
+		e.preventDefault();
+		var link = $(e.target);
+		var json_url = link.attr("href");
+		var player_id = link.attr("id");
+		/*$.nyroModalSettings({
+		 	ajax: { data: ({ json_url:json_url, player_id:player_id }) }
+		  	});*/
+		   $.nyroModalManual({
+		         type: 'iframe',
+		         forceType: 'iframe',
+		         titleFromIframe: false,
+		   	height:662, 
+		  		width:650,
+		  		bgColor: 'rgb(239, 239, 239)',
+		  		padding: 5,
+		    url: '{% url franceculture.views.popup_embed %}?json_url='+escape(json_url)+'&player_id='+escape(player_id),
+		   });
+		   return false;
+	});
+
+
+	$('.imageline',base_node).each(function(i) {
+	    var tr = $(this);
+		tr.mouseover(function() {
+	    	$('.cellimgdiv',this).css('visibility', 'visible');
+		}); 
+		tr.mouseout(function() {
+	    	$('.cellimgdiv',this).css('visibility', 'hidden');
+		});
+	});	
+		
+}
+
+function searchCallback(target, container_selector, url, timeout) {
+
+	timeout = typeof(timeout) != 'undefined' ? timeout : 0;
+	var target = $(target); 
+
+	if(target.attr('timer')) {
+		clearTimeout(target.attr('timer'));
+	}
+	
+	target.attr('timer',setTimeout(function() {
+		target.next(".searchajaxloader").show();
+		url = url.replace('__FILTER__',escape($(target).realVal()));
+		$(container_selector).load(url, null, function() {
+			target.next(".searchajaxloader").hide();
+			init_events($(container_selector));
+			target.removeAttr('timer');
+		});
+	},
+	300));
+};
+
+$(document).ready(function(){
+	
+	$(".searchfieldinputbase").keydown(function (e) {
+	 	if(e.which == 27) {
+	 	 	$(e.target).blur();
+	 	 	$(e.target).next(".searchajaxloader").hide();
+	 	}
+	});
+
+	$("#searchcontentsinput").keyup(function (e) {
+		var container_selector="#contentslistcontainer";
+		searchCallback(e.target, container_selector, searchcontentfilterurl);		
+	});
+	
+	 
+	$('.searchfieldinput').each(function(i) {
+	     var sbox = $(this);
+	     if(sbox.val() != '') {
+	    	 sbox.attr('defaultText', sbox.val());
+	     }
+	
+	     sbox.focus(function() {
+	         box = $(this);
+	         if(box.val() == box.attr('defaultText')) {
+	             box.val('');
+	             box.toggleClass("searchfieldinput");
+	         }
+	     });
+	
+	     sbox.blur(function() {
+	         var box = $(this);
+	         if(box.val() == '' && box.attr('defaultText')) {
+	             box.val(box.attr('defaultText'));
+	             box.toggleClass("searchfieldinput");
+	         }
+	     });
+	     
+	});
+
+	init_events(document);
+
+});
+</script>
+
+{% endblock %}
+
+{% block css_import %}
+{{block.super}}
+    <link rel="stylesheet" href="{{BASE_URL}}static/css/workspace.css" type="text/css"/>
+{% endblock %}
+
+{% block content %}
+<div class="span-24" id="allcontentsdiv">
+	<div class="span-12" id="contentsdiv">
+	    <div class="span-12 last titlediv" >
+			<div class="span-8 projectscontentstitle">{% trans "content list" %}</div>
+			<div class="span-4 last searchfielddiv" >
+			    <div class="searchfield"><input id="searchcontentsinput" class="searchfieldinput searchfieldinputbase" value="{% trans 'search' %}" /><img id="contentsajaxloader" class="searchajaxloader" src="{{MEDIA_URL}}/img/ajax-loader-16x16.gif" alt="loader"/></div>
+			</div>
+		</div>
+		<div class="span-12 last projectscontentsdiv" id="contentslistcontainer">
+		{% include "franceculture/partial/contentslist.html" %}
+		</div>
+	</div>		
+	<div class="span-12 last" id="createcontentsdiv">
+	</div>		
+</div>
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/franceculture/templates/ldt/ldt_utils/ldt_list.html	Wed Sep 01 09:50:05 2010 +0200
@@ -0,0 +1,215 @@
+{% extends "base.html" %}
+{% load i18n %}
+
+{% block js_declaration %}
+{{block.super}}
+<script type="text/javascript">
+
+searchprojectfilterurl = "{% url franceculture.views.projectsfilter filter='__FILTER__' is_owner='true' %}";
+publishprojecturl = "{% url ldt.ldt_utils.views.publish '__PROJECT_ID__' 'false' %}";
+unpublishprojecturl = "{% url ldt.ldt_utils.views.unpublish '__PROJECT_ID__' 'false' %}";
+
+$.fn.realVal = function() {
+	var obj = $(this[0]);
+	if(obj.val) {
+		if(obj.val() == obj.attr('defaultText')) {
+			return '';
+		}
+		else {
+			return obj.val();
+		}
+	}
+	else {
+		return null;
+	}
+};
+
+
+function init_events(base_node) {
+
+	$('.ldt_link',base_node).nyroModal({
+       	type: 'iframe',
+       	forceType: 'iframe',
+   		height:662, 
+   		width:1022,
+   		bgColor: 'rgb(239, 239, 239)',
+   		padding: 5,
+   		titleFromIframe: false
+      	});
+    	
+ 	$('.ldt_link_create',base_node).nyroModal({
+        type: 'iframe',
+        forceType: 'iframe',
+        height:662, 
+        width:1022,
+        bgColor: 'rgb(239, 239, 239)',
+        padding: 5,
+        titleFromIframe: false,
+        beforeHideContent: function(elts, settings, callback){
+             try {
+	              var res = $('#ldtInitSwf',$('#nyroModalIframe').contents());
+	              if(res.length > 0)
+	              {
+	              	   res.get(0).forceSave();
+	              }
+             }
+             catch(err)
+             {
+              // do nothing
+             }                   
+             callback();
+        	}
+    	});
+
+	$('.ldt_link_embed',base_node).click(function(e) {
+		e.preventDefault();
+		var link = $(e.target);
+		var json_url = link.attr("href");
+		var player_id = link.attr("id");
+		/*$.nyroModalSettings({
+		 	ajax: { data: ({ json_url:json_url, player_id:player_id }) }
+		  	});*/
+		   $.nyroModalManual({
+		         type: 'iframe',
+		         forceType: 'iframe',
+		         titleFromIframe: false,
+		   	height:662, 
+		  		width:650,
+		  		bgColor: 'rgb(239, 239, 239)',
+		  		padding: 5,
+		    url: '{% url franceculture.views.popup_embed %}?json_url='+escape(json_url)+'&player_id='+escape(player_id),
+		   });
+		   return false;
+	});
+
+
+	$('.imageline',base_node).each(function(i) {
+	    var tr = $(this);
+		tr.mouseover(function() {
+	    	$('.cellimgdiv',this).css('visibility', 'visible');
+		}); 
+		tr.mouseout(function() {
+	    	$('.cellimgdiv',this).css('visibility', 'hidden');
+		});
+	});
+
+	$('.publishedproject', base_node).click(function(e) {
+		e.preventDefault();
+		var target = $(e.target);
+		var project_id = target.attr('id').replace('project_','');
+		var url = unpublishprojecturl.replace('__PROJECT_ID__', project_id);
+
+		$.getJSON(url, function(json){
+			if(json.res) {
+				searchCallback($('#searchprojectsinput'), "#projectslistcontainer", searchprojectfilterurl, 0);
+			}
+		});
+
+	});
+
+	$('.unpublishedproject', base_node).click(function(e) {
+		e.preventDefault();
+		var target = $(e.target);
+		var project_id = target.attr('id').replace('project_','');
+		var url = publishprojecturl.replace('__PROJECT_ID__', project_id);
+
+		$.getJSON(url, {}, function(json){
+			if(json.res) {
+				searchCallback($('#searchprojectsinput'), "#projectslistcontainer", searchprojectfilterurl, 0);
+			}
+		});
+
+	});
+	
+		
+}
+
+function searchCallback(target, container_selector, url, timeout) {
+
+	timeout = typeof(timeout) != 'undefined' ? timeout : 0;
+	var target = $(target); 
+
+	if(target.attr('timer')) {
+		clearTimeout(target.attr('timer'));
+	}
+	
+	target.attr('timer',setTimeout(function() {
+		target.next(".searchajaxloader").show();
+		url = url.replace('__FILTER__',escape($(target).realVal()));
+		$(container_selector).load(url, null, function() {
+			target.next(".searchajaxloader").hide();
+			init_events($(container_selector));
+			target.removeAttr('timer');
+		});
+	},
+	300));
+};
+
+$(document).ready(function(){
+	
+	$(".searchfieldinputbase").keydown(function (e) {
+	 	if(e.which == 27) {
+	 	 	$(e.target).blur();
+	 	 	$(e.target).next(".searchajaxloader").hide();
+	 	}
+	});
+
+	$("#searchprojectsinput").keyup(function (e) {
+		var container_selector="#projectslistcontainer";
+		searchCallback(e.target, container_selector, searchprojectfilterurl);		
+	});
+	
+	 
+	$('.searchfieldinput').each(function(i) {
+	     var sbox = $(this);
+	     if(sbox.val() != '') {
+	    	 sbox.attr('defaultText', sbox.val());
+	     }
+	
+	     sbox.focus(function() {
+	         box = $(this);
+	         if(box.val() == box.attr('defaultText')) {
+	             box.val('');
+	             box.toggleClass("searchfieldinput");
+	         }
+	     });
+	
+	     sbox.blur(function() {
+	         var box = $(this);
+	         if(box.val() == '' && box.attr('defaultText')) {
+	             box.val(box.attr('defaultText'));
+	             box.toggleClass("searchfieldinput");
+	         }
+	     });
+	     
+	});
+
+	init_events(document);
+
+});
+</script>
+
+{% endblock %}
+
+{% block css_import %}
+{{block.super}}
+    <link rel="stylesheet" href="{{BASE_URL}}static/css/workspace.css" type="text/css"/>
+{% endblock %}
+
+{% block content %}
+<div class="span-24" id="allcontentsdiv">
+	<div class="span-12 last" id="projectsdiv">
+		<div class="span-12 last titlediv" >
+			<div class="span-8 projectscontentstitle" >{% trans "project list" %}</div>
+			<div class="span-4 last searchfielddiv" >
+			    <div class="searchfield"><input id="searchprojectsinput" class="searchfieldinput searchfieldinputbase" value="{% trans 'search' %}" /><img id="projectsajaxloader" class="searchajaxloader" src="{{MEDIA_URL}}/img/ajax-loader-16x16.gif"/></div>
+			</div>
+		</div>
+		<div class="span-12 last projectscontentsdiv" id="projectslistcontainer">
+		{% include "franceculture/partial/projectslist.html" %}
+		</div>
+	</div>
+	<div class="span-12 last" id="createprojectdiv">
+	</div>		
+</div>
+{% endblock %}
--- a/web/franceculture/urls.py	Fri Aug 27 08:25:18 2010 +0200
+++ b/web/franceculture/urls.py	Wed Sep 01 09:50:05 2010 +0200
@@ -23,5 +23,7 @@
     (r'^accounts/', include('registration.backends.simple.urls')),
 
     url(r'^/?$', "franceculture.views.workspace", name="root-view"),
+    url(r'^filterprojects/(?P<filter>\w*)/(?P<is_owner>true|false)/$', "franceculture.views.projectsfilter", ),
+    url(r'^filtercontents/(?P<filter>\w*)/$', "franceculture.views.contentsfilter", ),
     (r'^embedpopup/?$', "franceculture.views.popup_embed"),
 )
--- a/web/franceculture/views.py	Fri Aug 27 08:25:18 2010 +0200
+++ b/web/franceculture/views.py	Wed Sep 01 09:50:05 2010 +0200
@@ -3,7 +3,9 @@
 from django.template import RequestContext
 from django.utils.html import escape
 from django.template.loader import render_to_string
-from ldt.ldt_utils.models import Content, Project
+from ldt.ldt_utils.models import Content, Project, Owner
+from ldt.ldt_utils.utils import boolean_convert
+from django.http import HttpResponseServerError
 
 
 @login_required
@@ -19,6 +21,44 @@
     return render_to_response("franceculture/workspace.html", 
                               {'contents': content_list, 'projects': project_list},
                               context_instance=RequestContext(request))
+
+@login_required
+def projectsfilter(request, filter, is_owner=False):
+    
+    project_list = None
+    is_owner = boolean_convert(is_owner)
+    
+    if is_owner:
+        owner = None
+        try:
+            owner = Owner.objects.get(user=request.user)
+        except:
+            return HttpResponseServerError("<h1>User not found</h1>")
+
+        project_list = Project.objects.filter(owner=owner)
+    else:
+        project_list = Project.objects.filter(state=2)
+    
+    if filter:
+        project_list = project_list.filter(title__icontains=filter)
+        
+    return render_to_response("franceculture/partial/projectslist.html", 
+                              {'projects': project_list},
+                              context_instance=RequestContext(request))
+
+
+@login_required
+def contentsfilter(request, filter):
+    if filter:
+        content_list = Content.objects.filter(title__icontains=filter)
+    else:
+        content_list = Content.objects.all()
+        
+    return render_to_response("franceculture/partial/contentslist.html", 
+                              {'contents': content_list},
+                              context_instance=RequestContext(request))
+
+     
     
 def popup_embed(request):
     
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/content_list.html	Wed Sep 01 09:50:05 2010 +0200
@@ -0,0 +1,84 @@
+{% extends "ldt/user/user_base.html" %}
+{% load i18n %}
+
+{% block js_declaration %}
+{{block.super}}
+<script type="text/javascript">
+$(document).ready(function(){
+
+	$('.ldt_link').nyroModal({
+           	type: 'iframe',
+           	forceType: 'iframe',
+       		height:662, 
+       		width:1022,
+       		bgColor: 'rgb(239, 239, 239)',
+       		padding: 5,
+       		titleFromIframe: false
+          	});
+        	
+     $('.ldt_link_create').nyroModal({
+            type: 'iframe',
+            forceType: 'iframe',
+            height:662, 
+            width:1022,
+            bgColor: 'rgb(239, 239, 239)',
+            padding: 5,
+            titleFromIframe: false,
+            beforeHideContent: function(elts, settings, callback){
+	             try {
+		              var res = $('#ldtInitSwf',$('#nyroModalIframe').contents());
+		              if(res.length > 0)
+		              {
+		              	   res.get(0).forceSave();
+		              }
+	             }
+	             catch(err)
+	             {
+	              // do nothing
+	             }                   
+	             callback();
+            }
+        });
+
+});
+</script>
+
+{% endblock %}
+
+{% block css_import %}
+{{block.super}}
+    <link rel="stylesheet" type="text/css" href="{{ BASE_URL }}static/ldt/css/ldt.css" />
+{% endblock %}
+
+{% block breadcrumb %}
+<li></li>
+<li><a href="{% url ldt.userpanel.views.space %}">{% trans "Space" %}</a></li>
+<li>{% trans "Ldt Project" %}</li>
+{% endblock %}
+
+{% block content_title %}{% trans "Contents" %}{%endblock %}
+
+{% block iricontent %}
+<div id='contentlist'><a
+	href="#" class="create_content_link">{% trans 'Create new content'%}</a>
+
+<table>
+<caption>{% trans "Content" %}</caption>
+	<thead>
+		<tr>
+			<th width="170">{% trans "title" %}</th>
+			<th width="20">{% trans "create project" %}</th>
+		</tr>
+	</thead>
+	<tbody>
+{% for content in contents %}
+    <tr>
+        <td><a href="{% url ldt.ldt_utils.views.index content.iri_id %}" class="ldt_link">{{ content.title }}</a></td>
+        <td><a href="{% url ldt.ldt_utils.views.create_project content.iri_id %}" class="ldt_link_create">{% trans "create project" %}</a></td>
+    </tr>
+{% endfor %}
+    </tbody>
+</table>
+</div>
+
+{% endblock %}
--- a/web/ldt/ldt_utils/templates/ldt/ldt_utils/ldt_list.html	Fri Aug 27 08:25:18 2010 +0200
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/ldt_list.html	Wed Sep 01 09:50:05 2010 +0200
@@ -66,7 +66,7 @@
 		</tr>
 	</thead>
 	<tbody>
-		{% for ldt in ldtProjects %}
+		{% for ldt in projects %}
 		<tr>
 			<th><a href="{% url ldt.ldt_utils.views.indexProject ldt.ldt_id %}"
 				class="ldt_link">{{ ldt.title }}</a></th>
--- a/web/ldt/ldt_utils/urls.py	Fri Aug 27 08:25:18 2010 +0200
+++ b/web/ldt/ldt_utils/urls.py	Wed Sep 01 09:50:05 2010 +0200
@@ -24,6 +24,7 @@
 
 if test_ldt():
     urlpatterns += patterns('ldt.ldt_utils',
+        url(r'^space/content/$', 'views.list_content'),
         url(r'^space/ldt/$', 'views.list_ldt'),
         url(r'^space/ldt/indexproject/(?P<id>.*)$', 'views.indexProject'),
         url(r'^space/ldt/init/(?P<method>.*)/(?P<url>.+)$', 'views.init', name='space_ldt_init'),
@@ -31,7 +32,7 @@
         url(r'^space/ldt/create/$', 'views.create_ldt_view'),
         url(r'^space/ldt/created_done/$', 'views.created_ldt'),
         url(r'^space/ldt/save/$', 'views.save_ldtProject'),
-        url(r'^space/ldt/publish/(?P<id>.*)$', 'views.publish'),
-        url(r'^space/ldt/unpublish/(?P<id>.*)$', 'views.unpublish'),
+        url(r'^space/ldt/publish/(?P<id>[\w-]*)(?:/(?P<redirect>true|false))?$', 'views.publish'),
+        url(r'^space/ldt/unpublish/(?P<id>[\w-]*)(?:/(?P<redirect>true|false))?$', 'views.unpublish'),
 
 )
--- a/web/ldt/ldt_utils/utils.py	Fri Aug 27 08:25:18 2010 +0200
+++ b/web/ldt/ldt_utils/utils.py	Wed Sep 01 09:50:05 2010 +0200
@@ -14,6 +14,23 @@
 import Ft
 import lxml.etree
 
+__BOOLEAN_DICT = {
+    'false':False,
+    'true':True,
+    '0':False,
+    '1':True,
+    't': True,
+    'f':False
+}
+
+def boolean_convert(bool):
+    if bool is None:
+        return False
+    if bool is True or bool is False:
+        return bool
+    key = str(bool).lower()
+    return __BOOLEAN_DICT.get(key, False)
+
 class LdtSearch(object):
 
     def query(self, field, query):
--- a/web/ldt/ldt_utils/views.py	Fri Aug 27 08:25:18 2010 +0200
+++ b/web/ldt/ldt_utils/views.py	Wed Sep 01 09:50:05 2010 +0200
@@ -133,10 +133,19 @@
     ldtProjects = Project.objects.filter(owner=owner)
     context={
     'contents': contents,
-    'ldtProjects': ldtProjects.reverse(),
+    'projects': ldtProjects.reverse(),
     }
     return render_to_response('ldt/ldt_utils/ldt_list.html', context, context_instance=RequestContext(request))
 
+@login_required         
+def list_content(request):
+    contents = Content.objects.all()
+    context={
+        'contents': contents,
+    }
+    return render_to_response('ldt/ldt_utils/content_list.html', context, context_instance=RequestContext(request))
+
+
 def create_ldt_view(request):
     if request.method == "POST" :
         form = LdtAddForm(request.POST)
@@ -276,18 +285,26 @@
     return render_to_response('ldt/ldt_utils/save_done.html', {'ldt': ldt, 'id':id, 'title':title, 'contents': new_contents}, context_instance=RequestContext(request))
     
 @login_required    
-def publish(request, id):
+def publish(request, id, redirect=True):
     ldt = get_object_or_404(Project, ldt_id=id)
     ldt.state = 2 #published
     ldt.save()
-    return HttpResponseRedirect(reverse("ldt.ldt_utils.views.list_ldt"))
+    redirect = boolean_convert(redirect)
+    if redirect:
+        return HttpResponseRedirect(reverse("ldt.ldt_utils.views.list_ldt"))
+    else:
+        return HttpResponse(simplejson.dumps({'res':True, 'ldt': {'id': ldt.id, 'state':ldt.state,'ldt_id': ldt.ldt_id}}, ensure_ascii=False),mimetype='application/json')
     
 @login_required    
-def unpublish(request, id):
+def unpublish(request, id, redirect=True):
     ldt = get_object_or_404(Project, ldt_id=id)
     ldt.state = 1 #edition
     ldt.save()
-    return HttpResponseRedirect(reverse("ldt.ldt_utils.views.list_ldt"))
+    redirect = boolean_convert(redirect)
+    if redirect:
+        return HttpResponseRedirect(reverse("ldt.ldt_utils.views.list_ldt"))
+    else:
+        return HttpResponse(simplejson.dumps({'res':True, 'ldt': {'id': ldt.id, 'state':ldt.state,'ldt_id': ldt.ldt_id}}, ensure_ascii=False),mimetype='application/json')
     
 
 def index(request, url):
--- a/web/ldt/media/css/dashboard.css	Fri Aug 27 08:25:18 2010 +0200
+++ b/web/ldt/media/css/dashboard.css	Wed Sep 01 09:50:05 2010 +0200
@@ -1,3 +1,4 @@
+@charset "UTF-8";
 
 #content-main-app-ldt-utils {
     float: left;
--- a/web/ldt/media/css/ldt.css	Fri Aug 27 08:25:18 2010 +0200
+++ b/web/ldt/media/css/ldt.css	Wed Sep 01 09:50:05 2010 +0200
@@ -1,3 +1,5 @@
+@charset "UTF-8";
+
 #addldtform
 {
     font-size: 16px;
--- a/web/ldt/media/css/style.css	Fri Aug 27 08:25:18 2010 +0200
+++ b/web/ldt/media/css/style.css	Wed Sep 01 09:50:05 2010 +0200
@@ -1,3 +1,5 @@
+@charset "UTF-8";
+
 #loginstate a, #loginstate a:hover, #loginstate a:visited, #loginstate a:link, #loginstate a:active {
     color:#0063DC;
     margin-right:4px;
--- a/web/ldt/media/css/style_base.css	Fri Aug 27 08:25:18 2010 +0200
+++ b/web/ldt/media/css/style_base.css	Wed Sep 01 09:50:05 2010 +0200
@@ -1,3 +1,5 @@
+@charset "UTF-8";
+
 body
 {   font-family: Arial, Helvetica, sans serif;
     padding: 0px;
--- a/web/static/css/LdtPlayer.css	Fri Aug 27 08:25:18 2010 +0200
+++ b/web/static/css/LdtPlayer.css	Wed Sep 01 09:50:05 2010 +0200
@@ -1,105 +1,105 @@
-		#demo-frame > div.demo { padding: 5px !important; };
-		
-		button.ui-button-icon-only  {
-			height:1.5em;
-			width:1.5em;
-		}
-		
-		#Ldt-controler {
-			font-size: 62.5%;
-			font-family: "Trebuchet MS", "Helvetica", "Arial",  "Verdana", "sans-serif";
-		}
+@charset "UTF-8";
 
-		.Ldt-iri-chapter{
-			padding-top:10px;
-			padding-bottom:5px;
-			border-left:solid 1px #000;
-			border-right:solid 1px #000;
-		}
-		
-		.tooltip {
-			display:none;
-			background:transparent url(../css/jq-css/imgs/white_arrow_mini.png);
-			font-size:12px;
-			height:55px;
-			width:180px;
-			padding:10px;
-			padding-left:15px;
-			padding-top:15px;
-			padding-right:15px;
-			color:#000;	
-			font-family: "Trebuchet MS", "Helvetica", "Arial",  "Verdana", "sans-serif";
-		}
+#demo-frame > div.demo { padding: 5px !important; };
 		
-		#Ldt-Annotations{
-			padding-left:5px;
-			width:470px;
-			float:left;
-			font-size: 62.5%;
-		}
-		#Ldt-SaTitle{
-			padding-top:2px;
-			padding-bottom:5px;
-			font-size:18px;
-			color:#FFF;	
-			height:22p;
-		}
-		#Ldt-SaDescription{
-			font-size:12px;	
-			color:#FFF;	
-		}
-		#Ldt-ShowAnnotation{
-			position:absolute;
-			z-index: 999;
-			padding:5px;
-			background:url(../css/jq-css/imgs/transBlack.png);
-			font-family: "Trebuchet MS", "Helvetica", "Arial",  "Verdana", "sans-serif";
-		}
-		
-		#Ldt-PlaceHolder{
-			position:absolue;
-			float:none;
-		}
-		.Ldt-Control1{
-			width:70px;
-			float:left;
-		}
-		.Ldt-Control2{
-			padding-left:10px;
-			width:70px;
-			float:left;
-		}
-		.Ldt-cleaner {
-			clear:both;
-		} 
-		.share {
-			background:url('../css/jq-css/imgs/widget20.png') no-repeat scroll 0 0 transparent ;
-			display:block;
-			height:16px;
-			line-height:16px !important;
-			overflow:hidden;
-			width:16px;
-			float:left;
-			cursor:pointer;
-			margin:2px;
-		}
-		.shareFacebook{
-			background-position:0 -704px;
-		}
-		.shareMySpace{
-			background-position:0 -736px;
-		}
-		.shareTwitter{
-			background-position:0 -1072px;
-		}
-		.shareGoogle{
-			background-position:0 -752px;
-		}
-		.shareDelicious{
-			background-position:0 -672px;
-		}
-		.shareJamesPot{
-			background-position:0 -1808px;
-		}
-		
-		
\ No newline at end of file
+button.ui-button-icon-only  {
+	height:1.5em;
+	width:1.5em;
+}
+
+#Ldt-controler {
+	font-size: 62.5%;
+	font-family: "Trebuchet MS", "Helvetica", "Arial",  "Verdana", "sans-serif";
+}
+
+.Ldt-iri-chapter{
+	padding-top:10px;
+	padding-bottom:5px;
+	border-left:solid 1px #000;
+	border-right:solid 1px #000;
+}
+
+.tooltip {
+	display:none;
+	background:transparent url(../css/jq-css/imgs/white_arrow_mini.png);
+	font-size:12px;
+	height:55px;
+	width:180px;
+	padding:10px;
+	padding-left:15px;
+	padding-top:15px;
+	padding-right:15px;
+	color:#000;	
+	font-family: "Trebuchet MS", "Helvetica", "Arial",  "Verdana", "sans-serif";
+}
+
+#Ldt-Annotations{
+	padding-left:5px;
+	width:470px;
+	float:left;
+	font-size: 62.5%;
+}
+#Ldt-SaTitle{
+	padding-top:2px;
+	padding-bottom:5px;
+	font-size:18px;
+	color:#FFF;	
+	height:22p;
+}
+#Ldt-SaDescription{
+	font-size:12px;	
+	color:#FFF;	
+}
+#Ldt-ShowAnnotation{
+	position:absolute;
+	z-index: 999;
+	padding:5px;
+	background:url(../css/jq-css/imgs/transBlack.png);
+	font-family: "Trebuchet MS", "Helvetica", "Arial",  "Verdana", "sans-serif";
+}
+
+#Ldt-PlaceHolder{
+	position:absolue;
+	float:none;
+}
+.Ldt-Control1{
+	width:70px;
+	float:left;
+}
+.Ldt-Control2{
+	padding-left:10px;
+	width:70px;
+	float:left;
+}
+.Ldt-cleaner {
+	clear:both;
+} 
+.share {
+	background:url('../css/jq-css/imgs/widget20.png') no-repeat scroll 0 0 transparent ;
+	display:block;
+	height:16px;
+	line-height:16px !important;
+	overflow:hidden;
+	width:16px;
+	float:left;
+	cursor:pointer;
+	margin:2px;
+}
+.shareFacebook{
+	background-position:0 -704px;
+}
+.shareMySpace{
+	background-position:0 -736px;
+}
+.shareTwitter{
+	background-position:0 -1072px;
+}
+.shareGoogle{
+	background-position:0 -752px;
+}
+.shareDelicious{
+	background-position:0 -672px;
+}
+.shareJamesPot{
+	background-position:0 -1808px;
+}
--- a/web/static/css/custom_player.css	Fri Aug 27 08:25:18 2010 +0200
+++ b/web/static/css/custom_player.css	Wed Sep 01 09:50:05 2010 +0200
@@ -1,3 +1,5 @@
+@charset "UTF-8";
+
 #demo-frame > div.demo { padding: 5px !important; };
 .iri-chapter{
 	padding-top:10px;
--- a/web/static/css/nyroModal.css	Fri Aug 27 08:25:18 2010 +0200
+++ b/web/static/css/nyroModal.css	Wed Sep 01 09:50:05 2010 +0200
@@ -1,3 +1,5 @@
+@charset "UTF-8";
+
 div#nyroModalFull {
 	font-size: 12px;
 	color: #777;
--- a/web/static/css/style.css	Fri Aug 27 08:25:18 2010 +0200
+++ b/web/static/css/style.css	Wed Sep 01 09:50:05 2010 +0200
@@ -1,3 +1,5 @@
+@charset "UTF-8";
+
 body {
 
  	font-family: Arial, Helvetica, sans serif;
--- a/web/static/css/tabs.css	Fri Aug 27 08:25:18 2010 +0200
+++ b/web/static/css/tabs.css	Wed Sep 01 09:50:05 2010 +0200
@@ -9,7 +9,7 @@
    * For credits and origins, see AUTHORS.
 
 ----------------------------------------------------------------------- */
-
+@charset "UTF-8";
 
 .tabs { 
 	height:auto; 
--- a/web/static/css/workspace.css	Fri Aug 27 08:25:18 2010 +0200
+++ b/web/static/css/workspace.css	Wed Sep 01 09:50:05 2010 +0200
@@ -1,3 +1,4 @@
+@charset "UTF-8";
 
 .titlediv {
 	margin: 0px 0px 25px 0px;
@@ -47,9 +48,9 @@
 .searchfieldinputbase {
 	background: #ffffff url("../img/search.gif") no-repeat left center;
 	border: none;
-	width: 110px;
+	width: 99px;
 	height: 14px;
-	margin: 0px;
+	margin: 0px 2px 0px 0px;
 	vertical-align: top;
 	padding-left: 20px;
 }
@@ -63,11 +64,13 @@
 html>body div.projectscontentsdiv {
 	overflow: hidden;
 	width: 470px;
+	height: 570px;
+	
 }
 div.projectscontentsdiv table {
 	float: left;
 	width: 470px;
-	height: 570px;
+	height: 100%;
 }
 
 div.projectscontentsdiv td, div.projectscontentsdiv th {
@@ -82,16 +85,13 @@
 	background: white;	
 }
 
-html>body div.projectscontentsdiv table {
-	width: 470px
-}
 
 thead.projectscontentsheader tr {
-	position: relative
+	position: relative;
 }
 
 tfoot.projectscontentsfooter tr {
-		position: relative
+		position: relative;
 }
 
 /* make the TH elements pretty */
@@ -101,7 +101,7 @@
 	text-transform:capitalize;
 	color: white;
 	padding: 1px 2px;
-	text-align: left
+	text-align: left;
 }
 
 #contentsheader th {
@@ -139,7 +139,7 @@
 	color: #FFF;
 	display: block;
 	text-decoration: none;
-	width: 100%
+	width: 100%;
 }
  
 /* make the A elements pretty. makes for nice clickable headers                */
@@ -148,7 +148,7 @@
 	color: #FFF;
 	display: block;
 	text-decoration: underline;
-	width: 100%
+	width: 100%;
 }
 
 html>body thead.projectscontentsheader tr {
@@ -173,6 +173,9 @@
 	border-bottom: 2px solid #b5b5b5 ;
 }
 
+.projectscontentsbody tr {
+	height: 26px;
+}
 
 .titlediv {
 	vertical-align: middle;	
@@ -183,10 +186,14 @@
 	width: 18px;
 	text-align: center;
 	padding: 4px 2px 4px 2px;
+	cursor: pointer; cursor: hand;
 }
 
 .cellimgdiv {
 	visibility: hidden;
 }
 
+.searchajaxloader {
+	display: none;
+}
 
Binary file web/static/img/ajax-loader-16x16.gif has changed
Binary file web/static/img/ajax-loader-43x43.gif has changed
Binary file web/static/img/ajaxLoader.gif has changed