add logo in settings / fix static file settings
authorraph
Thu, 11 Feb 2010 16:28:10 +0100
changeset 160 0c01050f9717
parent 159 4ec5ae89a7b0
child 161 5f30378c79a4
add logo in settings / fix static file settings
src/cm/context_processors.py
src/cm/media/css/base.css
src/cm/media/img/logo-co-ment-100.png
src/cm/media/img/logo-co-ment-150.png
src/cm/media/img/logo-co-ment-200.png
src/cm/media/img/logo-co-ment-50.png
src/cm/media/img/logo-co-ment-75.png
src/cm/migrations/0008_nullable_text_version_in_attachements.py
src/cm/models.py
src/cm/templates/site/dashboard.html
src/cm/templates/site/dashboard_bloc_recent_comments.html
src/cm/templates/site/followup.html
src/cm/templates/site/layout/base.html
src/cm/templates/site/layout/base_workspace.html
src/cm/templates/site/layout/footer.html
src/cm/templates/site/layout/req_yui.html
src/cm/templates/site/macros/text_actions.html
src/cm/templates/site/macros/text_editor.html
src/cm/templates/site/settings.html
src/cm/templates/site/text_edit.html
src/cm/templates/site/text_followup.html
src/cm/templates/site/text_print.html
src/cm/templates/site/text_view_comments.html
src/cm/templates/site/text_view_frame.html
src/cm/templates/static/experiment/anim_io_sync.html
src/cm/templates/static/experiment/test0.html
src/cm/urls.py
src/cm/views/site.py
--- a/src/cm/context_processors.py	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/context_processors.py	Thu Feb 11 16:28:10 2010 +0100
@@ -9,7 +9,8 @@
             'SITE_URL' : settings.SITE_URL,
             'CLIENT_DEBUG' : settings.CLIENT_DEBUG,
             'YUI_VERSION' : settings.YUI_VERSION,
-            'CONF': ApplicationConfiguration
+            'CONF': ApplicationConfiguration,
+            'CM_MEDIA_PREFIX' : settings.CM_MEDIA_PREFIX,
             }
 
 
--- a/src/cm/media/css/base.css	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/media/css/base.css	Thu Feb 11 16:28:10 2010 +0100
@@ -416,17 +416,16 @@
 	text-align:right;
 }
 
-#sopinspacelink:hover {
+#comentlink:hover {
 	color:#EB5700;
 	text-decoration:underline;
 }
 
-#sopinspacelink, #sopinspacelink:visited {
+#comentlink, #comentlink:visited {
 	color:#EB5700;
 	text-decoration:none;
 }
 
-
 .ui-widget-content {
 	border-left:0;
 	border-right:0;
@@ -437,14 +436,17 @@
 	color:#00F;
 }
 
-ul.navlinks li {
-	display:inline;
-	list-style-image:none;
-	list-style-position:outside;
-	list-style-type:none;
-	padding:0 0.5em 0 0;
+.footlinks {
+	padding-top: 10px;
+}
+
+.navlinks {
+	padding:0em 0.5em 0 0;
 	white-space:nowrap;
 }
+.navright {
+	float:right;
+}
 
 a.title {
 	color:#000;
Binary file src/cm/media/img/logo-co-ment-100.png has changed
Binary file src/cm/media/img/logo-co-ment-150.png has changed
Binary file src/cm/media/img/logo-co-ment-200.png has changed
Binary file src/cm/media/img/logo-co-ment-50.png has changed
Binary file src/cm/media/img/logo-co-ment-75.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cm/migrations/0008_nullable_text_version_in_attachements.py	Thu Feb 11 16:28:10 2010 +0100
@@ -0,0 +1,183 @@
+
+from south.db import db
+from django.db import models
+from cm.models import *
+
+class Migration:
+    
+    def forwards(self, orm):
+        db.alter_column('cm_attachment', 'text_version', models.ForeignKey(TextVersion, null=True), explicit_name=False)
+    
+    
+    def backwards(self, orm):
+        "Write your backwards migration here"
+        db.alter_column('cm_attachment', 'text_version', models.ForeignKey(TextVersion, null=True), explicit_name=False)
+    
+    
+    models = {
+        'auth.group': {
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'blank': 'True'})
+        },
+        'auth.permission': {
+            'Meta': {'unique_together': "(('content_type', 'codename'),)"},
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        'auth.user': {
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '75'})
+        },
+        'cm.activity': {
+            'comment': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['cm.Comment']", 'null': 'True', 'blank': 'True'}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'ip': ('django.db.models.fields.IPAddressField', [], {'default': 'None', 'max_length': '15', 'null': 'True', 'blank': 'True'}),
+            'originator_user': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'originator_activity'", 'null': 'True', 'blank': 'True', 'to': "orm['auth.User']"}),
+            'text': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['cm.Text']", 'null': 'True', 'blank': 'True'}),
+            'text_version': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['cm.TextVersion']", 'null': 'True', 'blank': 'True'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
+        },
+        'cm.attachment': {
+            'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}),
+            'data': ('django.db.models.fields.files.FileField', [], {'max_length': '1000'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}),
+            'text_version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.TextVersion']"})
+        },
+        'cm.comment': {
+            'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}),
+            'content': ('django.db.models.fields.TextField', [], {}),
+            'content_html': ('django.db.models.fields.TextField', [], {}),
+            'created': ('django.db.models.fields.DateTimeField', [], {}),
+            'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True', 'blank': 'True'}),
+            'email': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+            'end_offset': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'end_wrapper': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'format': ('django.db.models.fields.CharField', [], {'default': "'markdown'", 'max_length': '20'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'id_key': ('django.db.models.fields.CharField', [], {'default': "'5GZbbULRf6X'", 'max_length': '20', 'db_index': 'True'}),
+            'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}),
+            'modified': ('django.db.models.fields.DateTimeField', [], {}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+            'reply_to': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Comment']", 'null': 'True', 'blank': 'True'}),
+            'start_offset': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'start_wrapper': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+            'tags': ('tagging.fields.TagField', [], {}),
+            'text_version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.TextVersion']"}),
+            'title': ('django.db.models.fields.TextField', [], {}),
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
+        },
+        'cm.configuration': {
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'key': ('django.db.models.fields.TextField', [], {}),
+            'raw_value': ('django.db.models.fields.TextField', [], {})
+        },
+        'cm.email': {
+            'bcc': ('django.db.models.fields.TextField', [], {}),
+            'body': ('django.db.models.fields.TextField', [], {}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'from_email': ('django.db.models.fields.TextField', [], {}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'message': ('django.db.models.fields.TextField', [], {}),
+            'subject': ('django.db.models.fields.TextField', [], {}),
+            'to': ('django.db.models.fields.TextField', [], {})
+        },
+        'cm.notification': {
+            'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}),
+            'email': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+            'text': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Text']", 'null': 'True', 'blank': 'True'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
+        },
+        'cm.role': {
+            'anon': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'description': ('django.db.models.fields.TextField', [], {}),
+            'global_scope': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']"})
+        },
+        'cm.text': {
+            'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True', 'blank': 'True'}),
+            'email': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}),
+            'last_text_version': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'related_text'", 'null': 'True', 'to': "orm['cm.TextVersion']"}),
+            'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+            'private_feed_key': ('django.db.models.fields.CharField', [], {'null': 'True', 'default': 'None', 'max_length': '20', 'blank': 'True', 'unique': 'True', 'db_index': 'True'}),
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+            'title': ('django.db.models.fields.TextField', [], {}),
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
+        },
+        'cm.textversion': {
+            'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}),
+            'content': ('django.db.models.fields.TextField', [], {}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'email': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+            'format': ('django.db.models.fields.CharField', [], {'default': "'markdown'", 'max_length': '20'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}),
+            'mod_posteriori': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+            'note': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+            'tags': ('tagging.fields.TagField', [], {'max_length': '1000'}),
+            'text': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Text']"}),
+            'title': ('django.db.models.fields.TextField', [], {}),
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
+        },
+        'cm.userprofile': {
+            'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}),
+            'allow_contact': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_email_error': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'is_suspended': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'is_temp': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}),
+            'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'preferred_language': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '2'}),
+            'tags': ('tagging.fields.TagField', [], {'max_length': '1000'}),
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'unique': 'True'})
+        },
+        'cm.userrole': {
+            'Meta': {'unique_together': "(('role', 'user', 'text'),)"},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Role']", 'null': 'True', 'blank': 'True'}),
+            'text': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Text']", 'null': 'True', 'blank': 'True'}),
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
+        },
+        'contenttypes.contenttype': {
+            'Meta': {'unique_together': "(('app_label', 'model'),)", 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        }
+    }
+    
+    complete_apps = ['cm']
--- a/src/cm/models.py	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/models.py	Thu Feb 11 16:28:10 2010 +0100
@@ -386,6 +386,12 @@
             return self.get(key=key).value
         except Configuration.DoesNotExist:
             return DEFAULT_CONF.get(key, default_value)
