Merge branch 'master' into pledge_pretty_stick
Conflicts: frontend/templates/pledge.html static/css/pledge.css static/less/pledge.lesspull/1/head
commit
2bea7e89f4
|
@ -99,7 +99,15 @@
|
|||
"model": "core.badge",
|
||||
"fields": {
|
||||
"name": "pledger",
|
||||
"description": "has made a pledge in at least one ungluing campaign"
|
||||
"description": "a pledger"
|
||||
}
|
||||
},
|
||||
{
|
||||
"pk": 2,
|
||||
"model": "core.badge",
|
||||
"fields": {
|
||||
"name": "pledger2",
|
||||
"description": "a repeat pledger"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -5,6 +5,6 @@ from django.contrib.auth.models import User
|
|||
|
||||
class OwnerLookup(ModelLookup):
|
||||
model = User
|
||||
search_field = 'username__icontains'
|
||||
search_fields = ('username__icontains',)
|
||||
|
||||
registry.register(OwnerLookup)
|
|
@ -0,0 +1,34 @@
|
|||
"""
|
||||
set the 'pledged' badge for people who've pledged
|
||||
"""
|
||||
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.contrib.auth.models import User
|
||||
from regluit.core.models import Badge
|
||||
from regluit.payment.models import Transaction
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = "for people who've pledged, give them a badge!"
|
||||
|
||||
|
||||
def handle(self, **options):
|
||||
pledger= Badge.objects.get(name='pledger')
|
||||
pledger2= Badge.objects.get(name='pledger2')
|
||||
print 'start'
|
||||
print 'pledger badges: %s' % pledger.holders.all().count()
|
||||
print 'pledger2 badges: %s' % pledger2.holders.all().count()
|
||||
pledges=Transaction.objects.exclude(status='NONE').exclude(status='Canceled',reason=None).exclude(anonymous=True)
|
||||
for pledge in pledges:
|
||||
if pledge.user.profile.badges.all().count():
|
||||
if pledge.user.profile.badges.all()[0].id == pledger.id:
|
||||
pledge.user.profile.badges.remove(pledger)
|
||||
pledge.user.profile.badges.add(pledger2)
|
||||
else:
|
||||
pledge.user.profile.badges.add(pledger)
|
||||
print 'end'
|
||||
print 'pledger badges: %s' % pledger.holders.all().count()
|
||||
print 'pledger2 badges: %s' % pledger2.holders.all().count()
|
||||
|
||||
|
||||
|
||||
|
|
@ -957,6 +957,25 @@ class Wishes(models.Model):
|
|||
class Meta:
|
||||
db_table = 'core_wishlist_works'
|
||||
|
||||
class Badge(models.Model):
|
||||
name = models.CharField(max_length=72, blank=True)
|
||||
description = models.TextField(default='', null=True)
|
||||
|
||||
@property
|
||||
def path(self):
|
||||
return '/static/images/%s.png' % self.name
|
||||
|
||||
def pledger():
|
||||
if not pledger.instance:
|
||||
pledger.instance = Badge.objects.get(name='pledger')
|
||||
return pledger.instance
|
||||
pledger.instance=None
|
||||
def pledger2():
|
||||
if not pledger2.instance:
|
||||
pledger2.instance = Badge.objects.get(name='pledger2')
|
||||
return pledger2.instance
|
||||
pledger2.instance=None
|
||||
|
||||
class UserProfile(models.Model):
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
user = models.OneToOneField(User, related_name='profile')
|
||||
|
@ -972,12 +991,23 @@ class UserProfile(models.Model):
|
|||
goodreads_user_name = models.CharField(max_length=200, null=True, blank=True)
|
||||
goodreads_auth_token = models.TextField(null=True, blank=True)
|
||||
goodreads_auth_secret = models.TextField(null=True, blank=True)
|
||||
goodreads_user_link = models.CharField(max_length=200, null=True, blank=True)
|
||||
|
||||
class Badge(models.Model):
|
||||
name = models.CharField(max_length=72, blank=True)
|
||||
description = models.TextField(default='', null=True)
|
||||
goodreads_user_link = models.CharField(max_length=200, null=True, blank=True)
|
||||
|
||||
def reset_pledge_badge(self):
|
||||
#count user pledges
|
||||
n_pledges = self.pledge_count
|
||||
if self.badges.exists():
|
||||
self.badges.remove(pledger())
|
||||
self.badges.remove(pledger2())
|
||||
if n_pledges == 1:
|
||||
self.badges.add(pledger())
|
||||
elif n_pledges > 1:
|
||||
self.badges.add(pledger2())
|
||||
|
||||
@property
|
||||
def pledge_count(self):
|
||||
return self.user.transaction_set.exclude(status='NONE').exclude(status='Canceled',reason=None).exclude(anonymous=True).count()
|
||||
|
||||
#class CampaignSurveyResponse(models.Model):
|
||||
# # generic
|
||||
# campaign = models.ForeignKey("Campaign", related_name="surveyresponse", null=False)
|
||||
|
|
|
@ -177,6 +177,8 @@ def handle_pledge_modified(sender, transaction=None, up_or_down=None, **kwargs):
|
|||
# up_or_down is 'increased', 'decreased', or 'canceled'
|
||||
if transaction==None or up_or_down==None:
|
||||
return
|
||||
if up_or_down == 'canceled':
|
||||
transaction.user.profile.reset_pledge_badge()
|
||||
notification.queue([transaction.user], "pledge_status_change", {
|
||||
'site':Site.objects.get_current(),
|
||||
'transaction': transaction,
|
||||
|
@ -190,6 +192,11 @@ pledge_modified.connect(handle_pledge_modified)
|
|||
def handle_you_have_pledged(sender, transaction=None, **kwargs):
|
||||
if transaction==None:
|
||||
return
|
||||
|
||||
#give user a badge
|
||||
if not transaction.anonymous:
|
||||
transaction.user.profile.reset_pledge_badge()
|
||||
|
||||
notification.queue([transaction.user], "pledge_you_have_pledged", {
|
||||
'site':Site.objects.get_current(),
|
||||
'transaction': transaction
|
||||
|
|
|
@ -307,7 +307,7 @@ class CampaignPledgeForm(forms.Form):
|
|||
decimal_places=2,
|
||||
label="Pledge Amount",
|
||||
)
|
||||
anonymous = forms.BooleanField(required=False, label=_("Don't display my name in the acknowledgements"))
|
||||
anonymous = forms.BooleanField(required=False, label=_("Make this pledge anonymous, please"))
|
||||
ack_name = forms.CharField(required=False, max_length=64, label=_("What name should we display?"))
|
||||
ack_dedication = forms.CharField(required=False, max_length=140, label=_("Your dedication:"))
|
||||
|
||||
|
|
|
@ -214,13 +214,14 @@ Please fix the following before launching your campaign:
|
|||
|
||||
<p>{{ form.paypal_receiver.errors }}{{ form.paypal_receiver }}</p>
|
||||
|
||||
{% if not is_preview or request.user.is_staff %}
|
||||
{% ifequal campaign_status 'ACTIVE' %}
|
||||
{% ifequal campaign_status 'ACTIVE' %}
|
||||
<div class="yikes">When you click this button, your changes will be visible to supporters immediately. Make sure to proofread!</div><br />
|
||||
<input type="submit" name="save" value="Modify Campaign" />
|
||||
{% else %}
|
||||
{% else %}
|
||||
<br /><br /><input type="submit" name="save" value="Save Campaign" />
|
||||
{% endifequal %}
|
||||
{% endifequal %}
|
||||
|
||||
{% if not is_preview or request.user.is_staff %}
|
||||
{% if campaign_status == 'INITIALIZED' %}
|
||||
<input id="campaign_launcher" type="submit" name="launch" value="Launch Campaign" />
|
||||
{% endif %}
|
||||
|
@ -240,7 +241,6 @@ Please fix the following before launching your campaign:
|
|||
<span class="menu-item-price">${{ premium.amount|intcomma }}</span>
|
||||
<span class="menu-item-desc">{{ premium.description }}</span>
|
||||
</i>
|
||||
{% if premium.type %}<span class="custom-premium"> <br />Type: {{ premium.get_type_display }}</span>{% endif %}
|
||||
{% ifnotequal premium.limit 0 %}<br />Limit: {{ premium.limit }}{% endifnotequal %}
|
||||
{% ifequal premium.type 'CU' %}<br />Deactivate? <input type="checkbox" name="premium_id" value="{{ premium.id }}" />{% endifequal %}
|
||||
</li>
|
||||
|
@ -251,9 +251,7 @@ Please fix the following before launching your campaign:
|
|||
{% endif %}
|
||||
</form>
|
||||
</div>
|
||||
<h4>Editing premiums</h4>
|
||||
<p>At this time, you can't edit a premium you've created. But you can deactivate a premium and add a new one to replace it. So be sure to double-check your spelling before adding it.</p>
|
||||
<h4>Add a custom premium for this campaign</h4>
|
||||
<h4>Add a premium for this campaign</h4>
|
||||
<form action="#" method="POST">
|
||||
{% csrf_token %}
|
||||
Pledge Amount: {{ premium_form.amount.errors }}${{ premium_form.amount }}<br />
|
||||
|
@ -264,6 +262,8 @@ Please fix the following before launching your campaign:
|
|||
<br />
|
||||
<input type="submit" name="add_premium" value="Add Premium" />
|
||||
</form>
|
||||
<h4>Editing premiums</h4>
|
||||
<p>At this time, you can't edit a premium you've created. But you can deactivate a premium and add a new one to replace it. So be sure to double-check your spelling before adding it.</p>
|
||||
</div>
|
||||
|
||||
{% ifequal campaign_status 'INITIALIZED' %}
|
||||
|
|
|
@ -109,11 +109,12 @@
|
|||
<div class="pledge_amount clearfix" id="mandatory_premiums">
|
||||
<div>Depending on your pledge amount, you'll also get these acknowledgements.</div>
|
||||
<div class="ack_active"><div class="ack_level">Any amount</div><div class="ack_header">The unglued ebook will be delivered to your inbox.</div></div>
|
||||
<div id="ack_name" class="ack_inactive"><div class="ack_level">$25+</div><div class="ack_header">You'll be listed on the acknowledgements page of the unglued ebook<span id="ack_section"></span>. {{ form.ack_name.label_tag }} {{ form.ack_name.errors }}{{ form.ack_name }}<div id="anonbox"><I>{{ form.anonymous.label_tag }}</I> {{ form.anonymous.errors }}{{ form.anonymous }}</div></div></div>
|
||||
<div id="ack_name" class="ack_inactive"><div class="ack_level">$25+</div><div class="ack_header">You'll be listed on the acknowledgements page of the unglued ebook<span id="ack_section"></span>. {{ form.ack_name.label_tag }} {{ form.ack_name.errors }}{{ form.ack_name }}</div></div>
|
||||
<div id="ack_link" class="ack_inactive"><div class="ack_level">$50+</div><div class="ack_header">Your acknowledgement will link to your Unglue.it supporter page.{{ form.ack_link }}</div></div>
|
||||
<div id="ack_dedication" class="ack_inactive"><div class="ack_level">$100+</div><div class="ack_header">Your acknowledgement can include a dedication (140 characters max). {{ form.ack_dedication.label_tag }} {{ form.ack_dedication.errors }}{{ form.ack_dedication }}</div></div>
|
||||
</div>
|
||||
<input name="pledge" type="submit" {% if faqmenu == 'modify' %}value="Modify Support"{% else %}value="Unglue it!"{% endif %} id="pledgesubmit" />
|
||||
<div id="anonbox"><I>{{ form.anonymous.label_tag }}</I> {{ form.anonymous.errors }}{{ form.anonymous }}</div>
|
||||
<input name="pledge" type="submit" {% if faqmenu == 'modify' %}value="Modify Pledge"{% else %}value="Pledge Now"{% endif %} id="pledgesubmit" />
|
||||
<input name="decoy" type="submit" id="fakepledgesubmit" disabled="disabled" />
|
||||
{% comment %}
|
||||
When the pledge amount and premium are in an inconsistent state, the real button is disabled and (via css) hidden; instead we display this fake button with a helpful message. It's a button so we can reuse all the existing CSS for buttons, so that it looks like the real button has just changed in appearance. It's hidden and the other one un-disabled and un-hidden when the pledge & premium return to a correct state. People without javascript enabled will miss out on the front-end corrections but form validation will catch it.
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
{% block title %}Tools for Rightsholders {% endblock %}
|
||||
{% block extra_extra_head %}
|
||||
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/themes/ui-lightness/jquery-ui.css" type="text/css" media="screen">
|
||||
<link href="/static/css/dj.selectable.css" type="text/css" media="all" rel="stylesheet" />
|
||||
<link href="/static/selectable/css/dj.selectable.css" type="text/css" media="all" rel="stylesheet" />
|
||||
<script type="text/javascript" src="{{ jquery_home }}"></script>
|
||||
<script type="text/javascript" src="{{ jquery_ui_home }}"></script>
|
||||
<script type="text/javascript" src="/static/js/jquery.dj.selectable.js"></script>
|
||||
<script type="text/javascript" src="/static/selectable/js/jquery.dj.selectable.js"></script>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -22,8 +22,7 @@
|
|||
var $j = jQuery.noConflict();
|
||||
$j(document).ready(function(){
|
||||
$j('#user-block-hide').hide();
|
||||
$j('#user-block1 span').click(function() {
|
||||
$j(this).toggleClass("active");
|
||||
$j('#edit_profile').click(function() {
|
||||
$j("#user-block-hide").slideToggle(300);
|
||||
});
|
||||
});
|
||||
|
@ -66,8 +65,6 @@ function highlightTarget(targetdiv) {
|
|||
{% comment %}
|
||||
To do:
|
||||
create topsection file for inclusion in multiple contexts, if needed
|
||||
figure out how to configure date display
|
||||
decide if we're even including date joined in profile
|
||||
Goodreads
|
||||
be sure words display correctlydja
|
||||
do I need both add-wishlist and remove-wishlist classes? do they differ?
|
||||
|
@ -91,46 +88,51 @@ there's no tab for seeing ALL my books, only the filters! huh.
|
|||
<div class="js-topnews2">
|
||||
<div class="js-topnews3">
|
||||
<div class="user-block">
|
||||
{% ifequal supporter request.user %}
|
||||
<div id="user-block1">
|
||||
<div class="block-inner">
|
||||
<span class="my-setting">My Profile</span>
|
||||
</div>
|
||||
<div class="block-inner">
|
||||
{% if supporter.profile.pic_url %}
|
||||
<img class="user-avatar" src="{{ supporter.profile.pic_url }}" height="50" width="50" alt="Picture of {{ supporter }}" title="{{ supporter }}" />
|
||||
{% else %}
|
||||
<img class="user-avatar" src="/static/images/header/avatar.png" height="50" width="50" alt="Generic Ungluer Avatar" title="Ungluer" />
|
||||
{% endif %}
|
||||
<span class="user-name">
|
||||
<a href="#">{{ supporter.username }}</a>
|
||||
</span>
|
||||
</div>
|
||||
<span class="user-badges">
|
||||
{% if supporter.profile.badges.all %}
|
||||
{% for badge in supporter.profile.badges.all %}
|
||||
<img src="{{ badge.path }}" alt="{{ badge.description }}" title="{{ badge.description }}" width="26px" height="26px" class="{{ badge.name }}" />
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="user-block2">
|
||||
{% if supporter.profile.pic_url %}
|
||||
<img class="user-avatar" src="{{ supporter.profile.pic_url }}" height="50" width="50" alt="Picture of {{ supporter }}" title="{{ supporter }}" />
|
||||
{% else %}
|
||||
<img class="user-avatar" src="/static/images/header/avatar.png" height="50" width="50" alt="Generic Ungluer Avatar" title="Ungluer" />
|
||||
{% endif %}
|
||||
<span class="user-name"><a href="#">{{ supporter.username|truncatechars:20 }}</a></span>
|
||||
<span class="user-date">{{ date }}</span>
|
||||
<span class="user-short-info">{{ supporter.profile.tagline }}</span>
|
||||
<span class="user-short-info">
|
||||
{% with supporter.profile.tagline as tagline %}{% if tagline %}{{ tagline }}{% else %} {% endif %}{% endwith %}
|
||||
</span>
|
||||
</div>
|
||||
{% else %}
|
||||
<div id="user-block1">
|
||||
<div class="block-inner">
|
||||
{% if supporter.profile.pic_url %}
|
||||
<img class="user-avatar" src="{{ supporter.profile.pic_url }}" height="50" width="50" alt="Picture of {{ supporter }}" title="{{ supporter }}" />
|
||||
{% else %}
|
||||
<img class="user-avatar" src="/static/images/header/avatar.png" height="50" width="50" alt="Generic Ungluer Avatar" title="Ungluer" />
|
||||
{% endif %}
|
||||
<span class="user-name"><a href="#">{{ supporter.username }}</a></span>
|
||||
<span class="user-date">{{ date }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="user-block2">
|
||||
<span class="user-short-info">{% with supporter.profile.tagline as tagline %}{% if tagline %}{{ tagline }}{% else %} {% endif %}{% endwith %}</span>
|
||||
</div>
|
||||
{% endifequal %}
|
||||
|
||||
<div class="user-block3">
|
||||
<div class="badges">
|
||||
<span class="rounded"><span class="blue tabs1" {% ifequal request.user supporter %}title="I've unglued {{ backed }} {% if backed == 1 %}book{% else %}books{% endif %}."{% else %}title="{{ supporter }} has unglued {{ backed }} {% if backed == 1 %}book{% else %}books{% endif %}."{% endifequal %}><span class="hovertext">I've unglued </span>{{ backed }}</span></span>
|
||||
<span class="rounded"><span class="orange tabs2" {% ifequal request.user supporter %}title="I'm supporting {{ backing }} {% if backing == 1 %}book{% else %}books{% endif %}."{% else %}title="{{ supporter }} is supporting {{ backing }} {% if backing == 1 %}book{% else %}books{% endif %}."{% endifequal %}><span class="hovertext">I'm ungluing </span>{{ backing }}</span></span>
|
||||
<span class="rounded"><span class="grey tabs3" {% ifequal request.user supporter %}title="I'm wishing for {{ wished }} {% if wished == 1 %}book{% else %}books{% endif %}."{% else %}title="{{ supporter }} is wishing for {{ wished }} {% if wished == 1 %}book{% else %}books{% endif %}."{% endifequal %}><span class="hovertext">I'm wishing for </span>{{ wished }}</span></span>
|
||||
{% ifequal request.user supporter %}
|
||||
<span class="rounded"><span class="blue tabs1" title="I've unglued {{ backed }} {% if backed == 1 %}book{% else %}books{% endif %}."><span class="hovertext">I've unglued </span>{{ backed }}</span></span>
|
||||
<span class="rounded"><span class="orange tabs2" title="I'm supporting {{ backing }} {% if backing == 1 %}book{% else %}books{% endif %}."><span class="hovertext">I'm ungluing </span>{{ backing }}</span></span>
|
||||
<span class="rounded"><span class="grey tabs3" title="I'm wishing for {{ wished }} {% if wished == 1 %}book{% else %}books{% endif %}."><span class="hovertext">I'm wishing for </span>{{ wished }}</span></span>
|
||||
{% else %}
|
||||
<span class="rounded"><span class="blue tabs1" title="{{ supporter }} has unglued {{ backed }} {% if backed == 1 %}book{% else %}books{% endif %}."><span class="hovertext">has unglued </span>{{ backed }}</span></span>
|
||||
<span class="rounded"><span class="orange tabs2" title="{{ supporter }} is supporting {{ backing }} {% if backing == 1 %}book{% else %}books{% endif %}."><span class="hovertext">is ungluing </span>{{ backing }}</span></span>
|
||||
<span class="rounded"><span class="grey tabs3" title="{{ supporter }} is wishing for {{ wished }} {% if wished == 1 %}book{% else %}books{% endif %}."><span class="hovertext">is wishing for </span>{{ wished }}</span></span>
|
||||
{% endifequal %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="user-block4">
|
||||
{% ifequal request.user supporter %}
|
||||
<div id="edit_profile">
|
||||
<img src="/static/images/header/icon-edit.png" alt="Edit Your Profile" title="Edit Your Profile" />
|
||||
</div>
|
||||
{% endifequal %}
|
||||
<div class="social">
|
||||
{% if supporter.profile.home_url %}
|
||||
<a href="{{ supporter.profile.home_url }}" class="nounderline">
|
||||
|
|
|
@ -422,7 +422,7 @@ def manage_campaign(request, id):
|
|||
'form':form,
|
||||
'problems': campaign.problems,
|
||||
'alerts': alerts,
|
||||
'premiums' : campaign.effective_premiums(),
|
||||
'premiums' : campaign.custom_premiums(),
|
||||
'premium_form' : new_premium_form,
|
||||
'work': work,
|
||||
'activetab': activetab,
|
||||
|
@ -1350,8 +1350,6 @@ def supporter(request, supporter_username, template_name):
|
|||
else:
|
||||
activetab = "#3"
|
||||
|
||||
date = supporter.date_joined.strftime("%B %d, %Y")
|
||||
|
||||
# following block to support profile admin form in supporter page
|
||||
if request.user.is_authenticated() and request.user.username == supporter_username:
|
||||
|
||||
|
@ -1407,7 +1405,6 @@ def supporter(request, supporter_username, template_name):
|
|||
"backed": backed,
|
||||
"backing": backing,
|
||||
"wished": wished,
|
||||
"date": date,
|
||||
"profile_form": profile_form,
|
||||
"ungluers": userlists.other_users(supporter, 5 ),
|
||||
"goodreads_auth_url": reverse('goodreads_auth'),
|
||||
|
|
|
@ -351,6 +351,10 @@ class TransactionTest(TestCase):
|
|||
t.user = user
|
||||
t.save()
|
||||
|
||||
#test pledge adders
|
||||
user.profile.reset_pledge_badge()
|
||||
self.assertEqual(user.profile.badges.all()[0].name,'pledger')
|
||||
|
||||
p = PaymentManager()
|
||||
results = p.query_campaign(c,campaign_total=True, summary=False)
|
||||
self.assertEqual(results[0].amount, D('12.34'))
|
||||
|
|
|
@ -33,6 +33,12 @@ CKEDITOR_RESTRICT_BY_USER = True
|
|||
CKEDITOR_CONFIGS = {
|
||||
'default': {
|
||||
'width': 700,
|
||||
'toolbar': [
|
||||
['Cut','Copy','Paste', 'PasteFromWord', '-', 'Undo', 'Redo', '-', 'Source'],
|
||||
['Bold', 'Italic', '-', 'NumberedList','BulletedList', '-','Blockquote'],
|
||||
['Find','Replace','-', 'Scayt'],
|
||||
['Link', 'Unlink', '-', 'Image', 'HorizontalRule']
|
||||
],
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -286,4 +292,4 @@ MAINTENANCE_IGNORE_URLS = {}
|
|||
class NONPROFIT:
|
||||
is_on = True
|
||||
name = 'Library Renewal'
|
||||
link = 'http://127.0.0.1:8000/donate_to_campaign/'
|
||||
link = 'http://127.0.0.1:8000/donate_to_campaign/'
|
||||
|
|
|
@ -213,6 +213,7 @@ span.menu-item-price {
|
|||
border: none;
|
||||
cursor: default;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
.fund_options a.fakeinput {
|
||||
font-size: 19px;
|
||||
margin: 10px auto;
|
||||
|
@ -288,4 +289,12 @@ span.level2.menu.answer {
|
|||
}
|
||||
span.level2.menu.answer a {
|
||||
font-size: 15px;
|
||||
=======
|
||||
#anonbox {
|
||||
margin-top: 10px;
|
||||
background: #edf3f4;
|
||||
float: left;
|
||||
width: 48%;
|
||||
padding: 1%;
|
||||
>>>>>>> master
|
||||
}
|
||||
|
|
|
@ -154,6 +154,7 @@
|
|||
#user-block1 {
|
||||
float: left;
|
||||
width: 25%;
|
||||
position: relative;
|
||||
}
|
||||
.user-block2 {
|
||||
color: #6994a3;
|
||||
|
@ -195,9 +196,34 @@ img.user-avatar {
|
|||
-webkit-border-radius: 7px;
|
||||
border-radius: 7px;
|
||||
}
|
||||
.user-badges {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 60px;
|
||||
}
|
||||
.user-badges img {
|
||||
vertical-align: text-bottom;
|
||||
border: 1px solid #D4D4D4;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.social {
|
||||
width: 100%;
|
||||
}
|
||||
#edit_profile {
|
||||
float: right;
|
||||
margin-top: -12px;
|
||||
margin-right: -5px;
|
||||
border: 2px solid white;
|
||||
padding: 3px 2px 2px 3px;
|
||||
}
|
||||
#edit_profile:hover {
|
||||
border: 2px solid #8dc63f;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
span.special-user-name {
|
||||
display: block;
|
||||
font-size: 19px;
|
||||
|
@ -207,7 +233,6 @@ span.special-user-name {
|
|||
height: 50px;
|
||||
}
|
||||
span.user-name,
|
||||
span.user-date,
|
||||
span.user-short-info {
|
||||
display: block;
|
||||
}
|
||||
|
@ -313,10 +338,10 @@ span.my-setting {
|
|||
-moz-border-radius: 7px;
|
||||
-webkit-border-radius: 7px;
|
||||
border-radius: 7px;
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
display: block;
|
||||
padding: 0 0 0 10px;
|
||||
padding: 0 0 10px 10px;
|
||||
font-size: 19px;
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
|
@ -235,4 +235,11 @@ span.level2.menu.answer {
|
|||
a {
|
||||
font-size: @font-size-larger;
|
||||
}
|
||||
|
||||
#anonbox {
|
||||
margin-top: 10px;
|
||||
background: @pale-blue;
|
||||
float: left;
|
||||
width: 48%;
|
||||
padding: 1%;
|
||||
}
|
|
@ -77,6 +77,7 @@
|
|||
#user-block1 {
|
||||
float:left;
|
||||
width:25%;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.user-block2 {
|
||||
|
@ -121,10 +122,35 @@ img.user-avatar {
|
|||
.one-border-radius(7px);
|
||||
}
|
||||
|
||||
.user-badges {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 60px;
|
||||
|
||||
img {
|
||||
vertical-align:text-bottom;
|
||||
border:1px solid #d4d4d4;
|
||||
.one-border-radius(5px);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.social {
|
||||
width:100%;
|
||||
}
|
||||
|
||||
#edit_profile {
|
||||
float: right;
|
||||
margin-top: -12px;
|
||||
margin-right: -5px;
|
||||
border: 2px solid white;
|
||||
padding: 3px 2px 2px 3px;
|
||||
|
||||
&:hover {
|
||||
border: 2px solid @call-to-action;
|
||||
.one-border-radius(5px);
|
||||
}
|
||||
}
|
||||
span.special-user-name {
|
||||
display: block;
|
||||
font-size: @font-size-header;
|
||||
|
@ -135,7 +161,6 @@ span.special-user-name {
|
|||
}
|
||||
|
||||
span.user-name,
|
||||
span.user-date,
|
||||
span.user-short-info {
|
||||
display: block;
|
||||
}
|
||||
|
@ -234,9 +259,9 @@ input.profile-save {
|
|||
span.my-setting {
|
||||
background:@blue-grey url("@{image-base}header/explane.png") 90% center no-repeat;
|
||||
.one-border-radius(7px);
|
||||
.height(50px);
|
||||
.height(40px);
|
||||
display:block;
|
||||
padding:0 0 0 10px;
|
||||
padding:0 0 10px 10px;
|
||||
font-size: @font-size-header;
|
||||
font-weight: bold;
|
||||
cursor:pointer;
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
@bright-blue: #8ac3d7;
|
||||
@alert: #e35351;
|
||||
@orange: #e18551;
|
||||
@yellow: #efd45e;
|
||||
@image-base: "/static/images/";
|
||||
@background-header: "@{image-base}bg.png";
|
||||
@background-body: "@{image-base}bg-body.png";
|
||||
|
|
Loading…
Reference in New Issue