summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coip/apps/link/__init__.py0
-rw-r--r--coip/apps/link/admin.py4
-rw-r--r--coip/apps/link/forms.py12
-rw-r--r--coip/apps/link/models.py18
-rw-r--r--coip/apps/link/views.py40
-rw-r--r--coip/apps/name/views.py4
-rw-r--r--coip/urls.py3
-rw-r--r--settings.py1
-rw-r--r--templates/apps/link/edit.html1
-rw-r--r--templates/apps/name/name.html11
-rw-r--r--templates/base.html11
-rw-r--r--templates/tree.html35
12 files changed, 122 insertions, 18 deletions
diff --git a/coip/apps/link/__init__.py b/coip/apps/link/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/coip/apps/link/__init__.py
diff --git a/coip/apps/link/admin.py b/coip/apps/link/admin.py
new file mode 100644
index 0000000..0d6e1fb
--- /dev/null
+++ b/coip/apps/link/admin.py
@@ -0,0 +1,4 @@
+from django.contrib import admin
+from coip.apps.link.models import Link
+
+admin.site.register(Link) \ No newline at end of file
diff --git a/coip/apps/link/forms.py b/coip/apps/link/forms.py
new file mode 100644
index 0000000..cc4a995
--- /dev/null
+++ b/coip/apps/link/forms.py
@@ -0,0 +1,12 @@
+'''
+Created on Aug 4, 2010
+
+@author: leifj
+'''
+from django import forms
+from coip.apps.link.models import Link
+
+class AddRelatedLinkForm(forms.ModelForm):
+ class Meta:
+ model = Link
+ fields = ['url','text'] \ No newline at end of file
diff --git a/coip/apps/link/models.py b/coip/apps/link/models.py
new file mode 100644
index 0000000..25c26b4
--- /dev/null
+++ b/coip/apps/link/models.py
@@ -0,0 +1,18 @@
+'''
+Created on Aug 4, 2010
+
+@author: leifj
+'''
+from django.db import models
+from coip.apps.name.models import Name
+
+class Link(models.Model):
+ name = models.ForeignKey(Name,related_name='links')
+ url = models.URLField()
+ tag = models.CharField(max_length=255)
+ text = models.CharField(max_length=255)
+ timecreated = models.DateTimeField(auto_now_add=True)
+ lastupdated = models.DateTimeField(auto_now=True)
+
+ def __unicode__(self):
+ return "%s:%s (%s) on %s" % (self.tag,self.url,self.text,self.name) \ No newline at end of file
diff --git a/coip/apps/link/views.py b/coip/apps/link/views.py
new file mode 100644
index 0000000..484d129
--- /dev/null
+++ b/coip/apps/link/views.py
@@ -0,0 +1,40 @@
+'''
+Created on Aug 4, 2010
+
+@author: leifj
+'''
+from django.contrib.auth.decorators import login_required
+from django.shortcuts import get_object_or_404
+from coip.apps.name.models import Name
+from coip.multiresponse import render403, respond_to
+from coip.apps.link.models import Link
+from coip.apps.link.forms import AddRelatedLinkForm
+from django.http import HttpResponseRedirect
+
+@login_required
+def add(request,id):
+ name = get_object_or_404(Name,pk=id)
+ if not name.has_permission(request.user,'w'):
+ return render403("You do not have permission to add a link on %s" % (name))
+
+ if request.method == 'POST':
+ link = Link(tag='related',name=name)
+ form = AddRelatedLinkForm(request.POST,instance=link)
+ if form.is_valid():
+ link = form.save()
+ return HttpResponseRedirect("/name/id/%d" % name.id)
+ else:
+ form = AddRelatedLinkForm()
+
+ return respond_to(request,{'text/html': 'apps/link/edit.html'},{'form': form,'name': name,'formtitle': 'Add link','submitname': 'Add link'})
+
+@login_required
+def remove(request,id):
+ link = get_object_or_404(Link,pk=id)
+ name = link.name
+ if not name.has_permission(request.user,'w'):
+ return render403("You do not have permission to remove a link on %s" % (name))
+
+ link.delete()
+
+ return HttpResponseRedirect("/name/id/%d" % name.id) \ No newline at end of file
diff --git a/coip/apps/name/views.py b/coip/apps/name/views.py
index a8c17de..f4eaf1d 100644
--- a/coip/apps/name/views.py
+++ b/coip/apps/name/views.py
@@ -13,6 +13,7 @@ from pprint import pprint
from coip.apps.name.forms import NameEditForm, NewNameForm, NameDeleteForm
from twisted.python.reflect import ObjectNotFound
+@login_required
def delete(request,id):
name = None
try:
@@ -47,6 +48,7 @@ def delete(request,id):
return respond_to(request,{'text/html': 'apps/name/edit.html'},{'form': form,'name': name,'formtitle': 'Remove name confirmation' ,'submitname': 'Delete'})
+@login_required
def add(request,id):
parent = None
if id:
@@ -74,6 +76,7 @@ def add(request,id):
return respond_to(request,{'text/html': 'apps/name/edit.html'},{'form': form,'name': parent,'formtitle': 'Create new name','submitname': 'Create'})
+@login_required
def edit(request,id):
name = None
try:
@@ -95,6 +98,7 @@ def edit(request,id):
return respond_to(request,{'text/html': 'apps/name/edit.html'},{'form': form,'name': name,'formtitle': 'Change name','submitname': 'Update'})
+@login_required
def show_root(request):
return respond_to(request,
{'text/html': 'apps/name/name.html'},
diff --git a/coip/urls.py b/coip/urls.py
index 78a4b89..ba71137 100644
--- a/coip/urls.py
+++ b/coip/urls.py
@@ -31,6 +31,9 @@ urlpatterns = patterns('',
(r'^name/(?P<id>[0-9]+)/edit$', 'coip.apps.name.views.edit'),
(r'^name/(?P<id>[0-9]+)/delete$', 'coip.apps.name.views.delete'),
(r'^name/(?P<id>[0-9]+)/add$', 'coip.apps.name.views.add'),
+ # Links
+ (r'^name/(?P<id>[0-9]+)/addlink$', 'coip.apps.link.views.add'),
+ (r'^link/(?P<id>[0-9]+)/remove$', 'coip.apps.link.views.remove'),
# Membership
(r'^membership/(?P<id>[0-9]+)$', 'coip.apps.membership.views.show'),
# Invitations
diff --git a/settings.py b/settings.py
index 084ea1f..02f3ce5 100644
--- a/settings.py
+++ b/settings.py
@@ -82,4 +82,5 @@ INSTALLED_APPS = (
'coip.apps.membership',
'coip.apps.invitation',
'coip.apps.userprofile',
+ 'coip.apps.link',
)
diff --git a/templates/apps/link/edit.html b/templates/apps/link/edit.html
new file mode 100644
index 0000000..ab833ad
--- /dev/null
+++ b/templates/apps/link/edit.html
@@ -0,0 +1 @@
+{% extends "edit.html" %} \ No newline at end of file
diff --git a/templates/apps/name/name.html b/templates/apps/name/name.html
index 3711d17..6a5929a 100644
--- a/templates/apps/name/name.html
+++ b/templates/apps/name/name.html
@@ -17,17 +17,20 @@
<div class="ui-widget ui-state-default ui-corner-all" style="padding: 4px; float: left; margin-left: 10px; margin-top: 6px; margin-bottom: 20px;">
<div class="navlist">
<ul>
+ {% if render.edit %}
+ <li style="float: right;"><a class="tip" title="Modify access rights" href="/name/{{name.id}}/editacl"><span class="ui-icon ui-icon-unlocked"></span></a></li>
+ {% endif %}
{% if render.edit %}
- <li style="float: right;"><a class="tip" title="Modify this name" href="/name/{{name.id}}/edit"><span class="ui-icon ui-icon-wrench"></span></a></li>
+ <li style="float: right;"><a class="tip" title="Modify" href="/name/{{name.id}}/edit"><span class="ui-icon ui-icon-wrench"></span></a></li>
{% endif %}
{% if render.delete %}
- <li style="float: right;"><a class="tip" title="Permanently remove this name" href="/name/{{name.id}}/delete"><span class="ui-icon ui-icon-trash"></span></a></li>
+ <li style="float: right;"><a class="tip" title="Permanently remove this" href="/name/{{name.id}}/delete"><span class="ui-icon ui-icon-trash"></span></a></li>
{% endif %}
{% if render.insert %}
- <li style="float: right;"><a class="tip" title="Create a new name below this one" href="/name/{{name.id}}/add"><span class="ui-icon ui-icon-plusthick"></span></a></li>
+ <li style="float: right;"><a class="tip" title="Create child" href="/name/{{name.id}}/add"><span class="ui-icon ui-icon-plusthick"></span></a></li>
{% endif %}
{% if render.invite %}
- <li style="float: right;"><a class="tip" title="Invite user" href="/name/{{name.id}}/invite"><span class="ui-icon ui-icon-heart"></span></a></li>
+ <li style="float: right;"><a class="tip" title="Invite someone to join" href="/name/{{name.id}}/invite"><span class="ui-icon ui-icon-heart"></span></a></li>
{% endif %}
</ul>
</div>
diff --git a/templates/base.html b/templates/base.html
index ab645b3..88198ae 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -90,11 +90,8 @@
<div id="header">
<div id="headline">{% block headline %}{% endblock %}</div>
{% if user.is_authenticated %}
- <div style="float: right; margin-right: 50px;" class="button"><a id="logout" href="/auth/logout/">Logout</a></div>
- <div id="linklist">
- <ul>
- <li style="margin-top: 5px;"><a href="/user/home"><span class="ui-icon ui-icon-locked" style="float: left;"></span>{{ profile.display_name }}</a></li>
- </ul>
+ <div class="ui-widget ui-state-default ui-corner-all" style="padding: 4px; float: right; margin-right: 10px; margin-top: 6px; margin-bottom: 20px;">
+ <a title="Logout" class="tip" id="logout" href="/auth/logout/"><span class="ui-icon ui-icon-power"></span></a>
</div>
{% block tools %}{% endblock %}
{% endif %}
@@ -110,7 +107,9 @@
<ul>
<li><a href="#about">About COIP</a></li>
<li><a href="#about">Terms Of Use</a></li>
- <li><a href="#about">System Status</a></li>
+ </ul>
+ <ul style="float: right;">
+ <li><a href="/user/home">Logged in as {{ profile.display_name }} ({{ profile.identifier }})</a></li>
</ul>
</div>
</body>
diff --git a/templates/tree.html b/templates/tree.html
index d1bf05d..0d2e6cd 100644
--- a/templates/tree.html
+++ b/templates/tree.html
@@ -29,14 +29,33 @@ $(function() {
{% block main %}
{% if name %}
<div style="float: left; width: 30%;">
- {% if name and render.up %}
- {% if name.parent %}
- <a href="/name/id/{{name.parent.id}}">.. (up one level)</a>
- {% else %}
- <a href="/name">.. (up one level)</a>
- {% endif %}
- {% endif %}
- <div style="height: 100%;" id="tree"></div>
+ <span>
+ {% if name and render.up %}
+ {% if name.parent %}
+ <a href="/name/id/{{name.parent.id}}">.. (up one level)</a>
+ {% else %}
+ <a href="/name">.. (up one level)</a>
+ {% endif %}
+ {% endif %}
+ <div id="tree"></div>
+ </span>
+ <span>
+ {% if name and name.links %}
+ <h3 style="float: left;">Related resources</h3>
+ {% if render.edit %}
+ <a style="float: left; margin-top: 11px;" class="tip" title="Add Link" href="/name/{{name.id}}/addlink"><span class="ui-icon ui-icon-circle-plus"></span></a>
+ {% endif %}
+ <div class="clear"></div>
+ <ul style="list-style: none;">
+ {% for link in name.links.all %}
+ <li><a class="tip" style="float:left; margin-right: 5px;" title="{{link.text}}" href="{{link.url}}">{{link.text}}</a>&nbsp;
+ <a class="tip" style="float:left;" title="Remove link" href="/link/{{link.id}}/remove">
+ <span style="margin-left: 1px;" class="ui-icon ui-icon-circle-minus"></span></a><div class="clear"></div></li>
+ {% endfor %}
+ </ul>
+ <div class="clear"></div>
+ {% endif %}
+ </span>
</div>
{% endif %}
<div style="float: right; width: 65%; padding-left: 10px;">