+
+    def del_key(self, key):
+        try:
+            self.get(key=key).delete()
+        except Configuration.DoesNotExist:
+            return None
         
     def set_key(self, key, value):
         conf, created = self.get_or_create(key=key)
@@ -396,7 +402,18 @@
                 change_role_model(value)
 
     def __getitem__(self, key):
-        return self.get_key(key, None)
+        if not key.startswith('f_'):
+            return self.get_key(key, None)
+        else:
+            return getattr(self,key)()
+    
+    def f_get_logo_url(self):
+        key = self.get_key('workspace_logo_file_key', None)
+        if key:
+            attach = Attachment.objects.get(key=key)
+            return attach.data.url
+        else:
+            return None 
     
 import base64
 
@@ -428,7 +445,7 @@
     
 class Attachment(KeyModel):
     data = models.FileField(upload_to="attachments/%Y/%m/%d/", max_length=1000)
-    text_version = models.ForeignKey(TextVersion)
+    text_version = models.ForeignKey(TextVersion, null=True)
 
     objects = AttachmentManager()
     
--- a/src/cm/templates/site/dashboard.html	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/templates/site/dashboard.html	Thu Feb 11 16:28:10 2010 +0100
@@ -45,12 +45,12 @@
 		</thead>
 		<tbody>
 	        <tr><td>	
-            {% if can_create_text %}<div class="dash_action"><a class="" href="{% url text-create-content %}"><img align="middle" src="{{ MEDIA_URL }}img/sop_write.png"/>&nbsp;{% blocktrans %}Write a text{% endblocktrans %}</a></div>{% endif %}
-            {% if can_create_text %}<div class="dash_action"><a class="" href="{% url text-create-upload %}"><img align="middle" src="{{ MEDIA_URL }}img/sop_upload.png"/>&nbsp;{% blocktrans %}Upload a text{% endblocktrans %}</a></div>{% endif %}
-            {% if can_manage_workspace %}<div class="dash_action"><a class="" href="{% url user-add %}"><img align="middle" src="{{ MEDIA_URL }}img/group_add.png"/>&nbsp;{% blocktrans %}Invite user{% endblocktrans %}</a></div>{% endif %}
-            <div class="dash_action"><a class="" href="{% url profile %}"><img align="middle" src="{{ MEDIA_URL }}img/user_edit.png"/>&nbsp;{% blocktrans %}Edit your profile{% endblocktrans %}</a></div>
-            <div class="dash_action"><a class="" href="{% url text %}"><img align="middle" src="{{ MEDIA_URL }}img/page_white_stack.png"/>&nbsp;{% blocktrans %}View text list{% endblocktrans %}</a></div>
-            {% if can_manage_workspace %}<div class="dash_action"><a class="" href="{% url settings %}"><img align="middle" src="{{ MEDIA_URL }}img/cog_edit.png"/>&nbsp;{% blocktrans %}Configure workspace{% endblocktrans %}</a></div>{% endif %}
+            {% if can_create_text %}<div class="dash_action"><a class="" href="{% url text-create-content %}"><img align="middle" src="{{ CM_MEDIA_PREFIX }}img/sop_write.png"/>&nbsp;{% blocktrans %}Write a text{% endblocktrans %}</a></div>{% endif %}
+            {% if can_create_text %}<div class="dash_action"><a class="" href="{% url text-create-upload %}"><img align="middle" src="{{ CM_MEDIA_PREFIX }}img/sop_upload.png"/>&nbsp;{% blocktrans %}Upload a text{% endblocktrans %}</a></div>{% endif %}
+            {% if can_manage_workspace %}<div class="dash_action"><a class="" href="{% url user-add %}"><img align="middle" src="{{ CM_MEDIA_PREFIX }}img/group_add.png"/>&nbsp;{% blocktrans %}Invite user{% endblocktrans %}</a></div>{% endif %}
+            <div class="dash_action"><a class="" href="{% url profile %}"><img align="middle" src="{{ CM_MEDIA_PREFIX }}img/user_edit.png"/>&nbsp;{% blocktrans %}Edit your profile{% endblocktrans %}</a></div>
+            <div class="dash_action"><a class="" href="{% url text %}"><img align="middle" src="{{ CM_MEDIA_PREFIX }}img/page_white_stack.png"/>&nbsp;{% blocktrans %}View text list{% endblocktrans %}</a></div>
+            {% if can_manage_workspace %}<div class="dash_action"><a class="" href="{% url settings %}"><img align="middle" src="{{ CM_MEDIA_PREFIX }}img/cog_edit.png"/>&nbsp;{% blocktrans %}Configure workspace{% endblocktrans %}</a></div>{% endif %}
             </td>
             </tr>
 		
