--- 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> </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> </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)+'&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> </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> </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