diff options
-rw-r--r-- | coip/apps/link/__init__.py | 0 | ||||
-rw-r--r-- | coip/apps/link/admin.py | 4 | ||||
-rw-r--r-- | coip/apps/link/forms.py | 12 | ||||
-rw-r--r-- | coip/apps/link/models.py | 18 | ||||
-rw-r--r-- | coip/apps/link/views.py | 40 | ||||
-rw-r--r-- | coip/apps/name/views.py | 4 | ||||
-rw-r--r-- | coip/urls.py | 3 | ||||
-rw-r--r-- | settings.py | 1 | ||||
-rw-r--r-- | templates/apps/link/edit.html | 1 | ||||
-rw-r--r-- | templates/apps/name/name.html | 11 | ||||
-rw-r--r-- | templates/base.html | 11 | ||||
-rw-r--r-- | templates/tree.html | 35 |
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> + <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;"> |