@@ -71,12 +71,12 @@
             	{% with profile.user as user %}
             	<li class="dashlog_item">
 				    <div class="dashlog">            	
-						<img class="dashlog_img" src="{{ MEDIA_URL }}img/user_error_small.png"/>
+						<img class="dashlog_img" src="{{ CM_MEDIA_PREFIX }}img/user_error_small.png"/>
 						<span class="dashlog_data">
             			{% blocktrans %}user {{ user }} awaits approval{% endblocktrans %}
             			</span>
             			<div class="mod_actions">
-<img src="{{ MEDIA_URL }}img/bullet_go_small.png"/>
+<img src="{{ CM_MEDIA_PREFIX }}img/bullet_go_small.png"/>
 <a id="user-approve-{{ user.get_profile.key }}" href="#">{% blocktrans %}approve{% endblocktrans %}</a>/<a id="user-refuse-{{ user.get_profile.key }}" href="#">{% blocktrans %}refuse{% endblocktrans %}</a> {% blocktrans %}membership{% endblocktrans %}
 <script type="text/javascript">
 <!--
@@ -114,14 +114,14 @@
             {% for comment in to_mod_comments %}
             	<li class="dashlog_item">
 				    <div class="dashlog">            	
-						<img class="dashlog_img" src="{{ MEDIA_URL }}img/note_error_small.png"/>
+						<img class="dashlog_img" src="{{ CM_MEDIA_PREFIX }}img/note_error_small.png"/>
 						<span class="dashlog_data">
             	
 		            	{% blocktrans %}comment{% endblocktrans %} <a href="{% url text-view-show-comment comment.text_version.text.key comment.id_key %}">{{ comment.title }}</a>
 		            	{% blocktrans with comment.user as cuser %}by {{ cuser }} on text{% endblocktrans %} <a href="{% url text-view comment.text_version.text.key %}">{{ comment.text_version.text.title }}</a> {% blocktrans %}awaits approval{% endblocktrans %}<br />
 		            	</span>
 		            	<div style="padding-left:22px;" class="mod_actions">
-<img src="{{ MEDIA_URL }}img/bullet_go_small.png"/>
+<img src="{{ CM_MEDIA_PREFIX }}img/bullet_go_small.png"/>
 
 <a id="comment-approve-{{ comment.key }}" href="#">{% blocktrans %}approve{% endblocktrans %}</a>/<a id="comment-refuse-{{ comment.key }}" href="#">{% blocktrans %}refuse{% endblocktrans %}</a> {% blocktrans %}comment{% endblocktrans %},
 <a href="{% url text-view-show-comment comment.text_version.text.key comment.id_key %}">{% blocktrans %}view in context{% endblocktrans %}</a>
@@ -192,7 +192,7 @@
             {% for text in last_texts %}
             <li class="dashlog_item">
 				    <div class="dashlog">            	
-						<img class="dashlog_img" src="{{ MEDIA_URL }}img/page_white.png"/>
+						<img class="dashlog_img" src="{{ CM_MEDIA_PREFIX }}img/page_white.png"/>
 						<span class="dashlog_data">
 							<a href="{% url text-view text.key %}">{{ text.title }}</a>						
                     </span>
@@ -295,7 +295,7 @@
                 {% for activity in object_list %}
                     <li class="dashlog_item">
 				    <div class="dashlog">                    
-                    <img class="dashlog_img" src={{ MEDIA_URL }}img/{{ activity.img_name }} />
+                    <img class="dashlog_img" src={{ CM_MEDIA_PREFIX }}img/{{ activity.img_name }} />
                     <span class="dashlog_data">                    
                     {{ activity.printable_data }}
                     </span>
--- a/src/cm/templates/site/dashboard_bloc_recent_comments.html	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/templates/site/dashboard_bloc_recent_comments.html	Thu Feb 11 16:28:10 2010 +0100
@@ -15,7 +15,7 @@
            {% for comment in last_comments %}
            <li class="dashlog_item">
 			    <div class="dashlog">            	
-					<img class="dashlog_img" src="{{ MEDIA_URL }}img/note_small.png"/>
+					<img class="dashlog_img" src="{{ CM_MEDIA_PREFIX }}img/note_small.png"/>
 					<span class="dashlog_data">
 						<a href="{% url text-view-show-comment comment.text_version.text.key comment.id_key %}">{{ comment.title }}</a> {% blocktrans %}on text{% endblocktrans %} <a href="{% url text-view comment.text_version.text.key %}">{{ comment.text_version.title }}</a>						
                    </span>
