New Styles & Functionality for Faq/Userguide
authorOlga Brani <olgabrani@grnet.gr>
Thu, 12 Jul 2012 13:34:08 +0000 (16:34 +0300)
committerOlga Brani <olgabrani@grnet.gr>
Thu, 12 Jul 2012 13:34:08 +0000 (16:34 +0300)
18 files changed:
cloudcms/migrate/cloudcmsfaq/0006_auto__add_field_category_image__add_field_category_class_name.py [new file with mode: 0644]
cloudcms/migrate/cloudcmsfaq/0007_auto__chg_field_question_published_on.py [new file with mode: 0644]
cloudcms/migrations/0010_auto__add_field_clientversionsource_default__add_field_service_title_f.py [new file with mode: 0644]
cloudcms/migrations/0011_auto__del_field_service_title_faq__del_field_service_title_userguide__.py [new file with mode: 0644]
cloudcms/models.py
cloudcms/static/cloudcms/css/forms.css
cloudcms/static/cloudcms/css/max768.css
cloudcms/static/cloudcms/css/max960.css
cloudcms/static/cloudcms/css/modules.css
cloudcms/static/cloudcms/images/double-dots-unequal.jpg [new file with mode: 0644]
cloudcms/static/cloudcms/js/common.js
cloudcms/templates/cms/base.html
cloudcms/templatetags/cloudcms_tags.py
cloudcmsfaq/admin.py
cloudcmsfaq/models.py
cloudcmsfaq/templates/cloudcmsfaq/archive.html
cloudcmsfaq/templates/cloudcmsfaq/detail.html
cloudcmsfaq/views.py

