21 changed files with 1561 additions and 49 deletions
File diff suppressed because one or more lines are too long
@ -0,0 +1,38 @@
|
||||
/** |
||||
* @fileOverview CSS for jquery-autocomplete, the jQuery Autocompleter |
||||
* @author <a href="mailto:dylan@dyve.net">Dylan Verheul</a> |
||||
* @license MIT | GPL | Apache 2.0, see LICENSE.txt |
||||
* @see https://github.com/dyve/jquery-autocomplete |
||||
*/ |
||||
.acResults { |
||||
padding: 0px; |
||||
border: 1px solid WindowFrame; |
||||
background-color: Window; |
||||
overflow: hidden; |
||||
} |
||||
|
||||
.acResults ul { |
||||
margin: 0px; |
||||
padding: 0px; |
||||
list-style-position: outside; |
||||
list-style: none; |
||||
} |
||||
|
||||
.acResults ul li { |
||||
margin: 0px; |
||||
padding: 2px 5px; |
||||
cursor: pointer; |
||||
display: block; |
||||
font: menu; |
||||
font-size: 12px; |
||||
overflow: hidden; |
||||
} |
||||
|
||||
.acLoading { |
||||
background : url('../img/indicator.gif') right center no-repeat; |
||||
} |
||||
|
||||
.acSelect { |
||||
background-color: Highlight; |
||||
color: HighlightText; |
||||
} |
After Width: | Height: | Size: 1.5 KiB |
File diff suppressed because one or more lines are too long
@ -0,0 +1,119 @@
|
||||
/** |
||||
* Ajax Queue Plugin |
||||
* |
||||
* Homepage: http://jquery.com/plugins/project/ajaxqueue
|
||||
* Documentation: http://docs.jquery.com/AjaxQueue
|
||||
*/ |
||||
|
||||
/** |
||||
|
||||
<script> |
||||
$(function(){ |
||||
jQuery.ajaxQueue({ |
||||
url: "test.php", |
||||
success: function(html){ jQuery("ul").append(html); } |
||||
}); |
||||
jQuery.ajaxQueue({ |
||||
url: "test.php", |
||||
success: function(html){ jQuery("ul").append(html); } |
||||
}); |
||||
jQuery.ajaxSync({ |
||||
url: "test.php", |
||||
success: function(html){ jQuery("ul").append("<b>"+html+"</b>"); } |
||||
}); |
||||
jQuery.ajaxSync({ |
||||
url: "test.php", |
||||
success: function(html){ jQuery("ul").append("<b>"+html+"</b>"); } |
||||
}); |
||||
}); |
||||
</script> |
||||
<ul style="position: absolute; top: 5px; right: 5px;"></ul> |
||||
|
||||
*/ |
||||
/* |
||||
* Queued Ajax requests. |
||||
* A new Ajax request won't be started until the previous queued |
||||
* request has finished. |
||||
*/ |
||||
|
||||
/* |
||||
* Synced Ajax requests. |
||||
* The Ajax request will happen as soon as you call this method, but |
||||
* the callbacks (success/error/complete) won't fire until all previous |
||||
* synced requests have been completed. |
||||
*/ |
||||
|
||||
|
||||
(function(jQuery) { |
||||
|
||||
var ajax = jQuery.ajax; |
||||
|
||||
var pendingRequests = {}; |
||||
|
||||
var synced = []; |
||||
var syncedData = []; |
||||
|
||||
jQuery.ajax = function(settings) { |
||||
// create settings for compatibility with ajaxSetup
|
||||
settings = jQuery.extend(settings, jQuery.extend({}, jQuery.ajaxSettings, settings)); |
||||
|
||||
var port = settings.port; |
||||
|
||||
switch(settings.mode) { |
||||
case "abort": |
||||
if ( pendingRequests[port] ) { |
||||
pendingRequests[port].abort(); |
||||
} |
||||
return pendingRequests[port] = ajax.apply(this, arguments); |
||||
case "queue": |
||||
var _old = settings.complete; |
||||
settings.complete = function(){ |
||||
if ( _old ) |
||||
_old.apply( this, arguments ); |
||||
jQuery([ajax]).dequeue("ajax" + port );; |
||||
}; |
||||
|
||||
jQuery([ ajax ]).queue("ajax" + port, function(){ |
||||
ajax( settings ); |
||||
}); |
||||
return; |
||||
case "sync": |
||||
var pos = synced.length; |
||||
|
||||
synced[ pos ] = { |
||||
error: settings.error, |
||||
success: settings.success, |
||||
complete: settings.complete, |
||||
done: false |
||||
}; |
||||
|
||||
syncedData[ pos ] = { |
||||
error: [], |
||||
success: [], |
||||
complete: [] |
||||
}; |
||||
|
||||
settings.error = function(){ syncedData[ pos ].error = arguments; }; |
||||
settings.success = function(){ syncedData[ pos ].success = arguments; }; |
||||
settings.complete = function(){ |
||||
syncedData[ pos ].complete = arguments; |
||||
synced[ pos ].done = true; |
||||
|
||||
if ( pos == 0 || !synced[ pos-1 ] ) |
||||
for ( var i = pos; i < synced.length && synced[i].done; i++ ) { |
||||
if ( synced[i].error ) synced[i].error.apply( jQuery, syncedData[i].error ); |
||||
if ( synced[i].success ) synced[i].success.apply( jQuery, syncedData[i].success ); |
||||
if ( synced[i].complete ) synced[i].complete.apply( jQuery, syncedData[i].complete ); |
||||
|
||||
synced[i] = null; |
||||
syncedData[i] = null; |
||||
} |
||||
}; |
||||
} |
||||
return ajax.apply(this, arguments); |
||||
}; |
||||
|
||||
})((typeof window.jQuery == 'undefined' && typeof window.django != 'undefined') |
||||
? django.jQuery |
||||
: jQuery |
||||
); |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,10 @@
|
||||
/* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net) |
||||
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
|
||||
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
|
||||
* |
||||
* $LastChangedDate: 2007-07-22 01:45:56 +0200 (Son, 22 Jul 2007) $ |
||||
* $Rev: 2447 $ |
||||
* |
||||
* Version 2.1.1 |
||||
*/ |
||||
(function($){$.fn.bgIframe=$.fn.bgiframe=function(s){if($.browser.msie&&/6.0/.test(navigator.userAgent)){s=$.extend({top:'auto',left:'auto',width:'auto',height:'auto',opacity:true,src:'javascript:false;'},s||{});var prop=function(n){return n&&n.constructor==Number?n+'px':n;},html='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+'style="display:block;position:absolute;z-index:-1;'+(s.opacity!==false?'filter:Alpha(Opacity=\'0\');':'')+'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+'"/>';return this.each(function(){if($('> iframe.bgiframe',this).length==0)this.insertBefore(document.createElement(html),this.firstChild);});}return this;};})((typeof window.jQuery=='undefined' && typeof window.django!='undefined')? django.jQuery : jQuery); |
@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*- |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import models, migrations |
||||
from django.conf import settings |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('teams', '0003_auto_20150818_0057'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='team', |
||||
name='members', |
||||
field=models.ManyToManyField(related_name='member', to=settings.AUTH_USER_MODEL, blank=True), |
||||
), |
||||
] |
@ -0,0 +1,20 @@
|
||||
{% extends "base.html" %} |
||||
|
||||
{% block page-title %}Team Members{% endblock %} |
||||
|
||||
{% block body-class %}{{ block.super }}{% endblock %} |
||||
|
||||
{% block breadcrumb %} |
||||
<li><a href="/{{ team.user.username }}/">{{ team.user.username }}</a></li> |
||||
<span class="prompt">/</span> <li><a href="/{{ team.user.username }}/members/">Members</a></li> |
||||
{% endblock %} |
||||
|
||||
{% block content %} |
||||
|
||||
{% endblock %} |
||||
|
||||
{% block analytics %} |
||||
{% if not debug %} |
||||
window.ll('tagScreen', 'Team members view'); |
||||
{% endif %} |
||||
{% endblock %} |
@ -0,0 +1,11 @@
|
||||
from django.conf.urls import * |
||||
from teams import views |
||||
|
||||
|
||||
urlpatterns = \ |
||||
patterns('', |
||||
url(r'^for-teams/$', views.for_teams), |
||||
url(r'^for-teams/complete/$', views.for_teams_complete), |
||||
url(r'^(?P<username>[^/]+)/members/$', |
||||
views.team_members, |
||||
name='team-members')) |
@ -1,33 +1,58 @@
|
||||
{% load snipt_tags %} |
||||
|
||||
<div class="profile group"> |
||||
<a href="/{{ user.username }}/"> |
||||
<img src="https://secure.gravatar.com/avatar/{{ user.email|md5 }}?s=300" alt="{{ user.username }}" title="{{ user.username }}" /> |
||||
</a> |
||||
<div class="meta"> |
||||
<div class="username" title="{{ user.username }}"> |
||||
<a href=""> |
||||
{{ user.username }} |
||||
</a> |
||||
</div> |
||||
{% if user.username == 'nick' %} |
||||
<div class="member-since">Snipt Founder in {{ user.date_joined|date:"Y" }}</div> |
||||
{% else %} |
||||
<div class="member-since">Member since {{ user.date_joined|date:"Y" }}</div> |
||||
{% endif %} |
||||
{% if user.profile.get_blog_posts %} |
||||
<div class="urls"> |
||||
Snipt Blog: |
||||
<a href="{{ user.profile.get_user_profile_url }}"> |
||||
{{ user.profile.get_user_profile_url }} |
||||
</a> |
||||
</div> |
||||
{% endif %} |
||||
</div> |
||||
{% if user.profile.is_pro %} |
||||
<a class="pro" href="/pro/">Pro</a> |
||||
{% endif %} |
||||
{% if user.profile.gittip_username %} |
||||
<a class="gittip" href="https://www.gittip.com/{{ user.profile.gittip_username }}/">Tip</a> |
||||
{% endif %} |
||||
</div> |
||||
{% if user.profile.has_team %} |
||||
<div class="profile group"> |
||||
<a href="/{{ user.username }}/"> |
||||
<img src="https://secure.gravatar.com/avatar/{{ user.email|md5 }}?s=300" alt="{{ user.username }}" title="{{ user.username }}" /> |
||||
</a> |
||||
<div class="meta"> |
||||
<div class="username" title="{{ user.username }}"> |
||||
<a href=""> |
||||
{{ user.username }} |
||||
</a> |
||||
</div> |
||||
<div class="member-since">Team since {{ user.date_joined|date:"Y" }}</div> |
||||
{% if user.profile.get_blog_posts %} |
||||
<div class="urls"> |
||||
Snipt Blog: |
||||
<a href="{{ user.profile.get_user_profile_url }}"> |
||||
{{ user.profile.get_user_profile_url }} |
||||
</a> |
||||
</div> |
||||
{% endif %} |
||||
<div class="member-since">{{ user.team.members.all|length }} member{{ user.team.members.all|pluralize }}</div> |
||||
</div> |
||||
</div> |
||||
{% else %} |
||||
<div class="profile group"> |
||||
<a href="/{{ user.username }}/"> |
||||
<img src="https://secure.gravatar.com/avatar/{{ user.email|md5 }}?s=300" alt="{{ user.username }}" title="{{ user.username }}" /> |
||||
</a> |
||||
<div class="meta"> |
||||
<div class="username" title="{{ user.username }}"> |
||||
<a href=""> |
||||
{{ user.username }} |
||||
</a> |
||||
</div> |
||||
{% if user.username == 'nick' %} |
||||
<div class="member-since">Snipt Founder in {{ user.date_joined|date:"Y" }}</div> |
||||
{% else %} |
||||
<div class="member-since">Member since {{ user.date_joined|date:"Y" }}</div> |
||||
{% endif %} |
||||
{% if user.profile.get_blog_posts %} |
||||
<div class="urls"> |
||||
Snipt Blog: |
||||
<a href="{{ user.profile.get_user_profile_url }}"> |
||||
{{ user.profile.get_user_profile_url }} |
||||
</a> |
||||
</div> |
||||
{% endif %} |
||||
</div> |
||||
{% if user.profile.is_pro %} |
||||
<a class="pro" href="/pro/">Pro</a> |
||||
{% endif %} |
||||
{% if user.profile.gittip_username %} |
||||
<a class="gittip" href="https://www.gittip.com/{{ user.profile.gittip_username }}/">Tip</a> |
||||
{% endif %} |
||||
</div> |
||||
{% endif %} |
||||
|
Loading…
Reference in new issue