--- a/src/cm/templates/site/followup.html	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/templates/site/followup.html	Thu Feb 11 16:28:10 2010 +0100
@@ -23,7 +23,7 @@
 
 <div>
 <a href="{% url public-feed %}" title="{% blocktrans %}Public feed for workspace{% endblocktrans %}">
-	<img style="vertical-align:middle;" src="{{ MEDIA_URL }}/img/xml.gif" /> {{SITE_URL}}{% url public-feed %} 
+	<img style="vertical-align:middle;" src="{{ CM_MEDIA_PREFIX }}/img/xml.gif" /> {{SITE_URL}}{% url public-feed %} 
 </a>
 </div>
 {% blocktrans %}This is the public feed for the workspace.{% endblocktrans %}
@@ -37,7 +37,7 @@
 {% if CONF.private_feed_key %}
 <div>
 <a href="{% url private-feed CONF.private_feed_key %}" title="{% blocktrans %}Private feed for workspace{% endblocktrans %}">
-	<img style="vertical-align:middle;" src="{{ MEDIA_URL }}/img/xml.gif" /> {{SITE_URL}}{% url private-feed CONF.private_feed_key %} 
+	<img style="vertical-align:middle;" src="{{ CM_MEDIA_PREFIX }}/img/xml.gif" /> {{SITE_URL}}{% url private-feed CONF.private_feed_key %} 
 </a>
 </div>
 {% blocktrans %}This is the private feed for the workspace. Don't share this address with others unless you want them to see all activities on the workspace.{% endblocktrans %}
--- a/src/cm/templates/site/layout/base.html	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/templates/site/layout/base.html	Thu Feb 11 16:28:10 2010 +0100
@@ -21,15 +21,15 @@
     </script>
      -->
   
-    <link type="text/css" href="{{ MEDIA_URL }}js/lib/jquery/css/smoothness/jquery-ui-1.7.2.custom.css" rel="stylesheet" />    
-    <script type="text/javascript" src="{{ MEDIA_URL }}js/lib/jquery/js/jquery-1.3.2.min.js"></script>
-    <script type="text/javascript" src="{{ MEDIA_URL }}js/lib/jquery/js/jquery-ui-1.7.2.custom.min.js"></script>
-    <script type="text/javascript" src="{{ MEDIA_URL }}js/lib/jquery/js/cookie/jquery.cookie.js"></script>
-    <script type="text/javascript" src="{{ MEDIA_URL }}js/site/layout/base.js"></script>
-    <script type="text/javascript" src="{{ MEDIA_URL }}js/lib/jquery.sparkline/jquery.sparkline.min.js"></script>
+    <link type="text/css" href="{{ CM_MEDIA_PREFIX }}js/lib/jquery/css/smoothness/jquery-ui-1.7.2.custom.css" rel="stylesheet" />    
+    <script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/lib/jquery/js/jquery-1.3.2.min.js"></script>
+    <script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/lib/jquery/js/jquery-ui-1.7.2.custom.min.js"></script>
+    <script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/lib/jquery/js/cookie/jquery.cookie.js"></script>
+    <script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/site/layout/base.js"></script>
+    <script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/lib/jquery.sparkline/jquery.sparkline.min.js"></script>
 
