media gallery image upload kindof works

This commit is contained in:
Sanj 2012-11-16 04:25:53 +05:30
commit 5767b63238
25 changed files with 1047 additions and 77 deletions

View File

@ -6,6 +6,7 @@ from ox.django.fields import DictField
from django.core.paginator import Paginator, InvalidPage, EmptyPage
from django.template.loader import render_to_string
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
from insidepages.models import ModuleTab, ModelExtra
from os.path import exists
from sorl.thumbnail import get_thumbnail
@ -46,7 +47,6 @@ class ItfModel(models.Model):
changed = models.DateTimeField(null=True, editable=False) #All models should have a changed timestamp
created = models.DateTimeField(null=True, editable=False) #All models should have a created timestamp
#For all models, on save, update their "changed" timestamp - if created, set their created timestamp.
def save(self, *args, **kwargs):
''' On save, update timestamps '''

View File

@ -1,6 +1,7 @@
from models import Module, ModuleTab
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.contrib.contenttypes.models import ContentType
from ox.django.shortcuts import render_to_json_response
import re
from django.http import HttpResponse, HttpResponseRedirect
@ -43,7 +44,8 @@ def add_object(request, module_slug, tab_slug):
context = RequestContext(request, {
'form': f,
'inlines': inlines,
'errors': f.errors
'errors': f.errors,
'new': True
})
return render_to_response("test/person_form.html", context)
@ -52,8 +54,10 @@ def edit_object(request, module_slug, tab_slug, object_id):
tab = get_object_or_404(ModuleTab, slug=tab_slug)
model_class = tab.model_class()
obj = get_object_or_404(model_class, pk=object_id)
content_type_id = ContentType.objects.get_for_model(model_class).id
add_form_name = model_class.main_form
form = model_class.get_forms()[add_form_name]
galleries = obj.galleries
if request.POST:
f = form(request.POST, request.FILES, instance=obj)
@ -77,7 +81,10 @@ def edit_object(request, module_slug, tab_slug, object_id):
context = RequestContext(request, {
'form': f,
'object': obj,
'inlines': inlines
'content_type_id': content_type_id,
'inlines': inlines,
'galleries': galleries,
'new': False
})
return render_to_response("test/person_form.html", context)

View File

@ -4,6 +4,11 @@ from models import *
#from django.contrib.contenttypes import generic
#from padmavideos.models import PadmaVideo, PadmaClip
# -- this is because settings.py uses
# COMMENTS_APP = "django_comments_xtd", then Comment needs to be registered
from django_comments_xtd import models as xtd
admin.site.register(xtd.Comment)
#class AudioInline(admin.StackedInline):
# model = Audio
# extra = 2

View File