diff --git a/cloudcms/migrate/cloudcmsfaq/0006_auto__add_field_category_image__add_field_category_class_name.py b/cloudcms/migrate/cloudcmsfaq/0006_auto__add_field_category_image__add_field_category_class_name.py
new file mode 100644 (file)
index 0000000..8ee3d2a
--- /dev/null
@@ -0,0 +1,191 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        
+        # Adding field 'Category.image'
+        db.add_column('cloudcmsfaq_category', 'image', self.gf('feincms.module.medialibrary.fields.MediaFileForeignKey')(to=orm['medialibrary.MediaFile'], null=True, blank=True), keep_default=False)
+
+        # Adding field 'Category.class_name'
+        db.add_column('cloudcmsfaq_category', 'class_name', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True), keep_default=False)
+
+
+    def backwards(self, orm):
+        
+        # Deleting field 'Category.image'
+        db.delete_column('cloudcmsfaq_category', 'image_id')
+
+        # Deleting field 'Category.class_name'
+        db.delete_column('cloudcmsfaq_category', 'class_name')
+
+
+    models = {
+        'auth.group': {
+            'Meta': {'object_name': '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']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        'auth.permission': {
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+            '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': {
+            'Meta': {'object_name': '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']", 'symmetrical': 'False', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            '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']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        },
+        'cloudcms.application': {
+            'Meta': {'object_name': 'Application'},
+            'app_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'extra_styles': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'facebook_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'favicon': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'blank': 'True', 'related_name': "'as_favicon'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
+            'footer_bottom': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'footer_top': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'index_url': ('django.db.models.fields.CharField', [], {'default': "'/'", 'max_length': '255'}),
+            'linked_in_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'logo': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'to': "orm['medialibrary.MediaFile']", 'null': 'True', 'blank': 'True'}),
+            'show_twitter_feed_on_top': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'twitter_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
+        },
+        'cloudcms.service': {
+            'Meta': {'ordering': "['-ordering']", 'object_name': 'Service'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image_faq': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'to': "orm['medialibrary.MediaFile']", 'null': 'True', 'blank': 'True'}),
+            'ordering': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+            'title_faq': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'title_userguide': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        'cloudcmsfaq.category': {
+            'Meta': {'ordering': "['-ordering']", 'object_name': 'Category'},
+            'class_name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+            'display_on_menu': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'to': "orm['medialibrary.MediaFile']", 'null': 'True', 'blank': 'True'}),
+            'ordering': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'})
+        },
+        'cloudcmsfaq.categorytranslation': {
+            'Meta': {'ordering': "['title']", 'object_name': 'CategoryTranslation'},
+            'description': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'language_code': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '10'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'to': "orm['cloudcmsfaq.Category']"}),
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        'cloudcmsfaq.imagecontent': {
+            'Meta': {'ordering': "['ordering']", 'object_name': 'ImageContent', 'db_table': "'cloudcmsfaq_question_imagecontent'"},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
+            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'imagecontent_set'", 'to': "orm['cloudcmsfaq.Question']"}),
+            'position': ('django.db.models.fields.CharField', [], {'default': "'default'", 'max_length': '10'}),
+            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'cloudcmsfaq.question': {
+            'Meta': {'ordering': "['service', 'category', '-published_on']", 'object_name': 'Question'},
+            'application': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'faqs'", 'symmetrical': 'False', 'to': "orm['cloudcms.Application']"}),
+            'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'faqs'", 'to': "orm['auth.User']"}),
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'faqs'", 'to': "orm['cloudcmsfaq.Category']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_featured': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'last_changed': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'published_on': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'null': 'True', 'blank': 'True'}),
+            'service': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'faqs'", 'null': 'True', 'to': "orm['cloudcms.Service']"}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '100', 'db_index': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        'cloudcmsfaq.rawcontent': {
+            'Meta': {'ordering': "['ordering']", 'object_name': 'RawContent', 'db_table': "'cloudcmsfaq_question_rawcontent'"},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rawcontent_set'", 'to': "orm['cloudcmsfaq.Question']"}),
+            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'text': ('django.db.models.fields.TextField', [], {'blank': 'True'})
+        },
+        'cloudcmsfaq.richtextcontent': {
+            'Meta': {'ordering': "['ordering']", 'object_name': 'RichTextContent', 'db_table': "'cloudcmsfaq_question_richtextcontent'"},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'richtextcontent_set'", 'to': "orm['cloudcmsfaq.Question']"}),
+            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'text': ('django.db.models.fields.TextField', [], {'blank': 'True'})
+        },
+        'cloudcmsfaq.sectioncontent': {
+            'Meta': {'ordering': "['ordering']", 'object_name': 'SectionContent', 'db_table': "'cloudcmsfaq_question_sectioncontent'"},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'mediafile': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'cloudcmsfaq_sectioncontent_set'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
+            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sectioncontent_set'", 'to': "orm['cloudcmsfaq.Question']"}),
+            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'richtext': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+            'type': ('django.db.models.fields.CharField', [], {'default': "'block'", 'max_length': '10'})
+        },
+        'cloudcmsfaq.templatecontent': {
+            'Meta': {'ordering': "['ordering']", 'object_name': 'TemplateContent', 'db_table': "'cloudcmsfaq_question_templatecontent'"},
+            'filename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'templatecontent_set'", 'to': "orm['cloudcmsfaq.Question']"}),
+            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'contenttypes.contenttype': {
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', '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'})
+        },
+        'medialibrary.category': {
+            'Meta': {'ordering': "['parent__title', 'title']", 'object_name': 'Category'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['medialibrary.Category']"}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '150', 'db_index': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '200'})
+        },
+        'medialibrary.mediafile': {
+            'Meta': {'object_name': 'MediaFile'},
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['medialibrary.Category']", 'null': 'True', 'blank': 'True'}),
+            'copyright': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255'}),
+            'file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '12'})
+        },
+        'sites.site': {
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        }
+    }
+
+    complete_apps = ['cloudcmsfaq']
diff --git a/cloudcms/migrate/cloudcmsfaq/0007_auto__chg_field_question_published_on.py b/cloudcms/migrate/cloudcmsfaq/0007_auto__chg_field_question_published_on.py
new file mode 100644 (file)
index 0000000..4483985
--- /dev/null
@@ -0,0 +1,185 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        
+        # Changing field 'Question.published_on'
+        db.alter_column('cloudcmsfaq_question', 'published_on', self.gf('django.db.models.fields.DateTimeField')())
+
+
+    def backwards(self, orm):
+        
+        # Changing field 'Question.published_on'
+        db.alter_column('cloudcmsfaq_question', 'published_on', self.gf('django.db.models.fields.DateTimeField')(null=True))
+
+
+    models = {
+        'auth.group': {
+            'Meta': {'object_name': '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']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        'auth.permission': {
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+            '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': {
+            'Meta': {'object_name': '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']", 'symmetrical': 'False', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            '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']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        },
+        'cloudcms.application': {
+            'Meta': {'object_name': 'Application'},
+            'app_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'extra_styles': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'facebook_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'favicon': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'blank': 'True', 'related_name': "'as_favicon'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
+            'footer_bottom': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'footer_top': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'index_url': ('django.db.models.fields.CharField', [], {'default': "'/'", 'max_length': '255'}),
+            'linked_in_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'logo': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'to': "orm['medialibrary.MediaFile']", 'null': 'True', 'blank': 'True'}),
+            'show_twitter_feed_on_top': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'twitter_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
+        },
+        'cloudcms.service': {
+            'Meta': {'ordering': "['-ordering']", 'object_name': 'Service'},
+            'class_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image_faq': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'blank': 'True', 'related_name': "'image_faq'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
+            'image_userguide': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'blank': 'True', 'related_name': "'image_userguide'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
+            'ordering': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'})
+        },
+        'cloudcmsfaq.category': {
+            'Meta': {'ordering': "['ordering']", 'object_name': 'Category'},
+            'class_name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+            'display_on_menu': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'to': "orm['medialibrary.MediaFile']", 'null': 'True', 'blank': 'True'}),
+            'ordering': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'})
+        },
+        'cloudcmsfaq.categorytranslation': {
+            'Meta': {'ordering': "['title']", 'object_name': 'CategoryTranslation'},
+            'description': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'language_code': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '10'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'to': "orm['cloudcmsfaq.Category']"}),
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        'cloudcmsfaq.imagecontent': {
+            'Meta': {'ordering': "['ordering']", 'object_name': 'ImageContent', 'db_table': "'cloudcmsfaq_question_imagecontent'"},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
+            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'imagecontent_set'", 'to': "orm['cloudcmsfaq.Question']"}),
+            'position': ('django.db.models.fields.CharField', [], {'default': "'default'", 'max_length': '10'}),
+            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'cloudcmsfaq.question': {
+            'Meta': {'ordering': "['service', 'category__ordering', '-published_on']", 'object_name': 'Question'},
+            'application': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'faqs'", 'symmetrical': 'False', 'to': "orm['cloudcms.Application']"}),
+            'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'faqs'", 'to': "orm['auth.User']"}),
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'faqs'", 'to': "orm['cloudcmsfaq.Category']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_featured': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'last_changed': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'published_on': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
+            'service': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'faqs'", 'null': 'True', 'to': "orm['cloudcms.Service']"}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '100', 'db_index': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        'cloudcmsfaq.rawcontent': {
+            'Meta': {'ordering': "['ordering']", 'object_name': 'RawContent', 'db_table': "'cloudcmsfaq_question_rawcontent'"},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rawcontent_set'", 'to': "orm['cloudcmsfaq.Question']"}),
+            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'text': ('django.db.models.fields.TextField', [], {'blank': 'True'})
+        },
+        'cloudcmsfaq.richtextcontent': {
+            'Meta': {'ordering': "['ordering']", 'object_name': 'RichTextContent', 'db_table': "'cloudcmsfaq_question_richtextcontent'"},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'richtextcontent_set'", 'to': "orm['cloudcmsfaq.Question']"}),
+            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'text': ('django.db.models.fields.TextField', [], {'blank': 'True'})
+        },
+        'cloudcmsfaq.sectioncontent': {
+            'Meta': {'ordering': "['ordering']", 'object_name': 'SectionContent', 'db_table': "'cloudcmsfaq_question_sectioncontent'"},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'mediafile': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'cloudcmsfaq_sectioncontent_set'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
+            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sectioncontent_set'", 'to': "orm['cloudcmsfaq.Question']"}),
+            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'richtext': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+            'type': ('django.db.models.fields.CharField', [], {'default': "'block'", 'max_length': '10'})
+        },
+        'cloudcmsfaq.templatecontent': {
+            'Meta': {'ordering': "['ordering']", 'object_name': 'TemplateContent', 'db_table': "'cloudcmsfaq_question_templatecontent'"},
+            'filename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'templatecontent_set'", 'to': "orm['cloudcmsfaq.Question']"}),
+            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'contenttypes.contenttype': {
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', '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'})
+        },
+        'medialibrary.category': {
+            'Meta': {'ordering': "['parent__title', 'title']", 'object_name': 'Category'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['medialibrary.Category']"}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '150', 'db_index': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '200'})
+        },
+        'medialibrary.mediafile': {
+            'Meta': {'object_name': 'MediaFile'},
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['medialibrary.Category']", 'null': 'True', 'blank': 'True'}),
+            'copyright': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255'}),
+            'file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '12'})
+        },
+        'sites.site': {
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        }
+    }
+
+    complete_apps = ['cloudcmsfaq']
diff --git a/cloudcms/migrations/0010_auto__add_field_clientversionsource_default__add_field_service_title_f.py b/cloudcms/migrations/0010_auto__add_field_clientversionsource_default__add_field_service_title_f.py
new file mode 100644 (file)
index 0000000..a7f207d
--- /dev/null
@@ -0,0 +1,164 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        
+        # Adding field 'ClientVersionSource.default'
+        db.add_column('cloudcms_clientversionsource', 'default', self.gf('django.db.models.fields.BooleanField')(default=True), keep_default=False)
+
+        # Adding field 'Service.title_faq'
+        db.add_column('cloudcms_service', 'title_faq', self.gf('django.db.models.fields.CharField')(default='', max_length=100), keep_default=False)
+
+        # Adding field 'Service.title_userguide'
+        db.add_column('cloudcms_service', 'title_userguide', self.gf('django.db.models.fields.CharField')(default='', max_length=100), keep_default=False)
+
+        # Adding field 'Service.image_faq'
+        db.add_column('cloudcms_service', 'image_faq', self.gf('feincms.module.medialibrary.fields.MediaFileForeignKey')(blank=True, related_name='image_faq', null=True, to=orm['medialibrary.MediaFile']), keep_default=False)
+
+        # Adding field 'Service.image_userguide'
+        db.add_column('cloudcms_service', 'image_userguide', self.gf('feincms.module.medialibrary.fields.MediaFileForeignKey')(blank=True, related_name='image_userguide', null=True, to=orm['medialibrary.MediaFile']), keep_default=False)
+
+        # Adding field 'Service.class_name'
+        db.add_column('cloudcms_service', 'class_name', self.gf('django.db.models.fields.CharField')(default='', max_length=100), keep_default=False)
+
+
+    def backwards(self, orm):
+        
+        # Deleting field 'ClientVersionSource.default'
+        db.delete_column('cloudcms_clientversionsource', 'default')
+
+        # Deleting field 'Service.title_faq'
+        db.delete_column('cloudcms_service', 'title_faq')
+
+        # Deleting field 'Service.title_userguide'
+        db.delete_column('cloudcms_service', 'title_userguide')
+
+        # Deleting field 'Service.image_faq'
+        db.delete_column('cloudcms_service', 'image_faq_id')
+
+        # Deleting field 'Service.image_userguide'
+        db.delete_column('cloudcms_service', 'image_userguide_id')
+
+        # Deleting field 'Service.class_name'
+        db.delete_column('cloudcms_service', 'class_name')
+
+
+    models = {
+        'cloudcms.application': {
+            'Meta': {'object_name': 'Application'},
+            'app_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'extra_styles': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'facebook_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'favicon': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'blank': 'True', 'related_name': "'as_favicon'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
+            'footer_bottom': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'footer_top': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'index_url': ('django.db.models.fields.CharField', [], {'default': "'/'", 'max_length': '255'}),
+            'linked_in_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'logo': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'to': "orm['medialibrary.MediaFile']", 'null': 'True', 'blank': 'True'}),
+            'show_twitter_feed_on_top': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'twitter_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
+        },
+        'cloudcms.client': {
+            'Meta': {'object_name': 'Client'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'uid': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'cloudcms.clientversionsource': {
+            'Meta': {'object_name': 'ClientVersionSource'},
+            'architecture': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'client': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cloudcms.Client']"}),
+            'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'file_regex': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'link': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'logo': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'to': "orm['medialibrary.MediaFile']", 'null': 'True', 'blank': 'True'}),
+            'os': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'source_type': ('django.db.models.fields.CharField', [], {'max_length': '60'}),
+            'version_regex': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
+        },
+        'cloudcms.service': {
+            'Meta': {'ordering': "['-ordering']", 'object_name': 'Service'},
+            'class_name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image_faq': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'blank': 'True', 'related_name': "'image_faq'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
+            'image_userguide': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'blank': 'True', 'related_name': "'image_userguide'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
+            'ordering': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+            'title_faq': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'title_userguide': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        'cloudcms.servicetranslation': {
+            'Meta': {'ordering': "['title']", 'object_name': 'ServiceTranslation'},
+            'cms_page': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['page.Page']", 'null': 'True', 'blank': 'True'}),
+            'description': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'language_code': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '10'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'to': "orm['cloudcms.Service']"}),
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        'medialibrary.category': {
+            'Meta': {'ordering': "['parent__title', 'title']", 'object_name': 'Category'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['medialibrary.Category']"}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '150', 'db_index': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '200'})
+        },
+        'medialibrary.mediafile': {
+            'Meta': {'object_name': 'MediaFile'},
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['medialibrary.Category']", 'null': 'True', 'blank': 'True'}),
+            'copyright': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255'}),
+            'file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '12'})
+        },
+        'page.page': {
+            'Meta': {'ordering': "['tree_id', 'lft']", 'object_name': 'Page'},
+            '_cached_url': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'db_index': 'True', 'blank': 'True'}),
+            '_content_title': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            '_page_title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+            'active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'creation_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'in_navigation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'language': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '10'}),
+            'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'meta_description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'meta_keywords': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'modification_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+            'navigation_extension': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+            'override_url': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['page.Page']"}),
+            'publication_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 7, 10, 12, 30)'}),
+            'publication_end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'redirect_to': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+            'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'default': '1', 'to': "orm['sites.Site']"}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '150', 'db_index': 'True'}),
+            'symlinked_page': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'page_page_symlinks'", 'null': 'True', 'to': "orm['page.Page']"}),
+            'template_key': ('django.db.models.fields.CharField', [], {'default': "'twocolwide'", 'max_length': '255'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+            'translation_of': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'translations'", 'null': 'True', 'to': "orm['page.Page']"}),
+            'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+        },
+        'sites.site': {
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        }
+    }
+
+    complete_apps = ['cloudcms']
diff --git a/cloudcms/migrations/0011_auto__del_field_service_title_faq__del_field_service_title_userguide__.py b/cloudcms/migrations/0011_auto__del_field_service_title_faq__del_field_service_title_userguide__.py
new file mode 100644 (file)
index 0000000..5783a88
--- /dev/null
@@ -0,0 +1,152 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        
+        # Deleting field 'Service.title_faq'
+        db.delete_column('cloudcms_service', 'title_faq')
+
+        # Deleting field 'Service.title_userguide'
+        db.delete_column('cloudcms_service', 'title_userguide')
+
+        # Adding field 'ServiceTranslation.title_faq'
+        db.add_column('cloudcms_servicetranslation', 'title_faq', self.gf('django.db.models.fields.CharField')(default='', max_length=100), keep_default=False)
+
+        # Adding field 'ServiceTranslation.title_userguide'
+        db.add_column('cloudcms_servicetranslation', 'title_userguide', self.gf('django.db.models.fields.CharField')(default='', max_length=100), keep_default=False)
+
+
+    def backwards(self, orm):
+        
+        # Adding field 'Service.title_faq'
+        db.add_column('cloudcms_service', 'title_faq', self.gf('django.db.models.fields.CharField')(default='', max_length=100), keep_default=False)
+
+        # Adding field 'Service.title_userguide'
+        db.add_column('cloudcms_service', 'title_userguide', self.gf('django.db.models.fields.CharField')(default='', max_length=100), keep_default=False)
+
+        # Deleting field 'ServiceTranslation.title_faq'
+        db.delete_column('cloudcms_servicetranslation', 'title_faq')
+
+        # Deleting field 'ServiceTranslation.title_userguide'
+        db.delete_column('cloudcms_servicetranslation', 'title_userguide')
+
+
+    models = {
+        'cloudcms.application': {
+            'Meta': {'object_name': 'Application'},
+            'app_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'extra_styles': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'facebook_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'favicon': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'blank': 'True', 'related_name': "'as_favicon'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
+            'footer_bottom': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'footer_top': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'index_url': ('django.db.models.fields.CharField', [], {'default': "'/'", 'max_length': '255'}),
+            'linked_in_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'logo': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'to': "orm['medialibrary.MediaFile']", 'null': 'True', 'blank': 'True'}),
+            'show_twitter_feed_on_top': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'twitter_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
+        },
+        'cloudcms.client': {
+            'Meta': {'object_name': 'Client'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'uid': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'cloudcms.clientversionsource': {
+            'Meta': {'object_name': 'ClientVersionSource'},
+            'architecture': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'client': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cloudcms.Client']"}),
+            'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'file_regex': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'link': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'logo': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'to': "orm['medialibrary.MediaFile']", 'null': 'True', 'blank': 'True'}),
+            'os': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'source_type': ('django.db.models.fields.CharField', [], {'max_length': '60'}),
+            'version_regex': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
+        },
+        'cloudcms.service': {
+            'Meta': {'ordering': "['-ordering']", 'object_name': 'Service'},
+            'class_name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image_faq': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'blank': 'True', 'related_name': "'image_faq'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
+            'image_userguide': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'blank': 'True', 'related_name': "'image_userguide'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
+            'ordering': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'})
+        },
+        'cloudcms.servicetranslation': {
+            'Meta': {'ordering': "['title']", 'object_name': 'ServiceTranslation'},
+            'cms_page': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['page.Page']", 'null': 'True', 'blank': 'True'}),
+            'description': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'language_code': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '10'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'to': "orm['cloudcms.Service']"}),
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'title_faq': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'title_userguide': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        'medialibrary.category': {
+            'Meta': {'ordering': "['parent__title', 'title']", 'object_name': 'Category'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['medialibrary.Category']"}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '150', 'db_index': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '200'})
+        },
+        'medialibrary.mediafile': {
+            'Meta': {'object_name': 'MediaFile'},
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['medialibrary.Category']", 'null': 'True', 'blank': 'True'}),
+            'copyright': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255'}),
+            'file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '12'})
+        },
+        'page.page': {
+            'Meta': {'ordering': "['tree_id', 'lft']", 'object_name': 'Page'},
+            '_cached_url': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'db_index': 'True', 'blank': 'True'}),
+            '_content_title': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            '_page_title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+            'active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'creation_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'in_navigation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'language': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '10'}),
+            'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'meta_description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'meta_keywords': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'modification_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+            'navigation_extension': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+            'override_url': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['page.Page']"}),
+            'publication_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 7, 10, 12, 35)'}),
+            'publication_end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'redirect_to': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+            'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'default': '1', 'to': "orm['sites.Site']"}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '150', 'db_index': 'True'}),
+            'symlinked_page': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'page_page_symlinks'", 'null': 'True', 'to': "orm['page.Page']"}),
+            'template_key': ('django.db.models.fields.CharField', [], {'default': "'twocolwide'", 'max_length': '255'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+            'translation_of': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'translations'", 'null': 'True', 'to': "orm['page.Page']"}),
+            'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+        },
+        'sites.site': {
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        }
+    }
+
+    complete_apps = ['cloudcms']
index e553b46..ebab4e3 100644 (file)
@@ -159,7 +159,11 @@ class Service(models.Model, translations.TranslatedObjectMixin):
     """
 
     ordering = models.SmallIntegerField(_('ordering'), default=0)
-
+    image_faq = MediaFileForeignKey(MediaFile, blank=True, null=True, related_name='image_faq')
+    image_userguide = MediaFileForeignKey(MediaFile, blank=True, null=True,related_name='image_userguide')
+    class_name = models.CharField(_('class name'), max_length=100, blank=True)
+    
+    
     class Meta:
         verbose_name = _('service')
         verbose_name_plural = _('services')
@@ -167,6 +171,12 @@ class Service(models.Model, translations.TranslatedObjectMixin):
 
     objects = translations.TranslatedObjectManager()
 
+    def get_first_question(self):
+        try:
+            return self.faqs.filter(is_active=True)[0]
+        except:
+            return None
+        
     def __unicode__(self):
         trans = translations.TranslatedObjectMixin.__unicode__(self)
         return trans or _('Unnamed category')
@@ -180,7 +190,9 @@ class ServiceTranslation(translations.Translation(Service)):
     slug = models.SlugField(_('slug'), unique=True)
     description = models.CharField(_('description'), max_length=250, blank=True)
     cms_page = models.ForeignKey(Page, null=True, blank=True)
-
+    title_faq = models.CharField(_('service title (faq section)'), max_length=100, blank=True)
+    title_userguide = models.CharField(_('service title (userguide section)'), max_length=100, blank=True)
+    
     class Meta:
         verbose_name = _('service translation')
         verbose_name_plural = _('service translations')
index afd8ad8..43d9f0f 100644 (file)
@@ -43,11 +43,13 @@ form input.text:focus label,
 form input[type="text"]:focus label,\r
 form input[type="password"]:focus label        { z-index: 300;}\r
 form input.submit, \r
-form input[type="submit"]                                      {font-family: 'Antic', sans-serif;font-size: 14px; font-weight: normal; line-height: 22px; letter-spacing:1px;  background-color: #f89a1c;color: #ffffff; border: none; padding: 10px 22px;font-size: 1em; margin:15px 0 0 223px; height:43px; }\r
+form input[type="submit"],\r
+a.submit                                                                       {font-family: 'Antic', sans-serif;font-size: 14px; font-weight: normal; line-height: 22px; letter-spacing:1px;  background-color: #f89a1c;color: #ffffff; border: none; padding: 10px 22px;font-size: 1em; margin:15px 0 0 223px; height:43px; }\r
 form.innerlabels input.submit, \r
 form.innerlabels input[type="submit"]          {margin-left:0;}\r
 form input.submit:hover, \r
-form input[type="submit"]:hover                        { background-color:#3582ac;border-color:#3582ac;}\r
+form input[type="submit"]:hover,\r
+a.submit:hover                                                         { background-color:#3582ac;border-color:#3582ac; text-decoration:none;}\r
 form input.submit.back, \r
 form input[type="submit"].back                                 { text-decoration: none; bottom: 0; float: right; z-index: 500; }\r
 form input.submit.back.right, \r
@@ -148,4 +150,6 @@ input[type="submit"]:focus                                          { box-shadow: 0 0 0 1px #FFFFFF inset; border:1p
 @media screen and ( width : 320px)             { \r
        #okeanos_recaptcha                                                      { width:259px }\r
     \r
-}
\ No newline at end of file
+}\r
+\r
+p+ form                                                                                        { margin:2em 0; }
\ No newline at end of file
index 39325fa..720f0cd 100644 (file)
@@ -10,4 +10,6 @@
 .documentation img                                                             { max-width:100%; }
 /* forms */
 form input.submit, form input[type="submit"]   { margin:0; }
-form .form-row .extra-link                                             { padding-top:0; }
\ No newline at end of file
+form .form-row .extra-link                                             { padding-top:0; }
+.faq .two-cols .rt                                                             { width:auto; }
+.faq .two-cols .lt                                                             { width:auto; }
\ No newline at end of file
index e273346..1878790 100644 (file)
@@ -5,4 +5,6 @@
 .two-cols .rt img                                              { max-width:100%; }
 .two-cols  .lt                                                 { width:45%; }
 .two-cols-blog .rt                                             { width:25%; padding-right:0; margin-left:30px;}
-.top-msg                                                               { margin-left:-9%; margin-right:-9%; padding-left:20%; padding-right:20%; }
\ No newline at end of file
+.top-msg                                                               { margin-left:-9%; margin-right:-9%; padding-left:20%; padding-right:20%; }
+.faq .two-cols .rt                                             { width:35%; }
+.faq .two-cols .lt                                             { width:55%; }
index 9652b40..80a876f 100644 (file)
@@ -65,9 +65,8 @@ img.right                                                             { margin:0 0 1em 1em; float:right;}
 .container .extra ul.options                                   { font-size:1em; margin:0 ; padding:15px; }\r
 .landing h2, .landing a:hover                   { color:#01A1AE;}\r
 .faq h2, .faq a:hover, .faq .current a          { color:#EF4F54; border:0 none;}\r
-.content .question h2                                                  { color:#EF4F54 }\r
+.question h2                                                                   { color:#EF4F54 }\r
 .content .backlink                                                             { margin:1em 0; }\r
-.content .question .backlink a:hover                   { border-bottom:1px solid #F89A1C }\r
 .faq h3                                                                                        { color:#4085a6; margin:0;}\r
 .faq ul                                         { padding:0; margin:0; }\r
 .faq ul li                                      { list-style:none outside; padding:0; margin:0;  }\r
@@ -216,4 +215,51 @@ a.button:hover                                                                     { background-color: #F89A1C; border:0 none; color:#fff;}
 #animation p img                                { display:inline-block; width:65%; }\r
 \r
 /* Weird bug in pages that contain captcha. An extra iframe appears in chrome :S*/\r
-.container +iframe                                                             { display:none; }
\ No newline at end of file
+.container +iframe                                                             { display:none; }\r
+\r
+/* Style for im/projects */\r
+table.alt-style                                                                { color:#000; width:100%; }\r
+table.alt-style caption                                                        { font-weight:normal;  font-size:1.154em; }\r
+table.alt-style tr th                                                  { font-weight:normal; color:#3582AC }\r
+table.alt-style tr td                                                  { color:#222; }\r
+table.alt-style tr td:first-child,\r
+table.alt-style tr th:first-child                              { padding-left:5px; }\r
+.content a.submit                                                              { margin:0; display:inline-block; margin:10px 0 ;  height:auto;}\r
+table.alt-style tr:nth-child(2n) td                            { background:#F2F2F2 }\r
+dl.alt-style                                                                   { width:500px; }\r
+dl.alt-style dt                                                                        { width:50%; float:left; color:#3582AC; font-weight:normal;}\r
+dl.alt-style dt:nth-child(2n)                                  { background:black; }\r
+.projects                                                                              { padding-bottom:30px; }\r
+.projects h2 span                                                              { color:#3582AC;}\r
+.projects h2 em                                                                        { float:right; }\r
+.projects h3                                                                   { font-size:1.154em; }\r
+.projects .submit-rt                                                   { margin:0; text-align:right; }\r
+.projects +.buttons-list.fixpos                                        { left:0; right:auto; }\r
+\r
+/* new faq-userguide styles */\r
+\r
+.faq .two-cols .lt                                                             { width:460px; }\r
+.faq .two-cols .rt                                                             { width:340px; }\r
+.lt-small .rt                                                                  { width:520px; }\r
+.lt-small .lt                                                                  { width:280px; }\r
+.unequal-dotted                                                                        { background:url(../images/double-dots-unequal.jpg) no-repeat top center; padding: 30px 0 0 ; margin-top:30px;}\r
+.unequal-dotted:first-child                                            { background:none; padding-top:0; margin-top:0; }\r
+.tirkouaz h2,\r
+.tirkouaz h2 a,\r
+.tirkouaz h3,\r
+.tirkouaz a:hover                                                              { color:#00A1B0; }\r
+.yellow h2,\r
+.yellow h2 a,\r
+.yellow h3,\r
+.yellow a:hover                                                                        { color:#F6921E; }\r
+.purple h2,\r
+.purple h2 a,\r
+.purple h3,\r
+.purple a:hover                                                                        { color:#7B499C; }\r
+\r
+.details ul li a,\r
+.details ul li a:hover,\r
+.question .content a:hover                                             { color:#F6921E }\r
+.details .extra-menu                                                   { border-top: 1px dashed #000; padding-top:20px; margin-top:20px; }\r
+.question .next-prev                                                   { margin:10px 0; }\r
+.question .next                                                                { float:right; }
\ No newline at end of file
diff --git a/cloudcms/static/cloudcms/images/double-dots-unequal.jpg b/cloudcms/static/cloudcms/images/double-dots-unequal.jpg
new file mode 100644 (file)
index 0000000..fb84fde
Binary files /dev/null and b/cloudcms/static/cloudcms/images/double-dots-unequal.jpg differ
index f25e698..74a4b38 100644 (file)
@@ -153,26 +153,17 @@ $(document).ready(function() {
     \r
     /*$('#animation a').hover(\r
       function () {\r
-       var src = $(this).find('img').attr('src').replace('.png', '_top.png')\r
-        $(this).find('img').attr("src", src);\r
+       \r
         $(this).animate({\r
            top: '+=-10'   \r
-           }, 600, function() {\r
-                       // action to do when animation is finished\r
-               });\r
+           }, 600);\r
         $(this).siblings('p').find('img').animate({\r
           width: '60%'       \r
         });\r
       }, \r
       function () {\r
-       \r
-        $(this).animate({\r
-         top: '0'   \r
-            \r
-        }, 600, function() {\r
-               var src = $(this).find('img').attr('src').replace('_top.png', '.png')\r
-               $(this).find('img').attr("src", src);\r
-               });\r
+\r
+        $(this).animate({top: '0'}, 600);\r
         $(this).siblings('p').find('img').animate({\r
           width: '65%'       \r
         });\r
index ea562e4..8a431de 100644 (file)
@@ -15,7 +15,7 @@
   {% endblock favicons %}
 
   {% block css %}
-      <link href='https://fonts.googleapis.com/css?family=Antic' rel='stylesheet' type='text/css'>
+      <link href="https://fonts.googleapis.com/css?family=Antic" rel="stylesheet" type="text/css">
       <link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}cloudcms/css/global.css">
       <link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}cloudcms/css/print.css" media="print">
       <!--[if lte IE 7]>
index 00f2bee..d46877d 100644 (file)
@@ -1,5 +1,6 @@
 from django import template
 from cloudcmsfaq.models import Question
+from collections import OrderedDict
 
 register = template.Library()
 
@@ -8,7 +9,7 @@ def get_service_faqs(service):
     """
     Retrun service faqs grouped by category
     """
-    grouped = {}
+    grouped = OrderedDict()
 
     for q in Question.objects.active().filter(service=service, is_active=True):
         if q.category not in grouped:
index a37ea15..1cf8a77 100644 (file)
@@ -69,7 +69,8 @@ class QuestionAdmin(item_editor.ItemEditor):
 
 class CategoryAdmin(admin.ModelAdmin):
     inlines = [CategoryTranslationInline]
-    list_display = ['__unicode__', 'faqs']
+    list_display = ['__unicode__', 'faqs', 'ordering']
+    list_editable = ['ordering']
     search_fields = ['translations__title']
 
     def faqs(self, obj):
index 175cddb..33b149a 100644 (file)
@@ -66,14 +66,17 @@ class Category(models.Model, translations.TranslatedObjectMixin):
 
     ordering = models.SmallIntegerField(_('ordering'), default=0)
     display_on_menu = models.BooleanField(default=False)
+    image = MediaFileForeignKey(MediaFile, blank=True, null=True)
+    class_name = models.CharField(_('class_name'), max_length=200, blank=True, null=True)
 
     class Meta:
         verbose_name = _('category')
         verbose_name_plural = _('categories')
-        ordering = ['-ordering',]
+        ordering = ['ordering',]
 
     objects = translations.TranslatedObjectManager()
-
+        
     def __unicode__(self):
         trans = translations.TranslatedObjectMixin.__unicode__(self)
         return trans or _('Unnamed category')
@@ -133,7 +136,7 @@ class Question(Base):
             related_name="faqs",
             verbose_name=_('application'))
 
-    published_on = models.DateTimeField(_('published on'), blank=True, null=True, default=datetime.now,
+    published_on = models.DateTimeField(_('published on'), blank=True, null=False, default=datetime.now,
         help_text=_('Will be filled in automatically when question gets published.'))
     last_changed = models.DateTimeField(_('last change'), auto_now=True, editable=False)
 
@@ -145,15 +148,22 @@ class Question(Base):
 
     objects = QuestionManager()
 
+
     class Meta:
         get_latest_by = 'published_on'
-        ordering = ['service', 'category', '-published_on']
+        ordering = ['service', 'category__ordering', 'published_on']
         verbose_name = _('faq')
         verbose_name_plural = _('faqs')
 
     def __unicode__(self):
         return self.title
 
+    def get_next(self):
+        return self.get_next_by_published_on(category=self.category, service=self.service)
+
+    def get_previous(self):
+        return self.get_previous_by_published_on(category=self.category, service=self.service)
+    
     def get_absolute_url(self):
         try:
             r = reverse('cloudcmsfaq_question_detail', 'cloudcmsfaq.urls', (),
index c8e3a44..4cfb52f 100644 (file)
@@ -1,24 +1,32 @@
 {% load applicationcontent_tags pagination_tags i18n cloudcms_tags %}
 
 <div class="faq">
-    {% for service in services %}
-    <div class="faq-category">
-        <h2>{{ service.translation.title|upper }}</h2>
-        <ul>
-            <li class="category">
-            {% for category, questions in service|get_service_faqs %}
-              <h3>{{ category.translation.title|upper }}</h3>
-              <ul>
-                {% for q in questions %}
-                  <li {% if q == question %}class="current"{% endif %}>
-                    <a href="{{ q.get_absolute_url }}">{{ q.title }}</a>
-                  </li>
-                  {% endfor %}
-                  <br />
-              </ul>
-            {% endfor %}
-            </li>
-        </ul>
+       {% for service in services %}
+    
+    <div class="two-cols clearfix unequal-dotted">
+       <div class="rt">
+               <img src="{{ service.image_faq.get_absolute_url }}" alt="{{ service.image_faq.title }}" />
+       </div>
+       <div class="lt">
+               <div class="faq-category {{ service.class_name }}">
+                       <h2>{{ service.translation.title_faq|upper }}</h2>
+                           {% for category, questions in service|get_service_faqs %}
+                     <h3>{{ category.translation.title }}</h3>
+                     <ul>
+                       {% for q in questions %}
+                         <li {% if q == question %}class="current"{% endif %}>
+                           <a href="{{ q.get_absolute_url }}">{{ q.title }}</a>
+                         </li>
+                         {% endfor %}
+                         <br />
+                     </ul>
+                   {% endfor %}
+                   </div>
+       </div>
+
     </div>
+    
     {% endfor %}
 </div>
index 0529652..1fcf7b3 100644 (file)
@@ -1,19 +1,82 @@
-{% load applicationcontent_tags i18n %}
+{% load applicationcontent_tags pagination_tags i18n cloudcms_tags %}
 
-{% fragment request "sidecol" %}
-{% include "cloudcmsfaq/archive.html" %}
-{% endfragment %}
+<div class="two-cols lt-small clearfix details faq">
+       <div class="rt">
+               <div class="question details {{ question.service.class_name }}">
+                   <h2>{{ question.title|upper }}</h2>
+                   <div class="content">
+                       {% for content in question.content.main %}
+                           {{ content.render }}
+                       {% endfor %}
+                   </div>
+                   <div class="clearfix next-prev">
+               {% if question.get_next %}
+                       <a href="{{ question.get_next.get_absolute_url }}" class="next">Next ></a>      
+               {% endif %} 
+               {% if question.get_previous %}
+                       <a href="{{ question.get_previous.get_absolute_url }}" class="prev">< Previous</a>
+               {% else %}
+                       <a href="{{ question.back_url }}">{% trans "&lt; Back to FAQ" %}</a>
+               {% endif%}
+                       
+                   </div>
+               </div>
+                
+               <div class="extra-menu">
+                       {% for service in services %}
+                               {% if service == question.service %}
+                               <div class="faq-category {{ service.class_name }}">                              
+                                        {% for category, questions in service|get_service_faqs %}
+                                               {% if category == question.category %}
+                                                 <h3>{{ service.translation.title_faq|upper }} > {{ category.translation.title }}</h3>
+                                     <ul>
+                                       {% for q in questions %}
+                                         <li>
+                                            {% if q != question %}<a href="{{ q.get_absolute_url }}">{% endif %}{{ q.title }}{% if q != question %}</a>{% endif %}
+                                         </li>
+                                         {% endfor %}
+                                         <br />
+                                     </ul>
+                                  {% endif %}
+                                {% endfor %}
+                               </div>
+                               {% endif %}
+                       {% endfor %}
+               </div>
+       </div>
+        
+       <div class="lt">
+               {% for service in services %}
+               <div class="faq-category {{ service.class_name }}">
+                       <h2>
+                               {% if service != question.service %}
+                                       <a href="{{ service.get_first_question.get_absolute_url }}">
+                               {% endif %}
+                                       {{ service.translation.title_faq|upper }}
+                               {% if service != question.service %}
+                                       </a>
+                               {% endif %}
+                       </h2>
+                        
+                        {% for category, questions in service|get_service_faqs %}
 
-{% fragment request "maincol" %}
-<div class="question">
-    <h2>{{ question.title|upper }}</h2>
-    <div class="content">
-        {% for content in question.content.main %}
-            {{ content.render }}
-        {% endfor %}
-    </div>
-    <div class="bottom-content backlink">
-        <a href="{{ question.back_url }}">{% trans "< Back to FAQ" %}</a>
-    </div>
-</div>
-{% endfragment %}
\ No newline at end of file
+                               {% if service == question.service %}
+              <h3>{{ category.translation.title }}</h3>
+              <ul>
+                {% for q in questions %}
+                  <li>
+                     {% if q != question %}<a href="{{ q.get_absolute_url }}">{% endif %}{{ q.title }}{% if q != question %}</a>{% endif %}
+                  </li>
+                  {% endfor %}
+                  <br />
+              </ul>
+                  {% endif %}
+                {% endfor %}
+               </div>
+               {% endfor %}
+       </div>
+</div> 
+
+
index 8404454..b5323ea 100644 (file)
@@ -57,9 +57,9 @@ def detail(request, service, slug):
     Display detailed question.
     """
     entry = Question.objects.get(slug=slug)
-    services = Service.objects.filter(pk=entry.service.pk)
-
+    services = Service.objects.all()
+    
     return direct_to_template(request,
             "cloudcmsfaq/detail.html", {'question': entry,
-                                        'services': services})
+                                        'services': services })