-    <script type="text/javascript" src="{{ MEDIA_URL }}js/lib/tipsy/src/javascripts/jquery.tipsy.js"></script>
-    <link type="text/css" href="{{ MEDIA_URL }}js/lib/tipsy/src/stylesheets/tipsy.css" rel="stylesheet" />    
+    <script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/lib/tipsy/src/javascripts/jquery.tipsy.js"></script>
+    <link type="text/css" href="{{ CM_MEDIA_PREFIX }}js/lib/tipsy/src/stylesheets/tipsy.css" rel="stylesheet" />    
       <script type="text/javascript">
       <!--
       $(function() {
@@ -51,8 +51,8 @@
 
     {% include "site/layout/req_yui.html" %}
     
-    <link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/base.css" />   
-    <link rel="shortcut icon" href="{{ MEDIA_URL }}favicon.ico" />
+    <link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}css/base.css" />   
+    <link rel="shortcut icon" href="{{ CM_MEDIA_PREFIX }}favicon.ico" />
 
     {% include "site/macros/timezone.html" %}
 
--- a/src/cm/templates/site/layout/base_workspace.html	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/templates/site/layout/base_workspace.html	Thu Feb 11 16:28:10 2010 +0100
@@ -11,7 +11,20 @@
 {% get_local_perm request can_manage_workspace as can_manage_workspace %}
 {% nb_texts as nb_texts %}
 {% nb_users as nb_users %}
-<h1 class="main_title"><a title="{% blocktrans %}back to workspace{% endblocktrans %}" class="title" href="{% url index %}">{{ CONF.workspace_name }}</a></h1>
+<h1 class="main_title">
+{% if CONF.f_get_logo_url %}
+<div><img src="{{ CONF.f_get_logo_url }}"></img></div>
+{% endif %}
+
+{% if CONF.workspace_name %}
+<a title="{% blocktrans %}back to workspace{% endblocktrans %}" class="title" href="{% url index %}">{{ CONF.workspace_name }}</a>
+{% endif %}
+</h1>
+
+{% if CONF.workspace_tagline %}
+<div>
+{{ CONF.workspace_tagline }}</div>
+{% endif %}
 
 <span class="metadata">
 {% blocktrans count nb_texts as nb_texts %}{{ nb_texts }} text{% plural %}{{ nb_texts }} texts{% endblocktrans %}{% if can_manage_workspace %}, {% blocktrans count nb_users as nb_users %}{{ nb_users }} user{% plural %}{{ nb_users }} users{% endblocktrans %}
--- a/src/cm/templates/site/layout/footer.html	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/templates/site/layout/footer.html	Thu Feb 11 16:28:10 2010 +0100
@@ -2,13 +2,17 @@
 <div class="footer">
 
 <div id="footerbar">
-<div class="footlinks">
-<ul class="navlinks">
-    <li><a href="#">{% blocktrans %}About{% endblocktrans %}</a></li>
-    <li>&#183;</li>
-    <li><a href="{% url contact %}">{% blocktrans %}Contact{% endblocktrans %}</a></li>
-    <li>&#183;</li>
-    <li>
+<div class="footlinks" style="padding-top: 10px;">
+<span class="navlinks navleft">
+    <a href="#">{% blocktrans %}About{% endblocktrans %}</a>
+    &#183;
+    <a href="{% url contact %}">{% blocktrans %}Contact{% endblocktrans %}</a>
+    &#183;
+    <a id="comentlink" title="co-ment" href="http://www.co-ment.com">Powered by <img src="{{ CM_MEDIA_PREFIX }}img/logo-co-ment-50.png"></img></a>
+    &#183;    
+    <a href="{% url help %}">{% blocktrans %}Help{% endblocktrans %}</a>
+    
+    &#183;
     {% for lang in LOCAL_LANGUAGES %}
         {% ifequal lang.0 LANGUAGE_CODE %}
             {{ lang.1 }}
@@ -16,15 +20,15 @@
             <a title="{{ lang.1 }}" href="{% url setlang lang.0 %}">{{ lang.1 }}</a>
         {% endifequal %}
         {% if not forloop.last %}
-        &nbsp;/&nbsp; 
+        &nbsp; 
         {% endif %}
     {% endfor %}
-    </li>
-    <li>&#183;</li>
-    <li><a id="sopinspacelink" href="http://www.sopinspace.com">&copy; 2007-{% now "Y" %} Sopinspace</a></li>
-    <li>&#183;</li>    
-    <li><a href="{% url help %}">{% blocktrans %}Help{% endblocktrans %}</a></li>
-</ul>
+    
+    
+</span>
+<span class="navlinks navright">    
+    
+</span>
 </div>
 </div>
 </div>
--- a/src/cm/templates/site/layout/req_yui.html	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/templates/site/layout/req_yui.html	Thu Feb 11 16:28:10 2010 +0100
@@ -1,4 +1,4 @@
-    <script type="text/javascript" src="{{ MEDIA_URL }}js/lib/yui/{{ YUI_VERSION }}/build/yui/yui-{% if CLIENT_DEBUG  %}debug{% else %}min{% endif %}.js"></script>
-    <link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}js/lib/yui/{{ YUI_VERSION  }}/build/cssreset/reset-min.css"/> 
-    <link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}js/lib/yui/{{ YUI_VERSION  }}/build/cssfonts/fonts-min.css"/> 
-    <link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}js/lib/yui/{{ YUI_VERSION  }}/build/cssbase/base-min.css"/>
+    <script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/lib/yui/{{ YUI_VERSION }}/build/yui/yui-{% if CLIENT_DEBUG  %}debug{% else %}min{% endif %}.js"></script>
+    <link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}js/lib/yui/{{ YUI_VERSION  }}/build/cssreset/reset-min.css"/> 
+    <link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}js/lib/yui/{{ YUI_VERSION  }}/build/cssfonts/fonts-min.css"/> 
+    <link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}js/lib/yui/{{ YUI_VERSION  }}/build/cssbase/base-min.css"/>
--- a/src/cm/templates/site/macros/text_actions.html	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/templates/site/macros/text_actions.html	Thu Feb 11 16:28:10 2010 +0100
@@ -1,6 +1,6 @@
 {% load i18n %}
-<script type="text/javascript" src="{{ MEDIA_URL }}js/lib/fg-menu/fg.menu.js"></script>
-<link type="text/css" href="{{ MEDIA_URL }}js/lib/fg-menu/fg.menu.css" media="screen" rel="stylesheet" />
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/lib/fg-menu/fg.menu.js"></script>
+<link type="text/css" href="{{ CM_MEDIA_PREFIX }}js/lib/fg-menu/fg.menu.css" media="screen" rel="stylesheet" />
         
         <style type="text/css">
                 .fg-menu-action .fg-menu li { width: 95%; }
@@ -9,12 +9,12 @@
         </style>
 <div class="text-buttons">
 
-<a id="share" class="fg-button fg-button-icon-right ui-widget ui-state-default ui-corner-all" id="flat"><span class="ui-icon ui-icon-triangle-1-s"></span>{% blocktrans %}Share{% endblocktrans %}&nbsp;<img class="align-mid" src="{{ MEDIA_URL }}img/social/facebook.gif" /><img class="align-mid" src="{{ MEDIA_URL }}img/social/digg.gif" /></a>
+<a id="share" class="fg-button fg-button-icon-right ui-widget ui-state-default ui-corner-all" id="flat"><span class="ui-icon ui-icon-triangle-1-s"></span>{% blocktrans %}Share{% endblocktrans %}&nbsp;<img class="align-mid" src="{{ CM_MEDIA_PREFIX }}img/social/facebook.gif" /><img class="align-mid" src="{{ CM_MEDIA_PREFIX }}img/social/digg.gif" /></a>
 <div id="share-options" class="hidden">
 <ul>
-        <li><a href="http://www.facebook.com/sharer.php?u={{ SITE_URL }}{% url text-view text.key %}"><img class="align-mid" src="{{ MEDIA_URL }}img/social/facebook.gif" /> Facebook</a></li>
-        <li><a href="http://digg.com/remote-submit/?phase=2&url={{ SITE_URL }}{% url text-view text.key %}"><img class="align-mid" src="{{ MEDIA_URL }}img/social/digg.gif" /> Digg</a></li>
-        <li><a href="http://www.linkedin.com/shareArticle?mini=true&url={{ SITE_URL }}{% url text-view text.key %}"><img class="align-mid" src="{{ MEDIA_URL }}img/social/linkedin.gif" /> Linkedin</a></li>
+        <li><a href="http://www.facebook.com/sharer.php?u={{ SITE_URL }}{% url text-view text.key %}"><img class="align-mid" src="{{ CM_MEDIA_PREFIX }}img/social/facebook.gif" /> Facebook</a></li>
+        <li><a href="http://digg.com/remote-submit/?phase=2&url={{ SITE_URL }}{% url text-view text.key %}"><img class="align-mid" src="{{ CM_MEDIA_PREFIX }}img/social/digg.gif" /> Digg</a></li>
+        <li><a href="http://www.linkedin.com/shareArticle?mini=true&url={{ SITE_URL }}{% url text-view text.key %}"><img class="align-mid" src="{{ CM_MEDIA_PREFIX }}img/social/linkedin.gif" /> Linkedin</a></li>
 </ul>
 </div>
 