@ -6,13 +6,14 @@ from django.contrib.localflavor.in_.forms import INZipCodeField
#from ox.django.fields import DictField
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
from imagestore.models import Album
#from imagestore.models import Album
# mail imports
from django.core.mail import send_mail
from django.template.loader import get_template
from django.template import Context
from itf.settings import SITE_HOST, DEFAULT_FROM_MAIL
from mediagallery.models import GalleryAlbum
GENDER_CHOICES = (
('M', 'Male'),
@ -56,6 +57,7 @@ class Person(ItfModel):
awards = generic.GenericRelation("Award")
buzzitems = generic.GenericRelation("BuzzItem")
resources = generic.GenericRelation("Resource")
galleries = generic.GenericRelation(GalleryAlbum)
# photos = models.ManyToManyField("PhotoAlbum", blank=True, null=True)
# orphans = models.ManyToManyField("Orphan", blank=True, null=True, through='PersonOrphan')
@ -276,8 +278,7 @@ class Training(models.Model):
class Play(ItfModel):
title = models.CharField(max_length=512)
author = models.CharField(max_length=512, blank=True)
year = models.IntegerField(null=True, blank=True, max_length=4)
year = models.IntegerField(null=True, blank=True, max_length=4)
added_by = models.ForeignKey(User)
def __unicode__(self):
@ -299,6 +300,8 @@ class TheatreGroup(ItfModel):
about = models.TextField(blank=True)
awards = generic.GenericRelation("Award")
buzzitems = generic.GenericRelation("BuzzItem")
galleries = generic.GenericRelation(GalleryAlbum)
website = models.URLField(blank=True, verify_exists=False)
resources = generic.GenericRelation("Resource")
locations = generic.GenericRelation("Location")
@ -310,12 +313,14 @@ class TheatreGroup(ItfModel):
#nature_of_work = models.CharField(max_length=255)
# founded = models.CharField(max_length=10)
trainings = generic.GenericRelation("Training")
allow_comments = models.BooleanField('allow comments', default=True)
def __unicode__(self):
return self.name
def get_dict(self):
return {
#'object':self,
'name': self.name,
'email': self.email,
'tel':self.tel,
@ -375,6 +380,8 @@ class Production(ItfModel):
awards = generic.GenericRelation("Award")
debut_date = models.DateField(blank=True, null=True)
reviews= generic.GenericRelation("BuzzItem")
galleries = generic.GenericRelation(GalleryAlbum)
def __unicode__(self):
return self.name

View File

@ -97,7 +97,17 @@ def personpopup(request):
form = PersonForm(request.POST, request.FILES)
if form.is_valid():
instance = form.save()
# return HttpResponse("<script>opener.dismissAddAnotherPopup(this, '%s', '%s')</script>" % (str(instance.id), instance.get_title()))
invitation = PersonInvitation(
invitee=invitee,
invite_code=User.objects.make_random_password(30),
is_validated=False,
inviter=Person.objects.get(user=request.user),
sent_date=datetime.now()
)
invitation.save()
invitation.send_mail()
#return HttpResponse("<html><body>This person will be Invited!</body></html>")
#return HttpResponse("<script>opener.dismissAddAnotherPopup(this, '%s', '%s')</script>" % (str(instance.id), instance.get_title()))
else:
form = PersonForm()
context = RequestContext(request, {

View File

@ -1,13 +1,16 @@
from django.db import models
from app.models import ItfModel
from ox.django.fields import DictField
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
from django.core.files.base import ContentFile
class GalleryAlbum(ItfModel):
'''
'''
title = models.CharField(max_length=512, unique=True)
slug = models.SlugField(unique=True)
title = models.CharField(max_length=512)
#slug = models.SlugField(unique=True)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
@ -15,18 +18,36 @@ class GalleryAlbum(ItfModel):
def __unicode__(self):
return self.title
def get_edit_url(self):
return '/mediagallery/edit/%d' % self.id
class GalleryItem(models.Model):
title = models.CharField(max_length=512, blank=True, null=True)
done = models.BooleanField(default=False)
album = models.ForeignKey(GalleryAlbum)
data = models.DictField()
data = DictField(default={})
def __unicode__(self):
return self.title
class Photo(GalleryItem):
image = models.ImageField()
image = models.ImageField(upload_to="upload/mediagallery/images", blank=True, null=True) #FIXME: upload to better place, with galleries having folders
def save_chunk(self, chunk, name='data.bin'):
if not self.done:
if not self.image:
self.image.save(name, ContentFile(chunk))
self.title = name
self.save()
else:
f = open(self.image.path, 'a')
f.write(chunk)
f.close()
return True
return False
#class Video(GalleryItem):

9
itf/mediagallery/urls.py Normal file
View File

@ -0,0 +1,9 @@
from django.conf.urls.defaults import *
urlpatterns = patterns('mediagallery.views',
(r'^add/(?P<ctype_id>\d+)/(?P<object_id>\d+)', 'add'),
(r'^edit/(?P<id>\d+)', 'edit'),
(r'^upload/', 'upload'),
(r'^(?P<id>\d+)/chunk', 'chunk'),
)

View File

@ -1,9 +1,106 @@
# Create your views here.
from django.shortcuts import render_to_response
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.http import HttpResponse, HttpResponseRedirect
from models import GalleryAlbum, Photo
from django.contrib.contenttypes.models import ContentType
from django.views.decorators.csrf import csrf_exempt
from django import forms
from ox.django.shortcuts import render_to_json_response
def edit_gallery(request):
context = RequestContext(request, {})
def add(request, ctype_id, object_id):
ctype = get_object_or_404(ContentType, pk=ctype_id)
model_class = ctype.model_class()
obj = get_object_or_404(model_class, pk=object_id)
#FIXME: check permissions
d = {
'title': 'New Album',
'content_type': ctype,
'object_id': obj.id
}
gallery = GalleryAlbum(**d)
gallery.save()
return HttpResponseRedirect(gallery.get_edit_url())
def edit(request, id):
gallery = get_object_or_404(GalleryAlbum, pk=id)
photos = Photo.objects.filter(album=gallery)
context = RequestContext(request, {
'gallery': gallery,
'photos': photos
})
return render_to_response("mediagallery/upload.html", context)
@csrf_exempt
def upload(request):
if request.method == 'POST':
if request.POST.get('name', False):
id = request.POST.get("id", 0)
album = GalleryAlbum.objects.get(pk=id)
name = request.POST.get("name", "untitled")
item = Photo(title=name, album=album)
item.save()
response = {
'result': 1,
'maxRetry': 10,
'uploadUrl': '/mediagallery/' + str(item.id) + '/chunk'
}
return render_to_json_response(response)
return HttpResponse("error!")
class ChunkForm(forms.Form):
chunk = forms.FileField()
done = forms.IntegerField(required=False)
@csrf_exempt
def chunk(request, id):
if request.method == 'POST':
response = {}
item = get_object_or_404(Photo, id=id)
form = ChunkForm(request.POST, request.FILES)
canEdit = True #FIXME check for permissions
if form.is_valid() and canEdit:
f = form.cleaned_data['chunk']
if item.title:
name = item.title
else:
name = f.name
# if extFileName(name).lower() in ['jpg', 'jpeg', 'png']:
# thumbnail = get_thumbnail(
if not item.save_chunk(f.read(), name):
response['result'] = 'failed'
elif form.cleaned_data['done']:
item.done = True
item.save()
response = {
'resultUrl': '/files/' + str(item.id),
'fileId': item.id,
'title': name,
#'type': item.type,
#'thumbnail': item.get_thumb("100x100")
}
response['done'] = 1
response['result'] = 1
else:
response['result'] = 1
return render_to_json_response(response)
response = {
'result': -1,
'fileUrl': '/'
}
return render_to_json_response(response)
'''
def edit_gallery(request):
context = RequestContext(request, {})
return render_to_response("mediagallery/upload.html", context)
'''

View File

@ -203,7 +203,8 @@ INSTALLED_APPS = (
'tagging',
'app',
'padmavideos',
# 'api',
'mediagallery',
# 'api',
# 'boxes',
'frontpage',
# 'solango',
@ -214,7 +215,7 @@ INSTALLED_APPS = (
'sorl.thumbnail',
'crispy_forms',
'floppyforms',
'imagestore',
# 'imagestore',
# 'south',
# 'user',
'ckeditor',
@ -231,8 +232,14 @@ INSTALLED_APPS = (
'allauth.socialaccount.providers.facebook',
'allauth.socialaccount.providers.github',
'emailconfirmation',
'django_comments_xtd',
)
#j comments-xtd
COMMENTS_APP = "django_comments_xtd"
COMMENTS_XTD_CONFIRM_EMAIL = True
COMMENTS_XTD_MAX_THREAD_LEVEL = 0 # no threading
# jj all auth + email settings
LOGIN_REDIRECT_URL = '/edit_profile'

View File

@ -111,7 +111,11 @@ margin-bottom:8px;}
.tab_content h3 {
font-size: 150%;
padding-bottom: 10px;
margin-bottom: 10px;
}
.tab_content h5 {
font-size: 120%;
}
#about ul, #people ul, #production ul {
@ -144,6 +148,7 @@ margin-left: 10px;
background: #ccc;
min-height: 110px;
width: 150px;
margin-top: 4px;
}
.productionEachText {
@ -179,6 +184,11 @@ margin-left: 10px;
.resourcesEach {
padding: 0 20px 20px 0;
float: left;
width: 350px;
}
.borderYellow {
border-bottom: 1px solid #F7BD00;
}
/*toggleClass*/

View File

@ -32,6 +32,10 @@ left:4px;
z-index:-1;
}
.rightFloat {
float: right;
}
#logo span
{font-size:36px;}
@ -50,6 +54,52 @@ margin-bottom:8px;
font-weight:bold;
}
.padding {
padding: 8px 0;
}
.paddingBottom {
padding-bottom: 8px;
}
.tooltipLink {
position: relative;
}
.tooltip {
position: absolute;
left: 30px;
top: 15px;
background: #F7BD00;
padding: 6px;
border-radius: 8px;
color: #fff;
width: 156px;
opacity: 0;
visibility: hidden;
-o-transition: all 0.2s ease-in;
-moz-transition: all 0.2s ease-in;
-webkit-transition: all 0.2s ease-in;
transition: all 0.2s ease-in;
}
.tooltip:after {
content:"";
display:block; /* reduce the damage in FF3.0 */
position:absolute;
top:0px;
left:-15px;
width:0;
border-width:14px 0 0 22px;
border-style:solid;
border-color:#F7BD00 transparent;
}
.tooltipLink:hover .tooltip {
opacity: 1;
visibility: visible;
}
.tabHeader
{font-size:24px;
color:#ffb400;

View File

@ -38,7 +38,7 @@ ItfFileUpload.prototype.upload = function() {
ItfFileUpload.prototype.showProgress = function() {
this.$elem.find(".fileProgress").show();
this.Q.$elem.find(".fileProgress").show();
};
ItfFileUpload.prototype.doProgress = function(progress) {
@ -57,6 +57,7 @@ ItfFileUpload.prototype.getLi = function() {
ItfUploadQueue = function(options, $elem) {
var that = this;
this.options = options;
this.files = [];
this.isUploading = false;
this.len = function() {
@ -81,6 +82,7 @@ ItfUploadQueue.prototype.getData = function(f) {
return {
'name': f.name,
'id': that.options.id
//FIXME: add 'type'
}
};
@ -95,9 +97,10 @@ $.fn.uploadQueue = function(options) {
'id': '0',
'addURL': '/add'
}, options, dataOptions);
//console.log("o", o);
var Q = new ItfUploadQueue(o, that);
var $fileInput = $(this).find('input[type=file]'); //If there are any <input type=file> elements with the file drop container, bind to their change event.
if ($fileInput.length > 0) {
$fileInput.change(function() {

View File

@ -0,0 +1,20 @@
{% load comments i18n %}
<form action="{% comment_form_target %}" method="post">{% csrf_token %}
{% if next %}<div><input type="hidden" name="next" value="{{ next }}" /></div>{% endif %}
{% for field in form %}
{% if field.is_hidden %}
<div>{{ field }}</div>
{% else %}
{% if field.errors %}{{ field.errors }}{% endif %}
<p
{% if field.errors %} class="error"{% endif %}
{% ifequal field.name "honeypot" %} style="display:none;"{% endifequal %}>
{{ field.label_tag }} {{ field }}
</p>
{% endif %}
{% endfor %}
<p class="submit">
<input type="submit" name="post" class="submit-post" value="{% trans "Post" %}" />
<input type="submit" name="preview" class="submit-preview" value="{% trans "Preview" %}" />
</p>
</form>

View File

@ -0,0 +1,10 @@
<dl id="comments">
{% for comment in comment_list %}
<dt id="c{{ comment.id }}">
{{ comment.submit_date }} - {{ comment.name }}
</dt>
<dd>
<p>{{ comment.comment }}</p>
</dd>
{% endfor %}
</dl>

View File

@ -0,0 +1,8 @@
{% extends "comments/base.html" %}
{% load i18n %}
{% block title %}{% trans "Thanks for commenting" %}.{% endblock %}
{% block content %}
<h1>{% trans "Thank you for your comment" %}.</h1>
{% endblock %}

View File

@ -0,0 +1,36 @@
{% extends "comments/base.html" %}
{% load i18n %}
{% block title %}{% trans "Preview your comment" %}{% endblock %}
{% block content %}
{% load comments %}
<form action="{% comment_form_target %}" method="post">{% csrf_token %}
{% if next %}<div><input type="hidden" name="next" value="{{ next }}" /></div>{% endif %}
{% if form.errors %}
<h1>{% blocktrans count form.errors|length as counter %}Please correct the error below{% plural %}Please correct the errors below{% endblocktrans %}</h1>
{% else %}
<h1>{% trans "Preview your comment" %}</h1>
<blockquote>{{ comment|linebreaks }}</blockquote>
<p>
{% trans "and" %} <input type="submit" name="submit" class="submit-post" value="{% trans "Post your comment" %}" id="submit" /> {% trans "or make changes" %}:
</p>
{% endif %}
{% for field in form %}
{% if field.is_hidden %}
<div>{{ field }}</div>
{% else %}
{% if field.errors %}{{ field.errors }}{% endif %}
<p
{% if field.errors %} class="error"{% endif %}
{% ifequal field.name "honeypot" %} style="display:none;"{% endifequal %}>
{{ field.label_tag }} {{ field }}
</p>
{% endif %}
{% endfor %}
<p class="submit">
<input type="submit" name="submit" class="submit-post" value="{% trans "Post" %}" />
<input type="submit" name="preview" class="submit-preview" value="{% trans "Preview" %}" />
</p>
</form>
{% endblock %}

View File

@ -202,6 +202,32 @@
<div id="notes" class="tab_content">
{% load comments %}
<div id="comments">
{% get_comment_count for obj as comment_count %}
{% if comment_count %}
<H4 class="center">{{ comment_count }} comment{{ comment_count|pluralize }}</H4>
{% endif %}
<div id="comment-list">
{% render_comment_list for obj %}
</div>
{% if obj.allow_comments and user.is_authenticated %}
<H4 class="center">your comment</H4>
<div id="comment-form">
{% render_comment_form for obj %}
</div>
{% else %}
{% if user.is_authenticated %}
<h4 class="center"> Comments are disabled for this article</h4>
{% else %}
<h4 class="center"> </h4>
{% endif %}
{% endif %}
</div>
{% if awards %}
<div id="" class="itfFormDisplay">
<span class="orange">Awards: </span>

View File

@ -197,6 +197,37 @@ $(function(){
</div>
</div>
{% endfor %}
<div class="inlineWrapper">
<h3 class="orange">Multimedia</h3>
<div class="inlineHidden">
{% if add %}
<div class="formset_help_text">
Please save before you can add media galleries to this.
</div>
{% else %}
<div class="formset_help_text">
{% if not galleries.objects.all %}
You haven't added any galleries yet.
{% else %}
Click an existing gallery to edit:
{% endif %}
</div>
{% if galleries %}
<div class="galleryFormWrapper">
{% for gallery in galleries.objects.all %}
<div class="galleryFormList">
<a href="{{ gallery.get_edit_url }}" />{{ gallery.title }}</a>
</div>
{% endfor %}
</div>
{% endif %}
<a href="/mediagallery/add/{{ content_type_id }}/{{ object.id }}" class="addGalleryBtn" target="_blank">
+ Add New Media Gallery
</a>
{% endif %} {% comment %} close if not edit conditional {% endcomment %}
</div>
</div>
<br />
<input type="submit" value="Submit" />
</form>

View File

@ -0,0 +1,344 @@
<link rel="stylesheet" href="/static/css/modules/tabsinnerright.css" type="text/css" />
<ul class="tabsInnerRight">
<li><a href="#about">About</a></li>
<li><a href="#connections">Productions</a></li>
<li><a href="#plays">Plays &amp; more</a></li>
<li><a href="#gallery">Gallery</a></li>
<li><a href="#resources">Resources</a></li>
<li><a href="#notes">Notes</a></li>
</ul>
<div id="about" class="tab_content">
<h3 class="borderYellow paddingBottom">GROUP NAME</h3>
<div><strong>Based in: </strong>Mumbai, Delhi</div>
<div><strong>Founded: </strong>Year</div>
<div class="borderYellow"><strong>Languages we work in: </strong>Hindi, Bengali
<br /><br />
</div>
<br />
<div>
<p>Some copy here that is a synopsis in a paragraph. Some copy here that is a synopsis in a paragraph.
Some copy here that is a synopsis in a paragraph. Some copy here that is a synopsis in a paragraph.</p>
</div>
<p> +91 (22) 12345678</p>
<div><a href="">www.website.com</a></div>
<div class="borderYellow">
<a href="">Contact</a>
<br /><br />
</div>
<br />
<div class="borderYellow">
<h5 class="orangeInnerRight">Awards</h5>
<div>Name of award, year, link</div>
<div>Name of award, year, link</div>
<div>Name of award, year, link</div>
<div>Name of award, year, link</div>
<br />
</div>
<br />
<h5 class="orangeInnerRight">More about us</h5>
<a href="">Link to article</a>
<p>One line desc</p>
<a href="">Link to article</a>
<p>One line desc</p>
<a href="">Link to article</a>
<p>One line desc</p>
</div> <!-- end about -->
<div id="connections" class="tab_content">
<h5 class="orangeInnerRight">Members</h5>
<br />
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<a href="">Name of Person</a>
<div>Occupation/one-line desc</div>
<div>Relationship to group (eg: admin)</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<a href="">Name of Person</a>
<div>Occupation/one-line desc</div>
<div>Relationship to group (eg: fan of)</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<a href="">Name of Person</a>
<div>Occupation/one-line desc</div>
<div>Relationship to group (eg: member of)</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<a href="">Name of Person</a>
<div>Occupation/one-line desc</div>
<div>Relationship to group</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<br />
<a href="" class="toggleLink rightFloat">More>></a>
<div class="clear"></div>
<h5 class="orangeInnerRight">Worked with</h5>
<br />
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<a href="">Name of Group</a>
<div>Location</div>
<div>Relationship to Group (e.g. admin)</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<a href="">Name of Person</a>
<div>Occupation/one-line desc</div>
<div>Location</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<a href="">Name of Person</a>
<div>Occupation/one-line desc</div>
<div>Location</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<a href="">Name of Person</a>
<div>Location</div>
<div>Relationship to Group (e.g. admin)</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<a href="" class="toggleLink rightFloat">More>></a>
<div class="clear"></div>
<br />
</div> <!-- end connections -->
<div id="plays" class="tab_content">
<h3 class="orange">Productions</h3>
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<div class="orangeInnerRight">Name of Production (2010) <span style="color: red;">ICON</span> </div>
<div>Group: Group Name</div>
<div><em>Title Credits: </em></div>
<div>No. of shows: 50</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<div class="orangeInnerRight">Name of Production (2010) <span style="color: red;">ICON</span> </div>
<div>Group: Group Name</div>
<div><em>Title Credits: </em></div>
<div>No. of shows: 50</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<div class="orangeInnerRight">Name of Production (2010) <span style="color: red;">ICON</span> </div>
<div>Group: Group Name</div>
<div><em>Title Credits: </em></div>
<div>No. of shows: 50</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<div class="orangeInnerRight">Name of Production (2010) <span style="color: red;">ICON</span> </div>
<div>Group: Group Name</div>
<div><em>Title Credits: </em></div>
<div>No. of shows: 50</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<a href="" class="toggleLink rightFloat">More>></a>
<div class="clear"></div>
<h3 class="orange">Workshops</h3>
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<div class="orangeInnerRight">Name of workshops</div>
<div><em>One line desc</em></div>
<div>Current</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<div class="orangeInnerRight">Name of workshops</div>
<div><em>One line desc</em></div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<br />
<a href="" class="rightFloat">More>></a>
<div class="clear"></div>
<h3 class="orange">More</h3>
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<div class="orangeInnerRight">Name of activity (talk, whatever)</div>
<div><em>One line desc</em></div>
<div>Current</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<div class="orangeInnerRight">Name of activity (talk, whatever)</div>
<div><em>One line desc</em></div>
<div>Current</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
</div> <!-- end plays -->
<div id="gallery" class="tab_content">
<h3 class="orange">Kindly refer to Gallery tab in Script Archive</h3>
</div> <!-- end gallery -->
<div id="resources" class="tab_content">
<h3 class="orange">Kindly refer to Resources tab in Script Archive</h3>
</div> <!-- end resources -->
<div id="notes" class="tab_content">
<h3 class="orange">Kindly refer to notes tab in Script Archive</h3>
</div> <!-- end notes -->
<script type="text/javascript" src="/static/js/innertabs.js"></script>

View File

@ -0,0 +1,247 @@
<link rel="stylesheet" href="/static/css/modules/tabsinnerright.css" type="text/css" />
<ul class="tabsInnerRight">
<li><a href="#about">About</a></li>
<li><a href="#scripts">Scripts</a></li>
<li><a href="#connections">Connections</a></li>
<li><a href="#productions">Productions</a></li>
<li><a href="#gallery">Gallery</a></li>
<li><a href="#resources">Resources</a></li>
</ul>
<div id="about" class="tab_content">
<h3>Name of Individual</h3>
<p>Director, Light Designer, Actor</p>
<div>
bio bio bio bio bio bio bio bio bio <br />
bio bio bio bio bio bio bio bio bio
</div>
<br />
<div>Based in: (City)</div>
<div>Languages I work in: Hindi, Malayalam</div>
<div>DOB: </div>
<div>Gender: </div>
<a href="" class="toggleLink">Contact</a>
<div class="toggleDiv">Some text</div>
<div class="borderYellow"><br /></div>
<br />
<div class="borderYellow">
<h5 class="orangeInnerRight">Training</h5>
<div>Area of Training, <a href="">Name of Conductor</a>, <a href="">Name of Theatre Group</a>, Location, Year</div>
<div>Area of Training, <a href="">Name of Conductor</a>, <a href="">Name of Theatre Group</a>, Location, Year</div>
<div>Area of Training, <a href="">Name of Conductor</a>, <a href="">Name of Theatre Group</a>, Location, Year</div>
<div>Area of Training, <a href="">Name of Conductor</a>, <a href="">Name of Theatre Group</a>, Location, Year</div>
<br />
</div>
<br />
<div class="borderYellow">
<h5 class="orangeInnerRight">Awards</h5>
<div>Name of award, year, link</div>
<div>Name of award, year, link</div>
<div>Name of award, year, link</div>
<br />
</div>
<br />
<div>
<h5 class="orangeInnerRight">More</h5>
<a href="">Link to article 1</a>
<div>One line description</div>
<a href="">Link to article 2</a>
<div>One line description</div>
<a href="">Link to article 1</a>
<div>One line description</div>
</div>
</div> <!-- end about -->
<div id="scripts" class="tab_content">
<div>Help text - to send them to script archive</div>
<br />
<a href="toggleLink">Title</a>
<div>One line description. <span class="toggleDiv">Extra information goes here</span></div>
<br />
<a href="toggleLink">Title</a>
<div>One line description. <span class="toggleDiv">Extra information goes here</span></div>
<br />
<a href="toggleLink">Title</a>
<div>One line description. <span class="toggleDiv">Extra information goes here</span></div>
<br />
</div> <!-- end scripts -->
<div id="connections" class="tab_content">
<!-- <p><a href="" class="toggleLink">A V Gopalakrishnan</a> Theatre Enthusiast, Mumbai</p>-->
<h5 class="orangeInnerRight">Member of</h5>
<br />
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<a href="">Name of Group</a>
<div>Location</div>
<div>Relationship to Group</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<a href="">Name of Group</a>
<div>Location</div>
<div>Relationship to Group</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<a href="">Name of Group</a>
<div>Location</div>
<div>Relationship to Group</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<a href="" class="toggleLink rightFloat">More>></a>
<div class="clear"></div>
<h5 class="orangeInnerRight">Worked with</h5>
<br />
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<a href="">Name of Person</a>
<div>Occupation/one-line desc</div>
<div>Location</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<a href="">Name of Person</a>
<div>Occupation/one-line desc</div>
<div>Location</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<a href="">Name of Person</a>
<div>Occupation/one-line desc</div>
<div>Location</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<a href="" class="toggleLink rightFloat">More>></a>
<div class="clear"></div>
<br />
</div> <!-- end connections -->
<div id="productions" class="tab_content">
<h3 class="orange">Productions</h3>
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<a href="">Name of Production (2010)</a>
<div>Group: Group Name</div>
<div><em>Years</em></div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<a href="">Name of Production (2010)</a>
<div>Group: Group Name</div>
<div><em>Years</em></div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
<div class="productionEach">
<div class="productionEachImg">
<img src="" alt="/static/images/150x150.jpg" />
</div>
<div class="productionEachText">
<a href="">Name of Production (2010)</a>
<div>Group: Group Name</div>
<div><em>Years</em></div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
</div> <!-- end productions -->
<div id="gallery" class="tab_content">
<h3 class="orange">Kindly refer to Gallery tab in Script Archive</h3>
</div>
<div id="resources" class="tab_content">
<h3 class="orange">Kindly refer to Resources tab in Script Archive</h3>
</div>
<script type="text/javascript" src="/static/js/innertabs.js"></script>

View File

@ -1,5 +1,12 @@
<link rel="stylesheet" href="/static/css/modules/tabsinnerright.css" type="text/css" />
<style type="text/css">
.productionEachImg {
float: right;
}
</style>
<script>
$(function() {
$('.toggleLink').click(function(e) {
@ -21,20 +28,21 @@ $(function() {
<div id="about" class="tab_content">
<h3>Script Name</h3>
<p class="noMargin"><strong>Writer:</strong> Names of writers</p>
<p class="noMargin"><strong>Language(s):</strong> Hindi, Bengali</p>
<p><strong>Approximate duration:</strong> </p>
<p><strong>No of characters:</strong> 20; Female: 5, Male: 15</p>
<div><strong>Writer:</strong> Names of writers</div>
<div><strong>Language(s):</strong> Hindi, Bengali</div>
<div><strong>Approximate duration:</strong> </div>
<div><strong>No of characters:</strong> 20 - Female: 5, Male: 15</div>
<br />
<div>
<p>Some copy here that is a synopsis in a paragraph. Some copy here that is a synopsis in a paragraph.
Some copy here that is a synopsis in a paragraph. Some copy here that is a synopsis in a paragraph.</p>
Some copy here that is a synopsis in a paragraph. Some copy here that is a synopsis in a paragraph.
Some copy here that is a synopsis in a paragraph. Some copy here that is a synopsis in a paragraph.
</div>
<br>
<br />
<span class="orange">Licenses:</span>
<h5 class="orangeInnerRight">Licenses:</h5>
<p>This script may be accessed
under the following Creative Commons Licenses:</p>
@ -71,11 +79,18 @@ $(function() {
</div>
<div class="productionEachText">
<p class="orange">Name of Production (2010)</p>
<p>Group: Group Name</p>
<p>Some copy here</p>
<p>No. of shows: 50</p>
<p>Current(icon) or Upcoming (icon)<span style="color:red">Should we have this just after the title? Karen</span></p>
<a href="" class="tooltipLink">Name of Production (2010)
<span class="tooltip">
<div>
<strong>Some Title</strong><br />
Some text goes here
</div>
</span>
</a>
<div>Group: Group Name</div>
<div>Some copy here</div>
<div>No. of shows: 50</div>
<p>Current(icon) or Upcoming (icon)<span style="color:red">Please provide icon- I'll place it after title - Karen</span></p>
</div>
<div class="clear"></div>
@ -87,10 +102,10 @@ $(function() {
</div>
<div class="productionEachText">
<p class="orange">Name of Production (2010)</p>
<p>Group: Group Name</p>
<p>Some copy here</p>
<p>No. of shows: 50</p>
<a href="">Name of Production (2010)</a>
<div>Group: Group Name</div>
<div>Some copy here</div>
<div>No. of shows: 50</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
@ -101,10 +116,10 @@ $(function() {
</div>
<div class="productionEachText">
<p class="orange">Name of Production (2010)</p>
<p>Group: Group Name</p>
<p>Some copy here</p>
<p>No. of shows: 50</p>
<a href="">Name of Production (2010)</a>
<div>Group: Group Name</div>
<div>Some copy here</div>
<div>No. of shows: 50</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
@ -119,11 +134,11 @@ $(function() {
</div>
<div class="productionEachText">
<p class="orange">Name of Production (2010)</p>
<p>Group: Group Name</p>
<p>Some copy here</p>
<p>No. of shows: 50</p>
<p>Current(icon) or Upcoming (icon)/p>
<a href="">Name of Production (2010)</a>
<div>Group: Group Name</div>
<div>Some copy here</div>
<div>No. of shows: 50</div>
<div>Current(icon) or Upcoming (icon)</div>
</div>
<div class="clear"></div>
</div> <!-- end production each -->
@ -134,11 +149,11 @@ $(function() {
</div>
<div class="productionEachText">
<p class="orange">Name of Production (2010)</p>
<p>Group: Group Name</p>
<p>Some copy here</p>
<p>No. of shows: 50</p>
<p>Current(icon) or Upcoming (icon)/p>
<a href="">Name of Production (2010)</a>
<div>Group: Group Name</div>
<div>Some copy here</div>
<div>No. of shows: 50</div>
<div>Current(icon) or Upcoming (icon)</div>
</div>
<div class="clear"></div>
@ -155,9 +170,10 @@ $(function() {
<div class="productionEachText">
<a href="">Name of Person</a>
<p>Writer: Some script</p>
<p>Translation of script by playwright</p>
<p>From language to language</p>
<div>Writer: Some script</div>
<div>Translation of script by playwright</div>
<div>From language to language</div>
<a href="" class="toggleLink orange">Synopsis</a>
<div class="toggleDiv">Lorem ipsum</div>
</div>
@ -172,9 +188,10 @@ $(function() {
<div class="productionEachText">
<a href="">Name of Person</a>
<p>Writer: Some script</p>
<p>Translation of script by playwright</p>
<p>From language to language</p>
<div>Writer: Some script</div>
<div>Translation of script by playwright</div>
<div>From language to language</div>
<a href="" class="toggleLink orange">Synopsis</a>
<div class="toggleDiv">Lorem ipsum</div>
</div>
@ -188,11 +205,11 @@ $(function() {
</div>
<div class="productionEachText">
<a href="" class="toggleLink">Name of Person</a>
<p>Writer: Some script</p>
<p>Translation of script by playwright</p>
<p>From language to language</p>
<a href="">Name of Person</a>
<div>Writer: Some script</div>
<div>Translation of script by playwright</div>
<div>From language to language</div>
<a href="" class="toggleLink orange">Synopsis</a>
<div class="toggleDiv">Lorem ipsum</div>
</div>
@ -243,9 +260,9 @@ $(function() {
<div class="resourcesBlock">
<div class="resourcesEach">
<p class="orange">Title</p>
<p>One line description</p>
<p><a href="" target="_blank">Url</a></p>
<div class="orangeInnerRight">Title</div>
<div>One line description</div>
<div><a href="" target="_blank">Url</a></div>
<a href="">Download</a>
</div>
@ -257,9 +274,9 @@ $(function() {
<div class="resourcesBlock">
<div class="resourcesEach">
<p class="orange">Title</p>
<p>One line description</p>
<p><a href="" target="_blank">Url</a></p>
<div class="orangeInnerRight">Title</div>
<div>One line description</div>
<div><a href="" target="_blank">Url</a></div>
<a href="">Download</a>
</div>
@ -271,9 +288,9 @@ $(function() {
<div class="resourcesBlock">
<div class="resourcesEach">
<p class="orange">Title</p>
<p>One line description</p>
<p><a href="" target="_blank">Url</a></p>
<div class="orangeInnerRight">Title</div>
<div>One line description</div>
<div><a href="" target="_blank">Url</a></div>
<a href="">Download</a>
</div>
@ -285,9 +302,9 @@ $(function() {
<div class="resourcesBlock">
<div class="resourcesEach">
<p class="orange">Title</p>
<p>One line description</p>
<p><a href="" target="_blank">Url</a></p>
<div class="orangeInnerRight">Title</div>
<div>One line description</div>
<div><a href="" target="_blank">Url</a></div>
<a href="">Download</a>
</div>

View File

@ -24,7 +24,8 @@ urlpatterns = patterns('',
(r'^contact/$', 'frontpage.views.contact'),
(r'^emailer/issue/(?P<issue_no>\d+)/$', 'emailer.views.show_emailer'),
# ('m/(?P<module_slug>.*)', 'insidepages.views.main'),
(r'^comments/', include('django.contrib.comments.urls')),
#(r'^comments/', include('django.contrib.comments.urls')),
url(r'^comments/', include('django_comments_xtd.urls')),
# (r'^ckeditor/', include('ckeditor.urls')),
(r'^robots.txt$', direct_to_template, {'template': 'robots.txt', 'mimetype': 'text/plain'}),
# (r'^erang/', include('erang_organised.urls')),
@ -45,14 +46,15 @@ urlpatterns = patterns('',
(r'^test_template/(?P<template_name>[a-zA-Z].*?)$', 'insidepages.views.test_template'),
(r'edit_profile', 'itfprofiles.views.edit_profile'),
(r'^mediagallery/upload', 'mediagallery.views.edit_gallery'),
# (r'^mediagallery/upload', 'mediagallery.views.edit_gallery'),
(r'^autocomplete/(?P<ctype_id>\d+)', 'app.views.autocomplete'),
(r'^popup_form/(?P<ctype_id>\d+)', 'app.views.popup_form'),
# (r'^autocompletes/itfprofiles/$', 'itfprofiles.views.autocomplete'),
(r'^popup/person', 'itfprofiles.views.personpopup'), (r'^popup/theatregroup', 'itfprofiles.views.grouppopup'),
# (r'i/', include('itfcore.urls')),
(r'^admin/doc/', include('django.contrib.admindocs.urls')),
(r'^search/', include('haystack.urls')),
(r'^search/', include('haystack.urls')),
(r'^mediagallery/', include('mediagallery.urls')),
(r'^markitup/', include('markitup.urls')),
(r'googlehostedservice.html', 'itfcore.views.googlehosted'),

View File

@ -0,0 +1,2 @@
ALTER TABLE `itfprofiles_theatregroup`
ADD `allow_comments` bool;

View File

@ -22,5 +22,6 @@ django-markitup
twitter
-e git+git://github.com/pennersr/django-allauth.git#egg=django-allauth
-e git+git://github.com/pythonforfacebook/facebook-sdk.git#egg=facebook-sdk
django-comments-xtd
django-avatar
imagestore