Merge pull request #954 from MITx/feature/cale/fixing-tests
Feature/cale/fixing tests
This commit is contained in:
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -1,3 +0,0 @@
|
||||
[submodule "askbot"]
|
||||
path = askbot
|
||||
url = git@github.com:MITx/askbot-devel.git
|
||||
|
||||
1
askbot
1
askbot
Submodule askbot deleted from e56ae38084
@@ -36,7 +36,6 @@ from xmodule.modulestore.exceptions import ItemNotFoundError
|
||||
from xmodule.x_module import ModuleSystem
|
||||
from xmodule.error_module import ErrorDescriptor
|
||||
from xmodule.errortracker import exc_info_to_str
|
||||
from github_sync import export_to_github
|
||||
from static_replace import replace_urls
|
||||
from external_auth.views import ssl_login_shortcut
|
||||
|
||||
@@ -110,8 +109,14 @@ def index(request):
|
||||
"""
|
||||
courses = modulestore().get_items(['i4x', None, None, 'course', None])
|
||||
|
||||
# filter out courses that we don't have access to
|
||||
courses = filter(lambda course: has_access(request.user, course.location) and course.location.course != 'templates' and course.location.org!='' and course.location.course!='' and course.location.name!='', courses)
|
||||
# filter out courses that we don't have access too
|
||||
def course_filter(course):
|
||||
return (has_access(request.user, course.location)
|
||||
and course.location.course != 'templates'
|
||||
and course.location.org != ''
|
||||
and course.location.course != ''
|
||||
and course.location.name != '')
|
||||
courses = filter(course_filter, courses)
|
||||
|
||||
return render_to_response('index.html', {
|
||||
'new_course_template' : Location('i4x', 'edx', 'templates', 'course', 'Empty'),
|
||||
|
||||
@@ -1,125 +0,0 @@
|
||||
import logging
|
||||
import os
|
||||
|
||||
from django.conf import settings
|
||||
from fs.osfs import OSFS
|
||||
from git import Repo, PushInfo
|
||||
|
||||
from xmodule.modulestore.xml_importer import import_from_xml
|
||||
from xmodule.modulestore.django import modulestore
|
||||
from collections import namedtuple
|
||||
|
||||
from .exceptions import GithubSyncError, InvalidRepo
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
RepoSettings = namedtuple('RepoSettings', 'path branch origin')
|
||||
|
||||
|
||||
def sync_all_with_github():
|
||||
"""
|
||||
Sync all defined repositories from github
|
||||
"""
|
||||
for repo_name in settings.REPOS:
|
||||
sync_with_github(load_repo_settings(repo_name))
|
||||
|
||||
|
||||
def sync_with_github(repo_settings):
|
||||
"""
|
||||
Sync specified repository from github
|
||||
|
||||
repo_settings: A RepoSettings defining which repo to sync
|
||||
"""
|
||||
revision, course = import_from_github(repo_settings)
|
||||
export_to_github(course, "Changes from cms import of revision %s" % revision, "CMS <cms@edx.org>")
|
||||
|
||||
|
||||
def setup_repo(repo_settings):
|
||||
"""
|
||||
Reset the local github repo specified by repo_settings
|
||||
|
||||
repo_settings (RepoSettings): The settings for the repo to reset
|
||||
"""
|
||||
course_dir = repo_settings.path
|
||||
repo_path = settings.GITHUB_REPO_ROOT / course_dir
|
||||
|
||||
if not os.path.isdir(repo_path):
|
||||
Repo.clone_from(repo_settings.origin, repo_path)
|
||||
|
||||
git_repo = Repo(repo_path)
|
||||
origin = git_repo.remotes.origin
|
||||
origin.fetch()
|
||||
|
||||
# Do a hard reset to the remote branch so that we have a clean import
|
||||
git_repo.git.checkout(repo_settings.branch)
|
||||
|
||||
return git_repo
|
||||
|
||||
|
||||
def load_repo_settings(course_dir):
|
||||
"""
|
||||
Returns the repo_settings for the course stored in course_dir
|
||||
"""
|
||||
if course_dir not in settings.REPOS:
|
||||
raise InvalidRepo(course_dir)
|
||||
|
||||
return RepoSettings(course_dir, **settings.REPOS[course_dir])
|
||||
|
||||
|
||||
def import_from_github(repo_settings):
|
||||
"""
|
||||
Imports data into the modulestore based on the XML stored on github
|
||||
"""
|
||||
course_dir = repo_settings.path
|
||||
git_repo = setup_repo(repo_settings)
|
||||
git_repo.head.reset('origin/%s' % repo_settings.branch, index=True, working_tree=True)
|
||||
|
||||
module_store = import_from_xml(modulestore(),
|
||||
settings.GITHUB_REPO_ROOT, course_dirs=[course_dir])
|
||||
return git_repo.head.commit.hexsha, module_store.courses[course_dir]
|
||||
|
||||
|
||||
def export_to_github(course, commit_message, author_str=None):
|
||||
'''
|
||||
Commit any changes to the specified course with given commit message,
|
||||
and push to github (if MITX_FEATURES['GITHUB_PUSH'] is True).
|
||||
If author_str is specified, uses it in the commit.
|
||||
'''
|
||||
course_dir = course.metadata.get('data_dir', course.location.course)
|
||||
try:
|
||||
repo_settings = load_repo_settings(course_dir)
|
||||
except InvalidRepo:
|
||||
log.warning("Invalid repo {0}, not exporting data to xml".format(course_dir))
|
||||
return
|
||||
|
||||
git_repo = setup_repo(repo_settings)
|
||||
|
||||
fs = OSFS(git_repo.working_dir)
|
||||
xml = course.export_to_xml(fs)
|
||||
|
||||
with fs.open('course.xml', 'w') as course_xml:
|
||||
course_xml.write(xml)
|
||||
|
||||
if git_repo.is_dirty():
|
||||
git_repo.git.add(A=True)
|
||||
if author_str is not None:
|
||||
git_repo.git.commit(m=commit_message, author=author_str)
|
||||
else:
|
||||
git_repo.git.commit(m=commit_message)
|
||||
|
||||
origin = git_repo.remotes.origin
|
||||
if settings.MITX_FEATURES['GITHUB_PUSH']:
|
||||
push_infos = origin.push()
|
||||
if len(push_infos) > 1:
|
||||
log.error('Unexpectedly pushed multiple heads: {infos}'.format(
|
||||
infos="\n".join(str(info.summary) for info in push_infos)
|
||||
))
|
||||
|
||||
if push_infos[0].flags & PushInfo.ERROR:
|
||||
log.error('Failed push: flags={p.flags}, local_ref={p.local_ref}, '
|
||||
'remote_ref_string={p.remote_ref_string}, '
|
||||
'remote_ref={p.remote_ref}, old_commit={p.old_commit}, '
|
||||
'summary={p.summary})'.format(p=push_infos[0]))
|
||||
raise GithubSyncError('Failed to push: {info}'.format(
|
||||
info=str(push_infos[0].summary)
|
||||
))
|
||||
@@ -1,6 +0,0 @@
|
||||
class GithubSyncError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class InvalidRepo(Exception):
|
||||
pass
|
||||
@@ -1,14 +0,0 @@
|
||||
###
|
||||
### Script for syncing CMS with defined github repos
|
||||
###
|
||||
|
||||
from django.core.management.base import NoArgsCommand
|
||||
from github_sync import sync_all_with_github
|
||||
|
||||
|
||||
class Command(NoArgsCommand):
|
||||
help = \
|
||||
'''Sync the CMS with the defined github repos'''
|
||||
|
||||
def handle_noargs(self, **options):
|
||||
sync_all_with_github()
|
||||
@@ -1,108 +0,0 @@
|
||||
from django.test import TestCase
|
||||
from path import path
|
||||
import shutil
|
||||
from github_sync import (
|
||||
import_from_github, export_to_github, load_repo_settings,
|
||||
sync_all_with_github, sync_with_github
|
||||
)
|
||||
from git import Repo
|
||||
from django.conf import settings
|
||||
from xmodule.modulestore.django import modulestore
|
||||
from xmodule.modulestore import Location
|
||||
from override_settings import override_settings
|
||||
from github_sync.exceptions import GithubSyncError
|
||||
from mock import patch, Mock
|
||||
|
||||
REPO_DIR = settings.GITHUB_REPO_ROOT / 'local_repo'
|
||||
WORKING_DIR = path(settings.TEST_ROOT)
|
||||
REMOTE_DIR = WORKING_DIR / 'remote_repo'
|
||||
|
||||
|
||||
@override_settings(REPOS={
|
||||
'local_repo': {
|
||||
'origin': REMOTE_DIR,
|
||||
'branch': 'master',
|
||||
}
|
||||
})
|
||||
class GithubSyncTestCase(TestCase):
|
||||
|
||||
def cleanup(self):
|
||||
shutil.rmtree(REPO_DIR, ignore_errors=True)
|
||||
shutil.rmtree(REMOTE_DIR, ignore_errors=True)
|
||||
modulestore().collection.drop()
|
||||
|
||||
def setUp(self):
|
||||
# make sure there's no stale data lying around
|
||||
self.cleanup()
|
||||
|
||||
shutil.copytree('common/test/data/toy', REMOTE_DIR)
|
||||
|
||||
remote = Repo.init(REMOTE_DIR)
|
||||
remote.git.add(A=True)
|
||||
remote.git.commit(m='Initial commit')
|
||||
remote.git.config("receive.denyCurrentBranch", "ignore")
|
||||
|
||||
self.import_revision, self.import_course = import_from_github(load_repo_settings('local_repo'))
|
||||
|
||||
def tearDown(self):
|
||||
self.cleanup()
|
||||
|
||||
def test_initialize_repo(self):
|
||||
"""
|
||||
Test that importing from github will create a repo if the repo doesn't already exist
|
||||
"""
|
||||
self.assertEquals(1, len(Repo(REPO_DIR).head.reference.log()))
|
||||
|
||||
def test_import_contents(self):
|
||||
"""
|
||||
Test that the import loads the correct course into the modulestore
|
||||
"""
|
||||
self.assertEquals('Toy Course', self.import_course.metadata['display_name'])
|
||||
self.assertIn(
|
||||
Location('i4x://edX/toy/chapter/Overview'),
|
||||
[child.location for child in self.import_course.get_children()])
|
||||
self.assertEquals(2, len(self.import_course.get_children()))
|
||||
|
||||
@patch('github_sync.sync_with_github')
|
||||
def test_sync_all_with_github(self, sync_with_github):
|
||||
sync_all_with_github()
|
||||
sync_with_github.assert_called_with(load_repo_settings('local_repo'))
|
||||
|
||||
def test_sync_with_github(self):
|
||||
with patch('github_sync.import_from_github', Mock(return_value=(Mock(), Mock()))) as import_from_github:
|
||||
with patch('github_sync.export_to_github') as export_to_github:
|
||||
settings = load_repo_settings('local_repo')
|
||||
sync_with_github(settings)
|
||||
import_from_github.assert_called_with(settings)
|
||||
export_to_github.assert_called
|
||||
|
||||
@override_settings(MITX_FEATURES={'GITHUB_PUSH': False})
|
||||
def test_export_no_pash(self):
|
||||
"""
|
||||
Test that with the GITHUB_PUSH feature disabled, no content is pushed to the remote
|
||||
"""
|
||||
export_to_github(self.import_course, 'Test no-push')
|
||||
self.assertEquals(1, Repo(REMOTE_DIR).head.commit.count())
|
||||
|
||||
@override_settings(MITX_FEATURES={'GITHUB_PUSH': True})
|
||||
def test_export_push(self):
|
||||
"""
|
||||
Test that with GITHUB_PUSH enabled, content is pushed to the remote
|
||||
"""
|
||||
self.import_course.metadata['display_name'] = 'Changed display name'
|
||||
export_to_github(self.import_course, 'Test push')
|
||||
self.assertEquals(2, Repo(REMOTE_DIR).head.commit.count())
|
||||
|
||||
@override_settings(MITX_FEATURES={'GITHUB_PUSH': True})
|
||||
def test_export_conflict(self):
|
||||
"""
|
||||
Test that if there is a conflict when pushing to the remote repo, nothing is pushed and an exception is raised
|
||||
"""
|
||||
self.import_course.metadata['display_name'] = 'Changed display name'
|
||||
|
||||
remote = Repo(REMOTE_DIR)
|
||||
remote.git.commit(allow_empty=True, m="Testing conflict commit")
|
||||
|
||||
self.assertRaises(GithubSyncError, export_to_github, self.import_course, 'Test push')
|
||||
self.assertEquals(2, remote.head.reference.commit.count())
|
||||
self.assertEquals("Testing conflict commit\n", remote.head.reference.commit.message)
|
||||
@@ -1,43 +0,0 @@
|
||||
import json
|
||||
from django.test.client import Client
|
||||
from django.test import TestCase
|
||||
from mock import patch
|
||||
from override_settings import override_settings
|
||||
from github_sync import load_repo_settings
|
||||
|
||||
|
||||
@override_settings(REPOS={'repo': {'branch': 'branch', 'origin': 'origin'}})
|
||||
class PostReceiveTestCase(TestCase):
|
||||
def setUp(self):
|
||||
self.client = Client()
|
||||
|
||||
@patch('github_sync.views.import_from_github')
|
||||
def test_non_branch(self, import_from_github):
|
||||
self.client.post('/github_service_hook', {'payload': json.dumps({
|
||||
'ref': 'refs/tags/foo'})
|
||||
})
|
||||
self.assertFalse(import_from_github.called)
|
||||
|
||||
@patch('github_sync.views.import_from_github')
|
||||
def test_non_watched_repo(self, import_from_github):
|
||||
self.client.post('/github_service_hook', {'payload': json.dumps({
|
||||
'ref': 'refs/heads/branch',
|
||||
'repository': {'name': 'bad_repo'}})
|
||||
})
|
||||
self.assertFalse(import_from_github.called)
|
||||
|
||||
@patch('github_sync.views.import_from_github')
|
||||
def test_non_tracked_branch(self, import_from_github):
|
||||
self.client.post('/github_service_hook', {'payload': json.dumps({
|
||||
'ref': 'refs/heads/non_branch',
|
||||
'repository': {'name': 'repo'}})
|
||||
})
|
||||
self.assertFalse(import_from_github.called)
|
||||
|
||||
@patch('github_sync.views.import_from_github')
|
||||
def test_tracked_branch(self, import_from_github):
|
||||
self.client.post('/github_service_hook', {'payload': json.dumps({
|
||||
'ref': 'refs/heads/branch',
|
||||
'repository': {'name': 'repo'}})
|
||||
})
|
||||
import_from_github.assert_called_with(load_repo_settings('repo'))
|
||||
@@ -1,51 +0,0 @@
|
||||
import logging
|
||||
import json
|
||||
|
||||
from django.http import HttpResponse
|
||||
from django.conf import settings
|
||||
from django_future.csrf import csrf_exempt
|
||||
|
||||
from . import import_from_github, load_repo_settings
|
||||
|
||||
log = logging.getLogger()
|
||||
|
||||
|
||||
@csrf_exempt
|
||||
def github_post_receive(request):
|
||||
"""
|
||||
This view recieves post-receive requests from github whenever one of
|
||||
the watched repositiories changes.
|
||||
|
||||
It is responsible for updating the relevant local git repo,
|
||||
importing the new version of the course (if anything changed),
|
||||
and then pushing back to github any changes that happened as part of the
|
||||
import.
|
||||
|
||||
The github request format is described here: https://help.github.com/articles/post-receive-hooks
|
||||
"""
|
||||
|
||||
payload = json.loads(request.POST['payload'])
|
||||
|
||||
ref = payload['ref']
|
||||
|
||||
if not ref.startswith('refs/heads/'):
|
||||
log.info('Ignore changes to non-branch ref %s' % ref)
|
||||
return HttpResponse('Ignoring non-branch')
|
||||
|
||||
branch_name = ref.replace('refs/heads/', '', 1)
|
||||
|
||||
repo_name = payload['repository']['name']
|
||||
|
||||
if repo_name not in settings.REPOS:
|
||||
log.info('No repository matching %s found' % repo_name)
|
||||
return HttpResponse('No Repo Found')
|
||||
|
||||
repo = load_repo_settings(repo_name)
|
||||
|
||||
if repo.branch != branch_name:
|
||||
log.info('Ignoring changes to non-tracked branch %s in repo %s' % (branch_name, repo_name))
|
||||
return HttpResponse('Ignoring non-tracked branch')
|
||||
|
||||
import_from_github(repo)
|
||||
|
||||
return HttpResponse('Push received')
|
||||
@@ -284,7 +284,6 @@ INSTALLED_APPS = (
|
||||
# For CMS
|
||||
'contentstore',
|
||||
'auth',
|
||||
'github_sync',
|
||||
'student', # misleading name due to sharing with lms
|
||||
|
||||
# For asset pipelining
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
.ui-icon-circle-triangle-e,
|
||||
.ui-icon-circle-triangle-w {
|
||||
background-image: url(/static/css/vendor/ui-lightness/images/ui-icons_ffffff_256x240.png);
|
||||
background-image: url(../css/vendor/ui-lightness/images/ui-icons_ffffff_256x240.png);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,6 @@ urlpatterns = ('',
|
||||
url(r'^(?P<org>[^/]+)/(?P<course>[^/]+)/import/(?P<name>[^/]+)$',
|
||||
'contentstore.views.import_course', name='import_course'),
|
||||
|
||||
url(r'^github_service_hook$', 'github_sync.views.github_post_receive'),
|
||||
url(r'^preview/modx/(?P<preview_id>[^/]*)/(?P<location>.*?)/(?P<dispatch>[^/]*)$',
|
||||
'contentstore.views.preview_dispatch', name='preview_dispatch'),
|
||||
url(r'^(?P<org>[^/]+)/(?P<course>[^/]+)/course/(?P<coursename>[^/]+)/upload_asset$',
|
||||
|
||||
@@ -11,19 +11,27 @@ from django.contrib.auth.models import Group
|
||||
from xmodule.course_module import CourseDescriptor
|
||||
from xmodule.error_module import ErrorDescriptor
|
||||
from xmodule.modulestore import Location
|
||||
from xmodule.timeparse import parse_time
|
||||
from xmodule.x_module import XModule, XModuleDescriptor
|
||||
|
||||
DEBUG_ACCESS = False
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class CourseContextRequired(Exception):
|
||||
"""
|
||||
Raised when a course_context is required to determine permissions
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
def debug(*args, **kwargs):
|
||||
# to avoid overly verbose output, this is off by default
|
||||
if DEBUG_ACCESS:
|
||||
log.debug(*args, **kwargs)
|
||||
|
||||
def has_access(user, obj, action):
|
||||
|
||||
def has_access(user, obj, action, course_context=None):
|
||||
"""
|
||||
Check whether a user has the access to do action on obj. Handles any magic
|
||||
switching based on various settings.
|
||||
@@ -42,6 +50,10 @@ def has_access(user, obj, action):
|
||||
actions depend on the obj type, but include e.g. 'enroll' for courses. See the
|
||||
type-specific functions below for the known actions for that type.
|
||||
|
||||
course_context: A course_id specifying which course run this access is for.
|
||||
Required when accessing anything other than a CourseDescriptor, 'global',
|
||||
or a location with category 'course'
|
||||
|
||||
Returns a bool. It is up to the caller to actually deny access in a way
|
||||
that makes sense in context.
|
||||
"""
|
||||
@@ -51,27 +63,28 @@ def has_access(user, obj, action):
|
||||
return _has_access_course_desc(user, obj, action)
|
||||
|
||||
if isinstance(obj, ErrorDescriptor):
|
||||
return _has_access_error_desc(user, obj, action)
|
||||
return _has_access_error_desc(user, obj, action, course_context)
|
||||
|
||||
# NOTE: any descriptor access checkers need to go above this
|
||||
if isinstance(obj, XModuleDescriptor):
|
||||
return _has_access_descriptor(user, obj, action)
|
||||
return _has_access_descriptor(user, obj, action, course_context)
|
||||
|
||||
if isinstance(obj, XModule):
|
||||
return _has_access_xmodule(user, obj, action)
|
||||
return _has_access_xmodule(user, obj, action, course_context)
|
||||
|
||||
if isinstance(obj, Location):
|
||||
return _has_access_location(user, obj, action)
|
||||
return _has_access_location(user, obj, action, course_context)
|
||||
|
||||
if isinstance(obj, basestring):
|
||||
return _has_access_string(user, obj, action)
|
||||
return _has_access_string(user, obj, action, course_context)
|
||||
|
||||
# Passing an unknown object here is a coding error, so rather than
|
||||
# returning a default, complain.
|
||||
raise TypeError("Unknown object type in has_access(): '{0}'"
|
||||
.format(type(obj)))
|
||||
|
||||
def get_access_group_name(obj,action):
|
||||
|
||||
def get_access_group_name(obj, action):
|
||||
'''
|
||||
Returns group name for user group which has "action" access to the given object.
|
||||
|
||||
@@ -86,8 +99,8 @@ def get_access_group_name(obj,action):
|
||||
raise TypeError("Unknown object type in get_access_group_name(): '{0}'"
|
||||
.format(type(obj)))
|
||||
|
||||
# ================ Implementation helpers ================================
|
||||
|
||||
# ================ Implementation helpers ================================
|
||||
def _has_access_course_desc(user, course, action):
|
||||
"""
|
||||
Check if user has access to a course descriptor.
|
||||
@@ -159,15 +172,17 @@ def _has_access_course_desc(user, course, action):
|
||||
|
||||
return _dispatch(checkers, action, user, course)
|
||||
|
||||
|
||||
def _get_access_group_name_course_desc(course, action):
|
||||
'''
|
||||
Return name of group which gives staff access to course. Only understands action = 'staff'
|
||||
'''
|
||||
if not action=='staff':
|
||||
if not action == 'staff':
|
||||
return []
|
||||
return _course_staff_group_name(course.location)
|
||||
|
||||
def _has_access_error_desc(user, descriptor, action):
|
||||
|
||||
def _has_access_error_desc(user, descriptor, action, course_context):
|
||||
"""
|
||||
Only staff should see error descriptors.
|
||||
|
||||
@@ -176,7 +191,7 @@ def _has_access_error_desc(user, descriptor, action):
|
||||
'staff' -- staff access to descriptor.
|
||||
"""
|
||||
def check_for_staff():
|
||||
return _has_staff_access_to_descriptor(user, descriptor)
|
||||
return _has_staff_access_to_descriptor(user, descriptor, course_context)
|
||||
|
||||
checkers = {
|
||||
'load': check_for_staff,
|
||||
@@ -186,7 +201,7 @@ def _has_access_error_desc(user, descriptor, action):
|
||||
return _dispatch(checkers, action, user, descriptor)
|
||||
|
||||
|
||||
def _has_access_descriptor(user, descriptor, action):
|
||||
def _has_access_descriptor(user, descriptor, action, course_context=None):
|
||||
"""
|
||||
Check if user has access to this descriptor.
|
||||
|
||||
@@ -218,7 +233,7 @@ def _has_access_descriptor(user, descriptor, action):
|
||||
debug("Allow: now > start date")
|
||||
return True
|
||||
# otherwise, need staff access
|
||||
return _has_staff_access_to_descriptor(user, descriptor)
|
||||
return _has_staff_access_to_descriptor(user, descriptor, course_context)
|
||||
|
||||
# No start date, so can always load.
|
||||
debug("Allow: no start date")
|
||||
@@ -226,13 +241,13 @@ def _has_access_descriptor(user, descriptor, action):
|
||||
|
||||
checkers = {
|
||||
'load': can_load,
|
||||
'staff': lambda: _has_staff_access_to_descriptor(user, descriptor)
|
||||
'staff': lambda: _has_staff_access_to_descriptor(user, descriptor, course_context)
|
||||
}
|
||||
|
||||
return _dispatch(checkers, action, user, descriptor)
|
||||
|
||||
|
||||
def _has_access_xmodule(user, xmodule, action):
|
||||
def _has_access_xmodule(user, xmodule, action, course_context):
|
||||
"""
|
||||
Check if user has access to this xmodule.
|
||||
|
||||
@@ -240,10 +255,10 @@ def _has_access_xmodule(user, xmodule, action):
|
||||
- same as the valid actions for xmodule.descriptor
|
||||
"""
|
||||
# Delegate to the descriptor
|
||||
return has_access(user, xmodule.descriptor, action)
|
||||
return has_access(user, xmodule.descriptor, action, course_context)
|
||||
|
||||
|
||||
def _has_access_location(user, location, action):
|
||||
def _has_access_location(user, location, action, course_context):
|
||||
"""
|
||||
Check if user has access to this location.
|
||||
|
||||
@@ -257,13 +272,13 @@ def _has_access_location(user, location, action):
|
||||
And in general, prefer checking access on loaded items, rather than locations.
|
||||
"""
|
||||
checkers = {
|
||||
'staff': lambda: _has_staff_access_to_location(user, location)
|
||||
'staff': lambda: _has_staff_access_to_location(user, location, course_context)
|
||||
}
|
||||
|
||||
return _dispatch(checkers, action, user, location)
|
||||
|
||||
|
||||
def _has_access_string(user, perm, action):
|
||||
def _has_access_string(user, perm, action, course_context):
|
||||
"""
|
||||
Check if user has certain special access, specified as string. Valid strings:
|
||||
|
||||
@@ -309,15 +324,18 @@ def _dispatch(table, action, user, obj):
|
||||
|
||||
|
||||
def _does_course_group_name_exist(name):
|
||||
return len(Group.objects.filter(name = name)) > 0
|
||||
return len(Group.objects.filter(name=name)) > 0
|
||||
|
||||
def _course_staff_group_name(location):
|
||||
|
||||
def _course_staff_group_name(location, course_context=None):
|
||||
"""
|
||||
Get the name of the staff group for a location. Right now, that's staff_COURSE.
|
||||
Get the name of the staff group for a location in the context of a course run.
|
||||
|
||||
location: something that can passed to Location.
|
||||
|
||||
cdodge: We're changing the name convention of the group to better epxress different runs of courses by
|
||||
location: something that can passed to Location
|
||||
course_context: A course_id that specifies the course run in which the location occurs.
|
||||
Required if location doesn't have category 'course'
|
||||
|
||||
cdodge: We're changing the name convention of the group to better epxress different runs of courses by
|
||||
using course_id rather than just the course number. So first check to see if the group name exists
|
||||
"""
|
||||
loc = Location(location)
|
||||
@@ -325,25 +343,41 @@ def _course_staff_group_name(location):
|
||||
if _does_course_group_name_exist(legacy_name):
|
||||
return legacy_name
|
||||
|
||||
return 'staff_%s' % loc.course_id
|
||||
if loc.category == 'course':
|
||||
course_id = loc.course_id
|
||||
else:
|
||||
if course_context is None:
|
||||
raise CourseContextRequired()
|
||||
course_id = course_context
|
||||
|
||||
return 'staff_%s' % course_id
|
||||
|
||||
|
||||
def _course_instructor_group_name(location):
|
||||
def _course_instructor_group_name(location, course_context=None):
|
||||
"""
|
||||
Get the name of the instructor group for a location. Right now, that's instructor_COURSE.
|
||||
Get the name of the instructor group for a location, in the context of a course run.
|
||||
A course instructor has all staff privileges, but also can manage list of course staff (add, remove, list).
|
||||
|
||||
location: something that can passed to Location.
|
||||
course_context: A course_id that specifies the course run in which the location occurs.
|
||||
Required if location doesn't have category 'course'
|
||||
|
||||
cdodge: We're changing the name convention of the group to better epxress different runs of courses by
|
||||
cdodge: We're changing the name convention of the group to better epxress different runs of courses by
|
||||
using course_id rather than just the course number. So first check to see if the group name exists
|
||||
"""
|
||||
loc = Location(location)
|
||||
legacy_name = 'instructor_%s' % loc.course
|
||||
if _does_course_group_name_exist(legacy_name):
|
||||
return legacy_name
|
||||
|
||||
return 'instructor_%s' % loc.course_id
|
||||
|
||||
if loc.category == 'course':
|
||||
course_id = loc.course_id
|
||||
else:
|
||||
if course_context is None:
|
||||
raise CourseContextRequired()
|
||||
course_id = course_context
|
||||
|
||||
return 'instructor_%s' % course_id
|
||||
|
||||
|
||||
def _has_global_staff_access(user):
|
||||
@@ -355,15 +389,15 @@ def _has_global_staff_access(user):
|
||||
return False
|
||||
|
||||
|
||||
def _has_instructor_access_to_location(user, location):
|
||||
return _has_access_to_location(user, location, 'instructor')
|
||||
def _has_instructor_access_to_location(user, location, course_context=None):
|
||||
return _has_access_to_location(user, location, 'instructor', course_context)
|
||||
|
||||
|
||||
def _has_staff_access_to_location(user, location):
|
||||
return _has_access_to_location(user, location, 'staff')
|
||||
def _has_staff_access_to_location(user, location, course_context=None):
|
||||
return _has_access_to_location(user, location, 'staff', course_context)
|
||||
|
||||
|
||||
def _has_access_to_location(user, location, access_level):
|
||||
def _has_access_to_location(user, location, access_level, course_context):
|
||||
'''
|
||||
Returns True if the given user has access_level (= staff or
|
||||
instructor) access to a location. For now this is equivalent to
|
||||
@@ -389,14 +423,14 @@ def _has_access_to_location(user, location, access_level):
|
||||
user_groups = [g.name for g in user.groups.all()]
|
||||
|
||||
if access_level == 'staff':
|
||||
staff_group = _course_staff_group_name(location)
|
||||
staff_group = _course_staff_group_name(location, course_context)
|
||||
if staff_group in user_groups:
|
||||
debug("Allow: user in group %s", staff_group)
|
||||
return True
|
||||
debug("Deny: user not in group %s", staff_group)
|
||||
|
||||
if access_level == 'instructor' or access_level == 'staff': # instructors get staff privileges
|
||||
instructor_group = _course_instructor_group_name(location)
|
||||
instructor_group = _course_instructor_group_name(location, course_context)
|
||||
if instructor_group in user_groups:
|
||||
debug("Allow: user in group %s", instructor_group)
|
||||
return True
|
||||
@@ -411,22 +445,22 @@ def _has_access_to_location(user, location, access_level):
|
||||
def _has_staff_access_to_course_id(user, course_id):
|
||||
"""Helper method that takes a course_id instead of a course name"""
|
||||
loc = CourseDescriptor.id_to_location(course_id)
|
||||
return _has_staff_access_to_location(user, loc)
|
||||
return _has_staff_access_to_location(user, loc, course_id)
|
||||
|
||||
|
||||
def _has_instructor_access_to_descriptor(user, descriptor):
|
||||
def _has_instructor_access_to_descriptor(user, descriptor, course_context=None):
|
||||
"""Helper method that checks whether the user has staff access to
|
||||
the course of the location.
|
||||
|
||||
descriptor: something that has a location attribute
|
||||
"""
|
||||
return _has_instructor_access_to_location(user, descriptor.location)
|
||||
return _has_instructor_access_to_location(user, descriptor.location, course_context)
|
||||
|
||||
def _has_staff_access_to_descriptor(user, descriptor):
|
||||
|
||||
def _has_staff_access_to_descriptor(user, descriptor, course_context=None):
|
||||
"""Helper method that checks whether the user has staff access to
|
||||
the course of the location.
|
||||
|
||||
descriptor: something that has a location attribute
|
||||
"""
|
||||
return _has_staff_access_to_location(user, descriptor.location)
|
||||
|
||||
return _has_staff_access_to_location(user, descriptor.location, course_context)
|
||||
|
||||
@@ -147,7 +147,7 @@ def _get_module(user, request, location, student_module_cache, course_id, positi
|
||||
descriptor = modulestore().get_instance(course_id, location)
|
||||
|
||||
# Short circuit--if the user shouldn't have access, bail without doing any work
|
||||
if not has_access(user, descriptor, 'load'):
|
||||
if not has_access(user, descriptor, 'load', course_id):
|
||||
return None
|
||||
|
||||
# Anonymized student identifier
|
||||
@@ -244,7 +244,7 @@ def _get_module(user, request, location, student_module_cache, course_id, positi
|
||||
|
||||
# make an ErrorDescriptor -- assuming that the descriptor's system is ok
|
||||
import_system = descriptor.system
|
||||
if has_access(user, location, 'staff'):
|
||||
if has_access(user, location, 'staff', course_id):
|
||||
err_descriptor = ErrorDescriptor.from_xml(str(descriptor), import_system,
|
||||
error_msg=exc_info_to_str(sys.exc_info()))
|
||||
else:
|
||||
@@ -263,7 +263,7 @@ def _get_module(user, request, location, student_module_cache, course_id, positi
|
||||
module.get_html = replace_course_urls(module.get_html, course_id)
|
||||
|
||||
if settings.MITX_FEATURES.get('DISPLAY_HISTOGRAMS_TO_STAFF'):
|
||||
if has_access(user, module, 'staff'):
|
||||
if has_access(user, module, 'staff', course_id):
|
||||
module.get_html = add_histogram(module.get_html, module, user)
|
||||
|
||||
return module
|
||||
|
||||
@@ -77,7 +77,6 @@ XQUEUE_WAITTIME_BETWEEN_REQUESTS = 5 # seconds
|
||||
STATICFILES_DIRS = [
|
||||
COMMON_ROOT / "static",
|
||||
PROJECT_ROOT / "static",
|
||||
ASKBOT_ROOT / "askbot" / "skins",
|
||||
]
|
||||
STATICFILES_DIRS += [
|
||||
(course_dir, COMMON_TEST_DATA_ROOT / course_dir)
|
||||
|
||||
@@ -47,16 +47,3 @@
|
||||
// instructor
|
||||
@import "course/instructor/instructor";
|
||||
|
||||
// Askbot / Discussion styles
|
||||
@import "course/discussion/askbot-original";
|
||||
@import "course/discussion/discussion";
|
||||
@import "course/discussion/sidebar";
|
||||
@import "course/discussion/questions";
|
||||
@import "course/discussion/tags";
|
||||
@import "course/discussion/question-view" ;
|
||||
@import "course/discussion/answers";
|
||||
@import "course/discussion/forms";
|
||||
@import "course/discussion/form-wmd-toolbar";
|
||||
@import "course/discussion/modals";
|
||||
@import "course/discussion/profile";
|
||||
@import "course/discussion/badges";
|
||||
|
||||
@@ -1,2710 +0,0 @@
|
||||
// original Askbot styles
|
||||
|
||||
// body {
|
||||
// background: #fff;
|
||||
// font-size: 14px;
|
||||
// line-height: 150%;
|
||||
// margin: 0;
|
||||
// padding: 0;
|
||||
// color: #000;
|
||||
// font-family: arial; }
|
||||
|
||||
// div {
|
||||
// margin: 0 auto;
|
||||
// padding: 0; }
|
||||
|
||||
// h1, h2, h3, h4, h5, h6, ul, li, dl, dt, dd, form, img, p {
|
||||
// margin: 0;
|
||||
// padding: 0;
|
||||
// border: none; }
|
||||
|
||||
// label {
|
||||
// vertical-align: middle; }
|
||||
|
||||
// hr {
|
||||
// border: none;
|
||||
// border-top: 1px dashed #ccccce; }
|
||||
|
||||
// input, select {
|
||||
// vertical-align: middle;
|
||||
// font-family: trebuchet ms,"segoe ui",helvetica,tahoma,verdana,mingliu,pmingliu,arial,sans-serif;
|
||||
// margin-left: 0px; }
|
||||
|
||||
// textarea:focus, input:focus {
|
||||
// outline: none; }
|
||||
|
||||
// iframe {
|
||||
// border: none; }
|
||||
|
||||
// p {
|
||||
// font-size: 14px;
|
||||
// line-height: 140%;
|
||||
// margin-bottom: 6px; }
|
||||
|
||||
// a {
|
||||
// color: #1b79bd;
|
||||
// text-decoration: none;
|
||||
// cursor: pointer; }
|
||||
|
||||
// h2 {
|
||||
// font-size: 21px;
|
||||
// padding: 3px 0 3px 5px; }
|
||||
|
||||
// h3 {
|
||||
// font-size: 19px;
|
||||
// padding: 3px 0 3px 5px; }
|
||||
|
||||
// ul {
|
||||
// list-style: disc;
|
||||
// margin-left: 20px;
|
||||
// padding-left: 0px;
|
||||
// margin-bottom: 1em; }
|
||||
|
||||
// ol {
|
||||
// list-style: decimal;
|
||||
// margin-left: 30px;
|
||||
// margin-bottom: 1em;
|
||||
// padding-left: 0px; }
|
||||
|
||||
// td ul {
|
||||
// vertical-align: middle; }
|
||||
|
||||
// li input {
|
||||
// margin: 3px 3px 4px 3px; }
|
||||
|
||||
// pre {
|
||||
// font-family: consolas, monaco, liberation mono, lucida console, monospace;
|
||||
// font-size: 100%;
|
||||
// margin-bottom: 10px;
|
||||
// background-color: #f5f5f5;
|
||||
// padding-left: 5px;
|
||||
// padding-top: 5px;
|
||||
// padding-bottom: 20px; }
|
||||
|
||||
// code {
|
||||
// font-family: consolas, monaco, liberation mono, lucida console, monospace;
|
||||
// font-size: 100%; }
|
||||
|
||||
// blockquote {
|
||||
// margin-bottom: 10px;
|
||||
// margin-right: 15px;
|
||||
// padding: 10px 0px 1px 10px;
|
||||
// background-color: #f5f5f5; }
|
||||
|
||||
// * html {
|
||||
// .clearfix, .paginator {
|
||||
// height: 1;
|
||||
// overflow: visible; } }
|
||||
|
||||
// +html {
|
||||
// .clearfix, .paginator {
|
||||
// min-height: 1%; } }
|
||||
|
||||
// .clearfix:after, .paginator:after {
|
||||
// clear: both;
|
||||
// content: ".";
|
||||
// display: block;
|
||||
// height: 0;
|
||||
// visibility: hidden; }
|
||||
|
||||
// .badges a {
|
||||
// color: #763333;
|
||||
// text-decoration: underline; }
|
||||
|
||||
// a:hover {
|
||||
// text-decoration: underline; }
|
||||
|
||||
.badge-context-toggle.active {
|
||||
cursor: pointer;
|
||||
text-decoration: underline; }
|
||||
|
||||
// h1 {
|
||||
// font-size: 24px;
|
||||
// padding: 10px 0 5px 0px; }
|
||||
|
||||
body.user-messages {
|
||||
margin-top: 2.4em; }
|
||||
|
||||
// .left {
|
||||
// float: left; }
|
||||
|
||||
// .right {
|
||||
// float: right; }
|
||||
|
||||
// .clean {
|
||||
// clear: both; }
|
||||
|
||||
// .center {
|
||||
// margin: 0 auto;
|
||||
// padding: 0; }
|
||||
|
||||
.notify {
|
||||
position: fixed;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: 100%;
|
||||
z-index: 100;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
background-color: #f5dd69;
|
||||
border-top: #fff 1px solid;
|
||||
|
||||
p.notification {
|
||||
margin-top: 6px;
|
||||
margin-bottom: 6px;
|
||||
font-size: 16px;
|
||||
color: #424242; } }
|
||||
|
||||
#closenotify {
|
||||
position: absolute;
|
||||
right: 5px;
|
||||
top: 7px;
|
||||
color: #735005;
|
||||
text-decoration: none;
|
||||
line-height: 18px;
|
||||
background: -6px -5px url(../default/media/images/sprites.png) no-repeat;
|
||||
cursor: pointer;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
&:hover {
|
||||
background: -26px -5px url(../default/media/images/sprites.png) no-repeat; } }
|
||||
|
||||
#header {
|
||||
margin-top: 0px;
|
||||
background: #16160f; }
|
||||
|
||||
/*.content-wrapper {
|
||||
width: 960px;
|
||||
margin: auto;
|
||||
position: relative; }*/
|
||||
|
||||
#logo img {
|
||||
padding: 5px 0px 5px 0px;
|
||||
height: 75px;
|
||||
width: auto;
|
||||
float: left; }
|
||||
|
||||
#usertoolsnav {
|
||||
height: 20px;
|
||||
padding-bottom: 5px;
|
||||
a {
|
||||
height: 35px;
|
||||
text-align: right;
|
||||
margin-left: 20px;
|
||||
text-decoration: underline;
|
||||
color: #d0e296;
|
||||
font-size: 16px;
|
||||
&:first-child {
|
||||
margin-left: 0; }
|
||||
&#ab-responses {
|
||||
margin-left: 3px; } }
|
||||
.user-info, .user-micro-info {
|
||||
color: #b5b593; }
|
||||
a img {
|
||||
vertical-align: middle;
|
||||
margin-bottom: 2px; }
|
||||
.user-info a {
|
||||
margin: 0;
|
||||
text-decoration: none; } }
|
||||
|
||||
#metanav {
|
||||
float: right;
|
||||
a {
|
||||
color: #e2e2ae;
|
||||
padding: 0px 0px 0px 35px;
|
||||
height: 25px;
|
||||
line-height: 30px;
|
||||
margin: 5px 0px 0px 10px;
|
||||
font-size: 18px;
|
||||
font-weight: 100;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
float: left;
|
||||
&:hover {
|
||||
text-decoration: underline; }
|
||||
&.on {
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
text-decoration: none; }
|
||||
&.special {
|
||||
font-size: 18px;
|
||||
color: #b02b2c;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
&:hover {
|
||||
text-decoration: underline; } } }
|
||||
#navtags {
|
||||
background: -50px -5px url(../default/media/images/sprites.png) no-repeat; }
|
||||
#navusers {
|
||||
background: -125px -5px url(../default/media/images/sprites.png) no-repeat; }
|
||||
#navbadges {
|
||||
background: -210px -5px url(../default/media/images/sprites.png) no-repeat; } }
|
||||
|
||||
// #header {
|
||||
// &.with-logo #usertoolsnav {
|
||||
// position: absolute;
|
||||
// bottom: 0;
|
||||
// right: 0px; }
|
||||
// &.without-logo {
|
||||
// #usertoolsnav {
|
||||
// float: left;
|
||||
// margin-top: 7px; }
|
||||
// #metanav {
|
||||
// margin-bottom: 7px; } } }
|
||||
|
||||
// #secondaryheader {
|
||||
// height: 55px;
|
||||
// background: #e9e9e1;
|
||||
// border-bottom: #d3d3c2 1px solid;
|
||||
// border-top: #fcfcfc 1px solid;
|
||||
// margin-bottom: 10px;
|
||||
// font-family: 'yanone kaffeesatz',sans-serif;
|
||||
// #homebutton {
|
||||
// border-right: #afaf9e 1px solid;
|
||||
// background: -6px -36px url(../default/media/images/sprites.png) no-repeat;
|
||||
// height: 55px;
|
||||
// width: 43px;
|
||||
// display: block;
|
||||
// float: left;
|
||||
// &:hover {
|
||||
// background: -51px -36px url(../default/media/images/sprites.png) no-repeat; } }
|
||||
// #scopewrapper {
|
||||
// width: 688px;
|
||||
// float: left;
|
||||
// a {
|
||||
// display: block;
|
||||
// float: left; }
|
||||
// .scope-selector {
|
||||
// font-size: 21px;
|
||||
// color: #5a5a4b;
|
||||
// height: 55px;
|
||||
// line-height: 55px;
|
||||
// margin-left: 24px; }
|
||||
// .on {
|
||||
// background: url(../default/media/images/scopearrow.png) no-repeat center bottom; }
|
||||
// .ask-message {
|
||||
// font-size: 24px; } } }
|
||||
|
||||
#searchbar {
|
||||
display: inline-block;
|
||||
background-color: #fff;
|
||||
width: 412px;
|
||||
border: 1px solid #c9c9b5;
|
||||
float: right;
|
||||
height: 42px;
|
||||
margin: 6px 0px 0px 15px;
|
||||
.searchinput, .searchinputcancelable {
|
||||
font-size: 30px;
|
||||
height: 40px;
|
||||
font-weight: 300;
|
||||
background: #fff;
|
||||
border: 0px;
|
||||
color: #484848;
|
||||
padding-left: 10px;
|
||||
font-family: arial;
|
||||
vertical-align: middle; }
|
||||
.searchinput {
|
||||
width: 352px; }
|
||||
.searchinputcancelable {
|
||||
width: 317px; }
|
||||
.logoutsearch {
|
||||
width: 337px; }
|
||||
.searchbtn {
|
||||
font-size: 10px;
|
||||
color: #666;
|
||||
background-color: #eee;
|
||||
height: 42px;
|
||||
border: #fff 1px solid;
|
||||
line-height: 22px;
|
||||
text-align: center;
|
||||
float: right;
|
||||
margin: 0px;
|
||||
width: 48px;
|
||||
background: -98px -36px url(../default/media/images/sprites.png) no-repeat;
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
background: -146px -36px url(../default/media/images/sprites.png) no-repeat; } }
|
||||
.cancelsearchbtn {
|
||||
font-size: 30px;
|
||||
color: #ce8888;
|
||||
background: #fff;
|
||||
height: 42px;
|
||||
border: 0px;
|
||||
border-left: #deded0 1px solid;
|
||||
text-align: center;
|
||||
width: 35px;
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
color: #d84040; } } }
|
||||
|
||||
body.anon #searchbar {
|
||||
width: 500px;
|
||||
.searchinput {
|
||||
width: 440px; }
|
||||
.searchinputcancelable {
|
||||
width: 405px; } }
|
||||
|
||||
#askbutton {
|
||||
background: url(../default/media/images/bigbutton.png) repeat-x bottom;
|
||||
line-height: 44px;
|
||||
text-align: center;
|
||||
width: 200px;
|
||||
height: 42px;
|
||||
font-size: 23px;
|
||||
color: #4a757f;
|
||||
margin-top: 7px;
|
||||
float: right;
|
||||
text-transform: uppercase;
|
||||
border-radius: 5px;
|
||||
-ms-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
-khtml-border-radius: 5px;
|
||||
-webkit-box-shadow: 1px 1px 2px #636363;
|
||||
-moz-box-shadow: 1px 1px 2px #636363;
|
||||
box-shadow: 1px 1px 2px #636363;
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
background: url(../default/media/images/bigbutton.png) repeat-x top;
|
||||
text-shadow: 0px 1px 0px #c6d9dd;
|
||||
-moz-text-shadow: 0px 1px 0px #c6d9dd;
|
||||
-webkit-text-shadow: 0px 1px 0px #c6d9dd; } }
|
||||
|
||||
/*#contentleft {
|
||||
width: 730px;
|
||||
float: left;
|
||||
position: relative;
|
||||
padding-bottom: 10px; }
|
||||
|
||||
#contentright {
|
||||
width: 200px;
|
||||
float: right;
|
||||
padding: 0 0px 10px 0px; }*/
|
||||
|
||||
#contentfull {
|
||||
float: left;
|
||||
width: 960px; }
|
||||
|
||||
.box {
|
||||
/*background: #fff;*/
|
||||
/*padding: 4px 0px 10px 0px;*/
|
||||
/*width: 200px;*/
|
||||
p {
|
||||
margin-bottom: 4px;
|
||||
&.info-box-follow-up-links {
|
||||
text-align: right;
|
||||
margin: 0; } }
|
||||
h2 {
|
||||
// padding-left: 0;
|
||||
// /*background: #eceeeb;*/
|
||||
// height: 30px;
|
||||
// line-height: 30px;
|
||||
// /*text-align: right;*/
|
||||
// /*font-size: 18px !important;*/
|
||||
// // font-weight: normal;
|
||||
// // color: #656565;
|
||||
// /*padding-right: 10px;*/
|
||||
// /*margin-bottom: 10px;*/
|
||||
// /*font-family: 'yanone kaffeesatz',sans-serif;*/
|
||||
}
|
||||
// h3 {
|
||||
// /*color: #4a757f;*/
|
||||
// /*font-size: 18px;*/
|
||||
// text-align: left;
|
||||
// font-weight: normal;
|
||||
// /*font-family: 'yanone kaffeesatz',sans-serif;*/
|
||||
// padding-left: 0px; }
|
||||
// .contributorback {
|
||||
// background: #eceeeb url(../default/media/images/contributorsback.png) no-repeat center left; }
|
||||
// label {
|
||||
// color: #707070;
|
||||
// font-size: 15px;
|
||||
// display: block;
|
||||
// float: right;
|
||||
// text-align: left;
|
||||
// font-family: 'yanone kaffeesatz',sans-serif;
|
||||
// width: 80px;
|
||||
// margin-right: 18px; }
|
||||
// #displaytagfiltercontrol label {
|
||||
// width: 160px; }
|
||||
// ul {
|
||||
// margin-left: 22px; }
|
||||
// li {
|
||||
// list-style-type: disc;
|
||||
// font-size: 13px;
|
||||
// line-height: 20px;
|
||||
// margin-bottom: 10px;
|
||||
// color: #707070; }
|
||||
// ul.tags {
|
||||
// list-style: none;
|
||||
// margin: 0;
|
||||
// padding: 0;
|
||||
// line-height: 170%;
|
||||
// display: block; }
|
||||
// #displaytagfiltercontrol p label {
|
||||
// color: #707070;
|
||||
// font-size: 15px; }
|
||||
/*.inputs {
|
||||
#interestingtaginput, #ignoredtaginput {
|
||||
width: 153px;
|
||||
padding-left: 5px;
|
||||
border: #c9c9b5 1px solid;
|
||||
height: 25px; }
|
||||
#interestingtagadd, #ignoredtagadd {
|
||||
background: url(../default/media/images/small-button-blue.png) repeat-x top;
|
||||
border: 0;
|
||||
color: #4a757f;
|
||||
font-weight: bold;
|
||||
font-size: 12px;
|
||||
width: 30px;
|
||||
height: 27px;
|
||||
margin-top: -2px;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
-ms-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
text-shadow: 0px 1px 0px #e6f6fa;
|
||||
-moz-text-shadow: 0px 1px 0px #e6f6fa;
|
||||
-webkit-text-shadow: 0px 1px 0px #e6f6fa;
|
||||
-webkit-box-shadow: 1px 1px 2px #808080;
|
||||
-moz-box-shadow: 1px 1px 2px #808080;
|
||||
box-shadow: 1px 1px 2px #808080; }
|
||||
#interestingtagadd:hover, #ignoredtagadd:hover {
|
||||
background: url(../default/media/images/small-button-blue.png) repeat-x bottom; } }*/
|
||||
// img.gravatar {
|
||||
// margin: 1px; }
|
||||
// a {
|
||||
// &.followed, &.follow {
|
||||
// background: url(../default/media/images/medium-button.png) top repeat-x;
|
||||
// height: 34px;
|
||||
// line-height: 34px;
|
||||
// text-align: center;
|
||||
// border: 0;
|
||||
// font-family: 'yanone kaffeesatz',sans-serif;
|
||||
// color: #4a757f;
|
||||
// font-weight: normal;
|
||||
// font-size: 21px;
|
||||
// margin-top: 3px;
|
||||
// display: block;
|
||||
// width: 120px;
|
||||
// text-decoration: none;
|
||||
// border-radius: 4px;
|
||||
// -ms-border-radius: 4px;
|
||||
// -moz-border-radius: 4px;
|
||||
// -webkit-border-radius: 4px;
|
||||
// -khtml-border-radius: 4px;
|
||||
// -webkit-box-shadow: 1px 1px 2px #636363;
|
||||
// -moz-box-shadow: 1px 1px 2px #636363;
|
||||
// box-shadow: 1px 1px 2px #636363;
|
||||
// margin: 0 auto;
|
||||
// padding: 0; }
|
||||
// &.followed:hover, &.follow:hover {
|
||||
// text-decoration: none;
|
||||
// background: url(../default/media/images/medium-button.png) bottom repeat-x;
|
||||
// text-shadow: 0px 1px 0px #c6d9dd;
|
||||
// -moz-text-shadow: 0px 1px 0px #c6d9dd;
|
||||
// -webkit-text-shadow: 0px 1px 0px #c6d9dd; }
|
||||
// &.followed {
|
||||
// div.unfollow {
|
||||
// display: none; }
|
||||
// &:hover div {
|
||||
// display: none;
|
||||
// &.unfollow {
|
||||
// display: inline;
|
||||
// color: #a05736; } } } }
|
||||
// .favorite-number {
|
||||
// padding: 5px 0 0 5px;
|
||||
// font-size: 100%;
|
||||
// font-family: arial;
|
||||
// font-weight: bold;
|
||||
// color: #777;
|
||||
// text-align: center; }
|
||||
// .notify-sidebar #question-subscribe-sidebar {
|
||||
// margin: 7px 0 0 3px; }
|
||||
}
|
||||
|
||||
//.statswidget p {
|
||||
// color: #707070;
|
||||
// font-size: 16px;
|
||||
// border-bottom: #cccccc 1px solid;
|
||||
// font-size: 13px;
|
||||
// strong {
|
||||
// float: right;
|
||||
// padding-right: 10px; } }
|
||||
|
||||
// .questions-related {
|
||||
// word-wrap: break-word;
|
||||
// p {
|
||||
// line-height: 20px;
|
||||
// padding: 4px 0px 4px 0px;
|
||||
// font-size: 16px;
|
||||
// font-weight: normal;
|
||||
// border-bottom: #cccccc 1px solid; }
|
||||
// a {
|
||||
// font-size: 13px; } }
|
||||
|
||||
// #tips {
|
||||
// li {
|
||||
// color: #707070;
|
||||
// font-size: 13px;
|
||||
// list-style-image: url(../default/media/images/tips.png); }
|
||||
// a {
|
||||
// font-size: 16px; } }
|
||||
|
||||
// #markdownhelp {
|
||||
// li {
|
||||
// color: #707070;
|
||||
// font-size: 13px; }
|
||||
// a {
|
||||
// font-size: 16px; } }
|
||||
|
||||
// .tabbar {
|
||||
// background-color: #eff5f6;
|
||||
// height: 30px;
|
||||
// margin-bottom: 3px;
|
||||
// margin-top: 3px;
|
||||
// float: right;
|
||||
// font-family: georgia,serif;
|
||||
// font-size: 16px;
|
||||
// border-radius: 5px;
|
||||
// -ms-border-radius: 5px;
|
||||
// -moz-border-radius: 5px;
|
||||
// -webkit-border-radius: 5px;
|
||||
// -khtml-border-radius: 5px;
|
||||
// h2 {
|
||||
// float: left; } }
|
||||
|
||||
// .tabsa, .tabsc {
|
||||
// float: right;
|
||||
// position: relative;
|
||||
// display: block;
|
||||
// height: 20px; }
|
||||
|
||||
// .tabsa {
|
||||
// float: right; }
|
||||
|
||||
// .tabsc {
|
||||
// float: left; }
|
||||
|
||||
// .tabsa a, .tabsc a {
|
||||
// border-left: 1px solid #d0e1e4;
|
||||
// color: #7ea9b3;
|
||||
// display: block;
|
||||
// float: left;
|
||||
// height: 20px;
|
||||
// line-height: 20px;
|
||||
// padding: 4px 7px 4px 7px;
|
||||
// text-decoration: none; }
|
||||
|
||||
// .tabsa a.on, .tabsc a.on, .tabsa a:hover, .tabsc a:hover {
|
||||
// color: #4a757f; }
|
||||
|
||||
// .tabsa .label, .tabsc .label {
|
||||
// float: left;
|
||||
// color: #646464;
|
||||
// margin-top: 4px;
|
||||
// margin-right: 5px; }
|
||||
|
||||
// .main-page .tabsa .label {
|
||||
// margin-left: 8px; }
|
||||
|
||||
// .tabsb a {
|
||||
// background: #eee;
|
||||
// border: 1px solid #eee;
|
||||
// color: #777;
|
||||
// display: block;
|
||||
// float: left;
|
||||
// height: 22px;
|
||||
// line-height: 28px;
|
||||
// margin: 5px 0px 0 4px;
|
||||
// padding: 0 11px 0 11px;
|
||||
// text-decoration: none; }
|
||||
|
||||
// .tabsc .first {
|
||||
// border: none; }
|
||||
|
||||
// .rss {
|
||||
// float: right;
|
||||
// font-size: 16px;
|
||||
// color: #f57900;
|
||||
// margin: 5px 0px 3px 7px;
|
||||
// width: 52px;
|
||||
// padding-left: 2px;
|
||||
// padding-top: 3px;
|
||||
// background: white url(../default/media/images/feed-icon-small.png) no-repeat center right;
|
||||
// float: right;
|
||||
// font-family: georgia,serif;
|
||||
// font-size: 16px;
|
||||
// &:hover {
|
||||
// color: #f4a731 !important; } }
|
||||
|
||||
// #questioncount {
|
||||
// font-weight: bold;
|
||||
// font-size: 23px;
|
||||
// color: #7ea9b3;
|
||||
// width: 200px;
|
||||
// float: left;
|
||||
// margin-bottom: 8px;
|
||||
// padding-top: 6px;
|
||||
// font-family: 'yanone kaffeesatz',sans-serif; }
|
||||
|
||||
// #listsearchtags {
|
||||
// float: left;
|
||||
// margin-top: 3px;
|
||||
// color: #707070;
|
||||
// font-size: 16px;
|
||||
// font-family: 'yanone kaffeesatz',sans-serif; }
|
||||
|
||||
// ul#searchtags {
|
||||
// margin-left: 10px;
|
||||
// float: right;
|
||||
// padding-top: 2px; }
|
||||
|
||||
// .search-tips {
|
||||
// font-size: 16px;
|
||||
// line-height: 17px;
|
||||
// color: #707070;
|
||||
// margin: 5px 0 10px 0;
|
||||
// padding: 0px;
|
||||
// float: left;
|
||||
// font-family: 'yanone kaffeesatz',sans-serif;
|
||||
// a {
|
||||
// text-decoration: underline;
|
||||
// color: #1b79bd; } }
|
||||
|
||||
// #question-list {
|
||||
// float: left;
|
||||
// position: relative;
|
||||
// background-color: #fff;
|
||||
// padding: 0;
|
||||
// width: 100%; }
|
||||
|
||||
// .short-summary {
|
||||
// position: relative;
|
||||
// filter: inherit;
|
||||
// padding: 10px;
|
||||
// border-bottom: 1px solid #dddbce;
|
||||
// margin-bottom: 1px;
|
||||
// overflow: hidden;
|
||||
// width: 710px;
|
||||
// float: left;
|
||||
// background: url(../default/media/images/summary-background.png) repeat-x;
|
||||
// h2 {
|
||||
// font-size: 24px;
|
||||
// font-weight: normal;
|
||||
// line-height: 26px;
|
||||
// padding-left: 0;
|
||||
// margin-bottom: 6px;
|
||||
// display: block;
|
||||
// font-family: 'yanone kaffeesatz',sans-serif; }
|
||||
// a {
|
||||
// color: #464646; }
|
||||
// .userinfo {
|
||||
// text-align: right;
|
||||
// line-height: 16px;
|
||||
// font-family: arial;
|
||||
// padding-right: 4px;
|
||||
// .relativetime {
|
||||
// font-size: 11px;
|
||||
// clear: both;
|
||||
// font-weight: normal;
|
||||
// color: #555; } }
|
||||
// span.anonymous {
|
||||
// font-size: 11px;
|
||||
// clear: both;
|
||||
// font-weight: normal;
|
||||
// color: #555; }
|
||||
// .userinfo a {
|
||||
// font-weight: bold;
|
||||
// font-size: 11px; }
|
||||
// .counts {
|
||||
// float: right;
|
||||
// margin: 4px 0 0 5px;
|
||||
// font-family: 'yanone kaffeesatz',sans-serif;
|
||||
// .item-count {
|
||||
// padding: 0px 5px 0px 5px;
|
||||
// font-size: 25px;
|
||||
// font-family: 'yanone kaffeesatz',sans-serif; }
|
||||
// .votes div, .views div, .answers div, .favorites div {
|
||||
// margin-top: 3px;
|
||||
// font-size: 14px;
|
||||
// line-height: 14px;
|
||||
// color: #646464; } }
|
||||
// .tags {
|
||||
// margin-top: 0; }
|
||||
// .votes, .answers, .favorites, .views {
|
||||
// text-align: center;
|
||||
// margin: 0 3px;
|
||||
// padding: 8px 2px 0px 2px;
|
||||
// width: 51px;
|
||||
// float: right;
|
||||
// height: 44px;
|
||||
// border: #dbdbd4 1px solid; }
|
||||
// .votes {
|
||||
// background: url(../default/media/images/vote-background.png) repeat-x; }
|
||||
// .answers {
|
||||
// background: url(../default/media/images/answers-background.png) repeat-x; }
|
||||
// .views {
|
||||
// background: url(../default/media/images/view-background.png) repeat-x; }
|
||||
// .no-votes .item-count {
|
||||
// color: #b1b5b6; }
|
||||
// .some-votes .item-count {
|
||||
// color: #4a757f; }
|
||||
// .no-answers .item-count {
|
||||
// color: #b1b5b6; }
|
||||
// .some-answers .item-count {
|
||||
// color: #eab243; }
|
||||
// .no-views .item-count {
|
||||
// color: #b1b5b6; }
|
||||
// .some-views .item-count {
|
||||
// color: #d33f00; }
|
||||
// .accepted .item-count {
|
||||
// background: url(../default/media/images/accept.png) no-repeat top right;
|
||||
// display: block;
|
||||
// text-align: center;
|
||||
// width: 40px;
|
||||
// color: #eab243; }
|
||||
// .some-favorites .item-count {
|
||||
// background: #338333;
|
||||
// color: #d0f5a9; }
|
||||
// .no-favorites .item-count {
|
||||
// background: #eab243;
|
||||
// color: yellow; } }
|
||||
|
||||
// .evenmore {
|
||||
// font-size: 13px;
|
||||
// color: #707070;
|
||||
// padding: 15px 0px 10px 0px;
|
||||
// clear: both;
|
||||
// a {
|
||||
// text-decoration: underline;
|
||||
// color: #1b79bd; } }
|
||||
|
||||
.pager {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 16px; }
|
||||
|
||||
.pagesize {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 16px;
|
||||
float: right; }
|
||||
|
||||
// .paginator {
|
||||
// padding: 5px 0 10px 0;
|
||||
// font-size: 13px;
|
||||
// margin-bottom: 10px;
|
||||
// .prev a, .next a {
|
||||
// background-color: #fff;
|
||||
// color: #777;
|
||||
// padding: 2px 4px 3px 4px;
|
||||
// &:visited {
|
||||
// background-color: #fff;
|
||||
// color: #777;
|
||||
// padding: 2px 4px 3px 4px; } }
|
||||
// a {
|
||||
// color: #7ea9b3; }
|
||||
// .prev {
|
||||
// margin-right: .5em; }
|
||||
// .next {
|
||||
// margin-left: .5em; }
|
||||
// .page a {
|
||||
// padding: .25em;
|
||||
// background-color: #fff;
|
||||
// margin: 0em .25em;
|
||||
// color: #ff;
|
||||
// &:visited {
|
||||
// padding: .25em;
|
||||
// background-color: #fff;
|
||||
// margin: 0em .25em;
|
||||
// color: #ff; } }
|
||||
// .curr {
|
||||
// padding: .25em;
|
||||
// background-color: #fff;
|
||||
// margin: 0em .25em;
|
||||
// color: #ff;
|
||||
// background-color: #8ebcc7;
|
||||
// color: #fff;
|
||||
// font-weight: bold; }
|
||||
// .next a, .prev a {
|
||||
// color: #7ea9b3; }
|
||||
// .page a:hover, .curr a:hover, .prev a:hover, .next a:hover {
|
||||
// color: #8c8c8c;
|
||||
// background-color: #e1e1e1;
|
||||
// text-decoration: none; }
|
||||
// .text {
|
||||
// color: #777;
|
||||
// padding: .3em; }
|
||||
// .paginator-container-left {
|
||||
// padding: 5px 0 10px 0; } }
|
||||
|
||||
// .tag-size-1 {
|
||||
// font-size: 12px; }
|
||||
|
||||
// .tag-size-2 {
|
||||
// font-size: 13px; }
|
||||
|
||||
// .tag-size-3 {
|
||||
// font-size: 14px; }
|
||||
|
||||
// .tag-size-4 {
|
||||
// font-size: 15px; }
|
||||
|
||||
// .tag-size-5 {
|
||||
// font-size: 16px; }
|
||||
|
||||
// .tag-size-6 {
|
||||
// font-size: 17px; }
|
||||
|
||||
// .tag-size-7 {
|
||||
// font-size: 18px; }
|
||||
|
||||
// .tag-size-8 {
|
||||
// font-size: 19px; }
|
||||
|
||||
// .tag-size-9 {
|
||||
// font-size: 20px; }
|
||||
|
||||
// .tag-size-10 {
|
||||
// font-size: 21px; }
|
||||
|
||||
// ul {
|
||||
// &.tags {
|
||||
// list-style: none;
|
||||
// margin: 0;
|
||||
// padding: 0;
|
||||
// line-height: 170%;
|
||||
// display: block;
|
||||
// &.marked-tags {
|
||||
// list-style: none;
|
||||
// margin: 0;
|
||||
// padding: 0;
|
||||
// line-height: 170%;
|
||||
// display: block; } }
|
||||
// &#related-tags {
|
||||
// list-style: none;
|
||||
// margin: 0;
|
||||
// padding: 0;
|
||||
// line-height: 170%;
|
||||
// display: block; }
|
||||
// &.tags li {
|
||||
// float: left;
|
||||
// display: block;
|
||||
// margin: 0 8px 0 0;
|
||||
// padding: 0;
|
||||
// height: 20px; } }
|
||||
|
||||
// .wildcard-tags {
|
||||
// clear: both; }
|
||||
|
||||
// ul.tags.marked-tags li, .wildcard-tags ul.tags li {
|
||||
// margin-bottom: 5px; }
|
||||
|
||||
// #tagselector div.inputs {
|
||||
// clear: both;
|
||||
// float: none;
|
||||
// margin-bottom: 10px; }
|
||||
|
||||
// .tags-page ul.tags li {
|
||||
// width: 160px;
|
||||
// margin: 5px; }
|
||||
|
||||
// ul {
|
||||
// &#ab-user-tags li {
|
||||
// width: 160px;
|
||||
// margin: 5px; }
|
||||
// &#related-tags li {
|
||||
// margin: 0 5px 8px 0;
|
||||
// float: left;
|
||||
// clear: left; } }
|
||||
|
||||
// .tag-left {
|
||||
// cursor: pointer;
|
||||
// display: block;
|
||||
// float: left;
|
||||
// height: 17px;
|
||||
// margin: 0 5px 0 0;
|
||||
// padding: 0;
|
||||
// -webkit-box-shadow: 0px 0px 5px #d3d6d7;
|
||||
// -moz-box-shadow: 0px 0px 5px #d3d6d7;
|
||||
// box-shadow: 0px 0px 5px #d3d6d7; }
|
||||
|
||||
// .tag-right {
|
||||
// background: #f3f6f6;
|
||||
// border: #fff 1px solid;
|
||||
// border-top: #fff 2px solid;
|
||||
// outline: #cfdbdb 1px solid;
|
||||
// display: block;
|
||||
// float: left;
|
||||
// height: 17px;
|
||||
// line-height: 17px;
|
||||
// font-weight: normal;
|
||||
// font-size: 11px;
|
||||
// padding: 0px 8px 0px 8px;
|
||||
// text-decoration: none;
|
||||
// text-align: center;
|
||||
// white-space: nowrap;
|
||||
// vertical-align: middle;
|
||||
// font-family: arial;
|
||||
// color: #717179; }
|
||||
|
||||
// .deletable-tag {
|
||||
// margin-right: 3px;
|
||||
// white-space: nowrap;
|
||||
// border-top-right-radius: 4px;
|
||||
// border-bottom-right-radius: 4px;
|
||||
// -moz-border-radius-topright: 4px;
|
||||
// -moz-border-radius-bottomright: 4px;
|
||||
// -webkit-border-bottom-right-radius: 4px;
|
||||
// -webkit-border-top-right-radius: 4px; }
|
||||
|
||||
// .tags {
|
||||
// a.tag-right, span.tag-right {
|
||||
// color: #585858;
|
||||
// text-decoration: none; }
|
||||
// a:hover {
|
||||
// color: #1a1a1a; } }
|
||||
|
||||
// .users-page h1, .tags-page h1 {
|
||||
// float: left; }
|
||||
|
||||
// .main-page h1 {
|
||||
// margin-right: 5px; }
|
||||
|
||||
// .delete-icon {
|
||||
// margin-top: -1px;
|
||||
// float: left;
|
||||
// height: 21px;
|
||||
// width: 18px;
|
||||
// display: block;
|
||||
// line-height: 20px;
|
||||
// text-align: center;
|
||||
// background: #bbcdcd;
|
||||
// cursor: default;
|
||||
// color: #fff;
|
||||
// border-top: #cfdbdb 1px solid;
|
||||
// font-family: arial;
|
||||
// border-top-right-radius: 4px;
|
||||
// border-bottom-right-radius: 4px;
|
||||
// -moz-border-radius-topright: 4px;
|
||||
// -moz-border-radius-bottomright: 4px;
|
||||
// -webkit-border-bottom-right-radius: 4px;
|
||||
// -webkit-border-top-right-radius: 4px;
|
||||
// text-shadow: 0px 1px 0px #7ea0a0;
|
||||
// -moz-text-shadow: 0px 1px 0px #7ea0a0;
|
||||
// -webkit-text-shadow: 0px 1px 0px #7ea0a0;
|
||||
// &:hover {
|
||||
// background: #b32f2f; } }
|
||||
|
||||
// .tag-number {
|
||||
// font-weight: normal;
|
||||
// float: left;
|
||||
// font-size: 16px;
|
||||
// color: #5d5d5d; }
|
||||
|
||||
// .badges .tag-number {
|
||||
// float: none;
|
||||
// display: inline;
|
||||
// padding-right: 15px; }
|
||||
|
||||
// .section-title {
|
||||
// color: #7ea9b3;
|
||||
// font-family: 'yanone kaffeesatz',sans-serif;
|
||||
// font-weight: bold;
|
||||
// font-size: 24px; }
|
||||
|
||||
// #fmask {
|
||||
// margin-bottom: 30px;
|
||||
// width: 100%; }
|
||||
|
||||
// #askformbar {
|
||||
// display: inline-block;
|
||||
// padding: 4px 7px 5px 0px;
|
||||
// margin-top: 0px;
|
||||
// p {
|
||||
// margin: 0 0 5px 0;
|
||||
// font-size: 14px;
|
||||
// color: #525252;
|
||||
// line-height: 1.4; }
|
||||
// .questiontitleinput {
|
||||
// font-size: 24px;
|
||||
// line-height: 24px;
|
||||
// height: 36px;
|
||||
// margin: 0px;
|
||||
// padding: 0px 0 0 5px;
|
||||
// border: #cce6ec 3px solid;
|
||||
// width: 725px; } }
|
||||
|
||||
// .ask-page div#question-list, .edit-question-page div#question-list {
|
||||
// float: none;
|
||||
// border-bottom: #f0f0ec 1px solid;
|
||||
// float: left;
|
||||
// margin-bottom: 10px; }
|
||||
|
||||
// .ask-page div#question-list a, .edit-question-page div#question-list a {
|
||||
// line-height: 30px; }
|
||||
|
||||
// .ask-page div#question-list h2, .edit-question-page div#question-list h2 {
|
||||
// font-size: 13px;
|
||||
// padding-bottom: 0;
|
||||
// color: #1b79bd;
|
||||
// border-top: #f0f0ec 1px solid;
|
||||
// border-left: #f0f0ec 1px solid;
|
||||
// height: 30px;
|
||||
// line-height: 30px;
|
||||
// font-weight: normal; }
|
||||
|
||||
// .ask-page div#question-list span, .edit-question-page div#question-list span {
|
||||
// width: 28px;
|
||||
// height: 26px;
|
||||
// line-height: 26px;
|
||||
// text-align: center;
|
||||
// margin-right: 10px;
|
||||
// float: left;
|
||||
// display: block;
|
||||
// color: #fff;
|
||||
// background: #b8d0d5;
|
||||
// border-radius: 3px;
|
||||
// -ms-border-radius: 3px;
|
||||
// -moz-border-radius: 3px;
|
||||
// -webkit-border-radius: 3px;
|
||||
// -khtml-border-radius: 3px; }
|
||||
|
||||
// .ask-page label, .edit-question-page label {
|
||||
// color: #525252;
|
||||
// font-size: 13px; }
|
||||
|
||||
// .ask-page #id_tags, .edit-question-page #id_tags {
|
||||
// border: #cce6ec 3px solid;
|
||||
// height: 25px;
|
||||
// padding-left: 5px;
|
||||
// width: 395px;
|
||||
// font-size: 14px; }
|
||||
|
||||
// .title-desc {
|
||||
// color: #707070;
|
||||
// font-size: 13px; }
|
||||
|
||||
// #fmanswer input.submit, .ask-page input.submit, .edit-question-page input.submit {
|
||||
// float: left;
|
||||
// background: url(../default/media/images/medium-button.png) top repeat-x;
|
||||
// height: 34px;
|
||||
// border: 0;
|
||||
// font-family: 'yanone kaffeesatz',sans-serif;
|
||||
// color: #4a757f;
|
||||
// font-weight: normal;
|
||||
// font-size: 21px;
|
||||
// margin-top: 3px;
|
||||
// border-radius: 4px;
|
||||
// -ms-border-radius: 4px;
|
||||
// -moz-border-radius: 4px;
|
||||
// -webkit-border-radius: 4px;
|
||||
// -khtml-border-radius: 4px;
|
||||
// -webkit-box-shadow: 1px 1px 2px #636363;
|
||||
// -moz-box-shadow: 1px 1px 2px #636363;
|
||||
// box-shadow: 1px 1px 2px #636363;
|
||||
// margin-right: 7px; }
|
||||
|
||||
// #fmanswer input.submit:hover, .ask-page input.submit:hover, .edit-question-page input.submit:hover {
|
||||
// text-decoration: none;
|
||||
// background: url(../default/media/images/medium-button.png) bottom repeat-x;
|
||||
// text-shadow: 0px 1px 0px #c6d9dd;
|
||||
// -moz-text-shadow: 0px 1px 0px #c6d9dd;
|
||||
// -webkit-text-shadow: 0px 1px 0px #c6d9dd; }
|
||||
|
||||
// #editor {
|
||||
// font-size: 100%;
|
||||
// min-height: 200px;
|
||||
// line-height: 18px;
|
||||
// margin: 0;
|
||||
// border-left: #cce6ec 3px solid;
|
||||
// border-bottom: #cce6ec 3px solid;
|
||||
// border-right: #cce6ec 3px solid;
|
||||
// border-top: 0;
|
||||
// padding: 10px;
|
||||
// margin-bottom: 10px;
|
||||
// width: 710px; }
|
||||
|
||||
// #id_title {
|
||||
// width: 100%; }
|
||||
|
||||
// .wmd-preview {
|
||||
// margin: 3px 0 5px 0;
|
||||
// padding: 6px;
|
||||
// background-color: #f5f5f5;
|
||||
// min-height: 20px;
|
||||
// overflow: auto;
|
||||
// font-size: 13px;
|
||||
// font-family: arial;
|
||||
// p {
|
||||
// margin-bottom: 14px;
|
||||
// line-height: 1.4;
|
||||
// font-size: 14px; }
|
||||
// pre {
|
||||
// background-color: #e7f1f8; }
|
||||
// blockquote {
|
||||
// background-color: #eee; }
|
||||
// img {
|
||||
// max-width: 600px; } }
|
||||
|
||||
// .preview-toggle {
|
||||
// width: 100%;
|
||||
// color: #b6a475;
|
||||
// text-align: left;
|
||||
// span:hover {
|
||||
// cursor: pointer; } }
|
||||
|
||||
// .after-editor {
|
||||
// margin-top: 15px;
|
||||
// margin-bottom: 15px; }
|
||||
|
||||
.checkbox {
|
||||
margin-left: 5px;
|
||||
font-weight: normal;
|
||||
cursor: help; }
|
||||
|
||||
// .question-options {
|
||||
// margin-top: 1px;
|
||||
// color: #666;
|
||||
// line-height: 13px;
|
||||
// margin-bottom: 5px;
|
||||
// label {
|
||||
// vertical-align: text-bottom; } }
|
||||
|
||||
// .edit-content-html {
|
||||
// border-top: 1px dotted #d8d2a9;
|
||||
// border-bottom: 1px dotted #d8d2a9;
|
||||
// margin: 5px 0 5px 0; }
|
||||
|
||||
// .edit-question-page, #fmedit, .wmd-preview {
|
||||
// color: #525252; }
|
||||
|
||||
// .edit-question-page #id_revision, #fmedit #id_revision, .wmd-preview #id_revision {
|
||||
// font-size: 14px;
|
||||
// margin-top: 5px;
|
||||
// margin-bottom: 5px; }
|
||||
|
||||
// .edit-question-page #id_title, #fmedit #id_title, .wmd-preview #id_title {
|
||||
// font-size: 24px;
|
||||
// line-height: 24px;
|
||||
// height: 36px;
|
||||
// margin: 0px;
|
||||
// padding: 0px 0 0 5px;
|
||||
// border: #cce6ec 3px solid;
|
||||
// width: 725px;
|
||||
// margin-bottom: 10px; }
|
||||
|
||||
// .edit-question-page #id_summary, #fmedit #id_summary, .wmd-preview #id_summary {
|
||||
// border: #cce6ec 3px solid;
|
||||
// height: 25px;
|
||||
// padding-left: 5px;
|
||||
// width: 395px;
|
||||
// font-size: 14px; }
|
||||
|
||||
// .edit-question-page .title-desc, #fmedit .title-desc, .wmd-preview .title-desc {
|
||||
// margin-bottom: 10px; }
|
||||
|
||||
// .question-page {
|
||||
// h1 {
|
||||
// padding-top: 0px;
|
||||
// font-family: 'yanone kaffeesatz',sans-serif;
|
||||
// a {
|
||||
// color: #464646;
|
||||
// font-size: 30px;
|
||||
// font-weight: normal;
|
||||
// line-height: 1; } }
|
||||
// p.rss {
|
||||
// float: none;
|
||||
// clear: both;
|
||||
// padding: 3px 0 0 23px;
|
||||
// font-size: 15px;
|
||||
// width: 110px;
|
||||
// background-position: center left;
|
||||
// margin-left: 0px !important;
|
||||
// a {
|
||||
// font-family: 'yanone kaffeesatz',sans-serif;
|
||||
// vertical-align: top; } }
|
||||
// .question-content {
|
||||
// float: right;
|
||||
// width: 682px;
|
||||
// margin-bottom: 10px; }
|
||||
// #question-table {
|
||||
// float: left;
|
||||
// border-top: #f0f0f0 1px solid;
|
||||
// margin: 6px 0 6px 0;
|
||||
// border-spacing: 0px;
|
||||
// width: 670px;
|
||||
// padding-right: 10px; }
|
||||
// .answer-table {
|
||||
// margin: 6px 0 6px 0;
|
||||
// border-spacing: 0px;
|
||||
// width: 670px;
|
||||
// padding-right: 10px;
|
||||
// margin-top: 0px;
|
||||
// border-bottom: 1px solid #d4d4d4;
|
||||
// float: right;
|
||||
// td {
|
||||
// width: 20px;
|
||||
// vertical-align: top; } }
|
||||
// #question-table td {
|
||||
// width: 20px;
|
||||
// vertical-align: top; }
|
||||
// .question-body, .answer-body {
|
||||
// overflow: auto;
|
||||
// margin-top: 10px;
|
||||
// font-family: arial;
|
||||
// color: #4b4b4b; }
|
||||
// .question-body p, .answer-body p {
|
||||
// margin-bottom: 14px;
|
||||
// line-height: 1.4;
|
||||
// font-size: 14px;
|
||||
// padding: 0px 5px 5px 0px; }
|
||||
// .question-body a, .answer-body a {
|
||||
// color: #1b79bd; }
|
||||
// .question-body li, .answer-body li {
|
||||
// margin-bottom: 7px; }
|
||||
// .question-body img, .answer-body img {
|
||||
// max-width: 600px; }
|
||||
// .post-update-info-container {
|
||||
// float: right;
|
||||
// width: 175px; }
|
||||
// .post-update-info {
|
||||
// background: white url(../default/media/images/background-user-info.png) repeat-x bottom;
|
||||
// float: right;
|
||||
// font-size: 9px;
|
||||
// font-family: arial;
|
||||
// width: 158px;
|
||||
// padding: 4px;
|
||||
// margin: 0px 0px 5px 5px;
|
||||
// line-height: 14px;
|
||||
// border-radius: 4px;
|
||||
// -ms-border-radius: 4px;
|
||||
// -moz-border-radius: 4px;
|
||||
// -webkit-border-radius: 4px;
|
||||
// -khtml-border-radius: 4px;
|
||||
// -webkit-box-shadow: 0px 2px 1px #bfbfbf;
|
||||
// -moz-box-shadow: 0px 2px 1px #bfbfbf;
|
||||
// box-shadow: 0px 2px 1px #bfbfbf;
|
||||
// p {
|
||||
// line-height: 13px;
|
||||
// font-size: 11px;
|
||||
// margin: 0 0 2px 1px;
|
||||
// padding: 0; }
|
||||
// a {
|
||||
// color: #444; }
|
||||
// .gravatar {
|
||||
// float: left;
|
||||
// margin-right: 4px; }
|
||||
// p.tip {
|
||||
// color: #444;
|
||||
// line-height: 13px;
|
||||
// font-size: 10px; } }
|
||||
// .post-controls {
|
||||
// font-size: 11px;
|
||||
// line-height: 12px;
|
||||
// min-width: 200px;
|
||||
// padding-left: 5px;
|
||||
// text-align: right;
|
||||
// clear: left;
|
||||
// float: right;
|
||||
// margin-top: 10px;
|
||||
// margin-bottom: 8px;
|
||||
// a {
|
||||
// color: #777;
|
||||
// padding: 0px 3px 3px 22px;
|
||||
// cursor: pointer;
|
||||
// border: none;
|
||||
// font-size: 12px;
|
||||
// font-family: arial;
|
||||
// text-decoration: none;
|
||||
// height: 18px;
|
||||
// display: block;
|
||||
// float: right;
|
||||
// line-height: 18px;
|
||||
// margin-top: -2px;
|
||||
// margin-left: 4px;
|
||||
// &:hover {
|
||||
// background-color: #f5f0c9;
|
||||
// border-radius: 3px;
|
||||
// -ms-border-radius: 3px;
|
||||
// -moz-border-radius: 3px;
|
||||
// -webkit-border-radius: 3px;
|
||||
// -khtml-border-radius: 3px; } }
|
||||
// .sep {
|
||||
// color: #ccc;
|
||||
// float: right;
|
||||
// height: 18px;
|
||||
// font-size: 18px; }
|
||||
// .question-delete {
|
||||
// background: url(../default/media/images/delete.png) no-repeat center left;
|
||||
// padding-left: 16px; } }
|
||||
// .answer-controls .question-delete {
|
||||
// background: url(../default/media/images/delete.png) no-repeat center left;
|
||||
// padding-left: 16px; }
|
||||
// .post-controls .question-flag, .answer-controls .question-flag {
|
||||
// background: url(../default/media/images/flag.png) no-repeat center left; }
|
||||
// .post-controls .question-edit, .answer-controls .question-edit {
|
||||
// background: url(../default/media/images/edit2.png) no-repeat center left; }
|
||||
// .post-controls .question-retag, .answer-controls .question-retag {
|
||||
// background: url(../default/media/images/retag.png) no-repeat center left; }
|
||||
// .post-controls .question-close, .answer-controls .question-close {
|
||||
// background: url(../default/media/images/close.png) no-repeat center left; }
|
||||
// .post-controls .permant-link, .answer-controls .permant-link {
|
||||
// background: url(../default/media/images/link.png) no-repeat center left; }
|
||||
// .tabbar {
|
||||
// width: 100%; }
|
||||
// #questioncount {
|
||||
// float: left;
|
||||
// font-family: 'yanone kaffeesatz',sans-serif;
|
||||
// line-height: 15px; }
|
||||
// .question-img-upvote, .question-img-downvote, .answer-img-upvote, .answer-img-downvote {
|
||||
// width: 25px;
|
||||
// height: 20px;
|
||||
// cursor: pointer; }
|
||||
// .question-img-upvote, .answer-img-upvote {
|
||||
// background: url(../default/media/images/vote-arrow-up-new.png) no-repeat; }
|
||||
// .question-img-downvote, .answer-img-downvote {
|
||||
// background: url(../default/media/images/vote-arrow-down-new.png) no-repeat; }
|
||||
// .question-img-upvote {
|
||||
// &:hover, &.on {
|
||||
// background: url(../default/media/images/vote-arrow-up-on-new.png) no-repeat; } }
|
||||
// .answer-img-upvote {
|
||||
// &:hover, &.on {
|
||||
// background: url(../default/media/images/vote-arrow-up-on-new.png) no-repeat; } }
|
||||
// .question-img-downvote {
|
||||
// &:hover, &.on {
|
||||
// background: url(../default/media/images/vote-arrow-down-on-new.png) no-repeat; } }
|
||||
// .answer-img-downvote {
|
||||
// &:hover, &.on {
|
||||
// background: url(../default/media/images/vote-arrow-down-on-new.png) no-repeat; } }
|
||||
// #fmanswer_button {
|
||||
// margin: 8px 0px; }
|
||||
// .question-img-favorite:hover {
|
||||
// background: url(../default/media/images/vote-favorite-on.png); }
|
||||
// div.comments {
|
||||
// padding: 0; }
|
||||
// #comment-title {
|
||||
// font-weight: bold;
|
||||
// font-size: 23px;
|
||||
// color: #7ea9b3;
|
||||
// width: 200px;
|
||||
// float: left;
|
||||
// font-family: 'yanone kaffeesatz',sans-serif; }
|
||||
// .comments {
|
||||
// font-size: 12px;
|
||||
// clear: both;
|
||||
// div.controls {
|
||||
// clear: both;
|
||||
// float: left;
|
||||
// width: 100%;
|
||||
// margin: 3px 0 20px 5px; }
|
||||
// .controls a {
|
||||
// color: #988e4c;
|
||||
// padding: 0 3px 2px 22px;
|
||||
// font-family: arial;
|
||||
// font-size: 13px;
|
||||
// background: url(../default/media/images/comment.png) no-repeat center left;
|
||||
// &:hover {
|
||||
// background-color: #f5f0c9;
|
||||
// text-decoration: none; } }
|
||||
// .button {
|
||||
// color: #988e4c;
|
||||
// font-size: 11px;
|
||||
// padding: 3px;
|
||||
// cursor: pointer; }
|
||||
// a {
|
||||
// background-color: inherit;
|
||||
// color: #1b79bd;
|
||||
// padding: 0; }
|
||||
// form.post-comments {
|
||||
// margin: 3px 26px 0 42px;
|
||||
// textarea {
|
||||
// font-size: 13px;
|
||||
// line-height: 1.3; } }
|
||||
// textarea {
|
||||
// height: 42px;
|
||||
// width: 100%;
|
||||
// margin: 7px 0 5px 1px;
|
||||
// font-family: arial;
|
||||
// outline: none;
|
||||
// overflow: auto;
|
||||
// font-size: 12px;
|
||||
// line-height: 140%;
|
||||
// padding-left: 2px;
|
||||
// padding-top: 3px;
|
||||
// border: #cce6ec 3px solid; }
|
||||
// input {
|
||||
// margin-left: 10px;
|
||||
// margin-top: 1px;
|
||||
// vertical-align: top;
|
||||
// width: 100px; }
|
||||
// button {
|
||||
// background: url(../default/media/images/small-button-blue.png) repeat-x top;
|
||||
// border: 0;
|
||||
// color: #4a757f;
|
||||
// font-family: arial;
|
||||
// font-size: 13px;
|
||||
// width: 100px;
|
||||
// font-weight: bold;
|
||||
// height: 27px;
|
||||
// line-height: 25px;
|
||||
// margin-bottom: 5px;
|
||||
// cursor: pointer;
|
||||
// border-radius: 4px;
|
||||
// -ms-border-radius: 4px;
|
||||
// -moz-border-radius: 4px;
|
||||
// -webkit-border-radius: 4px;
|
||||
// -khtml-border-radius: 4px;
|
||||
// text-shadow: 0px 1px 0px #e6f6fa;
|
||||
// -moz-text-shadow: 0px 1px 0px #e6f6fa;
|
||||
// -webkit-text-shadow: 0px 1px 0px #e6f6fa;
|
||||
// -webkit-box-shadow: 1px 1px 2px #808080;
|
||||
// -moz-box-shadow: 1px 1px 2px #808080;
|
||||
// box-shadow: 1px 1px 2px #808080;
|
||||
// &:hover {
|
||||
// background: url(../default/media/images/small-button-blue.png) bottom repeat-x;
|
||||
// text-shadow: 0px 1px 0px #c6d9dd;
|
||||
// -moz-text-shadow: 0px 1px 0px #c6d9dd;
|
||||
// -webkit-text-shadow: 0px 1px 0px #c6d9dd; } }
|
||||
// .counter {
|
||||
// display: inline-block;
|
||||
// width: 245px;
|
||||
// float: right;
|
||||
// color: #b6a475 !important;
|
||||
// vertical-align: top;
|
||||
// font-family: arial;
|
||||
// float: right;
|
||||
// text-align: right; }
|
||||
// .comment {
|
||||
// border-bottom: 1px solid #edeeeb;
|
||||
// clear: both;
|
||||
// margin: 0;
|
||||
// margin-top: 8px;
|
||||
// padding-bottom: 4px;
|
||||
// overflow: auto;
|
||||
// font-family: arial;
|
||||
// font-size: 11px;
|
||||
// min-height: 25px;
|
||||
// background: white url(../default/media/images/comment-background.png) bottom repeat-x;
|
||||
// border-radius: 5px;
|
||||
// -ms-border-radius: 5px;
|
||||
// -moz-border-radius: 5px;
|
||||
// -webkit-border-radius: 5px;
|
||||
// -khtml-border-radius: 5px; }
|
||||
// div.comment:hover {
|
||||
// background-color: #efefef; }
|
||||
// a.author {
|
||||
// background-color: inherit;
|
||||
// color: #1b79bd;
|
||||
// padding: 0;
|
||||
// &:hover {
|
||||
// text-decoration: underline; } }
|
||||
// span.delete-icon {
|
||||
// background: url(../default/media/images/close-small.png) no-repeat;
|
||||
// border: 0;
|
||||
// width: 14px;
|
||||
// height: 14px;
|
||||
// &:hover {
|
||||
// border: #bc564b 2px solid;
|
||||
// border-radius: 10px;
|
||||
// -ms-border-radius: 10px;
|
||||
// -moz-border-radius: 10px;
|
||||
// -webkit-border-radius: 10px;
|
||||
// -khtml-border-radius: 10px;
|
||||
// margin: -3px 0px 0px -2px; } }
|
||||
// .content {
|
||||
// margin-bottom: 7px; }
|
||||
// .comment-votes {
|
||||
// float: left;
|
||||
// width: 37px;
|
||||
// line-height: 130%;
|
||||
// padding: 6px 5px 6px 3px; }
|
||||
// .comment-body {
|
||||
// line-height: 1.3;
|
||||
// margin: 3px 26px 0 46px;
|
||||
// padding: 5px 3px;
|
||||
// color: #666;
|
||||
// font-size: 13px;
|
||||
// .edit {
|
||||
// padding-left: 6px; }
|
||||
// p {
|
||||
// font-size: 13px;
|
||||
// line-height: 1.3;
|
||||
// margin-bottom: 3px;
|
||||
// padding: 0; } }
|
||||
// .comment-delete {
|
||||
// float: right;
|
||||
// width: 14px;
|
||||
// line-height: 130%;
|
||||
// padding: 8px 6px; }
|
||||
// .upvote {
|
||||
// margin: 0px;
|
||||
// padding-right: 17px;
|
||||
// padding-top: 2px;
|
||||
// text-align: right;
|
||||
// height: 20px;
|
||||
// font-size: 13px;
|
||||
// font-weight: bold;
|
||||
// color: #777;
|
||||
// &.upvoted {
|
||||
// color: #d64000; }
|
||||
// &.hover {
|
||||
// background: url(../default/media/images/go-up-grey.png) no-repeat;
|
||||
// background-position: right 1px; }
|
||||
// &:hover {
|
||||
// background: url(../default/media/images/go-up-orange.png) no-repeat;
|
||||
// background-position: right 1px; } }
|
||||
// .help-text {
|
||||
// float: right;
|
||||
// text-align: right;
|
||||
// color: gray;
|
||||
// margin-bottom: 0px;
|
||||
// margin-top: 0px;
|
||||
// line-height: 50%; } }
|
||||
// #questiontools {
|
||||
// font-size: 22px;
|
||||
// margin-top: 11px;
|
||||
// text-align: left; }
|
||||
// .question-status {
|
||||
// margin-top: 10px;
|
||||
// margin-bottom: 15px;
|
||||
// padding: 20px;
|
||||
// background-color: #fef7cc;
|
||||
// text-align: center;
|
||||
// border: #e1c04a 1px solid;
|
||||
// h3 {
|
||||
// font-size: 20px;
|
||||
// color: #707070;
|
||||
// font-weight: normal; } }
|
||||
// .vote-buttons {
|
||||
// // float: left;
|
||||
// // text-align: center;
|
||||
// // padding-top: 2px;
|
||||
// // margin: 10px 10px 0px 3px;
|
||||
// img {
|
||||
// cursor: pointer; } }
|
||||
// .vote-number {
|
||||
// font-family: 'yanone kaffeesatz',sans-serif;
|
||||
// padding: 0px 0 5px 0;
|
||||
// font-size: 25px;
|
||||
// font-weight: bold;
|
||||
// color: #777; }
|
||||
// .vote-buttons .notify-sidebar {
|
||||
// // text-align: left;
|
||||
// // width: 120px;
|
||||
// label {
|
||||
// vertical-align: top; } }
|
||||
// .tabbar-answer {
|
||||
// margin-bottom: 15px;
|
||||
// padding-left: 7px;
|
||||
// width: 723px;
|
||||
// margin-top: 10px; }
|
||||
// .answer .vote-buttons {
|
||||
// // float: left;
|
||||
// }
|
||||
// .accepted-answer {
|
||||
// background-color: #f7fecc;
|
||||
// border-bottom-color: #9bd59b;
|
||||
// // .vote-buttons {
|
||||
// // width: 27px;
|
||||
// // margin-right: 10px;
|
||||
// // margin-top: 10px; }
|
||||
// }
|
||||
// .answer .post-update-info a {
|
||||
// color: #444444; }
|
||||
// .answered {
|
||||
// background: #ccc;
|
||||
// color: #999; }
|
||||
// .answered-accepted {
|
||||
// background: #dcdcdc;
|
||||
// color: #763333;
|
||||
// strong {
|
||||
// color: #e1e818; } }
|
||||
// .answered-by-owner {
|
||||
// background: #f1f1ff;
|
||||
// .comments {
|
||||
// .button {
|
||||
// background-color: #e6ecff; }
|
||||
// background-color: #e6ecff; }
|
||||
// // .vote-buttons {
|
||||
// // margin-right: 10px; }
|
||||
// }
|
||||
// .answer-img-accept:hover {
|
||||
// background: url(../default/media/images/vote-accepted-on.png); }
|
||||
// .answer-body {
|
||||
// a {
|
||||
// color: #1b79bd; }
|
||||
// li {
|
||||
// margin-bottom: 0.7em; } }
|
||||
// #fmanswer {
|
||||
// color: #707070;
|
||||
// line-height: 1.2;
|
||||
// margin-top: 10px;
|
||||
// h2 {
|
||||
// font-family: 'yanone kaffeesatz',sans-serif;
|
||||
// color: #7ea9b3;
|
||||
// font-size: 24px; }
|
||||
// label {
|
||||
// font-size: 13px; } }
|
||||
// .message {
|
||||
// padding: 5px;
|
||||
// margin: 0px 0 10px 0; } }
|
||||
|
||||
// @media screen and (-webkit-min-device-pixel-ratio:0) {
|
||||
// textarea {
|
||||
// padding-left: 3px !important; } }
|
||||
|
||||
// .facebook-share.icon, .twitter-share.icon, .linkedin-share.icon, .identica-share.icon {
|
||||
// background: url(../default/media/images/socialsprite.png) no-repeat;
|
||||
// display: block;
|
||||
// text-indent: -100em;
|
||||
// height: 25px;
|
||||
// width: 25px;
|
||||
// margin-bottom: 3px; }
|
||||
|
||||
// .facebook-share.icon:hover, .twitter-share.icon:hover, .linkedin-share.icon:hover, .identica-share.icon:hover {
|
||||
// opacity: 0.8;
|
||||
// filter: alpha(opacity = 80); }
|
||||
|
||||
// .facebook-share.icon {
|
||||
// background-position: -26px 0px; }
|
||||
|
||||
// .identica-share.icon {
|
||||
// background-position: -78px 0px; }
|
||||
|
||||
// .twitter-share.icon {
|
||||
// margin-top: 10px;
|
||||
// background-position: 0px 0px; }
|
||||
|
||||
// .linkedin-share.icon {
|
||||
// background-position: -52px 0px; }
|
||||
|
||||
// .openid-signin, .meta, .users-page, .user-profile-edit-page {
|
||||
// font-size: 13px;
|
||||
// line-height: 1.3;
|
||||
// color: #525252; }
|
||||
|
||||
// .openid-signin p, .meta p, .users-page p, .user-profile-edit-page p {
|
||||
// font-size: 13px;
|
||||
// color: #707070;
|
||||
// line-height: 1.3;
|
||||
// font-family: arial;
|
||||
// color: #525252;
|
||||
// margin-bottom: 12px; }
|
||||
|
||||
// .openid-signin h2, .meta h2, .users-page h2, .user-profile-edit-page h2 {
|
||||
// color: #525252;
|
||||
// padding-left: 0px;
|
||||
// font-size: 16px; }
|
||||
|
||||
// .openid-signin form, .meta form, .users-page form, .user-profile-edit-page form, .user-profile-page form {
|
||||
// margin-bottom: 15px; }
|
||||
|
||||
// .openid-signin input[type="text"], .meta input[type="text"], .users-page input[type="text"], .user-profile-edit-page input[type="text"], .user-profile-page input[type="text"], .openid-signin input[type="password"], .meta input[type="password"], .users-page input[type="password"], .user-profile-edit-page input[type="password"], .user-profile-page input[type="password"], .openid-signin select, .meta select, .users-page select, .user-profile-edit-page select, .user-profile-page select {
|
||||
// border: #cce6ec 3px solid;
|
||||
// height: 25px;
|
||||
// padding-left: 5px;
|
||||
// width: 395px;
|
||||
// font-size: 14px; }
|
||||
|
||||
// .openid-signin select, .meta select, .users-page select, .user-profile-edit-page select, .user-profile-page select {
|
||||
// width: 405px;
|
||||
// height: 30px; }
|
||||
|
||||
// .openid-signin textarea, .meta textarea, .users-page textarea, .user-profile-edit-page textarea, .user-profile-page textarea {
|
||||
// border: #cce6ec 3px solid;
|
||||
// padding-left: 5px;
|
||||
// padding-top: 5px;
|
||||
// width: 395px;
|
||||
// font-size: 14px; }
|
||||
|
||||
// .openid-signin input.submit, .meta input.submit, .users-page input.submit, .user-profile-edit-page input.submit, .user-profile-page input.submit {
|
||||
// background: url(../default/media/images/small-button-blue.png) repeat-x top;
|
||||
// border: 0;
|
||||
// color: #4a757f;
|
||||
// font-weight: bold;
|
||||
// font-size: 13px;
|
||||
// font-family: arial;
|
||||
// height: 26px;
|
||||
// margin: 5px 0px;
|
||||
// width: 100px;
|
||||
// cursor: pointer;
|
||||
// border-radius: 4px;
|
||||
// -ms-border-radius: 4px;
|
||||
// -moz-border-radius: 4px;
|
||||
// -webkit-border-radius: 4px;
|
||||
// -khtml-border-radius: 4px;
|
||||
// text-shadow: 0px 1px 0px #e6f6fa;
|
||||
// -moz-text-shadow: 0px 1px 0px #e6f6fa;
|
||||
// -webkit-text-shadow: 0px 1px 0px #e6f6fa;
|
||||
// -webkit-box-shadow: 1px 1px 2px #808080;
|
||||
// -moz-box-shadow: 1px 1px 2px #808080;
|
||||
// box-shadow: 1px 1px 2px #808080; }
|
||||
|
||||
// .openid-signin input.submit:hover, .meta input.submit:hover, .users-page input.submit:hover, .user-profile-edit-page input.submit:hover, .user-profile-page input.submit:hover {
|
||||
// background: url(../default/media/images/small-button-blue.png) repeat-x bottom;
|
||||
// text-decoration: none; }
|
||||
|
||||
.openid-signin .cancel, .meta .cancel, .users-page .cancel, .user-profile-edit-page .cancel, .user-profile-page .cancel {
|
||||
background: url(../default/media/images/small-button-cancel.png) repeat-x top !important;
|
||||
color: #525252 !important; }
|
||||
|
||||
.openid-signin .cancel:hover, .meta .cancel:hover, .users-page .cancel:hover, .user-profile-edit-page .cancel:hover, .user-profile-page .cancel:hover {
|
||||
background: url(../default/media/images/small-button-cancel.png) repeat-x bottom !important; }
|
||||
|
||||
#email-input-fs, #local_login_buttons, #password-fs, #openid-fs {
|
||||
margin-top: 10px; }
|
||||
|
||||
#email-input-fs #id_email, #local_login_buttons #id_email, #password-fs #id_email, #openid-fs #id_email, #email-input-fs #id_username, #local_login_buttons #id_username, #password-fs #id_username, #openid-fs #id_username, #email-input-fs #id_password, #local_login_buttons #id_password, #password-fs #id_password, #openid-fs #id_password {
|
||||
font-size: 12px;
|
||||
line-height: 20px;
|
||||
height: 20px;
|
||||
margin: 0px;
|
||||
padding: 0px 0 0 5px;
|
||||
border: #cce6ec 3px solid;
|
||||
width: 200px; }
|
||||
|
||||
#email-input-fs .submit-b, #local_login_buttons .submit-b, #password-fs .submit-b, #openid-fs .submit-b {
|
||||
background: url(../default/media/images/small-button-blue.png) repeat-x top;
|
||||
border: 0;
|
||||
color: #4a757f;
|
||||
font-weight: bold;
|
||||
font-size: 13px;
|
||||
font-family: arial;
|
||||
height: 24px;
|
||||
margin-top: -2px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
-ms-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
text-shadow: 0px 1px 0px #e6f6fa;
|
||||
-moz-text-shadow: 0px 1px 0px #e6f6fa;
|
||||
-webkit-text-shadow: 0px 1px 0px #e6f6fa;
|
||||
-webkit-box-shadow: 1px 1px 2px #808080;
|
||||
-moz-box-shadow: 1px 1px 2px #808080;
|
||||
box-shadow: 1px 1px 2px #808080; }
|
||||
|
||||
#email-input-fs .submit-b:hover, #local_login_buttons .submit-b:hover, #password-fs .submit-b:hover, #openid-fs .submit-b:hover {
|
||||
background: url(../default/media/images/small-button-blue.png) repeat-x bottom; }
|
||||
|
||||
.openid-input {
|
||||
background: url(../default/media/images/openid.gif) no-repeat;
|
||||
padding-left: 15px;
|
||||
cursor: pointer; }
|
||||
|
||||
.openid-login-input {
|
||||
background-position: center left;
|
||||
background: url(../default/media/images/openid.gif) no-repeat 0% 50%;
|
||||
padding: 5px 5px 5px 15px;
|
||||
cursor: pointer;
|
||||
font-family: trebuchet ms;
|
||||
font-weight: 300;
|
||||
font-size: 150%;
|
||||
width: 500px; }
|
||||
|
||||
.openid-login-submit {
|
||||
height: 40px;
|
||||
width: 80px;
|
||||
line-height: 40px;
|
||||
cursor: pointer;
|
||||
border: 1px solid #777;
|
||||
font-weight: bold;
|
||||
font-size: 120%; }
|
||||
|
||||
.tabbar-user {
|
||||
width: 375px; }
|
||||
|
||||
// .user {
|
||||
// padding: 5px;
|
||||
// line-height: 140%;
|
||||
// width: 166px;
|
||||
// border: #eee 1px solid;
|
||||
// margin-bottom: 5px;
|
||||
// border-radius: 3px;
|
||||
// -ms-border-radius: 3px;
|
||||
// -moz-border-radius: 3px;
|
||||
// -webkit-border-radius: 3px;
|
||||
// -khtml-border-radius: 3px;
|
||||
// .user-micro-info {
|
||||
// color: #525252; }
|
||||
// ul {
|
||||
// margin: 0;
|
||||
// list-style-type: none; }
|
||||
// .thumb {
|
||||
// clear: both;
|
||||
// float: left;
|
||||
// margin-right: 4px;
|
||||
// display: inline; } }
|
||||
|
||||
// .tabbar-tags {
|
||||
// width: 270px;
|
||||
// margin-bottom: 15px; }
|
||||
|
||||
// a {
|
||||
// &.medal {
|
||||
// font-size: 17px;
|
||||
// line-height: 250%;
|
||||
// margin-right: 5px;
|
||||
// color: #333;
|
||||
// text-decoration: none;
|
||||
// background: url(../default/media/images/medala.gif) no-repeat;
|
||||
// border-left: 1px solid #eee;
|
||||
// border-top: 1px solid #eee;
|
||||
// border-bottom: 1px solid #ccc;
|
||||
// border-right: 1px solid #ccc;
|
||||
// padding: 4px 12px 4px 6px; }
|
||||
// &:hover.medal {
|
||||
// color: #333;
|
||||
// text-decoration: none;
|
||||
// background: url(../default/media/images/medala_on.gif) no-repeat;
|
||||
// border-left: 1px solid #e7e296;
|
||||
// border-top: 1px solid #e7e296;
|
||||
// border-bottom: 1px solid #d1ca3d;
|
||||
// border-right: 1px solid #d1ca3d; } }
|
||||
|
||||
#award-list .user {
|
||||
float: left;
|
||||
margin: 5px; }
|
||||
|
||||
.tabbar-profile {
|
||||
width: 100%;
|
||||
margin-bottom: 15px;
|
||||
float: left; }
|
||||
|
||||
// .user-profile-page {
|
||||
// font-size: 13px;
|
||||
// color: #525252;
|
||||
// p {
|
||||
// font-size: 13px;
|
||||
// line-height: 1.3;
|
||||
// color: #525252; }
|
||||
// .avatar img {
|
||||
// border: #eee 1px solid;
|
||||
// padding: 5px; }
|
||||
// h2 {
|
||||
// padding: 10px 0px 10px 0px;
|
||||
// font-family: 'yanone kaffeesatz',sans-serif; } }
|
||||
|
||||
.user-details {
|
||||
font-size: 13px;
|
||||
h3 {
|
||||
font-size: 16px; } }
|
||||
|
||||
.user-about {
|
||||
background-color: #eeeeee;
|
||||
height: 200px;
|
||||
line-height: 20px;
|
||||
overflow: auto;
|
||||
padding: 10px;
|
||||
width: 90%;
|
||||
p {
|
||||
font-size: 13px; } }
|
||||
|
||||
// .follow-toggle, .submit {
|
||||
// border: 0 !important;
|
||||
// color: #4a757f;
|
||||
// font-weight: bold;
|
||||
// font-size: 12px;
|
||||
// height: 26px;
|
||||
// line-height: 26px;
|
||||
// margin-top: -2px;
|
||||
// font-size: 15px;
|
||||
// cursor: pointer;
|
||||
// font-family: 'yanone kaffeesatz',sans-serif;
|
||||
// background: url(../default/media/images/small-button-blue.png) repeat-x top;
|
||||
// border-radius: 4px;
|
||||
// -ms-border-radius: 4px;
|
||||
// -moz-border-radius: 4px;
|
||||
// -webkit-border-radius: 4px;
|
||||
// -khtml-border-radius: 4px;
|
||||
// text-shadow: 0px 1px 0px #e6f6fa;
|
||||
// -moz-text-shadow: 0px 1px 0px #e6f6fa;
|
||||
// -webkit-text-shadow: 0px 1px 0px #e6f6fa;
|
||||
// -webkit-box-shadow: 1px 1px 2px #808080;
|
||||
// -moz-box-shadow: 1px 1px 2px #808080;
|
||||
// box-shadow: 1px 1px 2px #808080; }
|
||||
|
||||
// .follow-toggle:hover, .submit:hover {
|
||||
// background: url(../default/media/images/small-button-blue.png) repeat-x bottom;
|
||||
// text-decoration: none !important; }
|
||||
|
||||
// .follow-toggle {
|
||||
// .follow {
|
||||
// font-color: #000;
|
||||
// font-style: normal; }
|
||||
// .unfollow {
|
||||
// div.unfollow-red {
|
||||
// display: none; }
|
||||
// &:hover div {
|
||||
// &.unfollow-red {
|
||||
// display: inline;
|
||||
// color: #fff;
|
||||
// font-weight: bold;
|
||||
// color: #a05736; }
|
||||
// &.unfollow-green {
|
||||
// display: none; } } } }
|
||||
|
||||
.count {
|
||||
font-family: 'yanone kaffeesatz',sans-serif;
|
||||
font-size: 200%;
|
||||
font-weight: 700;
|
||||
color: #777777; }
|
||||
|
||||
.scorenumber {
|
||||
font-family: 'yanone kaffeesatz',sans-serif;
|
||||
font-size: 35px;
|
||||
font-weight: 800;
|
||||
color: #777;
|
||||
line-height: 40px;
|
||||
margin-top: 3px; }
|
||||
|
||||
.vote-count {
|
||||
font-family: arial;
|
||||
font-size: 160%;
|
||||
font-weight: 700;
|
||||
color: #777; }
|
||||
|
||||
// .answer-summary {
|
||||
// display: block;
|
||||
// clear: both;
|
||||
// padding: 3px; }
|
||||
|
||||
.answer-votes {
|
||||
background-color: #eeeeee;
|
||||
color: #555555;
|
||||
float: left;
|
||||
font-family: arial;
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
height: 17px;
|
||||
padding: 2px 4px 5px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
width: 20px;
|
||||
margin-right: 10px;
|
||||
border-radius: 4px;
|
||||
-ms-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
-khtml-border-radius: 4px; }
|
||||
|
||||
.karma-summary {
|
||||
padding: 5px;
|
||||
font-size: 13px;
|
||||
h3 {
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
padding: 5px; } }
|
||||
|
||||
.karma-diagram {
|
||||
width: 477px;
|
||||
height: 300px;
|
||||
float: left;
|
||||
margin-right: 10px; }
|
||||
|
||||
.karma-details {
|
||||
float: right;
|
||||
width: 450px;
|
||||
height: 250px;
|
||||
overflow-y: auto;
|
||||
word-wrap: break-word;
|
||||
p {
|
||||
margin-bottom: 10px; } }
|
||||
|
||||
.karma-gained {
|
||||
font-weight: bold;
|
||||
background: #eee;
|
||||
width: 25px;
|
||||
margin-right: 5px;
|
||||
color: green;
|
||||
padding: 3px;
|
||||
display: block;
|
||||
float: left;
|
||||
text-align: center;
|
||||
border-radius: 3px;
|
||||
-ms-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
-khtml-border-radius: 3px; }
|
||||
|
||||
.karma-lost {
|
||||
font-weight: bold;
|
||||
background: #eee;
|
||||
width: 25px;
|
||||
color: red;
|
||||
padding: 3px;
|
||||
display: block;
|
||||
margin-right: 5px;
|
||||
float: left;
|
||||
text-align: center;
|
||||
border-radius: 3px;
|
||||
-ms-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
-khtml-border-radius: 3px; }
|
||||
|
||||
.submit-row {
|
||||
margin-bottom: 10px; }
|
||||
|
||||
.revision {
|
||||
margin: 10px 0 10px 0;
|
||||
font-size: 13px;
|
||||
color: #525252;
|
||||
p {
|
||||
font-size: 13px;
|
||||
line-height: 1.3;
|
||||
color: #525252; }
|
||||
h3 {
|
||||
font-family: 'yanone kaffeesatz',sans-serif;
|
||||
font-size: 21px;
|
||||
padding-left: 0px; }
|
||||
.header {
|
||||
background-color: #f5f5f5;
|
||||
padding: 5px;
|
||||
cursor: pointer; }
|
||||
.author {
|
||||
background-color: #e9f3f5; }
|
||||
.summary {
|
||||
padding: 5px 0 10px 0;
|
||||
span {
|
||||
background-color: #fde785;
|
||||
padding: 6px;
|
||||
border-radius: 4px;
|
||||
-ms-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
display: inline;
|
||||
-webkit-box-shadow: 1px 1px 4px #cfb852;
|
||||
-moz-box-shadow: 1px 1px 4px #cfb852;
|
||||
box-shadow: 1px 1px 4px #cfb852; } }
|
||||
.answerbody {
|
||||
padding: 10px 0 5px 10px; }
|
||||
.revision-mark {
|
||||
width: 150px;
|
||||
text-align: left;
|
||||
display: inline-block;
|
||||
font-size: 11px;
|
||||
overflow: hidden;
|
||||
.gravatar {
|
||||
float: left;
|
||||
margin-right: 4px;
|
||||
padding-top: 5px; } }
|
||||
.revision-number {
|
||||
font-size: 300%;
|
||||
font-weight: bold;
|
||||
font-family: sans-serif; } }
|
||||
|
||||
// del {
|
||||
// color: #c34719;
|
||||
// .post-tag {
|
||||
// color: #c34719; } }
|
||||
|
||||
ins {
|
||||
.post-tag, p {
|
||||
background-color: #e6f0a2; }
|
||||
background-color: #e6f0a2; }
|
||||
|
||||
// .vote-notification {
|
||||
// z-index: 1;
|
||||
// cursor: pointer;
|
||||
// display: none;
|
||||
// position: absolute;
|
||||
// font-family: arial;
|
||||
// font-size: 14px;
|
||||
// font-weight: normal;
|
||||
// color: white;
|
||||
// background-color: #8e0000;
|
||||
// text-align: center;
|
||||
// padding-bottom: 10px;
|
||||
// -webkit-box-shadow: 0px 2px 4px #370000;
|
||||
// -moz-box-shadow: 0px 2px 4px #370000;
|
||||
// box-shadow: 0px 2px 4px #370000;
|
||||
// border-radius: 4px;
|
||||
// -ms-border-radius: 4px;
|
||||
// -moz-border-radius: 4px;
|
||||
// -webkit-border-radius: 4px;
|
||||
// -khtml-border-radius: 4px;
|
||||
// h3 {
|
||||
// background: url(../default/media/images/notification.png) repeat-x top;
|
||||
// padding: 10px 10px 10px 10px;
|
||||
// font-size: 13px;
|
||||
// margin-bottom: 5px;
|
||||
// border-top: #8e0000 1px solid;
|
||||
// color: #fff;
|
||||
// font-weight: normal;
|
||||
// border-top-right-radius: 4px;
|
||||
// border-top-left-radius: 4px;
|
||||
// -moz-border-radius-topright: 4px;
|
||||
// -moz-border-radius-topleft: 4px;
|
||||
// -webkit-border-top-left-radius: 4px;
|
||||
// -webkit-border-top-right-radius: 4px; }
|
||||
// a {
|
||||
// color: #fb7321;
|
||||
// text-decoration: underline;
|
||||
// font-weight: bold; } }
|
||||
|
||||
// #ground {
|
||||
// width: 100%;
|
||||
// clear: both;
|
||||
// border-top: 1px solid #000;
|
||||
// padding: 6px 0 0 0;
|
||||
// background: #16160f;
|
||||
// font-size: 16px;
|
||||
// font-family: 'yanone kaffeesatz',sans-serif;
|
||||
// p {
|
||||
// margin-bottom: 0; } }
|
||||
|
||||
.footer-links {
|
||||
color: #eee;
|
||||
text-align: left;
|
||||
width: 500px;
|
||||
float: left;
|
||||
a {
|
||||
color: #e7e8a8; } }
|
||||
|
||||
.powered-link {
|
||||
width: 500px;
|
||||
float: left;
|
||||
text-align: left;
|
||||
a {
|
||||
color: #8ebcc7; } }
|
||||
|
||||
.copyright {
|
||||
color: #616161;
|
||||
width: 450px;
|
||||
float: right;
|
||||
text-align: right;
|
||||
a {
|
||||
color: #8ebcc7; }
|
||||
img.license-logo {
|
||||
margin: 6px 0px 20px 10px;
|
||||
float: right; } }
|
||||
|
||||
.notify-me {
|
||||
float: left; }
|
||||
|
||||
span {
|
||||
&.text-counter {
|
||||
margin-right: 20px; }
|
||||
// &.form-error {
|
||||
// color: #990000;
|
||||
// font-weight: normal;
|
||||
// margin-left: 5px; }
|
||||
}
|
||||
|
||||
p.form-item {
|
||||
margin: 0px; }
|
||||
|
||||
// .deleted {
|
||||
// background: #f4e7e7 none repeat scroll 0 0; }
|
||||
|
||||
.form-row {
|
||||
line-height: 25px; }
|
||||
|
||||
table {
|
||||
&.form-as-table {
|
||||
margin-top: 5px;
|
||||
ul {
|
||||
list-style-type: none;
|
||||
display: inline; }
|
||||
li {
|
||||
display: inline; }
|
||||
td {
|
||||
text-align: right; }
|
||||
th {
|
||||
text-align: left;
|
||||
font-weight: normal; } }
|
||||
&.ab-subscr-form, &.ab-tag-filter-form {
|
||||
width: 45em; } }
|
||||
|
||||
.submit-row {
|
||||
line-height: 30px;
|
||||
padding-top: 10px;
|
||||
display: block;
|
||||
clear: both; }
|
||||
|
||||
.errors {
|
||||
line-height: 20px;
|
||||
color: red; }
|
||||
|
||||
.error {
|
||||
color: darkred;
|
||||
margin: 0;
|
||||
font-size: 10px; }
|
||||
|
||||
label.retag-error {
|
||||
color: darkred;
|
||||
padding-left: 5px;
|
||||
font-size: 10px; }
|
||||
|
||||
.fieldset {
|
||||
border: none;
|
||||
margin-top: 10px;
|
||||
padding: 10px; }
|
||||
|
||||
// span.form-error {
|
||||
// color: #990000;
|
||||
// font-size: 90%;
|
||||
// font-weight: normal;
|
||||
// margin-left: 5px; }
|
||||
|
||||
.favorites-empty {
|
||||
width: 32px;
|
||||
height: 45px;
|
||||
float: left; }
|
||||
|
||||
.user-info-table {
|
||||
margin-bottom: 10px;
|
||||
border-spacing: 0; }
|
||||
|
||||
.user-stats-table .narrow {
|
||||
width: 660px; }
|
||||
|
||||
.narrow .summary h3 {
|
||||
padding: 0px;
|
||||
margin: 0px; }
|
||||
|
||||
.relativetime {
|
||||
font-weight: bold;
|
||||
text-decoration: none; }
|
||||
|
||||
// .narrow .tags {
|
||||
// float: left; }
|
||||
|
||||
.user-action-1 {
|
||||
font-weight: bold;
|
||||
color: #333; }
|
||||
|
||||
.user-action-2 {
|
||||
font-weight: bold;
|
||||
color: #ccc; }
|
||||
|
||||
.user-action-3, .user-action-4 {
|
||||
color: #333; }
|
||||
|
||||
.user-action-5, .user-action-6 {
|
||||
color: darkred; }
|
||||
|
||||
.user-action-7 {
|
||||
color: #333; }
|
||||
|
||||
.user-action-8 {
|
||||
padding: 3px;
|
||||
font-weight: bold;
|
||||
background-color: #ccc;
|
||||
color: #763333; }
|
||||
|
||||
.revision-summary {
|
||||
background-color: #fffe9b;
|
||||
padding: 2px; }
|
||||
|
||||
.question-title-link a {
|
||||
font-weight: bold;
|
||||
color: #0077cc; }
|
||||
|
||||
.answer-title-link a {
|
||||
color: #333; }
|
||||
|
||||
.post-type-1 a, .post-type-3 a, .post-type-5 a {
|
||||
font-weight: bold; }
|
||||
|
||||
.post-type-2 a, .post-type-4 a, .post-type-6 a, .post-type-8 a {
|
||||
color: #333; }
|
||||
|
||||
.hilite, .hilite1 {
|
||||
background-color: #ff0; }
|
||||
|
||||
.hilite2 {
|
||||
background-color: #f0f; }
|
||||
|
||||
.hilite3 {
|
||||
background-color: #0ff; }
|
||||
|
||||
// .gold, .badge1 {
|
||||
// color: #ffcc00; }
|
||||
|
||||
// .silver, .badge2 {
|
||||
// color: #cccccc; }
|
||||
|
||||
// .bronze, .badge3 {
|
||||
// color: #cc9933; }
|
||||
|
||||
.score {
|
||||
font-weight: 800;
|
||||
color: #333; }
|
||||
|
||||
a {
|
||||
&.comment {
|
||||
background: #eee;
|
||||
color: #993300;
|
||||
padding: 5px; }
|
||||
&.offensive {
|
||||
color: #999; } }
|
||||
|
||||
.message {
|
||||
h1 {
|
||||
padding-top: 0px;
|
||||
font-size: 15px; }
|
||||
p {
|
||||
margin-bottom: 0px; } }
|
||||
|
||||
p.space-above {
|
||||
margin-top: 10px; }
|
||||
|
||||
.warning {
|
||||
color: red; }
|
||||
|
||||
button::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border: none; }
|
||||
|
||||
// .submit {
|
||||
// cursor: pointer;
|
||||
// background-color: #d4d0c8;
|
||||
// height: 30px;
|
||||
// border: 1px solid #777777;
|
||||
// font-weight: bold;
|
||||
// font-size: 120%;
|
||||
// &:hover {
|
||||
// text-decoration: underline; }
|
||||
// &.small {
|
||||
// margin-right: 5px;
|
||||
// height: 20px;
|
||||
// font-weight: normal;
|
||||
// font-size: 12px;
|
||||
// padding: 1px 5px;
|
||||
// &:hover {
|
||||
// text-decoration: none; } } }
|
||||
|
||||
.question-page a.submit {
|
||||
display: -moz-inline-stack;
|
||||
display: inline-block;
|
||||
line-height: 30px;
|
||||
padding: 0 5px;
|
||||
*display: inline; }
|
||||
|
||||
.noscript {
|
||||
position: fixed;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: 100%;
|
||||
z-index: 100;
|
||||
padding: 5px 0;
|
||||
text-align: center;
|
||||
font-family: sans-serif;
|
||||
font-size: 120%;
|
||||
font-weight: bold;
|
||||
color: #ffffff;
|
||||
background-color: #ae0000; }
|
||||
|
||||
.big {
|
||||
font-size: 14px; }
|
||||
|
||||
.strong {
|
||||
font-weight: bold; }
|
||||
|
||||
.orange {
|
||||
color: #d64000;
|
||||
font-weight: bold; }
|
||||
|
||||
.grey {
|
||||
color: #808080; }
|
||||
|
||||
.about div {
|
||||
padding: 10px 5px 10px 5px;
|
||||
border-top: 1px dashed #aaaaaa; }
|
||||
|
||||
.highlight {
|
||||
background-color: #fff8c6; }
|
||||
|
||||
.nomargin {
|
||||
margin: 0; }
|
||||
|
||||
.margin-bottom {
|
||||
margin-bottom: 10px; }
|
||||
|
||||
.margin-top {
|
||||
margin-top: 10px; }
|
||||
|
||||
.inline-block {
|
||||
display: inline-block; }
|
||||
|
||||
.action-status {
|
||||
margin: 0;
|
||||
border: none;
|
||||
text-align: center;
|
||||
line-height: 10px;
|
||||
font-size: 12px;
|
||||
padding: 0;
|
||||
span {
|
||||
padding: 3px 5px 3px 5px;
|
||||
background-color: #fff380;
|
||||
font-weight: normal;
|
||||
-moz-border-radius: 5px;
|
||||
-khtml-border-radius: 5px;
|
||||
-webkit-border-radius: 5px; } }
|
||||
|
||||
.list-table td {
|
||||
vertical-align: top; }
|
||||
|
||||
table.form-as-table {
|
||||
.errorlist {
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: 0 0 0 5px;
|
||||
text-align: left;
|
||||
font-size: 10px;
|
||||
color: darkred; }
|
||||
input {
|
||||
display: inline;
|
||||
margin-left: 4px; }
|
||||
th {
|
||||
vertical-align: bottom;
|
||||
padding-bottom: 4px; } }
|
||||
|
||||
.form-row-vertical {
|
||||
margin-top: 8px;
|
||||
display: block;
|
||||
label {
|
||||
margin-bottom: 3px;
|
||||
display: block; } }
|
||||
|
||||
.text-align-right {
|
||||
text-align: center; }
|
||||
|
||||
ul.form-horizontal-rows {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
li {
|
||||
position: relative;
|
||||
height: 40px; }
|
||||
label {
|
||||
display: inline-block; }
|
||||
ul.errorlist {
|
||||
list-style: none;
|
||||
color: darkred;
|
||||
font-size: 10px;
|
||||
line-height: 10px;
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
left: 180px;
|
||||
text-align: left;
|
||||
margin: 0;
|
||||
li {
|
||||
height: 10px; } }
|
||||
label {
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
bottom: 6px;
|
||||
margin: 0px;
|
||||
line-height: 12px;
|
||||
font-size: 12px; }
|
||||
li input {
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
left: 180px;
|
||||
margin: 0px; } }
|
||||
|
||||
.narrow .summary {
|
||||
float: left; }
|
||||
|
||||
.user-profile-tool-links {
|
||||
font-weight: bold;
|
||||
vertical-align: top; }
|
||||
|
||||
// ul {
|
||||
// &.post-tags {
|
||||
// margin-left: 3px;
|
||||
// li {
|
||||
// margin-top: 4px;
|
||||
// margin-bottom: 3px; } }
|
||||
// &.post-retag {
|
||||
// margin-bottom: 0px;
|
||||
// margin-left: 5px; } }
|
||||
|
||||
// #question-controls .tags {
|
||||
// margin: 0 0 3px 0; }
|
||||
|
||||
// #tagselector {
|
||||
// padding-bottom: 2px;
|
||||
// margin-bottom: 0; }
|
||||
|
||||
// #related-tags {
|
||||
// padding-left: 3px; }
|
||||
|
||||
#hideignoredtagscontrol {
|
||||
margin: 5px 0 0 0;
|
||||
label {
|
||||
font-size: 12px;
|
||||
color: #666; } }
|
||||
|
||||
#hideignoredtagscb {
|
||||
margin: 0 2px 0 1px; }
|
||||
|
||||
#recaptcha_widget_div {
|
||||
width: 318px;
|
||||
float: left;
|
||||
clear: both; }
|
||||
|
||||
p.signup_p {
|
||||
margin: 20px 0px 0px 0px; }
|
||||
|
||||
.simple-subscribe-options ul {
|
||||
list-style: none;
|
||||
list-style-position: outside;
|
||||
margin: 0; }
|
||||
|
||||
.wmd-preview {
|
||||
a {
|
||||
color: #1b79bd; }
|
||||
li {
|
||||
margin-bottom: 7px;
|
||||
font-size: 14px; } }
|
||||
|
||||
// .search-result-summary {
|
||||
// font-weight: bold;
|
||||
// font-size: 18px;
|
||||
// line-height: 22px;
|
||||
// margin: 0px 0px 0px 0px;
|
||||
// padding: 2px 0 0 0;
|
||||
// float: left; }
|
||||
|
||||
.faq-rep-item {
|
||||
text-align: right;
|
||||
padding-right: 5px; }
|
||||
|
||||
.user-info-table .gravatar {
|
||||
margin: 0; }
|
||||
|
||||
#responses {
|
||||
clear: both;
|
||||
line-height: 18px;
|
||||
margin-bottom: 15px;
|
||||
div.face {
|
||||
float: left;
|
||||
text-align: center;
|
||||
width: 54px;
|
||||
padding: 3px;
|
||||
overflow: hidden; } }
|
||||
|
||||
.response-parent {
|
||||
margin-top: 18px;
|
||||
strong {
|
||||
font-size: 20px; } }
|
||||
|
||||
.re {
|
||||
min-height: 57px;
|
||||
clear: both;
|
||||
margin-top: 10px; }
|
||||
|
||||
#responses input {
|
||||
float: left; }
|
||||
|
||||
#re_tools {
|
||||
margin-bottom: 10px; }
|
||||
|
||||
#re_sections {
|
||||
margin-bottom: 6px;
|
||||
.on {
|
||||
font-weight: bold; } }
|
||||
|
||||
.avatar-page {
|
||||
ul {
|
||||
list-style: none; }
|
||||
li {
|
||||
display: inline; } }
|
||||
|
||||
// .user-profile-page {
|
||||
// .avatar p {
|
||||
// margin-bottom: 0px; }
|
||||
// .tabbar a#stats {
|
||||
// margin-left: 0; }
|
||||
// img.gravatar {
|
||||
// margin: 2px 0 3px 0; }
|
||||
// h3 {
|
||||
// padding: 0;
|
||||
// margin-top: -3px; } }
|
||||
|
||||
.userlist {
|
||||
font-size: 13px; }
|
||||
|
||||
img.flag {
|
||||
border: 1px solid #eee;
|
||||
vertical-align: text-top; }
|
||||
|
||||
.main-page img.flag {
|
||||
vertical-align: text-bottom; }
|
||||
|
||||
a.edit {
|
||||
padding-left: 3px;
|
||||
color: #145bff; }
|
||||
|
||||
.str {
|
||||
color: #080; }
|
||||
|
||||
.kwd {
|
||||
color: #008; }
|
||||
|
||||
.com {
|
||||
color: #800; }
|
||||
|
||||
.typ {
|
||||
color: #606; }
|
||||
|
||||
.lit {
|
||||
color: #066; }
|
||||
|
||||
.pun {
|
||||
color: #660; }
|
||||
|
||||
.pln {
|
||||
color: #000; }
|
||||
|
||||
// .tag {
|
||||
// color: #008; }
|
||||
|
||||
.atn {
|
||||
color: #606; }
|
||||
|
||||
.atv {
|
||||
color: #080; }
|
||||
|
||||
.dec {
|
||||
color: #606; }
|
||||
|
||||
pre.prettyprint {
|
||||
clear: both;
|
||||
padding: 3px;
|
||||
border: 0px solid #888; }
|
||||
|
||||
// @media print {
|
||||
// .str {
|
||||
// color: #060; }
|
||||
// .kwd {
|
||||
// color: #006;
|
||||
// font-weight: bold; }
|
||||
// .com {
|
||||
// color: #600;
|
||||
// font-style: italic; }
|
||||
// .typ {
|
||||
// color: #404;
|
||||
// font-weight: bold; }
|
||||
// .lit {
|
||||
// color: #044; }
|
||||
// .pun {
|
||||
// color: #440; }
|
||||
// .pln {
|
||||
// color: #000; }
|
||||
// .tag {
|
||||
// color: #006;
|
||||
// font-weight: bold; }
|
||||
// .atn {
|
||||
// color: #404; }
|
||||
// .atv {
|
||||
// color: #060; } }
|
||||
Reference in New Issue
Block a user