--- a/src/cm/templates/site/macros/text_editor.html	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/templates/site/macros/text_editor.html	Thu Feb 11 16:28:10 2010 +0100
@@ -1,10 +1,10 @@
 {% load i18n %}
-<script type="text/javascript" src="{{ MEDIA_URL }}js/lib/markitup/1.1.5/markitup/jquery.markitup.js"></script>
-<script type="text/javascript" src="{{ MEDIA_URL }}js/markitup/sets.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/lib/markitup/1.1.5/markitup/jquery.markitup.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/markitup/sets.js"></script>
 
-<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}js/lib/markitup/1.1.5/markitup/skins/markitup/style.css" />
-<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/markitup/style.css" />
-<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/markitup/editor.css" />
+<link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}js/lib/markitup/1.1.5/markitup/skins/markitup/style.css" />
+<link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}css/markitup/style.css" />
+<link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}css/markitup/editor.css" />
 
 <script type="text/javascript" >
 
--- a/src/cm/templates/site/settings.html	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/templates/site/settings.html	Thu Feb 11 16:28:10 2010 +0100
@@ -21,6 +21,8 @@
 
 {% block buttons %}
     <input name="cancel" type="button" id="cancel_button" value="{% blocktrans %}Cancel{% endblocktrans %}"/>
+    &nbsp;|&nbsp; 
+    <input name="delete_logo" type="submit" id="delete_logo_button" value="{% blocktrans %}Delete logo{% endblocktrans %}"/>
     <script type="text/javascript">
     <!--
 
--- a/src/cm/templates/site/text_edit.html	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/templates/site/text_edit.html	Thu Feb 11 16:28:10 2010 +0100
@@ -3,7 +3,7 @@
 {% load com %}
 
 {% block head %}
-<script type="text/javascript" src="{{ MEDIA_URL }}js/site/text_edit.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/site/text_edit.js"></script>
 {% endblock %}
 
 {% block main %}
--- a/src/cm/templates/site/text_followup.html	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/templates/site/text_followup.html	Thu Feb 11 16:28:10 2010 +0100
@@ -25,7 +25,7 @@
 
 <div>
 <a href="{{SITE_URL}}{% url text-feed text.key  %}" title="{% blocktrans with text.title as title %}Public feed for text {{ title }}{% endblocktrans %}">
-	<img style="vertical-align:middle;" src="{{ MEDIA_URL }}img/xml.gif" /> {{SITE_URL}}{% url text-feed text.key  %} 
+	<img style="vertical-align:middle;" src="{{ CM_MEDIA_PREFIX }}img/xml.gif" /> {{SITE_URL}}{% url text-feed text.key  %} 
 </a>
 </div>
 {% blocktrans %}This is the public feed for the text.{% endblocktrans %}
@@ -39,7 +39,7 @@
 {% if text.private_feed_key %}
 <div>
 <a href="{{SITE_URL}}{% url text-private-feed text.key text.private_feed_key %}" title="{% blocktrans %}Private feed for text {% endblocktrans %}">
-	<img style="vertical-align:middle;" src="{{ MEDIA_URL }}img/xml.gif" /> {{SITE_URL}}{% url text-private-feed text.key text.private_feed_key %} 
+	<img style="vertical-align:middle;" src="{{ CM_MEDIA_PREFIX }}img/xml.gif" /> {{SITE_URL}}{% url text-private-feed text.key text.private_feed_key %} 
 </a>
 </div>
 {% blocktrans %}This is the private feed for the text. Don't share this address with others unless you want them to see all activities on this text.{% endblocktrans %}
--- a/src/cm/templates/site/text_print.html	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/templates/site/text_print.html	Thu Feb 11 16:28:10 2010 +0100
@@ -12,10 +12,10 @@
 }
 </STYLE>
 
-<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/site/text_view_comments/c-text.css">
-<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/site/text_view_comments/c-text-styles.css">
+<link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}css/site/text_view_comments/c-text.css">
+<link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}css/site/text_view_comments/c-text-styles.css">
     
-<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/site/text_view_comments/text_view_comments.css">
+<link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}css/site/text_view_comments/text_view_comments.css">
 
 
 </head>
--- a/src/cm/templates/site/text_view_comments.html	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/templates/site/text_view_comments.html	Thu Feb 11 16:28:10 2010 +0100
@@ -6,7 +6,7 @@
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     {% include "site/layout/req_yui.html" %}
     
-<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/site/text_view_comments/text_view_comments.css">
+<link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}css/site/text_view_comments/text_view_comments.css">
 </head>
 
 <body>
@@ -28,14 +28,14 @@
 </div>
 </body>
 
-<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/site/text_view_comments/c-text.css">
-<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/site/text_view_comments/c-text-styles.css">
-<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/site/text_view_comments/c-style-comment.css">
-<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/site/text_view_comments/c-style-gray.css">
-<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/site/text_view_comments/c-style-notelike.css">  
+<link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}css/site/text_view_comments/c-text.css">
+<link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}css/site/text_view_comments/c-text-styles.css">
+<link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}css/site/text_view_comments/c-style-comment.css">
+<link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}css/site/text_view_comments/c-style-gray.css">
+<link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}css/site/text_view_comments/c-style-notelike.css">  
 <!-- date library, to be used by filter, maybe get rid of that when decent date parsing is offered elsewhere -->
 <!-- we're round tripping from object python date to str back to date to filter, TODO consider setting the date from python... -->
-<script type="text/javascript" src="{{ MEDIA_URL }}js/lib/flexible-js-formatting/dates/date-functions.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/lib/flexible-js-formatting/dates/date-functions.js"></script>
 
 <script type="text/javascript">
 <!--
@@ -85,28 +85,28 @@
 
 <script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"></script>
 {% if CLIENT_DEBUG  %}
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_permissions.js"></script> 
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_preferences.js"></script>
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_layout.js"></script>
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_icomment.js"></script>
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_db.js"></script>
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_sync.js"></script>
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_icomments.js"></script> 
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_permissions.js"></script> 
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_preferences.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_layout.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_icomment.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_db.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_sync.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_icomments.js"></script> 
 
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_util.js"></script>
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_server_exchange.js"></script>
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_selection.js"></script>
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_scopes.js"></script>
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_interface_forms.js"></script>
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_addcomment_form.js"></script>
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_reply_form.js"></script>
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_edit_form.js"></script>
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_dlg_intercept.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_util.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_server_exchange.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_selection.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_scopes.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_interface_forms.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_addcomment_form.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_reply_form.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_edit_form.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_dlg_intercept.js"></script>
 
-<script type="text/javascript" src="{{ MEDIA_URL }}js/site/c_text_view_comments_to_frame.js"></script>
-<script type="text/javascript" src="{{ MEDIA_URL }}js/site/c_text_view_comments.js"></script> 
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/site/c_text_view_comments_to_frame.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/site/c_text_view_comments.js"></script> 
 {% else %}
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_client-min.js?1265230064"></script> 
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_client-min.js?1265230064"></script> 
 {% endif %}
 
 
--- a/src/cm/templates/site/text_view_frame.html	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/templates/site/text_view_frame.html	Thu Feb 11 16:28:10 2010 +0100
@@ -10,9 +10,9 @@
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
 <!-- TODO factorize with base.html etc...--> 
-    <link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}js/lib/yui/{{ YUI_VERSION  }}/build/cssreset/reset-min.css"> 
-    <link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}js/lib/yui/{{ YUI_VERSION  }}/build/cssfonts/fonts-min.css"> 
-    <link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}js/lib/yui/{{ YUI_VERSION  }}/build/cssbase/base-min.css">
+    <link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}js/lib/yui/{{ YUI_VERSION  }}/build/cssreset/reset-min.css"> 
+    <link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}js/lib/yui/{{ YUI_VERSION  }}/build/cssfonts/fonts-min.css"> 
+    <link rel="stylesheet" type="text/css" href="{{ CM_MEDIA_PREFIX }}js/lib/yui/{{ YUI_VERSION  }}/build/cssbase/base-min.css">
 
 <!-- TODO factorize with base.html for jquery etc... -->
 	<script type="text/javascript">
@@ -20,23 +20,23 @@
 	sv_media_url = "{{ MEDIA_URL|escapejs}}" ; 
 	-->
 	</script>
-    <link type="text/css" href="{{ MEDIA_URL }}js/lib/jquery/css/smoothness/jquery-ui-1.7.2.custom.css" rel="stylesheet" />    
-    <script type="text/javascript" src="{{ MEDIA_URL }}js/lib/jquery/js/jquery-1.3.2.min.js"></script>
-    <script type="text/javascript" src="{{ MEDIA_URL }}js/lib/jquery/js/jquery-ui-1.7.2.custom.min.js"></script>
-    <script type="text/javascript" src="{{ MEDIA_URL }}js/lib/jquery/js/layout/jquery.layout.min.js"></script>
-    <script type="text/javascript" src="{{ MEDIA_URL }}js/lib/jquery/js/cookie/jquery.cookie.js"></script><!-- not minified -->
+    <link type="text/css" href="{{ CM_MEDIA_PREFIX }}js/lib/jquery/css/smoothness/jquery-ui-1.7.2.custom.css" rel="stylesheet" />    
+    <script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/lib/jquery/js/jquery-1.3.2.min.js"></script>
+    <script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/lib/jquery/js/jquery-ui-1.7.2.custom.min.js"></script>
+    <script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/lib/jquery/js/layout/jquery.layout.min.js"></script>
+    <script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/lib/jquery/js/cookie/jquery.cookie.js"></script><!-- not minified -->
 
-    <!-- <script type="text/javascript" src="{{ MEDIA_URL }}js/lib/bgiframe_2.1.1/jquery.bgiframe.min.js"></script> -->
+    <!-- <script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/lib/bgiframe_2.1.1/jquery.bgiframe.min.js"></script> -->
 
-    <link type="text/css" href="{{ MEDIA_URL }}css/site/text_view_frame.css" rel="stylesheet" />
+    <link type="text/css" href="{{ CM_MEDIA_PREFIX }}css/site/text_view_frame.css" rel="stylesheet" />
 
     <script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"></script>
 {% if CLIENT_DEBUG %}
-    <script type="text/javascript" src="{{ MEDIA_URL }}js/client/f_message.js"></script>
-    <script type="text/javascript" src="{{ MEDIA_URL }}js/client/f_printDialog.js"></script>
-    <script type="text/javascript" src="{{ MEDIA_URL }}js/site/f_text_view_frame.js"></script>
+    <script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/f_message.js"></script>
+    <script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/f_printDialog.js"></script>
+    <script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/site/f_text_view_frame.js"></script>
 {% else %}
-    <script type="text/javascript" src="{{ MEDIA_URL }}js/client/f_client-min.js?1265230064"></script> 
+    <script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/f_client-min.js?1265230064"></script> 
 {% endif %}
     <style type="text/css">
         /*
--- a/src/cm/templates/static/experiment/anim_io_sync.html	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/templates/static/experiment/anim_io_sync.html	Thu Feb 11 16:28:10 2010 +0100
@@ -17,8 +17,8 @@
 }
 </style>
 
-<link type="text/css" rel="stylesheet" href="{{ MEDIA_URL }}js/lib/yui/{{ YUI_VERSION }}/build/cssfonts/fonts-min.css" />
-<script type="text/javascript" src="{{ MEDIA_URL }}js/lib/yui/{{ YUI_VERSION }}/build/yui/yui-min.js"></script>
+<link type="text/css" rel="stylesheet" href="{{ CM_MEDIA_PREFIX }}js/lib/yui/{{ YUI_VERSION }}/build/cssfonts/fonts-min.css" />
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/lib/yui/{{ YUI_VERSION }}/build/yui/yui-min.js"></script>
 
 
 <!--begin custom header content for this example-->
@@ -111,8 +111,8 @@
 
 <button id="init">Initialize Application</button>
 
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_server_exchange.js"></script>
-<script type="text/javascript" src="{{ MEDIA_URL }}js/client/c_util.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_server_exchange.js"></script>
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/client/c_util.js"></script>
 <script type="text/javascript">
 
 
@@ -278,7 +278,7 @@
 
 
 
-YUI({base:"{{ MEDIA_URL }}js/lib/yui/{{ YUI_VERSION }}/build/", timeout: 10000}).use("anim", "queue", "io","json",function (Y) {
+YUI({base:"{{ CM_MEDIA_PREFIX }}js/lib/yui/{{ YUI_VERSION }}/build/", timeout: 10000}).use("anim", "queue", "io","json",function (Y) {
 CY = Y;
 var myApp = new MyApp() ;
 
--- a/src/cm/templates/static/experiment/test0.html	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/templates/static/experiment/test0.html	Thu Feb 11 16:28:10 2010 +0100
@@ -17,8 +17,8 @@
 }
 </style>
 
-<link type="text/css" rel="stylesheet" href="{{ MEDIA_URL }}js/lib/yui/{{ YUI_VERSION }}/build/cssfonts/fonts-min.css" />
-<script type="text/javascript" src="{{ MEDIA_URL }}js/lib/yui/{{ YUI_VERSION }}/build/yui/yui-min.js"></script>
+<link type="text/css" rel="stylesheet" href="{{ CM_MEDIA_PREFIX }}js/lib/yui/{{ YUI_VERSION }}/build/cssfonts/fonts-min.css" />
+<script type="text/javascript" src="{{ CM_MEDIA_PREFIX }}js/lib/yui/{{ YUI_VERSION }}/build/yui/yui-min.js"></script>
 
 </head>
 
@@ -44,7 +44,7 @@
 	Y.Coment = Coment;
 	}, '0.0.1');
 
-YUI({base:"{{ MEDIA_URL }}js/lib/yui/{{ YUI_VERSION }}/build/", timeout: 10000}).use("coment",function (Y) {
+YUI({base:"{{ CM_MEDIA_PREFIX }}js/lib/yui/{{ YUI_VERSION }}/build/", timeout: 10000}).use("coment",function (Y) {
 	Y.log('in here') ;
     var coment = new Y.Coment() ;
     coment.fun() ;
--- a/src/cm/urls.py	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/urls.py	Thu Feb 11 16:28:10 2010 +0100
@@ -128,9 +128,9 @@
 
 if settings.DEBUG:
      urlpatterns += patterns('',
-     (r'^themedia/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
+     (r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
                           
-     (r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': 'src/cm/media/'}),
+     (r'^cmmedia/(?P<path>.*)$', 'django.views.static.serve', {'document_root': 'src/cm/media/'}),
      (r'^robots.txt$', 'django.views.static.serve', {'document_root': 'src/cm/media/', 'path':'robots.txt'}),
      (r'^favicon.ico$', 'django.views.static.serve', {'document_root': 'src/cm/media/', 'path':'favicon.ico'}),
      
--- a/src/cm/views/site.py	Wed Feb 10 14:34:08 2010 +0100
+++ b/src/cm/views/site.py	Thu Feb 11 16:28:10 2010 +0100
@@ -148,7 +148,7 @@
 class SettingsForm(forms.Form):
     workspace_name = forms.CharField(label=ugettext_lazy("Workspace name"),
                                      widget=forms.TextInput,
-                                     required=True,
+                                     required=False,
                                      )
     
     workspace_tagline = forms.CharField(label=ugettext_lazy("Workspace tagline"),
@@ -156,6 +156,8 @@
                                         required=False,
                                         )
 
+    workspace_logo_file  = forms.FileField(label=ugettext_lazy("Workspace logo"),required=False)
+
     workspace_registration = forms.BooleanField(label=ugettext_lazy("Workspace registration"),
                                                 help_text=ugettext_lazy("Can users register themselves into the workspace? (if not, only invitations by managers can create new users)"),
                                                 required=False,
@@ -171,6 +173,8 @@
                                              choices=role_models_choices,
                                              required=False,
                                              )
+    
+    
     # fields to save in the Configuration objects
     conf_fields = ['workspace_name', 'workspace_tagline', 'workspace_registration', 'workspace_registration_moderation', 'workspace_role_model']
 
@@ -185,15 +189,28 @@
             if field in self.conf_fields:
                 val = self.cleaned_data[field]
                 Configuration.objects.set_key(field, val)
+        #handle_uploaded_file()
+    def save_file(self, logo_file):
+        attach = Attachment.objects.create_attachment(filename='wp_logo', data=logo_file.read(), text_version=None)
+        Configuration.objects.set_key('workspace_logo_file_key', attach.key)
+        print attach.key
         
 @has_global_perm('can_manage_workspace')
 def settingss(request):
     if request.method == 'POST':
-        form = SettingsForm(data=request.POST)
-        if form.is_valid() :
-            form.save()
+        if 'delete_logo' in request.POST:
+            Configuration.objects.del_key('workspace_logo_file_key')
             display_message(request, _(u'Settings saved'))
-            return HttpResponseRedirect(reverse('index'))
+            return HttpResponseRedirect(reverse('index'))            
+        else:
+            form = SettingsForm(data=request.POST)
+            if form.is_valid() :
+                form.save()
+                logo_file = request.FILES.get('workspace_logo_file',None)
+                if logo_file:
+                    form.save_file(logo_file)
+                display_message(request, _(u'Settings saved'))
+                return HttpResponseRedirect(reverse('index'))
     else:
         form = SettingsForm()