From 38bd83858bede136a1ac0a9e6e73ad588402afd8 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Mon, 15 Oct 2012 12:52:21 -0400 Subject: [PATCH 001/308] Make problemset render as a sequential, not a vertical. - Piotr requested this. Hopefully it doesn't break anything, but we should run it by the content fellows before merging. --- common/lib/xmodule/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/lib/xmodule/setup.py b/common/lib/xmodule/setup.py index c123756655..0441357427 100644 --- a/common/lib/xmodule/setup.py +++ b/common/lib/xmodule/setup.py @@ -26,7 +26,7 @@ setup( "image = xmodule.backcompat_module:TranslateCustomTagDescriptor", "error = xmodule.error_module:ErrorDescriptor", "problem = xmodule.capa_module:CapaDescriptor", - "problemset = xmodule.vertical_module:VerticalDescriptor", + "problemset = xmodule.seq_module:SequenceDescriptor", "section = xmodule.backcompat_module:SemanticSectionDescriptor", "sequential = xmodule.seq_module:SequenceDescriptor", "slides = xmodule.backcompat_module:TranslateCustomTagDescriptor", From f296815d515c81eeeb8e890976a280281fe6c483 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Mon, 22 Oct 2012 19:50:34 -0400 Subject: [PATCH 002/308] added instrumentation to count: user logins, registrations, correct answers, wrong answers, enrollment --- common/djangoapps/student/views.py | 9 ++++++--- common/lib/capa/capa/correctmap.py | 7 ++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index b2fcc73ca3..db9367ba23 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -39,6 +39,8 @@ from collections import namedtuple from courseware.courses import get_courses_by_university from courseware.access import has_access +from statsd import statsd + log = logging.getLogger("mitx.student") Article = namedtuple('Article', 'title url author image deck publication publish_date') @@ -204,7 +206,7 @@ def change_enrollment(request): return {'success': False, 'error': 'enrollment in {} not allowed at this time' .format(course.display_name)} - + statsd.increment("user.enrollment_in_" + str(course_id)) enrollment, created = CourseEnrollment.objects.get_or_create(user=user, course_id=course.id) return {'success': True} @@ -212,6 +214,7 @@ def change_enrollment(request): try: enrollment = CourseEnrollment.objects.get(user=user, course_id=course_id) enrollment.delete() + statsd.increment("user.unenrollment_in_" + str(course_id)) return {'success': True} except CourseEnrollment.DoesNotExist: return {'success': False, 'error': 'You are not enrolled for this course.'} @@ -260,7 +263,7 @@ def login_user(request, error=""): log.info("Login success - {0} ({1})".format(username, email)) try_change_enrollment(request) - + statsd.increment("user.successful_login") return HttpResponse(json.dumps({'success': True})) log.warning("Login failed - Account not active for user {0}, resending activation".format(username)) @@ -466,7 +469,7 @@ def create_account(request, post_override=None): log.debug('bypassing activation email') login_user.is_active = True login_user.save() - + statsd.increment("user.account_created") js = {'success': True} return HttpResponse(json.dumps(js), mimetype="application/json") diff --git a/common/lib/capa/capa/correctmap.py b/common/lib/capa/capa/correctmap.py index 227f85bc8e..e61f6f6a9c 100644 --- a/common/lib/capa/capa/correctmap.py +++ b/common/lib/capa/capa/correctmap.py @@ -2,7 +2,7 @@ # class used to store graded responses to CAPA questions # # Used by responsetypes and capa_problem - +from statsd import statsd class CorrectMap(object): """ @@ -53,6 +53,11 @@ class CorrectMap(object): 'hintmode': hintmode, 'queuestate': queuestate, } + + if correctness=="correct": + statsd.increment("user.correct_answer") + else: + statsd.increment("user.incorrect_answer) def __repr__(self): return repr(self.cmap) From 3ba45fec73b0e975c6f761782e3908bbfe79f82b Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Mon, 22 Oct 2012 20:01:39 -0400 Subject: [PATCH 003/308] added instrumentation, including user logins,registrations,enrollment,correct answers --- common/lib/capa/capa/correctmap.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/lib/capa/capa/correctmap.py b/common/lib/capa/capa/correctmap.py index e61f6f6a9c..bbe09a3c57 100644 --- a/common/lib/capa/capa/correctmap.py +++ b/common/lib/capa/capa/correctmap.py @@ -57,7 +57,7 @@ class CorrectMap(object): if correctness=="correct": statsd.increment("user.correct_answer") else: - statsd.increment("user.incorrect_answer) + statsd.increment("user.incorrect_answer") def __repr__(self): return repr(self.cmap) From e02d8403e70ed3ca0af8dccdeae3439d563493d5 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Tue, 23 Oct 2012 09:25:08 -0400 Subject: [PATCH 004/308] updated requirements --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 2ebca50bc5..dc13ae873e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -50,3 +50,4 @@ pygraphviz -r repo-requirements.txt pil nltk +dogstatsd-python \ No newline at end of file From d76241e6ae4fde67b3de17f49a74a922629a97b1 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Tue, 23 Oct 2012 10:56:00 -0400 Subject: [PATCH 005/308] prefix metrics with lms, use tags for enrollment --- common/djangoapps/student/views.py | 8 ++++---- common/lib/capa/capa/correctmap.py | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index db9367ba23..00dee79cdc 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -206,7 +206,7 @@ def change_enrollment(request): return {'success': False, 'error': 'enrollment in {} not allowed at this time' .format(course.display_name)} - statsd.increment("user.enrollment_in_" + str(course_id)) + statsd.increment("lms.user.enrollment",tags=["course:" + str(course_id)]) enrollment, created = CourseEnrollment.objects.get_or_create(user=user, course_id=course.id) return {'success': True} @@ -214,7 +214,7 @@ def change_enrollment(request): try: enrollment = CourseEnrollment.objects.get(user=user, course_id=course_id) enrollment.delete() - statsd.increment("user.unenrollment_in_" + str(course_id)) + statsd.increment("lms.user.unenrollment", tags=["course:"+ str(course_id)]) return {'success': True} except CourseEnrollment.DoesNotExist: return {'success': False, 'error': 'You are not enrolled for this course.'} @@ -263,7 +263,7 @@ def login_user(request, error=""): log.info("Login success - {0} ({1})".format(username, email)) try_change_enrollment(request) - statsd.increment("user.successful_login") + statsd.increment("lms.user.successful_login") return HttpResponse(json.dumps({'success': True})) log.warning("Login failed - Account not active for user {0}, resending activation".format(username)) @@ -469,7 +469,7 @@ def create_account(request, post_override=None): log.debug('bypassing activation email') login_user.is_active = True login_user.save() - statsd.increment("user.account_created") + statsd.increment("lms.user.account_created") js = {'success': True} return HttpResponse(json.dumps(js), mimetype="application/json") diff --git a/common/lib/capa/capa/correctmap.py b/common/lib/capa/capa/correctmap.py index bbe09a3c57..fdc4b44253 100644 --- a/common/lib/capa/capa/correctmap.py +++ b/common/lib/capa/capa/correctmap.py @@ -55,9 +55,9 @@ class CorrectMap(object): } if correctness=="correct": - statsd.increment("user.correct_answer") + statsd.increment("lms.user.correct_answer") else: - statsd.increment("user.incorrect_answer") + statsd.increment("lms.user.incorrect_answer") def __repr__(self): return repr(self.cmap) From 51f3b7195e67b9b55af937dd93cad3b498a683d0 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Tue, 23 Oct 2012 13:20:37 -0400 Subject: [PATCH 006/308] roll back changes to common --- common/lib/capa/capa/correctmap.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/common/lib/capa/capa/correctmap.py b/common/lib/capa/capa/correctmap.py index fdc4b44253..3c4f43a1d6 100644 --- a/common/lib/capa/capa/correctmap.py +++ b/common/lib/capa/capa/correctmap.py @@ -2,7 +2,6 @@ # class used to store graded responses to CAPA questions # # Used by responsetypes and capa_problem -from statsd import statsd class CorrectMap(object): """ @@ -53,11 +52,6 @@ class CorrectMap(object): 'hintmode': hintmode, 'queuestate': queuestate, } - - if correctness=="correct": - statsd.increment("lms.user.correct_answer") - else: - statsd.increment("lms.user.incorrect_answer") def __repr__(self): return repr(self.cmap) From b1cfee4592df436a52103ef4b3b9a94826eeccf2 Mon Sep 17 00:00:00 2001 From: Louis Sobel Date: Tue, 23 Oct 2012 14:50:17 -0400 Subject: [PATCH 007/308] Add support for subtitle download link Add a download link to the video player. The link is defined in the content xml using the following structure: --- common/lib/xmodule/xmodule/video_module.py | 22 ++++++++++++++++++---- lms/templates/video.html | 6 ++++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/common/lib/xmodule/xmodule/video_module.py b/common/lib/xmodule/xmodule/video_module.py index 11c90f45ef..9a22950ca8 100644 --- a/common/lib/xmodule/xmodule/video_module.py +++ b/common/lib/xmodule/xmodule/video_module.py @@ -32,6 +32,7 @@ class VideoModule(XModule): self.position = 0 self.show_captions = xmltree.get('show_captions', 'true') self.source = self._get_source(xmltree) + self.track = self._get_track(xmltree) if instance_state is not None: state = json.loads(instance_state) @@ -40,13 +41,25 @@ class VideoModule(XModule): def _get_source(self, xmltree): # find the first valid source - source = None - for element in xmltree.findall('source'): + return self._get_first_external(xmltree, 'source') + + def _get_track(self, xmltree): + # find the first valid track + return self._get_first_external(xmltree, 'track') + + def _get_first_external(self, xmltree, tag): + """ + Will return the first valid element + of the given tag. + 'valid' means has a non-empty 'src' attribute + """ + result = None + for element in xmltree.findall(tag): src = element.get('src') if src: - source = src + result = src break - return source + return result def handle_ajax(self, dispatch, get): ''' @@ -85,6 +98,7 @@ class VideoModule(XModule): 'id': self.location.html_id(), 'position': self.position, 'source': self.source, + 'track' : self.track, 'display_name': self.display_name, # TODO (cpennington): This won't work when we move to data that isn't on the filesystem 'data_dir': self.metadata['data_dir'], diff --git a/lms/templates/video.html b/lms/templates/video.html index 47556095cb..5c041d5c70 100644 --- a/lms/templates/video.html +++ b/lms/templates/video.html @@ -18,3 +18,9 @@

Download video here.

% endif + +% if track: +
+

Download subtitles here.

+
+% endif From 3e2cf18772909225167919e8f95f9d9c3773815b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s=20Rocha?= Date: Tue, 23 Oct 2012 16:11:07 -0400 Subject: [PATCH 008/308] Add some extra console commands for handling user permissions --- .../management/commands/add_to_group.py | 62 +++++++++++++++++++ .../student/management/commands/set_staff.py | 34 ++++++---- .../management/commands/assign_role.py | 36 ++++++++--- 3 files changed, 112 insertions(+), 20 deletions(-) create mode 100644 common/djangoapps/student/management/commands/add_to_group.py diff --git a/common/djangoapps/student/management/commands/add_to_group.py b/common/djangoapps/student/management/commands/add_to_group.py new file mode 100644 index 0000000000..209d25da85 --- /dev/null +++ b/common/djangoapps/student/management/commands/add_to_group.py @@ -0,0 +1,62 @@ +from optparse import make_option + +from django.core.management.base import BaseCommand, CommandError +from django.contrib.auth.models import User, Group + +class Command(BaseCommand): + option_list = BaseCommand.option_list + ( + make_option('--list', + action='store_true', + dest='list', + default=False, + help='List available groups'), + make_option('--create', + action='store_true', + dest='create', + default=False, + help='Create the group if it does not exist'), + make_option('--remove', + action='store_true', + dest='remove', + default=False, + help='Remove the user from the group instead of adding it'), + ) + + args = ' ' + help = 'Add a user to a group' + + def print_groups(self): + print 'Groups available:' + for group in Group.objects.all().distinct(): + print ' ', group.name + + def handle(self, *args, **options): + if options['list']: + self.print_groups() + return + + if len(args) != 2: + raise CommandError('Usage is add_to_group {0}'.format(self.args)) + + name_or_email, group_name = args + + if '@' in name_or_email: + user = User.objects.get(email=name_or_email) + else: + user = User.objects.get(username=name_or_email) + + try: + group = Group.objects.get(name=group_name) + except Group.DoesNotExist: + if options['create']: + group = Group(name=group_name) + group.save() + else: + raise CommandError('Group {} does not exist'.format(group_name)) + + if options['remove']: + user.groups.remove(group) + else: + user.groups.add(group) + + print 'Success!' diff --git a/common/djangoapps/student/management/commands/set_staff.py b/common/djangoapps/student/management/commands/set_staff.py index 5e7df1f585..30d0483f50 100644 --- a/common/djangoapps/student/management/commands/set_staff.py +++ b/common/djangoapps/student/management/commands/set_staff.py @@ -1,37 +1,47 @@ +from optparse import make_option + from django.contrib.auth.models import User from django.core.management.base import BaseCommand, CommandError import re class Command(BaseCommand): + option_list = BaseCommand.option_list + ( + make_option('--unset', + action='store_true', + dest='unset', + default=False, + help='Set is_staff to False instead of True'), + ) - args = '' + args = ' [user|email ...]>' help = """ - This command will set isstaff to true for one or more users. + This command will set is_staff to true for one or more users. Lookup by username or email address, assumes usernames do not look like email addresses. """ - def handle(self, *args, **kwargs): - + def handle(self, *args, **options): if len(args) < 1: - print Command.help - return + raise CommandError('Usage is set_staff {0}'.format(self.args)) for user in args: - if re.match('[^@]+@[^@]+\.[^@]+', user): try: v = User.objects.get(email=user) except: - raise CommandError("User {0} does not exist".format( - user)) + raise CommandError("User {0} does not exist".format(user)) else: try: v = User.objects.get(username=user) except: - raise CommandError("User {0} does not exist".format( - user)) + raise CommandError("User {0} does not exist".format(user)) + + if options['unset']: + v.is_staff = False + else: + v.is_staff = True - v.is_staff = True v.save() + + print 'Success!' diff --git a/lms/djangoapps/django_comment_client/management/commands/assign_role.py b/lms/djangoapps/django_comment_client/management/commands/assign_role.py index 82daa34622..655631008f 100644 --- a/lms/djangoapps/django_comment_client/management/commands/assign_role.py +++ b/lms/djangoapps/django_comment_client/management/commands/assign_role.py @@ -1,18 +1,38 @@ +from optparse import make_option + from django.core.management.base import BaseCommand, CommandError -from django_comment_client.models import Permission, Role +from django_comment_client.models import Role from django.contrib.auth.models import User class Command(BaseCommand): - args = 'user role course_id' - help = 'Assign a role to a user' + option_list = BaseCommand.option_list + ( + make_option('--remove', + action='store_true', + dest='remove', + default=False, + help='Remove the role instead of adding it'), + ) + + args = ' ' + help = 'Assign a discussion forum role to a user ' def handle(self, *args, **options): - role = Role.objects.get(name=args[1], course_id=args[2]) + if len(args) != 3: + raise CommandError('Usage is assign_role {0}'.format(self.args)) - if '@' in args[0]: - user = User.objects.get(email=args[0]) + name_or_email, role, course_id = args + + role = Role.objects.get(name=role, course_id=course_id) + + if '@' in name_or_email: + user = User.objects.get(email=name_or_email) else: - user = User.objects.get(username=args[0]) + user = User.objects.get(username=name_or_email) - user.roles.add(role) \ No newline at end of file + if options['remove']: + user.roles.remove(role) + else: + user.roles.add(role) + + print 'Success!' From 76ffbfc4a1418f1baa5c53e51f3f42aa19d3d3ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s=20Rocha?= Date: Tue, 23 Oct 2012 17:26:00 -0400 Subject: [PATCH 009/308] Increase the limit of files that can be uploaded by a student --- lms/envs/common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lms/envs/common.py b/lms/envs/common.py index 9b98e4ecfd..38e9940bd8 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -172,7 +172,7 @@ TEMPLATE_CONTEXT_PROCESSORS = ( ) STUDENT_FILEUPLOAD_MAX_SIZE = 4*1000*1000 # 4 MB -MAX_FILEUPLOADS_PER_INPUT = 10 +MAX_FILEUPLOADS_PER_INPUT = 20 # FIXME: # We should have separate S3 staged URLs in case we need to make changes to From 64b117a7c2a7cb333ef4f04ce644c64731f3067b Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Tue, 23 Oct 2012 18:14:16 -0400 Subject: [PATCH 010/308] changed metric names, added into render page --- common/djangoapps/student/views.py | 14 ++++++++++++-- lms/djangoapps/courseware/module_render.py | 11 +++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index 00dee79cdc..8d93d06a7c 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -206,7 +206,10 @@ def change_enrollment(request): return {'success': False, 'error': 'enrollment in {} not allowed at this time' .format(course.display_name)} - statsd.increment("lms.user.enrollment",tags=["course:" + str(course_id)]) + + split_course=course_id.split("/") + statsd.increment("lms.user.enrollment",tags=["org:" + str(split_course[0]),"course:" + str(split_course[1]),"run:" + str(split_course[2])]) + enrollment, created = CourseEnrollment.objects.get_or_create(user=user, course_id=course.id) return {'success': True} @@ -214,7 +217,10 @@ def change_enrollment(request): try: enrollment = CourseEnrollment.objects.get(user=user, course_id=course_id) enrollment.delete() - statsd.increment("lms.user.unenrollment", tags=["course:"+ str(course_id)]) + + split_course=course_id.split("/") + statsd.increment("lms.user.unenrollment",tags=["org:" + str(split_course[0]),"course:" + str(split_course[1]),"run:" + str(split_course[2])]) + return {'success': True} except CourseEnrollment.DoesNotExist: return {'success': False, 'error': 'You are not enrolled for this course.'} @@ -263,7 +269,9 @@ def login_user(request, error=""): log.info("Login success - {0} ({1})".format(username, email)) try_change_enrollment(request) + statsd.increment("lms.user.successful_login") + return HttpResponse(json.dumps({'success': True})) log.warning("Login failed - Account not active for user {0}, resending activation".format(username)) @@ -469,7 +477,9 @@ def create_account(request, post_override=None): log.debug('bypassing activation email') login_user.is_active = True login_user.save() + statsd.increment("lms.user.account_created") + js = {'success': True} return HttpResponse(json.dumps(js), mimetype="application/json") diff --git a/lms/djangoapps/courseware/module_render.py b/lms/djangoapps/courseware/module_render.py index 1e45822ebf..6e6f3c9189 100644 --- a/lms/djangoapps/courseware/module_render.py +++ b/lms/djangoapps/courseware/module_render.py @@ -28,6 +28,8 @@ from xmodule.x_module import ModuleSystem from xmodule.error_module import ErrorDescriptor, NonStaffErrorDescriptor from xmodule_modifiers import replace_course_urls, replace_static_urls, add_histogram, wrap_xmodule +from statsd import statsd + log = logging.getLogger("mitx.courseware") @@ -381,6 +383,10 @@ def xqueue_callback(request, course_id, userid, id, dispatch): instance_module.grade = instance.get_score()['score'] if instance_module.grade != oldgrade or instance_module.state != old_instance_state: instance_module.save() + + course_split=course_id.split("/") + if(instance_module.state=="correct" or instance_module.state=="incorrect"): + statsd.increment("lms.user.question_answered",tags=["org:" + str(course_split[0]),"course:" + str(course_split[1]), "run:" + str(course_split[2]), "answer:" + str(instance_module.state), "score:" + str(instance_module.grade), "type:xqueue"]) return HttpResponse("") @@ -465,6 +471,11 @@ def modx_dispatch(request, dispatch, location, course_id): instance_module.state != old_instance_state or instance_module.max_grade != old_instance_max_grade): instance_module.save() + + course_split=course_id.split("/") + if(instance_module.state=="correct" or instance_module.state=="incorrect"): + statsd.increment("lms.user.question_answered",tags=["org:" + str(course_split[0]),"course:" + str(course_split[1]), "run:" + str(course_split[2]), "answer:" + str(instance_module.state), "score:" + str(instance_module.grade), "type:ajax"]) + if shared_module is not None: shared_module.state = instance.get_shared_state() From 57a78637f21170b45223bc81b1e06b1209ae2b92 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Tue, 23 Oct 2012 18:58:11 -0400 Subject: [PATCH 011/308] pep8 fixes and score bucketing --- lms/djangoapps/courseware/module_render.py | 31 ++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/lms/djangoapps/courseware/module_render.py b/lms/djangoapps/courseware/module_render.py index 6e6f3c9189..9b9c621d84 100644 --- a/lms/djangoapps/courseware/module_render.py +++ b/lms/djangoapps/courseware/module_render.py @@ -384,10 +384,20 @@ def xqueue_callback(request, course_id, userid, id, dispatch): if instance_module.grade != oldgrade or instance_module.state != old_instance_state: instance_module.save() - course_split=course_id.split("/") + score_bucket=0 + if(instance_module.grade>0 and instance_module.grade0 and instance_module.grade Date: Tue, 23 Oct 2012 19:00:26 -0400 Subject: [PATCH 012/308] bugfix --- lms/djangoapps/courseware/module_render.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lms/djangoapps/courseware/module_render.py b/lms/djangoapps/courseware/module_render.py index 9b9c621d84..0fdbb91ac3 100644 --- a/lms/djangoapps/courseware/module_render.py +++ b/lms/djangoapps/courseware/module_render.py @@ -396,7 +396,7 @@ def xqueue_callback(request, course_id, userid, id, dispatch): tags=["org:{0}".format(org), "course:{0}".format(course_num), "run:{0}".format(run), - "score_bucket:{0}".format(score_bucket)), + "score_bucket:{0}".format(score_bucket), "type:xqueue"]) return HttpResponse("") @@ -494,7 +494,7 @@ def modx_dispatch(request, dispatch, location, course_id): tags=["org:{0}".format(org), "course:{0}".format(course_num), "run:{0}".format(run), - "score_bucket:{0}".format(score_bucket)), + "score_bucket:{0}".format(score_bucket), "type:ajax"]) From 952b3468cf17e65d92ea0b9ff2ed210227ebe140 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Tue, 23 Oct 2012 19:07:06 -0400 Subject: [PATCH 013/308] pep8 in views, remove instance state check --- common/djangoapps/student/views.py | 16 ++++++++----- lms/djangoapps/courseware/module_render.py | 26 ++++++++++------------ 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index 8d93d06a7c..2cface304c 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -207,8 +207,11 @@ def change_enrollment(request): 'error': 'enrollment in {} not allowed at this time' .format(course.display_name)} - split_course=course_id.split("/") - statsd.increment("lms.user.enrollment",tags=["org:" + str(split_course[0]),"course:" + str(split_course[1]),"run:" + str(split_course[2])]) + org, course_num, run=course_id.split("/") + statsd.increment("lms.user.enrollment", + tags=["org:{0}".format(org), + "course:{0}".format(course_num), + "run:{0}".format(run)]) enrollment, created = CourseEnrollment.objects.get_or_create(user=user, course_id=course.id) return {'success': True} @@ -218,9 +221,12 @@ def change_enrollment(request): enrollment = CourseEnrollment.objects.get(user=user, course_id=course_id) enrollment.delete() - split_course=course_id.split("/") - statsd.increment("lms.user.unenrollment",tags=["org:" + str(split_course[0]),"course:" + str(split_course[1]),"run:" + str(split_course[2])]) - + org, course_num, run=course_id.split("/") + statsd.increment("lms.user.unenrollment", + tags=["org:{0}".format(org), + "course:{0}".format(course_num), + "run:{0}".format(run)]) + return {'success': True} except CourseEnrollment.DoesNotExist: return {'success': False, 'error': 'You are not enrolled for this course.'} diff --git a/lms/djangoapps/courseware/module_render.py b/lms/djangoapps/courseware/module_render.py index 0fdbb91ac3..8c91405b96 100644 --- a/lms/djangoapps/courseware/module_render.py +++ b/lms/djangoapps/courseware/module_render.py @@ -391,13 +391,12 @@ def xqueue_callback(request, course_id, userid, id, dispatch): score_bucket=2 org, course_num, run=course_id.split("/") - if(instance_module.state=="correct" or instance_module.state=="incorrect"): - statsd.increment("lms.user.question_answered", - tags=["org:{0}".format(org), - "course:{0}".format(course_num), - "run:{0}".format(run), - "score_bucket:{0}".format(score_bucket), - "type:xqueue"]) + statsd.increment("lms.user.question_answered", + tags=["org:{0}".format(org), + "course:{0}".format(course_num), + "run:{0}".format(run), + "score_bucket:{0}".format(score_bucket), + "type:xqueue"]) return HttpResponse("") @@ -489,13 +488,12 @@ def modx_dispatch(request, dispatch, location, course_id): score_bucket=2 org, course_num, run=course_id.split("/") - if(instance_module.state=="correct" or instance_module.state=="incorrect"): - statsd.increment("lms.user.question_answered", - tags=["org:{0}".format(org), - "course:{0}".format(course_num), - "run:{0}".format(run), - "score_bucket:{0}".format(score_bucket), - "type:ajax"]) + statsd.increment("lms.user.question_answered", + tags=["org:{0}".format(org), + "course:{0}".format(course_num), + "run:{0}".format(run), + "score_bucket:{0}".format(score_bucket), + "type:ajax"]) if shared_module is not None: From 4360d10aece77fb238001e2e0539ead8c2e1cf0d Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Tue, 23 Oct 2012 19:12:08 -0400 Subject: [PATCH 014/308] altered spacing --- common/djangoapps/student/views.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index 2cface304c..dc541ff40b 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -223,9 +223,9 @@ def change_enrollment(request): org, course_num, run=course_id.split("/") statsd.increment("lms.user.unenrollment", - tags=["org:{0}".format(org), - "course:{0}".format(course_num), - "run:{0}".format(run)]) + tags=["org:{0}".format(org), + "course:{0}".format(course_num), + "run:{0}".format(run)]) return {'success': True} except CourseEnrollment.DoesNotExist: From a5085565212a7f9b77557415954cbd08e69a3dd5 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Wed, 24 Oct 2012 11:50:38 -0300 Subject: [PATCH 015/308] Fix typo --- doc/xml-format.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/xml-format.md b/doc/xml-format.md index 2c06e28fb6..ac9fbb5e40 100644 --- a/doc/xml-format.md +++ b/doc/xml-format.md @@ -308,7 +308,7 @@ __Inherited:__ * `start` -- when this content should be shown to students. Note that anyone with staff access to the course will always see everything. * `showanswer` - When to show answer. For 'attempted', will show answer after first attempt. Values: never, attempted, answered, closed. Default: closed. Optional. * `graded` - Whether this section will count towards the students grade. "true" or "false". Defaults to "false". -* `rerandomise` - Randomize question on each attempt. Values: 'always' (students see a different version of the problem after each attempt to solve it) +* `rerandomize` - Randomize question on each attempt. Values: 'always' (students see a different version of the problem after each attempt to solve it) 'onreset' (randomize question when reset button is pressed by the student) 'never' (all students see the same version of the problem) 'per_student' (individual students see the same version of the problem each time the look at it, but that version is different from what other students see) From e4ffb2a514c608db8bb07c1694f8be34bf897212 Mon Sep 17 00:00:00 2001 From: David Ormsbee Date: Wed, 24 Oct 2012 11:15:14 -0400 Subject: [PATCH 016/308] Add TestCenterUser model and export for Pearson --- .../management/commands/pearson_export_cdd.py | 60 ++++++ .../migrations/0020_add_test_center_user.py | 186 ++++++++++++++++++ common/djangoapps/student/models.py | 66 +++++++ 3 files changed, 312 insertions(+) create mode 100644 common/djangoapps/student/management/commands/pearson_export_cdd.py create mode 100644 common/djangoapps/student/migrations/0020_add_test_center_user.py diff --git a/common/djangoapps/student/management/commands/pearson_export_cdd.py b/common/djangoapps/student/management/commands/pearson_export_cdd.py new file mode 100644 index 0000000000..ce90531941 --- /dev/null +++ b/common/djangoapps/student/management/commands/pearson_export_cdd.py @@ -0,0 +1,60 @@ +import csv +from collections import OrderedDict +from datetime import datetime + +from django.core.management.base import BaseCommand, CommandError + +from student.models import TestCenterUser + +class Command(BaseCommand): + CSV_TO_MODEL_FIELDS = OrderedDict([ + ("ClientCandidateID", "client_candidate_id"), + ("FirstName", "first_name"), + ("LastName", "last_name"), + ("MiddleName", "middle_name"), + ("Suffix", "suffix"), + ("Salutation", "salutation"), + ("Email", "email"), + # Skipping optional fields Username and Password + ("Address1", "address_1"), + ("Address2", "address_2"), + ("Address3", "address_3"), + ("City", "city"), + ("State", "state"), + ("PostalCode", "postal_code"), + ("Country", "country"), + ("Phone", "phone"), + ("Extension", "extension"), + ("PhoneCountryCode", "phone_country_code"), + ("FAX", "fax"), + ("FAXCountryCode", "fax_country_code"), + ("CompanyName", "company_name"), + # Skipping optional field CustomQuestion + ("LastUpdate", "user_updated_at"), # in UTC, so same as what we store + ]) + + args = '' + help = """ + Export user information from TestCenterUser model into a tab delimited + text file with a format that Pearson expects. + """ + def handle(self, *args, **kwargs): + if len(args) < 1: + print Command.help + return + + + with open(args[0], "wb") as outfile: + writer = csv.DictWriter(outfile, + Command.CSV_TO_MODEL_FIELDS, + delimiter="\t", + quoting=csv.QUOTE_MINIMAL, + extrasaction='ignore') + writer.writeheader() + for tcu in TestCenterUser.objects.order_by('id'): + record = dict((csv_field, getattr(tcu, model_field)) + for csv_field, model_field + in Command.CSV_TO_MODEL_FIELDS.items()) + record["LastUpdate"] = record["LastUpdate"].strftime("%Y/%m/%d %H:%M:%S") + writer.writerow(record) + diff --git a/common/djangoapps/student/migrations/0020_add_test_center_user.py b/common/djangoapps/student/migrations/0020_add_test_center_user.py new file mode 100644 index 0000000000..f3b729afdc --- /dev/null +++ b/common/djangoapps/student/migrations/0020_add_test_center_user.py @@ -0,0 +1,186 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding model 'TestCenterUser' + db.create_table('student_testcenteruser', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('created_at', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, db_index=True, blank=True)), + ('updated_at', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, db_index=True, blank=True)), + ('user_updated_at', self.gf('django.db.models.fields.DateTimeField')(db_index=True)), + ('candidate_id', self.gf('django.db.models.fields.IntegerField')(null=True, db_index=True)), + ('client_candidate_id', self.gf('django.db.models.fields.CharField')(max_length=50, db_index=True)), + ('first_name', self.gf('django.db.models.fields.CharField')(max_length=30, db_index=True)), + ('last_name', self.gf('django.db.models.fields.CharField')(max_length=50, db_index=True)), + ('middle_name', self.gf('django.db.models.fields.CharField')(max_length=30, blank=True)), + ('suffix', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('salutation', self.gf('django.db.models.fields.CharField')(max_length=50, blank=True)), + ('address_1', self.gf('django.db.models.fields.CharField')(max_length=40)), + ('address_2', self.gf('django.db.models.fields.CharField')(max_length=40, blank=True)), + ('address_3', self.gf('django.db.models.fields.CharField')(max_length=40, blank=True)), + ('city', self.gf('django.db.models.fields.CharField')(max_length=32, db_index=True)), + ('state', self.gf('django.db.models.fields.CharField')(db_index=True, max_length=20, blank=True)), + ('postal_code', self.gf('django.db.models.fields.CharField')(db_index=True, max_length=16, blank=True)), + ('country', self.gf('django.db.models.fields.CharField')(max_length=3, db_index=True)), + ('phone', self.gf('django.db.models.fields.CharField')(max_length=35)), + ('extension', self.gf('django.db.models.fields.CharField')(db_index=True, max_length=8, blank=True)), + ('phone_country_code', self.gf('django.db.models.fields.CharField')(max_length=3, db_index=True)), + ('fax', self.gf('django.db.models.fields.CharField')(max_length=35, blank=True)), + ('fax_country_code', self.gf('django.db.models.fields.CharField')(max_length=3, blank=True)), + ('company_name', self.gf('django.db.models.fields.CharField')(max_length=50, blank=True)), + )) + db.send_create_signal('student', ['TestCenterUser']) + + + def backwards(self, orm): + # Deleting model 'TestCenterUser' + db.delete_table('student_testcenteruser') + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}), + 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), + 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}), + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}), + 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), + 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}), + 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}), + 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}), + 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}), + 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}), + 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + 'student.courseenrollment': { + 'Meta': {'unique_together': "(('user', 'course_id'),)", 'object_name': 'CourseEnrollment'}, + 'course_id': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'student.pendingemailchange': { + 'Meta': {'object_name': 'PendingEmailChange'}, + 'activation_key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32', 'db_index': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'new_email': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) + }, + 'student.pendingnamechange': { + 'Meta': {'object_name': 'PendingNameChange'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'new_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'rationale': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) + }, + 'student.registration': { + 'Meta': {'object_name': 'Registration', 'db_table': "'auth_registration'"}, + 'activation_key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32', 'db_index': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'unique': 'True'}) + }, + 'student.testcenteruser': { + 'Meta': {'object_name': 'TestCenterUser'}, + 'address_1': ('django.db.models.fields.CharField', [], {'max_length': '40'}), + 'address_2': ('django.db.models.fields.CharField', [], {'max_length': '40', 'blank': 'True'}), + 'address_3': ('django.db.models.fields.CharField', [], {'max_length': '40', 'blank': 'True'}), + 'candidate_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'db_index': 'True'}), + 'city': ('django.db.models.fields.CharField', [], {'max_length': '32', 'db_index': 'True'}), + 'client_candidate_id': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), + 'company_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '3', 'db_index': 'True'}), + 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}), + 'extension': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '8', 'blank': 'True'}), + 'fax': ('django.db.models.fields.CharField', [], {'max_length': '35', 'blank': 'True'}), + 'fax_country_code': ('django.db.models.fields.CharField', [], {'max_length': '3', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'db_index': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), + 'middle_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '35'}), + 'phone_country_code': ('django.db.models.fields.CharField', [], {'max_length': '3', 'db_index': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '16', 'blank': 'True'}), + 'salutation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}), + 'state': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '20', 'blank': 'True'}), + 'suffix': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}), + 'user_updated_at': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}) + }, + 'student.userprofile': { + 'Meta': {'object_name': 'UserProfile', 'db_table': "'auth_userprofile'"}, + 'courseware': ('django.db.models.fields.CharField', [], {'default': "'course.xml'", 'max_length': '255', 'blank': 'True'}), + 'gender': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '6', 'null': 'True', 'blank': 'True'}), + 'goals': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'language': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}), + 'level_of_education': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '6', 'null': 'True', 'blank': 'True'}), + 'location': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}), + 'mailing_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'meta': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'profile'", 'unique': 'True', 'to': "orm['auth.User']"}), + 'year_of_birth': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}) + }, + 'student.usertestgroup': { + 'Meta': {'object_name': 'UserTestGroup'}, + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '32', 'db_index': 'True'}), + 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'db_index': 'True', 'symmetrical': 'False'}) + } + } + + complete_apps = ['student'] \ No newline at end of file diff --git a/common/djangoapps/student/models.py b/common/djangoapps/student/models.py index 7e8658045e..d379689639 100644 --- a/common/djangoapps/student/models.py +++ b/common/djangoapps/student/models.py @@ -133,6 +133,72 @@ class UserProfile(models.Model): def set_meta(self, js): self.meta = json.dumps(js) +class TestCenterUser(models.Model): + """This is our representation of the User for in-person testing, and + specifically for Pearson at this point. A few things to note: + + * Pearson only supports Latin-1, so we have to make sure that the data we + capture here will work with that encoding. + * While we have a lot of this demographic data in UserProfile, it's much + more free-structured there. We'll try to pre-pop the form with data from + UserProfile, but we'll need to have a step where people who are signing + up re-enter their demographic data into the fields we specify. + * Users are only created here if they register to take an exam in person. + + The field names and lengths are modeled on the conventions and constraints + of Pearson's data import system, including oddities such as suffix having + a limit of 255 while last_name only gets 50. + """ + # Our own record keeping... + # user = models.ForeignKey(User, unique=True) + created_at = models.DateTimeField(auto_now_add=True, db_index=True) + updated_at = models.DateTimeField(auto_now=True, db_index=True) + # user_updated_at happens only when the user makes a change to their data, + # and is something Pearson needs to know to manage updates. Unlike + # updated_at, this will not get incremented when we do a batch data import. + user_updated_at = models.DateTimeField(db_index=True) + + # Unique ID given to us for this User by the Testing Center. It's null when + # we first create the User entry, and is assigned by Pearson later. + candidate_id = models.IntegerField(null=True, db_index=True) + + # Unique ID we assign our user for a the Test Center. + client_candidate_id = models.CharField(max_length=50, db_index=True) + + # Name + first_name = models.CharField(max_length=30, db_index=True) + last_name = models.CharField(max_length=50, db_index=True) + middle_name = models.CharField(max_length=30, blank=True) + suffix = models.CharField(max_length=255, blank=True) + salutation = models.CharField(max_length=50, blank=True) + + # Address + address_1 = models.CharField(max_length=40) + address_2 = models.CharField(max_length=40, blank=True) + address_3 = models.CharField(max_length=40, blank=True) + city = models.CharField(max_length=32, db_index=True) + # state example: HI -- they have an acceptable list that we'll just plug in + # state is required if you're in the US or Canada, but otherwise not. + state = models.CharField(max_length=20, blank=True, db_index=True) + # postal_code required if you're in the US or Canada + postal_code = models.CharField(max_length=16, blank=True, db_index=True) + # country is a ISO 3166-1 alpha-3 country code (e.g. "USA", "CAN", "MNG") + country = models.CharField(max_length=3, db_index=True) + + # Phone + phone = models.CharField(max_length=35) + extension = models.CharField(max_length=8, blank=True, db_index=True) + phone_country_code = models.CharField(max_length=3, db_index=True) + fax = models.CharField(max_length=35, blank=True) + # fax_country_code required *if* fax is present. + fax_country_code = models.CharField(max_length=3, blank=True) + + # Company + company_name = models.CharField(max_length=50, blank=True) + + @property + def email(self): + return "" # should return user.email, but stub for now ## TODO: Should be renamed to generic UserGroup, and possibly # Given an optional field for type of group From bbbd976671d616c1941d56bca3ea48522fb6d408 Mon Sep 17 00:00:00 2001 From: David Ormsbee Date: Wed, 24 Oct 2012 15:02:05 -0400 Subject: [PATCH 017/308] Added some more sample data. The command to export to Pearson reads from the table, but currently just adds the entries it needs at runtime. --- .../management/commands/pearson_export_cdd.py | 99 ++++++++++++++++++- 1 file changed, 98 insertions(+), 1 deletion(-) diff --git a/common/djangoapps/student/management/commands/pearson_export_cdd.py b/common/djangoapps/student/management/commands/pearson_export_cdd.py index ce90531941..e9433f15d5 100644 --- a/common/djangoapps/student/management/commands/pearson_export_cdd.py +++ b/common/djangoapps/student/management/commands/pearson_export_cdd.py @@ -1,5 +1,6 @@ import csv -from collections import OrderedDict +import uuid +from collections import defaultdict, OrderedDict from datetime import datetime from django.core.management.base import BaseCommand, CommandError @@ -43,6 +44,7 @@ class Command(BaseCommand): print Command.help return + self.reset_sample_data() with open(args[0], "wb") as outfile: writer = csv.DictWriter(outfile, @@ -58,3 +60,98 @@ class Command(BaseCommand): record["LastUpdate"] = record["LastUpdate"].strftime("%Y/%m/%d %H:%M:%S") writer.writerow(record) + def reset_sample_data(self): + def make_sample(**kwargs): + data = dict((model_field, kwargs.get(model_field, "")) + for model_field in Command.CSV_TO_MODEL_FIELDS.values()) + return TestCenterUser(**data) + + def generate_id(): + sub_uuid = str(uuid.uuid4()).upper() + return sub_uuid[-12:-8] + '-' + sub_uuid[-8:-4] + '-' + sub_uuid[-4:] + + TestCenterUser.objects.all().delete() + + samples = [ + make_sample( + client_candidate_id=generate_id(), + first_name="Jack", + last_name="Doe", + middle_name="C", + address_1="11 Cambridge Center", + address_2="Suite 101", + city="Cambridge", + state="MA", + postal_code="02140", + country="USA", + phone="(617)555-5555", + phone_country_code="1", + user_updated_at=datetime.utcnow() + ), + make_sample( + client_candidate_id=generate_id(), + first_name="Clyde", + last_name="Smith", + middle_name="J", + suffix="Jr.", + salutation="Mr.", + address_1="1 Penny Lane", + city="Honolulu", + state="HI", + postal_code="96792", + country="USA", + phone="555-555-5555", + phone_country_code="1", + user_updated_at=datetime.utcnow() + ), + make_sample( + client_candidate_id=generate_id(), + first_name="Patty", + last_name="Lee", + salutation="Dr.", + address_1="P.O. Box 555", + city="Honolulu", + state="HI", + postal_code="96792", + country="USA", + phone="808-555-5555", + phone_country_code="1", + user_updated_at=datetime.utcnow() + ), + make_sample( + client_candidate_id=generate_id(), + first_name="Jimmy", + last_name="James", + address_1="2020 Palmer Blvd.", + city="Springfield", + state="MA", + postal_code="96792", + country="USA", + phone="917-555-5555", + phone_country_code="1", + extension="2039", + fax="917-555-5556", + fax_country_code="1", + company_name="ACME Traps", + user_updated_at=datetime.utcnow() + ), + make_sample( + client_candidate_id=generate_id(), + first_name="Yeong-Un", + last_name="Seo", + address_1="Duryu, Lotte 101", + address_2="Apt 55", + city="Daegu", + country="KOR", + phone="917-555-5555", + phone_country_code="011", + user_updated_at=datetime.utcnow() + ), + + ] + + for tcu in samples: + tcu.save() + + + \ No newline at end of file From a75acffe01a79fe80c7fafc456bd755954f9027f Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Wed, 24 Oct 2012 15:11:41 -0400 Subject: [PATCH 018/308] made requested changes to statsd names, score bucket --- common/djangoapps/student/views.py | 8 +++--- lms/djangoapps/courseware/module_render.py | 32 +++++++++++----------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index dc541ff40b..2b940fe982 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -208,7 +208,7 @@ def change_enrollment(request): .format(course.display_name)} org, course_num, run=course_id.split("/") - statsd.increment("lms.user.enrollment", + statsd.increment("common.student.enrollment", tags=["org:{0}".format(org), "course:{0}".format(course_num), "run:{0}".format(run)]) @@ -222,7 +222,7 @@ def change_enrollment(request): enrollment.delete() org, course_num, run=course_id.split("/") - statsd.increment("lms.user.unenrollment", + statsd.increment("common.student.unenrollment", tags=["org:{0}".format(org), "course:{0}".format(course_num), "run:{0}".format(run)]) @@ -276,7 +276,7 @@ def login_user(request, error=""): try_change_enrollment(request) - statsd.increment("lms.user.successful_login") + statsd.increment("common.student.successful_login") return HttpResponse(json.dumps({'success': True})) @@ -484,7 +484,7 @@ def create_account(request, post_override=None): login_user.is_active = True login_user.save() - statsd.increment("lms.user.account_created") + statsd.increment("common.student.account_created") js = {'success': True} return HttpResponse(json.dumps(js), mimetype="application/json") diff --git a/lms/djangoapps/courseware/module_render.py b/lms/djangoapps/courseware/module_render.py index 8c91405b96..94bbc918bf 100644 --- a/lms/djangoapps/courseware/module_render.py +++ b/lms/djangoapps/courseware/module_render.py @@ -383,15 +383,10 @@ def xqueue_callback(request, course_id, userid, id, dispatch): instance_module.grade = instance.get_score()['score'] if instance_module.grade != oldgrade or instance_module.state != old_instance_state: instance_module.save() - - score_bucket=0 - if(instance_module.grade>0 and instance_module.grade0 and instance_module.grade0 and grade Date: Wed, 24 Oct 2012 15:14:06 -0400 Subject: [PATCH 019/308] added docstrings --- lms/djangoapps/courseware/module_render.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lms/djangoapps/courseware/module_render.py b/lms/djangoapps/courseware/module_render.py index 94bbc918bf..e0b0c3aaec 100644 --- a/lms/djangoapps/courseware/module_render.py +++ b/lms/djangoapps/courseware/module_render.py @@ -384,6 +384,7 @@ def xqueue_callback(request, course_id, userid, id, dispatch): if instance_module.grade != oldgrade or instance_module.state != old_instance_state: instance_module.save() + #Bin score into range and increment stats score_bucket=get_score_bucket(instance_module.grade, instance_module.max_grade) org, course_num, run=course_id.split("/") statsd.increment("lms.courseware.question_answered", @@ -476,6 +477,7 @@ def modx_dispatch(request, dispatch, location, course_id): instance_module.max_grade != old_instance_max_grade): instance_module.save() + #Bin score into range and increment stats score_bucket=get_score_bucket(instance_module.grade, instance_module.max_grade) org, course_num, run=course_id.split("/") statsd.increment("lms.courseware.question_answered", @@ -530,9 +532,12 @@ def preview_chemcalc(request): return HttpResponse(json.dumps(result)) -#Function to split arbitrary score ranges into 3 buckets. -#Used with statsd tracking. + def get_score_bucket(grade,max_grade): + """ + Function to split arbitrary score ranges into 3 buckets. + Used with statsd tracking. + """ score_bucket="incorrect" if(grade>0 and grade Date: Wed, 24 Oct 2012 15:41:20 -0400 Subject: [PATCH 020/308] added dogstatsd req --- prod-requirements.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/prod-requirements.txt b/prod-requirements.txt index 98545552cb..cc1d2894ad 100644 --- a/prod-requirements.txt +++ b/prod-requirements.txt @@ -50,3 +50,5 @@ pystache==0.3.1 python-openid==2.2.5 South==0.7.5 Unidecode==0.04.9 +dogstatsd-python==0.2.1 + From c4fe3b4d6447becd56ed706e28f59aa13b5e864a Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Wed, 24 Oct 2012 15:42:03 -0400 Subject: [PATCH 021/308] remove extra newline --- prod-requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/prod-requirements.txt b/prod-requirements.txt index cc1d2894ad..20c3e9b068 100644 --- a/prod-requirements.txt +++ b/prod-requirements.txt @@ -51,4 +51,3 @@ python-openid==2.2.5 South==0.7.5 Unidecode==0.04.9 dogstatsd-python==0.2.1 - From 16990c2743fc7973dc98d8d042563f41cb3a1880 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Wed, 24 Oct 2012 17:23:13 -0400 Subject: [PATCH 022/308] Add an end date to courses. - needed for cert generation (and later lots of other things) --- common/lib/xmodule/xmodule/course_module.py | 15 +++++++++++++-- doc/xml-format.md | 1 + 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/common/lib/xmodule/xmodule/course_module.py b/common/lib/xmodule/xmodule/course_module.py index e7e3e4e519..0a5108590f 100644 --- a/common/lib/xmodule/xmodule/course_module.py +++ b/common/lib/xmodule/xmodule/course_module.py @@ -22,13 +22,13 @@ class CourseDescriptor(SequenceDescriptor): self.book_url = book_url self.table_of_contents = self._get_toc_from_s3() self.start_page = int(self.table_of_contents[0].attrib['page']) - + # The last page should be the last element in the table of contents, # but it may be nested. So recurse all the way down the last element last_el = self.table_of_contents[-1] while last_el.getchildren(): last_el = last_el[-1] - + self.end_page = int(last_el.attrib['page']) @property @@ -87,6 +87,7 @@ class CourseDescriptor(SequenceDescriptor): self.enrollment_start = self._try_parse_time("enrollment_start") self.enrollment_end = self._try_parse_time("enrollment_end") + self.end = self._try_parse_time("end") # NOTE: relies on the modulestore to call set_grading_policy() right after # init. (Modulestore is in charge of figuring out where to load the policy from) @@ -127,6 +128,16 @@ class CourseDescriptor(SequenceDescriptor): return definition + def has_ended(self): + """ + Returns True if the current time is after the specified course end date. + Returns False if there is no end date specified. + """ + if self.end_date is None: + return False + + return time.gmtime() > self.end + def has_started(self): return time.gmtime() > self.start diff --git a/doc/xml-format.md b/doc/xml-format.md index ac9fbb5e40..d9c0d27653 100644 --- a/doc/xml-format.md +++ b/doc/xml-format.md @@ -251,6 +251,7 @@ Supported fields at the course level: * "start" -- specify the start date for the course. Format-by-example: "2012-09-05T12:00". * "enrollment_start", "enrollment_end" -- when can students enroll? (if not specified, can enroll anytime). Same format as "start". +* "end" -- specify the end date for the course. Format-by-example: "2012-11-05T12:00". * "tabs" -- have custom tabs in the courseware. See below for details on config. * TODO: there are others From e4daad432714a59dc334d2656540e7431a3e90c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s=20Rocha?= Date: Wed, 24 Oct 2012 20:30:54 -0400 Subject: [PATCH 023/308] Update Job Page with new positions --- lms/static/sass/multicourse/_jobs.scss | 8 +++ lms/templates/static_templates/jobs.html | 67 +++++++++++++++++++++++- 2 files changed, 74 insertions(+), 1 deletion(-) diff --git a/lms/static/sass/multicourse/_jobs.scss b/lms/static/sass/multicourse/_jobs.scss index d2f86e93a6..f9629232d6 100644 --- a/lms/static/sass/multicourse/_jobs.scss +++ b/lms/static/sass/multicourse/_jobs.scss @@ -136,6 +136,14 @@ margin-bottom: 15px; } + h4 { + font-size: 1.0em; + font-family: $sans-serif; + font-weight: 700; + margin-top: 25px; + margin-bottom: 10px; + } + ul { padding-left: 50px; } diff --git a/lms/templates/static_templates/jobs.html b/lms/templates/static_templates/jobs.html index f2b3b69cab..77f292b80f 100644 --- a/lms/templates/static_templates/jobs.html +++ b/lms/templates/static_templates/jobs.html @@ -1,5 +1,4 @@ <%namespace name='static' file='../static_content.html'/> - <%inherit file="../main.html" /> <%block name="title">Jobs @@ -50,12 +49,78 @@

If you are interested in this position, please send an email to jobs@edx.org

+
+
+

Learning Designer/Interaction Learning Designer

+

The Learning Designer will work as part of the content and development team to plan, develop and deliver highly engaging and media rich online courses. The learning designer will be a flexible thinker, able to determine and apply sound pedagogical strategies to unique situations and a diverse set of academic disciplines.

+

Specific Responsibilities include:

+
    +
  • Work with producers, product developers and course staff on implementing instructional design approaches in the development of media and other course materials.
  • +
  • Articulate learning objectives and align them to content design strategy and assessments.
  • +
  • Write effective instructional text, and audio and video scripts.
  • +
  • Coordinate workflows with video and content development team
  • +
  • Identify best practices and share these with the course staff and faculty as needed.
  • +
  • Create course communication style guides. Train and coach teaching staff on best practices for communication and discussion management.
  • +
  • Develop use case guides as needed on the use of edX courseware and new technologies.
  • +
  • Serve as a liaison to instructional design teams located at X universities.
  • +
  • Design peer review processes to be used by learners in selected courses.
  • +
  • Ability to apply game-based learning theory and design into selected courses as appropriate.
  • +
  • Use learning analytics and metrics to inform course design and revision process.
  • +
  • Work closely with the Content Research Director on articulating best practices for MOOC teaching and learning and course design.
  • +
  • Assist in the development of pilot courses used for sponsored research initiatives.
  • +
+

Qualifications:

+

Master's Degree in Educational Technology, Instructional Design or related field. Experience in higher education with additional experience in a start-up or research environment desirable. Excellent interpersonal and communication (written and verbal), project management, problem-solving and time management skills. The ability to be flexible with projects and to work on multiple courses essential. Ability to meet deadlines and manage expectations of constituents. Capacity to develop new and relevant technology skills.  Experience using game theory design and learning analytics to inform instructional design decisions and strategy.

+

Technical Skills:

+

Video and screencasting experience. LMS Platform experience, xml, HTML, CSS, Adobe Design Suite, Camtasia or Captivate experience. Experience with web 2.0 collaboration tools.

+

If you are interested in this position, please send an email to jobs@edx.org

+
+
+
+
+

Production Coordinator

+

The Production Coordinator supports video editors and course staff in all video related tasks, such as ingesting footage, transcoding, tracking live dates, transcriptions, organizing project deliverables and archiving completed projects.

+

Primary responsibilities:

+
    +
  • organize, track, and manage video and associated assets across the video workflow
  • +
  • manage project data and spreadsheets
  • +
  • route incoming source footage, and apply metadata tags
  • +
  • run encoding/transcoding jobs
  • +
  • prepare and process associated video assets, such as slides and image files
  • +
  • manage the transcription process
  • +
      +
    • traffic files among project staff and video transcription services
    • +
    • coordinate transcript reviews with course staff
    • +
    • integrate transcripts in course pages
    • +
    +
  • other video-related tasks as assigned.
  • +
+
+

Qualifications

+

The ideal candidate for the Production Coordinator position will have

+
    +
  • relentless attention to detailability to communicate and collaborate effectively across the organization
  • +
  • knowledge and understanding of digital media production tools and processes
  • +
  • experience with compression techniques, image processing, and presentation software preferred
  • +
  • proficiency with standard office applications
  • +
      +
    • spreadsheets
    • +
    • word processing
    • +
    • presentation
    • +
    +
  • experience with web publishing, e.g., HTML, XML, CSS, a plus
  • +
+

If you are interested in this position, please send an email to jobs@edx.org

+
+

Positions

EdX Content Engineer Platform Developer + Learning Designer + Product Coordinator

How to Apply

E-mail your resume, coverletter and any other materials to jobs@edx.org

From fec6c42adc4ddbf8261ec01591e3c9557ae41a53 Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Wed, 24 Oct 2012 20:55:04 -0400 Subject: [PATCH 024/308] implement importing of course info sections as modules in the course --- common/lib/xmodule/xmodule/modulestore/xml.py | 21 +++++++++++++++ common/lib/xmodule/xmodule/x_module.py | 9 ++++--- lms/djangoapps/courseware/courses.py | 26 +++++++++++++++++++ 3 files changed, 53 insertions(+), 3 deletions(-) diff --git a/common/lib/xmodule/xmodule/modulestore/xml.py b/common/lib/xmodule/xmodule/modulestore/xml.py index 7990bafe7d..0206eed242 100644 --- a/common/lib/xmodule/xmodule/modulestore/xml.py +++ b/common/lib/xmodule/xmodule/modulestore/xml.py @@ -17,6 +17,8 @@ from xmodule.course_module import CourseDescriptor from xmodule.mako_module import MakoDescriptorSystem from xmodule.x_module import XModuleDescriptor, XMLParsingSystem +from xmodule.html_module import HtmlDescriptor + from . import ModuleStoreBase, Location from .exceptions import ItemNotFoundError @@ -423,6 +425,25 @@ class XMLModuleStore(ModuleStoreBase): # after we have the course descriptor. XModuleDescriptor.compute_inherited_metadata(course_descriptor) + # now import all pieces of course_info which is expected to be stored + # in /info or /info/ + if url_name: + info_path = self.data_dir / course_dir / 'info' / url_name + + if not os.path.exists(info_path): + info_path = self.data_dir / course_dir / 'info' + + # we have a fixed number of .html info files that we expect there + for info_filename in ['handouts', 'guest_handouts', 'updates', 'guest_updates']: + filepath = info_path / info_filename + '.html' + if os.path.exists(filepath): + with open(filepath) as info_file: + html = info_file.read() + loc = Location('i4x', course_descriptor.location.org, course_descriptor.location.course, 'course_info', info_filename) + html_module = HtmlDescriptor(system, definition={'data' : html}, **{'location' : loc}) + self.modules[course_id][html_module.location] = html_module + + log.debug('========> Done with course import from {0}'.format(course_dir)) return course_descriptor diff --git a/common/lib/xmodule/xmodule/x_module.py b/common/lib/xmodule/xmodule/x_module.py index a53f2db7da..99468946d7 100644 --- a/common/lib/xmodule/xmodule/x_module.py +++ b/common/lib/xmodule/xmodule/x_module.py @@ -323,11 +323,15 @@ class XModule(HTMLSnippet): # cdodge: added to support dynamic substitutions of # links for courseware assets (e.g. images). is passed through from lxml.html parser def rewrite_content_links(self, link): - # see if we start with our format, e.g. 'xasset:' + loc = Location(self.location) + return XModule._rewrite_content_links(loc, link) + + + @staticmethod + def _rewrite_content_links(loc, link): if link.startswith(XASSET_SRCREF_PREFIX): # yes, then parse out the name name = link[len(XASSET_SRCREF_PREFIX):] - loc = Location(self.location) # resolve the reference to our internal 'filepath' which content_loc = StaticContent.compute_location(loc.org, loc.course, name) link = StaticContent.get_url_path_from_location(content_loc) @@ -335,7 +339,6 @@ class XModule(HTMLSnippet): return link - def policy_key(location): """ Get the key for a location in a policy file. (Since the policy file is diff --git a/lms/djangoapps/courseware/courses.py b/lms/djangoapps/courseware/courses.py index 65a1eee25b..338fcfa42a 100644 --- a/lms/djangoapps/courseware/courses.py +++ b/lms/djangoapps/courseware/courses.py @@ -3,6 +3,8 @@ from fs.errors import ResourceNotFoundError from functools import wraps import logging +from lxml.html import rewrite_links + from path import path from django.conf import settings from django.core.urlresolvers import reverse @@ -11,7 +13,9 @@ from django.http import Http404 from xmodule.course_module import CourseDescriptor from xmodule.modulestore import Location from xmodule.modulestore.django import modulestore +from xmodule.modulestore.xml import XMLModuleStore from xmodule.modulestore.exceptions import ItemNotFoundError +from xmodule.x_module import XModule from static_replace import replace_urls, try_staticfiles_lookup from courseware.access import has_access import branding @@ -136,6 +140,25 @@ def get_course_about_section(course, section_key): raise KeyError("Invalid about key " + str(section_key)) +def get_course_info_section_from_db(course, section_key): + loc = Location(course.location.tag, course.location.org, course.location.course, 'course_info', section_key) + html = '' + try: + item = modulestore().get_item(loc) + # return the raw HTML here which is stored as part of the definition. If we call get_html here, HTMLModule's parent + # descriptors will try to return an 'editing' rendering of the HTML + _html = item.definition['data'] + try: + # apply link transforms which are defined in XModule, maybe that should actually be a static method in + # Content.py + html = rewrite_links(_html, XModule.rewrite_content_links) + except: + logging.error('error rewriting links on the following HTML content: {0}'.format(_html)) + + except Exception, e: + logging.exception("Could not find course_info section {0} at {1}: {2}".format(section_key, loc, str(e))) + return html + def get_course_info_section(course, section_key): """ @@ -153,6 +176,9 @@ def get_course_info_section(course, section_key): # markup. This can change without effecting this interface when we find a # good format for defining so many snippets of text/html. + if not isinstance(modulestore(), XMLModuleStore): + return get_course_info_section_from_db(course, section_key) + if section_key in ['handouts', 'guest_handouts', 'updates', 'guest_updates']: try: fs = course.system.resources_fs From 4a0e5f66d600b8811d4acb35ed7d0bae6e1d5859 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s=20Rocha?= Date: Thu, 25 Oct 2012 10:06:47 -0400 Subject: [PATCH 025/308] Fix link in jobs page --- lms/templates/static_templates/jobs.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lms/templates/static_templates/jobs.html b/lms/templates/static_templates/jobs.html index 77f292b80f..6bebd7ace4 100644 --- a/lms/templates/static_templates/jobs.html +++ b/lms/templates/static_templates/jobs.html @@ -120,7 +120,7 @@ EdX Content Engineer Platform Developer Learning Designer - Product Coordinator + Production Coordinator

How to Apply

E-mail your resume, coverletter and any other materials to jobs@edx.org

From 2db84a757eac0fb679b0c3713d0bbd0587011a39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s=20Rocha?= Date: Thu, 25 Oct 2012 12:43:57 -0400 Subject: [PATCH 026/308] Update to learning designer job description --- lms/templates/static_templates/jobs.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lms/templates/static_templates/jobs.html b/lms/templates/static_templates/jobs.html index 6bebd7ace4..a8afdb7712 100644 --- a/lms/templates/static_templates/jobs.html +++ b/lms/templates/static_templates/jobs.html @@ -52,7 +52,7 @@

Learning Designer/Interaction Learning Designer

-

The Learning Designer will work as part of the content and development team to plan, develop and deliver highly engaging and media rich online courses. The learning designer will be a flexible thinker, able to determine and apply sound pedagogical strategies to unique situations and a diverse set of academic disciplines.

+

The Learning Designer will work as part of the content and development team to plan, develop and deliver highly engaging and media rich online courses. The learning designer will be a flexible thinker, able to determine and apply sound pedagogical strategies to unique situations and a diverse set of academic disciplines. This is a 6-12 months contract opportunity.

Specific Responsibilities include:

  • Work with producers, product developers and course staff on implementing instructional design approaches in the development of media and other course materials.
  • From ba157352142ad7d7d904dcad123ba89d0d4b5f25 Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Thu, 25 Oct 2012 14:27:26 -0400 Subject: [PATCH 027/308] implement static tabs. rejigger .tar.gz import to do the re-namespacing as a post-processing step as we need to retain the original url_name during the import. Also, migrate the presentation tier to use module_render.py::get_module() to better unify HTML'ifying stuff --- cms/djangoapps/contentstore/views.py | 12 +---- common/lib/xmodule/setup.py | 2 + common/lib/xmodule/xmodule/modulestore/xml.py | 26 +++++++-- .../xmodule/modulestore/xml_importer.py | 28 +++++++++- lms/djangoapps/courseware/courses.py | 53 ++++--------------- lms/djangoapps/courseware/module_render.py | 2 +- lms/djangoapps/courseware/tabs.py | 42 +++++++-------- lms/djangoapps/courseware/views.py | 14 +++-- lms/templates/courseware/info.html | 8 +-- 9 files changed, 98 insertions(+), 89 deletions(-) diff --git a/cms/djangoapps/contentstore/views.py b/cms/djangoapps/contentstore/views.py index eb090d3333..2cc7cfca0d 100644 --- a/cms/djangoapps/contentstore/views.py +++ b/cms/djangoapps/contentstore/views.py @@ -1029,18 +1029,8 @@ def import_course(request, org, course, name): for fname in os.listdir(r): shutil.move(r/fname, course_dir) - with open(course_dir / 'course.xml', 'r') as course_file: - course_data = etree.parse(course_file, parser=edx_xml_parser) - course_data_root = course_data.getroot() - course_data_root.set('org', org) - course_data_root.set('course', course) - course_data_root.set('url_name', name) - - with open(course_dir / 'course.xml', 'w') as course_file: - course_data.write(course_file) - module_store, course_items = import_from_xml(modulestore('direct'), settings.GITHUB_REPO_ROOT, - [course_dir], load_error_modules=False, static_content_store=contentstore()) + [course_dir], load_error_modules=False, static_content_store=contentstore(), target_location_namespace = Location(location)) # we can blow this away when we're done importing. shutil.rmtree(course_dir) diff --git a/common/lib/xmodule/setup.py b/common/lib/xmodule/setup.py index c123756655..e9e78b5762 100644 --- a/common/lib/xmodule/setup.py +++ b/common/lib/xmodule/setup.py @@ -35,6 +35,8 @@ setup( "videodev = xmodule.backcompat_module:TranslateCustomTagDescriptor", "videosequence = xmodule.seq_module:SequenceDescriptor", "discussion = xmodule.discussion_module:DiscussionDescriptor", + "course_info = xmodule.html_module:HtmlDescriptor", + "static_tab = xmodule.html_module:HtmlDescriptor", ] } ) diff --git a/common/lib/xmodule/xmodule/modulestore/xml.py b/common/lib/xmodule/xmodule/modulestore/xml.py index 0206eed242..ddb437afe2 100644 --- a/common/lib/xmodule/xmodule/modulestore/xml.py +++ b/common/lib/xmodule/xmodule/modulestore/xml.py @@ -4,6 +4,7 @@ import logging import os import re import sys +import glob from collections import defaultdict from cStringIO import StringIO @@ -333,7 +334,6 @@ class XMLModuleStore(ModuleStoreBase): if not os.path.exists(policy_path): return {} try: - log.debug("Loading policy from {0}".format(policy_path)) with open(policy_path) as f: return json.load(f) except (IOError, ValueError) as err: @@ -388,6 +388,7 @@ class XMLModuleStore(ModuleStoreBase): if url_name: policy_dir = self.data_dir / course_dir / 'policies' / url_name policy_path = policy_dir / 'policy.json' + policy = self.load_policy(policy_path, tracker) # VS[compat]: remove once courses use the policy dirs. @@ -405,7 +406,6 @@ class XMLModuleStore(ModuleStoreBase): raise ValueError("Can't load a course without a 'url_name' " "(or 'name') set. Set url_name.") - course_id = CourseDescriptor.make_id(org, course, url_name) system = ImportSystem( self, @@ -438,11 +438,27 @@ class XMLModuleStore(ModuleStoreBase): filepath = info_path / info_filename + '.html' if os.path.exists(filepath): with open(filepath) as info_file: - html = info_file.read() + html = info_file.read().decode('utf-8') loc = Location('i4x', course_descriptor.location.org, course_descriptor.location.course, 'course_info', info_filename) - html_module = HtmlDescriptor(system, definition={'data' : html}, **{'location' : loc}) - self.modules[course_id][html_module.location] = html_module + info_module = HtmlDescriptor(system, definition={'data' : html}, **{'location' : loc}) + self.modules[course_id][info_module.location] = info_module + # now import all static tabs which are expected to be stored in + # in /tabs or /tabs/ + if url_name: + tabs_path = self.data_dir / course_dir / 'tabs' / url_name + + if not os.path.exists(tabs_path): + tabs_path = self.data_dir / course_dir / 'tabs' + + for tab_filepath in glob.glob(tabs_path / '*.html'): + with open(tab_filepath) as tab_file: + html = tab_file.read().decode('utf-8') + # tabs are referenced in policy.json through a 'slug' which is just the filename without the .html suffix + slug = os.path.splitext(os.path.basename(tab_filepath))[0] + loc = Location('i4x', course_descriptor.location.org, course_descriptor.location.course, 'static_tab', slug) + tab_module = HtmlDescriptor(system, definition={'data' : html}, **{'location' : loc}) + self.modules[course_id][tab_module.location] = tab_module log.debug('========> Done with course import from {0}'.format(course_dir)) return course_descriptor diff --git a/common/lib/xmodule/xmodule/modulestore/xml_importer.py b/common/lib/xmodule/xmodule/modulestore/xml_importer.py index 868733a99c..f27316929b 100644 --- a/common/lib/xmodule/xmodule/modulestore/xml_importer.py +++ b/common/lib/xmodule/xmodule/modulestore/xml_importer.py @@ -67,7 +67,7 @@ def import_static_content(modules, data_dir, static_content_store): def import_from_xml(store, data_dir, course_dirs=None, default_class='xmodule.raw_module.RawDescriptor', - load_error_modules=True, static_content_store=None): + load_error_modules=True, static_content_store=None, target_location_namespace = None): """ Import the specified xml data_dir into the "store" modulestore, using org and course as the location org and course. @@ -75,6 +75,11 @@ def import_from_xml(store, data_dir, course_dirs=None, course_dirs: If specified, the list of course_dirs to load. Otherwise, load all course dirs + target_location_namespace is the namespace [passed as Location] (i.e. {tag},{org},{course}) that all modules in the should be remapped to + after import off disk. We do this remapping as a post-processing step because there's logic in the importing which + expects a 'url_name' as an identifier to where things are on disk e.g. ../policies//policy.json as well as metadata keys in + the policy.json. so we need to keep the original url_name during import + """ module_store = XMLModuleStore( @@ -95,6 +100,27 @@ def import_from_xml(store, data_dir, course_dirs=None, for module in module_store.modules[course_id].itervalues(): + # remap module to the new namespace + if target_location_namespace is not None: + + # This looks a bit wonky as we need to also change the 'name' of the imported course to be what + # the caller passed in + module.location = Location(target_location_namespace.tag, + target_location_namespace.org, target_location_namespace.course, module.location.category, + module.location.name if module.location.category != 'course' else target_location_namespace.name) + + # then remap children pointers since they too will be re-namespaced + children_locs = module.definition.get('children') + if children_locs is not None: + new_locs = [] + for child in children_locs: + child_loc = Location(child) + new_locs.append(Location(target_location_namespace.tag, target_location_namespace.org, + target_location_namespace.course, child_loc.category, child_loc.name).url()) + + module.definition['children'] = new_locs + + if module.category == 'course': # HACK: for now we don't support progress tabs. There's a special metadata configuration setting for this. module.metadata['hide_progress_tab'] = True diff --git a/lms/djangoapps/courseware/courses.py b/lms/djangoapps/courseware/courses.py index 338fcfa42a..0103e9de00 100644 --- a/lms/djangoapps/courseware/courses.py +++ b/lms/djangoapps/courseware/courses.py @@ -10,6 +10,7 @@ from django.conf import settings from django.core.urlresolvers import reverse from django.http import Http404 +from module_render import get_module from xmodule.course_module import CourseDescriptor from xmodule.modulestore import Location from xmodule.modulestore.django import modulestore @@ -20,6 +21,8 @@ from static_replace import replace_urls, try_staticfiles_lookup from courseware.access import has_access import branding + + log = logging.getLogger(__name__) @@ -140,27 +143,9 @@ def get_course_about_section(course, section_key): raise KeyError("Invalid about key " + str(section_key)) -def get_course_info_section_from_db(course, section_key): - loc = Location(course.location.tag, course.location.org, course.location.course, 'course_info', section_key) - html = '' - try: - item = modulestore().get_item(loc) - # return the raw HTML here which is stored as part of the definition. If we call get_html here, HTMLModule's parent - # descriptors will try to return an 'editing' rendering of the HTML - _html = item.definition['data'] - try: - # apply link transforms which are defined in XModule, maybe that should actually be a static method in - # Content.py - html = rewrite_links(_html, XModule.rewrite_content_links) - except: - logging.error('error rewriting links on the following HTML content: {0}'.format(_html)) - - except Exception, e: - logging.exception("Could not find course_info section {0} at {1}: {2}".format(section_key, loc, str(e))) - return html -def get_course_info_section(course, section_key): +def get_course_info_section(request, cache, course, section_key): """ This returns the snippet of html to be rendered on the course info page, given the key for the section. @@ -172,34 +157,18 @@ def get_course_info_section(course, section_key): - guest_updates """ - # Many of these are stored as html files instead of some semantic - # markup. This can change without effecting this interface when we find a - # good format for defining so many snippets of text/html. + loc = Location(course.location.tag, course.location.org, course.location.course, 'course_info', section_key) + course_module = get_module(request.user, request, loc, cache, course.id) - if not isinstance(modulestore(), XMLModuleStore): - return get_course_info_section_from_db(course, section_key) + logging.debug('course_module = {0}'.format(course_module)) - if section_key in ['handouts', 'guest_handouts', 'updates', 'guest_updates']: - try: - fs = course.system.resources_fs - # first look for a run-specific version - dirs = [path("info") / course.url_name, path("info")] - filepath = find_file(fs, dirs, section_key + ".html") + html = '' - with fs.open(filepath) as htmlFile: - # Replace '/static/' urls - info_html = replace_urls(htmlFile.read().decode('utf-8'), course.metadata['data_dir']) + if course_module is not None: + html = course_module.get_html() - # Replace '/course/' urls - course_root = reverse('course_root', args=[course.id])[:-1] # Remove trailing slash - info_html = replace_urls(info_html, course_root, '/course/') - return info_html - except ResourceNotFoundError: - log.exception("Missing info section {key} in course {url}".format( - key=section_key, url=course.location.url())) - return "! Info section missing !" + return html - raise KeyError("Invalid about key " + str(section_key)) # TODO: Fix this such that these are pulled in as extra course-specific tabs. diff --git a/lms/djangoapps/courseware/module_render.py b/lms/djangoapps/courseware/module_render.py index b16f1665fe..3c9958b36d 100644 --- a/lms/djangoapps/courseware/module_render.py +++ b/lms/djangoapps/courseware/module_render.py @@ -256,7 +256,7 @@ def _get_module(user, request, location, student_module_cache, course_id, positi module.get_html = replace_static_urls( wrap_xmodule(module.get_html, module, 'xmodule_display.html'), - module.metadata['data_dir']) + module.metadata['data_dir'] if 'data_dir' in module.metadata else '') # Allow URLs of the form '/course/' refer to the root of multicourse directory # hierarchy of this course diff --git a/lms/djangoapps/courseware/tabs.py b/lms/djangoapps/courseware/tabs.py index 980fedb947..9f826b77f0 100644 --- a/lms/djangoapps/courseware/tabs.py +++ b/lms/djangoapps/courseware/tabs.py @@ -17,8 +17,17 @@ from django.core.urlresolvers import reverse from fs.errors import ResourceNotFoundError +from lxml.html import rewrite_links + +from module_render import get_module from courseware.access import has_access from static_replace import replace_urls +from xmodule.modulestore import Location +from xmodule.modulestore.django import modulestore +from xmodule.modulestore.xml import XMLModuleStore +from xmodule.x_module import XModule + + log = logging.getLogger(__name__) @@ -248,27 +257,16 @@ def get_static_tab_by_slug(course, tab_slug): return None +def get_static_tab_contents(request, cache, course, tab): -def get_static_tab_contents(course, tab): - """ - Given a course and a static tab config dict, load the tab contents, - returning None if not found. + loc = Location(course.location.tag, course.location.org, course.location.course, 'static_tab', tab['url_slug']) + course_module = get_module(request.user, request, loc, cache, course.id) - Looks in tabs/{course_url_name}/{tab_slug}.html first, then tabs/{tab_slug}.html. - """ - slug = tab['url_slug'] - paths = ['tabs/{0}/{1}.html'.format(course.url_name, slug), - 'tabs/{0}.html'.format(slug)] - fs = course.system.resources_fs - for p in paths: - if fs.exists(p): - try: - with fs.open(p) as tabfile: - # TODO: redundant with module_render.py. Want to be helper methods in static_replace or something. - text = tabfile.read().decode('utf-8') - contents = replace_urls(text, course.metadata['data_dir']) - return replace_urls(contents, staticfiles_prefix='/courses/'+course.id, replace_prefix='/course/') - except (ResourceNotFoundError) as err: - log.exception("Couldn't load tab contents from '{0}': {1}".format(p, err)) - return None - return None + logging.debug('course_module = {0}'.format(course_module)) + + html = '' + + if course_module is not None: + html = course_module.get_html() + + return html diff --git a/lms/djangoapps/courseware/views.py b/lms/djangoapps/courseware/views.py index b738b6a0cc..fc834768e7 100644 --- a/lms/djangoapps/courseware/views.py +++ b/lms/djangoapps/courseware/views.py @@ -347,8 +347,13 @@ def course_info(request, course_id): course = get_course_with_access(request.user, course_id, 'load') staff_access = has_access(request.user, course, 'staff') - return render_to_response('courseware/info.html', {'course': course, - 'staff_access': staff_access,}) + + + cache = StudentModuleCache.cache_for_descriptor_descendents( + course.id, request.user, course, depth=2) + + return render_to_response('courseware/info.html', {'request' : request, 'course_id' : course_id, 'cache' : cache, + 'course': course, 'staff_access': staff_access}) @ensure_csrf_cookie def static_tab(request, course_id, tab_slug): @@ -363,7 +368,10 @@ def static_tab(request, course_id, tab_slug): if tab is None: raise Http404 - contents = tabs.get_static_tab_contents(course, tab) + cache = StudentModuleCache.cache_for_descriptor_descendents( + course.id, request.user, course, depth=2) + + contents = tabs.get_static_tab_contents(request, cache, course, tab) if contents is None: raise Http404 diff --git a/lms/templates/courseware/info.html b/lms/templates/courseware/info.html index a1cab83104..ff10e645ed 100644 --- a/lms/templates/courseware/info.html +++ b/lms/templates/courseware/info.html @@ -27,20 +27,20 @@ $(document).ready(function(){ % if user.is_authenticated():

    Course Updates & News

    - ${get_course_info_section(course, 'updates')} + ${get_course_info_section(request, cache, course, 'updates')}

    ${course.info_sidebar_name}

    - ${get_course_info_section(course, 'handouts')} + ${get_course_info_section(request, cache, course, 'handouts')}
    % else:

    Course Updates & News

    - ${get_course_info_section(course, 'guest_updates')} + ${get_course_info_section(request, cache, course, 'guest_updates')}

    Course Handouts

    - ${get_course_info_section(course, 'guest_handouts')} + ${get_course_info_section(request, cache, course, 'guest_handouts')}
    % endif
From b7c830a861d6c835c13868ff3e610880fafd6234 Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Thu, 25 Oct 2012 16:37:31 -0400 Subject: [PATCH 028/308] use existing _replace() method on Location to do the re-namespacing on import --- .../xmodule/xmodule/modulestore/xml_importer.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/common/lib/xmodule/xmodule/modulestore/xml_importer.py b/common/lib/xmodule/xmodule/modulestore/xml_importer.py index f27316929b..bced371001 100644 --- a/common/lib/xmodule/xmodule/modulestore/xml_importer.py +++ b/common/lib/xmodule/xmodule/modulestore/xml_importer.py @@ -105,9 +105,12 @@ def import_from_xml(store, data_dir, course_dirs=None, # This looks a bit wonky as we need to also change the 'name' of the imported course to be what # the caller passed in - module.location = Location(target_location_namespace.tag, - target_location_namespace.org, target_location_namespace.course, module.location.category, - module.location.name if module.location.category != 'course' else target_location_namespace.name) + if module.location.category != 'course': + module.location = module.location._replace(tag=target_location_namespace.tag, org=target_location_namespace.org, + course=target_location_namespace.course) + else: + module.location = module.location._replace(tag=target_location_namespace.tag, org=target_location_namespace.org, + course=target_location_namespace.course, name=target_location_namespace.name) # then remap children pointers since they too will be re-namespaced children_locs = module.definition.get('children') @@ -115,8 +118,10 @@ def import_from_xml(store, data_dir, course_dirs=None, new_locs = [] for child in children_locs: child_loc = Location(child) - new_locs.append(Location(target_location_namespace.tag, target_location_namespace.org, - target_location_namespace.course, child_loc.category, child_loc.name).url()) + new_child_loc = child_loc._replace(tag=target_location_namespace.tag, org=target_location_namespace.org, + course=target_location_namespace.course) + + new_locs.append(new_child_loc) module.definition['children'] = new_locs From 84aeb9dad3a23ca388a7bc285c654351667e1f4f Mon Sep 17 00:00:00 2001 From: kimth Date: Fri, 26 Oct 2012 06:01:26 +0000 Subject: [PATCH 029/308] Permit collapsibles in capa detailed solution --- common/lib/xmodule/xmodule/js/src/capa/display.coffee | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/common/lib/xmodule/xmodule/js/src/capa/display.coffee b/common/lib/xmodule/xmodule/js/src/capa/display.coffee index cc389c3fc9..b6df1fc57f 100644 --- a/common/lib/xmodule/xmodule/js/src/capa/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/capa/display.coffee @@ -216,7 +216,9 @@ class @Problem for choice in value @$("label[for='input_#{key}_#{choice}']").attr correct_answer: 'true' else - @$("#answer_#{key}, #solution_#{key}").html(value) + detailed_solution = @$("#answer_#{key}, #solution_#{key}") + detailed_solution.html(value) + Collapsible.setCollapsibles(detailed_solution) # TODO remove the above once everything is extracted into its own # inputtype functions. From 62840765a57b49cfeea508cd49a10559122318e4 Mon Sep 17 00:00:00 2001 From: kimth Date: Fri, 26 Oct 2012 06:59:21 +0000 Subject: [PATCH 030/308] Variable name is misleading, use generic 'answer' instead --- common/lib/xmodule/xmodule/js/src/capa/display.coffee | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/common/lib/xmodule/xmodule/js/src/capa/display.coffee b/common/lib/xmodule/xmodule/js/src/capa/display.coffee index b6df1fc57f..1c0ace9e59 100644 --- a/common/lib/xmodule/xmodule/js/src/capa/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/capa/display.coffee @@ -216,9 +216,9 @@ class @Problem for choice in value @$("label[for='input_#{key}_#{choice}']").attr correct_answer: 'true' else - detailed_solution = @$("#answer_#{key}, #solution_#{key}") - detailed_solution.html(value) - Collapsible.setCollapsibles(detailed_solution) + answer = @$("#answer_#{key}, #solution_#{key}") + answer.html(value) + Collapsible.setCollapsibles(answer) # TODO remove the above once everything is extracted into its own # inputtype functions. From bf4d5bf799b1f97b0b3ef85acbd38eaf95c79b40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Fri, 12 Oct 2012 19:32:09 +0300 Subject: [PATCH 031/308] starting enviroment --- common/lib/capa/capa/capa_problem.py | 3 +- common/lib/capa/capa/inputtypes.py | 50 +++++++++++++++- common/lib/capa/capa/responsetypes.py | 3 +- .../lib/capa/capa/templates/vsepr_input.html | 60 +++++++++++++++++++ 4 files changed, 112 insertions(+), 4 deletions(-) create mode 100644 common/lib/capa/capa/templates/vsepr_input.html diff --git a/common/lib/capa/capa/capa_problem.py b/common/lib/capa/capa/capa_problem.py index d868e66ec5..7e1caa416b 100644 --- a/common/lib/capa/capa/capa_problem.py +++ b/common/lib/capa/capa/capa_problem.py @@ -57,7 +57,8 @@ entry_types = ['textline', 'filesubmission', 'javascriptinput', 'crystallography', - 'chemicalequationinput',] + 'chemicalequationinput', + 'vsepr_input'] # extra things displayed after "show answers" is pressed solution_types = ['solution'] diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 0e993c1366..16b36960c9 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -707,7 +707,7 @@ def imageinput(element, value, status, render_template, msg=''): _reg(imageinput) -#----------------------------------------------------------------------------- + def crystallography(element, value, status, render_template, msg=''): eid = element.get('id') if eid is None: @@ -740,18 +740,64 @@ def crystallography(element, value, status, render_template, msg=''): } html = render_template("crystallography.html", context) + try: xhtml = etree.XML(html) except Exception as err: # TODO: needs to be self.system.DEBUG - but can't access system if True: - log.debug('[inputtypes.textline] failed to parse XML for:\n%s' % html) + log.debug('[inputtypes.crystallography] failed to parse XML for:\n%s' % html) raise return xhtml _reg(crystallography) +def vsepr_input(element, value, status, render_template, msg=''): + eid = element.get('id') + if eid is None: + msg = 'cryst has no id: it probably appears outside of a known response type' + msg += "\nSee problem XML source line %s" % getattr(element, 'sourceline', '') + raise Exception(msg) + height = element.get('height') + width = element.get('width') + display_file = element.get('display_file') + + count = int(eid.split('_')[-2]) - 1 # HACK + size = element.get('size') + # if specified, then textline is hidden and id is stored in div of name given by hidden + hidden = element.get('hidden', '') + # Escape answers with quotes, so they don't crash the system! + escapedict = {'"': '"'} + value = saxutils.escape(value, escapedict) + + context = {'id': eid, + 'value': value, + 'state': status, + 'count': count, + 'size': size, + 'msg': msg, + 'hidden': hidden, + 'inline': element.get('inline', ''), + 'width': width, + 'height': height, + 'display_file': display_file, + } + + html = render_template("vsepr_input.html", context) + + try: + xhtml = etree.XML(html) + except Exception as err: + # TODO: needs to be self.system.DEBUG - but can't access system + if True: + log.debug('[inputtypes.vsepr_input] failed to parse XML for:\n%s' % html) + raise + return xhtml + +_reg(vsepr_input) + + #-------------------------------------------------------------------------------- diff --git a/common/lib/capa/capa/responsetypes.py b/common/lib/capa/capa/responsetypes.py index 269b4a5e79..a47b7f11fc 100644 --- a/common/lib/capa/capa/responsetypes.py +++ b/common/lib/capa/capa/responsetypes.py @@ -867,7 +867,8 @@ def sympy_check2(): """}] response_tag = 'customresponse' - allowed_inputfields = ['textline', 'textbox', 'crystallography', 'chemicalequationinput'] + + allowed_inputfields = ['textline', 'textbox', 'crystallography', 'chemicalequationinput, vsepr_input'] def setup_response(self): xml = self.xml diff --git a/common/lib/capa/capa/templates/vsepr_input.html b/common/lib/capa/capa/templates/vsepr_input.html new file mode 100644 index 0000000000..4003d0952a --- /dev/null +++ b/common/lib/capa/capa/templates/vsepr_input.html @@ -0,0 +1,60 @@ +<% doinline = "inline" if inline else "" %> + +
+
+
+ + +
+
+ + +
+ +
+ + + % if state == 'unsubmitted': +
+ % elif state == 'correct': +
+ % elif state == 'incorrect': +
+ % elif state == 'incomplete': +
+ % endif + % if hidden: +
+ % endif + + + +

+ % if state == 'unsubmitted': + unanswered + % elif state == 'correct': + correct + % elif state == 'incorrect': + incorrect + % elif state == 'incomplete': + incomplete + % endif +

+ +

+ + % if msg: + ${msg|n} + % endif +% if state in ['unsubmitted', 'correct', 'incorrect', 'incomplete'] or hidden: +
+% endif +
\ No newline at end of file From 495814c7f6a6f6f9f4b153efc21a07c9e124e552 Mon Sep 17 00:00:00 2001 From: Piotr Mitros Date: Sun, 14 Oct 2012 21:33:33 -0400 Subject: [PATCH 032/308] Hacked better alignment for VSEPR for demo --- common/lib/capa/capa/templates/vsepr_input.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/common/lib/capa/capa/templates/vsepr_input.html b/common/lib/capa/capa/templates/vsepr_input.html index 4003d0952a..1332b156a8 100644 --- a/common/lib/capa/capa/templates/vsepr_input.html +++ b/common/lib/capa/capa/templates/vsepr_input.html @@ -2,14 +2,14 @@
-
+
- +
@@ -57,4 +57,4 @@ % if state in ['unsubmitted', 'correct', 'incorrect', 'incomplete'] or hidden: % endif -
\ No newline at end of file +
From 6306d9800716d72f84d563f3874bdd5d1a686330 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Tue, 16 Oct 2012 17:52:30 +0300 Subject: [PATCH 033/308] vsepr: geometries and molecules now are passed from xml as parameters --- common/lib/capa/capa/inputtypes.py | 5 +++++ common/lib/capa/capa/templates/vsepr_input.html | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 16b36960c9..b8033d5859 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -726,6 +726,9 @@ def crystallography(element, value, status, render_template, msg=''): escapedict = {'"': '"'} value = saxutils.escape(value, escapedict) + molecules = element.get('molecules') + geometries = element.get('geometries') + context = {'id': eid, 'value': value, 'state': status, @@ -782,6 +785,8 @@ def vsepr_input(element, value, status, render_template, msg=''): 'width': width, 'height': height, 'display_file': display_file, + 'molecules': molecules, + 'geometries': geometries, } html = render_template("vsepr_input.html", context) diff --git a/common/lib/capa/capa/templates/vsepr_input.html b/common/lib/capa/capa/templates/vsepr_input.html index 1332b156a8..20e7e19dd3 100644 --- a/common/lib/capa/capa/templates/vsepr_input.html +++ b/common/lib/capa/capa/templates/vsepr_input.html @@ -2,7 +2,7 @@
-
+
From e6eedb92935b39bc4543477a5160a7c20ec055a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Tue, 16 Oct 2012 18:45:25 +0300 Subject: [PATCH 034/308] added chemtools to chem module in capa, and added it to global context --- common/lib/capa/capa/capa_problem.py | 5 ++++- common/lib/capa/capa/chem/chemtools.py | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 common/lib/capa/capa/chem/chemtools.py diff --git a/common/lib/capa/capa/capa_problem.py b/common/lib/capa/capa/capa_problem.py index 7e1caa416b..1c31725e4b 100644 --- a/common/lib/capa/capa/capa_problem.py +++ b/common/lib/capa/capa/capa_problem.py @@ -32,6 +32,8 @@ from xml.sax.saxutils import unescape import chem import chem.chemcalc +import chem.chemtools + import calc from correctmap import CorrectMap import eia @@ -78,7 +80,8 @@ global_context = {'random': random, 'scipy': scipy, 'calc': calc, 'eia': eia, - 'chemcalc': chem.chemcalc} + 'chemcalc': chem.chemcalc, + 'chemtools': chem.chemtools} # These should be removed from HTML output, including all subelements html_problem_semantics = ["codeparam", "responseparam", "answer", "script", "hintgroup"] diff --git a/common/lib/capa/capa/chem/chemtools.py b/common/lib/capa/capa/chem/chemtools.py new file mode 100644 index 0000000000..5d3ddf070b --- /dev/null +++ b/common/lib/capa/capa/chem/chemtools.py @@ -0,0 +1,2 @@ +def vsepr_grader(): + pass From 94b70fd89101017af14bdc6e4203affcfb51d2df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Tue, 16 Oct 2012 19:15:58 +0300 Subject: [PATCH 035/308] start grading implementation --- common/lib/capa/capa/chem/chemtools.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/common/lib/capa/capa/chem/chemtools.py b/common/lib/capa/capa/chem/chemtools.py index 5d3ddf070b..7a4abc9999 100644 --- a/common/lib/capa/capa/chem/chemtools.py +++ b/common/lib/capa/capa/chem/chemtools.py @@ -1,2 +1,17 @@ -def vsepr_grader(): - pass +from collections import OrderedDict + + +def vsepr_build_correct_answer(geometry, atoms): + correct_answer = OrderedDict() + correct_answer['geometry'] = geometry + correct_answer['atoms'] = OrderedDict(atoms) + return correct_answer + + +def vsepr_grade(user_input, correct_answer): + if user_input['geometry'] != correct_answer['geometry']: + return False + if user_input['atoms'].values() != correct_answer['atoms'].values(): + return False + return True + From 5185df38050eb598cddfae392187a11516ad1c57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Tue, 16 Oct 2012 19:42:04 +0300 Subject: [PATCH 036/308] continue vsepr grading --- common/lib/capa/capa/chem/chemtools.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/common/lib/capa/capa/chem/chemtools.py b/common/lib/capa/capa/chem/chemtools.py index 7a4abc9999..41bf95b055 100644 --- a/common/lib/capa/capa/chem/chemtools.py +++ b/common/lib/capa/capa/chem/chemtools.py @@ -1,6 +1,12 @@ from collections import OrderedDict +def vsepr_parse_user_answer(user_input): + d = OrderedDict(eval(user_input)) + d['atoms'] = OrderedDict(sorted(d['atoms'].items())) + return d + + def vsepr_build_correct_answer(geometry, atoms): correct_answer = OrderedDict() correct_answer['geometry'] = geometry @@ -9,6 +15,8 @@ def vsepr_build_correct_answer(geometry, atoms): def vsepr_grade(user_input, correct_answer): + print user_input, type(user_input) + print correct_answer, type(correct_answer) if user_input['geometry'] != correct_answer['geometry']: return False if user_input['atoms'].values() != correct_answer['atoms'].values(): From 948f8090eb5d9f93d68d219635ff5eed69193106 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Wed, 17 Oct 2012 17:31:19 +0300 Subject: [PATCH 037/308] grading for vsepr --- common/lib/capa/capa/chem/chemtools.py | 43 +++++++++++++++++++++----- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/common/lib/capa/capa/chem/chemtools.py b/common/lib/capa/capa/chem/chemtools.py index 41bf95b055..132bde17b4 100644 --- a/common/lib/capa/capa/chem/chemtools.py +++ b/common/lib/capa/capa/chem/chemtools.py @@ -1,8 +1,9 @@ from collections import OrderedDict +import json def vsepr_parse_user_answer(user_input): - d = OrderedDict(eval(user_input)) + d = OrderedDict(json.loads(user_input)) d['atoms'] = OrderedDict(sorted(d['atoms'].items())) return d @@ -10,16 +11,42 @@ def vsepr_parse_user_answer(user_input): def vsepr_build_correct_answer(geometry, atoms): correct_answer = OrderedDict() correct_answer['geometry'] = geometry - correct_answer['atoms'] = OrderedDict(atoms) + correct_answer['atoms'] = OrderedDict(sorted(atoms.items())) return correct_answer -def vsepr_grade(user_input, correct_answer): - print user_input, type(user_input) - print correct_answer, type(correct_answer) +def vsepr_grade(user_input, correct_answer, ignore_p_order=False, ignore_a_order=False, ignore_e_order=False): + """ Flags ignore_(a,p,e)_order are for checking order in axial, perepherial or equatorial positions + """ + # print user_input, type(user_input) + # print correct_answer, type(correct_answer) if user_input['geometry'] != correct_answer['geometry']: return False - if user_input['atoms'].values() != correct_answer['atoms'].values(): - return False - return True + # not order-aware comparisons + for ignore in [(ignore_p_order, 'p'), (ignore_e_order, 'e'), (ignore_a_order, 'a')]: + if ignore[0]: + # collecting atoms: + a_user = [v for k, v in user_input['atoms'].items() if k.startswith(ignore[1])] + a_correct = [v for k, v in correct_answer['atoms'].items() if k.startswith(ignore[1])] + # print ignore[0], ignore[1], a_user, a_correct + if len(a_user) != len(a_correct): + return False + if sorted(a_user) != sorted(a_correct): + return False + + # order-aware comparisons + for ignore in [(ignore_p_order, 'p'), (ignore_e_order, 'e'), (ignore_a_order, 'a')]: + if not ignore[0]: + # collecting atoms: + a_user = [v for k, v in user_input['atoms'].items() if k.startswith(ignore[1])] + a_correct = [v for k, v in correct_answer['atoms'].items() if k.startswith(ignore[1])] + # print '2nd', ignore[0], ignore[1], a_user, a_correct + if len(a_user) != len(a_correct): + return False + if len(a_correct) == 0: + continue + if a_user != a_correct: + return False + + return True From c5f6f7ada268d41fb468f3ce3adab129fb3dca67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Fri, 19 Oct 2012 16:11:11 +0300 Subject: [PATCH 038/308] html entities are renamed to work with different id's --- common/lib/capa/capa/templates/vsepr_input.html | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/common/lib/capa/capa/templates/vsepr_input.html b/common/lib/capa/capa/templates/vsepr_input.html index 20e7e19dd3..588e53c914 100644 --- a/common/lib/capa/capa/templates/vsepr_input.html +++ b/common/lib/capa/capa/templates/vsepr_input.html @@ -2,19 +2,17 @@
-
- +
+
- -
- % if state == 'unsubmitted':
% elif state == 'correct': From c1e75e083febfb48ddfdf8230557ba1556a0f5d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Mon, 22 Oct 2012 19:25:07 +0300 Subject: [PATCH 039/308] added unittests --- common/lib/capa/capa/chem/chemtools.py | 86 +++++++++++++++++++++++++- 1 file changed, 85 insertions(+), 1 deletion(-) diff --git a/common/lib/capa/capa/chem/chemtools.py b/common/lib/capa/capa/chem/chemtools.py index 132bde17b4..e5a8e1a6f6 100644 --- a/common/lib/capa/capa/chem/chemtools.py +++ b/common/lib/capa/capa/chem/chemtools.py @@ -1,5 +1,6 @@ from collections import OrderedDict import json +import unittest def vsepr_parse_user_answer(user_input): @@ -16,13 +17,20 @@ def vsepr_build_correct_answer(geometry, atoms): def vsepr_grade(user_input, correct_answer, ignore_p_order=False, ignore_a_order=False, ignore_e_order=False): - """ Flags ignore_(a,p,e)_order are for checking order in axial, perepherial or equatorial positions + """ Flags ignore_(a,p,e)_order are for checking order in axial, perepherial or equatorial positions. + Allowed cases: + c0, a, e + c0, p + Not implemented and not tested cases when p with a or e (no need for now) """ # print user_input, type(user_input) # print correct_answer, type(correct_answer) if user_input['geometry'] != correct_answer['geometry']: return False + if user_input['atoms']['c0'] != correct_answer['atoms']['c0']: + return False + # not order-aware comparisons for ignore in [(ignore_p_order, 'p'), (ignore_e_order, 'e'), (ignore_a_order, 'a')]: if ignore[0]: @@ -50,3 +58,79 @@ def vsepr_grade(user_input, correct_answer, ignore_p_order=False, ignore_a_order return False return True + + +class Test_Grade(unittest.TestCase): + ''' test grade function ''' + + def test_incorrect_geometry(self): + correct_answer = vsepr_build_correct_answer(geometry="AX4E0", atoms={"c0": "N", "p0": "H", "p1": "(ep)", "p2": "H", "p3": "H"}) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX3E0","atoms":{"c0":"B","p0":"F","p1":"B","p2":"F"}}') + self.assertFalse(vsepr_grade(user_answer, correct_answer)) + + def test_incorrect_positions(self): + correct_answer = vsepr_build_correct_answer(geometry="AX4E0", atoms={"c0": "N", "p0": "H", "p1": "(ep)", "p2": "H", "p3": "H"}) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX4E0","atoms":{"c0":"B","p0":"F","p1":"B","p2":"F"}}') + self.assertFalse(vsepr_grade(user_answer, correct_answer)) + + def test_correct_answer(self): + correct_answer = vsepr_build_correct_answer(geometry="AX4E0", atoms={"c0": "N", "p0": "H", "p1": "(ep)", "p2": "H", "p3": "H"}) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX4E0","atoms":{"c0":"N","p0":"H","p1":"(ep)","p2":"H", "p3":"H"}}') + self.assertTrue(vsepr_grade(user_answer, correct_answer)) + + def test_incorrect_position_order_p(self): + correct_answer = vsepr_build_correct_answer(geometry="AX4E0", atoms={"c0": "N", "p0": "H", "p1": "(ep)", "p2": "H", "p3": "H"}) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX4E0","atoms":{"c0":"N","p0":"H","p1":"H","p2":"(ep)", "p3":"H"}}') + self.assertFalse(vsepr_grade(user_answer, correct_answer)) + + def test_correct_position_order_with_ignore_p_order(self): + correct_answer = vsepr_build_correct_answer(geometry="AX4E0", atoms={"c0": "N", "p0": "H", "p1": "(ep)", "p2": "H", "p3": "H"}) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX4E0","atoms":{"c0":"N","p0":"H","p1":"H","p2":"(ep)", "p3":"H"}}') + self.assertTrue(vsepr_grade(user_answer, correct_answer, ignore_p_order=True)) + + def test_incorrect_position_order_ae(self): + correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "test", "a1": "(ep)", "e0": "H", "e1": "H", "e2": "(ep)", "e3": "(ep)"}) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"test","a1":"(ep)","e0":"H","e1":"(ep)","e2":"(ep)","e3":"(ep)"}}') + self.assertFalse(vsepr_grade(user_answer, correct_answer)) + + def test_correct_position_order_with_ignore_a_order_not_e(self): + correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "test", "e0": "H", "e1": "H", "e2": "(ep)", "e3": "(ep)"}) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"test","a1":"(ep)","e0":"H","e1":"H","e2":"(ep)","e3":"(ep)"}}') + self.assertTrue(vsepr_grade(user_answer, correct_answer, ignore_a_order=True)) + + def test_incorrect_position_order_with_ignore_a_order_not_e(self): + correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "test", "e0": "H", "e1": "H", "e2": "H", "e3": "(ep)"}) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"test","a1":"(ep)","e0":"H","e1":"H","e2":"(ep)","e3":"H"}}') + self.assertFalse(vsepr_grade(user_answer, correct_answer, ignore_a_order=True)) + + def test_correct_position_order_with_ignore_e_order_not_a(self): + correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "test", "e0": "H", "e1": "H", "e2": "H", "e3": "(ep)"}) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"(ep)","a1":"test","e0":"H","e1":"H","e2":"(ep)","e3":"H"}}') + self.assertTrue(vsepr_grade(user_answer, correct_answer, ignore_e_order=True)) + + def test_incorrect_position_order_with_ignore_e_order__not_a(self): + correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "test", "e0": "H", "e1": "H", "e2": "H", "e3": "(ep)"}) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"test","a1":"(ep)","e0":"H","e1":"H","e2":"(ep)","e3":"H"}}') + self.assertFalse(vsepr_grade(user_answer, correct_answer, ignore_e_order=True)) + + def test_correct_position_order_with_ignore_ae_order(self): + correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "test", "e0": "H", "e1": "H", "e2": "H", "e3": "(ep)"}) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"test","a1":"(ep)","e0":"H","e1":"H","e2":"(ep)","e3":"H"}}') + self.assertTrue(vsepr_grade(user_answer, correct_answer, ignore_e_order=True, ignore_a_order=True)) + + def test_incorrect_c0(self): + correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "test", "e0": "H", "e1": "H", "e2": "H", "e3": "(ep)"}) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"H","a0":"test","a1":"(ep)","e0":"H","e1":"H","e2":"(ep)","e3":"H"}}') + self.assertFalse(vsepr_grade(user_answer, correct_answer, ignore_e_order=True, ignore_a_order=True)) + + +def suite(): + + testcases = [Test_Grade] + suites = [] + for testcase in testcases: + suites.append(unittest.TestLoader().loadTestsFromTestCase(testcase)) + return unittest.TestSuite(suites) + +if __name__ == "__main__": + unittest.TextTestRunner(verbosity=2).run(suite()) From 5cd04906e6235e0ee40ce753e1a8803945248215 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Fri, 26 Oct 2012 18:16:37 +0300 Subject: [PATCH 040/308] fix typo --- common/lib/capa/capa/responsetypes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/lib/capa/capa/responsetypes.py b/common/lib/capa/capa/responsetypes.py index a47b7f11fc..427067d523 100644 --- a/common/lib/capa/capa/responsetypes.py +++ b/common/lib/capa/capa/responsetypes.py @@ -868,7 +868,7 @@ def sympy_check2(): response_tag = 'customresponse' - allowed_inputfields = ['textline', 'textbox', 'crystallography', 'chemicalequationinput, vsepr_input'] + allowed_inputfields = ['textline', 'textbox', 'crystallography', 'chemicalequationinput', 'vsepr_input'] def setup_response(self): xml = self.xml From 9558629e157a270d8b5cd50800dc01d9a19133b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Fri, 26 Oct 2012 18:21:00 +0300 Subject: [PATCH 041/308] fix merge error --- common/lib/capa/capa/inputtypes.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index b8033d5859..40fe24434e 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -726,9 +726,6 @@ def crystallography(element, value, status, render_template, msg=''): escapedict = {'"': '"'} value = saxutils.escape(value, escapedict) - molecules = element.get('molecules') - geometries = element.get('geometries') - context = {'id': eid, 'value': value, 'state': status, @@ -774,6 +771,9 @@ def vsepr_input(element, value, status, render_template, msg=''): escapedict = {'"': '"'} value = saxutils.escape(value, escapedict) + molecules = element.get('molecules') + geometries = element.get('geometries') + context = {'id': eid, 'value': value, 'state': status, From 7a84bed916b035f11a4923031c6fb920cf698406 Mon Sep 17 00:00:00 2001 From: David Ormsbee Date: Fri, 26 Oct 2012 15:50:32 -0400 Subject: [PATCH 042/308] hackish EAD export support --- .../management/commands/pearson_export_cdd.py | 5 +- .../management/commands/pearson_export_ead.py | 162 ++++++++++++++++++ 2 files changed, 164 insertions(+), 3 deletions(-) create mode 100644 common/djangoapps/student/management/commands/pearson_export_ead.py diff --git a/common/djangoapps/student/management/commands/pearson_export_cdd.py b/common/djangoapps/student/management/commands/pearson_export_cdd.py index e9433f15d5..b10e92d92d 100644 --- a/common/djangoapps/student/management/commands/pearson_export_cdd.py +++ b/common/djangoapps/student/management/commands/pearson_export_cdd.py @@ -67,10 +67,9 @@ class Command(BaseCommand): return TestCenterUser(**data) def generate_id(): - sub_uuid = str(uuid.uuid4()).upper() - return sub_uuid[-12:-8] + '-' + sub_uuid[-8:-4] + '-' + sub_uuid[-4:] + return "edX{:012}".format(uuid.uuid4().int % (10**12)) - TestCenterUser.objects.all().delete() + # TestCenterUser.objects.all().delete() samples = [ make_sample( diff --git a/common/djangoapps/student/management/commands/pearson_export_ead.py b/common/djangoapps/student/management/commands/pearson_export_ead.py new file mode 100644 index 0000000000..33ab837d1b --- /dev/null +++ b/common/djangoapps/student/management/commands/pearson_export_ead.py @@ -0,0 +1,162 @@ +import csv +import uuid +from collections import defaultdict, OrderedDict +from datetime import datetime + +from django.core.management.base import BaseCommand, CommandError + +from student.models import TestCenterUser + +def generate_id(): + return "{:012}".format(uuid.uuid4().int % (10**12)) + +class Command(BaseCommand): + args = '' + help = """ + Export user information from TestCenterUser model into a tab delimited + text file with a format that Pearson expects. + """ + FIELDS = [ + 'AuthorizationTransactionType', + 'AuthorizationID', + 'ClientAuthorizationID', + 'ClientCandidateID', + 'ExamAuthorizationCount', + 'ExamSeriesCode', + 'EligibilityApptDateFirst', + 'EligibilityApptDateLast', + 'LastUpdate', + ] + + def handle(self, *args, **kwargs): + if len(args) < 1: + print Command.help + return + + # self.reset_sample_data() + + with open(args[0], "wb") as outfile: + writer = csv.DictWriter(outfile, + Command.FIELDS, + delimiter="\t", + quoting=csv.QUOTE_MINIMAL, + extrasaction='ignore') + writer.writeheader() + for tcu in TestCenterUser.objects.order_by('id')[:5]: + record = defaultdict( + lambda: "", + AuthorizationTransactionType="Add", + ClientAuthorizationID=generate_id(), + ClientCandidateID=tcu.client_candidate_id, + ExamAuthorizationCount="1", + ExamSeriesCode="MIT 6.002-001", + EligibilityApptDateFirst="2012/12/15", + EligibilityApptDateLast="2012/12/30", + LastUpdate=datetime.utcnow().strftime("%Y/%m/%d %H:%M:%S") + ) + writer.writerow(record) + + + + + + + + + + + + + + + def reset_sample_data(self): + def make_sample(**kwargs): + data = dict((model_field, kwargs.get(model_field, "")) + for model_field in Command.CSV_TO_MODEL_FIELDS.values()) + return TestCenterUser(**data) + + # TestCenterUser.objects.all().delete() + + samples = [ + make_sample( + client_candidate_id=generate_id(), + first_name="Jack", + last_name="Doe", + middle_name="C", + address_1="11 Cambridge Center", + address_2="Suite 101", + city="Cambridge", + state="MA", + postal_code="02140", + country="USA", + phone="(617)555-5555", + phone_country_code="1", + user_updated_at=datetime.utcnow() + ), + make_sample( + client_candidate_id=generate_id(), + first_name="Clyde", + last_name="Smith", + middle_name="J", + suffix="Jr.", + salutation="Mr.", + address_1="1 Penny Lane", + city="Honolulu", + state="HI", + postal_code="96792", + country="USA", + phone="555-555-5555", + phone_country_code="1", + user_updated_at=datetime.utcnow() + ), + make_sample( + client_candidate_id=generate_id(), + first_name="Patty", + last_name="Lee", + salutation="Dr.", + address_1="P.O. Box 555", + city="Honolulu", + state="HI", + postal_code="96792", + country="USA", + phone="808-555-5555", + phone_country_code="1", + user_updated_at=datetime.utcnow() + ), + make_sample( + client_candidate_id=generate_id(), + first_name="Jimmy", + last_name="James", + address_1="2020 Palmer Blvd.", + city="Springfield", + state="MA", + postal_code="96792", + country="USA", + phone="917-555-5555", + phone_country_code="1", + extension="2039", + fax="917-555-5556", + fax_country_code="1", + company_name="ACME Traps", + user_updated_at=datetime.utcnow() + ), + make_sample( + client_candidate_id=generate_id(), + first_name="Yeong-Un", + last_name="Seo", + address_1="Duryu, Lotte 101", + address_2="Apt 55", + city="Daegu", + country="KOR", + phone="917-555-5555", + phone_country_code="011", + user_updated_at=datetime.utcnow() + ), + + ] + + for tcu in samples: + tcu.save() + + + \ No newline at end of file From da56f190a2283772de5f72a03c6bd2cbe7ffbcb8 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Fri, 26 Oct 2012 21:41:22 -0400 Subject: [PATCH 043/308] putting vsepr static image files where vsepr js can find them. TODO: reogranize after proper input type static file storage is sorted out. --- .../images/capa/vsepr/AX2E0-3D-balls.png | Bin 0 -> 32790 bytes .../images/capa/vsepr/AX2E1-3D-balls.png | Bin 0 -> 61843 bytes .../images/capa/vsepr/AX2E2-3D-balls.png | Bin 0 -> 80754 bytes .../images/capa/vsepr/AX2E3-3D-balls.png | Bin 0 -> 79137 bytes .../images/capa/vsepr/AX3E0-3D-balls.png | Bin 0 -> 65304 bytes .../images/capa/vsepr/AX3E1-3D-balls.png | Bin 0 -> 63627 bytes .../images/capa/vsepr/AX3E2-3D-balls.png | Bin 0 -> 67530 bytes .../images/capa/vsepr/AX4E0-3D-balls.png | Bin 0 -> 52642 bytes .../images/capa/vsepr/AX4E1-3D-balls.png | Bin 0 -> 76179 bytes .../images/capa/vsepr/AX4E2-3D-balls.png | Bin 0 -> 87475 bytes .../images/capa/vsepr/AX5E1-3D-balls.png | Bin 0 -> 72517 bytes .../images/capa/vsepr/AX5E2-3D-balls.png | Bin 0 -> 81700 bytes .../images/capa/vsepr/AX6E0-3D-balls.png | Bin 0 -> 58834 bytes .../images/capa/vsepr/AX6E1-3D-balls.png | Bin 0 -> 65374 bytes .../images/capa/vsepr/AX7E0-3D-balls.png | Bin 0 -> 57532 bytes .../images/capa/vsepr/AX8E0-3D-balls.png | Bin 0 -> 72760 bytes .../images/capa/vsepr/AX9E0-3D-balls.png | Bin 0 -> 70859 bytes .../static/images/capa/vsepr/Bent-3D-balls.png | Bin 0 -> 62092 bytes .../images/capa/vsepr/Linear-3D-balls.png | Bin 0 -> 44902 bytes .../static/images/capa/vsepr/Linear-stick.png | Bin 0 -> 63314 bytes .../images/capa/vsepr/Octahedral-3D-balls.png | Bin 0 -> 62223 bytes .../images/capa/vsepr/Octahedral-stick.png | Bin 0 -> 137098 bytes .../vsepr/Pentagonal-bipyramidal-3D-balls.png | Bin 0 -> 61456 bytes .../capa/vsepr/Pentagonal-planar-3D-balls.png | Bin 0 -> 72626 bytes .../vsepr/Pentagonal-pyramidal-3D-balls.png | Bin 0 -> 71485 bytes .../images/capa/vsepr/Pyramidal-3D-balls.png | Bin 0 -> 63322 bytes .../images/capa/vsepr/Seesaw-3D-balls.png | Bin 0 -> 66832 bytes .../vsepr/Square-antiprismatic-3D-balls.png | Bin 0 -> 88977 bytes .../capa/vsepr/Square-planar-3D-balls.png | Bin 0 -> 71351 bytes .../images/capa/vsepr/T-shaped-3D-balls.png | Bin 0 -> 57074 bytes .../images/capa/vsepr/Tetrahedral-3D-balls.png | Bin 0 -> 53631 bytes .../images/capa/vsepr/Tetrahedral-stick.png | Bin 0 -> 94669 bytes .../images/capa/vsepr/Trigonal-3D-balls.png | Bin 0 -> 56071 bytes .../vsepr/Trigonal-bipyramidal-3D-balls.png | Bin 0 -> 47683 bytes .../capa/vsepr/Trigonal-bipyramidal-stick.png | Bin 0 -> 118416 bytes .../capa/vsepr/Trigonal-planar-stick.png | Bin 0 -> 89521 bytes 36 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 common/static/images/capa/vsepr/AX2E0-3D-balls.png create mode 100644 common/static/images/capa/vsepr/AX2E1-3D-balls.png create mode 100644 common/static/images/capa/vsepr/AX2E2-3D-balls.png create mode 100644 common/static/images/capa/vsepr/AX2E3-3D-balls.png create mode 100644 common/static/images/capa/vsepr/AX3E0-3D-balls.png create mode 100644 common/static/images/capa/vsepr/AX3E1-3D-balls.png create mode 100644 common/static/images/capa/vsepr/AX3E2-3D-balls.png create mode 100644 common/static/images/capa/vsepr/AX4E0-3D-balls.png create mode 100644 common/static/images/capa/vsepr/AX4E1-3D-balls.png create mode 100644 common/static/images/capa/vsepr/AX4E2-3D-balls.png create mode 100644 common/static/images/capa/vsepr/AX5E1-3D-balls.png create mode 100644 common/static/images/capa/vsepr/AX5E2-3D-balls.png create mode 100644 common/static/images/capa/vsepr/AX6E0-3D-balls.png create mode 100644 common/static/images/capa/vsepr/AX6E1-3D-balls.png create mode 100644 common/static/images/capa/vsepr/AX7E0-3D-balls.png create mode 100644 common/static/images/capa/vsepr/AX8E0-3D-balls.png create mode 100644 common/static/images/capa/vsepr/AX9E0-3D-balls.png create mode 100644 common/static/images/capa/vsepr/Bent-3D-balls.png create mode 100644 common/static/images/capa/vsepr/Linear-3D-balls.png create mode 100644 common/static/images/capa/vsepr/Linear-stick.png create mode 100644 common/static/images/capa/vsepr/Octahedral-3D-balls.png create mode 100644 common/static/images/capa/vsepr/Octahedral-stick.png create mode 100644 common/static/images/capa/vsepr/Pentagonal-bipyramidal-3D-balls.png create mode 100644 common/static/images/capa/vsepr/Pentagonal-planar-3D-balls.png create mode 100644 common/static/images/capa/vsepr/Pentagonal-pyramidal-3D-balls.png create mode 100644 common/static/images/capa/vsepr/Pyramidal-3D-balls.png create mode 100644 common/static/images/capa/vsepr/Seesaw-3D-balls.png create mode 100644 common/static/images/capa/vsepr/Square-antiprismatic-3D-balls.png create mode 100644 common/static/images/capa/vsepr/Square-planar-3D-balls.png create mode 100644 common/static/images/capa/vsepr/T-shaped-3D-balls.png create mode 100644 common/static/images/capa/vsepr/Tetrahedral-3D-balls.png create mode 100644 common/static/images/capa/vsepr/Tetrahedral-stick.png create mode 100644 common/static/images/capa/vsepr/Trigonal-3D-balls.png create mode 100644 common/static/images/capa/vsepr/Trigonal-bipyramidal-3D-balls.png create mode 100644 common/static/images/capa/vsepr/Trigonal-bipyramidal-stick.png create mode 100644 common/static/images/capa/vsepr/Trigonal-planar-stick.png diff --git a/common/static/images/capa/vsepr/AX2E0-3D-balls.png b/common/static/images/capa/vsepr/AX2E0-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..b5a0161dadf8ffee5c77f82414561a79bc8e4e68 GIT binary patch literal 32790 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 Mq&}ip!#ec;02a)V2><{9 literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/AX2E2-3D-balls.png b/common/static/images/capa/vsepr/AX2E2-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..35ad434bb67516605fe4edca775da122ee240a4e GIT binary patch literal 80754 zcmdqI^;^^b7e0=N3aE4_AyNYrK{{m$qf1H}q;qt~=w<@VPQ*RVLked`xNt^ z3hCF6FdsM;UlhM!Va+ejDr<3L{(fpKFAc)FfB5;Yt0V~v%O6V?^hMoc`QXkyoq5Rf zO(aZX&9`@aa&mWogW`3ROuP)vXMd(1Ry85rVo>DUFC+P8JKz6~UNB}Pb1-WsR{7Mp zg0<^SQPL{>W>9<(11?Df9u6J@CwFa+F=a;s>7Zki@#)PQY(Tv2d`6dT&RF9*L_vGejeZ9?21pCjOV4F{&C+ zni(gBFQ;+-^l=E?{fY7$W!G(!4 z+i!BykK)-Rb+KGRutrHrNT#2vS6X(d^2!HWjH;%X$;#o1=8;Wk7UFWU6%oWrMM^Pd zdLOp6-R)&H#A3dvUi}rpT)ODp_|$FRG=v5Z^I{<{#{x5mKf(h2!Ad3#z}l8e_=?Y1gbM=6l`$8| zq%a4BU(Dl_spC&YOYJ92%X~6O-OsBp97;_cP21fIbEX!!2n+gxSA^S_*K4W1nFjeg zUvSq-f_W)fGN~pzsBWm`-hA0^;|fA9H!0h}#TvxM`UyT~y~mlP#HPd&RK|4-B{Hre zN>BWCr&gw5zN{x@LaNhbi}@|tTsZ}=in~CgnD?DDBOj2eOmj3b=T*$?!kFqOL8>z8 z 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 literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/AX2E3-3D-balls.png b/common/static/images/capa/vsepr/AX2E3-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..7535de598ba3bdc66545d03c0bc6dedc2b4353f8 GIT binary patch literal 79137 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

CT($3&&Mdwz?k2K4d@6Bd(NA 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

D|r=)%zZ+v~pHH6LA62x#S7 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%0A6{*K10Ybk5jOTFv*cZ?FWzU$;2f50k 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 MM%>fHsapsC9|EX$od5s; literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/AX3E1-3D-balls.png b/common/static/images/capa/vsepr/AX3E1-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..e50a46b50074d7ba89bbfd69a26c790b321181de GIT binary patch literal 63627 zcmdqIg}Ngqy4Ss8M?cq6A$&yh2m}HVs;MgJf6`uq))Y)H_mjjG?YbA}$}&#!O#8DP@=XMrZ) z6!qCu2U}inf(5S`k9sgGD>*s&H^Tpg6WsgmhiprEYgtQ~QFZ&};vT`d=C!By`AYfa z?!@(dpaGVT@Bhy(US;PMj8vE^0?>;n#H9-w=)x|XlhB6dj+LI zBA9l);#E zL)0cy!|c(;F*?~ndP-mMKrHASpShT8oO7B;Sf@X5YI3oCZgw^X7D{CO%#SIZQ?%2r zra)X&>SH6In!9s8jq%_0!#Zno#k6mvL=IK0zKIDcEHMxBQ*^MwvH;bmNVsCx>!s=_E5+G2f_7C^h`K zDb3ld7-duIszsa^G@ISC5K;rGN2ouz$wDA?{aAdYpTImc4N= zjsnqh)IN=^%mS~ZAQIG;el6jlI2&U+z3-k7TuJpLd=ridF(eVdl;7$+Mp(v_&B5Q* zk?H>S6s=N#idYnlCf7;`vkgY6j}-~7uvRn+l}XJU*%N72r_pT#o5c=2drd`|#A95! z)_H#?ZR*yyvC!=CuSu4HpTC*~+SR1pIkNX+=H|zx;MtAZd&vE@7RRkmG5NhhF?sfa zD~|kQw=k<9f#103MB@^I_UxfF87#@M=ki-)C4|3+5*`OxKN%URl`*S=5siYs)97xB zOA+Z^6i4)f#qAFm*X#u%#02`s=?RjuTfO<8!VjBicgCf>V{bP8oSaB@|E8zrucnyh zZEV9KCnu$(#9q$lyiGCW@$oLFsCdupibnRrva4$J?bIsRqs6r%;=^!_?#m)cK~3@? zxP3$ds{@-iySKf7?0-kVUcaSh$I7lAL`*PvzY@gfkj8G7>phg%%}gUQz^Gl7oA#r=&fkI_jjIX=UOl2t0?4P zpejri44~bi*_{6x12G*2k4MA)tQmdtn-~}Sc15=ma4EELzkpf@gj#5iWOwW1&)CvZ z(Jds-K%?{;S?@g_Cf`wVTVMqjiga=fQ685P&~M*0!+#q!;CR zb8rOwFkJ-GJC|1a`GC8hSmBL zu8*PlheEkCb6DSL4EA#-IPb| zZTn*R=X-I=sqgxGR8ra7uxu?KyH@%d&PR`ZtR|f}Ap-rey=EqyrH{DTRyrjrd-`jR z$rKe+r)-=)RX-VNF)5+xYQgUVEA%hCRPx*bNX_DDo%d094}ahv_LhHv#6rNv3?BT! zZq;popHZ#1EIRu58(ebzb;I&{gqM_nBTH=z`Nnv#nGngX&){RtDVzCw#S zAwBkJu^_V3bhF^V#4Tlxe9G1e{N(KB&!v`ZK)cVe{KNfQP&~$)f7r4|mB4Bp&`5jd z1>n6=iz5^98T3*ML8JUDlRO_e^da<-XplL@5;mlWHrZj}MJ{_?c=XD2aM2^)2Kc`1 z97ZK`_cM?NCFQT9Y`6Z1;7DqIetrW~v`v+txA@1`b`(IxsJVl6;Pp3Ji{q_HD}94d zlunPTSCG!qi`w69+XqehXv&f4(9H!3WA3!_)AxA18LKSM(S-S4=~xXxU+~Q*B6}p2 zJRzM$fEzamjlY=pKkfoxJqXYv5&46eK6l(5G;YjRcaUhy-krS!*81Zmbq#z7>I%$f zgWZ}1D$sex6f_KiAlYD(SEV0#sT=Xy2TjwU7x&qq7uWA}kp~I+iX<@iQD){W6(tTr z>>Y1y3ES0CTT!;|iH?Yc z^;!^ra@#fo4CPRsc$R3pTeo{Fut-Po($&Ml^h(h0Ml|RLL!4iSxF+t>+cmj=!{pjo zJJJ{FN4Y})*QMeBobzmV&IACmmRRHRx`n6YI&tGNlU}l4IbQp7%OV=}B$~s1OWf}^ zGhQhp2cJH_HcAe2s?dY$o(az8<;C#m(U*|f>BjXCQ!BkYwH9}|k&&cEh387Tx2qXiO51nAg*;{LagkFiD2}ph z#JbmSm^Agg$o9>MF_vND4EejEUxTVO5FGfw4@V};MhVDK)^>CE89a{B0&N*z%a!v)n{Wu5!caMa!N%q``BpdKtQ)gO^`$Rh=pspVX1{L#@6qBd(~U&El;=a zZtZ6YN%+=K%i19dW$snVRvuW0=H2t|*hfO3aD~ZcCGn=3gcaXzJfUBu#ZO0pu|wZu7A7gM$qc(&0X=>AUwVL%YliT=Xr(h(n7>`KD2@c0!%!; zubf_4c0I4)}IkRZBDonv|i&&MFqLuYoaVxL!Kz6ywvI7Lb z!`X3W2COONx1IMAs#*W;>+GYz^4UlBqkK5dSNx6)?<@5Nom-4~hD4gmtzewJ>3e%4 z2jf}+ua~bct^?Dt+D!S9p*{_Sg{_4bBn%OBI=xdnVYJ->fAdRA=h#ddpz$}PK>RVb zLJ@X(o@?75WUYf9648b+NIo+DUpe9Gj#|5)KLkX8i{{)cu=qF{eox897(T3A?6o9&g zL=-5nTMk>igCS5)$*Ci_WY->BZ;3CY;lk>y!MZLWg&q+l zfaN@Vy71@PYF3G47I(r1Y<(f}Q-%m?EnSNy`16eraK6p9Wk^iMu~P#UtlE{(Rsw^X ziEaKXHFlYY)$oD73cHE6Bu_)xfug1J(!nPD zY(xr>XCf^ZOSu@N?8dzJKLI`CT%Qfb45W?9a-GM*cg0%93#Euu zQT*-bImDLxteoOr=`ofp`7^W``gF&VK|}K5=zYGiH)2JP_<={B9PZC+xv^|{epq1l zcwWC7w&_iGLVE6Mc43Z{yEV6ScLRCJY!<#ug*8PN5-V3DJqZsZ+q zE6q&cwk_W>m6ay2&Lp5KlfwAqZhm32v8C4DV|?wxee-9ZC~53~dwFZ9%1HB;clp$+ z+L}Pt_vS#G_bv<-YfMnFrfys6r>_({`{$V+0Ur&pyB+(vVUKWFUxdr|3zJ=@2n@n* z4Z9p@y#|I6QQX1G%I5BKtYoXN8!``;n0>$}jewMqzrg=l!R@@|F7Um*&5S5a|7CK?50@$A$KY7{w(lF6 zoeIN~&>mA7lSW)SUvi_tQQ7Gp-xbw1J4-}6X6HxOW?PjFCzQslL$Tw?WaGCxQP0+? z9jn2gWD!|=l_zBqoY!x&f8#IT)itnPWsW%eLL?^_Xs4XKTpMn|^;WG`Hwn$WqNnQbhhE3o8`C~%+7K-wOPbe`#9Rus?N%#i^pCp&xaqRfgXtFNr za}^t8;B{8@nwtx~_O>7WQ8~NAP82;o@^z}=eI+fr*g?9>NYkgHsy<8K_)*6tzDQ{0 zVlP-K9@2K7q!DM)t+x)CrD+&tmd_*n?{HdHpSM5|9*2VvhtxC2*B#$haMp$~+~hT9 z5|VtgtOQ^Y&1a`x;W<&ec}gz069E&i2HRGLtfBChGa8uRjZhRACW~jeMNxeWgmw7W zp@$pW=Vl{;OoKh=fmjf~$trx7omn0mT{uO+a?-K2M$?l&!dxf&PTb5&k;ACmH1Mi#6hpWIZph|PMue7oxE zA5~h?EYbxI^b!bC0mw5SigHc&fDPK$SjhcfjF$E#cpai*MKpr7Qv8RvV0ur_MblKP z*tKRR>>3dS@=#}KG?GhERWM8cpww9VtRA_%aD-k?g5W?oaz2&4tS9<%8T$j)4shm7?kj*M^=~_2@O$_xv^cgm|u(X z5?MR%k%0B$4aPQW!y_ZuPL_I}T{pn<*k%_YJ+H58cUQn7&}VTTvu2f!Je@Ca*6K2- zUk?Kzo)?f6@X@`A`~832-}QZ-BKK3|J1eaUxl5jJ+E&Ds@3lCdZ11Jb*boR5<)uKB zmoD6Ycna@p#SqaIvTS%6?|*__xVnUL&YG37lN%lBi3rWrAV*A~-~J$E*O> zKLEON9#Xy9O3aMAfF<8){`{iU<|u8Dl7>_v*LyP#wAr$GEg97GOk_s#crc($K<|iV zXR~`S+@MPy7hD5F50^eOM4s5(RQ&kZa$^DS{r$GSR(g?NRp=ar$Bxd#GM=Y}qkcei+%J{jt?bA$n&pePAX#iNF*pAn0MT zvP!rxvTr%}mey!{%>2s;gL_#--PuIM^E*0EYSWfDh}V5HGDo;0a(raOY4LH~4Q5+g ze&VN!B`d!={8Tt6cpWA0F9Vailns^j1EwHGx~ICs-jE zl`c-wU=qAI{(}5;H9{5Dg)P9L=-W8u77<01&Gw(4?Aq)7P`n99-Xb6!Z$9eazyR$u z<;nu+Dg?M<9>PDqXxLw4HonKNVMJN=HhPJvUnauVcr};r&i2V=kBE1Vr+HoNVAr!( zpnUXDJQ1%>honxE`GlOY47V|(RURSMElH}qVi?@^>%^XLzX0A^r@HKGz%fR60Kypf z8i@4f!-DN&_Af-#eZMVyt?|a?5&teYbw{_V|KjX_^P(xOVgU;Tb1wvo5Aq#bx=a(G;?K6MG~q zmn>mK#N7JnmO6yIBE&q4^wj51ottG0CL!hd<&&lJWIRO^gXDpi@i!7crNOujph^0@ zC2UJVOZ;#FEXwaI1ag`SmE|FoaYAW@74DVjh%BQKw&M~eN`qaAQWCw6H4P(WUJqn{ zCn)T?!S1_9Nekobn`9!HF}e&pgD(e2n;$|V>tZ;WE+Ch1lniGv2G}yrfpp3cBs81G z8hX8FAt?wNL5_$O>`s5E(N%a~u9-ZYJ*43=P(){>sJke!H)EIHH|GTv`E8Th+@s9* z2|`bEW2xOct7zb*(oZQ<*YkqH^=oTo{cL{2YA7XaJMM-WwUr_O%6bpdUl)2xOE*9J&W65xPM1Z&D4 zHB@TS`palhbl8ZG=A1bN@;UwhB*A>*gV$92xI6T)V*iwS#mq@ZA*7^_1@_KCc$%tP zPIzJZD3WS9PFhydxxW%<6je@mJ8Vr4u24zOKhs2?%PXLv@gQ~# zfqcDj{K_GOQKPvLNCfDrgkGvplcc?~>lKW%oD%!a}v zgR+pk1AeiLHyRe&=%P;IU6PeY14OKw5`#iK)e|YzpR13?;gD=L6XrUiTmv76PhL6u zdw{mVe1KKCIlmof&L)rTF1)Hcii^V1rn0bQGARcKrYRX7mU`lI@uTs4r;I!~JDJD6 zzarbFJkbV&#)zznUU$FqGjSQMUUp;n7wBbwDt{GyP=^w@7u?8jxMRgFe~Y*{;#V#N`qz*44x*dOAJsrUk2>l$&4U z?;+%_=K}H4KMS9BjAfVpPz(t0rxkI8AG-@MRhZ5j^prg%zQg9WDhi5nVYu|z2D&rC zfP9d&gWq2*qcgo?c}{3C7_kG5EQDT+b%uG=^HP_#&{5Mn#_(3$JxRgZ5~Q~=6+xIX z<#P)x&{O%>BTxRiTc&szq?M{Q9`3GqS=LIaHPHPB-Xm;n1a*qTQ1N#UHw_hG4COnS znO=Q7C@e$vZ!;x4S)}6h|HhER!V=sc28K6lhyq0>^}5lVEGG{WQ?<5+$#DT6u4)rm zBMSDjB@5T>(hx0?;sGKB$GC*H>IM_Xh?B3$D5cB{lzR5k4U%xx^^9xaRWBl<%B-SC z!%HvLVOxW$IQ1ge(s7_0Oe3gp^1CR zJ*eLUt!ksVGmVgdR2|X@20?nfsze=3V=v^XBZ3ioGYt(%Ss)*um5DsS+ol2g1Gae# zVa1CU9s?;WKr>t9BRDno>%-G_op@7R2DaA=$inLGj3#CXQWg}{>e?7=Oy%?#2C#Up zXi`oSnjxZ-(;iX3pO(uZen>Sgx>xVAH#-7u^g2eU#M>6P(-P}H34m)A86RA(s7L{Q zTZf60A|%8y2eF)pR<>TKTa{CJ?pE9Ir>?TYXQ=Ki7o*;PhTNATWh{!RE@Mg--tI@7 z>ue@cf<3=+_pWR#0HQN}z&#rtlcs|qF4Oc^>Os(94cVuyUj4M$Uf<^G#O|dT0Isqw==dHY$^Eitsx!`BppWEWM*~ z8*7RM9jieZf^zJt+~W54A&w#ZlNIbQs$_zi-DD#HF`$v`jpF9QQt^bM?^Geo0C9U5 zV1mo*WJqJQn5mPqrOR9f1bAiHP0Zs|e5NP|gtDon32e$E%y6C`vRe2Oh&;jkur6HR z4sMS7@iQ^-$JX5k=24WFa|Z3j3ORnd*9I z<1cfLc@n5o4=0l(&5WFe8h&sZb0u&!+NQ!vY@t&8t@$iz83E$WP7ETY<}TH)E*iqF z1p!LOv8dMAI!eq!dDNz}-RPbsv;Jxl_`PNt3$X%Bs?wq=M6)Y-ERKz(L{0`d%!^H6 z#cj%on(#Gw5s{-aQYPl){D_ULUGdx*Xp~nX9&C`At%;+j=lPnhIEpz=c#JM>G+I89 zCBNfqbE0UnJh2DRc`=68wPjT&KZ0zw5!&o3XlMo%t-KaWsNHN&5N(j+=5CAne2`ON zu<34AKe{!%Q1^St z8wG2o{F_~qIP&AnZVa}*);azyuHyDeHqDSs=UVQCOib**(8bCi(=9>gx_F~==eH@$ zEvFYw>BQ4fbU`+yXk>o1@JQMLb*AbMEiI=kpiRl~W~XpKJCf-ivDIL)pjZ)|;A|_0 zoe|osyF_)|M|l4$!{E6abwQ8kP?cWMhP0u8ax22j5{feA(>PQ{&W8<)$d zVfSWDY+lEVo$m==IqxY*8L*H4$y{%Dgl+_4KZMC607s|lWPf~;qRiBoMX`bh6*Za3*gnjpLHo0if|A+}+j&Q@&jB~Lrn1W-d@s`G5s*pgaU zUA?s-zB!pv-DJXZ1tkR@{$e!~?QTS?Ve%{e&6Z#Wj0F#v&k70zFHs=y<$c2H57ffe zS@FgR6&K^6*ur%*4R77b0+@$PsfU+SxNdZHmy@}cQ_wuq(Y_z+o>w~KBTKBST;VbS*?+lLxf7#i66< ze5((f-z8^C6|v)CH7KSZtQbzE6P9+?U|V;bxHO+6F@C}IGuxT7S2aTmVQh%(ZgLVZ znCCS)G-%Wd?qkqRT3&DjFPf%vPnJB_%ccGD!UqzJ-^l`6{gZw4^y_qdCP3^=3ECIu zl3VZrdZ|ArX|JV8FmGq&JGHpU1I=cA;OG!1@{FMtFOJYPcZD+=`HMKpa^B6%=uY@h zdzFnvJ3os_WZcD^cRA>D3&cTPHAx>M-8mD0FK20%7+R(I`J`f4HGVMv)9Y;+G=SY% z%zq^QIYB=@o53Nbdw07#0^H-v)Y7k&33(xgEkc_z`*`18`evw> zmp_^5(QvizPuX`uPa#sfF#RZbS!f)JNAtU+{sZfzswE`2KZgg_B6yf-HD<69j~4XW zV?4=C)&rGWu>j%393+_?1$2-y1%6LF)2Yexw6)3A81%69x!0w7_CgKU@OQtB86^Qe zZ-y0HU0B9`Rmje-5-Y|hWd;`Bt%9N@i30}f-K%Tayi;k8X4GH2l7GY;C6$?INUMh} zC$Z9BvLFHZ0|gQjetwYmYCS$OyYWhnFU3x?{v(aF;I>PNgLqG<_ zprjU$Q8D>*y7#Y%v3K|*nSK_9LJbL}_Tqw&&qLc9o!jSyl{XbHnUnX_yQ`X8n^7-^unWTE<+#JusETsAS3HTT3vic+;7l)5e{$PMs(~ELY zs)+q+GAYfd%Ks>UlHYHtC?M+;KQyR4!K3~?`rW~{mj=jxnNRf9t2xbJe9ki(owUDQ56eDl`@Jgg)cRl@a@Ssz~PVryz}1!Sk}} zX8n1v`DtzCb;HhhNgkI_flWlpnVZOvkqh0#=r;#$dQO-1rq2!2EJ}Z+Kr&*0Jmo~i z?zYF3FK4hxy@0O2JtCLATt7{4Il*f9>qxMJ?#Gg7q5M`s_&6d1KR+aD%uP+Ny&|je z(y&t0Fb$6B@LHvR_8{oT9CR^qnv?M7Y^6QB4#r;-=Id6TDxdGIkpDY`!qtMzS#A3J zYvcMZaLFFg4#D*)ccx`G;qb7~51K0HAfC{1OG9huKmKlB1azS=p0Cs=M|2^mt#$pU zQfKNksZ59vlIiOlU+kTB27xn-NTuX(PbHmlWxgeX?f+3>Sd=|NtZ!+Hkk@73 z?6crUB95GD+5`-2&5e92LnqC*(xd^qF+2?Cv8b~NNA=WfxAP(|)}}SI_a`QZ{SdWc z?&HQ6OV1o*nU>${PneY&1~f?UH`FBU4yJ?j;5KD0oeRr|TE+MPW1Pp+pu$I@`grs^ zRt4OTOD`SMoqYwWR=}WEv|DUa|FbETc3PnPCHzoBepYVy>{We8cGl^s#DGKH{GP7k ztLT@O{c{Z(_3XOMamLv#H0otr!}?BKi;T(^GLoYuBN`;Z6spcv%mEb~7rR9IUnXq7 zpGR$vDE<9TVf6IZo~getec{6%rt;$td-lw|b>IEFzek7pu)r!(c!$cYKL(+9J`&n& z+bv1YV_!|wk#Z95dA|GJ0*6qlgy41Ge8(szsnM@$nb$}BYSj&9^r_SC)jR!z{@L2H zno9qnE#yDoY8%y2<&P9czG}?ppzisDsHGb5v@mf+NWNyjwi|Jt&4#~mWBY69#JeMs zvg^nvf|2T|$z~)a=uYd66EFF7!SN|CrFBI32gC#$)8}~d^`q*hUpf|>O8{h1-C+L6 zoVO>SaT$NuQ*ePSXrUb3qilEJTAInD*CKG(f2{7U3^#SYqm?%?icGii6`ZYoIcp5J z9BoS{(^?B7^Pb)F3!?6ea!94p3#0^@$%p+ThKc_jWVz|T;{+rYy#f%+PRgbL_j_`E zch*cu+u{K-9|1dITx6=BH}hWfT703Ym)@E8w0niyNf1eWX&Ff)_H{DhZpW%t$M^sq z8dpvm@{8es4E;Y`^!s-mr`am~cetoKTVJID!7^eSAv9;@%6I>W)VvRTBf(tbIH=OF zZ9-q?^{UP=AUr|Z(Y{&KHZtkDP4jxh-)A6ku}!ML)~RoPw973xib&EnsoKTN!=gw3 z+arnj3EBAcsQVaIU}))PY0lhy;D4Ka#L{1J>~or#;$VM3r0tm=4LUA#{JHMm6?8{T z3D*~s-yN)j>p~*UM_w&hR>KSC)CHXwb`IaS6SJF03A0Z=(S*}0P+lH$Gv8vv#COSD9+6$uKux zDw;I^bZ35+Fqpx(P9#c9-A65FetI(k+*i1$7WNN&EeGh8c&@~wN+gd^Jq{y9Grt|Y zsEsqL@mj1-UnN_Zpq*2PyR*~fvua08BGuYfTCcU*NVm)uL9$oSn%c%+PB>Jbxz7-p zlTJp|f-~yntMY@!>K0AEVpQI~10vBt0-%_EMZRyu9}VmjSI6Uop8dm>=SN?_2bY%@ z7O;biPW4P(hSNXgNs4)0ViVN>>VCG|d|AHOL6hx^=|s5I`=;g13;24$TN$>`{3KKV zED>W@qNr%V%ezGj@M!wnp2fRIz+8zCpzJ&jygcPw=|9c>!c~l89PH2Xzzohj`^a{d zO8>m>Z9?Tt$;@J#NsES+!uOJF!%UHqQPVVbUoq|i3Zu0)OhbRO-Fkz$n#QbK7v?tF zPxLYczc=CgL#TEt%Pxv}ekadA6$3{_MsF)H8xwD@K3+)nT?HP0wrnridv(MVuhHF1 z=oY4NSgCPQADQ~xq%bq~*rSy1@n%qZdDQkd(CyR+|D{1CpxK^13|ir}{7%|<#~Smu zc)l(*+=g75lpys5Lm?<`{A;MLLrO=(+ua9Dqf1tgW(VS{@wH>;?XFG<(UK&!v9!Ti-QBa~(`E-=5StK7cqV*y=|t*3z4JzvzECu26bzgU?~ z8xzcH;yL`iY(=BfV=XRFUo zxw3N=E7>_CwOO zo*p~{&>{ccDO|1o+zjKBmoJ6BbCCX4dwT3RVL6$!x)#F4zpxh@(i(Ma#Wc+?*xzSh zBrSTV(g_5iQ5412D;+Gjk(e}U5l`!{5UjmqZiC`N@tNqf2pkn;HT^z`1}lNr8S_$% z$l>rb_HsV6@N_?_(yKeSU`@08_!g+d;T`DSDXHLJuY^Xx2x^`)2vrKTotn{}uwHI( zfPf3Uh58v7yRQ@`B^Qfg9z9a>>rktgruJ7!7^BbFid{FLtq(nadye_*q~)Ul)$20u zP8%3H=_+=O1tI!9FEcYS5T4C-JLZzo<^^}#PDS&V2`7(coFweubxMpUyNoF5%ymG) zsr6}RnNZH9RJ2hV&6Y3gt~->RPW;WSiq8R06`!qZd6U@T{Jr|awSYlj+&?X)qa#nr z%S%6Ca520(@Au}W0VZo>!ym{Zls3AlO;xi0bL&R_SFy&?dv^| z@}r|+Ygy7fn5#-*vkH?tN_EOJHHPlz@ZpYxvp313;Zr@(Zc@MD@yewih&}EVGlD0g z8S}oZgheqK$mnhU=;NPg`>f1=-y{LE*P1BgN-9bIyB!<+*J}rABka79urDqn+)Uv^ z&^QhcLl;|w-!yaki8v%7b>yNlEa@<0Mt6*?5sS?2)S-A*P*sl&fP| zotV+Q#QL$=HIw`zei`b*uv zQ0+dhr9+=u7dmt@p{seuOCCHXYcf1X5q9`n27cJQ&oHjr$*4 z_curc8Yq_-=;_Zs%u*OWN9KORQo!w(kR|Sn1oy-X_Dc%3u?F`M@Rl;N3^;bY|6!Ee z!At4@`i^Piyw{v2az#@*r!`zmOfn@)vJSHvWPs}BP67pEk<5ov!b+(Z`|=3ne+@8~ zx&Lmd6F)inz}PrZOsc1l>g0w%k0VvaZ1Jj9zTbS`*54=g?$wD@ETG#wlE1v;wHml< z!#vWxC}%BtgPN*`SM0<|VsO61Q8#dZUPBZa z^cP%Rp?%D8t&NVRG{2ta72m5M^jQl=x*fH*{`sAZLo(nn^#c)>1a%zO0Fth?Bzg6Q zoR=7Cgd&S3J0ihFFBD(SLAl=!U3h?D&q4%2hYu(yd>E8VXLAB;YBd}KX=~4Wi#F=` zr*$}uKRd{Q$uLm6IXd$+&E$w>7)4bK9-kvo>{xKAhxrOGuAZ&$xpA2-b>|0PS)R$@ z1|UvC9y<1s(FGb)t~la1`?2B&U(XlX{fV@t;h=cw24X31hTdQd>E7Bw@({LyZCB0N z?Alh*MaUPIv$|`#jO#UGnQVb7HGg%F61OR?{HuELIN3mKjvVn&qc&?P zB0BKePBHNsj_g7xy%dr4&khDkO6$Qmt}g)}Vz)}Kgjy8ydt!)07A0*Z%3Z{@=V~15 z(QN|MZKX8GbXfWQeNc7k4=6r_r>mnACP>ga&3o0jn&H@I*Q1@D;t|np!zOaD=$?uL zZvfz@f26gX$YIz*!bZpXw$H6Wa+zBhUB>55BHma_?xmwIhl)%pK{}5=ExRzqh})>7 zzr5FK_$E#XCeUS7lRPv5(poqHN<++(GS~ZgHPTvJGk2%*&KU1~119nVWxMwGK{uC| zz?8iI#S=y~Oq*96ns_%C=LxKz-xzlbbe?%?IMIv8pnqK^1$|m2>XN`g5~w9v3#dZC ztbLP592*_d0A&u8p!5WNFn5o%-#oTXFKGlX6sok)XZ*Cd*`b<{)76-YRob;#PWK)DGfm^O(Y{Jf$w`X z-##FHfB2H*7ckISuaAm-50|9%LxSVve3Hiv{AA%nrZAuM+o~6cJ6R|@KV0zM|M^1o zgb1ap)*tW!BRfq=1$d(^^$DuR@NlVAp!V``(buB>y9i(SvCA*|z4;?xT^rQ8G-*}X z0#b*`;Cx)U*DD;TA(w)OS4W!8h(U*n7YeeJDIg!~|JOIHptppb$)FIo+|ftx(H02T zcHDBKfCou@nA+d?z5(h8+7AzW+(`fuoz**Bqd;1^t zC|%{dlqcVQWP=W|Y6K3+0YgaAczzAE_4B2F*@DygANpT=kpCM`G{TX{mo^{|;-D+H z+z-HNQ=cCgV>4xs8kCFuh9YPlt%;p+SHb2GbS{Xf0IP2&o;v!B0GCrZ>KXQ4872|SZGGCWeraT^ zv?7?UYXzj@BTk413q8?@eGM5AsC&8!z^$?(E|t9z1x4VBlmGvs8+FgUsE4Ush+5^} z2Ta$CKVUI=+ATK-2-NdBsJ4qaY?9uGzXi9e6F}NX`m=vn`~y;N4x1)=fE(bZR0kex z)`zrU9m&%&S+mlbhsFNef$aN}(zhCh+B{}zw z(9gFr>Ynr;>3{uf3z6oN@;)!|y9SnUf7TP<4LwFj6Bh@IzqtP|hD(BXmbEzIgWEyp zaB9GN2SY7;jLmi$5=>mKXy+h0JsC}s!7Z$a4Qe!Ja(3-pxxL7aP?c+GR#_kF2BPs! zzm?EcU^Ei0d)V1?>wKvIqHQ(oXZxZE!>;EkA(b!3|WrB~B z^`h>%vD&vans8*_d-Ml50)DI#_3&l^E*vKi?WVTV1ef21<#vN8#JiES%9Tk8H_l!l z^7jJVrUp;%MK}?d#I42y)VAyFjJQ!{@WB%$*6MY98iX9Ug8;2p`u-CMz_O8YKYJ&v zg^Cgw&Au_{9YuG(YYw;c4+EizhtL_blUOmhZQL>B7}Tpw{9yv2ferIwap}@MS53!L>`N_3?) z+%D4JFro;gfJGCehc2Ut@k?DC^l%ulHi%0iYE8yr#oOdw59;h<#?IoAqk8(j+24LL z&|S)KUH%9dclLdWa$P5CIR1}NgID>HXBEKRcbKoEMY|alf=KAB7?d8JSfP_*lce{o zrK3@!=Y^BlTd~Z2%Fiwzr5>*KrbXk=eRg~HCEfq{*#cA+HFCFU`w+DScZk}ke)fD> z2#Us+#Jw+ge++lQd@`I37AbiAyLy*|&S?q@H2RsCZj+HkE?o(qzem)$$Fr6a&2pF$ za}iB!S?SY=WK>Q@&sqnSb^Bkm3&c%6ia8Mf^TeJ!KSI;iXa3T+?Vj_7y_y95>>cvv91g<3Wq^Ygik>9LSY*t-RJA4hysH>)yGK9OANU&&CS zxxDwH=x2${!Jr^?pCA@|8%);DH*}E(05CS_oV$0QX4w!8&Wnu**7BiIp{LU^w);yN zPWajb&W(QzM2vdY)tJjq@vK?OH|;K%?-rgl@rI^bz;9x(!?CX`eC3j8l%*U$sh# zw492er^8Ja9Y8tke_sTkY{O}FBcTKE1qA3;LB&>UW4<1twhAN<|9WoTMl7zrm*xj(_Hf$FnPHQNDCjeF8ie;>`z|9}q zO73(1Lia2J{X&~IiSL2lVqV1G=o|yQn2+K`UWNG$BqW@Yed;<7K-UrT)2b8g#_dBVp?)qoUpMbke0a-qmRic*Er`I_jrE@Z(n+B zNeHhAFM9K6?pNOe0rc=14zR2OKzoK>grp;cyc4ERO<*7*@5;7heA1B#fUwo4S$@xY>TR zxGuDyxwQ2qoHFp?Fb~&r!(osu4n5YR52N}@vK8H4F|E!oW(o$;j0z`aFtNyi8J`j3 zS>ukf^vj>gGmcsZfzk0WuT^96&k`S3#Spy2Qzm)hZQ}lF9f3gyKCY<1ij&cW#^7>c z7R`{D3PAPn=^srN)(oDLej3f5a<@Gbgl9e8aE>}Xw=U=t=~aacMl$H0C0e3E>>xgN zM1QIe6pu8_ly=Sm4G|v!P&@E?L{ael!OwfbEPGy4)mLai0tA1S<~t~J|J@=(wTgQ} z8DDvf%PZ+*7SV!Xq#*XN7b;3PGr|XKYUs>Mib`MH=)SP3{R$5c|BLb8U%BhWi9kwx ze0;3OcuWbbcuA~XDl#XDZa=ZBO}*Es809z`NZ&TR-!?dSn#Ic0ztz9Z2NiK^l$h3M zTa6LE@V0KtLhDqG-T9*h>QbO)@iq=E?xEBR$$@x^D*EN_l|S z*q@3V4gewRA&%ya@PDI|CwV-s{`gtb*|f%=iGQ~fR>dM6F42mjGa{$_Yq3vFRv6xK_Prc(|>=WJlAgr?Onb29=REd>u-eQ)JB z1EZo`jM%UYiC%Ah#;XYzC9%U!^A#lR*y)L6(QkR>DFY)jgD~H2f!-@*ZanSlHn#}K zMF=CVmNlZCgt{rKAH0liDUEF7ZRGfDEr2ZS`AkHKWYbErd6&f6x*;AYtT}U3>~MW2 z9`|3&#@{KkRxjy*6}N%t@Ng`U9Noa*?4MWJZa*7f$`*avfWLFJMBUp{t@AgMo*3## zMZc6Q>d=w$PTAdhm&)ClK2uf8dHf8E8vZh4p`0D8@u^m`*sz2&MvA3E064stRz(E7 zYWD0H)Of=9QEa0tODZRZ*cUa#5Fl8ZoG>Qu?Uq+7gCoT6&Su;$SG}u=dX7gKam~jh z-iaV@3HleX`(M0=U`v$f=JkoDldyQ$>6fS_VLD_|&RjA6694g$btpNsYb}CRtpfrk zaP^;W{c*m6l)02Ry9pq`#<=bJ@3yPy^}0^=KSbKERiB{=IO*L>s`U?*edaQ(6(6Fx z1VV>DaMQy}I4fEN9eH!shaHLqJ)lkD5R)I}l?5iEDxcHc)S6BK8H<5^4hMs12WgmI6&;aT~yktX&4c zzWk5gBBgR~ZjrL_!07-3&;QY0x=3@wg?UgAyAPI`dHLx{(%VNay9MiO7?$5!uCa@X+sK7ye-mqV)EB^ z*cZoyKJF{=aR4Pg+D=E$0NjMs3jFJb|BG>+(1c!9=&b>8&MyfVwYp) zVzYHt4?pl=I*i=zJ5$^Sy5sfTeU5qcWo6*Ee~qW7r}NrcTH_OAW9ukh83_tH1;FWc*5YoqNj8E-R}3(|r9GT9p!xmws3`hi#L;(A zn7T@T_F8!;VrK*x7%bwe88s^0cu%7{9jrX^9+GM#Zzmk(#&Mm=s2868JqVn^0c(J; z^guD#+E~kNM~tD;tT(z*7JnswT*sHMdkg?N-HU#f@pS&(-Msiw+vzcCBjnmo{{WkM zCrY5W)5(a7jwui7PZuFB;w$)S%E(fz8C5&>ai~)?edqFK8~A=+=S8ys-Uu?=cjyYaX9gO-@hKQHvP$Q2jl~v_PWKA$~W489d3CjDb?Y zKhW3K_X1FFwUx~2EI;ewZCnY_)0U=aH$MuCr4_q(Y+b#71$_Q!6@L+pVGgsxl}MG# z-vXFxrnWXkgc>A1;J&m)Fr<978^<#tLeRs9ymbZ~DU?y1C2oU5=Dbu}`tH#C8?E;b zUu2VP4vPZPTFN}g;PoEkb-ic^r&Dty0h=vJ5AQ*rzK8WbJoQ8(g3gp6$_h$7>TCD1 z%GE?huYfKNL8HCfR!LmYA0TRg?I?bvB`I3|9v_y`(lObOiMEvWGm$5^GuU%w0;tr^ z=gsIK2Tgr9Q_?dsx>i<9g(W1edUPHK6wErdGsiHyhQz%6gYoLa_ww=idTKo*p#Nc^ z47d8uq(t%mzdxzb>mJ_N zn+wTu=SPvY(x~5gpRf#;r?LHli7hLaYL*D)03>e*M8G(FaA-R%4z{Wjb}R-8_Hlgn{%SybS3n4&?aYFa>BxJ^Yo# z8G24VxOU6cVtv~p1sfOs<(rQ0ie(FYMVpRIbdi{n2}j+l{iBD@i+tooooue_sZk5m zN>=HM`}F;-sq7CD(G3egsHOTZIm+|j*w_l~y6W})MYds5adyq}Wk+OP>gg+UNXB;=%l`v3t+MGd41{qIfo{IM2L*;Fcvpv`N$Z{)h)->$|62gRe@{spvc zT*P_t=d`)==g1NWb4bY8zObFH!t;Qtl^c_t=jn`1CzncN9Jau<;q0Ct!DRf$*=}F@ zwgaxaZ>P`l{B9=Nfez!*H+E8oEN zR2Q{Xjp1V1J{+gUCvk-Kz7#GQ!I{#Dpy@rrYgn_tFSIR4h|vz0*9T5MENO;a>{5Hx zR06$tKNn0u8`EIBxG{*DlJR>x88aZIN#p}!QN8-6^AMVLlO@{G(NU~ki|ta~7nM7= z8cn-k0F}zd?au{%Z~>)Oiydb+HPL9(kJLq}TXUrqar2y)iTdU8#+)i|$0Jt{0<&}V z>E|(!{`}SB`?2r#%T^b@+0&#}FUMuvZT;-pDi~@QBWx!v1g?42x2koYjxQ~lNV7mX z7#q#>pt~~ySu9zPNk>E$E(A0A!BSf@zgpQ_^+sc{s$5v%?+3jrC3E_Qt1(wS+qC-0 zZo{6Q*XSTq0tfhOMJPYK{`_4Vpdcm@<1Zxn-@WxI_Z#KI<)*JE@Q6<-mfbexC|b#d zCY*lo&Igp<(&YIFMDDM2j7SoxFtbBCyx-K!gx(2lSU$kxig8(@I882{+eg`6u z;y;e@YrbLoBNO|T2JaL(gjh`y%9Wz1b+X&iMQ9k7TjrEN>v4UiegBm$+byRZp*JWG z2_f!37jASnmT|KPKVd;q_OLu1lH(}eN2kv~j~P$PnCL2{GNZlCq$uBQDT~~9wCeZx z^i2!UlgbydP&gVj=Yde=p;NZ-419Mt0B=qxpw2)rtBT=bnt=nIW@ni^Gb;3(X}2M$ z@{qg80#hbP1VsM9gVKNtcmC_wukThl9-2N(Ly&+WM$pdKdid6g_-rIY&7&*I@T!}s zd^`O=fce11gdxf=r=U3k;}ea`oLu~y%*Mx-0)4Jezdho>HVtVsf+8{1=T4K?W)~Zk z7uH;v>4%ep@w1qB@pn)IMIk*+V+;T9J1<}n=yqPTZm@m+j3@l>X4 zYKeh3owjz0twNNdY)Lt(Ltb&J9xMJw>>^tdD&vG(yhSC1gOcIsr_BZ?te8ayCbSr) zy12YJqB}nc=G;e$;ZIsMx-Axtj+aXQchUjwyLLt|>+K>(5~TqnGvuP7_?9BF2<+*( zqIb6xPv-fekzHlBu;+0a0=a;AltKl$*x7FcX6FCRc$tJWk z>+0F4hu;PcZVSv}kyzJFT3(Fz5_)q9k_TtMuV1w}FmIwQR1L%2(V{=JrR_Xr)!lNZ z1Fu5{5*Ko}my0$tHvDF-I>WbE&8mA};OiZMp^s6V}-CsZ8?H&-vq?cE& zH9_hJvNGBfAYxGzD3(#HKNhd%Wl`lMfl6-mEyVVW2wl{$eblptA&%VRp>xY_wKK#P zt)Avw(3CmRkv8b{#FaX^uar1X?7ZWiy??Vwlp)+wYgD1hTnUrrmETmRZaqH3Exy72C(mJ%u#>w@F}H~# zvM*hD{&(93v@F?r{0uSFl0hoh^yYa{`VahPQQZ7{X0a%?g~G>dK!9yO z$QFWG2qvK118uQ{tO^2e(|`N10+)ehxjx8Uo;9yt0Y}y55&Alf%r^l@P`tF5yC2VY zHX16Iq-N1Lv@Ec}HBI4hUBLSm%J`FWy#v%LEqZHcu!2iHIsyuW#{{uo_^!Ef(Xx4r zhOv0jUK({BtNCKdmX{V%E?|yKIzcGwN|Au8A9+!MN(k5h4Jk{9kmMDmWqNFf%5sU6 z{q^P6O+8E0QT{TR^Iu<`2W!u+dH)k$(Mhn#-4+x+iy_Wkcy^K5w{7&TpSXA0Zm`vU zF>F~f^su+3`IS)uhM2;8vo8K3#cAIR;%KqBbErOVgr^#%-4PM;S58ut<-!d|s&wQ)dXOH0^#b&s!?Ec? zgrFUxxi6?UBDiMHI0;HytH#E>wVyGEh&#^|9j2V3!lZC7tyj2?7qs3TAuz0M(v71+ zp|@nm{2Bi5>Z;SOUOXCy{QEFO$EEEfCzE^erz=f6#*{~Cky=K1i@rcX~N zmkVaOMmDDUBEg%t7ZjZis{2a0{z$FNMd6DrXuU@{>uA4mId80+Ld~b%(IAHWuW6W) zWSQLU_UGsQ5mtZp%bv%r_f;T5_W@BWWlgTG#$)Ty`p9T=bZK0F)BmS)3V+?Qzb!N; zfTwlzFhi|Y9pPrC2}m+KLbV$ zDHPl2`jMXY*tF>WSBF0BMg1vZ{Z5~qnHf3AmW>o-OagZ3F?2e^juYy54p}gAChl_b zBItGc;gK$|nuOk*MT%S8@k;f~D zTogxAW&vl@u`Q+aq>e_`wSN2ReNABNPwWAn|1KVzfI!vZw!D(keh>;ve_HQdiM6Y1 zBX;O6s+m0}R!zkIw=?b)eYe+#i;XtUQAN}sW6ongZs6ne1A9RK!%cuM;;YdW!ux>X zbqDoW>i8NO7>T)L-!$x_HmKxRtO?oQa0*O{YFPST&*TilDsM6-55q zby|yaln1m5sC8}kfXE~q_&<@X)p@$jb=oS3Jbfoy=~iAchGUxV8$NjRk?F~33*Pgv zXeSs)r^$`kZZoN}OVwdp(o26a@zj;>jQEQYlI+?kh#;>95MLE&zUy&Qw87$9o=Y3y zS#+_A=91V?v`lRHnIwm$9&{hgo2x-<$RzZb#ho^fGlyX7%9E=|$g0z8jUDzhy~vwa z3o(UB_n1M8hU{1oT(7efhP6?2OMovy&UGN6R-&HZPsXZHS&aid82dN00S|y`%~(D3 z!5kRgA_bYA?#*8~@hjYP%wr_#;`FU{{JWP%2v1Ra$OEnjCe+&Ctb{SEU0FehD^kBHZSs7v*PHWaAph?kC0(|A}zZJ-AwkRE^{Fi?k>OYI1l;x7JB{`3BuJ;^3gnazfu- zyQIH5LU*F|KO%jz7dgUk93`9^0tJMu;ErJ%Ke7EI0nTcF#RP%l^VT=2@bU%Q7XO+} z$39($h84|`P8%5;cFcWbst#ge52M!jdA69n@$wf>KAu|d`)@b7ts57VyKM_6I77q3 zu>3jbx-}nxd-3DwYL|XN53RFK_849-!b1enfalLZiuqF{jomK>%jSlx5*9i-gHRBv z5fJnRaq(&K`%PUdiJ5q`{xl9`oJRu;r_nz*H#Po~VxL=)kBQDPI{pGFVa^E)>q~E? z&`Dc_fEfZ6wx{yi=*8mdqXC(2;#UaAE$6Zb0(oFR6Fe_zRXkV>ObKO=mwy56o&ka zzOhOT)Gd_EOYSE*kET_@I!NH16$HyU{`b>EicUX5)H2|>R9$F5A z)Y6tzsgpfp`o<1U6&w>&)570Kf{}%T9u)^wysohj-&)cl7N@ZXzIsiN-!WEw+$JKi z%#HGVJ*G0Yc7>6np0oi+RvTGS>u{oiZ1|i}BlP%?a*3~a3#M6U!s6@4w{8a|2?7lc zqj^3#*>HMdydZLw{%Cma(*WFhl_`DYIqJJb98K$S?UAHYz5)ERdi9>LQ>$hSAxuQ9 z_WM=w3_NmLQ6e~NGh`n=v2Fo4Ay(127A(KIuqRE>Hq}l8+_0~3%x4;eISFJas89@_ zGN9UvKdpz#mbE^S!C21Kr!C0lka z)w+yqTU$N@{EgNj{gjb*rl~^+tQZ)O?&TE}C?Y9+6E6_C3l?8A@Fod6S zpuB`&$nlXGbk?pt2)E6oy-@?c>!l=Q6fxa68S^{Yr+@w1kE1ms`T&%=C za|=Y-;EyT?Q|dW*n-y5f4FhO2EMddA%ME-S{cPb4-#^x86Y}Ho5(-)~PO{No|{REc=j%uKrjYI{PrJT3LhTE{55duk1s5bBEUu6X2VAPu5q$ z`Tg#l-XEOSy{x)6N2d%QIQ-7^wljCKy&|lI8gte0u^gxiWk>M=CI0iw^mHwN4PpH( zwLzxzi48|T3aGmM(%iOvH50H;v>l%3eMG>-#Dp`uaP|0ysP7Nae(x)lcvJuueFrHHC0)LjVsp-Th*~nrX(rq+$uitz9 z;SzUl#-bDlBN9`X*R3r%qMJL=!}m-DcQy!;nmr39-9E=})}J0HIDl}&$J@vE;Hui0 zzwkqF6w%z%q-tuC9khD$;iA8o^rvgVTS9{48K#v!T2d50lat@rs6akV`tfK^!6y32 zP+;Pji6_o{lEIQ7m&&Y@=3^-57&wyHY9YvC>3el`o{oAQNb7q&1SSLb@ezdX z!jG=7wl#yO#xocyQ$J5iWIPnr(^X8&X~bw{KL8nl{jYYc9K|so zk&oCP8aHQXA6q!coOdE%`m^3ipDq_fm%{L6qfp4!Mh5Cp5L{SuB@s-}IfyBs;mqa3 z+4ZnVp-dZz)LCYrX!da}b3#K14&`Jzus#@br6(vx?M=tSvlqf*wXC4njwqRfFC$f%>JGFQ6L!Vis;d#Lg!Y2etPqjD#utnDNi3;a?U2Yp$RJcC%!;1yQd(yCi~WAR6D;Eu{>DE(%&j;dtWw@TtRKv zC7W8dQA9S8L^e?{mwMvy2d392S=Sdp3ESu7#Re`_&R_<_>IuE|=6xwOc3qiB~ zDU$M?qeq`dMMeBw_xmB`j-$ogbX?_Q}Y!>sPqn8ASzo6+jB`*ZjfX77XVI#Ff8`F8-Y0V@fJ!dpkvr}q;O*8i;#}}xo{zVe*rvB7oh%a0P;{g<=dCO z_m}fJs*9bakvB@|w)PpnarNQDW0mDJ)wE$g=D5S_af zn`Bt=`QX%&SXb4W2nm?GwMII|W)(T{aMFmx0uqak!N}!QDd&AkVlFaZZ zI?1_*ESWMxkd`-44CWPr%V7}}p%uM_zEelJdn4VuLZ00cb zhB#UD%W|xOnTL7qw>>1mKf~Bg>FMcDrfnMrHAkc6EvbUW{n}abXj-N(9TF$$g%c$R)muG7ZiML{^sY%nekjG>zQ2
      t^oK|eJLwdYjy+)(#Mx<_yKrzjCyI20?}zZ5x{-(%r{U@I zt?Ul;yD7Y#m4N3rs(;)hZ=L`Co&g8X+ z8eFzdaaUG}Gk{d2umAhw=I0LErAjZ^&!d`D6L7R1JzvSDIo=T=Hf|(Y4oIN0mAWwq zB)WBz!bQVYy-UcfKM?AA<`Fs=XIy|(+fi$zMQO#;wnB7yzvYyB91mf};6nmTxbj1P z%Xf23DiY$R(GLaZC+pQyu=&=%(hhNx`t#izzAWErPA&dQm*bVFNigTc2HM1588)pYaat@}sg#%V zw5&#er}Jx(5=LE%WCvNgQGga$aXM_JBtI8)@iG6UZY=f+Y1RR@^HUC@m*KX1KK{2W>MyO=Ig5jbg)LB2jeHhe!8*+e_xy8?`#4=>;S z-e0!IfMC)v7dp4P^$N^G>(BApdJdhKm|#_um$&X8iCkbn25Y z{WD2+0S8d3c>(bOGn7A!<&m4!a$^re_@KW=08I8yc?}WNkJH6greASrZOORmCq6^M zbR1HIn1GSKSW}3m3vd)9QkgAlH+FFV!+SJ7OZ`k?zjDgJC{n^(QK_gXKC)0Zk)pk- z1ebbYR?xl>?qX;{i#G@*Z5;IXyJM;VZJZOmjqqxhiSY>-67v~YGS=FSb?(N$CVFju z(sBrUEz!t|twzh1Q7zn6aOL2A*XtrO_p*17Pnap=qg~Br6&1Zxopo&J^yvHcQ`T$V z;?owz{N2De%&XNlr|n#3y;el-wPd$g48I*1w7Q$|MTO6sApoHQKm?>1LU*$dbdmmo zs6)`k)Hu=e=sE_fSLNhDi?IDfe<`EcR6zo|Lf^J@-O9$w)ngwgKC1A_*?p};+eQ-r zg#l`ffHRSIJ5TB@B!!K2a}a$}_N{?{sqr}Zz2QE9Zr z5kC}Q{izD+8c72hj)f{ik8Uu*cBC+#Gf*+%i-XPV&cvK(iGa1`9Pbw}0gLh3m@43e0rC_F?oU zwiS-j)r+h+R%r!SZ`pYWT$Csr3P*a=c&|ZpDpNb&8Aq5ft1SE5^ImL2D;t3 zOT7>&E)^H<{(OIVxY+FWZhAWSBvR3%9!I-!w5;beQmT-34dI-z_uY&5^iKlFm!)we zS<#2s8a)P7{V2JyK-h+hC!J!Q%nV;D6;aKAl@>wlnxN=2X8&MN%b78^DmZ-g{=iG)@aMc_MsPUMp{pIQ=WC z>d_vOqhCC+A8ch^8 zH@A!9T;EG+ft+cCLOT9!cVl~z+^Cr;86D-aFsNw#(j$nBXu^voloW}%wk#Z>TC3;c zfj=&<9!cnK0OHW~J9^NL9sqm90e_@JZ|gSqF&s#G_JPUtMga58+%*c#As()Y2`hpt zIY+29w|sWq5FP!gJWp(_t|c}tL)NcFW4To#NQv1RA3KF$6#N?<((wNr2m zo^)C=RX8+is`eM+s0T;Z`M;GIZua#$k^v+WUR}hzhl&BQ4-2GeumoUlTrKy8c4D?15LL2X2yJp%CB_Fys*RLF`QYI z8I8IQ$uB;!3g}!xlixGF`A0fH$cyQ-szD04o>jHcul9R_vh6Xme*{y{KGRbjyTb1) zTF1t0O*fs+{`RPluTO|o$On0~q9X`xggvE^f&WdxVQzku2~Wi|Ey6T4%PdVpq<|L> z?-36tYu>o{@4^UC36B?0B<1{b2GuXC?$FhsAwd~IZ_}tCZaa3g*^(u!9S|(#H`Ub2@KLKs`9R{3c zzu9@Og!l2|KhN8vpT1lF9@_R%jGhMDMQSaUB7-4#eNU1hCf`(nOJlz*MJQP$4v`DX z)Mry|V^J0!KXRpj)vPm&0g9x;*Z7bS!dg3lnLS<6{(axT&08Iv4vmi72VeZudtk7r zURh>Ne(oGwI{j`5Ebg-$#5nYL!GcxJ2imz6mlgH>L(yIR2Q}5espj3AlG6U`_%<_w z+N1K#B~(#r?ME)^h)toKo@gOoN25 z;9RM%%fmEXI*9axe1S$+=}BqFqjrEf6_woc9q-*Iamg*$K4M$C%3%uVg`hS{r=@Vx zUobxIBELtn#AJbyH8dfs$ryNLHiRe?=*2dFzf~>$HB6*#L!r3*C@#o_kNN>YdVHA76o4eM6C|2-dXub#LI6HCrL*JwsnV4C&X>5Jq#?E2q_W$9~)%jR&J z@n7?Jjh2{*Xlht*vgHQ>V|OeM)0lhvWzlbiOdfP z)EZQmYUro?oGs|wz{Ovwa|qLSi)?XSDqlaNGTic*p#CPTVRHK4Z6H|yN zhS{Im$yQx~ek-8!W@7LEY3ii&%412)Ye|!vVgg>XcD;rJM_W)o#^>r8Ktrg4yPs7I6Ln{!a>d=Dnmxh-)$@2L-%I}qV zIa^mNs_c^oJc)rseM!7+qlV_mrhBjhiy3rr{R|^U`)IpE_h6x-MvmV2E`XQ<) zV(py^6?rpTLaa&kfcB*p25ZWKd9~f8Kv&rkocePcyt#})Y2P`V{uFgF-DNlu`=mRT zqH0-+uU(aoK8qSLVG}CPSjn^T7XSUd6Lf5K3T>RukG#2^BjtmY_TS6Zr!^vYu4qu5 zP8ju0pmjE=@ZD_@ z!G+7{d+F+v=-L#HaQlb6G1P+pxxmKnR@q%e8G)shV?&~%R;%sj;-Y#9Sjm5o88U^ic$bJA5Y;rKk9r!!?zg*=n4y=j^a&T_)TmFgjD9sFk|#cpL=4 z7#LE50kSh7=5|^D!zRMSui>s}kzJ~hx>z|){P822*P&pZq zIRre<`~Tjb0Xv@tTr3TvQIPdn=S;3S<+jBXxX&%NxL8Xk(!yo`H4+7lgan^v=K}dx zBag!h#wb`Uv4ca$=HJ!4Xeh&!&F{{k$shBP_RIf}ZXoF&%op#G2q5L$DU;6FjQwN8 z;~Y{AId77d9Ses-$~%_qVGalAv9`!_%$eo19 zVi!=Q{uv8+9UJ-c1M_J%OnC8$6Q;4%1keirjPb8y+siIM5#<4vRkD3B1Qs6@WBbX* zYkGIM9Wx(6uwZfWvclw#h{XPSvQzGwF zA~#fjR{H+kCkV$4Ndm`TmhCE+<@Qf^x`VTtiwW2tVC?Zn!R^_#*<23+E((o#$$^S& z)Ui#E$e&-`!lT~IV3hCr7qRsf6GV$}7L@~(wr^?_(Cjf40FX-NRE|*Q)6wW0z`l-N zd8mb)KwM)8FoH1DY|At6oXrY_F$SI^r9Lrx#aJ>dbCLrd(=7fcR$APb6I_`c3TPRb z^f{sn?8Z_vN56mzM~;y=d6*wz*qpr|*18vhE&bi7)1Yx?2XqbhP>S2ywQd(2?c zO7?c*L`gH;}wezXiL8!^EL;bPQs8;NfHL_4H^u=}XE4H&uCmMd> zU-tOnHIACn#Kt$u-J&(&#ghB}MX~U=-;8`5qLtJa(0`*wvJL6u8#dz@#+l%(^UswK z@VT?U#73!MgSj6^vMv91!{UpTgCo}O`|GnaR7M8aew6Q7r$jUzSuG5=G#sySp-C?Z zVH6#$SqDySx`~Rw(NcoP|GJX$wEpOWvR-Op780I8q_CXl5>i9_V@WaGjk$NirEnE+ zEU^7-Kru`Ly8N1WP=Vop9ekVjdhiKlOzKiP=qErW1OpM(1c=UM0Pd>f$)B^*qFW;x znq3%A3?OHu_|%y;2&^x_6~_L!gJ)k{5tOE3!p!K zT+6>nr)(CK%pClEm759Pc=5ZUf&w4sw!^LEn(9D_>}o~!5$Gg*4wb9&Y$Yt={DpjK zOCPiU<~6+0<~tpCx_dmk!t1%*eK#JwZ#dGZk8P^Nrk2UuJ!>%4(4@nGKO^(?#|20_ z>t?!X9^|Qd3MV7-tVrXYmOx!sKha4odJg+LU+JvpH@=}i;uxF_lm86P&|Z!x95(*i zx#ZOJlEOSZ4#3k}S8AO6Fw|Rt;&EMv=RKWTyf@V_Ove@vPg>v-(n0(qg#^TAgntK0 z{|9;)N>;qCih=|6^r(=k}h8dBxZ8#uObbh(35)a1)uzQ5k(o#=- z=K(lr`4xD^lX14uRiK&bq1;hE=hn1VU=N9#-+%KT$;YY(gl>F1DUw9$IsfPOX`2ei z$wvDjP&m$)o5yBg4gs(^$H)<-qF-g%oP=+zKT_DQaW)Y!a0#qp3&~0vMM~^h<-H?P zkOnP_zFiV3dbmR63brAK@ahv5R9k($qlrH%PDV#vxG~F5t$;~(ff7{Du0mFlytl=b zTFg$D^OqM|RTtUV1tXfbEb%jioRjGHELhH08^-i95qykn1dRUsQ;`6V3rmaj)?l39 zRzJ6EylihgQmI9R7?QPXY$Kv5mC&>8wyQ!B=RTH5qr*0zN_Bs~0g8K{13 zZ4JYIwSKok>hnI^Y-Awh;K2Md0zpmp^b$zQxBX*LN%L4?&{u;p<5Rx{5m!DSIR}(0 z%u40EtB>ElrZ;kDd@#s&m`c&g z1%@$}!V-{tyIU#QUsIjdCZ!s;lZJbq3q1cJC|Y@cTYMBK4U(NQ$AJ@>3&$fI2 zPGlIXZIONc#Wt3)wwYJz%qfU70)~N^?Io>uNNGjTyQ#YHUBQi1Ei;IX;lKEc-W(W% zxrgRW^}Q1O-dBz{h6CG$`8VyTUDXRwq*tKQ{wnr5UcE{^rL; zvFND;6(}hW>qX}zLQ4*KU|*)vsEa&M-1ps7YW1A1Rn_(S{1zf;(?m4~=rAbf$_%a& z#jK(75T-{9JSBA0`Ep^cc;;k6jWvs3}Y(gt3hC@Rmr5Ei~$?Khc23uq^VFKhyu-o zHK~CY#92&w43I^|VBpbSo)2q89WqFwHKADX5B-sO2bMpwmH{E6#3x`5rjV=gl~?pP z@~CwvB$*p=%Rn9KCS_s0`WFITm(33t%@QL`w5pN`{l+p z1)LVyp(ShMS`ipls(l=yP$bu8nme~#!DzGRV|pZri*MG|b~1|JCn^su3#hx$UH-&Tue40$<$#`oAR8jL$J zo*<@rMn@UKRKY3ObVLA5FFE2d1i*)R_Zwj}O!(!#pb&F;$lFXwe*4qO9~YU;h%a+Dc6{o$7L&^V?O0$zsAO9Z1OKnN zngkZEIG>kRqtqljsRqG1!;ctT5Q7N?ONn@wU<$^O-E~iYlys~iRhuE2i=`pKqZ5@7 zhr$T79had46|pL%6oe3{$Y;gQvt{sGHDdxmC)4j4+*i5ILjz$5NwWMRjcS1awZsY85(i;XQ>DZ`dDlT)Y zsUfIv1g80pAo*6&^x#*9+JEz8XwFiBDYR#mw^+~+N+}d*dVJn5|9)IeCk47PolKU0 zXR3JS05Py7k))Y$^QVh_ax&BGllB;6s!L#+s$})W)o!fEMUWx4Ox_Pf|HKbrvv7j= z5Vu&_iiL1_>6%lvh-#LKN9v~r#UEXpxtYx)BQCX(z_bSjgWR=4xCdavIl{XMKHE|Ro|gT1jDbCoQ)BZ#iHQAJ$k$S+6DELPg(e1U7^?QuKq z{%pl;sZwLvjnLD;W5vc-gvpZZ=wav=zK0&RZDx?7fgblzJ}s&QfFT1?af@uCU-QDr z`G1xp#>VoECagJ+{pzeH_ICwBBlP%+q^NKx^+|&<_kmC}Tm9W)U`@e=A*g?F5E}5j z2HEue+RNxexb)jRyKqFqf;+J)TT&YX@I?Av&p1HLuyPkP8P{1og%+3}CgGDQW!FZ&B@5%!AuMFjm$^WRj_|Sb=z<=%IqDu7fB4Ev>L(om>pm z-|#|<$`!Wfb)FT1BAC*yDR&Wu!Z@r-yU}kYF9*e-O(I*^2wDr&Cm2@Jm>;3|cMeu` zF2e)a@99d+VD^8bwqCK_a@GZ*G3c${+L!P8Oj}irD$G7~A+C(-xBfE5hK2h0@#FQP zn$j*H(l?7kfOIB_Y`EyM=#q5&M1`1OgQwPG(G}M*^bkVF*2J!`Akqzx$d6F%Kp|E~ zcH&EY9NtkEu7P@FRueu^7wL_7mjD&s@>N#Zb!JAGcTh%&2 z5hNzQVVM~3 zv6#?6pT^*SoJBKu3&%8cGt5Mpb5h72nk%a3u_&|<^5A*;0laa+1Ly@N#AAIz_^4a| zBDK2rPKKC`EK3rJP#U*pq2Hevs#i-LFurXD+XUl#8+uR_ny^6VE+FIW z4V|@T#M1P7=;IAxsUTzm>ld8(w(0p_d~sgS9R<6*H$4r-KD6i8p>QY-I_K!@*?qm! zwlMI5=ISgpnL6{w&pNi+SoSbzeKt8(PCM4Y^CYAR8%=@DF16W(puz`F&2xQsA|4}y zi%0JP<1WetqBik;v_0x{H!yDzYzjaEEq}{P{`mvwVs4Q2sGfvJVObf+6>jX{7}^tsoV(ZyCyW^_r2?ba^e}EyI^G~;*p`mL`B7p^sSxM zx3GI|rGK|XBd^e8DTRp2(SP_L6Kyg7LuFSov}BPuLq!mOr4tLKo+W$IR=MIakK&3& zE&?xQGdk^%VHU@{5E>KNN*YCSX;DsBKQ{)6=kU022n~vp*;oMqQ%72>s8@#3YID}x z=4MkjP1JsRL!an=>@Zizx87nZl?F$=HmkPNq1OKb>d zqH^cBa(lBW6^QTFel&3m0(rg5 zei2iDK^KRZ6_nrTi^EIjU$mVQ>0z+SZj1j&wy*sGvYV46DrnsHAuFBsAfMv*A>bS3 z?_YhN@@r04Ew+i~v7?PoL{Ho;ZboHHfM$5BLc_HUsC{29OBmUV~`}}qQUo`1D&EXYO-bj|! zq^xzMy5JG^eVd0b)ov4LzM+aWYu2riI*W5fUBTGxv~v;D#ttXGe}z1oh^nR8?L%jF zOCJ8T$@~Xkm5+w*bCO-?c6Uq(zDztY;={ zd#=Wrp;-{IR;r@h$AX|F3mAfF(X3B_9uBi=2u-f-yM@SvLo0fhCz@MgVnH}i`W2}q zj8rpfv@dcY>~<`0#_3{2Bq4m~^~i&ZyYjeSl#|mj%Y0PtO=y~`*ZHV`=^^#;kRnNn z(n0jQ=HvN%OnIeIjVc2?XUZJ>4e(zv?OGdmiw*ne(m5nuxicvmwRS+L#x_UO0Q$m_E~1I}dA=e^W}J2S z$Gc9?o!tXZEkGR+@UV{biOb0Id8`|=JTd~t@~ zc7IF&P5a&UkDd*{Rt+qc}sVZ$0pmdwSRwWpvi{P!@o$`Xh-HqR88>t&Pq%DGWh^%&(d5rBUM-$~HG;bEu zxSvL=JGf#HH@htpk=ak%J1SX4Ijavm%`4B!V^$`-xqngL8laa7K~$ob=3ocA{|I?& zAzDoJSY818MzqA`fe{Y9xwHC&^VtMQBvB`ax;<`C`>Uk2P;_oN_`!*#IqYG;JojwE z7I`m+Xy;^j=5^^~x+2rOzbgxS*x^wm(EaAHA+{X1)`T?jrXtK;dUM70tF5PAzL})} zjvVvQwd!l!YqscCJ(Z>7$b5)DX=gw!mX6`zyDuf8~*u%1I-%L|8W$CgWsIVTA@&%2Z;!IpDM{6UST_9B7-dVQi^Fntp!PbE2FbKc>^#*>bK+0b_*%&5q zr$1ScFv?erm*+Y9bQq_;sGW=9Tz#~2Lv<3Jr}oU!Rm83{9~>BQ18kYh>G-9Kv?A4$ zYFOtrUMne-i^Q!kP$y{WhG_cnDyC!D2p+PdIHee>VQcIU53w-TEYPUc|m&f zVpx{qYQFqIWs%xwxI4j?HCMHi3MT)?c;dprGY{C5l(1h)&WWlT`ZH_ngE)EYenG}d zQLMD54&h}{`bSVsCww}pm>bMKTs6FmaRzDcmbGzF?f#bVmu32*%gOOK%UFeY3Hf}{ zXu3*c7>@d3D0eK1Nk$zvgkCNr#)`);eY#mFW^U&4`EyhDJIW4iaI0C5h*wf?sM4Rd>od8b*JN~O|MdD^cA;Xp)y8LPuZ!*(_7k4 z$ps&>YEqiSXXsKp!1VK7>D> zf_Bm*6z`ilx`uSvm>J^E8#ZWxl$LbujNK0q=JARWL42ivcd=sld zKZu^^$HLlnnQQcX1dx)#m~(tnA;zcrqg4~z!;3fCiwiTvbw-X=h=?K!#2m(?88>*T z=d`vELN+!jP*SX3$MMYqs|dX&%lz_U|7i32ID1V>LhB~mSg0g%vqfj(fp2+Ex(OkT zce~^F+ZSQk4`;opFS-VN8K)gUgewV&IBj+Kkg8UeB^tdxDxX|*5JSI8SyAPjHO7V#j zdY#yP*=P3q4EUy5J8feg)iRUW>!MFrbCV1~f=rgwP;MaE)7cy^cs^xf@{5YEtf9$A zP2^c|ZPDn{Yt*V5uE@K`0-u_r{A~oG2Cb`|xe(%>&$fX=rsy)@`+;Io-9(TYm!p>A zCree{dK(lC_N zPy#RANQdBe{r=~9hI{Y1=kBxjTECUnt;F%dl8^)Y)u<`a5G>y7Ig(@830H{F9^@9V zB+Q`tiq}ff&pzYwjgKquZPdXwA3t%q-Zk@%Zj`xKk@!{MYo<8<9okqopxC5_tP*?opxlE4_DXY8{d$zY?_F9%VruAZ~pFdj)C0 z0;)RO@)J)xz4NR--#M#;Fl6WIl~s9p7~ES-;KE?&)j5xA&tSb6;fN=y=sTkQby{TV zk+k!?b~gJCH#4!h1Wcj%Yx3r0(eQ4Kb?=a(a8*Q2#%Lq=f&*96vD|;Yv`wjUdn%uBbdY#+Gx^D@(y;voU&5 z$Z0KYmJ-CevfW{nQ>j@gnWvW4t1*W>ytC0ocYG+D+0{YZtjvWpoebYde0a51p-nd> zZm}3NDClu&gShCl$-Q+(^pIysm5K7n&!L=i(hnG#dHPzOyb>HN9Kdc@TZOF+&C!Vb;tks<_<)VEc7!DCtB6OBLr>vi^% zo;fSVaX$96!J}RBwmHUtNvNLdb<(mhNW%=vpK^HRZK2o+%c{m<9vJcyrx7Q=^weZM zYi-OJGZ;ubq1ZJUq$xk%e5FxE(Azxzfn*hn$bj?3qZNIeJ_8?Pgb4G7BW-to)si@h z`ZwNo9(T>zWo0?3XgPG;!+?&YI!z_*xpu`lo%t(jK5R?4pV?`5$I~bOfV_zOi^o8E zn`0a+vZRSjBi58$ty%umx3LqUG>0_e0#X(A3uzOHM(h$RG~I(g;NCd)kf7ar&Ubes zDBOhXM+>tRB9Ov94BuN^%ajFC7AUo1o}4BTOBp*+Qb@)V=Ya^Ck)cW_cd4gcSoe$M zV~47EfW3zvm#11L!n@!=bo$OHzzkrLEpvSA8PcI{&%v21zwZ%~mN+IvYfRO8`$G$u zpY~W}bE=oN3-D$SsSBD{&rP|8wN8KH*1Cu!vTi4_-*_dIwFpY3f&|V7za9#tJGZe(AeUJc65-)mSE=H1A*7<@5TZgY^)Nk=c1&Y`bdISs|T680gq4 zV47M)JhrgPH|B7P+!s_IZ7@0HH$>2v=!b6RjU~2~r58lXOSQ9kt;tB!QOu)-ujkI1=LRt=b%FQ6Lj z^{ZEV397F5Kq(aGs!)H~5LLR3(9hB^l+`BmHU^nDGP^7ZQJ*N}o^%?yecsVA%NZ3% zBaIk6Q}%h33n|jj+pDj<)aZ?Od!$0KKdi4i{j~&T{;+P2zH$9e-1*n|hVqv*Tjp_) zG&(^t60h@5AaJB|vw~TK_b{5y?os*(aD*)f2jtI|$tJk1xA`cieMZ76(@YjU>pV@} zV7G;he}mElydXZRhrgoZqtaisV%Zcfa;p`^`uJ0>6&K&A)rDL%%|)X$a%p8La ztYJpp3{TyXnzsro@9vDGP%Ry6kq}ah#P4vYWi2B4iWt*3qM|C7Q(jW}Y^rz|I)1T} zf*HUOkt2)6Q$F|wmcg3D9+A#;BGx>+7w{dcy-DWSUr1T5IiN(iBaJxl3CM45R{P|E#2I6 zwE#!fpjeHvNL<-E0&)9~x!Sg(JoDcpB(6pE-c$+38LX5P9@OhuGK)P+9$MiX?c(gP z(%D?O)GhDjaV^{CyyGV7L5kIeVramN~F)* zuy%8yeR019cLpvcceP^nV|=Q$)O8~Tbsa@3_h$46hK7cKtA<|yC<#}V z@y#lkPFj5~nD?_fABumauP2;aJER_mw?IHvlXG|&-Y{cEMT*D>Ff~rXc{z=>0QKvy zU38&Zjxg~1TNak+R;(d2T?^{F*{bI0HDa5Z5NszikE)svl95MH<1RxG;ot17Ch zF*1gep;V0LkCvZNtIlZeSJ@Z|l{6|+1#K{opFnor_6U`;QpMz^XQoOF*@CsltWDMI zKd7j&mz^R|H~vu9eP3hd;6r+qhEqaWjEq4lp0Eq6{PL^ zdenPv+Yf>JW8`sh!k!m->|2WMV$)`t9N9K6Z|ArFz^|EESmK}XeBNaRCTf^wclu3u z`~B@-_~z!q`Hi~o)Y!C{={axwB50D_rU9$}+yhkW_})oDx?=I@1dxd1RX7E@r!kV4 zsP^O@s+nZv;wFq|@_5v0_>DS`gL(bj6FPg{I^Aod8vhe^57w;rp=u4Tg34v|nNIxz z1^x+`PJg6-v~nL0hRS9{n{hUxL(ERt+LA%{|eT*dL@G;Gnncn2ltLnANv5|Zo#MH?96{- ziSj}@)lP8)gHTj`7?t-#%;ODS+{#aWViZSD-K7dJg7}h`3I$aW$@MKMLJ&n&L4U&J zBiX&I)SM-R-^W1_g_5+SQi{>dcawjny1&n$=D`*CzK!Oj->Z z*_GehhNmvp)<}TfgbW*X(#LykdxZb{24B%ShiP(+H37CmDmj|vEk5T2PR@!H3WEn6M zXYRP`Xm2#3t?8CmctSTP=}3-U|71`(NYSTqp-q}=3BB_GV*S@%qlpew0f;fbMI)fljA z&$6iEHy;U*rj_Dec`!`-x@D1CSEm^Kq9>nB$LPJD<|Vd;9*Tah?Z?jHp(>0^FI%ug zsy$6al_H5&jHE(*LxG67F{?2oMYgVS&JS`I;`*`oc>p(K3;;3)6vn%+WC#3;))7P} z6I@4jjXH5bJlba1be`7LsE63Iv(kg1ivV`Zsn+t}JG2{e7DO9*b{l%O$*6Ku?$oK` zXB(vg;J=)?m!Lxh^jkRM`+c#j2*a zM!n@&qCPnLr)DKB!A(e&-JWK+aagu<=W2X<#xb}@)^CvYLc{h*Qi|m&+5SiH!nM8<< z6QaIZ^KHFn8i!t6j#f#a#g)_b5D#3Z~|Hv2YY}peTc$Aq44XR%+wyABh3MZ(^aek_ymIPt1$vD3yx-ha?PWy z8(uN|_AI`m=>BP;rMRcu*UF~IVfJ162}QKq%GL9$sX=>CLpPv=I_=)gbIH06@N^oK zu2?^#jVay#E}Ue+STj=fLHHu_xbu^}d&0ygBOn1dkaIVnW70>&(jL(piJwzcG}IgN z$Soz+x9vktqMU_d%Lp&vM){9*A8qQRwN-!&>AUTe{xNPQeBqeTUn>G1@##?d^;?=K z3K_m<=X3Ge1rjgG%GY~K;3-DRG`GL(cYZa`^4wWK^08K7+tpb549S|c`ZPSDe15gU zn=&g%$u8M&$H6)r^Q&u)OMlc!IJT#btQv`ulISZ16G8XJrl=B78j>rwBQ|G$ z))LH~Y`b!6Cu5u(_-8ruj>sxHFPq&OvUrAGyN`3n7-5%C;f5cXMy<|5VIRuFO!dr7K=8CZ9$D`S?WL{3a5w#tp|`!++j@a5TKq#UrPc z&L74a&m)TWazKjLAGz$kQc-n~G^Hps2Q1M+M4X6IWhd_t)G^ma`p zHb@hV!TJCBh{#*MjDS5qJr}UIa6qVOmSOqt&#qEQo-zO%Yqxbf? z%MNb=2H%C<9OArLj74t2$E>SH45da;6Dgfz<983ND6(7Nr(AKZLy%tT)9(og0&PPC zq=odJ7>0{Pb3%_ner|%XU+zL+%~nD1S|D@IVr!7kG3XS;mZF!PZWGcx89&zDGnBS8 zVrG`<;zNBq;S<1J7Mx|9Tg{m|E8C^k{30_oVjodNQeLhLIpJ&R;P02yiLbh-3)5)o zIY5-aC#rm1Swa3k`0sqt7ib;VGvhy!uH4qv!FQroR>@74ysPHNoJsOdRj7S)_iRG{ z0t2@r`{CWOcFR3wXt8!^F|l|+f-Z!VVYSyrrlct0a7iQh zf*z7Py8!8O`1r+v?_Crw#&!-%-S1;q;auMsKh%l5i~XI0V!f+|hY=5kR#4;*jeA*BK}s1Nu#_ zQCB~_9OJzxMP&k}czr<0L-Cb+hiiR&o^{CXZ93bn0`>R-GacWt*xN#> zxe}jB*l4%bZjWt3-IUdCtU^dhS?DvH7k(9hdj9f*yBmPb%+5qtiai* z)|X!q;y}DLIf`RexWC!XA#DOC|39w_Un^lbR*eKCFX5Q!m3aS-|4B8%x0txxs<7P?=thy83>ic5D_) zsRx64#Ye~&tCM110(bIO52k94Z~b8_sjTDbZ+QOt>~v+g4OjMvo&dgb z2)w?RIQDZs22w2JJ*I7fXHuQjGQA zx7zVn2BSTHPt?pTQ9|7?T0GN|xZQK;A)0fxZwgmm3lDtztX6zZN)S@JvB z$JIe=>^CaBUYdP^vPjysEN2}>Sh^BjK&SeX`udMu(oE^}HNF7x`h+7{ZU23z)8&y> zHj`El8s2|Fl>T5r3yDE${H>9oA$i66kMbO8 zUm42H*iOoDYtW1A;~Mkcf;KrUBhb+9NCww4Ae*VdAvbvWem8*g#yEN%GEY4kMQm-6 z(4qj74`>+oI#_%A)#j?TMyUo%p~@x85(w5KQL1G|>e^7iQ&{K_^m|0QTOO?ySeG$< zeA-9CA~Jsg;fV*52)p>C@1H)0e#xi%A@Z(mzovd=uIXEdR3~%*Rbc#WxKkDAE1}%) zZ{KTG)*ZYiSsIZ7cmW|l;2Cu|FS_mC8+{e$4txdvZEkJ0hp_J`ynZ-4RW{dA`NO() z;gy{}I*TI2c=bmHPz+wcmFklOSc&P9Y{W0&e3_Fk@pLgj61I4cp|+ojhEqh?#K6bM zGkhTb5|ZOVUk9*Murn>~lYX4Wk;}Vo;y2_KWKP6keVjNnbdEQKu4Y}AF)Bf z53|KI|KQAhfIqqzqrb6E5~jne73EXE1Fys@<1kSCrM@D!%s6?NCrO+H*P&O8B=@sS zuo}socy8#`BgZ$9Ix{r&x0ebiwgjwf=>Wbot3o##n0^E~9=me<3?_Gi- zDkUHBTR_J_=@;LLubVFDdc_N^D@K-bLS@%Q1gKhxg&fGviEkH?=;i-8#Q`qZ zXmS;n#nR25_ipsZp~m1`tBvLYsrNepi#=+G&bk63Lb~;jn3iEY3&sPB-$(vg|6+^p zFaX^OW!bAhM{cr$a?#g^6Tls66DiaG{-Sg_I;J~TqjCk{(&gYqyDcv$#vOff)UjK- zRf#U9mn zxhqWeRP`nm%S3GK5ZtMJBGiA~k365Jrco{%W312la=6_%T*U)uLgv`lt1p#$EYT#Y zUHhd(aS5G;;aH>JIUqd+f^L+tz(wC>)XU`9r&6t9Pe(J)!)t~)$OuK;0*q-jkUtFs zU?x#sex>jydDS-0Gl=bWfUmcE#?9o_Nn`HZ^>zdMIAeapO>i#Jh%?0rletV-yuS_Q z4QuwgQ=#UUi*VBEew{-@&6;sD{MmsHMm;RRC2ojGw&Q6 zOILbk5kT4Jy4->R=%R%^H$Z^2Eepl*u=iE$eiEa~FSdyHNVyO`vbMf{9K9%3a3uYm z%S&Vh!>T_a-S1PcQR+1p`?1KUt;W9)WZqY+m38uT7H{?buo_u7uHs8CjDP(3a@qmo zE(G<)7U@Uk`P6K^e(r1GlF+QyD6I9=ZV<=siSu1d@M}Hc5MUY@JfjY zc(oUBO~ri5Q*{*;>`#v#pXxkB%t7OG<6A=sU1u5ZEQJTyQT1_2M%r)0oE_t0xOsTA zKN65Q)@tQ}#mk`TYqt;9%NxxyYP!N+b+g+PS&){vy?i5=4;o-$8dyl;^PlVz5;SrU zdOtTcHmb#c1%0_bq22c|6=kpQ2^l?n~>14=h>dQ4j+I_KmM z)iE`cH|8RO2l$_|x%YdcG1+Y4`IcMNJ)akq({=#fsgZM3+88cF4Q^`H4(976vsa?Z zu;M*@A8y4k7pe{|p{**_rAP!WuHZ0Ki5yV|MhIDdP6w@wNIUR0l75AEh~$3+WY#2* z_e*sj#qs>|N;)|X_avMXUy&Wvc-rhD^klWQL7^AUjnZ=qdZK!Ce9q|3WQYVz(F7hq zR7U*72EO^MJDXb-LO}_WnLYc>JldyGkgq*ickpP32oOBE`k4Xdr;?sKkGE8zz#0iY z)Ghw8vi^M2C9?Nd3_a}j>mQ7CA!QU&B70lqQEZOUe8=%H0}t;)SG>e{_j#wwO;BER zV%{J65zo{*8FA8q%5YPmI0ny20-zhpd&mX3rlH`Bzmz23xy7F`Sg13J27pZ7RLKkU ziywZdd4j^@85(t)0YuLe*?qG%z9j>4g($2Ow=skQ!3!BHdT+TPIE?TAXR+I$nL?$J)U>+DTeO8t| za1&Ua8j)il zTC14RsSx{ZDb+4WWYDM0jRdjWHlJvun&a3ZZLeowueXQ_(v*7gtt%T5eQ)HH;`Co* z@`aqC1k0j`pjTSd&ItcWn9Q$PE2$U*SsO4p2w*9y^sWExTFqQ?UJgFA+#Lg=Qhvm< zn_!QOY}MFY7nshf`B}b5C*4xLYn4gtDC*9Z&N5uv4#n;=kk0_!Awh?e^<%(LrKW}+ z3|%QgddHg9%&YSV&<{En$XW@@llshZhNpHrGf}RsYqec;be31 zGH8z_EVmzvmeB&wMW)xpWB}7?;Eg3%(4NG_q`eB)bFR%=XJ5kX=$E#cA?vJ8SXMPx zx<&sQ@`D`G69l4G-x!hh;w2@*vk_o)a5qw8w=;iqrug}&_-LiuiWd(QT}c%rzU808bWGhzD&P}klqF87TCWovcCPH9YSQv;CD|1pTjA? zF#pN>fc(09E;3vHN2(F_2!GSHsX&&i6*G~gI*8&1t%r)@zh(6HkAqaoht>KTSd1LkN9W(o2+zqsh>5^n4prHyKSBJm;%szE{+r zecnmM;0EDhZWMza%J4TsFbLU62N2t!d`Z>D4$&w_A4>^{rdnzE*|5lmT`pN&od9C@qbVwYwxUSlKSkKSoW;dBo~Q& z6gc7}*!8l1QqAnw=L((lZd$)$9Acy#(^ZRIM+(XjkaW%b;Wdzx;x%b8C1UX<42W3L zOcBuo-WR;dPyV*1oN#WXq1`rY69?iLucytN%b$rVvsbY-^_|WI$#eAc<-!;~WTwRQ z2pY%vdK5&IN+Ycp(fdmgORgok?4!&#NpRR6BIJE0?BgA5-xttyasI03`Zz3tLmwSIqWbpsg z-diEdyjfM|+cZES3$RJnOL6*Xp1|&b#OpU|tRaAHop2BovtKN{r&LD?0clx%2!d3Y zlhVi7qNR%ex6vSqaopF9^nQNSvXDDGi_xvyVv*~+wY205hVXoTlyW5NC*=L>FCRH2 zz*px!`0Jgt|B2zr9-CFRbCiLSat(CRUdLmx9dKD9;S%nTgCu_;^{%7oQ(2mNGva?? zKf19NLhIs)x>L`x2`5VVI5AGPPX*$#w5%b=?|`8WcCWOup6bA$=?hRdi?{cWzL8pb zHMG)9SLWHiY_~2q@j{v@sdh5>fT>lri}_k|HfTJkv0Q8eliXFn2)Sfs{5Cfxh6==w>wW3OGy*f(plA zg3aB`O1g`v(x^PcQ?^gZ;M^{Qm)DOIe^vy(qe|PLlar`t<;fpA|9%G?uMNMs|1&h! z8&GrIM6aYhGb=$eJLBm4lN`kUR_y8R-Qhu~t|hE}>=GU|9T8@59RdH8`{)mMXnzpN zPY9fX%Rak=Cj;BJZ3SF5B=)8}Zv$-Hq|2&t?dR^x@gEx7oo1^&Gyv(sNtRfF?fqL% zYA6@=i8~ytkpg3Y?dACiJ?Ob~V&m^qt7U@-i6s>~6So@Md_~lng^1KeLj&UkY@;@@ zgcL4q>MuTEaEcmob^z~j(hE}YP@aOXaSs-#xeyM-^GK+|vcbWeNTb?eEI|DpP7q{|?&2qWlAyS88-~G(XgjMR# z@D|0sxG!J#2W0r@@F&;K-^kTBg=2%{wdc;R13zGHWF|CW?cfMp+HP}W+XB0}AG=?B zxH^%NJ)%)BhP?UIo#6p8gqUQjZwGP?XXxj@=A5|>Y~v|O6PtP?-Ti$JxiiZDjsknX z@Z->WZmyjC=BS#Cak|?RGQed4@*0%G&z3@84)JtkNp&u5z~o=JRQ%daHakVXL4fo` z1m(hP3=*cZrg{d92E5eyjN$1$pd0Uvzw5v9hey3KZ-4cD$uhT}|IPRx;nlsFuYM zCe%HWRy*HjYclQ_SkZMPen!hTFX`i}IbT&&bU=P^A1e8Du-w^M-Ps9%Q}zNT18f0* zyzfg@A9O?H4P&SQp`$v&5=@XOgB*us>5tOl_~LyDZ(#SlV@#v+DVimzkkJp+_w#j5 zELVKmztck-IQ}+$`$h^JM=7(nYdpTVNclC>yka&P@r9>yG}hMewvE)_(3icRYby4w zh)lT$QX->@pAU*d>-B3wkYIaYxEJ+RsceN~5%vaW&%*GfW+{Ue(_*ZhCKrQwT)}&z z@uk(ACO55|dk>JSabIZ2H?2=9Ur5W#Xh_+Qhwecs63OxE5C{`FUO!Lk0qtq8*R_O9bY~28s~1r+xURGACED& zMUO;<-Ow)8u%QWAioP;Xg_z%_&THy}4#cc|0rTYce%Qlv=y` zbY@o__2@DaS!Q%3c9S-2AZlWP(PE|FIqNc2V0H2@@%fQBqE#}a({07{F~zTLq)Tf% zvf!uJ`sK*#fGmrBzB(2?1Y`kdYtI(|wAMQKj|6lDgxtwzgT+)MapJdsVXxO-giaa#7X`>haS!fcJ=x)R$QwVuEK0s!EAjW+!|w~EVBD}E z^1ByME}>5}$pqCPu%Ok4Zyy%wt%wB4PS~&ILE^?DJ-2_c>$}RcC+A2}G7Y*7g6 zK%PtlX6o`JATuJthX*1xO2J<1ipmr)bm^udrpDQ@^iBI0QeL5DwJgW#)6=YG@#&tL3praT^KYej7Y&j2l-MP%s zj*nW1pL|+`E1vp4-HUP#kVS?!Q0$*yf}({0N7>F-`wQ{`<$%rO-fshcr}AEP-^d~- z=u2Wxn;&Hwk=FT|7XO-5!xO6NC7cs$h@glm5tPIc@b>@V;hps|yr5#Wb~cKqgHF;IYxW9udND%1wrBXBlw`}6UVPTI_DCeajq{Il4N!hjo6w&c2NzOvFWdDKrt zz^jnO_F&e#zIh1~Q=u=*2Um)1IgYCc?vAO5?pDf?#n zG3CT7Xt86*hEhw9Ea)vABZeNRvNirwo?j(LP|0E2DZ2Sd{AeVnuj25`fFs_X3EAB{ z5FVc=H&Py^bPRs}lnq+NE3vcnz=alIIEW2?9~V<(+~PPRbbGeGPK5kDQvM1;Mk2@- zyYI|ktSQRmkJNM$n40M@t4YWMf)|RB{)@tu*>?ZlV@6+=OzNcx|6A^| z#K2IoFB)8Ed?~^8mp3Fwu)#=jCZWkLSoeS#-a^O=^1Rqq0pj00Aa`i?&&uUG^nBgK zQJd}VSn3YU5-CRY>Ty%LQIe||LKSONxwT~WEa!i0JW$X3VjNY|+B+xKAhfav9Hi^S zeYc&1+FDDjc_EF|>#+p}oL3J$6@*Gb zTMbU^W!Eg9pt*oyzHNI+!Yer$@3u7RZDqOz|HIGsml-OzC#Q@7Qq+{tr)j^}kRs;F zqmH!2vq2i{R}(a_XSiuP`XhWqrK-pj-?@oYxr;uR^z!0uPU;QTF2}n{Si0+$sgaen{T!{C=ZW)6dgy;_7`-fnorJ$kd)nFA+WA*b1 zgwCe9K9zJuB-FU&5?c&P5)7L1D-E%rDN2nlk4`n7l)2=!ojm5=mrdCFyd%~apS9Q7 zzu!o(^&uFV~+=nW`v4tDX@1iM$_E6?G0iw*uKNVVz%R)5MA zsn9M!n~;s&YW>~a%Vb|}n%bzdpzzvb)u8sSKx>QBUL`Do{4g(4*<1ug^1OLr^fODI3DjI_ESYYmvdFRv;gnrEK?_bf_D74jgAYRL3YA( zH(mcym$4<|n(?G8VWs7{wpi%K10QzATK*gxa~G^~jsjII(@xr(3N$f&tzd;O+OH~j zF<{+QUvy+Wo7AYSf6zD8%*%?#++-i|t%97uZib&NZ70xqMZw=R`oHJKHM`}gG#=9 z+50J+WKbbu6o?X;)WDX$*NLbopA8vEP@A(g1Et#|&69?6<>G|4pz7!DtwOLRr%%=u z9E%IZ-W3VBoh-Mahn0Ms*@o|h(;=2!1-IzXAHb%-YPRMNxD#bCMzy4Y3ilMfAmNq{ z9sQ<*>9aRE_%9~m>iW7>Ufq1qQcT39cd|>efJGmU_Gaojj|FG; z(C|#|#?#(8!bLS_K^7I%=DrpO0J>{{?>(1FnrQ*!DDb!*0Ht1J_7!E~2};6Lg4Xc$ zJ5pUHTi5Z!ma4d(+lgii>rezSDe0bb5(FFf6`2Sy&21R--(>iMvDVlf1~;&Nl+-f zE{_f3&!6xnR`6iURP}mo8;qjD!rH2(~xS2Pw`#d`R`Tv z^z3XnaFyiQ7NG%0RNqKE)mxB*Ix)!CgJP2((}cL#Fxo3)n$}pr!4|9nyd4gQHE?ub z<>E=+(dpNlip)9kKO@0_2PE~MaIdfm;b#&iL5CqFc+NIcq}@_v0ERB$Q7rHX{SrIT z^xJ4sKG`~1}M{jX|5HSVC+5KuGE>Uqy&5G=XaE1Z2 zh(F_>#bw%mjkW)po4b0H=dkkZPxg511WHzKDQ!dN14>p{y;)bI^~oYj)*5lq@*>P%@8Xv>K_2}=>ED}0mYQsgGgC6gkDWIl`5 z?Te~B6qy+X4$fz+WrWehQ4k5T#O^afhqVetulpV!9v*b9bUCvPF{8X32HZkqfjoOE@G z`s&w2WW2u_xy833f3RJ5)!btW>K;BZAlLvrjsF@Xel zBbJ0s-<36cd=a3hSL@f5bF|B`M)vkfvYT}hlbXM$uby{iV_}xyx<*4^OFf8S)0H3D z?^iIpEyZgMzbEBfyJ8-euCDRoa>>h`ecHSJbKS=4FJAzuWoKQ zt8r5xAXH5SV(J~!>#3ae5n2FRT5k4cNVSVqqGaoVTOLF^P5i>NZ6$#|5woq-Jufg};5mt9GI)`$g=T|Ce z?^w&LtHk8w8wG4DqA@_i3L3xgTy&2g#4nL==%3Q# zVehRNk6`GIK`079<|ilB_s$II^u);a=L!`}{g06U*J#fqvJ?{P>kTOPLM0p>dJS9} zvuu^#e}O&EbpZaG2fH8Tq5H}>|E4%w6S6^Ve8I6Xt+Ke~JrY8d>zn5Rj!rJyI;zaO z=MkK-)_iA%cJ;&&wnKJewQHsuLYvzJEIj|SUx_>8+2Jua;JddVK)rimW#6mE>Zd>6 z7r5KSYOiA|R8xDNBI%w*d&uHA6HK~(qY_ukM{U2G4O$(A7c-YWX%lY-lk$Mh0VrM% zK%zBKE7!4&ViD7>o14@%%i8*xlrsugCQ2HRGZ-w}F+f4!&^JF+f5^8#-K_ln4glt2 zU&YY?nez*CelvfyI&)M|)E@rMDnzrIUrnc;V~*?y#qc7{|yRq zxgc0-_2f6WFZ=i|Gomt~G+gLH!FsL{FalJ>AflwF9 zqw5E}C@bZP%RfF-%H+Z`3gqZIyA5^MJzea1`S-{JR-@Sbk^`Gg}Rf@wE6wBvvr+@MT@vn$Iu7-+-Ef3&C;o_ z800-vUCO;>0c#7Rj~01b_0uWIko5UpLw(25F9Peep0o1H@m`W!5qMF-Rkc9@g0Me@zMbu^%@P_=vCMb8uK0o}RKq}Pf*(9O2`?jp})#1>7|4CH( zh4;EEXTrGE^=N!kPw)t#*pQbR=#NVpV}tM3s_2&pbyeeeKHB*ne&%`?(Uj9gjivV zid@2C2%f1ji*i92Dz@~hNK$+zI<1txyxZS4cqNXN!TKU8-7BHUcJ~8rSP7q?*34x! zrG+TT{;4`yRIx_dHm7|k9zl;3dYDVhs}>QCU6o^1bU`^~&f7tQ?(N8;3vS6N_#bS( z57aQBbjBs>C@TpS!qG^tbBNSAq;lT*-(s<4Tf6nMZ9aAiX&)J!Az_&!TQJ_eKvf>^1G-uBTS`JB+fM_2k35)$%( zS6KLNO10`8(aaRVi~vYBBtW-dKlTUb9&@3+3G*P;w~!&h26XYUSx_(L1{+Wtj0z`- zpd%4*i*%p=z}o5X+3Ri9dp&4xh%qu{c5&ase4)43$=yce?H!q6zV-$RSsr#gT^07D zMqut?WUB7mjf{-!^>dq2BFiWgf02?tOj6GS6}<4cyZPkM9E#6B5o_e11s+|H-URcd3{9e0~3B z^n8~B^2A5QO@lUmo2fe^+Z}ul?+_J7m#&7I+^FYQh|w!8IXOA4>zkYA486zS|B$Xk zm~6T2oURYuwL7j>02eJ=JpR5mL!{@sBp8X1-i2=G@X3dS#GM?M2g za7vITKqUx^xdAxM4nV~Ra91?o!E6L|=d9RNG9+^K-x(K<)pE@P*)Th+Mzqru91G zbFHfUiXSW+?$W%x!laK*4CRC-@(EVukRkv8;3L$5sCoH(-PA zlgDE_04N8LI6>b}F6P4Ow`FGF^mpIKJMVJ;8{8R5aHoSp+kWTfMPx>(*nJN}8MX+$ z-}wLpg$h7vp2U+&EBz+(MsGWFcvb?Cj_ba@tH$mkk{wclHKtOgGdX()wQ|wf2CtI2 z1=I3<0JygG-}wB@vB(S2XoKYYQgv3|lY&UW?PM?#_#aVF12vWmhwbi?JaJA3 zPwxjRn+`sBFgA=Hqy>JD4NC{%f`rKwW)50h#Z?q3wN{($)V|@ZCD;OuI1tpiHI7lm z{dJ~l{Op&$%}roxJFS|B6$ZKvr0(zE64h}vlUFS#9NY1(5le7x#bf|VAc{q>xoRpE zdGU1G)NDRr)>O*zA=7STt-Mh)RLRjxqLIKXpZgZGPc45n3)>IK$+9}yYtVq_oP?5i z*#=V#jT7<({N3#SlT+%hE{0S=B*G);B_wF-02q|ZX~@aR4{oX$WfdJ3>&>=?fRJ|_ zkRJ%>NU@ZTufH8pT=x!H4Sw?*pwEn2M;M}T(WC-5y&PP|au)o%M zZLQ9Q{D1$$Zpml-91SY&Cgi`PoQ;ol~ zvUe{M@j=CU!M*|DXpOn!80L=r@Cp8CNI7?T?+|m z^z-SjbzKq#onV1!XPN~%GDE|7H1cKtVpmsJnQn%CiDZV}CIJ1ne3gAN-g*$x1uwgB zw=KA!CmiZ}N#XB|Dy)Ex5-H+*8@yeAJ%{Vd)MHO;6LsX*W{Dy@jpt(0t^Pk8O}#_ak3xe+4;Z**V&!6Bc#9 zvj^7S{qA&?fP9+I*t&W}E*wMP|K;_KmUg0UT9AtX!vblo_zSEWf9TwdQ@z;lU%&o7 zBPS3Gw`^i2>0##gY>c+eF%vhXK`}%7C4_+?Ct9;9hbg{$4U&4`!8x+Q^k9zDqh=Gu zkdTLjgoMv3^o*BM{MLU4s~k5)@8f^eA+x{PZBy&Hso3^a=1@Wgobv;K=vRCJ8w0}A zJ9Ijj9hTy>8C8WowG^8*^woCx7;2;Jj+eX|z4k>AIe}A4lVB*6&NA}FVf!iCgzp{j z3jWSNKidRI)<6b*c_2VC7hx$5@K4ulS1zj6hM}Rad8)rT=z&$Ot}sbYh7<(>-XwRa zc;bYE@UyBp&yyW3M%f@*PeyBCenO*e*0Q&)@MU0)WQ3=_^g2#(eZVASS=!X=q9fwm8SkT3CLAiwAt!M z%O|HAw~1M7!s&(@T$jiP1i`oU*yxQp2Zrf>xVLwC{-3bB$tgp9DR0z-rs8CUinqaY zNujT<$;Yq%_L`=G29?5ngv$H5Jz6@tPX$k+JiwwcDEJM0e0=+eoSIbpk>u1@mOduE z&JfY32Fg2xxFZp$_(~!pBRfby=+Dow5@T|N7XE3CUs`dZTcOmvd8o5DHH;ZS^gvsv_gm$U&Ny&Ae&?tSG)G;~JHM zmWYo;P3phNbr#Pbx;eI_(Tj*_5|IT8>JeY($@P>JnDo`3W8mDh7nhe)K@aw> zkLzVQ#?sMX+Q_;RcWr2hztR{ty7l2&f~Hlq{rn7?KPsq{Hr_7+Jfy`<`ju_rt0xV= zZGs|5p0ynhwvpE*MSBv_=tno{TZ|6yUDh1rG9&G~HbLI)y z*8%_qY6_=pT`vTrB>!Cn<&zK{u3vtjiw67{ z)HIyfAxj@JT`K-Au9}{;2&Lt+zT?lY&sFF%eEqjQ4i!Q(^?rI$QT*sRw0o=Cd5#a0 zEk>50Xg%8PamfgQ&^=wg6-^a#bp!wCaOX;1#MGr;<9m*U+~z??%$Yv zoqY@YX;w5VtC}kCsYsQgF#G)A3~-|OKB+hQYf!3tQ7xXxW0(I_b|_e~<>@#-m7|b* zi`uNJxn|&N^(SJoG`E83Y8l>usCA$IYR-H6eA-E5+NoaeYoMzhkE@=_oxR`gd{8c2 z4FSwwE7Zu9^w9?=H4_*R6QxqR;8>~lt-r8GfghHKaZZ<jer zaQ6zmGB{etiinqJDi#OrfXygW=(RRzmj;0^{U_6_888m{C7>SUun~Rx706Rw7?n}etpfQM1g1j)rmFZ()U7*!PgYF@bQKeX z5TRX$Y}T$58k|`}x+4c~{}$|#tGso`buEoOa?&%6dr4^IcVLpWXDN~3qE065k?R}u%5N_3 zp!^mWnmcp$Q^ACaPjr3-1~2#NuZeCt9;;&hQ~;k5gEYYx zVYqo!`nR#+q@#*&we2;5s0Q{)`;ixj=a=CX$M;j~zGqbipN0q=SBcUmxGQN1TmNri z9Jqz?x1Ug$dJVBZG~>&BXj-9H#g9-KSBS5;_n_UXG@3GPW>#M7bsAzTTcI_qUvz}Z zQ-uovAW(MDLm(n_Apg>%^Hy8^-2GnpKmPG$FohMjs!117aC18grO#D_-C3VP$F$~> zOYgVUaHB#;#rgS!&b25axPFgsd6X#GFd|`E!cI+WQTqB;&g`;dk+2J{SX;oLPOA?-(r$A?p!-F66a}d z&V+1!KD7145z<=nQXz~P@~+~l(x4h0@TKduJD*wGS)KMbz~h!rs@A9v%(|EtJ4pEI z$(76IAXu#{2O23#)517d3#Tox?gGc|6cZf)7XXh}->4Fo0KV#-(0bUxKup6YU%OBa zh}~E3P57>~inI+KhNFgf-i^Mnf%r>s2Q-Ci%qk2#zqzZz;$5+1E7h8cnA%Loem3a1 z8V2TNN1>E-w-2Fj7E@jG-BhKtEL~eQjqM&pFSF-)?258I#~7?8h9NCxYkFbug;zjb z-|7p-d~#A&u`-GO@X!aU#BqvRZPJuVDEuIh%%#HI$b3t7Et)|zcPPwG;bvy^cEiO4!ejc`q`;H2AxEPtCh1olQwBpxK2(^ zLQ$UIrn%w)fdBm(r3tUq1 z6&m>IM-x8%sT^AU=c(>@G4k{^$3-h~Dzgz2b_!od=1TTlpY0q^5eK}R7&pHCimEH$ zb-C#Xvvsu?Hf{(yU0!FD@FJiw^`0PtFyJxTV0lmhuL2Kf9Op+7ZO)f%u7<%95WRcW zX67~A3{nUtYtK;1qG>&r3n+X|S^f#!v=;*K4Btn9bs_il%Vw^$EA-sUbh+7$HPrN= zrMX_tT`Q-thY_q*K@+{cM_vg_iwU03;Wh}j#aV=#D(FB{5@N{ps{(X1#iec4j52{# zU^QBIy4)bfsOEfBCf+?GF{0ktyXVCCP`|&&qV4>*4R#hA8XM&t&n2d z8_D~)K%srmdMFE&Efy9QUmognBi48`hue#z1u27SRmyZ?b$OZz)Hqe?MvlqgjNuz-%0~?>qXI%NUo)$|x7lt%?oC(A zIBac?oU8H2dXlOj&t)M@&sF})z;bhj&ILq4XxI6y`FC3LI_Tbi8KYA4GYa_Mt3{O( z)vmg|rZctE(!gtfKIe}(DyWpfRakPb_0`9Z*{88Ng0QmE)6=uo4rtn$^`59!Us1fLQI&(I^Gy>*PxKt9wtcHB2lw@_V+{}!oK?cacWQH*K z^4|AC=LhbM5MO0YX)nUy0aI~k*EMCkfBKM4kqqJ&qs;=6z&f}rK@$B;g||wVJLGw( zu9>sy_g{|7w?Z@DIx2Nh5%F#}^LHGmYAmz!*`0zs45u27 z+PL49ZwE!h4x@&gI!uk-Kpz|)P;?F1oh;&i+7a(jnH-q~kiQ({eNhnF<5VbYoNt2v-7XruKYn%{GSILAJYghVwwSwYiNb%!n9V`ku?C2D{W3B#ou;L_ zuZp!xpGmRLhK3+g+@YWKF=qxNyB=U_rip$Ye3OEIS15o*(ft-^R&-rC72_nD%|OFz zB0}C}jL)_2@UTA;kRBZv2&WBWIP-J)SECrr$7l z!?x+vQia}UCxQpcsplAJ@U9>Ik2YX1cz1I=pTmb4?q~0rS(j6h!aZt;H+faFn?f79Z1w-?fH!mXG-Z7@#_K<hTmQY2W7-AwPuMcU;LRGP#Rq-$b z?_WH@FxtyF7*>+reAJC03Qe`oEhH-+Nv)r&Tp4C?pgHlFR=fyNED-LJ30q;S>4R zMz@v4eH~@;mTvGecsap$R8ra4(A=;QCQ3NXHE6U0EYwiG7h;EJAS^0lYAYvy37PKi zCxagoL4H;5-awvjMS;=O>z)7hI%S<-{*R|hbxaT!k{h67WGtL(!;0Vz7rpFrfq?xM z8`3?sNXmDud;u{nvInXq74|O}OlGJ8Y`-?xd=bVIS5D=D1SO*$LM{9!eIJn*3rhJN zNINfPi8zxJJica;98HM#U9;-CCG7@iZ!_QO$B*kL5FP!w%aAvGuEBk+67mI%8aZx~ zMNQg1yj&Q&M!Wx6;fE4HeD83G4?y7>P+xHWeR5Jq-!XM;9h4gM`cFr)3fBm%I!4mFx0rCaWC zleCKaW&h+(srl`Uj_K<#l|bI{x#kas=Y4crY2kX<5ylKv0I9Nfd`e0Rb1XU^Tz%(; za}o}cQR8{6E_2pOmhM~x%PVIcASLq`y zx0V*(jg2gGb{0;}_v%mlOZfSF!smg>+H;$bB?-HLJ3bT>BbKzIhi9JvN4bMTctl4x zLVnzcMmreNM)EBAScPtAym1a<*@~geKfmzm*lXO6W!p7)77pl(G{ zPk5l+-tvHwxd-?sZ~=)SjJfIQArH|Hp2uzjBgk?y`(Hj^w?AyfAbrgY2l{jD8OAQu zq>2_7>+o0t}>geQD}g8?ZeZ zX?C>lbfpC+;*L64dv*%?t#)6Tu(?5F^^W@9dD;8)lRQObrSp+XKy`gP{1so~|}rrYj7c=T<2gKJ+r zF6|STp>p;xB}Iog^UHd3e3+?<{OW#O-CkQA>)o0TDd+5T?TSo3tDn8`|IUZJ99=Fa zVm7xV-7-dH?ePsb0))bt)i?oYay{DB4563zz8?C@Vx#g2r`tgX-y2e$UZhpONY#>M zF?v8}&3sOnMxN@L{|ZPu8#Nz3CJ(<&VMMXGktlTljoJAI=wbE{?20@>yTYux)*~X> zWcXXby}v6aQL^P@jWKD`pEfA?0|q|nJDf4KN18o2yRos{4}!AXubgh zw0rD+Ka%}X&374?{u*G5S{J2z@5Jw9%;}QbAO{V46R#Z8vJDJ3uTXQ@p1AYsI_w ztQ$OpCEY|S)#1C99B2x*b$#-1M?jtz2zWByfCSbM;K34Jl7)RKk1g_krAMv9ZDN9W zs`#(J$#1FU#4__`3cJmsrxgdB#CB;Gy_U;oeV5ZXZ(`nkg4ojr_$UYP(VK7%Y1%GB zF>O=t!l^gRgP2YagiUsLpQuaEb~jL4K$FS^bY{K(if;#ZHn%tIYs}46KKguFPOLt! zW@-;aI#3DRQz#=XC6rU+YTR~8-z!JGu6^=I)Q_W#d&t}V#3!rg!rpbWLym)IS-1D^ zc<0nIU#5YltFxJPkl{LSez+|e)}juv_O&&b?`9bDe@`QL+>1GO5gVEgp12-=Ft~-V z+_UN<;oLpObGCM!{e{{Lu;So}Pp4iy8j|4>YEN4)Y1?wjOs+;);L}3J=k||5%>xe{ zK6Rgv78b{LNbD!1+!GoJ$f!|&P(sDBWF^^>TZ?2sWt6)7Rz%Xz)K_u8M|9=Ko3QqX zsIT=g*2Y!;mLy(<*lF&8Xk=LfyT?kU$o1R~Ta!eYY^D19S2Io4EwzgSuUjU2zC?8J z!(L7s;fXENV1}B836sib{7otT;RMe+#*lVvqE4_!rb^-Q&uH!PhA~yuD{LbllldIH z@1a}80z2XldUrS${0Y&p&3;UmJ*iTzb2r^qOJ2a=a?|&ObE@jk@1T1Y*a0jgL z*wlyR_^1UZwlYJzb-}52U#)gQcj$h_ZBO;6zTVq+Rn}^~Y`{EN&09(r0dpUR@pk23 z3dkZa8sgzt| z=XMTvJ@gEeI!haux=dh7{YoC^;VFwgR+vKb<1UTc3yVN;gbFS!pY zJMgrb+ra60@$kPqpy_9~I0?XhjFW!-mW&1_6gcm~5>_0|sv}I(k8L`OrZ-0hK)c4L z^L)Ve`U3Zia1^G0ni}rn7JtyPGanv((A%U^<9d%{E!z!v_r<|YUexA(Y+764qK3Fo zLmQnrY|74nE7V&YoOQyF!RJ9LzMFWa(ry5Rks9%+6XzFpCK~FnMIv5X2?2%0$RVTr zD%MS-Or9+SyP1g};*TEQOf8SvXiH!&aB zvzaH9k8L20$$}-Q;Vheo?3z^PxX3p_FKk@aEcu+>tW(Cdv^a~OJ}rG@SRal6-$wMm z-xd-=r?Syauh7;y4RLC6P>b$M3UySRV~OZq1OYm-;m|YK4`w-)Xs~Nx7T=Ljf-@Y(l|~{+e2eEfJSy9^~0!e=`6t7P!Z$)f*|ioA57QaLH3kwQ-XwV7CZD z)$@g$$n`Uhc5inh4|7R)ch|md656t_YxFyZZLk+9%O|OO+yNi;4(s>dgiv@A?!E&K z#lRxhUxHDS43P!TyQtJhug9LI2%DN=8_r!`m}yt$y-7c<;Vse3c32WzJoL;#J#2NH zDrQ}gCAk?p zI|&L?TdNPEI8`xc9DlGeG{JdyRVFEIO^3e*yJx_yTeu9-eWGgvDMJ)OcM+JM{4z2R=#RGN_I3Fd2;ya>XRP`;cjs>3Rxz!#t6iYyW3j-nZJ=5DYyR*+e!GDL z*GW?p*cA!xk#InRJxJUfU`XhvmUSJ1&}RN1w#Z?yZV}$!8Z2BxiAXQVaqvg=WBcdj zqmvwlZffpo#Pe6$4iqz4VDWXlyodlg0~Y0w&6ywMwbKG_I<%TqT{+N3R&!~)%mYdC z4~pcKym(h>(@s}u)p2i?!KT@?`h)U6blD73E~0RSMA@p9XWISlepTAvB9x_zz}DRa zq0k|lT{YwFgo8`P+}@3M_gki2sQB3rvF>}~LShRk9{Am%?tsL-N zrNMO~si11y5~~jhN{cRZ2EJ2FJ;|ImE{Yq<283fbfC`N+a$TfhJT;N`dtv7ib|K@J zr$nsU;TBJs(S06AF@DsXx2*|Fzqfx)Vl~;~S0*cL=VG0sPQ}vKTp&0|1h8KYNNG&K zy~6JR`QMGSgf_h}RMTf3rV|`kqNXnH`j}uZ@^!7W63=BD8^C)Erh~~^^}9gFA`YeR z-f6C#a9BPDd4tboIwiql+Nki1a3at1?aX&(RqjdXoo9>#ne!i#k#u0Z0VSOyLWkbS zD*_3z!4Bo9!B~`Bv;3^LJM1>_S;Uixue$lADoCEmUFS>k>)T&3-F)$_?jxrr3eSBYq)_Ve- z!#8xkH+8F7D|dvDeTicbb4#yr2ByIdnEyKkot^ngii-c(p<(%;ZFeAKw!vmHTuXNl4>dApC9>U3pjbjuuPC3 z&z?xqjed|+x`J2Sp{=za!-BlLD#G&YMPMa~M*}_u!Q(yK3@e@@pn+)axq1KL;>L^H{k!hdH{%X!gPSNNk-l~gC~u8 zLpjP6jdpNTH5)8>&#L1spf7qvek!#od z8zc%N3FktgA14y7nP~2eCk4T0DC28)oNRs1&}r z_Ziv4Av>d*>tXYAb!7aR9#Orf|8ORY24-GXrXQ!MPjSmv0wyerE0yJd#aNvG+&*dG2rh-jgXq7eRV6DOJf6jZ0BzqAu&KM z8U3Utu;jqiMyN9QOk>yA*YV}2Z&;YpTY0Tm1otS23Z}BN1g)g8gt58j0Z~0By`EHd ziwK#MJPCO0fO;cW(3h-qsU#T$6dJ$;D6j995z ze%NPMJ~3X?s?t4QS=KE{{cT~)wCp@ZUcxD$1z919vC)7K;lTN;@bB*nZ-9>KR-UBK zH)v=hOsi^vEKOqB?V5WA?a&L`SSXz_mk;c;*g@N4f;@$k3U?_IN@?16GT$GYppi)3v%Kv6l6zbd_bv^_-*7zQ>0f6g3 z2}`dLu=v|(=W$d3W43D zVFr7w66*X(iAL_l0nqKV24_LTnCl`yBv+XSx}(ZwY?d{U3nlRstrA$6Nsj4R?Q>@n zCUfZp-AQIa_j4-s&$NeDcuHk|oQQ~YkL%+wq_({HF~4^o9?}F(r*d6xZ6{u6cRWrf zV~fdu$OMYllPTJzC-K_fNHNj_B!2U$!8q;f=Z{O&q6!ge8PU~5$Onu2VV^`arF;kQ z{(ww(EqW8lUdRS~MiKWIM$pL=Tx^p_yd(A7rP)NbDBbAB+mfelvF*xe0Xz~Q1o>p} z%fxKbMN-D~pp$a{(;3@3)`v5h-O9vvdOtEL$YZM~6qOD6C&%@R^D%jRG$nB2W}G7I zvjk|N2aNs0w_g{VnB|gmqfrbDQs!~wX%h6+cDrsq)g##G*oW6z)hbWTi@TNz9uk9k zs3Fg(&kzI)b*nu@RD)!zyp z$6@|Rfh~`5FvtP1a#R6u2j01?N{L@K;`sH*9{%}3Nn_&iNk^sB8KF&6sN4=|>waQ4 z8jB+NzND!=8(8b*WKyYqn-V4>AtCq@c`gRxw)`|X47c5}pj1<5*%wRwKULZsY{DF` z$v7aBz)QC!d5atw)>Kwvc zA)j>X7S*6eH#RESJF<%Lr<6(#0xw__WPEHV9 zinPS)QFus>%&__bO$9=|1uA%lHaod`J?oIi;Ad*8dYvny9kvzkk5+}=5>SG$rvoPm zzoR;KCaCpZLcHIjcoZ;IQ%uw6VV!4-1+qel zP<>E46m|XfWdd{nNB#pjnH@pa+h&Tc5Yn(O?efB^G|Y}jE(Je}lOJhZx-}GUj(b&G zyV>1eX=u)h*mXpq9v%&{CP{m*_{=Hu#WREI3y9uyZw^MuC&;dy^)W-;@C1f2Z}66> z)dKV4%SKS;4Gyv5f&s@r1sIX^aCiJ40T4fHOhk$a&S-F|C3q~jDAve$+wS1T4?C8N z>ntsZXhOAnX){mFv|v+?V*Mo-ju;vGYaer?4{WfYvsTebErkjN!Fmv2Ed*E%tF0pV zXfI-RZnIpR3qFSPRLP)x`{G@fMR=V9ZyT{3lEd9O(PQxAP9VV3u3ZRk5&$2f3ZQl5 z1kU~;M$eW1%AbJ0OvhrRDo;bHl{2cj#;G%Iqkj4tMIFit@r57jqt2JW?T7S?ptw*F zhG~pf~7*1*r zuFrsp1bDC*+ygv7G!QQ_X!c?c)gP`*V=E<}D0)m@e*MR7h;zTZ`i{!Y-**}kXhQKA zZ+yh>BDCvBLggo-9iAShd;M4XD#Y0mJ+LK-;SbNtjCw3-i_zGdEJjb{tMEOjVWu}N z?!rhR(70&&r6znrkDFZ}=fU%*=%U2@F@+>4YI$=jr_Oe>m;vDS2e3yuH05UPEh5s` z>2UdJ0NaAV9fzj)XtTHpy>NbZGCp+N%-^l z7X0weF3b}xDiJ`(`o#F-4l2Nmb_WcALRp0?rf?%N8Vl2+>$(oHql8)4Rb-uC*!MHX zOY-t3kdjeM!0hhg{SbnaDQZpEA&k~u9=5N@Qh_&w-v#t2!~$G(udr;NXlo0%V6b*w zj?ea83qJLENdq!xu>Svl{}uFIkr75Dw`sBz(L*2*I&TF7Zyk3#Z$C>fTgYP@cPm?F eWmijkTWwoQn*h%tTWRp0Aj%3F@|AKHVgCo3H&8YJ literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/AX3E2-3D-balls.png b/common/static/images/capa/vsepr/AX3E2-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..120dcad3635b4943e71eca71c34dce2edaa6b2e7 GIT binary patch literal 67530 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≻)-AxbGzYkM8`^d8U3+O<67%ylvwT!LWBxuUT0{bJOl?t*HI3-!w7lJbGx~ zVE$d?JKt3F`!!0o=au5TaZ5`BaSfMOvgNSNn&Mk#7BvbDKGDGZo)@^JP5WMk9g+bl zOr-v>FZ3lRG(5`+RggR4)6E}Aj3y%Ccx-s0E#VCY>BUo@3GOra#}=mb5NC%G_8R0l zR;HlL1;5MbiGb5mXeL=Lzr~UN^k}eNxyx7>LiySav2ol(2~9aWoy74g0OkKRt}147 zz^HUTGErb*p19S=;MHaiTV{ItRmO{`Wty;j-co4I^WX1zT#~Ps=aj<bc|V!d9SnwmOT>kfasDTwA#b!a`Gnf5t|`5{LB?JX4WIv8IA zRP9kBl)QX>%RQo5I@mAis+7sHOpr^j=N>-(a^-~VJZRH}YWQQxq+Qpa4-VpZUuu3N zp`N#P65itFnsgH3rNX}w3b@3$dZ#z`c_!)WaO^xG5bDGDpS8_EKH~7%VDG77BsnGy@ zX+97$+>^Z2QocUNW;|`}L?su*oD&%BmM@A|;Sx$g*mr}OF@LaKqBA9bf(cs0Sgl4I zsqX8^_}4R|q@=uyjEsB)sv6!;VmbV~5{PIdN_FNNd6y}D^?eM#H!Nk8=`A4I3N|9_ zv}&sKn^YhmOWWVJZj(wa+2xWLZ~5fqb+h*JeZy*bY3{odYbm_{M;5pl6JYM(BfN8v zCu;rp`ab9dj{LSs()E(*?@!RpW{#PywAx)|1lxrRQDSoteEtgZB;Ttr ziRLSvmF>M@1{0PKdIv8E@mQn#12_JZON)!^H=*zzMM)V#@>ZRgMImt~D3W+nK6LBx zO+MDo8gp@2)9ZvUc$>#-yhVB5Wz3Pa~T(bRmEs<^l?p;{4u&!yemT zM3umLOE}MJxY9;nlyIEqln;kPi~kO67-&czY0Ed2&w)VX4)`c6 z0EvR{$k}&nphqOT=y!X_^>C0?@Gl#r&AaOH_2?HLiv`5}k6!e*_Tx!y!k8;*d$_^G z3g$qAF)>;lSt?GpFkA82zdB1*yVXV&r>jRkU^J^gzGQ+iiG;RKUMj#kxJoQ95s8WZ zmcNV)LrMj&*6iH^Ob&*&)R`V^W3#`RsM3(3!l@V~ivL3ik1&i_N`mkB4uR5Soqe97 zt?~BF0CHfwDv<`A&yNpNx`()$?3ip9BjNc;5+>ii7MkEQFvMiX zK@TyD=rnZ%2LDG4_*l|Zn4Miw(pMz^cSCprMA^SygG<@yvyYB-y|*$UnZ6yqYerr0a+k+)3n>`>A`m)%!6l!tuKZ_!|I+ zI0b6??)lwy5M@(edJQt5HHPpTa)t>1{HR5kxF-su`Fb%eZ86=7VVhCZHc@)o8ei^I=W1q7H>0ax5o{a#B7t!-at;y) zOKPWLrbR#gz5epu=<)TqKRpx*J@$QE0Mrcn;IPHZ`ypBgV1ZPaS%BKpD;MTT>35ZP z&p>51bh{&5_ggrK8r>*;Gy+l;}M-3H#=Pxy}!i6o8zKRyaLl7k;*V!oIVO z1thS~WU>Ne|BSbVT=P9s8TABa2PBmCit6Qrt?mUZ_jE89n6|xImmWmLlU|P8v&lAz zBx_{0gio7dA>-!rSPm<=;}Y#}1^$5)z8mp}hi>Hhlj>GS( zeGc0g`-r;Wu*1ODrZ7&$OlKCE)t;I^^Eg_Uam*(=h2xZt6Pw_hr3AkD_EBWu4Iu zygs`O4_p5>f2_!oMZ`)d<=JbB{*xy8zkWvh4Vov`?{cQ!x9@+ToQi{m65CNuaZuJG|*N zrT@CIXy@tY>j=kybI^qe=pqiJY|CC^R;KPiYm6qBI3X9b!yj&dPaMD!bC&2rCIuhKkmdIRErqyf2lk zFZFH=a)^a&zCd(XcD-j4zPYu!nP{X7Ip-h^A>Az^d*<7cdDXZb?|j+nvJxZzm!t1( zvrd8zkdI0N8GaWKC{6a)@YOg?66}5VOwMn&-XDaM)O9%pVg^6*y zFL4w@8C;Y|TORZIzsj2xJ`hJh_uCFLi#ERu6M|Wvk9Y;>jgdM|&(G@L&W^r8d3DEM zUxPvhgGsumBzmA6cQBO0DIRUEz6cqWYU~~id3UY)N=f)Nh3`AU_Ua%mb5*wO3LWP? zmQwYtKE)}NF3t4j6ry&Vx|mby=1x0Wk4y(-aw4&8qGG*%a^eJx$Zz=Y{e^JQ?QiC% zGCq&k2`1W<7b)g;!w`ljjTHEaP72*ZtB~7gy?tRPh~B_f5%Ie8_}JKTFWB33FsDiW zpDb^Ku;r7MnU~kW@4LHIP=Es*88hg+&Fk#KSo6p!oI>Nh8EMS+-+fhcFJ|z(SLueC zS2Ns)B%QR@o(+yflZuy8Hf_hO*>SCpH)`d$DBH3%gc9NAc5_?(Py!K=NL)3&gKrnF ziMDcNM_$Jt|Gq)mJxzVL$DaI>QCZ@9jT3#i=G%b&#tEgG#lolV(1fZ@@+b{$E0hr5 zGD-3>Mb@s0zVnEqUD|le%e+K8)e!SMv9)5D1#BgYl|(sF$fWMPt_wcy4}X)zsARO&_}Zw@mJ4ms&AZW#ZIp)>8MvzQP($f6NV0R;*5y z3!uC(WER}%K61XQQ|E+)Mb%SuaFZCdSdY_toer|=f05q*!3k)}#esOS;n7WV0ciKy zWO^QeWQo|*5Xa#v^yt<=q;V%<`|X!;p~}o4SB7l-3qG^SMeXESE@4?>tYFwj3{at@ zf-5l`lMnqp=$IXUJ!`%wdEU4@Y~bSekjDHY+b5Vp$qa3m1UNu5x4Ps&=u1|7a<$K) z>Yoa#yplvX&z=-pz)PaIjoPQNjJfIr*25!23W|O6w9(NfJwkswYZdxlMWzbmxy(-$ zSEo@>2`4ydb$(v{=!urzyQw?!w=%N~PiJzGymN_>99RlAppGus2V^y$@U)XrMr+75_zW1^9bBYEBt+b z3{qnaS^t01B9#~K**7;-@b4`MVND z_;!13HPt7y%KzfX--4U|MlH&_9CpCss}{Z8LEiQ=G|bpxTYJU@h=%QewoMa%Xtl15Z9W+*%q(A0SeMS z4|FE@*?WcLI`)$@w_=l@ozHPv_I@=<&5DXvtF=L`Hj-zG^|C=x&`Nb4*@$zH)r3&1 z)ywHDy?+K+=2j(f=llJ+`{#*7cuWx7H4}OTKu+Qro6K#?33U*e_zw_ETz_0XOwxXM zl4sYFl7)D)cS-iw%jUIVSRN`0w&`w0t86Vgw}MwwDDYO?0sb&Z5ycWFC{z9`@^3Yh zM4Z8hX@GJD^J{kg(2R<=O1qiwOl0)!rUdG~$l;2!7cYV27;v{q;0R(`psud|dF7}bg5N!>Y7VvZd&d*LIvu8B zg#ft!rtt=&t^d9!OVvJqEo4P$EgNyPk^Ol14gfO#J)iZ9h0C=>HBFh)?xUm2$vmo{ z2QiJ^kr$`Lm=on9!zt^Y%#Rpcw6OE&z82t$*&GgdIYw3D*`vTYPZj1 zj+q)tZ61tis+8VYrz;!!wBgKJ^@$HcQCMe^{tPeoUPn(Q`r{He)Yp9vOT<@Lbf0)l zkLmcz`6N*Kwq6JU{T#{4Ha z+uURo%h7!P+CXzM>FLB@*z~yDEovb4T`3`?4mwMj#Zg@z?9|qp#(yEFl6W^%oMxO^ zrSQSyUluhBSjVtCo%FT5Ury1KFUq`USPtCqYyqraGB|D*k~Kb;1i|%P z-~4iL`M{%9`OnKUzx<+|dP%GM;#<4}0mvuAgKjbq|Eh$5Z+IWR_)`h-`f?Ebh*ZqDjj1t+X0`6`dml^r2<#q#9 z45maF2V>lw^uun{5W_U$S{tbqR%4k}1rRNbRrHc3FHmQFX z!>JE1S2#~t<)f65$>k>gOcpS<4SN3#x$!`?y>@$3RPdzfwdMx_a~4d7#J9Q>Way4s zt@#ZL1m_umC&b4k*q_W7qE=FL^;KdltyRCu5_By1)#hHHwOkQE2|nHMglj&2Rle)jF?9?X06S-1cHUN@P)9(6nOTUQY{2= zSx%b0sASC>a0HCZbBB3a@P!v0yX!6;D1g4$x6w~7j`QXInI6|of>&iUzW!lzKWFLib1@#5}Z;`sh{fWsxDxJoIdI;!EO z*hM@^KT{VcdmM*HtDskP#8^!ns-!d~xQD=>+cW7_71I#?7`xYln1OxN?SEtGC!_Qe zBXG4m#ExAC&2c@~#^9(ZM1j1(~wc7bSHfUB(l0a0*wW91sge6jA zyT>Y#e|zUCM#sKvT~?UQ>~vOMUO$a-9@ficz;c zPh=Iv?EuHOvZ^F9j+Th|spIg|^z*Y6?1T`9Z;1RMzzSw*HFl7~LBA_~{0q#*FJirc znY)ysV`r=dpYo&DL+Imz&7Pg=(8M$j=g*O#l3=&)|6- zBsNB4oub;Kn`7zE-1t)_%HscE&ok=}tJNBhO&?Z_Hc zpwztd2QboHe3X9NdGz6n-6#dLAU``z`Nl;{iTsX(KQ2-9)BXAG!T^}TdJBMy{8i+E z3+FMBbv;>RyD6wUp=1JE>9fSgMwV5`@6J=(@PdWilVCf*rDX5?JYPa6{sB_}9Y+NAY;uZv zXTq(#raLA$)*Q{3^*7@{BmoU4#CGhNFX_ln<|4et;O^;14VPpPU$E2*qNnHP` z_AWTzKqc?@#NQ^4ftXRmH0*2njx;87U}Pjm_NV2o0sk))4nw3WBdUi-=UyHU*E=K% zBt9z+KC!)@HAVUNV+#I*mA@*S5gazM6By2lr+sB+X6*h?57vM&*M2}}9Oyr}xjn>H z4X_yq;0JVv1gYT;>)9rNaN8hvr_vh9Z(nb;S;qVduc@}UEbQo3V3$NKkrl6-Pc_j3 zp2)fbj8A5O*5k|Qyju_lhLnq*l3CbO4pGVmTL(< zA4*O|I()Gna5^SoOibowRYgs3C$S<4>ZS}ihE@qqRegl3Tc6KIH|eaO_;0L?mO|4x zgi6ypzsHeFvOcR#*h$7zB3uP^|2re_I6B4lyv?=cH#cuH3)G!iaJfE*FYXieHXp^< zo-+3@O^cIO>~q$lxlSgx+4D~N+Tm>}{L!ZXPtq3q{i*}=F4HQ^T$^>tTg(vL3RcO;KG&u2}fDZ|!mvd?B6$EsJe+q=%bzszD$L>M%c8$ zs?_6jH~Y>cUKSQEriK7rUrNl*W|3GE0AJua^?hXbS!tKX3EE#5Y1^anKcPB$MnfYm z0T>Fe+%K&d?eiE3F8W^9i`@Sm?E$x?mi#3{t_cIP*-ti{=)1vCV%jj)*MsWCV&n@W zu-=UZ|M~qkY6VFq9KfD73{#0TE58neb@5-uqdsZq!E6nF*;r=xPr0BcJyCHn>LdLz zE>m0(H+taQG$G8gp6ugO4EE(QO$!7NfF5DX-PM%UBMUYKjy*g zX4Zn98b>qYFv+9Zc`KBS6(viF(Z{79CHngN`K6?)eB-KNSHf_0Xaj5N9`A-&pL;fU zg}Ak@@B3T3+5eXO?bovy3uXcFJg=eO^;RR$YtSod*SO1K7XCNuSr^G|JZxAn76-)n znk$zkTb|2$V@*4rxzigoFVwHF^$@Zt0BUEWsH0-g7@ z+XuUQzenE4-)aok14@KP3*U$sZs+=En!RT+FINEi*74zbfq}K)63v58<#((6+@IU| zWSmfF?Vnp63%)T^s0+x~5o*Sjh8c+yu|bYaG{%C1$8J4F-Pqqj^;YUN8y88^0X_oE zpAr2D z4-G!habg;xb622`w;V@UUTNz`KcgUEJImByQ@?bEMJ*-m|2wI62(2S_=2Bx!2S@81Knzr}r1 zzK(pk@E?cnIc<_^tqg*mc`A;3eKA{xh}rk}wKmS#l?*QCEW_e|)(+=Nzy4@g&?DL5`W znXppHq09rtI5RWTSyB^gn`yZvzsj~>;K%9tezM4DKGd^KuQRK7Nf-Du$4WWm6n>M; zoL~^9_Vjgt%>BrUA{|l~@!R}p`MmL{4Wqm5+?V$V4!Qd)5!*F5r)VF=-Ro7SC<(89 z%4YK_B}-ti{H*C`WK8t$Ip)FFnSs`W(@dIs8SFnt+%&y}WQGyQY z4}+r z*aE#vEHBv_4d~t?akVuYuC(p*PJT|AOgnRrwGZZ^UKU&|Rzq=%=C*2q4-{gn*E>6S zXUTaq?qTh-Xw+}lT;RGEi0W8Wl^Wjt@<;kBT z+86u03})0@>3;2T-Qh%V1Ogx8uc~WT)*_r$z#FICkLz+exCKL`%BCtZ2^FG*Qy+j! zXHs-WpLe%2F2G^XpwppgixPC~yVCxBa`#S?TtONTEg91*XtU$XUA0w@a#oCSbK%B` z4u26<$!a2)OM2EcWTcvK2$uP@2%V-MKa(B1=0MgSt!A5etabz%)Aq-ic&vq<7=2p$ zIumC;UF-kI4Y=O)#?mF#gY3~AsREYd|D(D7j^$j#0i(X3Z3v<5Kv-eZh5l6Ry3?e^ zuNxE!$I~3@I9grpkMa>(lywmxq7B56l7+h;b&>amYYuwhhy<)bRP93Qq$?~w$c*Sz zc^syalk_oy*TCn*JFpUq#6;F`k{$|7{t`|R^tSPzyH_4}CoIa)YmEFm^(nWM55LFj z)gdrwe0gf)g_?jlJ)GVop6JEG_V+h@IO^K7LcAHAF-<0|ev>v7in^|wAg@17)qPuO z{zU1(c^F03lTXyW?b7+SLR+*U(l<4gOev}xu6;BKvsD)k<*d_r1^+~*1D~mHQchoR zixwkmw4^**vodL(=9+rQouuJol_lA@FKB(P>+NrWgy)WB0CvUGett{me<6i{fRzh6Lba4!^Qx_ZS>^iBv{|j z=?Soask-vK(7^3rMLL>JoDGv$0xNnR^g1+=vz z%QZA=%b)L+s@NWkwOh7>TfB7Gm?3%K>F~aq+lB!Rv{W4K9OjWfv zv}9AUsas){XlNV1{hhw!`8WdJmwvd~U}>i+Tz?<7_)juQEPIu^V+1g)N-ax&;uN+2 zqCu9y!1XGpsN5&)zj%v|3C2Tdgoq^rjD;BW|b4cI^5}-5Bqax70%B2_D8V$LHd9$tvdxtEIP2-Xoe_88MEvGoY9U%f#)cwzt!71A)9$MaDfFt zSe}^EEVOsTlQ2r%)-}_JRiYhaT?NF}n8v$^{LB9Jn1E> z5m`x%N|GoQTV;ElpgA>SYh~v`-u)Q`pn-w~F#ncsUO$vSkbdJ5xoKYdR?O#}@xaFx z2tpL~ebLvm{p+^G0oME4w+)BtT2Gag2@J^EM)_Ubg8=EZG|+DsE#0)PH|*(!=^6G5 zX{#A-u`#JkPN9~O>o7w%UN?F3VhtTgaap7@T)ZK6B%L!>!uW8KmV@M8FhCAy$p!!e zYv@&q$u-awYKV=Ax%a7>`OY21Y!5J8croQuLb_IlZfLO7jN1xR7KuIHP(0ZlFdT4z z&UIAY( zZ2~1#0{`XUp~zU>Kp31p2u`~UHDqFY@^cN;jKdcuBdFvQUaFB~L#f)iR_8m?m_N~l z#xpxD#&;9Mq!?8=rG&bkw|LYcx8it>xkfS(jT@9gXCoQM66GUt(nDe)nEty&ZZf%y zrx}&cKEajcI&>zYtH98tu2Thflih$wH>G5uEIIrsc)lw7k?N3oTo3bhZ&g3ofB5Or zQ2z?{9u-RyI)_|WGOtK0;b3ED|C-UAmB^mP2~)5&jEbnZ*JUlkeT`xf9?oBEjEGUS zNAmMv9((r9!Cy9&cm7K}YHRt&&%VzBirarwk~FEpPZ+s^+}A!UKj-TSko_Z-TOI%| zxJ|)F-Rj$#>}SvpNXwc`UP58nTw@{|NEVw+zq4$YF%@8^P1{#L*N^Bb&cMeh0a_IU z>66uBAkFYP6a%*WiN44iqsVEdFXdNwjxYosY0#O->A&}bB_?nQm8_yNWv!JFKB04S zBibXX_ApyO;G=8z^DQ1+K~X~GgUBRq%&rU2R+lOkQGFWqt}wkI`H&owUx|2!tVc0W z=x29!v1b&{Kl{^PEiXfCW&gXLoTKx7x(?NFM5!R{GBI6(hU-=|D0Zpc3~+Uz$(HxY zvZmJGNmj0JKAD>DTg5AUEf;tcdPS#uC>S|z9)bL*GC6{6@8#v?!E^qu!Og8D$`zIn ziGm~8N_$Zf8Uv%|%9<2S3AYwB-0(at`A>kdqQ5XssyR8Wk;M4F&Fxt6KOJ3NvVijb zyg{?{tR3JQnzYHCroWX8-C1O22Y9VezNd>6>w;GaC%D?l_c2|HUJCYscYL@=S_uQB z0Wt2S=uYUg8gg#M-=jz>+Oqn-7(EL^h;~7=)+|J$e&gzsi8#f3;iDiCYpxeB zEAVebQ#IeF2LFc?yHcBkQAF}f+iiAlK?U(T9W$~iWw;o3_(TD?>KW437i?$2ZH3oWrKc zERy&=)(zN$2&viRLc$h%RELl;n{xw%U-q={0=v!WIYJZ>A+Hg2Pl%Op*U^K(WbdYu z_gGtieqk*A;aVsarK;vHV37??M(y>e&~uThBF}=;Mot|;ye6mXX(3kv>I+>r&niS9 z-~7{)9HQ@->~!zKU9Heu2XSSDe`pGzoCWtje^0N|PGeQ!la!2k5fx?!1IlQF*#|cH z{^IQPo*wtu6h`3^W~lxw#VbpxPtk%GX5(iM3H+4bHv42W5e)zkVsZemoWQxCoUnOI zN<%$yh)M=$aV!cld2%dK_koMqoIW6cqOduT^O43vG@LpR z#47ulp$NzLc(pWxldPlLUfm3x>3en?tLL9|Fgib`&JVtwn3$NL~pb6(SBXPZGOo=l+VK1?=wf5YoNt0DM*sy-;3o zMKP5Ec$}>OT~Gy16xSO4kK{Q3W!}59dxrCU<`QuQA~#l>-*1}UwYJS!PCg9n3KYK>X!Cv zH5J*7krD!>4&7^QSrPRj?O+GtzjH2JtuVRg3?UW=m?lSn6&chl6&!iL0T_mh5yTbD z47i;`3&yni^r{IP(z?zqCtR19NxVRsECqtVPL@9lHD=uphYQ~}5|ro-D*C+)fiKs9 zRxEiPc-#{JEKFEje)X)Q4OF8=vL-0sNZLUM@(vQ{!az4i-^Ts@G+qlC0(u@qLWKm^ zW=|1!lHvR9nQ;^HEfevRV9$vNhQ-|TKt4y?xc&%?lOm<<1}XjMHsf9;_7VwtLfeB* zXoltz(b@SUkZ63}tT5r3K|wqz^&w1NHe;-d@R0^^cLX6B&#rKZ2}@lf67+ywdBn8L zMK0*O*O+SyNpr;x;e%^-@n{Z1AEaepI->k2sDCX{C88ynarV3};TE;zzVrcv_$lkOv^hJy1GPIPEaLxhgq1d0pcx zSM6=iejaSUUdyQlY_m|Y+;}S(eFRmBMP%%~oH*BvB)reQt^xh=OoBBv}H0{`T+kKM^ZfZgUe9haA zm^A9|=kX8lbJ_pH@0+*dJ4_wYT;Gc2#A;kO)?L?rA+O+ha%r8&EvQzTgDgK}LdCv$ zMgh^m05O}09u3kp9uMXO3@|T*HC`H+KH`74#bi8??x2J=%q*}u4cz3UU|D;cqz=Y4 z9iEQb6kKqZo_-}SFtC;tTrkG&o6}?d6~g__P2r?~Q5c~9h1W%-zAhX-RBM*HC;(Z9 z4oj(yqa`WU0sh4KdM58TR*JA2ZLj#fMIGA=;sX9A?a9CjixONkfx(>YM};c2#H13A zF1}>m%_s7IOBwEeE3LG+?awS2pJmRjW`3*!Ftyh0EB`BF;(^PKR**5y=lwth5QM*m z=bqy5q(cmJ;b97=MTmElfNLUyH82pg9po}-Xi{))tr&#J#j_u7RJT$tv6vtlt*%9|(TXO6papa}>?`0bV#T(15MHY0WFYA>VFlQ&Y zKpuGj9D&t?`fscICjNvjF8p0@Hp!B#Se3@w#zYMUVzP1D7{#{__a$M(ARXpNb!Wl9 z`Wy=ODTV*J3c#wW6RGci+0rNlM^6QSI&pGWJ?1ChJI%w{LFmfrvgZf*zjLhv5818V zr4AP>)RYw^OYBz;4!Hl#IPI63*FII@&JwM&g>)&PqY6q zLM?@#bMcU6l&=q@4YP_tf>@|hHV2-oB-U?;JmdkC@Q61M9Q1jce=`FcyedE5|4yUx zkNgG#ovoe_-gRK?dzngglu-XbtBDSDqppcYBLle$)VSfl#Woekpuwog2)+g}V|n0n z2M8>umwaX-VVblk^4CkC{;(7LRVcIrDuNfN@GeD^yQWe zL`NV8^x?7tEW0fp5tDULG`@qmqlCkuuc0H$zhc2^Jz2sJWU4bvz%EvzHZ2@Kh^J*|0)^p4v$D;5nXPk@(Yp9&uo6_m;EA@fu8aLNJy@91YmI+@ zk{w5}f9g>4v{x63RmF51_gj6%jvj0B`(t?*x1~uU>s-6PG#eY6ZLp-_P8o}+E?bG% z8I-QG)@Txu^=n&<6oNXdKYS+RiLcwI(5L98XT%!&(RuRF{pZmoJMj4YV+wxXB4WEW zbZKz)+kuriL$Vb(afcEOJ>Cr;k$acW;?;DEepZRZ#UdL#faJhL>*ACDw$RF`F}d>3 zxMwAdfQG(hHR!41PR=J_y`KY8%V(X8k$L6ve&9?Z&eJETy@q&#y{#>2r#_5}Mj(zd* zFEUDoNT5S)3pne=m`?mDR`~k&`oKM9%h?62w4qqJ>U%2U;Yi;$?veqOtv94Fp zpi*hi5&mQitV1*LgNd5(wKHKa*`R6UZm{%Q& zph*o*9*X{#O-);=@A<&^&44shno8j(k%IPSsM*{Lydlb1yDmp(Tk=66TRPp!gjpEX z>@Z)HR;*fUxekyM>t>b!T&VcE$U_d`be;#GCL;gMj6VY2IwBDf*soW^%?7C9bmM0t zBzBfaH#7twfpr-ZMw|O*Y*!P^55Zc+Y>>pCYvIlAdyXyIa=**da$X)!x5pnKC|FQ- z#hrvxFTY|fOxfg`&Ss0WbC}#9CBA@Dl1Lz#YJOxa%3C^8j&An6VS7~^`)o)gK9zjv zTLcO79~N^o$`||tF=dRR=mlEDkFvyBm=j5`X~oB6lqT3q)w_RHSyx2($jqt+15ESW zJgpFAF0?KgnTF?6Vhz&i+T>Yc?M&0NrBOeCVn#^g)pKAp1juGmSqI-w3i(?3`8^2p zv>epI|1aQ>nw5S$lUAyp?Y_DaVW6Se$lZC;cH|A35$qEiP#yxxe??FhHGCiKzyb*v z3yz9jq9M$Y3ZjvbV7L@$JTt=S%hLlxBEx1XkK-pb?d{l&*D8!0)Ui=gx-&z!+!r1T zx3GOE#*Uvey%7=C=QvDWQ+jd!6q*JK0gJckb?4dWwV7n^XTpOU>asvr$2DX7>+$Kc zU2Pfyg<_OM(s@+M(i+Muua!%e@+VYsf6kprWV=pyf$(oH#~D=wCUv(BM_hIQ&%_Q{ z$8<$k*A*Lam3T{cH^sPhXS!-Pr-y+7Bt15Gz9)OAgzxYK$ z_j!iY@ei~gyEJH)V)*yZxYShjRGSjCrK6c3r!KXdC7Me%w)O%GzotT7;gzG*q&^gk z?bS|*{23T^n>7MA=FFkFIWb*^Zb zF|PtKu}@w+>qKXxx;<+r^>VJP>qz^~`uMxc_JrFZlwHar^4-9HXK{a&;JM>|*`Pq& zur%7afM|w=7@%B@mw7ubGvxB}fvTer`?XWSE3220gU<1+%w52oKAsgr#XRRaFuD+pqSsk#?7Ss0@^CGj7Tv7_&5qb?_EwJ_eJKkv%HQ zUtRS}|54EH@mV=?9P?%VH6WU|nH`5Vm*}61`T6PUW_HbiDN;kAuMf@DSwJxLTi|?d z+_RT@TU^r-KhhU4O;JxT$f(e1`U9m~$Odr7euq5y+W(R=TD0^q?egi{4svGK0c?Ij z8K1e=HwqcMd4QtOd*n1xVThUwaX?THR{GAE$5SLf5DdS) zx>Z;3Hi2Xb%f-bdJv-YlS!GDC0lZ~Zi;AjzsWGm*#V4T(*&=bo?5Ncye9IlnPuj2_`_#63}T7x0LW)ow!%JY1%k(6)$yTfAWwSLZ=naJ5>_p z-2|3_^@-T+8{%yno4h`2PtCi-2ue3MH$$>(zF_>=$_@w3@b`%Xd>&#I;S{w|f2Zi1 zN{{WmAlhMwf0tKnL5+wi)C;Mxu%@Srrf{YXpeLo3C0gJ&%dUKrsNBp+w)KRYU1To< zM)suR#bqa75pD^GF!f9=;l&1+l!dFd3b1HA#-FBPieJv~PiRYE>ht{3hmMKhJo42r8%n*G37w6d#c|B(;4P68cNl9J4ly%bBCQO5x$v2h!E7|X43;$#t zVqjYZR>Ge(aV*E3dQD5s%6w0DiEWOH2qS5<$rRgf9%}*TrLt{WCA%!#IFgf1y(sD% zF$j`eaKYlh zp%}ohI3jjzP;-qJ`qM^8)k*oit8vw%${O46YVGB;o zK~Kt?k5d~(oN&?H{+KFP8?h?a@rn z)tElV0EB9dH{EgJ4#wlwGgF?g^z}X=#q;xfwr>

      JSV)5;I$8x+%6V*ht*er~hJS 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 W66MxsB@R9WQIb=at&o29`u_n`Ijsc% literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/AX4E0-3D-balls.png b/common/static/images/capa/vsepr/AX4E0-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..17e5817eaf5c7785e28cf3d25044a091ae47d15a GIT binary patch literal 52642 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 Q{|Qo2dZvh0cp3bE04vz|aR2}S literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/AX4E1-3D-balls.png b/common/static/images/capa/vsepr/AX4E1-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..4877e00576ec6546759bc19e6e1f0dc4dec761e1 GIT binary patch literal 76179 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[#0 zO%{Yc2O>3)sMIblrjP_I7e;G%8DjV^Yd#W@yOC56;kKbQc~|Or_QMka1juGVL-T|> zf^=)`qVJlZ zK5OZ-xCM)!3%$Kz9eCs*CuLropKjt;ar5gNj3Q3!P<+_-I}>IDD@JW7oNrmzfP^!? z#Mi1t8tWZLlchv!Ux|A6g$Y_AduP4mR!Kq$l%D(8w`b8nGiK39H#rO4*!5B&o<9Ou zfFC+?aCWdRX8P@*syV6P@)w;;`wrZ!Pbp}0GeRVpDT>mv+SJhSMtS_&K$nG8rgQ=)7pIDSp!a+rK7zRnj@a2hXKGo9n%) zDVF1ap(_DBfXrsuS`JkqOGUWIk)2U%`XzE>`x0Z*6|fRd zjR5Y3hiIG+^7^nXE=W=*@y|RR$0A=FDr2Ev6{UHCz!3MHmksb7lI~@Tp+klmeL3*P z*jnS@Tc0csCWysd80CPc*sxpjlHS|&;6CXD7Bh8enELgaX+hQETaA7nE^D2s2;ZVR zF9-V(dkgN!uc5m{@!XsW!7(4Xo>8JYth|m!?hUXXf2kUEpFL%=_@E`Or!}gmK+FWp zItL%SvZU077P0TAqN)~WD}B#VP;SPZCeyUgcfrnmQU0yJ+1X^k(D(YZIa6j0Ci8?I z!i>S6G%<4gl$2ySf#-$lS_6{Va#OxGH8g|=cExLa25SvGa2$*mkvE{MDvnLj23}<< zOKkEAGl4>QWN!uyyD9y=kf?_bz%bHk05BY;=@~Q7gJj8%-T0!cK%`cW63_HUhqY_F zZ#!sOa1Xv%|IM3xJL{pBD6A)w$s>>J*=EvU$SvmatyXP39MpNm7OeA2%~f_h0#o-o zb)U(-x8mpH*B=dLGj2=LCP_H)c)8v_PO*Rx3chxfqs)+dgP*F-LEq;oD-8bZ+f-qk zmmw9Lk>8fEgp(GJfdz}B&G|-24e7-XO-lxo4&IaBqJuE`LNV08ZZqhNspo?@mL^9w z7o2QoBK1pRvj4t;%a3?y6`B<6eTOr8sar1@K!`DAE=0}zL|Bh5k8uwa$62&^!n;>i zveMMbhh1Co%dMN7LbV3pJYxnDOgx0R%t)bF1Y8a~&!Tp>K;MIaWiju-TS6j*0IQ%{ zQh0d}s2n;zJAtxunAVwR1!fkUb)A=!mXMductIbD{~7BkEme|w#gz^q-7LPH3Lp

      *ro;Xw-O1gInPH{wN1PfEO=>Txb|XuE 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

      -3A2H8K%eY|1OWoSosO$`J9oL}{c(WA$L3 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%0AI>s>XTF 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

=!-JG{CBI}TB#=0Bh9wh3B_!?U0 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 L`nXg(v(o<$UGf2f literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/AX5E2-3D-balls.png b/common/static/images/capa/vsepr/AX5E2-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..2e1db7a8e3fefd27a105fa07418ec074dede8357 GIT binary patch literal 81700 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

HgO>>aS7 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°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 z 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 qp5iWdrY{&&>b56R!|armAwoXuzr0R3Cj4Gz!1 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 literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/AX6E1-3D-balls.png b/common/static/images/capa/vsepr/AX6E1-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..3734b696e0a874c2c346ece28cad1ed9f0f1f0b0 GIT binary patch literal 65374 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 literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/AX7E0-3D-balls.png b/common/static/images/capa/vsepr/AX7E0-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..37935492aaf781ff1548385998f406eedb0a7e98 GIT binary patch literal 57532 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

0w;pXPX!Lr=A&%UJw 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 F{|nzhai;(P literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/AX8E0-3D-balls.png b/common/static/images/capa/vsepr/AX8E0-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..bbbc9608c3be10983ca99f24253e6c5e6326c821 GIT binary patch literal 72760 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 z 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 M9HNqoZ9H%N2ghCH`Tzg` literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/AX9E0-3D-balls.png b/common/static/images/capa/vsepr/AX9E0-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..75d2449ed6f68621655bc892fe0f0c05acc6ab00 GIT binary patch literal 70859 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�g3=cOErV~KH0kBJp#6!+}dz7W$c1A0Zwwwz1 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 a{Ldcv>CKA^)0W(000K`}KbLh*2~7aN34n?K literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/Bent-3D-balls.png b/common/static/images/capa/vsepr/Bent-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..aec734c57c60d0c3749a811982b134de4522b086 GIT binary patch literal 62092 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

bp$`Kw_K;ldBr05SHVLE{Z5Tw@yH|ch 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 literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/Linear-stick.png b/common/static/images/capa/vsepr/Linear-stick.png new file mode 100644 index 0000000000000000000000000000000000000000..d4310bedc0b70cc9181102b84098491eebe4e737 GIT binary patch literal 63314 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 ab2Hvmn=cgE2`9*7MQCEq_%&0eME@6**H>o% literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/Octahedral-3D-balls.png b/common/static/images/capa/vsepr/Octahedral-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..4b7809d03ca822763d49997af96f55df988aa380 GIT binary patch literal 62223 zcmd3O1y>Z_*Y(gLB`u<)bPU}fodY;Df^*u}p5?bN1PL-+860tx8NtM+kvHh}G4U;1CGL2>4pX#|3}G(PTahe!+H- zhsi@Av-8tB#)9C_xYnAgN{}1$&$pjSQy`E~h`N%zzW?IxC%<-cgEykrl}p;69*Bv_ zurlFbVm!iU3=54hp73)i6q3~TRC!ZS*dbJ?jksF4_r;H13V;3W+wd5ngpT(w;W$6v zHcqIkbq&uMvzlBhnS?-coG*hD=Ln@Z(mhc`ad9XD6|$Vi1S$a}%Q0HPktC@W(t z+OfjasJOb@b3R%7s5k-9Nk?J2_4W0&zWBR6d&rg^A9G!e+t?W4j9npDb0MQA@0=Y+ z5RTo`6PfmbTSEC^PT5cxMd=$~y5Q@hd>V~nxEzyhs}=1IJ`+1c{Px3FaLF#(96U&z zK#D*!BT-K%yiJZsQ9JYb3&u>Mo`cYR)N5?{gUoG&&hxyMXWri4E=z4b*Ao-Enn~BY z4stnrdT-weu)ibFQ?#M;_^M3vSr|r1h;zBqdCh%}?7Twaq}#o5&fbc}aDfu7iz^H; zD+~noKzS6@G<`6^yzOE(haUZow!$AjT19p2psr=dk9^NNIv?PNN1M%kYA~#jX$-!) zz|xU9ru=m*85JGvxe|0bdQ$dvB2#E0qU@a~+1YoRPW<8egSNR(BrE4*e$)%iSIkqw z<6^L*2kCZIVz35hT9skaL8-SXtP){xjoVRH6%_q17{S!)#*UEhQ^3jfsZw28G< zKezexB*cGnC=JhdcRq{}-(x*qZ0w|Lazgz3zbO))EzWh|P6_|{LZL%jVOX_jX)?P* z+;b)~B|P^y-Jpr5f@+|L03M~5=w-pGkp5TjU9ncQ_!{70K<2 zbW37o*XV(o4tpI{i1Q^EN%L@N$&SGqI`+A#*iUWRs$*3O<)1b!7FO>BfBforxmuFr z7GQt0H3~-XVLR`+Jxbr%k=_%%bV*nl=Dv5droJ2;c)V+AIkiPLuUI2ba$J#5HpNLk z6i}+eg+Ir1Xe_vAsbmTwyt*k->h`ANN4ga=x;1l7V5N$l)ZBakog8$9VRi28?A!`k z>Hl=PEQKsJR9t@<#->FaPh=K+zWHN+zdsBMZ&otlD7fDIbaZWY%k7A1A9Lxy6N(K%Ln6W?Pcs`nVbRe= zv+#9ZdR1C<-tXz@dCHYG)IYR&C}&hLGgAyF=(WC`E8N;mDV6tv)0erf{4y62wW)?| zBzfp^r=$8kOGIK*TwR7#f*wh@rDmORu34kwZQs2`5oGBT#r4`qus*~DMo$nA=;BrC zzB;zQ)8`6$2QO={hL=%l7L(KWze;+rANwV9wm7L^=w>i_GdMeYQ+Jd<;cnE|Tb4pL zyUOxp(hN~+C&ii>g0O5lI%o8~Cp)Ne54x4NZSXuG;JQWXhSQ!9ht_>ndd*zA3AfHfUg{kw#Tq$<^?ZH=g$V zl3Ab7KxE_;=b;X5lmnJ!T-^$#S4(V+Y?mHBqe&j(J|swV38Wy(~OYC^YS>|(8G-R$EGFupaoEYx32 z7Hif$+a6o!Py*Y9Q@OB=K^(vE#i;YbK)=F(h?LZwCu8`=uuNZ+CRQ2FL20c4XI03; z4%4nDkEMJMSNB)qvB2X`%9xYmbl20iNZO`2m0#8=d*D#NR8dV-^zI$3o=%nX$w__2no#~Z5eN|in_lNn zXPl2KHHs$%KM!%Tn0%I2$By zHJVn@SqB%t=WBo~>6bB^I16gpu`%rjs>eKHRa@4{?)wNO;_aI+i%1j@#tH)mDZY>j zT-5|Fvw)w)P@JI$ydHo?2eg_hnCwx9l&b zG12P9=5WTGh?6tDD+sHe`m2Y-{LwpY#d&#oI-m)o^kF;Z3*J@&(F#77>;mj$7K@|l zAS#1m=}HAU#MYzahXn+N3x*Cwl18@``e<$ZcIWF9bL_!lp-04Zu+DHpJ1%`R!eGdi zMhb=%&K1O3)oyOu`mxekhPhs2aqvi+$|Qm_VYrBs#^_~u$XTsAzKITg>tl2yqM(t? zqYuBzD-M1XzOJs(=dyTjSkeEoD#3Qs)SgOLhubD2T{KyE#rxsrjlRMCp+l>3N;a`k zas_Iv4{Mn=31v=`)8eL<{~*tZa5uD3vv~6P@aCa;7T&ofaG4@mw$wP zW=qBL!;rVc;Or;cg-C_0%dCI$9Yg)hawo?QDQXIZ;D8Z<{y3SN%cF*%G7({WdQ&Us z5vLE;JCuZxa@>@Jn#l#02=CM2MaxPdH=k zz5eqCg?F_|E(a1YS6Gwt_`BWu<{XF4WXkt}eEN}hi%28UqZvxMTmH_oNReABUg8yh z&`-@wG52MsG>y%5GxKt;i-B^%vTU6^PsUG)k__pkucppDOtnkO4?>A%0uh0k>PdC& z6bAO*M7W`mkl;4!UcxFtu*i*I%Ts9Y-&c93>+f^lhk#M9%(IA!>4#`|^WDy3=ev53 zas$Pk7$ysx47h|$S8x>u7Svsz0o+K1J}fE5AAMarU6K4LdTR9}HIO#8G3kwTO0rZc z*PLeFKYn+nth5c2-j@rwLU0rY_8)1)HUuq!T_Fb-e2bp%(_c8)7GePVM!3(s9|uBo zb97Rsi(d+VA7mc>d6K{NrsnSC##GUfH%aJBL(ty;`_68tFwby6t1I$I$-*xEr@(8@ z6r1u5p)}^-TpJ>D+L81IJ?hG25t|w03S+YS?ML>g!>5iTv>-l>Nc{c#mj?(Px41>u5wNmle2GBatXMmm?O-(Xt_sDj^`#aInh(r zJDZ4>#qRgiZgPDtBi6sg#GD|FEkSiSQn+z=!M^D;v@?F#SyCl6j)3p^MFAVoHh*Smf!kBNf``fNSQoeE@6NhQ%v=pHUkj6u2~KHj zPhr-sz12>P>a!w(Wzsz(EQUMfS zw8IjS3wc?eF7JoU!ih zkSh$-n@F{S^N)`n9j+BEc@I=un5bt=GrgQz)^>z-t=yFEc8DgjrqL!#-ImOifobEz zvvC=}zEefTbzMbtNAe*dazs7GOljblJ$&<%wUEbaxS=YGSuKrIa!_fwl;CI)V)$!T zQ+SK{za0OwJBEsT2tvJWkY4UN6PrgSSaq${3LA1e5qc_l!|S@F?rLYx#Hp+12E*y% zYA|^vlY6KRpghq#D$re+oe2q35rZ1riz55#3&UsTP9?~8WNyN`n!?{Y zI9qhix-lqi-u~}fh#;HmTwatR6iG$U6iiPNYLh*^tv^*;OgB9B`+a|N{(3T%X+kWs z`9-#v(TC$sgq1PQ1hnd=jU9>+K*Ki z5lj(07`nL7bkrA6USfb`B9H-nEg+izx+p31+anE|cxJy?>7p`b4Np{og;0g2lq@1= zNsH!GC{|i8FdGZvecLx)0`K1zSi4TKh9~wbM=n%ZxR=}a^I&G2in(@F+UUJ`!4sKf zPeL7%0-IiBtq_<4u)$`G@wGx>YV(u7CLOK9tV+?oBRxzh3`VI=LxN79zDpiu>wbKc zsgBCs#G@X6rOo{{GZsBMhgFp9t)9d|+iBvY@{xLGftYm@k;eulu$hhrd)y3T&xyYK zmO3vQyveBC8|)vaojQcuXe*#M8^gwh!Nvu^Ld^{t8TNaipjm(D0C}zPs%!wRlFgZU zYS%rY3IEJEb{b4RG&Bcz?g+=a#oe%Ouj5CBRtD0=M>=0 z7E!m_dN9#ml-_7Q^Y^E2K64T2>mUeSLy(Z8qn6me{qWC=h7!d?i73dgQl%;=y z4Hbt9)J3Z{NvY1?k5rlzNl*#G7NdpVH|K0wq%q~*RYZZn_TO&$=gqxMC9yllk@)KQ z9s4b-W?DX+LOISr&;kOR*-{A@=ro}Hhw2B#irF%|x z?m@?7&p9ky03)1MU+gS8H`vi)_L-5ejl0JfA$>J$aqZRYjz=8tgof@CFBtJx5z9yN zWO2Ciy6H0y_LUAPutNRwQ;Nm;@z|N_Y80|91ZoOKax}{q-6mx>kDr#5StmrSuZ++b@<&$LB@6PI%xB_8Y3djcx$3o;$14BENe6ceAD1pB z_)8Pm?FgRo4^mdZ(_^GZN+EG0CqaOHpgUT zfWU}KB&Q|pm+<7s&Ry7JHXU8v$!ohZ)ALKu-aMs=udUB1VRC?s$$dd`@ikNL!}l2O zOGf8Cf^iJ1{Zd$eK_G{Swko%vmFLoSI zqF}9WJ4S+mc&tUzbe~>X1mv9tj~`K+q~lBpThT@d9;k{`{;I$X(cjTkuH71S*U}Ih z6dbkZ9BL2Nq(b=0r$cJf1WvkKRzTG$goDNrlzbm|1*dn8dGofHwh{LOS6-J5H}Yv- zl?@a<_DOdLF#V;O{R=yJXUJDGp!l=9O7HI{s7)>JWbTduA7c3G{Nfb-}u$C3oNr)kgkMktX@=OCe;WQGVN zpF3li)ODfWuGt+ldM8YD5G32nV~ZOR>G6*XK1=Vc>pl!L@1?7!Qw||yJP!(&K961$SjNMlIiydmQzx2_snZGltFHRl}d7_c-o%eD?UFrPj z9U5GbPn9FHa26P{Y!CIXf}yPGVCSfLhfg2C%3?5d3)=KKwLEjVM~kd+FgwO+Q8hVk zZR&H0GnozO1HfJvaud8?l%h=sfB@!jJ&}p|7Sp)fXswC;SGNM2qtw#jkN1)o4NB&v zBeLYvMf&D@BNBN5uQcsq5dh})0zEhN+>q;Y5A##iX4lRs&s>@TF1?YD*wYVoHwH`v z;OQ*9K8nA$AI!00;v||(KWxf%G)Q}~DIKK^dI zm2MZ$|G3$u%qe?2vqXI|`?tp7_=7CVO}oiS**4-a_3S)@Z3DL9N=Ak{{tAudNGn~dt^UYU=$mThZG{9}VcFNZ9(sG7M zavrFTd>zp^9iaG|l9rRz7)WO_gk1)IYi1sU%JYcx6Y9HOIXgRZv2X+JMgMEB<(tL|K zr1xBrteOV)RGh1@{8vrZ4FkynzH&CZ`vgou$uOa>z7*%#vtDX&PAP-?_J#%wh?V3nS|rKp6<~rsRL45x2l+Ph z7f1Cm{bPd&!C9vTlZ$xu>Q%JXlsAS8Tg3c#X~bxi-lIfy*}=xt+X4Y1oI$KLH}Dga z7;|!38%4;nD(9y$DA7r*#ieyKe_>Q#B|5D~ zo>e=1KO|ko$kp(4vXQkZYpYX>8~zs4#)ZDCl-6d2HA2@lW=1^wKPCl>R5~>NuGmGq z%DPxwoee%y>A^}HZ;+UQ0U*q#;HveQf%=_;7_tSmjhUDX|KCPer9}m-u{%*kY ze0o$dbH6C{en0JFtWd3D(Mq*Ir$@C2OvIu7!QkCp7E(X?bS9f!!oK-Z0w#)V9uZ;m z25lO*`wIZJMFp@>u5oqFv{9uHXsExeb$V9Q-OVz>Rdu03HY#>CLTnAfgFz&tw{6sw zA0!_eS~&<;EPSPryPp18%B9hzQI2 z#WZ4gbI{;L@}!RKWZE;5UC1_2XP zcv%X@#zF$%Dc$X06msP|4!^(r2ltf@l-ATYYV6OPRbD?n2u~t-;wi4p&qp zMh}dzeT~@tVKMyk!NI{LyzK9ob=_GWyv$px&N#vq30mvPFJp$iZLs<&?doV>W+<_# zRDH&RQl&V6hTaU*eoQA59HgDH1>`y=x;X;>O>PT06!2545bQ;b2@?2Z$c%{k5Z=k~U%CNpKbwS+Mv+&W9gW z848Gsiu&)?^#`Yt9WDb3d%k(;wz4L^dR!jPbci>xyg?KsR`WVKK-<7$NzCf7`D6EbPIj;fVg6X6eWyQh_=vE&Sch) zAb98$10!ThRu^Qki||9$bY5S)T9B=wqf?~=k$U0>Cg83&E&iUK-l&4wEpVlO{k2>I zYQK{Kb+Y%uiuT?$OglGJQqo}NxBar(Hy#nroEMS54+B13XS6K&J}zGZJIF!;;L5lLhh3RK0^~J)N~b{S5uHRgb}haUlW>r7^-O_%#_ur?6|{In%Bh{ zBfgZQ96_N(4=#+O*6nXfi*s|)G@WO?;_GojP(i_P0DVYwE#l znq2RG`t<3?&!6%Z77XPx&fGr+j-<7;v@E^6$n&;~@AWD4d&WS1H3Z3myUGem^odNB zgRXlD_yNzK3%D;!qeX`}0c`nDu+Qk>SMOMRdpFv3Y#M}~>@HwU34{OCPA&1QlY^9p zD`OZ+ge6b*_N(LDCp9+K)|k~h_QgQ2rM0;QK{x#aP0t9I+=;78Z#DRPk1i_AxhVz& zm#>5|#!c)xkFx@0zsB7vQXP!>D306)WVafqJBZ`?JZd}SB+`_WW1RNv?Unn62Grlu z(a}l##|MJdccdpkFOw%Wi@JOX=WwGnA^7LPe=B!ScnbV;@q{dB=Qk9$3u|>`L*K;5$gR!_FLAnn2E={GMkXTB@V*NfcAP-- z8@S{yB2S+4o_(B*BImuf-)%c8%cmWub!%%@V7O2s&}HypO8&^nyQlQb|CSfCt?1iY z^mx$kXH{Hkov5Y#xHN7fKGq1HQ)&0Tbl%6>rtSWJ2!J3Ikys1~z)0kf>8C!jiZrxz zq>ZxDe>Hd-6f$sn!83lSL zw`db^doQxa193OK?liluyI*g)d;IC8A;lE;>4_q)5rQ4@^gz?^MhUzovwqd|9OFy2 zUdl7;!ZG}wiI-~AC(`c4`zY?9m6cs|Vc||0+k4e({U>QVKjhjdb@H*06LhrW1moqni0!WH&}Mrpcb$*n`013JV-a>aZOUTF@A4x+ZAv>GtW# zNynG^O5zfylS5y1gKgHb&u#`H4`g@6wTJWXoD0Tw?DIb}_cJN{`T?9+B8h~f)rpA- z{vK%ipwCjY#c{cj2pc;)khO!4a#lu8oTf6_{@stlOik>IUjE?Q>2~i-tE^pITsn5z zXih+HJ@u9G>2}ANC3l{_&?ox6mYAcRlB28n^nH$4l0DKlR=m)DTCL95>_^*gZsx;p zo8n_t0IilY;=7d@R-^zVB5F3*`=56CXq^!qbJrOssunjy>_raOrt+_aaq;l}0R8^1 z#r0u^QCl_Y5J+I4Ovv99*G{TXud8!gxa0z?MJiQEr6>@WowD)6A?bEa7wrwMk6Fiy zL1&~u#BH)O>2wjMyZMP&=9Q6=NpZ+Suz}N6y&zjmhlhb)T)OCcvZ#ge0@JF3ni^6Y z8=K*dKk@GEO+cXC0}1Yn!aK`n^~tZuLnkdbN&GZ3b9s6@$|>#=weVDoH}8p=q#t_? z*P~@kBmX?VsVs*)6H>rdberK;WcLz_lsBI|*ZU-kDgTpx zedBZgyX9Xpe!DR93*1-74%kdHvR>&3O1CrFKK=Xm(x%Q>y2Y4>?wjg+W=(^L+8AhW zpeB{o;oE%a2u^n+s(5aSQs{N~;NV~lg~HfT(9H_abty{o0?OG&S+M`Dl>mwI>Ufe; zDuDiT6H`-Y{fnB{^sgVdCpEFX-wPDpL6FUlhv349A*HlvC<5m#tHIzL3reA(nLYos z$OnJjKw;qH&hf<^03h=@ip6pRewDpr8|`60H{S*cxie19;0M`BJOha>T9L6!K?J|&{HF}+xF>`l&A6? z2~k$<9$sFDa(8TQ$fMTM?uxk)`9LSu{vjH3g0* zNPRG7D)|KVm3Y><={24_6tda?21;)q_mg9>hYa1MJ%-+~jdroFg4h%(&h@(7H5Sm= z@kr?XJ%POERi?ja%$3$PTFd3biTl-dFNDr2CMNl`;WBlpSvTeHWB3=hX)2J>Zb*7O zBtl8)qUxT_@+GREi91K{u+{>oLkg6?{XpSc;L&I)(9&wamtJfyvyxEdZi_yrrsqux zTwVWb9pD*oE?(}a(K*C5(Y?`D2v636J++EkK;K}_Vm_N)EKpbU%`f?_$UL1>FZ>sc z?QhplW(^&xl2>fML{O+0mr`jefx}(@7#kj~FhYe+Ci} z9?*9UD`sMW9l->Ie;}3H#iR{R3Xf*CX-Nhr@FXYC6#FkHPunj)D~A`U8$@YM0rbi{ z=}lismGqd0TAq^^n0kUC<3fFWG5{oX$4TCSpI3W zt)ecbNujK^w@WJdTI;nQ8!ZO(I+^*Dr}0_S+aGYbtsUVMqGTJ&q?Zgvpy=z zhsSG&&6>ih*|mRUI?Ae&H6l=usArQu_)n|@3V#3iUzB-}z?vq3{3oFMM_@lnncrPn8Vs=v5tA4vNJ~7y61QcVjbc@F)zdVAhUH?o=*x z6sd}!s}>tNCc}7%T%qd55&c39gD&bmH&F$N!nd8L6cu=PKDE_dEA&Y)~UbCoy>l`QP{Ft#PR!gVIuVR*y1?DJ;+KaU8ipcDslz!CR0 z_4|&+&4tT;OrKRm>sy{XHkus8R}hksFMx);^!j^p!uO1RTjy3}criT92|J~PXVboY z!^RMnf&7??DyP<(e5tP`_K3uJhTp&I%4HuJ2QEN?{O-&1 zBhUR$r>4N$@F~iQhdA6)Bvg>;%i^c!r;Co6pZ*r}@1YK&<#uu9Ck}!bAbG{9_Yb6B z>uUH3^fe>$TDHM(t2%eg_pRNZBay)07`Or~4rf1gLL`yV)dEcD~KU_%|n4E=h zF&W5DG>-@By74r+0h{jyby)f*;^WY^KHNbdW^Q*J;ayDBdd=i6C9vz zfP@Oz$5{N4{vw5ssjFc^8zqd7i7gNPiMq}M(PdX^`A1`_Cmm z&Vo`b_E{dv-{UH6Sm9YluFLJ`9Z0v2uJ&$J@gyU6 zx-VNoP-2i!S0wOU%r`jbP<44078Y)w93OxB292X3Q@|ze;TR+>FOQ?ze>O?flc=jP z`tsp(neiR4L2tGZH3vcY0eND-QP&9oIo+M}aete-EFvn}e05wC5(E_x2>V}c2ngn^ zJ-uR2=zRSxe@mKL`=6D+`%()nun48)2nFH!CqV(g>JUSGSCq$te%m!t;WIUsVe+Ix zy_%lvYMj#I&dF_m|)#g?#pOs}t;XF_JZ4xjO%ebqp1gYQizSrm5Hh@B$u!vCQn^%Hdo)&h!>W7rpWM2f7 zSdPJ1ZkfbCuYLAi>}H+Bmc9FO8>@eIIoM�QnwTNG1RncncuF2$e!lg~G3A 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

re13q5P+J|LYJ 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 bUEBy31Q*vJ-%f%idm?O>m2z%+lAEN literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/Octahedral-stick.png b/common/static/images/capa/vsepr/Octahedral-stick.png new file mode 100644 index 0000000000000000000000000000000000000000..1053d63b5b27e2f0b552826c947cd905fe0fe34f GIT binary patch literal 137098 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

    sD(i`J7_-1!**)yiV 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%0D#6EzkE3k( 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 literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/Pentagonal-planar-3D-balls.png b/common/static/images/capa/vsepr/Pentagonal-planar-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..1c47a26816a2d8e1a0fe43ddb1778aa831a73102 GIT binary patch literal 72626 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%0AR&>Z0F5w~|kIoX)h8oR-({J!Mw?2dHBm1qc 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�uPP?97U1wOg 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 a!Cu$i#xB6C-(Cj%2vSqlQmRz24*Nd@k`EpL literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/Seesaw-3D-balls.png b/common/static/images/capa/vsepr/Seesaw-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..a6598fde77c4e1c7eea9b4f7b739ae1bebca72ef GIT binary patch literal 66832 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


    -YZM0G{Yc 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�x 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

    Lm8i5nv7bnkt0drCFj9F|m|!f+Z-6vu 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 literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/Square-planar-3D-balls.png b/common/static/images/capa/vsepr/Square-planar-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..1647eab389e083b9df849d8b54e78266c4411d3d GIT binary patch literal 71351 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

    OEd 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%0As;!J?Z1^a)U4xlyGV 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%0DFg54%P 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

    MM%4!b9MnwS?ND`O;>Ay^C{craA(;E7wHhIY8 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

    pcR{p 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 literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/Tetrahedral-stick.png b/common/static/images/capa/vsepr/Tetrahedral-stick.png new file mode 100644 index 0000000000000000000000000000000000000000..6266bb8238d83167635244c0462801f701c788a0 GIT binary patch literal 94669 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%0D7>wxe1s36zC6^#*7vVP~o&f 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 literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/Trigonal-3D-balls.png b/common/static/images/capa/vsepr/Trigonal-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..65cca2f10f9f5b5fcfde9b6bde22aa3cc7e4aef5 GIT binary patch literal 56071 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 literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/Trigonal-bipyramidal-3D-balls.png b/common/static/images/capa/vsepr/Trigonal-bipyramidal-3D-balls.png new file mode 100644 index 0000000000000000000000000000000000000000..1caed952ed2973a6c18dea862e5a30fd3b940482 GIT binary patch literal 47683 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%0D0yrL?WK>R-Wnj=_Pr&R1_N7> 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 literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/Trigonal-bipyramidal-stick.png b/common/static/images/capa/vsepr/Trigonal-bipyramidal-stick.png new file mode 100644 index 0000000000000000000000000000000000000000..0f99d4fbc4cf9f5ce4798eeda66fc680fd4dd748 GIT binary patch literal 118416 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 SWH<*_3e8kDzN)dY+5Z4Z`%SU{ literal 0 HcmV?d00001 diff --git a/common/static/images/capa/vsepr/Trigonal-planar-stick.png b/common/static/images/capa/vsepr/Trigonal-planar-stick.png new file mode 100644 index 0000000000000000000000000000000000000000..b73d8a90de56bec1c21bb24383378ccb34b61a76 GIT binary patch literal 89521 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 literal 0 HcmV?d00001 From 98c3d861ad2eac3bb756e8eb3577b416adde3272 Mon Sep 17 00:00:00 2001 From: kimth Date: Sat, 27 Oct 2012 18:19:56 +0000 Subject: [PATCH 044/308] Fix reference to iidiv --- common/lib/xmodule/xmodule/js/src/capa/imageinput.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/lib/xmodule/xmodule/js/src/capa/imageinput.js b/common/lib/xmodule/xmodule/js/src/capa/imageinput.js index 5b4978ee11..173cb50f54 100644 --- a/common/lib/xmodule/xmodule/js/src/capa/imageinput.js +++ b/common/lib/xmodule/xmodule/js/src/capa/imageinput.js @@ -11,8 +11,8 @@ function image_input_click(id,event){ iidiv = document.getElementById("imageinput_"+id); - pos_x = event.offsetX?(event.offsetX):event.pageX-document.iidiv.offsetLeft; - pos_y = event.offsetY?(event.offsetY):event.pageY-document.iidiv.offsetTop; + pos_x = event.offsetX?(event.offsetX):event.pageX-iidiv.offsetLeft; + pos_y = event.offsetY?(event.offsetY):event.pageY-iidiv.offsetTop; result = "[" + pos_x + "," + pos_y + "]"; cx = (pos_x-15) +"px"; cy = (pos_y-15) +"px" ; From 6d9fe76dbb637cfca407bde24abe78329459b720 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Tue, 23 Oct 2012 17:35:19 -0400 Subject: [PATCH 045/308] wip. adding tests, basic refactor --- common/lib/capa/capa/inputtypes.py | 70 ++++++++----------- common/lib/capa/capa/tests/test_inputtypes.py | 60 +++++++++++----- 2 files changed, 71 insertions(+), 59 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 40fe24434e..55115e66d8 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -195,48 +195,37 @@ class OptionInput(InputTypeBase): template = "optioninput.html" tags = ['optioninput'] + def __init__(self, system, xml, state): + super(OptionInput, self).__init__(system, xml, state) + + # Extract the options... + options = self.xml.get('options') + if not options: + raise Exception( + "[courseware.capa.inputtypes.optioninput] Missing options specification in " + + etree.tostring(self.xml)) + + # parse the set of possible options + oset = shlex.shlex(options[1:-1]) + oset.quotes = "'" + oset.whitespace = "," + oset = [x[1:-1] for x in list(oset)] + + # make ordered list with (key, value) same + self.osetdict = [(oset[x], oset[x]) for x in range(len(oset))] + # TODO: allow ordering to be randomized + def _get_render_context(self): - return _optioninput(self.xml, self.value, self.status, self.system.render_template, self.msg) - -def optioninput(element, value, status, render_template, msg=''): - context = _optioninput(element, value, status, render_template, msg) - html = render_template("optioninput.html", context) - return etree.XML(html) - -def _optioninput(element, value, status, render_template, msg=''): - """ - Select option input type. - - Example: - - The location of the sky - """ - eid = element.get('id') - options = element.get('options') - if not options: - raise Exception( - "[courseware.capa.inputtypes.optioninput] Missing options specification in " - + etree.tostring(element)) - - # parse the set of possible options - oset = shlex.shlex(options[1:-1]) - oset.quotes = "'" - oset.whitespace = "," - oset = [x[1:-1] for x in list(oset)] - - # make ordered list with (key, value) same - osetdict = [(oset[x], oset[x]) for x in range(len(oset))] - # TODO: allow ordering to be randomized - - context = {'id': eid, - 'value': value, - 'state': status, - 'msg': msg, - 'options': osetdict, - 'inline': element.get('inline',''), - } - return context + context = { + 'id': self.id, + 'value': self.value, + 'state': self.status, + 'msg': self.msg, + 'options': self.osetdict, + 'inline': self.xml.get('inline',''), + } + return context register_input_class(OptionInput) @@ -245,7 +234,6 @@ register_input_class(OptionInput) # TODO: consolidate choicegroup, radiogroup, checkboxgroup after discussion of # desired semantics. -# @register_render_function def choicegroup(element, value, status, render_template, msg=''): ''' Radio button inputs: multiple choice or true/false diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py index 9ef642d468..79cd9b6c98 100644 --- a/common/lib/capa/capa/tests/test_inputtypes.py +++ b/common/lib/capa/capa/tests/test_inputtypes.py @@ -27,24 +27,6 @@ class OptionInputTest(unittest.TestCase): ''' Make sure option inputs work ''' - def test_rendering_new(self): - xml = """""" - element = etree.fromstring(xml) - - value = 'Down' - status = 'answered' - context = inputtypes._optioninput(element, value, status, test_system.render_template) - print 'context: ', context - - expected = {'value': 'Down', - 'options': [('Up', 'Up'), ('Down', 'Down')], - 'state': 'answered', - 'msg': '', - 'inline': '', - 'id': 'sky_input'} - - self.assertEqual(context, expected) - def test_rendering(self): xml_str = """""" @@ -66,3 +48,45 @@ class OptionInputTest(unittest.TestCase): self.assertEqual(context, expected) +class ChoiceGroupTest(unittest.TestCase): + ''' + Test choice groups. + ''' + def test_mult_choice(self): + xml_str = """ + + + This is foil One. + + + This is foil Two. + + + This is foil Three. + + + This is foil Four. + + + This is foil Five. + + + """ + element = etree.fromstring(xml_str) + + state = {'value': 'Down', + 'id': 'sky_input', + 'status': 'answered'} + option_input = inputtypes.OptionInput(system, element, state) + + context = option_input._get_render_context() + + expected = {'value': 'Down', + 'options': [('Up', 'Up'), ('Down', 'Down')], + 'state': 'answered', + 'msg': '', + 'inline': '', + 'id': 'sky_input'} + + self.assertEqual(context, expected) + From 009d6c2e019f9f8344bcb0673d5f3bbd15d98683 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Wed, 24 Oct 2012 14:23:02 -0400 Subject: [PATCH 046/308] ChoiceGroup refactor - Make it into a class. - Combine ChoiceGroup, RadioGroup, CheckboxGroup implementation. (All three tags still work--this just unifies the code) - add tests --- common/lib/capa/capa/inputtypes.py | 151 ++++++++---------- common/lib/capa/capa/tests/test_inputtypes.py | 93 ++++++++--- 2 files changed, 134 insertions(+), 110 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 55115e66d8..acff3abf6a 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -97,8 +97,8 @@ class InputTypeBase(object): have a render_template function. - xml : Element tree of this Input element - state : a dictionary with optional keys: - * 'value' - * 'id' + * 'value' -- the current value of this input (what the student entered last time) + * 'id' -- the id of this input, typically "{problem-location}_{response-num}_{input-num}" * 'status' (answered, unanswered, unsubmitted) * 'feedback' (dictionary containing keys for hints, errors, or other feedback from previous attempt. Specifically 'message', 'hint', 'hintmode'. If 'hintmode' @@ -234,49 +234,70 @@ register_input_class(OptionInput) # TODO: consolidate choicegroup, radiogroup, checkboxgroup after discussion of # desired semantics. -def choicegroup(element, value, status, render_template, msg=''): - ''' - Radio button inputs: multiple choice or true/false + +class ChoiceGroup(InputTypeBase): + """ + Radio button or checkbox inputs: multiple choice or true/false TODO: allow order of choices to be randomized, following lon-capa spec. Use "location" attribute, ie random, top, bottom. - ''' - eid = element.get('id') - if element.get('type') == "MultipleChoice": - element_type = "radio" - elif element.get('type') == "TrueFalse": - element_type = "checkbox" - else: - element_type = "radio" - choices = [] - for choice in element: - if not choice.tag == 'choice': - raise Exception("[courseware.capa.inputtypes.choicegroup] " - "Error: only tags should be immediate children " - "of a , found %s instead" % choice.tag) - ctext = "" - # TODO: what if choice[0] has math tags in it? - ctext += ''.join([etree.tostring(x) for x in choice]) - if choice.text is not None: - # TODO: fix order? - ctext += choice.text - choices.append((choice.get("name"), ctext)) - context = {'id': eid, - 'value': value, - 'state': status, - 'input_type': element_type, - 'choices': choices, - 'name_array_suffix': ''} - html = render_template("choicegroup.html", context) - return etree.XML(html) -_reg(choicegroup) + Example: + + + + This is foil One. + + + This is foil Two. + + + This is foil Three. + + + """ + template = "choicegroup.html" + tags = ['choicegroup', 'radiogroup', 'checkboxgroup'] + + def __init__(self, system, xml, state): + super(ChoiceGroup, self).__init__(system, xml, state) + + if self.tag == 'choicegroup': + self.suffix = '' + if self.xml.get('type') == "MultipleChoice": + self.element_type = "radio" + elif self.xml.get('type') == "TrueFalse": + # Huh? Why TrueFalse->checkbox? Each input can be true / false separately? + self.element_type = "checkbox" + else: + self.element_type = "radio" + + elif self.tag == 'radiogroup': + self.element_type = "radio" + self.suffix = '[]' + elif self.tag == 'checkboxgroup': + self.element_type = "checkbox" + self.suffix = '[]' + else: + raise Exception("ChoiceGroup: unexpected tag {0}".format(self.tag)) + + self.choices = extract_choices(self.xml) + + def _get_render_context(self): + context = {'id': self.id, + 'value': self.value, + 'state': self.status, + 'input_type': self.element_type, + 'choices': self.choices, + 'name_array_suffix': self.suffix} + return context -#----------------------------------------------------------------------------- def extract_choices(element): ''' - Extracts choices for a few input types, such as radiogroup and - checkboxgroup. + Extracts choices for a few input types, such as ChoiceGroup, RadioGroup and + CheckboxGroup. + + returns list of (choice_name, choice_text) tuples TODO: allow order of choices to be randomized, following lon-capa spec. Use "location" attribute, ie random, top, bottom. @@ -285,63 +306,25 @@ def extract_choices(element): choices = [] for choice in element: - if not choice.tag == 'choice': + if choice.tag != 'choice': raise Exception("[courseware.capa.inputtypes.extract_choices] \ Expected a tag; got %s instead" % choice.tag) choice_text = ''.join([etree.tostring(x) for x in choice]) + if choice.text is not None: + # TODO: fix order? + choice_text += choice.text choices.append((choice.get("name"), choice_text)) return choices + + +register_input_class(ChoiceGroup) -# TODO: consolidate choicegroup, radiogroup, checkboxgroup after discussion of -# desired semantics. -def radiogroup(element, value, status, render_template, msg=''): - ''' - Radio button inputs: (multiple choice) - ''' +#----------------------------------------------------------------------------- - eid = element.get('id') - - choices = extract_choices(element) - - context = {'id': eid, - 'value': value, - 'state': status, - 'input_type': 'radio', - 'choices': choices, - 'name_array_suffix': '[]'} - - html = render_template("choicegroup.html", context) - return etree.XML(html) - - -_reg(radiogroup) - -# TODO: consolidate choicegroup, radiogroup, checkboxgroup after discussion of -# desired semantics. -def checkboxgroup(element, value, status, render_template, msg=''): - ''' - Checkbox inputs: (select one or more choices) - ''' - - eid = element.get('id') - - choices = extract_choices(element) - - context = {'id': eid, - 'value': value, - 'state': status, - 'input_type': 'checkbox', - 'choices': choices, - 'name_array_suffix': '[]'} - - html = render_template("choicegroup.html", context) - return etree.XML(html) - -_reg(checkboxgroup) def javascriptinput(element, value, status, render_template, msg='null'): ''' diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py index 79cd9b6c98..833cc396c2 100644 --- a/common/lib/capa/capa/tests/test_inputtypes.py +++ b/common/lib/capa/capa/tests/test_inputtypes.py @@ -35,7 +35,7 @@ class OptionInputTest(unittest.TestCase): state = {'value': 'Down', 'id': 'sky_input', 'status': 'answered'} - option_input = inputtypes.OptionInput(system, element, state) + option_input = inputtypes.get_class_for_tag('optioninput')(system, element, state) context = option_input._get_render_context() @@ -53,40 +53,81 @@ class ChoiceGroupTest(unittest.TestCase): Test choice groups. ''' def test_mult_choice(self): - xml_str = """ - - - This is foil One. - - - This is foil Two. - - - This is foil Three. - - - This is foil Four. - - - This is foil Five. - + xml_template = """ + + This is foil One. + This is foil Two. + This is foil Three. """ + + def check_type(type_str, expected_input_type): + print "checking for type_str='{0}'".format(type_str) + xml_str = xml_template.format(type_str) + + element = etree.fromstring(xml_str) + + state = {'value': 'foil3', + 'id': 'sky_input', + 'status': 'answered'} + + option_input = inputtypes.get_class_for_tag('choicegroup')(system, element, state) + + context = option_input._get_render_context() + + expected = {'id': 'sky_input', + 'value': 'foil3', + 'state': 'answered', + 'input_type': expected_input_type, + 'choices': [('foil1', 'This is foil One.'), + ('foil2', 'This is foil Two.'), + ('foil3', 'This is foil Three.'),], + 'name_array_suffix': '', # what is this for?? + } + + self.assertEqual(context, expected) + + check_type('', 'radio') + check_type('type=""', 'radio') + check_type('type="MultipleChoice"', 'radio') + check_type('type="TrueFalse"', 'checkbox') + # fallback. + check_type('type="StrangeUnknown"', 'radio') + + + def check_group(self, tag, expected_input_type, expected_suffix): + xml_str = """ + <{tag}> + This is foil One. + This is foil Two. + This is foil Three. + + """.format(tag=tag) + element = etree.fromstring(xml_str) - state = {'value': 'Down', + state = {'value': 'foil3', 'id': 'sky_input', 'status': 'answered'} - option_input = inputtypes.OptionInput(system, element, state) - context = option_input._get_render_context() + the_input = inputtypes.get_class_for_tag(tag)(system, element, state) - expected = {'value': 'Down', - 'options': [('Up', 'Up'), ('Down', 'Down')], + context = the_input._get_render_context() + + expected = {'id': 'sky_input', + 'value': 'foil3', 'state': 'answered', - 'msg': '', - 'inline': '', - 'id': 'sky_input'} + 'input_type': expected_input_type, + 'choices': [('foil1', 'This is foil One.'), + ('foil2', 'This is foil Two.'), + ('foil3', 'This is foil Three.'),], + 'name_array_suffix': expected_suffix, # what is this for?? + } self.assertEqual(context, expected) + def test_radiogroup(self): + self.check_group('radiogroup', 'radio', '[]') + + def test_checkboxgroup(self): + self.check_group('checkboxgroup', 'checkbox', '[]') From d0a9b231a49a101dbf6b209979590dbe5023758b Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Wed, 24 Oct 2012 15:27:45 -0400 Subject: [PATCH 047/308] Turn javascriptinput into a class, add tests --- common/lib/capa/capa/inputtypes.py | 55 +++++++++++-------- common/lib/capa/capa/tests/test_inputtypes.py | 40 +++++++++++++- 2 files changed, 70 insertions(+), 25 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index acff3abf6a..43259b3f0b 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -318,7 +318,7 @@ def extract_choices(element): choices.append((choice.get("name"), choice_text)) return choices - + register_input_class(ChoiceGroup) @@ -326,37 +326,44 @@ register_input_class(ChoiceGroup) #----------------------------------------------------------------------------- -def javascriptinput(element, value, status, render_template, msg='null'): - ''' +class JavascriptInput(InputTypeBase): + """ Hidden field for javascript to communicate via; also loads the required scripts for rendering the problem and passes data to the problem. - ''' - eid = element.get('id') - params = element.get('params') - problem_state = element.get('problem_state') - display_class = element.get('display_class') - display_file = element.get('display_file') + """ - # Need to provide a value that JSON can parse if there is no - # student-supplied value yet. - if value == "": - value = 'null' + template = "javascriptinput.html" + tags = ['javascriptinput'] - escapedict = {'"': '"'} - value = saxutils.escape(value, escapedict) - msg = saxutils.escape(msg, escapedict) - context = {'id': eid, - 'params': params, - 'display_file': display_file, - 'display_class': display_class, - 'problem_state': problem_state, + def __init__(self, system, xml, state): + super(JavascriptInput, self).__init__(system, xml, state) + # Need to provide a value that JSON can parse if there is no + # student-supplied value yet. + if self.value == "": + self.value = 'null' + + self.params = self.xml.get('params') + self.problem_state = self.xml.get('problem_state') + self.display_class = self.xml.get('display_class') + self.display_file = self.xml.get('display_file') + + + def _get_render_context(self): + escapedict = {'"': '"'} + value = saxutils.escape(self.value, escapedict) + msg = saxutils.escape(self.msg, escapedict) + + context = {'id': self.id, + 'params': self.params, + 'display_file': self.display_file, + 'display_class': self.display_class, + 'problem_state': self.problem_state, 'value': value, 'evaluation': msg, } - html = render_template("javascriptinput.html", context) - return etree.XML(html) + return context -_reg(javascriptinput) +register_input_class(JavascriptInput) def textline(element, value, status, render_template, msg=""): diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py index 833cc396c2..fa3f7d0595 100644 --- a/common/lib/capa/capa/tests/test_inputtypes.py +++ b/common/lib/capa/capa/tests/test_inputtypes.py @@ -8,6 +8,7 @@ from mock import Mock from nose.plugins.skip import SkipTest import os import unittest +import xml.sax.saxutils as saxutils from . import test_system from capa import inputtypes @@ -128,6 +129,43 @@ class ChoiceGroupTest(unittest.TestCase): def test_radiogroup(self): self.check_group('radiogroup', 'radio', '[]') - + def test_checkboxgroup(self): self.check_group('checkboxgroup', 'checkbox', '[]') + + + +class JavascriptInputTest(unittest.TestCase): + ''' + The javascript input is a pretty straightforward pass-thru, but test it anyway + ''' + + def test_rendering(self): + params = "(1,2,3)" + + problem_state = "abc12',12&hi" + display_class = "a_class" + display_file = "my_files/hi.js" + + xml_str = """""".format( + params=params, + ps=saxutils.quoteattr(problem_state)[1:-1], # don't want the outer quotes + dc=display_class, df=display_file) + + element = etree.fromstring(xml_str) + + state = {'value': '3',} + the_input = inputtypes.get_class_for_tag('javascriptinput')(system, element, state) + + context = the_input._get_render_context() + + expected = {'id': 'prob_1_2', + 'params': params, + 'display_file': display_file, + 'display_class': display_class, + 'problem_state': problem_state, + 'value': '3', + 'evaluation': '',} + + self.assertEqual(context, expected) From 0c6f6f873b470eec42d13b9fad0e56545c6b197c Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Wed, 24 Oct 2012 17:14:57 -0400 Subject: [PATCH 048/308] add a template for a new input type class --- common/lib/capa/capa/inputtypes.py | 32 ++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 43259b3f0b..ed7125859b 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -1,3 +1,29 @@ + + +# template: +''' +class ClassName(InputTypeBase): + """ + """ + + template = "tagname.html" + tags = ['tagname'] + + def __init__(self, system, xml, state): + super(ClassName, self).__init__(system, xml, state) + + + def _get_render_context(self): + + context = {'id': self.id, + + } + return context + +register_input_class(ClassName) +''' + + # # File: courseware/capa/inputtypes.py # @@ -366,6 +392,8 @@ class JavascriptInput(InputTypeBase): register_input_class(JavascriptInput) +#----------------------------------------------------------------------------- + def textline(element, value, status, render_template, msg=""): ''' Simple text line input, with optional size specification. @@ -677,8 +705,8 @@ def imageinput(element, value, status, render_template, msg=''): 'src': src, 'gx': gx, 'gy': gy, - 'state': status, # to change - 'msg': msg, # to change + 'state': status, # to change + 'msg': msg, # to change } html = render_template("imageinput.html", context) return etree.XML(html) From c2682273a81a1713617460ad9f480190e248ced2 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Wed, 24 Oct 2012 18:55:13 -0400 Subject: [PATCH 049/308] Convert textline input into class. Unify math and non-math code and templates. Add tests. --- common/lib/capa/capa/inputtypes.py | 130 +++++++----------- common/lib/capa/capa/templates/textinput.html | 43 ++++-- .../capa/templates/textinput_dynamath.html | 50 ------- common/lib/capa/capa/tests/test_inputtypes.py | 57 ++++++++ 4 files changed, 137 insertions(+), 143 deletions(-) delete mode 100644 common/lib/capa/capa/templates/textinput_dynamath.html diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index ed7125859b..82b5e04843 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -16,7 +16,7 @@ class ClassName(InputTypeBase): def _get_render_context(self): context = {'id': self.id, - + } return context @@ -394,92 +394,58 @@ register_input_class(JavascriptInput) #----------------------------------------------------------------------------- -def textline(element, value, status, render_template, msg=""): - ''' - Simple text line input, with optional size specification. - ''' - # TODO: 'dojs' flag is temporary, for backwards compatibility with 8.02x - if element.get('math') or element.get('dojs'): - return textline_dynamath(element, value, status, render_template, msg) - eid = element.get('id') - if eid is None: - msg = 'textline has no id: it probably appears outside of a known response type' - msg += "\nSee problem XML source line %s" % getattr(element, 'sourceline', '') - raise Exception(msg) +class TextLine(InputTypeBase): + """ - count = int(eid.split('_')[-2]) - 1 # HACK - size = element.get('size') - # if specified, then textline is hidden and id is stored in div of name given by hidden - hidden = element.get('hidden', '') + """ - # Escape answers with quotes, so they don't crash the system! - escapedict = {'"': '"'} - value = saxutils.escape(value, escapedict) + template = "textinput.html" + tags = ['textline'] - context = {'id': eid, - 'value': value, - 'state': status, - 'count': count, - 'size': size, - 'msg': msg, - 'hidden': hidden, - 'inline': element.get('inline',''), + def __init__(self, system, xml, state): + super(TextLine, self).__init__(system, xml, state) + self.size = self.xml.get('size') + + # if specified, then textline is hidden and input id is stored + # in div with name=self.hidden. + self.hidden = self.xml.get('hidden', False) + + # TODO (vshnayder): can we get rid of inline? Was it one of + # the styling hacks early this semester? + self.inline = self.xml.get('inline', False) + + # TODO: 'dojs' flag is temporary, for backwards compatibility with 8.02x + self.do_math = bool(self.xml.get('math') or self.xml.get('dojs')) + # TODO: do math checking using ajax instead of using js, so + # that we only have one math parser. + self.preprocessor = None + if self.do_math: + # Preprocessor to insert between raw input and Mathjax + self.preprocessor = {'class_name': self.xml.get('preprocessorClassName',''), + 'script_src': self.xml.get('preprocessorSrc','')} + if '' in self.preprocessor.values(): + self.preprocessor = None + + + + def _get_render_context(self): + # Escape answers with quotes, so they don't crash the system! + escapedict = {'"': '"'} + value = saxutils.escape(self.value, escapedict) + + context = {'id': self.id, + 'value': value, + 'state': self.status, + 'size': self.size, + 'msg': self.msg, + 'hidden': self.hidden, + 'inline': self.inline, + 'do_math': self.do_math, + 'preprocessor': self.preprocessor, } + return context - html = render_template("textinput.html", context) - try: - xhtml = etree.XML(html) - except Exception as err: - # TODO: needs to be self.system.DEBUG - but can't access system - if True: - log.debug('[inputtypes.textline] failed to parse XML for:\n%s' % html) - raise - return xhtml - -_reg(textline) - -#----------------------------------------------------------------------------- - - -def textline_dynamath(element, value, status, render_template, msg=''): - ''' - Text line input with dynamic math display (equation rendered on client in real time - during input). - ''' - # TODO: Make a wrapper for - # TODO: Make an AJAX loop to confirm equation is okay in real-time as user types - ''' - textline is used for simple one-line inputs, like formularesponse and symbolicresponse. - uses a `{::}` - and a hidden textarea with id=input_eid_fromjs for the mathjax rendering and return. - ''' - eid = element.get('id') - count = int(eid.split('_')[-2]) - 1 # HACK - size = element.get('size') - # if specified, then textline is hidden and id is stored in div of name given by hidden - hidden = element.get('hidden', '') - - # Preprocessor to insert between raw input and Mathjax - preprocessor = {'class_name': element.get('preprocessorClassName',''), - 'script_src': element.get('preprocessorSrc','')} - if '' in preprocessor.values(): - preprocessor = None - - # Escape characters in student input for safe XML parsing - escapedict = {'"': '"'} - value = saxutils.escape(value, escapedict) - - context = {'id': eid, - 'value': value, - 'state': status, - 'count': count, - 'size': size, - 'msg': msg, - 'hidden': hidden, - 'preprocessor': preprocessor,} - html = render_template("textinput_dynamath.html", context) - return etree.XML(html) - +register_input_class(TextLine) #----------------------------------------------------------------------------- def filesubmission(element, value, status, render_template, msg=''): diff --git a/common/lib/capa/capa/templates/textinput.html b/common/lib/capa/capa/templates/textinput.html index 9b66654117..14d54d4cde 100644 --- a/common/lib/capa/capa/templates/textinput.html +++ b/common/lib/capa/capa/templates/textinput.html @@ -1,6 +1,18 @@ <% doinline = "inline" if inline else "" %> -

    +<% +# TODO: +# Is id inputtype_${id} vs textinput_${id} important? +# Is class capa_inputtype vs textinput important? +# should really just use one. +%> +
    + + % if preprocessor is not None: +
    +
    + % endif + % if state == 'unsubmitted':
    % elif state == 'correct': @@ -15,12 +27,15 @@ % endif

    @@ -35,12 +50,18 @@ % endif

    -

    +

    + + % if do_math: +
    `{::}`
    + % endif + +% if state in ['unsubmitted', 'correct', 'incorrect', 'incomplete']: +
    +% endif % if msg: ${msg|n} % endif -% if state in ['unsubmitted', 'correct', 'incorrect', 'incomplete'] or hidden: -
    -% endif +
    diff --git a/common/lib/capa/capa/templates/textinput_dynamath.html b/common/lib/capa/capa/templates/textinput_dynamath.html deleted file mode 100644 index d1de22ef27..0000000000 --- a/common/lib/capa/capa/templates/textinput_dynamath.html +++ /dev/null @@ -1,50 +0,0 @@ -### -### version of textline.html which does dynamic math -### -
    - - % if preprocessor is not None: -
    -
    - % endif - - % if state == 'unsubmitted': -
    - % elif state == 'correct': -
    - % elif state == 'incorrect': -
    - % elif state == 'incomplete': -
    - % endif - % if hidden: -
    - % endif - - -

    - % if state == 'unsubmitted': - unanswered - % elif state == 'correct': - correct - % elif state == 'incorrect': - incorrect - % elif state == 'incomplete': - incomplete - % endif -

    - -

    - -
    `{::}`
    - -
    - - % if msg: - ${msg|n} - % endif -
    diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py index fa3f7d0595..30a0ded1ee 100644 --- a/common/lib/capa/capa/tests/test_inputtypes.py +++ b/common/lib/capa/capa/tests/test_inputtypes.py @@ -169,3 +169,60 @@ class JavascriptInputTest(unittest.TestCase): 'evaluation': '',} self.assertEqual(context, expected) + + +class TextLineTest(unittest.TestCase): + ''' + Check that textline inputs work, with and without math. + ''' + + def test_rendering(self): + size = "42" + xml_str = """""".format(size=size) + + element = etree.fromstring(xml_str) + + state = {'value': 'BumbleBee',} + the_input = inputtypes.get_class_for_tag('textline')(system, element, state) + + context = the_input._get_render_context() + + expected = {'id': 'prob_1_2', + 'value': 'BumbleBee', + 'state': 'unanswered', + 'size': size, + 'msg': '', + 'hidden': False, + 'inline': False, + 'do_math': False, + 'preprocessor': None} + self.assertEqual(context, expected) + + + def test_math_rendering(self): + size = "42" + preprocessorClass = "preParty" + script = "foo/party.js" + + xml_str = """""".format(size=size, pp=preprocessorClass, sc=script) + + element = etree.fromstring(xml_str) + + state = {'value': 'BumbleBee',} + the_input = inputtypes.get_class_for_tag('textline')(system, element, state) + + context = the_input._get_render_context() + + expected = {'id': 'prob_1_2', + 'value': 'BumbleBee', + 'state': 'unanswered', + 'size': size, + 'msg': '', + 'hidden': False, + 'inline': False, + 'do_math': True, + 'preprocessor': {'class_name': preprocessorClass, + 'script_src': script}} + self.assertEqual(context, expected) From c8bc46b6faa6d4b24354e045912257ac19b3a15b Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Wed, 24 Oct 2012 19:14:29 -0400 Subject: [PATCH 050/308] Convert FileSubmission input to be a class. - add test --- common/lib/capa/capa/inputtypes.py | 62 +++++++++++-------- common/lib/capa/capa/tests/test_inputtypes.py | 45 +++++++++++++- 2 files changed, 79 insertions(+), 28 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 82b5e04843..2eb5bf45bc 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -448,36 +448,44 @@ class TextLine(InputTypeBase): register_input_class(TextLine) #----------------------------------------------------------------------------- -def filesubmission(element, value, status, render_template, msg=''): - ''' - Upload a single file (e.g. for programming assignments) - ''' - eid = element.get('id') - escapedict = {'"': '"'} - allowed_files = json.dumps(element.get('allowed_files', '').split()) - allowed_files = saxutils.escape(allowed_files, escapedict) - required_files = json.dumps(element.get('required_files', '').split()) - required_files = saxutils.escape(required_files, escapedict) - # Check if problem has been queued - queue_len = 0 - # Flag indicating that the problem has been queued, 'msg' is length of queue - if status == 'incomplete': - status = 'queued' - queue_len = msg - msg = 'Submitted to grader.' +class FileSubmission(InputTypeBase): + """ + Upload some files (e.g. for programming assignments) + """ - context = { 'id': eid, - 'state': status, - 'msg': msg, - 'value': value, - 'queue_len': queue_len, - 'allowed_files': allowed_files, - 'required_files': required_files,} - html = render_template("filesubmission.html", context) - return etree.XML(html) + template = "filesubmission.html" + tags = ['filesubmission'] -_reg(filesubmission) + def __init__(self, system, xml, state): + super(FileSubmission, self).__init__(system, xml, state) + escapedict = {'"': '"'} + self.allowed_files = json.dumps(xml.get('allowed_files', '').split()) + self.allowed_files = saxutils.escape(self.allowed_files, escapedict) + self.required_files = json.dumps(xml.get('required_files', '').split()) + self.required_files = saxutils.escape(self.required_files, escapedict) + + # Check if problem has been queued + queue_len = 0 + # Flag indicating that the problem has been queued, 'msg' is length of queue + if self.status == 'incomplete': + self.status = 'queued' + self.queue_len = self.msg + self.msg = 'Submitted to grader.' + + + def _get_render_context(self): + + context = {'id': self.id, + 'state': self.status, + 'msg': self.msg, + 'value': self.value, + 'queue_len': self.queue_len, + 'allowed_files': self.allowed_files, + 'required_files': self.required_files,} + return context + +register_input_class(FileSubmission) #----------------------------------------------------------------------------- diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py index 30a0ded1ee..759ec8bdfa 100644 --- a/common/lib/capa/capa/tests/test_inputtypes.py +++ b/common/lib/capa/capa/tests/test_inputtypes.py @@ -24,6 +24,9 @@ def tst_render_template(template, context): system = Mock(render_template=tst_render_template) +def quote_attr(s): + return saxutils.quoteattr(s)[1:-1] # don't want the outer quotes + class OptionInputTest(unittest.TestCase): ''' Make sure option inputs work @@ -150,7 +153,7 @@ class JavascriptInputTest(unittest.TestCase): xml_str = """""".format( params=params, - ps=saxutils.quoteattr(problem_state)[1:-1], # don't want the outer quotes + ps=quote_attr(problem_state), dc=display_class, df=display_file) element = etree.fromstring(xml_str) @@ -226,3 +229,43 @@ class TextLineTest(unittest.TestCase): 'preprocessor': {'class_name': preprocessorClass, 'script_src': script}} self.assertEqual(context, expected) + + +class FileSubmissionTest(unittest.TestCase): + ''' + Check that file submission inputs work + ''' + + def test_rendering(self): + allowed_files = "runme.py nooooo.rb ohai.java" + required_files = "cookies.py" + + xml_str = """""".format(af=allowed_files, + rf=required_files,) + + + element = etree.fromstring(xml_str) + + escapedict = {'"': '"'} + esc = lambda s: saxutils.escape(s, escapedict) + + state = {'value': 'BumbleBee.py', + 'status': 'incomplete', + 'feedback' : {'message': '3'}, } + the_input = inputtypes.get_class_for_tag('filesubmission')(system, element, state) + + context = the_input._get_render_context() + + expected = {'id': 'prob_1_2', + 'state': 'queued', + 'msg': 'Submitted to grader.', + 'value': 'BumbleBee.py', + 'queue_len': '3', + 'allowed_files': esc('["runme.py", "nooooo.rb", "ohai.java"]'), + 'required_files': esc('["cookies.py"]')} + + self.assertEqual(context, expected) + From 935e370184e0c99510f3702af060561ff34dcf86 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Thu, 25 Oct 2012 14:56:16 -0400 Subject: [PATCH 051/308] Refactor textbox. - tests - rename it codeinput, with textbox still supported too --- common/lib/capa/capa/inputtypes.py | 99 +++++++++---------- .../{textbox.html => codeinput.html} | 0 common/lib/capa/capa/tests/test_inputtypes.py | 51 +++++++++- 3 files changed, 97 insertions(+), 53 deletions(-) rename common/lib/capa/capa/templates/{textbox.html => codeinput.html} (100%) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 2eb5bf45bc..bbbddc0fb6 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -489,66 +489,61 @@ register_input_class(FileSubmission) #----------------------------------------------------------------------------- -## TODO: Make a wrapper for -def textbox(element, value, status, render_template, msg=''): - ''' - The textbox is used for code input. The message is the return HTML string from - evaluating the code, eg error messages, and output from the code tests. - ''' - eid = element.get('id') - count = int(eid.split('_')[-2]) - 1 # HACK - size = element.get('size') - rows = element.get('rows') or '30' - cols = element.get('cols') or '80' - # if specified, then textline is hidden and id is stored in div of name given by hidden - hidden = element.get('hidden', '') +class CodeInput(InputTypeBase): + """ + A text area input for code--uses codemirror, does syntax highlighting, special tab handling, + etc. + """ - # if no student input yet, then use the default input given by the problem - if not value: - value = element.text + template = "codeinput.html" + tags = ['codeinput', + 'textbox', # Old name for this. Still supported, but deprecated. + ] - # Check if problem has been queued - queue_len = 0 - # Flag indicating that the problem has been queued, 'msg' is length of queue - if status == 'incomplete': - status = 'queued' - queue_len = msg - msg = 'Submitted to grader.' + def __init__(self, system, xml, state): + super(CodeInput, self).__init__(system, xml, state) - # For CodeMirror - mode = element.get('mode','python') - linenumbers = element.get('linenumbers','true') - tabsize = element.get('tabsize','4') - tabsize = int(tabsize) + self.rows = xml.get('rows') or '30' + self.cols = xml.get('cols') or '80' + # if specified, then textline is hidden and id is stored in div of name given by hidden + self.hidden = xml.get('hidden', '') - context = {'id': eid, - 'value': value, - 'state': status, - 'count': count, - 'size': size, - 'msg': msg, - 'mode': mode, - 'linenumbers': linenumbers, - 'rows': rows, - 'cols': cols, - 'hidden': hidden, - 'tabsize': tabsize, - 'queue_len': queue_len, + # if no student input yet, then use the default input given by the problem + if not self.value: + self.value = xml.text + + # Check if problem has been queued + self.queue_len = 0 + # Flag indicating that the problem has been queued, 'msg' is length of queue + if self.status == 'incomplete': + self.status = 'queued' + self.queue_len = self.msg + self.msg = 'Submitted to grader.' + + # For CodeMirror + self.mode = xml.get('mode', 'python') + self.linenumbers = xml.get('linenumbers', 'true') + self.tabsize = int(xml.get('tabsize', '4')) + + def _get_render_context(self): + + context = {'id': self.id, + 'value': self.value, + 'state': self.status, + 'msg': self.msg, + 'mode': self.mode, + 'linenumbers': self.linenumbers, + 'rows': self.rows, + 'cols': self.cols, + 'hidden': self.hidden, + 'tabsize': self.tabsize, + 'queue_len': self.queue_len, } - html = render_template("textbox.html", context) - try: - xhtml = etree.XML(html) - except Exception as err: - newmsg = 'error %s in rendering message' % (str(err).replace('<', '<')) - newmsg += '
    Original message: %s' % msg.replace('<', '<') - context['msg'] = newmsg - html = render_template("textbox.html", context) - xhtml = etree.XML(html) - return xhtml + return context +register_input_class(CodeInput) -_reg(textbox) #----------------------------------------------------------------------------- def schematic(element, value, status, render_template, msg=''): diff --git a/common/lib/capa/capa/templates/textbox.html b/common/lib/capa/capa/templates/codeinput.html similarity index 100% rename from common/lib/capa/capa/templates/textbox.html rename to common/lib/capa/capa/templates/codeinput.html diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py index 759ec8bdfa..8cfbbc54ef 100644 --- a/common/lib/capa/capa/tests/test_inputtypes.py +++ b/common/lib/capa/capa/tests/test_inputtypes.py @@ -251,7 +251,7 @@ class FileSubmissionTest(unittest.TestCase): escapedict = {'"': '"'} esc = lambda s: saxutils.escape(s, escapedict) - + state = {'value': 'BumbleBee.py', 'status': 'incomplete', 'feedback' : {'message': '3'}, } @@ -269,3 +269,52 @@ class FileSubmissionTest(unittest.TestCase): self.assertEqual(context, expected) + +class CodeInputTest(unittest.TestCase): + ''' + Check that codeinput inputs work + ''' + + def test_rendering(self): + mode = "parrot" + linenumbers = 'false' + rows = '37' + cols = '11' + tabsize = '7' + + xml_str = """""".format(m=mode, c=cols, r=rows, ln=linenumbers, ts=tabsize) + + element = etree.fromstring(xml_str) + + escapedict = {'"': '"'} + esc = lambda s: saxutils.escape(s, escapedict) + + state = {'value': 'print "good evening"', + 'status': 'incomplete', + 'feedback' : {'message': '3'}, } + + the_input = inputtypes.get_class_for_tag('codeinput')(system, element, state) + + context = the_input._get_render_context() + + expected = {'id': 'prob_1_2', + 'value': 'print "good evening"', + 'state': 'queued', + 'msg': 'Submitted to grader.', + 'mode': mode, + 'linenumbers': linenumbers, + 'rows': rows, + 'cols': cols, + 'hidden': '', + 'tabsize': int(tabsize), + 'queue_len': '3', + } + + self.assertEqual(context, expected) + From 80d0952d161a6ef4e795336bd8109e155807ed46 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Fri, 26 Oct 2012 18:29:46 -0400 Subject: [PATCH 052/308] Refactor schematic input --- common/lib/capa/capa/inputtypes.py | 52 ++++++++++-------- common/lib/capa/capa/tests/test_inputtypes.py | 55 ++++++++++++++++++- 2 files changed, 84 insertions(+), 23 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index bbbddc0fb6..cbd5d1d02e 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -546,29 +546,37 @@ register_input_class(CodeInput) #----------------------------------------------------------------------------- -def schematic(element, value, status, render_template, msg=''): - eid = element.get('id') - height = element.get('height') - width = element.get('width') - parts = element.get('parts') - analyses = element.get('analyses') - initial_value = element.get('initial_value') - submit_analyses = element.get('submit_analyses') - context = { - 'id': eid, - 'value': value, - 'initial_value': initial_value, - 'state': status, - 'width': width, - 'height': height, - 'parts': parts, - 'analyses': analyses, - 'submit_analyses': submit_analyses, - } - html = render_template("schematicinput.html", context) - return etree.XML(html) +class Schematic(InputTypeBase): + """ + """ -_reg(schematic) + template = "schematicinput.html" + tags = ['schematic'] + + def __init__(self, system, xml, state): + super(Schematic, self).__init__(system, xml, state) + self.height = xml.get('height') + self.width = xml.get('width') + self.parts = xml.get('parts') + self.analyses = xml.get('analyses') + self.initial_value = xml.get('initial_value') + self.submit_analyses = xml.get('submit_analyses') + + + def _get_render_context(self): + + context = {'id': self.id, + 'value': self.value, + 'initial_value': self.initial_value, + 'state': self.status, + 'width': self.width, + 'height': self.height, + 'parts': self.parts, + 'analyses': self.analyses, + 'submit_analyses': self.submit_analyses, } + return context + +register_input_class(Schematic) #----------------------------------------------------------------------------- ### TODO: Move out of inputtypes diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py index 8cfbbc54ef..573f52a01a 100644 --- a/common/lib/capa/capa/tests/test_inputtypes.py +++ b/common/lib/capa/capa/tests/test_inputtypes.py @@ -1,5 +1,9 @@ """ -Tests of input types (and actually responsetypes too) +Tests of input types (and actually responsetypes too). + +TODO: +- test unicode in values, parameters, etc. +- test various html escapes """ from datetime import datetime @@ -318,3 +322,52 @@ class CodeInputTest(unittest.TestCase): self.assertEqual(context, expected) + +class SchematicTest(unittest.TestCase): + ''' + Check that schematic inputs work + ''' + + def test_rendering(self): + height = '12' + width = '33' + parts = 'resistors, capacitors, and flowers' + analyses = 'fast, slow, and pink' + initial_value = 'two large batteries' + submit_analyses = 'maybe' + + + xml_str = """""".format(h=height, w=width, p=parts, a=analyses, + iv=initial_value, sa=submit_analyses) + + element = etree.fromstring(xml_str) + + value = 'three resistors and an oscilating pendulum' + state = {'value': value, + 'status': 'unsubmitted', + 'feedback' : {'message': '3'}, } + + the_input = inputtypes.get_class_for_tag('schematic')(system, element, state) + + context = the_input._get_render_context() + + expected = {'id': 'prob_1_2', + 'value': value, + 'initial_value': initial_value, + 'state': 'unsubmitted', + 'width': width, + 'height': height, + 'parts': parts, + 'analyses': analyses, + 'submit_analyses': submit_analyses, + } + + self.assertEqual(context, expected) + From 9135d7b2db316b6ad31857ea9d88310ffd83666e Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Fri, 26 Oct 2012 19:05:56 -0400 Subject: [PATCH 053/308] minor cleanup in math function --- common/lib/capa/capa/inputtypes.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index cbd5d1d02e..5d271f257e 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -596,18 +596,14 @@ def math(element, value, status, render_template, msg=''): ''' mathstr = re.sub('\$(.*)\$', '[mathjaxinline]\\1[/mathjaxinline]', element.text) mtag = 'mathjax' - if not '\\displaystyle' in mathstr: mtag += 'inline' - else: mathstr = mathstr.replace('\\displaystyle', '') + if not '\\displaystyle' in mathstr: + mtag += 'inline' + else: + mathstr = mathstr.replace('\\displaystyle', '') mathstr = mathstr.replace('mathjaxinline]', '%s]' % mtag) - #if '\\displaystyle' in mathstr: - # isinline = False - # mathstr = mathstr.replace('\\displaystyle','') - #else: - # isinline = True - # html = render_template("mathstring.html", {'mathstr':mathstr, - # 'isinline':isinline,'tail':element.tail}) + # TODO: why are there nested html tags here?? Why are there html tags at all, in fact? html = '%s%s' % (mathstr, saxutils.escape(element.tail)) try: xhtml = etree.XML(html) From 2fab97c1660a65cc741b296f4a028067e28f71e5 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Fri, 26 Oct 2012 19:06:34 -0400 Subject: [PATCH 054/308] Refactor imageinput and crystallography. - also add a test for chemicalequationinput --- common/lib/capa/capa/inputtypes.py | 203 +++++++++--------- .../capa/capa/templates/crystallography.html | 18 +- .../lib/capa/capa/templates/vsepr_input.html | 24 +-- common/lib/capa/capa/tests/test_inputtypes.py | 121 ++++++++++- 4 files changed, 231 insertions(+), 135 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 5d271f257e..145eabd953 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -647,9 +647,8 @@ _reg(solution) #----------------------------------------------------------------------------- - -def imageinput(element, value, status, render_template, msg=''): - ''' +class ImageInput(InputTypeBase): + """ Clickable image as an input field. Element should specify the image source, height, and width, e.g. @@ -657,130 +656,120 @@ def imageinput(element, value, status, render_template, msg=''): TODO: showanswer for imageimput does not work yet - need javascript to put rectangle over acceptable area of image. - ''' - eid = element.get('id') - src = element.get('src') - height = element.get('height') - width = element.get('width') + """ - # if value is of the form [x,y] then parse it and send along coordinates of previous answer - m = re.match('\[([0-9]+),([0-9]+)]', value.strip().replace(' ', '')) - if m: - (gx, gy) = [int(x) - 15 for x in m.groups()] - else: - (gx, gy) = (0, 0) + template = "imageinput.html" + tags = ['imageinput'] - context = { - 'id': eid, - 'value': value, - 'height': height, - 'width': width, - 'src': src, - 'gx': gx, - 'gy': gy, - 'state': status, # to change - 'msg': msg, # to change - } - html = render_template("imageinput.html", context) - return etree.XML(html) + def __init__(self, system, xml, state): + super(ImageInput, self).__init__(system, xml, state) + self.src = xml.get('src') + self.height = xml.get('height') + self.width = xml.get('width') -_reg(imageinput) + # if value is of the form [x,y] then parse it and send along coordinates of previous answer + m = re.match('\[([0-9]+),([0-9]+)]', self.value.strip().replace(' ', '')) + if m: + # TODO (vshnayder): why is there a "-15" here?? + (self.gx, self.gy) = [int(x) - 15 for x in m.groups()] + else: + (self.gx, self.gy) = (0, 0) -def crystallography(element, value, status, render_template, msg=''): - eid = element.get('id') - if eid is None: - msg = 'cryst has no id: it probably appears outside of a known response type' - msg += "\nSee problem XML source line %s" % getattr(element, 'sourceline', '') - raise Exception(msg) - height = element.get('height') - width = element.get('width') - display_file = element.get('display_file') + def _get_render_context(self): - count = int(eid.split('_')[-2]) - 1 # HACK - size = element.get('size') - # if specified, then textline is hidden and id is stored in div of name given by hidden - hidden = element.get('hidden', '') - # Escape answers with quotes, so they don't crash the system! - escapedict = {'"': '"'} - value = saxutils.escape(value, escapedict) - - context = {'id': eid, - 'value': value, - 'state': status, - 'count': count, - 'size': size, - 'msg': msg, - 'hidden': hidden, - 'inline': element.get('inline', ''), - 'width': width, - 'height': height, - 'display_file': display_file, + context = {'id': self.id, + 'value': self.value, + 'height': self.height, + 'width': self.width, + 'src': self.src, + 'gx': self.gx, + 'gy': self.gy, + 'state': self.status, # to change (VS: to what??) + 'msg': self.msg, # to change } + return context - html = render_template("crystallography.html", context) +register_input_class(ImageInput) - try: - xhtml = etree.XML(html) - except Exception as err: - # TODO: needs to be self.system.DEBUG - but can't access system - if True: - log.debug('[inputtypes.crystallography] failed to parse XML for:\n%s' % html) - raise - return xhtml +#----------------------------------------------------------------------------- -_reg(crystallography) +class Crystallography(InputTypeBase): + """ + An input for crystallography -- user selects 3 points on the axes, and we get a plane. + TODO: what's the actual value format? + """ -def vsepr_input(element, value, status, render_template, msg=''): - eid = element.get('id') - if eid is None: - msg = 'cryst has no id: it probably appears outside of a known response type' - msg += "\nSee problem XML source line %s" % getattr(element, 'sourceline', '') - raise Exception(msg) - height = element.get('height') - width = element.get('width') - display_file = element.get('display_file') + template = "crystallography.html" + tags = ['crystallography'] - count = int(eid.split('_')[-2]) - 1 # HACK - size = element.get('size') - # if specified, then textline is hidden and id is stored in div of name given by hidden - hidden = element.get('hidden', '') - # Escape answers with quotes, so they don't crash the system! - escapedict = {'"': '"'} - value = saxutils.escape(value, escapedict) + def __init__(self, system, xml, state): + super(Crystallography, self).__init__(system, xml, state) - molecules = element.get('molecules') - geometries = element.get('geometries') + self.height = xml.get('height') + self.width = xml.get('width') + self.size = xml.get('size') - context = {'id': eid, - 'value': value, - 'state': status, - 'count': count, - 'size': size, - 'msg': msg, - 'hidden': hidden, - 'inline': element.get('inline', ''), - 'width': width, - 'height': height, - 'display_file': display_file, - 'molecules': molecules, - 'geometries': geometries, + # if specified, then textline is hidden and id is stored in div of name given by hidden + self.hidden = xml.get('hidden', '') + + # Escape answers with quotes, so they don't crash the system! + escapedict = {'"': '"'} + self.value = saxutils.escape(self.value, escapedict) + + def _get_render_context(self): + context = {'id': self.id, + 'value': self.value, + 'state': self.status, + 'size': self.size, + 'msg': self.msg, + 'hidden': self.hidden, + 'width': self.width, + 'height': self.height, } + return context - html = render_template("vsepr_input.html", context) +register_input_class(Crystallography) - try: - xhtml = etree.XML(html) - except Exception as err: - # TODO: needs to be self.system.DEBUG - but can't access system - if True: - log.debug('[inputtypes.vsepr_input] failed to parse XML for:\n%s' % html) - raise - return xhtml +# ------------------------------------------------------------------------- -_reg(vsepr_input) +class VseprInput(InputTypeBase): + """ + Input for molecular geometry--show possible structures, let student + pick structure and label positions with atoms or electron pairs. + """ + template = 'vsepr_input.html' + tags = ['vsepr_input'] + + def __init__(self, system, xml, state): + super(ImageInput, self).__init__(system, xml, state) + + self.height = xml.get('height') + self.width = xml.get('width') + + # Escape answers with quotes, so they don't crash the system! + escapedict = {'"': '"'} + self.value = saxutils.escape(self.value, escapedict) + + self.molecules = xml.get('molecules') + self.geometries = xml.get('geometries') + + def _get_render_context(self): + + context = {'id': self.id, + 'value': self.value, + 'state': self.status, + 'msg': self.msg, + 'width': self.width, + 'height': self.height, + 'molecules': self.molecules, + 'geometries': self.geometries, + } + return context + +register_input_class(VseprInput) #-------------------------------------------------------------------------------- diff --git a/common/lib/capa/capa/templates/crystallography.html b/common/lib/capa/capa/templates/crystallography.html index 1fc638b356..71578f1fa0 100644 --- a/common/lib/capa/capa/templates/crystallography.html +++ b/common/lib/capa/capa/templates/crystallography.html @@ -1,19 +1,19 @@ -<% doinline = "inline" if inline else "" %> - -
    +
    -
    +
    +
    +
    % if state == 'unsubmitted': -
    +
    % elif state == 'correct': -
    +
    % elif state == 'incorrect': -
    +
    % elif state == 'incomplete': -
    +
    % endif % if hidden:
    @@ -45,7 +45,7 @@ % if msg: ${msg|n} % endif -% if state in ['unsubmitted', 'correct', 'incorrect', 'incomplete'] or hidden: +% if state in ['unsubmitted', 'correct', 'incorrect', 'incomplete']:
    % endif
    diff --git a/common/lib/capa/capa/templates/vsepr_input.html b/common/lib/capa/capa/templates/vsepr_input.html index 588e53c914..5194551d50 100644 --- a/common/lib/capa/capa/templates/vsepr_input.html +++ b/common/lib/capa/capa/templates/vsepr_input.html @@ -1,6 +1,4 @@ -<% doinline = "inline" if inline else "" %> - -
    +
    @@ -14,25 +12,17 @@
    % if state == 'unsubmitted': -
    +
    % elif state == 'correct': -
    +
    % elif state == 'incorrect': -
    +
    % elif state == 'incomplete': -
    - % endif - % if hidden: -
    +
    % endif

    @@ -52,7 +42,7 @@ % if msg: ${msg|n} % endif -% if state in ['unsubmitted', 'correct', 'incorrect', 'incomplete'] or hidden: +% if state in ['unsubmitted', 'correct', 'incorrect', 'incomplete']:

    % endif diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py index 573f52a01a..773f2b3519 100644 --- a/common/lib/capa/capa/tests/test_inputtypes.py +++ b/common/lib/capa/capa/tests/test_inputtypes.py @@ -4,6 +4,7 @@ Tests of input types (and actually responsetypes too). TODO: - test unicode in values, parameters, etc. - test various html escapes +- test funny xml chars -- should never get xml parse error if things are escaped properly. """ from datetime import datetime @@ -351,8 +352,7 @@ class SchematicTest(unittest.TestCase): value = 'three resistors and an oscilating pendulum' state = {'value': value, - 'status': 'unsubmitted', - 'feedback' : {'message': '3'}, } + 'status': 'unsubmitted'} the_input = inputtypes.get_class_for_tag('schematic')(system, element, state) @@ -371,3 +371,120 @@ class SchematicTest(unittest.TestCase): self.assertEqual(context, expected) + +class ImageInputTest(unittest.TestCase): + ''' + Check that image inputs work + ''' + + def check(self, value, egx, egy): + height = '78' + width = '427' + src = 'http://www.edx.org/cowclicker.jpg' + + xml_str = """""".format(s=src, h=height, w=width) + + element = etree.fromstring(xml_str) + + state = {'value': value, + 'status': 'unsubmitted'} + + the_input = inputtypes.get_class_for_tag('imageinput')(system, element, state) + + context = the_input._get_render_context() + + expected = {'id': 'prob_1_2', + 'value': value, + 'state': 'unsubmitted', + 'width': width, + 'height': height, + 'src': src, + 'gx': egx, + 'gy': egy, + 'state': 'unsubmitted', + 'msg': ''} + + self.assertEqual(context, expected) + + def test_with_value(self): + self.check('[50,40]', 35, 25) + + def test_without_value(self): + self.check('', 0, 0) + + def test_corrupt_values(self): + self.check('[12', 0, 0) + self.check('[12, a]', 0, 0) + self.check('[12 10]', 0, 0) + self.check('[12]', 0, 0) + self.check('[12 13 14]', 0, 0) + + + +class CrystallographyTest(unittest.TestCase): + ''' + Check that crystallography inputs work + ''' + + def test_rendering(self): + height = '12' + width = '33' + size = '10' + + xml_str = """""".format(h=height, w=width, s=size) + + element = etree.fromstring(xml_str) + + value = 'abc' + state = {'value': value, + 'status': 'unsubmitted'} + + the_input = inputtypes.get_class_for_tag('crystallography')(system, element, state) + + context = the_input._get_render_context() + + expected = {'id': 'prob_1_2', + 'value': value, + 'state': 'unsubmitted', + 'size': size, + 'msg': '', + 'hidden': '', + 'width': width, + 'height': height, + } + + self.assertEqual(context, expected) + + +class ChemicalEquationTest(unittest.TestCase): + ''' + Check that chemical equation inputs work. + ''' + + def test_rendering(self): + size = "42" + xml_str = """""".format(size=size) + + element = etree.fromstring(xml_str) + + state = {'value': 'H2OYeah',} + the_input = inputtypes.get_class_for_tag('chemicalequationinput')(system, element, state) + + context = the_input._get_render_context() + + expected = {'id': 'prob_1_2', + 'value': 'H2OYeah', + 'status': 'unanswered', + 'size': size, + 'previewer': '/static/js/capa/chemical_equation_preview.js', + } + self.assertEqual(context, expected) + From f6637b7fe03e9d72b8053972c444840921b84d6e Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Sat, 27 Oct 2012 19:29:24 -0400 Subject: [PATCH 055/308] Add a registry that keeps track of tag->renderer/input mappings --- common/lib/capa/capa/registry.py | 49 ++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 common/lib/capa/capa/registry.py diff --git a/common/lib/capa/capa/registry.py b/common/lib/capa/capa/registry.py new file mode 100644 index 0000000000..94a2853dec --- /dev/null +++ b/common/lib/capa/capa/registry.py @@ -0,0 +1,49 @@ +class TagRegistry(object): + """ + A registry mapping tags to handlers. + + (A dictionary with some extra error checking.) + """ + def __init__(self): + self._mapping = {} + + def register(self, cls): + """ + Register cls as a supported tag type. It is expected to define cls.tags as a list of tags + that it implements. + + If an already-registered type has registered one of those tags, will raise ValueError. + + If there are no tags in cls.tags, will also raise ValueError. + """ + + # Do all checks and complain before changing any state. + if len(cls.tags) == 0: + raise ValueError("No tags specified for class {0}".format(cls.__name__)) + + for t in cls.tags: + if t in self._mapping: + other_cls = self._mapping[t] + if cls == other_cls: + # registering the same class multiple times seems silly, but ok + continue + raise ValueError("Tag {0} already registered by class {1}." + " Can't register for class {2}" + .format(t, other_cls.__name__, cls.__name__)) + + # Ok, should be good to change state now. + for t in cls.tags: + self._mapping[t] = cls + + def registered_tags(self): + """ + Get a list of all the tags that have been registered. + """ + return self._mapping.keys() + + def get_class_for_tag(self, tag): + """ + For any tag in registered_tags(), returns the corresponding class. Otherwise, will raise + KeyError. + """ + return self._mapping[tag] From d36d8cba6b1ce624f8202c366b20ed1b113f0dcf Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Sat, 27 Oct 2012 19:31:17 -0400 Subject: [PATCH 056/308] Cleanups: - switch to using registry - pull math and solution "input types" into a separate customrender.py file - make capa_problem use new custom renderers and input types registries - remove unused imports, methods, etc - add tests for math and solution tags. --- common/lib/capa/capa/capa_problem.py | 37 ++- common/lib/capa/capa/customrender.py | 100 +++++++++ common/lib/capa/capa/inputtypes.py | 210 +++--------------- common/lib/capa/capa/tests/__init__.py | 12 +- .../lib/capa/capa/tests/test_customrender.py | 76 +++++++ common/lib/capa/capa/tests/test_inputtypes.py | 43 ++-- 6 files changed, 243 insertions(+), 235 deletions(-) create mode 100644 common/lib/capa/capa/customrender.py create mode 100644 common/lib/capa/capa/tests/test_customrender.py diff --git a/common/lib/capa/capa/capa_problem.py b/common/lib/capa/capa/capa_problem.py index 1c31725e4b..451891d067 100644 --- a/common/lib/capa/capa/capa_problem.py +++ b/common/lib/capa/capa/capa_problem.py @@ -38,6 +38,7 @@ import calc from correctmap import CorrectMap import eia import inputtypes +import customrender from util import contextualize_text, convert_files_to_filenames import xqueue_interface @@ -47,23 +48,8 @@ import responsetypes # dict of tagname, Response Class -- this should come from auto-registering response_tag_dict = dict([(x.response_tag, x) for x in responsetypes.__all__]) -# Different ways students can input code -entry_types = ['textline', - 'schematic', - 'textbox', - 'imageinput', - 'optioninput', - 'choicegroup', - 'radiogroup', - 'checkboxgroup', - 'filesubmission', - 'javascriptinput', - 'crystallography', - 'chemicalequationinput', - 'vsepr_input'] - # extra things displayed after "show answers" is pressed -solution_types = ['solution'] +solution_tags = ['solution'] # these get captured as student responses response_properties = ["codeparam", "responseparam", "answer"] @@ -309,7 +295,7 @@ class LoncapaProblem(object): answer_map.update(results) # include solutions from ... stanzas - for entry in self.tree.xpath("//" + "|//".join(solution_types)): + for entry in self.tree.xpath("//" + "|//".join(solution_tags)): answer = etree.tostring(entry) if answer: answer_map[entry.get('id')] = contextualize_text(answer, self.context) @@ -487,7 +473,7 @@ class LoncapaProblem(object): problemid = problemtree.get('id') # my ID - if problemtree.tag in inputtypes.registered_input_tags(): + if problemtree.tag in inputtypes.registry.registered_tags(): # If this is an inputtype subtree, let it render itself. status = "unsubmitted" msg = '' @@ -513,7 +499,7 @@ class LoncapaProblem(object): 'hint': hint, 'hintmode': hintmode,}} - input_type_cls = inputtypes.get_class_for_tag(problemtree.tag) + input_type_cls = inputtypes.registry.get_class_for_tag(problemtree.tag) the_input = input_type_cls(self.system, problemtree, state) return the_input.get_html() @@ -521,9 +507,15 @@ class LoncapaProblem(object): if problemtree in self.responders: return self.responders[problemtree].render_html(self._extract_html) + # let each custom renderer render itself: + if problemtree.tag in customrender.registry.registered_tags(): + renderer_class = customrender.registry.get_class_for_tag(problemtree.tag) + renderer = renderer_class(self.system, problemtree) + return renderer.get_html() + + # otherwise, render children recursively, and copy over attributes tree = etree.Element(problemtree.tag) for item in problemtree: - # render child recursively item_xhtml = self._extract_html(item) if item_xhtml is not None: tree.append(item_xhtml) @@ -560,11 +552,12 @@ class LoncapaProblem(object): response_id += 1 answer_id = 1 + input_tags = inputtypes.registry.registered_tags() inputfields = tree.xpath("|".join(['//' + response.tag + '[@id=$id]//' + x - for x in (entry_types + solution_types)]), + for x in (input_tags + solution_tags)]), id=response_id_str) - # assign one answer_id for each entry_type or solution_type + # assign one answer_id for each input type or solution type for entry in inputfields: entry.attrib['response_id'] = str(response_id) entry.attrib['answer_id'] = str(answer_id) diff --git a/common/lib/capa/capa/customrender.py b/common/lib/capa/capa/customrender.py new file mode 100644 index 0000000000..ef1044e8b1 --- /dev/null +++ b/common/lib/capa/capa/customrender.py @@ -0,0 +1,100 @@ +""" +This has custom renderers: classes that know how to render certain problem tags (e.g. and +) to html. + +These tags do not have state, so they just get passed the system (for access to render_template), +and the xml element. +""" + +from registry import TagRegistry + +import logging +import re +import shlex # for splitting quoted strings +import json + +from lxml import etree +import xml.sax.saxutils as saxutils +from registry import TagRegistry + +log = logging.getLogger('mitx.' + __name__) + +registry = TagRegistry() + +#----------------------------------------------------------------------------- +class MathRenderer(object): + tags = ['math'] + + def __init__(self, system, xml): + ''' + Render math using latex-like formatting. + + Examples: + + $\displaystyle U(r)=4 U_0 $ + $r_0$ + + We convert these to [mathjax]...[/mathjax] and [mathjaxinline]...[/mathjaxinline] + + TODO: use shorter tags (but this will require converting problem XML files!) + ''' + self.system = system + self.xml = xml + + mathstr = re.sub('\$(.*)\$', r'[mathjaxinline]\1[/mathjaxinline]', xml.text) + mtag = 'mathjax' + if not r'\displaystyle' in mathstr: + mtag += 'inline' + else: + mathstr = mathstr.replace(r'\displaystyle', '') + self.mathstr = mathstr.replace('mathjaxinline]', '%s]' % mtag) + + + def get_html(self): + """ + Return the contents of this tag, rendered to html, as an etree element. + """ + # TODO: why are there nested html tags here?? Why are there html tags at all, in fact? + html = '%s%s' % ( + self.mathstr, saxutils.escape(self.xml.tail)) + try: + xhtml = etree.XML(html) + except Exception as err: + if self.system.DEBUG: + msg = '

    Error %s

    ' % ( + str(err).replace('<', '<')) + msg += ('

    Failed to construct math expression from

    %s

    ' % + html.replace('<', '<')) + msg += "
    " + log.error(msg) + return etree.XML(msg) + else: + raise + return xhtml + + +registry.register(MathRenderer) + +#----------------------------------------------------------------------------- + +class SolutionRenderer(object): + ''' + A solution is just a ... which is given an ID, that is used for displaying an + extended answer (a problem "solution") after "show answers" is pressed. + + Note that the solution content is NOT rendered and returned in the HTML. It is obtained by an + ajax call. + ''' + tags = ['solution'] + + def __init__(self, system, xml): + self.system = system + self.id = xml.get('id') + + def get_html(self): + context = {'id': self.id} + html = self.system.render_template("solutionspan.html", context) + return etree.XML(html) + +registry.register(SolutionRenderer) + diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 145eabd953..9569958c96 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -1,29 +1,3 @@ - - -# template: -''' -class ClassName(InputTypeBase): - """ - """ - - template = "tagname.html" - tags = ['tagname'] - - def __init__(self, system, xml, state): - super(ClassName, self).__init__(system, xml, state) - - - def _get_render_context(self): - - context = {'id': self.id, - - } - return context - -register_input_class(ClassName) -''' - - # # File: courseware/capa/inputtypes.py # @@ -32,11 +6,9 @@ register_input_class(ClassName) Module containing the problem elements which render into input objects - textline -- textbox (change this to textarea?) -- schemmatic -- choicegroup -- radiogroup -- checkboxgroup +- textbox (aka codeinput) +- schematic +- choicegroup (aka radiogroup, checkboxgroup) - javascriptinput - imageinput (for clickable image) - optioninput (for option list) @@ -60,53 +32,13 @@ import json from lxml import etree import xml.sax.saxutils as saxutils +from registry import TagRegistry log = logging.getLogger('mitx.' + __name__) ######################################################################### -_TAGS_TO_CLASSES = {} - -def register_input_class(cls): - """ - Register cls as a supported input type. It is expected to have the same constructor as - InputTypeBase, and to define cls.tags as a list of tags that it implements. - - If an already-registered input type has claimed one of those tags, will raise ValueError. - - If there are no tags in cls.tags, will also raise ValueError. - """ - - # Do all checks and complain before changing any state. - if len(cls.tags) == 0: - raise ValueError("No supported tags for class {0}".format(cls.__name__)) - - for t in cls.tags: - if t in _TAGS_TO_CLASSES: - other_cls = _TAGS_TO_CLASSES[t] - if cls == other_cls: - # registering the same class multiple times seems silly, but ok - continue - raise ValueError("Tag {0} already registered by class {1}. Can't register for class {2}" - .format(t, other_cls.__name__, cls.__name__)) - - # Ok, should be good to change state now. - for t in cls.tags: - _TAGS_TO_CLASSES[t] = cls - -def registered_input_tags(): - """ - Get a list of all the xml tags that map to known input types. - """ - return _TAGS_TO_CLASSES.keys() - - -def get_class_for_tag(tag): - """ - For any tag in registered_input_tags(), return the corresponding class. Otherwise, will raise KeyError. - """ - return _TAGS_TO_CLASSES[tag] - +registry = TagRegistry() class InputTypeBase(object): """ @@ -119,16 +51,18 @@ class InputTypeBase(object): """ Instantiate an InputType class. Arguments: - - system : ModuleSystem instance which provides OS, rendering, and user context. Specifically, must - have a render_template function. + - system : ModuleSystem instance which provides OS, rendering, and user context. + Specifically, must have a render_template function. - xml : Element tree of this Input element - state : a dictionary with optional keys: - * 'value' -- the current value of this input (what the student entered last time) - * 'id' -- the id of this input, typically "{problem-location}_{response-num}_{input-num}" + * 'value' -- the current value of this input + (what the student entered last time) + * 'id' -- the id of this input, typically + "{problem-location}_{response-num}_{input-num}" * 'status' (answered, unanswered, unsubmitted) * 'feedback' (dictionary containing keys for hints, errors, or other - feedback from previous attempt. Specifically 'message', 'hint', 'hintmode'. If 'hintmode' - is 'always', the hint is always displayed.) + feedback from previous attempt. Specifically 'message', 'hint', + 'hintmode'. If 'hintmode' is 'always', the hint is always displayed.) """ self.xml = xml @@ -172,40 +106,13 @@ class InputTypeBase(object): Return the html for this input, as an etree element. """ if self.template is None: - raise NotImplementedError("no rendering template specified for class {0}".format(self.__class__)) + raise NotImplementedError("no rendering template specified for class {0}" + .format(self.__class__)) html = self.system.render_template(self.template, self._get_render_context()) return etree.XML(html) -## TODO: Remove once refactor is complete -def make_class_for_render_function(fn): - """ - Take an old-style render function, return a new-style input class. - """ - - class Impl(InputTypeBase): - """ - Inherit all the constructor logic from InputTypeBase... - """ - tags = [fn.__name__] - def get_html(self): - """...delegate to the render function to do the work""" - return fn(self.xml, self.value, self.status, self.system.render_template, self.msg) - - # don't want all the classes to be called Impl (confuses register_input_class). - Impl.__name__ = fn.__name__.capitalize() - return Impl - - -def _reg(fn): - """ - Register an old-style inputtype render function as a new-style subclass of InputTypeBase. - This will go away once converting all input types to the new format is complete. (TODO) - """ - register_input_class(make_class_for_render_function(fn)) - - #----------------------------------------------------------------------------- @@ -253,7 +160,7 @@ class OptionInput(InputTypeBase): } return context -register_input_class(OptionInput) +registry.register(OptionInput) #----------------------------------------------------------------------------- @@ -346,7 +253,7 @@ def extract_choices(element): return choices -register_input_class(ChoiceGroup) +registry.register(ChoiceGroup) #----------------------------------------------------------------------------- @@ -389,7 +296,7 @@ class JavascriptInput(InputTypeBase): } return context -register_input_class(JavascriptInput) +registry.register(JavascriptInput) #----------------------------------------------------------------------------- @@ -445,7 +352,7 @@ class TextLine(InputTypeBase): } return context -register_input_class(TextLine) +registry.register(TextLine) #----------------------------------------------------------------------------- @@ -485,7 +392,7 @@ class FileSubmission(InputTypeBase): 'required_files': self.required_files,} return context -register_input_class(FileSubmission) +registry.register(FileSubmission) #----------------------------------------------------------------------------- @@ -542,7 +449,7 @@ class CodeInput(InputTypeBase): } return context -register_input_class(CodeInput) +registry.register(CodeInput) #----------------------------------------------------------------------------- @@ -576,74 +483,7 @@ class Schematic(InputTypeBase): 'submit_analyses': self.submit_analyses, } return context -register_input_class(Schematic) - -#----------------------------------------------------------------------------- -### TODO: Move out of inputtypes -def math(element, value, status, render_template, msg=''): - ''' - This is not really an input type. It is a convention from Lon-CAPA, used for - displaying a math equation. - - Examples: - - $\displaystyle U(r)=4 U_0 - $r_0$ - - We convert these to [mathjax]...[/mathjax] and [mathjaxinline]...[/mathjaxinline] - - TODO: use shorter tags (but this will require converting problem XML files!) - ''' - mathstr = re.sub('\$(.*)\$', '[mathjaxinline]\\1[/mathjaxinline]', element.text) - mtag = 'mathjax' - if not '\\displaystyle' in mathstr: - mtag += 'inline' - else: - mathstr = mathstr.replace('\\displaystyle', '') - mathstr = mathstr.replace('mathjaxinline]', '%s]' % mtag) - - - # TODO: why are there nested html tags here?? Why are there html tags at all, in fact? - html = '%s%s' % (mathstr, saxutils.escape(element.tail)) - try: - xhtml = etree.XML(html) - except Exception as err: - if False: # TODO needs to be self.system.DEBUG - but can't access system - msg = '

    Error %s

    ' % str(err).replace('<', '<') - msg += ('

    Failed to construct math expression from

    %s

    ' % - html.replace('<', '<')) - msg += "
    " - log.error(msg) - return etree.XML(msg) - else: - raise - # xhtml.tail = element.tail # don't forget to include the tail! - return xhtml - -_reg(math) - -#----------------------------------------------------------------------------- - - -def solution(element, value, status, render_template, msg=''): - ''' - This is not really an input type. It is just a ... which is given an ID, - that is used for displaying an extended answer (a problem "solution") after "show answers" - is pressed. Note that the solution content is NOT sent with the HTML. It is obtained - by an ajax call. - ''' - eid = element.get('id') - size = element.get('size') - context = {'id': eid, - 'value': value, - 'state': status, - 'size': size, - 'msg': msg, - } - html = render_template("solutionspan.html", context) - return etree.XML(html) - -_reg(solution) +registry.register(Schematic) #----------------------------------------------------------------------------- @@ -690,7 +530,7 @@ class ImageInput(InputTypeBase): } return context -register_input_class(ImageInput) +registry.register(ImageInput) #----------------------------------------------------------------------------- @@ -730,7 +570,7 @@ class Crystallography(InputTypeBase): } return context -register_input_class(Crystallography) +registry.register(Crystallography) # ------------------------------------------------------------------------- @@ -799,4 +639,4 @@ class ChemicalEquationInput(InputTypeBase): } return context -register_input_class(ChemicalEquationInput) +registry.register(ChemicalEquationInput) diff --git a/common/lib/capa/capa/tests/__init__.py b/common/lib/capa/capa/tests/__init__.py index c72d2a1538..b06975f6ce 100644 --- a/common/lib/capa/capa/tests/__init__.py +++ b/common/lib/capa/capa/tests/__init__.py @@ -4,13 +4,23 @@ import os from mock import Mock +import xml.sax.saxutils as saxutils + TEST_DIR = os.path.dirname(os.path.realpath(__file__)) +def tst_render_template(template, context): + """ + A test version of render to template. Renders to the repr of the context, completely ignoring + the template name. To make the output valid xml, quotes the content, and wraps it in a
    + """ + return '
    {0}
    '.format(saxutils.escape(repr(context))) + + test_system = Mock( ajax_url='courses/course_id/modx/a_location', track_function=Mock(), get_module=Mock(), - render_template=Mock(), + render_template=tst_render_template, replace_urls=Mock(), user=Mock(), filestore=fs.osfs.OSFS(os.path.join(TEST_DIR, "test_files")), diff --git a/common/lib/capa/capa/tests/test_customrender.py b/common/lib/capa/capa/tests/test_customrender.py new file mode 100644 index 0000000000..7208ab2941 --- /dev/null +++ b/common/lib/capa/capa/tests/test_customrender.py @@ -0,0 +1,76 @@ +from lxml import etree +import unittest +import xml.sax.saxutils as saxutils + +from . import test_system +from capa import customrender + +# just a handy shortcut +lookup_tag = customrender.registry.get_class_for_tag + +def extract_context(xml): + """ + Given an xml element corresponding to the output of test_system.render_template, get back the + original context + """ + return eval(xml.text) + +def quote_attr(s): + return saxutils.quoteattr(s)[1:-1] # don't want the outer quotes + +class HelperTest(unittest.TestCase): + ''' + Make sure that our helper function works! + ''' + def check(self, d): + xml = etree.XML(test_system.render_template('blah', d)) + self.assertEqual(d, extract_context(xml)) + + def test_extract_context(self): + self.check({}) + self.check({1, 2}) + self.check({'id', 'an id'}) + self.check({'with"quote', 'also"quote'}) + + +class SolutionRenderTest(unittest.TestCase): + ''' + Make sure solutions render properly. + ''' + + def test_rendering(self): + solution = 'To compute unicorns, count them.' + xml_str = """{s}""".format(s=solution) + element = etree.fromstring(xml_str) + + renderer = lookup_tag('solution')(test_system, element) + + self.assertEqual(renderer.id, 'solution_12') + + # our test_system "renders" templates to a div with the repr of the context + xml = renderer.get_html() + context = extract_context(xml) + self.assertEqual(context, {'id' : 'solution_12'}) + + +class MathRenderTest(unittest.TestCase): + ''' + Make sure math renders properly. + ''' + + def check_parse(self, latex_in, mathjax_out): + xml_str = """{tex}""".format(tex=latex_in) + element = etree.fromstring(xml_str) + + renderer = lookup_tag('math')(test_system, element) + + self.assertEqual(renderer.mathstr, mathjax_out) + + def test_parsing(self): + self.check_parse('$abc$', '[mathjaxinline]abc[/mathjaxinline]') + self.check_parse('$abc', '$abc') + self.check_parse(r'$\displaystyle 2+2$', '[mathjax] 2+2[/mathjax]') + + + # NOTE: not testing get_html yet because I don't understand why it's doing what it's doing. + diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py index 773f2b3519..992af14bf9 100644 --- a/common/lib/capa/capa/tests/test_inputtypes.py +++ b/common/lib/capa/capa/tests/test_inputtypes.py @@ -1,5 +1,5 @@ """ -Tests of input types (and actually responsetypes too). +Tests of input types. TODO: - test unicode in values, parameters, etc. @@ -7,27 +7,16 @@ TODO: - test funny xml chars -- should never get xml parse error if things are escaped properly. """ -from datetime import datetime -import json -from mock import Mock -from nose.plugins.skip import SkipTest -import os +from lxml import etree import unittest import xml.sax.saxutils as saxutils from . import test_system from capa import inputtypes -from lxml import etree +# just a handy shortcut +lookup_tag = inputtypes.registry.get_class_for_tag -def tst_render_template(template, context): - """ - A test version of render to template. Renders to the repr of the context, completely ignoring the template name. - """ - return repr(context) - - -system = Mock(render_template=tst_render_template) def quote_attr(s): return saxutils.quoteattr(s)[1:-1] # don't want the outer quotes @@ -44,7 +33,7 @@ class OptionInputTest(unittest.TestCase): state = {'value': 'Down', 'id': 'sky_input', 'status': 'answered'} - option_input = inputtypes.get_class_for_tag('optioninput')(system, element, state) + option_input = lookup_tag('optioninput')(test_system, element, state) context = option_input._get_render_context() @@ -80,7 +69,7 @@ class ChoiceGroupTest(unittest.TestCase): 'id': 'sky_input', 'status': 'answered'} - option_input = inputtypes.get_class_for_tag('choicegroup')(system, element, state) + option_input = lookup_tag('choicegroup')(test_system, element, state) context = option_input._get_render_context() @@ -119,7 +108,7 @@ class ChoiceGroupTest(unittest.TestCase): 'id': 'sky_input', 'status': 'answered'} - the_input = inputtypes.get_class_for_tag(tag)(system, element, state) + the_input = lookup_tag(tag)(test_system, element, state) context = the_input._get_render_context() @@ -164,7 +153,7 @@ class JavascriptInputTest(unittest.TestCase): element = etree.fromstring(xml_str) state = {'value': '3',} - the_input = inputtypes.get_class_for_tag('javascriptinput')(system, element, state) + the_input = lookup_tag('javascriptinput')(test_system, element, state) context = the_input._get_render_context() @@ -191,7 +180,7 @@ class TextLineTest(unittest.TestCase): element = etree.fromstring(xml_str) state = {'value': 'BumbleBee',} - the_input = inputtypes.get_class_for_tag('textline')(system, element, state) + the_input = lookup_tag('textline')(test_system, element, state) context = the_input._get_render_context() @@ -219,7 +208,7 @@ class TextLineTest(unittest.TestCase): element = etree.fromstring(xml_str) state = {'value': 'BumbleBee',} - the_input = inputtypes.get_class_for_tag('textline')(system, element, state) + the_input = lookup_tag('textline')(test_system, element, state) context = the_input._get_render_context() @@ -260,7 +249,7 @@ class FileSubmissionTest(unittest.TestCase): state = {'value': 'BumbleBee.py', 'status': 'incomplete', 'feedback' : {'message': '3'}, } - the_input = inputtypes.get_class_for_tag('filesubmission')(system, element, state) + the_input = lookup_tag('filesubmission')(test_system, element, state) context = the_input._get_render_context() @@ -304,7 +293,7 @@ class CodeInputTest(unittest.TestCase): 'status': 'incomplete', 'feedback' : {'message': '3'}, } - the_input = inputtypes.get_class_for_tag('codeinput')(system, element, state) + the_input = lookup_tag('codeinput')(test_system, element, state) context = the_input._get_render_context() @@ -354,7 +343,7 @@ class SchematicTest(unittest.TestCase): state = {'value': value, 'status': 'unsubmitted'} - the_input = inputtypes.get_class_for_tag('schematic')(system, element, state) + the_input = lookup_tag('schematic')(test_system, element, state) context = the_input._get_render_context() @@ -393,7 +382,7 @@ class ImageInputTest(unittest.TestCase): state = {'value': value, 'status': 'unsubmitted'} - the_input = inputtypes.get_class_for_tag('imageinput')(system, element, state) + the_input = lookup_tag('imageinput')(test_system, element, state) context = the_input._get_render_context() @@ -447,7 +436,7 @@ class CrystallographyTest(unittest.TestCase): state = {'value': value, 'status': 'unsubmitted'} - the_input = inputtypes.get_class_for_tag('crystallography')(system, element, state) + the_input = lookup_tag('crystallography')(test_system, element, state) context = the_input._get_render_context() @@ -476,7 +465,7 @@ class ChemicalEquationTest(unittest.TestCase): element = etree.fromstring(xml_str) state = {'value': 'H2OYeah',} - the_input = inputtypes.get_class_for_tag('chemicalequationinput')(system, element, state) + the_input = lookup_tag('chemicalequationinput')(test_system, element, state) context = the_input._get_render_context() From cc8f0a16342e009ae2a545fa7021ddaea90df3d4 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Sat, 27 Oct 2012 19:57:29 -0400 Subject: [PATCH 057/308] Fix merge bugs --- common/lib/capa/capa/inputtypes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 9569958c96..33e9048131 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -584,7 +584,7 @@ class VseprInput(InputTypeBase): tags = ['vsepr_input'] def __init__(self, system, xml, state): - super(ImageInput, self).__init__(system, xml, state) + super(VseprInput, self).__init__(system, xml, state) self.height = xml.get('height') self.width = xml.get('width') @@ -609,7 +609,7 @@ class VseprInput(InputTypeBase): } return context -register_input_class(VseprInput) +registry.register(VseprInput) #-------------------------------------------------------------------------------- From 6324eeeecbf872f39af1c2c8aa672a9a2f7a13e2 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Sat, 27 Oct 2012 20:00:18 -0400 Subject: [PATCH 058/308] add note about mysterious -15 in the code --- common/lib/capa/capa/inputtypes.py | 3 ++- common/lib/capa/capa/tests/test_inputtypes.py | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 33e9048131..0bbf54d153 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -510,7 +510,8 @@ class ImageInput(InputTypeBase): # if value is of the form [x,y] then parse it and send along coordinates of previous answer m = re.match('\[([0-9]+),([0-9]+)]', self.value.strip().replace(' ', '')) if m: - # TODO (vshnayder): why is there a "-15" here?? + # Note: we subtract 15 to compensate for the size of the dot on the screen. + # (which supposedly has size 30). (self.gx, self.gy) = [int(x) - 15 for x in m.groups()] else: (self.gx, self.gy) = (0, 0) diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py index 992af14bf9..ba20f84cb1 100644 --- a/common/lib/capa/capa/tests/test_inputtypes.py +++ b/common/lib/capa/capa/tests/test_inputtypes.py @@ -400,6 +400,7 @@ class ImageInputTest(unittest.TestCase): self.assertEqual(context, expected) def test_with_value(self): + # Check that compensating for the dot size works properly. self.check('[50,40]', 35, 25) def test_without_value(self): From 1d4990458e5248565f68e59ede55409c2b5a6f0a Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Sat, 27 Oct 2012 20:09:02 -0400 Subject: [PATCH 059/308] add todos about would-be-nice refactors --- common/lib/capa/capa/inputtypes.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 0bbf54d153..08cd9ce413 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -25,6 +25,13 @@ graded status as'status' # problem ID for the input element, but it will turn into a dict containing both the # answer and any associated message for the problem ID for the input element. +# TODO: there is a lot of repetitive "grab these elements from xml attributes, with these defaults, +# put them in the context" code. Refactor so class just specifies required and optional attrs (with +# defaults for latter), and InputTypeBase does the right thing. + +# TODO: Quoting and unquoting is handled in a pretty ad-hoc way. Also something that could be done +# properly once in InputTypeBase. + import logging import re import shlex # for splitting quoted strings From 49bad83cafbddbf17984eb82030824b4d1e5c3b4 Mon Sep 17 00:00:00 2001 From: kimth Date: Sun, 28 Oct 2012 04:38:59 +0000 Subject: [PATCH 060/308] Support for multiple rectangle hitboxes in imageresponse --- common/lib/capa/capa/responsetypes.py | 38 ++++++++++--------- .../capa/tests/test_files/imageresponse.xml | 8 +++- .../lib/capa/capa/tests/test_responsetypes.py | 12 +++++- 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/common/lib/capa/capa/responsetypes.py b/common/lib/capa/capa/responsetypes.py index 427067d523..648fc9e861 100644 --- a/common/lib/capa/capa/responsetypes.py +++ b/common/lib/capa/capa/responsetypes.py @@ -1717,7 +1717,7 @@ class ImageResponse(LoncapaResponse): """ Handle student response for image input: the input is a click on an image, which produces an [x,y] coordinate pair. The click is correct if it falls - within a region specified. This region is nominally a rectangle. + within a region specified. This region is a union of rectangles. Lon-CAPA requires that each has a inside it. That doesn't make sense to me (Ike). Instead, let's have it such that @@ -1727,6 +1727,7 @@ class ImageResponse(LoncapaResponse): snippets = [{'snippet': ''' + '''}] response_tag = 'imageresponse' @@ -1743,20 +1744,10 @@ class ImageResponse(LoncapaResponse): for aid in self.answer_ids: # loop through IDs of fields in our stanza given = student_answers[aid] # this should be a string of the form '[x,y]' + correct_map.set(aid, 'incorrect') if not given: # No answer to parse. Mark as incorrect and move on - correct_map.set(aid, 'incorrect') continue - # parse expected answer - # TODO: Compile regexp on file load - m = re.match('[\(\[]([0-9]+),([0-9]+)[\)\]]-[\(\[]([0-9]+),([0-9]+)[\)\]]', - expectedset[aid].strip().replace(' ', '')) - if not m: - msg = 'Error in problem specification! cannot parse rectangle in %s' % ( - etree.tostring(self.ielements[aid], pretty_print=True)) - raise Exception('[capamodule.capa.responsetypes.imageinput] ' + msg) - (llx, lly, urx, ury) = [int(x) for x in m.groups()] - # parse given answer m = re.match('\[([0-9]+),([0-9]+)]', given.strip().replace(' ', '')) if not m: @@ -1764,11 +1755,24 @@ class ImageResponse(LoncapaResponse): 'error grading %s (input=%s)' % (aid, given)) (gx, gy) = [int(x) for x in m.groups()] - # answer is correct if (x,y) is within the specified rectangle - if (llx <= gx <= urx) and (lly <= gy <= ury): - correct_map.set(aid, 'correct') - else: - correct_map.set(aid, 'incorrect') + # Check whether given point lies in any of the solution rectangles + solution_rectangles = expectedset[aid].split(';') + for solution_rectangle in solution_rectangles: + # parse expected answer + # TODO: Compile regexp on file load + m = re.match('[\(\[]([0-9]+),([0-9]+)[\)\]]-[\(\[]([0-9]+),([0-9]+)[\)\]]', + solution_rectangle.strip().replace(' ', '')) + if not m: + msg = 'Error in problem specification! cannot parse rectangle in %s' % ( + etree.tostring(self.ielements[aid], pretty_print=True)) + raise Exception('[capamodule.capa.responsetypes.imageinput] ' + msg) + (llx, lly, urx, ury) = [int(x) for x in m.groups()] + + # answer is correct if (x,y) is within the specified rectangle + if (llx <= gx <= urx) and (lly <= gy <= ury): + correct_map.set(aid, 'correct') + break + return correct_map def get_answers(self): diff --git a/common/lib/capa/capa/tests/test_files/imageresponse.xml b/common/lib/capa/capa/tests/test_files/imageresponse.xml index 72bf06401a..34dba37e3b 100644 --- a/common/lib/capa/capa/tests/test_files/imageresponse.xml +++ b/common/lib/capa/capa/tests/test_files/imageresponse.xml @@ -8,8 +8,14 @@ Hello

    Click on the image where the top skier will stop momentarily if the top skier starts from rest. Click on the image where the lower skier will stop momentarily if the lower skier starts from rest. + +Click on either of the two positions as discussed previously. + +Click on either of the two positions as discussed previously. + +Click on either of the two positions as discussed previously.

    Use conservation of energy.

    - \ No newline at end of file + diff --git a/common/lib/capa/capa/tests/test_responsetypes.py b/common/lib/capa/capa/tests/test_responsetypes.py index f2fa873080..bcac555b5e 100644 --- a/common/lib/capa/capa/tests/test_responsetypes.py +++ b/common/lib/capa/capa/tests/test_responsetypes.py @@ -53,12 +53,22 @@ class ImageResponseTest(unittest.TestCase): imageresponse_file = os.path.dirname(__file__) + "/test_files/imageresponse.xml" test_lcp = lcp.LoncapaProblem(open(imageresponse_file).read(), '1', system=test_system) correct_answers = {'1_2_1': '(490,11)-(556,98)', - '1_2_2': '(242,202)-(296,276)'} + '1_2_2': '(242,202)-(296,276)', + '1_2_3': '(490,11)-(556,98);(242,202)-(296,276)', + '1_2_4': '(490,11)-(556,98);(242,202)-(296,276)', + '1_2_5': '(490,11)-(556,98);(242,202)-(296,276)', + } test_answers = {'1_2_1': '[500,20]', '1_2_2': '[250,300]', + '1_2_3': '[500,20]', + '1_2_4': '[250,250]', + '1_2_5': '[10,10]', } self.assertEquals(test_lcp.grade_answers(test_answers).get_correctness('1_2_1'), 'correct') self.assertEquals(test_lcp.grade_answers(test_answers).get_correctness('1_2_2'), 'incorrect') + self.assertEquals(test_lcp.grade_answers(test_answers).get_correctness('1_2_3'), 'correct') + self.assertEquals(test_lcp.grade_answers(test_answers).get_correctness('1_2_4'), 'correct') + self.assertEquals(test_lcp.grade_answers(test_answers).get_correctness('1_2_5'), 'incorrect') class SymbolicResponseTest(unittest.TestCase): From f728123caa3ef826994c9e0db3fde96fb4f0720e Mon Sep 17 00:00:00 2001 From: Arjun Singh Date: Sun, 28 Oct 2012 15:40:36 -0700 Subject: [PATCH 061/308] Improve fileinput message --- common/lib/capa/capa/inputtypes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 40fe24434e..57cb7ee90f 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -493,7 +493,7 @@ def filesubmission(element, value, status, render_template, msg=''): if status == 'incomplete': status = 'queued' queue_len = msg - msg = 'Submitted to grader.' + msg = "Your file(s) have been submitted; as soon as your submission is graded, this message will be replaced with the grader's feedback." context = { 'id': eid, 'state': status, From 5329de8a43075e8e29825a93e57d6c315ad993dd Mon Sep 17 00:00:00 2001 From: Brian Wilson Date: Sun, 28 Oct 2012 19:22:41 -0400 Subject: [PATCH 062/308] Update startup script for 12.10 Ubuntu. Added "quantal" to the list of known distribution names. --- create-dev-env.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/create-dev-env.sh b/create-dev-env.sh index f7df66a3bf..5691315039 100755 --- a/create-dev-env.sh +++ b/create-dev-env.sh @@ -190,7 +190,7 @@ case `uname -s` in } distro=`lsb_release -cs` case $distro in - maya|lisa|natty|oneiric|precise) + maya|lisa|natty|oneiric|precise|quantal) output "Installing ubuntu requirements" sudo apt-get -y update sudo apt-get -y install $APT_PKGS From e29d244a8f07c9f40ce8f67c1db6d1176a1acc47 Mon Sep 17 00:00:00 2001 From: Arjun Singh Date: Sun, 28 Oct 2012 21:47:43 -0700 Subject: [PATCH 063/308] allow saving nonrandomized problems --- common/lib/xmodule/xmodule/capa_module.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/common/lib/xmodule/xmodule/capa_module.py b/common/lib/xmodule/xmodule/capa_module.py index 634c360550..f326d5ac38 100644 --- a/common/lib/xmodule/xmodule/capa_module.py +++ b/common/lib/xmodule/xmodule/capa_module.py @@ -120,6 +120,8 @@ class CapaModule(XModule): self.show_answer = self.metadata.get('showanswer', 'closed') + self.force_save_button = self.metadata.get('force_save_button', False) + if self.show_answer == "": self.show_answer = "closed" @@ -322,7 +324,7 @@ class CapaModule(XModule): # We don't need a "save" button if infinite number of attempts and # non-randomized - if self.max_attempts is None and self.rerandomize != "always": + if not self.force_save_button and (self.max_attempts is None and self.rerandomize != "always"): save_button = False context = {'problem': content, From 75f0a56d703916edc47bbdf44740ee2f0d119d85 Mon Sep 17 00:00:00 2001 From: Arjun Singh Date: Sun, 28 Oct 2012 21:57:28 -0700 Subject: [PATCH 064/308] Change documentation, make values strings for save button forcing --- common/lib/xmodule/xmodule/capa_module.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/common/lib/xmodule/xmodule/capa_module.py b/common/lib/xmodule/xmodule/capa_module.py index f326d5ac38..151c726f66 100644 --- a/common/lib/xmodule/xmodule/capa_module.py +++ b/common/lib/xmodule/xmodule/capa_module.py @@ -120,7 +120,7 @@ class CapaModule(XModule): self.show_answer = self.metadata.get('showanswer', 'closed') - self.force_save_button = self.metadata.get('force_save_button', False) + self.force_save_button = self.metadata.get('force_save_button', 'false') if self.show_answer == "": self.show_answer = "closed" @@ -322,9 +322,10 @@ class CapaModule(XModule): if not self.lcp.done: reset_button = False - # We don't need a "save" button if infinite number of attempts and - # non-randomized - if not self.force_save_button and (self.max_attempts is None and self.rerandomize != "always"): + # We may not need a "save" button if infinite number of attempts and + # non-randomized. The problem author can force it. It's a bit weird for + # randomization to control this; should perhaps be cleaned up. + if (self.force_save_button == "false") and (self.max_attempts is None and self.rerandomize != "always"): save_button = False context = {'problem': content, From 1a843c2d77ba61664d2b913b55785806045c9e4e Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Mon, 29 Oct 2012 07:23:27 -0400 Subject: [PATCH 065/308] Remove non-working TrueFalse functionality from choicegroup, combine tests with radiogroup and checkboxgroup --- common/lib/capa/capa/inputtypes.py | 11 ++--- common/lib/capa/capa/tests/test_inputtypes.py | 47 ++----------------- 2 files changed, 7 insertions(+), 51 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 08cd9ce413..690ece4dc5 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -202,16 +202,11 @@ class ChoiceGroup(InputTypeBase): def __init__(self, system, xml, state): super(ChoiceGroup, self).__init__(system, xml, state) + # suffix is '' or [] to change the way the input is handled in --as a scalar or vector + # value. (VS: would be nice to make to this less hackish). if self.tag == 'choicegroup': self.suffix = '' - if self.xml.get('type') == "MultipleChoice": - self.element_type = "radio" - elif self.xml.get('type') == "TrueFalse": - # Huh? Why TrueFalse->checkbox? Each input can be true / false separately? - self.element_type = "checkbox" - else: - self.element_type = "radio" - + self.element_type = "radio" elif self.tag == 'radiogroup': self.element_type = "radio" self.suffix = '[]' diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py index ba20f84cb1..6c5b1cca15 100644 --- a/common/lib/capa/capa/tests/test_inputtypes.py +++ b/common/lib/capa/capa/tests/test_inputtypes.py @@ -48,50 +48,8 @@ class OptionInputTest(unittest.TestCase): class ChoiceGroupTest(unittest.TestCase): ''' - Test choice groups. + Test choice groups, radio groups, and checkbox groups ''' - def test_mult_choice(self): - xml_template = """ - - This is foil One. - This is foil Two. - This is foil Three. - - """ - - def check_type(type_str, expected_input_type): - print "checking for type_str='{0}'".format(type_str) - xml_str = xml_template.format(type_str) - - element = etree.fromstring(xml_str) - - state = {'value': 'foil3', - 'id': 'sky_input', - 'status': 'answered'} - - option_input = lookup_tag('choicegroup')(test_system, element, state) - - context = option_input._get_render_context() - - expected = {'id': 'sky_input', - 'value': 'foil3', - 'state': 'answered', - 'input_type': expected_input_type, - 'choices': [('foil1', 'This is foil One.'), - ('foil2', 'This is foil Two.'), - ('foil3', 'This is foil Three.'),], - 'name_array_suffix': '', # what is this for?? - } - - self.assertEqual(context, expected) - - check_type('', 'radio') - check_type('type=""', 'radio') - check_type('type="MultipleChoice"', 'radio') - check_type('type="TrueFalse"', 'checkbox') - # fallback. - check_type('type="StrangeUnknown"', 'radio') - def check_group(self, tag, expected_input_type, expected_suffix): xml_str = """ @@ -124,6 +82,9 @@ class ChoiceGroupTest(unittest.TestCase): self.assertEqual(context, expected) + def test_choicegroup(self): + self.check_group('choicegroup', 'radio', '') + def test_radiogroup(self): self.check_group('radiogroup', 'radio', '[]') From d6cb432842e26e56ad3d085ceb1788c9ea09f256 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Mon, 29 Oct 2012 07:42:11 -0400 Subject: [PATCH 066/308] Replace overriding constructor with a setup() method. - allows catching any exceptions and making sure the xml is in the error message - isolates subclasses from external interface a bit --- common/lib/capa/capa/inputtypes.py | 130 +++++++++++++++-------------- 1 file changed, 69 insertions(+), 61 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 690ece4dc5..812c9a6555 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -32,13 +32,14 @@ graded status as'status' # TODO: Quoting and unquoting is handled in a pretty ad-hoc way. Also something that could be done # properly once in InputTypeBase. +import json import logging +from lxml import etree import re import shlex # for splitting quoted strings -import json - -from lxml import etree +import sys import xml.sax.saxutils as saxutils + from registry import TagRegistry log = logging.getLogger('mitx.' + __name__) @@ -99,6 +100,26 @@ class InputTypeBase(object): self.status = state.get('status', 'unanswered') + # Call subclass "constructor" -- means they don't have to worry about calling + # super().__init__, and are isolated from changes to the input constructor interface. + try: + self.setup() + except Exception as err: + # Something went wrong: add xml to message, but keep the traceback + msg = "Error in xml '{x}': {err} ".format(x=etree.tostring(xml), err=str(err)) + raise Exception, msg, sys.exc_info()[2] + + + def setup(self): + """ + InputTypes should override this to do any needed initialization. It is called after the + constructor, so all base attributes will be set. + + If this method raises an exception, it will be wrapped with a message that includes the + problem xml. + """ + pass + def _get_render_context(self): """ Abstract method. Subclasses should implement to return the dictionary @@ -135,15 +156,11 @@ class OptionInput(InputTypeBase): template = "optioninput.html" tags = ['optioninput'] - def __init__(self, system, xml, state): - super(OptionInput, self).__init__(system, xml, state) - + def setup(self): # Extract the options... options = self.xml.get('options') if not options: - raise Exception( - "[courseware.capa.inputtypes.optioninput] Missing options specification in " - + etree.tostring(self.xml)) + raise ValueError("optioninput: Missing 'options' specification.") # parse the set of possible options oset = shlex.shlex(options[1:-1]) @@ -199,9 +216,7 @@ class ChoiceGroup(InputTypeBase): template = "choicegroup.html" tags = ['choicegroup', 'radiogroup', 'checkboxgroup'] - def __init__(self, system, xml, state): - super(ChoiceGroup, self).__init__(system, xml, state) - + def setup(self): # suffix is '' or [] to change the way the input is handled in --as a scalar or vector # value. (VS: would be nice to make to this less hackish). if self.tag == 'choicegroup': @@ -242,9 +257,9 @@ def extract_choices(element): for choice in element: if choice.tag != 'choice': - raise Exception("[courseware.capa.inputtypes.extract_choices] \ - Expected a tag; got %s instead" - % choice.tag) + raise Exception( + "[capa.inputtypes.extract_choices] Expected a tag; got %s instead" + % choice.tag) choice_text = ''.join([etree.tostring(x) for x in choice]) if choice.text is not None: # TODO: fix order? @@ -270,8 +285,7 @@ class JavascriptInput(InputTypeBase): template = "javascriptinput.html" tags = ['javascriptinput'] - def __init__(self, system, xml, state): - super(JavascriptInput, self).__init__(system, xml, state) + def setup(self): # Need to provide a value that JSON can parse if there is no # student-supplied value yet. if self.value == "": @@ -311,8 +325,7 @@ class TextLine(InputTypeBase): template = "textinput.html" tags = ['textline'] - def __init__(self, system, xml, state): - super(TextLine, self).__init__(system, xml, state) + def setup(self): self.size = self.xml.get('size') # if specified, then textline is hidden and input id is stored @@ -366,12 +379,11 @@ class FileSubmission(InputTypeBase): template = "filesubmission.html" tags = ['filesubmission'] - def __init__(self, system, xml, state): - super(FileSubmission, self).__init__(system, xml, state) + def setup(self): escapedict = {'"': '"'} - self.allowed_files = json.dumps(xml.get('allowed_files', '').split()) + self.allowed_files = json.dumps(self.xml.get('allowed_files', '').split()) self.allowed_files = saxutils.escape(self.allowed_files, escapedict) - self.required_files = json.dumps(xml.get('required_files', '').split()) + self.required_files = json.dumps(self.xml.get('required_files', '').split()) self.required_files = saxutils.escape(self.required_files, escapedict) # Check if problem has been queued @@ -410,17 +422,16 @@ class CodeInput(InputTypeBase): 'textbox', # Old name for this. Still supported, but deprecated. ] - def __init__(self, system, xml, state): - super(CodeInput, self).__init__(system, xml, state) - self.rows = xml.get('rows') or '30' - self.cols = xml.get('cols') or '80' + def setup(self): + self.rows = self.xml.get('rows') or '30' + self.cols = self.xml.get('cols') or '80' # if specified, then textline is hidden and id is stored in div of name given by hidden - self.hidden = xml.get('hidden', '') + self.hidden = self.xml.get('hidden', '') # if no student input yet, then use the default input given by the problem if not self.value: - self.value = xml.text + self.value = self.xml.text # Check if problem has been queued self.queue_len = 0 @@ -431,9 +442,9 @@ class CodeInput(InputTypeBase): self.msg = 'Submitted to grader.' # For CodeMirror - self.mode = xml.get('mode', 'python') - self.linenumbers = xml.get('linenumbers', 'true') - self.tabsize = int(xml.get('tabsize', '4')) + self.mode = self.xml.get('mode', 'python') + self.linenumbers = self.xml.get('linenumbers', 'true') + self.tabsize = int(self.xml.get('tabsize', '4')) def _get_render_context(self): @@ -462,14 +473,13 @@ class Schematic(InputTypeBase): template = "schematicinput.html" tags = ['schematic'] - def __init__(self, system, xml, state): - super(Schematic, self).__init__(system, xml, state) - self.height = xml.get('height') - self.width = xml.get('width') - self.parts = xml.get('parts') - self.analyses = xml.get('analyses') - self.initial_value = xml.get('initial_value') - self.submit_analyses = xml.get('submit_analyses') + def setup(self): + self.height = self.xml.get('height') + self.width = self.xml.get('width') + self.parts = self.xml.get('parts') + self.analyses = self.xml.get('analyses') + self.initial_value = self.xml.get('initial_value') + self.submit_analyses = self.xml.get('submit_analyses') def _get_render_context(self): @@ -482,7 +492,7 @@ class Schematic(InputTypeBase): 'height': self.height, 'parts': self.parts, 'analyses': self.analyses, - 'submit_analyses': self.submit_analyses, } + 'submit_analyses': self.submit_analyses,} return context registry.register(Schematic) @@ -503,11 +513,10 @@ class ImageInput(InputTypeBase): template = "imageinput.html" tags = ['imageinput'] - def __init__(self, system, xml, state): - super(ImageInput, self).__init__(system, xml, state) - self.src = xml.get('src') - self.height = xml.get('height') - self.width = xml.get('width') + def setup(self): + self.src = self.xml.get('src') + self.height = self.xml.get('height') + self.width = self.xml.get('width') # if value is of the form [x,y] then parse it and send along coordinates of previous answer m = re.match('\[([0-9]+),([0-9]+)]', self.value.strip().replace(' ', '')) @@ -547,15 +556,14 @@ class Crystallography(InputTypeBase): template = "crystallography.html" tags = ['crystallography'] - def __init__(self, system, xml, state): - super(Crystallography, self).__init__(system, xml, state) - self.height = xml.get('height') - self.width = xml.get('width') - self.size = xml.get('size') + def setup(self): + self.height = self.xml.get('height') + self.width = self.xml.get('width') + self.size = self.xml.get('size') # if specified, then textline is hidden and id is stored in div of name given by hidden - self.hidden = xml.get('hidden', '') + self.hidden = self.xml.get('hidden', '') # Escape answers with quotes, so they don't crash the system! escapedict = {'"': '"'} @@ -586,18 +594,16 @@ class VseprInput(InputTypeBase): template = 'vsepr_input.html' tags = ['vsepr_input'] - def __init__(self, system, xml, state): - super(VseprInput, self).__init__(system, xml, state) - - self.height = xml.get('height') - self.width = xml.get('width') + def setup(self): + self.height = self.xml.get('height') + self.width = self.xml.get('width') # Escape answers with quotes, so they don't crash the system! escapedict = {'"': '"'} self.value = saxutils.escape(self.value, escapedict) - self.molecules = xml.get('molecules') - self.geometries = xml.get('geometries') + self.molecules = self.xml.get('molecules') + self.geometries = self.xml.get('geometries') def _get_render_context(self): @@ -631,13 +637,15 @@ class ChemicalEquationInput(InputTypeBase): template = "chemicalequationinput.html" tags = ['chemicalequationinput'] + def setup(self): + self.size = self.xml.get('size', '20') + def _get_render_context(self): - size = self.xml.get('size', '20') context = { 'id': self.id, 'value': self.value, 'status': self.status, - 'size': size, + 'size': self.size, 'previewer': '/static/js/capa/chemical_equation_preview.js', } return context From a97298e8f7c1dd85fd49af191d21d5ada3fc5488 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Mon, 29 Oct 2012 07:48:53 -0400 Subject: [PATCH 067/308] add note about documenting js input --- common/lib/capa/capa/inputtypes.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 812c9a6555..e295ac9013 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -280,6 +280,11 @@ class JavascriptInput(InputTypeBase): """ Hidden field for javascript to communicate via; also loads the required scripts for rendering the problem and passes data to the problem. + + TODO (arjun?): document this in detail. Initial notes: + - display_class is a subclass of XProblemClassDisplay (see + xmodule/xmodule/js/src/capa/display.coffee), + - display_file is the js script to be in /static/js/ where display_class is defined. """ template = "javascriptinput.html" From 02bd99697b9907da3ddf860bb25618a074fbc98b Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Mon, 29 Oct 2012 07:49:33 -0400 Subject: [PATCH 068/308] Clean up section ids and classes - all inputtypes should have id inputtype_${id} - should have class capa_inputtype --- common/lib/capa/capa/templates/crystallography.html | 2 +- common/lib/capa/capa/templates/textinput.html | 8 +------- common/lib/capa/capa/templates/vsepr_input.html | 2 +- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/common/lib/capa/capa/templates/crystallography.html b/common/lib/capa/capa/templates/crystallography.html index 71578f1fa0..ee9b249d3d 100644 --- a/common/lib/capa/capa/templates/crystallography.html +++ b/common/lib/capa/capa/templates/crystallography.html @@ -1,4 +1,4 @@ -
    +
    diff --git a/common/lib/capa/capa/templates/textinput.html b/common/lib/capa/capa/templates/textinput.html index 14d54d4cde..d2059fdc58 100644 --- a/common/lib/capa/capa/templates/textinput.html +++ b/common/lib/capa/capa/templates/textinput.html @@ -1,12 +1,6 @@ <% doinline = "inline" if inline else "" %> -<% -# TODO: -# Is id inputtype_${id} vs textinput_${id} important? -# Is class capa_inputtype vs textinput important? -# should really just use one. -%> -
    +
    % if preprocessor is not None:
    diff --git a/common/lib/capa/capa/templates/vsepr_input.html b/common/lib/capa/capa/templates/vsepr_input.html index 5194551d50..a6bd465554 100644 --- a/common/lib/capa/capa/templates/vsepr_input.html +++ b/common/lib/capa/capa/templates/vsepr_input.html @@ -1,4 +1,4 @@ -
    +
    -
    From 318ea9b1353fccfefbeec1eda646d2927527c16a Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Mon, 29 Oct 2012 07:51:58 -0400 Subject: [PATCH 069/308] add back mathjax textarea --- common/lib/capa/capa/templates/textinput.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/common/lib/capa/capa/templates/textinput.html b/common/lib/capa/capa/templates/textinput.html index d2059fdc58..3685742a3c 100644 --- a/common/lib/capa/capa/templates/textinput.html +++ b/common/lib/capa/capa/templates/textinput.html @@ -48,6 +48,9 @@ % if do_math:
    `{::}`
    + + % endif % if state in ['unsubmitted', 'correct', 'incorrect', 'incomplete']: From ab03f3dddf4e32f7200c2951b7a2349aca771d9b Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Mon, 29 Oct 2012 07:56:10 -0400 Subject: [PATCH 070/308] move textinput.html to textline.html for consistency with other inputs --- common/lib/capa/capa/inputtypes.py | 2 +- .../lib/capa/capa/templates/{textinput.html => textline.html} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename common/lib/capa/capa/templates/{textinput.html => textline.html} (100%) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index e295ac9013..26e2de8fa4 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -327,7 +327,7 @@ class TextLine(InputTypeBase): """ - template = "textinput.html" + template = "textline.html" tags = ['textline'] def setup(self): diff --git a/common/lib/capa/capa/templates/textinput.html b/common/lib/capa/capa/templates/textline.html similarity index 100% rename from common/lib/capa/capa/templates/textinput.html rename to common/lib/capa/capa/templates/textline.html From 516b720f1e393a04443e37fea844d53134a8697c Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Mon, 29 Oct 2012 08:05:07 -0400 Subject: [PATCH 071/308] Rename: use 'status' in templates as well as in the code. --- common/lib/capa/capa/inputtypes.py | 22 ++++++++----------- .../lib/capa/capa/templates/choicegroup.html | 8 +++---- common/lib/capa/capa/templates/codeinput.html | 10 ++++----- .../capa/capa/templates/crystallography.html | 18 +++++++-------- .../capa/capa/templates/filesubmission.html | 10 ++++----- .../lib/capa/capa/templates/imageinput.html | 8 +++---- .../lib/capa/capa/templates/jstextline.html | 8 +++---- .../lib/capa/capa/templates/optioninput.html | 8 +++---- .../capa/capa/templates/schematicinput.html | 8 +++---- common/lib/capa/capa/templates/textline.html | 18 +++++++-------- .../lib/capa/capa/templates/vsepr_input.html | 18 +++++++-------- common/lib/capa/capa/tests/test_inputtypes.py | 19 ++++++++-------- 12 files changed, 75 insertions(+), 80 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 26e2de8fa4..e2d7708ee3 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -21,10 +21,6 @@ Each input type takes the xml tree as 'element', the previous answer as 'value', graded status as'status' """ -# TODO: rename "state" to "status" for all below. status is currently the answer for the -# problem ID for the input element, but it will turn into a dict containing both the -# answer and any associated message for the problem ID for the input element. - # TODO: there is a lot of repetitive "grab these elements from xml attributes, with these defaults, # put them in the context" code. Refactor so class just specifies required and optional attrs (with # defaults for latter), and InputTypeBase does the right thing. @@ -177,7 +173,7 @@ class OptionInput(InputTypeBase): context = { 'id': self.id, 'value': self.value, - 'state': self.status, + 'status': self.status, 'msg': self.msg, 'options': self.osetdict, 'inline': self.xml.get('inline',''), @@ -236,7 +232,7 @@ class ChoiceGroup(InputTypeBase): def _get_render_context(self): context = {'id': self.id, 'value': self.value, - 'state': self.status, + 'status': self.status, 'input_type': self.element_type, 'choices': self.choices, 'name_array_suffix': self.suffix} @@ -362,7 +358,7 @@ class TextLine(InputTypeBase): context = {'id': self.id, 'value': value, - 'state': self.status, + 'status': self.status, 'size': self.size, 'msg': self.msg, 'hidden': self.hidden, @@ -403,7 +399,7 @@ class FileSubmission(InputTypeBase): def _get_render_context(self): context = {'id': self.id, - 'state': self.status, + 'status': self.status, 'msg': self.msg, 'value': self.value, 'queue_len': self.queue_len, @@ -455,7 +451,7 @@ class CodeInput(InputTypeBase): context = {'id': self.id, 'value': self.value, - 'state': self.status, + 'status': self.status, 'msg': self.msg, 'mode': self.mode, 'linenumbers': self.linenumbers, @@ -492,7 +488,7 @@ class Schematic(InputTypeBase): context = {'id': self.id, 'value': self.value, 'initial_value': self.initial_value, - 'state': self.status, + 'status': self.status, 'width': self.width, 'height': self.height, 'parts': self.parts, @@ -542,7 +538,7 @@ class ImageInput(InputTypeBase): 'src': self.src, 'gx': self.gx, 'gy': self.gy, - 'state': self.status, # to change (VS: to what??) + 'status': self.status, # to change (VS: to what??) 'msg': self.msg, # to change } return context @@ -577,7 +573,7 @@ class Crystallography(InputTypeBase): def _get_render_context(self): context = {'id': self.id, 'value': self.value, - 'state': self.status, + 'status': self.status, 'size': self.size, 'msg': self.msg, 'hidden': self.hidden, @@ -614,7 +610,7 @@ class VseprInput(InputTypeBase): context = {'id': self.id, 'value': self.value, - 'state': self.status, + 'status': self.status, 'msg': self.msg, 'width': self.width, 'height': self.height, diff --git a/common/lib/capa/capa/templates/choicegroup.html b/common/lib/capa/capa/templates/choicegroup.html index ce1b6d9476..457d9e7817 100644 --- a/common/lib/capa/capa/templates/choicegroup.html +++ b/common/lib/capa/capa/templates/choicegroup.html @@ -1,12 +1,12 @@
    - % if state == 'unsubmitted': + % if status == 'unsubmitted': - % elif state == 'correct': + % elif status == 'correct': - % elif state == 'incorrect': + % elif status == 'incorrect': - % elif state == 'incomplete': + % elif status == 'incomplete': % endif
    diff --git a/common/lib/capa/capa/templates/codeinput.html b/common/lib/capa/capa/templates/codeinput.html index 6e44712d9f..5c2ff2aca5 100644 --- a/common/lib/capa/capa/templates/codeinput.html +++ b/common/lib/capa/capa/templates/codeinput.html @@ -6,13 +6,13 @@ >${value|h}
    - % if state == 'unsubmitted': + % if status == 'unsubmitted': Unanswered - % elif state == 'correct': + % elif status == 'correct': Correct - % elif state == 'incorrect': + % elif status == 'incorrect': Incorrect - % elif state == 'queued': + % elif status == 'queued': Queued ${queue_len} % endif @@ -21,7 +21,7 @@
    % endif -

    ${state}

    +

    ${status}

    diff --git a/common/lib/capa/capa/templates/crystallography.html b/common/lib/capa/capa/templates/crystallography.html index ee9b249d3d..f46e2f753a 100644 --- a/common/lib/capa/capa/templates/crystallography.html +++ b/common/lib/capa/capa/templates/crystallography.html @@ -6,13 +6,13 @@
    - % if state == 'unsubmitted': + % if status == 'unsubmitted':
    - % elif state == 'correct': + % elif status == 'correct':
    - % elif state == 'incorrect': + % elif status == 'incorrect':
    - % elif state == 'incomplete': + % elif status == 'incomplete':
    % endif % if hidden: @@ -29,13 +29,13 @@ />

    - % if state == 'unsubmitted': + % if status == 'unsubmitted': unanswered - % elif state == 'correct': + % elif status == 'correct': correct - % elif state == 'incorrect': + % elif status == 'incorrect': incorrect - % elif state == 'incomplete': + % elif status == 'incomplete': incomplete % endif

    @@ -45,7 +45,7 @@ % if msg: ${msg|n} % endif -% if state in ['unsubmitted', 'correct', 'incorrect', 'incomplete']: +% if status in ['unsubmitted', 'correct', 'incorrect', 'incomplete']:
    % endif diff --git a/common/lib/capa/capa/templates/filesubmission.html b/common/lib/capa/capa/templates/filesubmission.html index 630a3222dc..2572b25f8a 100644 --- a/common/lib/capa/capa/templates/filesubmission.html +++ b/common/lib/capa/capa/templates/filesubmission.html @@ -1,16 +1,16 @@
    - % if state == 'unsubmitted': + % if status == 'unsubmitted': Unanswered - % elif state == 'correct': + % elif status == 'correct': Correct - % elif state == 'incorrect': + % elif status == 'incorrect': Incorrect - % elif state == 'queued': + % elif status == 'queued': Queued ${queue_len} % endif -

    ${state}

    +

    ${status}

    diff --git a/common/lib/capa/capa/templates/imageinput.html b/common/lib/capa/capa/templates/imageinput.html index ceda98ee8f..97279c1b8c 100644 --- a/common/lib/capa/capa/templates/imageinput.html +++ b/common/lib/capa/capa/templates/imageinput.html @@ -4,13 +4,13 @@
    - % if state == 'unsubmitted': + % if status == 'unsubmitted': - % elif state == 'correct': + % elif status == 'correct': - % elif state == 'incorrect': + % elif status == 'incorrect': - % elif state == 'incomplete': + % elif status == 'incomplete': % endif diff --git a/common/lib/capa/capa/templates/jstextline.html b/common/lib/capa/capa/templates/jstextline.html index 045f329ad4..7e5fd94a4b 100644 --- a/common/lib/capa/capa/templates/jstextline.html +++ b/common/lib/capa/capa/templates/jstextline.html @@ -18,13 +18,13 @@ % endif - % if state == 'unsubmitted': + % if status == 'unsubmitted': - % elif state == 'correct': + % elif status == 'correct': - % elif state == 'incorrect': + % elif status == 'incorrect': - % elif state == 'incomplete': + % elif status == 'incomplete': % endif % if msg: diff --git a/common/lib/capa/capa/templates/optioninput.html b/common/lib/capa/capa/templates/optioninput.html index 06c7ed1257..ac62c0c9cb 100644 --- a/common/lib/capa/capa/templates/optioninput.html +++ b/common/lib/capa/capa/templates/optioninput.html @@ -12,13 +12,13 @@ - % if state == 'unsubmitted': + % if status == 'unsubmitted': - % elif state == 'correct': + % elif status == 'correct': - % elif state == 'incorrect': + % elif status == 'incorrect': - % elif state == 'incomplete': + % elif status == 'incomplete': % endif diff --git a/common/lib/capa/capa/templates/schematicinput.html b/common/lib/capa/capa/templates/schematicinput.html index f79dc66d24..ff8cc64073 100644 --- a/common/lib/capa/capa/templates/schematicinput.html +++ b/common/lib/capa/capa/templates/schematicinput.html @@ -12,13 +12,13 @@ - % if state == 'unsubmitted': + % if status == 'unsubmitted': - % elif state == 'correct': + % elif status == 'correct': - % elif state == 'incorrect': + % elif status == 'incorrect': - % elif state == 'incomplete': + % elif status == 'incomplete': % endif diff --git a/common/lib/capa/capa/templates/textline.html b/common/lib/capa/capa/templates/textline.html index 3685742a3c..97c512fc00 100644 --- a/common/lib/capa/capa/templates/textline.html +++ b/common/lib/capa/capa/templates/textline.html @@ -7,13 +7,13 @@
    % endif - % if state == 'unsubmitted': + % if status == 'unsubmitted':
    - % elif state == 'correct': + % elif status == 'correct':
    - % elif state == 'incorrect': + % elif status == 'incorrect':
    - % elif state == 'incomplete': + % elif status == 'incomplete':
    % endif % if hidden: @@ -33,13 +33,13 @@ />

    - % if state == 'unsubmitted': + % if status == 'unsubmitted': unanswered - % elif state == 'correct': + % elif status == 'correct': correct - % elif state == 'incorrect': + % elif status == 'incorrect': incorrect - % elif state == 'incomplete': + % elif status == 'incomplete': incomplete % endif

    @@ -53,7 +53,7 @@ % endif -% if state in ['unsubmitted', 'correct', 'incorrect', 'incomplete']: +% if status in ['unsubmitted', 'correct', 'incorrect', 'incomplete']:
    % endif diff --git a/common/lib/capa/capa/templates/vsepr_input.html b/common/lib/capa/capa/templates/vsepr_input.html index a6bd465554..eaa6ac2174 100644 --- a/common/lib/capa/capa/templates/vsepr_input.html +++ b/common/lib/capa/capa/templates/vsepr_input.html @@ -11,13 +11,13 @@
    - % if state == 'unsubmitted': + % if status == 'unsubmitted':
    - % elif state == 'correct': + % elif status == 'correct':
    - % elif state == 'incorrect': + % elif status == 'incorrect':
    - % elif state == 'incomplete': + % elif status == 'incomplete':
    % endif @@ -26,13 +26,13 @@ />

    - % if state == 'unsubmitted': + % if status == 'unsubmitted': unanswered - % elif state == 'correct': + % elif status == 'correct': correct - % elif state == 'incorrect': + % elif status == 'incorrect': incorrect - % elif state == 'incomplete': + % elif status == 'incomplete': incomplete % endif

    @@ -42,7 +42,7 @@ % if msg: ${msg|n} % endif -% if state in ['unsubmitted', 'correct', 'incorrect', 'incomplete']: +% if status in ['unsubmitted', 'correct', 'incorrect', 'incomplete']:
    % endif diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py index 6c5b1cca15..65a22a876e 100644 --- a/common/lib/capa/capa/tests/test_inputtypes.py +++ b/common/lib/capa/capa/tests/test_inputtypes.py @@ -39,7 +39,7 @@ class OptionInputTest(unittest.TestCase): expected = {'value': 'Down', 'options': [('Up', 'Up'), ('Down', 'Down')], - 'state': 'answered', + 'status': 'answered', 'msg': '', 'inline': '', 'id': 'sky_input'} @@ -72,7 +72,7 @@ class ChoiceGroupTest(unittest.TestCase): expected = {'id': 'sky_input', 'value': 'foil3', - 'state': 'answered', + 'status': 'answered', 'input_type': expected_input_type, 'choices': [('foil1', 'This is foil One.'), ('foil2', 'This is foil Two.'), @@ -147,7 +147,7 @@ class TextLineTest(unittest.TestCase): expected = {'id': 'prob_1_2', 'value': 'BumbleBee', - 'state': 'unanswered', + 'status': 'unanswered', 'size': size, 'msg': '', 'hidden': False, @@ -175,7 +175,7 @@ class TextLineTest(unittest.TestCase): expected = {'id': 'prob_1_2', 'value': 'BumbleBee', - 'state': 'unanswered', + 'status': 'unanswered', 'size': size, 'msg': '', 'hidden': False, @@ -215,7 +215,7 @@ class FileSubmissionTest(unittest.TestCase): context = the_input._get_render_context() expected = {'id': 'prob_1_2', - 'state': 'queued', + 'status': 'queued', 'msg': 'Submitted to grader.', 'value': 'BumbleBee.py', 'queue_len': '3', @@ -260,7 +260,7 @@ class CodeInputTest(unittest.TestCase): expected = {'id': 'prob_1_2', 'value': 'print "good evening"', - 'state': 'queued', + 'status': 'queued', 'msg': 'Submitted to grader.', 'mode': mode, 'linenumbers': linenumbers, @@ -311,7 +311,7 @@ class SchematicTest(unittest.TestCase): expected = {'id': 'prob_1_2', 'value': value, 'initial_value': initial_value, - 'state': 'unsubmitted', + 'status': 'unsubmitted', 'width': width, 'height': height, 'parts': parts, @@ -349,13 +349,12 @@ class ImageInputTest(unittest.TestCase): expected = {'id': 'prob_1_2', 'value': value, - 'state': 'unsubmitted', + 'status': 'unsubmitted', 'width': width, 'height': height, 'src': src, 'gx': egx, 'gy': egy, - 'state': 'unsubmitted', 'msg': ''} self.assertEqual(context, expected) @@ -404,7 +403,7 @@ class CrystallographyTest(unittest.TestCase): expected = {'id': 'prob_1_2', 'value': value, - 'state': 'unsubmitted', + 'status': 'unsubmitted', 'size': size, 'msg': '', 'hidden': '', From b03789156c2e21cc4a98626c174c3bd1fd955aed Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Mon, 29 Oct 2012 08:16:31 -0400 Subject: [PATCH 072/308] add test for vsepr --- common/lib/capa/capa/tests/test_inputtypes.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py index 65a22a876e..cab9bfe86b 100644 --- a/common/lib/capa/capa/tests/test_inputtypes.py +++ b/common/lib/capa/capa/tests/test_inputtypes.py @@ -414,6 +414,48 @@ class CrystallographyTest(unittest.TestCase): self.assertEqual(context, expected) +class VseprTest(unittest.TestCase): + ''' + Check that vsepr inputs work + ''' + + def test_rendering(self): + height = '12' + width = '33' + molecules = "H2O, C2O" + geometries = "AX12,TK421" + + xml_str = """""".format(h=height, w=width, m=molecules, g=geometries) + + element = etree.fromstring(xml_str) + + value = 'abc' + state = {'value': value, + 'status': 'unsubmitted'} + + the_input = lookup_tag('vsepr_input')(test_system, element, state) + + context = the_input._get_render_context() + + expected = {'id': 'prob_1_2', + 'value': value, + 'status': 'unsubmitted', + 'msg': '', + 'width': width, + 'height': height, + 'molecules': molecules, + 'geometries': geometries, + } + + self.assertEqual(context, expected) + + + class ChemicalEquationTest(unittest.TestCase): ''' Check that chemical equation inputs work. From e422716045125fa5b3bb9c564d19da546086a751 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Mon, 29 Oct 2012 09:07:49 -0400 Subject: [PATCH 073/308] Add changelogs for the CMS and LMS --- cms/CHANGELOG.md | 16 ++++++++++++++++ lms/CHANGELOG.md | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 cms/CHANGELOG.md create mode 100644 lms/CHANGELOG.md diff --git a/cms/CHANGELOG.md b/cms/CHANGELOG.md new file mode 100644 index 0000000000..6c43dfb681 --- /dev/null +++ b/cms/CHANGELOG.md @@ -0,0 +1,16 @@ +Instructions +============ +For each pull request, add one or more lines to the bottom of the change list. When +code is released to production, change the `Upcoming` entry to todays date, and add +a new block at the bottom of the file + + Upcoming + -------- + + +Changes +======= + +Upcoming +-------- +* Created changelog \ No newline at end of file diff --git a/lms/CHANGELOG.md b/lms/CHANGELOG.md new file mode 100644 index 0000000000..6c43dfb681 --- /dev/null +++ b/lms/CHANGELOG.md @@ -0,0 +1,16 @@ +Instructions +============ +For each pull request, add one or more lines to the bottom of the change list. When +code is released to production, change the `Upcoming` entry to todays date, and add +a new block at the bottom of the file + + Upcoming + -------- + + +Changes +======= + +Upcoming +-------- +* Created changelog \ No newline at end of file From 6cc196394a9d845224fe0dae0da86cdac85f85e2 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Mon, 29 Oct 2012 12:06:42 -0400 Subject: [PATCH 074/308] fixing comments --- common/lib/capa/capa/inputtypes.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 38f2e5da8f..d47c5a3006 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -28,6 +28,12 @@ graded status as'status' # TODO: Quoting and unquoting is handled in a pretty ad-hoc way. Also something that could be done # properly once in InputTypeBase. +# Possible todo: make inline the default for textlines and other "one-line" inputs. It probably +# makes sense, but a bunch of problems have markup that assumes block. Bigger TODO: figure out a +# general css and layout strategy for capa, document it, then implement it. + + + import json import logging from lxml import etree @@ -214,7 +220,7 @@ class ChoiceGroup(InputTypeBase): def setup(self): # suffix is '' or [] to change the way the input is handled in --as a scalar or vector - # value. (VS: would be nice to make to this less hackish). + # value. (VS: would be nice to make this less hackish). if self.tag == 'choicegroup': self.suffix = '' self.element_type = "radio" @@ -333,8 +339,6 @@ class TextLine(InputTypeBase): # in div with name=self.hidden. self.hidden = self.xml.get('hidden', False) - # TODO (vshnayder): can we get rid of inline? Was it one of - # the styling hacks early this semester? self.inline = self.xml.get('inline', False) # TODO: 'dojs' flag is temporary, for backwards compatibility with 8.02x @@ -383,7 +387,7 @@ class FileSubmission(InputTypeBase): # pulled out for testing submitted_msg = ("Your file(s) have been submitted; as soon as your submission is" " graded, this message will be replaced with the grader's feedback.") - + def setup(self): escapedict = {'"': '"'} self.allowed_files = json.dumps(self.xml.get('allowed_files', '').split()) @@ -423,7 +427,8 @@ class CodeInput(InputTypeBase): template = "codeinput.html" tags = ['codeinput', - 'textbox', # Old name for this. Still supported, but deprecated. + 'textbox', # Another (older) name--at some point we may want to make it use a + # non-codemirror editor. ] @@ -526,7 +531,7 @@ class ImageInput(InputTypeBase): m = re.match('\[([0-9]+),([0-9]+)]', self.value.strip().replace(' ', '')) if m: # Note: we subtract 15 to compensate for the size of the dot on the screen. - # (which supposedly has size 30). + # (is a 30x30 image--lms/static/green-pointer.png). (self.gx, self.gy) = [int(x) - 15 for x in m.groups()] else: (self.gx, self.gy) = (0, 0) @@ -541,8 +546,8 @@ class ImageInput(InputTypeBase): 'src': self.src, 'gx': self.gx, 'gy': self.gy, - 'status': self.status, # to change (VS: to what??) - 'msg': self.msg, # to change + 'status': self.status, + 'msg': self.msg, } return context From a1552654098ead17673abbd154a9356b08dc8894 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Mon, 29 Oct 2012 23:44:38 -0400 Subject: [PATCH 075/308] minor whitespace + comment fixes --- common/lib/capa/capa/correctmap.py | 2 +- common/lib/capa/capa/responsetypes.py | 10 ++++------ common/lib/xmodule/xmodule/capa_module.py | 6 ------ lms/djangoapps/courseware/module_render.py | 17 +++++++++-------- 4 files changed, 14 insertions(+), 21 deletions(-) diff --git a/common/lib/capa/capa/correctmap.py b/common/lib/capa/capa/correctmap.py index 3c4f43a1d6..c7386219b1 100644 --- a/common/lib/capa/capa/correctmap.py +++ b/common/lib/capa/capa/correctmap.py @@ -68,7 +68,7 @@ class CorrectMap(object): correct_map is saved by LMS as a plaintext JSON dump of the correctmap dict. This means that when the definition of CorrectMap (e.g. its properties) are altered, - an existing correct_map dict not coincide with the newest CorrectMap format as + an existing correct_map dict will not coincide with the newest CorrectMap format as defined by self.set. For graceful migration, feed the contents of each correct map to self.set, rather than diff --git a/common/lib/capa/capa/responsetypes.py b/common/lib/capa/capa/responsetypes.py index 648fc9e861..b990c489b3 100644 --- a/common/lib/capa/capa/responsetypes.py +++ b/common/lib/capa/capa/responsetypes.py @@ -81,7 +81,7 @@ class LoncapaResponse(object): by __init__ - check_hint_condition : check to see if the student's answers satisfy a particular - condition for a hint to be displayed + condition for a hint to be displayed - render_html : render this Response as HTML (must return XHTML-compliant string) - __unicode__ : unicode representation of this Response @@ -149,6 +149,7 @@ class LoncapaResponse(object): # for convenience self.answer_id = self.answer_ids[0] + # map input_id -> maxpoints self.maxpoints = dict() for inputfield in self.inputfields: # By default, each answerfield is worth 1 point @@ -280,17 +281,14 @@ class LoncapaResponse(object): (correctness, npoints, msg) for each answer_id. Arguments: - - student_answers : dict of (answer_id,answer) where answer = student input (string) - - - old_cmap : previous CorrectMap (may be empty); useful for analyzing or - recording history of responses + - student_answers : dict of (answer_id, answer) where answer = student input (string) ''' pass @abc.abstractmethod def get_answers(self): ''' - Return a dict of (answer_id,answer_text) for each answer for this question. + Return a dict of (answer_id, answer_text) for each answer for this question. ''' pass diff --git a/common/lib/xmodule/xmodule/capa_module.py b/common/lib/xmodule/xmodule/capa_module.py index 151c726f66..ba7b8542f3 100644 --- a/common/lib/xmodule/xmodule/capa_module.py +++ b/common/lib/xmodule/xmodule/capa_module.py @@ -538,15 +538,9 @@ class CapaModule(XModule): lcp_id = self.lcp.problem_id correct_map = self.lcp.grade_answers(answers) except StudentInputError as inst: - # TODO (vshnayder): why is this line here? - #self.lcp = LoncapaProblem(self.definition['data'], - # id=lcp_id, state=old_state, system=self.system) log.exception("StudentInputError in capa_module:problem_check") return {'success': inst.message} except Exception, err: - # TODO: why is this line here? - #self.lcp = LoncapaProblem(self.definition['data'], - # id=lcp_id, state=old_state, system=self.system) if self.system.DEBUG: msg = "Error checking problem: " + str(err) msg += '\nTraceback:\n' + traceback.format_exc() diff --git a/lms/djangoapps/courseware/module_render.py b/lms/djangoapps/courseware/module_render.py index e0b0c3aaec..67927c0ee7 100644 --- a/lms/djangoapps/courseware/module_render.py +++ b/lms/djangoapps/courseware/module_render.py @@ -337,7 +337,7 @@ def xqueue_callback(request, course_id, userid, id, dispatch): ''' # Test xqueue package, which we expect to be: # xpackage = {'xqueue_header': json.dumps({'lms_key':'secretkey',...}), - # 'xqueue_body' : 'Message from grader} + # 'xqueue_body' : 'Message from grader'} get = request.POST.copy() for key in ['xqueue_header', 'xqueue_body']: if not get.has_key(key): @@ -372,7 +372,8 @@ def xqueue_callback(request, course_id, userid, id, dispatch): # We go through the "AJAX" path # So far, the only dispatch from xqueue will be 'score_update' try: - ajax_return = instance.handle_ajax(dispatch, get) # Can ignore the "ajax" return in 'xqueue_callback' + # Can ignore the return value--not used for xqueue_callback + instance.handle_ajax(dispatch, get) except: log.exception("error processing ajax call") raise @@ -386,12 +387,12 @@ def xqueue_callback(request, course_id, userid, id, dispatch): #Bin score into range and increment stats score_bucket=get_score_bucket(instance_module.grade, instance_module.max_grade) - org, course_num, run=course_id.split("/") + org, course_num, run=course_id.split("/") statsd.increment("lms.courseware.question_answered", tags=["org:{0}".format(org), "course:{0}".format(course_num), - "run:{0}".format(run), - "score_bucket:{0}".format(score_bucket), + "run:{0}".format(run), + "score_bucket:{0}".format(score_bucket), "type:xqueue"]) return HttpResponse("") @@ -479,12 +480,12 @@ def modx_dispatch(request, dispatch, location, course_id): #Bin score into range and increment stats score_bucket=get_score_bucket(instance_module.grade, instance_module.max_grade) - org, course_num, run=course_id.split("/") + org, course_num, run=course_id.split("/") statsd.increment("lms.courseware.question_answered", tags=["org:{0}".format(org), "course:{0}".format(course_num), - "run:{0}".format(run), - "score_bucket:{0}".format(score_bucket), + "run:{0}".format(run), + "score_bucket:{0}".format(score_bucket), "type:ajax"]) From 684b98505d5a5833ac7781ccde996ce2d963829c Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Tue, 30 Oct 2012 10:41:02 -0400 Subject: [PATCH 076/308] Make rake commands to run jasmine tests in browser and via phantomjs --- .gitmodules | 3 + Gemfile | 2 + {cms => common}/templates/jasmine/base.html | 5 +- common/test/phantom-jasmine | 1 + lms/templates/jasmine/base.html | 67 --------------------- rakefile | 46 ++++++++++++++ 6 files changed, 56 insertions(+), 68 deletions(-) rename {cms => common}/templates/jasmine/base.html (87%) create mode 160000 common/test/phantom-jasmine delete mode 100644 lms/templates/jasmine/base.html diff --git a/.gitmodules b/.gitmodules index e69de29bb2..3c8158cf80 100644 --- a/.gitmodules +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "common/test/phantom-jasmine"] + path = common/test/phantom-jasmine + url = https://github.com/jcarver989/phantom-jasmine.git diff --git a/Gemfile b/Gemfile index 9ad08c7adb..0fe7df217d 100644 --- a/Gemfile +++ b/Gemfile @@ -3,3 +3,5 @@ ruby "1.9.3" gem 'rake' gem 'sass', '3.1.15' gem 'bourbon', '~> 1.3.6' +gem 'colorize' +gem 'launchy' diff --git a/cms/templates/jasmine/base.html b/common/templates/jasmine/base.html similarity index 87% rename from cms/templates/jasmine/base.html rename to common/templates/jasmine/base.html index 0cbf63bb29..96507bdebf 100644 --- a/cms/templates/jasmine/base.html +++ b/common/templates/jasmine/base.html @@ -11,6 +11,7 @@ + {# source files #} {% for url in suite.js_files %} @@ -19,7 +20,7 @@ {% load compressed %} {# static files #} - {% compressed_js 'main' %} + {% compressed_js 'js-test-source' %} {# spec files #} {% compressed_js 'spec' %} @@ -31,6 +32,7 @@ - - - - {# source files #} - {% for url in suite.js_files %} - - {% endfor %} - - {% load compressed %} - {# static files #} - {% compressed_js 'application' %} - {% compressed_js 'module-js' %} - - {# spec files #} - {% compressed_js 'spec' %} - - - - -

    Jasmine Spec Runner

    - - - - - diff --git a/rakefile b/rakefile index 90cd5fe87f..ad02355f74 100644 --- a/rakefile +++ b/rakefile @@ -1,5 +1,8 @@ require 'rake/clean' require 'tempfile' +require 'net/http' +require 'launchy' +require 'colorize' # Build Constants REPO_ROOT = File.dirname(__FILE__) @@ -38,6 +41,32 @@ def django_admin(system, env, command, *args) return "#{django_admin} #{command} --settings=#{system}.envs.#{env} --pythonpath=. #{args.join(' ')}" end +def django_for_jasmine(system) + django_pid = fork do + exec(*django_admin(system, 'dev', 'runserver', '12345').split(' ')) + end + puts django_pid + jasmine_url = 'http://localhost:12345/_jasmine/' + up = false + until up do + begin + response = Net::HTTP.get_response(URI(jasmine_url)) + puts response.code + up = response.code == '200' + rescue => e + puts e.message + ensure + puts('Waiting server to start') + sleep(0.5) + end + end + begin + yield jasmine_url + ensure + Process.kill(:SIGKILL, -Process.getpgid(django_pid)) + Process.wait(django_pid) + end +end task :default => [:test, :pep8, :pylint] directory REPORT_DIR @@ -80,6 +109,23 @@ end end end task :pylint => "pylint_#{system}" + + desc "Open jasmine tests in your default browser" + task "browse_jasmine_#{system}" do + django_for_jasmine(system) do |jasmine_url| + Launchy.open(jasmine_url) + puts "Press ENTER to terminate".red + $stdin.gets + end + end + + desc "Use phantomjs to run jasmine tests from the console" + task "phantomjs_jasmine_#{system}" do + phantomjs = ENV['PHANTOMJS_PATH'] || 'phantomjs' + django_for_jasmine(system) do |jasmine_url| + sh("#{phantomjs} common/test/phantom-jasmine/lib/run_jasmine_test.coffee #{jasmine_url}") + end + end end $failed_tests = 0 From 6d5a1264b9a582bc02c0557e86c7e54046dfccda Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Tue, 30 Oct 2012 10:58:38 -0400 Subject: [PATCH 077/308] Move jasmine tests to their own environment --- cms/envs/jasmine.py | 31 +++++++++++++++++++++++++++++++ cms/urls.py | 2 +- lms/envs/common.py | 7 ++----- lms/envs/jasmine.py | 31 +++++++++++++++++++++++++++++++ lms/urls.py | 2 +- rakefile | 2 +- 6 files changed, 67 insertions(+), 8 deletions(-) create mode 100644 cms/envs/jasmine.py create mode 100644 lms/envs/jasmine.py diff --git a/cms/envs/jasmine.py b/cms/envs/jasmine.py new file mode 100644 index 0000000000..f85edc59a0 --- /dev/null +++ b/cms/envs/jasmine.py @@ -0,0 +1,31 @@ +""" +This configuration is used for running jasmine tests +""" + +from .test import * +from logsettings import get_logger_config + +ENABLE_JASMINE = True +DEBUG = True + +LOGGING = get_logger_config(ENV_ROOT / "log", + logging_env="dev", + tracking_filename="tracking.log", + dev_env=True, + debug=True) + +PIPELINE_JS['js-test-source'] = { + 'source_filenames': sum([ + pipeline_group['source_filenames'] + for pipeline_group + in PIPELINE_JS.values() + ], []), + 'output_filename': 'js/cms-test-source.js' +} + +PIPELINE_JS['spec'] = { + 'source_filenames': sorted(rooted_glob(PROJECT_ROOT / 'static/', 'coffee/spec/**/*.coffee')), + 'output_filename': 'js/cms-spec.js' +} + +STATICFILES_DIRS.append(COMMON_ROOT / 'test' / 'phantom-jasmine' / 'lib') diff --git a/cms/urls.py b/cms/urls.py index 7b3dd90a0b..8ff4e67a46 100644 --- a/cms/urls.py +++ b/cms/urls.py @@ -68,7 +68,7 @@ urlpatterns += ( ) -if settings.DEBUG: +if settings.ENABLE_JASMINE: ## Jasmine urlpatterns = urlpatterns + (url(r'^_jasmine/', include('django_jasmine.urls')),) diff --git a/lms/envs/common.py b/lms/envs/common.py index 62d0db9577..6889181713 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -446,16 +446,13 @@ PIPELINE_JS = { 'source_filenames': module_js, 'output_filename': 'js/lms-modules.js', }, - 'spec': { - 'source_filenames': sorted(rooted_glob(PROJECT_ROOT / 'static/', 'coffee/spec/**/*.coffee')), - 'output_filename': 'js/lms-spec.js' - }, 'discussion': { 'source_filenames': discussion_js, 'output_filename': 'js/discussion.js' - } + }, } + PIPELINE_DISABLE_WRAPPER = True # Compile all coffee files in course data directories if they are out of date. diff --git a/lms/envs/jasmine.py b/lms/envs/jasmine.py new file mode 100644 index 0000000000..e90fd2e101 --- /dev/null +++ b/lms/envs/jasmine.py @@ -0,0 +1,31 @@ +""" +This configuration is used for running jasmine tests +""" + +from .test import * +from logsettings import get_logger_config + +ENABLE_JASMINE = True +DEBUG = True + +LOGGING = get_logger_config(ENV_ROOT / "log", + logging_env="dev", + tracking_filename="tracking.log", + dev_env=True, + debug=True) + +PIPELINE_JS['js-test-source'] = { + 'source_filenames': sum([ + pipeline_group['source_filenames'] + for pipeline_group + in PIPELINE_JS.values() + ], []), + 'output_filename': 'js/lms-test-source.js' +} + +PIPELINE_JS['spec'] = { + 'source_filenames': sorted(rooted_glob(PROJECT_ROOT / 'static/', 'coffee/spec/**/*.coffee')), + 'output_filename': 'js/lms-spec.js' +} + +STATICFILES_DIRS.append(COMMON_ROOT / 'test' / 'phantom-jasmine' / 'lib') diff --git a/lms/urls.py b/lms/urls.py index 8cc81a438b..d8a80a370f 100644 --- a/lms/urls.py +++ b/lms/urls.py @@ -242,7 +242,7 @@ if settings.QUICKEDIT: urlpatterns += (url(r'^dogfood/(?P[^/]*)$', 'dogfood.views.df_capa_problem'),) -if settings.DEBUG: +if settings.ENABLE_JASMINE: ## Jasmine and admin urlpatterns=urlpatterns + (url(r'^_jasmine/', include('django_jasmine.urls')), url(r'^admin/', include(admin.site.urls)), diff --git a/rakefile b/rakefile index ad02355f74..e0972df12a 100644 --- a/rakefile +++ b/rakefile @@ -43,7 +43,7 @@ end def django_for_jasmine(system) django_pid = fork do - exec(*django_admin(system, 'dev', 'runserver', '12345').split(' ')) + exec(*django_admin(system, 'jasmine', 'runserver', '12345').split(' ')) end puts django_pid jasmine_url = 'http://localhost:12345/_jasmine/' From 535980eb6dcf8a2bc3dbdb579df66c11641791d8 Mon Sep 17 00:00:00 2001 From: David Ormsbee Date: Tue, 30 Oct 2012 11:06:50 -0400 Subject: [PATCH 078/308] Allow optional advertised_start metadata in Course, to let people pre-launch thier courses quietly if desired. --- common/lib/xmodule/xmodule/course_module.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/common/lib/xmodule/xmodule/course_module.py b/common/lib/xmodule/xmodule/course_module.py index 0a5108590f..de8eddd0b8 100644 --- a/common/lib/xmodule/xmodule/course_module.py +++ b/common/lib/xmodule/xmodule/course_module.py @@ -247,7 +247,8 @@ class CourseDescriptor(SequenceDescriptor): @property def start_date_text(self): - return time.strftime("%b %d, %Y", self.start) + displayed_start = self._try_parse_time('advertised_start') or self.start + return time.strftime("%b %d, %Y", displayed_start) # An extra property is used rather than the wiki_slug/number because # there are courses that change the number for different runs. This allows From e8be6b3111a6728eaf76a1cb7fd5c825a877c73a Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Tue, 30 Oct 2012 11:33:21 -0400 Subject: [PATCH 079/308] Get jasmine tests running on cms --- cms/envs/common.py | 11 +---------- cms/envs/jasmine.py | 4 ++++ lms/envs/common.py | 3 --- lms/envs/jasmine.py | 4 ++++ 4 files changed, 9 insertions(+), 13 deletions(-) diff --git a/cms/envs/common.py b/cms/envs/common.py index b04c423732..f110ede87a 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -68,9 +68,7 @@ MAKO_TEMPLATES['main'] = [ for namespace, template_dirs in lms.envs.common.MAKO_TEMPLATES.iteritems(): MAKO_TEMPLATES['lms.' + namespace] = template_dirs -TEMPLATE_DIRS = ( - PROJECT_ROOT / "templates", -) +TEMPLATE_DIRS = MAKO_TEMPLATES['main'] MITX_ROOT_URL = '' @@ -88,10 +86,6 @@ TEMPLATE_CONTEXT_PROCESSORS = ( LMS_BASE = None -################################# Jasmine ################################### -JASMINE_TEST_DIRECTORY = PROJECT_ROOT + '/static/coffee' - - #################### CAPA External Code Evaluation ############################# XQUEUE_INTERFACE = { 'url': 'http://localhost:8888', @@ -289,7 +283,4 @@ INSTALLED_APPS = ( # For asset pipelining 'pipeline', 'staticfiles', - - # For testing - 'django_jasmine', ) diff --git a/cms/envs/jasmine.py b/cms/envs/jasmine.py index f85edc59a0..b42744a520 100644 --- a/cms/envs/jasmine.py +++ b/cms/envs/jasmine.py @@ -28,4 +28,8 @@ PIPELINE_JS['spec'] = { 'output_filename': 'js/cms-spec.js' } +JASMINE_TEST_DIRECTORY = PROJECT_ROOT + '/static/coffee' + STATICFILES_DIRS.append(COMMON_ROOT / 'test' / 'phantom-jasmine' / 'lib') + +INSTALLED_APPS += ('django_jasmine', ) diff --git a/lms/envs/common.py b/lms/envs/common.py index 6889181713..251427d014 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -537,9 +537,6 @@ INSTALLED_APPS = ( 'wiki.plugins.notifications', 'course_wiki.plugins.markdownedx', - # For testing - 'django_jasmine', - # Discussion 'django_comment_client', diff --git a/lms/envs/jasmine.py b/lms/envs/jasmine.py index e90fd2e101..43459f79aa 100644 --- a/lms/envs/jasmine.py +++ b/lms/envs/jasmine.py @@ -28,4 +28,8 @@ PIPELINE_JS['spec'] = { 'output_filename': 'js/lms-spec.js' } +JASMINE_TEST_DIRECTORY = PROJECT_ROOT + '/static/coffee' + STATICFILES_DIRS.append(COMMON_ROOT / 'test' / 'phantom-jasmine' / 'lib') + +INSTALLED_APPS += ('django_jasmine', ) From f4822c23dee665b676b2219bd01f6fef4afabef0 Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Tue, 30 Oct 2012 11:52:31 -0400 Subject: [PATCH 080/308] lots of tweeks to better support importing of existing courseware --- cms/djangoapps/contentstore/views.py | 9 +- common/djangoapps/mitxmako/shortcuts.py | 2 +- common/djangoapps/static_replace.py | 24 +++- common/djangoapps/xmodule_modifiers.py | 4 +- common/lib/xmodule/setup.py | 2 + .../xmodule/xmodule/contentstore/content.py | 7 ++ common/lib/xmodule/xmodule/course_module.py | 3 +- .../lib/xmodule/xmodule/modulestore/mongo.py | 2 + common/lib/xmodule/xmodule/modulestore/xml.py | 52 ++++----- .../xmodule/modulestore/xml_importer.py | 103 ++++++++++++++---- common/lib/xmodule/xmodule/template_module.py | 20 +++- lms/djangoapps/courseware/courses.py | 26 +++-- lms/djangoapps/courseware/module_render.py | 3 +- lms/djangoapps/courseware/tests/tests.py | 11 +- lms/djangoapps/courseware/views.py | 2 +- 15 files changed, 186 insertions(+), 84 deletions(-) diff --git a/cms/djangoapps/contentstore/views.py b/cms/djangoapps/contentstore/views.py index be4a157de4..4d1cfed553 100644 --- a/cms/djangoapps/contentstore/views.py +++ b/cms/djangoapps/contentstore/views.py @@ -287,9 +287,13 @@ def edit_unit(request, location): # TODO (cpennington): If we share units between courses, # this will need to change to check permissions correctly so as # to pick the correct parent subsection + + logging.debug('looking for parent of {0}'.format(location)) + containing_subsection_locs = modulestore().get_parent_locations(location) containing_subsection = modulestore().get_item(containing_subsection_locs[0]) + logging.debug('looking for parent of {0}'.format(containing_subsection.location)) containing_section_locs = modulestore().get_parent_locations(containing_subsection.location) containing_section = modulestore().get_item(containing_section_locs[0]) @@ -997,7 +1001,8 @@ def import_course(request, org, course, name): data_root = path(settings.GITHUB_REPO_ROOT) - course_dir = data_root / "{0}-{1}-{2}".format(org, course, name) + course_subdir = "{0}-{1}-{2}".format(org, course, name) + course_dir = data_root / course_subdir if not course_dir.isdir(): os.mkdir(course_dir) @@ -1033,7 +1038,7 @@ def import_course(request, org, course, name): shutil.move(r/fname, course_dir) module_store, course_items = import_from_xml(modulestore('direct'), settings.GITHUB_REPO_ROOT, - [course_dir], load_error_modules=False, static_content_store=contentstore(), target_location_namespace = Location(location)) + [course_subdir], load_error_modules=False, static_content_store=contentstore(), target_location_namespace = Location(location)) # we can blow this away when we're done importing. shutil.rmtree(course_dir) diff --git a/common/djangoapps/mitxmako/shortcuts.py b/common/djangoapps/mitxmako/shortcuts.py index ba22f2db20..181d3befd5 100644 --- a/common/djangoapps/mitxmako/shortcuts.py +++ b/common/djangoapps/mitxmako/shortcuts.py @@ -42,7 +42,7 @@ def render_to_string(template_name, dictionary, context=None, namespace='main'): context_dictionary.update(context) # fetch and render template template = middleware.lookup[namespace].get_template(template_name) - return template.render(**context_dictionary) + return template.render_unicode(**context_dictionary) def render_to_response(template_name, dictionary, context_instance=None, namespace='main', **kwargs): diff --git a/common/djangoapps/static_replace.py b/common/djangoapps/static_replace.py index 58e2c8da15..ee63e3cf93 100644 --- a/common/djangoapps/static_replace.py +++ b/common/djangoapps/static_replace.py @@ -5,6 +5,10 @@ from staticfiles.storage import staticfiles_storage from staticfiles import finders from django.conf import settings +from xmodule.modulestore.django import modulestore +from xmodule.modulestore.xml import XMLModuleStore +from xmodule.contentstore.content import StaticContent + log = logging.getLogger(__name__) def try_staticfiles_lookup(path): @@ -22,7 +26,7 @@ def try_staticfiles_lookup(path): return url -def replace(static_url, prefix=None): +def replace(static_url, prefix=None, course_namespace=None): if prefix is None: prefix = '' else: @@ -41,13 +45,23 @@ def replace(static_url, prefix=None): return static_url.group(0) else: # don't error if file can't be found - url = try_staticfiles_lookup(prefix + static_url.group('rest')) - return "".join([quote, url, quote]) + # cdodge: to support the change over to Mongo backed content stores, lets + # use the utility functions in StaticContent.py + if static_url.group('prefix') == '/static/' and not isinstance(modulestore(), XMLModuleStore): + if course_namespace is None: + raise BaseException('You must pass in course_namespace when remapping static content urls with MongoDB stores') + url = StaticContent.convert_legacy_static_url(static_url.group('rest'), course_namespace) + else: + url = try_staticfiles_lookup(prefix + static_url.group('rest')) + + new_link = "".join([quote, url, quote]) + return new_link -def replace_urls(text, staticfiles_prefix=None, replace_prefix='/static/'): + +def replace_urls(text, staticfiles_prefix=None, replace_prefix='/static/', course_namespace=None): def replace_url(static_url): - return replace(static_url, staticfiles_prefix) + return replace(static_url, staticfiles_prefix, course_namespace = course_namespace) return re.sub(r""" (?x) # flags=re.VERBOSE diff --git a/common/djangoapps/xmodule_modifiers.py b/common/djangoapps/xmodule_modifiers.py index 9473dfe26b..cda3d013cd 100644 --- a/common/djangoapps/xmodule_modifiers.py +++ b/common/djangoapps/xmodule_modifiers.py @@ -50,7 +50,7 @@ def replace_course_urls(get_html, course_id): return replace_urls(get_html(), staticfiles_prefix='/courses/'+course_id, replace_prefix='/course/') return _get_html -def replace_static_urls(get_html, prefix): +def replace_static_urls(get_html, prefix, course_namespace=None): """ Updates the supplied module with a new get_html function that wraps the old get_html function and substitutes urls of the form /static/... @@ -59,7 +59,7 @@ def replace_static_urls(get_html, prefix): @wraps(get_html) def _get_html(): - return replace_urls(get_html(), staticfiles_prefix=prefix) + return replace_urls(get_html(), staticfiles_prefix=prefix, course_namespace = course_namespace) return _get_html diff --git a/common/lib/xmodule/setup.py b/common/lib/xmodule/setup.py index e9e78b5762..ff5be4d6df 100644 --- a/common/lib/xmodule/setup.py +++ b/common/lib/xmodule/setup.py @@ -37,6 +37,8 @@ setup( "discussion = xmodule.discussion_module:DiscussionDescriptor", "course_info = xmodule.html_module:HtmlDescriptor", "static_tab = xmodule.html_module:HtmlDescriptor", + "custom_tag_template = xmodule.raw_module:RawDescriptor", + "about = xmodule.html_module:HtmlDescriptor" ] } ) diff --git a/common/lib/xmodule/xmodule/contentstore/content.py b/common/lib/xmodule/xmodule/contentstore/content.py index 6dcf70fbe1..a7a76fa242 100644 --- a/common/lib/xmodule/xmodule/contentstore/content.py +++ b/common/lib/xmodule/xmodule/contentstore/content.py @@ -62,6 +62,13 @@ class StaticContent(object): @staticmethod def get_id_from_path(path): return get_id_from_location(get_location_from_path(path)) + + @staticmethod + def convert_legacy_static_url(path, course_namespace): + loc = StaticContent.compute_location(course_namespace.org, course_namespace.course, path) + return StaticContent.get_url_path_from_location(loc) + + class ContentStore(object): diff --git a/common/lib/xmodule/xmodule/course_module.py b/common/lib/xmodule/xmodule/course_module.py index ae3c01f639..94ab02cf39 100644 --- a/common/lib/xmodule/xmodule/course_module.py +++ b/common/lib/xmodule/xmodule/course_module.py @@ -202,7 +202,7 @@ class CourseDescriptor(SequenceDescriptor): # Try to load grading policy paths = ['grading_policy.json'] if policy_dir: - paths = [policy_dir + 'grading_policy.json'] + paths + paths = [policy_dir + '/grading_policy.json'] + paths policy = json.loads(cls.read_grading_policy(paths, system)) @@ -394,3 +394,4 @@ class CourseDescriptor(SequenceDescriptor): return self.location.org + diff --git a/common/lib/xmodule/xmodule/modulestore/mongo.py b/common/lib/xmodule/xmodule/modulestore/mongo.py index 164bfd3590..deef3af3bf 100644 --- a/common/lib/xmodule/xmodule/modulestore/mongo.py +++ b/common/lib/xmodule/xmodule/modulestore/mongo.py @@ -1,5 +1,6 @@ import pymongo import sys +import logging from bson.son import SON from fs.osfs import OSFS @@ -49,6 +50,7 @@ class CachingDescriptorSystem(MakoDescriptorSystem): self.load_item, resources_fs, error_tracker, render_template) self.modulestore = modulestore self.module_data = module_data + self.default_class = default_class def load_item(self, location): diff --git a/common/lib/xmodule/xmodule/modulestore/xml.py b/common/lib/xmodule/xmodule/modulestore/xml.py index ddb437afe2..6794703998 100644 --- a/common/lib/xmodule/xmodule/modulestore/xml.py +++ b/common/lib/xmodule/xmodule/modulestore/xml.py @@ -427,42 +427,38 @@ class XMLModuleStore(ModuleStoreBase): # now import all pieces of course_info which is expected to be stored # in /info or /info/ - if url_name: - info_path = self.data_dir / course_dir / 'info' / url_name - - if not os.path.exists(info_path): - info_path = self.data_dir / course_dir / 'info' - - # we have a fixed number of .html info files that we expect there - for info_filename in ['handouts', 'guest_handouts', 'updates', 'guest_updates']: - filepath = info_path / info_filename + '.html' - if os.path.exists(filepath): - with open(filepath) as info_file: - html = info_file.read().decode('utf-8') - loc = Location('i4x', course_descriptor.location.org, course_descriptor.location.course, 'course_info', info_filename) - info_module = HtmlDescriptor(system, definition={'data' : html}, **{'location' : loc}) - self.modules[course_id][info_module.location] = info_module + self.load_extra_content(system, course_descriptor, 'course_info', self.data_dir / course_dir / 'info', course_dir, url_name) # now import all static tabs which are expected to be stored in - # in /tabs or /tabs/ - if url_name: - tabs_path = self.data_dir / course_dir / 'tabs' / url_name + # in /tabs or /tabs/ + self.load_extra_content(system, course_descriptor, 'static_tab', self.data_dir / course_dir / 'tabs', course_dir, url_name) - if not os.path.exists(tabs_path): - tabs_path = self.data_dir / course_dir / 'tabs' + self.load_extra_content(system, course_descriptor, 'custom_tag_template', self.data_dir / course_dir / 'custom_tags', course_dir, url_name) - for tab_filepath in glob.glob(tabs_path / '*.html'): - with open(tab_filepath) as tab_file: - html = tab_file.read().decode('utf-8') - # tabs are referenced in policy.json through a 'slug' which is just the filename without the .html suffix - slug = os.path.splitext(os.path.basename(tab_filepath))[0] - loc = Location('i4x', course_descriptor.location.org, course_descriptor.location.course, 'static_tab', slug) - tab_module = HtmlDescriptor(system, definition={'data' : html}, **{'location' : loc}) - self.modules[course_id][tab_module.location] = tab_module + self.load_extra_content(system, course_descriptor, 'about', self.data_dir / course_dir / 'about', course_dir, url_name) log.debug('========> Done with course import from {0}'.format(course_dir)) return course_descriptor + def load_extra_content(self, system, course_descriptor, category, base_dir, course_dir, url_name): + if url_name: + path = base_dir / url_name + + if not os.path.exists(path): + path = base_dir + + for filepath in glob.glob(path/ '*'): + with open(filepath) as f: + try: + html = f.read().decode('utf-8') + # tabs are referenced in policy.json through a 'slug' which is just the filename without the .html suffix + slug = os.path.splitext(os.path.basename(filepath))[0] + loc = Location('i4x', course_descriptor.location.org, course_descriptor.location.course, category, slug) + module = HtmlDescriptor(system, definition={'data' : html}, **{'location' : loc}) + module.metadata['data_dir'] = course_dir + self.modules[course_descriptor.id][module.location] = module + except Exception, e: + logging.exception("Failed to load {0}. Skipping... Exception: {1}".format(filepath, str(e))) def get_instance(self, course_id, location, depth=0): """ diff --git a/common/lib/xmodule/xmodule/modulestore/xml_importer.py b/common/lib/xmodule/xmodule/modulestore/xml_importer.py index bced371001..6a7d44489b 100644 --- a/common/lib/xmodule/xmodule/modulestore/xml_importer.py +++ b/common/lib/xmodule/xmodule/modulestore/xml_importer.py @@ -1,6 +1,7 @@ import logging import os import mimetypes +from lxml.html import rewrite_links as lxml_rewrite_links from .xml import XMLModuleStore from .exceptions import DuplicateItemError @@ -9,7 +10,7 @@ from xmodule.contentstore.content import StaticContent, XASSET_SRCREF_PREFIX log = logging.getLogger(__name__) -def import_static_content(modules, data_dir, static_content_store): +def import_static_content(modules, data_dir, static_content_store, target_location_namespace): remap_dict = {} @@ -31,15 +32,13 @@ def import_static_content(modules, data_dir, static_content_store): # now import all static assets static_dir = '{0}/static/'.format(course_data_dir) - logging.debug("Importing static assets in {0}".format(static_dir)) - for dirname, dirnames, filenames in os.walk(static_dir): for filename in filenames: try: content_path = os.path.join(dirname, filename) fullname_with_subpath = content_path.replace(static_dir, '') # strip away leading path from the name - content_loc = StaticContent.compute_location(course_loc.org, course_loc.course, fullname_with_subpath) + content_loc = StaticContent.compute_location(target_location_namespace.org, target_location_namespace.course, fullname_with_subpath) mime_type = mimetypes.guess_type(filename)[0] f = open(content_path, 'rb') @@ -59,12 +58,50 @@ def import_static_content(modules, data_dir, static_content_store): #store the remapping information which will be needed to subsitute in the module data remap_dict[fullname_with_subpath] = content_loc.name - except: - raise + raise return remap_dict +def verify_content_links(module, base_dir, static_content_store, link, remap_dict = None): + if link.startswith('/static/'): + # yes, then parse out the name + path = link[len('/static/'):] + + static_pathname = base_dir / path + + if os.path.exists(static_pathname): + try: + content_loc = StaticContent.compute_location(module.location.org, module.location.course, path) + filename = os.path.basename(path) + mime_type = mimetypes.guess_type(filename)[0] + + f = open(static_pathname, 'rb') + data = f.read() + f.close() + + content = StaticContent(content_loc, filename, mime_type, data) + + # first let's save a thumbnail so we can get back a thumbnail location + thumbnail_content = static_content_store.generate_thumbnail(content) + + if thumbnail_content is not None: + content.thumbnail_location = thumbnail_content.location + + #then commit the content + static_content_store.save(content) + + new_link = StaticContent.get_url_path_from_location(content_loc) + + if remap_dict is not None: + remap_dict[link] = new_link + + return new_link + except Exception, e: + logging.exception('Skipping failed content load from {0}. Exception: {1}'.format(path, e)) + + return link + def import_from_xml(store, data_dir, course_dirs=None, default_class='xmodule.raw_module.RawDescriptor', load_error_modules=True, static_content_store=None, target_location_namespace = None): @@ -94,15 +131,20 @@ def import_from_xml(store, data_dir, course_dirs=None, # method on XmlModuleStore. course_items = [] for course_id in module_store.modules.keys(): - remap_dict = {} + + course_data_dir = None + for module in module_store.modules[course_id].itervalues(): + if module.category == 'course': + course_data_dir = module.metadata['data_dir'] + if static_content_store is not None: - remap_dict = import_static_content(module_store.modules[course_id], data_dir, static_content_store) + import_static_content(module_store.modules[course_id], data_dir, static_content_store, + target_location_namespace if target_location_namespace is not None else module_store.modules[course_id].location) for module in module_store.modules[course_id].itervalues(): # remap module to the new namespace if target_location_namespace is not None: - # This looks a bit wonky as we need to also change the 'name' of the imported course to be what # the caller passed in if module.location.category != 'course': @@ -120,8 +162,8 @@ def import_from_xml(store, data_dir, course_dirs=None, child_loc = Location(child) new_child_loc = child_loc._replace(tag=target_location_namespace.tag, org=target_location_namespace.org, course=target_location_namespace.course) - - new_locs.append(new_child_loc) + + new_locs.append(new_child_loc.url()) module.definition['children'] = new_locs @@ -129,22 +171,37 @@ def import_from_xml(store, data_dir, course_dirs=None, if module.category == 'course': # HACK: for now we don't support progress tabs. There's a special metadata configuration setting for this. module.metadata['hide_progress_tab'] = True + + # a bit of a hack, but typically the "course image" which is shown on marketing pages is hard coded to /images/course_image.jpg + # so let's make sure we import in case there are no other references to it in the modules + verify_content_links(module, data_dir / course_data_dir, static_content_store, '/static/images/course_image.jpg') + course_items.append(module) if 'data' in module.definition: module_data = module.definition['data'] - # cdodge: update any references to the static content paths - # This is a bit brute force - simple search/replace - but it's unlikely that such references to '/static/....' - # would occur naturally (in the wild) - # @TODO, sorry a bit of technical debt here. There are some helper methods in xmodule_modifiers.py and static_replace.py which could - # better do the url replace on the html rendering side rather than on the ingest side - try: - if '/static/' in module_data: - for subkey in remap_dict.keys(): - module_data = module_data.replace('/static/' + subkey, 'xasset:' + remap_dict[subkey]) - except: - pass # part of the techincal debt is that module_data might not be a string (e.g. ABTest) + # cdodge: now go through any link references to '/static/' and make sure we've imported + # it as a StaticContent asset + try: + remap_dict = {} + + # use the rewrite_links as a utility means to enumerate through all links + # in the module data. We use that to load that reference into our asset store + # IMPORTANT: There appears to be a bug in lxml.rewrite_link which makes us not be able to + # do the rewrites natively in that code. + # For example, what I'm seeing is -> + # Note the dropped element closing tag. This causes the LMS to fail when rendering modules - that's + # no good, so we have to do this kludge + if isinstance(module_data, str) or isinstance(module_data, unicode): # some module 'data' fields are non strings which blows up the link traversal code + lxml_rewrite_links(module_data, lambda link: verify_content_links(module, data_dir / course_data_dir, + static_content_store, link, remap_dict)) + + for key in remap_dict.keys(): + module_data = module_data.replace(key, remap_dict[key]) + + except Exception, e: + logging.exception("failed to rewrite links on {0}. Continuing...".format(module.location)) store.update_item(module.location, module_data) @@ -156,4 +213,6 @@ def import_from_xml(store, data_dir, course_dirs=None, # inherited metadata everywhere. store.update_metadata(module.location, dict(module.own_metadata)) + + return module_store, course_items diff --git a/common/lib/xmodule/xmodule/template_module.py b/common/lib/xmodule/xmodule/template_module.py index 4df1c4ee3a..cca2cb0ca8 100644 --- a/common/lib/xmodule/xmodule/template_module.py +++ b/common/lib/xmodule/xmodule/template_module.py @@ -2,6 +2,7 @@ from xmodule.x_module import XModule from xmodule.raw_module import RawDescriptor from lxml import etree from mako.template import Template +from xmodule.modulestore.django import modulestore class CustomTagModule(XModule): @@ -40,8 +41,7 @@ class CustomTagDescriptor(RawDescriptor): module_class = CustomTagModule template_dir_name = 'customtag' - @staticmethod - def render_template(system, xml_data): + def render_template(self, system, xml_data): '''Render the template, given the definition xml_data''' xmltree = etree.fromstring(xml_data) if 'impl' in xmltree.attrib: @@ -57,15 +57,23 @@ class CustomTagDescriptor(RawDescriptor): .format(location)) params = dict(xmltree.items()) - with system.resources_fs.open('custom_tags/{name}' - .format(name=template_name)) as template: - return Template(template.read()).render(**params) + + # cdodge: look up the template as a module + template_loc = self.location._replace(category='custom_tag_template', name=template_name) + + template_module = modulestore().get_item(template_loc) + template_module_data = template_module.definition['data'] + template = Template(template_module_data) + return template.render(**params) def __init__(self, system, definition, **kwargs): '''Render and save the template for this descriptor instance''' super(CustomTagDescriptor, self).__init__(system, definition, **kwargs) - self.rendered_html = self.render_template(system, definition['data']) + + @property + def rendered_html(self): + return self.render_template(self.system, self.definition['data']) def export_to_file(self): """ diff --git a/lms/djangoapps/courseware/courses.py b/lms/djangoapps/courseware/courses.py index 0103e9de00..c4dc6fa77b 100644 --- a/lms/djangoapps/courseware/courses.py +++ b/lms/djangoapps/courseware/courses.py @@ -14,6 +14,7 @@ from module_render import get_module from xmodule.course_module import CourseDescriptor from xmodule.modulestore import Location from xmodule.modulestore.django import modulestore +from xmodule.contentstore.content import StaticContent from xmodule.modulestore.xml import XMLModuleStore from xmodule.modulestore.exceptions import ItemNotFoundError from xmodule.x_module import XModule @@ -68,8 +69,13 @@ def get_opt_course_with_access(user, course_id, action): def course_image_url(course): """Try to look up the image url for the course. If it's not found, log an error and return the dead link""" - path = course.metadata['data_dir'] + "/images/course_image.jpg" - return try_staticfiles_lookup(path) + if isinstance(modulestore(), XMLModuleStore): + path = course.metadata['data_dir'] + "/images/course_image.jpg" + return try_staticfiles_lookup(path) + else: + loc = course.location._replace(tag='c4x', category='asset', name='images_course_image.jpg') + path = StaticContent.get_url_path_from_location(loc) + return path def find_file(fs, dirs, filename): """ @@ -123,14 +129,12 @@ def get_course_about_section(course, section_key): 'effort', 'end_date', 'prerequisites', 'ocw_links']: try: - fs = course.system.resources_fs - # first look for a run-specific version - dirs = [path("about") / course.url_name, path("about")] - filepath = find_file(fs, dirs, section_key + ".html") - with fs.open(filepath) as htmlFile: - return replace_urls(htmlFile.read().decode('utf-8'), - course.metadata['data_dir']) - except ResourceNotFoundError: + loc = course.location._replace(category='about', name=section_key) + item = modulestore().get_instance(course.id, loc) + + return item.definition['data'] + + except ItemNotFoundError: log.warning("Missing about section {key} in course {url}".format( key=section_key, url=course.location.url())) return None @@ -160,8 +164,6 @@ def get_course_info_section(request, cache, course, section_key): loc = Location(course.location.tag, course.location.org, course.location.course, 'course_info', section_key) course_module = get_module(request.user, request, loc, cache, course.id) - logging.debug('course_module = {0}'.format(course_module)) - html = '' if course_module is not None: diff --git a/lms/djangoapps/courseware/module_render.py b/lms/djangoapps/courseware/module_render.py index 3c9958b36d..d9f87d77b6 100644 --- a/lms/djangoapps/courseware/module_render.py +++ b/lms/djangoapps/courseware/module_render.py @@ -256,7 +256,8 @@ def _get_module(user, request, location, student_module_cache, course_id, positi module.get_html = replace_static_urls( wrap_xmodule(module.get_html, module, 'xmodule_display.html'), - module.metadata['data_dir'] if 'data_dir' in module.metadata else '') + module.metadata['data_dir'] if 'data_dir' in module.metadata else '', + course_namespace = module.location._replace(category=None, name=None)) # Allow URLs of the form '/course/' refer to the root of multicourse directory # hierarchy of this course diff --git a/lms/djangoapps/courseware/tests/tests.py b/lms/djangoapps/courseware/tests/tests.py index 3de344b156..8bdcf59815 100644 --- a/lms/djangoapps/courseware/tests/tests.py +++ b/lms/djangoapps/courseware/tests/tests.py @@ -247,6 +247,7 @@ class PageLoader(ActivateLoginTestCase): all_ok = True for descriptor in modstore.get_items( Location(None, None, None, None, None)): + n += 1 print "Checking ", descriptor.location.url() #print descriptor.__class__, descriptor.location @@ -256,9 +257,13 @@ class PageLoader(ActivateLoginTestCase): msg = str(resp.status_code) if resp.status_code != 302: - msg = "ERROR " + msg - all_ok = False - num_bad += 1 + # cdodge: we're adding new module category as part of the Studio work + # such as 'course_info', etc, which are not supposed to be jump_to'able + # so a successful return value here should be a 404 + if descriptor.location.category not in ['about', 'static_tab', 'course_info', 'custom_tag_template'] or resp.status_code != 404: + msg = "ERROR " + msg + all_ok = False + num_bad += 1 print msg self.assertTrue(all_ok) # fail fast diff --git a/lms/djangoapps/courseware/views.py b/lms/djangoapps/courseware/views.py index fc834768e7..bacc41fdf4 100644 --- a/lms/djangoapps/courseware/views.py +++ b/lms/djangoapps/courseware/views.py @@ -421,7 +421,7 @@ def course_about(request, course_id): settings.MITX_FEATURES.get('ENABLE_LMS_MIGRATION')) return render_to_response('portal/course_about.html', - {'course': course, + { 'course': course, 'registered': registered, 'course_target': course_target, 'show_courseware_link' : show_courseware_link}) From ab57c7d7598734a06b8b0c339e4094dddea3be5c Mon Sep 17 00:00:00 2001 From: Ashley Penney Date: Tue, 30 Oct 2012 14:32:50 -0400 Subject: [PATCH 081/308] Add MySQL-python to the requirements. --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index dc13ae873e..ebc818b29d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -50,4 +50,5 @@ pygraphviz -r repo-requirements.txt pil nltk -dogstatsd-python \ No newline at end of file +dogstatsd-python +MySQL-python From 743f2b56dd1d3c1c80ce239be8539338ed1967d7 Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Tue, 30 Oct 2012 15:12:13 -0400 Subject: [PATCH 082/308] make course about view methods render the about content as a module, so we get all the url rewriting goodness. Also, since we're now handling the url re-writing via the module get_html pipelines, we can remove the link rewriting inside the xmodules itself - which is good because there's a wierd bug in lxml.html rewriting --- common/djangoapps/xmodule_modifiers.py | 1 + common/lib/xmodule/xmodule/capa_module.py | 12 ------- common/lib/xmodule/xmodule/html_module.py | 10 +----- .../xmodule/modulestore/xml_importer.py | 4 +-- common/lib/xmodule/xmodule/x_module.py | 18 ---------- lms/djangoapps/courseware/courses.py | 34 +++++++++++++++++-- lms/djangoapps/courseware/module_render.py | 2 ++ 7 files changed, 37 insertions(+), 44 deletions(-) diff --git a/common/djangoapps/xmodule_modifiers.py b/common/djangoapps/xmodule_modifiers.py index cda3d013cd..431181bfac 100644 --- a/common/djangoapps/xmodule_modifiers.py +++ b/common/djangoapps/xmodule_modifiers.py @@ -59,6 +59,7 @@ def replace_static_urls(get_html, prefix, course_namespace=None): @wraps(get_html) def _get_html(): + logging.debug('in replace_static_urls') return replace_urls(get_html(), staticfiles_prefix=prefix, course_namespace = course_namespace) return _get_html diff --git a/common/lib/xmodule/xmodule/capa_module.py b/common/lib/xmodule/xmodule/capa_module.py index d75e0ff860..587fc09eed 100644 --- a/common/lib/xmodule/xmodule/capa_module.py +++ b/common/lib/xmodule/xmodule/capa_module.py @@ -10,7 +10,6 @@ import sys from datetime import timedelta from lxml import etree -from lxml.html import rewrite_links from pkg_resources import resource_string from capa.capa_problem import LoncapaProblem @@ -342,17 +341,6 @@ class CapaModule(XModule): html = '
    '.format( id=self.location.html_id(), ajax_url=self.system.ajax_url) + html + "
    " - # cdodge: OK, we have to do two rounds of url reference subsitutions - # one which uses the 'asset library' that is served by the contentstore and the - # more global /static/ filesystem based static content. - # NOTE: rewrite_content_links is defined in XModule - # This is a bit unfortunate and I'm sure we'll try to considate this into - # a one step process. - try: - html = rewrite_links(html, self.rewrite_content_links) - except: - logging.error('error rewriting links in {0}'.format(html)) - # now do the substitutions which are filesystem based, e.g. '/static/' prefixes return self.system.replace_urls(html, self.metadata['data_dir']) diff --git a/common/lib/xmodule/xmodule/html_module.py b/common/lib/xmodule/xmodule/html_module.py index 00577912c8..f6dddfdd4c 100644 --- a/common/lib/xmodule/xmodule/html_module.py +++ b/common/lib/xmodule/xmodule/html_module.py @@ -4,7 +4,6 @@ import logging import os import sys from lxml import etree -from lxml.html import rewrite_links from path import path from .x_module import XModule @@ -29,14 +28,7 @@ class HtmlModule(XModule): js_module_name = "HTMLModule" def get_html(self): - # cdodge: perform link substitutions for any references to course static content (e.g. images) - _html = self.html - try: - _html = rewrite_links(_html, self.rewrite_content_links) - except: - logging.error('error rewriting links on the following HTML content: {0}'.format(_html)) - - return _html + return self.html def __init__(self, system, location, definition, descriptor, instance_state=None, shared_state=None, **kwargs): diff --git a/common/lib/xmodule/xmodule/modulestore/xml_importer.py b/common/lib/xmodule/xmodule/modulestore/xml_importer.py index 6a7d44489b..3c94e25aa2 100644 --- a/common/lib/xmodule/xmodule/modulestore/xml_importer.py +++ b/common/lib/xmodule/xmodule/modulestore/xml_importer.py @@ -30,7 +30,7 @@ def import_static_content(modules, data_dir, static_content_store, target_locati # now import all static assets - static_dir = '{0}/static/'.format(course_data_dir) + static_dir = '{0}/static/'.format(data_dir / course_data_dir) for dirname, dirnames, filenames in os.walk(static_dir): for filename in filenames: @@ -185,7 +185,7 @@ def import_from_xml(store, data_dir, course_dirs=None, # it as a StaticContent asset try: remap_dict = {} - + # use the rewrite_links as a utility means to enumerate through all links # in the module data. We use that to load that reference into our asset store # IMPORTANT: There appears to be a bug in lxml.rewrite_link which makes us not be able to diff --git a/common/lib/xmodule/xmodule/x_module.py b/common/lib/xmodule/xmodule/x_module.py index 99468946d7..2174d28112 100644 --- a/common/lib/xmodule/xmodule/x_module.py +++ b/common/lib/xmodule/xmodule/x_module.py @@ -320,24 +320,6 @@ class XModule(HTMLSnippet): get is a dictionary-like object ''' return "" - # cdodge: added to support dynamic substitutions of - # links for courseware assets (e.g. images). is passed through from lxml.html parser - def rewrite_content_links(self, link): - loc = Location(self.location) - return XModule._rewrite_content_links(loc, link) - - - @staticmethod - def _rewrite_content_links(loc, link): - if link.startswith(XASSET_SRCREF_PREFIX): - # yes, then parse out the name - name = link[len(XASSET_SRCREF_PREFIX):] - # resolve the reference to our internal 'filepath' which - content_loc = StaticContent.compute_location(loc.org, loc.course, name) - link = StaticContent.get_url_path_from_location(content_loc) - - return link - def policy_key(location): """ diff --git a/lms/djangoapps/courseware/courses.py b/lms/djangoapps/courseware/courses.py index c4dc6fa77b..4b020f3ead 100644 --- a/lms/djangoapps/courseware/courses.py +++ b/lms/djangoapps/courseware/courses.py @@ -2,6 +2,7 @@ from collections import defaultdict from fs.errors import ResourceNotFoundError from functools import wraps import logging +import inspect from lxml.html import rewrite_links @@ -21,11 +22,24 @@ from xmodule.x_module import XModule from static_replace import replace_urls, try_staticfiles_lookup from courseware.access import has_access import branding - - +from courseware.models import StudentModuleCache log = logging.getLogger(__name__) +def get_request_for_thread(): + """Walk up the stack, return the nearest first argument named "request".""" + frame = None + try: + for f in inspect.stack()[1:]: + frame = f[0] + code = frame.f_code + if code.co_varnames[:1] == ("request",): + return frame.f_locals["request"] + elif code.co_varnames[:2] == ("self", "request",): + return frame.f_locals["request"] + finally: + del frame + def get_course_by_id(course_id): """ @@ -129,10 +143,23 @@ def get_course_about_section(course, section_key): 'effort', 'end_date', 'prerequisites', 'ocw_links']: try: + + request = get_request_for_thread() + + student_module_cache = StudentModuleCache.cache_for_descriptor_descendents( + course.id, request.user, course, depth=2) + loc = course.location._replace(category='about', name=section_key) + course_module = get_module(request.user, request, loc, student_module_cache, course.id) + + html = '' + + if course_module is not None: + html = course_module.get_html() + item = modulestore().get_instance(course.id, loc) - return item.definition['data'] + return html except ItemNotFoundError: log.warning("Missing about section {key} in course {url}".format( @@ -161,6 +188,7 @@ def get_course_info_section(request, cache, course, section_key): - guest_updates """ + loc = Location(course.location.tag, course.location.org, course.location.course, 'course_info', section_key) course_module = get_module(request.user, request, loc, cache, course.id) diff --git a/lms/djangoapps/courseware/module_render.py b/lms/djangoapps/courseware/module_render.py index d9f87d77b6..0e3b3a326c 100644 --- a/lms/djangoapps/courseware/module_render.py +++ b/lms/djangoapps/courseware/module_render.py @@ -259,6 +259,8 @@ def _get_module(user, request, location, student_module_cache, course_id, positi module.metadata['data_dir'] if 'data_dir' in module.metadata else '', course_namespace = module.location._replace(category=None, name=None)) + logging.debug('in get_module') + # Allow URLs of the form '/course/' refer to the root of multicourse directory # hierarchy of this course module.get_html = replace_course_urls(module.get_html, course_id) From ee1098c03247aa6b7ba32283b95d81e4714320e3 Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Tue, 30 Oct 2012 15:37:40 -0400 Subject: [PATCH 083/308] remove unused line --- lms/djangoapps/courseware/courses.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/lms/djangoapps/courseware/courses.py b/lms/djangoapps/courseware/courses.py index 4b020f3ead..ca84fb3c65 100644 --- a/lms/djangoapps/courseware/courses.py +++ b/lms/djangoapps/courseware/courses.py @@ -157,8 +157,6 @@ def get_course_about_section(course, section_key): if course_module is not None: html = course_module.get_html() - item = modulestore().get_instance(course.id, loc) - return html except ItemNotFoundError: From 376dcb7982fb92406f60bf29fc85b64a688da0eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s=20Rocha?= Date: Tue, 30 Oct 2012 15:44:28 -0400 Subject: [PATCH 084/308] Correct job description item --- lms/templates/static_templates/jobs.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lms/templates/static_templates/jobs.html b/lms/templates/static_templates/jobs.html index a8afdb7712..c78ce266ed 100644 --- a/lms/templates/static_templates/jobs.html +++ b/lms/templates/static_templates/jobs.html @@ -99,7 +99,8 @@

    Qualifications

    The ideal candidate for the Production Coordinator position will have

      -
    • relentless attention to detailability to communicate and collaborate effectively across the organization
    • +
    • relentless attention to detail
    • +
    • ability to communicate and collaborate effectively across the organization
    • knowledge and understanding of digital media production tools and processes
    • experience with compression techniques, image processing, and presentation software preferred
    • proficiency with standard office applications
    • From cd9fbaeb024262f7f15f76581de8746d945af483 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Tue, 30 Oct 2012 15:51:21 -0400 Subject: [PATCH 085/308] Add timeout so that jasmine tests eventually fail if the server doesn't start --- cms/envs/common.py | 1 + lms/envs/common.py | 1 + rakefile | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/cms/envs/common.py b/cms/envs/common.py index f110ede87a..4b4b69ad39 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -35,6 +35,7 @@ MITX_FEATURES = { 'ENABLE_DISCUSSION_SERVICE': False, 'AUTH_USE_MIT_CERTIFICATES' : False, } +ENABLE_JASMINE = False # needed to use lms student app GENERATE_RANDOM_USER_CREDENTIALS = False diff --git a/lms/envs/common.py b/lms/envs/common.py index 251427d014..2af62182ac 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -30,6 +30,7 @@ from .discussionsettings import * ################################### FEATURES ################################### COURSEWARE_ENABLED = True +ENABLE_JASMINE = False GENERATE_RANDOM_USER_CREDENTIALS = False PERFSTATS = False diff --git a/rakefile b/rakefile index e0972df12a..5cdc5b3214 100644 --- a/rakefile +++ b/rakefile @@ -48,7 +48,11 @@ def django_for_jasmine(system) puts django_pid jasmine_url = 'http://localhost:12345/_jasmine/' up = false + start_time = Time.now until up do + if Time.now - start_time > 30 + abort "Timed out waiting for server to start to run jasmine tests" + end begin response = Net::HTTP.get_response(URI(jasmine_url)) puts response.code From ba9a03410b39017005c0e31c57641139f2f81546 Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Tue, 30 Oct 2012 15:56:02 -0400 Subject: [PATCH 086/308] remove unneeded debugging traces --- cms/djangoapps/contentstore/views.py | 3 --- common/lib/xmodule/xmodule/modulestore/mongo.py | 1 - lms/djangoapps/courseware/module_render.py | 2 -- 3 files changed, 6 deletions(-) diff --git a/cms/djangoapps/contentstore/views.py b/cms/djangoapps/contentstore/views.py index 4d1cfed553..b3af6f7e7b 100644 --- a/cms/djangoapps/contentstore/views.py +++ b/cms/djangoapps/contentstore/views.py @@ -288,12 +288,9 @@ def edit_unit(request, location): # this will need to change to check permissions correctly so as # to pick the correct parent subsection - logging.debug('looking for parent of {0}'.format(location)) - containing_subsection_locs = modulestore().get_parent_locations(location) containing_subsection = modulestore().get_item(containing_subsection_locs[0]) - logging.debug('looking for parent of {0}'.format(containing_subsection.location)) containing_section_locs = modulestore().get_parent_locations(containing_subsection.location) containing_section = modulestore().get_item(containing_section_locs[0]) diff --git a/common/lib/xmodule/xmodule/modulestore/mongo.py b/common/lib/xmodule/xmodule/modulestore/mongo.py index deef3af3bf..550e6570ac 100644 --- a/common/lib/xmodule/xmodule/modulestore/mongo.py +++ b/common/lib/xmodule/xmodule/modulestore/mongo.py @@ -50,7 +50,6 @@ class CachingDescriptorSystem(MakoDescriptorSystem): self.load_item, resources_fs, error_tracker, render_template) self.modulestore = modulestore self.module_data = module_data - self.default_class = default_class def load_item(self, location): diff --git a/lms/djangoapps/courseware/module_render.py b/lms/djangoapps/courseware/module_render.py index 0e3b3a326c..d9f87d77b6 100644 --- a/lms/djangoapps/courseware/module_render.py +++ b/lms/djangoapps/courseware/module_render.py @@ -259,8 +259,6 @@ def _get_module(user, request, location, student_module_cache, course_id, positi module.metadata['data_dir'] if 'data_dir' in module.metadata else '', course_namespace = module.location._replace(category=None, name=None)) - logging.debug('in get_module') - # Allow URLs of the form '/course/' refer to the root of multicourse directory # hierarchy of this course module.get_html = replace_course_urls(module.get_html, course_id) From 6221baf3e5755c1398215efc4fac6c684daf8910 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Tue, 30 Oct 2012 15:58:59 -0400 Subject: [PATCH 087/308] Use TEST_ROOT log directory when running jasmine tests --- cms/envs/jasmine.py | 2 +- lms/envs/jasmine.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cms/envs/jasmine.py b/cms/envs/jasmine.py index b42744a520..f8ed6e0beb 100644 --- a/cms/envs/jasmine.py +++ b/cms/envs/jasmine.py @@ -8,7 +8,7 @@ from logsettings import get_logger_config ENABLE_JASMINE = True DEBUG = True -LOGGING = get_logger_config(ENV_ROOT / "log", +LOGGING = get_logger_config(TEST_ROOT / "log", logging_env="dev", tracking_filename="tracking.log", dev_env=True, diff --git a/lms/envs/jasmine.py b/lms/envs/jasmine.py index 43459f79aa..14c504e34f 100644 --- a/lms/envs/jasmine.py +++ b/lms/envs/jasmine.py @@ -8,7 +8,7 @@ from logsettings import get_logger_config ENABLE_JASMINE = True DEBUG = True -LOGGING = get_logger_config(ENV_ROOT / "log", +LOGGING = get_logger_config(TEST_ROOT / "log", logging_env="dev", tracking_filename="tracking.log", dev_env=True, From f0b4371c90d812ad62f686fa0dc788f4a2b1f28e Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Tue, 30 Oct 2012 16:01:28 -0400 Subject: [PATCH 088/308] addressed Cale's feedback --- lms/djangoapps/courseware/courses.py | 2 +- lms/djangoapps/courseware/tabs.py | 8 ++++---- lms/djangoapps/courseware/views.py | 7 +------ 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/lms/djangoapps/courseware/courses.py b/lms/djangoapps/courseware/courses.py index ca84fb3c65..1d88c4e5a3 100644 --- a/lms/djangoapps/courseware/courses.py +++ b/lms/djangoapps/courseware/courses.py @@ -150,7 +150,7 @@ def get_course_about_section(course, section_key): course.id, request.user, course, depth=2) loc = course.location._replace(category='about', name=section_key) - course_module = get_module(request.user, request, loc, student_module_cache, course.id) + course_module = get_module(request.user, request, loc, None, course.id) html = '' diff --git a/lms/djangoapps/courseware/tabs.py b/lms/djangoapps/courseware/tabs.py index 9f826b77f0..e926a0b114 100644 --- a/lms/djangoapps/courseware/tabs.py +++ b/lms/djangoapps/courseware/tabs.py @@ -260,13 +260,13 @@ def get_static_tab_by_slug(course, tab_slug): def get_static_tab_contents(request, cache, course, tab): loc = Location(course.location.tag, course.location.org, course.location.course, 'static_tab', tab['url_slug']) - course_module = get_module(request.user, request, loc, cache, course.id) + tab_module = get_module(request.user, request, loc, cache, course.id) - logging.debug('course_module = {0}'.format(course_module)) + logging.debug('course_module = {0}'.format(tab_module)) html = '' - if course_module is not None: - html = course_module.get_html() + if tab_module is not None: + html = tab_module.get_html() return html diff --git a/lms/djangoapps/courseware/views.py b/lms/djangoapps/courseware/views.py index bacc41fdf4..14bec50af3 100644 --- a/lms/djangoapps/courseware/views.py +++ b/lms/djangoapps/courseware/views.py @@ -347,12 +347,7 @@ def course_info(request, course_id): course = get_course_with_access(request.user, course_id, 'load') staff_access = has_access(request.user, course, 'staff') - - - cache = StudentModuleCache.cache_for_descriptor_descendents( - course.id, request.user, course, depth=2) - - return render_to_response('courseware/info.html', {'request' : request, 'course_id' : course_id, 'cache' : cache, + return render_to_response('courseware/info.html', {'request' : request, 'course_id' : course_id, 'cache' : None, 'course': course, 'staff_access': staff_access}) @ensure_csrf_cookie From 34c442a1dcd40e4947b775d1de39d2f098bd50ce Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Tue, 30 Oct 2012 16:04:51 -0400 Subject: [PATCH 089/308] removed unneeded trace log. Also don't need StudentModuleCache in 'about' section rendering --- common/djangoapps/xmodule_modifiers.py | 1 - lms/djangoapps/courseware/courses.py | 3 --- 2 files changed, 4 deletions(-) diff --git a/common/djangoapps/xmodule_modifiers.py b/common/djangoapps/xmodule_modifiers.py index 431181bfac..cda3d013cd 100644 --- a/common/djangoapps/xmodule_modifiers.py +++ b/common/djangoapps/xmodule_modifiers.py @@ -59,7 +59,6 @@ def replace_static_urls(get_html, prefix, course_namespace=None): @wraps(get_html) def _get_html(): - logging.debug('in replace_static_urls') return replace_urls(get_html(), staticfiles_prefix=prefix, course_namespace = course_namespace) return _get_html diff --git a/lms/djangoapps/courseware/courses.py b/lms/djangoapps/courseware/courses.py index 1d88c4e5a3..aa3fbf12bb 100644 --- a/lms/djangoapps/courseware/courses.py +++ b/lms/djangoapps/courseware/courses.py @@ -146,9 +146,6 @@ def get_course_about_section(course, section_key): request = get_request_for_thread() - student_module_cache = StudentModuleCache.cache_for_descriptor_descendents( - course.id, request.user, course, depth=2) - loc = course.location._replace(category='about', name=section_key) course_module = get_module(request.user, request, loc, None, course.id) From 8ec2c34ea5f4fa45f9cb566d901b6608fc019b39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s=20Rocha?= Date: Tue, 30 Oct 2012 16:05:06 -0400 Subject: [PATCH 090/308] Add google analytics to course info pages --- lms/templates/google_analytics.html | 11 +++++++++++ lms/templates/main.html | 15 ++------------- lms/templates/portal/course_about.html | 5 +++++ 3 files changed, 18 insertions(+), 13 deletions(-) create mode 100644 lms/templates/google_analytics.html diff --git a/lms/templates/google_analytics.html b/lms/templates/google_analytics.html new file mode 100644 index 0000000000..273fbac970 --- /dev/null +++ b/lms/templates/google_analytics.html @@ -0,0 +1,11 @@ + diff --git a/lms/templates/main.html b/lms/templates/main.html index f234aa72cf..87490a07e4 100644 --- a/lms/templates/main.html +++ b/lms/templates/main.html @@ -21,20 +21,9 @@ % if not course: - + <%include file="google_analytics.html" /> % endif + diff --git a/lms/templates/portal/course_about.html b/lms/templates/portal/course_about.html index 6fced73565..b35c7a1b6f 100644 --- a/lms/templates/portal/course_about.html +++ b/lms/templates/portal/course_about.html @@ -7,7 +7,12 @@ <%inherit file="../main.html" /> +<%block name="headextra"> + <%include file="../google_analytics.html" /> + + <%block name="js_extra"> + % if not registered: %if user.is_authenticated(): ## If the user is authenticated, clicking the enroll button just submits a form From 0674d4e74b0c5bc784b8f5663c9234e15984fec5 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Tue, 30 Oct 2012 16:16:09 -0400 Subject: [PATCH 091/308] Only allow django-admin to run in reload mode when browsing jasmine tests, and only kill the whole process group in that case (so as to know kill jenkins) --- rakefile | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/rakefile b/rakefile index 5cdc5b3214..e22b19df0c 100644 --- a/rakefile +++ b/rakefile @@ -41,9 +41,13 @@ def django_admin(system, env, command, *args) return "#{django_admin} #{command} --settings=#{system}.envs.#{env} --pythonpath=. #{args.join(' ')}" end -def django_for_jasmine(system) +def django_for_jasmine(system, django_reload) + if !django_reload + reload_arg = '--noreload' + end + django_pid = fork do - exec(*django_admin(system, 'jasmine', 'runserver', '12345').split(' ')) + exec(*django_admin(system, 'jasmine', 'runserver', "12345", reload_arg).split(' ')) end puts django_pid jasmine_url = 'http://localhost:12345/_jasmine/' @@ -67,7 +71,11 @@ def django_for_jasmine(system) begin yield jasmine_url ensure - Process.kill(:SIGKILL, -Process.getpgid(django_pid)) + if django_reload + Process.kill(:SIGKILL, -Process.getpgid(django_pid)) + else + Process.kill(:SIGKILL, django_pid) + end Process.wait(django_pid) end end @@ -116,7 +124,7 @@ end desc "Open jasmine tests in your default browser" task "browse_jasmine_#{system}" do - django_for_jasmine(system) do |jasmine_url| + django_for_jasmine(system, true) do |jasmine_url| Launchy.open(jasmine_url) puts "Press ENTER to terminate".red $stdin.gets @@ -126,7 +134,7 @@ end desc "Use phantomjs to run jasmine tests from the console" task "phantomjs_jasmine_#{system}" do phantomjs = ENV['PHANTOMJS_PATH'] || 'phantomjs' - django_for_jasmine(system) do |jasmine_url| + django_for_jasmine(system, false) do |jasmine_url| sh("#{phantomjs} common/test/phantom-jasmine/lib/run_jasmine_test.coffee #{jasmine_url}") end end From d4a6b589f119644aa3a2dadc73f55e1ad9089b64 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Tue, 30 Oct 2012 16:48:47 -0400 Subject: [PATCH 092/308] Add comment about the target of change log entries --- cms/CHANGELOG.md | 5 ++++- lms/CHANGELOG.md | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/cms/CHANGELOG.md b/cms/CHANGELOG.md index 6c43dfb681..bdd325bd8d 100644 --- a/cms/CHANGELOG.md +++ b/cms/CHANGELOG.md @@ -2,11 +2,14 @@ Instructions ============ For each pull request, add one or more lines to the bottom of the change list. When code is released to production, change the `Upcoming` entry to todays date, and add -a new block at the bottom of the file +a new block at the bottom of the file. Upcoming -------- +Change log entries should be targeted at end users. A good place to start is the +user story that instigated the pull request. + Changes ======= diff --git a/lms/CHANGELOG.md b/lms/CHANGELOG.md index 6c43dfb681..0794d379b9 100644 --- a/lms/CHANGELOG.md +++ b/lms/CHANGELOG.md @@ -2,11 +2,13 @@ Instructions ============ For each pull request, add one or more lines to the bottom of the change list. When code is released to production, change the `Upcoming` entry to todays date, and add -a new block at the bottom of the file +a new block at the bottom of the file. Upcoming -------- +Change log entries should be targeted at end users. A good place to start is the +user story that instigated the pull request. Changes ======= From e5b11a9c576226cbcf0643a3c7583ef82139bfa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s=20Rocha?= Date: Tue, 30 Oct 2012 19:19:16 -0400 Subject: [PATCH 093/308] Add HD control to video player --- .../xmodule/xmodule/css/video/display.scss | 28 ++++++++++++++++++ .../js/src/video/display/video_caption.coffee | 4 +-- .../js/src/video/display/video_control.coffee | 2 +- .../js/src/video/display/video_player.coffee | 13 +++++++- .../display/video_quality_control.coffee | 26 ++++++++++++++++ .../video/display/video_volume_control.coffee | 2 +- common/static/images/hd.png | Bin 0 -> 364 bytes 7 files changed, 70 insertions(+), 5 deletions(-) create mode 100644 common/lib/xmodule/xmodule/js/src/video/display/video_quality_control.coffee create mode 100644 common/static/images/hd.png diff --git a/common/lib/xmodule/xmodule/css/video/display.scss b/common/lib/xmodule/xmodule/css/video/display.scss index e8aba4d671..43b024ec32 100644 --- a/common/lib/xmodule/xmodule/css/video/display.scss +++ b/common/lib/xmodule/xmodule/css/video/display.scss @@ -355,6 +355,34 @@ div.video { } } + a.quality_control { + background: url(../images/hd.png) center no-repeat; + border-right: 1px solid #000; + @include box-shadow(1px 0 0 #555, inset 1px 0 0 #555); + color: #797979; + display: block; + float: left; + line-height: 46px; //height of play pause buttons + margin-left: 0; + padding: 0 lh(.5); + text-indent: -9999px; + @include transition(); + width: 30px; + + &:hover { + background-color: #444; + color: #fff; + text-decoration: none; + } + + &.active { + background-color: #F44; + color: #0ff; + text-decoration: none; + } + } + + a.hide-subtitles { background: url('../images/cc.png') center no-repeat; color: #797979; diff --git a/common/lib/xmodule/xmodule/js/src/video/display/video_caption.coffee b/common/lib/xmodule/xmodule/js/src/video/display/video_caption.coffee index b1e41afc3c..cdd74c5d07 100644 --- a/common/lib/xmodule/xmodule/js/src/video/display/video_caption.coffee +++ b/common/lib/xmodule/xmodule/js/src/video/display/video_caption.coffee @@ -22,7 +22,7 @@ class @VideoCaption extends Subview """ @$('.video-controls .secondary-controls').append """ Captions - """ + """#" @$('.subtitles').css maxHeight: @$('.video-wrapper').height() - 5 @fetchCaption() @@ -144,7 +144,7 @@ class @VideoCaption extends Subview @el.removeClass('closed') @scrollCaption() $.cookie('hide_captions', hide_captions, expires: 3650, path: '/') - + captionHeight: -> if @el.hasClass('fullscreen') $(window).height() - @$('.video-controls').height() diff --git a/common/lib/xmodule/xmodule/js/src/video/display/video_control.coffee b/common/lib/xmodule/xmodule/js/src/video/display/video_control.coffee index 5053f1dcb1..856549c3e2 100644 --- a/common/lib/xmodule/xmodule/js/src/video/display/video_control.coffee +++ b/common/lib/xmodule/xmodule/js/src/video/display/video_control.coffee @@ -16,7 +16,7 @@ class @VideoControl extends Subview Fill Browser
    - """ + """#" unless onTouchBasedDevice() @$('.video_control').addClass('play').html('Play') diff --git a/common/lib/xmodule/xmodule/js/src/video/display/video_player.coffee b/common/lib/xmodule/xmodule/js/src/video/display/video_player.coffee index bb89def63d..8829e25dac 100644 --- a/common/lib/xmodule/xmodule/js/src/video/display/video_player.coffee +++ b/common/lib/xmodule/xmodule/js/src/video/display/video_player.coffee @@ -9,6 +9,7 @@ class @VideoPlayer extends Subview bind: -> $(@control).bind('play', @play) .bind('pause', @pause) + $(@qualityControl).bind('changeQuality', @handlePlaybackQualityChange) $(@caption).bind('seek', @onSeek) $(@speedControl).bind('speedChange', @onSpeedChange) $(@progressSlider).bind('seek', @onSeek) @@ -25,6 +26,7 @@ class @VideoPlayer extends Subview render: -> @control = new VideoControl el: @$('.video-controls') + @qualityControl = new VideoQualityControl el: @$('.secondary-controls') @caption = new VideoCaption el: @el youtubeId: @video.youtubeId('1.0') @@ -41,10 +43,12 @@ class @VideoPlayer extends Subview rel: 0 showinfo: 0 enablejsapi: 1 + modestbranding: 1 videoId: @video.youtubeId() events: onReady: @onReady onStateChange: @onStateChange + onPlaybackQualityChange: @onPlaybackQualityChange @caption.hideCaptions(@['video'].hide_captions) addToolTip: -> @@ -53,7 +57,7 @@ class @VideoPlayer extends Subview my: 'top right' at: 'top center' - onReady: => + onReady: (event) => unless onTouchBasedDevice() $('.video-load-complete:first').data('video').player.play() @@ -68,6 +72,13 @@ class @VideoPlayer extends Subview when YT.PlayerState.ENDED @onEnded() + onPlaybackQualityChange: (event, value) => + quality = @player.getPlaybackQuality() + @qualityControl.onQualityChange(quality) + + handlePlaybackQualityChange: (event, value) => + @player.setPlaybackQuality(value) + onUnstarted: => @control.pause() @caption.pause() diff --git a/common/lib/xmodule/xmodule/js/src/video/display/video_quality_control.coffee b/common/lib/xmodule/xmodule/js/src/video/display/video_quality_control.coffee new file mode 100644 index 0000000000..f8f6167075 --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/video/display/video_quality_control.coffee @@ -0,0 +1,26 @@ +class @VideoQualityControl extends Subview + initialize: -> + @quality = null; + + bind: -> + @$('.quality_control').click @toggleQuality + + render: -> + @el.append """ + HD + """#" + + onQualityChange: (value) -> + @quality = value + if @quality in ['hd720', 'hd1080', 'highres'] + @el.addClass('active') + else + @el.removeClass('active') + + toggleQuality: (event) => + event.preventDefault() + if @quality in ['hd720', 'hd1080', 'highres'] + newQuality = 'large' + else + newQuality = 'hd720' + $(@).trigger('changeQuality', newQuality) \ No newline at end of file diff --git a/common/lib/xmodule/xmodule/js/src/video/display/video_volume_control.coffee b/common/lib/xmodule/xmodule/js/src/video/display/video_volume_control.coffee index 10d3f6b044..096b50042d 100644 --- a/common/lib/xmodule/xmodule/js/src/video/display/video_volume_control.coffee +++ b/common/lib/xmodule/xmodule/js/src/video/display/video_volume_control.coffee @@ -17,7 +17,7 @@ class @VideoVolumeControl extends Subview
    - """ + """#" @slider = @$('.volume-slider').slider orientation: "vertical" range: "min" diff --git a/common/static/images/hd.png b/common/static/images/hd.png new file mode 100644 index 0000000000000000000000000000000000000000..d6b8c1b7d1a242e8b5159e8fe3fb1c3dd83c6a31 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^azHG`!3HF+C+nOCQjEnx?oJHr&dIz4a@dl*-Cck* z5d3uBT@R!<3p^r=85p>QL70(Y)*K0-AbW|YuPgfgeTcDB^lvdu|7Ftjp^Qq85VUiY2UN%I_Aea}Zzn!0FYUM!zXyU7xs*dul!W9NhK8 z_`zZ;tI;xr z3~MeGhzhnhdu@~5qI109cCMG*zecynKX>dr=g&&{n5=6ZyJG&#xqiQL6x>%f-dXXQ zXXdrMnfY(0S^jytT_j?;|0C8J%-;{hy6Akb|MdTocuzK4`8y5qb3lJHc)I$ztaD0e F0ssc-j=cZ? literal 0 HcmV?d00001 From 188e1c68d79d108f59adbb54018343bcbfe7fd4d Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Tue, 30 Oct 2012 20:13:35 -0400 Subject: [PATCH 094/308] add self assessment module --- .idea/.name | 1 + .idea/encodings.xml | 5 + .../inspectionProfiles/profiles_settings.xml | 7 + .idea/misc.xml | 34 ++ .idea/mitx.iml | 9 + .idea/modules.xml | 9 + .idea/scopes/scope_settings.xml | 5 + .idea/vcs.xml | 7 + .idea/workspace.xml | 394 ++++++++++++++++++ common/lib/xmodule/setup.py | 1 + .../xmodule/xmodule/self_assessment_module.py | 174 ++++++++ 11 files changed, 646 insertions(+) create mode 100644 .idea/.name create mode 100644 .idea/encodings.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/mitx.iml create mode 100644 .idea/modules.xml create mode 100644 .idea/scopes/scope_settings.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml create mode 100644 common/lib/xmodule/xmodule/self_assessment_module.py diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000000..36d4bf6d51 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +mitx \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000000..e206d70d85 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000000..c60c33bb47 --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000000..715d0f8f2d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,34 @@ + + + + $APPLICATION_HOME_DIR$/lib/pycharm.jar!/resources/html5-schema/html5.rnc + + + + + + + + + + diff --git a/.idea/mitx.iml b/.idea/mitx.iml new file mode 100644 index 0000000000..a34a85703f --- /dev/null +++ b/.idea/mitx.iml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000000..7eaf1301cf --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml new file mode 100644 index 0000000000..922003b843 --- /dev/null +++ b/.idea/scopes/scope_settings.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000000..c80f2198b5 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000000..08fc21c094 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,394 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1351640399572 + 1351640399572 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/common/lib/xmodule/setup.py b/common/lib/xmodule/setup.py index 0441357427..e6c8fe577d 100644 --- a/common/lib/xmodule/setup.py +++ b/common/lib/xmodule/setup.py @@ -28,6 +28,7 @@ setup( "problem = xmodule.capa_module:CapaDescriptor", "problemset = xmodule.seq_module:SequenceDescriptor", "section = xmodule.backcompat_module:SemanticSectionDescriptor", + "selfassessment = xmodule.self_assessment_module:SelfAssessmentModule" "sequential = xmodule.seq_module:SequenceDescriptor", "slides = xmodule.backcompat_module:TranslateCustomTagDescriptor", "vertical = xmodule.vertical_module:VerticalDescriptor", diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py new file mode 100644 index 0000000000..c0dd835208 --- /dev/null +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -0,0 +1,174 @@ +import copy +from fs.errors import ResourceNotFoundError +import logging +import os +import sys +from lxml import etree +from lxml.html import rewrite_links +from path import path + +from .x_module import XModule +from pkg_resources import resource_string +from .xml_module import XmlDescriptor, name_to_pathname +from .editing_module import EditingDescriptor +from .stringify import stringify_children +from .html_checker import check_html +from xmodule.modulestore import Location + +from xmodule.contentstore.content import XASSET_SRCREF_PREFIX, StaticContent + +log = logging.getLogger("mitx.courseware") + + +class SelfAssessmentModule(XModule): + js = {'coffee': [resource_string(__name__, 'js/src/javascript_loader.coffee'), + resource_string(__name__, 'js/src/collapsible.coffee'), + resource_string(__name__, 'js/src/html/display.coffee') + ] + } + js_module_name = "SelfAssessmentModule" + + def get_html(self): + # cdodge: perform link substitutions for any references to course static content (e.g. images) + return rewrite_links(self.html, self.rewrite_content_links) + + def __init__(self, system, location, definition, descriptor, + instance_state=None, shared_state=None, **kwargs): + XModule.__init__(self, system, location, definition, descriptor, + instance_state, shared_state, **kwargs) + self.html = self.definition['data'] + + + +class SelfAssessmentDescriptor(XmlDescriptor, EditingDescriptor): + """ + Module for putting raw html in a course + """ + mako_template = "widgets/html-edit.html" + module_class = HtmlModule + filename_extension = "xml" + template_dir_name = "selfassessment" + + js = {'coffee': [resource_string(__name__, 'js/src/html/edit.coffee')]} + js_module_name = "HTMLEditingDescriptor" + + # VS[compat] TODO (cpennington): Delete this method once all fall 2012 course + # are being edited in the cms + @classmethod + def backcompat_paths(cls, path): + if path.endswith('.html.xml'): + path = path[:-9] + '.html' # backcompat--look for html instead of xml + if path.endswith('.html.html'): + path = path[:-5] # some people like to include .html in filenames.. + candidates = [] + while os.sep in path: + candidates.append(path) + _, _, path = path.partition(os.sep) + + # also look for .html versions instead of .xml + nc = [] + for candidate in candidates: + if candidate.endswith('.xml'): + nc.append(candidate[:-4] + '.html') + return candidates + nc + + # NOTE: html descriptors are special. We do not want to parse and + # export them ourselves, because that can break things (e.g. lxml + # adds body tags when it exports, but they should just be html + # snippets that will be included in the middle of pages. + + @classmethod + def load_definition(cls, xml_object, system, location): + '''Load a descriptor from the specified xml_object: + + If there is a filename attribute, load it as a string, and + log a warning if it is not parseable by etree.HTMLParser. + + If there is not a filename attribute, the definition is the body + of the xml_object, without the root tag (do not want in the + middle of a page) + ''' + filename = xml_object.get('filename') + if filename is None: + definition_xml = copy.deepcopy(xml_object) + cls.clean_metadata_from_xml(definition_xml) + return {'data': stringify_children(definition_xml)} + else: + # html is special. cls.filename_extension is 'xml', but + # if 'filename' is in the definition, that means to load + # from .html + # 'filename' in html pointers is a relative path + # (not same as 'html/blah.html' when the pointer is in a directory itself) + pointer_path = "{category}/{url_path}".format(category='html', + url_path=name_to_pathname(location.name)) + base = path(pointer_path).dirname() + #log.debug("base = {0}, base.dirname={1}, filename={2}".format(base, base.dirname(), filename)) + filepath = "{base}/{name}.html".format(base=base, name=filename) + #log.debug("looking for html file for {0} at {1}".format(location, filepath)) + + + + # VS[compat] + # TODO (cpennington): If the file doesn't exist at the right path, + # give the class a chance to fix it up. The file will be written out + # again in the correct format. This should go away once the CMS is + # online and has imported all current (fall 2012) courses from xml + if not system.resources_fs.exists(filepath): + candidates = cls.backcompat_paths(filepath) + #log.debug("candidates = {0}".format(candidates)) + for candidate in candidates: + if system.resources_fs.exists(candidate): + filepath = candidate + break + + try: + with system.resources_fs.open(filepath) as file: + html = file.read() + # Log a warning if we can't parse the file, but don't error + if not check_html(html): + msg = "Couldn't parse html in {0}.".format(filepath) + log.warning(msg) + system.error_tracker("Warning: " + msg) + + definition = {'data': html} + + # TODO (ichuang): remove this after migration + # for Fall 2012 LMS migration: keep filename (and unmangled filename) + definition['filename'] = [ filepath, filename ] + + return definition + + except (ResourceNotFoundError) as err: + msg = 'Unable to load file contents at path {0}: {1} '.format( + filepath, err) + # add more info and re-raise + raise Exception(msg), None, sys.exc_info()[2] + + # TODO (vshnayder): make export put things in the right places. + + def definition_to_xml(self, resource_fs): + '''If the contents are valid xml, write them to filename.xml. Otherwise, + write just to filename.xml, and the html + string to filename.html. + ''' + try: + return etree.fromstring(self.definition['data']) + except etree.XMLSyntaxError: + pass + + # Not proper format. Write html to file, return an empty tag + pathname = name_to_pathname(self.url_name) + pathdir = path(pathname).dirname() + filepath = u'{category}/{pathname}.html'.format(category=self.category, + pathname=pathname) + + resource_fs.makedir(os.path.dirname(filepath), allow_recreate=True) + with resource_fs.open(filepath, 'w') as file: + file.write(self.definition['data']) + + # write out the relative name + relname = path(pathname).basename() + + elt = etree.Element('html') + elt.set("filename", relname) + return elt From 62d1f1fe3ee54423012eecc89a050d353c5764f5 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Tue, 30 Oct 2012 20:14:55 -0400 Subject: [PATCH 095/308] update gitignore for pycharm --- .gitignore | 1 + .idea/.name | 1 - .idea/encodings.xml | 5 - .../inspectionProfiles/profiles_settings.xml | 7 - .idea/misc.xml | 34 -- .idea/mitx.iml | 9 - .idea/modules.xml | 9 - .idea/scopes/scope_settings.xml | 5 - .idea/vcs.xml | 7 - .idea/workspace.xml | 394 ------------------ lms/static/admin/css/ie.css | 63 --- test_root/log/.git-keep | 0 12 files changed, 1 insertion(+), 534 deletions(-) delete mode 100644 .idea/.name delete mode 100644 .idea/encodings.xml delete mode 100644 .idea/inspectionProfiles/profiles_settings.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/mitx.iml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/scopes/scope_settings.xml delete mode 100644 .idea/vcs.xml delete mode 100644 .idea/workspace.xml delete mode 100644 lms/static/admin/css/ie.css delete mode 100644 test_root/log/.git-keep diff --git a/.gitignore b/.gitignore index 81d9a57d3c..f24bdb1bfc 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ cms/static/sass/*.css lms/lib/comment_client/python nosetests.xml cover_html/ +.idea/ diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index 36d4bf6d51..0000000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -mitx \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index e206d70d85..0000000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index c60c33bb47..0000000000 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 715d0f8f2d..0000000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - $APPLICATION_HOME_DIR$/lib/pycharm.jar!/resources/html5-schema/html5.rnc - - - - - - - - - - diff --git a/.idea/mitx.iml b/.idea/mitx.iml deleted file mode 100644 index a34a85703f..0000000000 --- a/.idea/mitx.iml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 7eaf1301cf..0000000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml deleted file mode 100644 index 922003b843..0000000000 --- a/.idea/scopes/scope_settings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index c80f2198b5..0000000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index 08fc21c094..0000000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,394 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1351640399572 - 1351640399572 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lms/static/admin/css/ie.css b/lms/static/admin/css/ie.css deleted file mode 100644 index fd00f7f204..0000000000 --- a/lms/static/admin/css/ie.css +++ /dev/null @@ -1,63 +0,0 @@ -/* IE 6 & 7 */ - -/* Proper fixed width for dashboard in IE6 */ - -.dashboard #content { - *width: 768px; -} - -.dashboard #content-main { - *width: 535px; -} - -/* IE 6 ONLY */ - -/* Keep header from flowing off the page */ - -#container { - _position: static; -} - -/* Put the right sidebars back on the page */ - -.colMS #content-related { - _margin-right: 0; - _margin-left: 10px; - _position: static; -} - -/* Put the left sidebars back on the page */ - -.colSM #content-related { - _margin-right: 10px; - _margin-left: -115px; - _position: static; -} - -.form-row { - _height: 1%; -} - -/* Fix right margin for changelist filters in IE6 */ - -#changelist-filter ul { - _margin-right: -10px; -} - -/* IE ignores min-height, but treats height as if it were min-height */ - -.change-list .filtered { - _height: 400px; -} - -/* IE doesn't know alpha transparency in PNGs */ - -.inline-deletelink { - background: transparent url(../img/inline-delete-8bit.png) no-repeat; -} - -/* IE7 doesn't support inline-block */ -.change-list ul.toplinks li { - zoom: 1; - *display: inline; -} \ No newline at end of file diff --git a/test_root/log/.git-keep b/test_root/log/.git-keep deleted file mode 100644 index e69de29bb2..0000000000 From 5586139594b0b4295aba32be00abef95cfaea52c Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Tue, 30 Oct 2012 20:36:45 -0400 Subject: [PATCH 096/308] bugfix to self assessment --- common/lib/xmodule/setup.py | 2 +- common/lib/xmodule/xmodule/self_assessment_module.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common/lib/xmodule/setup.py b/common/lib/xmodule/setup.py index e6c8fe577d..d3889bc388 100644 --- a/common/lib/xmodule/setup.py +++ b/common/lib/xmodule/setup.py @@ -28,7 +28,7 @@ setup( "problem = xmodule.capa_module:CapaDescriptor", "problemset = xmodule.seq_module:SequenceDescriptor", "section = xmodule.backcompat_module:SemanticSectionDescriptor", - "selfassessment = xmodule.self_assessment_module:SelfAssessmentModule" + "selfassessment = xmodule.self_assessment_module:SelfAssessmentDescriptor", "sequential = xmodule.seq_module:SequenceDescriptor", "slides = xmodule.backcompat_module:TranslateCustomTagDescriptor", "vertical = xmodule.vertical_module:VerticalDescriptor", diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index c0dd835208..b8c2e85ef0 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -45,7 +45,7 @@ class SelfAssessmentDescriptor(XmlDescriptor, EditingDescriptor): Module for putting raw html in a course """ mako_template = "widgets/html-edit.html" - module_class = HtmlModule + module_class = SelfAssessmentModule filename_extension = "xml" template_dir_name = "selfassessment" From 7fc54dc717e3cdac12059a766e5d9bbe6e94ea0f Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Tue, 30 Oct 2012 20:38:33 -0400 Subject: [PATCH 097/308] fix docstring --- common/lib/xmodule/xmodule/self_assessment_module.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index b8c2e85ef0..f1b8353c75 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -42,7 +42,7 @@ class SelfAssessmentModule(XModule): class SelfAssessmentDescriptor(XmlDescriptor, EditingDescriptor): """ - Module for putting raw html in a course + Module for putting self assessment questions into a course """ mako_template = "widgets/html-edit.html" module_class = SelfAssessmentModule From 8d4ee3b05ee632fa8a0b032f941ee8bf198f5120 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Wed, 31 Oct 2012 10:37:21 -0400 Subject: [PATCH 098/308] Add more documentation of development tasks --- doc/development.md | 78 +++++++++++++++++++++++++++++++++------------- rakefile | 14 +++++++++ 2 files changed, 71 insertions(+), 21 deletions(-) diff --git a/doc/development.md b/doc/development.md index b4ac52d202..c38cda56ff 100644 --- a/doc/development.md +++ b/doc/development.md @@ -1,35 +1,53 @@ -# Running the CMS +# Development Tasks -One can start the CMS by running `rake cms`. This will run the server on localhost -port 8001. +## Prerequisites -However, the server also needs data to work from. +### Ruby -## Installing Mongodb +To install all of the libraries needed for our rake commands, run `bundle install`. +This will read the `Gemfile` and install all of the gems specified there. -Please see http://www.mongodb.org/downloads for more detailed instructions. +### Python -### Ubuntu +In order, run the following: - sudo apt-get install mongodb + pip install -r pre-requirements.txt + pip install -r requirements.txt + pip install -r test-requirements.txt -### OSX +### Binaries -Use the MacPorts package `mongodb` or the Homebrew formula `mongodb` +Install the following: -## Initializing Mongodb +* Mongodb (http://www.mongodb.org/) -Check out the course data directories that you want to work with into the -`GITHUB_REPO_ROOT` (by default, `../data`). Then run the following command: +### Databases +Run the following to setup the relational database before starting servers: - rake django-admin[import,cms,dev,../data] + rake resetdb -Replace `../data` with your `GITHUB_REPO_ROOT` if it's not the default value. +## Starting development servers -This will import all courses in your data directory into mongodb +Both the LMS and Studio can be started using the following shortcut tasks -## Unit tests + rake lms # Start the LMS + rake cms # Start studio + +Under the hood, this executes `django-admin.py runserver --pythonpath=$WORKING_DIRECTORY --settings=lms.envs.dev`, +which starts a local development server. + +Both of these commands take arguments to start the servers in different environments +or with additional options: + + # Start the LMS using the test configuration, on port 5000 + rake lms[test,5000] # Executes django-admin.py runserver --pythonpath=$WORKING_DIRECTORY --setings=lms.envs.test 5000 + +*N.B.* You may have to escape the `[` characters, depending on your shell: `rake "lms[test,5000]"` + +## Running tests + +### Python Tests This runs all the tests (long, uses collectstatic): @@ -43,10 +61,6 @@ xmodule can be tested independently, with this: rake test_common/lib/xmodule -To see all available rake commands, do this: - - rake -T - To run a single django test class: django-admin.py test --settings=lms.envs.test --pythonpath=. lms/djangoapps/courseware/tests/tests.py:TestViewAuth @@ -67,6 +81,28 @@ To run a single nose test: Very handy: if you uncomment the `--pdb` argument in `NOSE_ARGS` in `lms/envs/test.py`, it will drop you into pdb on error. This lets you go up and down the stack and see what the values of the variables are. Check out http://docs.python.org/library/pdb.html +### Javascript Tests + +These commands start a development server with jasmine testing enabled, and launch your default browser +pointing to those tests + + rake browse_jasmine_{lms,cms} + +To run the tests headless, you must install phantomjs (http://phantomjs.org/download.html). + + rake phantomjs_jasmine_{lms,cms} + +If the `phantomjs` binary is not on the path, set the `PHANTOMJS_PATH` environment variable to point to it + + PHANTOMJS_PATH=/path/to/phantomjs rake phantomjs_jasmine_{lms,cms} + + +## Getting More Information + +Run the following to see a list of all rake tasks available and their arguments + + rake -T + ## Content development If you change course content, while running the LMS in dev mode, it is unnecessary to restart to refresh the modulestore. diff --git a/rakefile b/rakefile index e22b19df0c..798898310e 100644 --- a/rakefile +++ b/rakefile @@ -197,6 +197,20 @@ TEST_TASKS = [] end end + +desc "Reset the relational database used by django. WARNING: this will delete all of your existing users" +task :resetdb, [:env] do |t, args| + args.with_defaults(:env => 'dev') + sh(django_admin(:lms, args.env, 'syncdb')) + sh(django_admin(:lms, args.env, 'migrate')) +end + +desc "Update the relational database to the latest migration" +task :migrate, [:env] do |t, args| + args.with_defaults(:env => 'dev') + sh(django_admin(:lms, args.env, 'migrate')) +end + Dir["common/lib/*"].each do |lib| task_name = "test_#{lib}" From 2ca63268d6c7082c2e19868456750eda3f663db0 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Wed, 31 Oct 2012 10:39:26 -0400 Subject: [PATCH 099/308] Add commands for Studio LMS --- doc/development.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/development.md b/doc/development.md index c38cda56ff..d68b49228e 100644 --- a/doc/development.md +++ b/doc/development.md @@ -33,6 +33,8 @@ Both the LMS and Studio can be started using the following shortcut tasks rake lms # Start the LMS rake cms # Start studio + rake lms[cms.dev] # Start LMS to run alongside Studio + rake lms[cms.dev_preview] # Start LMS to run alongside Studio in preview mode Under the hood, this executes `django-admin.py runserver --pythonpath=$WORKING_DIRECTORY --settings=lms.envs.dev`, which starts a local development server. From 0f5af40bf5fa490e958c48207e5ec46493b93bae Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Wed, 31 Oct 2012 13:06:05 -0400 Subject: [PATCH 100/308] add self assessment --- .../js/src/selfassessment/display.coffee | 303 ++++++++++++++++++ .../xmodule/xmodule/self_assessment_module.py | 29 +- 2 files changed, 331 insertions(+), 1 deletion(-) create mode 100644 common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee diff --git a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee new file mode 100644 index 0000000000..5d5e3a8eb8 --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee @@ -0,0 +1,303 @@ +class @Problem + + constructor: (element) -> + @el = $(element).find('.problems-wrapper') + @id = @el.data('problem-id') + @element_id = @el.attr('id') + @url = @el.data('url') + @render() + + $: (selector) -> + $(selector, @el) + + bind: => + problem_prefix = @element_id.replace(/problem_/,'') + @inputs = @$("[id^=input_#{problem_prefix}_]") + + @$('section.action input:button').click @refreshAnswers + @$('section.action input.check').click @check_fd + #@$('section.action input.check').click @check + @$('section.action input.show').click @show + @$('section.action input.save').click @save + + render: (content) -> + if content + @el.html(content) + JavascriptLoader.executeModuleScripts @el, () => + @setupInputTypes() + @bind() + else + $.postWithPrefix "#{@url}/problem_get", (response) => + @el.html(response.html) + JavascriptLoader.executeModuleScripts @el, () => + @setupInputTypes() + @bind() + + + # TODO add hooks for problem types here by inspecting response.html and doing + # stuff if a div w a class is found + + setupInputTypes: => + @inputtypeDisplays = {} + @el.find(".capa_inputtype").each (index, inputtype) => + classes = $(inputtype).attr('class').split(' ') + id = $(inputtype).attr('id') + for cls in classes + setupMethod = @inputtypeSetupMethods[cls] + if setupMethod? + @inputtypeDisplays[id] = setupMethod(inputtype) + + + ### + # 'check_fd' uses FormData to allow file submissions in the 'problem_check' dispatch, + # in addition to simple querystring-based answers + # + # NOTE: The dispatch 'problem_check' is being singled out for the use of FormData; + # maybe preferable to consolidate all dispatches to use FormData + ### + check_fd: => + Logger.log 'problem_check', @answers + + # If there are no file inputs in the problem, we can fall back on @check + if $('input:file').length == 0 + @check() + return + + if not window.FormData + alert "Submission aborted! Sorry, your browser does not support file uploads. If you can, please use Chrome or Safari which have been verified to support file uploads." + return + + fd = new FormData() + + # Sanity checks on submission + max_filesize = 4*1000*1000 # 4 MB + file_too_large = false + file_not_selected = false + required_files_not_submitted = false + unallowed_file_submitted = false + + errors = [] + + @inputs.each (index, element) -> + if element.type is 'file' + required_files = $(element).data("required_files") + allowed_files = $(element).data("allowed_files") + for file in element.files + if allowed_files.length != 0 and file.name not in allowed_files + unallowed_file_submitted = true + errors.push "You submitted #{file.name}; only #{allowed_files} are allowed." + if file.name in required_files + required_files.splice(required_files.indexOf(file.name), 1) + if file.size > max_filesize + file_too_large = true + errors.push 'Your file "' + file.name '" is too large (max size: ' + max_filesize/(1000*1000) + ' MB)' + fd.append(element.id, file) + if element.files.length == 0 + file_not_selected = true + fd.append(element.id, '') # In case we want to allow submissions with no file + if required_files.length != 0 + required_files_not_submitted = true + errors.push "You did not submit the required files: #{required_files}." + else + fd.append(element.id, element.value) + + + if file_not_selected + errors.push 'You did not select any files to submit' + + error_html = '
      \n' + for error in errors + error_html += '
    • ' + error + '
    • \n' + error_html += '
    ' + @gentle_alert error_html + + abort_submission = file_too_large or file_not_selected or unallowed_file_submitted or required_files_not_submitted + + settings = + type: "POST" + data: fd + processData: false + contentType: false + success: (response) => + switch response.success + when 'incorrect', 'correct' + @render(response.contents) + @updateProgress response + else + @gentle_alert response.success + + if not abort_submission + $.ajaxWithPrefix("#{@url}/problem_check", settings) + + check: => + Logger.log 'problem_check', @answers + $.postWithPrefix "#{@url}/problem_check", @answers, (response) => + switch response.success + when 'incorrect', 'correct' + @render(response.contents) + @updateProgress response + if @el.hasClass 'showed' + @el.removeClass 'showed' + else + @gentle_alert response.success + + reset: => + Logger.log 'problem_reset', @answers + $.postWithPrefix "#{@url}/problem_reset", id: @id, (response) => + @render(response.html) + @updateProgress response + + # TODO this needs modification to deal with javascript responses; perhaps we + # need something where responsetypes can define their own behavior when show + # is called. + show: => + if !@el.hasClass 'showed' + Logger.log 'problem_show', problem: @id + $.postWithPrefix "#{@url}/problem_show", (response) => + answers = response.answers + $.each answers, (key, value) => + if $.isArray(value) + for choice in value + @$("label[for='input_#{key}_#{choice}']").attr correct_answer: 'true' + else + answer = @$("#answer_#{key}, #solution_#{key}") + answer.html(value) + Collapsible.setCollapsibles(answer) + + # TODO remove the above once everything is extracted into its own + # inputtype functions. + + @el.find(".capa_inputtype").each (index, inputtype) => + classes = $(inputtype).attr('class').split(' ') + for cls in classes + display = @inputtypeDisplays[$(inputtype).attr('id')] + showMethod = @inputtypeShowAnswerMethods[cls] + showMethod(inputtype, display, answers) if showMethod? + + @el.find('.problem > div').each (index, element) => + MathJax.Hub.Queue ["Typeset", MathJax.Hub, element] + + @$('.show').val 'Hide Answer' + @el.addClass 'showed' + @updateProgress response + else + @$('[id^=answer_], [id^=solution_]').text '' + @$('[correct_answer]').attr correct_answer: null + @el.removeClass 'showed' + @$('.show').val 'Show Answer' + + @el.find(".capa_inputtype").each (index, inputtype) => + display = @inputtypeDisplays[$(inputtype).attr('id')] + classes = $(inputtype).attr('class').split(' ') + for cls in classes + hideMethod = @inputtypeHideAnswerMethods[cls] + hideMethod(inputtype, display) if hideMethod? + + gentle_alert: (msg) => + if @el.find('.capa_alert').length + @el.find('.capa_alert').remove() + alert_elem = "
    " + msg + "
    " + @el.find('.action').after(alert_elem) + @el.find('.capa_alert').css(opacity: 0).animate(opacity: 1, 700) + + save: => + Logger.log 'problem_save', @answers + $.postWithPrefix "#{@url}/problem_save", @answers, (response) => + if response.success + saveMessage = "Your answers have been saved but not graded. Hit 'Check' to grade them." + @gentle_alert saveMessage + @updateProgress response + + refreshMath: (event, element) => + element = event.target unless element + elid = element.id.replace(/^input_/,'') + target = "display_" + elid + + # MathJax preprocessor is loaded by 'setupInputTypes' + preprocessor_tag = "inputtype_" + elid + mathjax_preprocessor = @inputtypeDisplays[preprocessor_tag] + + if jax = MathJax.Hub.getAllJax(target)[0] + eqn = $(element).val() + if mathjax_preprocessor + eqn = mathjax_preprocessor(eqn) + MathJax.Hub.Queue(['Text', jax, eqn], [@updateMathML, jax, element]) + + return # Explicit return for CoffeeScript + + updateMathML: (jax, element) => + try + $("##{element.id}_dynamath").val(jax.root.toMathML '') + catch exception + throw exception unless exception.restart + MathJax.Callback.After [@refreshMath, jax], exception.restart + + refreshAnswers: => + @$('input.schematic').each (index, element) -> + element.schematic.update_value() + @$(".CodeMirror").each (index, element) -> + element.CodeMirror.save() if element.CodeMirror.save + @answers = @inputs.serialize() + + inputtypeSetupMethods: + + 'text-input-dynamath': (element) => + ### + Return: function (eqn) -> eqn that preprocesses the user formula input before + it is fed into MathJax. Return 'false' if no preprocessor specified + ### + data = $(element).find('.text-input-dynamath_data') + + preprocessorClassName = data.data('preprocessor') + preprocessorClass = window[preprocessorClassName] + if not preprocessorClass? + return false + else + preprocessor = new preprocessorClass() + return preprocessor.fn + + javascriptinput: (element) => + + data = $(element).find(".javascriptinput_data") + + params = data.data("params") + submission = data.data("submission") + evaluation = data.data("evaluation") + problemState = data.data("problem_state") + displayClass = window[data.data('display_class')] + + if evaluation == '' + evaluation = null + + container = $(element).find(".javascriptinput_container") + submissionField = $(element).find(".javascriptinput_input") + + display = new displayClass(problemState, submission, evaluation, container, submissionField, params) + display.render() + + return display + + inputtypeShowAnswerMethods: + choicegroup: (element, display, answers) => + element = $(element) + + element.find('input').attr('disabled', 'disabled') + + input_id = element.attr('id').replace(/inputtype_/,'') + answer = answers[input_id] + for choice in answer + element.find("label[for='input_#{input_id}_#{choice}']").addClass 'choicegroup_correct' + + javascriptinput: (element, display, answers) => + answer_id = $(element).attr('id').split("_")[1...].join("_") + answer = JSON.parse(answers[answer_id]) + display.showAnswer(answer) + + inputtypeHideAnswerMethods: + choicegroup: (element, display) => + element = $(element) + element.find('input').attr('disabled', null) + element.find('label').removeClass('choicegroup_correct') + + javascriptinput: (element, display) => + display.hideAnswer() diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index f1b8353c75..17aa3832d8 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -23,7 +23,7 @@ log = logging.getLogger("mitx.courseware") class SelfAssessmentModule(XModule): js = {'coffee': [resource_string(__name__, 'js/src/javascript_loader.coffee'), resource_string(__name__, 'js/src/collapsible.coffee'), - resource_string(__name__, 'js/src/html/display.coffee') + resource_string(__name__, 'js/src/selfassessment/display.coffee') ] } js_module_name = "SelfAssessmentModule" @@ -38,6 +38,33 @@ class SelfAssessmentModule(XModule): instance_state, shared_state, **kwargs) self.html = self.definition['data'] + def handle_ajax(self, dispatch, get): + ''' + This is called by courseware.module_render, to handle an AJAX call. + "get" is request.POST. + + Returns a json dictionary: + { 'progress_changed' : True/False, + 'progress' : 'none'/'in_progress'/'done', + } + ''' + handlers = { + 'problem_get': self.get_problem, + 'problem_check': self.check_problem, + 'problem_save': self.save_problem, + } + + if dispatch not in handlers: + return 'Error' + + before = self.get_progress() + d = handlers[dispatch](get) + after = self.get_progress() + d.update({ + 'progress_changed': after != before, + 'progress_status': Progress.to_js_status_str(after), + }) + return json.dumps(d, cls=ComplexEncoder) class SelfAssessmentDescriptor(XmlDescriptor, EditingDescriptor): From 255720abd7d059d772b3666ea9defc8da05516f3 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Wed, 31 Oct 2012 13:21:36 -0400 Subject: [PATCH 101/308] Clean old javascript tests from CAS --- cms/envs/jasmine.py | 5 +- cms/static/coffee/spec/main_spec.coffee | 66 --------- .../coffee/spec/models/module_spec.coffee | 73 +--------- .../coffee/spec/views/course_spec.coffee | 85 ------------ .../coffee/spec/views/module_edit_spec.coffee | 129 +++++++++--------- .../coffee/spec/views/module_spec.coffee | 24 ---- .../coffee/spec/views/week_edit_spec.coffee | 7 - cms/static/coffee/spec/views/week_spec.coffee | 67 --------- cms/static/coffee/src/main.coffee | 26 ---- .../coffee/src/models/new_module.coffee | 5 - cms/static/coffee/src/views/course.coffee | 28 ---- cms/static/coffee/src/views/module.coffee | 14 -- cms/static/coffee/src/views/module_add.coffee | 26 ---- cms/static/coffee/src/views/week.coffee | 32 ----- cms/static/coffee/src/views/week_edit.coffee | 3 - lms/envs/jasmine.py | 5 +- rakefile | 1 - 17 files changed, 68 insertions(+), 528 deletions(-) delete mode 100644 cms/static/coffee/spec/views/course_spec.coffee delete mode 100644 cms/static/coffee/spec/views/module_spec.coffee delete mode 100644 cms/static/coffee/spec/views/week_edit_spec.coffee delete mode 100644 cms/static/coffee/spec/views/week_spec.coffee delete mode 100644 cms/static/coffee/src/models/new_module.coffee delete mode 100644 cms/static/coffee/src/views/course.coffee delete mode 100644 cms/static/coffee/src/views/module.coffee delete mode 100644 cms/static/coffee/src/views/module_add.coffee delete mode 100644 cms/static/coffee/src/views/week.coffee delete mode 100644 cms/static/coffee/src/views/week_edit.coffee diff --git a/cms/envs/jasmine.py b/cms/envs/jasmine.py index f8ed6e0beb..b29e170411 100644 --- a/cms/envs/jasmine.py +++ b/cms/envs/jasmine.py @@ -17,8 +17,9 @@ LOGGING = get_logger_config(TEST_ROOT / "log", PIPELINE_JS['js-test-source'] = { 'source_filenames': sum([ pipeline_group['source_filenames'] - for pipeline_group - in PIPELINE_JS.values() + for group_name, pipeline_group + in PIPELINE_JS.items() + if group_name != 'spec' ], []), 'output_filename': 'js/cms-test-source.js' } diff --git a/cms/static/coffee/spec/main_spec.coffee b/cms/static/coffee/spec/main_spec.coffee index 72800cec7f..8b2fa52866 100644 --- a/cms/static/coffee/spec/main_spec.coffee +++ b/cms/static/coffee/spec/main_spec.coffee @@ -8,72 +8,6 @@ describe "CMS", -> it "should initialize Views", -> expect(CMS.Views).toBeDefined() - describe "start", -> - beforeEach -> - @element = $("
    ") - spyOn(CMS.Views, "Course").andReturn(jasmine.createSpyObj("Course", ["render"])) - CMS.start(@element) - - it "create the Course", -> - expect(CMS.Views.Course).toHaveBeenCalledWith(el: @element) - expect(CMS.Views.Course().render).toHaveBeenCalled() - - describe "view stack", -> - beforeEach -> - @currentView = jasmine.createSpy("currentView") - CMS.viewStack = [@currentView] - - describe "replaceView", -> - beforeEach -> - @newView = jasmine.createSpy("newView") - CMS.on("content.show", (@expectedView) =>) - CMS.replaceView(@newView) - - it "replace the views on the viewStack", -> - expect(CMS.viewStack).toEqual([@newView]) - - it "trigger content.show on CMS", -> - expect(@expectedView).toEqual(@newView) - - describe "pushView", -> - beforeEach -> - @newView = jasmine.createSpy("newView") - CMS.on("content.show", (@expectedView) =>) - CMS.pushView(@newView) - - it "push new view onto viewStack", -> - expect(CMS.viewStack).toEqual([@currentView, @newView]) - - it "trigger content.show on CMS", -> - expect(@expectedView).toEqual(@newView) - - describe "popView", -> - it "remove the current view from the viewStack", -> - CMS.popView() - expect(CMS.viewStack).toEqual([]) - - describe "when there's no view on the viewStack", -> - beforeEach -> - CMS.viewStack = [@currentView] - CMS.on("content.hide", => @eventTriggered = true) - CMS.popView() - - it "trigger content.hide on CMS", -> - expect(@eventTriggered).toBeTruthy - - describe "when there's previous view on the viewStack", -> - beforeEach -> - @parentView = jasmine.createSpyObj("parentView", ["delegateEvents"]) - CMS.viewStack = [@parentView, @currentView] - CMS.on("content.show", (@expectedView) =>) - CMS.popView() - - it "trigger content.show with the previous view on CMS", -> - expect(@expectedView).toEqual @parentView - - it "re-bind events on the view", -> - expect(@parentView.delegateEvents).toHaveBeenCalled() - describe "main helper", -> beforeEach -> @previousAjaxSettings = $.extend(true, {}, $.ajaxSettings) diff --git a/cms/static/coffee/spec/models/module_spec.coffee b/cms/static/coffee/spec/models/module_spec.coffee index 8fd552d93c..5fd447539f 100644 --- a/cms/static/coffee/spec/models/module_spec.coffee +++ b/cms/static/coffee/spec/models/module_spec.coffee @@ -3,75 +3,4 @@ describe "CMS.Models.Module", -> expect(new CMS.Models.Module().url).toEqual("/save_item") it "set the correct default", -> - expect(new CMS.Models.Module().defaults).toEqual({data: ""}) - - describe "loadModule", -> - describe "when the module exists", -> - beforeEach -> - @fakeModule = jasmine.createSpy("fakeModuleObject") - window.FakeModule = jasmine.createSpy("FakeModule").andReturn(@fakeModule) - @module = new CMS.Models.Module(type: "FakeModule") - @stubDiv = $('
    ') - @stubElement = $('
    ') - @stubElement.data('type', "FakeModule") - - @stubDiv.append(@stubElement) - @module.loadModule(@stubDiv) - - afterEach -> - window.FakeModule = undefined - - it "initialize the module", -> - expect(window.FakeModule).toHaveBeenCalled() - # Need to compare underlying nodes, because jquery selectors - # aren't equal even when they point to the same node. - # http://stackoverflow.com/questions/9505437/how-to-test-jquery-with-jasmine-for-element-id-if-used-as-this - expectedNode = @stubElement[0] - actualNode = window.FakeModule.mostRecentCall.args[0][0] - - expect(actualNode).toEqual(expectedNode) - expect(@module.module).toEqual(@fakeModule) - - describe "when the module does not exists", -> - beforeEach -> - @previousConsole = window.console - window.console = jasmine.createSpyObj("fakeConsole", ["error"]) - @module = new CMS.Models.Module(type: "HTML") - @module.loadModule($("
    ")) - - afterEach -> - window.console = @previousConsole - - it "print out error to log", -> - expect(window.console.error).toHaveBeenCalled() - expect(window.console.error.mostRecentCall.args[0]).toMatch("^Unable to load") - - - describe "editUrl", -> - it "construct the correct URL based on id", -> - expect(new CMS.Models.Module(id: "i4x://mit.edu/module/html_123").editUrl()) - .toEqual("/edit_item?id=i4x%3A%2F%2Fmit.edu%2Fmodule%2Fhtml_123") - - describe "save", -> - beforeEach -> - spyOn(Backbone.Model.prototype, "save") - @module = new CMS.Models.Module() - - describe "when the module exists", -> - beforeEach -> - @module.module = jasmine.createSpyObj("FakeModule", ["save"]) - @module.module.save.andReturn("module data") - @module.save() - - it "set the data and call save on the module", -> - expect(@module.get("data")).toEqual("\"module data\"") - - it "call save on the backbone model", -> - expect(Backbone.Model.prototype.save).toHaveBeenCalled() - - describe "when the module does not exists", -> - beforeEach -> - @module.save() - - it "call save on the backbone model", -> - expect(Backbone.Model.prototype.save).toHaveBeenCalled() + expect(new CMS.Models.Module().defaults).toEqual(undefined) diff --git a/cms/static/coffee/spec/views/course_spec.coffee b/cms/static/coffee/spec/views/course_spec.coffee deleted file mode 100644 index f6a430ac2d..0000000000 --- a/cms/static/coffee/spec/views/course_spec.coffee +++ /dev/null @@ -1,85 +0,0 @@ -describe "CMS.Views.Course", -> - beforeEach -> - setFixtures """ -
    -
    -
      -
    1. -
    2. -
    -
    - """ - CMS.unbind() - - describe "render", -> - beforeEach -> - spyOn(CMS.Views, "Week").andReturn(jasmine.createSpyObj("Week", ["render"])) - new CMS.Views.Course(el: $("#main-section")).render() - - it "create week view for each week",-> - expect(CMS.Views.Week.calls[0].args[0]) - .toEqual({ el: $(".week-one").get(0), height: 101 }) - expect(CMS.Views.Week.calls[1].args[0]) - .toEqual({ el: $(".week-two").get(0), height: 101 }) - - describe "on content.show", -> - beforeEach -> - @view = new CMS.Views.Course(el: $("#main-section")) - @subView = jasmine.createSpyObj("subView", ["render"]) - @subView.render.andReturn(el: "Subview Content") - spyOn(@view, "contentHeight").andReturn(100) - CMS.trigger("content.show", @subView) - - afterEach -> - $("body").removeClass("content") - - it "add content class to body", -> - expect($("body").attr("class")).toEqual("content") - - it "replace content in .main-content", -> - expect($(".main-content")).toHaveHtml("Subview Content") - - it "set height on calendar", -> - expect($(".cal")).toHaveCss(height: "100px") - - it "set minimum height on all sections", -> - expect($("#main-section>section")).toHaveCss(minHeight: "100px") - - describe "on content.hide", -> - beforeEach -> - $("body").addClass("content") - @view = new CMS.Views.Course(el: $("#main-section")) - $(".cal").css(height: 100) - $("#main-section>section").css(minHeight: 100) - CMS.trigger("content.hide") - - afterEach -> - $("body").removeClass("content") - - it "remove content class from body", -> - expect($("body").attr("class")).toEqual("") - - it "remove content from .main-content", -> - expect($(".main-content")).toHaveHtml("") - - it "reset height on calendar", -> - expect($(".cal")).not.toHaveCss(height: "100px") - - it "reset minimum height on all sections", -> - expect($("#main-section>section")).not.toHaveCss(minHeight: "100px") - - describe "maxWeekHeight", -> - it "return maximum height of the week element", -> - @view = new CMS.Views.Course(el: $("#main-section")) - expect(@view.maxWeekHeight()).toEqual(101) - - describe "contentHeight", -> - beforeEach -> - $("body").append($('
    ').height(100).hide()) - - afterEach -> - $("body>header#test").remove() - - it "return the window height minus the header bar", -> - @view = new CMS.Views.Course(el: $("#main-section")) - expect(@view.contentHeight()).toEqual($(window).height() - 100) diff --git a/cms/static/coffee/spec/views/module_edit_spec.coffee b/cms/static/coffee/spec/views/module_edit_spec.coffee index 067d169bca..5e83ecb42d 100644 --- a/cms/static/coffee/spec/views/module_edit_spec.coffee +++ b/cms/static/coffee/spec/views/module_edit_spec.coffee @@ -1,81 +1,74 @@ describe "CMS.Views.ModuleEdit", -> beforeEach -> - @stubModule = jasmine.createSpyObj("Module", ["editUrl", "loadModule"]) - spyOn($.fn, "load") + @stubModule = jasmine.createSpy("CMS.Models.Module") + @stubModule.id = 'stub-id' + + setFixtures """ -
    - save - cancel -
      -
    1. - submodule -
    2. -
    +
  • +
    +
    + ${editor} +
    + Save + Cancel
    - """ #" +
    + Edit + Delete +
    + +
    +
    +
    +
  • + """ + spyOn($.fn, 'load').andReturn(@moduleData) + + @moduleEdit = new CMS.Views.ModuleEdit( + el: $(".component") + model: @stubModule + onDelete: jasmine.createSpy() + ) CMS.unbind() - describe "defaults", -> - it "set the correct tagName", -> - expect(new CMS.Views.ModuleEdit(model: @stubModule).tagName).toEqual("section") + describe "class definition", -> + it "sets the correct tagName", -> + expect(@moduleEdit.tagName).toEqual("li") - it "set the correct className", -> - expect(new CMS.Views.ModuleEdit(model: @stubModule).className).toEqual("edit-pane") + it "sets the correct className", -> + expect(@moduleEdit.className).toEqual("component") - describe "view creation", -> - beforeEach -> - @stubModule.editUrl.andReturn("/edit_item?id=stub_module") - new CMS.Views.ModuleEdit(el: $("#module-edit"), model: @stubModule) + describe "methods", -> + describe "initialize", -> + beforeEach -> + spyOn(CMS.Views.ModuleEdit.prototype, 'render') + @moduleEdit = new CMS.Views.ModuleEdit( + el: $(".component") + model: @stubModule + onDelete: jasmine.createSpy() + ) - it "load the edit via ajax and pass to the model", -> - expect($.fn.load).toHaveBeenCalledWith("/edit_item?id=stub_module", jasmine.any(Function)) - if $.fn.load.mostRecentCall - $.fn.load.mostRecentCall.args[1]() - expect(@stubModule.loadModule).toHaveBeenCalledWith($("#module-edit").get(0)) + it "renders the module editor", -> + expect(@moduleEdit.render).toHaveBeenCalled() - describe "save", -> - beforeEach -> - @stubJqXHR = jasmine.createSpy("stubJqXHR") - @stubJqXHR.success = jasmine.createSpy("stubJqXHR.success").andReturn(@stubJqXHR) - @stubJqXHR.error = jasmine.createSpy("stubJqXHR.error").andReturn(@stubJqXHR) - @stubModule.save = jasmine.createSpy("stubModule.save").andReturn(@stubJqXHR) - new CMS.Views.ModuleEdit(el: $(".module-edit"), model: @stubModule) - spyOn(window, "alert") - $(".save-update").click() + describe "render", -> + beforeEach -> + spyOn(@moduleEdit, 'loadDisplay') + spyOn(@moduleEdit, 'delegateEvents') + @moduleEdit.render() - it "call save on the model", -> - expect(@stubModule.save).toHaveBeenCalled() + it "loads the module preview and editor via ajax on the view element", -> + expect(@moduleEdit.$el.load).toHaveBeenCalledWith("/preview_component/#{@moduleEdit.model.id}", jasmine.any(Function)) + @moduleEdit.$el.load.mostRecentCall.args[1]() + expect(@moduleEdit.loadDisplay).toHaveBeenCalled() + expect(@moduleEdit.delegateEvents).toHaveBeenCalled() - it "alert user on success", -> - @stubJqXHR.success.mostRecentCall.args[0]() - expect(window.alert).toHaveBeenCalledWith("Your changes have been saved.") + describe "loadDisplay", -> + beforeEach -> + spyOn(XModule, 'loadModule') + @moduleEdit.loadDisplay() - it "alert user on error", -> - @stubJqXHR.error.mostRecentCall.args[0]() - expect(window.alert).toHaveBeenCalledWith("There was an error saving your changes. Please try again.") - - describe "cancel", -> - beforeEach -> - spyOn(CMS, "popView") - @view = new CMS.Views.ModuleEdit(el: $("#module-edit"), model: @stubModule) - $(".cancel").click() - - it "pop current view from viewStack", -> - expect(CMS.popView).toHaveBeenCalled() - - describe "editSubmodule", -> - beforeEach -> - @view = new CMS.Views.ModuleEdit(el: $("#module-edit"), model: @stubModule) - spyOn(CMS, "pushView") - spyOn(CMS.Views, "ModuleEdit") - .andReturn(@view = jasmine.createSpy("Views.ModuleEdit")) - spyOn(CMS.Models, "Module") - .andReturn(@model = jasmine.createSpy("Models.Module")) - $(".module-edit").click() - - it "push another module editing view into viewStack", -> - expect(CMS.pushView).toHaveBeenCalledWith @view - expect(CMS.Views.ModuleEdit).toHaveBeenCalledWith model: @model - expect(CMS.Models.Module).toHaveBeenCalledWith - id: "i4x://mitx/course/html/module" - type: "html" + it "loads the .xmodule-display inside the module editor", -> + expect(XModule.loadModule).toHaveBeenCalled() + expect(XModule.loadModule.mostRecentCall.args[0]).toBe($('.xmodule_display')) diff --git a/cms/static/coffee/spec/views/module_spec.coffee b/cms/static/coffee/spec/views/module_spec.coffee deleted file mode 100644 index 826263bc41..0000000000 --- a/cms/static/coffee/spec/views/module_spec.coffee +++ /dev/null @@ -1,24 +0,0 @@ -describe "CMS.Views.Module", -> - beforeEach -> - setFixtures """ -
    - edit -
    - """ - - describe "edit", -> - beforeEach -> - @view = new CMS.Views.Module(el: $("#module")) - spyOn(CMS, "replaceView") - spyOn(CMS.Views, "ModuleEdit") - .andReturn(@view = jasmine.createSpy("Views.ModuleEdit")) - spyOn(CMS.Models, "Module") - .andReturn(@model = jasmine.createSpy("Models.Module")) - $(".module-edit").click() - - it "replace the main view with ModuleEdit view", -> - expect(CMS.replaceView).toHaveBeenCalledWith @view - expect(CMS.Views.ModuleEdit).toHaveBeenCalledWith model: @model - expect(CMS.Models.Module).toHaveBeenCalledWith - id: "i4x://mitx/course/html/module" - type: "html" diff --git a/cms/static/coffee/spec/views/week_edit_spec.coffee b/cms/static/coffee/spec/views/week_edit_spec.coffee deleted file mode 100644 index 754474d77f..0000000000 --- a/cms/static/coffee/spec/views/week_edit_spec.coffee +++ /dev/null @@ -1,7 +0,0 @@ -describe "CMS.Views.WeekEdit", -> - describe "defaults", -> - it "set the correct tagName", -> - expect(new CMS.Views.WeekEdit().tagName).toEqual("section") - - it "set the correct className", -> - expect(new CMS.Views.WeekEdit().className).toEqual("edit-pane") diff --git a/cms/static/coffee/spec/views/week_spec.coffee b/cms/static/coffee/spec/views/week_spec.coffee deleted file mode 100644 index d5256b0a57..0000000000 --- a/cms/static/coffee/spec/views/week_spec.coffee +++ /dev/null @@ -1,67 +0,0 @@ -describe "CMS.Views.Week", -> - beforeEach -> - setFixtures """ -
    -
    - - edit -
      -
    • -
    • -
    -
    - """ - CMS.unbind() - - describe "render", -> - beforeEach -> - spyOn(CMS.Views, "Module").andReturn(jasmine.createSpyObj("Module", ["render"])) - $.fn.inlineEdit = jasmine.createSpy("$.fn.inlineEdit") - @view = new CMS.Views.Week(el: $("#week"), height: 100).render() - - it "set the height of the element", -> - expect(@view.el).toHaveCss(height: "100px") - - it "make .editable as inline editor", -> - expect($.fn.inlineEdit.calls[0].object.get(0)) - .toEqual($(".editable").get(0)) - - it "make .editable-test as inline editor", -> - expect($.fn.inlineEdit.calls[1].object.get(0)) - .toEqual($(".editable-textarea").get(0)) - - it "create module subview for each module", -> - expect(CMS.Views.Module.calls[0].args[0]) - .toEqual({ el: $("#module-one").get(0) }) - expect(CMS.Views.Module.calls[1].args[0]) - .toEqual({ el: $("#module-two").get(0) }) - - describe "edit", -> - beforeEach -> - new CMS.Views.Week(el: $("#week"), height: 100).render() - spyOn(CMS, "replaceView") - spyOn(CMS.Views, "WeekEdit") - .andReturn(@view = jasmine.createSpy("Views.WeekEdit")) - $(".week-edit").click() - - it "replace the content with edit week view", -> - expect(CMS.replaceView).toHaveBeenCalledWith @view - expect(CMS.Views.WeekEdit).toHaveBeenCalled() - - describe "on content.show", -> - beforeEach -> - @view = new CMS.Views.Week(el: $("#week"), height: 100).render() - @view.$el.height("") - @view.setHeight() - - it "set the correct height", -> - expect(@view.el).toHaveCss(height: "100px") - - describe "on content.hide", -> - beforeEach -> - @view = new CMS.Views.Week(el: $("#week"), height: 100).render() - @view.$el.height("100px") - @view.resetHeight() - - it "remove height from the element", -> - expect(@view.el).not.toHaveCss(height: "100px") diff --git a/cms/static/coffee/src/main.coffee b/cms/static/coffee/src/main.coffee index 57b6d1ae93..8c23d6ac99 100644 --- a/cms/static/coffee/src/main.coffee +++ b/cms/static/coffee/src/main.coffee @@ -6,28 +6,6 @@ AjaxPrefix.addAjaxPrefix(jQuery, -> CMS.prefix) prefix: $("meta[name='path_prefix']").attr('content') - viewStack: [] - - start: (el) -> - new CMS.Views.Course(el: el).render() - - replaceView: (view) -> - @viewStack = [view] - CMS.trigger('content.show', view) - - pushView: (view) -> - @viewStack.push(view) - CMS.trigger('content.show', view) - - popView: -> - @viewStack.pop() - if _.isEmpty(@viewStack) - CMS.trigger('content.hide') - else - view = _.last(@viewStack) - CMS.trigger('content.show', view) - view.delegateEvents() - _.extend CMS, Backbone.Events $ -> @@ -41,7 +19,3 @@ $ -> navigator.userAgent.match /iPhone|iPod|iPad/i $('body').addClass 'touch-based-device' if onTouchBasedDevice() - - - CMS.start($('section.main-container')) - diff --git a/cms/static/coffee/src/models/new_module.coffee b/cms/static/coffee/src/models/new_module.coffee deleted file mode 100644 index 58a109225e..0000000000 --- a/cms/static/coffee/src/models/new_module.coffee +++ /dev/null @@ -1,5 +0,0 @@ -class CMS.Models.NewModule extends Backbone.Model - url: '/clone_item' - - newUrl: -> - "/new_item?#{$.param(parent_location: @get('parent_location'))}" diff --git a/cms/static/coffee/src/views/course.coffee b/cms/static/coffee/src/views/course.coffee deleted file mode 100644 index 2a5a012c07..0000000000 --- a/cms/static/coffee/src/views/course.coffee +++ /dev/null @@ -1,28 +0,0 @@ -class CMS.Views.Course extends Backbone.View - initialize: -> - CMS.on('content.show', @showContent) - CMS.on('content.hide', @hideContent) - - render: -> - @$('#weeks > li').each (index, week) => - new CMS.Views.Week(el: week, height: @maxWeekHeight()).render() - return @ - - showContent: (subview) => - $('body').addClass('content') - @$('.main-content').html(subview.render().el) - @$('.cal').css height: @contentHeight() - @$('>section').css minHeight: @contentHeight() - - hideContent: => - $('body').removeClass('content') - @$('.main-content').empty() - @$('.cal').css height: '' - @$('>section').css minHeight: '' - - maxWeekHeight: -> - weekElementBorderSize = 1 - _.max($('#weeks > li').map -> $(this).height()) + weekElementBorderSize - - contentHeight: -> - $(window).height() - $('body>header').outerHeight() diff --git a/cms/static/coffee/src/views/module.coffee b/cms/static/coffee/src/views/module.coffee deleted file mode 100644 index 1b9e39e8c2..0000000000 --- a/cms/static/coffee/src/views/module.coffee +++ /dev/null @@ -1,14 +0,0 @@ -class CMS.Views.Module extends Backbone.View - events: - "click .module-edit": "edit" - - edit: (event) => - event.preventDefault() - previewType = @$el.data('preview-type') - moduleType = @$el.data('type') - CMS.replaceView new CMS.Views.ModuleEdit - model: new CMS.Models.Module - id: @$el.data('id') - type: if moduleType == 'None' then null else moduleType - previewType: if previewType == 'None' then null else previewType - diff --git a/cms/static/coffee/src/views/module_add.coffee b/cms/static/coffee/src/views/module_add.coffee deleted file mode 100644 index f379174c77..0000000000 --- a/cms/static/coffee/src/views/module_add.coffee +++ /dev/null @@ -1,26 +0,0 @@ -class CMS.Views.ModuleAdd extends Backbone.View - tagName: 'section' - className: 'add-pane' - - events: - 'click .cancel': 'cancel' - 'click .save': 'save' - - initialize: -> - @$el.load @model.newUrl() - - save: (event) -> - event.preventDefault() - @model.save({ - name: @$el.find('.name').val() - template: $(event.target).data('template-id') - }, { - success: -> CMS.popView() - error: -> alert('Create failed') - }) - - cancel: (event) -> - event.preventDefault() - CMS.popView() - - diff --git a/cms/static/coffee/src/views/week.coffee b/cms/static/coffee/src/views/week.coffee deleted file mode 100644 index e2b5a50d59..0000000000 --- a/cms/static/coffee/src/views/week.coffee +++ /dev/null @@ -1,32 +0,0 @@ -class CMS.Views.Week extends Backbone.View - events: - 'click .week-edit': 'edit' - 'click .new-module': 'new' - - initialize: -> - CMS.on('content.show', @resetHeight) - CMS.on('content.hide', @setHeight) - - render: -> - @setHeight() - @$('.editable').inlineEdit() - @$('.editable-textarea').inlineEdit(control: 'textarea') - @$('.modules .module').each -> - new CMS.Views.Module(el: this).render() - return @ - - edit: (event) -> - event.preventDefault() - CMS.replaceView(new CMS.Views.WeekEdit()) - - setHeight: => - @$el.height(@options.height) - - resetHeight: => - @$el.height('') - - new: (event) => - event.preventDefault() - CMS.replaceView new CMS.Views.ModuleAdd - model: new CMS.Models.NewModule - parent_location: @$el.data('id') diff --git a/cms/static/coffee/src/views/week_edit.coffee b/cms/static/coffee/src/views/week_edit.coffee deleted file mode 100644 index 3082bc9fe2..0000000000 --- a/cms/static/coffee/src/views/week_edit.coffee +++ /dev/null @@ -1,3 +0,0 @@ -class CMS.Views.WeekEdit extends Backbone.View - tagName: 'section' - className: 'edit-pane' diff --git a/lms/envs/jasmine.py b/lms/envs/jasmine.py index 14c504e34f..317628f8ba 100644 --- a/lms/envs/jasmine.py +++ b/lms/envs/jasmine.py @@ -17,8 +17,9 @@ LOGGING = get_logger_config(TEST_ROOT / "log", PIPELINE_JS['js-test-source'] = { 'source_filenames': sum([ pipeline_group['source_filenames'] - for pipeline_group - in PIPELINE_JS.values() + for group_name, pipeline_group + in PIPELINE_JS.items() + if group_name != 'spec' ], []), 'output_filename': 'js/lms-test-source.js' } diff --git a/rakefile b/rakefile index 798898310e..3eb3b7e224 100644 --- a/rakefile +++ b/rakefile @@ -49,7 +49,6 @@ def django_for_jasmine(system, django_reload) django_pid = fork do exec(*django_admin(system, 'jasmine', 'runserver', "12345", reload_arg).split(' ')) end - puts django_pid jasmine_url = 'http://localhost:12345/_jasmine/' up = false start_time = Time.now From ca5c33cdf3d6bfca61d7ffddfcfa0d22c6c9ce6d Mon Sep 17 00:00:00 2001 From: JM Van Thong Date: Wed, 31 Oct 2012 13:46:27 -0400 Subject: [PATCH 102/308] Fixed install by adding mysql --- brew-formulas.txt | 1 + create-dev-env.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/brew-formulas.txt b/brew-formulas.txt index 0aed9645d0..b5b555e2a0 100644 --- a/brew-formulas.txt +++ b/brew-formulas.txt @@ -7,3 +7,4 @@ python yuicompressor node graphviz +mysql diff --git a/create-dev-env.sh b/create-dev-env.sh index 5691315039..656a40524e 100755 --- a/create-dev-env.sh +++ b/create-dev-env.sh @@ -105,7 +105,7 @@ NUMPY_VER="1.6.2" SCIPY_VER="0.10.1" BREW_FILE="$BASE/mitx/brew-formulas.txt" LOG="/var/tmp/install-$(date +%Y%m%d-%H%M%S).log" -APT_PKGS="pkg-config curl git python-virtualenv build-essential python-dev gfortran liblapack-dev libfreetype6-dev libpng12-dev libxml2-dev libxslt-dev yui-compressor coffeescript graphviz graphviz-dev" +APT_PKGS="pkg-config curl git python-virtualenv build-essential python-dev gfortran liblapack-dev libfreetype6-dev libpng12-dev libxml2-dev libxslt-dev yui-compressor coffeescript graphviz graphviz-dev mysql" if [[ $EUID -eq 0 ]]; then error "This script should not be run using sudo or as the root user" From 87dadd40c400066dcc8973a8f733e1bb6afc217b Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Wed, 31 Oct 2012 14:11:24 -0400 Subject: [PATCH 103/308] address some of Cale's feedback --- common/lib/xmodule/xmodule/modulestore/__init__.py | 1 + common/lib/xmodule/xmodule/modulestore/xml_importer.py | 10 ++++------ lms/djangoapps/courseware/views.py | 5 +---- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/common/lib/xmodule/xmodule/modulestore/__init__.py b/common/lib/xmodule/xmodule/modulestore/__init__.py index fcbc2d0fbd..55236b4f8e 100644 --- a/common/lib/xmodule/xmodule/modulestore/__init__.py +++ b/common/lib/xmodule/xmodule/modulestore/__init__.py @@ -377,6 +377,7 @@ class ModuleStore(object): return courses + class ModuleStoreBase(ModuleStore): ''' Implement interface functionality that can be shared. diff --git a/common/lib/xmodule/xmodule/modulestore/xml_importer.py b/common/lib/xmodule/xmodule/modulestore/xml_importer.py index 3c94e25aa2..2677efdb98 100644 --- a/common/lib/xmodule/xmodule/modulestore/xml_importer.py +++ b/common/lib/xmodule/xmodule/modulestore/xml_importer.py @@ -41,9 +41,8 @@ def import_static_content(modules, data_dir, static_content_store, target_locati content_loc = StaticContent.compute_location(target_location_namespace.org, target_location_namespace.course, fullname_with_subpath) mime_type = mimetypes.guess_type(filename)[0] - f = open(content_path, 'rb') - data = f.read() - f.close() + with open(content_path, 'rb') as f: + data = f.read() content = StaticContent(content_loc, filename, mime_type, data) @@ -76,9 +75,8 @@ def verify_content_links(module, base_dir, static_content_store, link, remap_dic filename = os.path.basename(path) mime_type = mimetypes.guess_type(filename)[0] - f = open(static_pathname, 'rb') - data = f.read() - f.close() + with open(static_pathname, 'rb') as f: + data = f.read() content = StaticContent(content_loc, filename, mime_type, data) diff --git a/lms/djangoapps/courseware/views.py b/lms/djangoapps/courseware/views.py index 14bec50af3..c8ac714084 100644 --- a/lms/djangoapps/courseware/views.py +++ b/lms/djangoapps/courseware/views.py @@ -363,10 +363,7 @@ def static_tab(request, course_id, tab_slug): if tab is None: raise Http404 - cache = StudentModuleCache.cache_for_descriptor_descendents( - course.id, request.user, course, depth=2) - - contents = tabs.get_static_tab_contents(request, cache, course, tab) + contents = tabs.get_static_tab_contents(request, None, course, tab) if contents is None: raise Http404 From 2cb38a2c0fd81384ab293f8e896756526c4b6fb1 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Wed, 31 Oct 2012 15:37:43 -0400 Subject: [PATCH 104/308] working on new xmodule --- .../0-4455953e190a120e56a33841e5c04a9b.coffee | 9 + .../0-792b1e29b66e460f0798bdd940c30ad8.coffee | 10 + .../0-79a64f2010d8b4cb8d0f0d6912c70c12.coffee | 10 + .../0-c0f10bbfa80be09f66bef86df2e1152a.coffee | 11 + .../0-fdfb7ccca8edfb703fc7a5f124a67f24.coffee | 9 + .../_0-3d2f9902e9ecf2dac554cd9b9e661a89.scss | 5 + .../sass/descriptor/_module-styles.scss | 1 + .../js/src/selfassessment/display.coffee | 85 +-- .../xmodule/xmodule/self_assessment_module.py | 516 +++++++++++++----- 9 files changed, 441 insertions(+), 215 deletions(-) create mode 100644 cms/static/coffee/descriptor/0-4455953e190a120e56a33841e5c04a9b.coffee create mode 100644 cms/static/coffee/descriptor/0-792b1e29b66e460f0798bdd940c30ad8.coffee create mode 100644 cms/static/coffee/descriptor/0-79a64f2010d8b4cb8d0f0d6912c70c12.coffee create mode 100644 cms/static/coffee/descriptor/0-c0f10bbfa80be09f66bef86df2e1152a.coffee create mode 100644 cms/static/coffee/descriptor/0-fdfb7ccca8edfb703fc7a5f124a67f24.coffee create mode 100644 cms/static/sass/descriptor/_0-3d2f9902e9ecf2dac554cd9b9e661a89.scss create mode 100644 cms/static/sass/descriptor/_module-styles.scss diff --git a/cms/static/coffee/descriptor/0-4455953e190a120e56a33841e5c04a9b.coffee b/cms/static/coffee/descriptor/0-4455953e190a120e56a33841e5c04a9b.coffee new file mode 100644 index 0000000000..33942bc97d --- /dev/null +++ b/cms/static/coffee/descriptor/0-4455953e190a120e56a33841e5c04a9b.coffee @@ -0,0 +1,9 @@ +class @SequenceDescriptor extends XModule.Descriptor + constructor: (@element) -> + @$tabs = $(@element).find("#sequence-list") + @$tabs.sortable( + update: (event, ui) => @update() + ) + + save: -> + children: $('#sequence-list li a', @element).map((idx, el) -> $(el).data('id')).toArray() diff --git a/cms/static/coffee/descriptor/0-792b1e29b66e460f0798bdd940c30ad8.coffee b/cms/static/coffee/descriptor/0-792b1e29b66e460f0798bdd940c30ad8.coffee new file mode 100644 index 0000000000..7c3c09cefc --- /dev/null +++ b/cms/static/coffee/descriptor/0-792b1e29b66e460f0798bdd940c30ad8.coffee @@ -0,0 +1,10 @@ +class @JSONEditingDescriptor extends XModule.Descriptor + constructor: (@element) -> + @edit_box = CodeMirror.fromTextArea($(".edit-box", @element)[0], { + mode: { name: "javascript", json: true } + lineNumbers: true + lineWrapping: true + }) + + save: -> + data: JSON.parse @edit_box.getValue() diff --git a/cms/static/coffee/descriptor/0-79a64f2010d8b4cb8d0f0d6912c70c12.coffee b/cms/static/coffee/descriptor/0-79a64f2010d8b4cb8d0f0d6912c70c12.coffee new file mode 100644 index 0000000000..68981e465b --- /dev/null +++ b/cms/static/coffee/descriptor/0-79a64f2010d8b4cb8d0f0d6912c70c12.coffee @@ -0,0 +1,10 @@ +class @XMLEditingDescriptor extends XModule.Descriptor + constructor: (@element) -> + @edit_box = CodeMirror.fromTextArea($(".edit-box", @element)[0], { + mode: "xml" + lineNumbers: true + lineWrapping: true + }) + + save: -> + data: @edit_box.getValue() diff --git a/cms/static/coffee/descriptor/0-c0f10bbfa80be09f66bef86df2e1152a.coffee b/cms/static/coffee/descriptor/0-c0f10bbfa80be09f66bef86df2e1152a.coffee new file mode 100644 index 0000000000..e678a9b2eb --- /dev/null +++ b/cms/static/coffee/descriptor/0-c0f10bbfa80be09f66bef86df2e1152a.coffee @@ -0,0 +1,11 @@ +class @HTMLEditingDescriptor + constructor: (@element) -> + @edit_box = CodeMirror.fromTextArea($(".edit-box", @element)[0], { + mode: "text/html" + lineNumbers: true + lineWrapping: true + }) + + save: -> + data: @edit_box.getValue() + diff --git a/cms/static/coffee/descriptor/0-fdfb7ccca8edfb703fc7a5f124a67f24.coffee b/cms/static/coffee/descriptor/0-fdfb7ccca8edfb703fc7a5f124a67f24.coffee new file mode 100644 index 0000000000..7ce69e542a --- /dev/null +++ b/cms/static/coffee/descriptor/0-fdfb7ccca8edfb703fc7a5f124a67f24.coffee @@ -0,0 +1,9 @@ +class @VerticalDescriptor extends XModule.Descriptor + constructor: (@element) -> + @$items = $(@element).find(".vert-mod") + @$items.sortable( + update: (event, ui) => @update() + ) + + save: -> + children: $('.vert-mod li', @element).map((idx, el) -> $(el).data('id')).toArray() diff --git a/cms/static/sass/descriptor/_0-3d2f9902e9ecf2dac554cd9b9e661a89.scss b/cms/static/sass/descriptor/_0-3d2f9902e9ecf2dac554cd9b9e661a89.scss new file mode 100644 index 0000000000..0dc07919ae --- /dev/null +++ b/cms/static/sass/descriptor/_0-3d2f9902e9ecf2dac554cd9b9e661a89.scss @@ -0,0 +1,5 @@ +.CodeMirror { + background: #fff; + font-size: 13px; + color: #3c3c3c; +} \ No newline at end of file diff --git a/cms/static/sass/descriptor/_module-styles.scss b/cms/static/sass/descriptor/_module-styles.scss new file mode 100644 index 0000000000..81d1cc800f --- /dev/null +++ b/cms/static/sass/descriptor/_module-styles.scss @@ -0,0 +1 @@ +.xmodule_edit.xmodule_DiscussionDescriptor { @import "0-3d2f9902e9ecf2dac554cd9b9e661a89.scss"; }.xmodule_edit.xmodule_CapaDescriptor { @import "0-3d2f9902e9ecf2dac554cd9b9e661a89.scss"; }.xmodule_edit.xmodule_ABTestDescriptor { @import "0-3d2f9902e9ecf2dac554cd9b9e661a89.scss"; }.xmodule_edit.xmodule_RawDescriptor { @import "0-3d2f9902e9ecf2dac554cd9b9e661a89.scss"; }.xmodule_edit.xmodule_ErrorDescriptor { @import "0-3d2f9902e9ecf2dac554cd9b9e661a89.scss"; }.xmodule_edit.xmodule_VideoDescriptor { @import "0-3d2f9902e9ecf2dac554cd9b9e661a89.scss"; }.xmodule_edit.xmodule_CustomTagDescriptor { @import "0-3d2f9902e9ecf2dac554cd9b9e661a89.scss"; } \ No newline at end of file diff --git a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee index 5d5e3a8eb8..da91c44af7 100644 --- a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee @@ -15,8 +15,7 @@ class @Problem @inputs = @$("[id^=input_#{problem_prefix}_]") @$('section.action input:button').click @refreshAnswers - @$('section.action input.check').click @check_fd - #@$('section.action input.check').click @check + @$('section.action input.check').click @check @$('section.action input.show').click @show @$('section.action input.save').click @save @@ -47,88 +46,6 @@ class @Problem if setupMethod? @inputtypeDisplays[id] = setupMethod(inputtype) - - ### - # 'check_fd' uses FormData to allow file submissions in the 'problem_check' dispatch, - # in addition to simple querystring-based answers - # - # NOTE: The dispatch 'problem_check' is being singled out for the use of FormData; - # maybe preferable to consolidate all dispatches to use FormData - ### - check_fd: => - Logger.log 'problem_check', @answers - - # If there are no file inputs in the problem, we can fall back on @check - if $('input:file').length == 0 - @check() - return - - if not window.FormData - alert "Submission aborted! Sorry, your browser does not support file uploads. If you can, please use Chrome or Safari which have been verified to support file uploads." - return - - fd = new FormData() - - # Sanity checks on submission - max_filesize = 4*1000*1000 # 4 MB - file_too_large = false - file_not_selected = false - required_files_not_submitted = false - unallowed_file_submitted = false - - errors = [] - - @inputs.each (index, element) -> - if element.type is 'file' - required_files = $(element).data("required_files") - allowed_files = $(element).data("allowed_files") - for file in element.files - if allowed_files.length != 0 and file.name not in allowed_files - unallowed_file_submitted = true - errors.push "You submitted #{file.name}; only #{allowed_files} are allowed." - if file.name in required_files - required_files.splice(required_files.indexOf(file.name), 1) - if file.size > max_filesize - file_too_large = true - errors.push 'Your file "' + file.name '" is too large (max size: ' + max_filesize/(1000*1000) + ' MB)' - fd.append(element.id, file) - if element.files.length == 0 - file_not_selected = true - fd.append(element.id, '') # In case we want to allow submissions with no file - if required_files.length != 0 - required_files_not_submitted = true - errors.push "You did not submit the required files: #{required_files}." - else - fd.append(element.id, element.value) - - - if file_not_selected - errors.push 'You did not select any files to submit' - - error_html = '
      \n' - for error in errors - error_html += '
    • ' + error + '
    • \n' - error_html += '
    ' - @gentle_alert error_html - - abort_submission = file_too_large or file_not_selected or unallowed_file_submitted or required_files_not_submitted - - settings = - type: "POST" - data: fd - processData: false - contentType: false - success: (response) => - switch response.success - when 'incorrect', 'correct' - @render(response.contents) - @updateProgress response - else - @gentle_alert response.success - - if not abort_submission - $.ajaxWithPrefix("#{@url}/problem_check", settings) - check: => Logger.log 'problem_check', @answers $.postWithPrefix "#{@url}/problem_check", @answers, (response) => diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index 17aa3832d8..98b464d57e 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -26,6 +26,7 @@ class SelfAssessmentModule(XModule): resource_string(__name__, 'js/src/selfassessment/display.coffee') ] } + js_module_name = "SelfAssessmentModule" def get_html(self): @@ -36,22 +37,97 @@ class SelfAssessmentModule(XModule): instance_state=None, shared_state=None, **kwargs): XModule.__init__(self, system, location, definition, descriptor, instance_state, shared_state, **kwargs) - self.html = self.definition['data'] + + self.attempts = 0 + self.max_attempts = None + + dom2 = etree.fromstring(definition['data']) + + self.max_attempts = self.metadata.get('attempts', None) + if self.max_attempts is not None: + self.max_attempts = int(self.max_attempts) + + self.show_answer = self.metadata.get('showanswer', 'closed') + + self.force_save_button = self.metadata.get('force_save_button', 'false') + + if self.show_answer == "": + self.show_answer = "closed" + + if instance_state is not None: + instance_state = json.loads(instance_state) + if instance_state is not None and 'attempts' in instance_state: + self.attempts = instance_state['attempts'] + + self.name = only_one(dom2.xpath('/problem/@name')) + + self.seed = 1 + + try: + # TODO (vshnayder): move as much as possible of this work and error + # checking to descriptor load time + self.lcp = LoncapaProblem(self.definition['data'], self.location.html_id(), + instance_state, seed=self.seed, system=self.system) + except Exception as err: + msg = 'cannot create LoncapaProblem {loc}: {err}'.format( + loc=self.location.url(), err=err) + # TODO (vshnayder): do modules need error handlers too? + # We shouldn't be switching on DEBUG. + if self.system.DEBUG: + log.warning(msg) + # TODO (vshnayder): This logic should be general, not here--and may + # want to preserve the data instead of replacing it. + # e.g. in the CMS + msg = '

    %s

    ' % msg.replace('<', '<') + msg += '

    %s

    ' % traceback.format_exc().replace('<', '<') + # create a dummy problem with error message instead of failing + problem_text = ('' + 'Problem %s has an error:%s' % + (self.location.url(), msg)) + self.lcp = LoncapaProblem( + problem_text, self.location.html_id(), + instance_state, seed=self.seed, system=self.system) + else: + # add extra info and raise + raise Exception(msg), None, sys.exc_info()[2] + + @staticmethod + def make_dict_of_responses(get): + '''Make dictionary of student responses (aka "answers") + get is POST dictionary. + ''' + answers = dict() + for key in get: + # e.g. input_resistor_1 ==> resistor_1 + _, _, name = key.partition('_') + + # This allows for answers which require more than one value for + # the same form input (e.g. checkbox inputs). The convention is that + # if the name ends with '[]' (which looks like an array), then the + # answer will be an array. + if not name.endswith('[]'): + answers[name] = get[key] + else: + name = name[:-2] + answers[name] = get.getlist(key) + + return answers + def handle_ajax(self, dispatch, get): - ''' - This is called by courseware.module_render, to handle an AJAX call. - "get" is request.POST. + ''' + This is called by courseware.module_render, to handle an AJAX call. + "get" is request.POST. - Returns a json dictionary: - { 'progress_changed' : True/False, - 'progress' : 'none'/'in_progress'/'done', - } - ''' + Returns a json dictionary: + { 'progress_changed' : True/False, + 'progress' : 'none'/'in_progress'/'done', + } + ''' handlers = { 'problem_get': self.get_problem, - 'problem_check': self.check_problem, 'problem_save': self.save_problem, + 'problem_check': self.check_problem, } if dispatch not in handlers: @@ -66,136 +142,314 @@ class SelfAssessmentModule(XModule): }) return json.dumps(d, cls=ComplexEncoder) + def save_problem(self, get): + ''' + Save the passed in answers. + Returns a dict { 'success' : bool, ['error' : error-msg]}, + with the error key only present if success is False. + ''' + event_info = dict() + event_info['state'] = self.lcp.get_state() + event_info['problem_id'] = self.location.url() + + answers = self.make_dict_of_responses(get) + event_info['answers'] = answers + + self.lcp.student_answers = answers + + # TODO: should this be save_problem_fail? Looks like success to me... + self.system.track_function('save_problem_fail', event_info) + return {'success': True} + + def check_problem(self, get): + ''' Checks whether answers to a problem are correct, and + returns a map of correct/incorrect answers: + + {'success' : bool, + 'contents' : html} + ''' + event_info = dict() + event_info['state'] = self.lcp.get_state() + event_info['problem_id'] = self.location.url() + + answers = self.make_dict_of_responses(get) + event_info['answers'] = convert_files_to_filenames(answers) + + try: + old_state = self.lcp.get_state() + lcp_id = self.lcp.problem_id + correct_map = self.lcp.grade_answers(answers) + except StudentInputError as inst: + # TODO (vshnayder): why is this line here? + #self.lcp = LoncapaProblem(self.definition['data'], + # id=lcp_id, state=old_state, system=self.system) + log.exception("StudentInputError in capa_module:problem_check") + return {'success': inst.message} + except Exception, err: + # TODO: why is this line here? + #self.lcp = LoncapaProblem(self.definition['data'], + # id=lcp_id, state=old_state, system=self.system) + if self.system.DEBUG: + msg = "Error checking problem: " + str(err) + msg += '\nTraceback:\n' + traceback.format_exc() + return {'success': msg} + log.exception("Error in capa_module problem checking") + raise Exception("error in capa_module") + + self.attempts = self.attempts + 1 + self.lcp.done = True + + # success = correct if ALL questions in this problem are correct + success = 'correct' + for answer_id in correct_map: + if not correct_map.is_correct(answer_id): + success = 'incorrect' + + # NOTE: We are logging both full grading and queued-grading submissions. In the latter, + # 'success' will always be incorrect + event_info['correct_map'] = correct_map.get_dict() + event_info['success'] = success + event_info['attempts'] = self.attempts + self.system.track_function('save_problem_check', event_info) + + if hasattr(self.system,'psychometrics_handler'): # update PsychometricsData using callback + self.system.psychometrics_handler(self.get_instance_state()) + + # render problem into HTML + html = self.get_problem_html(encapsulate=False) + + return {'success': success, + 'contents': html, + } + + # Figure out if we should move these to capa_problem? + def get_problem(self, get): + ''' Return results of get_problem_html, as a simple dict for json-ing. + { 'html': } + + Used if we want to reconfirm we have the right thing e.g. after + several AJAX calls. + ''' + return {'html': self.get_problem_html(encapsulate=False)} + + @staticmethod + def make_dict_of_responses(get): + '''Make dictionary of student responses (aka "answers") + get is POST dictionary. + ''' + answers = dict() + for key in get: + # e.g. input_resistor_1 ==> resistor_1 + _, _, name = key.partition('_') + + # This allows for answers which require more than one value for + # the same form input (e.g. checkbox inputs). The convention is that + # if the name ends with '[]' (which looks like an array), then the + # answer will be an array. + if not name.endswith('[]'): + answers[name] = get[key] + else: + name = name[:-2] + answers[name] = get.getlist(key) + + return answers + + def get_instance_state(self): + state = self.lcp.get_state() + state['attempts'] = self.attempts + return json.dumps(state) + + def get_score(self): + return self.lcp.get_score() + + def max_score(self): + return self.lcp.get_max_score() + + def get_progress(self): + ''' For now, just return score / max_score + ''' + d = self.get_score() + score = d['score'] + total = d['total'] + if total > 0: + try: + return Progress(score, total) + except Exception as err: + log.exception("Got bad progress") + return None + return None + + def get_html(self): + return self.system.render_template('problem_ajax.html', { + 'element_id': self.location.html_id(), + 'id': self.id, + 'ajax_url': self.system.ajax_url, + }) + + def get_problem_html(self, encapsulate=True): + '''Return html for the problem. Adds check, reset, save buttons + as necessary based on the problem config and state.''' + + try: + html = self.lcp.get_html() + except Exception, err: + log.exception(err) + + # TODO (vshnayder): another switch on DEBUG. + if self.system.DEBUG: + msg = ( + '[courseware.capa.capa_module] ' + 'Failed to generate HTML for problem %s' % + (self.location.url())) + msg += '

    Error:

    %s

    ' % str(err).replace('<', '<') + msg += '

    %s

    ' % traceback.format_exc().replace('<', '<') + html = msg + else: + # We're in non-debug mode, and possibly even in production. We want + # to avoid bricking of problem as much as possible + + # Presumably, student submission has corrupted LoncapaProblem HTML. + # First, pull down all student answers + student_answers = self.lcp.student_answers + answer_ids = student_answers.keys() + + # Some inputtypes, such as dynamath, have additional "hidden" state that + # is not exposed to the student. Keep those hidden + # TODO: Use regex, e.g. 'dynamath' is suffix at end of answer_id + hidden_state_keywords = ['dynamath'] + for answer_id in answer_ids: + for hidden_state_keyword in hidden_state_keywords: + if answer_id.find(hidden_state_keyword) >= 0: + student_answers.pop(answer_id) + + # Next, generate a fresh LoncapaProblem + self.lcp = LoncapaProblem(self.definition['data'], self.location.html_id(), + state=None, # Tabula rasa + seed=self.seed, system=self.system) + + # Prepend a scary warning to the student + warning = '
    '\ + '

    Warning: The problem has been reset to its initial state!

    '\ + 'The problem\'s state was corrupted by an invalid submission. '\ + 'The submission consisted of:'\ + '
      ' + for student_answer in student_answers.values(): + if student_answer != '': + warning += '
    • ' + cgi.escape(student_answer) + '
    • ' + warning += '
    '\ + 'If this error persists, please contact the course staff.'\ + '
    ' + + html = warning + try: + html += self.lcp.get_html() + except Exception, err: # Couldn't do it. Give up + log.exception(err) + raise + + content = {'name': self.display_name, + 'html': html, + 'weight': self.descriptor.weight, + } + + # We using strings as truthy values, because the terminology of the + # check button is context-specific. + + # Put a "Check" button if unlimited attempts or still some left + if self.max_attempts is None or self.attempts < self.max_attempts-1: + check_button = "Check" + else: + # Will be final check so let user know that + check_button = "Final Check" + + reset_button = True + save_button = True + + # If we're after deadline, or user has exhausted attempts, + # question is read-only. + if self.closed(): + check_button = False + reset_button = False + save_button = False + + # User submitted a problem, and hasn't reset. We don't want + # more submissions. + if self.lcp.done and self.rerandomize == "always": + check_button = False + save_button = False + + # Only show the reset button if pressing it will show different values + if self.rerandomize not in ["always", "onreset"]: + reset_button = False + + # User hasn't submitted an answer yet -- we don't want resets + if not self.lcp.done: + reset_button = False + + # We may not need a "save" button if infinite number of attempts and + # non-randomized. The problem author can force it. It's a bit weird for + # randomization to control this; should perhaps be cleaned up. + if (self.force_save_button == "false") and (self.max_attempts is None and self.rerandomize != "always"): + save_button = False + + context = {'problem': content, + 'id': self.id, + 'check_button': check_button, + 'reset_button': reset_button, + 'save_button': save_button, + 'answer_available': self.answer_available(), + 'ajax_url': self.system.ajax_url, + 'attempts_used': self.attempts, + 'attempts_allowed': self.max_attempts, + 'progress': self.get_progress(), + } + + html = self.system.render_template('problem.html', context) + if encapsulate: + html = '
    '.format( + id=self.location.html_id(), ajax_url=self.system.ajax_url) + html + "
    " + + # cdodge: OK, we have to do two rounds of url reference subsitutions + # one which uses the 'asset library' that is served by the contentstore and the + # more global /static/ filesystem based static content. + # NOTE: rewrite_content_links is defined in XModule + # This is a bit unfortunate and I'm sure we'll try to considate this into + # a one step process. + html = rewrite_links(html, self.rewrite_content_links) + + # now do the substitutions which are filesystem based, e.g. '/static/' prefixes + return self.system.replace_urls(html, self.metadata['data_dir']) + class SelfAssessmentDescriptor(XmlDescriptor, EditingDescriptor): """ Module for putting self assessment questions into a course """ - mako_template = "widgets/html-edit.html" - module_class = SelfAssessmentModule - filename_extension = "xml" - template_dir_name = "selfassessment" - js = {'coffee': [resource_string(__name__, 'js/src/html/edit.coffee')]} - js_module_name = "HTMLEditingDescriptor" + stores_state = True + has_score = True + template_dir_name = 'selfassessment' - # VS[compat] TODO (cpennington): Delete this method once all fall 2012 course - # are being edited in the cms + # Capa modules have some additional metadata: + # TODO (vshnayder): do problems have any other metadata? Do they + # actually use type and points? + metadata_attributes = RawDescriptor.metadata_attributes + ('type', 'points') + + # VS[compat] + # TODO (cpennington): Delete this method once all fall 2012 course are being + # edited in the cms @classmethod def backcompat_paths(cls, path): - if path.endswith('.html.xml'): - path = path[:-9] + '.html' # backcompat--look for html instead of xml - if path.endswith('.html.html'): - path = path[:-5] # some people like to include .html in filenames.. - candidates = [] - while os.sep in path: - candidates.append(path) - _, _, path = path.partition(os.sep) + return [ + 'problems/' + path[8:], + path[8:], + ] - # also look for .html versions instead of .xml - nc = [] - for candidate in candidates: - if candidate.endswith('.xml'): - nc.append(candidate[:-4] + '.html') - return candidates + nc + def __init__(self, *args, **kwargs): + super(CapaDescriptor, self).__init__(*args, **kwargs) - # NOTE: html descriptors are special. We do not want to parse and - # export them ourselves, because that can break things (e.g. lxml - # adds body tags when it exports, but they should just be html - # snippets that will be included in the middle of pages. - - @classmethod - def load_definition(cls, xml_object, system, location): - '''Load a descriptor from the specified xml_object: - - If there is a filename attribute, load it as a string, and - log a warning if it is not parseable by etree.HTMLParser. - - If there is not a filename attribute, the definition is the body - of the xml_object, without the root tag (do not want in the - middle of a page) - ''' - filename = xml_object.get('filename') - if filename is None: - definition_xml = copy.deepcopy(xml_object) - cls.clean_metadata_from_xml(definition_xml) - return {'data': stringify_children(definition_xml)} + weight_string = self.metadata.get('weight', None) + if weight_string: + self.weight = float(weight_string) else: - # html is special. cls.filename_extension is 'xml', but - # if 'filename' is in the definition, that means to load - # from .html - # 'filename' in html pointers is a relative path - # (not same as 'html/blah.html' when the pointer is in a directory itself) - pointer_path = "{category}/{url_path}".format(category='html', - url_path=name_to_pathname(location.name)) - base = path(pointer_path).dirname() - #log.debug("base = {0}, base.dirname={1}, filename={2}".format(base, base.dirname(), filename)) - filepath = "{base}/{name}.html".format(base=base, name=filename) - #log.debug("looking for html file for {0} at {1}".format(location, filepath)) - - - - # VS[compat] - # TODO (cpennington): If the file doesn't exist at the right path, - # give the class a chance to fix it up. The file will be written out - # again in the correct format. This should go away once the CMS is - # online and has imported all current (fall 2012) courses from xml - if not system.resources_fs.exists(filepath): - candidates = cls.backcompat_paths(filepath) - #log.debug("candidates = {0}".format(candidates)) - for candidate in candidates: - if system.resources_fs.exists(candidate): - filepath = candidate - break - - try: - with system.resources_fs.open(filepath) as file: - html = file.read() - # Log a warning if we can't parse the file, but don't error - if not check_html(html): - msg = "Couldn't parse html in {0}.".format(filepath) - log.warning(msg) - system.error_tracker("Warning: " + msg) - - definition = {'data': html} - - # TODO (ichuang): remove this after migration - # for Fall 2012 LMS migration: keep filename (and unmangled filename) - definition['filename'] = [ filepath, filename ] - - return definition - - except (ResourceNotFoundError) as err: - msg = 'Unable to load file contents at path {0}: {1} '.format( - filepath, err) - # add more info and re-raise - raise Exception(msg), None, sys.exc_info()[2] - - # TODO (vshnayder): make export put things in the right places. - - def definition_to_xml(self, resource_fs): - '''If the contents are valid xml, write them to filename.xml. Otherwise, - write just to filename.xml, and the html - string to filename.html. - ''' - try: - return etree.fromstring(self.definition['data']) - except etree.XMLSyntaxError: - pass - - # Not proper format. Write html to file, return an empty tag - pathname = name_to_pathname(self.url_name) - pathdir = path(pathname).dirname() - filepath = u'{category}/{pathname}.html'.format(category=self.category, - pathname=pathname) - - resource_fs.makedir(os.path.dirname(filepath), allow_recreate=True) - with resource_fs.open(filepath, 'w') as file: - file.write(self.definition['data']) - - # write out the relative name - relname = path(pathname).basename() - - elt = etree.Element('html') - elt.set("filename", relname) - return elt + self.weight = None From 64c791b38a63e38eb2d2fa6fc80e088b2874e9ef Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Wed, 31 Oct 2012 16:18:55 -0400 Subject: [PATCH 105/308] working on self assessment module --- .../xmodule/xmodule/self_assessment_module.py | 535 ++++++------------ 1 file changed, 163 insertions(+), 372 deletions(-) diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index 98b464d57e..df69213281 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -1,24 +1,41 @@ -import copy -from fs.errors import ResourceNotFoundError +import cgi +import datetime +import dateutil +import dateutil.parser +import json import logging -import os +import traceback +import re import sys + +from datetime import timedelta from lxml import etree from lxml.html import rewrite_links -from path import path - -from .x_module import XModule from pkg_resources import resource_string -from .xml_module import XmlDescriptor, name_to_pathname -from .editing_module import EditingDescriptor -from .stringify import stringify_children -from .html_checker import check_html -from xmodule.modulestore import Location -from xmodule.contentstore.content import XASSET_SRCREF_PREFIX, StaticContent +from capa.capa_problem import LoncapaProblem +from capa.responsetypes import StudentInputError +from capa.util import convert_files_to_filenames +from progress import Progress +from xmodule.x_module import XModule +from xmodule.raw_module import RawDescriptor +from xmodule.exceptions import NotFoundError log = logging.getLogger("mitx.courseware") +def only_one(lst, default="", process=lambda x: x): + """ + If lst is empty, returns default + If lst has a single element, applies process to that element and returns it + Otherwise, raises an exeception + """ + if len(lst) == 0: + return default + elif len(lst) == 1: + return process(lst[0]) + else: + raise Exception('Malformed XML') + class SelfAssessmentModule(XModule): js = {'coffee': [resource_string(__name__, 'js/src/javascript_loader.coffee'), @@ -26,7 +43,6 @@ class SelfAssessmentModule(XModule): resource_string(__name__, 'js/src/selfassessment/display.coffee') ] } - js_module_name = "SelfAssessmentModule" def get_html(self): @@ -38,22 +54,15 @@ class SelfAssessmentModule(XModule): XModule.__init__(self, system, location, definition, descriptor, instance_state, shared_state, **kwargs) + dom2 = etree.fromstring(definition['data']) + self.attempts = 0 self.max_attempts = None - dom2 = etree.fromstring(definition['data']) - self.max_attempts = self.metadata.get('attempts', None) if self.max_attempts is not None: self.max_attempts = int(self.max_attempts) - self.show_answer = self.metadata.get('showanswer', 'closed') - - self.force_save_button = self.metadata.get('force_save_button', 'false') - - if self.show_answer == "": - self.show_answer = "closed" - if instance_state is not None: instance_state = json.loads(instance_state) if instance_state is not None and 'attempts' in instance_state: @@ -61,198 +70,11 @@ class SelfAssessmentModule(XModule): self.name = only_one(dom2.xpath('/problem/@name')) - self.seed = 1 + self.rubric=etree.tostring(only_one(dom2.xpath("/rubric"))) + self.problem=etree.tostring(only_one(dom2.xpath("/problem"))) - try: - # TODO (vshnayder): move as much as possible of this work and error - # checking to descriptor load time - self.lcp = LoncapaProblem(self.definition['data'], self.location.html_id(), - instance_state, seed=self.seed, system=self.system) - except Exception as err: - msg = 'cannot create LoncapaProblem {loc}: {err}'.format( - loc=self.location.url(), err=err) - # TODO (vshnayder): do modules need error handlers too? - # We shouldn't be switching on DEBUG. - if self.system.DEBUG: - log.warning(msg) - # TODO (vshnayder): This logic should be general, not here--and may - # want to preserve the data instead of replacing it. - # e.g. in the CMS - msg = '

    %s

    ' % msg.replace('<', '<') - msg += '

    %s

    ' % traceback.format_exc().replace('<', '<') - # create a dummy problem with error message instead of failing - problem_text = ('' - 'Problem %s has an error:%s' % - (self.location.url(), msg)) - self.lcp = LoncapaProblem( - problem_text, self.location.html_id(), - instance_state, seed=self.seed, system=self.system) - else: - # add extra info and raise - raise Exception(msg), None, sys.exc_info()[2] - - @staticmethod - def make_dict_of_responses(get): - '''Make dictionary of student responses (aka "answers") - get is POST dictionary. - ''' - answers = dict() - for key in get: - # e.g. input_resistor_1 ==> resistor_1 - _, _, name = key.partition('_') - - # This allows for answers which require more than one value for - # the same form input (e.g. checkbox inputs). The convention is that - # if the name ends with '[]' (which looks like an array), then the - # answer will be an array. - if not name.endswith('[]'): - answers[name] = get[key] - else: - name = name[:-2] - answers[name] = get.getlist(key) - - return answers - - - def handle_ajax(self, dispatch, get): - ''' - This is called by courseware.module_render, to handle an AJAX call. - "get" is request.POST. - - Returns a json dictionary: - { 'progress_changed' : True/False, - 'progress' : 'none'/'in_progress'/'done', - } - ''' - handlers = { - 'problem_get': self.get_problem, - 'problem_save': self.save_problem, - 'problem_check': self.check_problem, - } - - if dispatch not in handlers: - return 'Error' - - before = self.get_progress() - d = handlers[dispatch](get) - after = self.get_progress() - d.update({ - 'progress_changed': after != before, - 'progress_status': Progress.to_js_status_str(after), - }) - return json.dumps(d, cls=ComplexEncoder) - - def save_problem(self, get): - ''' - Save the passed in answers. - Returns a dict { 'success' : bool, ['error' : error-msg]}, - with the error key only present if success is False. - ''' - event_info = dict() - event_info['state'] = self.lcp.get_state() - event_info['problem_id'] = self.location.url() - - answers = self.make_dict_of_responses(get) - event_info['answers'] = answers - - self.lcp.student_answers = answers - - # TODO: should this be save_problem_fail? Looks like success to me... - self.system.track_function('save_problem_fail', event_info) - return {'success': True} - - def check_problem(self, get): - ''' Checks whether answers to a problem are correct, and - returns a map of correct/incorrect answers: - - {'success' : bool, - 'contents' : html} - ''' - event_info = dict() - event_info['state'] = self.lcp.get_state() - event_info['problem_id'] = self.location.url() - - answers = self.make_dict_of_responses(get) - event_info['answers'] = convert_files_to_filenames(answers) - - try: - old_state = self.lcp.get_state() - lcp_id = self.lcp.problem_id - correct_map = self.lcp.grade_answers(answers) - except StudentInputError as inst: - # TODO (vshnayder): why is this line here? - #self.lcp = LoncapaProblem(self.definition['data'], - # id=lcp_id, state=old_state, system=self.system) - log.exception("StudentInputError in capa_module:problem_check") - return {'success': inst.message} - except Exception, err: - # TODO: why is this line here? - #self.lcp = LoncapaProblem(self.definition['data'], - # id=lcp_id, state=old_state, system=self.system) - if self.system.DEBUG: - msg = "Error checking problem: " + str(err) - msg += '\nTraceback:\n' + traceback.format_exc() - return {'success': msg} - log.exception("Error in capa_module problem checking") - raise Exception("error in capa_module") - - self.attempts = self.attempts + 1 - self.lcp.done = True - - # success = correct if ALL questions in this problem are correct - success = 'correct' - for answer_id in correct_map: - if not correct_map.is_correct(answer_id): - success = 'incorrect' - - # NOTE: We are logging both full grading and queued-grading submissions. In the latter, - # 'success' will always be incorrect - event_info['correct_map'] = correct_map.get_dict() - event_info['success'] = success - event_info['attempts'] = self.attempts - self.system.track_function('save_problem_check', event_info) - - if hasattr(self.system,'psychometrics_handler'): # update PsychometricsData using callback - self.system.psychometrics_handler(self.get_instance_state()) - - # render problem into HTML - html = self.get_problem_html(encapsulate=False) - - return {'success': success, - 'contents': html, - } - - # Figure out if we should move these to capa_problem? - def get_problem(self, get): - ''' Return results of get_problem_html, as a simple dict for json-ing. - { 'html': } - - Used if we want to reconfirm we have the right thing e.g. after - several AJAX calls. - ''' - return {'html': self.get_problem_html(encapsulate=False)} - - @staticmethod - def make_dict_of_responses(get): - '''Make dictionary of student responses (aka "answers") - get is POST dictionary. - ''' - answers = dict() - for key in get: - # e.g. input_resistor_1 ==> resistor_1 - _, _, name = key.partition('_') - - # This allows for answers which require more than one value for - # the same form input (e.g. checkbox inputs). The convention is that - # if the name ends with '[]' (which looks like an array), then the - # answer will be an array. - if not name.endswith('[]'): - answers[name] = get[key] - else: - name = name[:-2] - answers[name] = get.getlist(key) - - return answers + self.lcp = LoncapaProblem(self.problem, self.location.html_id(), + instance_state, seed=self.seed, system=self.system) def get_instance_state(self): state = self.lcp.get_state() @@ -260,14 +82,14 @@ class SelfAssessmentModule(XModule): return json.dumps(state) def get_score(self): - return self.lcp.get_score() + return self.lcp.get_score() def max_score(self): return self.lcp.get_max_score() - def get_progress(self): - ''' For now, just return score / max_score - ''' + def get_progress(self): + ''' For now, just return score / max_score + ''' d = self.get_score() score = d['score'] total = d['total'] @@ -286,170 +108,139 @@ class SelfAssessmentModule(XModule): 'ajax_url': self.system.ajax_url, }) - def get_problem_html(self, encapsulate=True): - '''Return html for the problem. Adds check, reset, save buttons - as necessary based on the problem config and state.''' - - try: - html = self.lcp.get_html() - except Exception, err: - log.exception(err) - - # TODO (vshnayder): another switch on DEBUG. - if self.system.DEBUG: - msg = ( - '[courseware.capa.capa_module] ' - 'Failed to generate HTML for problem %s' % - (self.location.url())) - msg += '

    Error:

    %s

    ' % str(err).replace('<', '<') - msg += '

    %s

    ' % traceback.format_exc().replace('<', '<') - html = msg - else: - # We're in non-debug mode, and possibly even in production. We want - # to avoid bricking of problem as much as possible - - # Presumably, student submission has corrupted LoncapaProblem HTML. - # First, pull down all student answers - student_answers = self.lcp.student_answers - answer_ids = student_answers.keys() - - # Some inputtypes, such as dynamath, have additional "hidden" state that - # is not exposed to the student. Keep those hidden - # TODO: Use regex, e.g. 'dynamath' is suffix at end of answer_id - hidden_state_keywords = ['dynamath'] - for answer_id in answer_ids: - for hidden_state_keyword in hidden_state_keywords: - if answer_id.find(hidden_state_keyword) >= 0: - student_answers.pop(answer_id) - - # Next, generate a fresh LoncapaProblem - self.lcp = LoncapaProblem(self.definition['data'], self.location.html_id(), - state=None, # Tabula rasa - seed=self.seed, system=self.system) - - # Prepend a scary warning to the student - warning = '
    '\ - '

    Warning: The problem has been reset to its initial state!

    '\ - 'The problem\'s state was corrupted by an invalid submission. '\ - 'The submission consisted of:'\ - '
      ' - for student_answer in student_answers.values(): - if student_answer != '': - warning += '
    • ' + cgi.escape(student_answer) + '
    • ' - warning += '
    '\ - 'If this error persists, please contact the course staff.'\ - '
    ' - - html = warning - try: - html += self.lcp.get_html() - except Exception, err: # Couldn't do it. Give up - log.exception(err) - raise - - content = {'name': self.display_name, - 'html': html, - 'weight': self.descriptor.weight, - } - - # We using strings as truthy values, because the terminology of the - # check button is context-specific. - - # Put a "Check" button if unlimited attempts or still some left - if self.max_attempts is None or self.attempts < self.max_attempts-1: - check_button = "Check" - else: - # Will be final check so let user know that - check_button = "Final Check" - - reset_button = True - save_button = True - - # If we're after deadline, or user has exhausted attempts, - # question is read-only. - if self.closed(): - check_button = False - reset_button = False - save_button = False - - # User submitted a problem, and hasn't reset. We don't want - # more submissions. - if self.lcp.done and self.rerandomize == "always": - check_button = False - save_button = False - - # Only show the reset button if pressing it will show different values - if self.rerandomize not in ["always", "onreset"]: - reset_button = False - - # User hasn't submitted an answer yet -- we don't want resets - if not self.lcp.done: - reset_button = False - - # We may not need a "save" button if infinite number of attempts and - # non-randomized. The problem author can force it. It's a bit weird for - # randomization to control this; should perhaps be cleaned up. - if (self.force_save_button == "false") and (self.max_attempts is None and self.rerandomize != "always"): - save_button = False - - context = {'problem': content, - 'id': self.id, - 'check_button': check_button, - 'reset_button': reset_button, - 'save_button': save_button, - 'answer_available': self.answer_available(), - 'ajax_url': self.system.ajax_url, - 'attempts_used': self.attempts, - 'attempts_allowed': self.max_attempts, - 'progress': self.get_progress(), - } - - html = self.system.render_template('problem.html', context) - if encapsulate: - html = '
    '.format( - id=self.location.html_id(), ajax_url=self.system.ajax_url) + html + "
    " - - # cdodge: OK, we have to do two rounds of url reference subsitutions - # one which uses the 'asset library' that is served by the contentstore and the - # more global /static/ filesystem based static content. - # NOTE: rewrite_content_links is defined in XModule - # This is a bit unfortunate and I'm sure we'll try to considate this into - # a one step process. - html = rewrite_links(html, self.rewrite_content_links) - - # now do the substitutions which are filesystem based, e.g. '/static/' prefixes - return self.system.replace_urls(html, self.metadata['data_dir']) class SelfAssessmentDescriptor(XmlDescriptor, EditingDescriptor): """ - Module for putting self assessment questions into a course + Module for putting raw html in a course """ + mako_template = "widgets/html-edit.html" + module_class = HtmlModule + filename_extension = "xml" + template_dir_name = "html" + stores_state=True + has_score=True - stores_state = True - has_score = True - template_dir_name = 'selfassessment' + js = {'coffee': [resource_string(__name__, 'js/src/selfassessment/edit.coffee')]} + js_module_name = "HTMLEditingDescriptor" - # Capa modules have some additional metadata: - # TODO (vshnayder): do problems have any other metadata? Do they - # actually use type and points? - metadata_attributes = RawDescriptor.metadata_attributes + ('type', 'points') - - # VS[compat] - # TODO (cpennington): Delete this method once all fall 2012 course are being - # edited in the cms + # VS[compat] TODO (cpennington): Delete this method once all fall 2012 course + # are being edited in the cms @classmethod def backcompat_paths(cls, path): - return [ - 'problems/' + path[8:], - path[8:], - ] + if path.endswith('.html.xml'): + path = path[:-9] + '.html' # backcompat--look for html instead of xml + if path.endswith('.html.html'): + path = path[:-5] # some people like to include .html in filenames.. + candidates = [] + while os.sep in path: + candidates.append(path) + _, _, path = path.partition(os.sep) - def __init__(self, *args, **kwargs): - super(CapaDescriptor, self).__init__(*args, **kwargs) + # also look for .html versions instead of .xml + nc = [] + for candidate in candidates: + if candidate.endswith('.xml'): + nc.append(candidate[:-4] + '.html') + return candidates + nc - weight_string = self.metadata.get('weight', None) - if weight_string: - self.weight = float(weight_string) + # NOTE: html descriptors are special. We do not want to parse and + # export them ourselves, because that can break things (e.g. lxml + # adds body tags when it exports, but they should just be html + # snippets that will be included in the middle of pages. + + @classmethod + def load_definition(cls, xml_object, system, location): + '''Load a descriptor from the specified xml_object: + + If there is a filename attribute, load it as a string, and + log a warning if it is not parseable by etree.HTMLParser. + + If there is not a filename attribute, the definition is the body + of the xml_object, without the root tag (do not want in the + middle of a page) + ''' + filename = xml_object.get('filename') + if filename is None: + definition_xml = copy.deepcopy(xml_object) + cls.clean_metadata_from_xml(definition_xml) + return {'data': stringify_children(definition_xml)} else: - self.weight = None + # html is special. cls.filename_extension is 'xml', but + # if 'filename' is in the definition, that means to load + # from .html + # 'filename' in html pointers is a relative path + # (not same as 'html/blah.html' when the pointer is in a directory itself) + pointer_path = "{category}/{url_path}".format(category='html', + url_path=name_to_pathname(location.name)) + base = path(pointer_path).dirname() + #log.debug("base = {0}, base.dirname={1}, filename={2}".format(base, base.dirname(), filename)) + filepath = "{base}/{name}.html".format(base=base, name=filename) + #log.debug("looking for html file for {0} at {1}".format(location, filepath)) + + + + # VS[compat] + # TODO (cpennington): If the file doesn't exist at the right path, + # give the class a chance to fix it up. The file will be written out + # again in the correct format. This should go away once the CMS is + # online and has imported all current (fall 2012) courses from xml + if not system.resources_fs.exists(filepath): + candidates = cls.backcompat_paths(filepath) + #log.debug("candidates = {0}".format(candidates)) + for candidate in candidates: + if system.resources_fs.exists(candidate): + filepath = candidate + break + + try: + with system.resources_fs.open(filepath) as file: + html = file.read() + # Log a warning if we can't parse the file, but don't error + if not check_html(html): + msg = "Couldn't parse html in {0}.".format(filepath) + log.warning(msg) + system.error_tracker("Warning: " + msg) + + definition = {'data': html} + + # TODO (ichuang): remove this after migration + # for Fall 2012 LMS migration: keep filename (and unmangled filename) + definition['filename'] = [ filepath, filename ] + + return definition + + except (ResourceNotFoundError) as err: + msg = 'Unable to load file contents at path {0}: {1} '.format( + filepath, err) + # add more info and re-raise + raise Exception(msg), None, sys.exc_info()[2] + + # TODO (vshnayder): make export put things in the right places. + + def definition_to_xml(self, resource_fs): + '''If the contents are valid xml, write them to filename.xml. Otherwise, + write just to filename.xml, and the html + string to filename.html. + ''' + try: + return etree.fromstring(self.definition['data']) + except etree.XMLSyntaxError: + pass + + # Not proper format. Write html to file, return an empty tag + pathname = name_to_pathname(self.url_name) + pathdir = path(pathname).dirname() + filepath = u'{category}/{pathname}.html'.format(category=self.category, + pathname=pathname) + + resource_fs.makedir(os.path.dirname(filepath), allow_recreate=True) + with resource_fs.open(filepath, 'w') as file: + file.write(self.definition['data']) + + # write out the relative name + relname = path(pathname).basename() + + elt = etree.Element('html') + elt.set("filename", relname) + return elt From 9cb2fbdd2fad6a553342776a535d1bd74aea6197 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Wed, 31 Oct 2012 16:26:11 -0400 Subject: [PATCH 106/308] Remove newline from javascript source tags --- common/djangoapps/pipeline_mako/templates/static_content.html | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/common/djangoapps/pipeline_mako/templates/static_content.html b/common/djangoapps/pipeline_mako/templates/static_content.html index c153da22fe..302d4d7aa5 100644 --- a/common/djangoapps/pipeline_mako/templates/static_content.html +++ b/common/djangoapps/pipeline_mako/templates/static_content.html @@ -3,8 +3,7 @@ from staticfiles.storage import staticfiles_storage from pipeline_mako import compressed_css, compressed_js %> -<%def name='url(file)'> -<% +<%def name='url(file)'><% try: url = staticfiles_storage.url(file) except: From b74a484f75830e1ae92782f1f329ee8a25b63031 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Wed, 31 Oct 2012 16:39:04 -0400 Subject: [PATCH 107/308] working on self assessment --- common/lib/xmodule/xmodule/capa_module.py | 306 ++++++++-------- .../xmodule/xmodule/self_assessment_module.py | 335 ++++++++++++++++++ 2 files changed, 488 insertions(+), 153 deletions(-) diff --git a/common/lib/xmodule/xmodule/capa_module.py b/common/lib/xmodule/xmodule/capa_module.py index 151c726f66..31106a4aa8 100644 --- a/common/lib/xmodule/xmodule/capa_module.py +++ b/common/lib/xmodule/xmodule/capa_module.py @@ -29,10 +29,10 @@ TIMEDELTA_REGEX = re.compile(r'^((?P\d+?) day(?:s?))?(\s)?((?P\d+?) def only_one(lst, default="", process=lambda x: x): """ - If lst is empty, returns default - If lst has a single element, applies process to that element and returns it - Otherwise, raises an exeception - """ +If lst is empty, returns default +If lst has a single element, applies process to that element and returns it +Otherwise, raises an exeception +""" if len(lst) == 0: return default elif len(lst) == 1: @@ -43,14 +43,14 @@ def only_one(lst, default="", process=lambda x: x): def parse_timedelta(time_str): """ - time_str: A string with the following components: - day[s] (optional) - hour[s] (optional) - minute[s] (optional) - second[s] (optional) +time_str: A string with the following components: + day[s] (optional) + hour[s] (optional) + minute[s] (optional) + second[s] (optional) - Returns a datetime.timedelta parsed from the string - """ +Returns a datetime.timedelta parsed from the string +""" parts = TIMEDELTA_REGEX.match(time_str) if not parts: return @@ -71,15 +71,15 @@ class ComplexEncoder(json.JSONEncoder): class CapaModule(XModule): ''' - An XModule implementing LonCapa format problems, implemented by way of - capa.capa_problem.LoncapaProblem - ''' +An XModule implementing LonCapa format problems, implemented by way of +capa.capa_problem.LoncapaProblem +''' icon_class = 'problem' js = {'coffee': [resource_string(__name__, 'js/src/capa/display.coffee'), resource_string(__name__, 'js/src/collapsible.coffee'), resource_string(__name__, 'js/src/javascript_loader.coffee'), - ], + ], 'js': [resource_string(__name__, 'js/src/capa/imageinput.js'), resource_string(__name__, 'js/src/capa/schematic.js')]} @@ -89,7 +89,7 @@ class CapaModule(XModule): def __init__(self, system, location, definition, descriptor, instance_state=None, shared_state=None, **kwargs): XModule.__init__(self, system, location, definition, descriptor, instance_state, - shared_state, **kwargs) + shared_state, **kwargs) self.attempts = 0 self.max_attempts = None @@ -100,7 +100,7 @@ class CapaModule(XModule): if display_due_date_string is not None: self.display_due_date = dateutil.parser.parse(display_due_date_string) #log.debug("Parsed " + display_due_date_string + - # " to " + str(self.display_due_date)) + # " to " + str(self.display_due_date)) else: self.display_due_date = None @@ -109,7 +109,7 @@ class CapaModule(XModule): self.grace_period = parse_timedelta(grace_period_string) self.close_date = self.display_due_date + self.grace_period #log.debug("Then parsed " + grace_period_string + - # " to closing date" + str(self.close_date)) + # " to closing date" + str(self.close_date)) else: self.grace_period = None self.close_date = self.display_due_date @@ -137,9 +137,9 @@ class CapaModule(XModule): elif self.rerandomize == "per_student" and hasattr(self.system, 'id'): # TODO: This line is badly broken: # (1) We're passing student ID to xmodule. - # (2) There aren't bins of students. -- we only want 10 or 20 randomizations, and want to assign students - # to these bins, and may not want cohorts. So e.g. hash(your-id, problem_id) % num_bins. - # - analytics really needs small number of bins. + # (2) There aren't bins of students. -- we only want 10 or 20 randomizations, and want to assign students + # to these bins, and may not want cohorts. So e.g. hash(your-id, problem_id) % num_bins. + # - analytics really needs small number of bins. self.seed = system.id else: self.seed = None @@ -148,7 +148,7 @@ class CapaModule(XModule): # TODO (vshnayder): move as much as possible of this work and error # checking to descriptor load time self.lcp = LoncapaProblem(self.definition['data'], self.location.html_id(), - instance_state, seed=self.seed, system=self.system) + instance_state, seed=self.seed, system=self.system) except Exception as err: msg = 'cannot create LoncapaProblem {loc}: {err}'.format( loc=self.location.url(), err=err) @@ -175,9 +175,9 @@ class CapaModule(XModule): @property def rerandomize(self): """ - Property accessor that returns self.metadata['rerandomize'] in a - canonical form - """ +Property accessor that returns self.metadata['rerandomize'] in a +canonical form +""" rerandomize = self.metadata.get('rerandomize', 'always') if rerandomize in ("", "always", "true"): return "always" @@ -203,7 +203,7 @@ class CapaModule(XModule): def get_progress(self): ''' For now, just return score / max_score - ''' +''' d = self.get_score() score = d['score'] total = d['total'] @@ -220,11 +220,11 @@ class CapaModule(XModule): 'element_id': self.location.html_id(), 'id': self.id, 'ajax_url': self.system.ajax_url, - }) + }) def get_problem_html(self, encapsulate=True): - '''Return html for the problem. Adds check, reset, save buttons - as necessary based on the problem config and state.''' + '''Return html for the problem. Adds check, reset, save buttons +as necessary based on the problem config and state.''' try: html = self.lcp.get_html() @@ -242,15 +242,15 @@ class CapaModule(XModule): html = msg else: # We're in non-debug mode, and possibly even in production. We want - # to avoid bricking of problem as much as possible + # to avoid bricking of problem as much as possible # Presumably, student submission has corrupted LoncapaProblem HTML. - # First, pull down all student answers + # First, pull down all student answers student_answers = self.lcp.student_answers answer_ids = student_answers.keys() # Some inputtypes, such as dynamath, have additional "hidden" state that - # is not exposed to the student. Keep those hidden + # is not exposed to the student. Keep those hidden # TODO: Use regex, e.g. 'dynamath' is suffix at end of answer_id hidden_state_keywords = ['dynamath'] for answer_id in answer_ids: @@ -258,17 +258,17 @@ class CapaModule(XModule): if answer_id.find(hidden_state_keyword) >= 0: student_answers.pop(answer_id) - # Next, generate a fresh LoncapaProblem + # Next, generate a fresh LoncapaProblem self.lcp = LoncapaProblem(self.definition['data'], self.location.html_id(), - state=None, # Tabula rasa - seed=self.seed, system=self.system) + state=None, # Tabula rasa + seed=self.seed, system=self.system) # Prepend a scary warning to the student - warning = '
    '\ - '

    Warning: The problem has been reset to its initial state!

    '\ - 'The problem\'s state was corrupted by an invalid submission. ' \ - 'The submission consisted of:'\ - '
      ' + warning = '
      '\ + '

      Warning: The problem has been reset to its initial state!

      '\ + 'The problem\'s state was corrupted by an invalid submission. '\ + 'The submission consisted of:'\ + '
        ' for student_answer in student_answers.values(): if student_answer != '': warning += '
      • ' + cgi.escape(student_answer) + '
      • ' @@ -292,11 +292,11 @@ class CapaModule(XModule): # check button is context-specific. # Put a "Check" button if unlimited attempts or still some left - if self.max_attempts is None or self.attempts < self.max_attempts-1: + if self.max_attempts is None or self.attempts < self.max_attempts-1: check_button = "Check" else: # Will be final check so let user know that - check_button = "Final Check" + check_button = "Final Check" reset_button = True save_button = True @@ -358,14 +358,14 @@ class CapaModule(XModule): def handle_ajax(self, dispatch, get): ''' - This is called by courseware.module_render, to handle an AJAX call. - "get" is request.POST. +This is called by courseware.module_render, to handle an AJAX call. +"get" is request.POST. - Returns a json dictionary: - { 'progress_changed' : True/False, - 'progress' : 'none'/'in_progress'/'done', - } - ''' +Returns a json dictionary: +{ 'progress_changed' : True/False, +'progress' : 'none'/'in_progress'/'done', + } +''' handlers = { 'problem_get': self.get_problem, 'problem_check': self.check_problem, @@ -398,7 +398,7 @@ class CapaModule(XModule): def answer_available(self): ''' Is the user allowed to see an answer? - ''' +''' if self.show_answer == '': return False @@ -425,26 +425,26 @@ class CapaModule(XModule): def update_score(self, get): """ - Delivers grading response (e.g. from asynchronous code checking) to - the capa problem, so its score can be updated +Delivers grading response (e.g. from asynchronous code checking) to +the capa problem, so its score can be updated - 'get' must have a field 'response' which is a string that contains the - grader's response +'get' must have a field 'response' which is a string that contains the +grader's response - No ajax return is needed. Return empty dict. - """ +No ajax return is needed. Return empty dict. +""" queuekey = get['queuekey'] score_msg = get['xqueue_body'] self.lcp.update_score(score_msg, queuekey) - return dict() # No AJAX return is needed + return dict() # No AJAX return is needed def get_answer(self, get): ''' - For the "show answer" button. +For the "show answer" button. - Returns the answers: {'answers' : answers} - ''' +Returns the answers: {'answers' : answers} +''' event_info = dict() event_info['problem_id'] = self.location.url() self.system.track_function('show_answer', event_info) @@ -453,8 +453,8 @@ class CapaModule(XModule): else: answers = self.lcp.get_question_answers() - # answers (eg ) may have embedded images - # but be careful, some problems are using non-string answer dicts + # answers (eg ) may have embedded images + # but be careful, some problems are using non-string answer dicts new_answers = dict() for answer_id in answers: try: @@ -469,18 +469,18 @@ class CapaModule(XModule): # Figure out if we should move these to capa_problem? def get_problem(self, get): ''' Return results of get_problem_html, as a simple dict for json-ing. - { 'html': } +{ 'html': } - Used if we want to reconfirm we have the right thing e.g. after - several AJAX calls. - ''' +Used if we want to reconfirm we have the right thing e.g. after +several AJAX calls. +''' return {'html': self.get_problem_html(encapsulate=False)} @staticmethod def make_dict_of_responses(get): '''Make dictionary of student responses (aka "answers") - get is POST dictionary. - ''' +get is POST dictionary. +''' answers = dict() for key in get: # e.g. input_resistor_1 ==> resistor_1 @@ -500,11 +500,11 @@ class CapaModule(XModule): def check_problem(self, get): ''' Checks whether answers to a problem are correct, and - returns a map of correct/incorrect answers: +returns a map of correct/incorrect answers: - {'success' : bool, - 'contents' : html} - ''' +{'success' : bool, +'contents' : html} +''' event_info = dict() event_info['state'] = self.lcp.get_state() event_info['problem_id'] = self.location.url() @@ -527,11 +527,11 @@ class CapaModule(XModule): # Problem queued. Students must wait a specified waittime before they are allowed to submit if self.lcp.is_queued(): current_time = datetime.datetime.now() - prev_submit_time = self.lcp.get_recentmost_queuetime() + prev_submit_time = self.lcp.get_recentmost_queuetime() waittime_between_requests = self.system.xqueue['waittime'] if (current_time-prev_submit_time).total_seconds() < waittime_between_requests: msg = 'You must wait at least %d seconds between submissions' % waittime_between_requests - return {'success': msg, 'html': ''} # Prompts a modal dialog in ajax callback + return {'success': msg, 'html': ''} # Prompts a modal dialog in ajax callback try: old_state = self.lcp.get_state() @@ -540,13 +540,13 @@ class CapaModule(XModule): except StudentInputError as inst: # TODO (vshnayder): why is this line here? #self.lcp = LoncapaProblem(self.definition['data'], - # id=lcp_id, state=old_state, system=self.system) + # id=lcp_id, state=old_state, system=self.system) log.exception("StudentInputError in capa_module:problem_check") return {'success': inst.message} except Exception, err: # TODO: why is this line here? #self.lcp = LoncapaProblem(self.definition['data'], - # id=lcp_id, state=old_state, system=self.system) + # id=lcp_id, state=old_state, system=self.system) if self.system.DEBUG: msg = "Error checking problem: " + str(err) msg += '\nTraceback:\n' + traceback.format_exc() @@ -564,99 +564,99 @@ class CapaModule(XModule): success = 'incorrect' # NOTE: We are logging both full grading and queued-grading submissions. In the latter, - # 'success' will always be incorrect + # 'success' will always be incorrect event_info['correct_map'] = correct_map.get_dict() event_info['success'] = success - event_info['attempts'] = self.attempts - self.system.track_function('save_problem_check', event_info) +event_info['attempts'] = self.attempts +self.system.track_function('save_problem_check', event_info) - if hasattr(self.system,'psychometrics_handler'): # update PsychometricsData using callback - self.system.psychometrics_handler(self.get_instance_state()) +if hasattr(self.system,'psychometrics_handler'): # update PsychometricsData using callback + self.system.psychometrics_handler(self.get_instance_state()) - # render problem into HTML - html = self.get_problem_html(encapsulate=False) +# render problem into HTML +html = self.get_problem_html(encapsulate=False) - return {'success': success, - 'contents': html, - } +return {'success': success, + 'contents': html, + } - def save_problem(self, get): - ''' - Save the passed in answers. - Returns a dict { 'success' : bool, ['error' : error-msg]}, - with the error key only present if success is False. - ''' - event_info = dict() - event_info['state'] = self.lcp.get_state() - event_info['problem_id'] = self.location.url() +def save_problem(self, get): + ''' + Save the passed in answers. + Returns a dict { 'success' : bool, ['error' : error-msg]}, + with the error key only present if success is False. + ''' + event_info = dict() + event_info['state'] = self.lcp.get_state() + event_info['problem_id'] = self.location.url() - answers = self.make_dict_of_responses(get) - event_info['answers'] = answers + answers = self.make_dict_of_responses(get) + event_info['answers'] = answers - # Too late. Cannot submit - if self.closed(): - event_info['failure'] = 'closed' - self.system.track_function('save_problem_fail', event_info) - return {'success': False, - 'error': "Problem is closed"} - - # Problem submitted. Student should reset before saving - # again. - if self.lcp.done and self.rerandomize == "always": - event_info['failure'] = 'done' - self.system.track_function('save_problem_fail', event_info) - return {'success': False, - 'error': "Problem needs to be reset prior to save."} - - self.lcp.student_answers = answers - - # TODO: should this be save_problem_fail? Looks like success to me... + # Too late. Cannot submit + if self.closed(): + event_info['failure'] = 'closed' self.system.track_function('save_problem_fail', event_info) - return {'success': True} + return {'success': False, + 'error': "Problem is closed"} - def reset_problem(self, get): - ''' Changes problem state to unfinished -- removes student answers, - and causes problem to rerender itself. + # Problem submitted. Student should reset before saving + # again. + if self.lcp.done and self.rerandomize == "always": + event_info['failure'] = 'done' + self.system.track_function('save_problem_fail', event_info) + return {'success': False, + 'error': "Problem needs to be reset prior to save."} - Returns problem html as { 'html' : html-string }. - ''' - event_info = dict() - event_info['old_state'] = self.lcp.get_state() - event_info['problem_id'] = self.location.url() + self.lcp.student_answers = answers - if self.closed(): - event_info['failure'] = 'closed' - self.system.track_function('reset_problem_fail', event_info) - return {'success': False, - 'error': "Problem is closed"} + # TODO: should this be save_problem_fail? Looks like success to me... + self.system.track_function('save_problem_fail', event_info) + return {'success': True} - if not self.lcp.done: - event_info['failure'] = 'not_done' - self.system.track_function('reset_problem_fail', event_info) - return {'success': False, - 'error': "Refresh the page and make an attempt before resetting."} +def reset_problem(self, get): + ''' Changes problem state to unfinished -- removes student answers, + and causes problem to rerender itself. - self.lcp.do_reset() - if self.rerandomize in ["always", "onreset"]: - # reset random number generator seed (note the self.lcp.get_state() - # in next line) - self.lcp.seed = None + Returns problem html as { 'html' : html-string }. + ''' + event_info = dict() + event_info['old_state'] = self.lcp.get_state() + event_info['problem_id'] = self.location.url() - self.lcp = LoncapaProblem(self.definition['data'], - self.location.html_id(), self.lcp.get_state(), - system=self.system) + if self.closed(): + event_info['failure'] = 'closed' + self.system.track_function('reset_problem_fail', event_info) + return {'success': False, + 'error': "Problem is closed"} - event_info['new_state'] = self.lcp.get_state() - self.system.track_function('reset_problem', event_info) + if not self.lcp.done: + event_info['failure'] = 'not_done' + self.system.track_function('reset_problem_fail', event_info) + return {'success': False, + 'error': "Refresh the page and make an attempt before resetting."} - return {'html': self.get_problem_html(encapsulate=False)} + self.lcp.do_reset() + if self.rerandomize in ["always", "onreset"]: + # reset random number generator seed (note the self.lcp.get_state() + # in next line) + self.lcp.seed = None + + self.lcp = LoncapaProblem(self.definition['data'], + self.location.html_id(), self.lcp.get_state(), + system=self.system) + + event_info['new_state'] = self.lcp.get_state() + self.system.track_function('reset_problem', event_info) + + return {'html': self.get_problem_html(encapsulate=False)} class CapaDescriptor(RawDescriptor): """ - Module implementing problems in the LON-CAPA format, - as implemented by capa.capa_problem - """ +Module implementing problems in the LON-CAPA format, +as implemented by capa.capa_problem +""" module_class = CapaModule @@ -665,7 +665,7 @@ class CapaDescriptor(RawDescriptor): template_dir_name = 'problem' # Capa modules have some additional metadata: - # TODO (vshnayder): do problems have any other metadata? Do they + # TODO (vshnayder): do problems have any other metadata? Do they # actually use type and points? metadata_attributes = RawDescriptor.metadata_attributes + ('type', 'points') @@ -677,13 +677,13 @@ class CapaDescriptor(RawDescriptor): return [ 'problems/' + path[8:], path[8:], - ] - + ] + def __init__(self, *args, **kwargs): super(CapaDescriptor, self).__init__(*args, **kwargs) - + weight_string = self.metadata.get('weight', None) if weight_string: self.weight = float(weight_string) else: - self.weight = None + self.weight = None \ No newline at end of file diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index df69213281..4473b7d430 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -108,6 +108,341 @@ class SelfAssessmentModule(XModule): 'ajax_url': self.system.ajax_url, }) + def get_problem_html(self, encapsulate=True): + '''Return html for the problem. Adds check, reset, save buttons + as necessary based on the problem config and state.''' + + try: + html = self.lcp.get_html() + except Exception, err: + log.exception(err) + + # TODO (vshnayder): another switch on DEBUG. + if self.system.DEBUG: + msg = ( + '[courseware.capa.capa_module] ' + 'Failed to generate HTML for problem %s' % + (self.location.url())) + msg += '

        Error:

        %s

        ' % str(err).replace('<', '<') + msg += '

        %s

        ' % traceback.format_exc().replace('<', '<') + html = msg + else: + # We're in non-debug mode, and possibly even in production. We want + # to avoid bricking of problem as much as possible + + # Presumably, student submission has corrupted LoncapaProblem HTML. + # First, pull down all student answers + student_answers = self.lcp.student_answers + answer_ids = student_answers.keys() + + # Some inputtypes, such as dynamath, have additional "hidden" state that + # is not exposed to the student. Keep those hidden + # TODO: Use regex, e.g. 'dynamath' is suffix at end of answer_id + hidden_state_keywords = ['dynamath'] + for answer_id in answer_ids: + for hidden_state_keyword in hidden_state_keywords: + if answer_id.find(hidden_state_keyword) >= 0: + student_answers.pop(answer_id) + + # Next, generate a fresh LoncapaProblem + self.lcp = LoncapaProblem(self.definition['data'], self.location.html_id(), + state=None, # Tabula rasa + seed=self.seed, system=self.system) + + # Prepend a scary warning to the student + warning = '
        '\ + '

        Warning: The problem has been reset to its initial state!

        '\ + 'The problem\'s state was corrupted by an invalid submission. '\ + 'The submission consisted of:'\ + '
          ' + for student_answer in student_answers.values(): + if student_answer != '': + warning += '
        • ' + cgi.escape(student_answer) + '
        • ' + warning += '
        '\ + 'If this error persists, please contact the course staff.'\ + '
        ' + + html = warning + try: + html += self.lcp.get_html() + except Exception, err: # Couldn't do it. Give up + log.exception(err) + raise + + content = {'name': self.display_name, + 'html': html, + 'weight': self.descriptor.weight, + } + + # We using strings as truthy values, because the terminology of the + # check button is context-specific. + + # Put a "Check" button if unlimited attempts or still some left + if self.max_attempts is None or self.attempts < self.max_attempts-1: + check_button = "Check" + else: + # Will be final check so let user know that + check_button = "Final Check" + + reset_button = True + save_button = True + + # If we're after deadline, or user has exhausted attempts, + # question is read-only. + if self.closed(): + check_button = False + reset_button = False + save_button = False + + # User submitted a problem, and hasn't reset. We don't want + # more submissions. + if self.lcp.done and self.rerandomize == "always": + check_button = False + save_button = False + + # Only show the reset button if pressing it will show different values + if self.rerandomize not in ["always", "onreset"]: + reset_button = False + + # User hasn't submitted an answer yet -- we don't want resets + if not self.lcp.done: + reset_button = False + + # We may not need a "save" button if infinite number of attempts and + # non-randomized. The problem author can force it. It's a bit weird for + # randomization to control this; should perhaps be cleaned up. + if (self.force_save_button == "false") and (self.max_attempts is None and self.rerandomize != "always"): + save_button = False + + context = {'problem': content, + 'id': self.id, + 'check_button': check_button, + 'reset_button': reset_button, + 'save_button': save_button, + 'answer_available': self.answer_available(), + 'ajax_url': self.system.ajax_url, + 'attempts_used': self.attempts, + 'attempts_allowed': self.max_attempts, + 'progress': self.get_progress(), + } + + html = self.system.render_template('problem.html', context) + if encapsulate: + html = '
        '.format( + id=self.location.html_id(), ajax_url=self.system.ajax_url) + html + "
        " + + # cdodge: OK, we have to do two rounds of url reference subsitutions + # one which uses the 'asset library' that is served by the contentstore and the + # more global /static/ filesystem based static content. + # NOTE: rewrite_content_links is defined in XModule + # This is a bit unfortunate and I'm sure we'll try to considate this into + # a one step process. + html = rewrite_links(html, self.rewrite_content_links) + + # now do the substitutions which are filesystem based, e.g. '/static/' prefixes + return self.system.replace_urls(html, self.metadata['data_dir']) + + def handle_ajax(self, dispatch, get): + ''' + This is called by courseware.module_render, to handle an AJAX call. + "get" is request.POST. + + Returns a json dictionary: + { 'progress_changed' : True/False, + 'progress' : 'none'/'in_progress'/'done', + } + ''' + handlers = { + 'problem_get': self.get_problem, + 'problem_check': self.check_problem, + 'problem_reset': self.reset_problem, + 'problem_save': self.save_problem, + 'problem_show': self.get_answer, + 'score_update': self.update_score, + } + + if dispatch not in handlers: + return 'Error' + + before = self.get_progress() + d = handlers[dispatch](get) + after = self.get_progress() + d.update({ + 'progress_changed': after != before, + 'progress_status': Progress.to_js_status_str(after), + }) + return json.dumps(d, cls=ComplexEncoder) + + def closed(self): + ''' Is the student still allowed to submit answers? ''' + if self.attempts == self.max_attempts: + return True + if self.close_date is not None and datetime.datetime.utcnow() > self.close_date: + return True + + return False + + def answer_available(self): + ''' Is the user allowed to see an answer? + ''' + if self.show_answer == '': + return False + + if self.show_answer == "never": + return False + + # Admins can see the answer, unless the problem explicitly prevents it + if self.system.user_is_staff: + return True + + if self.show_answer == 'attempted': + return self.attempts > 0 + + if self.show_answer == 'answered': + return self.lcp.done + + if self.show_answer == 'closed': + return self.closed() + + if self.show_answer == 'always': + return True + + return False + + # Figure out if we should move these to capa_problem? + def get_problem(self, get): + ''' Return results of get_problem_html, as a simple dict for json-ing. + { 'html': } + + Used if we want to reconfirm we have the right thing e.g. after + several AJAX calls. + ''' + return {'html': self.get_problem_html(encapsulate=False)} + + @staticmethod + def make_dict_of_responses(get): + '''Make dictionary of student responses (aka "answers") + get is POST dictionary. + ''' + answers = dict() + for key in get: + # e.g. input_resistor_1 ==> resistor_1 + _, _, name = key.partition('_') + + # This allows for answers which require more than one value for + # the same form input (e.g. checkbox inputs). The convention is that + # if the name ends with '[]' (which looks like an array), then the + # answer will be an array. + if not name.endswith('[]'): + answers[name] = get[key] + else: + name = name[:-2] + answers[name] = get.getlist(key) + + return answers + + def check_problem(self, get): + ''' Checks whether answers to a problem are correct, and + returns a map of correct/incorrect answers: + + {'success' : bool, + 'contents' : html} + ''' + event_info = dict() + event_info['state'] = self.lcp.get_state() + event_info['problem_id'] = self.location.url() + + answers = self.make_dict_of_responses(get) + event_info['answers'] = convert_files_to_filenames(answers) + + parsed_answer=False + if(answer[answers.keys()[0]]=="True"): + parsed_answer=True + + # Too late. Cannot submit + if self.closed(): + event_info['failure'] = 'closed' + self.system.track_function('save_problem_check_fail', event_info) + raise NotFoundError('Problem is closed') + + try: + old_state = self.lcp.get_state() + lcp_id = self.lcp.problem_id + correct_map = self.lcp.grade_answers(answers) + correct_map.set(correctness=parsed_answer) + except StudentInputError as inst: + # TODO (vshnayder): why is this line here? + #self.lcp = LoncapaProblem(self.definition['data'], + # id=lcp_id, state=old_state, system=self.system) + log.exception("StudentInputError in capa_module:problem_check") + return {'success': inst.message} + except Exception, err: + # TODO: why is this line here? + #self.lcp = LoncapaProblem(self.definition['data'], + # id=lcp_id, state=old_state, system=self.system) + if self.system.DEBUG: + msg = "Error checking problem: " + str(err) + msg += '\nTraceback:\n' + traceback.format_exc() + return {'success': msg} + log.exception("Error in capa_module problem checking") + raise Exception("error in capa_module") + + self.attempts = self.attempts + 1 + self.lcp.done = True + + # success = correct if ALL questions in this problem are correct + success = 'correct' + for answer_id in correct_map: + if not correct_map.is_correct(answer_id): + success = 'incorrect' + + # NOTE: We are logging both full grading and queued-grading submissions. In the latter, + # 'success' will always be incorrect + event_info['correct_map'] = correct_map.get_dict() + event_info['success'] = success + event_info['attempts'] = self.attempts + self.system.track_function('save_problem_check', event_info) + + # render problem into HTML + html = self.get_problem_html(encapsulate=False) + + return {'success': success, + 'contents': html, + } + + def save_problem(self, get): + ''' + Save the passed in answers. + Returns a dict { 'success' : bool, ['error' : error-msg]}, + with the error key only present if success is False. + ''' + event_info = dict() + event_info['state'] = self.lcp.get_state() + event_info['problem_id'] = self.location.url() + + answers = self.make_dict_of_responses(get) + event_info['answers'] = answers + + # Too late. Cannot submit + if self.closed(): + event_info['failure'] = 'closed' + self.system.track_function('save_problem_fail', event_info) + return {'success': False, + 'error': "Problem is closed"} + + # Problem submitted. Student should reset before saving + # again. + if self.lcp.done and self.rerandomize == "always": + event_info['failure'] = 'done' + self.system.track_function('save_problem_fail', event_info) + return {'success': False, + 'error': "Problem needs to be reset prior to save."} + + self.lcp.student_answers = answers + + # TODO: should this be save_problem_fail? Looks like success to me... + self.system.track_function('save_problem_fail', event_info) + return {'success': True} class SelfAssessmentDescriptor(XmlDescriptor, EditingDescriptor): From 32a8ed7be32c1451a3fc5b591f5ee86585162d96 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Wed, 31 Oct 2012 16:54:00 -0400 Subject: [PATCH 108/308] adding in self assessment grader --- common/lib/xmodule/xmodule/capa_module.py | 116 ++++++------ .../js/src/selfassessment/display.coffee | 24 --- .../xmodule/xmodule/self_assessment_module.py | 168 ++++-------------- 3 files changed, 91 insertions(+), 217 deletions(-) diff --git a/common/lib/xmodule/xmodule/capa_module.py b/common/lib/xmodule/xmodule/capa_module.py index 31106a4aa8..76158093b6 100644 --- a/common/lib/xmodule/xmodule/capa_module.py +++ b/common/lib/xmodule/xmodule/capa_module.py @@ -29,10 +29,10 @@ TIMEDELTA_REGEX = re.compile(r'^((?P\d+?) day(?:s?))?(\s)?((?P\d+?) def only_one(lst, default="", process=lambda x: x): """ -If lst is empty, returns default -If lst has a single element, applies process to that element and returns it -Otherwise, raises an exeception -""" + If lst is empty, returns default + If lst has a single element, applies process to that element and returns it + Otherwise, raises an exeception + """ if len(lst) == 0: return default elif len(lst) == 1: @@ -43,14 +43,14 @@ Otherwise, raises an exeception def parse_timedelta(time_str): """ -time_str: A string with the following components: - day[s] (optional) - hour[s] (optional) - minute[s] (optional) - second[s] (optional) + time_str: A string with the following components: + day[s] (optional) + hour[s] (optional) + minute[s] (optional) + second[s] (optional) -Returns a datetime.timedelta parsed from the string -""" + Returns a datetime.timedelta parsed from the string + """ parts = TIMEDELTA_REGEX.match(time_str) if not parts: return @@ -71,9 +71,9 @@ class ComplexEncoder(json.JSONEncoder): class CapaModule(XModule): ''' -An XModule implementing LonCapa format problems, implemented by way of -capa.capa_problem.LoncapaProblem -''' + An XModule implementing LonCapa format problems, implemented by way of + capa.capa_problem.LoncapaProblem + ''' icon_class = 'problem' js = {'coffee': [resource_string(__name__, 'js/src/capa/display.coffee'), @@ -175,9 +175,9 @@ capa.capa_problem.LoncapaProblem @property def rerandomize(self): """ -Property accessor that returns self.metadata['rerandomize'] in a -canonical form -""" + Property accessor that returns self.metadata['rerandomize'] in a + canonical form + """ rerandomize = self.metadata.get('rerandomize', 'always') if rerandomize in ("", "always", "true"): return "always" @@ -203,7 +203,7 @@ canonical form def get_progress(self): ''' For now, just return score / max_score -''' + ''' d = self.get_score() score = d['score'] total = d['total'] @@ -224,7 +224,7 @@ canonical form def get_problem_html(self, encapsulate=True): '''Return html for the problem. Adds check, reset, save buttons -as necessary based on the problem config and state.''' + as necessary based on the problem config and state.''' try: html = self.lcp.get_html() @@ -358,14 +358,14 @@ as necessary based on the problem config and state.''' def handle_ajax(self, dispatch, get): ''' -This is called by courseware.module_render, to handle an AJAX call. -"get" is request.POST. + This is called by courseware.module_render, to handle an AJAX call. + "get" is request.POST. -Returns a json dictionary: -{ 'progress_changed' : True/False, -'progress' : 'none'/'in_progress'/'done', - } -''' + Returns a json dictionary: + { 'progress_changed' : True/False, + 'progress' : 'none'/'in_progress'/'done', + } + ''' handlers = { 'problem_get': self.get_problem, 'problem_check': self.check_problem, @@ -398,7 +398,7 @@ Returns a json dictionary: def answer_available(self): ''' Is the user allowed to see an answer? -''' + ''' if self.show_answer == '': return False @@ -425,14 +425,14 @@ Returns a json dictionary: def update_score(self, get): """ -Delivers grading response (e.g. from asynchronous code checking) to -the capa problem, so its score can be updated + Delivers grading response (e.g. from asynchronous code checking) to + the capa problem, so its score can be updated -'get' must have a field 'response' which is a string that contains the -grader's response + 'get' must have a field 'response' which is a string that contains the + grader's response -No ajax return is needed. Return empty dict. -""" + No ajax return is needed. Return empty dict. + """ queuekey = get['queuekey'] score_msg = get['xqueue_body'] self.lcp.update_score(score_msg, queuekey) @@ -441,10 +441,10 @@ No ajax return is needed. Return empty dict. def get_answer(self, get): ''' -For the "show answer" button. + For the "show answer" button. -Returns the answers: {'answers' : answers} -''' + Returns the answers: {'answers' : answers} + ''' event_info = dict() event_info['problem_id'] = self.location.url() self.system.track_function('show_answer', event_info) @@ -469,18 +469,18 @@ Returns the answers: {'answers' : answers} # Figure out if we should move these to capa_problem? def get_problem(self, get): ''' Return results of get_problem_html, as a simple dict for json-ing. -{ 'html': } + { 'html': } -Used if we want to reconfirm we have the right thing e.g. after -several AJAX calls. -''' + Used if we want to reconfirm we have the right thing e.g. after + several AJAX calls. + ''' return {'html': self.get_problem_html(encapsulate=False)} @staticmethod def make_dict_of_responses(get): '''Make dictionary of student responses (aka "answers") -get is POST dictionary. -''' + get is POST dictionary. + ''' answers = dict() for key in get: # e.g. input_resistor_1 ==> resistor_1 @@ -500,11 +500,11 @@ get is POST dictionary. def check_problem(self, get): ''' Checks whether answers to a problem are correct, and -returns a map of correct/incorrect answers: + returns a map of correct/incorrect answers: -{'success' : bool, -'contents' : html} -''' + {'success' : bool, + 'contents' : html} + ''' event_info = dict() event_info['state'] = self.lcp.get_state() event_info['problem_id'] = self.location.url() @@ -567,18 +567,18 @@ returns a map of correct/incorrect answers: # 'success' will always be incorrect event_info['correct_map'] = correct_map.get_dict() event_info['success'] = success -event_info['attempts'] = self.attempts -self.system.track_function('save_problem_check', event_info) + event_info['attempts'] = self.attempts + self.system.track_function('save_problem_check', event_info) -if hasattr(self.system,'psychometrics_handler'): # update PsychometricsData using callback - self.system.psychometrics_handler(self.get_instance_state()) + if hasattr(self.system,'psychometrics_handler'): # update PsychometricsData using callback + self.system.psychometrics_handler(self.get_instance_state()) -# render problem into HTML -html = self.get_problem_html(encapsulate=False) + # render problem into HTML + html = self.get_problem_html(encapsulate=False) -return {'success': success, - 'contents': html, - } + return {'success': success, + 'contents': html, + } def save_problem(self, get): ''' @@ -654,9 +654,9 @@ def reset_problem(self, get): class CapaDescriptor(RawDescriptor): """ -Module implementing problems in the LON-CAPA format, -as implemented by capa.capa_problem -""" + Module implementing problems in the LON-CAPA format, + as implemented by capa.capa_problem + """ module_class = CapaModule diff --git a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee index da91c44af7..5e16182553 100644 --- a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee @@ -125,30 +125,6 @@ class @Problem @gentle_alert saveMessage @updateProgress response - refreshMath: (event, element) => - element = event.target unless element - elid = element.id.replace(/^input_/,'') - target = "display_" + elid - - # MathJax preprocessor is loaded by 'setupInputTypes' - preprocessor_tag = "inputtype_" + elid - mathjax_preprocessor = @inputtypeDisplays[preprocessor_tag] - - if jax = MathJax.Hub.getAllJax(target)[0] - eqn = $(element).val() - if mathjax_preprocessor - eqn = mathjax_preprocessor(eqn) - MathJax.Hub.Queue(['Text', jax, eqn], [@updateMathML, jax, element]) - - return # Explicit return for CoffeeScript - - updateMathML: (jax, element) => - try - $("##{element.id}_dynamath").val(jax.root.toMathML '') - catch exception - throw exception unless exception.restart - MathJax.Callback.After [@refreshMath, jax], exception.restart - refreshAnswers: => @$('input.schematic').each (index, element) -> element.schematic.update_value() diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index 4473b7d430..b6e8a667b4 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -57,9 +57,10 @@ class SelfAssessmentModule(XModule): dom2 = etree.fromstring(definition['data']) self.attempts = 0 - self.max_attempts = None + self.max_attempts = 1 self.max_attempts = self.metadata.get('attempts', None) + if self.max_attempts is not None: self.max_attempts = int(self.max_attempts) @@ -70,7 +71,7 @@ class SelfAssessmentModule(XModule): self.name = only_one(dom2.xpath('/problem/@name')) - self.rubric=etree.tostring(only_one(dom2.xpath("/rubric"))) + self.rubric=etree.tostring(only_one(dom2.xpath("/rubric/html"))) self.problem=etree.tostring(only_one(dom2.xpath("/problem"))) self.lcp = LoncapaProblem(self.problem, self.location.html_id(), @@ -255,10 +256,7 @@ class SelfAssessmentModule(XModule): handlers = { 'problem_get': self.get_problem, 'problem_check': self.check_problem, - 'problem_reset': self.reset_problem, 'problem_save': self.save_problem, - 'problem_show': self.get_answer, - 'score_update': self.update_score, } if dispatch not in handlers: @@ -274,7 +272,7 @@ class SelfAssessmentModule(XModule): return json.dumps(d, cls=ComplexEncoder) def closed(self): - ''' Is the student still allowed to submit answers? ''' + ''' Is the student still allowed to submit answers? ''' if self.attempts == self.max_attempts: return True if self.close_date is not None and datetime.datetime.utcnow() > self.close_date: @@ -319,9 +317,10 @@ class SelfAssessmentModule(XModule): ''' return {'html': self.get_problem_html(encapsulate=False)} - @staticmethod + @staticmethod def make_dict_of_responses(get): - '''Make dictionary of student responses (aka "answers") + ''' + Make dictionary of student responses (aka "answers") get is POST dictionary. ''' answers = dict() @@ -355,9 +354,9 @@ class SelfAssessmentModule(XModule): answers = self.make_dict_of_responses(get) event_info['answers'] = convert_files_to_filenames(answers) - parsed_answer=False - if(answer[answers.keys()[0]]=="True"): - parsed_answer=True + parsed_answer="incorrect" + if(answer[answers.keys()[1]]=="Correct"): + parsed_answer="correct" # Too late. Cannot submit if self.closed(): @@ -445,137 +444,36 @@ class SelfAssessmentModule(XModule): return {'success': True} -class SelfAssessmentDescriptor(XmlDescriptor, EditingDescriptor): +class SelfAssessmentDescriptor(RawDescriptor): """ Module for putting raw html in a course """ - mako_template = "widgets/html-edit.html" - module_class = HtmlModule - filename_extension = "xml" - template_dir_name = "html" - stores_state=True - has_score=True + module_class = SelfAssessmentModule - js = {'coffee': [resource_string(__name__, 'js/src/selfassessment/edit.coffee')]} - js_module_name = "HTMLEditingDescriptor" + stores_state = True + has_score = True + template_dir_name = 'selfassessment' - # VS[compat] TODO (cpennington): Delete this method once all fall 2012 course - # are being edited in the cms + # Capa modules have some additional metadata: + # TODO (vshnayder): do problems have any other metadata? Do they + # actually use type and points? + metadata_attributes = RawDescriptor.metadata_attributes + ('type', 'points') + + # VS[compat] + # TODO (cpennington): Delete this method once all fall 2012 course are being + # edited in the cms @classmethod def backcompat_paths(cls, path): - if path.endswith('.html.xml'): - path = path[:-9] + '.html' # backcompat--look for html instead of xml - if path.endswith('.html.html'): - path = path[:-5] # some people like to include .html in filenames.. - candidates = [] - while os.sep in path: - candidates.append(path) - _, _, path = path.partition(os.sep) + return [ + 'problems/' + path[8:], + path[8:], + ] - # also look for .html versions instead of .xml - nc = [] - for candidate in candidates: - if candidate.endswith('.xml'): - nc.append(candidate[:-4] + '.html') - return candidates + nc + def __init__(self, *args, **kwargs): + super(CapaDescriptor, self).__init__(*args, **kwargs) - # NOTE: html descriptors are special. We do not want to parse and - # export them ourselves, because that can break things (e.g. lxml - # adds body tags when it exports, but they should just be html - # snippets that will be included in the middle of pages. - - @classmethod - def load_definition(cls, xml_object, system, location): - '''Load a descriptor from the specified xml_object: - - If there is a filename attribute, load it as a string, and - log a warning if it is not parseable by etree.HTMLParser. - - If there is not a filename attribute, the definition is the body - of the xml_object, without the root tag (do not want in the - middle of a page) - ''' - filename = xml_object.get('filename') - if filename is None: - definition_xml = copy.deepcopy(xml_object) - cls.clean_metadata_from_xml(definition_xml) - return {'data': stringify_children(definition_xml)} + weight_string = self.metadata.get('weight', None) + if weight_string: + self.weight = float(weight_string) else: - # html is special. cls.filename_extension is 'xml', but - # if 'filename' is in the definition, that means to load - # from .html - # 'filename' in html pointers is a relative path - # (not same as 'html/blah.html' when the pointer is in a directory itself) - pointer_path = "{category}/{url_path}".format(category='html', - url_path=name_to_pathname(location.name)) - base = path(pointer_path).dirname() - #log.debug("base = {0}, base.dirname={1}, filename={2}".format(base, base.dirname(), filename)) - filepath = "{base}/{name}.html".format(base=base, name=filename) - #log.debug("looking for html file for {0} at {1}".format(location, filepath)) - - - - # VS[compat] - # TODO (cpennington): If the file doesn't exist at the right path, - # give the class a chance to fix it up. The file will be written out - # again in the correct format. This should go away once the CMS is - # online and has imported all current (fall 2012) courses from xml - if not system.resources_fs.exists(filepath): - candidates = cls.backcompat_paths(filepath) - #log.debug("candidates = {0}".format(candidates)) - for candidate in candidates: - if system.resources_fs.exists(candidate): - filepath = candidate - break - - try: - with system.resources_fs.open(filepath) as file: - html = file.read() - # Log a warning if we can't parse the file, but don't error - if not check_html(html): - msg = "Couldn't parse html in {0}.".format(filepath) - log.warning(msg) - system.error_tracker("Warning: " + msg) - - definition = {'data': html} - - # TODO (ichuang): remove this after migration - # for Fall 2012 LMS migration: keep filename (and unmangled filename) - definition['filename'] = [ filepath, filename ] - - return definition - - except (ResourceNotFoundError) as err: - msg = 'Unable to load file contents at path {0}: {1} '.format( - filepath, err) - # add more info and re-raise - raise Exception(msg), None, sys.exc_info()[2] - - # TODO (vshnayder): make export put things in the right places. - - def definition_to_xml(self, resource_fs): - '''If the contents are valid xml, write them to filename.xml. Otherwise, - write just to filename.xml, and the html - string to filename.html. - ''' - try: - return etree.fromstring(self.definition['data']) - except etree.XMLSyntaxError: - pass - - # Not proper format. Write html to file, return an empty tag - pathname = name_to_pathname(self.url_name) - pathdir = path(pathname).dirname() - filepath = u'{category}/{pathname}.html'.format(category=self.category, - pathname=pathname) - - resource_fs.makedir(os.path.dirname(filepath), allow_recreate=True) - with resource_fs.open(filepath, 'w') as file: - file.write(self.definition['data']) - - # write out the relative name - relname = path(pathname).basename() - - elt = etree.Element('html') - elt.set("filename", relname) - return elt + self.weight = None \ No newline at end of file From 6bbe82b697e30fb8852e87db15afa6711a4c7679 Mon Sep 17 00:00:00 2001 From: Don Mitchell Date: Wed, 31 Oct 2012 17:05:46 -0400 Subject: [PATCH 109/308] Make work w/ ie8. Still complains that HTMLCanvasElement is undefined but doesn't try to manipulate it. --- common/lib/xmodule/xmodule/js/src/capa/schematic.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common/lib/xmodule/xmodule/js/src/capa/schematic.js b/common/lib/xmodule/xmodule/js/src/capa/schematic.js index b01f6e12e8..8fb6769342 100644 --- a/common/lib/xmodule/xmodule/js/src/capa/schematic.js +++ b/common/lib/xmodule/xmodule/js/src/capa/schematic.js @@ -1995,7 +1995,7 @@ cktsim = (function() { // set up each schematic entry widget function update_schematics() { // set up each schematic on the page - var schematics = document.getElementsByClassName('schematic'); + var schematics = $('.schematic'); for (var i = 0; i < schematics.length; ++i) if (schematics[i].getAttribute("loaded") != "true") { try { @@ -2036,7 +2036,7 @@ function add_schematic_handler(other_onload) { // ask each schematic input widget to update its value field for submission function prepare_schematics() { - var schematics = document.getElementsByClassName('schematic'); + var schematics = $('.schematic'); for (var i = schematics.length - 1; i >= 0; i--) schematics[i].schematic.update_value(); } @@ -3339,7 +3339,7 @@ schematic = (function() { } // add method to canvas to compute relative coords for event - HTMLCanvasElement.prototype.relMouseCoords = function(event){ + if (HTMLCanvasElement) HTMLCanvasElement.prototype.relMouseCoords = function(event){ // run up the DOM tree to figure out coords for top,left of canvas var totalOffsetX = 0; var totalOffsetY = 0; @@ -3718,7 +3718,7 @@ schematic = (function() { // look for property input fields in the content and give // them a keypress listener that interprets ENTER as // clicking OK. - var plist = content.getElementsByClassName('property'); + var plist = $(content).find('.property'); for (var i = plist.length - 1; i >= 0; --i) { var field = plist[i]; field.dialog = dialog; // help event handler find us... From 562dee067c307edcabda4d5bbb79aefe5687d79c Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Wed, 31 Oct 2012 17:10:51 -0400 Subject: [PATCH 110/308] rolling back self assessment module --- common/lib/xmodule/xmodule/self_assessment_module.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index b6e8a667b4..0c31a48b1e 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -452,7 +452,7 @@ class SelfAssessmentDescriptor(RawDescriptor): stores_state = True has_score = True - template_dir_name = 'selfassessment' + template_dir_name = 'problem' # Capa modules have some additional metadata: # TODO (vshnayder): do problems have any other metadata? Do they @@ -465,7 +465,7 @@ class SelfAssessmentDescriptor(RawDescriptor): @classmethod def backcompat_paths(cls, path): return [ - 'problems/' + path[8:], + 'problem/' + path[8:], path[8:], ] From 2b5e55b6623af972b7b403a4e82d6771759ce2c8 Mon Sep 17 00:00:00 2001 From: Don Mitchell Date: Wed, 31 Oct 2012 17:29:19 -0400 Subject: [PATCH 111/308] Use try/catch to detect undefined globals for canvas --- .../xmodule/xmodule/js/src/capa/schematic.js | 127 ++++++++++-------- 1 file changed, 68 insertions(+), 59 deletions(-) diff --git a/common/lib/xmodule/xmodule/js/src/capa/schematic.js b/common/lib/xmodule/xmodule/js/src/capa/schematic.js index 8fb6769342..d2602d8ac3 100644 --- a/common/lib/xmodule/xmodule/js/src/capa/schematic.js +++ b/common/lib/xmodule/xmodule/js/src/capa/schematic.js @@ -3339,23 +3339,28 @@ schematic = (function() { } // add method to canvas to compute relative coords for event - if (HTMLCanvasElement) HTMLCanvasElement.prototype.relMouseCoords = function(event){ - // run up the DOM tree to figure out coords for top,left of canvas - var totalOffsetX = 0; - var totalOffsetY = 0; - var currentElement = this; - do { - totalOffsetX += currentElement.offsetLeft; - totalOffsetY += currentElement.offsetTop; - } - while (currentElement = currentElement.offsetParent); - - // now compute relative position of click within the canvas - this.mouse_x = event.pageX - totalOffsetX; - this.mouse_y = event.pageY - totalOffsetY; - - this.page_x = event.pageX; - this.page_y = event.pageY; + try { + if (HTMLCanvasElement) + HTMLCanvasElement.prototype.relMouseCoords = function(event){ + // run up the DOM tree to figure out coords for top,left of canvas + var totalOffsetX = 0; + var totalOffsetY = 0; + var currentElement = this; + do { + totalOffsetX += currentElement.offsetLeft; + totalOffsetY += currentElement.offsetTop; + } + while (currentElement = currentElement.offsetParent); + + // now compute relative position of click within the canvas + this.mouse_x = event.pageX - totalOffsetX; + this.mouse_y = event.pageY - totalOffsetY; + + this.page_x = event.pageX; + this.page_y = event.pageY; + } + } + catch (err) { // ignore } /////////////////////////////////////////////////////////////////////////////// @@ -4091,48 +4096,52 @@ schematic = (function() { // add dashed lines! // from http://davidowens.wordpress.com/2010/09/07/html-5-canvas-and-dashed-lines/ - CanvasRenderingContext2D.prototype.dashedLineTo = function(fromX, fromY, toX, toY, pattern) { - // Our growth rate for our line can be one of the following: - // (+,+), (+,-), (-,+), (-,-) - // Because of this, our algorithm needs to understand if the x-coord and - // y-coord should be getting smaller or larger and properly cap the values - // based on (x,y). - var lt = function (a, b) { return a <= b; }; - var gt = function (a, b) { return a >= b; }; - var capmin = function (a, b) { return Math.min(a, b); }; - var capmax = function (a, b) { return Math.max(a, b); }; - - var checkX = { thereYet: gt, cap: capmin }; - var checkY = { thereYet: gt, cap: capmin }; - - if (fromY - toY > 0) { - checkY.thereYet = lt; - checkY.cap = capmax; - } - if (fromX - toX > 0) { - checkX.thereYet = lt; - checkX.cap = capmax; - } - - this.moveTo(fromX, fromY); - var offsetX = fromX; - var offsetY = fromY; - var idx = 0, dash = true; - while (!(checkX.thereYet(offsetX, toX) && checkY.thereYet(offsetY, toY))) { - var ang = Math.atan2(toY - fromY, toX - fromX); - var len = pattern[idx]; - - offsetX = checkX.cap(toX, offsetX + (Math.cos(ang) * len)); - offsetY = checkY.cap(toY, offsetY + (Math.sin(ang) * len)); - - if (dash) this.lineTo(offsetX, offsetY); - else this.moveTo(offsetX, offsetY); - - idx = (idx + 1) % pattern.length; - dash = !dash; - } - }; - + try { + if (CanvasRenderingContext2D) + CanvasRenderingContext2D.prototype.dashedLineTo = function(fromX, fromY, toX, toY, pattern) { + // Our growth rate for our line can be one of the following: + // (+,+), (+,-), (-,+), (-,-) + // Because of this, our algorithm needs to understand if the x-coord and + // y-coord should be getting smaller or larger and properly cap the values + // based on (x,y). + var lt = function (a, b) { return a <= b; }; + var gt = function (a, b) { return a >= b; }; + var capmin = function (a, b) { return Math.min(a, b); }; + var capmax = function (a, b) { return Math.max(a, b); }; + + var checkX = { thereYet: gt, cap: capmin }; + var checkY = { thereYet: gt, cap: capmin }; + + if (fromY - toY > 0) { + checkY.thereYet = lt; + checkY.cap = capmax; + } + if (fromX - toX > 0) { + checkX.thereYet = lt; + checkX.cap = capmax; + } + + this.moveTo(fromX, fromY); + var offsetX = fromX; + var offsetY = fromY; + var idx = 0, dash = true; + while (!(checkX.thereYet(offsetX, toX) && checkY.thereYet(offsetY, toY))) { + var ang = Math.atan2(toY - fromY, toX - fromX); + var len = pattern[idx]; + + offsetX = checkX.cap(toX, offsetX + (Math.cos(ang) * len)); + offsetY = checkY.cap(toY, offsetY + (Math.sin(ang) * len)); + + if (dash) this.lineTo(offsetX, offsetY); + else this.moveTo(offsetX, offsetY); + + idx = (idx + 1) % pattern.length; + dash = !dash; + } + }; + } + catch (err) { //noop + } // given a range of values, return a new range [vmin',vmax'] where the limits // have been chosen "nicely". Taken from matplotlib.ticker.LinearLocator function view_limits(vmin,vmax) { From 1bf548af2859bf784e47435d1d26ba216c8464a0 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Wed, 31 Oct 2012 17:41:46 -0400 Subject: [PATCH 112/308] basic parsing for problem and rubric --- .../xmodule/xmodule/self_assessment_module.py | 563 +++++------------- 1 file changed, 145 insertions(+), 418 deletions(-) diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index 0c31a48b1e..ad42090eea 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -1,28 +1,26 @@ -import cgi -import datetime -import dateutil -import dateutil.parser -import json +import copy +from fs.errors import ResourceNotFoundError import logging -import traceback -import re +import os import sys - -from datetime import timedelta from lxml import etree from lxml.html import rewrite_links -from pkg_resources import resource_string +from path import path -from capa.capa_problem import LoncapaProblem -from capa.responsetypes import StudentInputError -from capa.util import convert_files_to_filenames -from progress import Progress -from xmodule.x_module import XModule -from xmodule.raw_module import RawDescriptor -from xmodule.exceptions import NotFoundError +from .x_module import XModule +from pkg_resources import resource_string +from .xml_module import XmlDescriptor, name_to_pathname +from .editing_module import EditingDescriptor +from .stringify import stringify_children +from .html_checker import check_html +from xmodule.modulestore import Location + +from xmodule.contentstore.content import XASSET_SRCREF_PREFIX, StaticContent log = logging.getLogger("mitx.courseware") + + def only_one(lst, default="", process=lambda x: x): """ If lst is empty, returns default @@ -54,426 +52,155 @@ class SelfAssessmentModule(XModule): XModule.__init__(self, system, location, definition, descriptor, instance_state, shared_state, **kwargs) - dom2 = etree.fromstring(definition['data']) + dom2=etree.fromstring("" + self.definition['data'] + "") + rubric=''.join([etree.tostring(child) for child in only_one(dom2.xpath('rubric'))]) + problem=''.join([etree.tostring(child) for child in only_one(dom2.xpath('problem'))]) - self.attempts = 0 - self.max_attempts = 1 + #print(etree.tostring(rubric)) + #print(etree.tostring(problem)) - self.max_attempts = self.metadata.get('attempts', None) + self.html = etree.tostring(problem) - if self.max_attempts is not None: - self.max_attempts = int(self.max_attempts) + #self.html=self.definition['data'] - if instance_state is not None: - instance_state = json.loads(instance_state) - if instance_state is not None and 'attempts' in instance_state: - self.attempts = instance_state['attempts'] - self.name = only_one(dom2.xpath('/problem/@name')) - self.rubric=etree.tostring(only_one(dom2.xpath("/rubric/html"))) - self.problem=etree.tostring(only_one(dom2.xpath("/problem"))) - self.lcp = LoncapaProblem(self.problem, self.location.html_id(), - instance_state, seed=self.seed, system=self.system) - def get_instance_state(self): - state = self.lcp.get_state() - state['attempts'] = self.attempts - return json.dumps(state) - - def get_score(self): - return self.lcp.get_score() - - def max_score(self): - return self.lcp.get_max_score() - - def get_progress(self): - ''' For now, just return score / max_score - ''' - d = self.get_score() - score = d['score'] - total = d['total'] - if total > 0: - try: - return Progress(score, total) - except Exception as err: - log.exception("Got bad progress") - return None - return None - - def get_html(self): - return self.system.render_template('problem_ajax.html', { - 'element_id': self.location.html_id(), - 'id': self.id, - 'ajax_url': self.system.ajax_url, - }) - - def get_problem_html(self, encapsulate=True): - '''Return html for the problem. Adds check, reset, save buttons - as necessary based on the problem config and state.''' - - try: - html = self.lcp.get_html() - except Exception, err: - log.exception(err) - - # TODO (vshnayder): another switch on DEBUG. - if self.system.DEBUG: - msg = ( - '[courseware.capa.capa_module] ' - 'Failed to generate HTML for problem %s' % - (self.location.url())) - msg += '

        Error:

        %s

        ' % str(err).replace('<', '<') - msg += '

        %s

        ' % traceback.format_exc().replace('<', '<') - html = msg - else: - # We're in non-debug mode, and possibly even in production. We want - # to avoid bricking of problem as much as possible - - # Presumably, student submission has corrupted LoncapaProblem HTML. - # First, pull down all student answers - student_answers = self.lcp.student_answers - answer_ids = student_answers.keys() - - # Some inputtypes, such as dynamath, have additional "hidden" state that - # is not exposed to the student. Keep those hidden - # TODO: Use regex, e.g. 'dynamath' is suffix at end of answer_id - hidden_state_keywords = ['dynamath'] - for answer_id in answer_ids: - for hidden_state_keyword in hidden_state_keywords: - if answer_id.find(hidden_state_keyword) >= 0: - student_answers.pop(answer_id) - - # Next, generate a fresh LoncapaProblem - self.lcp = LoncapaProblem(self.definition['data'], self.location.html_id(), - state=None, # Tabula rasa - seed=self.seed, system=self.system) - - # Prepend a scary warning to the student - warning = '
        '\ - '

        Warning: The problem has been reset to its initial state!

        '\ - 'The problem\'s state was corrupted by an invalid submission. '\ - 'The submission consisted of:'\ - '
          ' - for student_answer in student_answers.values(): - if student_answer != '': - warning += '
        • ' + cgi.escape(student_answer) + '
        • ' - warning += '
        '\ - 'If this error persists, please contact the course staff.'\ - '
        ' - - html = warning - try: - html += self.lcp.get_html() - except Exception, err: # Couldn't do it. Give up - log.exception(err) - raise - - content = {'name': self.display_name, - 'html': html, - 'weight': self.descriptor.weight, - } - - # We using strings as truthy values, because the terminology of the - # check button is context-specific. - - # Put a "Check" button if unlimited attempts or still some left - if self.max_attempts is None or self.attempts < self.max_attempts-1: - check_button = "Check" - else: - # Will be final check so let user know that - check_button = "Final Check" - - reset_button = True - save_button = True - - # If we're after deadline, or user has exhausted attempts, - # question is read-only. - if self.closed(): - check_button = False - reset_button = False - save_button = False - - # User submitted a problem, and hasn't reset. We don't want - # more submissions. - if self.lcp.done and self.rerandomize == "always": - check_button = False - save_button = False - - # Only show the reset button if pressing it will show different values - if self.rerandomize not in ["always", "onreset"]: - reset_button = False - - # User hasn't submitted an answer yet -- we don't want resets - if not self.lcp.done: - reset_button = False - - # We may not need a "save" button if infinite number of attempts and - # non-randomized. The problem author can force it. It's a bit weird for - # randomization to control this; should perhaps be cleaned up. - if (self.force_save_button == "false") and (self.max_attempts is None and self.rerandomize != "always"): - save_button = False - - context = {'problem': content, - 'id': self.id, - 'check_button': check_button, - 'reset_button': reset_button, - 'save_button': save_button, - 'answer_available': self.answer_available(), - 'ajax_url': self.system.ajax_url, - 'attempts_used': self.attempts, - 'attempts_allowed': self.max_attempts, - 'progress': self.get_progress(), - } - - html = self.system.render_template('problem.html', context) - if encapsulate: - html = '
        '.format( - id=self.location.html_id(), ajax_url=self.system.ajax_url) + html + "
        " - - # cdodge: OK, we have to do two rounds of url reference subsitutions - # one which uses the 'asset library' that is served by the contentstore and the - # more global /static/ filesystem based static content. - # NOTE: rewrite_content_links is defined in XModule - # This is a bit unfortunate and I'm sure we'll try to considate this into - # a one step process. - html = rewrite_links(html, self.rewrite_content_links) - - # now do the substitutions which are filesystem based, e.g. '/static/' prefixes - return self.system.replace_urls(html, self.metadata['data_dir']) - - def handle_ajax(self, dispatch, get): - ''' - This is called by courseware.module_render, to handle an AJAX call. - "get" is request.POST. - - Returns a json dictionary: - { 'progress_changed' : True/False, - 'progress' : 'none'/'in_progress'/'done', - } - ''' - handlers = { - 'problem_get': self.get_problem, - 'problem_check': self.check_problem, - 'problem_save': self.save_problem, - } - - if dispatch not in handlers: - return 'Error' - - before = self.get_progress() - d = handlers[dispatch](get) - after = self.get_progress() - d.update({ - 'progress_changed': after != before, - 'progress_status': Progress.to_js_status_str(after), - }) - return json.dumps(d, cls=ComplexEncoder) - - def closed(self): - ''' Is the student still allowed to submit answers? ''' - if self.attempts == self.max_attempts: - return True - if self.close_date is not None and datetime.datetime.utcnow() > self.close_date: - return True - - return False - - def answer_available(self): - ''' Is the user allowed to see an answer? - ''' - if self.show_answer == '': - return False - - if self.show_answer == "never": - return False - - # Admins can see the answer, unless the problem explicitly prevents it - if self.system.user_is_staff: - return True - - if self.show_answer == 'attempted': - return self.attempts > 0 - - if self.show_answer == 'answered': - return self.lcp.done - - if self.show_answer == 'closed': - return self.closed() - - if self.show_answer == 'always': - return True - - return False - - # Figure out if we should move these to capa_problem? - def get_problem(self, get): - ''' Return results of get_problem_html, as a simple dict for json-ing. - { 'html': } - - Used if we want to reconfirm we have the right thing e.g. after - several AJAX calls. - ''' - return {'html': self.get_problem_html(encapsulate=False)} - - @staticmethod - def make_dict_of_responses(get): - ''' - Make dictionary of student responses (aka "answers") - get is POST dictionary. - ''' - answers = dict() - for key in get: - # e.g. input_resistor_1 ==> resistor_1 - _, _, name = key.partition('_') - - # This allows for answers which require more than one value for - # the same form input (e.g. checkbox inputs). The convention is that - # if the name ends with '[]' (which looks like an array), then the - # answer will be an array. - if not name.endswith('[]'): - answers[name] = get[key] - else: - name = name[:-2] - answers[name] = get.getlist(key) - - return answers - - def check_problem(self, get): - ''' Checks whether answers to a problem are correct, and - returns a map of correct/incorrect answers: - - {'success' : bool, - 'contents' : html} - ''' - event_info = dict() - event_info['state'] = self.lcp.get_state() - event_info['problem_id'] = self.location.url() - - answers = self.make_dict_of_responses(get) - event_info['answers'] = convert_files_to_filenames(answers) - - parsed_answer="incorrect" - if(answer[answers.keys()[1]]=="Correct"): - parsed_answer="correct" - - # Too late. Cannot submit - if self.closed(): - event_info['failure'] = 'closed' - self.system.track_function('save_problem_check_fail', event_info) - raise NotFoundError('Problem is closed') - - try: - old_state = self.lcp.get_state() - lcp_id = self.lcp.problem_id - correct_map = self.lcp.grade_answers(answers) - correct_map.set(correctness=parsed_answer) - except StudentInputError as inst: - # TODO (vshnayder): why is this line here? - #self.lcp = LoncapaProblem(self.definition['data'], - # id=lcp_id, state=old_state, system=self.system) - log.exception("StudentInputError in capa_module:problem_check") - return {'success': inst.message} - except Exception, err: - # TODO: why is this line here? - #self.lcp = LoncapaProblem(self.definition['data'], - # id=lcp_id, state=old_state, system=self.system) - if self.system.DEBUG: - msg = "Error checking problem: " + str(err) - msg += '\nTraceback:\n' + traceback.format_exc() - return {'success': msg} - log.exception("Error in capa_module problem checking") - raise Exception("error in capa_module") - - self.attempts = self.attempts + 1 - self.lcp.done = True - - # success = correct if ALL questions in this problem are correct - success = 'correct' - for answer_id in correct_map: - if not correct_map.is_correct(answer_id): - success = 'incorrect' - - # NOTE: We are logging both full grading and queued-grading submissions. In the latter, - # 'success' will always be incorrect - event_info['correct_map'] = correct_map.get_dict() - event_info['success'] = success - event_info['attempts'] = self.attempts - self.system.track_function('save_problem_check', event_info) - - # render problem into HTML - html = self.get_problem_html(encapsulate=False) - - return {'success': success, - 'contents': html, - } - - def save_problem(self, get): - ''' - Save the passed in answers. - Returns a dict { 'success' : bool, ['error' : error-msg]}, - with the error key only present if success is False. - ''' - event_info = dict() - event_info['state'] = self.lcp.get_state() - event_info['problem_id'] = self.location.url() - - answers = self.make_dict_of_responses(get) - event_info['answers'] = answers - - # Too late. Cannot submit - if self.closed(): - event_info['failure'] = 'closed' - self.system.track_function('save_problem_fail', event_info) - return {'success': False, - 'error': "Problem is closed"} - - # Problem submitted. Student should reset before saving - # again. - if self.lcp.done and self.rerandomize == "always": - event_info['failure'] = 'done' - self.system.track_function('save_problem_fail', event_info) - return {'success': False, - 'error': "Problem needs to be reset prior to save."} - - self.lcp.student_answers = answers - - # TODO: should this be save_problem_fail? Looks like success to me... - self.system.track_function('save_problem_fail', event_info) - return {'success': True} - - -class SelfAssessmentDescriptor(RawDescriptor): +class SelfAssessmentDescriptor(XmlDescriptor, EditingDescriptor): """ Module for putting raw html in a course """ + mako_template = "widgets/html-edit.html" module_class = SelfAssessmentModule + filename_extension = "xml" stores_state = True has_score = True - template_dir_name = 'problem' + template_dir_name = "html" - # Capa modules have some additional metadata: - # TODO (vshnayder): do problems have any other metadata? Do they - # actually use type and points? - metadata_attributes = RawDescriptor.metadata_attributes + ('type', 'points') - # VS[compat] - # TODO (cpennington): Delete this method once all fall 2012 course are being - # edited in the cms + + js = {'coffee': [resource_string(__name__, 'js/src/html/edit.coffee')]} + js_module_name = "HTMLEditingDescriptor" + + # VS[compat] TODO (cpennington): Delete this method once all fall 2012 course + # are being edited in the cms @classmethod def backcompat_paths(cls, path): - return [ - 'problem/' + path[8:], - path[8:], - ] + if path.endswith('.html.xml'): + path = path[:-9] + '.html' # backcompat--look for html instead of xml + if path.endswith('.html.html'): + path = path[:-5] # some people like to include .html in filenames.. + candidates = [] + while os.sep in path: + candidates.append(path) + _, _, path = path.partition(os.sep) - def __init__(self, *args, **kwargs): - super(CapaDescriptor, self).__init__(*args, **kwargs) + # also look for .html versions instead of .xml + nc = [] + for candidate in candidates: + if candidate.endswith('.xml'): + nc.append(candidate[:-4] + '.html') + return candidates + nc - weight_string = self.metadata.get('weight', None) - if weight_string: - self.weight = float(weight_string) + # NOTE: html descriptors are special. We do not want to parse and + # export them ourselves, because that can break things (e.g. lxml + # adds body tags when it exports, but they should just be html + # snippets that will be included in the middle of pages. + + @classmethod + def load_definition(cls, xml_object, system, location): + '''Load a descriptor from the specified xml_object: + + If there is a filename attribute, load it as a string, and + log a warning if it is not parseable by etree.HTMLParser. + + If there is not a filename attribute, the definition is the body + of the xml_object, without the root tag (do not want in the + middle of a page) + ''' + filename = xml_object.get('filename') + if filename is None: + definition_xml = copy.deepcopy(xml_object) + cls.clean_metadata_from_xml(definition_xml) + return {'data': stringify_children(definition_xml)} else: - self.weight = None \ No newline at end of file + # html is special. cls.filename_extension is 'xml', but + # if 'filename' is in the definition, that means to load + # from .html + # 'filename' in html pointers is a relative path + # (not same as 'html/blah.html' when the pointer is in a directory itself) + pointer_path = "{category}/{url_path}".format(category='html', + url_path=name_to_pathname(location.name)) + base = path(pointer_path).dirname() + #log.debug("base = {0}, base.dirname={1}, filename={2}".format(base, base.dirname(), filename)) + filepath = "{base}/{name}.html".format(base=base, name=filename) + #log.debug("looking for html file for {0} at {1}".format(location, filepath)) + + + + # VS[compat] + # TODO (cpennington): If the file doesn't exist at the right path, + # give the class a chance to fix it up. The file will be written out + # again in the correct format. This should go away once the CMS is + # online and has imported all current (fall 2012) courses from xml + if not system.resources_fs.exists(filepath): + candidates = cls.backcompat_paths(filepath) + #log.debug("candidates = {0}".format(candidates)) + for candidate in candidates: + if system.resources_fs.exists(candidate): + filepath = candidate + break + + try: + with system.resources_fs.open(filepath) as file: + html = file.read() + # Log a warning if we can't parse the file, but don't error + if not check_html(html): + msg = "Couldn't parse html in {0}.".format(filepath) + log.warning(msg) + system.error_tracker("Warning: " + msg) + + definition = {'data': html} + + # TODO (ichuang): remove this after migration + # for Fall 2012 LMS migration: keep filename (and unmangled filename) + definition['filename'] = [ filepath, filename ] + + return definition + + except (ResourceNotFoundError) as err: + msg = 'Unable to load file contents at path {0}: {1} '.format( + filepath, err) + # add more info and re-raise + raise Exception(msg), None, sys.exc_info()[2] + + # TODO (vshnayder): make export put things in the right places. + + def definition_to_xml(self, resource_fs): + '''If the contents are valid xml, write them to filename.xml. Otherwise, + write just to filename.xml, and the html + string to filename.html. + ''' + try: + return etree.fromstring(self.definition['data']) + except etree.XMLSyntaxError: + pass + + # Not proper format. Write html to file, return an empty tag + pathname = name_to_pathname(self.url_name) + pathdir = path(pathname).dirname() + filepath = u'{category}/{pathname}.html'.format(category=self.category, + pathname=pathname) + + resource_fs.makedir(os.path.dirname(filepath), allow_recreate=True) + with resource_fs.open(filepath, 'w') as file: + file.write(self.definition['data']) + + # write out the relative name + relname = path(pathname).basename() + + elt = etree.Element('html') + elt.set("filename", relname) + return elt From 74e6834cca71037669da531b4821e178e36d5e9f Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Wed, 31 Oct 2012 18:05:04 -0400 Subject: [PATCH 113/308] move rubric and problem to forms --- .../xmodule/xmodule/self_assessment_module.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index ad42090eea..854c2cf1f3 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -19,7 +19,12 @@ from xmodule.contentstore.content import XASSET_SRCREF_PREFIX, StaticContent log = logging.getLogger("mitx.courseware") +problem_form=('

        ') +rubric_form=('
        Correct
        ' + '' + 'Incorrect
        ') def only_one(lst, default="", process=lambda x: x): """ @@ -53,15 +58,17 @@ class SelfAssessmentModule(XModule): instance_state, shared_state, **kwargs) dom2=etree.fromstring("" + self.definition['data'] + "") - rubric=''.join([etree.tostring(child) for child in only_one(dom2.xpath('rubric'))]) - problem=''.join([etree.tostring(child) for child in only_one(dom2.xpath('problem'))]) + self.rubric=''.join([etree.tostring(child) for child in only_one(dom2.xpath('rubric'))]) + self.problem=''.join([etree.tostring(child) for child in only_one(dom2.xpath('problem'))]) + + self.problem=''.join([self.problem,problem_form]) + + self.rubric=''.join([self.rubric,rubric_form]) #print(etree.tostring(rubric)) #print(etree.tostring(problem)) - self.html = etree.tostring(problem) - - #self.html=self.definition['data'] + self.html = self.problem From 947e6e6e0138b914f5090a9952ab3317c34254e6 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Wed, 31 Oct 2012 18:11:38 -0400 Subject: [PATCH 114/308] working on ajax calls --- .../js/src/selfassessment/display.coffee | 144 ++---------------- .../xmodule/xmodule/self_assessment_module.py | 28 ++++ 2 files changed, 44 insertions(+), 128 deletions(-) diff --git a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee index 5e16182553..8de2043e3b 100644 --- a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee @@ -11,11 +11,9 @@ class @Problem $(selector, @el) bind: => - problem_prefix = @element_id.replace(/problem_/,'') + problem_prefix = @element_id.replace(/sa_/,'') @inputs = @$("[id^=input_#{problem_prefix}_]") - - @$('section.action input:button').click @refreshAnswers - @$('section.action input.check').click @check + @$('section.action input.show').click @show @$('section.action input.save').click @save @@ -26,7 +24,7 @@ class @Problem @setupInputTypes() @bind() else - $.postWithPrefix "#{@url}/problem_get", (response) => + $.postWithPrefix "#{@url}/sa_get", (response) => @el.html(response.html) JavascriptLoader.executeModuleScripts @el, () => @setupInputTypes() @@ -36,86 +34,21 @@ class @Problem # TODO add hooks for problem types here by inspecting response.html and doing # stuff if a div w a class is found - setupInputTypes: => - @inputtypeDisplays = {} - @el.find(".capa_inputtype").each (index, inputtype) => - classes = $(inputtype).attr('class').split(' ') - id = $(inputtype).attr('id') - for cls in classes - setupMethod = @inputtypeSetupMethods[cls] - if setupMethod? - @inputtypeDisplays[id] = setupMethod(inputtype) - - check: => - Logger.log 'problem_check', @answers - $.postWithPrefix "#{@url}/problem_check", @answers, (response) => - switch response.success - when 'incorrect', 'correct' - @render(response.contents) - @updateProgress response - if @el.hasClass 'showed' - @el.removeClass 'showed' - else - @gentle_alert response.success - - reset: => - Logger.log 'problem_reset', @answers - $.postWithPrefix "#{@url}/problem_reset", id: @id, (response) => - @render(response.html) - @updateProgress response - - # TODO this needs modification to deal with javascript responses; perhaps we - # need something where responsetypes can define their own behavior when show - # is called. show: => - if !@el.hasClass 'showed' - Logger.log 'problem_show', problem: @id - $.postWithPrefix "#{@url}/problem_show", (response) => - answers = response.answers - $.each answers, (key, value) => - if $.isArray(value) - for choice in value - @$("label[for='input_#{key}_#{choice}']").attr correct_answer: 'true' - else - answer = @$("#answer_#{key}, #solution_#{key}") - answer.html(value) - Collapsible.setCollapsibles(answer) + Logger.log 'sa_show', problem: @id + $.postWithPrefix "#{@url}/sa_show", (response) => + answers = response.answers + $.each answers, (key, value) => + if $.isArray(value) + for choice in value + @$("label[for='input_#{key}_#{choice}']").attr correct_answer: 'true' + else + answer = @$("#answer_#{key}, #solution_#{key}") + answer.html(value) + Collapsible.setCollapsibles(answer) - # TODO remove the above once everything is extracted into its own - # inputtype functions. - - @el.find(".capa_inputtype").each (index, inputtype) => - classes = $(inputtype).attr('class').split(' ') - for cls in classes - display = @inputtypeDisplays[$(inputtype).attr('id')] - showMethod = @inputtypeShowAnswerMethods[cls] - showMethod(inputtype, display, answers) if showMethod? - - @el.find('.problem > div').each (index, element) => - MathJax.Hub.Queue ["Typeset", MathJax.Hub, element] - - @$('.show').val 'Hide Answer' - @el.addClass 'showed' - @updateProgress response - else - @$('[id^=answer_], [id^=solution_]').text '' - @$('[correct_answer]').attr correct_answer: null - @el.removeClass 'showed' - @$('.show').val 'Show Answer' - - @el.find(".capa_inputtype").each (index, inputtype) => - display = @inputtypeDisplays[$(inputtype).attr('id')] - classes = $(inputtype).attr('class').split(' ') - for cls in classes - hideMethod = @inputtypeHideAnswerMethods[cls] - hideMethod(inputtype, display) if hideMethod? - - gentle_alert: (msg) => - if @el.find('.capa_alert').length - @el.find('.capa_alert').remove() - alert_elem = "
        " + msg + "
        " - @el.find('.action').after(alert_elem) - @el.find('.capa_alert').css(opacity: 0).animate(opacity: 1, 700) + @$('.show').val 'Hide Answer' + @el.addClass 'showed' save: => Logger.log 'problem_save', @answers @@ -125,51 +58,6 @@ class @Problem @gentle_alert saveMessage @updateProgress response - refreshAnswers: => - @$('input.schematic').each (index, element) -> - element.schematic.update_value() - @$(".CodeMirror").each (index, element) -> - element.CodeMirror.save() if element.CodeMirror.save - @answers = @inputs.serialize() - - inputtypeSetupMethods: - - 'text-input-dynamath': (element) => - ### - Return: function (eqn) -> eqn that preprocesses the user formula input before - it is fed into MathJax. Return 'false' if no preprocessor specified - ### - data = $(element).find('.text-input-dynamath_data') - - preprocessorClassName = data.data('preprocessor') - preprocessorClass = window[preprocessorClassName] - if not preprocessorClass? - return false - else - preprocessor = new preprocessorClass() - return preprocessor.fn - - javascriptinput: (element) => - - data = $(element).find(".javascriptinput_data") - - params = data.data("params") - submission = data.data("submission") - evaluation = data.data("evaluation") - problemState = data.data("problem_state") - displayClass = window[data.data('display_class')] - - if evaluation == '' - evaluation = null - - container = $(element).find(".javascriptinput_container") - submissionField = $(element).find(".javascriptinput_input") - - display = new displayClass(problemState, submission, evaluation, container, submissionField, params) - display.render() - - return display - inputtypeShowAnswerMethods: choicegroup: (element, display, answers) => element = $(element) diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index 854c2cf1f3..9ed088d406 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -70,6 +70,34 @@ class SelfAssessmentModule(XModule): self.html = self.problem + def handle_ajax(self, dispatch, get): + ''' + This is called by courseware.module_render, to handle an AJAX call. + "get" is request.POST. + + Returns a json dictionary: + { 'progress_changed' : True/False, + 'progress' : 'none'/'in_progress'/'done', + } + ''' + handlers = { + 'sa_get' : self.show_problem + 'sa_show': self.show_rubric, + 'sa_save': self.save_problem, + } + + if dispatch not in handlers: + return 'Error' + + before = self.get_progress() + d = handlers[dispatch](get) + after = self.get_progress() + d.update({ + 'progress_changed': after != before, + 'progress_status': Progress.to_js_status_str(after), + }) + return json.dumps(d, cls=ComplexEncoder) + From cf2402aee9dc749c5bf8eb1a2a56185de7d597b7 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Wed, 31 Oct 2012 18:17:12 -0400 Subject: [PATCH 115/308] bugfix: always set queue len --- common/lib/capa/capa/inputtypes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index d47c5a3006..de29b5e664 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -396,7 +396,7 @@ class FileSubmission(InputTypeBase): self.required_files = saxutils.escape(self.required_files, escapedict) # Check if problem has been queued - queue_len = 0 + self.queue_len = 0 # Flag indicating that the problem has been queued, 'msg' is length of queue if self.status == 'incomplete': self.status = 'queued' From 74e23546af9dcad10d162e9491862b78f5310efe Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Wed, 31 Oct 2012 18:40:10 -0400 Subject: [PATCH 116/308] More inputtype refactor - add an Attribute class - input types just need to declare which attributes they want, and how to transform and validate them, and the base class will do all the rest. - change OptionInput to new format. --- common/lib/capa/capa/inputtypes.py | 156 +++++++++++++++++++++++------ 1 file changed, 124 insertions(+), 32 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index de29b5e664..f154569fe4 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -32,8 +32,7 @@ graded status as'status' # makes sense, but a bunch of problems have markup that assumes block. Bigger TODO: figure out a # general css and layout strategy for capa, document it, then implement it. - - +from collections import namedtuple import json import logging from lxml import etree @@ -50,6 +49,58 @@ log = logging.getLogger('mitx.' + __name__) registry = TagRegistry() +class Attribute(object): + """ + Allows specifying required and optional attributes for input types. + """ + + # want to allow default to be None, but also allow required objects + _sentinel = object() + + def __init__(self, name, default=_sentinel, transform=None, validate=None): + """ + Define an attribute + + name (str): then name of the attribute--should be alphanumeric (valid for an XML attribute) + + default (any type): If not specified, this attribute is required. If specified, use this as the default value + if the attribute is not specified. Note that this value will not be transformed or validated. + + transform (function str -> any type): If not None, will be called to transform the parsed value into an internal + representation. + + validate (function str-or-return-type-of-tranform -> unit or exception): If not None, called to validate the + (possibly transformed) value of the attribute. Should raise ValueError with a helpful message if + the value is invalid. + """ + self.name = name + self.default = default + self.validate = validate + self.transform = transform + + def parse_from_xml(self, element): + """ + Given an etree xml element that should have this attribute, do the obvious thing: + - look for it. raise ValueError if not found and required. + - transform and validate. pass through any exceptions from transform or validate. + """ + val = element.get(self.name) + if self.default == self._sentinel and val is None: + raise ValueError('Missing required attribute {0}.'.format(self.name)) + + if val is None: + # not required, so return default + return self.default + + if self.transform is not None: + val = self.transform(val) + + if self.validate is not None: + self.validate(val) + + return val + + class InputTypeBase(object): """ Abstract base class for input types. @@ -102,9 +153,12 @@ class InputTypeBase(object): self.status = state.get('status', 'unanswered') - # Call subclass "constructor" -- means they don't have to worry about calling - # super().__init__, and are isolated from changes to the input constructor interface. try: + # Pre-parse and propcess all the declared requirements. + self.process_requirements() + + # Call subclass "constructor" -- means they don't have to worry about calling + # super().__init__, and are isolated from changes to the input constructor interface. self.setup() except Exception as err: # Something went wrong: add xml to message, but keep the traceback @@ -112,6 +166,32 @@ class InputTypeBase(object): raise Exception, msg, sys.exc_info()[2] + @classmethod + def get_attributes(cls): + """ + Should return a list of Attribute objects (see docstring there for details). Subclasses should override. e.g. + + return super(MyClass, cls).attributes + [Attribute('unicorn', True), + Attribute('num_dragons', 12, transform=int), ...] + """ + return [] + + + def process_requirements(self): + """ + Subclasses can declare lists of required and optional attributes. This + function parses the input xml and pulls out those attributes. This + isolates most simple input types from needing to deal with xml parsing at all. + + Processes attributes, putting the results in the self.loaded_attributes dictionary. + """ + # Use a local dict so that if there are exceptions, we don't end up in a partially-initialized state. + d = {} + for a in self.get_attributes(): + d[a.name] = a.parse_from_xml(self.xml) + + self.loaded_attributes = d + def setup(self): """ InputTypes should override this to do any needed initialization. It is called after the @@ -122,14 +202,28 @@ class InputTypeBase(object): """ pass + def _get_render_context(self): """ - Abstract method. Subclasses should implement to return the dictionary - of keys needed to render their template. + Should return a dictionary of keys needed to render the template for the input type. (Separate from get_html to faciliate testing of logic separately from the rendering) + + The default implementation gets the following rendering context: basic things like value, id, + status, and msg, as well as everything in self.loaded_attributes. + + This means that input types that only parse attributes get everything they need, and don't need + to override this method. """ - raise NotImplementedError + context = { + 'id': self.id, + 'value': self.value, + 'status': self.status, + 'msg': self.msg, + } + context.update(self.loaded_attributes) + return context + def get_html(self): """ @@ -139,7 +233,10 @@ class InputTypeBase(object): raise NotImplementedError("no rendering template specified for class {0}" .format(self.__class__)) - html = self.system.render_template(self.template, self._get_render_context()) + context = self._default_render_context() + context.update(self._get_render_context()) + + html = self.system.render_template(self.template, context) return etree.XML(html) @@ -158,33 +255,28 @@ class OptionInput(InputTypeBase): template = "optioninput.html" tags = ['optioninput'] - def setup(self): - # Extract the options... - options = self.xml.get('options') - if not options: - raise ValueError("optioninput: Missing 'options' specification.") + @classmethod + def get_attributes(cls): + """ + Convert options to a convenient format. + """ - # parse the set of possible options - oset = shlex.shlex(options[1:-1]) - oset.quotes = "'" - oset.whitespace = "," - oset = [x[1:-1] for x in list(oset)] + def parse_options(options): + """Given options string, convert it into an ordered list of (option, option) tuples + (Why? I don't know--that's what the template uses at the moment) + """ + # parse the set of possible options + oset = shlex.shlex(options[1:-1]) + oset.quotes = "'" + oset.whitespace = "," + oset = [x[1:-1] for x in list(oset)] - # make ordered list with (key, value) same - self.osetdict = [(oset[x], oset[x]) for x in range(len(oset))] - # TODO: allow ordering to be randomized + # make ordered list with (key, value) same + return [(oset[x], oset[x]) for x in range(len(oset))] - def _get_render_context(self): - - context = { - 'id': self.id, - 'value': self.value, - 'status': self.status, - 'msg': self.msg, - 'options': self.osetdict, - 'inline': self.xml.get('inline',''), - } - return context + return super(OptionInput, cls).get_attributes() + [ + Attribute('options', transform=parse_options), + Attribute('inline', '')] registry.register(OptionInput) From a91a571fbfbb437f0a0499afec730eff47657357 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Wed, 31 Oct 2012 18:49:58 -0400 Subject: [PATCH 117/308] update javascript --- common/lib/xmodule/xmodule/capa_module.py | 118 +++++++++--------- .../js/src/selfassessment/display.coffee | 101 +++------------ .../xmodule/xmodule/self_assessment_module.py | 42 ++++--- 3 files changed, 106 insertions(+), 155 deletions(-) diff --git a/common/lib/xmodule/xmodule/capa_module.py b/common/lib/xmodule/xmodule/capa_module.py index 76158093b6..46f07796db 100644 --- a/common/lib/xmodule/xmodule/capa_module.py +++ b/common/lib/xmodule/xmodule/capa_module.py @@ -580,76 +580,76 @@ class CapaModule(XModule): 'contents': html, } -def save_problem(self, get): - ''' - Save the passed in answers. - Returns a dict { 'success' : bool, ['error' : error-msg]}, - with the error key only present if success is False. - ''' - event_info = dict() - event_info['state'] = self.lcp.get_state() - event_info['problem_id'] = self.location.url() + def save_problem(self, get): + ''' + Save the passed in answers. + Returns a dict { 'success' : bool, ['error' : error-msg]}, + with the error key only present if success is False. + ''' + event_info = dict() + event_info['state'] = self.lcp.get_state() + event_info['problem_id'] = self.location.url() - answers = self.make_dict_of_responses(get) - event_info['answers'] = answers + answers = self.make_dict_of_responses(get) + event_info['answers'] = answers - # Too late. Cannot submit - if self.closed(): - event_info['failure'] = 'closed' + # Too late. Cannot submit + if self.closed(): + event_info['failure'] = 'closed' + self.system.track_function('save_problem_fail', event_info) + return {'success': False, + 'error': "Problem is closed"} + + # Problem submitted. Student should reset before saving + # again. + if self.lcp.done and self.rerandomize == "always": + event_info['failure'] = 'done' + self.system.track_function('save_problem_fail', event_info) + return {'success': False, + 'error': "Problem needs to be reset prior to save."} + + self.lcp.student_answers = answers + + # TODO: should this be save_problem_fail? Looks like success to me... self.system.track_function('save_problem_fail', event_info) - return {'success': False, - 'error': "Problem is closed"} + return {'success': True} - # Problem submitted. Student should reset before saving - # again. - if self.lcp.done and self.rerandomize == "always": - event_info['failure'] = 'done' - self.system.track_function('save_problem_fail', event_info) - return {'success': False, - 'error': "Problem needs to be reset prior to save."} + def reset_problem(self, get): + ''' Changes problem state to unfinished -- removes student answers, + and causes problem to rerender itself. - self.lcp.student_answers = answers + Returns problem html as { 'html' : html-string }. + ''' + event_info = dict() + event_info['old_state'] = self.lcp.get_state() + event_info['problem_id'] = self.location.url() - # TODO: should this be save_problem_fail? Looks like success to me... - self.system.track_function('save_problem_fail', event_info) - return {'success': True} + if self.closed(): + event_info['failure'] = 'closed' + self.system.track_function('reset_problem_fail', event_info) + return {'success': False, + 'error': "Problem is closed"} -def reset_problem(self, get): - ''' Changes problem state to unfinished -- removes student answers, - and causes problem to rerender itself. + if not self.lcp.done: + event_info['failure'] = 'not_done' + self.system.track_function('reset_problem_fail', event_info) + return {'success': False, + 'error': "Refresh the page and make an attempt before resetting."} - Returns problem html as { 'html' : html-string }. - ''' - event_info = dict() - event_info['old_state'] = self.lcp.get_state() - event_info['problem_id'] = self.location.url() + self.lcp.do_reset() + if self.rerandomize in ["always", "onreset"]: + # reset random number generator seed (note the self.lcp.get_state() + # in next line) + self.lcp.seed = None - if self.closed(): - event_info['failure'] = 'closed' - self.system.track_function('reset_problem_fail', event_info) - return {'success': False, - 'error': "Problem is closed"} + self.lcp = LoncapaProblem(self.definition['data'], + self.location.html_id(), self.lcp.get_state(), + system=self.system) - if not self.lcp.done: - event_info['failure'] = 'not_done' - self.system.track_function('reset_problem_fail', event_info) - return {'success': False, - 'error': "Refresh the page and make an attempt before resetting."} + event_info['new_state'] = self.lcp.get_state() + self.system.track_function('reset_problem', event_info) - self.lcp.do_reset() - if self.rerandomize in ["always", "onreset"]: - # reset random number generator seed (note the self.lcp.get_state() - # in next line) - self.lcp.seed = None - - self.lcp = LoncapaProblem(self.definition['data'], - self.location.html_id(), self.lcp.get_state(), - system=self.system) - - event_info['new_state'] = self.lcp.get_state() - self.system.track_function('reset_problem', event_info) - - return {'html': self.get_problem_html(encapsulate=False)} + return {'html': self.get_problem_html(encapsulate=False)} class CapaDescriptor(RawDescriptor): diff --git a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee index 8de2043e3b..aabe0cc0e5 100644 --- a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee @@ -1,84 +1,21 @@ -class @Problem +show: => + Logger.log 'sa_show', problem: @id + $.postWithPrefix "#{@url}/sa_show", (response) => + answers = response.answers + $.each answers, (key, value) => + if $.isArray(value) + for choice in value + @$("label[for='input_#{key}_#{choice}']").attr correct_answer: 'true' + else + answer = @$("#answer_#{key}, #solution_#{key}") + answer.html(value) + Collapsible.setCollapsibles(answer) - constructor: (element) -> - @el = $(element).find('.problems-wrapper') - @id = @el.data('problem-id') - @element_id = @el.attr('id') - @url = @el.data('url') - @render() + @$('.show').val 'Hide Answer' + @el.addClass 'showed' - $: (selector) -> - $(selector, @el) - - bind: => - problem_prefix = @element_id.replace(/sa_/,'') - @inputs = @$("[id^=input_#{problem_prefix}_]") - - @$('section.action input.show').click @show - @$('section.action input.save').click @save - - render: (content) -> - if content - @el.html(content) - JavascriptLoader.executeModuleScripts @el, () => - @setupInputTypes() - @bind() - else - $.postWithPrefix "#{@url}/sa_get", (response) => - @el.html(response.html) - JavascriptLoader.executeModuleScripts @el, () => - @setupInputTypes() - @bind() - - - # TODO add hooks for problem types here by inspecting response.html and doing - # stuff if a div w a class is found - - show: => - Logger.log 'sa_show', problem: @id - $.postWithPrefix "#{@url}/sa_show", (response) => - answers = response.answers - $.each answers, (key, value) => - if $.isArray(value) - for choice in value - @$("label[for='input_#{key}_#{choice}']").attr correct_answer: 'true' - else - answer = @$("#answer_#{key}, #solution_#{key}") - answer.html(value) - Collapsible.setCollapsibles(answer) - - @$('.show').val 'Hide Answer' - @el.addClass 'showed' - - save: => - Logger.log 'problem_save', @answers - $.postWithPrefix "#{@url}/problem_save", @answers, (response) => - if response.success - saveMessage = "Your answers have been saved but not graded. Hit 'Check' to grade them." - @gentle_alert saveMessage - @updateProgress response - - inputtypeShowAnswerMethods: - choicegroup: (element, display, answers) => - element = $(element) - - element.find('input').attr('disabled', 'disabled') - - input_id = element.attr('id').replace(/inputtype_/,'') - answer = answers[input_id] - for choice in answer - element.find("label[for='input_#{input_id}_#{choice}']").addClass 'choicegroup_correct' - - javascriptinput: (element, display, answers) => - answer_id = $(element).attr('id').split("_")[1...].join("_") - answer = JSON.parse(answers[answer_id]) - display.showAnswer(answer) - - inputtypeHideAnswerMethods: - choicegroup: (element, display) => - element = $(element) - element.find('input').attr('disabled', null) - element.find('label').removeClass('choicegroup_correct') - - javascriptinput: (element, display) => - display.hideAnswer() +save: => + Logger.log 'sa_save', @answers + $.postWithPrefix "#{@url}/sa_save", @answers, (response) => + if response.success + @$('p.rubric').replace(response.rubric) diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index 9ed088d406..41ac6a4f7b 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -19,12 +19,12 @@ from xmodule.contentstore.content import XASSET_SRCREF_PREFIX, StaticContent log = logging.getLogger("mitx.courseware") -problem_form=('

        ') +problem_form=('

        ') -rubric_form=('
        Correct
        ' +rubric_form=('Correct
        ' '' - 'Incorrect
        ') + 'Incorrect') def only_one(lst, default="", process=lambda x: x): """ @@ -46,7 +46,7 @@ class SelfAssessmentModule(XModule): resource_string(__name__, 'js/src/selfassessment/display.coffee') ] } - js_module_name = "SelfAssessmentModule" + js_module_name = "SelfAssessment" def get_html(self): # cdodge: perform link substitutions for any references to course static content (e.g. images) @@ -71,17 +71,18 @@ class SelfAssessmentModule(XModule): self.html = self.problem def handle_ajax(self, dispatch, get): - ''' - This is called by courseware.module_render, to handle an AJAX call. - "get" is request.POST. + ''' + This is called by courseware.module_render, to handle an AJAX call. + "get" is request.POST. + + Returns a json dictionary: + { 'progress_changed' : True/False, + 'progress' : 'none'/'in_progress'/'done', + } + ''' - Returns a json dictionary: - { 'progress_changed' : True/False, - 'progress' : 'none'/'in_progress'/'done', - } - ''' handlers = { - 'sa_get' : self.show_problem + 'sa_get' : self.show_problem, 'sa_show': self.show_rubric, 'sa_save': self.save_problem, } @@ -98,6 +99,19 @@ class SelfAssessmentModule(XModule): }) return json.dumps(d, cls=ComplexEncoder) + def save_problem(self, get): + ''' + Save the passed in answers. + Returns a dict { 'success' : bool, ['error' : error-msg]}, + with the error key only present if success is False. + ''' + event_info = dict() + event_info['state'] = self.lcp.get_state() + event_info['problem_id'] = self.location.url() + + return {'success': True, 'rubric' : self.rubric} + + From 75adeed063866dd66fd9eb3bc1bea20ce21a2e0b Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Wed, 31 Oct 2012 20:04:21 -0400 Subject: [PATCH 118/308] changing coffee file --- .../js/src/selfassessment/display.coffee | 163 ++++++++++++++++-- .../xmodule/js/src/selfassessment/display.js | 20 +++ .../xmodule/xmodule/self_assessment_module.py | 8 +- 3 files changed, 169 insertions(+), 22 deletions(-) create mode 100644 common/lib/xmodule/xmodule/js/src/selfassessment/display.js diff --git a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee index aabe0cc0e5..91582642b8 100644 --- a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee @@ -1,21 +1,148 @@ -show: => - Logger.log 'sa_show', problem: @id - $.postWithPrefix "#{@url}/sa_show", (response) => - answers = response.answers - $.each answers, (key, value) => - if $.isArray(value) - for choice in value - @$("label[for='input_#{key}_#{choice}']").attr correct_answer: 'true' +class @SelfAssessment + + constructor: (element) -> + @el = $(element).find('.sa-wrapper') + @id = @el.data('sa-id') + @element_id = @el.attr('id') + @url = @el.data('url') + @render() + + $: (selector) -> + $(selector, @el) + + bind: => + + window.update_schematics() + + problem_prefix = @element_id.replace(/sa_/,'') + @inputs = @$("[id^=input_#{problem_prefix}_]") + + @$('input:button').click @refreshAnswers + #@$('section.action input.check').click @check + @$('input.show').click @show + @$('input.save').click @save + + # Collapsibles + Collapsible.setCollapsibles(@el) + + # Dynamath + @$('input.math').keyup(@refreshMath) + @$('input.math').each (index, element) => + MathJax.Hub.Queue [@refreshMath, null, element] + + updateProgress: (response) => + if response.progress_changed + @el.attr progress: response.progress_status + @el.trigger('progressChanged') + + show: => + $.postWithPrefix "#{@url}/sa_show", (response) => + answers = response.answers + @el.addClass 'showed' + + save: => + $.postWithPrefix "/sa_save", @answers, (response) => + if response.success + @$('p.rubric').replace(response.rubric) + + render: (content) -> + if content + @el.html(content) + JavascriptLoader.executeModuleScripts @el, () => + @setupInputTypes() + @bind() + else + $.postWithPrefix "#{@url}/problem_get", (response) => + @el.html(response.html) + JavascriptLoader.executeModuleScripts @el, () => + @setupInputTypes() + @bind() + + setupInputTypes: => + @inputtypeDisplays = {} + @el.find(".capa_inputtype").each (index, inputtype) => + classes = $(inputtype).attr('class').split(' ') + id = $(inputtype).attr('id') + for cls in classes + setupMethod = @inputtypeSetupMethods[cls] + if setupMethod? + @inputtypeDisplays[id] = setupMethod(inputtype) + + gentle_alert: (msg) => + if @el.find('.capa_alert').length + @el.find('.capa_alert').remove() + alert_elem = "
        " + msg + "
        " + @el.find('.action').after(alert_elem) + @el.find('.capa_alert').css(opacity: 0).animate(opacity: 1, 700) + + refreshAnswers: => + @$('input.schematic').each (index, element) -> + element.schematic.update_value() + @$(".CodeMirror").each (index, element) -> + element.CodeMirror.save() if element.CodeMirror.save + @answers = @inputs.serialize() + + inputtypeSetupMethods: + + 'text-input-dynamath': (element) => + ### + Return: function (eqn) -> eqn that preprocesses the user formula input before + it is fed into MathJax. Return 'false' if no preprocessor specified + ### + data = $(element).find('.text-input-dynamath_data') + + preprocessorClassName = data.data('preprocessor') + preprocessorClass = window[preprocessorClassName] + if not preprocessorClass? + return false else - answer = @$("#answer_#{key}, #solution_#{key}") - answer.html(value) - Collapsible.setCollapsibles(answer) + preprocessor = new preprocessorClass() + return preprocessor.fn + + javascriptinput: (element) => + + data = $(element).find(".javascriptinput_data") + + params = data.data("params") + submission = data.data("submission") + evaluation = data.data("evaluation") + problemState = data.data("problem_state") + displayClass = window[data.data('display_class')] + + if evaluation == '' + evaluation = null + + container = $(element).find(".javascriptinput_container") + submissionField = $(element).find(".javascriptinput_input") + + display = new displayClass(problemState, submission, evaluation, container, submissionField, params) + display.render() + + return display + + inputtypeShowAnswerMethods: + choicegroup: (element, display, answers) => + element = $(element) + + element.find('input').attr('disabled', 'disabled') + + input_id = element.attr('id').replace(/inputtype_/,'') + answer = answers[input_id] + for choice in answer + element.find("label[for='input_#{input_id}_#{choice}']").addClass 'choicegroup_correct' + + javascriptinput: (element, display, answers) => + answer_id = $(element).attr('id').split("_")[1...].join("_") + answer = JSON.parse(answers[answer_id]) + display.showAnswer(answer) + + inputtypeHideAnswerMethods: + choicegroup: (element, display) => + element = $(element) + element.find('input').attr('disabled', null) + element.find('label').removeClass('choicegroup_correct') + + javascriptinput: (element, display) => + display.hideAnswer() - @$('.show').val 'Hide Answer' - @el.addClass 'showed' -save: => - Logger.log 'sa_save', @answers - $.postWithPrefix "#{@url}/sa_save", @answers, (response) => - if response.success - @$('p.rubric').replace(response.rubric) diff --git a/common/lib/xmodule/xmodule/js/src/selfassessment/display.js b/common/lib/xmodule/xmodule/js/src/selfassessment/display.js new file mode 100644 index 0000000000..e3b92cbff5 --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/selfassessment/display.js @@ -0,0 +1,20 @@ + + show: function() { + Logger.log('sa_show', { + problem: _this.id + }); + return $.postWithPrefix("" + _this.url + "/sa_show", function(response) { + var answers; + answers = response.answers; + return _this.el.addClass('showed'); + }); + } + + save: function() { + Logger.log('sa_save', _this.answers); + return $.postWithPrefix("" + _this.url + "/sa_save", _this.answers, function(response) { + if (response.success) { + return _this.$('p.rubric').replace(response.rubric); + } + }); + } diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index 41ac6a4f7b..56ac0d7911 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -19,12 +19,12 @@ from xmodule.contentstore.content import XASSET_SRCREF_PREFIX, StaticContent log = logging.getLogger("mitx.courseware") -problem_form=('

        ') +problem_form=('

        ') -rubric_form=('
        Correct
        ' +rubric_form=('
        Correct
        ' '' - 'Incorrect') + 'Incorrect
        ') def only_one(lst, default="", process=lambda x: x): """ From 17528906abd84e0bdb8aac10f0da3f7e55d92b2a Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Wed, 31 Oct 2012 22:16:11 -0400 Subject: [PATCH 119/308] make sure paths are path() objects rather than strings so that the '/' operator works as expected. Also some path cleanup and remove duplicate computation --- .../xmodule/modulestore/xml_importer.py | 33 +++++++------------ 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/common/lib/xmodule/xmodule/modulestore/xml_importer.py b/common/lib/xmodule/xmodule/modulestore/xml_importer.py index 2677efdb98..00ddb6a948 100644 --- a/common/lib/xmodule/xmodule/modulestore/xml_importer.py +++ b/common/lib/xmodule/xmodule/modulestore/xml_importer.py @@ -2,6 +2,7 @@ import logging import os import mimetypes from lxml.html import rewrite_links as lxml_rewrite_links +from path import path from .xml import XMLModuleStore from .exceptions import DuplicateItemError @@ -10,27 +11,12 @@ from xmodule.contentstore.content import StaticContent, XASSET_SRCREF_PREFIX log = logging.getLogger(__name__) -def import_static_content(modules, data_dir, static_content_store, target_location_namespace): +def import_static_content(modules, course_loc, course_data_path, static_content_store, target_location_namespace): remap_dict = {} - - course_data_dir = None - course_loc = None - - # quick scan to find the course module and pull out the data_dir and location - # maybe there an easier way to look this up?!? - - for module in modules.itervalues(): - if module.category == 'course': - course_loc = module.location - course_data_dir = module.metadata['data_dir'] - - if course_data_dir is None or course_loc is None: - return remap_dict - # now import all static assets - static_dir = '{0}/static/'.format(data_dir / course_data_dir) + static_dir = course_data_path / 'static' for dirname, dirnames, filenames in os.walk(static_dir): for filename in filenames: @@ -130,13 +116,16 @@ def import_from_xml(store, data_dir, course_dirs=None, course_items = [] for course_id in module_store.modules.keys(): - course_data_dir = None + course_data_path = None + course_location = None + # Quick scan to get course Location as well as the course_data_path for module in module_store.modules[course_id].itervalues(): if module.category == 'course': - course_data_dir = module.metadata['data_dir'] + course_data_path = path(data_dir) / module.metadata['data_dir'] + course_location = module.location if static_content_store is not None: - import_static_content(module_store.modules[course_id], data_dir, static_content_store, + import_static_content(module_store.modules[course_id], course_location, course_data_path, static_content_store, target_location_namespace if target_location_namespace is not None else module_store.modules[course_id].location) for module in module_store.modules[course_id].itervalues(): @@ -172,7 +161,7 @@ def import_from_xml(store, data_dir, course_dirs=None, # a bit of a hack, but typically the "course image" which is shown on marketing pages is hard coded to /images/course_image.jpg # so let's make sure we import in case there are no other references to it in the modules - verify_content_links(module, data_dir / course_data_dir, static_content_store, '/static/images/course_image.jpg') + verify_content_links(module, course_data_path, static_content_store, '/static/images/course_image.jpg') course_items.append(module) @@ -192,7 +181,7 @@ def import_from_xml(store, data_dir, course_dirs=None, # Note the dropped element closing tag. This causes the LMS to fail when rendering modules - that's # no good, so we have to do this kludge if isinstance(module_data, str) or isinstance(module_data, unicode): # some module 'data' fields are non strings which blows up the link traversal code - lxml_rewrite_links(module_data, lambda link: verify_content_links(module, data_dir / course_data_dir, + lxml_rewrite_links(module_data, lambda link: verify_content_links(module, course_data_path, static_content_store, link, remap_dict)) for key in remap_dict.keys(): From 7fcf02a0cc91e12e3889844e233c9b4b0ff26b8b Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Wed, 31 Oct 2012 23:40:19 -0400 Subject: [PATCH 120/308] Further refactor - small Attribute and InputTypeBase interface changes to make things cleaner - move html quoting into templates (use ${blah | h} syntax) - converting input types to use new format. --- common/lib/capa/capa/inputtypes.py | 230 +++++++++--------- .../capa/capa/templates/filesubmission.html | 2 +- .../capa/capa/templates/javascriptinput.html | 2 +- common/lib/capa/capa/templates/textline.html | 2 +- common/lib/capa/capa/tests/test_inputtypes.py | 28 ++- 5 files changed, 144 insertions(+), 120 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index f154569fe4..bd3642220f 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -57,7 +57,7 @@ class Attribute(object): # want to allow default to be None, but also allow required objects _sentinel = object() - def __init__(self, name, default=_sentinel, transform=None, validate=None): + def __init__(self, name, default=_sentinel, transform=None, validate=None, render=True): """ Define an attribute @@ -72,11 +72,14 @@ class Attribute(object): validate (function str-or-return-type-of-tranform -> unit or exception): If not None, called to validate the (possibly transformed) value of the attribute. Should raise ValueError with a helpful message if the value is invalid. + + render (bool): if False, don't include this attribute in the template context. """ self.name = name self.default = default self.validate = validate self.transform = transform + self.render = render def parse_from_xml(self, element): """ @@ -171,8 +174,7 @@ class InputTypeBase(object): """ Should return a list of Attribute objects (see docstring there for details). Subclasses should override. e.g. - return super(MyClass, cls).attributes + [Attribute('unicorn', True), - Attribute('num_dragons', 12, transform=int), ...] + return [Attribute('unicorn', True), Attribute('num_dragons', 12, transform=int), ...] """ return [] @@ -183,14 +185,19 @@ class InputTypeBase(object): function parses the input xml and pulls out those attributes. This isolates most simple input types from needing to deal with xml parsing at all. - Processes attributes, putting the results in the self.loaded_attributes dictionary. + Processes attributes, putting the results in the self.loaded_attributes dictionary. Also creates a set + self.to_render, containing the names of attributes that should be included in the context by default. """ - # Use a local dict so that if there are exceptions, we don't end up in a partially-initialized state. - d = {} + # Use local dicts and sets so that if there are exceptions, we don't end up in a partially-initialized state. + loaded = {} + to_render = set() for a in self.get_attributes(): - d[a.name] = a.parse_from_xml(self.xml) + loaded[a.name] = a.parse_from_xml(self.xml) + if a.render: + to_render.add(a.name) - self.loaded_attributes = d + self.loaded_attributes = loaded + self.to_render = to_render def setup(self): """ @@ -209,11 +216,11 @@ class InputTypeBase(object): (Separate from get_html to faciliate testing of logic separately from the rendering) - The default implementation gets the following rendering context: basic things like value, id, - status, and msg, as well as everything in self.loaded_attributes. + The default implementation gets the following rendering context: basic things like value, id, status, and msg, + as well as everything in self.loaded_attributes, and everything returned by self._extra_context(). - This means that input types that only parse attributes get everything they need, and don't need - to override this method. + This means that input types that only parse attributes and pass them to the template get everything they need, + and don't need to override this method. """ context = { 'id': self.id, @@ -221,9 +228,17 @@ class InputTypeBase(object): 'status': self.status, 'msg': self.msg, } - context.update(self.loaded_attributes) + context.update((a, v) for (a, v) in self.loaded_attributes.iteritems() if a in self.to_render) + context.update(self._extra_context()) return context + def _extra_context(self): + """ + Subclasses can override this to return extra context that should be passed to their templates for rendering. + + This is useful when the input type requires computing new template variables from the parsed attributes. + """ + return {} def get_html(self): """ @@ -233,8 +248,7 @@ class InputTypeBase(object): raise NotImplementedError("no rendering template specified for class {0}" .format(self.__class__)) - context = self._default_render_context() - context.update(self._get_render_context()) + context = self._get_render_context() html = self.system.render_template(self.template, context) return etree.XML(html) @@ -255,28 +269,32 @@ class OptionInput(InputTypeBase): template = "optioninput.html" tags = ['optioninput'] + @staticmethod + def parse_options(options): + """ + Given options string, convert it into an ordered list of (option_id, option_description) tuples, where + id==description for now. TODO: make it possible to specify different id and descriptions. + """ + # parse the set of possible options + lexer = shlex.shlex(options[1:-1]) + lexer.quotes = "'" + # Allow options to be separated by whitespace as well as commas + lexer.whitespace = ", " + + # remove quotes + tokens = [x[1:-1] for x in list(lexer)] + + # make list of (option_id, option_description), with description=id + return [(t, t) for t in tokens] + + @classmethod def get_attributes(cls): """ Convert options to a convenient format. """ - - def parse_options(options): - """Given options string, convert it into an ordered list of (option, option) tuples - (Why? I don't know--that's what the template uses at the moment) - """ - # parse the set of possible options - oset = shlex.shlex(options[1:-1]) - oset.quotes = "'" - oset.whitespace = "," - oset = [x[1:-1] for x in list(oset)] - - # make ordered list with (key, value) same - return [(oset[x], oset[x]) for x in range(len(oset))] - - return super(OptionInput, cls).get_attributes() + [ - Attribute('options', transform=parse_options), - Attribute('inline', '')] + return [Attribute('options', transform=cls.parse_options), + Attribute('inline', '')] registry.register(OptionInput) @@ -315,26 +333,22 @@ class ChoiceGroup(InputTypeBase): # value. (VS: would be nice to make this less hackish). if self.tag == 'choicegroup': self.suffix = '' - self.element_type = "radio" + self.html_input_type = "radio" elif self.tag == 'radiogroup': - self.element_type = "radio" + self.html_input_type = "radio" self.suffix = '[]' elif self.tag == 'checkboxgroup': - self.element_type = "checkbox" + self.html_input_type = "checkbox" self.suffix = '[]' else: raise Exception("ChoiceGroup: unexpected tag {0}".format(self.tag)) self.choices = extract_choices(self.xml) - def _get_render_context(self): - context = {'id': self.id, - 'value': self.value, - 'status': self.status, - 'input_type': self.element_type, - 'choices': self.choices, - 'name_array_suffix': self.suffix} - return context + def _extra_context(self): + return {'input_type': self.html_input_type, + 'choices': self.choices, + 'name_array_suffix': self.suffix} def extract_choices(element): ''' @@ -384,33 +398,23 @@ class JavascriptInput(InputTypeBase): template = "javascriptinput.html" tags = ['javascriptinput'] + @classmethod + def get_attributes(cls): + """ + Register the attributes. + """ + return [Attribute('params', None), + Attribute('problem_state', None), + Attribute('display_class', None), + Attribute('display_file', None),] + + def setup(self): # Need to provide a value that JSON can parse if there is no # student-supplied value yet. if self.value == "": self.value = 'null' - self.params = self.xml.get('params') - self.problem_state = self.xml.get('problem_state') - self.display_class = self.xml.get('display_class') - self.display_file = self.xml.get('display_file') - - - def _get_render_context(self): - escapedict = {'"': '"'} - value = saxutils.escape(self.value, escapedict) - msg = saxutils.escape(self.msg, escapedict) - - context = {'id': self.id, - 'params': self.params, - 'display_file': self.display_file, - 'display_class': self.display_class, - 'problem_state': self.problem_state, - 'value': value, - 'evaluation': msg, - } - return context - registry.register(JavascriptInput) @@ -418,51 +422,53 @@ registry.register(JavascriptInput) class TextLine(InputTypeBase): """ - + A text line input. Can do math preview if "math"="1" is specified. """ template = "textline.html" tags = ['textline'] + + @classmethod + def get_attributes(cls): + """ + Register the attributes. + """ + return [ + Attribute('size', None), + + # if specified, then textline is hidden and input id is stored + # in div with name=self.hidden. (TODO: is this functionality used by anyone?) + Attribute('hidden', False), + Attribute('inline', False), + + # Attributes below used in setup(), not rendered directly. + Attribute('math', None, render=False), + # TODO: 'dojs' flag is temporary, for backwards compatibility with 8.02x + Attribute('dojs', None, render=False), + Attribute('preprocessorClassName', None, render=False), + Attribute('preprocessorSrc', None, render=False), + ] + + def setup(self): - self.size = self.xml.get('size') + self.do_math = bool(self.loaded_attributes['math'] or + self.loaded_attributes['dojs']) - # if specified, then textline is hidden and input id is stored - # in div with name=self.hidden. - self.hidden = self.xml.get('hidden', False) - - self.inline = self.xml.get('inline', False) - - # TODO: 'dojs' flag is temporary, for backwards compatibility with 8.02x - self.do_math = bool(self.xml.get('math') or self.xml.get('dojs')) # TODO: do math checking using ajax instead of using js, so # that we only have one math parser. self.preprocessor = None if self.do_math: # Preprocessor to insert between raw input and Mathjax - self.preprocessor = {'class_name': self.xml.get('preprocessorClassName',''), - 'script_src': self.xml.get('preprocessorSrc','')} - if '' in self.preprocessor.values(): + self.preprocessor = {'class_name': self.loaded_attributes['preprocessorClassName'], + 'script_src': self.loaded_attributes['preprocessorSrc']} + if None in self.preprocessor.values(): self.preprocessor = None - - def _get_render_context(self): - # Escape answers with quotes, so they don't crash the system! - escapedict = {'"': '"'} - value = saxutils.escape(self.value, escapedict) - - context = {'id': self.id, - 'value': value, - 'status': self.status, - 'size': self.size, - 'msg': self.msg, - 'hidden': self.hidden, - 'inline': self.inline, - 'do_math': self.do_math, - 'preprocessor': self.preprocessor, - } - return context + def _extra_context(self): + return {'do_math': self.do_math, + 'preprocessor': self.preprocessor,} registry.register(TextLine) @@ -480,13 +486,26 @@ class FileSubmission(InputTypeBase): submitted_msg = ("Your file(s) have been submitted; as soon as your submission is" " graded, this message will be replaced with the grader's feedback.") - def setup(self): - escapedict = {'"': '"'} - self.allowed_files = json.dumps(self.xml.get('allowed_files', '').split()) - self.allowed_files = saxutils.escape(self.allowed_files, escapedict) - self.required_files = json.dumps(self.xml.get('required_files', '').split()) - self.required_files = saxutils.escape(self.required_files, escapedict) + @staticmethod + def parse_files(files): + """ + Given a string like 'a.py b.py c.out', split on whitespace and return as a json list. + """ + return json.dumps(files.split()) + @classmethod + def get_attributes(cls): + """ + Convert the list of allowed files to a convenient format. + """ + return [Attribute('allowed_files', '[]', transform=cls.parse_files), + Attribute('required_files', '[]', transform=cls.parse_files),] + + def setup(self): + """ + Do some magic to handle queueing status (render as "queued" instead of "incomplete"), + pull queue_len from the msg field. (TODO: get rid of the queue_len hack). + """ # Check if problem has been queued self.queue_len = 0 # Flag indicating that the problem has been queued, 'msg' is length of queue @@ -495,15 +514,8 @@ class FileSubmission(InputTypeBase): self.queue_len = self.msg self.msg = FileSubmission.submitted_msg - def _get_render_context(self): - - context = {'id': self.id, - 'status': self.status, - 'msg': self.msg, - 'value': self.value, - 'queue_len': self.queue_len, - 'allowed_files': self.allowed_files, - 'required_files': self.required_files,} + def _extra_context(self): + return {'queue_len': self.queue_len,} return context registry.register(FileSubmission) diff --git a/common/lib/capa/capa/templates/filesubmission.html b/common/lib/capa/capa/templates/filesubmission.html index 2572b25f8a..930469dc0d 100644 --- a/common/lib/capa/capa/templates/filesubmission.html +++ b/common/lib/capa/capa/templates/filesubmission.html @@ -12,7 +12,7 @@ % endif

        ${status}

        - +
      ${msg|n}
      diff --git a/common/lib/capa/capa/templates/javascriptinput.html b/common/lib/capa/capa/templates/javascriptinput.html index 8b4c8f7115..b4d007e4d8 100644 --- a/common/lib/capa/capa/templates/javascriptinput.html +++ b/common/lib/capa/capa/templates/javascriptinput.html @@ -2,7 +2,7 @@
      + data-submission="${value|h}" data-evaluation="${msg|h}">
      diff --git a/common/lib/capa/capa/templates/textline.html b/common/lib/capa/capa/templates/textline.html index 97c512fc00..fbb5467b67 100644 --- a/common/lib/capa/capa/templates/textline.html +++ b/common/lib/capa/capa/templates/textline.html @@ -20,7 +20,7 @@
      % endif - This is foil One.'), ('foil2', 'This is foil Two.'), @@ -119,12 +133,13 @@ class JavascriptInputTest(unittest.TestCase): context = the_input._get_render_context() expected = {'id': 'prob_1_2', + 'status': 'unanswered', + 'msg': '', + 'value': '3', 'params': params, 'display_file': display_file, 'display_class': display_class, - 'problem_state': problem_state, - 'value': '3', - 'evaluation': '',} + 'problem_state': problem_state,} self.assertEqual(context, expected) @@ -204,9 +219,6 @@ class FileSubmissionTest(unittest.TestCase): element = etree.fromstring(xml_str) - escapedict = {'"': '"'} - esc = lambda s: saxutils.escape(s, escapedict) - state = {'value': 'BumbleBee.py', 'status': 'incomplete', 'feedback' : {'message': '3'}, } @@ -220,8 +232,8 @@ class FileSubmissionTest(unittest.TestCase): 'msg': input_class.submitted_msg, 'value': 'BumbleBee.py', 'queue_len': '3', - 'allowed_files': esc('["runme.py", "nooooo.rb", "ohai.java"]'), - 'required_files': esc('["cookies.py"]')} + 'allowed_files': '["runme.py", "nooooo.rb", "ohai.java"]', + 'required_files': '["cookies.py"]'} self.assertEqual(context, expected) From b78fb8dff665cb15de2c378440d305d217c79456 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Thu, 1 Nov 2012 00:05:48 -0400 Subject: [PATCH 121/308] Refactored the rest of the input types --- common/lib/capa/capa/inputtypes.py | 218 ++++++++---------- .../capa/capa/templates/crystallography.html | 2 +- .../lib/capa/capa/templates/vsepr_input.html | 2 +- common/lib/capa/capa/tests/test_inputtypes.py | 18 +- 4 files changed, 110 insertions(+), 130 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index bd3642220f..2ff926479a 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -21,12 +21,14 @@ Each input type takes the xml tree as 'element', the previous answer as 'value', graded status as'status' """ -# TODO: there is a lot of repetitive "grab these elements from xml attributes, with these defaults, -# put them in the context" code. Refactor so class just specifies required and optional attrs (with -# defaults for latter), and InputTypeBase does the right thing. +# TODO: make hints do something + +# TODO: make all inputtypes actually render msg + +# TODO: remove unused fields (e.g. 'hidden' in a few places) + +# TODO: add validators so that content folks get better error messages. -# TODO: Quoting and unquoting is handled in a pretty ad-hoc way. Also something that could be done -# properly once in InputTypeBase. # Possible todo: make inline the default for textlines and other "one-line" inputs. It probably # makes sense, but a bunch of problems have markup that assumes block. Bigger TODO: figure out a @@ -39,7 +41,6 @@ from lxml import etree import re import shlex # for splitting quoted strings import sys -import xml.sax.saxutils as saxutils from registry import TagRegistry @@ -535,13 +536,30 @@ class CodeInput(InputTypeBase): # non-codemirror editor. ] + # pulled out for testing + submitted_msg = ("Your file(s) have been submitted; as soon as your submission is" + " graded, this message will be replaced with the grader's feedback.") + + @classmethod + def get_attributes(cls): + """ + Convert options to a convenient format. + """ + return [Attribute('rows', '30'), + Attribute('cols', '80'), + Attribute('hidden', ''), + + # For CodeMirror + Attribute('mode', 'python'), + Attribute('linenumbers', 'true'), + # Template expects tabsize to be an int it can do math with + Attribute('tabsize', 4, transform=int), + ] def setup(self): - self.rows = self.xml.get('rows') or '30' - self.cols = self.xml.get('cols') or '80' - # if specified, then textline is hidden and id is stored in div of name given by hidden - self.hidden = self.xml.get('hidden', '') - + """ + Implement special logic: handle queueing state, and default input. + """ # if no student input yet, then use the default input given by the problem if not self.value: self.value = self.xml.text @@ -552,28 +570,11 @@ class CodeInput(InputTypeBase): if self.status == 'incomplete': self.status = 'queued' self.queue_len = self.msg - self.msg = 'Submitted to grader.' + self.msg = self.submitted_msg - # For CodeMirror - self.mode = self.xml.get('mode', 'python') - self.linenumbers = self.xml.get('linenumbers', 'true') - self.tabsize = int(self.xml.get('tabsize', '4')) - - def _get_render_context(self): - - context = {'id': self.id, - 'value': self.value, - 'status': self.status, - 'msg': self.msg, - 'mode': self.mode, - 'linenumbers': self.linenumbers, - 'rows': self.rows, - 'cols': self.cols, - 'hidden': self.hidden, - 'tabsize': self.tabsize, - 'queue_len': self.queue_len, - } - return context + def _extra_context(self): + """Defined queue_len, add it """ + return {'queue_len': self.queue_len,} registry.register(CodeInput) @@ -586,26 +587,19 @@ class Schematic(InputTypeBase): template = "schematicinput.html" tags = ['schematic'] - def setup(self): - self.height = self.xml.get('height') - self.width = self.xml.get('width') - self.parts = self.xml.get('parts') - self.analyses = self.xml.get('analyses') - self.initial_value = self.xml.get('initial_value') - self.submit_analyses = self.xml.get('submit_analyses') + @classmethod + def get_attributes(cls): + """ + Convert options to a convenient format. + """ + return [ + Attribute('height', None), + Attribute('width', None), + Attribute('parts', None), + Attribute('analyses', None), + Attribute('initial_value', None), + Attribute('submit_analyses', None),] - - def _get_render_context(self): - - context = {'id': self.id, - 'value': self.value, - 'initial_value': self.initial_value, - 'status': self.status, - 'width': self.width, - 'height': self.height, - 'parts': self.parts, - 'analyses': self.analyses, - 'submit_analyses': self.submit_analyses,} return context registry.register(Schematic) @@ -626,12 +620,20 @@ class ImageInput(InputTypeBase): template = "imageinput.html" tags = ['imageinput'] - def setup(self): - self.src = self.xml.get('src') - self.height = self.xml.get('height') - self.width = self.xml.get('width') + @classmethod + def get_attributes(cls): + """ + Note: src, height, and width are all required. + """ + return [Attribute('src'), + Attribute('height'), + Attribute('width'),] - # if value is of the form [x,y] then parse it and send along coordinates of previous answer + + def setup(self): + """ + if value is of the form [x,y] then parse it and send along coordinates of previous answer + """ m = re.match('\[([0-9]+),([0-9]+)]', self.value.strip().replace(' ', '')) if m: # Note: we subtract 15 to compensate for the size of the dot on the screen. @@ -641,19 +643,10 @@ class ImageInput(InputTypeBase): (self.gx, self.gy) = (0, 0) - def _get_render_context(self): + def _extra_context(self): - context = {'id': self.id, - 'value': self.value, - 'height': self.height, - 'width': self.width, - 'src': self.src, - 'gx': self.gx, - 'gy': self.gy, - 'status': self.status, - 'msg': self.msg, - } - return context + return {'gx': self.gx, + 'gy': self.gy} registry.register(ImageInput) @@ -669,30 +662,18 @@ class Crystallography(InputTypeBase): template = "crystallography.html" tags = ['crystallography'] + @classmethod + def get_attributes(cls): + """ + Note: height, width are required. + """ + return [Attribute('size', None), + Attribute('height'), + Attribute('width'), - def setup(self): - self.height = self.xml.get('height') - self.width = self.xml.get('width') - self.size = self.xml.get('size') - - # if specified, then textline is hidden and id is stored in div of name given by hidden - self.hidden = self.xml.get('hidden', '') - - # Escape answers with quotes, so they don't crash the system! - escapedict = {'"': '"'} - self.value = saxutils.escape(self.value, escapedict) - - def _get_render_context(self): - context = {'id': self.id, - 'value': self.value, - 'status': self.status, - 'size': self.size, - 'msg': self.msg, - 'hidden': self.hidden, - 'width': self.width, - 'height': self.height, - } - return context + # can probably be removed (textline should prob be always-hidden) + Attribute('hidden', ''), + ] registry.register(Crystallography) @@ -707,29 +688,16 @@ class VseprInput(InputTypeBase): template = 'vsepr_input.html' tags = ['vsepr_input'] - def setup(self): - self.height = self.xml.get('height') - self.width = self.xml.get('width') - - # Escape answers with quotes, so they don't crash the system! - escapedict = {'"': '"'} - self.value = saxutils.escape(self.value, escapedict) - - self.molecules = self.xml.get('molecules') - self.geometries = self.xml.get('geometries') - - def _get_render_context(self): - - context = {'id': self.id, - 'value': self.value, - 'status': self.status, - 'msg': self.msg, - 'width': self.width, - 'height': self.height, - 'molecules': self.molecules, - 'geometries': self.geometries, - } - return context + @classmethod + def get_attributes(cls): + """ + Note: height, width are required. + """ + return [Attribute('height'), + Attribute('width'), + Attribute('molecules'), + Attribute('geometries'), + ] registry.register(VseprInput) @@ -750,17 +718,17 @@ class ChemicalEquationInput(InputTypeBase): template = "chemicalequationinput.html" tags = ['chemicalequationinput'] - def setup(self): - self.size = self.xml.get('size', '20') + @classmethod + def get_attributes(cls): + """ + Can set size of text field. + """ + return [Attribute('size', '20'),] - def _get_render_context(self): - context = { - 'id': self.id, - 'value': self.value, - 'status': self.status, - 'size': self.size, - 'previewer': '/static/js/capa/chemical_equation_preview.js', - } - return context + def _extra_context(self): + """ + TODO (vshnayder): Get rid of this once we have a standard way of requiring js to be loaded. + """ + return {'previewer': '/static/js/capa/chemical_equation_preview.js',} registry.register(ChemicalEquationInput) diff --git a/common/lib/capa/capa/templates/crystallography.html b/common/lib/capa/capa/templates/crystallography.html index f46e2f753a..2370f59dd2 100644 --- a/common/lib/capa/capa/templates/crystallography.html +++ b/common/lib/capa/capa/templates/crystallography.html @@ -19,7 +19,7 @@
      % endif - % endif - diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py index 5fbe73503f..826d304717 100644 --- a/common/lib/capa/capa/tests/test_inputtypes.py +++ b/common/lib/capa/capa/tests/test_inputtypes.py @@ -2,9 +2,18 @@ Tests of input types. TODO: +- refactor: so much repetive code (have factory methods that build xml elements directly, etc) + +- test error cases + +- check rendering -- e.g. msg should appear in the rendered output. If possible, test that + templates are escaping things properly. + + - test unicode in values, parameters, etc. - test various html escapes - test funny xml chars -- should never get xml parse error if things are escaped properly. + """ from lxml import etree @@ -267,14 +276,15 @@ class CodeInputTest(unittest.TestCase): 'status': 'incomplete', 'feedback' : {'message': '3'}, } - the_input = lookup_tag('codeinput')(test_system, element, state) + input_class = lookup_tag('codeinput') + the_input = input_class(test_system, element, state) context = the_input._get_render_context() expected = {'id': 'prob_1_2', 'value': 'print "good evening"', 'status': 'queued', - 'msg': 'Submitted to grader.', + 'msg': input_class.submitted_msg, 'mode': mode, 'linenumbers': linenumbers, 'rows': rows, @@ -323,8 +333,9 @@ class SchematicTest(unittest.TestCase): expected = {'id': 'prob_1_2', 'value': value, - 'initial_value': initial_value, 'status': 'unsubmitted', + 'msg': '', + 'initial_value': initial_value, 'width': width, 'height': height, 'parts': parts, @@ -488,6 +499,7 @@ class ChemicalEquationTest(unittest.TestCase): expected = {'id': 'prob_1_2', 'value': 'H2OYeah', 'status': 'unanswered', + 'msg': '', 'size': size, 'previewer': '/static/js/capa/chemical_equation_preview.js', } From fa2cf6a49c31101f86395f6b1fe81b41f7c94bf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Thu, 1 Nov 2012 08:22:33 +0200 Subject: [PATCH 122/308] add convert_to_perepherial flag and removed order flags --- common/lib/capa/capa/chem/chemtools.py | 42 +++++++++----------------- 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/common/lib/capa/capa/chem/chemtools.py b/common/lib/capa/capa/chem/chemtools.py index e5a8e1a6f6..3f6100cfff 100644 --- a/common/lib/capa/capa/chem/chemtools.py +++ b/common/lib/capa/capa/chem/chemtools.py @@ -16,12 +16,11 @@ def vsepr_build_correct_answer(geometry, atoms): return correct_answer -def vsepr_grade(user_input, correct_answer, ignore_p_order=False, ignore_a_order=False, ignore_e_order=False): - """ Flags ignore_(a,p,e)_order are for checking order in axial, perepherial or equatorial positions. +def vsepr_grade(user_input, correct_answer, convert_to_perepherial=False): + """ Allowed cases: c0, a, e c0, p - Not implemented and not tested cases when p with a or e (no need for now) """ # print user_input, type(user_input) # print correct_answer, type(correct_answer) @@ -31,31 +30,20 @@ def vsepr_grade(user_input, correct_answer, ignore_p_order=False, ignore_a_order if user_input['atoms']['c0'] != correct_answer['atoms']['c0']: return False - # not order-aware comparisons - for ignore in [(ignore_p_order, 'p'), (ignore_e_order, 'e'), (ignore_a_order, 'a')]: - if ignore[0]: - # collecting atoms: - a_user = [v for k, v in user_input['atoms'].items() if k.startswith(ignore[1])] - a_correct = [v for k, v in correct_answer['atoms'].items() if k.startswith(ignore[1])] - # print ignore[0], ignore[1], a_user, a_correct - if len(a_user) != len(a_correct): - return False - if sorted(a_user) != sorted(a_correct): - return False + if convert_to_perepherial: + # convert user_input from (a,e,e1,e2) to (p) + # correct_answer must be set in (p) using this flag + user_input['atoms'] = {'p' + str(i): v for i, v in enumerate(user_input['atoms'].values())} - # order-aware comparisons - for ignore in [(ignore_p_order, 'p'), (ignore_e_order, 'e'), (ignore_a_order, 'a')]: - if not ignore[0]: - # collecting atoms: - a_user = [v for k, v in user_input['atoms'].items() if k.startswith(ignore[1])] - a_correct = [v for k, v in correct_answer['atoms'].items() if k.startswith(ignore[1])] - # print '2nd', ignore[0], ignore[1], a_user, a_correct - if len(a_user) != len(a_correct): - return False - if len(a_correct) == 0: - continue - if a_user != a_correct: - return False + for ea_position in ['p', 'a', 'e', 'e1', 'e2']: + # collecting atoms: + a_user = [v for k, v in user_input['atoms'].items() if k.startswith(ea_position)] + a_correct = [v for k, v in correct_answer['atoms'].items() if k.startswith(ea_position)] + # print a_user, a_correct + if len(a_user) != len(a_correct): + return False + if sorted(a_user) != sorted(a_correct): + return False return True From 8a453e99ca826fe948c18ca732f6f67a4898ccc0 Mon Sep 17 00:00:00 2001 From: David Ormsbee Date: Thu, 1 Nov 2012 04:36:54 -0400 Subject: [PATCH 123/308] Implement basic ability to close off a forum for a given course such that Students can no longer post or edit, but can still view. --- common/lib/xmodule/xmodule/course_module.py | 16 ++++++++++++++++ lms/djangoapps/django_comment_client/models.py | 7 +++++++ .../_discussion_course_navigation.html | 3 +++ lms/templates/discussion/_discussion_module.html | 2 ++ .../discussion/_underscore_templates.html | 6 ++++++ 5 files changed, 34 insertions(+) diff --git a/common/lib/xmodule/xmodule/course_module.py b/common/lib/xmodule/xmodule/course_module.py index de8eddd0b8..64e947a5a1 100644 --- a/common/lib/xmodule/xmodule/course_module.py +++ b/common/lib/xmodule/xmodule/course_module.py @@ -276,6 +276,22 @@ class CourseDescriptor(SequenceDescriptor): more sensible framework later.""" return self.metadata.get('discussion_link', None) + @property + def forum_posts_allowed(self): + try: + blackout_periods = [(parse_time(start), parse_time(end)) + for start, end + in self.metadata.get('discussion_blackouts', [])] + now = time.gmtime() + for start, end in blackout_periods: + if start <= now <= end: + return False + except: + log.exception("Error parsing discussion_blackouts for course {0}".format(self.id)) + raise + + return True + @property def hide_progress_tab(self): """TODO: same as above, intended to let internal CS50 hide the progress tab diff --git a/lms/djangoapps/django_comment_client/models.py b/lms/djangoapps/django_comment_client/models.py index 605a731517..ff2146afac 100644 --- a/lms/djangoapps/django_comment_client/models.py +++ b/lms/djangoapps/django_comment_client/models.py @@ -2,6 +2,7 @@ from django.db import models from django.contrib.auth.models import User import logging +from courseware.courses import get_course_by_id class Role(models.Model): name = models.CharField(max_length=30, null=False, blank=False) @@ -23,6 +24,12 @@ class Role(models.Model): self.permissions.add(Permission.objects.get_or_create(name=permission)[0]) def has_permission(self, permission): + course = get_course_by_id(self.course_id) + if self.name == "Student" and \ + (permission.startswith('edit') or permission.startswith('update') or permission.startswith('create')) and \ + (not course.forum_posts_allowed): + return False + return self.permissions.filter(name=permission).exists() diff --git a/lms/templates/discussion/_discussion_course_navigation.html b/lms/templates/discussion/_discussion_course_navigation.html index 13b291196b..d770cacc96 100644 --- a/lms/templates/discussion/_discussion_course_navigation.html +++ b/lms/templates/discussion/_discussion_course_navigation.html @@ -1,5 +1,8 @@ +<%! from django_comment_client.permissions import has_permission %> <%inherit file="../courseware/course_navigation.html" /> <%block name="extratabs"> +% if has_permission(user, 'create_thread', course.id):
    • New Post
    • +% endif \ No newline at end of file diff --git a/lms/templates/discussion/_discussion_module.html b/lms/templates/discussion/_discussion_module.html index bb172093f6..8fced92f7f 100644 --- a/lms/templates/discussion/_discussion_module.html +++ b/lms/templates/discussion/_discussion_module.html @@ -3,4 +3,6 @@
      Show Discussion New Post + +
      diff --git a/lms/templates/discussion/_underscore_templates.html b/lms/templates/discussion/_underscore_templates.html index 0a691ac36f..be238811c2 100644 --- a/lms/templates/discussion/_underscore_templates.html +++ b/lms/templates/discussion/_underscore_templates.html @@ -1,3 +1,5 @@ +<%! from django_comment_client.permissions import has_permission %> + @@ -75,6 +79,7 @@
      1. + % if course is UNDEFINED or has_permission(user, 'create_sub_comment', course.id):
          Submit
          + % endif
        From 8f756f030476d862c34322cc35a63152ddc2b54d Mon Sep 17 00:00:00 2001 From: David Ormsbee Date: Thu, 1 Nov 2012 04:45:00 -0400 Subject: [PATCH 124/308] Document advertised_start and discussion_blackouts attributes of course --- doc/xml-format.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/xml-format.md b/doc/xml-format.md index d9c0d27653..0491641903 100644 --- a/doc/xml-format.md +++ b/doc/xml-format.md @@ -250,9 +250,11 @@ Values are dictionaries of the form {"metadata-key" : "metadata-value"}. Supported fields at the course level: * "start" -- specify the start date for the course. Format-by-example: "2012-09-05T12:00". +* "advertised_start" -- specify what you want displayed as the start date of the course in the course listing and course about pages. This can be useful if you want to let people in early before the formal start. Format-by-example: "2012-09-05T12:00". * "enrollment_start", "enrollment_end" -- when can students enroll? (if not specified, can enroll anytime). Same format as "start". * "end" -- specify the end date for the course. Format-by-example: "2012-11-05T12:00". * "tabs" -- have custom tabs in the courseware. See below for details on config. +* "discussion_blackouts" -- An array of time intervals during which you want to disable a student's ability to create or edit posts in the forum. Moderators, Community TAs, and Admins are unaffected. You might use this during exam periods, but please be aware that the forum is often a very good place to catch mistakes and clarify points to students. The better long term solution would be to have better flagging/moderation mechanisms, but this is the hammer we have today. Format by example: [["2012-10-29T04:00", "2012-11-03T04:00"], ["2012-12-30T04:00", "2013-01-02T04:00"]] * TODO: there are others ### Grading policy file contents From ddc4f705e0d02892f42ef8e28f1d03fe134e31f8 Mon Sep 17 00:00:00 2001 From: David Ormsbee Date: Thu, 1 Nov 2012 04:49:45 -0400 Subject: [PATCH 125/308] Remove raise that was there just for debugging purposes --- common/lib/xmodule/xmodule/course_module.py | 1 - 1 file changed, 1 deletion(-) diff --git a/common/lib/xmodule/xmodule/course_module.py b/common/lib/xmodule/xmodule/course_module.py index 64e947a5a1..fc27a692ea 100644 --- a/common/lib/xmodule/xmodule/course_module.py +++ b/common/lib/xmodule/xmodule/course_module.py @@ -288,7 +288,6 @@ class CourseDescriptor(SequenceDescriptor): return False except: log.exception("Error parsing discussion_blackouts for course {0}".format(self.id)) - raise return True From 91160616849026ed9e83e3bb2594a37bd0f13634 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Thu, 1 Nov 2012 09:53:53 -0400 Subject: [PATCH 126/308] fixing javascript ajax path issues --- .../xmodule/js/src/capa/display.coffee | 1 + .../js/src/selfassessment/display.coffee | 159 ++---------------- .../xmodule/xmodule/self_assessment_module.py | 32 +++- 3 files changed, 43 insertions(+), 149 deletions(-) diff --git a/common/lib/xmodule/xmodule/js/src/capa/display.coffee b/common/lib/xmodule/xmodule/js/src/capa/display.coffee index 1c0ace9e59..6a3c719bb3 100644 --- a/common/lib/xmodule/xmodule/js/src/capa/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/capa/display.coffee @@ -209,6 +209,7 @@ class @Problem show: => if !@el.hasClass 'showed' Logger.log 'problem_show', problem: @id + alert(@url) $.postWithPrefix "#{@url}/problem_show", (response) => answers = response.answers $.each answers, (key, value) => diff --git a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee index 91582642b8..439f518590 100644 --- a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee @@ -1,148 +1,25 @@ -class @SelfAssessment - constructor: (element) -> - @el = $(element).find('.sa-wrapper') - @id = @el.data('sa-id') - @element_id = @el.attr('id') - @url = @el.data('url') - @render() +#@$('section.action input.check').click @check +$('input#show').click(@show) +#$('#save').click(function -> alert('save')) - $: (selector) -> - $(selector, @el) +$(document).on('click', 'input#save', ( -> + answer=$('#answer').text() + $.postWithPrefix "modx/6.002x/sa_save", answer, (response) -> + if response.success + $('p.rubric').replace(response.rubric) - bind: => + alert("save") +)); - window.update_schematics() +show: => + alert("show") + #$.postWithPrefix "/sa_show", (response) => + # answers = response.answers + # @el.addClass 'showed' - problem_prefix = @element_id.replace(/sa_/,'') - @inputs = @$("[id^=input_#{problem_prefix}_]") - - @$('input:button').click @refreshAnswers - #@$('section.action input.check').click @check - @$('input.show').click @show - @$('input.save').click @save - - # Collapsibles - Collapsible.setCollapsibles(@el) - - # Dynamath - @$('input.math').keyup(@refreshMath) - @$('input.math').each (index, element) => - MathJax.Hub.Queue [@refreshMath, null, element] - - updateProgress: (response) => - if response.progress_changed - @el.attr progress: response.progress_status - @el.trigger('progressChanged') - - show: => - $.postWithPrefix "#{@url}/sa_show", (response) => - answers = response.answers - @el.addClass 'showed' - - save: => - $.postWithPrefix "/sa_save", @answers, (response) => - if response.success - @$('p.rubric').replace(response.rubric) - - render: (content) -> - if content - @el.html(content) - JavascriptLoader.executeModuleScripts @el, () => - @setupInputTypes() - @bind() - else - $.postWithPrefix "#{@url}/problem_get", (response) => - @el.html(response.html) - JavascriptLoader.executeModuleScripts @el, () => - @setupInputTypes() - @bind() - - setupInputTypes: => - @inputtypeDisplays = {} - @el.find(".capa_inputtype").each (index, inputtype) => - classes = $(inputtype).attr('class').split(' ') - id = $(inputtype).attr('id') - for cls in classes - setupMethod = @inputtypeSetupMethods[cls] - if setupMethod? - @inputtypeDisplays[id] = setupMethod(inputtype) - - gentle_alert: (msg) => - if @el.find('.capa_alert').length - @el.find('.capa_alert').remove() - alert_elem = "
        " + msg + "
        " - @el.find('.action').after(alert_elem) - @el.find('.capa_alert').css(opacity: 0).animate(opacity: 1, 700) - - refreshAnswers: => - @$('input.schematic').each (index, element) -> - element.schematic.update_value() - @$(".CodeMirror").each (index, element) -> - element.CodeMirror.save() if element.CodeMirror.save - @answers = @inputs.serialize() - - inputtypeSetupMethods: - - 'text-input-dynamath': (element) => - ### - Return: function (eqn) -> eqn that preprocesses the user formula input before - it is fed into MathJax. Return 'false' if no preprocessor specified - ### - data = $(element).find('.text-input-dynamath_data') - - preprocessorClassName = data.data('preprocessor') - preprocessorClass = window[preprocessorClassName] - if not preprocessorClass? - return false - else - preprocessor = new preprocessorClass() - return preprocessor.fn - - javascriptinput: (element) => - - data = $(element).find(".javascriptinput_data") - - params = data.data("params") - submission = data.data("submission") - evaluation = data.data("evaluation") - problemState = data.data("problem_state") - displayClass = window[data.data('display_class')] - - if evaluation == '' - evaluation = null - - container = $(element).find(".javascriptinput_container") - submissionField = $(element).find(".javascriptinput_input") - - display = new displayClass(problemState, submission, evaluation, container, submissionField, params) - display.render() - - return display - - inputtypeShowAnswerMethods: - choicegroup: (element, display, answers) => - element = $(element) - - element.find('input').attr('disabled', 'disabled') - - input_id = element.attr('id').replace(/inputtype_/,'') - answer = answers[input_id] - for choice in answer - element.find("label[for='input_#{input_id}_#{choice}']").addClass 'choicegroup_correct' - - javascriptinput: (element, display, answers) => - answer_id = $(element).attr('id').split("_")[1...].join("_") - answer = JSON.parse(answers[answer_id]) - display.showAnswer(answer) - - inputtypeHideAnswerMethods: - choicegroup: (element, display) => - element = $(element) - element.find('input').attr('disabled', null) - element.find('label').removeClass('choicegroup_correct') - - javascriptinput: (element, display) => - display.hideAnswer() +save: => + alert("save") +alert($('input#save').attr('url')) diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index 56ac0d7911..bdabd9ec6e 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -19,9 +19,6 @@ from xmodule.contentstore.content import XASSET_SRCREF_PREFIX, StaticContent log = logging.getLogger("mitx.courseware") -problem_form=('

        ') - rubric_form=('
        Correct
        ' '' 'Incorrect
        ') @@ -61,6 +58,11 @@ class SelfAssessmentModule(XModule): self.rubric=''.join([etree.tostring(child) for child in only_one(dom2.xpath('rubric'))]) self.problem=''.join([etree.tostring(child) for child in only_one(dom2.xpath('problem'))]) + problem_form=('

        ' + '' + '

        ').format(self.location) + self.problem=''.join([self.problem,problem_form]) self.rubric=''.join([self.rubric,rubric_form]) @@ -70,6 +72,9 @@ class SelfAssessmentModule(XModule): self.html = self.problem + self.answers={} + + def handle_ajax(self, dispatch, get): ''' This is called by courseware.module_render, to handle an AJAX call. @@ -106,16 +111,27 @@ class SelfAssessmentModule(XModule): with the error key only present if success is False. ''' event_info = dict() - event_info['state'] = self.lcp.get_state() + event_info['state'] = {'seed': 1, + 'student_answers': self.answers, + 'correct_map': {'self_assess' : {'correctness': False, + 'npoints': 0, + 'msg': "", + 'hint': "", + 'hintmode': "", + 'queuestate': "", + }}, + 'done': True} + event_info['problem_id'] = self.location.url() + answers = self.make_dict_of_responses(get) + event_info['answers'] = answers + + self.system.track_function('save_problem_succeed', event_info) + return {'success': True, 'rubric' : self.rubric} - - - - class SelfAssessmentDescriptor(XmlDescriptor, EditingDescriptor): """ Module for putting raw html in a course From 2203a0bd7031da2e7d96bb20b5724e8082588528 Mon Sep 17 00:00:00 2001 From: Aaron Culich Date: Thu, 1 Nov 2012 14:05:11 +0000 Subject: [PATCH 127/308] Updated APT_PKGS with valid Ubuntu package name: mysql -> mysql-server --- create-dev-env.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/create-dev-env.sh b/create-dev-env.sh index 656a40524e..c872f1dcbc 100755 --- a/create-dev-env.sh +++ b/create-dev-env.sh @@ -105,7 +105,7 @@ NUMPY_VER="1.6.2" SCIPY_VER="0.10.1" BREW_FILE="$BASE/mitx/brew-formulas.txt" LOG="/var/tmp/install-$(date +%Y%m%d-%H%M%S).log" -APT_PKGS="pkg-config curl git python-virtualenv build-essential python-dev gfortran liblapack-dev libfreetype6-dev libpng12-dev libxml2-dev libxslt-dev yui-compressor coffeescript graphviz graphviz-dev mysql" +APT_PKGS="pkg-config curl git python-virtualenv build-essential python-dev gfortran liblapack-dev libfreetype6-dev libpng12-dev libxml2-dev libxslt-dev yui-compressor coffeescript graphviz graphviz-dev mysql-server" if [[ $EUID -eq 0 ]]; then error "This script should not be run using sudo or as the root user" From 4712a039dc25214369eb26be8942874667279227 Mon Sep 17 00:00:00 2001 From: Aaron Culich Date: Thu, 1 Nov 2012 14:06:03 +0000 Subject: [PATCH 128/308] Added DEBIAN_FRONTEND=noninteractive to sudo apt-get which is required for silent mysql-server installation --- create-dev-env.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/create-dev-env.sh b/create-dev-env.sh index c872f1dcbc..96ec51d928 100755 --- a/create-dev-env.sh +++ b/create-dev-env.sh @@ -193,7 +193,8 @@ case `uname -s` in maya|lisa|natty|oneiric|precise|quantal) output "Installing ubuntu requirements" sudo apt-get -y update - sudo apt-get -y install $APT_PKGS + # DEBIAN_FRONTEND=noninteractive is required for silent mysql-server installation + sudo DEBIAN_FRONTEND=noninteractive apt-get -y install $APT_PKGS clone_repos ;; *) From 40ce5d2ff61861955a1f31ff3fb73d42729030e7 Mon Sep 17 00:00:00 2001 From: Aaron Culich Date: Thu, 1 Nov 2012 14:08:24 +0000 Subject: [PATCH 129/308] Fixed dependency problem introduced by MySQL-python by forcing distribute version >= 0.6.28 in pre-requirements --- pre-requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/pre-requirements.txt b/pre-requirements.txt index 24ce15ab7e..6eb4669059 100644 --- a/pre-requirements.txt +++ b/pre-requirements.txt @@ -1 +1,2 @@ numpy +distribute>=0.6.28 From 5755325a41707eaaeed130a34b5b42f3a655cb21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Thu, 1 Nov 2012 16:26:54 +0200 Subject: [PATCH 130/308] changed syntax to support e1,e2 in AX6 and add convert_to_p behavior --- common/lib/capa/capa/chem/chemtools.py | 59 +++++++++++++++++--------- 1 file changed, 40 insertions(+), 19 deletions(-) diff --git a/common/lib/capa/capa/chem/chemtools.py b/common/lib/capa/capa/chem/chemtools.py index 3f6100cfff..ea40fb7cdf 100644 --- a/common/lib/capa/capa/chem/chemtools.py +++ b/common/lib/capa/capa/chem/chemtools.py @@ -1,19 +1,13 @@ -from collections import OrderedDict import json import unittest - +import itertools def vsepr_parse_user_answer(user_input): - d = OrderedDict(json.loads(user_input)) - d['atoms'] = OrderedDict(sorted(d['atoms'].items())) - return d + return json.loads(user_input) def vsepr_build_correct_answer(geometry, atoms): - correct_answer = OrderedDict() - correct_answer['geometry'] = geometry - correct_answer['atoms'] = OrderedDict(sorted(atoms.items())) - return correct_answer + return {'geometry': geometry, 'atoms': atoms} def vsepr_grade(user_input, correct_answer, convert_to_perepherial=False): @@ -22,6 +16,7 @@ def vsepr_grade(user_input, correct_answer, convert_to_perepherial=False): c0, a, e c0, p """ + # import ipdb; ipdb.set_trace() # print user_input, type(user_input) # print correct_answer, type(correct_answer) if user_input['geometry'] != correct_answer['geometry']: @@ -33,19 +28,45 @@ def vsepr_grade(user_input, correct_answer, convert_to_perepherial=False): if convert_to_perepherial: # convert user_input from (a,e,e1,e2) to (p) # correct_answer must be set in (p) using this flag + c0 = user_input['atoms'].pop('c0') user_input['atoms'] = {'p' + str(i): v for i, v in enumerate(user_input['atoms'].values())} + user_input['atoms']['c0'] = c0 - for ea_position in ['p', 'a', 'e', 'e1', 'e2']: - # collecting atoms: - a_user = [v for k, v in user_input['atoms'].items() if k.startswith(ea_position)] - a_correct = [v for k, v in correct_answer['atoms'].items() if k.startswith(ea_position)] - # print a_user, a_correct - if len(a_user) != len(a_correct): - return False - if sorted(a_user) != sorted(a_correct): - return False + # special case for AX6 + if 'e10' in correct_answer['atoms']: # need check e1x, e2x symmetry for AX6.. + a_user = {} + a_correct = {} + for ea_position in ['a', 'e1', 'e2']: # collecting positions: + a_user[ea_position] = [v for k, v in user_input['atoms'].items() if k.startswith(ea_position)] + a_correct[ea_position] = [v for k, v in correct_answer['atoms'].items() if k.startswith(ea_position)] - return True + correct = [sorted(a_correct['a'])] + [sorted(a_correct['e1'])] + [sorted(a_correct['e2'])] + for permutation in itertools.permutations(['a', 'e1', 'e2']): + if correct == [sorted(a_user[permutation[0]])] + [sorted(a_user[permutation[1]])] + [sorted(a_user[permutation[2]])]: + return True + return False + + else: # no need to checl e1x,e2x symmetry - convert them to ex + if 'e10' in user_input['atoms']: # e1x exists, it is AX6.. case + e_index = 0 + for k, v in user_input['atoms'].items(): + if len(k) == 3: # e1x + del user_input['atoms'][k] + user_input['atoms']['e' + str(e_index)] = v + e_index += 1 + + # common case + for ea_position in ['p', 'a', 'e']: + # collecting atoms: + a_user = [v for k, v in user_input['atoms'].items() if k.startswith(ea_position)] + a_correct = [v for k, v in correct_answer['atoms'].items() if k.startswith(ea_position)] + # print a_user, a_correct + if len(a_user) != len(a_correct): + return False + if sorted(a_user) != sorted(a_correct): + return False + + return True class Test_Grade(unittest.TestCase): From 3f29b74b205a60ad07e0b3a2dd59f11d7e637e53 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Thu, 1 Nov 2012 10:31:13 -0400 Subject: [PATCH 131/308] working on js --- .../js/src/selfassessment/display.coffee | 36 ++++++++++++++----- .../xmodule/xmodule/self_assessment_module.py | 21 ++++++----- 2 files changed, 40 insertions(+), 17 deletions(-) diff --git a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee index 439f518590..9da875aaa1 100644 --- a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee @@ -1,11 +1,33 @@ +$(document).on('click', 'section.sa-wrapper input#show', ( -> + root = location.protocol + "//" + location.host + post_url=$('section.sa-wrapper input#show').attr('url') + alert(post_url) + final_url="/courses/MITx/6.002x/2012_Fall/modx/#{post_url}/sa_show" + alert(final_url) -#@$('section.action input.check').click @check -$('input#show').click(@show) -#$('#save').click(function -> alert('save')) + $.post final_url, answer, (response) -> + if response.success + $('p.rubric').replace(response.rubric) -$(document).on('click', 'input#save', ( -> - answer=$('#answer').text() - $.postWithPrefix "modx/6.002x/sa_save", answer, (response) -> + alert("save") +)); + +$(document).on('click', 'section.sa-wrapper input#save', ( -> + answer=$('section.sa-wrapper input#answer').val() + alert(answer) + assessment=0 + assessment_correct=$('section.sa-wrapper input#assessment_correct').val() + alert(assessment_correct) + assessment_incorrect=$('section.sa-wrapper input#assessment_incorrect').val() + alert(assessment_incorrect) + + root = location.protocol + "//" + location.host + post_url=$('section.sa-wrapper input#show').attr('url') + alert(post_url) + final_url="/courses/MITx/6.002x/2012_Fall/modx/#{post_url}/sa_save" + alert(final_url) + + $.post final_url, answer, (response) -> if response.success $('p.rubric').replace(response.rubric) @@ -21,5 +43,3 @@ show: => save: => alert("save") -alert($('input#save').attr('url')) - diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index bdabd9ec6e..06647b9af1 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -19,9 +19,9 @@ from xmodule.contentstore.content import XASSET_SRCREF_PREFIX, StaticContent log = logging.getLogger("mitx.courseware") -rubric_form=('
        Correct
        ' - '' - 'Incorrect
        ') +rubric_form=('
        Correct
        ' + '' + 'Incorrect
        ') def only_one(lst, default="", process=lambda x: x): """ @@ -58,9 +58,9 @@ class SelfAssessmentModule(XModule): self.rubric=''.join([etree.tostring(child) for child in only_one(dom2.xpath('rubric'))]) self.problem=''.join([etree.tostring(child) for child in only_one(dom2.xpath('problem'))]) - problem_form=('

        ' - '' + '' '

        ').format(self.location) self.problem=''.join([self.problem,problem_form]) @@ -87,7 +87,6 @@ class SelfAssessmentModule(XModule): ''' handlers = { - 'sa_get' : self.show_problem, 'sa_show': self.show_rubric, 'sa_save': self.save_problem, } @@ -104,6 +103,12 @@ class SelfAssessmentModule(XModule): }) return json.dumps(d, cls=ComplexEncoder) + + + def show_rubric: + return {'success': True} + + def save_problem(self, get): ''' Save the passed in answers. @@ -129,7 +134,7 @@ class SelfAssessmentModule(XModule): self.system.track_function('save_problem_succeed', event_info) - return {'success': True, 'rubric' : self.rubric} + return {'success': True} class SelfAssessmentDescriptor(XmlDescriptor, EditingDescriptor): @@ -144,8 +149,6 @@ class SelfAssessmentDescriptor(XmlDescriptor, EditingDescriptor): has_score = True template_dir_name = "html" - - js = {'coffee': [resource_string(__name__, 'js/src/html/edit.coffee')]} js_module_name = "HTMLEditingDescriptor" From e11e5429a17fc04d48f8e6aaa5c67df0fa0b4e53 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Thu, 1 Nov 2012 10:40:42 -0400 Subject: [PATCH 132/308] adding in progress functionality --- .../js/src/selfassessment/display.coffee | 19 ++++--------- .../xmodule/xmodule/self_assessment_module.py | 28 +++++++++++++++++-- 2 files changed, 31 insertions(+), 16 deletions(-) diff --git a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee index 9da875aaa1..20301e48c7 100644 --- a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee @@ -1,13 +1,14 @@ $(document).on('click', 'section.sa-wrapper input#show', ( -> root = location.protocol + "//" + location.host post_url=$('section.sa-wrapper input#show').attr('url') - alert(post_url) final_url="/courses/MITx/6.002x/2012_Fall/modx/#{post_url}/sa_show" - alert(final_url) + answer=$('section.sa-wrapper input#answer').val() $.post final_url, answer, (response) -> - if response.success - $('p.rubric').replace(response.rubric) + alert("posted") + if response.success + alert(response.rubric) + $('section.sa-wrapper p#rubric').replace(response.rubric) alert("save") )); @@ -33,13 +34,3 @@ $(document).on('click', 'section.sa-wrapper input#save', ( -> alert("save") )); - -show: => - alert("show") - #$.postWithPrefix "/sa_show", (response) => - # answers = response.answers - # @el.addClass 'showed' - -save: => - alert("save") - diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index 06647b9af1..9f56a07c83 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -74,6 +74,30 @@ class SelfAssessmentModule(XModule): self.answers={} + self.score=0 + + self.max_score=1 + + def get_score(self): + return self.score + + def max_score(self): + return self.max_score + + def get_progress(self): + ''' For now, just return score / max_score + ''' + score = self.get_score() + score = d['score'] + total = self.max_score() + if total > 0: + try: + return Progress(score, total) + except Exception as err: + log.exception("Got bad progress") + return None + return None + def handle_ajax(self, dispatch, get): ''' @@ -105,8 +129,8 @@ class SelfAssessmentModule(XModule): - def show_rubric: - return {'success': True} + def show_rubric(self,get): + return {'success': True, 'rubric':rubric_form} def save_problem(self, get): From 5ba2c2e7852177cac8a4a3b779465656bc9e76bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Thu, 1 Nov 2012 16:48:44 +0200 Subject: [PATCH 133/308] converted unittests --- common/lib/capa/capa/chem/chemtools.py | 68 +++++++++++--------------- 1 file changed, 29 insertions(+), 39 deletions(-) diff --git a/common/lib/capa/capa/chem/chemtools.py b/common/lib/capa/capa/chem/chemtools.py index ea40fb7cdf..d9559cce1e 100644 --- a/common/lib/capa/capa/chem/chemtools.py +++ b/common/lib/capa/capa/chem/chemtools.py @@ -77,60 +77,50 @@ class Test_Grade(unittest.TestCase): user_answer = vsepr_parse_user_answer(u'{"geometry":"AX3E0","atoms":{"c0":"B","p0":"F","p1":"B","p2":"F"}}') self.assertFalse(vsepr_grade(user_answer, correct_answer)) - def test_incorrect_positions(self): - correct_answer = vsepr_build_correct_answer(geometry="AX4E0", atoms={"c0": "N", "p0": "H", "p1": "(ep)", "p2": "H", "p3": "H"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX4E0","atoms":{"c0":"B","p0":"F","p1":"B","p2":"F"}}') - self.assertFalse(vsepr_grade(user_answer, correct_answer)) - - def test_correct_answer(self): + def test_correct_answer_p(self): correct_answer = vsepr_build_correct_answer(geometry="AX4E0", atoms={"c0": "N", "p0": "H", "p1": "(ep)", "p2": "H", "p3": "H"}) user_answer = vsepr_parse_user_answer(u'{"geometry":"AX4E0","atoms":{"c0":"N","p0":"H","p1":"(ep)","p2":"H", "p3":"H"}}') self.assertTrue(vsepr_grade(user_answer, correct_answer)) - def test_incorrect_position_order_p(self): - correct_answer = vsepr_build_correct_answer(geometry="AX4E0", atoms={"c0": "N", "p0": "H", "p1": "(ep)", "p2": "H", "p3": "H"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX4E0","atoms":{"c0":"N","p0":"H","p1":"H","p2":"(ep)", "p3":"H"}}') - self.assertFalse(vsepr_grade(user_answer, correct_answer)) - - def test_correct_position_order_with_ignore_p_order(self): - correct_answer = vsepr_build_correct_answer(geometry="AX4E0", atoms={"c0": "N", "p0": "H", "p1": "(ep)", "p2": "H", "p3": "H"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX4E0","atoms":{"c0":"N","p0":"H","p1":"H","p2":"(ep)", "p3":"H"}}') - self.assertTrue(vsepr_grade(user_answer, correct_answer, ignore_p_order=True)) - - def test_incorrect_position_order_ae(self): + def test_correct_answer_ae(self): correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "test", "a1": "(ep)", "e0": "H", "e1": "H", "e2": "(ep)", "e3": "(ep)"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"test","a1":"(ep)","e0":"H","e1":"(ep)","e2":"(ep)","e3":"(ep)"}}') - self.assertFalse(vsepr_grade(user_answer, correct_answer)) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"test","a1":"(ep)","e10":"H","e11":"H","e20":"(ep)","e21":"(ep)"}}') + self.assertTrue(vsepr_grade(user_answer, correct_answer)) - def test_correct_position_order_with_ignore_a_order_not_e(self): + def test_correct_answer_ae_convert_to_p_but_input_not_in_p(self): correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "test", "e0": "H", "e1": "H", "e2": "(ep)", "e3": "(ep)"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"test","a1":"(ep)","e0":"H","e1":"H","e2":"(ep)","e3":"(ep)"}}') - self.assertTrue(vsepr_grade(user_answer, correct_answer, ignore_a_order=True)) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"test","a1":"(ep)","e10":"H","e11":"(ep)","e20":"H","e21":"(ep)"}}') + self.assertFalse(vsepr_grade(user_answer, correct_answer, convert_to_perepherial=True)) - def test_incorrect_position_order_with_ignore_a_order_not_e(self): - correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "test", "e0": "H", "e1": "H", "e2": "H", "e3": "(ep)"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"test","a1":"(ep)","e0":"H","e1":"H","e2":"(ep)","e3":"H"}}') - self.assertFalse(vsepr_grade(user_answer, correct_answer, ignore_a_order=True)) + def test_correct_answer_ae_convert_to_p(self): + correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "p0": "(ep)", "p1": "test", "p2": "H", "p3": "H", "p4": "(ep)", "p6": "(ep)"}) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"test","a1":"(ep)","e10":"H","e11":"(ep)","e20":"H","e21":"(ep)"}}') + self.assertTrue(vsepr_grade(user_answer, correct_answer, convert_to_perepherial=True)) - def test_correct_position_order_with_ignore_e_order_not_a(self): - correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "test", "e0": "H", "e1": "H", "e2": "H", "e3": "(ep)"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"(ep)","a1":"test","e0":"H","e1":"H","e2":"(ep)","e3":"H"}}') - self.assertTrue(vsepr_grade(user_answer, correct_answer, ignore_e_order=True)) + def test_correct_answer_e1e2_in_a(self): + correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "(ep)", "e10": "H", "e11": "H", "e20": "H", "e21": "H"}) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"(ep)","a1":"(ep)","e10":"H","e11":"H","e20":"H","e21":"H"}}') + self.assertTrue(vsepr_grade(user_answer, correct_answer)) - def test_incorrect_position_order_with_ignore_e_order__not_a(self): - correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "test", "e0": "H", "e1": "H", "e2": "H", "e3": "(ep)"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"test","a1":"(ep)","e0":"H","e1":"H","e2":"(ep)","e3":"H"}}') - self.assertFalse(vsepr_grade(user_answer, correct_answer, ignore_e_order=True)) + def test_correct_answer_e1e2_in_e1(self): + correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "(ep)", "e10": "H", "e11": "H", "e20": "H", "e21": "H"}) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"H","a1":"H","e10":"(ep)","e11":"(ep)","e20":"H","e21":"H"}}') + self.assertTrue(vsepr_grade(user_answer, correct_answer)) - def test_correct_position_order_with_ignore_ae_order(self): - correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "test", "e0": "H", "e1": "H", "e2": "H", "e3": "(ep)"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"test","a1":"(ep)","e0":"H","e1":"H","e2":"(ep)","e3":"H"}}') - self.assertTrue(vsepr_grade(user_answer, correct_answer, ignore_e_order=True, ignore_a_order=True)) + def test_correct_answer_e1e2_in_e2(self): + correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "(ep)", "e10": "H", "e11": "H", "e20": "H", "e21": "H"}) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"H","a1":"H","e10":"H","e11":"H","e20":"(ep)","e21":"(ep)"}}') + self.assertTrue(vsepr_grade(user_answer, correct_answer)) + + def test_incorrect_answer_e1e2(self): + correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "(ep)", "e10": "H", "e11": "H", "e20": "H", "e21": "H"}) + user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"H","a1":"H","e10":"(ep)","e11":"H","e20":"H","e21":"(ep)"}}') + self.assertFalse(vsepr_grade(user_answer, correct_answer)) def test_incorrect_c0(self): correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "test", "e0": "H", "e1": "H", "e2": "H", "e3": "(ep)"}) user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"H","a0":"test","a1":"(ep)","e0":"H","e1":"H","e2":"(ep)","e3":"H"}}') - self.assertFalse(vsepr_grade(user_answer, correct_answer, ignore_e_order=True, ignore_a_order=True)) + self.assertFalse(vsepr_grade(user_answer, correct_answer)) def suite(): From d12bc257b40fcf470c2f83b7521252c94f851912 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Thu, 1 Nov 2012 10:53:04 -0400 Subject: [PATCH 134/308] work on save functionality --- .../js/src/selfassessment/display.coffee | 4 +-- .../xmodule/xmodule/self_assessment_module.py | 27 +++++++++---------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee index 20301e48c7..592214734a 100644 --- a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee @@ -8,9 +8,7 @@ $(document).on('click', 'section.sa-wrapper input#show', ( -> alert("posted") if response.success alert(response.rubric) - $('section.sa-wrapper p#rubric').replace(response.rubric) - - alert("save") + $('section.sa-wrapper p#rubric').append(response.rubric) )); $(document).on('click', 'section.sa-wrapper input#save', ( -> diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index 9f56a07c83..3508886918 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -6,6 +6,8 @@ import sys from lxml import etree from lxml.html import rewrite_links from path import path +import json +from progress import Progress from .x_module import XModule from pkg_resources import resource_string @@ -36,6 +38,12 @@ def only_one(lst, default="", process=lambda x: x): else: raise Exception('Malformed XML') +class ComplexEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, complex): + return "{real:.7g}{imag:+.7g}*j".format(real=obj.real, imag=obj.imag) + return json.JSONEncoder.default(self, obj) + class SelfAssessmentModule(XModule): js = {'coffee': [resource_string(__name__, 'js/src/javascript_loader.coffee'), @@ -53,42 +61,31 @@ class SelfAssessmentModule(XModule): instance_state=None, shared_state=None, **kwargs): XModule.__init__(self, system, location, definition, descriptor, instance_state, shared_state, **kwargs) - + dom2=etree.fromstring("" + self.definition['data'] + "") self.rubric=''.join([etree.tostring(child) for child in only_one(dom2.xpath('rubric'))]) self.problem=''.join([etree.tostring(child) for child in only_one(dom2.xpath('problem'))]) - problem_form=('

        ' '' '

        ').format(self.location) - self.problem=''.join([self.problem,problem_form]) - self.rubric=''.join([self.rubric,rubric_form]) - - #print(etree.tostring(rubric)) - #print(etree.tostring(problem)) - self.html = self.problem - self.answers={} - self.score=0 - - self.max_score=1 + self.top_score=1 def get_score(self): return self.score def max_score(self): - return self.max_score + return self.top_score def get_progress(self): ''' For now, just return score / max_score ''' score = self.get_score() - score = d['score'] total = self.max_score() if total > 0: try: @@ -130,7 +127,7 @@ class SelfAssessmentModule(XModule): def show_rubric(self,get): - return {'success': True, 'rubric':rubric_form} + return {'success': True, 'rubric':self.rubric} def save_problem(self, get): From 68ca1251074158fd28203bf7adb4d1b583aa3450 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Thu, 1 Nov 2012 11:13:14 -0400 Subject: [PATCH 135/308] working on save functionality to select only one --- .../xmodule/js/src/capa/display.coffee | 1 - .../js/src/selfassessment/display.coffee | 17 +++++++--- .../xmodule/xmodule/self_assessment_module.py | 34 +++++++++++++++---- 3 files changed, 40 insertions(+), 12 deletions(-) diff --git a/common/lib/xmodule/xmodule/js/src/capa/display.coffee b/common/lib/xmodule/xmodule/js/src/capa/display.coffee index 6a3c719bb3..1c0ace9e59 100644 --- a/common/lib/xmodule/xmodule/js/src/capa/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/capa/display.coffee @@ -209,7 +209,6 @@ class @Problem show: => if !@el.hasClass 'showed' Logger.log 'problem_show', problem: @id - alert(@url) $.postWithPrefix "#{@url}/problem_show", (response) => answers = response.answers $.each answers, (key, value) => diff --git a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee index 592214734a..9c7f7faac4 100644 --- a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee @@ -3,6 +3,8 @@ $(document).on('click', 'section.sa-wrapper input#show', ( -> post_url=$('section.sa-wrapper input#show').attr('url') final_url="/courses/MITx/6.002x/2012_Fall/modx/#{post_url}/sa_show" answer=$('section.sa-wrapper input#answer').val() + alert(answer) + alert(final_url) $.post final_url, answer, (response) -> alert("posted") @@ -15,20 +17,25 @@ $(document).on('click', 'section.sa-wrapper input#save', ( -> answer=$('section.sa-wrapper input#answer').val() alert(answer) assessment=0 - assessment_correct=$('section.sa-wrapper input#assessment_correct').val() + assessment_correct=$('section.sa-wrapper input#assessment_correct').selected() alert(assessment_correct) - assessment_incorrect=$('section.sa-wrapper input#assessment_incorrect').val() + assessment_incorrect=$('section.sa-wrapper input#assessment_incorrect').selected() alert(assessment_incorrect) root = location.protocol + "//" + location.host post_url=$('section.sa-wrapper input#show').attr('url') - alert(post_url) final_url="/courses/MITx/6.002x/2012_Fall/modx/#{post_url}/sa_save" - alert(final_url) + + $('section.sa-wrapper input#assessment option').each( -> + if (this.selected) + alert('this option is selected') + else + alert('this is not') + ); $.post final_url, answer, (response) -> if response.success - $('p.rubric').replace(response.rubric) + $('section.sa_wrapper p#save_message').replace(response.message) alert("save") )); diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index 3508886918..d1d4c4205e 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -21,9 +21,9 @@ from xmodule.contentstore.content import XASSET_SRCREF_PREFIX, StaticContent log = logging.getLogger("mitx.courseware") -rubric_form=('
        Correct
        ' - '' - 'Incorrect
        ') +rubric_form=('
        Correct
        ' + '' + 'Incorrect



        ') def only_one(lst, default="", process=lambda x: x): """ @@ -61,7 +61,7 @@ class SelfAssessmentModule(XModule): instance_state=None, shared_state=None, **kwargs): XModule.__init__(self, system, location, definition, descriptor, instance_state, shared_state, **kwargs) - + dom2=etree.fromstring("" + self.definition['data'] + "") self.rubric=''.join([etree.tostring(child) for child in only_one(dom2.xpath('rubric'))]) self.problem=''.join([etree.tostring(child) for child in only_one(dom2.xpath('problem'))]) @@ -127,7 +127,7 @@ class SelfAssessmentModule(XModule): def show_rubric(self,get): - return {'success': True, 'rubric':self.rubric} + return {'success': True, 'rubric' : self.rubric} def save_problem(self, get): @@ -155,7 +155,29 @@ class SelfAssessmentModule(XModule): self.system.track_function('save_problem_succeed', event_info) - return {'success': True} + return {'success': True, 'message' : "Save Succcesful. Thanks for participating!"} + + @staticmethod + def make_dict_of_responses(get): + '''Make dictionary of student responses (aka "answers") + get is POST dictionary. + ''' + answers = dict() + for key in get: + # e.g. input_resistor_1 ==> resistor_1 + _, _, name = key.partition('_') + + # This allows for answers which require more than one value for + # the same form input (e.g. checkbox inputs). The convention is that + # if the name ends with '[]' (which looks like an array), then the + # answer will be an array. + if not name.endswith('[]'): + answers[name] = get[key] + else: + name = name[:-2] + answers[name] = get.getlist(key) + + return answers class SelfAssessmentDescriptor(XmlDescriptor, EditingDescriptor): From c6cf72d623bf4f47eec3e1d1ff21849a91595d2f Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Thu, 1 Nov 2012 11:26:23 -0400 Subject: [PATCH 136/308] ajax working, refinements now --- .../xmodule/js/src/selfassessment/display.coffee | 10 +--------- common/lib/xmodule/xmodule/self_assessment_module.py | 9 +++++---- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee index 9c7f7faac4..f393fc79ec 100644 --- a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee @@ -3,24 +3,16 @@ $(document).on('click', 'section.sa-wrapper input#show', ( -> post_url=$('section.sa-wrapper input#show').attr('url') final_url="/courses/MITx/6.002x/2012_Fall/modx/#{post_url}/sa_show" answer=$('section.sa-wrapper input#answer').val() - alert(answer) - alert(final_url) - $.post final_url, answer, (response) -> - alert("posted") if response.success - alert(response.rubric) $('section.sa-wrapper p#rubric').append(response.rubric) )); $(document).on('click', 'section.sa-wrapper input#save', ( -> answer=$('section.sa-wrapper input#answer').val() - alert(answer) assessment=0 - assessment_correct=$('section.sa-wrapper input#assessment_correct').selected() + assessment_correct=$('section.sa-wrapper #assessment').find(':selected').text() alert(assessment_correct) - assessment_incorrect=$('section.sa-wrapper input#assessment_incorrect').selected() - alert(assessment_incorrect) root = location.protocol + "//" + location.host post_url=$('section.sa-wrapper input#show').attr('url') diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index d1d4c4205e..3e65b16670 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -21,9 +21,9 @@ from xmodule.contentstore.content import XASSET_SRCREF_PREFIX, StaticContent log = logging.getLogger("mitx.courseware") -rubric_form=('
        Correct
        ' - '' - 'Incorrect



        ') +rubric_form=('

        Please assess your performance given the above rubric:


        ' + '



        ') def only_one(lst, default="", process=lambda x: x): """ @@ -68,7 +68,7 @@ class SelfAssessmentModule(XModule): problem_form=('

        ' '' - '

        ').format(self.location) + '



        ').format(self.location) self.problem=''.join([self.problem,problem_form]) self.rubric=''.join([self.rubric,rubric_form]) self.html = self.problem @@ -151,6 +151,7 @@ class SelfAssessmentModule(XModule): event_info['problem_id'] = self.location.url() answers = self.make_dict_of_responses(get) + log.debug(answers) event_info['answers'] = answers self.system.track_function('save_problem_succeed', event_info) From 07a2a105ca9540545d2ce5d0324b12d98b97a24a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Thu, 1 Nov 2012 17:35:27 +0200 Subject: [PATCH 137/308] added comments --- common/lib/capa/capa/chem/chemtools.py | 110 +++++++++++++++++++++---- 1 file changed, 92 insertions(+), 18 deletions(-) diff --git a/common/lib/capa/capa/chem/chemtools.py b/common/lib/capa/capa/chem/chemtools.py index d9559cce1e..2c7088cac9 100644 --- a/common/lib/capa/capa/chem/chemtools.py +++ b/common/lib/capa/capa/chem/chemtools.py @@ -1,20 +1,94 @@ +"""This module originally includes functions for grading Vsepr problems. + +Also, may be this module is the place for other chemistry-related grade functions. TODO: discuss it. +""" + import json import unittest import itertools + def vsepr_parse_user_answer(user_input): + """ + user_input is json generated by vsepr.js from dictionary. + There are must be only two keys in original user_input dictionary: "geometry" and "atoms". + Format: u'{"geometry": "AX3E0","atoms":{"c0": "B","p0": "F","p1": "B","p2": "F"}}' + Order of elements inside "atoms" subdict does not matters. + Return dict from parsed json. + + "Atoms" subdict stores positions of atoms in molecule. + General types of positions: + c0 - central atom + p0..pN - peripheral atoms + a0..aN - axial atoms + e0..eN - equatorial atoms + + Each position is dictionary key, i.e. user_input["atoms"]["c0"] is central atom, user_input["atoms"]["a0"] is one of axial atoms. + + Special position only for AX6 (Octahedral) geometry: + e10, e12 - atom pairs opposite the central atom, + e20, e22 - atom pairs opposite the central atom, + e1 and e2 pairs lying crosswise in equatorial plane. + + In user_input["atoms"] may be only 3 set of keys: + (c0,p0..pN), + (c0, a0..aN, e0..eN), + (c0, a0, a1, e10,e11,e20,e21) - if geometry is AX6. + """ return json.loads(user_input) def vsepr_build_correct_answer(geometry, atoms): + """ + geometry is string. + atoms is dict of atoms with proper positions. + Example: + + correct_answer = vsepr_build_correct_answer(geometry="AX4E0", atoms={"c0": "N", "p0": "H", "p1": "(ep)", "p2": "H", "p3": "H"}) + + returns a dictionary composed from input values: + {'geometry': geometry, 'atoms': atoms} + """ return {'geometry': geometry, 'atoms': atoms} -def vsepr_grade(user_input, correct_answer, convert_to_perepherial=False): +def vsepr_grade(user_input, correct_answer, convert_to_peripheral=False): """ - Allowed cases: - c0, a, e - c0, p + This function does comparison between user_input and correct_answer. + + Comparison is successful if all steps are successful: + + 1) geometries are equal + 2) central atoms (index in dictionary 'c0') are equal + 3): + In next steps there is comparing of corresponding subsets of atom positions: equatorial (e0..eN), axial (a0..aN) or peripheral (p0..pN) + + If convert_to_peripheral is True, then axial and equatorial positions are converted to peripheral. + This means that user_input from: + "atoms":{"c0": "Br","a0": "test","a1": "(ep)","e10": "H","e11": "(ep)","e20": "H","e21": "(ep)"}}' after parsing to json + is converted to: + {"c0": "Br", "p0": "(ep)", "p1": "test", "p2": "H", "p3": "H", "p4": "(ep)", "p6": "(ep)"} + i.e. aX and eX -> pX + + So if converted, p subsets are compared, + if not a and e subsets are compared + If all subsets are equal, grade succeeds. + + There is also one special case for AX6 geometry. + In this case user_input["atoms"] contains special 3 symbol keys: e10, e12, e20, and e21. + Correct answer for this geometry can be of 3 types: + 1) c0 and peripheral + 2) c0 and axial and equatorial + 3) c0 and axial and equatorial-subset-1 (e1X) and equatorial-subset-2 (e2X) + + If correct answer is type 1 or 2, then user_input is converted from type 3 to type 2 (or to type 1 if convert_to_peripheral is True) + + If correct_answer is type 3, then we done special case comparison. We have 3 sets of atoms positions both in user_input and correct_answer: axial, eq-1 and eq-2. + Answer will be correct if these sets are equals for one of permutations. For example, if : + user_axial = correct_eq-1 + user_eq-1 = correct-axial + user_eq-2 = correct-eq-2 + """ # import ipdb; ipdb.set_trace() # print user_input, type(user_input) @@ -25,7 +99,7 @@ def vsepr_grade(user_input, correct_answer, convert_to_perepherial=False): if user_input['atoms']['c0'] != correct_answer['atoms']['c0']: return False - if convert_to_perepherial: + if convert_to_peripheral: # convert user_input from (a,e,e1,e2) to (p) # correct_answer must be set in (p) using this flag c0 = user_input['atoms'].pop('c0') @@ -46,7 +120,7 @@ def vsepr_grade(user_input, correct_answer, convert_to_perepherial=False): return True return False - else: # no need to checl e1x,e2x symmetry - convert them to ex + else: # no need to check e1x,e2x symmetry - convert them to ex if 'e10' in user_input['atoms']: # e1x exists, it is AX6.. case e_index = 0 for k, v in user_input['atoms'].items(): @@ -74,52 +148,52 @@ class Test_Grade(unittest.TestCase): def test_incorrect_geometry(self): correct_answer = vsepr_build_correct_answer(geometry="AX4E0", atoms={"c0": "N", "p0": "H", "p1": "(ep)", "p2": "H", "p3": "H"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX3E0","atoms":{"c0":"B","p0":"F","p1":"B","p2":"F"}}') + user_answer = vsepr_parse_user_answer(u'{"geometry": "AX3E0","atoms":{"c0": "B","p0": "F","p1": "B","p2": "F"}}') self.assertFalse(vsepr_grade(user_answer, correct_answer)) def test_correct_answer_p(self): correct_answer = vsepr_build_correct_answer(geometry="AX4E0", atoms={"c0": "N", "p0": "H", "p1": "(ep)", "p2": "H", "p3": "H"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX4E0","atoms":{"c0":"N","p0":"H","p1":"(ep)","p2":"H", "p3":"H"}}') + user_answer = vsepr_parse_user_answer(u'{"geometry": "AX4E0","atoms":{"c0": "N","p0": "H","p1": "(ep)","p2": "H", "p3": "H"}}') self.assertTrue(vsepr_grade(user_answer, correct_answer)) def test_correct_answer_ae(self): correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "test", "a1": "(ep)", "e0": "H", "e1": "H", "e2": "(ep)", "e3": "(ep)"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"test","a1":"(ep)","e10":"H","e11":"H","e20":"(ep)","e21":"(ep)"}}') + user_answer = vsepr_parse_user_answer(u'{"geometry": "AX6E0","atoms":{"c0": "Br","a0": "test","a1": "(ep)","e10": "H","e11": "H","e20": "(ep)","e21": "(ep)"}}') self.assertTrue(vsepr_grade(user_answer, correct_answer)) def test_correct_answer_ae_convert_to_p_but_input_not_in_p(self): correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "test", "e0": "H", "e1": "H", "e2": "(ep)", "e3": "(ep)"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"test","a1":"(ep)","e10":"H","e11":"(ep)","e20":"H","e21":"(ep)"}}') - self.assertFalse(vsepr_grade(user_answer, correct_answer, convert_to_perepherial=True)) + user_answer = vsepr_parse_user_answer(u'{"geometry": "AX6E0","atoms":{"c0": "Br","a0": "test","a1": "(ep)","e10": "H","e11": "(ep)","e20": "H","e21": "(ep)"}}') + self.assertFalse(vsepr_grade(user_answer, correct_answer, convert_to_peripheral=True)) def test_correct_answer_ae_convert_to_p(self): correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "p0": "(ep)", "p1": "test", "p2": "H", "p3": "H", "p4": "(ep)", "p6": "(ep)"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"test","a1":"(ep)","e10":"H","e11":"(ep)","e20":"H","e21":"(ep)"}}') - self.assertTrue(vsepr_grade(user_answer, correct_answer, convert_to_perepherial=True)) + user_answer = vsepr_parse_user_answer(u'{"geometry": "AX6E0","atoms":{"c0": "Br","a0": "test","a1": "(ep)","e10": "H","e11": "(ep)","e20": "H","e21": "(ep)"}}') + self.assertTrue(vsepr_grade(user_answer, correct_answer, convert_to_peripheral=True)) def test_correct_answer_e1e2_in_a(self): correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "(ep)", "e10": "H", "e11": "H", "e20": "H", "e21": "H"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"(ep)","a1":"(ep)","e10":"H","e11":"H","e20":"H","e21":"H"}}') + user_answer = vsepr_parse_user_answer(u'{"geometry": "AX6E0","atoms":{"c0": "Br","a0": "(ep)","a1": "(ep)","e10": "H","e11": "H","e20": "H","e21": "H"}}') self.assertTrue(vsepr_grade(user_answer, correct_answer)) def test_correct_answer_e1e2_in_e1(self): correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "(ep)", "e10": "H", "e11": "H", "e20": "H", "e21": "H"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"H","a1":"H","e10":"(ep)","e11":"(ep)","e20":"H","e21":"H"}}') + user_answer = vsepr_parse_user_answer(u'{"geometry": "AX6E0","atoms":{"c0": "Br","a0": "H","a1": "H","e10": "(ep)","e11": "(ep)","e20": "H","e21": "H"}}') self.assertTrue(vsepr_grade(user_answer, correct_answer)) def test_correct_answer_e1e2_in_e2(self): correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "(ep)", "e10": "H", "e11": "H", "e20": "H", "e21": "H"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"H","a1":"H","e10":"H","e11":"H","e20":"(ep)","e21":"(ep)"}}') + user_answer = vsepr_parse_user_answer(u'{"geometry": "AX6E0","atoms":{"c0": "Br","a0": "H","a1": "H","e10": "H","e11": "H","e20": "(ep)","e21": "(ep)"}}') self.assertTrue(vsepr_grade(user_answer, correct_answer)) def test_incorrect_answer_e1e2(self): correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "(ep)", "e10": "H", "e11": "H", "e20": "H", "e21": "H"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"Br","a0":"H","a1":"H","e10":"(ep)","e11":"H","e20":"H","e21":"(ep)"}}') + user_answer = vsepr_parse_user_answer(u'{"geometry": "AX6E0","atoms":{"c0": "Br","a0": "H","a1": "H","e10": "(ep)","e11": "H","e20": "H","e21": "(ep)"}}') self.assertFalse(vsepr_grade(user_answer, correct_answer)) def test_incorrect_c0(self): correct_answer = vsepr_build_correct_answer(geometry="AX6E0", atoms={"c0": "Br", "a0": "(ep)", "a1": "test", "e0": "H", "e1": "H", "e2": "H", "e3": "(ep)"}) - user_answer = vsepr_parse_user_answer(u'{"geometry":"AX6E0","atoms":{"c0":"H","a0":"test","a1":"(ep)","e0":"H","e1":"H","e2":"(ep)","e3":"H"}}') + user_answer = vsepr_parse_user_answer(u'{"geometry": "AX6E0","atoms":{"c0": "H","a0": "test","a1": "(ep)","e0": "H","e1": "H","e2": "(ep)","e3": "H"}}') self.assertFalse(vsepr_grade(user_answer, correct_answer)) From 8ed4ef44123d1846fe4e306bf0483be480beb0ec Mon Sep 17 00:00:00 2001 From: Lyla Fischer Date: Thu, 1 Nov 2012 11:36:41 -0400 Subject: [PATCH 138/308] fixed typo --- .../lib/xmodule/xmodule/templates/problem/latex_problem.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/lib/xmodule/xmodule/templates/problem/latex_problem.yaml b/common/lib/xmodule/xmodule/templates/problem/latex_problem.yaml index 6b31c4af3e..434354e4c7 100644 --- a/common/lib/xmodule/xmodule/templates/problem/latex_problem.yaml +++ b/common/lib/xmodule/xmodule/templates/problem/latex_problem.yaml @@ -36,7 +36,7 @@ metadata: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Example "multiple choice" problem} - What color is a bannana? + What color is a banana? \edXabox{ type="multichoice" expect="Yellow" options="Red","Green","Yellow","Blue" } @@ -129,7 +129,7 @@ data: |

        Example "multiple choice" problem

        - What color is a bannana?

        + What color is a banana?

        From 3ed4b77d8c8c31fe847c632f714ad0743760530c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Thu, 1 Nov 2012 17:43:41 +0200 Subject: [PATCH 139/308] removed testsing comments --- common/lib/capa/capa/chem/chemtools.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/common/lib/capa/capa/chem/chemtools.py b/common/lib/capa/capa/chem/chemtools.py index 2c7088cac9..ad6633fc00 100644 --- a/common/lib/capa/capa/chem/chemtools.py +++ b/common/lib/capa/capa/chem/chemtools.py @@ -90,9 +90,6 @@ def vsepr_grade(user_input, correct_answer, convert_to_peripheral=False): user_eq-2 = correct-eq-2 """ - # import ipdb; ipdb.set_trace() - # print user_input, type(user_input) - # print correct_answer, type(correct_answer) if user_input['geometry'] != correct_answer['geometry']: return False From 5b6045b5fceb14d39d2b1fef6a917bde3a6b0b75 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Thu, 1 Nov 2012 11:47:28 -0400 Subject: [PATCH 140/308] fixed ajax value passing to function --- .../js/src/selfassessment/display.coffee | 13 +------ .../xmodule/xmodule/self_assessment_module.py | 38 ++++--------------- 2 files changed, 8 insertions(+), 43 deletions(-) diff --git a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee index f393fc79ec..5627325433 100644 --- a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee @@ -9,23 +9,12 @@ $(document).on('click', 'section.sa-wrapper input#show', ( -> )); $(document).on('click', 'section.sa-wrapper input#save', ( -> - answer=$('section.sa-wrapper input#answer').val() - assessment=0 assessment_correct=$('section.sa-wrapper #assessment').find(':selected').text() - alert(assessment_correct) - root = location.protocol + "//" + location.host post_url=$('section.sa-wrapper input#show').attr('url') final_url="/courses/MITx/6.002x/2012_Fall/modx/#{post_url}/sa_save" - $('section.sa-wrapper input#assessment option').each( -> - if (this.selected) - alert('this option is selected') - else - alert('this is not') - ); - - $.post final_url, answer, (response) -> + $.post final_url, assessment_correct, (response) -> if response.success $('section.sa_wrapper p#save_message').replace(response.message) diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index 3e65b16670..22c5b9c9f3 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -72,7 +72,7 @@ class SelfAssessmentModule(XModule): self.problem=''.join([self.problem,problem_form]) self.rubric=''.join([self.rubric,rubric_form]) self.html = self.problem - self.answers={} + self.answer="" self.score=0 self.top_score=1 @@ -124,22 +124,23 @@ class SelfAssessmentModule(XModule): }) return json.dumps(d, cls=ComplexEncoder) - - def show_rubric(self,get): + self.answer=get.keys()[0] return {'success': True, 'rubric' : self.rubric} - def save_problem(self, get): ''' Save the passed in answers. Returns a dict { 'success' : bool, ['error' : error-msg]}, with the error key only present if success is False. ''' + + correctness=get.keys()[0] + log.debug(correctness) event_info = dict() event_info['state'] = {'seed': 1, 'student_answers': self.answers, - 'correct_map': {'self_assess' : {'correctness': False, + 'correct_map': {'self_assess' : {'correctness': correctness, 'npoints': 0, 'msg': "", 'hint': "", @@ -150,37 +151,12 @@ class SelfAssessmentModule(XModule): event_info['problem_id'] = self.location.url() - answers = self.make_dict_of_responses(get) - log.debug(answers) - event_info['answers'] = answers + event_info['answers'] = self.answer self.system.track_function('save_problem_succeed', event_info) return {'success': True, 'message' : "Save Succcesful. Thanks for participating!"} - @staticmethod - def make_dict_of_responses(get): - '''Make dictionary of student responses (aka "answers") - get is POST dictionary. - ''' - answers = dict() - for key in get: - # e.g. input_resistor_1 ==> resistor_1 - _, _, name = key.partition('_') - - # This allows for answers which require more than one value for - # the same form input (e.g. checkbox inputs). The convention is that - # if the name ends with '[]' (which looks like an array), then the - # answer will be an array. - if not name.endswith('[]'): - answers[name] = get[key] - else: - name = name[:-2] - answers[name] = get.getlist(key) - - return answers - - class SelfAssessmentDescriptor(XmlDescriptor, EditingDescriptor): """ Module for putting raw html in a course From 9238653f7abf84eb001dce15b55a2a70599b2fef Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Thu, 1 Nov 2012 12:27:42 -0400 Subject: [PATCH 141/308] fixed js to remove buttons when needed --- .../js/src/selfassessment/display.coffee | 15 ++++---- .../xmodule/xmodule/self_assessment_module.py | 35 +++++++++++++------ 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee index 5627325433..add21ee927 100644 --- a/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/selfassessment/display.coffee @@ -2,21 +2,22 @@ $(document).on('click', 'section.sa-wrapper input#show', ( -> root = location.protocol + "//" + location.host post_url=$('section.sa-wrapper input#show').attr('url') final_url="/courses/MITx/6.002x/2012_Fall/modx/#{post_url}/sa_show" - answer=$('section.sa-wrapper input#answer').val() + answer=$('section.sa-wrapper textarea#answer').val() $.post final_url, answer, (response) -> if response.success + $('section.sa-wrapper input#show').remove() + $('section.sa-wrapper textarea#answer').remove() + $('section.sa-wrapper p#rubric').append(answer) $('section.sa-wrapper p#rubric').append(response.rubric) )); $(document).on('click', 'section.sa-wrapper input#save', ( -> assessment_correct=$('section.sa-wrapper #assessment').find(':selected').text() root = location.protocol + "//" + location.host - post_url=$('section.sa-wrapper input#show').attr('url') + post_url=$('section.sa-wrapper input#save').attr('url') final_url="/courses/MITx/6.002x/2012_Fall/modx/#{post_url}/sa_save" - $.post final_url, assessment_correct, (response) -> - if response.success - $('section.sa_wrapper p#save_message').replace(response.message) - - alert("save") + if response.success + $('section.sa-wrapper p#save_message').append(response.message) + $('section.sa-wrapper input#save').remove() )); diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index 22c5b9c9f3..5c4cda71f7 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -21,10 +21,6 @@ from xmodule.contentstore.content import XASSET_SRCREF_PREFIX, StaticContent log = logging.getLogger("mitx.courseware") -rubric_form=('

        Please assess your performance given the above rubric:


        ' - '



        ') - def only_one(lst, default="", process=lambda x: x): """ If lst is empty, returns default @@ -63,18 +59,31 @@ class SelfAssessmentModule(XModule): instance_state, shared_state, **kwargs) dom2=etree.fromstring("" + self.definition['data'] + "") - self.rubric=''.join([etree.tostring(child) for child in only_one(dom2.xpath('rubric'))]) + self.rubric="

        " + ''.join([etree.tostring(child) for child in only_one(dom2.xpath('rubric'))]) self.problem=''.join([etree.tostring(child) for child in only_one(dom2.xpath('problem'))]) - problem_form=('

        ' + problem_form=('
        +
        + +
        + + -

        \ No newline at end of file diff --git a/lms/templates/self_assessment_rubric.html b/lms/templates/self_assessment_rubric.html index b157442b7a..0972998f5e 100644 --- a/lms/templates/self_assessment_rubric.html +++ b/lms/templates/self_assessment_rubric.html @@ -1,17 +1,18 @@ -
        -

        Rubric - ${ rubric } - Please assess your performance given the above rubric:
        - -
        - ${ hint_prompt } - +
        diff --git a/lms/templates/self_assessment_prompt.html b/lms/templates/self_assessment_prompt.html index 905f02596e..2d2c5779b2 100644 --- a/lms/templates/self_assessment_prompt.html +++ b/lms/templates/self_assessment_prompt.html @@ -8,7 +8,11 @@
      -
      +
      ${initial_rubric}
      +
      ${initial_hint}
      + +
      ${initial_message}
      + diff --git a/lms/templates/self_assessment_rubric.html b/lms/templates/self_assessment_rubric.html index 0972998f5e..479c19a027 100644 --- a/lms/templates/self_assessment_rubric.html +++ b/lms/templates/self_assessment_rubric.html @@ -4,15 +4,11 @@ ${rubric}
      + % if not read_only: + % endif -
      - ${hint_prompt} -
      - "); - - document.write("
      "); - - - } - - diff --git a/lms/askbot/skins/common/media/js/post.js b/lms/askbot/skins/common/media/js/post.js deleted file mode 100644 index e4ffdf3a50..0000000000 --- a/lms/askbot/skins/common/media/js/post.js +++ /dev/null @@ -1,1952 +0,0 @@ -/* -Scripts for cnprog.com -Project Name: Lanai -All Rights Resevred 2008. CNPROG.COM -*/ -var lanai = -{ - /** - * Finds any
      tags which aren't registered for - * pretty printing, adds the appropriate class name and invokes prettify. - */ - highlightSyntax: function(){ - var styled = false; - $("pre code").parent().each(function(){ - if (!$(this).hasClass('prettyprint')){ - $(this).addClass('prettyprint'); - styled = true; - } - }); - - if (styled){ - prettyPrint(); - } - } -}; - -function appendLoader(element) { - loading = gettext('loading...') - element.append('' +
-        loading +
-    ''); -} - -function removeLoader() { - $("img.ajax-loader").remove(); -} - -function setSubmitButtonDisabled(form, isDisabled) { - form.find("input[type='submit']").attr("disabled", isDisabled ? "true" : ""); -} - -function enableSubmitButton(form) { - setSubmitButtonDisabled(form, false); -} - -function disableSubmitButton(form) { - setSubmitButtonDisabled(form, true); -} - -function setupFormValidation(form, validationRules, validationMessages, onSubmitCallback) { - enableSubmitButton(form); - form.validate({ - debug: true, - rules: (validationRules ? validationRules : {}), - messages: (validationMessages ? validationMessages : {}), - errorElement: "span", - errorClass: "form-error", - errorPlacement: function(error, element) { - var span = element.next().find("span.form-error"); - if (span.length === 0) { - span = element.parent().find("span.form-error"); - if (span.length === 0){ - //for resizable textarea - var element_id = element.attr('id'); - span = $("label[for='" + element_id + "']"); - } - } - span.replaceWith(error); - }, - submitHandler: function(form_dom) { - disableSubmitButton($(form_dom)); - - if (onSubmitCallback){ - onSubmitCallback(); - } - else{ - form_dom.submit(); - } - } - }); -} - -var validateTagLength = function(value){ - var tags = getUniqueWords(value); - var are_tags_ok = true; - $.each(tags, function(index, value){ - if (value.length > askbot['settings']['maxTagLength']){ - are_tags_ok = false; - } - }); - return are_tags_ok; -}; -var validateTagCount = function(value){ - var tags = getUniqueWords(value); - return (tags.length <= askbot['settings']['maxTagsPerPost']); -}; - -$.validator.addMethod('limit_tag_count', validateTagCount); -$.validator.addMethod('limit_tag_length', validateTagLength); - -var CPValidator = function(){ - return { - getQuestionFormRules : function(){ - return { - tags: { - required: true, - maxlength: 105, - limit_tag_count: true, - limit_tag_length: true - }, - text: { - minlength: askbot['settings']['minQuestionBodyLength'] - }, - title: { - minlength: askbot['settings']['minTitleLength'] - } - }; - }, - getQuestionFormMessages: function(){ - return { - tags: { - required: " " + gettext('tags cannot be empty'), - maxlength: askbot['messages']['tagLimits'], - limit_tag_count: askbot['messages']['maxTagsPerPost'], - limit_tag_length: askbot['messages']['maxTagLength'] - }, - text: { - required: " " + gettext('content cannot be empty'), - minlength: interpolate( - ngettext( - 'question body must be > %s character', - 'question body must be > %s characters', - askbot['settings']['minQuestionBodyLength'] - ), - [askbot['settings']['minQuestionBodyLength'], ] - ) - }, - title: { - required: " " + gettext('please enter title'), - minlength: interpolate( - ngettext( - 'title must be > %s character', - 'title must be > %s characters', - askbot['settings']['minTitleLength'] - ), - [askbot['settings']['minTitleLength'], ] - ) - } - }; - }, - getAnswerFormRules : function(){ - return { - text: { - minlength: askbot['settings']['minAnswerBodyLength'] - }, - }; - }, - getAnswerFormMessages: function(){ - return { - text: { - required: " " + gettext('content cannot be empty'), - minlength: interpolate( - ngettext( - 'answer must be > %s character', - 'answer must be > %s characters', - askbot['settings']['minAnswerBodyLength'] - ), - [askbot['settings']['minAnswerBodyLength'], ] - ) - }, - } - } - }; -}(); - -/** - * @constructor - * @extends {SimpleControl} - * @param {Comment} comment to upvote - */ -var CommentVoteButton = function(comment){ - SimpleControl.call(this); - /** - * @param {Comment} - */ - this._comment = comment; - /** - * @type {boolean} - */ - this._voted = false; - /** - * @type {number} - */ - this._score = 0; -}; -inherits(CommentVoteButton, SimpleControl); -/** - * @param {number} score - */ -CommentVoteButton.prototype.setScore = function(score){ - this._score = score; - if (this._element){ - this._element.html(score); - } -}; -/** - * @param {boolean} voted - */ -CommentVoteButton.prototype.setVoted = function(voted){ - this._voted = voted; - if (this._element){ - this._element.addClass('upvoted'); - } -}; - -CommentVoteButton.prototype.getVoteHandler = function(){ - var me = this; - var comment = this._comment; - return function(){ - var voted = me._voted; - var post_id = me._comment.getId(); - var data = { - cancel_vote: voted ? true:false, - post_id: post_id - }; - $.ajax({ - type: 'POST', - data: data, - dataType: 'json', - url: askbot['urls']['upvote_comment'], - cache: false, - success: function(data){ - if (data['success'] == true){ - me.setScore(data['score']); - me.setVoted(true); - } else { - showMessage(comment.getElement(), data['message'], 'after'); - } - } - }); - }; -}; - -CommentVoteButton.prototype.decorate = function(element){ - this._element = element; - this.setHandler(this.getVoteHandler()); - - var element = this._element; - var comment = this._comment; - /* can't call comment.getElement() here due - * an issue in the getElement() of comment - * so use an "illegal" access to comment._element here - */ - comment._element.mouseenter(function(){ - //outside height may not be known - //var height = comment.getElement().height(); - //element.height(height); - element.addClass('hover'); - }); - comment._element.mouseleave(function(){ - element.removeClass('hover'); - }); - -}; - -CommentVoteButton.prototype.createDom = function(){ - this._element = this.makeElement('div'); - if (this._score > 0){ - this._element.html(this._score); - } - this._element.addClass('upvote'); - if (this._voted){ - this._element.addClass('upvoted'); - } - this.decorate(this._element); -}; - -/** - * legacy Vote class - * handles all sorts of vote-like operations - */ -var Vote = function(){ - // All actions are related to a question - var questionId; - //question slug to build redirect urls - var questionSlug; - // The object we operate on actually. It can be a question or an answer. - var postId; - var questionAuthorId; - var currentUserId; - var answerContainerIdPrefix = 'post-id-'; - var voteContainerId = 'vote-buttons'; - var imgIdPrefixAccept = 'answer-img-accept-'; - var classPrefixFollow= 'button follow'; - var classPrefixFollowed= 'button followed'; - var imgIdPrefixQuestionVoteup = 'question-img-upvote-'; - var imgIdPrefixQuestionVotedown = 'question-img-downvote-'; - var imgIdPrefixAnswerVoteup = 'answer-img-upvote-'; - var imgIdPrefixAnswerVotedown = 'answer-img-downvote-'; - var divIdFavorite = 'favorite-number'; - var commentLinkIdPrefix = 'comment-'; - var voteNumberClass = "vote-number"; - var offensiveIdPrefixQuestionFlag = 'question-offensive-flag-'; - var removeOffensiveIdPrefixQuestionFlag = 'question-offensive-remove-flag-'; - var removeAllOffensiveIdPrefixQuestionFlag = 'question-offensive-remove-all-flag-'; - var offensiveIdPrefixAnswerFlag = 'answer-offensive-flag-'; - var removeOffensiveIdPrefixAnswerFlag = 'answer-offensive-remove-flag-'; - var removeAllOffensiveIdPrefixAnswerFlag = 'answer-offensive-remove-all-flag-'; - var offensiveClassFlag = 'offensive-flag'; - var questionControlsId = 'question-controls'; - var removeQuestionLinkIdPrefix = 'question-delete-link-'; - var removeAnswerLinkIdPrefix = 'answer-delete-link-'; - var questionSubscribeUpdates = 'question-subscribe-updates'; - var questionSubscribeSidebar= 'question-subscribe-sidebar'; - - var acceptAnonymousMessage = gettext('insufficient privilege'); - var acceptOwnAnswerMessage = gettext('cannot pick own answer as best'); - - var pleaseLogin = " " - + gettext('please login') + ""; - - var favoriteAnonymousMessage = gettext('anonymous users cannot follow questions') + pleaseLogin; - var subscribeAnonymousMessage = gettext('anonymous users cannot subscribe to questions') + pleaseLogin; - var voteAnonymousMessage = gettext('anonymous users cannot vote') + pleaseLogin; - //there were a couple of more messages... - var offensiveConfirmation = gettext('please confirm offensive'); - var removeOffensiveConfirmation = gettext('please confirm removal of offensive flag'); - var offensiveAnonymousMessage = gettext('anonymous users cannot flag offensive posts') + pleaseLogin; - var removeConfirmation = gettext('confirm delete'); - var removeAnonymousMessage = gettext('anonymous users cannot delete/undelete') + pleaseLogin; - var recoveredMessage = gettext('post recovered'); - var deletedMessage = gettext('post deleted'); - - var VoteType = { - acceptAnswer : 0, - questionUpVote : 1, - questionDownVote : 2, - favorite : 4, - answerUpVote: 5, - answerDownVote:6, - offensiveQuestion : 7, - removeOffensiveQuestion : 7.5, - removeAllOffensiveQuestion : 7.6, - offensiveAnswer:8, - removeOffensiveAnswer:8.5, - removeAllOffensiveAnswer:8.6, - removeQuestion: 9,//deprecate - removeAnswer:10,//deprecate - questionSubscribeUpdates:11, - questionUnsubscribeUpdates:12 - }; - - var getFavoriteButton = function(){ - var favoriteButton = 'div.'+ voteContainerId +' a[class='+ classPrefixFollow +']'; - favoriteButton += ', div.'+ voteContainerId +' a[class='+ classPrefixFollowed +']'; - return $(favoriteButton); - }; - var getFavoriteNumber = function(){ - var favoriteNumber = '#'+ divIdFavorite ; - return $(favoriteNumber); - }; - var getQuestionVoteUpButton = function(){ - var questionVoteUpButton = 'div.'+ voteContainerId +' ul li[id^='+ imgIdPrefixQuestionVoteup +']'; - return $(questionVoteUpButton); - }; - var getQuestionVoteDownButton = function(){ - var questionVoteDownButton = 'div.'+ voteContainerId +' ul li[id^='+ imgIdPrefixQuestionVotedown +']'; - return $(questionVoteDownButton); - }; - var getAnswerVoteUpButtons = function(){ - var answerVoteUpButton = 'div.'+ voteContainerId +' ul li[id^='+ imgIdPrefixAnswerVoteup +']'; - return $(answerVoteUpButton); - }; - var getAnswerVoteDownButtons = function(){ - var answerVoteDownButton = 'div.'+ voteContainerId +' ul li[id^='+ imgIdPrefixAnswerVotedown +']'; - return $(answerVoteDownButton); - }; - var getAnswerVoteUpButton = function(id){ - var answerVoteUpButton = 'div.'+ voteContainerId +' ul li[id='+ imgIdPrefixAnswerVoteup + id + ']'; - return $(answerVoteUpButton); - }; - var getAnswerVoteDownButton = function(id){ - var answerVoteDownButton = 'div.'+ voteContainerId +' ul li[id='+ imgIdPrefixAnswerVotedown + id + ']'; - return $(answerVoteDownButton); - }; - - var getOffensiveQuestionFlag = function(){ - var offensiveQuestionFlag = 'div.question-actions span[id^="'+ offensiveIdPrefixQuestionFlag +'"]'; - return $(offensiveQuestionFlag); - }; - - var getRemoveOffensiveQuestionFlag = function(){ - var removeOffensiveQuestionFlag = 'div.question-actions span[id^="'+ removeOffensiveIdPrefixQuestionFlag +'"]'; - return $(removeOffensiveQuestionFlag); - }; - - var getRemoveAllOffensiveQuestionFlag = function(){ - var removeAllOffensiveQuestionFlag = 'div.question-actions span[id^="'+ removeAllOffensiveIdPrefixQuestionFlag +'"]'; - return $(removeAllOffensiveQuestionFlag); - }; - - var getOffensiveAnswerFlags = function(){ - var offensiveQuestionFlag = 'div.answer span[id^="'+ offensiveIdPrefixAnswerFlag +'"]'; - return $(offensiveQuestionFlag); - }; - - var getRemoveOffensiveAnswerFlag = function(){ - var removeOffensiveAnswerFlag = 'div.answer span[id^="'+ removeOffensiveIdPrefixAnswerFlag +'"]'; - return $(removeOffensiveAnswerFlag); - }; - - var getRemoveAllOffensiveAnswerFlag = function(){ - var removeAllOffensiveAnswerFlag = 'div.answer span[id^="'+ removeAllOffensiveIdPrefixAnswerFlag +'"]'; - return $(removeAllOffensiveAnswerFlag); - }; - - var getremoveQuestionLink = function(){ - var removeQuestionLink = 'div.question-actions a[id^='+ removeQuestionLinkIdPrefix +']'; - return $(removeQuestionLink); - }; - - var getquestionSubscribeUpdatesCheckbox = function(){ - return $('#' + questionSubscribeUpdates); - }; - - var getquestionSubscribeSidebarCheckbox= function(){ - return $('#' + questionSubscribeSidebar); - }; - - var getremoveAnswersLinks = function(){ - var removeAnswerLinks = 'div.answer-controls a[id^='+ removeAnswerLinkIdPrefix +']'; - return $(removeAnswerLinks); - }; - - var setVoteImage = function(voteType, undo, object){ - var flag = undo ? false : true; - if (object.hasClass("on")) { - object.removeClass("on"); - }else{ - object.addClass("on"); - } - - if(undo){ - if(voteType == VoteType.questionUpVote || voteType == VoteType.questionDownVote){ - $(getQuestionVoteUpButton()).removeClass("on"); - $(getQuestionVoteDownButton()).removeClass("on"); - } - else{ - $(getAnswerVoteUpButton(postId)).removeClass("on"); - $(getAnswerVoteDownButton(postId)).removeClass("on"); - } - } - }; - - var setVoteNumber = function(object, number){ - var voteNumber = object.parents('div.'+ voteContainerId).find('li.'+ voteNumberClass); - $(voteNumber).text(number); - }; - - var bindEvents = function(){ - // accept answers - var acceptedButtons = 'div.'+ voteContainerId +' img[id^='+ imgIdPrefixAccept +']'; - $(acceptedButtons).unbind('click').click(function(event){ - Vote.accept($(event.target)); - }); - // set favorite question - var favoriteButton = getFavoriteButton(); - favoriteButton.unbind('click').click(function(event){ - //Vote.favorite($(event.target)); - Vote.favorite(favoriteButton); - }); - - // question vote up - var questionVoteUpButton = getQuestionVoteUpButton(); - questionVoteUpButton.unbind('click').click(function(event){ - Vote.vote($(event.target), VoteType.questionUpVote); - }); - - var questionVoteDownButton = getQuestionVoteDownButton(); - questionVoteDownButton.unbind('click').click(function(event){ - Vote.vote($(event.target), VoteType.questionDownVote); - }); - - var answerVoteUpButton = getAnswerVoteUpButtons(); - answerVoteUpButton.unbind('click').click(function(event){ - Vote.vote($(event.target), VoteType.answerUpVote); - }); - - var answerVoteDownButton = getAnswerVoteDownButtons(); - answerVoteDownButton.unbind('click').click(function(event){ - Vote.vote($(event.target), VoteType.answerDownVote); - }); - - getOffensiveQuestionFlag().unbind('click').click(function(event){ - Vote.offensive(this, VoteType.offensiveQuestion); - }); - - getRemoveOffensiveQuestionFlag().unbind('click').click(function(event){ - Vote.remove_offensive(this, VoteType.removeOffensiveQuestion); - }); - - getRemoveAllOffensiveQuestionFlag().unbind('click').click(function(event){ - Vote.remove_all_offensive(this, VoteType.removeAllOffensiveQuestion); - }); - - getOffensiveAnswerFlags().unbind('click').click(function(event){ - Vote.offensive(this, VoteType.offensiveAnswer); - }); - - getRemoveOffensiveAnswerFlag().unbind('click').click(function(event){ - Vote.remove_offensive(this, VoteType.removeOffensiveAnswer); - }); - - getRemoveAllOffensiveAnswerFlag().unbind('click').click(function(event){ - Vote.remove_all_offensive(this, VoteType.removeAllOffensiveAnswer); - }); - - getremoveQuestionLink().unbind('click').click(function(event){ - Vote.remove(this, VoteType.removeQuestion); - }); - - getquestionSubscribeUpdatesCheckbox().unbind('click').click(function(event){ - //despeluchar esto - if (this.checked){ - getquestionSubscribeSidebarCheckbox().attr({'checked': true}); - Vote.vote($(event.target), VoteType.questionSubscribeUpdates); - } - else { - getquestionSubscribeSidebarCheckbox().attr({'checked': false}); - Vote.vote($(event.target), VoteType.questionUnsubscribeUpdates); - } - }); - - getquestionSubscribeSidebarCheckbox().unbind('click').click(function(event){ - if (this.checked){ - getquestionSubscribeUpdatesCheckbox().attr({'checked': true}); - Vote.vote($(event.target), VoteType.questionSubscribeUpdates); - } - else { - getquestionSubscribeUpdatesCheckbox().attr({'checked': false}); - Vote.vote($(event.target), VoteType.questionUnsubscribeUpdates); - } - }); - - getremoveAnswersLinks().unbind('click').click(function(event){ - Vote.remove(this, VoteType.removeAnswer); - }); - }; - - var submit = function(object, voteType, callback) { - //this function submits votes - $.ajax({ - type: "POST", - cache: false, - dataType: "json", - url: askbot['urls']['vote_url_template'].replace('{{QuestionID}}', questionId), - data: { "type": voteType, "postId": postId }, - error: handleFail, - success: function(data){callback(object, voteType, data);} - }); - }; - - var handleFail = function(xhr, msg){ - alert("Callback invoke error: " + msg); - }; - - // callback function for Accept Answer action - var callback_accept = function(object, voteType, data){ - if(data.allowed == "0" && data.success == "0"){ - showMessage(object, acceptAnonymousMessage); - } - else if(data.allowed == "-1"){ - showMessage(object, acceptOwnAnswerMessage); - } - else if(data.status == "1"){ - object.attr("src", mediaUrl("media/images/vote-accepted.png")); - $("#"+answerContainerIdPrefix+postId).removeClass("accepted-answer"); - $("#"+commentLinkIdPrefix+postId).removeClass("comment-link-accepted"); - } - else if(data.success == "1"){ - var acceptedButtons = 'div.'+ voteContainerId +' img[id^='+ imgIdPrefixAccept +']'; - $(acceptedButtons).attr("src", mediaUrl("media/images/vote-accepted.png")); - var answers = ("div[id^="+answerContainerIdPrefix +"]"); - $(answers).removeClass("accepted-answer"); - var commentLinks = ("div[id^="+answerContainerIdPrefix +"] div[id^="+ commentLinkIdPrefix +"]"); - $(commentLinks).removeClass("comment-link-accepted"); - - object.attr("src", mediaUrl("media/images/vote-accepted-on.png")); - $("#"+answerContainerIdPrefix+postId).addClass("accepted-answer"); - $("#"+commentLinkIdPrefix+postId).addClass("comment-link-accepted"); - } - else{ - showMessage(object, data.message); - } - }; - - var callback_favorite = function(object, voteType, data){ - if(data.allowed == "0" && data.success == "0"){ - showMessage( - object, - favoriteAnonymousMessage.replace( - '{{QuestionID}}', - questionId).replace( - '{{questionSlug}}', - '' - ) - ); - } - else if(data.status == "1"){ - var follow_html = gettext('Follow'); - object.attr("class", 'button follow'); - object.html(follow_html); - var fav = getFavoriteNumber(); - fav.removeClass("my-favorite-number"); - if(data.count === 0){ - data.count = ''; - fav.text(''); - }else{ - var fmts = ngettext('%s follower', '%s followers', data.count); - fav.text(interpolate(fmts, [data.count])); - } - } - else if(data.success == "1"){ - var followed_html = gettext('
      Unfollow
      '); - object.html(followed_html); - object.attr("class", 'button followed'); - var fav = getFavoriteNumber(); - var fmts = ngettext('%s follower', '%s followers', data.count); - fav.text(interpolate(fmts, [data.count])); - fav.addClass("my-favorite-number"); - } - else{ - showMessage(object, data.message); - } - }; - - var callback_vote = function(object, voteType, data){ - if (data.success == '0'){ - showMessage(object, data.message); - return; - } - else { - if (data.status == '1'){ - setVoteImage(voteType, true, object); - } - else { - setVoteImage(voteType, false, object); - } - setVoteNumber(object, data.count); - if (data.message && data.message.length > 0){ - showMessage(object, data.message); - } - return; - } - //may need to take a look at this again - if (data.status == "1"){ - setVoteImage(voteType, true, object); - setVoteNumber(object, data.count); - } - else if (data.success == "1"){ - setVoteImage(voteType, false, object); - setVoteNumber(object, data.count); - if (data.message.length > 0){ - showMessage(object, data.message); - } - } - }; - - var callback_offensive = function(object, voteType, data){ - //todo: transfer proper translations of these from i18n.js - //to django.po files - //_('anonymous users cannot flag offensive posts') + pleaseLogin; - if (data.success == "1"){ - if(data.count > 0) - $(object).children('span[class=darkred]').text("("+ data.count +")"); - else - $(object).children('span[class=darkred]').text(""); - - // Change the link text and rebind events - $(object).find("a.question-flag").html(gettext("remove flag")); - var obj_id = $(object).attr("id"); - $(object).attr("id", obj_id.replace("flag-", "remove-flag-")); - - getRemoveOffensiveQuestionFlag().unbind('click').click(function(event){ - Vote.remove_offensive(this, VoteType.removeOffensiveQuestion); - }); - - getRemoveOffensiveAnswerFlag().unbind('click').click(function(event){ - Vote.remove_offensive(this, VoteType.removeOffensiveAnswer); - }); - } - else { - object = $(object); - showMessage(object, data.message) - } - }; - - var callback_remove_offensive = function(object, voteType, data){ - //todo: transfer proper translations of these from i18n.js - //to django.po files - //_('anonymous users cannot flag offensive posts') + pleaseLogin; - if (data.success == "1"){ - if(data.count > 0){ - $(object).children('span[class=darkred]').text("("+ data.count +")"); - } - else{ - $(object).children('span[class=darkred]').text(""); - // Remove "remove all flags link" since there are no more flags to remove - var remove_all = $(object).siblings("span.offensive-flag[id*=-offensive-remove-all-flag-]"); - $(remove_all).next("span.sep").remove(); - $(remove_all).remove(); - } - // Change the link text and rebind events - $(object).find("a.question-flag").html(gettext("flag offensive")); - var obj_id = $(object).attr("id"); - $(object).attr("id", obj_id.replace("remove-flag-", "flag-")); - - getOffensiveQuestionFlag().unbind('click').click(function(event){ - Vote.offensive(this, VoteType.offensiveQuestion); - }); - - getOffensiveAnswerFlags().unbind('click').click(function(event){ - Vote.offensive(this, VoteType.offensiveAnswer); - }); - } - else { - object = $(object); - showMessage(object, data.message) - } - }; - - var callback_remove_all_offensive = function(object, voteType, data){ - //todo: transfer proper translations of these from i18n.js - //to django.po files - //_('anonymous users cannot flag offensive posts') + pleaseLogin; - if (data.success == "1"){ - if(data.count > 0) - $(object).children('span[class=darkred]').text("("+ data.count +")"); - else - $(object).children('span[class=darkred]').text(""); - // remove the link. All flags are gone - var remove_own = $(object).siblings("span.offensive-flag[id*=-offensive-remove-flag-]") - $(remove_own).find("a.question-flag").html(gettext("flag offensive")); - $(remove_own).attr("id", $(remove_own).attr("id").replace("remove-flag-", "flag-")); - - $(object).next("span.sep").remove(); - $(object).remove(); - - - - getOffensiveQuestionFlag().unbind('click').click(function(event){ - Vote.offensive(this, VoteType.offensiveQuestion); - }); - - getOffensiveAnswerFlags().unbind('click').click(function(event){ - Vote.offensive(this, VoteType.offensiveAnswer); - }); - } - else { - object = $(object); - showMessage(object, data.message) - } - }; - - var callback_remove = function(object, voteType, data){ - if (data.success == "1"){ - if (removeActionType == 'delete'){ - postNode.addClass('deleted'); - postRemoveLink.innerHTML = gettext('undelete'); - showMessage(object, deletedMessage); - } - else if (removeActionType == 'undelete') { - postNode.removeClass('deleted'); - postRemoveLink.innerHTML = gettext('delete'); - showMessage(object, recoveredMessage); - } - } - else { - showMessage(object, data.message) - } - }; - - return { - init : function(qId, qSlug, questionAuthor, userId){ - questionId = qId; - questionSlug = qSlug; - questionAuthorId = questionAuthor; - currentUserId = userId; - bindEvents(); - }, - - //accept answer - accept: function(object){ - postId = object.attr("id").substring(imgIdPrefixAccept.length); - submit(object, VoteType.acceptAnswer, callback_accept); - }, - //mark question as favorite - favorite: function(object){ - if (!currentUserId || currentUserId.toUpperCase() == "NONE"){ - showMessage( - object, - favoriteAnonymousMessage.replace( - "{{QuestionID}}", - questionId - ).replace( - '{{questionSlug}}', - questionSlug - ) - ); - return false; - } - submit(object, VoteType.favorite, callback_favorite); - }, - - vote: function(object, voteType){ - if (!currentUserId || currentUserId.toUpperCase() == "NONE"){ - if (voteType == VoteType.questionSubscribeUpdates || voteType == VoteType.questionUnsubscribeUpdates){ - getquestionSubscribeSidebarCheckbox().removeAttr('checked'); - getquestionSubscribeUpdatesCheckbox().removeAttr('checked'); - showMessage(object, subscribeAnonymousMessage); - }else { - showMessage( - $(object), - voteAnonymousMessage.replace( - "{{QuestionID}}", - questionId - ).replace( - '{{questionSlug}}', - questionSlug - ) - ); - } - return false; - } - // up and downvote processor - if (voteType == VoteType.answerUpVote){ - postId = object.attr("id").substring(imgIdPrefixAnswerVoteup.length); - } - else if (voteType == VoteType.answerDownVote){ - postId = object.attr("id").substring(imgIdPrefixAnswerVotedown.length); - } - - submit(object, voteType, callback_vote); - }, - //flag offensive - offensive: function(object, voteType){ - if (!currentUserId || currentUserId.toUpperCase() == "NONE"){ - showMessage( - $(object), - offensiveAnonymousMessage.replace( - "{{QuestionID}}", - questionId - ).replace( - '{{questionSlug}}', - questionSlug - ) - ); - return false; - } - if (confirm(offensiveConfirmation)){ - postId = object.id.substr(object.id.lastIndexOf('-') + 1); - submit(object, voteType, callback_offensive); - } - }, - //remove flag offensive - remove_offensive: function(object, voteType){ - if (!currentUserId || currentUserId.toUpperCase() == "NONE"){ - showMessage( - $(object), - offensiveAnonymousMessage.replace( - "{{QuestionID}}", - questionId - ).replace( - '{{questionSlug}}', - questionSlug - ) - ); - return false; - } - if (confirm(removeOffensiveConfirmation)){ - postId = object.id.substr(object.id.lastIndexOf('-') + 1); - submit(object, voteType, callback_remove_offensive); - } - }, - remove_all_offensive: function(object, voteType){ - if (!currentUserId || currentUserId.toUpperCase() == "NONE"){ - showMessage( - $(object), - offensiveAnonymousMessage.replace( - "{{QuestionID}}", - questionId - ).replace( - '{{questionSlug}}', - questionSlug - ) - ); - return false; - } - if (confirm(removeOffensiveConfirmation)){ - postId = object.id.substr(object.id.lastIndexOf('-') + 1); - submit(object, voteType, callback_remove_all_offensive); - } - }, - //delete question or answer (comments are deleted separately) - remove: function(object, voteType){ - if (!currentUserId || currentUserId.toUpperCase() == "NONE"){ - showMessage( - $(object), - removeAnonymousMessage.replace( - '{{QuestionID}}', - questionId - ).replace( - '{{questionSlug}}', - questionSlug - ) - ); - return false; - } - bits = object.id.split('-'); - postId = bits.pop();/* this seems to be used within submit! */ - postType = bits.shift(); - - var do_proceed = false; - if (postType == 'answer'){ - postNode = $('#post-id-' + postId); - } - else if (postType == 'question'){ - postNode = $('#question-table'); - } - postRemoveLink = object; - if (postNode.hasClass('deleted')){ - removeActionType = 'undelete'; - do_proceed = true; - } - else { - removeActionType = 'delete'; - do_proceed = confirm(removeConfirmation); - } - if (do_proceed) { - submit($(object), voteType, callback_remove); - } - } - }; -} (); - -var questionRetagger = function(){ - - var oldTagsHTML = ''; - var tagInput = null; - var tagsDiv = null; - var retagLink = null; - - var restoreEventHandlers = function(){ - $(document).unbind('click'); - }; - - var cancelRetag = function(){ - tagsDiv.html(oldTagsHTML); - tagsDiv.removeClass('post-retag'); - tagsDiv.addClass('post-tags'); - restoreEventHandlers(); - initRetagger(); - }; - - var render_tag = function(tag_name){ - //copy-paste from live search!!! - var tag = new Tag(); - tag.setName(tag_name); - return tag.getElement().outerHTML(); - }; - - var drawNewTags = function(new_tags){ - new_tags = new_tags.split(/\s+/); - var tags_html = '' - $.each(new_tags, function(index, name){ - tags_html += render_tag(name); - }); - tagsDiv.html(tags_html); - }; - - var doRetag = function(){ - $.ajax({ - type: "POST", - url: retagUrl, - dataType: "json", - data: { tags: getUniqueWords(tagInput.val()).join(' ') }, - success: function(json) { - if (json['success'] === true){ - new_tags = getUniqueWords(json['new_tags']); - oldTagsHtml = ''; - cancelRetag(); - drawNewTags(new_tags.join(' ')); - } - else { - cancelRetag(); - showMessage(tagsDiv, json['message']); - } - }, - error: function(xhr, textStatus, errorThrown) { - showMessage(tagsDiv, 'sorry, somethin is not right here'); - cancelRetag(); - } - }); - return false; - } - - var setupInputEventHandlers = function(input){ - input.keydown(function(e){ - if ((e.which && e.which == 27) || (e.keyCode && e.keyCode == 27)){ - cancelRetag(); - } - }); - $(document).unbind('click').click(cancelRetag, false); - input.click(function(){return false}); - }; - - var createRetagForm = function(old_tags_string){ - var div = $('
      '); - tagInput = $(''); - //var tagLabel = $(''); - tagInput.val(old_tags_string); - //populate input - var tagAc = new AutoCompleter({ - url: askbot['urls']['get_tag_list'], - preloadData: true, - minChars: 1, - useCache: true, - matchInside: true, - maxCacheLength: 100, - delay: 10 - }); - tagAc.decorate(tagInput); - div.append(tagInput); - //div.append(tagLabel); - setupInputEventHandlers(tagInput); - - //button = $(''); - //button.val(gettext('save tags')); - //div.append(button); - //setupButtonEventHandlers(button); - div.validate({//copy-paste from utils.js - rules: { - tags: { - required: true, - maxlength: askbot['settings']['maxTagsPerPost'] * askbot['settings']['maxTagLength'], - limit_tag_count: true, - limit_tag_length: true - } - }, - messages: { - tags: { - required: gettext('tags cannot be empty'), - maxlength: askbot['messages']['tagLimits'], - limit_tag_count: askbot['messages']['maxTagsPerPost'], - limit_tag_length: askbot['messages']['maxTagLength'] - } - }, - submitHandler: doRetag, - errorClass: "retag-error" - }); - - return div; - }; - - var getTagsAsString = function(tags_div){ - var links = tags_div.find('a'); - var tags_str = ''; - links.each(function(index, element){ - if (index === 0){ - tags_str = $(element).html(); - } - else { - tags_str += ' ' + $(element).html(); - } - }); - return tags_str; - }; - - var noopHandler = function(){ - tagInput.focus(); - return false; - }; - - var deactivateRetagLink = function(){ - retagLink.unbind('click').click(noopHandler); - retagLink.unbind('keypress').keypress(noopHandler); - }; - - var startRetag = function(){ - tagsDiv = $('#question-tags'); - oldTagsHTML = tagsDiv.html();//save to restore on cancel - var old_tags_string = getTagsAsString(tagsDiv); - var retag_form = createRetagForm(old_tags_string); - tagsDiv.html(''); - tagsDiv.append(retag_form); - tagsDiv.removeClass('post-tags'); - tagsDiv.addClass('post-retag'); - tagInput.focus(); - deactivateRetagLink(); - return false; - }; - - var setupClickAndEnterHandler = function(element, callback){ - element.unbind('click').click(callback); - element.unbind('keypress').keypress(function(e){ - if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)){ - callback(); - } - }); - } - - var initRetagger = function(){ - setupClickAndEnterHandler(retagLink, startRetag); - }; - - return { - init: function(){ - retagLink = $('#retag'); - initRetagger(); - } - }; -}(); - -var DeletePostLink = function(){ - SimpleControl.call(this); - this._post_id = null; -}; -inherits(DeletePostLink, SimpleControl); - -DeletePostLink.prototype.setPostId = function(id){ - this._post_id = id; -}; - -DeletePostLink.prototype.getPostId = function(){ - return this._post_id; -}; - -DeletePostLink.prototype.getPostElement = function(){ - return $('#post-id-' + this.getPostId()); -}; - -DeletePostLink.prototype.isPostDeleted = function(){ - return this._post_deleted; -}; - -DeletePostLink.prototype.setPostDeleted = function(is_deleted){ - var post = this.getPostElement(); - if (is_deleted === true){ - post.addClass('deleted'); - this._post_deleted = true; - this.getElement().html(gettext('undelete')); - } else if (is_deleted === false){ - post.removeClass('deleted'); - this._post_deleted = false; - this.getElement().html(gettext('delete')); - } -}; - -DeletePostLink.prototype.getDeleteHandler = function(){ - var me = this; - var post_id = this.getPostId(); - return function(){ - var data = { - 'post_id': me.getPostId(), - //todo rename cancel_vote -> undo - 'cancel_vote': me.isPostDeleted() ? true: false - }; - $.ajax({ - type: 'POST', - data: data, - dataType: 'json', - url: askbot['urls']['delete_post'], - cache: false, - success: function(data){ - if (data['success'] == true){ - me.setPostDeleted(data['is_deleted']); - } else { - showMessage(me.getElement(), data['message']); - } - } - }); - }; -}; - -DeletePostLink.prototype.decorate = function(element){ - this._element = element; - this._post_deleted = this.getPostElement().hasClass('deleted'); - this.setHandler(this.getDeleteHandler()); -} - -//constructor for the form -var EditCommentForm = function(){ - WrappedElement.call(this); - this._comment = null; - this._comment_widget = null; - this._element = null; - this._text = ''; - this._id = 'edit-comment-form'; -}; -inherits(EditCommentForm, WrappedElement); - -EditCommentForm.prototype.getElement = function(){ - EditCommentForm.superClass_.getElement.call(this); - this._textarea.val(this._text); - return this._element; -}; - -EditCommentForm.prototype.attachTo = function(comment, mode){ - this._comment = comment; - this._type = mode; - this._comment_widget = comment.getContainerWidget(); - this._text = comment.getText(); - comment.getElement().after(this.getElement()); - comment.getElement().hide(); - this._comment_widget.hideButton(); - if (this._type == 'add'){ - this._submit_btn.html(gettext('add comment')); - } - else { - this._submit_btn.html(gettext('save comment')); - } - this.getElement().show(); - this.focus(); - putCursorAtEnd(this._textarea); -}; - -EditCommentForm.prototype.getCounterUpdater = function(){ - //returns event handler - var counter = this._text_counter; - var handler = function(){ - var textarea = $(this); - var length = textarea.val() ? textarea.val().length : 0; - var length1 = maxCommentLength - 100; - if (length1 < 0){ - length1 = Math.round(0.7*maxCommentLength); - } - var length2 = maxCommentLength - 30; - if (length2 < 0){ - length2 = Math.round(0.9*maxCommentLength); - } - - //todo: - //1) use class instead of color - move color def to css - // var color = 'maroon'; - var chars = 10; - if (length === 0){ - var feedback = interpolate(gettext('%s title minchars'), [chars]); - } - else if (length < 10){ - var feedback = interpolate(gettext('enter %s more characters'), [chars - length]); - } - else { - color = length > length2 ? "#f00" : length > length1 ? "#f60" : "#999" - chars = maxCommentLength - length - var feedback = interpolate(gettext('%s characters left'), [chars]) - } - /* counter.html(feedback).css('color', color) */ - }; - return handler; -}; - -EditCommentForm.prototype.canCancel = function(){ - if (this._element === null){ - return true; - } - var ctext = $.trim(this._textarea.val()); - if ($.trim(ctext) == $.trim(this._text)){ - return true; - } - else if (this.confirmAbandon()){ - return true; - } - this.focus(); - return false; -}; - -EditCommentForm.prototype.getCancelHandler = function(){ - var form = this; - return function(){ - if (form.canCancel()){ - form.detach(); - } - return false; - }; -}; - -EditCommentForm.prototype.detach = function(){ - if (this._comment === null){ - return; - } - this._comment.getContainerWidget().showButton(); - if (this._comment.isBlank()){ - this._comment.dispose(); - } - else { - this._comment.getElement().show(); - } - this.reset(); - this._element = this._element.detach(); -}; - -EditCommentForm.prototype.createDom = function(){ - this._element = $('
      '); - this._element.attr('class', 'post-comments block'); - - var div = $('
      '); - this._textarea = $(''); - this._textarea.attr('id', this._id); - - /* - this._help_text = $('').attr('class', 'help-text'); - this._help_text.html(gettext('Markdown is allowed in the comments')); - div.append(this._help_text); - - this._help_text = $('
      ').attr('class', 'clearfix'); - div.append(this._help_text); - */ - - this._element.append(div); - div.append(this._textarea); - this._text_counter = $('').attr('class', 'counter'); - div.append(this._text_counter); - this._submit_btn = $(''); - div.append(this._submit_btn); - this._cancel_btn = $(''); - this._cancel_btn.html(gettext('cancel')); - div.append(this._cancel_btn); - - setupButtonEventHandlers(this._submit_btn, this.getSaveHandler()); - setupButtonEventHandlers(this._cancel_btn, this.getCancelHandler()); - - var update_counter = this.getCounterUpdater(); - var escape_handler = makeKeyHandler(27, this.getCancelHandler()); - this._textarea.attr('name', 'comment') - /* .attr('maxlength', maxCommentLength) */ - .blur(update_counter) - .focus(update_counter) - .keyup(update_counter) - .keyup(escape_handler); - if (askbot['settings']['saveCommentOnEnter']){ - var save_handler = makeKeyHandler(13, this.getSaveHandler()); - this._textarea.keydown(save_handler); - } - this._textarea.val(this._text); -}; - -EditCommentForm.prototype.enableButtons = function(){ - this._submit_btn.attr('disabled', ''); - this._cancel_btn.attr('disabled', ''); -}; - -EditCommentForm.prototype.disableButtons = function(){ - this._submit_btn.attr('disabled', 'disabled'); - this._cancel_btn.attr('disabled', 'disabled'); -}; - -EditCommentForm.prototype.reset = function(){ - this._comment = null; - this._text = ''; - this._textarea.val(''); - this.enableButtons(); -}; - -EditCommentForm.prototype.confirmAbandon = function(){ - this.focus(true); - this._textarea.addClass('highlight'); - var answer = confirm(gettext('confirm abandon comment')); - this._textarea.removeClass('highlight'); - return answer; -}; - -EditCommentForm.prototype.focus = function(hard){ - this._textarea.focus(); - if (hard === true){ - $(this._textarea).scrollTop(); - } -}; - -EditCommentForm.prototype.getSaveHandler = function(){ - - var me = this; - return function(){ - var text = me._textarea.val(); - if (text.length < 1){ - me.focus(); - return false; - } - - var post_data = { - comment: text - }; - - if (me._type == 'edit'){ - post_data['comment_id'] = me._comment.getId(); - post_url = askbot['urls']['editComment']; - } - else { - post_data['post_type'] = me._comment.getParentType(); - post_data['post_id'] = me._comment.getParentId(); - post_url = askbot['urls']['postComments']; - } - - me.disableButtons(); - - $.ajax({ - type: "POST", - url: post_url, - dataType: "json", - data: post_data, - success: function(json) { - if (me._type == 'add'){ - me._comment.dispose(); - me._comment.getContainerWidget().reRenderComments(json); - } - else { - me._comment.setContent(json); - me._comment.getElement().show(); - } - me.detach(); - }, - error: function(xhr, textStatus, errorThrown) { - me._comment.getElement().show(); - showMessage(me._comment.getElement(), xhr.responseText, 'after'); - me.detach(); - me.enableButtons(); - } - }); - return false; - }; -}; - -//a single instance to reuse -var editCommentForm = new EditCommentForm(); - -var Comment = function(widget, data){ - WrappedElement.call(this); - this._container_widget = widget; - this._data = data || {}; - this._blank = true;//set to false by setContent - this._element = null; - this._delete_prompt = gettext('delete this comment'); - if (data && data['is_deletable']){ - this._deletable = data['is_deletable']; - } - else { - this._deletable = false; - } - if (data && data['is_editable']){ - this._editable = data['is_deletable']; - } - else { - this._editable = false; - } -}; -inherits(Comment, WrappedElement); - -Comment.prototype.decorate = function(element){ - this._element = $(element); - var parent_type = this._element.parent().parent().attr('id').split('-')[2]; - var comment_id = this._element.attr('id').replace('comment-',''); - this._data = {id: comment_id}; - var delete_img = this._element.find('span.delete-icon'); - if (delete_img.length > 0){ - this._deletable = true; - this._delete_icon = new DeleteIcon(this.deletePrompt); - this._delete_icon.setHandler(this.getDeleteHandler()); - this._delete_icon.decorate(delete_img); - } - var edit_link = this._element.find('a.edit'); - if (edit_link.length > 0){ - this._editable = true; - this._edit_link = new EditLink(); - this._edit_link.setHandler(this.getEditHandler()); - this._edit_link.decorate(edit_link); - } - - var vote = new CommentVoteButton(this); - vote.decorate(this._element.find('.comment-votes .upvote')); - - this._blank = false; -}; - -Comment.prototype.isBlank = function(){ - return this._blank; -}; - -Comment.prototype.getId = function(){ - return this._data['id']; -}; - -Comment.prototype.hasContent = function(){ - return ('id' in this._data); - //shortcut for 'user_url' 'html' 'user_display_name' 'comment_age' -}; - -Comment.prototype.hasText = function(){ - return ('text' in this._data); -} - -Comment.prototype.getContainerWidget = function(){ - return this._container_widget; -}; - -Comment.prototype.getParentType = function(){ - return this._container_widget.getPostType(); -}; - -Comment.prototype.getParentId = function(){ - return this._container_widget.getPostId(); -}; - -Comment.prototype.setContent = function(data){ - this._data = data || this._data; - this._element.html(''); - this._element.attr('class', 'comment block'); - this._element.attr('id', 'comment-' + this._data['id']); - - - this._comment_controls = $('
      '); - this._element.append(this._comment_controls); - - - var votes = this.makeElement('div'); - votes.addClass('comment-votes'); - - var vote = new CommentVoteButton(this); - if (this._data['upvoted_by_user']){ - vote.setVoted(true); - } - vote.setScore(this._data['score']); - votes.append(vote.getElement()); - - /* this._element.append(votes); */ - - this._comment_delete = $('
      '); - this._comment_edit = $('
      '); - this._comment_meta = $('
      '); - if (this._deletable){ - this._delete_icon = new DeleteIcon(this._delete_prompt); - this._delete_icon.setHandler(this.getDeleteHandler()); - this._comment_delete.append(this._delete_icon.getElement()); - $(this).find('.delete-icon').append('✖'); - } - this._comment_controls.append(this._comment_delete); - this._comment_controls.append(this._comment_edit); - - this._comment_body = $('
      '); - this._comment_body.html(this._data['html']); - //this._comment_body.append(' – '); - this._comment_body.append(this._comment_meta); - - this._user_link = $('').attr('class', 'author'); - this._user_link.attr('href', this._data['user_url']); - this._user_link.html(this._data['user_display_name']); - this._comment_meta.append(this._user_link); - - this._comment_age = $(''); - this._comment_age.html(this._data['comment_age']); - this._comment_meta.append(' ('); - this._comment_meta.append(this._comment_age); - this._comment_meta.append(')'); - - if (this._editable){ - this._edit_link = new EditLink(); - this._edit_link.setHandler(this.getEditHandler()); - this._comment_edit.append(this._edit_link.getElement()); - } - this._element.append(this._comment_body); - - this._blank = false; -}; - -Comment.prototype.dispose = function(){ - if (this._comment_body){ - this._comment_body.remove(); - } - if (this._comment_delete){ - this._comment_delete.remove(); - } - if (this._user_link){ - this._user_link.remove(); - } - if (this._comment_age){ - this._comment_age.remove(); - } - if (this._delete_icon){ - this._delete_icon.dispose(); - } - if (this._edit_link){ - this._edit_link.dispose(); - } - this._data = null; - Comment.superClass_.dispose.call(this); -}; - -Comment.prototype.getElement = function(){ - Comment.superClass_.getElement.call(this); - if (this.isBlank() && this.hasContent()){ - this.setContent(); - if (enableMathJax === true){ - MathJax.Hub.Queue(['Typeset', MathJax.Hub]); - } - } - return this._element; -}; - -Comment.prototype.loadText = function(on_load_handler){ - var me = this; - $.ajax({ - type: "GET", - url: askbot['urls']['getComment'], - data: {id: this._data['id']}, - success: function(json){ - me._data['text'] = json['text']; - on_load_handler() - }, - error: function(xhr, textStatus, exception) { - showMessage(me.getElement(), xhr.responseText, 'after'); - } - }); -}; - -Comment.prototype.getText = function(){ - if (!this.isBlank()){ - if ('text' in this._data){ - return this._data['text']; - } - } - return ''; -} - -Comment.prototype.getEditHandler = function(){ - var comment = this; - return function(){ - if (editCommentForm.canCancel()){ - editCommentForm.detach(); - if (comment.hasText()){ - editCommentForm.attachTo(comment, 'edit'); - } - else { - comment.loadText( - function(){ - editCommentForm.attachTo(comment, 'edit'); - } - ); - } - } - }; -}; - -Comment.prototype.getDeleteHandler = function(){ - var comment = this; - var del_icon = this._delete_icon; - return function(){ - if (confirm(gettext('confirm delete comment'))){ - comment.getElement().hide(); - $.ajax({ - type: 'POST', - url: askbot['urls']['deleteComment'], - data: { comment_id: comment.getId() }, - success: function(json, textStatus, xhr) { - comment.dispose(); - }, - error: function(xhr, textStatus, exception) { - comment.getElement().show() - showMessage(del_icon.getElement(), xhr.responseText); - }, - dataType: "json" - }); - } - }; -}; - -var PostCommentsWidget = function(){ - WrappedElement.call(this); - this._denied = false; -}; -inherits(PostCommentsWidget, WrappedElement); - -PostCommentsWidget.prototype.decorate = function(element){ - var element = $(element); - this._element = element; - - var widget_id = element.attr('id'); - var id_bits = widget_id.split('-'); - this._post_id = id_bits[3]; - this._post_type = id_bits[2]; - this._is_truncated = askbot['data'][widget_id]['truncated']; - this._user_can_post = askbot['data'][widget_id]['can_post']; - - //see if user can comment here - var controls = element.find('.controls'); - this._activate_button = controls.find('.light-button'); - - if (this._user_can_post == false){ - setupButtonEventHandlers( - this._activate_button, - this.getReadOnlyLoadHandler() - ); - } - else { - setupButtonEventHandlers( - this._activate_button, - this.getActivateHandler() - ); - } - - this._cbox = element.find('.comments-content'); - var comments = new Array(); - var me = this; - this._cbox.children().each(function(index, element){ - var comment = new Comment(me); - comments.push(comment) - comment.decorate(element); - }); - this._comments = comments; -}; - -PostCommentsWidget.prototype.getPostType = function(){ - return this._post_type; -}; - -PostCommentsWidget.prototype.getPostId = function(){ - return this._post_id; -}; - -PostCommentsWidget.prototype.hideButton = function(){ - this._activate_button.hide(); -}; - -PostCommentsWidget.prototype.showButton = function(){ - if (this._is_truncated === false){ - this._activate_button.html(askbot['messages']['addComment']); - } - this._activate_button.show(); -} - -PostCommentsWidget.prototype.startNewComment = function(){ - var comment = new Comment(this); - this._cbox.append(comment.getElement()); - editCommentForm.attachTo(comment, 'add'); -}; - -PostCommentsWidget.prototype.needToReload = function(){ - return this._is_truncated; -}; - -PostCommentsWidget.prototype.getActivateHandler = function(){ - var me = this; - return function() { - if (editCommentForm.canCancel()){ - editCommentForm.detach(); - if (me.needToReload()){ - me.reloadAllComments(function(json){ - me.reRenderComments(json); - me.startNewComment(); - }); - } - else { - me.startNewComment(); - } - } - }; -}; - -PostCommentsWidget.prototype.getReadOnlyLoadHandler = function(){ - var me = this; - return function(){ - me.reloadAllComments(function(json){ - me.reRenderComments(json); - me._activate_button.remove(); - }); - }; -}; - - -PostCommentsWidget.prototype.reloadAllComments = function(callback){ - var post_data = {post_id: this._post_id, post_type: this._post_type}; - var me = this; - $.ajax({ - type: "GET", - url: askbot['urls']['postComments'], - data: post_data, - success: function(json){ - callback(json); - me._is_truncated = false; - }, - dataType: "json" - }); -}; - -PostCommentsWidget.prototype.reRenderComments = function(json){ - $.each(this._comments, function(i, item){ - item.dispose(); - }); - this._comments = new Array(); - var me = this; - $.each(json, function(i, item){ - var comment = new Comment(me, item); - me._cbox.append(comment.getElement()); - me._comments.push(comment); - }); -}; - - -var socialSharing = function(){ - - var SERVICE_DATA = { - //url - template for the sharing service url, params are for the popup - identica: { - url: "http://identi.ca/notice/new?status_textarea={TEXT}%20{URL}", - params: "width=820, height=526,toolbar=1,status=1,resizable=1,scrollbars=1" - }, - twitter: { - url: "http://twitter.com/share?url={URL}&ref=twitbtn&text={TEXT}", - params: "width=820,height=526,toolbar=1,status=1,resizable=1,scrollbars=1" - }, - facebook: { - url: "http://www.facebook.com/sharer.php?u={URL}&ref=fbshare&t={TEXT}", - params: "width=630,height=436,toolbar=1,status=1,resizable=1,scrollbars=1" - }, - linkedin: { - url: "http://www.linkedin.com/shareArticle?mini=true&url={URL}&source={TEXT}", - params: "width=630,height=436,toolbar=1,status=1,resizable=1,scrollbars=1" - } - }; - var URL = ""; - var TEXT = ""; - - var share_page = function(service_name){ - if (SERVICE_DATA[service_name]){ - var url = SERVICE_DATA[service_name]['url']; - $.ajax({ - async: false, - url: "http://json-tinyurl.appspot.com/?&callback=?", - dataType: "json", - data: {'url':URL}, - success: function(data){ - url = url.replace('{URL}', data.tinyurl); - }, - error: function(data){ - url = url.replace('{URL}', URL); - }, - complete: function(data){ - url = url.replace('{TEXT}', TEXT); - var params = SERVICE_DATA[service_name]['params']; - if(!window.open(url, "sharing", params)){ - window.location.href=url; - } - } - }); - } - } - - return { - init: function(){ - URL = window.location.href; - TEXT = escape($('h1 > a').html()); - var fb = $('a.facebook-share') - var tw = $('a.twitter-share'); - var ln = $('a.linkedin-share'); - var ica = $('a.identica-share'); - copyAltToTitle(fb); - copyAltToTitle(tw); - copyAltToTitle(ln); - copyAltToTitle(ica); - setupButtonEventHandlers(fb, function(){share_page("facebook")}); - setupButtonEventHandlers(tw, function(){share_page("twitter")}); - setupButtonEventHandlers(ln, function(){share_page("linkedin")}); - setupButtonEventHandlers(ica, function(){share_page("identica")}); - } - } -}(); - -/** - * @constructor - * @extends {SimpleControl} - */ -var QASwapper = function(){ - SimpleControl.call(this); - this._ans_id = null; -}; -inherits(QASwapper, SimpleControl); - -QASwapper.prototype.decorate = function(element){ - this._element = element; - this._ans_id = parseInt(element.attr('id').split('-').pop()); - var me = this; - this.setHandler(function(){ - me.startSwapping(); - }); -}; - -QASwapper.prototype.startSwapping = function(){ - while (true){ - var title = prompt(gettext('Please enter question title (>10 characters)')); - if (title.length >= 10){ - var data = {new_title: title, answer_id: this._ans_id}; - $.ajax({ - type: "POST", - cache: false, - dataType: "json", - url: askbot['urls']['swap_question_with_answer'], - data: data, - success: function(data){ - var url_template = askbot['urls']['question_url_template']; - new_question_url = url_template.replace( - '{{QuestionID}}', - data['id'] - ).replace( - '{{questionSlug}}', - data['slug'] - ); - window.location.href = new_question_url; - } - }); - break; - } - } -}; - -$(document).ready(function() { - $('[id^="comments-for-"]').each(function(index, element){ - var comments = new PostCommentsWidget(); - comments.decorate(element); - }); - $('[id^="swap-question-with-answer-"]').each(function(idx, element){ - var swapper = new QASwapper(); - swapper.decorate($(element)); - }); - $('[id^="post-id-"]').each(function(idx, element){ - var deleter = new DeletePostLink(); - //confusingly .question-delete matches the answers too need rename - var post_id = element.id.split('-').pop(); - deleter.setPostId(post_id); - deleter.decorate($(element).find('.question-delete')); - }); - questionRetagger.init(); - socialSharing.init(); -}); - - -/* -Prettify -http://www.apache.org/licenses/LICENSE-2.0 -*/ -var PR_SHOULD_USE_CONTINUATION = true; var PR_TAB_WIDTH = 8; var PR_normalizedHtml; var PR; var prettyPrintOne; var prettyPrint; function _pr_isIE6() { var isIE6 = navigator && navigator.userAgent && /\bMSIE 6\./.test(navigator.userAgent); _pr_isIE6 = function() { return isIE6; }; return isIE6; } (function() { function wordSet(words) { words = words.split(/ /g); var set = {}; for (var i = words.length; --i >= 0; ) { var w = words[i]; if (w) { set[w] = null; } } return set; } var FLOW_CONTROL_KEYWORDS = "break continue do else for if return while "; var C_KEYWORDS = FLOW_CONTROL_KEYWORDS + "auto case char const default " + "double enum extern float goto int long register short signed sizeof " + "static struct switch typedef union unsigned void volatile "; var COMMON_KEYWORDS = C_KEYWORDS + "catch class delete false import " + "new operator private protected public this throw true try "; var CPP_KEYWORDS = COMMON_KEYWORDS + "alignof align_union asm axiom bool " + "concept concept_map const_cast constexpr decltype " + "dynamic_cast explicit export friend inline late_check " + "mutable namespace nullptr reinterpret_cast static_assert static_cast " + "template typeid typename typeof using virtual wchar_t where "; var JAVA_KEYWORDS = COMMON_KEYWORDS + "boolean byte extends final finally implements import instanceof null " + "native package strictfp super synchronized throws transient "; var CSHARP_KEYWORDS = JAVA_KEYWORDS + "as base by checked decimal delegate descending event " + "fixed foreach from group implicit in interface internal into is lock " + "object out override orderby params readonly ref sbyte sealed " + "stackalloc string select uint ulong unchecked unsafe ushort var "; var JSCRIPT_KEYWORDS = COMMON_KEYWORDS + "debugger eval export function get null set undefined var with " + "Infinity NaN "; var PERL_KEYWORDS = "caller delete die do dump elsif eval exit foreach for " + "goto if import last local my next no our print package redo require " + "sub undef unless until use wantarray while BEGIN END "; var PYTHON_KEYWORDS = FLOW_CONTROL_KEYWORDS + "and as assert class def del " + "elif except exec finally from global import in is lambda " + "nonlocal not or pass print raise try with yield " + "False True None "; var RUBY_KEYWORDS = FLOW_CONTROL_KEYWORDS + "alias and begin case class def" + " defined elsif end ensure false in module next nil not or redo rescue " + "retry self super then true undef unless until when yield BEGIN END "; var SH_KEYWORDS = FLOW_CONTROL_KEYWORDS + "case done elif esac eval fi " + "function in local set then until "; var ALL_KEYWORDS = (CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS + PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS); var PR_STRING = 'str'; var PR_KEYWORD = 'kwd'; var PR_COMMENT = 'com'; var PR_TYPE = 'typ'; var PR_LITERAL = 'lit'; var PR_PUNCTUATION = 'pun'; var PR_PLAIN = 'pln'; var PR_TAG = 'tag'; var PR_DECLARATION = 'dec'; var PR_SOURCE = 'src'; var PR_ATTRIB_NAME = 'atn'; var PR_ATTRIB_VALUE = 'atv'; var PR_NOCODE = 'nocode'; function isWordChar(ch) { return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'); } function spliceArrayInto(inserted, container, containerPosition, countReplaced) { inserted.unshift(containerPosition, countReplaced || 0); try { container.splice.apply(container, inserted); } finally { inserted.splice(0, 2); } } var REGEXP_PRECEDER_PATTERN = function() { var preceders = ["!", "!=", "!==", "#", "%", "%=", "&", "&&", "&&=", "&=", "(", "*", "*=", "+=", ",", "-=", "->", "/", "/=", ":", "::", ";", "<", "<<", "<<=", "<=", "=", "==", "===", ">", ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[", "^", "^=", "^^", "^^=", "{", "|", "|=", "||", "||=", "~", "break", "case", "continue", "delete", "do", "else", "finally", "instanceof", "return", "throw", "try", "typeof"]; var pattern = '(?:' + '(?:(?:^|[^0-9.])\\.{1,3})|' + '(?:(?:^|[^\\+])\\+)|' + '(?:(?:^|[^\\-])-)'; for (var i = 0; i < preceders.length; ++i) { var preceder = preceders[i]; if (isWordChar(preceder.charAt(0))) { pattern += '|\\b' + preceder; } else { pattern += '|' + preceder.replace(/([^=<>:&])/g, '\\$1'); } } pattern += '|^)\\s*$'; return new RegExp(pattern); } (); var pr_amp = /&/g; var pr_lt = //g; var pr_quot = /\"/g; function attribToHtml(str) { return str.replace(pr_amp, '&').replace(pr_lt, '<').replace(pr_gt, '>').replace(pr_quot, '"'); } function textToHtml(str) { return str.replace(pr_amp, '&').replace(pr_lt, '<').replace(pr_gt, '>'); } var pr_ltEnt = /</g; var pr_gtEnt = />/g; var pr_aposEnt = /'/g; var pr_quotEnt = /"/g; var pr_ampEnt = /&/g; var pr_nbspEnt = / /g; function htmlToText(html) { var pos = html.indexOf('&'); if (pos < 0) { return html; } for (--pos; (pos = html.indexOf('&#', pos + 1)) >= 0; ) { var end = html.indexOf(';', pos); if (end >= 0) { var num = html.substring(pos + 3, end); var radix = 10; if (num && num.charAt(0) === 'x') { num = num.substring(1); radix = 16; } var codePoint = parseInt(num, radix); if (!isNaN(codePoint)) { html = (html.substring(0, pos) + String.fromCharCode(codePoint) + html.substring(end + 1)); } } } return html.replace(pr_ltEnt, '<').replace(pr_gtEnt, '>').replace(pr_aposEnt, "'").replace(pr_quotEnt, '"').replace(pr_ampEnt, '&').replace(pr_nbspEnt, ' '); } function isRawContent(node) { return 'XMP' === node.tagName; } function normalizedHtml(node, out) { switch (node.nodeType) { case 1: var name = node.tagName.toLowerCase(); out.push('<', name); for (var i = 0; i < node.attributes.length; ++i) { var attr = node.attributes[i]; if (!attr.specified) { continue; } out.push(' '); normalizedHtml(attr, out); } out.push('>'); for (var child = node.firstChild; child; child = child.nextSibling) { normalizedHtml(child, out); } if (node.firstChild || !/^(?:br|link|img)$/.test(name)) { out.push('<\/', name, '>'); } break; case 2: out.push(node.name.toLowerCase(), '="', attribToHtml(node.value), '"'); break; case 3: case 4: out.push(textToHtml(node.nodeValue)); break; } } var PR_innerHtmlWorks = null; function getInnerHtml(node) { if (null === PR_innerHtmlWorks) { var testNode = document.createElement('PRE'); testNode.appendChild(document.createTextNode('\n')); PR_innerHtmlWorks = !/= 0; nSpaces -= SPACES.length) { out.push(SPACES.substring(0, nSpaces)); } pos = i + 1; break; case '\n': charInLine = 0; break; default: ++charInLine; } } if (!out) { return plainText; } out.push(plainText.substring(pos)); return out.join(''); }; } var pr_chunkPattern = /(?:[^<]+|||<\/?[a-zA-Z][^>]*>|<)/g; var pr_commentPrefix = /^|$)/, null], [PR_SOURCE, /^<\?[\s\S]*?(?:\?>|$)/, null], [PR_SOURCE, /^<%[\s\S]*?(?:%>|$)/, null], [PR_SOURCE, /^<(script|style|xmp)\b[^>]*>[\s\S]*?<\/\1\b[^>]*>/i, null], [PR_TAG, /^<\/?\w[^<>]*>/, null]]); var PR_SOURCE_CHUNK_PARTS = /^(<[^>]*>)([\s\S]*)(<\/[^>]*>)$/; function tokenizeMarkup(source) { var decorations = PR_MARKUP_LEXER(source); for (var i = 0; i < decorations.length; i += 2) { if (decorations[i + 1] === PR_SOURCE) { var start, end; start = decorations[i]; end = i + 2 < decorations.length ? decorations[i + 2] : source.length; var sourceChunk = source.substring(start, end); var match = sourceChunk.match(PR_SOURCE_CHUNK_PARTS); if (match) { decorations.splice(i, 2, start, PR_TAG, start + match[1].length, PR_SOURCE, start + match[1].length + (match[2] || '').length, PR_TAG); } } } return decorations; } var PR_TAG_LEXER = createSimpleLexer([[PR_ATTRIB_VALUE, /^\'[^\']*(?:\'|$)/, null, "'"], [PR_ATTRIB_VALUE, /^\"[^\"]*(?:\"|$)/, null, '"'], [PR_PUNCTUATION, /^[<>\/=]+/, null, '<>/=']], [[PR_TAG, /^[\w:\-]+/, /^= 2 && /^[\"\']/.test(attribValue) && attribValue.charAt(0) === attribValue.charAt(attribLen - 1)); var attribSource; var attribSourceStart; var attribSourceEnd; if (quoted) { attribSourceStart = start + 1; attribSourceEnd = end - 1; attribSource = attribValue; } else { attribSourceStart = start + 1; attribSourceEnd = end - 1; attribSource = attribValue.substring(1, attribValue.length - 1); } var attribSourceDecorations = decorateSource(attribSource); for (var j = 0, m = attribSourceDecorations.length; j < m; j += 2) { attribSourceDecorations[j] += attribSourceStart; } if (quoted) { attribSourceDecorations.push(attribSourceEnd, PR_ATTRIB_VALUE); spliceArrayInto(attribSourceDecorations, decorations, i + 2, 0); } else { spliceArrayInto(attribSourceDecorations, decorations, i, 2); } } nextValueIsSource = false; } } return decorations; } function decorateMarkup(sourceCode) { var decorations = tokenizeMarkup(sourceCode); decorations = splitTagAttributes(sourceCode, decorations); decorations = splitSourceNodes(sourceCode, decorations); decorations = splitSourceAttributes(sourceCode, decorations); return decorations; } function recombineTagsAndDecorations(sourceText, extractedTags, decorations) { var html = []; var outputIdx = 0; var openDecoration = null; var currentDecoration = null; var tagPos = 0; var decPos = 0; var tabExpander = makeTabExpander(PR_TAB_WIDTH); var adjacentSpaceRe = /([\r\n ]) /g; var startOrSpaceRe = /(^| ) /gm; var newlineRe = /\r\n?|\n/g; var trailingSpaceRe = /[ \r\n]$/; var lastWasSpace = true; function emitTextUpTo(sourceIdx) { if (sourceIdx > outputIdx) { if (openDecoration && openDecoration !== currentDecoration) { html.push(''); openDecoration = null; } if (!openDecoration && currentDecoration) { openDecoration = currentDecoration; html.push(''); } var htmlChunk = textToHtml(tabExpander(sourceText.substring(outputIdx, sourceIdx))).replace(lastWasSpace ? startOrSpaceRe : adjacentSpaceRe, '$1 '); lastWasSpace = trailingSpaceRe.test(htmlChunk); html.push(htmlChunk.replace(newlineRe, '
      ')); outputIdx = sourceIdx; } } while (true) { var outputTag; if (tagPos < extractedTags.length) { if (decPos < decorations.length) { outputTag = extractedTags[tagPos] <= decorations[decPos]; } else { outputTag = true; } } else { outputTag = false; } if (outputTag) { emitTextUpTo(extractedTags[tagPos]); if (openDecoration) { html.push('
      '); openDecoration = null; } html.push(extractedTags[tagPos + 1]); tagPos += 2; } else if (decPos < decorations.length) { emitTextUpTo(decorations[decPos]); currentDecoration = decorations[decPos + 1]; decPos += 2; } else { break; } } emitTextUpTo(sourceText.length); if (openDecoration) { html.push(''); } return html.join(''); } var langHandlerRegistry = {}; function registerLangHandler(handler, fileExtensions) { for (var i = fileExtensions.length; --i >= 0; ) { var ext = fileExtensions[i]; if (!langHandlerRegistry.hasOwnProperty(ext)) { langHandlerRegistry[ext] = handler; } else if ('console' in window) { console.log('cannot override language handler %s', ext); } } } registerLangHandler(decorateSource, ['default-code']); registerLangHandler(decorateMarkup, ['default-markup', 'html', 'htm', 'xhtml', 'xml', 'xsl']); registerLangHandler(sourceDecorator({ keywords: CPP_KEYWORDS, hashComments: true, cStyleComments: true }), ['c', 'cc', 'cpp', 'cs', 'cxx', 'cyc']); registerLangHandler(sourceDecorator({ keywords: JAVA_KEYWORDS, cStyleComments: true }), ['java']); registerLangHandler(sourceDecorator({ keywords: SH_KEYWORDS, hashComments: true, multiLineStrings: true }), ['bsh', 'csh', 'sh']); registerLangHandler(sourceDecorator({ keywords: PYTHON_KEYWORDS, hashComments: true, multiLineStrings: true, tripleQuotedStrings: true }), ['cv', 'py']); registerLangHandler(sourceDecorator({ keywords: PERL_KEYWORDS, hashComments: true, multiLineStrings: true, regexLiterals: true }), ['perl', 'pl', 'pm']); registerLangHandler(sourceDecorator({ keywords: RUBY_KEYWORDS, hashComments: true, multiLineStrings: true, regexLiterals: true }), ['rb']); registerLangHandler(sourceDecorator({ keywords: JSCRIPT_KEYWORDS, cStyleComments: true, regexLiterals: true }), ['js']); function prettyPrintOne(sourceCodeHtml, opt_langExtension) { try { var sourceAndExtractedTags = extractTags(sourceCodeHtml); var source = sourceAndExtractedTags.source; var extractedTags = sourceAndExtractedTags.tags; if (!langHandlerRegistry.hasOwnProperty(opt_langExtension)) { opt_langExtension = /^\s*= 0) { var langExtension = cs.className.match(/\blang-(\w+)\b/); if (langExtension) { langExtension = langExtension[1]; } var nested = false; for (var p = cs.parentNode; p; p = p.parentNode) { if ((p.tagName === 'pre' || p.tagName === 'code' || p.tagName === 'xmp') && p.className && p.className.indexOf('prettyprint') >= 0) { nested = true; break; } } if (!nested) { var content = getInnerHtml(cs); content = content.replace(/(?:\r\n?|\n)$/, ''); var newContent = prettyPrintOne(content, langExtension); if (!isRawContent(cs)) { cs.innerHTML = newContent; } else { var pre = document.createElement('PRE'); for (var i = 0; i < cs.attributes.length; ++i) { var a = cs.attributes[i]; if (a.specified) { var aname = a.name.toLowerCase(); if (aname === 'class') { pre.className = a.value; } else { pre.setAttribute(a.name, a.value); } } } pre.innerHTML = newContent; cs.parentNode.replaceChild(pre, cs); cs = pre; } if (isIE6 && cs.tagName === 'PRE') { var lineBreaks = cs.getElementsByTagName('br'); for (var j = lineBreaks.length; --j >= 0; ) { var lineBreak = lineBreaks[j]; lineBreak.parentNode.replaceChild(document.createTextNode('\r\n'), lineBreak); } } } } } if (k < elements.length) { setTimeout(doWork, 250); } else if (opt_whenDone) { opt_whenDone(); } } doWork(); } window['PR_normalizedHtml'] = normalizedHtml; window['prettyPrintOne'] = prettyPrintOne; window['prettyPrint'] = prettyPrint; window['PR'] = { 'createSimpleLexer': createSimpleLexer, 'registerLangHandler': registerLangHandler, 'sourceDecorator': sourceDecorator, 'PR_ATTRIB_NAME': PR_ATTRIB_NAME, 'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE, 'PR_COMMENT': PR_COMMENT, 'PR_DECLARATION': PR_DECLARATION, 'PR_KEYWORD': PR_KEYWORD, 'PR_LITERAL': PR_LITERAL, 'PR_NOCODE': PR_NOCODE, 'PR_PLAIN': PR_PLAIN, 'PR_PUNCTUATION': PR_PUNCTUATION, 'PR_SOURCE': PR_SOURCE, 'PR_STRING': PR_STRING, 'PR_TAG': PR_TAG, 'PR_TYPE': PR_TYPE }; })(); diff --git a/lms/askbot/skins/common/media/js/se_hilite.js b/lms/askbot/skins/common/media/js/se_hilite.js deleted file mode 100644 index 42e99c8e8f..0000000000 --- a/lms/askbot/skins/common/media/js/se_hilite.js +++ /dev/null @@ -1 +0,0 @@ -Hilite={elementid:"content",exact:true,max_nodes:1000,onload:true,style_name:"hilite",style_name_suffix:true,debug_referrer:""};Hilite.search_engines=[["google\\.","q"],["search\\.yahoo\\.","p"],["search\\.msn\\.","q"],["search\\.live\\.","query"],["search\\.aol\\.","userQuery"],["ask\\.com","q"],["altavista\\.","q"],["feedster\\.","q"],["search\\.lycos\\.","q"],["alltheweb\\.","q"],["technorati\\.com/search/([^\\?/]+)",1],["dogpile\\.com/info\\.dogpl/search/web/([^\\?/]+)",1,true]];Hilite.decodeReferrer=function(d){var g=null;var e=new RegExp("");for(var c=0;c2&&f[2]){a=decodeURIComponent(a)}a=a.replace(/\'|"/g,"");a=a.split(/[\s,\+\.]+/);return a}break}}return null};Hilite.decodeReferrerQS=function(f,d){var b=f.indexOf("?");var c;if(b>=0){var a=new String(f.substring(b+1));b=0;c=0;while((b>=0)&&((c=a.indexOf("=",b))>=0)){var e,g;e=a.substring(b,c);b=a.indexOf("&",c)+1;if(e==d){if(b<=0){return a.substring(c+1)}else{return a.substring(c+1,b-1)}}else{if(b<=0){return null}}}}return null};Hilite.hiliteElement=function(f,e){if(!e||f.childNodes.length==0){return}var c=new Array();for(var b=0;b0){c++;if(c>=Hilite.max_nodes){var b=function(){Hilite.walkElements(d,f,e)};setTimeout(b,50);return}if(d.nodeType==1){if(!a.test(d.tagName)&&d.childNodes.length>0){d=d.childNodes[0];f++;continue}}else{if(d.nodeType==3){d=e(d)}}if(d.nextSibling){d=d.nextSibling}else{while(f>0){d=d.parentNode;f--;if(d.nextSibling){d=d.nextSibling;break}}}}};if(Hilite.onload){if(window.attachEvent){window.attachEvent("onload",Hilite.hilite)}else{if(window.addEventListener){window.addEventListener("load",Hilite.hilite,false)}else{var __onload=window.onload;window.onload=function(){Hilite.hilite();__onload()}}}}; \ No newline at end of file diff --git a/lms/askbot/skins/common/media/js/se_hilite_src.js b/lms/askbot/skins/common/media/js/se_hilite_src.js deleted file mode 100644 index b604f15639..0000000000 --- a/lms/askbot/skins/common/media/js/se_hilite_src.js +++ /dev/null @@ -1,273 +0,0 @@ -/** - * Search Engine Keyword Highlight (http://fucoder.com/code/se-hilite/) - * - * This module can be imported by any HTML page, and it would analyse the - * referrer for search engine keywords, and then highlight those keywords on - * the page, by wrapping them around ... tags. - * Document can then define styles else where to provide visual feedbacks. - * - * Usage: - * - * In HTML. Add the following line towards the end of the document. - * - * - * - * In CSS, define the following style: - * - * .hilite { background-color: #ff0; } - * - * If Hilite.style_name_suffix is true, then define the follow styles: - * - * .hilite1 { background-color: #ff0; } - * .hilite2 { background-color: #f0f; } - * .hilite3 { background-color: #0ff; } - * .hilite4 ... - * - * @author Scott Yang - * @version 1.5 - */ - -// Configuration: -Hilite = { - /** - * Element ID to be highlighted. If set, then only content inside this DOM - * element will be highlighted, otherwise everything inside document.body - * will be searched. - */ - elementid: 'content', - - /** - * Whether we are matching an exact word. For example, searching for - * "highlight" will only match "highlight" but not "highlighting" if exact - * is set to true. - */ - exact: true, - - /** - * Maximum number of DOM nodes to test, before handing the control back to - * the GUI thread. This prevents locking up the UI when parsing and - * replacing inside a large document. - */ - max_nodes: 1000, - - /** - * Whether to automatically hilite a section of the HTML document, by - * binding the "Hilite.hilite()" to window.onload() event. If this - * attribute is set to false, you can still manually trigger the hilite by - * calling Hilite.hilite() in Javascript after document has been fully - * loaded. - */ - onload: true, - - /** - * Name of the style to be used. Default to 'hilite'. - */ - style_name: 'hilite', - - /** - * Whether to use different style names for different search keywords by - * appending a number starting from 1, i.e. hilite1, hilite2, etc. - */ - style_name_suffix: true, - - /** - * Set it to override the document.referrer string. Used for debugging - * only. - */ - debug_referrer: '' -}; - -Hilite.search_engines = [ - ['google\\.', 'q'], // Google - ['search\\.yahoo\\.', 'p'], // Yahoo - ['search\\.msn\\.', 'q'], // MSN - ['search\\.live\\.', 'query'], // MSN Live - ['search\\.aol\\.', 'userQuery'], // AOL - ['ask\\.com', 'q'], // Ask.com - ['altavista\\.', 'q'], // AltaVista - ['feedster\\.', 'q'], // Feedster - ['search\\.lycos\\.', 'q'], // Lycos - ['alltheweb\\.', 'q'], // AllTheWeb - ['technorati\\.com/search/([^\\?/]+)', 1], // Technorati - ['dogpile\\.com/info\\.dogpl/search/web/([^\\?/]+)', 1, true] // DogPile -]; - -/** - * Decode the referrer string and return a list of search keywords. - */ -Hilite.decodeReferrer = function(referrer) { - var query = null; - var regex = new RegExp(''); - - for (var i = 0; i < Hilite.search_engines.length; i ++) { - var se = Hilite.search_engines[i]; - regex.compile('^http://(www\\.)?' + se[0], 'i'); - var match = referrer.match(regex); - if (match) { - var result; - if (isNaN(se[1])) { - result = Hilite.decodeReferrerQS(referrer, se[1]); - } else { - result = match[se[1] + 1]; - } - if (result) { - result = decodeURIComponent(result); - // XXX: DogPile's URI requires decoding twice. - if (se.length > 2 && se[2]) - result = decodeURIComponent(result); - result = result.replace(/\'|"/g, ''); - result = result.split(/[\s,\+\.]+/); - return result; - } - break; - } - } - return null; -}; - -Hilite.decodeReferrerQS = function(referrer, match) { - var idx = referrer.indexOf('?'); - var idx2; - if (idx >= 0) { - var qs = new String(referrer.substring(idx + 1)); - idx = 0; - idx2 = 0; - while ((idx >= 0) && ((idx2 = qs.indexOf('=', idx)) >= 0)) { - var key, val; - key = qs.substring(idx, idx2); - idx = qs.indexOf('&', idx2) + 1; - if (key == match) { - if (idx <= 0) { - return qs.substring(idx2+1); - } else { - return qs.substring(idx2+1, idx - 1); - } - } - else if (idx <=0) { - return null; - } - } - } - return null; -}; - -/** - * Highlight a DOM element with a list of keywords. - */ -Hilite.hiliteElement = function(elm, query) { - if (!query || elm.childNodes.length == 0) - return; - - var qre = new Array(); - for (var i = 0; i < query.length; i ++) { - query[i] = query[i].toLowerCase(); - if (Hilite.exact) - qre.push('\\b'+query[i]+'\\b'); - else - qre.push(query[i]); - } - - qre = new RegExp(qre.join("|"), "i"); - - var stylemapper = {}; - for (var i = 0; i < query.length; i ++) { - if (Hilite.style_name_suffix) - stylemapper[query[i]] = Hilite.style_name+(i+1); - else - stylemapper[query[i]] = Hilite.style_name; - } - - var textproc = function(node) { - var match = qre.exec(node.data); - if (match) { - var val = match[0]; - var k = ''; - var node2 = node.splitText(match.index); - var node3 = node2.splitText(val.length); - var span = node.ownerDocument.createElement('SPAN'); - node.parentNode.replaceChild(span, node2); - span.className = stylemapper[val.toLowerCase()]; - span.appendChild(node2); - return span; - } else { - return node; - } - }; - Hilite.walkElements(elm.childNodes[0], 1, textproc); -}; - -/** - * Highlight a HTML document using keywords extracted from document.referrer. - * This is the main function to be called to perform search engine highlight - * on a document. - * - * Currently it would check for DOM element 'content', element 'container' and - * then document.body in that order, so it only highlights appropriate section - * on WordPress and Movable Type pages. - */ -Hilite.hilite = function() { - // If 'debug_referrer' then we will use that as our referrer string - // instead. - var q = Hilite.debug_referrer ? Hilite.debug_referrer : document.referrer; - var e = null; - q = Hilite.decodeReferrer(q); - if (q && ((Hilite.elementid && - (e = document.getElementById(Hilite.elementid))) || - (e = document.body))) - { - Hilite.hiliteElement(e, q); - } -}; - -Hilite.walkElements = function(node, depth, textproc) { - var skipre = /^(script|style|textarea)/i; - var count = 0; - while (node && depth > 0) { - count ++; - if (count >= Hilite.max_nodes) { - var handler = function() { - Hilite.walkElements(node, depth, textproc); - }; - setTimeout(handler, 50); - return; - } - - if (node.nodeType == 1) { // ELEMENT_NODE - if (!skipre.test(node.tagName) && node.childNodes.length > 0) { - node = node.childNodes[0]; - depth ++; - continue; - } - } else if (node.nodeType == 3) { // TEXT_NODE - node = textproc(node); - } - - if (node.nextSibling) { - node = node.nextSibling; - } else { - while (depth > 0) { - node = node.parentNode; - depth --; - if (node.nextSibling) { - node = node.nextSibling; - break; - } - } - } - } -}; - -// Trigger the highlight using the onload handler. -if (Hilite.onload) { - if (window.attachEvent) { - window.attachEvent('onload', Hilite.hilite); - } else if (window.addEventListener) { - window.addEventListener('load', Hilite.hilite, false); - } else { - var __onload = window.onload; - window.onload = function() { - Hilite.hilite(); - __onload(); - }; - } -} diff --git a/lms/askbot/skins/common/media/js/tag_selector.js b/lms/askbot/skins/common/media/js/tag_selector.js deleted file mode 100644 index 445a1e44e4..0000000000 --- a/lms/askbot/skins/common/media/js/tag_selector.js +++ /dev/null @@ -1,375 +0,0 @@ - -var TagDetailBox = function(box_type){ - WrappedElement.call(this); - this.box_type = box_type; - this._is_blank = true; - this._tags = new Array(); - this.wildcard = undefined; -}; -inherits(TagDetailBox, WrappedElement); - -TagDetailBox.prototype.createDom = function(){ - this._element = this.makeElement('div'); - this._element.addClass('wildcard-tags'); - this._headline = this.makeElement('p'); - this._headline.html(gettext('Tag "" matches:')); - this._element.append(this._headline); - this._tag_list_element = this.makeElement('ul'); - this._tag_list_element.addClass('tags'); - this._element.append(this._tag_list_element); - this._footer = this.makeElement('p'); - this._footer.css('clear', 'left'); - this._element.append(this._footer); - this._element.hide(); -}; - -TagDetailBox.prototype.belongsTo = function(wildcard){ - return (this.wildcard === wildcard); -}; - -TagDetailBox.prototype.isBlank = function(){ - return this._is_blank; -}; - -TagDetailBox.prototype.clear = function(){ - if (this.isBlank()){ - return; - } - this._is_blank = true; - this.getElement().hide(); - this.wildcard = null; - $.each(this._tags, function(idx, item){ - item.dispose(); - }); - this._tags = new Array(); -}; - -TagDetailBox.prototype.loadTags = function(wildcard, callback){ - var me = this; - $.ajax({ - type: 'GET', - dataType: 'json', - cache: false, - url: askbot['urls']['get_tags_by_wildcard'], - data: { wildcard: wildcard }, - success: callback, - failure: function(){ me._loading = false; } - }); -}; - -TagDetailBox.prototype.renderFor = function(wildcard){ - var me = this; - if (this._loading === true){ - return; - } - this._loading = true; - this.loadTags( - wildcard, - function(data, text_status, xhr){ - me._tag_names = data['tag_names']; - if (data['tag_count'] > 0){ - var wildcard_display = wildcard.replace(/\*$/, '✽'); - me._headline.find('span').html(wildcard_display); - $.each(me._tag_names, function(idx, name){ - var tag = new Tag(); - tag.setName(name); - //tag.setLinkable(false); - me._tags.push(tag); - me._tag_list_element.append(tag.getElement()); - }); - me._is_blank = false; - me.wildcard = wildcard; - var tag_count = data['tag_count']; - if (tag_count > 20){ - var fmts = gettext('and %s more, not shown...'); - var footer_text = interpolate(fmts, [tag_count - 20]); - me._footer.html(footer_text); - me._footer.show(); - } else { - me._footer.hide(); - } - me._element.show(); - } else { - me.clear(); - } - me._loading = false; - } - ); -} - -function pickedTags(){ - - var interestingTags = {}; - var ignoredTags = {}; - var interestingTagDetailBox = new TagDetailBox('interesting'); - var ignoredTagDetailBox = new TagDetailBox('ignored'); - - var sendAjax = function(tagnames, reason, action, callback){ - var url = ''; - if (action == 'add'){ - if (reason == 'good'){ - url = askbot['urls']['mark_interesting_tag']; - } - else { - url = askbot['urls']['mark_ignored_tag']; - } - } - else { - url = askbot['urls']['unmark_tag']; - } - - var call_settings = { - type:'POST', - url:url, - data: JSON.stringify({tagnames: tagnames}), - dataType: 'json' - }; - if (callback !== false){ - call_settings.success = callback; - } - $.ajax(call_settings); - }; - - var unpickTag = function(from_target, tagname, reason, send_ajax){ - //send ajax request to delete tag - var deleteTagLocally = function(){ - from_target[tagname].remove(); - delete from_target[tagname]; - }; - if (send_ajax){ - sendAjax( - [tagname], - reason, - 'remove', - function(){ - deleteTagLocally(); - liveSearch.refresh(); - } - ); - } - else { - deleteTagLocally(); - } - }; - - var getTagList = function(reason){ - var base_selector = '.marked-tags'; - if (reason === 'good'){ - var extra_selector = '.interesting'; - } else { - var extra_selector = '.ignored'; - } - return $(base_selector + extra_selector); - }; - - var getWildcardTagDetailBox = function(reason){ - if (reason === 'good'){ - return interestingTagDetailBox; - } else { - return ignoredTagDetailBox; - } - }; - - var handleWildcardTagClick = function(tag_name, reason){ - var detail_box = getWildcardTagDetailBox(reason); - var tag_box = getTagList(reason); - if (detail_box.isBlank()){ - detail_box.renderFor(tag_name); - } else if (detail_box.belongsTo(tag_name)){ - detail_box.clear();//toggle off - } else { - detail_box.clear();//redraw with new data - detail_box.renderFor(tag_name); - } - if (!detail_box.inDocument()){ - tag_box.after(detail_box.getElement()); - detail_box.enterDocument(); - } - }; - - var renderNewTags = function( - clean_tag_names, - reason, - to_target, - to_tag_container - ){ - $.each(clean_tag_names, function(idx, tag_name){ - var tag = new Tag(); - tag.setName(tag_name); - tag.setDeletable(true); - - if (/\*$/.test(tag_name)){ - tag.setLinkable(false); - var detail_box = getWildcardTagDetailBox(reason); - tag.setHandler(function(){ - handleWildcardTagClick(tag_name, reason); - if (detail_box.belongsTo(tag_name)){ - detail_box.clear(); - } - }); - var delete_handler = function(){ - unpickTag(to_target, tag_name, reason, true); - if (detail_box.belongsTo(tag_name)){ - detail_box.clear(); - } - } - } else { - var delete_handler = function(){ - unpickTag(to_target, tag_name, reason, true); - } - } - - tag.setDeleteHandler(delete_handler); - var tag_element = tag.getElement(); - to_tag_container.append(tag_element); - to_target[tag_name] = tag_element; - }); - }; - - var handlePickedTag = function(reason){ - var to_target = interestingTags; - var from_target = ignoredTags; - var to_tag_container; - if (reason == 'bad'){ - var input_sel = '#ignoredTagInput'; - to_target = ignoredTags; - from_target = interestingTags; - to_tag_container = $('div .tags.ignored'); - } - else if (reason == 'good'){ - var input_sel = '#interestingTagInput'; - to_tag_container = $('div .tags.interesting'); - } - else { - return; - } - - var tagnames = getUniqueWords($(input_sel).attr('value')); - - $.each(tagnames, function(idx, tagname){ - if (tagname in from_target){ - unpickTag(from_target,tagname,reason,false); - } - }); - - var clean_tagnames = []; - $.each(tagnames, function(idx, tagname){ - if (!(tagname in to_target)){ - clean_tagnames.push(tagname); - } - }); - - if (clean_tagnames.length > 0){ - //send ajax request to pick this tag - - sendAjax( - clean_tagnames, - reason, - 'add', - function(){ - renderNewTags( - clean_tagnames, - reason, - to_target, - to_tag_container - ); - $(input_sel).val(''); - liveSearch.refresh(); - } - ); - } - }; - - var collectPickedTags = function(section){ - if (section === 'interesting'){ - var reason = 'good'; - var tag_store = interestingTags; - } - else if (section === 'ignored'){ - var reason = 'bad'; - var tag_store = ignoredTags; - } - else { - return; - } - $('.' + section + '.tags.marked-tags .tag-left').each( - function(i,item){ - var tag = new Tag(); - tag.decorate($(item)); - tag.setDeleteHandler(function(){ - unpickTag( - tag_store, - tag.getName(), - reason, - true - ) - }); - if (tag.isWildcard()){ - tag.setHandler(function(){ - handleWildcardTagClick(tag.getName(), reason) - }); - } - tag_store[tag.getName()] = $(item); - } - ); - }; - - var setupTagFilterControl = function(control_type){ - $('#' + control_type + 'TagFilterControl input') - .unbind('click') - .click(function(){ - $.ajax({ - type: 'POST', - dataType: 'json', - cache: false, - url: askbot['urls']['set_tag_filter_strategy'], - data: { - filter_type: control_type, - filter_value: $(this).val() - }, - success: function(){ - liveSearch.refresh(); - } - }); - }); - }; - - var getResultCallback = function(reason){ - return function(){ - handlePickedTag(reason); - }; - }; - - return { - init: function(){ - collectPickedTags('interesting'); - collectPickedTags('ignored'); - setupTagFilterControl('display'); - var ac = new AutoCompleter({ - url: askbot['urls']['get_tag_list'], - preloadData: true, - minChars: 1, - useCache: true, - matchInside: true, - maxCacheLength: 100, - delay: 10 - }); - - - var interestingTagAc = $.extend(true, {}, ac); - interestingTagAc.decorate($('#interestingTagInput')); - interestingTagAc.setOption('onItemSelect', getResultCallback('good')); - - var ignoredTagAc = $.extend(true, {}, ac); - ignoredTagAc.decorate($('#ignoredTagInput')); - ignoredTagAc.setOption('onItemSelect', getResultCallback('bad')); - - $("#interestingTagAdd").click(getResultCallback('good')); - $("#ignoredTagAdd").click(getResultCallback('bad')); - } - }; -} - -$(document).ready( function(){ - pickedTags().init(); -}); diff --git a/lms/askbot/skins/common/media/js/user.js b/lms/askbot/skins/common/media/js/user.js deleted file mode 100644 index 5d205560f3..0000000000 --- a/lms/askbot/skins/common/media/js/user.js +++ /dev/null @@ -1,215 +0,0 @@ -$(document).ready(function(){ - - var getSelected = function(){ - - var id_list = new Array(); - var elements = $('#responses input:checked').parent(); - - elements.each(function(index, element){ - var id = $(element).attr('id').replace(/^re_/,''); - id_list.push(id); - }); - - if (id_list.length === 0){ - alert(gettext('Please select at least one item')); - } - - return {id_list: id_list, elements: elements}; - }; - - var submit = function(id_list, elements, action_type){ - if (action_type == 'delete' || action_type == 'mark_new' || action_type == 'mark_seen' || action_type == 'remove_flag' || action_type == 'close' || action_type == 'delete_post'){ - $.ajax({ - type: 'POST', - cache: false, - dataType: 'json', - data: JSON.stringify({memo_list: id_list, action_type: action_type}), - url: askbot['urls']['manageInbox'], - success: function(response_data){ - if (response_data['success'] === true){ - if (action_type == 'delete' || action_type == 'remove_flag' || action_type == 'close' || action_type == 'delete_post'){ - elements.remove(); - } - else if (action_type == 'mark_new'){ - elements.addClass('highlight'); - elements.addClass('new'); - elements.removeClass('seen'); - } - else if (action_type == 'mark_seen'){ - elements.removeClass('highlight'); - elements.addClass('seen'); - elements.removeClass('new'); - } - } - else { - showMessage($('#responses'), response_data['message']); - } - } - }); - } - }; - - var startAction = function(action_type){ - var data = getSelected(); - if (data['id_list'].length === 0){ - return; - } - if (action_type == 'delete'){ - msg = ngettext('Delete this notification?', - 'Delete these notifications?', data['id_list'].length); - if (confirm(msg) === false){ - return; - } - } - if (action_type == 'close'){ - msg = ngettext('Close this entry?', - 'Close these entries?', data['id_list'].length); - if (confirm(msg) === false){ - return; - } - } - if (action_type == 'remove_flag'){ - msg = ngettext('Remove all flags on this entry?', - 'Remove all flags on these entries?', data['id_list'].length); - if (confirm(msg) === false){ - return; - } - } - if (action_type == 'delete_post'){ - msg = ngettext('Delete this entry?', - 'Delete these entries?', data['id_list'].length); - if (confirm(msg) === false){ - return; - } - } - submit(data['id_list'], data['elements'], action_type); - }; - setupButtonEventHandlers($('#re_mark_seen'), function(){startAction('mark_seen')}); - setupButtonEventHandlers($('#re_mark_new'), function(){startAction('mark_new')}); - setupButtonEventHandlers($('#re_dismiss'), function(){startAction('delete')}); - setupButtonEventHandlers($('#re_remove_flag'), function(){startAction('remove_flag')}); - setupButtonEventHandlers($('#re_close'), function(){startAction('close')}); - setupButtonEventHandlers($('#re_delete_post'), function(){startAction('delete_post')}); - setupButtonEventHandlers( - $('#sel_all'), - function(){ - setCheckBoxesIn('#responses .new', true); - setCheckBoxesIn('#responses .seen', true); - } - ); - setupButtonEventHandlers( - $('#sel_seen'), - function(){ - setCheckBoxesIn('#responses .seen', true); - } - ); - setupButtonEventHandlers( - $('#sel_new'), - function(){ - setCheckBoxesIn('#responses .new', true); - } - ); - setupButtonEventHandlers( - $('#sel_none'), - function(){ - setCheckBoxesIn('#responses .new', false); - setCheckBoxesIn('#responses .seen', false); - } - ); - - setupButtonEventHandlers($('.re_expand'), - function(e){ - e.preventDefault(); - var re_snippet = $(this).find(".re_snippet:first") - var re_content = $(this).find(".re_content:first") - $(re_snippet).slideToggle(); - $(re_content).slideToggle(); - } - ); -}); - -/** - * @constructor - * allows to follow/unfollow users - */ -var FollowUser = function(){ - WrappedElement.call(this); - this._user_id = null; - this._user_name = null; -}; -inherits(FollowUser, WrappedElement); - -/** - * @param {string} user_name - */ -FollowUser.prototype.setUserName = function(user_name){ - this._user_name = user_name; -}; - -FollowUser.prototype.decorate = function(element){ - this._element = element; - this._user_id = parseInt(element.attr('id').split('-').pop()); - this._available_action = element.children().hasClass('follow') ? 'follow':'unfollow'; - var me = this; - setupButtonEventHandlers(this._element, function(){ me.go() }); -}; - -FollowUser.prototype.go = function(){ - if (askbot['data']['userIsAuthenticated'] === false){ - var message = gettext('Please signin to follow %(username)s'); - var message_data = { - signin_url: askbot['urls']['user_signin'] + '?next=' + window.location.href, - username: this._user_name - } - message = interpolate(message, message_data, true); - showMessage(this._element, message); - return; - } - var user_id = this._user_id; - if (this._available_action === 'follow'){ - var url = askbot['urls']['follow_user']; - } else { - var url = askbot['urls']['unfollow_user']; - } - var me = this; - $.ajax({ - type: 'POST', - cache: false, - dataType: 'json', - url: url.replace('{{userId}}', user_id), - success: function(){ me.toggleState() } - }); -}; - -FollowUser.prototype.toggleState = function(){ - if (this._available_action === 'follow'){ - this._available_action = 'unfollow'; - var unfollow_div = document.createElement('div'); - unfollow_div.setAttribute('class', 'unfollow'); - var red_div = document.createElement('div'); - red_div.setAttribute('class', 'unfollow-red'); - red_div.innerHTML = interpolate(gettext('unfollow %s'), [this._user_name]); - var green_div = document.createElement('div'); - green_div.setAttribute('class', 'unfollow-green'); - green_div.innerHTML = interpolate(gettext('following %s'), [this._user_name]); - unfollow_div.appendChild(red_div); - unfollow_div.appendChild(green_div); - this._element.html(unfollow_div); - } else { - var follow_div = document.createElement('div'); - follow_div.innerHTML = interpolate(gettext('follow %s'), [this._user_name]); - follow_div.setAttribute('class', 'follow'); - this._available_action = 'follow'; - this._element.html(follow_div); - } -}; - -(function(){ - var fbtn = $('.follow-toggle'); - if (fbtn.length === 1){ - var follow_user = new FollowUser(); - follow_user.decorate(fbtn); - follow_user.setUserName(askbot['data']['viewUserName']); - } -})(); - diff --git a/lms/askbot/skins/common/media/js/utils.js b/lms/askbot/skins/common/media/js/utils.js deleted file mode 100644 index 290ade1d8e..0000000000 --- a/lms/askbot/skins/common/media/js/utils.js +++ /dev/null @@ -1,493 +0,0 @@ -//var $, scriptUrl, askbotSkin -var mediaUrl = function(resource){ - return askbot['settings']['static_url'] + askbotSkin + '/' + resource; -}; - -var cleanUrl = function(url){ - var re = new RegExp('//', 'g'); - return url.replace(re, '/'); -}; - -var copyAltToTitle = function(sel){ - sel.attr('title', sel.attr('alt')); -}; - -var animateHashes = function(){ - var id_value = window.location.hash; - // if (id_value != ""){ - // var previous_color = $(id_value).css('background-color'); - // $(id_value).css('backgroundColor', '#FFF8C6'); - // $(id_value) - // .animate({backgroundColor: '#ff7f2a'}, 500) - // .animate({backgroundColor: '#FFF8C6'}, 500, function(){ - // $(id_value).css('backgroundColor', previous_color); - // }); - // } -}; - -var getUniqueWords = function(value){ - var words = $.trim(value).split(/\s+/); - var uniques = new Object(); - var out = new Array(); - $.each(words, function(idx, item){ - if (!(item in uniques)){ - uniques[item] = 1; - out.push(item); - }; - }); - return out; -}; - -var showMessage = function(element, msg, where) { - var div = $('

      ' + msg + '

      (' + - gettext('click to close') + ')
      '); - - div.click(function(event) { - $(".vote-notification").fadeOut("fast", function() { $(this).remove(); }); - }); - - var where = where || 'parent'; - - if (where == 'parent'){ - element.parent().append(div); - } - else { - element.after(div); - } - - div.fadeIn("fast"); -}; - -//outer html hack - https://github.com/brandonaaron/jquery-outerhtml/ -(function($){ - var div; - $.fn.outerHTML = function() { - var elem = this[0], - tmp; - return !elem ? null - : typeof ( tmp = elem.outerHTML ) === 'string' ? tmp - : ( div = div || $('
      ') ).html( this.eq(0).clone() ).html(); - }; -})(jQuery); - -var makeKeyHandler = function(key, callback){ - return function(e){ - if ((e.which && e.which == key) || (e.keyCode && e.keyCode == key)){ - if(!e.shiftKey){ - callback(); - return false; - } - } - }; -}; - - -var setupButtonEventHandlers = function(button, callback){ - button.keydown(makeKeyHandler(13, callback)); - button.click(callback); -}; - - -var putCursorAtEnd = function(element){ - var el = element.get()[0]; - if (el.setSelectionRange){ - var len = element.val().length * 2; - el.setSelectionRange(len, len); - } - else{ - element.val(element.val()); - } - element.scrollTop = 999999; -}; - -var setCheckBoxesIn = function(selector, value){ - return $(selector + '> input[type=checkbox]').attr('checked', value); -}; - -var notify = function() { - var visible = false; - return { - show: function(html) { - if (html) { - $("body").css("margin-top", "2.2em"); - $(".notify span").html(html); - } - $(".notify").fadeIn("slow"); - visible = true; - }, - close: function(doPostback) { - if (doPostback) { - $.post( - askbot['urls']['mark_read_message'], - { formdata: "required" } - ); - } - $(".notify").fadeOut("fast"); - $("body").css("margin-top", "0"); - visible = false; - }, - isVisible: function() { return visible; } - }; -} (); - -/* **************************************************** */ -// Search query-string manipulation utils -/* **************************************************** */ - -var QSutils = QSutils || {}; // TODO: unit-test me - -QSutils.TAG_SEP = ','; // should match const.TAG_SEP; TODO: maybe prepopulate this in javascript.html ? - -QSutils.get_query_string_selector_value = function (query_string, selector) { - var params = query_string.split('/'); - for(var i=0; i -1) { - tags.splice(pos, 1); /* array.splice() works in-place */ - } - - if(tags.length === 0) { - return this.patch_query_string(query_string, 'tags:', true); - } else { - return this.patch_query_string(query_string, 'tags:' + tags.join(this.TAG_SEP)); - } -}; - -QSutils.add_search_tag = function(query_string, tag){ - var tag_string = this.get_query_string_selector_value(query_string, 'tags'); - tag = encodeURIComponent(tag); - if(!tag_string) { - tag_string = tag; - } else { - tag_string = [tag_string, tag].join(this.TAG_SEP); - } - - return this.patch_query_string(query_string, 'tags:' + tag_string); -}; - - -/* **************************************************** */ - -/* some google closure-like code for the ui elements */ -var inherits = function(childCtor, parentCtor) { - /** @constructor taken from google closure */ - function tempCtor() {}; - tempCtor.prototype = parentCtor.prototype; - childCtor.superClass_ = parentCtor.prototype; - childCtor.prototype = new tempCtor(); - childCtor.prototype.constructor = childCtor; -}; - -/* wrapper around jQuery object */ -var WrappedElement = function(){ - this._element = null; - this._in_document = false; -}; -WrappedElement.prototype.setElement = function(element){ - this._element = element; -}; -WrappedElement.prototype.createDom = function(){ - this._element = $('
      '); -}; -WrappedElement.prototype.getElement = function(){ - if (this._element === null){ - this.createDom(); - } - return this._element; -}; -WrappedElement.prototype.inDocument = function(){ - return this._in_document; -}; -WrappedElement.prototype.enterDocument = function(){ - return this._in_document = true; -}; -WrappedElement.prototype.hasElement = function(){ - return (this._element !== null); -}; -WrappedElement.prototype.makeElement = function(html_tag){ - //makes jQuery element with tags - return $('<' + html_tag + '>'); -}; -WrappedElement.prototype.dispose = function(){ - this._element.remove(); - this._in_document = false; -}; - -var SimpleControl = function(){ - WrappedElement.call(this); - this._handler = null; - this._title = null; -}; -inherits(SimpleControl, WrappedElement); - -SimpleControl.prototype.setHandler = function(handler){ - this._handler = handler; - if (this.hasElement()){ - this.setHandlerInternal(); - } -}; - -SimpleControl.prototype.setHandlerInternal = function(){ - //default internal setHandler behavior - setupButtonEventHandlers(this._element, this._handler); -}; - -SimpleControl.prototype.setTitle = function(title){ - this._title = title; -}; - -var EditLink = function(){ - SimpleControl.call(this) -}; -inherits(EditLink, SimpleControl); - -EditLink.prototype.createDom = function(){ - var element = $(''); - element.addClass('edit edit-icon'); - this.decorate(element); -}; - -EditLink.prototype.decorate = function(element){ - this._element = element; - this._element.attr('title', gettext('click to edit this comment')); - this._element.html(gettext('✒')); - this.setHandlerInternal(); -}; - -var DeleteIcon = function(title){ - SimpleControl.call(this); - this._title = title; -}; -inherits(DeleteIcon, SimpleControl); - -DeleteIcon.prototype.decorate = function(element){ - this._element = element; - this._element.attr('class', 'delete-icon'); - this._element.attr('title', this._title); - this._element.html(gettext('✖')); - if (this._handler !== null){ - this.setHandlerInternal(); - } -}; - -DeleteIcon.prototype.setHandlerInternal = function(){ - setupButtonEventHandlers(this._element, this._handler); -}; - -DeleteIcon.prototype.createDom = function(){ - this._element = this.makeElement('span'); - this.decorate(this._element); -}; - -var Tag = function(){ - SimpleControl.call(this); - this._deletable = false; - this._delete_handler = null; - this._delete_icon_title = null; - this._tag_title = null; - this._name = null; - this._url_params = null; - this._inner_html_tag = 'a'; - this._html_tag = 'li'; -} -inherits(Tag, SimpleControl); - -Tag.prototype.setName = function(name){ - this._name = name; -}; - -Tag.prototype.getName = function(){ - return this._name; -}; - -Tag.prototype.setHtmlTag = function(html_tag){ - this._html_tag = html_tag; -}; - -Tag.prototype.setDeletable = function(is_deletable){ - this._deletable = is_deletable; -}; - -Tag.prototype.setLinkable = function(is_linkable){ - if (is_linkable === true){ - this._inner_html_tag = 'a'; - } else { - this._inner_html_tag = 'span'; - } -}; - -Tag.prototype.isLinkable = function(){ - return (this._inner_html_tag === 'a'); -}; - -Tag.prototype.isDeletable = function(){ - return this._deletable; -}; - -Tag.prototype.isWildcard = function(){ - return (this.getName().substr(-1) === '*'); -}; - -Tag.prototype.setUrlParams = function(url_params){ - this._url_params = url_params; -}; - -Tag.prototype.setHandlerInternal = function(){ - setupButtonEventHandlers(this._element.find('.tag'), this._handler); -}; - -/* delete handler will be specific to the task */ -Tag.prototype.setDeleteHandler = function(delete_handler){ - this._delete_handler = delete_handler; - if (this.hasElement() && this.isDeletable()){ - this._delete_icon.setHandler(delete_handler); - } -}; - -Tag.prototype.getDeleteHandler = function(){ - return this._delete_handler; -}; - -Tag.prototype.setDeleteIconTitle = function(title){ - this._delete_icon_title = title; -}; - -Tag.prototype.decorate = function(element){ - this._element = element; - var del = element.find('.delete-icon'); - if (del.length === 1){ - this.setDeletable(true); - this._delete_icon = new DeleteIcon(); - if (this._delete_icon_title != null){ - this._delete_icon.setTitle(this._delete_icon_title); - } - //do not set the delete handler here - this._delete_icon.decorate(del); - } - this._inner_element = this._element.find('.tag'); - this._name = this.decodeTagName($.trim(this._inner_element.html())); - if (this._title !== null){ - this._inner_element.attr('title', this._title); - } - if (this._handler !== null){ - this.setHandlerInternal(); - } -}; - -Tag.prototype.getDisplayTagName = function(){ - //replaces the trailing * symbol with the unicode asterisk - return this._name.replace(/\*$/, '✽'); -}; - -Tag.prototype.decodeTagName = function(encoded_name){ - return encoded_name.replace('\u273d', '*'); -}; - -Tag.prototype.createDom = function(){ - this._element = this.makeElement(this._html_tag); - //render the outer element - if (this._deletable){ - this._element.addClass('deletable-tag'); - } - this._element.addClass('tag-left'); - - //render the inner element - this._inner_element = this.makeElement(this._inner_html_tag); - if (this.isLinkable()){ - var url = askbot['urls']['questions']; - var flag = false - var author = '' - if (this._url_params){ - url += QSutils.add_search_tag(this._url_params, this.getName()); - } - this._inner_element.attr('href', url); - } - this._inner_element.addClass('tag tag-right'); - this._inner_element.attr('rel', 'tag'); - if (this._title === null){ - this.setTitle( - interpolate(gettext("see questions tagged '%s'"), [this.getName()]) - ); - } - this._inner_element.attr('title', this._title); - this._inner_element.html(this.getDisplayTagName()); - - this._element.append(this._inner_element); - - if (!this.isLinkable() && this._handler !== null){ - this.setHandlerInternal(); - } - - if (this._deletable){ - this._delete_icon = new DeleteIcon(); - this._delete_icon.setHandler(this.getDeleteHandler()); - if (this._delete_icon_title !== null){ - this._delete_icon.setTitle(this._delete_icon_title); - } - var del_icon_elem = this._delete_icon.getElement(); - del_icon_elem.text('✕'); // HACK by Tomasz - this._element.append(del_icon_elem); - } -}; - -//Search Engine Keyword Highlight with Javascript -//http://scott.yang.id.au/code/se-hilite/ -Hilite={elementid:"content",exact:true,max_nodes:1000,onload:true,style_name:"hilite",style_name_suffix:true,debug_referrer:""};Hilite.search_engines=[["local","q"],["cnprog\\.","q"],["google\\.","q"],["search\\.yahoo\\.","p"],["search\\.msn\\.","q"],["search\\.live\\.","query"],["search\\.aol\\.","userQuery"],["ask\\.com","q"],["altavista\\.","q"],["feedster\\.","q"],["search\\.lycos\\.","q"],["alltheweb\\.","q"],["technorati\\.com/search/([^\\?/]+)",1],["dogpile\\.com/info\\.dogpl/search/web/([^\\?/]+)",1,true]];Hilite.decodeReferrer=function(d){var g=null;var e=new RegExp("");for(var c=0;c2&&f[2]){a=decodeURIComponent(a)}a=a.replace(/\'|"/g,"");a=a.split(/[\s,\+\.]+/);return a}break}}return null};Hilite.decodeReferrerQS=function(f,d){var b=f.indexOf("?");var c;if(b>=0){var a=new String(f.substring(b+1));b=0;c=0;while((b>=0)&&((c=a.indexOf("=",b))>=0)){var e,g;e=a.substring(b,c);b=a.indexOf("&",c)+1;if(e==d){if(b<=0){return a.substring(c+1)}else{return a.substring(c+1,b-1)}}else{if(b<=0){return null}}}}return null};Hilite.hiliteElement=function(f,e){if(!e||f.childNodes.length==0){return}var c=new Array();for(var b=0;b0){c++;if(c>=Hilite.max_nodes){var b=function(){Hilite.walkElements(d,f,e)};setTimeout(b,50);return}if(d.nodeType==1){if(!a.test(d.tagName)&&d.childNodes.length>0){d=d.childNodes[0];f++;continue}}else{if(d.nodeType==3){d=e(d)}}if(d.nextSibling){d=d.nextSibling}else{while(f>0){d=d.parentNode;f--;if(d.nextSibling){d=d.nextSibling;break}}}}};if(Hilite.onload){if(window.attachEvent){window.attachEvent("onload",Hilite.hilite)}else{if(window.addEventListener){window.addEventListener("load",Hilite.hilite,false)}else{var __onload=window.onload;window.onload=function(){Hilite.hilite();__onload()}}}}; -/* json2.js by D. Crockford */ -if(!this.JSON){this.JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i
      ").hide();if(this.options.resultsClass){this._results.addClass(this.options.resultsClass)}this._results.css({position:"absolute"});$("body").append(this._results);this.setEventHandlers()};AutoCompleter.prototype.setEventHandlers=function(){var a=this;a._element.keydown(function(b){a.lastKeyPressed_=b.keyCode;switch(a.lastKeyPressed_){case 38:b.preventDefault();if(a.active_){a.focusPrev()}else{a.activate()}return false;break;case 40:b.preventDefault();if(a.active_){a.focusNext()}else{a.activate()}return false;break;case 9:case 13:if(a.active_){b.preventDefault();a.selectCurrent();return false}break;case 27:if(a.active_){b.preventDefault();a.finish();return false}break;default:a.activate()}});a._element.blur(function(){if(a.finishOnBlur_){setTimeout(function(){a.finish()},200)}})};AutoCompleter.prototype.position=function(){var a=this._element.offset();this._results.css({top:a.top+this._element.outerHeight(),left:a.left})};AutoCompleter.prototype.cacheRead=function(d){var f,c,b,a,e;if(this.options.useCache){d=String(d);f=d.length;if(this.options.matchSubset){c=1}else{c=f}while(c<=f){if(this.options.matchInside){a=f-c}else{a=0}e=0;while(e<=a){b=d.substr(0,c);if(this.cacheData_[b]!==undefined){return this.cacheData_[b]}e++}c++}}return false};AutoCompleter.prototype.cacheWrite=function(a,b){if(this.options.useCache){if(this.cacheLength_>=this.options.maxCacheLength){this.cacheFlush()}a=String(a);if(this.cacheData_[a]!==undefined){this.cacheLength_++}return this.cacheData_[a]=b}return false};AutoCompleter.prototype.cacheFlush=function(){this.cacheData_={};this.cacheLength_=0};AutoCompleter.prototype.callHook=function(c,b){var a=this.options[c];if(a&&$.isFunction(a)){return a(b,this)}return false};AutoCompleter.prototype.activate=function(){var b=this;var a=function(){b.activateNow()};var c=parseInt(this.options.delay,10);if(isNaN(c)||c<=0){c=250}if(this.keyTimeout_){clearTimeout(this.keyTimeout_)}this.keyTimeout_=setTimeout(a,c)};AutoCompleter.prototype.activateNow=function(){var a=this.getValue();if(a!==this.lastProcessedValue_&&a!==this.lastSelectedValue_){if(a.length>=this.options.minChars){this.active_=true;this.lastProcessedValue_=a;this.fetchData(a)}}};AutoCompleter.prototype.fetchData=function(b){if(this.options.data){this.filterAndShowResults(this.options.data,b)}else{var a=this;this.fetchRemoteData(b,function(c){a.filterAndShowResults(c,b)})}};AutoCompleter.prototype.fetchRemoteData=function(c,e){var d=this.cacheRead(c);if(d){e(d)}else{var a=this;if(this._element){this._element.addClass(this.options.loadingClass)}var b=function(g){var f=false;if(g!==false){f=a.parseRemoteData(g);a.options.data=f;a.cacheWrite(c,f)}if(a._element){a._element.removeClass(a.options.loadingClass)}e(f)};$.ajax({url:this.makeUrl(c),success:b,error:function(){b(false)}})}};AutoCompleter.prototype.setOption=function(a,b){this.options[a]=b};AutoCompleter.prototype.setExtraParam=function(b,c){var a=$.trim(String(b));if(a){if(!this.options.extraParams){this.options.extraParams={}}if(this.options.extraParams[a]!==c){this.options.extraParams[a]=c;this.cacheFlush()}}};AutoCompleter.prototype.makeUrl=function(e){var a=this;var b=this.options.url;var d=$.extend({},this.options.extraParams);if(this.options.queryParamName===false){b+=encodeURIComponent(e)}else{d[this.options.queryParamName]=e}if(this.options.limitParamName&&this.options.maxItemsToShow){d[this.options.limitParamName]=this.options.maxItemsToShow}var c=[];$.each(d,function(f,g){c.push(a.makeUrlParam(f,g))});if(c.length){b+=b.indexOf("?")==-1?"?":"&";b+=c.join("&")}return b};AutoCompleter.prototype.makeUrlParam=function(a,b){return String(a)+"="+encodeURIComponent(b)};AutoCompleter.prototype.splitText=function(a){return String(a).replace(/(\r\n|\r|\n)/g,"\n").split(this.options.lineSeparator)};AutoCompleter.prototype.parseRemoteData=function(c){var h,b,f,d,g;var e=[];var b=this.splitText(c);for(f=0;f""){if(typeof c!=="object"){c={}}if(this.options.filterResults){h=String(b);g=String(l);if(!this.options.matchCase){h=h.toLowerCase();g=g.toLowerCase()}a=g.indexOf(h);if(this.options.matchInside){a=a>-1}else{a=a===0}}else{a=true}if(a){f.push({value:l,data:c})}}}if(this.options.sortResults){f=this.sortResults(f,b)}if(this.options.maxItemsToShow>0&&this.options.maxItemsToShowc){return 1}if(d");var f,l,j,a,h=false,d=false;var c=e.length;for(f=0;f"+this.showResult(l.value,l.data)+"");j.data("value",l.value);j.data("data",l.data);j.click(function(){var i=$(this);k.selectItem(i)}).mousedown(function(){k.finishOnBlur_=false}).mouseup(function(){k.finishOnBlur_=true});g.append(j);if(h===false){h=String(l.value);d=j;j.addClass(this.options.firstItemClass)}if(f==c-1){j.addClass(this.options.lastItemClass)}}this.position();this._results.html(g).show();a=this._results.outerWidth()-this._results.width();this._results.width(this._element.outerWidth()-a);$("li",this._results).hover(function(){k.focusItem(this)},function(){});if(this.autoFill(h,b)){this.focusItem(d)}};AutoCompleter.prototype.showResult=function(b,a){if($.isFunction(this.options.showResult)){return this.options.showResult(b,a)}else{return b}};AutoCompleter.prototype.autoFill=function(e,c){var b,a,d,f;if(this.options.autoFill&&this.lastKeyPressed_!=8){b=String(e).toLowerCase();a=String(c).toLowerCase();d=e.length;f=c.length;if(b.substr(0,f)===a){this._element.val(e);this.selectRange(f,d);return true}}return false};AutoCompleter.prototype.focusNext=function(){this.focusMove(+1)};AutoCompleter.prototype.focusPrev=function(){this.focusMove(-1)};AutoCompleter.prototype.focusMove=function(a){var b,c=$("li",this._results);a=parseInt(a,10);for(var b=0;b=c.length){b=c.length-1}}a=$(c[b])}else{a=$(b)}if(a){a.addClass(this.selectClass_).addClass(this.options.selectClass)}}};AutoCompleter.prototype.selectCurrent=function(){var a=$("li."+this.selectClass_,this._results);if(a.length==1){this.selectItem(a)}else{this.finish()}};AutoCompleter.prototype.selectItem=function(d){var c=d.data("value");var b=d.data("data");var a=this.displayValue(c,b);this.lastProcessedValue_=a;this.lastSelectedValue_=a;this.setValue(a);this.setCaret(a.length);this.callHook("onItemSelect",{value:c,data:b});this.finish()};AutoCompleter.prototype.isContentChar=function(a){if(a.match(this.options.stopCharRegex)){return false}else{if(a===this.options.multipleSeparator){return false}else{return true}}};AutoCompleter.prototype.getValue=function(){var c=this._element.getSelection();var d=this._element.val();var f=c.start;var e=f;for(cpos=f;cpos>=0;cpos=cpos-1){if(cpos===d.length){continue}var b=d.charAt(cpos);if(!this.isContentChar(b)){break}e=cpos}var a=f;for(cpos=f;cpos9gP2NC6d1_jGX# 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[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|\Z)/gm,function(K,M,L,J,I){M=M.toLowerCase();a[M]=h(L);if(J){return J+I}else{if(I){j[M]=I.replace(/"/g,""")}}return""});return H};var m=function(J){J=J.replace(/\n/g,"\n\n");var I="p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del";var H="p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math";J=J.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm,x);J=J.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)\b[^\r]*?.*<\/\2>[ \t]*(?=\n+)\n)/gm,x);J=J.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,x);J=J.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,x);J=J.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,x);J=J.replace(/\n\n/g,"\n");return J};var x=function(H,I){var J=I;J=J.replace(/\n\n/g,"\n");J=J.replace(/^\n/,"");J=J.replace(/\n+$/g,"");J="\n\n~K"+(A.push(J)-1)+"K\n\n";return J};var G=function(I){I=f(I);var H=o("
      ");I=I.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,H);I=I.replace(/^[ ]{0,2}([ ]?-[ ]?){3,}[ \t]*$/gm,H);I=I.replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \t]*$/gm,H);I=E(I);I=b(I);I=u(I);I=m(I);I=g(I);return I};var r=function(H){H=C(H);H=l(H);H=e(H);H=F(H);H=y(H);H=n(H);H=h(H);H=c(H);H=H.replace(/ +\n/g,"
      \n");return H};var l=function(I){var H=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi;I=I.replace(H,function(K){var J=K.replace(/(.)<\/?code>(?=.)/g,"$1`");J=w(J,"\\`*_");return J});return I};var y=function(H){H=H.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,D);H=H.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,D);H=H.replace(/(\[([^\[\]]+)\])()()()()()/g,D);return H};var D=function(N,T,S,R,Q,P,M,L){if(L==undefined){L=""}var K=T;var I=S;var J=R.toLowerCase();var H=Q;var O=L;if(H==""){if(J==""){J=I.toLowerCase().replace(/ ?\n/g," ")}H="#"+J;if(a[J]!=undefined){H=a[J];if(j[J]!=undefined){O=j[J]}}else{if(K.search(/\(\s*\)$/m)>-1){H=""}else{return K}}}H=w(H,"*_");var U='";return U};var F=function(H){H=H.replace(/(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,t);H=H.replace(/(!\[(.*?)\]\s?\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,t);return H};var t=function(N,T,S,R,Q,P,M,L){var K=T;var J=S;var I=R.toLowerCase();var H=Q;var O=L;if(!O){O=""}if(H==""){if(I==""){I=J.toLowerCase().replace(/ ?\n/g," ")}H="#"+I;if(a[I]!=undefined){H=a[I];if(j[I]!=undefined){O=j[I]}}else{return K}}J=J.replace(/"/g,""");H=w(H,"*_");var U=''+J+'"+r(J)+"")});H=H.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(J,I){return o("

      "+r(I)+"

      ")});H=H.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(I,L,K){var J=L.length;return o(""+r(K)+"")});return H};var p;var E=function(I){I+="~0";var H=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;if(i){I=I.replace(H,function(K,N,M){var O=N;var L=(M.search(/[*+-]/g)>-1)?"ul":"ol";O=O.replace(/\n{2,}/g,"\n\n\n");var J=p(O);J=J.replace(/\s+$/,"");J="<"+L+">"+J+"\n";return J})}else{H=/(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g;I=I.replace(H,function(L,P,N,K){var O=P;var Q=N;var M=(K.search(/[*+-]/g)>-1)?"ul":"ol";var Q=Q.replace(/\n{2,}/g,"\n\n\n");var J=p(Q);J=O+"<"+M+">\n"+J+"\n";return J})}I=I.replace(/~0/,"");return I};p=function(H){i++;H=H.replace(/\n{2,}$/,"\n");H+="~0";H=H.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm,function(K,M,L,J,I){var O=I;var N=M;var P=L;if(N||(O.search(/\n{2,}/)>-1)){O=G(s(O))}else{O=E(s(O));O=O.replace(/\n$/,"");O=r(O)}return"
    • "+O+"
    • \n"});H=H.replace(/~0/g,"");i--;return H};var b=function(H){H+="~0";H=H.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,function(I,K,J){var L=K;var M=J;L=v(s(L));L=z(L);L=L.replace(/^\n+/g,"");L=L.replace(/\n+$/g,"");L="
      "+L+"\n
      ";return o(L)+M});H=H.replace(/~0/,"");return H};var o=function(H){H=H.replace(/(^\n+|\n+$)/g,"");return"\n\n~K"+(A.push(H)-1)+"K\n\n"};var C=function(H){H=H.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(K,M,L,J,I){var N=J;N=N.replace(/^([ \t]*)/g,"");N=N.replace(/[ \t]*$/g,"");N=v(N);return M+""+N+""});return H};var v=function(H){H=H.replace(/&/g,"&");H=H.replace(//g,">");H=w(H,"*_{}[]\\",false);return H};var c=function(H){H=H.replace(/(\*\*|__)(?=\S)([^\r]*?\S[\*_]*)\1/g,"$2");H=H.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"$2");return H};var u=function(H){H=H.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(I,J){var K=J;K=K.replace(/^[ \t]*>[ \t]?/gm,"~0");K=K.replace(/~0/g,"");K=K.replace(/^[ \t]+$/gm,"");K=G(K);K=K.replace(/(^|\n)/g,"$1 ");K=K.replace(/(\s*
      [^\r]+?<\/pre>)/gm,function(L,M){var N=M;N=N.replace(/^  /mg,"~0");N=N.replace(/~0/g,"");return N});return o("
      \n"+K+"\n
      ")});return H};var g=function(N){N=N.replace(/^\n+/g,"");N=N.replace(/\n+$/g,"");var M=N.split(/\n{2,}/g);var J=new Array();var H=M.length;for(var I=0;I=0){J.push(L)}else{if(L.search(/\S/)>=0){L=r(L);L=L.replace(/^([ \t]*)/g,"

      ");L+="

      ";J.push(L)}}}H=J.length;for(var I=0;I=0){var K=A[RegExp.$1];K=K.replace(/\$/g,"$$$$");J[I]=J[I].replace(/~K\d+K/,K)}}return J.join("\n\n")};var h=function(H){H=H.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&");H=H.replace(/<(?![a-z\/?\$!])/gi,"<");return H};var e=function(H){H=H.replace(/\\(\\)/g,k);H=H.replace(/\\([`*_{}\[\]()>#+-.!])/g,k);return H};var n=function(H){H=H.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,'
      $1');H=H.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,function(I,J){return B(q(J))});return H};var B=function(J){function I(L){var K="0123456789ABCDEF";var M=L.charCodeAt(0);return(K.charAt(M>>4)+K.charAt(M&15))}var H=[function(K){return"&#"+K.charCodeAt(0)+";"},function(K){return"&#x"+I(K)+";"},function(K){return K}];J="mailto:"+J;J=J.replace(/./g,function(K){if(K=="@"){K=H[Math.floor(Math.random()*2)](K)}else{if(K!=":"){var L=Math.random();K=(L>0.9?H[2](K):L>0.45?H[1](K):H[0](K))}}return K});J=''+J+"";J=J.replace(/">.+:/g,'">');return J};var q=function(H){H=H.replace(/~E(\d+)E/g,function(I,K){var J=parseInt(K);return String.fromCharCode(J)});return H};var s=function(H){H=H.replace(/^(\t|[ ]{1,4})/gm,"~0");H=H.replace(/~0/g,"");return H};var z=function(H){H=H.replace(/\t(?=\t)/g," ");H=H.replace(/\t/g,"~A~B");H=H.replace(/~B(.+?)~A/g,function(I,L,K){var N=L;var J=4-N.length%4;for(var M=0;M -// -// Redistributable under a BSD-style open source license. -// See license.txt for more information. -// -// The full source distribution is at: -// -// A A L -// T C A -// T K B -// -// -// - -// -// Wherever possible, Showdown is a straight, line-by-line port -// of the Perl version of Markdown. -// -// This is not a normal parser design; it's basically just a -// series of string substitutions. It's hard to read and -// maintain this way, but keeping Showdown close to the original -// design makes it easier to port new features. -// -// More importantly, Showdown behaves like markdown.pl in most -// edge cases. So web applications can do client-side preview -// in Javascript, and then build identical HTML on the server. -// -// This port needs the new RegExp functionality of ECMA 262, -// 3rd Edition (i.e. Javascript 1.5). Most modern web browsers -// should do fine. Even with the new regular expression features, -// We do a lot of work to emulate Perl's regex functionality. -// The tricky changes in this file mostly have the "attacklab:" -// label. Major or self-explanatory changes don't. -// -// Smart diff tools like Araxis Merge will be able to match up -// this file with markdown.pl in a useful way. A little tweaking -// helps: in a copy of markdown.pl, replace "#" with "//" and -// replace "$text" with "text". Be sure to ignore whitespace -// and line endings. -// - - -// -// Showdown usage: -// -// var text = "Markdown *rocks*."; -// -// var converter = new Attacklab.showdown.converter(); -// var html = converter.makeHtml(text); -// -// alert(html); -// -// Note: move the sample code to the bottom of this -// file before uncommenting it. -// - - -// -// Attacklab namespace -// -var Attacklab = Attacklab || {} - -// -// Showdown namespace -// -Attacklab.showdown = Attacklab.showdown || {} - -// -// converter -// -// Wraps all "globals" so that the only thing -// exposed is makeHtml(). -// -Attacklab.showdown.converter = function() { - -// -// Globals: -// - -// Global hashes, used by various utility routines -var g_urls; -var g_titles; -var g_html_blocks; - -// Used to track when we're inside an ordered or unordered list -// (see _ProcessListItems() for details): -var g_list_level = 0; - -var makeHtmlBase = function(text) { -// -// Main function. The order in which other subs are called here is -// essential. Link and image substitutions need to happen before -// _EscapeSpecialCharsWithinTagAttributes(), so that any *'s or _'s in the -// and tags get encoded. -// - - // Clear the global hashes. If we don't clear these, you get conflicts - // from other articles when generating a page which contains more than - // one article (e.g. an index page that shows the N most recent - // articles): - g_urls = new Array(); - g_titles = new Array(); - g_html_blocks = new Array(); - - // attacklab: Replace ~ with ~T - // This lets us use tilde as an escape char to avoid md5 hashes - // The choice of character is arbitray; anything that isn't - // magic in Markdown will work. - text = text.replace(/~/g,"~T"); - - // attacklab: Replace $ with ~D - // RegExp interprets $ as a special character - // when it's in a replacement string - text = text.replace(/\$/g,"~D"); - - // Standardize line endings - text = text.replace(/\r\n/g,"\n"); // DOS to Unix - text = text.replace(/\r/g,"\n"); // Mac to Unix - - // Make sure text begins and ends with a couple of newlines: - text = "\n\n" + text + "\n\n"; - - // Convert all tabs to spaces. - text = _Detab(text); - - // Strip any lines consisting only of spaces and tabs. - // This makes subsequent regexen easier to write, because we can - // match consecutive blank lines with /\n+/ instead of something - // contorted like /[ \t]*\n+/ . - text = text.replace(/^[ \t]+$/mg,""); - - // Turn block-level HTML blocks into hash entries - text = _HashHTMLBlocks(text); - - // Strip link definitions, store in hashes. - text = _StripLinkDefinitions(text); - - text = _RunBlockGamut(text); - - text = _UnescapeSpecialChars(text); - - // attacklab: Restore dollar signs - text = text.replace(/~D/g,"$$"); - - // attacklab: Restore tildes - text = text.replace(/~T/g,"~"); - - return text; -} - -this.makeHtml = function(text){ - if (enableMathJax === false){ - return makeHtmlBase(text); - } - else { - MathJax.Hub.queue.Push( - function(){ - $('#previewer').html(makeHtmlBase(text)); - } - ); - MathJax.Hub.Queue(['Typeset', MathJax.Hub, 'previewer']); - return $('#previewer').html(); - } -} - - -var _StripLinkDefinitions = function(text) { -// -// Strips link definitions from text, stores the URLs and titles in -// hash references. -// - - // Link defs are in the form: ^[id]: url "optional title" - - /* - var text = text.replace(/ - ^[ ]{0,3}\[(.+)\]: // id = $1 attacklab: g_tab_width - 1 - [ \t]* - \n? // maybe *one* newline - [ \t]* - ? // url = $2 - [ \t]* - \n? // maybe one newline - [ \t]* - (?: - (\n*) // any lines skipped = $3 attacklab: lookbehind removed - ["(] - (.+?) // title = $4 - [")] - [ \t]* - )? // title is optional - (?:\n+|$) - /gm, - function(){...}); - */ - var text = text.replace(/^[ ]{0,3}\[(.+)\]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|\Z)/gm, - function (wholeMatch,m1,m2,m3,m4) { - m1 = m1.toLowerCase(); - g_urls[m1] = _EncodeAmpsAndAngles(m2); // Link IDs are case-insensitive - if (m3) { - // Oops, found blank lines, so it's not a title. - // Put back the parenthetical statement we stole. - return m3+m4; - } else if (m4) { - g_titles[m1] = m4.replace(/"/g,"""); - } - - // Completely remove the definition from the text - return ""; - } - ); - - return text; -} - -var _HashHTMLBlocks = function(text) { - // attacklab: Double up blank lines to reduce lookaround - text = text.replace(/\n/g,"\n\n"); - - // Hashify HTML blocks: - // We only want to do this for block-level HTML tags, such as headers, - // lists, and tables. That's because we still want to wrap

      s around - // "paragraphs" that are wrapped in non-block-level tags, such as anchors, - // phrase emphasis, and spans. The list of tags we're looking for is - // hard-coded: - var block_tags_a = "p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del" - var block_tags_b = "p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math" - - // First, look for nested blocks, e.g.: - //

      - //
      - // tags for inner block must be indented. - //
      - //
      - // - // The outermost tags must start at the left margin for this to match, and - // the inner nested divs must be indented. - // We need to do this before the next, more liberal match, because the next - // match will start at the first `
      ` and stop at the first `
      `. - - // attacklab: This regex can be expensive when it fails. - /* - var text = text.replace(/ - ( // save in $1 - ^ // start of line (with /m) - <($block_tags_a) // start tag = $2 - \b // word break - // attacklab: hack around khtml/pcre bug... - [^\r]*?\n // any number of lines, minimally matching - // the matching end tag - [ \t]* // trailing spaces/tabs - (?=\n+) // followed by a newline - ) // attacklab: there are sentinel newlines at end of document - /gm,function(){...}}; - */ - text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm,hashElement); - - // - // Now match more liberally, simply from `\n` to `\n` - // - - /* - var text = text.replace(/ - ( // save in $1 - ^ // start of line (with /m) - <($block_tags_b) // start tag = $2 - \b // word break - // attacklab: hack around khtml/pcre bug... - [^\r]*? // any number of lines, minimally matching - .* // the matching end tag - [ \t]* // trailing spaces/tabs - (?=\n+) // followed by a newline - ) // attacklab: there are sentinel newlines at end of document - /gm,function(){...}}; - */ - text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)\b[^\r]*?.*<\/\2>[ \t]*(?=\n+)\n)/gm,hashElement); - - // Special case just for
      . It was easier to make a special case than - // to make the other regex more complicated. - - /* - text = text.replace(/ - ( // save in $1 - \n\n // Starting after a blank line - [ ]{0,3} - (<(hr) // start tag = $2 - \b // word break - ([^<>])*? // - \/?>) // the matching end tag - [ \t]* - (?=\n{2,}) // followed by a blank line - ) - /g,hashElement); - */ - text = text.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,hashElement); - - // Special case for standalone HTML comments: - - /* - text = text.replace(/ - ( // save in $1 - \n\n // Starting after a blank line - [ ]{0,3} // attacklab: g_tab_width - 1 - - [ \t]* - (?=\n{2,}) // followed by a blank line - ) - /g,hashElement); - */ - text = text.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,hashElement); - - // PHP and ASP-style processor instructions ( and <%...%>) - - /* - text = text.replace(/ - (?: - \n\n // Starting after a blank line - ) - ( // save in $1 - [ ]{0,3} // attacklab: g_tab_width - 1 - (?: - <([?%]) // $2 - [^\r]*? - \2> - ) - [ \t]* - (?=\n{2,}) // followed by a blank line - ) - /g,hashElement); - */ - text = text.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,hashElement); - - // attacklab: Undo double lines (see comment at top of this function) - text = text.replace(/\n\n/g,"\n"); - return text; -} - -var hashElement = function(wholeMatch,m1) { - var blockText = m1; - - // Undo double lines - blockText = blockText.replace(/\n\n/g,"\n"); - blockText = blockText.replace(/^\n/,""); - - // strip trailing blank lines - blockText = blockText.replace(/\n+$/g,""); - - // Replace the element text with a marker ("~KxK" where x is its key) - blockText = "\n\n~K" + (g_html_blocks.push(blockText)-1) + "K\n\n"; - - return blockText; -}; - -var _RunBlockGamut = function(text) { -// -// These are all the transformations that form block-level -// tags like paragraphs, headers, and list items. -// - text = _DoHeaders(text); - - // Do Horizontal Rules: - var key = hashBlock("
      "); - text = text.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,key); - text = text.replace(/^[ ]{0,2}([ ]?-[ ]?){3,}[ \t]*$/gm,key); - text = text.replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \t]*$/gm,key); - - text = _DoLists(text); - text = _DoCodeBlocks(text); - text = _DoBlockQuotes(text); - - // We already ran _HashHTMLBlocks() before, in Markdown(), but that - // was to escape raw HTML in the original Markdown source. This time, - // we're escaping the markup we've just created, so that we don't wrap - //

      tags around block-level tags. - text = _HashHTMLBlocks(text); - text = _FormParagraphs(text); - - return text; -} - - -var _RunSpanGamut = function(text) { -// -// These are all the transformations that occur *within* block-level -// tags like paragraphs, headers, and list items. -// - - text = _DoCodeSpans(text); - text = _EscapeSpecialCharsWithinTagAttributes(text); - text = _EncodeBackslashEscapes(text); - - // Process anchor and image tags. Images must come first, - // because ![foo][f] looks like an anchor. - text = _DoImages(text); - text = _DoAnchors(text); - - // Make links out of things like `` - // Must come after _DoAnchors(), because you can use < and > - // delimiters in inline links like [this](). - text = _DoAutoLinks(text); - text = _EncodeAmpsAndAngles(text); - text = _DoItalicsAndBold(text); - - // Do hard breaks: - text = text.replace(/ +\n/g,"
      \n"); - return text; -} - -var _EscapeSpecialCharsWithinTagAttributes = function(text) { -// -// Within tags -- meaning between < and > -- encode [\ ` * _] so they -// don't conflict with their use in Markdown for code, italics and strong. -// - - // Build a regex to find HTML tags and comments. See Friedl's - // "Mastering Regular Expressions", 2nd Ed., pp. 200-201. - var regex = /(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi; - - text = text.replace(regex, function(wholeMatch) { - var tag = wholeMatch.replace(/(.)<\/?code>(?=.)/g,"$1`"); - tag = escapeCharacters(tag,"\\`*_"); - return tag; - }); - - return text; -} - -var _DoAnchors = function(text) { -// -// Turn Markdown link shortcuts into XHTML
      tags. -// - // - // First, handle reference-style links: [link text] [id] - // - - /* - text = text.replace(/ - ( // wrap whole match in $1 - \[ - ( - (?: - \[[^\]]*\] // allow brackets nested one level - | - [^\[] // or anything else - )* - ) - \] - - [ ]? // one optional space - (?:\n[ ]*)? // one optional newline followed by spaces - - \[ - (.*?) // id = $3 - \] - )()()()() // pad remaining backreferences - /g,_DoAnchors_callback); - */ - text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,writeAnchorTag); - - // - // Next, inline-style links: [link text](url "optional title") - // - - /* - text = text.replace(/ - ( // wrap whole match in $1 - \[ - ( - (?: - \[[^\]]*\] // allow brackets nested one level - | - [^\[\]] // or anything else - ) - ) - \] - \( // literal paren - [ \t]* - () // no id, so leave $3 empty - ? // href = $4 - [ \t]* - ( // $5 - (['"]) // quote char = $6 - (.*?) // Title = $7 - \6 // matching quote - [ \t]* // ignore any spaces/tabs between closing quote and ) - )? // title is optional - \) - ) - /g,writeAnchorTag); - */ - text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,writeAnchorTag); - - // - // Last, handle reference-style shortcuts: [link text] - // These must come last in case you've also got [link test][1] - // or [link test](/foo) - // - - /* - text = text.replace(/ - ( // wrap whole match in $1 - \[ - ([^\[\]]+) // link text = $2; can't contain '[' or ']' - \] - )()()()()() // pad rest of backreferences - /g, writeAnchorTag); - */ - text = text.replace(/(\[([^\[\]]+)\])()()()()()/g, writeAnchorTag); - - return text; -} - -var writeAnchorTag = function(wholeMatch,m1,m2,m3,m4,m5,m6,m7) { - if (m7 == undefined) m7 = ""; - var whole_match = m1; - var link_text = m2; - var link_id = m3.toLowerCase(); - var url = m4; - var title = m7; - - if (url == "") { - if (link_id == "") { - // lower-case and turn embedded newlines into spaces - link_id = link_text.toLowerCase().replace(/ ?\n/g," "); - } - url = "#"+link_id; - - if (g_urls[link_id] != undefined) { - url = g_urls[link_id]; - if (g_titles[link_id] != undefined) { - title = g_titles[link_id]; - } - } - else { - if (whole_match.search(/\(\s*\)$/m)>-1) { - // Special case for explicit empty url - url = ""; - } else { - return whole_match; - } - } - } - - url = escapeCharacters(url,"*_"); - var result = ""; - - return result; -} - - -var _DoImages = function(text) { -// -// Turn Markdown image shortcuts into tags. -// - - // - // First, handle reference-style labeled images: ![alt text][id] - // - - /* - text = text.replace(/ - ( // wrap whole match in $1 - !\[ - (.*?) // alt text = $2 - \] - - [ ]? // one optional space - (?:\n[ ]*)? // one optional newline followed by spaces - - \[ - (.*?) // id = $3 - \] - )()()()() // pad rest of backreferences - /g,writeImageTag); - */ - text = text.replace(/(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,writeImageTag); - - // - // Next, handle inline images: ![alt text](url "optional title") - // Don't forget: encode * and _ - - /* - text = text.replace(/ - ( // wrap whole match in $1 - !\[ - (.*?) // alt text = $2 - \] - \s? // One optional whitespace character - \( // literal paren - [ \t]* - () // no id, so leave $3 empty - ? // src url = $4 - [ \t]* - ( // $5 - (['"]) // quote char = $6 - (.*?) // title = $7 - \6 // matching quote - [ \t]* - )? // title is optional - \) - ) - /g,writeImageTag); - */ - text = text.replace(/(!\[(.*?)\]\s?\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,writeImageTag); - - return text; -} - -var writeImageTag = function(wholeMatch,m1,m2,m3,m4,m5,m6,m7) { - var whole_match = m1; - var alt_text = m2; - var link_id = m3.toLowerCase(); - var url = m4; - var title = m7; - - if (!title) title = ""; - - if (url == "") { - if (link_id == "") { - // lower-case and turn embedded newlines into spaces - link_id = alt_text.toLowerCase().replace(/ ?\n/g," "); - } - url = "#"+link_id; - - if (g_urls[link_id] != undefined) { - url = g_urls[link_id]; - if (g_titles[link_id] != undefined) { - title = g_titles[link_id]; - } - } - else { - return whole_match; - } - } - - alt_text = alt_text.replace(/"/g,"""); - url = escapeCharacters(url,"*_"); - var result = "\""" + _RunSpanGamut(m1) + "");}); - - text = text.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm, - function(matchFound,m1){return hashBlock("

      " + _RunSpanGamut(m1) + "

      ");}); - - // atx-style headers: - // # Header 1 - // ## Header 2 - // ## Header 2 with closing hashes ## - // ... - // ###### Header 6 - // - - /* - text = text.replace(/ - ^(\#{1,6}) // $1 = string of #'s - [ \t]* - (.+?) // $2 = Header text - [ \t]* - \#* // optional closing #'s (not counted) - \n+ - /gm, function() {...}); - */ - - text = text.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm, - function(wholeMatch,m1,m2) { - var h_level = m1.length; - return hashBlock("" + _RunSpanGamut(m2) + ""); - }); - - return text; -} - -// This declaration keeps Dojo compressor from outputting garbage: -var _ProcessListItems; - -var _DoLists = function(text) { -// -// Form HTML ordered (numbered) and unordered (bulleted) lists. -// - - // attacklab: add sentinel to hack around khtml/safari bug: - // http://bugs.webkit.org/show_bug.cgi?id=11231 - text += "~0"; - - // Re-usable pattern to match any entirel ul or ol list: - - /* - var whole_list = / - ( // $1 = whole list - ( // $2 - [ ]{0,3} // attacklab: g_tab_width - 1 - ([*+-]|\d+[.]) // $3 = first list item marker - [ \t]+ - ) - [^\r]+? - ( // $4 - ~0 // sentinel for workaround; should be $ - | - \n{2,} - (?=\S) - (?! // Negative lookahead for another list item marker - [ \t]* - (?:[*+-]|\d+[.])[ \t]+ - ) - ) - )/g - */ - var whole_list = /^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm; - - if (g_list_level) { - text = text.replace(whole_list,function(wholeMatch,m1,m2) { - var list = m1; - var list_type = (m2.search(/[*+-]/g)>-1) ? "ul" : "ol"; - - // Turn double returns into triple returns, so that we can make a - // paragraph for the last item in a list, if necessary: - list = list.replace(/\n{2,}/g,"\n\n\n");; - var result = _ProcessListItems(list); - - // Trim any trailing whitespace, to put the closing `` - // up on the preceding line, to get it past the current stupid - // HTML block parser. This is a hack to work around the terrible - // hack that is the HTML block parser. - result = result.replace(/\s+$/,""); - result = "<"+list_type+">" + result + "\n"; - return result; - }); - } else { - whole_list = /(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g; - text = text.replace(whole_list,function(wholeMatch,m1,m2,m3) { - var runup = m1; - var list = m2; - - var list_type = (m3.search(/[*+-]/g)>-1) ? "ul" : "ol"; - // Turn double returns into triple returns, so that we can make a - // paragraph for the last item in a list, if necessary: - var list = list.replace(/\n{2,}/g,"\n\n\n");; - var result = _ProcessListItems(list); - result = runup + "<"+list_type+">\n" + result + "\n"; - return result; - }); - } - - // attacklab: strip sentinel - text = text.replace(/~0/,""); - - return text; -} - -_ProcessListItems = function(list_str) { -// -// Process the contents of a single ordered or unordered list, splitting it -// into individual list items. -// - // The $g_list_level global keeps track of when we're inside a list. - // Each time we enter a list, we increment it; when we leave a list, - // we decrement. If it's zero, we're not in a list anymore. - // - // We do this because when we're not inside a list, we want to treat - // something like this: - // - // I recommend upgrading to version - // 8. Oops, now this line is treated - // as a sub-list. - // - // As a single paragraph, despite the fact that the second line starts - // with a digit-period-space sequence. - // - // Whereas when we're inside a list (or sub-list), that line will be - // treated as the start of a sub-list. What a kludge, huh? This is - // an aspect of Markdown's syntax that's hard to parse perfectly - // without resorting to mind-reading. Perhaps the solution is to - // change the syntax rules such that sub-lists must start with a - // starting cardinal number; e.g. "1." or "a.". - - g_list_level++; - - // trim trailing blank lines: - list_str = list_str.replace(/\n{2,}$/,"\n"); - - // attacklab: add sentinel to emulate \z - list_str += "~0"; - - /* - list_str = list_str.replace(/ - (\n)? // leading line = $1 - (^[ \t]*) // leading whitespace = $2 - ([*+-]|\d+[.]) [ \t]+ // list marker = $3 - ([^\r]+? // list item text = $4 - (\n{1,2})) - (?= \n* (~0 | \2 ([*+-]|\d+[.]) [ \t]+)) - /gm, function(){...}); - */ - list_str = list_str.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm, - function(wholeMatch,m1,m2,m3,m4){ - var item = m4; - var leading_line = m1; - var leading_space = m2; - - if (leading_line || (item.search(/\n{2,}/)>-1)) { - item = _RunBlockGamut(_Outdent(item)); - } - else { - // Recursion for sub-lists: - item = _DoLists(_Outdent(item)); - item = item.replace(/\n$/,""); // chomp(item) - item = _RunSpanGamut(item); - } - - return "
    • " + item + "
    • \n"; - } - ); - - // attacklab: strip sentinel - list_str = list_str.replace(/~0/g,""); - - g_list_level--; - return list_str; -} - - -var _DoCodeBlocks = function(text) { -// -// Process Markdown `
      ` blocks.
      -//  
      -
      -	/*
      -		text = text.replace(text,
      -			/(?:\n\n|^)
      -			(								// $1 = the code block -- one or more lines, starting with a space/tab
      -				(?:
      -					(?:[ ]{4}|\t)			// Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width
      -					.*\n+
      -				)+
      -			)
      -			(\n*[ ]{0,3}[^ \t\n]|(?=~0))	// attacklab: g_tab_width
      -		/g,function(){...});
      -	*/
      -
      -	// attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
      -	text += "~0";
      -	
      -	text = text.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,
      -		function(wholeMatch,m1,m2) {
      -			var codeblock = m1;
      -			var nextChar = m2;
      -		
      -			codeblock = _EncodeCode( _Outdent(codeblock));
      -			codeblock = _Detab(codeblock);
      -			codeblock = codeblock.replace(/^\n+/g,""); // trim leading newlines
      -			codeblock = codeblock.replace(/\n+$/g,""); // trim trailing whitespace
      -
      -			codeblock = "
      " + codeblock + "\n
      "; - - return hashBlock(codeblock) + nextChar; - } - ); - - // attacklab: strip sentinel - text = text.replace(/~0/,""); - - return text; -} - -var hashBlock = function(text) { - text = text.replace(/(^\n+|\n+$)/g,""); - return "\n\n~K" + (g_html_blocks.push(text)-1) + "K\n\n"; -} - - -var _DoCodeSpans = function(text) { -// -// * Backtick quotes are used for spans. -// -// * You can use multiple backticks as the delimiters if you want to -// include literal backticks in the code span. So, this input: -// -// Just type ``foo `bar` baz`` at the prompt. -// -// Will translate to: -// -//

      Just type foo `bar` baz at the prompt.

      -// -// There's no arbitrary limit to the number of backticks you -// can use as delimters. If you need three consecutive backticks -// in your code, use four for delimiters, etc. -// -// * You can use spaces to get literal backticks at the edges: -// -// ... type `` `bar` `` ... -// -// Turns to: -// -// ... type `bar` ... -// - - /* - text = text.replace(/ - (^|[^\\]) // Character before opening ` can't be a backslash - (`+) // $2 = Opening run of ` - ( // $3 = The code block - [^\r]*? - [^`] // attacklab: work around lack of lookbehind - ) - \2 // Matching closer - (?!`) - /gm, function(){...}); - */ - - text = text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm, - function(wholeMatch,m1,m2,m3,m4) { - var c = m3; - c = c.replace(/^([ \t]*)/g,""); // leading whitespace - c = c.replace(/[ \t]*$/g,""); // trailing whitespace - c = _EncodeCode(c); - return m1+""+c+""; - }); - - return text; -} - - -var _EncodeCode = function(text) { -// -// Encode/escape certain characters inside Markdown code runs. -// The point is that in code, these characters are literals, -// and lose their special Markdown meanings. -// - // Encode all ampersands; HTML entities are not - // entities within a Markdown code span. - text = text.replace(/&/g,"&"); - - // Do the angle bracket song and dance: - text = text.replace(//g,">"); - - // Now, escape characters that are magic in Markdown: - text = escapeCharacters(text,"\*_{}[]\\",false); - -// jj the line above breaks this: -//--- - -//* Item - -// 1. Subitem - -// special char: * -//--- - - return text; -} - - -var _DoItalicsAndBold = function(text) { - - // must go first: - if (codeFriendlyMarkdown === true){ - text = text.replace(/(\*\*)(?=\S)([^\r]*?\S[\*]*)\1/g, - "$2"); - - text = text.replace(/(\*)(?=\S)([^\r]*?\S)\1/g, - "$2"); - } - else { - text = text.replace(/(\*\*|__)(?=\S)([^\r]*?\S[\*_]*)\1/g, - "$2"); - - text = text.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g, - "$2"); - } - - return text; -} - - -var _DoBlockQuotes = function(text) { - - /* - text = text.replace(/ - ( // Wrap whole match in $1 - ( - ^[ \t]*>[ \t]? // '>' at the start of a line - .+\n // rest of the first line - (.+\n)* // subsequent consecutive lines - \n* // blanks - )+ - ) - /gm, function(){...}); - */ - - text = text.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm, - function(wholeMatch,m1) { - var bq = m1; - - // attacklab: hack around Konqueror 3.5.4 bug: - // "----------bug".replace(/^-/g,"") == "bug" - - bq = bq.replace(/^[ \t]*>[ \t]?/gm,"~0"); // trim one level of quoting - - // attacklab: clean up hack - bq = bq.replace(/~0/g,""); - - bq = bq.replace(/^[ \t]+$/gm,""); // trim whitespace-only lines - bq = _RunBlockGamut(bq); // recurse - - bq = bq.replace(/(^|\n)/g,"$1 "); - // These leading spaces screw with
       content, so we need to fix that:
      -			bq = bq.replace(
      -					/(\s*
      [^\r]+?<\/pre>)/gm,
      -				function(wholeMatch,m1) {
      -					var pre = m1;
      -					// attacklab: hack around Konqueror 3.5.4 bug:
      -					pre = pre.replace(/^  /mg,"~0");
      -					pre = pre.replace(/~0/g,"");
      -					return pre;
      -				});
      -			
      -			return hashBlock("
      \n" + bq + "\n
      "); - }); - return text; -} - - -var _FormParagraphs = function(text) { -// -// Params: -// $text - string to process with html

      tags -// - - // Strip leading and trailing lines: - text = text.replace(/^\n+/g,""); - text = text.replace(/\n+$/g,""); - - var grafs = text.split(/\n{2,}/g); - var grafsOut = new Array(); - - // - // Wrap

      tags. - // - var end = grafs.length; - for (var i=0; i= 0) { - grafsOut.push(str); - } - else if (str.search(/\S/) >= 0) { - str = _RunSpanGamut(str); - str = str.replace(/^([ \t]*)/g,"

      "); - str += "

      " - grafsOut.push(str); - } - - } - - // - // Unhashify HTML blocks - // - end = grafsOut.length; - for (var i=0; i= 0) { - var blockText = g_html_blocks[RegExp.$1]; - blockText = blockText.replace(/\$/g,"$$$$"); // Escape any dollar signs - grafsOut[i] = grafsOut[i].replace(/~K\d+K/,blockText); - } - } - - return grafsOut.join("\n\n"); -} - - -var _EncodeAmpsAndAngles = function(text) { -// Smart processing for ampersands and angle brackets that need to be encoded. - - // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin: - // http://bumppo.net/projects/amputator/ - text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"); - - // Encode naked <'s - text = text.replace(/<(?![a-z\/?\$!])/gi,"<"); - - return text; -} - - -var _EncodeBackslashEscapes = function(text) { -// -// Parameter: String. -// Returns: The string, with after processing the following backslash -// escape sequences. -// - - // attacklab: The polite way to do this is with the new - // escapeCharacters() function: - // - // text = escapeCharacters(text,"\\",true); - // text = escapeCharacters(text,"`*_{}[]()>#+-.!",true); - // - // ...but we're sidestepping its use of the (slow) RegExp constructor - // as an optimization for Firefox. This function gets called a LOT. - - text = text.replace(/\\(\\)/g,escapeCharacters_callback); - text = text.replace(/\\([`*_{}\[\]()>#+-.!])/g,escapeCharacters_callback); - return text; -} - - -var _DoAutoLinks = function(text) { - - text = text.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,"
      $1"); - - // Email addresses: - - /* - text = text.replace(/ - < - (?:mailto:)? - ( - [-.\w]+ - \@ - [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+ - ) - > - /gi, _DoAutoLinks_callback()); - */ - text = text.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi, - function(wholeMatch,m1) { - return _EncodeEmailAddress( _UnescapeSpecialChars(m1) ); - } - ); - - return text; -} - - -var _EncodeEmailAddress = function(addr) { -// -// Input: an email address, e.g. "foo@example.com" -// -// Output: the email address as a mailto link, with each character -// of the address encoded as either a decimal or hex entity, in -// the hopes of foiling most address harvesting spam bots. E.g.: -// -// foo -// @example.com -// -// Based on a filter by Matthew Wickline, posted to the BBEdit-Talk -// mailing list: -// - - // attacklab: why can't javascript speak hex? - function char2hex(ch) { - var hexDigits = '0123456789ABCDEF'; - var dec = ch.charCodeAt(0); - return(hexDigits.charAt(dec>>4) + hexDigits.charAt(dec&15)); - } - - var encode = [ - function(ch){return "&#"+ch.charCodeAt(0)+";";}, - function(ch){return "&#x"+char2hex(ch)+";";}, - function(ch){return ch;} - ]; - - addr = "mailto:" + addr; - - addr = addr.replace(/./g, function(ch) { - if (ch == "@") { - // this *must* be encoded. I insist. - ch = encode[Math.floor(Math.random()*2)](ch); - } else if (ch !=":") { - // leave ':' alone (to spot mailto: later) - var r = Math.random(); - // roughly 10% raw, 45% hex, 45% dec - ch = ( - r > .9 ? encode[2](ch) : - r > .45 ? encode[1](ch) : - encode[0](ch) - ); - } - return ch; - }); - - addr = "" + addr + ""; - addr = addr.replace(/">.+:/g,"\">"); // strip the mailto: from the visible part - - return addr; -} - - -var _UnescapeSpecialChars = function(text) { -// -// Swap back in all the special characters we've hidden. -// - text = text.replace(/~E(\d+)E/g, - function(wholeMatch,m1) { - var charCodeToReplace = parseInt(m1); - return String.fromCharCode(charCodeToReplace); - } - ); - return text; -} - - -var _Outdent = function(text) { -// -// Remove one level of line-leading tabs or spaces -// - - // attacklab: hack around Konqueror 3.5.4 bug: - // "----------bug".replace(/^-/g,"") == "bug" - - text = text.replace(/^(\t|[ ]{1,4})/gm,"~0"); // attacklab: g_tab_width - - // attacklab: clean up hack - text = text.replace(/~0/g,"") - - return text; -} - -var _Detab = function(text) { -// attacklab: Detab's completely rewritten for speed. -// In perl we could fix it by anchoring the regexp with \G. -// In javascript we're less fortunate. - - // expand first n-1 tabs - text = text.replace(/\t(?=\t)/g," "); // attacklab: g_tab_width - - // replace the nth with two sentinels - text = text.replace(/\t/g,"~A~B"); - - // use the sentinel to anchor our regex so it doesn't explode - text = text.replace(/~B(.+?)~A/g, - function(wholeMatch,m1,m2) { - var leadingText = m1; - var numSpaces = 4 - leadingText.length % 4; // attacklab: g_tab_width - - // there *must* be a better way to do this: - for (var i=0; i";var D="

      输入Web地å€

      示例:
      http://www.cnprog.com/ \"我的网站\"

      ";var n='
      或者上传本地图片:

      ';var b="http://";var g="http://";var o="images/";var A=500;var x=100;var k="http://wmd-editor.com/";var r="WMD website";var w="_blank";y.PanelCollection=function(){this.buttonBar=E.getElementById("wmd-button-bar");this.preview=E.getElementById("previewer");this.output=E.getElementById("wmd-output");this.input=E.getElementById("editor")};y.panels=undefined;y.ieCachedRange=null;y.ieRetardedClick=false;a.isVisible=function(F){if(window.getComputedStyle){return window.getComputedStyle(F,null).getPropertyValue("display")!=="none"}else{if(F.currentStyle){return F.currentStyle.display!=="none"}}};a.addEvent=function(G,F,H){if(G.attachEvent){G.attachEvent("on"+F,H)}else{G.addEventListener(F,H,false)}};a.removeEvent=function(G,F,H){if(G.detachEvent){G.detachEvent("on"+F,H)}else{G.removeEventListener(F,H,false)}};a.fixEolChars=function(F){F=F.replace(/\r\n/g,"\n");F=F.replace(/\r/g,"\n");return F};a.extendRegExp=function(H,J,G){if(J===null||J===undefined){J=""}if(G===null||G===undefined){G=""}var I=H.toString();var F;I=I.replace(/\/([gim]*)$/,"");F=s.$1;I=I.replace(/(^\/|\/$)/g,"");I=J+I+G;return new s(I,F)};a.createImage=function(F){var H=o+F;var G=E.createElement("img");G.className="wmd-button";G.src=H;return G};a.prompt=function(M,P,H){var I;var F;var K;var J=0;if(arguments.length==4){J=arguments[3]}if(P===undefined){P=""}var L=function(Q){var R=(Q.charCode||Q.keyCode);if(R===27){N(true)}};var N=function(Q){a.removeEvent(E.body,"keydown",L);var R=K.value;if(Q){R=null}else{R=R.replace("http://http://","http://");R=R.replace("http://https://","https://");R=R.replace("http://ftp://","ftp://");if(R.indexOf("http://")===-1&&R.indexOf("ftp://")===-1){R="http://"+R}}I.parentNode.removeChild(I);F.parentNode.removeChild(F);H(R);return false};var G=function(){F=E.createElement("div");F.className="wmd-prompt-background";style=F.style;style.position="absolute";style.top="0";style.zIndex="1000";if(v.isKonqueror){style.backgroundColor="transparent"}else{if(v.isIE){style.filter="alpha(opacity=50)"}else{style.opacity="0.5"}}var Q=C.getPageSize();style.height=Q[1]+"px";if(v.isIE){style.left=E.documentElement.scrollLeft;style.width=E.documentElement.clientWidth}else{style.left="0";style.width="100%"}E.body.appendChild(F)};var O=function(){I=E.createElement("div");I.className="wmd-prompt-dialog";I.style.padding="10px;";I.style.position="fixed";I.style.width="400px";I.style.zIndex="1001";var Q=E.createElement("div");Q.innerHTML=M;Q.style.padding="5px";I.appendChild(Q);var S=E.createElement("form");S.onsubmit=function(){return N(false)};style=S.style;style.padding="0";style.margin="0";style.cssFloat="left";style.width="100%";style.textAlign="center";style.position="relative";I.appendChild(S);K=E.createElement("input");if(J==1){K.id="image-url"}K.type="text";K.value=P;style=K.style;style.display="block";style.width="80%";style.marginLeft=style.marginRight="auto";S.appendChild(K);if(J==1){var R=E.createElement("div");R.innerHTML=n;R.style.padding="5px";S.appendChild(R)}var U=E.createElement("input");U.type="button";U.onclick=function(){return N(false)};U.value="OK";style=U.style;style.margin="10px";style.display="inline";style.width="7em";var T=E.createElement("input");T.type="button";T.onclick=function(){return N(true)};T.value="Cancel";style=T.style;style.margin="10px";style.display="inline";style.width="7em";if(/mac/.test(l.platform.toLowerCase())){S.appendChild(T);S.appendChild(U)}else{S.appendChild(U);S.appendChild(T)}a.addEvent(E.body,"keydown",L);I.style.top="50%";I.style.left="50%";I.style.display="block";if(v.isIE_5or6){I.style.position="absolute";I.style.top=E.documentElement.scrollTop+200+"px";I.style.left="50%"}E.body.appendChild(I);I.style.marginTop=-(C.getHeight(I)/2)+"px";I.style.marginLeft=-(C.getWidth(I)/2)+"px"};G();top.setTimeout(function(){O();var R=P.length;if(K.selectionStart!==undefined){K.selectionStart=0;K.selectionEnd=R}else{if(K.createTextRange){var Q=K.createTextRange();Q.collapse(false);Q.moveStart("character",-R);Q.moveEnd("character",R);Q.select()}}K.focus()},0)};C.getTop=function(H,G){var F=H.offsetTop;if(!G){while(H=H.offsetParent){F+=H.offsetTop}}return F};C.getHeight=function(F){return F.offsetHeight||F.scrollHeight};C.getWidth=function(F){return F.offsetWidth||F.scrollWidth};C.getPageSize=function(){var G,H;var F,K;if(self.innerHeight&&self.scrollMaxY){G=E.body.scrollWidth;H=self.innerHeight+self.scrollMaxY}else{if(E.body.scrollHeight>E.body.offsetHeight){G=E.body.scrollWidth;H=E.body.scrollHeight}else{G=E.body.offsetWidth;H=E.body.offsetHeight}}if(self.innerHeight){F=self.innerWidth;K=self.innerHeight}else{if(E.documentElement&&E.documentElement.clientHeight){F=E.documentElement.clientWidth;K=E.documentElement.clientHeight}else{if(E.body){F=E.body.clientWidth;K=E.body.clientHeight}}}var J=Math.max(G,F);var I=Math.max(H,K);return[J,I,F,K]};y.inputPoller=function(O,H){var F=this;var K=y.panels.input;var G;var I;var L;var J;this.tick=function(){if(!a.isVisible(K)){return}if(K.selectionStart||K.selectionStart===0){var Q=K.selectionStart;var P=K.selectionEnd;if(Q!=G||P!=I){G=Q;I=P;if(L!=K.value){L=K.value;return true}}}return false};var N=function(){if(!a.isVisible(K)){return}if(F.tick()){O()}};var M=function(){J=top.setInterval(N,H)};this.destroy=function(){top.clearInterval(J)};M()};y.undoManager=function(Q){var U=this;var O=[];var M=0;var L="none";var G;var R;var H;var K;var F=function(W,V){if(L!=W){L=W;if(!V){I()}}if(!v.isIE||L!="moving"){H=top.setTimeout(N,1)}else{K=null}};var N=function(){K=new y.TextareaState();R.tick();H=undefined};this.setCommandMode=function(){L="command";I();H=top.setTimeout(N,0)};this.canUndo=function(){return M>1};this.canRedo=function(){if(O[M+1]){return true}return false};this.undo=function(){if(U.canUndo()){if(G){G.restore();G=null}else{O[M]=new y.TextareaState();O[--M].restore();if(Q){Q()}}}L="none";y.panels.input.focus();N()};this.redo=function(){if(U.canRedo()){O[++M].restore();if(Q){Q()}}L="none";y.panels.input.focus();N()};var I=function(){var V=K||new y.TextareaState();if(!V){return false}if(L=="moving"){if(!G){G=V}return}if(G){if(O[M-1].text!=G.text){O[M++]=G}G=null}O[M++]=V;O[M+1]=null;if(Q){Q()}};var P=function(V){var X=false;if(V.ctrlKey||V.metaKey){var W=V.charCode||V.keyCode;var Y=String.fromCharCode(W);switch(Y){case"y":U.redo();X=true;break;case"z":if(!V.shiftKey){U.undo()}else{U.redo()}X=true;break}}if(X){if(V.preventDefault){V.preventDefault()}if(top.event){top.event.returnValue=false}return}};var T=function(V){if(!V.ctrlKey&&!V.metaKey){var W=V.keyCode;if((W>=33&&W<=40)||(W>=63232&&W<=63235)){F("moving")}else{if(W==8||W==46||W==127){F("deleting")}else{if(W==13){F("newlines")}else{if(W==27){F("escape")}else{if((W<16||W>20)&&W!=91){F("typing")}}}}}}};var J=function(){a.addEvent(y.panels.input,"keypress",function(W){if((W.ctrlKey||W.metaKey)&&(W.keyCode==89||W.keyCode==90)){W.preventDefault()}});var V=function(){if(v.isIE||(K&&K.text!=y.panels.input.value)){if(H==undefined){L="paste";I();N()}}};R=new y.inputPoller(V,x);a.addEvent(y.panels.input,"keydown",P);a.addEvent(y.panels.input,"keydown",T);a.addEvent(y.panels.input,"mousedown",function(){F("moving")});y.panels.input.onpaste=V;y.panels.input.ondrop=V};var S=function(){J();N();I()};this.destroy=function(){if(R){R.destroy()}};S()};y.editor=function(O){if(!O){O=function(){}}var L=y.panels.input;var I=0;var P=this;var K;var R;var G;var M;var N;var U=function(W){L.focus();if(W.textOp){if(N){N.setCommandMode()}var Y=new y.TextareaState();if(!Y){return}var Z=Y.getChunks();var V=function(){L.focus();if(Z){Y.setChunks(Z)}Y.restore();O()};var X=W.textOp(Z,V);if(!X){V()}}if(W.execute){W.execute(P)}};var S=function(){if(N){F(document.getElementById("wmd-undo-button"),N.canUndo());F(document.getElementById("wmd-redo-button"),N.canRedo())}};var F=function(V,X){var Y="0px";var Z="-20px";var W="-40px";if(X){V.style.backgroundPosition=V.XShift+" "+Y;V.onmouseover=function(){this.style.backgroundPosition=this.XShift+" "+W};V.onmouseout=function(){this.style.backgroundPosition=this.XShift+" "+Y};if(v.isIE){V.onmousedown=function(){y.ieRetardedClick=true;y.ieCachedRange=document.selection.createRange()}}if(!V.isHelp){V.onclick=function(){if(this.onmouseout){this.onmouseout()}U(this);return false}}}else{V.style.backgroundPosition=V.XShift+" "+Z;V.onmouseover=V.onmouseout=V.onclick=function(){}}};var J=function(){var Z=document.getElementById("wmd-button-bar");var W="0px";var Y="-20px";var ae="-40px";var ak=document.createElement("ul");ak.id="wmd-button-row";ak=Z.appendChild(ak);var ad=document.createElement("li");ad.className="wmd-button";ad.id="wmd-bold-button";ad.title=c;ad.XShift="0px";ad.textOp=h.doBold;F(ad,true);ak.appendChild(ad);var ac=document.createElement("li");ac.className="wmd-button";ac.id="wmd-italic-button";ac.title=f;ac.XShift="-20px";ac.textOp=h.doItalic;F(ac,true);ak.appendChild(ac);var ah=document.createElement("li");ah.className="wmd-spacer";ah.id="wmd-spacer1";ak.appendChild(ah);var ai=document.createElement("li");ai.className="wmd-button";ai.id="wmd-link-button";ai.title=z;ai.XShift="-40px";ai.textOp=function(ap,aq){return h.doLinkOrImage(ap,aq,false)};F(ai,true);ak.appendChild(ai);var al=document.createElement("li");al.className="wmd-button";al.id="wmd-quote-button";al.title=u;al.XShift="-60px";al.textOp=h.doBlockquote;F(al,true);ak.appendChild(al);var am=document.createElement("li");am.className="wmd-button";am.id="wmd-code-button";am.title=e;am.XShift="-80px";am.textOp=h.doCode;F(am,true);ak.appendChild(am);var aa=document.createElement("li");aa.className="wmd-button";aa.id="wmd-image-button";aa.title=d;aa.XShift="-100px";aa.textOp=function(ap,aq){return h.doLinkOrImage(ap,aq,true)};F(aa,true);ak.appendChild(aa);var ag=document.createElement("li");ag.className="wmd-spacer";ag.id="wmd-spacer2";ak.appendChild(ag);var ab=document.createElement("li");ab.className="wmd-button";ab.id="wmd-olist-button";ab.title=q;ab.XShift="-120px";ab.textOp=function(ap,aq){h.doList(ap,aq,true)};F(ab,true);ak.appendChild(ab);var ao=document.createElement("li");ao.className="wmd-button";ao.id="wmd-ulist-button";ao.title=t;ao.XShift="-140px";ao.textOp=function(ap,aq){h.doList(ap,aq,false)};F(ao,true);ak.appendChild(ao);var aj=document.createElement("li");aj.className="wmd-button";aj.id="wmd-heading-button";aj.title=i;aj.XShift="-160px";aj.textOp=h.doHeading;F(aj,true);ak.appendChild(aj);var X=document.createElement("li");X.className="wmd-button";X.id="wmd-hr-button";X.title=p;X.XShift="-180px";X.textOp=h.doHorizontalRule;F(X,true);ak.appendChild(X);var af=document.createElement("li");af.className="wmd-spacer";af.id="wmd-spacer3";ak.appendChild(af);var V=document.createElement("li");V.className="wmd-button";V.id="wmd-undo-button";V.title=m;V.XShift="-200px";V.execute=function(ap){ap.undo()};F(V,true);ak.appendChild(V);var an=document.createElement("li");an.className="wmd-button";an.id="wmd-redo-button";an.title=j;if(/win/.test(l.platform.toLowerCase())){an.title=j}else{an.title="é‡åš - Ctrl+Shift+Z"}an.XShift="-220px";an.execute=function(ap){ap.redo()};F(an,true);ak.appendChild(an);S()};var H=function(){if(/\?noundo/.test(E.location.href)){y.nativeUndo=true}if(!y.nativeUndo){N=new y.undoManager(function(){O();S()})}J();var W="keydown";if(v.isOpera){W="keypress"}a.addEvent(L,W,function(Y){if(Y.ctrlKey||Y.metaKey){var Z=Y.charCode||Y.keyCode;var X=String.fromCharCode(Z).toLowerCase();if(Z===46){X=""}if(Z===190){X="."}switch(X){case"b":U(document.getElementById("wmd-bold-button"));break;case"i":U(document.getElementById("wmd-italic-button"));break;case"l":U(document.getElementById("wmd-link-button"));break;case".":U(document.getElementById("wmd-quote-button"));break;case"k":U(document.getElementById("wmd-code-button"));break;case"g":U(document.getElementById("wmd-image-button"));break;case"o":U(document.getElementById("wmd-olist-button"));break;case"u":U(document.getElementById("wmd-ulist-button"));break;case"h":U(document.getElementById("wmd-heading-button"));break;case"r":U(document.getElementById("wmd-hr-button"));break;case"y":U(document.getElementById("wmd-redo-button"));break;case"z":if(Y.shiftKey){U(document.getElementById("wmd-redo-button"))}else{U(document.getElementById("wmd-undo-button"))}break;default:return}if(Y.preventDefault){Y.preventDefault()}if(top.event){top.event.returnValue=false}}});a.addEvent(L,"keyup",function(X){if(X.shiftKey&&!X.ctrlKey&&!X.metaKey){var Y=X.charCode||X.keyCode;if(Y===13){fakeButton={};fakeButton.textOp=h.doAutoindent;U(fakeButton)}}});if(L.form){var V=L.form.onsubmit;L.form.onsubmit=function(){Q();if(V){return V.apply(this,arguments)}}}};var Q=function(){if(y.showdown){var V=new y.showdown.converter()}var W=L.value;var X=function(){L.value=W};if(!/markdown/.test(y.wmd_env.output.toLowerCase())){if(V){L.value=V.makeHtml(W);top.setTimeout(X,0)}}return true};this.undo=function(){if(N){N.undo()}};this.redo=function(){if(N){N.redo()}};var T=function(){H()};this.destroy=function(){if(N){N.destroy()}if(G.parentNode){G.parentNode.removeChild(G)}if(L){L.style.marginTop=""}top.clearInterval(M)};T()};y.TextareaState=function(){var F=this;var G=y.panels.input;this.init=function(){if(!a.isVisible(G)){return}this.setInputAreaSelectionStartEnd();this.scrollTop=G.scrollTop;if(!this.text&&G.selectionStart||G.selectionStart===0){this.text=G.value}};this.setInputAreaSelection=function(){if(!a.isVisible(G)){return}if(G.selectionStart!==undefined&&!v.isOpera){G.focus();G.selectionStart=F.start;G.selectionEnd=F.end;G.scrollTop=F.scrollTop}else{if(E.selection){if(E.activeElement&&E.activeElement!==G){return}G.focus();var H=G.createTextRange();H.moveStart("character",-G.value.length);H.moveEnd("character",-G.value.length);H.moveEnd("character",F.end);H.moveStart("character",F.start);H.select()}}};this.setInputAreaSelectionStartEnd=function(){if(G.selectionStart||G.selectionStart===0){F.start=G.selectionStart;F.end=G.selectionEnd}else{if(E.selection){F.text=a.fixEolChars(G.value);var K;if(y.ieRetardedClick&&y.ieCachedRange){K=y.ieCachedRange;y.ieRetardedClick=false}else{K=E.selection.createRange()}var L=a.fixEolChars(K.text);var J="\x07";var I=J+L+J;K.text=I;var M=a.fixEolChars(G.value);K.moveStart("character",-I.length);K.text=L;F.start=M.indexOf(J);F.end=M.lastIndexOf(J)-J.length;var H=F.text.length-a.fixEolChars(G.value).length;if(H){K.moveStart("character",-L.length);while(H--){L+="\n";F.end+=1}K.text=L}this.setInputAreaSelection()}}};this.restore=function(){if(F.text!=undefined&&F.text!=G.value){G.value=F.text}this.setInputAreaSelection();G.scrollTop=F.scrollTop};this.getChunks=function(){var H=new y.Chunks();H.before=a.fixEolChars(F.text.substring(0,F.start));H.startTag="";H.selection=a.fixEolChars(F.text.substring(F.start,F.end));H.endTag="";H.after=a.fixEolChars(F.text.substring(F.end));H.scrollTop=F.scrollTop;return H};this.setChunks=function(H){H.before=H.before+H.startTag;H.after=H.endTag+H.after;if(v.isOpera){H.before=H.before.replace(/\n/g,"\r\n");H.selection=H.selection.replace(/\n/g,"\r\n");H.after=H.after.replace(/\n/g,"\r\n")}this.start=H.before.length;this.end=H.before.length+H.selection.length;this.text=H.before+H.selection+H.after;this.scrollTop=H.scrollTop};this.init()};y.Chunks=function(){};y.Chunks.prototype.findTags=function(G,I){var F=this;var H;if(G){H=a.extendRegExp(G,"","$");this.before=this.before.replace(H,function(J){F.startTag=F.startTag+J;return""});H=a.extendRegExp(G,"^","");this.selection=this.selection.replace(H,function(J){F.startTag=F.startTag+J;return""})}if(I){H=a.extendRegExp(I,"","$");this.selection=this.selection.replace(H,function(J){F.endTag=J+F.endTag;return""});H=a.extendRegExp(I,"^","");this.after=this.after.replace(H,function(J){F.endTag=J+F.endTag;return""})}};y.Chunks.prototype.trimWhitespace=function(F){this.selection=this.selection.replace(/^(\s*)/,"");if(!F){this.before+=s.$1}this.selection=this.selection.replace(/(\s*)$/,"");if(!F){this.after=s.$1+this.after}};y.Chunks.prototype.skipLines=function(H,G,F){if(H===undefined){H=1}if(G===undefined){G=1}H++;G++;var I;var J;this.selection=this.selection.replace(/(^\n*)/,"");this.startTag=this.startTag+s.$1;this.selection=this.selection.replace(/(\n*$)/,"");this.endTag=this.endTag+s.$1;this.startTag=this.startTag.replace(/(^\n*)/,"");this.before=this.before+s.$1;this.endTag=this.endTag.replace(/(\n*$)/,"");this.after=this.after+s.$1;if(this.before){I=J="";while(H--){I+="\\n?";J+="\n"}if(F){I="\\n*"}this.before=this.before.replace(new s(I+"$",""),J)}if(this.after){I=J="";while(G--){I+="\\n?";J+="\n"}if(F){I="\\n*"}this.after=this.after.replace(new s(I,""),J)}};h.prefixes="(?:\\s{4,}|\\s*>|\\s*-\\s+|\\s*\\d+\\.|=|\\+|-|_|\\*|#|\\s*\\[[^\n]]+\\]:)";h.unwrap=function(G){var F=new s("([^\\n])\\n(?!(\\n|"+h.prefixes+"))","g");G.selection=G.selection.replace(F,"$1 $2")};h.wrap=function(G,F){h.unwrap(G);var H=new s("(.{1,"+F+"})( +|$\\n?)","gm");G.selection=G.selection.replace(H,function(I,J){if(new s("^"+h.prefixes,"").test(I)){return I}return J+"\n"});G.selection=G.selection.replace(/\s+$/,"")};h.doBold=function(F,G){return h.doBorI(F,G,2,"strong text")};h.doItalic=function(F,G){return h.doBorI(F,G,1,"emphasized text")};h.doBorI=function(L,J,K,F){L.trimWhitespace();L.selection=L.selection.replace(/\n{2,}/g,"\n");L.before.search(/(\**$)/);var I=s.$1;L.after.search(/(^\**)/);var G=s.$1;var M=Math.min(I.length,G.length);if((M>=K)&&(M!=2||K!=1)){L.before=L.before.replace(s("[*]{"+K+"}$",""),"");L.after=L.after.replace(s("^[*]{"+K+"}",""),"")}else{if(!L.selection&&G){L.after=L.after.replace(/^([*_]*)/,"");L.before=L.before.replace(/(\s?)$/,"");var H=s.$1;L.before=L.before+G+H}else{if(!L.selection&&!G){L.selection=F}var N=K<=1?"*":"**";L.before=L.before+N;L.after=N+L.after}}return};h.stripLinkDefs=function(G,F){G=G.replace(/^[ ]{0,3}\[(\d+)\]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|$)/gm,function(K,L,H,I,J){F[L]=K.replace(/\s*$/,"");if(I){F[L]=K.replace(/["(](.+?)[")]$/,"");return I+J}return""});return G};h.addLinkDef=function(M,I){var F=0;var H={};M.before=h.stripLinkDefs(M.before,H);M.selection=h.stripLinkDefs(M.selection,H);M.after=h.stripLinkDefs(M.after,H);var G="";var L=/(\[(?:\[[^\]]*\]|[^\[\]])*\][ ]?(?:\n[ ]*)?\[)(\d+)(\])/g;var K=function(O){F++;O=O.replace(/^[ ]{0,3}\[(\d+)\]:/," ["+F+"]:");G+="\n"+O};var J=function(P,Q,R,O){if(H[R]){K(H[R]);return Q+F+O}return P};M.before=M.before.replace(L,J);if(I){K(I)}else{M.selection=M.selection.replace(L,J)}var N=F;M.after=M.after.replace(L,J);if(M.after){M.after=M.after.replace(/\n*$/,"")}if(!M.after){M.selection=M.selection.replace(/\n*$/,"")}M.after+="\n\n"+G;return N};h.doLinkOrImage=function(F,G,I){F.trimWhitespace();F.findTags(/\s*!?\[/,/\][ ]?(?:\n[ ]*)?(\[.*?\])?/);if(F.endTag.length>1){F.startTag=F.startTag.replace(/!?\[/,"");F.endTag="";h.addLinkDef(F,null)}else{if(/\n\n/.test(F.selection)){h.addLinkDef(F,null);return}var H=function(L){if(L!==null){F.startTag=F.endTag="";var K=" [999]: "+L;var J=h.addLinkDef(F,K);F.startTag=I?"![":"[";F.endTag="]["+J+"]";if(!F.selection){if(I){F.selection="alt text"}else{F.selection="link text"}}}G()};if(I){a.prompt(B,b,H,1)}else{a.prompt(D,g,H)}return true}};a.makeAPI=function(){y.wmd={};y.wmd.editor=y.editor;y.wmd.previewManager=y.previewManager};a.startEditor=function(){if(y.wmd_env.autostart===false){a.makeAPI();return}var G;var F;var H=function(){y.panels=new y.PanelCollection();F=new y.previewManager();var I=F.refresh;G=new y.editor(I);F.refresh(true)};a.addEvent(top,"load",H)};y.previewManager=function(){var H=this;var V;var F;var N;var M;var S;var O;var I=3000;var P="delayed";var K=function(X,Y){a.addEvent(X,"input",Y);X.onpaste=Y;X.ondrop=Y;a.addEvent(X,"keypress",Y);a.addEvent(X,"keydown",Y);F=new y.inputPoller(Y,A)};var R=function(){var X=0;if(top.innerHeight){X=top.pageYOffset}else{if(E.documentElement&&E.documentElement.scrollTop){X=E.documentElement.scrollTop}else{if(E.body){X=E.body.scrollTop}}}return X};var L=function(){if(!y.panels.preview&&!y.panels.output){return}var Z=y.panels.input.value;if(Z&&Z==S){return}else{S=Z}var Y=new Date().getTime();if(!V&&y.showdown){V=new y.showdown.converter()}if(V){Z=V.makeHtml(Z)}var X=new Date().getTime();M=X-Y;G(Z);O=Z};var U=function(){if(N){top.clearTimeout(N);N=undefined}if(P!=="manual"){var X=0;if(P==="delayed"){X=M}if(X>I){X=I}N=top.setTimeout(L,X)}};var J=function(X){if(X.scrollHeight<=X.clientHeight){return 1}return X.scrollTop/(X.scrollHeight-X.clientHeight)};var W=function(){if(y.panels.preview){y.panels.preview.scrollTop=(y.panels.preview.scrollHeight-y.panels.preview.clientHeight)*J(y.panels.preview)}if(y.panels.output){y.panels.output.scrollTop=(y.panels.output.scrollHeight-y.panels.output.clientHeight)*J(y.panels.output)}};this.refresh=function(X){if(X){S="";L()}else{U()}};this.processingTime=function(){return M};this.output=function(){return O};this.setUpdateMode=function(X){P=X;H.refresh()};var Q=true;var G=function(aa){var X=C.getTop(y.panels.input)-R();if(y.panels.output){if(y.panels.output.value!==undefined){y.panels.output.value=aa;y.panels.output.readOnly=true}else{var Z=aa.replace(/&/g,"&");Z=Z.replace(/"+Z+"
      "}}if(y.panels.preview){y.panels.preview.innerHTML=aa}W();if(Q){Q=false;return}var Y=C.getTop(y.panels.input)-R();if(v.isIE){top.setTimeout(function(){top.scrollBy(0,Y-X)},0)}else{top.scrollBy(0,Y-X)}};var T=function(){K(y.panels.input,U);L();if(y.panels.preview){y.panels.preview.scrollTop=0}if(y.panels.output){y.panels.output.scrollTop=0}};this.destroy=function(){if(F){F.destroy()}};T()};h.doAutoindent=function(F,G){F.before=F.before.replace(/(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]*\n$/,"\n\n");F.before=F.before.replace(/(\n|^)[ ]{0,3}>[ \t]*\n$/,"\n\n");F.before=F.before.replace(/(\n|^)[ \t]+\n$/,"\n\n");if(/(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]+.*\n$/.test(F.before)){if(h.doList){h.doList(F)}}if(/(\n|^)[ ]{0,3}>[ \t]+.*\n$/.test(F.before)){if(h.doBlockquote){h.doBlockquote(F)}}if(/(\n|^)(\t|[ ]{4,}).*\n$/.test(F.before)){if(h.doCode){h.doCode(F)}}};h.doBlockquote=function(F,G){F.selection=F.selection.replace(/^(\n*)([^\r]+?)(\n*)$/,function(L,K,J,I){F.before+=K;F.after=I+F.after;return J});F.before=F.before.replace(/(>[ \t]*)$/,function(J,I){F.selection=I+F.selection;return""});F.selection=F.selection.replace(/^(\s|>)+$/,"");F.selection=F.selection||"Blockquote";if(F.before){F.before=F.before.replace(/\n?$/,"\n")}if(F.after){F.after=F.after.replace(/^\n?/,"\n")}F.before=F.before.replace(/(((\n|^)(\n[ \t]*)*>(.+\n)*.*)+(\n[ \t]*)*$)/,function(I){F.startTag=I;return""});F.after=F.after.replace(/^(((\n|^)(\n[ \t]*)*>(.+\n)*.*)+(\n[ \t]*)*)/,function(I){F.endTag=I;return""});var H=function(J){var I=J?"> ":"";if(F.startTag){F.startTag=F.startTag.replace(/\n((>|\s)*)\n$/,function(L,K){return"\n"+K.replace(/^[ ]{0,3}>?[ \t]*$/gm,I)+"\n"})}if(F.endTag){F.endTag=F.endTag.replace(/^\n((>|\s)*)\n/,function(L,K){return"\n"+K.replace(/^[ ]{0,3}>?[ \t]*$/gm,I)+"\n"})}};if(/^(?![ ]{0,3}>)/m.test(F.selection)){h.wrap(F,y.wmd_env.lineLength-2);F.selection=F.selection.replace(/^/gm,"> ");H(true);F.skipLines()}else{F.selection=F.selection.replace(/^[ ]{0,3}> ?/gm,"");h.unwrap(F);H(false);if(!/^(\n|^)[ ]{0,3}>/.test(F.selection)&&F.startTag){F.startTag=F.startTag.replace(/\n{0,2}$/,"\n\n")}if(!/(\n|^)[ ]{0,3}>.*$/.test(F.selection)&&F.endTag){F.endTag=F.endTag.replace(/^\n{0,2}/,"\n\n")}}if(!/\n/.test(F.selection)){F.selection=F.selection.replace(/^(> *)/,function(I,J){F.startTag+=J;return""})}};h.doCode=function(F,G){var I=/\S[ ]*$/.test(F.before);var K=/^[ ]*\S/.test(F.after);if((!K&&!I)||/\n/.test(F.selection)){F.before=F.before.replace(/[ ]{4}$/,function(L){F.selection=L+F.selection;return""});var J=1;var H=1;if(/\n(\t|[ ]{4,}).*\n$/.test(F.before)){J=0}if(/^\n(\t|[ ]{4,})/.test(F.after)){H=0}F.skipLines(J,H);if(!F.selection){F.startTag=" ";F.selection="enter code here"}else{if(/^[ ]{0,3}\S/m.test(F.selection)){F.selection=F.selection.replace(/^/gm," ")}else{F.selection=F.selection.replace(/^[ ]{4}/gm,"")}}}else{F.trimWhitespace();F.findTags(/`/,/`/);if(!F.startTag&&!F.endTag){F.startTag=F.endTag="`";if(!F.selection){F.selection="enter code here"}}else{if(F.endTag&&!F.startTag){F.before+=F.endTag;F.endTag=""}else{F.startTag=F.endTag=""}}}};h.doList=function(Q,J,I){var S=/(\n|^)(([ ]{0,3}([*+-]|\d+[.])[ \t]+.*)(\n.+|\n{2,}([*+-].*|\d+[.])[ \t]+.*|\n{2,}[ \t]+\S.*)*)\n*$/;var R=/^\n*(([ ]{0,3}([*+-]|\d+[.])[ \t]+.*)(\n.+|\n{2,}([*+-].*|\d+[.])[ \t]+.*|\n{2,}[ \t]+\S.*)*)\n*/;var F="-";var N=1;var L=function(){var T;if(I){T=" "+N+". ";N++}else{T=" "+F+" "}return T};var M=function(T){if(I===undefined){I=/^\s*\d/.test(T)}T=T.replace(/^[ ]{0,3}([*+-]|\d+[.])\s/gm,function(U){return L()});return T};Q.findTags(/(\n|^)*[ ]{0,3}([*+-]|\d+[.])\s+/,null);if(Q.before&&!/\n$/.test(Q.before)&&!/^\n/.test(Q.startTag)){Q.before+=Q.startTag;Q.startTag=""}if(Q.startTag){var H=/\d+[.]/.test(Q.startTag);Q.startTag="";Q.selection=Q.selection.replace(/\n[ ]{4}/g,"\n");h.unwrap(Q);Q.skipLines();if(H){Q.after=Q.after.replace(R,M)}if(I==H){return}}var K=1;Q.before=Q.before.replace(S,function(T){if(/^\s*([*+-])/.test(T)){F=s.$1}K=/[^\n]\n\n[^\n]/.test(T)?1:0;return M(T)});if(!Q.selection){Q.selection="List item"}var O=L();var G=1;Q.after=Q.after.replace(R,function(T){G=/[^\n]\n\n[^\n]/.test(T)?1:0;return M(T)});Q.trimWhitespace(true);Q.skipLines(K,G,true);Q.startTag=O;var P=O.replace(/./g," ");h.wrap(Q,y.wmd_env.lineLength-P.length);Q.selection=Q.selection.replace(/\n/g,"\n"+P)};h.doHeading=function(H,I){H.selection=H.selection.replace(/\s+/g," ");H.selection=H.selection.replace(/(^\s+|\s+$)/g,"");if(!H.selection){H.startTag="## ";H.selection="Heading";H.endTag=" ##";return}var J=0;H.findTags(/#+[ ]*/,/[ ]*#+/);if(/#+/.test(H.startTag)){J=s.lastMatch.length}H.startTag=H.endTag="";H.findTags(null,/\s?(-+|=+)/);if(/=+/.test(H.endTag)){J=1}if(/-+/.test(H.endTag)){J=2}H.startTag=H.endTag="";H.skipLines(1,1);var K=J==0?2:J-1;if(K>0){var G=K>=2?"-":"=";var F=H.selection.length;if(F>y.wmd_env.lineLength){F=y.wmd_env.lineLength}H.endTag="\n";while(F--){H.endTag+=G}}};h.doHorizontalRule=function(F,G){F.startTag="----------\n";F.selection="";F.skipLines(2,1,true)}};Attacklab.wmd_env={};Attacklab.account_options={};Attacklab.wmd_defaults={version:1,output:"Markdown",lineLength:40,delayLoad:false};if(!Attacklab.wmd){Attacklab.wmd=function(){Attacklab.loadEnv=function(){var b=function(d){if(!d){return}for(var c in d){Attacklab.wmd_env[c]=d[c]}};b(Attacklab.wmd_defaults);b(Attacklab.account_options);b(top.wmd_options);Attacklab.full=true;var a="bold italic link blockquote code image ol ul heading hr";Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||a};Attacklab.loadEnv()};Attacklab.wmd();Attacklab.wmdBase();Attacklab.Util.startEditor()}; \ No newline at end of file diff --git a/lms/askbot/skins/common/media/js/wmd/wmd-test.html b/lms/askbot/skins/common/media/js/wmd/wmd-test.html deleted file mode 100644 index d748501a5b..0000000000 --- a/lms/askbot/skins/common/media/js/wmd/wmd-test.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - Test WMD Page - - - - - - - - - - - - - - -
      -
      - -
      -
      -
      -
      - -

      To test that page up/down and arrow keys work, copy this above the WMD - control.

      - - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - Scroll Down!
      - - - - \ No newline at end of file diff --git a/lms/askbot/skins/common/media/js/wmd/wmd.css b/lms/askbot/skins/common/media/js/wmd/wmd.css deleted file mode 100644 index 4ca764029f..0000000000 --- a/lms/askbot/skins/common/media/js/wmd/wmd.css +++ /dev/null @@ -1,131 +0,0 @@ -/* .wmd-panel */ -/* { */ -/* } */ - -/* #wmd-button-bar */ -/* { */ -/* background: url(images/editor-toolbar-background.png) repeat-x bottom; */ -/* height:36px; */ -/* border-left:#cce6ec 3px solid; */ -/* border-top:#cce6ec 3px solid; */ -/* border-right:#cce6ec 3px solid; */ -/* float:left; */ -/* width:730px; */ -/* } */ - -/* #wmd-input */ -/* { */ -/* height: 500px; */ -/* background-color: Gainsboro; */ -/* border: 1px solid DarkGray; */ -/* margin-top: -20px; */ -/* } */ - -/* #wmd-preview */ -/* { */ -/* background-color: LightSkyBlue; */ -/* } */ - -/* #wmd-output */ -/* { */ -/* background-color: Pink; */ -/* } */ - -/* #wmd-button-row */ -/* { */ -/* position: relative; */ -/* margin-left: 5px; */ -/* margin-right: 5px; */ -/* margin-bottom: 0px; */ -/* margin-top: 10px; */ -/* padding: 0px; */ -/* height: 20px; */ -/* } */ - -/* .wmd-spacer */ -/* { */ -/* width: 1px; */ -/* height: 20px; */ -/* margin-left: 14px; */ - -/* position: absolute; */ -/* background-color: Silver; */ -/* display: inline-block; */ -/* list-style: none; */ -/* } */ - -/* .wmd-button */ -/* { */ -/* width: 20px; */ -/* height: 20px; */ -/* margin-left: 5px; */ -/* margin-right: 5px; */ - -/* position: absolute; */ -/* background-image: url(images/wmd-buttons.png); */ -/* background-repeat: no-repeat; */ -/* background-position: 0px 0px; */ -/* display: inline-block; */ -/* list-style: none; */ -/* } */ - -/* .wmd-button > a */ -/* { */ -/* width: 20px; */ -/* height: 20px; */ -/* margin-left: 5px; */ -/* margin-right: 5px; */ - -/* position: absolute; */ -/* display: inline-block; */ -/* } */ - - -/* /1* sprite button slicing style information *1/ */ -/* #wmd-button-bar #wmd-bold-button {left: 0px; background-position: 0px 0;} */ -/* #wmd-button-bar #wmd-italic-button {left: 25px; background-position: -20px 0;} */ -/* #wmd-button-bar #wmd-spacer1 {left: 50px;} */ -/* #wmd-button-bar #wmd-link-button {left: 75px; background-position: -40px 0;} */ -/* #wmd-button-bar #wmd-quote-button {left: 100px; background-position: -60px 0;} */ -/* #wmd-button-bar #wmd-code-button {left: 125px; background-position: -80px 0;} */ -/* #wmd-button-bar #wmd-image-button {left: 150px; background-position: -100px 0;} */ -/* #wmd-button-bar #wmd-attachment-button {left: 175px; background-position: -120px 0;} */ -/* #wmd-button-bar #wmd-spacer2 {left: 200px;} */ -/* #wmd-button-bar #wmd-olist-button {left: 225px; background-position: -140px 0;} */ -/* #wmd-button-bar #wmd-ulist-button {left: 250px; background-position: -160px 0;} */ -/* #wmd-button-bar #wmd-heading-button {left: 275px; background-position: -180px 0;} */ -/* #wmd-button-bar #wmd-hr-button {left: 300px; background-position: -200px 0;} */ -/* #wmd-button-bar #wmd-spacer3 {left: 325px;} */ -/* #wmd-button-bar #wmd-undo-button {left: 350px; background-position: -220px 0;} */ -/* #wmd-button-bar #wmd-redo-button {left: 375px; background-position: -240px 0;} */ -/* #wmd-button-bar #wmd-help-button {right: 0px; background-position: -260px 0;} */ - - -/* .wmd-prompt-background */ -/* { */ -/* background-color: Black; */ -/* } */ - -/* .wmd-prompt-dialog */ -/* { */ -/* border: 1px solid #999999; */ -/* background-color: #F5F5F5; */ -/* } */ - -/* .wmd-prompt-dialog > div { */ -/* font-size: 1em; */ -/* font-family: arial, helvetica, sans-serif; */ -/* } */ - - -/* .wmd-prompt-dialog > form > input[type="text"] { */ -/* border: 1px solid #999999; */ -/* color: black; */ -/* } */ - -/* .wmd-prompt-dialog > form > input[type="button"]{ */ -/* border: 1px solid #888888; */ -/* font-family: trebuchet MS, helvetica, sans-serif; */ -/* font-size: 1em; */ -/* font-weight: bold; */ -/* } */ diff --git a/lms/askbot/skins/common/media/js/wmd/wmd.js b/lms/askbot/skins/common/media/js/wmd/wmd.js deleted file mode 100644 index 1d524361fb..0000000000 --- a/lms/askbot/skins/common/media/js/wmd/wmd.js +++ /dev/null @@ -1,2438 +0,0 @@ -var Attacklab = Attacklab || {}; - -Attacklab.wmdBase = function(){ - - // A few handy aliases for readability. - var wmd = top.Attacklab; - var doc = top.document; - var re = top.RegExp; - var nav = top.navigator; - - // Some namespaces. - wmd.Util = {}; - wmd.Position = {}; - wmd.Command = {}; - wmd.Global = {}; - - var util = wmd.Util; - var position = wmd.Position; - var command = wmd.Command; - var global = wmd.Global; - - - // Used to work around some browser bugs where we can't use feature testing. - global.isIE = /msie/.test(nav.userAgent.toLowerCase()); - global.isIE_5or6 = /msie 6/.test(nav.userAgent.toLowerCase()) || /msie 5/.test(nav.userAgent.toLowerCase()); - global.isIE_7plus = global.isIE && !global.isIE_5or6; - global.isOpera = /opera/.test(nav.userAgent.toLowerCase()); - global.isKonqueror = /konqueror/.test(nav.userAgent.toLowerCase()); - - var toolbar_strong_label = gettext('bold') + " Ctrl-B"; - var toolbar_emphasis_label = gettext('italic') + " Ctrl-I"; - var toolbar_hyperlink_label = gettext('link') + " Ctrl-L"; - var toolbar_blockquote_label = gettext('quote') + "
      Ctrl-."; - var toolbar_code_label = gettext('preformatted text') + "
       Ctrl-K";
      -    var toolbar_image_label = gettext('image') + "  Ctrl-G";
      -    var toolbar_attachment_label = gettext('attachment') + " Ctrl-F";
      -    var toolbar_numbered_label = gettext('numbered list') + " 
        Ctrl-O"; - var toolbar_bulleted_label = gettext('bulleted list') + "
          Ctrl-U"; - var toolbar_heading_label = gettext('heading') + "

          /

          Ctrl-H"; - var toolbar_horizontal_label = gettext('horizontal bar') + "
          Ctrl-R"; - var toolbar_undo_label = gettext('undo') + " Ctrl-Z"; - var toolbar_redo_label = gettext('redo') + " Ctrl-Y"; - - // ------------------------------------------------------------------- - // YOUR CHANGES GO HERE - // - // I've tried to localize the things you are likely to change to - // this area. - // ------------------------------------------------------------------- - - // The text that appears on the upper part of the dialog box when - // entering links. - var imageDialogText = "

          " + gettext('enter image url') + '

          '; - var linkDialogText = "

          " + gettext('enter url') + '

          '; - var fileDialogText = "

          " + gettext('upload file attachment') + '

          '; - // The default text that appears in the dialog input box when entering - // links. - var imageDefaultText = "http://"; - var linkDefaultText = "http://"; - - // The location of your button images relative to the base directory. - var imageDirectory = "images/"; - - // Some intervals in ms. These can be adjusted to reduce the control's load. - var previewPollInterval = 500; - var pastePollInterval = 100; - - // The link and title for the help button - var helpLink = "http://wmd-editor.com/"; - var helpHoverTitle = "WMD website"; - var helpTarget = "_blank"; - var localUploadFileName = null; - - // ------------------------------------------------------------------- - // END OF YOUR CHANGES - // ------------------------------------------------------------------- - - // A collection of the important regions on the page. - // Cached so we don't have to keep traversing the DOM. - wmd.PanelCollection = function(){ - this.buttonBar = doc.getElementById("wmd-button-bar"); - this.preview = doc.getElementById("previewer"); - this.output = doc.getElementById("wmd-output"); - this.input = doc.getElementById("editor"); - }; - - // This PanelCollection object can't be filled until after the page - // has loaded. - wmd.panels = undefined; - - // Internet explorer has problems with CSS sprite buttons that use HTML - // lists. When you click on the background image "button", IE will - // select the non-existent link text and discard the selection in the - // textarea. The solution to this is to cache the textarea selection - // on the button's mousedown event and set a flag. In the part of the - // code where we need to grab the selection, we check for the flag - // and, if it's set, use the cached area instead of querying the - // textarea. - // - // This ONLY affects Internet Explorer (tested on versions 6, 7 - // and 8) and ONLY on button clicks. Keyboard shortcuts work - // normally since the focus never leaves the textarea. - wmd.ieCachedRange = null; // cached textarea selection - wmd.ieRetardedClick = false; // flag - - // Returns true if the DOM element is visible, false if it's hidden. - // Checks if display is anything other than none. - util.isVisible = function (elem) { - - if (window.getComputedStyle) { - // Most browsers - return window.getComputedStyle(elem, null).getPropertyValue("display") !== "none"; - } - else if (elem.currentStyle) { - // IE - return elem.currentStyle.display !== "none"; - } - }; - - - // Adds a listener callback to a DOM element which is fired on a specified - // event. - util.addEvent = function(elem, event, listener){ - if (elem.attachEvent) { - // IE only. The "on" is mandatory. - elem.attachEvent("on" + event, listener); - } - else { - // Other browsers. - elem.addEventListener(event, listener, false); - } - }; - - - // Removes a listener callback from a DOM element which is fired on a specified - // event. - util.removeEvent = function(elem, event, listener){ - if (elem.detachEvent) { - // IE only. The "on" is mandatory. - elem.detachEvent("on" + event, listener); - } - else { - // Other browsers. - elem.removeEventListener(event, listener, false); - } - }; - - // Converts \r\n and \r to \n. - util.fixEolChars = function(text){ - text = text.replace(/\r\n/g, "\n"); - text = text.replace(/\r/g, "\n"); - return text; - }; - - // Extends a regular expression. Returns a new RegExp - // using pre + regex + post as the expression. - // Used in a few functions where we have a base - // expression and we want to pre- or append some - // conditions to it (e.g. adding "$" to the end). - // The flags are unchanged. - // - // regex is a RegExp, pre and post are strings. - util.extendRegExp = function(regex, pre, post){ - - if (pre === null || pre === undefined) - { - pre = ""; - } - if(post === null || post === undefined) - { - post = ""; - } - - var pattern = regex.toString(); - var flags; - - // Replace the flags with empty space and store them. - pattern = pattern.replace(/\/([gim]*)$/, ""); - flags = re.$1; - - // Remove the slash delimiters on the regular expression. - pattern = pattern.replace(/(^\/|\/$)/g, ""); - pattern = pre + pattern + post; - - return new re(pattern, flags); - }; - - - // Sets the image for a button passed to the WMD editor. - // Returns a new element with the image attached. - // Adds several style properties to the image. - util.createImage = function(img){ - - var imgPath = imageDirectory + img; - - var elem = doc.createElement("img"); - elem.className = "wmd-button"; - elem.src = imgPath; - - return elem; - }; - - -// This simulates a modal dialog box and asks for the URL when you -// click the hyperlink or image buttons. -// -// text: The html for the input box. -// defaultInputText: The default value that appears in the input box. -// makeLinkMarkdown: The function which is executed when the prompt is dismissed, either via OK or Cancel -util.prompt = function(text, defaultInputText, makeLinkMarkdown, dialogType){ - - // These variables need to be declared at this level since they are used - // in multiple functions. - var dialog;// The dialog box. - var background;// The background beind the dialog box. - var input;// The text box where you enter the hyperlink. - - if (defaultInputText === undefined) { - defaultInputText = ""; - } - - // Used as a keydown event handler. Esc dismisses the prompt. - // Key code 27 is ESC. - var checkEscape = function(key){ - var code = (key.charCode || key.keyCode); - if (code === 27) { - close(true); - } - }; - - // Dismisses the hyperlink input box. - // isCancel is true if we don't care about the input text. - // isCancel is false if we are going to keep the text. - var close = function(isCancel){ - util.removeEvent(doc.body, "keydown", checkEscape); - var text = input.value; - - if (isCancel){ - text = null; - } - else{ - // Fixes common pasting errors. - text = text.replace('http://http://', 'http://'); - text = text.replace('http://https://', 'https://'); - text = text.replace('http://ftp://', 'ftp://'); - - if (text.indexOf('http://') === -1 && text.indexOf('ftp://') === -1 && text.indexOf('https://') === -1) { - if (dialogType == 'link'){ - //add http only to urls - text = 'http://' + text; - } - } - } - - dialog.parentNode.removeChild(dialog); - background.parentNode.removeChild(background); - makeLinkMarkdown(text); - return false; - }; - - // Creates the background behind the hyperlink text entry box. - // Most of this has been moved to CSS but the div creation and - // browser-specific hacks remain here. - var createBackground = function(){ - - background = doc.createElement("div"); - background.className = "wmd-prompt-background"; - style = background.style; - style.position = "absolute"; - style.top = "0"; - - style.zIndex = "1000"; - - // Some versions of Konqueror don't support transparent colors - // so we make the whole window transparent. - // - // Is this necessary on modern konqueror browsers? - if (global.isKonqueror){ - style.backgroundColor = "transparent"; - } - else if (global.isIE){ - style.filter = "alpha(opacity=50)"; - } - else { - style.opacity = "0.5"; - } - - var pageSize = position.getPageSize(); - style.height = pageSize[1] + "px"; - - if(global.isIE){ - style.left = doc.documentElement.scrollLeft; - style.width = doc.documentElement.clientWidth; - } - else { - style.left = "0"; - style.width = "100%"; - } - - doc.body.appendChild(background); - }; - - // Create the text input box form/window. - var createDialog = function(){ - - // The main dialog box. - dialog = doc.createElement("div"); - dialog.className = "wmd-prompt-dialog"; - dialog.style.padding = "10px;"; - dialog.style.position = "fixed"; - dialog.style.width = "400px"; - dialog.style.zIndex = "1001"; - - // The dialog text. - var question = doc.createElement("div"); - question.innerHTML = text; - question.style.padding = "5px"; - dialog.appendChild(question); - - // The web form container for the text box and buttons. - var form = doc.createElement("form"); - form.onsubmit = function(){ return close(false); }; - style = form.style; - style.padding = "0"; - style.margin = "0"; - style.cssFloat = "left"; - style.width = "100%"; - style.textAlign = "center"; - style.position = "relative"; - dialog.appendChild(form); - - // The input text box - input = doc.createElement("input"); - if(dialogType == 'image' || dialogType == 'file'){ - input.id = "image-url"; - } - input.type = "text"; - if (dialogType == 'file'){ - input.disabled = "disabled"; - }; - - input.value = defaultInputText; - style = input.style; - style.display = "block"; - style.width = "80%"; - style.marginLeft = style.marginRight = "auto"; - form.appendChild(input); - - // The upload file input - if(dialogType == 'image' || dialogType == 'file'){ - var upload_container = $('
          '); - var upload_input = $(''); - upload_input.attr('name', 'file-upload'); - upload_input.attr('id', 'file-upload'); - upload_input.attr('size', 26); - - var startUploadHandler = function(){ - localUploadFileName = $(this).val(); - return ajaxFileUpload($('#image-url'), startUploadHandler); - }; - - upload_input.change(startUploadHandler); - - upload_container.append(upload_input); - upload_container.append($('
          ')); - - var spinner = $(''); - spinner.attr('id', 'loading'); - spinner.attr('src', mediaUrl("media/images/indicator.gif")); - spinner.css('display', 'none'); - - upload_container.append(spinner); - upload_container.css('padding', '5px'); - $(form).append(upload_container); - } - - // The ok button - var okButton = doc.createElement("input"); - okButton.type = "button"; - okButton.onclick = function(){ - var isCancel = false; - if ($.trim($(input).val()) === ''){ - isCancel = true; - } - return close(isCancel); - }; - okButton.value = "OK"; - style = okButton.style; - style.margin = "10px"; - style.display = "inline"; - style.width = "7em"; - - // The cancel button - var cancelButton = doc.createElement("input"); - cancelButton.type = "button"; - cancelButton.onclick = function(){ return close(true); }; - cancelButton.value = "Cancel"; - style = cancelButton.style; - style.margin = "10px"; - style.display = "inline"; - style.width = "7em"; - - // The order of these buttons is different on macs. - if (/mac/.test(nav.platform.toLowerCase())) { - form.appendChild(cancelButton); - form.appendChild(okButton); - } - else { - form.appendChild(okButton); - form.appendChild(cancelButton); - } - - util.addEvent(doc.body, "keydown", checkEscape); - dialog.style.top = "50%"; - dialog.style.left = "50%"; - dialog.style.display = "block"; - if(global.isIE_5or6){ - dialog.style.position = "absolute"; - dialog.style.top = doc.documentElement.scrollTop + 200 + "px"; - dialog.style.left = "50%"; - } - doc.body.appendChild(dialog); - - // This has to be done AFTER adding the dialog to the form if you - // want it to be centered. - dialog.style.marginTop = -(position.getHeight(dialog) / 2) + "px"; - dialog.style.marginLeft = -(position.getWidth(dialog) / 2) + "px"; - - }; - - createBackground(); - - // Why is this in a zero-length timeout? - // Is it working around a browser bug? - top.setTimeout(function(){ - createDialog(); - var defTextLen = defaultInputText.length; - if (input.type == 'text' && input.selectionStart !== undefined) { - input.selectionStart = 0; - input.selectionEnd = defTextLen; - } - else if (input.createTextRange) { - var range = input.createTextRange(); - range.collapse(false); - range.moveStart("character", -defTextLen); - range.moveEnd("character", defTextLen); - range.select(); - } - - input.focus(); - }, 0); -}; - - - // UNFINISHED - // The assignment in the while loop makes jslint cranky. - // I'll change it to a better loop later. - position.getTop = function(elem, isInner){ - var result = elem.offsetTop; - if (!isInner) { - while (elem.offsetParent) { - elem = elem.offsetParent; - result += elem.offsetTop; - } - } - return result; - }; - - position.getHeight = function (elem) { - return elem.offsetHeight || elem.scrollHeight; - }; - - position.getWidth = function (elem) { - return elem.offsetWidth || elem.scrollWidth; - }; - - position.getPageSize = function(){ - - var scrollWidth, scrollHeight; - var innerWidth, innerHeight; - - // It's not very clear which blocks work with which browsers. - if(self.innerHeight && self.scrollMaxY){ - scrollWidth = doc.body.scrollWidth; - scrollHeight = self.innerHeight + self.scrollMaxY; - } - else if(doc.body.scrollHeight > doc.body.offsetHeight){ - scrollWidth = doc.body.scrollWidth; - scrollHeight = doc.body.scrollHeight; - } - else{ - scrollWidth = doc.body.offsetWidth; - scrollHeight = doc.body.offsetHeight; - } - - if(self.innerHeight){ - // Non-IE browser - innerWidth = self.innerWidth; - innerHeight = self.innerHeight; - } - else if(doc.documentElement && doc.documentElement.clientHeight){ - // Some versions of IE (IE 6 w/ a DOCTYPE declaration) - innerWidth = doc.documentElement.clientWidth; - innerHeight = doc.documentElement.clientHeight; - } - else if(doc.body){ - // Other versions of IE - innerWidth = doc.body.clientWidth; - innerHeight = doc.body.clientHeight; - } - - var maxWidth = Math.max(scrollWidth, innerWidth); - var maxHeight = Math.max(scrollHeight, innerHeight); - return [maxWidth, maxHeight, innerWidth, innerHeight]; - }; - - // Watches the input textarea, polling at an interval and runs - // a callback function if anything has changed. - wmd.inputPoller = function(callback, interval){ - - var pollerObj = this; - var inputArea = wmd.panels.input; - - // Stored start, end and text. Used to see if there are changes to the input. - var lastStart; - var lastEnd; - var markdown; - - var killHandle; // Used to cancel monitoring on destruction. - // Checks to see if anything has changed in the textarea. - // If so, it runs the callback. - this.tick = function(){ - - if (!util.isVisible(inputArea)) { - return; - } - - // Update the selection start and end, text. - if (inputArea.selectionStart || inputArea.selectionStart === 0) { - var start = inputArea.selectionStart; - var end = inputArea.selectionEnd; - if (start != lastStart || end != lastEnd) { - lastStart = start; - lastEnd = end; - - if (markdown != inputArea.value) { - markdown = inputArea.value; - return true; - } - } - } - return false; - }; - - - var doTickCallback = function(){ - - if (!util.isVisible(inputArea)) { - return; - } - - // If anything has changed, call the function. - if (pollerObj.tick()) { - callback(); - } - }; - - // Set how often we poll the textarea for changes. - var assignInterval = function(){ - // previewPollInterval is set at the top of the namespace. - killHandle = top.setInterval(doTickCallback, interval); - }; - - this.destroy = function(){ - top.clearInterval(killHandle); - }; - - assignInterval(); - }; - - // Handles pushing and popping TextareaStates for undo/redo commands. - // I should rename the stack variables to list. - wmd.undoManager = function(callback){ - - var undoObj = this; - var undoStack = []; // A stack of undo states - var stackPtr = 0; // The index of the current state - var mode = "none"; - var lastState; // The last state - var poller; - var timer; // The setTimeout handle for cancelling the timer - var inputStateObj; - - // Set the mode for later logic steps. - var setMode = function(newMode, noSave){ - - if (mode != newMode) { - mode = newMode; - if (!noSave) { - saveState(); - } - } - - if (!global.isIE || mode != "moving") { - timer = top.setTimeout(refreshState, 1); - } - else { - inputStateObj = null; - } - }; - - var refreshState = function(){ - inputStateObj = new wmd.TextareaState(); - poller.tick(); - timer = undefined; - }; - - this.setCommandMode = function(){ - mode = "command"; - saveState(); - timer = top.setTimeout(refreshState, 0); - }; - - this.canUndo = function(){ - return stackPtr > 1; - }; - - this.canRedo = function(){ - if (undoStack[stackPtr + 1]) { - return true; - } - return false; - }; - - // Removes the last state and restores it. - this.undo = function(){ - - if (undoObj.canUndo()) { - if (lastState) { - // What about setting state -1 to null or checking for undefined? - lastState.restore(); - lastState = null; - } - else { - undoStack[stackPtr] = new wmd.TextareaState(); - undoStack[--stackPtr].restore(); - - if (callback) { - callback(); - } - } - } - - mode = "none"; - wmd.panels.input.focus(); - refreshState(); - }; - - // Redo an action. - this.redo = function(){ - - if (undoObj.canRedo()) { - - undoStack[++stackPtr].restore(); - - if (callback) { - callback(); - } - } - - mode = "none"; - wmd.panels.input.focus(); - refreshState(); - }; - - // Push the input area state to the stack. - var saveState = function(){ - - var currState = inputStateObj || new wmd.TextareaState(); - - if (!currState) { - return false; - } - if (mode == "moving") { - if (!lastState) { - lastState = currState; - } - return; - } - if (lastState) { - if (undoStack[stackPtr - 1].text != lastState.text) { - undoStack[stackPtr++] = lastState; - } - lastState = null; - } - undoStack[stackPtr++] = currState; - undoStack[stackPtr + 1] = null; - if (callback) { - callback(); - } - }; - - var handleCtrlYZ = function(event){ - - var handled = false; - - if (event.ctrlKey || event.metaKey) { - - // IE and Opera do not support charCode. - var keyCode = event.charCode || event.keyCode; - var keyCodeChar = String.fromCharCode(keyCode); - - switch (keyCodeChar) { - - case "y": - undoObj.redo(); - handled = true; - break; - - case "z": - if (!event.shiftKey) { - undoObj.undo(); - } - else { - undoObj.redo(); - } - handled = true; - break; - } - } - - if (handled) { - if (event.preventDefault) { - event.preventDefault(); - } - if (top.event) { - top.event.returnValue = false; - } - return; - } - }; - - // Set the mode depending on what is going on in the input area. - var handleModeChange = function(event){ - - if (!event.ctrlKey && !event.metaKey) { - - var keyCode = event.keyCode; - - if ((keyCode >= 33 && keyCode <= 40) || (keyCode >= 63232 && keyCode <= 63235)) { - // 33 - 40: page up/dn and arrow keys - // 63232 - 63235: page up/dn and arrow keys on safari - setMode("moving"); - } - else if (keyCode == 8 || keyCode == 46 || keyCode == 127) { - // 8: backspace - // 46: delete - // 127: delete - setMode("deleting"); - } - else if (keyCode == 13) { - // 13: Enter - setMode("newlines"); - } - else if (keyCode == 27) { - // 27: escape - setMode("escape"); - } - else if ((keyCode < 16 || keyCode > 20) && keyCode != 91) { - // 16-20 are shift, etc. - // 91: left window key - // I think this might be a little messed up since there are - // a lot of nonprinting keys above 20. - setMode("typing"); - } - } - }; - - var setEventHandlers = function(){ - - util.addEvent(wmd.panels.input, "keypress", function(event){ - // keyCode 89: y - // keyCode 90: z - if ((event.ctrlKey || event.metaKey) && (event.keyCode == 89 || event.keyCode == 90)) { - event.preventDefault(); - } - }); - - var handlePaste = function(){ - if (global.isIE || (inputStateObj && inputStateObj.text != wmd.panels.input.value)) { - if (timer === undefined) { - mode = "paste"; - saveState(); - refreshState(); - } - } - }; - - // pastePollInterval is specified at the beginning of this namespace. - poller = new wmd.inputPoller(handlePaste, pastePollInterval); - - util.addEvent(wmd.panels.input, "keydown", handleCtrlYZ); - util.addEvent(wmd.panels.input, "keydown", handleModeChange); - - util.addEvent(wmd.panels.input, "mousedown", function(){ - setMode("moving"); - }); - wmd.panels.input.onpaste = handlePaste; - wmd.panels.input.ondrop = handlePaste; - }; - - var init = function(){ - setEventHandlers(); - refreshState(); - saveState(); - }; - - this.destroy = function(){ - if (poller) { - poller.destroy(); - } - }; - - init(); - }; - - // I think my understanding of how the buttons and callbacks are stored in the array is incomplete. - wmd.editor = function(previewRefreshCallback){ - - if (!previewRefreshCallback) { - previewRefreshCallback = function(){}; - } - - var inputBox = wmd.panels.input; - - var offsetHeight = 0; - - var editObj = this; - - var mainDiv; - var mainSpan; - - var div; // This name is pretty ambiguous. I should rename this. - - // Used to cancel recurring events from setInterval. - var creationHandle; - - var undoMgr; // The undo manager - - // Perform the button's action. - var doClick = function(button){ - - inputBox.focus(); - - if (button.textOp) { - - if (undoMgr) { - undoMgr.setCommandMode(); - } - - var state = new wmd.TextareaState(); - - if (!state) { - return; - } - - var chunks = state.getChunks(); - - // Some commands launch a "modal" prompt dialog. Javascript - // can't really make a modal dialog box and the WMD code - // will continue to execute while the dialog is displayed. - // This prevents the dialog pattern I'm used to and means - // I can't do something like this: - // - // var link = CreateLinkDialog(); - // makeMarkdownLink(link); - // - // Instead of this straightforward method of handling a - // dialog I have to pass any code which would execute - // after the dialog is dismissed (e.g. link creation) - // in a function parameter. - // - // Yes this is awkward and I think it sucks, but there's - // no real workaround. Only the image and link code - // create dialogs and require the function pointers. - var fixupInputArea = function(){ - - inputBox.focus(); - - if (chunks) { - state.setChunks(chunks); - } - - state.restore(); - previewRefreshCallback(); - }; - - var noCleanup = button.textOp(chunks, fixupInputArea); - - if(!noCleanup) { - fixupInputArea(); - } - - } - - if (button.execute) { - button.execute(editObj); - } - }; - - var setUndoRedoButtonStates = function(){ - if(undoMgr){ - setupButton(document.getElementById("wmd-undo-button"), undoMgr.canUndo()); - setupButton(document.getElementById("wmd-redo-button"), undoMgr.canRedo()); - } - }; - - var setupButton = function(button, isEnabled) { - - var normalYShift = "0px"; - var disabledYShift = "-20px"; - var highlightYShift = "-40px"; - - if(isEnabled) { - button.style.backgroundPosition = button.XShift + " " + normalYShift; - button.onmouseover = function(){ - this.style.backgroundPosition = this.XShift + " " + highlightYShift; - }; - - button.onmouseout = function(){ - this.style.backgroundPosition = this.XShift + " " + normalYShift; - }; - - // IE tries to select the background image "button" text (it's - // implemented in a list item) so we have to cache the selection - // on mousedown. - if(global.isIE) { - button.onmousedown = function() { - wmd.ieRetardedClick = true; - wmd.ieCachedRange = document.selection.createRange(); - }; - } - - if (!button.isHelp) - { - button.onclick = function() { - if (this.onmouseout) { - this.onmouseout(); - } - doClick(this); - return false; - }; - } - } - else { - button.style.backgroundPosition = button.XShift + " " + disabledYShift; - button.onmouseover = button.onmouseout = button.onclick = function(){}; - } - }; - - var makeSpritedButtonRow = function(){ - var buttonBar = document.getElementById("wmd-button-bar"); - var normalYShift = "0px"; - var disabledYShift = "-20px"; - var highlightYShift = "-40px"; - - var buttonRow = document.createElement("ul"); - buttonRow.id = "wmd-button-row"; - buttonRow = buttonBar.appendChild(buttonRow); - - - var boldButton = document.createElement("li"); - boldButton.className = "wmd-button"; - boldButton.id = "wmd-bold-button"; - boldButton.title = toolbar_strong_label; - boldButton.XShift = "0px"; - boldButton.textOp = command.doBold; - setupButton(boldButton, true); - buttonRow.appendChild(boldButton); - - var italicButton = document.createElement("li"); - italicButton.className = "wmd-button"; - italicButton.id = "wmd-italic-button"; - italicButton.title = toolbar_emphasis_label; - italicButton.XShift = "-20px"; - italicButton.textOp = command.doItalic; - setupButton(italicButton, true); - buttonRow.appendChild(italicButton); - - var spacer1 = document.createElement("li"); - spacer1.className = "wmd-spacer"; - spacer1.id = "wmd-spacer1"; - buttonRow.appendChild(spacer1); - - var linkButton = document.createElement("li"); - linkButton.className = "wmd-button"; - linkButton.id = "wmd-link-button"; - linkButton.title = toolbar_hyperlink_label; - linkButton.XShift = "-40px"; - linkButton.textOp = function(chunk, postProcessing){ - return command.doLinkOrImage(chunk, postProcessing, 'link'); - }; - setupButton(linkButton, true); - buttonRow.appendChild(linkButton); - - var quoteButton = document.createElement("li"); - quoteButton.className = "wmd-button"; - quoteButton.id = "wmd-quote-button"; - quoteButton.title = toolbar_blockquote_label; - quoteButton.XShift = "-60px"; - quoteButton.textOp = command.doBlockquote; - setupButton(quoteButton, true); - buttonRow.appendChild(quoteButton); - - var codeButton = document.createElement("li"); - codeButton.className = "wmd-button"; - codeButton.id = "wmd-code-button"; - codeButton.title = toolbar_code_label; - codeButton.XShift = "-80px"; - codeButton.textOp = command.doCode; - setupButton(codeButton, true); - buttonRow.appendChild(codeButton); - - var imageButton = document.createElement("li"); - imageButton.className = "wmd-button"; - imageButton.id = "wmd-image-button"; - imageButton.title = toolbar_image_label; - imageButton.XShift = "-100px"; - imageButton.textOp = function(chunk, postProcessing){ - return command.doLinkOrImage(chunk, postProcessing, 'image'); - }; - setupButton(imageButton, true); - buttonRow.appendChild(imageButton); - - var attachmentButton = document.createElement("li"); - attachmentButton.className = "wmd-button"; - attachmentButton.id = "wmd-attachment-button"; - attachmentButton.title = toolbar_attachment_label; - attachmentButton.XShift = "-120px"; - attachmentButton.textOp = function(chunk, postProcessing){ - return command.doLinkOrImage(chunk, postProcessing, 'file'); - }; - setupButton(attachmentButton, true); - buttonRow.appendChild(attachmentButton); - - var spacer2 = document.createElement("li"); - spacer2.className = "wmd-spacer"; - spacer2.id = "wmd-spacer2"; - buttonRow.appendChild(spacer2); - - var olistButton = document.createElement("li"); - olistButton.className = "wmd-button"; - olistButton.id = "wmd-olist-button"; - olistButton.title = toolbar_numbered_label; - olistButton.XShift = "-140px"; - olistButton.textOp = function(chunk, postProcessing){ - command.doList(chunk, postProcessing, true); - }; - setupButton(olistButton, true); - buttonRow.appendChild(olistButton); - - var ulistButton = document.createElement("li"); - ulistButton.className = "wmd-button"; - ulistButton.id = "wmd-ulist-button"; - ulistButton.title = toolbar_bulleted_label; - ulistButton.XShift = "-160px"; - ulistButton.textOp = function(chunk, postProcessing){ - command.doList(chunk, postProcessing, false); - }; - setupButton(ulistButton, true); - buttonRow.appendChild(ulistButton); - - var headingButton = document.createElement("li"); - headingButton.className = "wmd-button"; - headingButton.id = "wmd-heading-button"; - headingButton.title = toolbar_heading_label; - headingButton.XShift = "-180px"; - headingButton.textOp = command.doHeading; - setupButton(headingButton, true); - buttonRow.appendChild(headingButton); - - var hrButton = document.createElement("li"); - hrButton.className = "wmd-button"; - hrButton.id = "wmd-hr-button"; - hrButton.title = toolbar_horizontal_label; - hrButton.XShift = "-200px"; - hrButton.textOp = command.doHorizontalRule; - setupButton(hrButton, true); - buttonRow.appendChild(hrButton); - - var spacer3 = document.createElement("li"); - spacer3.className = "wmd-spacer"; - spacer3.id = "wmd-spacer3"; - buttonRow.appendChild(spacer3); - - var undoButton = document.createElement("li"); - undoButton.className = "wmd-button"; - undoButton.id = "wmd-undo-button"; - undoButton.title = toolbar_undo_label; - undoButton.XShift = "-220px"; - undoButton.execute = function(manager){ - manager.undo(); - }; - setupButton(undoButton, true); - buttonRow.appendChild(undoButton); - - var redoButton = document.createElement("li"); - redoButton.className = "wmd-button"; - redoButton.id = "wmd-redo-button"; - redoButton.title = toolbar_redo_label; - if (/win/.test(nav.platform.toLowerCase())) { - redoButton.title = toolbar_redo_label; - } - else { - // mac and other non-Windows platforms - redoButton.title = gettext('redo') + " - Ctrl+Shift+Z"; - } - redoButton.XShift = "-240px"; - redoButton.execute = function(manager){ - manager.redo(); - }; - setupButton(redoButton, true); - buttonRow.appendChild(redoButton); - /* - var helpButton = document.createElement("li"); - helpButton.className = "wmd-button"; - helpButton.id = "wmd-help-button"; - helpButton.XShift = "-240px"; - helpButton.isHelp = true; - - var helpAnchor = document.createElement("a"); - helpAnchor.href = helpLink; - helpAnchor.target = helpTarget - helpAnchor.title = helpHoverTitle; - helpButton.appendChild(helpAnchor); - - setupButton(helpButton, true); - buttonRow.appendChild(helpButton); - */ - setUndoRedoButtonStates(); - }; - - var setupEditor = function(){ - - if (/\?noundo/.test(doc.location.href)) { - wmd.nativeUndo = true; - } - - if (!wmd.nativeUndo) { - undoMgr = new wmd.undoManager(function(){ - previewRefreshCallback(); - setUndoRedoButtonStates(); - }); - } - - makeSpritedButtonRow(); - - - var keyEvent = "keydown"; - if (global.isOpera) { - keyEvent = "keypress"; - } - - util.addEvent(inputBox, keyEvent, function(key){ - - // Check to see if we have a button key and, if so execute the callback. - if (key.ctrlKey || key.metaKey) { - - var keyCode = key.charCode || key.keyCode; - var keyCodeStr = String.fromCharCode(keyCode).toLowerCase(); - - // Bugfix for messed up DEL and . - if (keyCode === 46) { - keyCodeStr = ""; - } - if (keyCode === 190) { - keyCodeStr = "."; - } - - switch(keyCodeStr) { - case "b": - doClick(document.getElementById("wmd-bold-button")); - break; - case "i": - doClick(document.getElementById("wmd-italic-button")); - break; - case "l": - doClick(document.getElementById("wmd-link-button")); - break; - case ".": - doClick(document.getElementById("wmd-quote-button")); - break; - case "k": - doClick(document.getElementById("wmd-code-button")); - break; - case "g": - doClick(document.getElementById("wmd-image-button")); - break; - case "o": - doClick(document.getElementById("wmd-olist-button")); - break; - case "u": - doClick(document.getElementById("wmd-ulist-button")); - break; - case "h": - doClick(document.getElementById("wmd-heading-button")); - break; - case "r": - doClick(document.getElementById("wmd-hr-button")); - break; - case "y": - doClick(document.getElementById("wmd-redo-button")); - break; - case "z": - if(key.shiftKey) { - doClick(document.getElementById("wmd-redo-button")); - } - else { - doClick(document.getElementById("wmd-undo-button")); - } - break; - default: - return; - } - - - if (key.preventDefault) { - key.preventDefault(); - } - - if (top.event) { - top.event.returnValue = false; - } - } - }); - - // Auto-indent on shift-enter - util.addEvent(inputBox, "keyup", function(key){ - if (key.shiftKey && !key.ctrlKey && !key.metaKey) { - var keyCode = key.charCode || key.keyCode; - // Character 13 is Enter - if (keyCode === 13) { - fakeButton = {}; - fakeButton.textOp = command.doAutoindent; - doClick(fakeButton); - } - } - }); - - if (inputBox.form) { - var submitCallback = inputBox.form.onsubmit; - inputBox.form.onsubmit = function(){ - convertToHtml(); - if (submitCallback) { - return submitCallback.apply(this, arguments); - } - }; - } - }; - - // Convert the contents of the input textarea to HTML in the output/preview panels. - var convertToHtml = function(){ - - if (wmd.showdown) { - var markdownConverter = new wmd.showdown.converter(); - } - var text = inputBox.value; - - var callback = function(){ - inputBox.value = text; - //value is assigned here - }; - - if (!/markdown/.test(wmd.wmd_env.output.toLowerCase())) { - if (markdownConverter) { - inputBox.value = markdownConverter.makeHtml(text); - //value is assigned here - top.setTimeout(callback, 0); - } - } - return true; - }; - - - this.undo = function(){ - if (undoMgr) { - undoMgr.undo(); - } - }; - - this.redo = function(){ - if (undoMgr) { - undoMgr.redo(); - } - }; - - // This is pretty useless. The setupEditor function contents - // should just be copied here. - var init = function(){ - setupEditor(); - }; - - this.destroy = function(){ - if (undoMgr) { - undoMgr.destroy(); - } - if (div.parentNode) { - div.parentNode.removeChild(div); - } - if (inputBox) { - inputBox.style.marginTop = ""; - } - top.clearInterval(creationHandle); - }; - - init(); - }; - - // The input textarea state/contents. - // This is used to implement undo/redo by the undo manager. - wmd.TextareaState = function(){ - - // Aliases - var stateObj = this; - var inputArea = wmd.panels.input; - - this.init = function() { - - if (!util.isVisible(inputArea)) { - return; - } - - this.setInputAreaSelectionStartEnd(); - this.scrollTop = inputArea.scrollTop; - if (!this.text && inputArea.selectionStart || inputArea.selectionStart === 0) { - this.text = inputArea.value; - } - - }; - - // Sets the selected text in the input box after we've performed an - // operation. - this.setInputAreaSelection = function(){ - - if (!util.isVisible(inputArea)) { - return; - } - - if (inputArea.selectionStart !== undefined && !global.isOpera) { - - inputArea.focus(); - inputArea.selectionStart = stateObj.start; - inputArea.selectionEnd = stateObj.end; - inputArea.scrollTop = stateObj.scrollTop; - } - else if (doc.selection) { - - if (doc.activeElement && doc.activeElement !== inputArea) { - return; - } - - inputArea.focus(); - var range = inputArea.createTextRange(); - range.moveStart("character", -inputArea.value.length); - range.moveEnd("character", -inputArea.value.length); - range.moveEnd("character", stateObj.end); - range.moveStart("character", stateObj.start); - range.select(); - } - }; - - this.setInputAreaSelectionStartEnd = function(){ - - if (inputArea.selectionStart || inputArea.selectionStart === 0) { - - stateObj.start = inputArea.selectionStart; - stateObj.end = inputArea.selectionEnd; - } - else if (doc.selection) { - - stateObj.text = util.fixEolChars(inputArea.value); - - // IE loses the selection in the textarea when buttons are - // clicked. On IE we cache the selection and set a flag - // which we check for here. - var range; - if(wmd.ieRetardedClick && wmd.ieCachedRange) { - range = wmd.ieCachedRange; - wmd.ieRetardedClick = false; - } - else { - range = doc.selection.createRange(); - } - - var fixedRange = util.fixEolChars(range.text); - var marker = "\x07"; - var markedRange = marker + fixedRange + marker; - range.text = markedRange; - var inputText = util.fixEolChars(inputArea.value); - - range.moveStart("character", -markedRange.length); - range.text = fixedRange; - - stateObj.start = inputText.indexOf(marker); - stateObj.end = inputText.lastIndexOf(marker) - marker.length; - - var len = stateObj.text.length - util.fixEolChars(inputArea.value).length; - - if (len) { - range.moveStart("character", -fixedRange.length); - while (len--) { - fixedRange += "\n"; - stateObj.end += 1; - } - range.text = fixedRange; - } - - this.setInputAreaSelection(); - } - }; - - // Restore this state into the input area. - this.restore = function(){ - - if (stateObj.text !== undefined && stateObj.text != inputArea.value) { - inputArea.value = stateObj.text; - //value is assigned here - } - this.setInputAreaSelection(); - inputArea.scrollTop = stateObj.scrollTop; - }; - - // Gets a collection of HTML chunks from the inptut textarea. - this.getChunks = function(){ - - var chunk = new wmd.Chunks(); - - chunk.before = util.fixEolChars(stateObj.text.substring(0, stateObj.start)); - chunk.startTag = ""; - chunk.selection = util.fixEolChars(stateObj.text.substring(stateObj.start, stateObj.end)); - chunk.endTag = ""; - chunk.after = util.fixEolChars(stateObj.text.substring(stateObj.end)); - chunk.scrollTop = stateObj.scrollTop; - - return chunk; - }; - - // Sets the TextareaState properties given a chunk of markdown. - this.setChunks = function(chunk){ - - chunk.before = chunk.before + chunk.startTag; - chunk.after = chunk.endTag + chunk.after; - - if (global.isOpera) { - chunk.before = chunk.before.replace(/\n/g, "\r\n"); - chunk.selection = chunk.selection.replace(/\n/g, "\r\n"); - chunk.after = chunk.after.replace(/\n/g, "\r\n"); - } - - this.start = chunk.before.length; - this.end = chunk.before.length + chunk.selection.length; - this.text = chunk.before + chunk.selection + chunk.after; - this.scrollTop = chunk.scrollTop; - }; - - this.init(); - }; - - // before: contains all the text in the input box BEFORE the selection. - // after: contains all the text in the input box AFTER the selection. - wmd.Chunks = function(){ - }; - - // startRegex: a regular expression to find the start tag - // endRegex: a regular expresssion to find the end tag - wmd.Chunks.prototype.findTags = function(startRegex, endRegex){ - - var chunkObj = this; - var regex; - - if (startRegex) { - - regex = util.extendRegExp(startRegex, "", "$"); - - this.before = this.before.replace(regex, - function(match){ - chunkObj.startTag = chunkObj.startTag + match; - return ""; - }); - - regex = util.extendRegExp(startRegex, "^", ""); - - this.selection = this.selection.replace(regex, - function(match){ - chunkObj.startTag = chunkObj.startTag + match; - return ""; - }); - } - - if (endRegex) { - - regex = util.extendRegExp(endRegex, "", "$"); - - this.selection = this.selection.replace(regex, - function(match){ - chunkObj.endTag = match + chunkObj.endTag; - return ""; - }); - - regex = util.extendRegExp(endRegex, "^", ""); - - this.after = this.after.replace(regex, - function(match){ - chunkObj.endTag = match + chunkObj.endTag; - return ""; - }); - } - }; - - // If remove is false, the whitespace is transferred - // to the before/after regions. - // - // If remove is true, the whitespace disappears. - wmd.Chunks.prototype.trimWhitespace = function(remove){ - - this.selection = this.selection.replace(/^(\s*)/, ""); - - if (!remove) { - this.before += re.$1; - } - - this.selection = this.selection.replace(/(\s*)$/, ""); - - if (!remove) { - this.after = re.$1 + this.after; - } - }; - - - wmd.Chunks.prototype.skipLines = function(nLinesBefore, nLinesAfter, findExtraNewlines){ - - if (nLinesBefore === undefined) { - nLinesBefore = 1; - } - - if (nLinesAfter === undefined) { - nLinesAfter = 1; - } - - nLinesBefore++; - nLinesAfter++; - - var regexText; - var replacementText; - - this.selection = this.selection.replace(/(^\n*)/, ""); - this.startTag = this.startTag + re.$1; - this.selection = this.selection.replace(/(\n*$)/, ""); - this.endTag = this.endTag + re.$1; - this.startTag = this.startTag.replace(/(^\n*)/, ""); - this.before = this.before + re.$1; - this.endTag = this.endTag.replace(/(\n*$)/, ""); - this.after = this.after + re.$1; - - if (this.before) { - - regexText = replacementText = ""; - - while (nLinesBefore--) { - regexText += "\\n?"; - replacementText += "\n"; - } - - if (findExtraNewlines) { - regexText = "\\n*"; - } - this.before = this.before.replace(new re(regexText + "$", ""), replacementText); - } - - if (this.after) { - - regexText = replacementText = ""; - - while (nLinesAfter--) { - regexText += "\\n?"; - replacementText += "\n"; - } - if (findExtraNewlines) { - regexText = "\\n*"; - } - - this.after = this.after.replace(new re(regexText, ""), replacementText); - } - }; - - // The markdown symbols - 4 spaces = code, > = blockquote, etc. - command.prefixes = "(?:\\s{4,}|\\s*>|\\s*-\\s+|\\s*\\d+\\.|=|\\+|-|_|\\*|#|\\s*\\[[^\n]]+\\]:)"; - - // Remove markdown symbols from the chunk selection. - command.unwrap = function(chunk){ - var txt = new re("([^\\n])\\n(?!(\\n|" + command.prefixes + "))", "g"); - chunk.selection = chunk.selection.replace(txt, "$1 $2"); - }; - - command.wrap = function(chunk, len){ - command.unwrap(chunk); - var regex = new re("(.{1," + len + "})( +|$\\n?)", "gm"); - - chunk.selection = chunk.selection.replace(regex, function(line, marked){ - if (new re("^" + command.prefixes, "").test(line)) { - return line; - } - return marked + "\n"; - }); - - chunk.selection = chunk.selection.replace(/\s+$/, ""); - }; - - command.doBold = function(chunk, postProcessing){ - return command.doBorI(chunk, postProcessing, 2, "strong text"); - }; - - command.doItalic = function(chunk, postProcessing){ - return command.doBorI(chunk, postProcessing, 1, "emphasized text"); - }; - - // chunk: The selected region that will be enclosed with */** - // nStars: 1 for italics, 2 for bold - // insertText: If you just click the button without highlighting text, this gets inserted - command.doBorI = function(chunk, postProcessing, nStars, insertText){ - - // Get rid of whitespace and fixup newlines. - chunk.trimWhitespace(); - chunk.selection = chunk.selection.replace(/\n{2,}/g, "\n"); - - // Look for stars before and after. Is the chunk already marked up? - chunk.before.search(/(\**$)/); - var starsBefore = re.$1; - - chunk.after.search(/(^\**)/); - var starsAfter = re.$1; - - var prevStars = Math.min(starsBefore.length, starsAfter.length); - - // Remove stars if we have to since the button acts as a toggle. - if ((prevStars >= nStars) && (prevStars != 2 || nStars != 1)) { - chunk.before = chunk.before.replace(re("[*]{" + nStars + "}$", ""), ""); - chunk.after = chunk.after.replace(re("^[*]{" + nStars + "}", ""), ""); - } - else if (!chunk.selection && starsAfter) { - // It's not really clear why this code is necessary. It just moves - // some arbitrary stuff around. - chunk.after = chunk.after.replace(/^([*_]*)/, ""); - chunk.before = chunk.before.replace(/(\s?)$/, ""); - var whitespace = re.$1; - chunk.before = chunk.before + starsAfter + whitespace; - } - else { - - // In most cases, if you don't have any selected text and click the button - // you'll get a selected, marked up region with the default text inserted. - if (!chunk.selection && !starsAfter) { - chunk.selection = insertText; - } - - // Add the true markup. - var markup = nStars <= 1 ? "*" : "**"; // shouldn't the test be = ? - chunk.before = chunk.before + markup; - chunk.after = markup + chunk.after; - } - - return; - }; - - command.stripLinkDefs = function(text, defsToAdd){ - - text = text.replace(/^[ ]{0,3}\[(\d+)\]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|$)/gm, - function(totalMatch, id, link, newlines, title){ - defsToAdd[id] = totalMatch.replace(/\s*$/, ""); - if (newlines) { - // Strip the title and return that separately. - defsToAdd[id] = totalMatch.replace(/["(](.+?)[")]$/, ""); - return newlines + title; - } - return ""; - }); - - return text; - }; - - command.addLinkDef = function(chunk, linkDef){ - - var refNumber = 0; // The current reference number - var defsToAdd = {}; // - // Start with a clean slate by removing all previous link definitions. - chunk.before = command.stripLinkDefs(chunk.before, defsToAdd); - chunk.selection = command.stripLinkDefs(chunk.selection, defsToAdd); - chunk.after = command.stripLinkDefs(chunk.after, defsToAdd); - - var defs = ""; - var regex = /(\[(?:\[[^\]]*\]|[^\[\]])*\][ ]?(?:\n[ ]*)?\[)(\d+)(\])/g; - - var addDefNumber = function(def){ - refNumber++; - def = def.replace(/^[ ]{0,3}\[(\d+)\]:/, " [" + refNumber + "]:"); - defs += "\n" + def; - }; - - var getLink = function(wholeMatch, link, id, end){ - - if (defsToAdd[id]) { - addDefNumber(defsToAdd[id]); - return link + refNumber + end; - - } - return wholeMatch; - }; - - chunk.before = chunk.before.replace(regex, getLink); - - if (linkDef) { - addDefNumber(linkDef); - } - else { - chunk.selection = chunk.selection.replace(regex, getLink); - } - - var refOut = refNumber; - - chunk.after = chunk.after.replace(regex, getLink); - - if (chunk.after) { - chunk.after = chunk.after.replace(/\n*$/, ""); - } - if (!chunk.after) { - chunk.selection = chunk.selection.replace(/\n*$/, ""); - } - - chunk.after += "\n\n" + defs; - - return refOut; - }; - - command.doLinkOrImage = function(chunk, postProcessing, itemType){ - - chunk.trimWhitespace(); - chunk.findTags(/\s*!?\[/, /\][ ]?(?:\n[ ]*)?(\[.*?\])?/); - - if (chunk.endTag.length > 1) { - - chunk.startTag = chunk.startTag.replace(/!?\[/, ""); - chunk.endTag = ""; - command.addLinkDef(chunk, null); - - } - else { - - if (/\n\n/.test(chunk.selection)) { - command.addLinkDef(chunk, null); - return; - } - - // The function to be executed when you enter a link and press OK or Cancel. - // Marks up the link and adds the ref. - var makeLinkMarkdown = function(link){ - - if (link !== null) { - - chunk.startTag = chunk.endTag = ""; - //var linkDef = " [999]: " + link; - - //var num = command.addLinkDef(chunk, linkDef); - chunk.startTag = (itemType == 'image') ? "![" : "["; - chunk.endTag = "](" + link + ")"; - - if (!chunk.selection) { - if (itemType == 'image') { - chunk.selection = gettext("image description"); - } - else if (itemType == 'file'){ - chunk.selection = localUploadFileName || gettext("file name"); - localUploadFileName = null; - } - else { - chunk.selection = gettext("link text"); - } - } - } - else { - if (itemType == 'image' || itemType == 'file'){ - return; - } - } - postProcessing(); - }; - - if (itemType == 'image') { - // add forth param to identify image window - util.prompt(imageDialogText, imageDefaultText, makeLinkMarkdown, 'image'); - } - else if (itemType == 'file'){ - util.prompt(fileDialogText, '', makeLinkMarkdown, 'file'); - } - else { - util.prompt(linkDialogText, linkDefaultText, makeLinkMarkdown, 'link'); - } - return true; - } -}; - - util.makeAPI = function(){ - wmd.wmd = {}; - wmd.wmd.editor = wmd.editor; - wmd.wmd.previewManager = wmd.previewManager; - }; - - util.startEditor = function(){ - - if (wmd.wmd_env.autostart === false) { - util.makeAPI(); - return; - } - - var edit; // The editor (buttons + input + outputs) - the main object. - var previewMgr; // The preview manager. - - // Fired after the page has fully loaded. - var loadListener = function(){ - - wmd.panels = new wmd.PanelCollection(); - - previewMgr = new wmd.previewManager(); - var previewRefreshCallback = previewMgr.refresh; - - edit = new wmd.editor(previewRefreshCallback); - - previewMgr.refresh(true); - - }; - - util.addEvent(top, "load", loadListener); - }; - - wmd.previewManager = function(){ - - var managerObj = this; - var converter; - var poller; - var timeout; - var elapsedTime; - var oldInputText; - var htmlOut; - var maxDelay = 3000; - var startType = "delayed"; // The other legal value is "manual" - - // Adds event listeners to elements and creates the input poller. - var setupEvents = function(inputElem, listener){ - - util.addEvent(inputElem, "input", listener); - inputElem.onpaste = listener; - inputElem.ondrop = listener; - - util.addEvent(inputElem, "keypress", listener); - util.addEvent(inputElem, "keydown", listener); - // previewPollInterval is set at the top of this file. - poller = new wmd.inputPoller(listener, previewPollInterval); - }; - - var getDocScrollTop = function(){ - - var result = 0; - - if (top.innerHeight) { - result = top.pageYOffset; - } - else - if (doc.documentElement && doc.documentElement.scrollTop) { - result = doc.documentElement.scrollTop; - } - else - if (doc.body) { - result = doc.body.scrollTop; - } - - return result; - }; - - var makePreviewHtml = function(){ - - // If there are no registered preview and output panels - // there is nothing to do. - if (!wmd.panels.preview && !wmd.panels.output) { - return; - } - - var text = wmd.panels.input.value; - if (text && text == oldInputText) { - return; // Input text hasn't changed. - } - else { - oldInputText = text; - } - - var prevTime = new Date().getTime(); - - if (!converter && wmd.showdown) { - converter = new wmd.showdown.converter(); - } - - if (converter) { - text = converter.makeHtml(text); - } - - // Calculate the processing time of the HTML creation. - // It's used as the delay time in the event listener. - var currTime = new Date().getTime(); - elapsedTime = currTime - prevTime; - - pushPreviewHtml(text); - htmlOut = text; - }; - - // setTimeout is already used. Used as an event listener. - var applyTimeout = function(){ - - if (timeout) { - top.clearTimeout(timeout); - timeout = undefined; - } - - if (startType !== "manual") { - - var delay = 0; - - if (startType === "delayed") { - delay = elapsedTime; - } - - if (delay > maxDelay) { - delay = maxDelay; - } - timeout = top.setTimeout(makePreviewHtml, delay); - } - }; - - var getScaleFactor = function(panel){ - if (panel.scrollHeight <= panel.clientHeight) { - return 1; - } - return panel.scrollTop / (panel.scrollHeight - panel.clientHeight); - }; - - var setPanelScrollTops = function(){ - - if (wmd.panels.preview) { - wmd.panels.preview.scrollTop = (wmd.panels.preview.scrollHeight - wmd.panels.preview.clientHeight) * getScaleFactor(wmd.panels.preview); - } - - if (wmd.panels.output) { - wmd.panels.output.scrollTop = (wmd.panels.output.scrollHeight - wmd.panels.output.clientHeight) * getScaleFactor(wmd.panels.output); - } - }; - - this.refresh = function(requiresRefresh){ - - if (requiresRefresh) { - oldInputText = ""; - makePreviewHtml(); - } - else { - applyTimeout(); - } - }; - - this.processingTime = function(){ - return elapsedTime; - }; - - // The output HTML - this.output = function(){ - return htmlOut; - }; - - // The mode can be "manual" or "delayed" - this.setUpdateMode = function(mode){ - startType = mode; - managerObj.refresh(); - }; - - var isFirstTimeFilled = true; - - var pushPreviewHtml = function(text){ - - var emptyTop = position.getTop(wmd.panels.input) - getDocScrollTop(); - - // Send the encoded HTML to the output textarea/div. - if (wmd.panels.output) { - // The value property is only defined if the output is a textarea. - if (wmd.panels.output.value !== undefined) { - wmd.panels.output.value = text; - //value is assigned here - wmd.panels.output.readOnly = true; - } - // Otherwise we are just replacing the text in a div. - // Send the HTML wrapped in
          
          -				else {
          -					var newText = text.replace(/&/g, "&");
          -					newText = newText.replace(/
          "; - } - } - - if (wmd.panels.preview) { - wmd.panels.preview.innerHTML = text; - } - - setPanelScrollTops(); - - if (isFirstTimeFilled) { - isFirstTimeFilled = false; - return; - } - - var fullTop = position.getTop(wmd.panels.input) - getDocScrollTop(); - - if (global.isIE) { - top.setTimeout(function(){ - top.scrollBy(0, fullTop - emptyTop); - }, 0); - } - else { - top.scrollBy(0, fullTop - emptyTop); - } - }; - - var init = function(){ - - setupEvents(wmd.panels.input, applyTimeout); - makePreviewHtml(); - - if (wmd.panels.preview) { - wmd.panels.preview.scrollTop = 0; - } - if (wmd.panels.output) { - wmd.panels.output.scrollTop = 0; - } - }; - - this.destroy = function(){ - if (poller) { - poller.destroy(); - } - }; - - init(); - }; - - // When making a list, hitting shift-enter will put your cursor on the next line - // at the current indent level. - command.doAutoindent = function(chunk, postProcessing){ - - chunk.before = chunk.before.replace(/(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]*\n$/, "\n\n"); - chunk.before = chunk.before.replace(/(\n|^)[ ]{0,3}>[ \t]*\n$/, "\n\n"); - chunk.before = chunk.before.replace(/(\n|^)[ \t]+\n$/, "\n\n"); - - if(/(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]+.*\n$/.test(chunk.before)){ - if(command.doList){ - command.doList(chunk); - } - } - if(/(\n|^)[ ]{0,3}>[ \t]+.*\n$/.test(chunk.before)){ - if(command.doBlockquote){ - command.doBlockquote(chunk); - } - } - if(/(\n|^)(\t|[ ]{4,}).*\n$/.test(chunk.before)){ - if(command.doCode){ - command.doCode(chunk); - } - } - }; - - command.doBlockquote = function(chunk, postProcessing){ - - chunk.selection = chunk.selection.replace(/^(\n*)([^\r]+?)(\n*)$/, - function(totalMatch, newlinesBefore, text, newlinesAfter){ - chunk.before += newlinesBefore; - chunk.after = newlinesAfter + chunk.after; - return text; - }); - - chunk.before = chunk.before.replace(/(>[ \t]*)$/, - function(totalMatch, blankLine){ - chunk.selection = blankLine + chunk.selection; - return ""; - }); - - chunk.selection = chunk.selection.replace(/^(\s|>)+$/ ,""); - chunk.selection = chunk.selection || "Blockquote"; - - if(chunk.before){ - chunk.before = chunk.before.replace(/\n?$/,"\n"); - } - if(chunk.after){ - chunk.after = chunk.after.replace(/^\n?/,"\n"); - } - - chunk.before = chunk.before.replace(/(((\n|^)(\n[ \t]*)*>(.+\n)*.*)+(\n[ \t]*)*$)/, - function(totalMatch){ - chunk.startTag = totalMatch; - return ""; - }); - - chunk.after = chunk.after.replace(/^(((\n|^)(\n[ \t]*)*>(.+\n)*.*)+(\n[ \t]*)*)/, - function(totalMatch){ - chunk.endTag = totalMatch; - return ""; - }); - - var replaceBlanksInTags = function(useBracket){ - - var replacement = useBracket ? "> " : ""; - - if(chunk.startTag){ - chunk.startTag = chunk.startTag.replace(/\n((>|\s)*)\n$/, - function(totalMatch, markdown){ - return "\n" + markdown.replace(/^[ ]{0,3}>?[ \t]*$/gm, replacement) + "\n"; - }); - } - if(chunk.endTag){ - chunk.endTag = chunk.endTag.replace(/^\n((>|\s)*)\n/, - function(totalMatch, markdown){ - return "\n" + markdown.replace(/^[ ]{0,3}>?[ \t]*$/gm, replacement) + "\n"; - }); - } - }; - - if(/^(?![ ]{0,3}>)/m.test(chunk.selection)){ - command.wrap(chunk, wmd.wmd_env.lineLength - 2); - chunk.selection = chunk.selection.replace(/^/gm, "> "); - replaceBlanksInTags(true); - chunk.skipLines(); - } - else{ - chunk.selection = chunk.selection.replace(/^[ ]{0,3}> ?/gm, ""); - command.unwrap(chunk); - replaceBlanksInTags(false); - - if(!/^(\n|^)[ ]{0,3}>/.test(chunk.selection) && chunk.startTag){ - chunk.startTag = chunk.startTag.replace(/\n{0,2}$/, "\n\n"); - } - - if(!/(\n|^)[ ]{0,3}>.*$/.test(chunk.selection) && chunk.endTag){ - chunk.endTag=chunk.endTag.replace(/^\n{0,2}/, "\n\n"); - } - } - - if(!/\n/.test(chunk.selection)){ - chunk.selection = chunk.selection.replace(/^(> *)/, - function(wholeMatch, blanks){ - chunk.startTag += blanks; - return ""; - }); - } - }; - - command.doCode = function(chunk, postProcessing){ - - var hasTextBefore = /\S[ ]*$/.test(chunk.before); - var hasTextAfter = /^[ ]*\S/.test(chunk.after); - - // Use 'four space' markdown if the selection is on its own - // line or is multiline. - if((!hasTextAfter && !hasTextBefore) || /\n/.test(chunk.selection)){ - - chunk.before = chunk.before.replace(/[ ]{4}$/, - function(totalMatch){ - chunk.selection = totalMatch + chunk.selection; - return ""; - }); - - var nLinesBack = 1; - var nLinesForward = 1; - - if(/\n(\t|[ ]{4,}).*\n$/.test(chunk.before)){ - nLinesBack = 0; - } - if(/^\n(\t|[ ]{4,})/.test(chunk.after)){ - nLinesForward = 0; - } - - chunk.skipLines(nLinesBack, nLinesForward); - - if(!chunk.selection){ - chunk.startTag = " "; - chunk.selection = "enter code here"; - } - else { - if(/^[ ]{0,3}\S/m.test(chunk.selection)){ - chunk.selection = chunk.selection.replace(/^/gm, " "); - } - else{ - chunk.selection = chunk.selection.replace(/^[ ]{4}/gm, ""); - } - } - } - else{ - // Use backticks (`) to delimit the code block. - - chunk.trimWhitespace(); - chunk.findTags(/`/, /`/); - - if(!chunk.startTag && !chunk.endTag){ - chunk.startTag = chunk.endTag="`"; - if(!chunk.selection){ - chunk.selection = "enter code here"; - } - } - else if(chunk.endTag && !chunk.startTag){ - chunk.before += chunk.endTag; - chunk.endTag = ""; - } - else{ - chunk.startTag = chunk.endTag=""; - } - } - }; - - command.doList = function(chunk, postProcessing, isNumberedList){ - - // These are identical except at the very beginning and end. - // Should probably use the regex extension function to make this clearer. - var previousItemsRegex = /(\n|^)(([ ]{0,3}([*+-]|\d+[.])[ \t]+.*)(\n.+|\n{2,}([*+-].*|\d+[.])[ \t]+.*|\n{2,}[ \t]+\S.*)*)\n*$/; - var nextItemsRegex = /^\n*(([ ]{0,3}([*+-]|\d+[.])[ \t]+.*)(\n.+|\n{2,}([*+-].*|\d+[.])[ \t]+.*|\n{2,}[ \t]+\S.*)*)\n*/; - - // The default bullet is a dash but others are possible. - // This has nothing to do with the particular HTML bullet, - // it's just a markdown bullet. - var bullet = "-"; - - // The number in a numbered list. - var num = 1; - - // Get the item prefix - e.g. " 1. " for a numbered list, " - " for a bulleted list. - var getItemPrefix = function(){ - var prefix; - if(isNumberedList){ - prefix = " " + num + ". "; - num++; - } - else{ - prefix = " " + bullet + " "; - } - return prefix; - }; - - // Fixes the prefixes of the other list items. - var getPrefixedItem = function(itemText){ - - // The numbering flag is unset when called by autoindent. - if(isNumberedList === undefined){ - isNumberedList = /^\s*\d/.test(itemText); - } - - // Renumber/bullet the list element. - itemText = itemText.replace(/^[ ]{0,3}([*+-]|\d+[.])\s/gm, - function( _ ){ - return getItemPrefix(); - }); - - return itemText; - }; - - chunk.findTags(/(\n|^)*[ ]{0,3}([*+-]|\d+[.])\s+/, null); - - if(chunk.before && !/\n$/.test(chunk.before) && !/^\n/.test(chunk.startTag)){ - chunk.before += chunk.startTag; - chunk.startTag = ""; - } - - if(chunk.startTag){ - - var hasDigits = /\d+[.]/.test(chunk.startTag); - chunk.startTag = ""; - chunk.selection = chunk.selection.replace(/\n[ ]{4}/g, "\n"); - command.unwrap(chunk); - chunk.skipLines(); - - if(hasDigits){ - // Have to renumber the bullet points if this is a numbered list. - chunk.after = chunk.after.replace(nextItemsRegex, getPrefixedItem); - } - if(isNumberedList == hasDigits){ - return; - } - } - - var nLinesUp = 1; - - chunk.before = chunk.before.replace(previousItemsRegex, - function(itemText){ - if(/^\s*([*+-])/.test(itemText)){ - bullet = re.$1; - } - nLinesUp = /[^\n]\n\n[^\n]/.test(itemText) ? 1 : 0; - return getPrefixedItem(itemText); - }); - - if(!chunk.selection){ - chunk.selection = "List item"; - } - - var prefix = getItemPrefix(); - - var nLinesDown = 1; - - chunk.after = chunk.after.replace(nextItemsRegex, - function(itemText){ - nLinesDown = /[^\n]\n\n[^\n]/.test(itemText) ? 1 : 0; - return getPrefixedItem(itemText); - }); - - chunk.trimWhitespace(true); - chunk.skipLines(nLinesUp, nLinesDown, true); - chunk.startTag = prefix; - var spaces = prefix.replace(/./g, " "); - command.wrap(chunk, wmd.wmd_env.lineLength - spaces.length); - chunk.selection = chunk.selection.replace(/\n/g, "\n" + spaces); - - }; - - command.doHeading = function(chunk, postProcessing){ - - // Remove leading/trailing whitespace and reduce internal spaces to single spaces. - chunk.selection = chunk.selection.replace(/\s+/g, " "); - chunk.selection = chunk.selection.replace(/(^\s+|\s+$)/g, ""); - - // If we clicked the button with no selected text, we just - // make a level 2 hash header around some default text. - if(!chunk.selection){ - chunk.startTag = "## "; - chunk.selection = "Heading"; - chunk.endTag = " ##"; - return; - } - - var headerLevel = 0; // The existing header level of the selected text. - - // Remove any existing hash heading markdown and save the header level. - chunk.findTags(/#+[ ]*/, /[ ]*#+/); - if(/#+/.test(chunk.startTag)){ - headerLevel = re.lastMatch.length; - } - chunk.startTag = chunk.endTag = ""; - - // Try to get the current header level by looking for - and = in the line - // below the selection. - chunk.findTags(null, /\s?(-+|=+)/); - if(/=+/.test(chunk.endTag)){ - headerLevel = 1; - } - if(/-+/.test(chunk.endTag)){ - headerLevel = 2; - } - - // Skip to the next line so we can create the header markdown. - chunk.startTag = chunk.endTag = ""; - chunk.skipLines(1, 1); - - // We make a level 2 header if there is no current header. - // If there is a header level, we substract one from the header level. - // If it's already a level 1 header, it's removed. - var headerLevelToCreate = headerLevel == 0 ? 2 : headerLevel - 1; - - if(headerLevelToCreate > 0){ - - // The button only creates level 1 and 2 underline headers. - // Why not have it iterate over hash header levels? Wouldn't that be easier and cleaner? - var headerChar = headerLevelToCreate >= 2 ? "-" : "="; - var len = chunk.selection.length; - if(len > wmd.wmd_env.lineLength){ - len = wmd.wmd_env.lineLength; - } - chunk.endTag = "\n"; - while(len--){ - chunk.endTag += headerChar; - } - } - }; - - command.doHorizontalRule = function(chunk, postProcessing){ - chunk.startTag = "----------\n"; - chunk.selection = ""; - chunk.skipLines(2, 1, true); - } -}; - - -Attacklab.wmd_env = {}; -Attacklab.account_options = {}; -Attacklab.wmd_defaults = {version:1, output:"Markdown", lineLength:40, delayLoad:false}; - -if(!Attacklab.wmd) -{ - Attacklab.wmd = function() - { - Attacklab.loadEnv = function() - { - var mergeEnv = function(env) - { - if(!env) - { - return; - } - - for(var key in env) - { - Attacklab.wmd_env[key] = env[key]; - } - }; - - mergeEnv(Attacklab.wmd_defaults); - mergeEnv(Attacklab.account_options); - mergeEnv(top["wmd_options"]); - Attacklab.full = true; - - var defaultButtons = "bold italic link blockquote code image ol ul heading hr"; - Attacklab.wmd_env.buttons = Attacklab.wmd_env.buttons || defaultButtons; - }; - Attacklab.loadEnv(); - - }; - - Attacklab.wmd(); - Attacklab.wmdBase(); - Attacklab.Util.startEditor(); -}; - diff --git a/lms/askbot/skins/common/media/style/auth.css b/lms/askbot/skins/common/media/style/auth.css deleted file mode 100644 index 33702758c8..0000000000 --- a/lms/askbot/skins/common/media/style/auth.css +++ /dev/null @@ -1,48 +0,0 @@ -#bigicon_providers, #smallicon_providers { - display: block; - padding: 0px; - width:600px; - margin:0px 0px 5px 0px; -} - -.provider_logo { - display: inline-block; - padding: 4px; - border: 1px solid #DDD; - text-align: center; - vertical-align: middle; -} - -.provider_logo.big { - height: 40px; - width: 90px; -} - -.provider_logo.small { - height: 32px; - width: 32px; -} - -.provider_logo.selected { - outline: 2px solid #FFF8C6; -} - -.provider_logo .provider_url { - display: none; -} - -.signin_form input[type="text"], .signin_form input[type="password"], .signin_form input[type="submit"] { - height: 28px; - line-height: 22px; - font-size: 140%; - border: 1px solid #999; -} - -.signin_form .icon_input { - padding-left: 20px; -} - -.or_label { - margin-top: 20px; - margin-bottom: 10px; -} \ No newline at end of file diff --git a/lms/askbot/skins/common/media/style/jquery.autocomplete.css b/lms/askbot/skins/common/media/style/jquery.autocomplete.css deleted file mode 100644 index 39435b68d0..0000000000 --- a/lms/askbot/skins/common/media/style/jquery.autocomplete.css +++ /dev/null @@ -1,37 +0,0 @@ -.acInput { - width: 200px; -} -.acResults { - padding: 0px; - border: 1px solid WindowFrame; - background-color: Window; - overflow: hidden; -} - -.acResults ul { - width: 100%; - list-style-position: outside; - list-style: none; - padding: 0; - margin: 0; -} - -.acResults li { - margin: 0px; - padding: 2px 5px; - cursor: pointer; - display: block; - width: 100%; - font: menu; - font-size: 12px; - overflow: hidden; -} - -.acLoading { - background : url('../images/indicator.gif') right center no-repeat; -} - -.acSelect { - background-color: Highlight; - color: HighlightText; -} diff --git a/lms/askbot/skins/common/media/style/lib_style.less b/lms/askbot/skins/common/media/style/lib_style.less deleted file mode 100644 index d142413752..0000000000 --- a/lms/askbot/skins/common/media/style/lib_style.less +++ /dev/null @@ -1,38 +0,0 @@ -/* General Predifined classes, read more in lesscss.org */ - -/* Variables for Colors*/ - -@header-color:#16160f; - -@link:#1b79bd; -@question-link:#464646; -@button-label:#4a757f; - -/* Receive exactly positions for background Sprite */ - -.sprites(@hor,@vert,@back:url(../images/sprites.png)){ - background:@hor @vert @back; -} - - -/* CSS3 Elements */ - -.box-shadow (@hor: 0px, @vert: 0px, @blur: 5px, @shadow: #929292){ - -webkit-box-shadow: @arguments; - -moz-box-shadow: @arguments; - box-shadow: @arguments; -} - -.text-shadow(@hor: 0px, @vert: 0px, @blur: 5px, @shadow: #929292){ - text-shadow: @arguments; - -moz-text-shadow: @arguments; - -webkit-text-shadow: @arguments; -} - -.rounded-corners(@radio: 5px){ - border-radius: @radio; - -ms-border-radius: @radio; - -moz-border-radius: @radio; - -webkit-border-radius: @radio; - -khtml-border-radius: @radio; -} diff --git a/lms/askbot/skins/common/media/style/openid.css b/lms/askbot/skins/common/media/style/openid.css deleted file mode 100644 index 0d201df2f4..0000000000 --- a/lms/askbot/skins/common/media/style/openid.css +++ /dev/null @@ -1,45 +0,0 @@ -#openid_form { - width: 470px; -} - #openid_form legend { - font-weight: bold; - } -#openid_choice { - display: none; -} -#openid_input_area { - clear: both; - padding: 10px; -} -#openid_btns, #openid_btns br { - clear: both; -} - #openid_highlight { - padding: 3px; - background-color: #FFFCC9; - float: left; - } - .openid_large_btn { - width: 100px; - height: 60px; - border: 1px solid #DDD; - margin: 3px; - float: left; - } - .openid_small_btn { - width: 24px; - height: 24px; - border: 1px solid #DDD; - margin: 3px; - float: left; - } - a.openid_large_btn:focus { - outline: none; - } - a.openid_large_btn:focus - { - -moz-outline-style: none; - } - .openid_selected { - border: 4px solid #DDD; - } diff --git a/lms/askbot/skins/common/media/style/prettify.css b/lms/askbot/skins/common/media/style/prettify.css deleted file mode 100644 index 10a37577c7..0000000000 --- a/lms/askbot/skins/common/media/style/prettify.css +++ /dev/null @@ -1,27 +0,0 @@ -/* Pretty printing styles. Used with prettify.js. */ - -.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 { 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; } -} diff --git a/lms/askbot/skins/common/media/style/style.css b/lms/askbot/skins/common/media/style/style.css deleted file mode 100644 index 82a812d479..0000000000 --- a/lms/askbot/skins/common/media/style/style.css +++ /dev/null @@ -1,2616 +0,0 @@ -@import url(jquery.autocomplete.css); -@import "lib_style.less"; /* Library of predifined less functions styles */ - -/* ----- General HTML Styles----- */ - -body { - background: #FFF; - font-size: 14px; - line-height: 150%; - margin: 0; - padding: 0; - color: #000; - font-family: 'Yanone Kaffeesatz', sans-serif; -} - -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; -} - -p { - font-size: 14px; - line-height: 140%; - margin-bottom: 6px; - padding-left: 5px; -} - -a { - color:@link; - text-decoration: none; - cursor: pointer; -} - -h2 { - font-size: 140%; - padding: 3px 0 3px 5px; -} - -h3 { - font-size: 120%; - 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; - /*overflow: auto;*/ - background-color: #F5F5F5; - padding-left: 5px; - padding-top: 5px; - /*width: 671px;*/ - padding-bottom: 20px ! ie7; -} - -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; -} - -/* http://pathfindersoftware.com/2007/09/developers-note-2/ */ -* html .clearfix, -* html .paginator { - height: 1; - overflow: visible; -} -+ html .clearfix, -+ html .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: 160%; - padding: 10px 0 5px 5px; -} - -/* ----- Custom positions ----- */ - -.left{float:left} -.right{float:right} -.clean{clear:both} - - -/* ----- Notify message bar ----- */ - -.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 { - margin-top: 6px; - margin-bottom: 6px; - font-size: 16px; - color:#424242 - } -} - -#close-notify { - position: absolute; - right: 5px; - top: 7px; - color: #735005; - text-decoration: none; - line-height: 18px; - .sprites(-6px,-5px); - cursor: pointer; - width:20px; - height:20px; -} - -#close-notify:hover { - .sprites(-26px,-5px); -} - -/* ----- Header ----- */ - -#header { - margin-top: 0px; - background: @header-color; -} - -.content-wrapper {/* wrapper positioning class */ - width: 960px; - margin: auto; - position:relative; -} - -#logo img{ - padding: 5px 0px 5px 0px; -} - -#user-tools-nav { - height: 20px; - position:absolute; - bottom: 0; - right:0px; - padding-bottom:5px; - - a { - height: 35px; - text-align: right; - margin-left: 20px; - text-decoration: underline; - color:#d0e296; - font-size:16px; - } - - a:first-child { - margin-left: 0; - } - - a#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; - } -} - -#meta-nav { - 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; - } - - a:hover { - text-decoration: underline; - } - - a.on { - font-weight:bold; - color: #FFF; - text-decoration: none; - } - - a.special { - font-size: 18px; - color: #B02B2C; - font-weight: bold; - text-decoration: none; - } - - a.special:hover { - text-decoration: underline; - } - - #nav_tags{ - .sprites(-50px,-5px) - } - - #nav_users{ - .sprites(-125px,-5px) - } - - #nav_badges{ - .sprites(-210px,-5px) - } -} - -#secundary-header{ - height:55px; - background:#e9e9e1; - border-bottom:#d3d3c2 1px solid; - margin-bottom:10px; - - #home-button{ - border-right:#afaf9e 1px solid; - .sprites(-6px,-36px); - height:55px; - width:43px; - display:block; - float:left; - } - - #home-button:hover{ - .sprites(-6px-45,-36px); - } - - #scope-wrapper{ - 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(../images/scopearrow.png) no-repeat center bottom; - } - } -} - -#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: 18px; - height: 40px; - background:#FFF; - border:0px; - color:#c2c2c2; - padding-left:10px; - font-family: 'Yanone Kaffeesatz', sans-serif; - } - - .searchInput, .searchInputCancelable { - width: 352px; - } - - .searchInputCancelable { - width: 317px; - } - - .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; - .sprites(-98px,-36px); - cursor:pointer; - } - - .searchBtn:hover { - .sprites(-98px-48,-36px); - } - - .cancelSearchBtn { - font-size: 30px; - color: #ce8888; - background:#fff; - height: 42px; - border:0px; - border-left:#deded0 1px solid; - text-align: center; - width: 35px; - cursor:pointer; - } - - .cancelSearchBtn:hover { - color: #d84040; - } -} - -#ask-button{ - background: url(../images/bigbutton.png) repeat-x bottom; - line-height:44px; - text-align:center; - width:200px; - height:42px; - font-size:23px; - color:@button-label; - margin-top:7px; - float:right; - text-transform:uppercase; - .rounded-corners(5px); - .box-shadow(1px, 1px, 2px, #636363) -} - -#ask-button:hover{ - text-decoration:none; - background: url(../images/bigbutton.png) repeat-x top; - .text-shadow(0px, 1px, 0px, #c6d9dd) -} - -/* ----- Content layout ----- */ - -#ContentLeft { - width: 730px; - float: left; - position: relative; -} - -#ContentRight { - width: 200px; - float: right; - padding: 0 0px 10px 0px; -} - -#ContentFull { - float: left; - width: 950px; -} - -/* ----- Sidebar Widgets Box ----- */ - -.box { - background: #fff; - padding: 10px 0px 0px 0px; - - - p { - margin-bottom: 4px; - } - - p.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:24px; - font-weight:normal; - color:#656565; - padding-right:10px; - margin-bottom:10px; - } - h3{ - color:#4a757f; - font-size:18px; - text-align:left; - font-weight:normal; - } - .contributorback{ - background: #eceeeb url(../images/contributorsback.png) no-repeat center left; - } - - label { - color: #333; - } - - ul { - margin-left: 15px; - } - - li { - list-style-type: disc; - font-size: 13px; - line-height: 20px; - margin-bottom: 10px; - } - ul.tags { - list-style: none; - margin: 0; - padding: 0; - line-height: 170%; - display: block; - } -} - -img.gravatar { - margin:1px; -} - -/* ----- Tags Styles ----- */ - -/* tag formatting is also copy-pasted in template - because it must be the same in the emails - askbot/models/__init__.py:format_instant_notification_email() -*/ - -/* tag cloud */ - -.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, -ul.tags.marked-tags, -ul#related-tags { - list-style: none; - margin: 0; - padding: 0; - line-height: 170%; - display: block; -} - -ul.tags li { - float:left; - display: block; - margin: 0 5px 0 0; - padding: 0; -} - -.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, -ul#ab-user-tags li { - width: 160px; -} - -ul#related-tags li { - margin: 0 5px 3px 0; - float: left; - clear: left; -} - -/* .tag-left and .tag-right are for the sliding doors decoration of tags */ -.tag-left { - background: url(../images/tag-right.png) no-repeat right center; - border: none; - cursor: pointer; - display: block; - float: left; - height: 18px; - margin: 0 5px 0 0; - padding: 0; -} - -.tag-right { - background: url(../images/tag-left.png) no-repeat left center; - border: none; - display: block; - float: left; - height: 18px; - line-height: 20px; - font-weight: normal; - font-size: 11px; - padding: 0px 7px 0px 15px; - text-decoration: none; - text-align: center; - white-space: nowrap; - vertical-align: middle; -} - -.deletable-tag { - margin-right: 3px; - white-space: nowrap; -} - -.deletable-tag .tag-right { - padding-right: 0px; - float: left; -} -.deletable-tag.tag-left { - padding-right: 3px; -} - -.tags a.tag-right, -.tags span.tag-right { - color: #333; - text-decoration: none; -} - - -.users-page h1, .tags-page h1 { - float: left; -} - -.main-page h1 { - margin-right: 5px; -} - -#ground { - width: 100%; - clear: both; - border-top: 1px solid #000; - padding: 6px 0 0 0; - text-align: center; - background: #777; -} - -#ground p { - margin-bottom:0; -} - - - -img.license-logo { - margin: 6px 0 10px 0; -} - - -#askFormBar { - display:inline-block; - background-color: #e3e3e3;/*888a85; /*#e9b96e;*/ - border: 1px solid #aaaaaa; - padding: 4px 7px 5px 5px; -} -#askFormBar p { - width: 685px; - margin:0 0 5px 0; -} -#askFormBar .questionTitleInput { - font-size: 24px; - line-height: 24px; - height: 36px; - width: 680px; - margin: 0px; - padding: 5px 0 0 5px; -} - -#question-list { - float: left; - position: relative; - background-color: #FFF; - padding: 0; - width: 100%; -} - -.ask-page div#question-list { - float: none; - width: 706px; -} -.ask-page div#question-list h2 { - font-size: 14px; - padding-bottom: 0; -} -.ask-page div#question-list span { - padding: 3px 7px; - margin-right: 5px; - background: #ccc; -} - - - -span.delete-icon { - padding-left: 13px; - vertical-align: bottom; - background: url(../images/close-small-dark.png) no-repeat; - cursor: default; -} -span.delete-icon:hover { - background: url(../images/close-small-hover.png) no-repeat; -} - -.tags span.delete-icon { - float: left; - height: 15px; - margin: 2px 0 0 1px; - display: block; -} - -.tag-number { - font-weight: 700; - display: block; - float: left; - font-family: sans-serif; -} - -.badges .tag-number { - float: none; - display: inline; - padding-right: 15px; -} - -ul#search-tags { - padding-top: 3px; -} - -/* ----- Sorting top Tab ------*/ - -.tabBar { - background-color: #eff5f6; - height: 30px; - width: 412px; - clear: both; - margin-bottom: 3px; - margin-top: 3px; - float:right; - font-family:Georgia; - font-size:16px; - .rounded-corners(5px); -} - -.tabBar h2 { - float: left; -} - -.tabsA, .tabsC { - float: right; - position: relative; - display: block; - height: 20px; -} - -/* tabsA - used for sorting */ -.tabsA { float: right; } -.tabsC { float: left; } - -.tabsA a, .tabsC a{ - - border-left: 1px solid #d0e1e4; - color: #8b1717; - 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: #C22828; -} - -.tabsA a.rev.on, tabsA a.rev.on:hover { -} - - - -.tabsA .label, .tabsC .label { - float: left; - color: #646464; - margin-top:4px; - margin-right:5px; -} - -.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; -} - -.rss { - float: right; - font-size: 16px; - color: #f57900 !important; - margin: 1px 8px 0 0; - width:45px; - padding-left: 16px; - padding-top:3px; - background: url(../images/feed-icon-small.png) no-repeat center right; -} - -.rss:hover { - color: #F4A731 !important; -} - - -/* ----- Question list ----- */ - -.short-summary { - position: relative; - filter: inherit; - padding: 10px; - border-bottom: 1px solid #DDDBCE; - margin-bottom:1px; - overflow: hidden; - width: 710px; - float: left; - background: url(../images/summary-background.png) repeat-x; -} - -.short-summary h2 { - font-size: 22px; - font-weight:normal; -} - -.short-summary a { - color:@question-link; -} - - -.short-summary .userinfo .relativetime, -.short-summary .userinfo a, -.short-summary span.anonymous { - font-size: 11px; - clear:both; - font-weight: normal; - color: #555; -} - - -.short-summary .userinfo { - text-align:center; - line-height:16px; -} - -.short-summary .counts { - float: right; - margin: 2px 0 0 5px; -} - -.short-summary .counts .item-count { - border:1px solid #cccccc; - -moz-border-radius:5px; - -webkit-border-radius:5px; - padding:0px 5px 0px 5px; - font-size: 17px; - font-weight: 800; -} - -.short-summary .counts .votes div, -.short-summary .counts .views div, -.short-summary .counts .answers div, -.short-summary .counts .favorites div -{ - font-size: 12px; - line-height:14px; - color: #555; -} - -.short-summary .tags { - margin-top: 0; -} - -.no-votes .item-count { - background: white; - color: gray; -} -.some-votes .item-count { - background: #a3d0ff; - color: #4a4a4a; -} -.no-answers .item-count { - background: #b63333; - color: yellow; -} -.no-favorites .item-count { - background: #b63333; - color: yellow; -} -.some-answers .item-count { - background: #ffed9c; - color: #a4a4a4; -} -.some-favorites .item-count { - background:#338333; - color:#d0f5a9; -} -.accepted .item-count { - background:#338333; - color:#d0f5a9; -} -.no-views .item-count { - background: gray; - color: white; -} -.some-views .item-count { - background: #ff8c8c; - color: #4a4a4a; -} - -.short-summary .votes, -.short-summary .answers, -.short-summary .favorites, -.short-summary .views { - text-align: center; - margin: 0 3px; - padding: 4px 2px 0px 2px; - width: 46px; - float: right; - -moz-border-radius: 5px; - -khtml-border-radius: 5px; - -webkit-border-radius: 5px; -} - -.short-summary .views { - width: 36px; - padding-right: 0; -} - -.short-summary h2 { - padding-left: 0; -} - -#question-table, -.answer-table { - margin: 2px 0 10px 0; - border-spacing: 0px; -} - -.answer-table { - border-bottom: 1px solid #bbb; - clear: both; -} - -.evenMore { - font-size: 14px; - font-weight: 800; -} - -.evenMore a { - text-decoration: underline; -} - - - -.pager { - clear:both; - border-top: 1px solid #777; - margin-top: 10px; - margin-bottom: 16px; -} - -.pagesize { - margin-top: 10px; - margin-bottom: 16px; - float: right; -} - -/** PAGINATOR **/ -.paginator { - padding: 5px 0 10px 0; - font: normal 12px sans-serif; -} - -.paginator .prev a, .paginator .prev a:visited, -.paginator .next a, .paginator .next a:visited { - border: 1px solid #fff; - background-color: #fff; - color: #777; - padding: 2px 4px 3px 4px; - font: bold 100% sans-serif; -} - -.paginator .prev { - margin-right: .5em; -} - -.paginator .next { - margin-left: .5em; -} - -.paginator .page a, .paginator .page a:visited, .paginator .curr { - padding: .25em; - font: normal .875em verdana; - border: 1px solid #ccc; - background-color: #fff; - margin: 0em .25em; - color: #777; -} - -.paginator .curr { - background-color: #777; - color: #fff; - border: 1px solid #777; - font-weight: bold; -} - -.paginator .page a:hover, -.paginator .curr a:hover, -.paginator .prev a:hover, -.paginator .next a:hover { - color: #fff; - background-color: #777; - border: 1px solid #777; - text-decoration: none; -} - -.paginator .text { - color: #777; - padding: .3em; - font: bold 100% sans-serif; -} - -.paginator-container-left { - padding: 5px 0 10px 0; -} - - -.question-page p.rss { - float:none; - clear:both; - padding: 3px 0 0 1px; - font-size: 14px; -} - -.question-page p.rss a { - padding-left: 18px; - vertical-align: top; -} - -/* badges */ -a.medal { - font-size: 14px; - line-height: 250%; - font-weight: 800; - color: #333; - text-decoration: none; - background: url(../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; -} - -a:hover.medal { - color: #333; - text-decoration: none; - background: url(../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; -} - -.questions-related { - font-weight: 700; - word-wrap: break-word; -} - -.questions-related p { - line-height: 20px; - margin-bottom: 10px; - font-size: 100%; -} - -.question-status { - margin-top: 10px; - padding: 20px; - background-color: #F5F5F5; - text-align: center; -} - -.question-status h3 { - font-size: 125%; -} -.question-body, .answer-body { - min-height: 39px; - line-height: 20px; - overflow: auto; - width: 660px; -} -.question-body IMG, .answer-body IMG { - max-width: 600px; -} - -.vote-buttons { - float: left; - text-align: center; - padding-top: 2px; -} - -.vote-buttons IMG { - cursor: pointer; -} - -.vote-buttons .button{ - -moz-border-radius: 10px; - margin-top: 20px; - border-radius: 10px; - height: 20px; - width: 80px; - border-style: solid; - border-width: 1px; - padding: 8px; - float:left; -} - -.vote-buttons .followed{ - font-color: #000; - font-style:normal; - background: #cccccc; -} - -.vote-buttons .followed div{ - font-weight: normal; -} - -.vote-buttons .followed div.unfollow{ - display:none; -} - -.vote-buttons .followed:hover{ - color: #fff; - background: #8b0000; -} - -.vote-buttons .followed:hover div{ - display:none; -} - -.vote-buttons .followed:hover div.unfollow{ - display:inline; - font-weight: bold; -} - -.vote-buttons .follow{ - background: #cccccc; -} - -.vote-buttons .follow:hover{ - background: #234f32; - color: #fff; - font-weight: bold; -} - -.vote-number { - font-family: Arial; - padding: 0px 0 3px 0; - font-size: 140%; - font-weight: bold; - color: #777; -} - -.vote-buttons .notify-sidebar { - text-align: left; -} -.vote-buttons .notify-sidebar label { - vertical-align: top; -} - -.question-img-upvote:hover { - background: url(../images/vote-arrow-up-on.png) -} - -.question-img-downvote:hover { - background: url(../images/vote-arrow-down-on.png) -} - -.question-img-favorite:hover { - background: url(../images/vote-favorite-on.png) -} - -.favorite-number { - padding: 5px 0 0 10px; - font-size: 100%; - font-family: Arial; - font-weight: bold; - color: #777; - text-align: left; -} - -.notify-me { - float: left; -} - -.offensive-flag a { - color: #777; - padding: 3px; - cursor: pointer; -} - -.offensive-flag a:hover { - background-color: #777; - text-decoration: none; - color: #fff; -} - -.linksopt a { - color: #777; - padding: 3px; - cursor: pointer; -} - -.linksopt a:hover { - background-color: #777; - text-decoration: none; - color: #fff; -} - -.post-controls a { - color: #777; - padding: 3px; - cursor: pointer; - border: none; - background: none; - text-decoration: none; -} - -.post-controls a:hover { - background-color: #777; - color: #fff; -} - -.post-controls .sep { - color: #ccc; -} - -.comments { - font-size: 12px; - width: 650px; - clear: both; -} - -.comments .comment { - border-top: 1px dotted #cccccc; - margin: 0; - overflow: auto; -} - -.comments .content { - margin-bottom: 7px; -} - -.comments div.comment { - min-height: 25px; -} - -.comments div.comment:hover { - background-color: #eee; -} - -div.comment .comment-votes { - float: left; - width: 37px; - line-height: 130%; - padding: 6px 5px 6px 3px; -} - -div.comment .comment-body { - line-height: 140%; - margin: 3px 26px 0 46px; - padding: 5px 3px; - color: #666; -} - -div.comment .comment-body p{ - font-size:inherit; - margin-bottom: 3px; - padding: 0; -} - -div.comment .comment-delete { - float: right; - width: 14px; - line-height: 130%; - padding: 8px 6px; -} - -div.comment .upvote { - margin: 0px; - padding-right: 17px; - padding-top: 2px; - text-align: right; - height: 20px; - font-size: 13px; - font-weight: bold; - color: #777; -} - -div.comment .upvote.upvoted { - color: #d64000; -} - -div.comment .upvote.hover { - background: url(../images/go-up-grey.png) no-repeat; - background-position: right 1px; -} - -div.comment .upvote:hover { - background: url(../images/go-up-orange.png) no-repeat; - background-position: right 1px; -} - -.comments div.controls { - clear: both; - background: url(../images/gray-up-arrow-h18px.png) no-repeat; - width: 100%; - padding-left: 12px; - margin: 3px 0 20px 5px; -} - -.comments form.post-comments { - width: 560px; - margin: 3px 30px 4px 45px; -} - -.comments textarea { - display: block; - height: 42px; - width: 572px; - margin: 6px 0 5px 1px; - font-family: sans-serif; - outline: none; - overflow:auto; - font-size: 12px; - line-height: 140%; - padding-left:2px; -} - -.comments input { - margin-left: 10px; - margin-top: 1px; - vertical-align: top; - width: 100px; -} - -.comments .counter { - display: inline-block; - width: 245px; - vertical-align: top; -} - -.comments .controls a { - color: #888888; - padding: 0 3px 2px; -} - -.comments .controls a:hover { - background-color: #777777; - color: white; - text-decoration: none; -} - -.comments .help-text{ - float: right; - text-align:right; - color: gray; - margin-bottom: 0px; - margin-top: 0px; - line-height: 50%; -} - -span.text-counter { - margin-right: 20px; -} - -span.form-error { - color: #990000; - font-weight: normal; - margin-left: 5px; -} - -p.form-item { - margin: 0px; -} - -div.comments { - padding: 0; -} - -.comments .button { - color: black; - font-size: 11px; - background: #eeeeee; - padding: 3px; - cursor: pointer; -} - -.comment a { - background-color: inherit; - color: blue; - padding: 0; -} - -.comment a.author, a.author:hover { - background-color: inherit; - color: blue; - padding: 0; -} - -.comment a.author:hover { - text-decoration: underline; -} - -.accepted-answer { - background-color: #EBFFE6; - border-bottom-color: #9BD59B; -} - -.accepted-answer .comments .button { - background-color: #CCFFBF; -} - -.accepted-answer .comments { - background-color: #CCFFBF; -} - -.answered { - background: #CCC; - color: #999; -} - -.answered-accepted { - background: #CCC; - color: #763333; -} - -.answered-by-owner { - background: #E9E9FF; -} - -.answered-by-owner .comments .button { - background-color: #E6ECFF; -} - -.answered-by-owner .comments { - background-color: #E6ECFF; -} - -.answered-accepted strong { - color: #E1E818; -} - -.answer-img-accept:hover { - background: url(../images/vote-accepted-on.png) -} - -.deleted { - background: #F4E7E7 none repeat scroll 0 0; -} - - - - -/* openid styles */ -.form-row { - line-height: 25px; -} - -table.form-as-table { - margin-top: 5px; -} - -table.form-as-table ul { - list-style-type: none; - display: inline; -} - -table.form-as-table li { - display: inline; -} - -table.form-as-table td { - text-align: right; -} - -table.form-as-table th { - text-align: left; - font-weight: normal; -} - -table.ab-subscr-form { - width: 45em; -} - -table.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; -} - -.openid-input { - background: url(../images/openid.gif) no-repeat; - padding-left: 15px; - cursor: pointer; -} - -.openid-login-input { - background-position: center left; - background: url(../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%; -} - -span.form-error { - color: #990000; - font-size: 90%; - font-weight: normal; - margin-left: 5px; -} - -.title-desc { - color: #666666; - font-size: 90%; -} - -/*adjustment for editor preview*/ -#editor { - font-size: 100%; - min-height: 200px; - line-height: 18px; - width: 702px; - margin:0; -} - -#id_title { - width: 100%; -} - -.wmd-preview { - margin: 3px 0 5px 0; - padding: 6px; - width: 691px; - background-color: #F5F5F5; - min-height: 20px; - overflow: auto; -} - -.wmd-preview pre { - background-color: #E7F1F8; - -} - -.wmd-preview blockquote { - background-color: #eee; -} - -.wmd-preview IMG { - max-width: 600px; -} - -.preview-toggle { - width: 100%; - color: #666; /*letter-spacing:1px;*/ - text-align: left; -} - -.preview-toggle span:hover { - cursor: pointer; -} - -.after-editor { - margin-top: 10px; -} - -.checkbox { - margin-left:5px; - font-weight:normal; - cursor:help -} - -.question-options { - margin-top: 1px; - float: left; - color: #666; - line-height: 13px; -} -.question-options label { - vertical-align: text-bottom; -} - -.ask-page input.submit, -.edit-question-page input.submit { - float: left; -} - -.edit-content-html { - border-top: 1px dotted #D8D2A9; - border-bottom: 1px dotted #D8D2A9; - margin: 5px 0 5px 0; -} - -.revision { - margin: 10px 0 10px 0; - width: 100%; - font-size: 13px; -} - -.revision .header { - background-color: #eee; - padding: 5px; - cursor: pointer; -} - -.revision .author { - background-color: #E9E9FF; -} - -.revision .summary { - padding: 5px 0 10px 0; -} - -.revision .summary span { - background-color: yellow; - padding-left: 3px; - padding-right: 3px; - display: inline; -} - -.revision h1 { - font-size: 130%; - font-weight: 600; - padding: 15px 0 15px 0; -} - -.revision-mark { - width: 200px; - text-align: left; - display: inline-block; - font-size: 90%; - overflow: hidden; -} - -.revision-number { - font-size: 300%; - font-weight: bold; - font-family: sans-serif; -} - -.revision .answerbody { - padding: 10px 0 5px 10px; -} - -/* Revision pages */ -del { - color: #FF5F5F; -} - -del .post-tag { - color: #FF5F5F; -} - -ins { - background-color: #97ff97; -} - -ins p{ - background-color: #97ff97; -} - -ins .post-tag { - background-color: #97ff97; -} - -/*用户资料页é¢*/ -.count { - font-family: Arial; - font-size: 200%; - font-weight: 700; - color: #777 -} - -.scoreNumber { - font-family: Arial; - font-size: 35px; - font-weight: 800; - color: #777; - line-height: 40px; /*letter-spacing:0px*/ - margin-top: 3px; -} - -.user-details { - font-size: 13px; -} - -.user-about { - background-color: #EEEEEE; - height: 200px; - line-height: 20px; - overflow: auto; - padding: 10px; - width: 90%; -} - -/* -.favorites-count-off { - color: #919191; - float: left; - text-align: center; -} - -.favorites-count { - color: #D4A849; - float: left; - text-align: center; -} -*/ - -/* todo: get rid of this in html */ -.favorites-empty { - width: 32px; - height: 45px; - float: left; -} - -.user-info-table { - margin-bottom: 10px; - border-spacing: 0; -} - -/* todo: remove this hack? */ -.user-stats-table .narrow { - width: 660px; -} - -.narrow .summary h3 { - padding: 0px; - margin: 0px; -} - -.relativetime { - font-weight: bold; - text-decoration: none; -} - -.narrow .tags { - float: left; -} - -.answer-summary { - display: block; - clear: both; - padding: 3px; -} - -.answer-votes { - background-color: #EEEEEE; - color: #555555; - float: left; - font-family: Arial; - font-size: 110%; - font-weight: bold; - height: 15px; - padding: 4px 4px 5px; - text-align: center; - text-decoration: none; - width: 20px; - margin-right: 10px; -} - -.vote-count { - font-family: Arial; - font-size: 160%; - font-weight: 700; - color: #777; -} - -/* todo: make these more semantic */ -.user-action-1 { - font-weight: bold; - color: #333; -} - -.user-action-2 { - font-weight: bold; - color: #CCC; -} - -.user-action-3 { - color: #333; -} - -.user-action-4 { - color: #333; -} - -.user-action-5 { - color: darkred; -} - -.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; -} - -/* todo: make these more semantic */ -.post-type-1 a { - font-weight: bold; - -} - -.post-type-3 a { - font-weight: bold; - -} - -.post-type-5 a { - font-weight: bold; -} - -.post-type-2 a { - color: #333; -} - -.post-type-4 a { - color: #333; -} - -.post-type-6 a { - color: #333; -} - -.post-type-8 a { - color: #333; -} - -.hilite { - background-color: #ff0; -} - -.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; -} - -.footerLinks { - color: #EEE; - font-size: 13px; /* letter-spacing:1px;*/ -} - -.footerLinks a { - color: #FFF; - font-size: 13px; -} - -a.comment { - background: #EEE; - color: #993300; - padding: 5px; -} - -a.offensive { - color: #999; -} - -.user { - padding: 5px; - line-height: 140%; - width: 170px; -} - -.user ul { - margin: 0; - list-style-type: none; -} - -.user .thumb { - clear: both; - float: left; - margin-right: 4px; - display: inline; -} - -.message { - padding: 5px; - margin: 10px 0 10px 0; - background-color: #eee; - border: 1px solid #aaaaaa; -} - -.message h1 { - padding-top: 0px; - font-size: 15px; -} - -.message p { - margin-bottom: 0px; -} - -p.space-above { - margin-top: 10px; -} - -.warning { - color: red; -} - - - -button::-moz-focus-inner { - padding:0; - border:none; -} -.submit { - cursor: pointer; /*letter-spacing:1px;*/ - background-color: #D4D0C8; - height: 30px; - border: 1px solid #777777; /* width:100px; */ - font-weight: bold; - font-size: 120%; -} - -.submit:hover { - text-decoration: underline; -} - -.submit.small { - margin-right:5px; - height:20px; - font-weight:normal; - font-size:12px; - padding:1px 5px; -} -.submit.small:hover { - text-decoration:none; -} -.question-page a.submit { - display: -moz-inline-stack; - display: inline-block; - line-height: 30px; - padding: 0 5px; - *display: inline; -} - -.ask-body { - padding-right: 10px; -} - - -.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: 15px; -} - -.strong { - font-weight: bold; -} - -.orange {/* used in django.po */ - 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; -} - -.action-status span { - padding: 3px 5px 3px 5px; - background-color: #fff380; /* nice yellow */ - font-weight: normal; - -moz-border-radius: 5px; - -khtml-border-radius: 5px; - -webkit-border-radius: 5px; -} - -.list-table td { - vertical-align: top; -} - -/* these need to go */ -table.form-as-table .errorlist { - display: block; - margin: 0; - padding: 0 0 0 5px; - text-align: left; - font-size: 10px; - color: darkred; -} - -table.form-as-table input { - display: inline; - margin-left: 4px; -} - -table.form-as-table th { - vertical-align: bottom; - padding-bottom: 4px; -} - -.form-row-vertical { - margin-top: 8px; - display: block; -} - -.form-row-vertical label { - margin-bottom: 3px; - display: block; -} - -/* above stuff needs to go */ -.text-align-right { - text-align: center; -} - -ul.form-horizontal-rows { - list-style: none; - margin: 0; -} - -ul.form-horizontal-rows li { - position: relative; - height: 40px; -} - -ul.form-horizontal-rows label { - display: inline-block; -} - -ul.form-horizontal-rows ul.errorlist { - list-style: none; - color: darkred; - font-size: 10px; - line-height: 10px; - position: absolute; - top: 2px; - left: 180px; - text-align: left; - margin: 0; -} - -ul.form-horizontal-rows ul.errorlist li { - height: 10px; -} - -ul.form-horizontal-rows label { - position: absolute; - left: 0px; - bottom: 6px; - margin: 0px; - line-height: 12px; - font-size: 12px; -} - -ul.form-horizontal-rows li input { - position: absolute; - bottom: 0px; - left: 180px; - margin: 0px; -} - -.narrow .summary { - float: left; -} - -.user-profile-tool-links { - font-weight: bold; - vertical-align: top; -} - -.post-controls, .post-tags { - font-size: 11px; - line-height: 12px; - min-width: 200px; - padding-left: 5px; - margin-bottom: 5px; -} - -.post-controls { - clear: left; - float: left; -} - -ul.post-tags { - margin-left: 7px; -} -ul.post-tags li { - margin-top: 4px; - margin-bottom: 3px; -} - -ul.post-retag { - margin-bottom:0px; - margin-left:5px; -} - -#question-controls .tags { - margin: 0 0 3px 0; -} - -.post-update-info-container { - float: right; - min-width: 85px; -} - -.post-update-info { - display: inline-block; - float: right; - font-size: 11px; - width: 190px; - margin-bottom: 5px; - line-height: 14px -} - -.post-update-info p { - line-height: 13px; - font-size: 11px; - margin: 0 0 2px 1px; - padding: 0; -} - -.post-update-info .gravatar { - float: left; - margin-right: 4px; -} - - -.post-update-info p.tip { - color: #444; -} - -#tagSelector { - padding-bottom: 2px; - margin-bottom: 0; -} - -#related-tags { - padding-left: 3px; -} - -#hideIgnoredTagsControl { - margin: 5px 0 0 0; -} - -#hideIgnoredTagsControl 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; -} - -/* a workaround to set link colors correctly */ -.answer-body a { - color:#0000ff; -} -.question-body a { - color:#0000ff; -} -.question-body li { - margin-bottom:0.7em; -} -.answer-body li { - margin-bottom:0.7em; -} -.wmd-preview a { - color:#0000ff; -} -.wmd-preview li { - margin-bottom:0.7em; -} - -.karma-summary { - padding:5px; - font-size:13px; -} - -.karma-summary h3 { - text-align: center; - font-weight: bold; - padding:5px; -} - -.karma-diagram { - width:377px; - height:300px; - float:left; - margin-right:10px; -} - -.karma-details { - float:right; - width:300px; - height:250px; - overflow-y:auto; - word-wrap:break-word; -} - -.karma-gained { - font-weight:bold; - background:#eee; - width:20px; - color:green; - padding:5px; -} - -.karma-lost { - font-weight:bold; - background:#eee; - width:20px; - color:red; - padding:5px; -} - -.search-result-summary { - font-weight: bold; - font-size:18px; - line-height:22px; - margin:0px 0px 0px 0px; - padding:2px 0 0 0; - float: left; -} -.search-tips { - font-size:12px; - line-height:12px; - color: #555; - margin:0 0 5px 0; - padding:0px; - clear:both; -} -.search-tips a { - text-decoration: underline; - color: #555; -} - -.faq-rep-item { - text-align:right; - padding-right:5px; -} - - -.user-info-table .gravatar { - margin:0; -} - -.vote-notification { - z-index: 1; - cursor: pointer; - display: none; - position: absolute; - padding: 15px; - color: white; - background-color: darkred; - text-align: center; -} - -.vote-notification a { - color: white; - text-decoration: underline; -} - -#responses { - clear:both; - line-height:18px; - margin-bottom:15px; -} - -#responses div.face { - float:left; - text-align: center; - width: 54px; - padding: 3px; - overflow:hidden; -} - -.response-parent { - margin-top: 18px; -} - -.response-parent 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; -} -#re_sections .on { - font-weight:bold; -} - -.avatar-page ul { - list-style: none; -} -.avatar-page li { - display: inline; -} -.user-profile-page .avatar p { - margin-bottom: 0px; -} -.user-profile-page .tabBar a#stats { - margin-left: 0; -} -.user-profile-page img.gravatar { - margin: 2px 0 3px 0; -} -.user-profile-page 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; -} - -.facebook-share.icon, .twitter-share.icon, .linkedin-share.icon, .identica-share.icon { - background: url(../images/sprite.png) no-repeat; - display:block; - text-indent:-100em; - height:25px; - width:25px; -} -.facebook-share.icon { - background-position: -25px 0px; -} -.identica-share.icon { - background-position: -85px 0px; -} -.twitter-share.icon { - margin-top:10px; - background-position: 0px 0px; -} -.linkedin-share.icon { - background-position: -55px 0px; -} -/* Pretty printing styles. Used with prettify.js. */ - -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; }/* name conflict here */ -.atn { color: #606; } -.atv { color: #080; } -.dec { color: #606; } -pre.prettyprint { 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; } -} - -.follow-toggle { - border: 2px solid; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius: 5px; - height: auto; - width: 200px; - float:left; - padding: 0; - margin-right:100%; - margin-bottom: 10px; -} - -.follow-toggle .follow{ - font-color: #000; - font-style:normal; - background: #4cd46f; -} - -.follow-toggle .follow:hover{ - font-weight: bold; -} - -.follow-toggle .unfollow{ - background: #4cd46f; -} - -.follow-toggle .unfollow:hover{ - background: #d94849; -} - -.follow-toggle .unfollow div.unfollow-red{ - display:none; -} - -.follow-toggle .unfollow div.unfollow-green{ - background: #4cd46f; -} - -.follow-toggle .unfollow:hover div.unfollow-red{ - display:inline; - color:#fff; - font-weight:bold; -} - -.follow-toggle .unfollow:hover div.unfollow-green{ - display:none; -} diff --git a/lms/askbot/skins/common/templates/authopenid/authopenid_macros.html b/lms/askbot/skins/common/templates/authopenid/authopenid_macros.html deleted file mode 100644 index 477d277cd0..0000000000 --- a/lms/askbot/skins/common/templates/authopenid/authopenid_macros.html +++ /dev/null @@ -1,58 +0,0 @@ -{% macro login_provider_input(login_provider) %} - -{% endmacro %} - -{% macro provider_buttons( - login_form = None, - major_login_providers = None, - minor_login_providers = None, - hide_local_login = False, - settings = None, - logged_in = False - ) -%} -
          -
            - {% for login_provider in major_login_providers %} - {% if login_provider.name == 'local' and hide_local_login == True %} - {# do nothing here, left if statement this way for simplicity #} - {% else %} - {% if logged_in == True and login_provider.type == 'password' and login_provider.password_changeable == False %} - {% else %} -
          • - {{ login_provider_input(login_provider) }} -
          • - {% endif %} - {% endif %} - {% endfor %} -
          -
            - {% for login_provider in minor_login_providers %} - {% if logged_in == True and login_provider.type == 'password' and login_provider.password_changeable == False %} - {% else %} -
          • - {{ login_provider_input(login_provider) }} -
          • - {% endif %} - {% endfor %} -
          -
          -
          -

          {% trans %}Please enter your user name, then sign in{% endtrans %}

          -

          {% trans %}(or select another login method above){% endtrans %}

          - - -
          -{% endmacro %} diff --git a/lms/askbot/skins/common/templates/authopenid/changeemail.html b/lms/askbot/skins/common/templates/authopenid/changeemail.html deleted file mode 100644 index 1316a048ec..0000000000 --- a/lms/askbot/skins/common/templates/authopenid/changeemail.html +++ /dev/null @@ -1,80 +0,0 @@ -{% extends "one_column_body.html" %} -{% block title %}{% spaceless %}{% trans %}Change email{% endtrans %}{% endspaceless %}{% endblock %} -{% block content %} - -{% if action_type=="change" %} -

          - {% if user.email %} - {% trans %}Change email{% endtrans %} - {% else %} - {% trans %}Save your email address{% endtrans %} - {% endif %} -

          -

          - {% if user.email %} - {% trans %}change {{email}} info{% endtrans %} - {% else %} - {% trans %}here is why email is required, see {{gravatar_faq_url}}{% endtrans %} - {% endif %} -

          - {% if msg %} -

          {{ msg }}

          - {% endif %} -
          -
          {% csrf_token %} - {% if next %} - - {% endif %} -
          - - {% if form.email.errors %} -

          {{form.email.errors|join(", ")}}

          - {% endif %} - {{ form.email }} -
          -
          - - {% if user.email %} - - {% endif %} -
          -
          -
          -{% elif action_type=="validate" %} -
          - {% trans %}Validate email{% endtrans %} -
          -

          - {% trans %}validate {{email}} info or go to {{change_email_url}}{% endtrans %} -

          -{% elif action_type=="keep" %} -
          - {% trans %}Email not changed{% endtrans %} -
          -

          - {% trans %}old {{email}} kept, if you like go to {{change_email_url}}{% endtrans %} -

          -{% elif action_type=="done_novalidate" %} -
          - {% trans %}Email changed{% endtrans %} -
          -

          - {% trans %}your current {{email}} can be used for this{% endtrans %} -

          -{% elif action_type=="validation_complete" %} -
          - {% trans %}Email verified{% endtrans %} -
          -

          - {% trans %}thanks for verifying email{% endtrans %} -

          -{% elif action_type=="key_not_sent" %} -
          - {% trans %}email key not sent{% endtrans %} -
          -

          - {% trans %}email key not sent {{email}} change email here {{change_link}}{% endtrans %} -

          -{% endif %} -{% endblock %} - diff --git a/lms/askbot/skins/common/templates/authopenid/complete.html b/lms/askbot/skins/common/templates/authopenid/complete.html deleted file mode 100644 index 969a173faa..0000000000 --- a/lms/askbot/skins/common/templates/authopenid/complete.html +++ /dev/null @@ -1,84 +0,0 @@ -{% extends "one_column_body.html" %} - -{# -views calling this template: -* django_authopenid.views.register with login_type='openid' -* django_authopenid.views.signin - with login_type='legacy' - -purpose of this template is to allow user enter his/her name -email and sign up for email alerts at the initial registratio - -parameters: -* provider -* login_type openid|legacy -* username (same as screen name or username in the models, and nickname in openid sreg) -* openid_register_form -* openid_verify_form - not clear what this form is supposed to do, not used for legacy -* email_feeds_form forum.forms.SimpleEmailSubscribeForm -* openid_username_exists -#} -{% block head %}{% endblock %} -{% block title %}{% spaceless %}{% trans %}Registration{% endtrans %}{% endspaceless %}{% endblock %} -{% block content %} -

          {% trans %}Registration{% endtrans %}

          -
          -
          - {% if login_type=='openid' %} - {% trans %}register new {{provider}} account info, see {{gravatar_faq_url}}{% endtrans %} - {% elif login_type=='legacy' %} - {% if external_login_name_is_taken %} - {% trans %}{{username}} already exists, choose another name for - {{provider}}. Email is required too, see {{gravatar_faq_url}} - {% endtrans %} - {% else %} - {% trans %}register new external {{provider}} account info, see {{gravatar_faq_url}}{% endtrans %} - {% endif %} - {% else %} - {% trans %}register new Facebook connect account info, see {{gravatar_faq_url}}{% endtrans %} - {% endif %} -
          -

          {% trans %}This account already exists, please use another.{% endtrans %}

          -
          - {% if openid_register_form.errors %} -
            - {% for error in openid_register_form.non_field_errors() %} -
          • {{error}}
          • - {% endfor %} -
          - {% endif %} -
          - {% if login_type=='openid' %} -
          {% csrf_token %} - {% elif login_type=='facebook' %} - {% csrf_token %} - {% else %} - {% csrf_token %} - {% endif %} - {{ openid_register_form.next }} -
          - - {% if openid_register_form.username.errors %} -

          {{ openid_register_form.username.errors|join(", ") }}

          - {% endif %} - {{ openid_register_form.username }} -
          -
          - - {% if openid_register_form.email.errors %} -

          {{ openid_register_form.email.errors|join(", ") }}

          - {% endif %} - {{ openid_register_form.email }} -
          -

          {% trans %}receive updates motivational blurb{% endtrans %}

          -
          - {{email_feeds_form.subscribe}} - {% if email_feeds_form.errors %} -

          {% trans %}please select one of the options above{% endtrans %}

          - {% endif %} -
          -

          {% trans %}Tag filter tool will be your right panel, once you log in.{% endtrans %}

          -
          -
          -
          -{% endblock %} - diff --git a/lms/askbot/skins/common/templates/authopenid/confirm_email.txt b/lms/askbot/skins/common/templates/authopenid/confirm_email.txt deleted file mode 100644 index 1a0f4e634c..0000000000 --- a/lms/askbot/skins/common/templates/authopenid/confirm_email.txt +++ /dev/null @@ -1,12 +0,0 @@ -{% trans %}Thank you for registering at our Q&A forum!{% endtrans %} - -{% trans %}Your account details are:{% endtrans %} - -{% trans %}Username:{% endtrans %} {{ username }} -{% trans %}Password:{% endtrans %} {{ password }} - -{% trans %}Please sign in here:{% endtrans %} -{{signup_url}} - -{% trans %}Sincerely, -Forum Administrator{% endtrans %} diff --git a/lms/askbot/skins/common/templates/authopenid/email_validation.txt b/lms/askbot/skins/common/templates/authopenid/email_validation.txt deleted file mode 100644 index 9c5baa8a82..0000000000 --- a/lms/askbot/skins/common/templates/authopenid/email_validation.txt +++ /dev/null @@ -1,14 +0,0 @@ -{% trans %}Greetings from the Q&A forum{% endtrans %}, - -{% trans %}To make use of the Forum, please follow the link below:{% endtrans %} - -{{validation_link}} - -{% trans %}Following the link above will help us verify your email address.{% endtrans %} - -{% trans %}If you beleive that this message was sent in mistake - -no further action is needed. Just ingore this email, we apologize -for any inconvenience{% endtrans %} - -{% trans %}Sincerely, -Forum Administrator{% endtrans %} diff --git a/lms/askbot/skins/common/templates/authopenid/logout.html b/lms/askbot/skins/common/templates/authopenid/logout.html deleted file mode 100644 index 1ac6705c35..0000000000 --- a/lms/askbot/skins/common/templates/authopenid/logout.html +++ /dev/null @@ -1,31 +0,0 @@ -{% extends "one_column_body.html" %} - -{% block title %}{% spaceless %}{% trans %}Logout{% endtrans %}{% endspaceless %}{% endblock %} -{% block content %} -

          {% trans %}You have successfully logged out{% endtrans %}

          -{% if have_federated_login_methods %} -

          {% trans %}However, you still may be logged in to your OpenID provider. Please logout of your provider if you wish to do so.{% endtrans %}

          - {% if settings.FACEBOOK_KEY and settings.FACEBOOK_SECRET %} -
          - - - {% endif %} -{% endif %} -{% endblock %} -{% block endjs %} - -{% endblock %} - diff --git a/lms/askbot/skins/common/templates/authopenid/providers_javascript.html b/lms/askbot/skins/common/templates/authopenid/providers_javascript.html deleted file mode 100644 index cd9f56b636..0000000000 --- a/lms/askbot/skins/common/templates/authopenid/providers_javascript.html +++ /dev/null @@ -1,55 +0,0 @@ - - - -{% if settings.FACEBOOK_KEY and settings.FACEBOOK_SECRET %} -
          - - -{% endif %} diff --git a/lms/askbot/skins/common/templates/authopenid/signin.html b/lms/askbot/skins/common/templates/authopenid/signin.html deleted file mode 100644 index 30a576cce2..0000000000 --- a/lms/askbot/skins/common/templates/authopenid/signin.html +++ /dev/null @@ -1,245 +0,0 @@ -{% extends "two_column_body.html" %} -{% import "authopenid/authopenid_macros.html" as login_macros %} - -{% block title %}{% spaceless %}{% trans %}User login{% endtrans %}{% endspaceless %}{% endblock %} -{% block forestyle %} - -{% endblock %} -{% block content %} -{% if have_buttons or view_subtype == 'email_sent' %} -

          {{page_title}}

          -{% endif %} - {% if answer %} -
          - {% trans title=answer.question.title|escape, summary=answer.summary|escape %} - Your answer to {{title}} {{summary}} will be posted once you log in - {% endtrans %} -
          - {% endif %} - {% if question %} -
          - {% trans title=question.title|escape, summary=question.summary|escape %}Your question - {{title}} {{summary}} will be posted once you log in - {% endtrans %} -
          - {% endif %} -

          - {% if view_subtype == 'default' and have_buttons %} - {% trans %}Take a pick of your favorite service below to sign in using secure OpenID or similar technology. Your external service password always stays confidential and you don't have to rememeber or create another one.{% endtrans %} - {% elif view_subtype == 'add_openid' and have_buttons %} - {% if existing_login_methods %} - {% trans %}It's a good idea to make sure that your existing login methods still work, or add a new one. Please click any of the icons below to check/change or add new login methods.{% endtrans %} - {% else %} - {% trans %}Please add a more permanent login method by clicking one of the icons below, to avoid logging in via email each time.{% endtrans %} - {% endif %} - {% elif view_subtype == 'change_openid' and have_buttons %} - {% if existing_login_methods %} - {% trans %}Click on one of the icons below to add a new login method or re-validate an existing one.{% endtrans %} - {% else %} - {% trans %}You don't have a method to log in right now, please add one or more by clicking any of the icons below.{% endtrans %} - {% endif %} - {% elif view_subtype == 'email_sent' %} - {% trans %}Please check your email and visit the enclosed link to re-connect to your account{% endtrans %} - {% endif %} -

          - {% if openid_error_message %} -

          {{ openid_error_message }}

          - {% endif %} - {% if view_subtype != 'email_sent' and view_subtype != 'bad_key' %} -
          {% csrf_token %} - {# in this branch - the real signin view we display the login icons - here we hide the local login button only if admin - wants to always show the password login form - then - the button is useless. - #} - {{ login_form.login_provider_name }} - {{ login_form.next }} - {{ - login_macros.provider_buttons( - login_form = login_form, - major_login_providers = major_login_providers, - minor_login_providers = minor_login_providers, - hide_local_login = settings.SIGNIN_ALWAYS_SHOW_LOCAL_LOGIN, - settings = settings, - logged_in = user.is_authenticated() - ) - }} - {% if use_password_login == True %} -
          - {{login_form.password_action}} - {% if user.is_anonymous() %} -

          - {% trans %}Please enter your user name and password, then sign in{% endtrans %} -

          - {% if have_buttons %} -

          {% trans %}(or select another login method above){% endtrans %}

          - {% endif %} - {% if login_form.password_login_failed %} -

          {% trans %}Login failed, please try again{% endtrans %}

          - {% endif %} - - - - - - - - - -
          {{login_form.username}}
          {{login_form.password}}
          -

          - - {% if settings.USE_LDAP_FOR_PASSWORD_LOGIN == False %} - {% trans %}Create a password-protected account{% endtrans %} - {% endif %} -

          - {% elif settings.USE_LDAP_FOR_PASSWORD_LOGIN == False %} -

          - {% trans %}To change your password - please enter the new one twice, then submit{% endtrans %} -

          - - - - - - - - - - - -
          - {{login_form.new_password}} - - {{login_form.new_password.errors[0]}} -
          - {{login_form.new_password_retyped}} - - {{login_form.new_password_retyped.errors[0]}} -
          -

          - -

          - {% endif %} -
          - {% endif %} - - {% if user.is_authenticated() and existing_login_methods and settings.ALLOW_ADD_REMOVE_LOGIN_METHODS %} -
          -

          - {% trans %}Here are your current login methods{% endtrans %} -

          - - - - - - - {% for login_method in existing_login_methods %} - - - - - - {% endfor %} -
          {% trans %}provider{% endtrans %}{% trans %}last used{% endtrans %}{% trans %}delete, if you like{% endtrans %}
          - {{login_method.provider_name}} - - {% if login_method.last_used_timestamp %} - {{login_method.last_used_timestamp|diff_date}} - {% endif %} - - {% if login_method.is_deletable %} - - {% else %} - {% trans %}cannot be deleted{% endtrans %} - {% endif %} -
          -
          - {% endif %} - {% endif %} - {% if view_subtype != 'email_sent' or view_subtype == 'bad_key' %} - {% if user.is_anonymous() and settings.ALLOW_ACCOUNT_RECOVERY_BY_EMAIL %} -
          {% csrf_token %} - {% if view_subtype != 'bad_key' %} -

          {% trans %}Still have trouble signing in?{% endtrans %}

          - {% endif %} -

          - - {% if view_subtype == 'bad_key' %} - {% trans %}Please, enter your email address below and obtain a new key{% endtrans %} - {% else %} - {% trans %}Please, enter your email address below to recover your account{% endtrans %} - {% endif %} - - - {% trans %}recover your account via email{% endtrans %} -

          -
          - {% if account_recovery_form.email.errors %} -

          {{account_recovery_form.email.errors[0]}}

          - {% endif %} - {{ account_recovery_form.email }} - -
          -
          - {% endif %} - {% endif %} -{% endblock %} - -{% block sidebar %} - {% if have_buttons %} -
          -

          {% trans %}Why use OpenID?{% endtrans %}

          -
            -
          • - {% trans %}with openid it is easier{% endtrans %} -
          • -
          • - {% trans %}reuse openid{% endtrans %} -
          • -
          • - {% trans %}openid is widely adopted{% endtrans %} -
          • -
          • - {% trans %}openid is supported open standard{% endtrans %} -
          • -
          -

          - {% trans %}Find out more{% endtrans %} »
          - {% trans %}Get OpenID{% endtrans %} » -

          -
          - {% endif %} -{% endblock%} -{%block endjs%} -{%include "authopenid/providers_javascript.html" %} -{%endblock%} - diff --git a/lms/askbot/skins/common/templates/authopenid/signup_with_password.html b/lms/askbot/skins/common/templates/authopenid/signup_with_password.html deleted file mode 100644 index 9911facf80..0000000000 --- a/lms/askbot/skins/common/templates/authopenid/signup_with_password.html +++ /dev/null @@ -1,58 +0,0 @@ -{% extends "one_column_body.html" %} -{% import "authopenid/authopenid_macros.html" as login_macros %} - -{% block title %}{% spaceless %}{% trans %}Signup{% endtrans %}{% endspaceless %}{% endblock %} -{% block forestyle %} - -{% endblock %} -{% block content %} -{% if settings.PASSWORD_REGISTER_SHOW_PROVIDER_BUTTONS == True %} -

          {% trans %}Please register by clicking on any of the icons below{% endtrans %}

          -
          {% csrf_token %} - {# hide_local_login == True because it is password reg form #} - {{ - login_macros.provider_buttons( - login_form = login_form, - major_login_providers = major_login_providers, - minor_login_providers = minor_login_providers, - hide_local_login = True, - settings = settings - ) - }} -
          -

          {% trans %}or create a new user name and password here{% endtrans %}

          -{% else %} -

          {% trans %}Create login name and password{% endtrans %}

          -

          {% trans %}Traditional signup info{% endtrans %}

          -{%endif%} -
          {% csrf_token %} - {{form.login_provider}} -
            -
          • {{form.username}}{{form.username.errors}}
          • -
          • {{form.email}}{{form.email.errors}}
          • -
          • {{form.password1}}{{form.password1.errors}}
          • -
          • {{form.password2}}{{form.password2.errors}}
          • -
          -

          {% trans %}receive updates motivational blurb{% endtrans %}

          -
          - {{email_feeds_form.subscribe}} - {% if email_feeds_form.errors %} -

          {% trans %}please select one of the options above{% endtrans %}

          - {% endif %} -
          - {% if settings.USE_RECAPTCHA %} -

          {% trans %}Please read and type in the two words below to help us prevent automated account creation.{% endtrans %}

          - {{form.recaptcha}} - {% endif %} -
          - {% if settings.PASSWORD_REGISTER_SHOW_PROVIDER_BUTTONS == False %} - {% trans %}or{% endtrans %} - {% trans %}return to OpenID login{% endtrans %} - {% endif %} -
          -
          -{% endblock %} -{%block endjs%} -{%include "authopenid/providers_javascript.html" %} -{%endblock%} - diff --git a/lms/askbot/skins/common/templates/avatar/add.html b/lms/askbot/skins/common/templates/avatar/add.html deleted file mode 100644 index 68a188ef0a..0000000000 --- a/lms/askbot/skins/common/templates/avatar/add.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends "user_profile/user.html" %} -{% import "macros.html" as macros %} -{% block profilesection %}{% trans %}add avatar{% endtrans %}{% endblock %} -{% block usercontent %} -

          {% trans %}Change avatar{% endtrans %} -

          {% trans %}Your current avatar: {% endtrans %}

          - {{ macros.gravatar(user, 128) }} - {% if not avatars %} -

          {% trans %}You haven't uploaded an avatar yet. Please upload one now.{% endtrans %}

          - {% endif %} -
          {% csrf_token %} - {{ upload_avatar_form.as_p() }} -

          -
          -{% endblock %} diff --git a/lms/askbot/skins/common/templates/avatar/change.html b/lms/askbot/skins/common/templates/avatar/change.html deleted file mode 100644 index 7921a66233..0000000000 --- a/lms/askbot/skins/common/templates/avatar/change.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends "user_profile/user.html" %} -{% import "macros.html" as macros %} -{% block profilesection %} - {% trans %}change avatar{% endtrans %} -{% endblock %} -{% block usercontent %} -

          {% trans %}Your current avatar: {% endtrans %}
          - {{ macros.gravatar(user, 128) }} -

          - {% if not avatars %} -

          {% trans %}You haven't uploaded an avatar yet. Please upload one now.{% endtrans %}

          - {% else %} -
          {% csrf_token %} -
            - {{ primary_avatar_form.as_ul() }} -
          -

          -
          - {% endif %} -
          {% csrf_token %} - {{ upload_avatar_form.as_p() }} -

          -
          -{% endblock %} diff --git a/lms/askbot/skins/common/templates/avatar/confirm_delete.html b/lms/askbot/skins/common/templates/avatar/confirm_delete.html deleted file mode 100644 index ee3d10d7aa..0000000000 --- a/lms/askbot/skins/common/templates/avatar/confirm_delete.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends "user_profile/user.html" %} -{% block profilesection %}{% trans %}delete avatar{% endtrans %}{% endblock %} -{% block usercontent %} -

          {% trans %}Please select the avatars that you would like to delete.{% endtrans %}

          - {% if not avatars %} -

          {% trans avatar_change_url="avatar_change"|url %}You have no avatars to delete. Please upload one now.{% endtrans %}

          - {% else %} -
          {% csrf_token %} -
            - {{ delete_avatar_form.as_ul() }} -
          -

          -
          - {% endif %} -{% endblock %} diff --git a/lms/askbot/skins/common/templates/debug_header.html b/lms/askbot/skins/common/templates/debug_header.html deleted file mode 100644 index e12302653c..0000000000 --- a/lms/askbot/skins/common/templates/debug_header.html +++ /dev/null @@ -1,27 +0,0 @@ -{% if settings.USING_RUNSERVER %} - {% if settings.DEBUG == False %} -
          -

          - You are seeing this message because you are using Django runserver - and DEBUG_MODE is False. Runserver should not be used in production. -

          -

          - To serve static media in production - please run: -

          python manage.py collectstatic
          -

          -

          - If you do not see page styling - set DEBUG_MODE = True. -

          -
          - {% endif %} -{% else %} - {% if settings.DEBUG == True %} -
          -

          - Debug mode is on, do not use it in production. - To turn it off, use DEBUG = False in your - settings.py file. -

          -
          - {% endif %} -{% endif %} diff --git a/lms/askbot/skins/common/templates/one_column_body.html b/lms/askbot/skins/common/templates/one_column_body.html deleted file mode 100644 index a11961cf82..0000000000 --- a/lms/askbot/skins/common/templates/one_column_body.html +++ /dev/null @@ -1,10 +0,0 @@ -{% extends "base.html" %} -{% block body_class %}one-col{% endblock %} -{% block body %} -
          -
          - {% block content%} - {% endblock%} -
          -
          -{% endblock %} diff --git a/lms/askbot/skins/common/templates/question/answer_author_info.html b/lms/askbot/skins/common/templates/question/answer_author_info.html deleted file mode 100644 index f17cb62cf6..0000000000 --- a/lms/askbot/skins/common/templates/question/answer_author_info.html +++ /dev/null @@ -1,6 +0,0 @@ -{{ - macros.post_last_updater_and_creator_info( - answer, - settings.MIN_REP_TO_EDIT_WIKI - ) -}} diff --git a/lms/askbot/skins/common/templates/question/answer_comments.html b/lms/askbot/skins/common/templates/question/answer_comments.html deleted file mode 100644 index e6b5e1c587..0000000000 --- a/lms/askbot/skins/common/templates/question/answer_comments.html +++ /dev/null @@ -1,10 +0,0 @@ -{{ - macros.post_comments_widget( - post = answer, - show_post = show_post, - show_comment = show_comment, - show_comment_position = show_comment_position, - user = request.user, - max_comments = settings.MAX_COMMENTS_TO_SHOW - ) -}} diff --git a/lms/askbot/skins/common/templates/question/answer_controls.html b/lms/askbot/skins/common/templates/question/answer_controls.html deleted file mode 100644 index f1896e0d95..0000000000 --- a/lms/askbot/skins/common/templates/question/answer_controls.html +++ /dev/null @@ -1,42 +0,0 @@ -{% set pipe=joiner('|') %} -{{ pipe() }} - - ➦ - - - -{% if request.user|can_edit_post(answer) %}{{ pipe() }} -{% trans %}edit{% endtrans %} -{% endif %} -{% if question.offensive_flag_count == 0 %}{{ pipe() }} - - {# {% trans %}flag offensive{% endtrans %} #} flag - {% if request.user|can_see_offensive_flags(answer) %} - {% if answer.offensive_flag_count > 0 %}({{ answer.offensive_flag_count }}){% endif %} - {% endif %} - -{% elif question.offensive_flag_count > 0 %}{{ pipe() }} - - {# {% trans %}remove flag{% endtrans %} #} unflag - {% if request.user|can_see_offensive_flags(answer) %} - {% if answer.offensive_flag_count > 0 %}({{ answer.offensive_flag_count }}){% endif %} - {% endif %} - -{% endif %} -{% if request.user|can_delete_post(answer) %}{{ pipe() }} -{% spaceless %} - - - {% if answer.deleted %}{% trans %}undelete{% endtrans %}{% else %}delete{% endif %} - -{% endspaceless %} -{% endif %} -{% if settings.ALLOW_SWAPPING_QUESTION_WITH_ANSWER and request.user.is_authenticated() and request.user.is_administrator_or_moderator() %}{{ pipe() }} - - {% trans %}swap with question{% endtrans %} - -{% endif %} diff --git a/lms/askbot/skins/common/templates/question/answer_vote_buttons.html b/lms/askbot/skins/common/templates/question/answer_vote_buttons.html deleted file mode 100644 index 285363c912..0000000000 --- a/lms/askbot/skins/common/templates/question/answer_vote_buttons.html +++ /dev/null @@ -1,22 +0,0 @@ -{{ macros.post_vote_buttons(post = answer, visitor_vote = user_answer_votes[answer.id]) }} - -{% trans %}mark this answer as correct (click again to undo){% endtrans %} - diff --git a/lms/askbot/skins/common/templates/question/closed_question_info.html b/lms/askbot/skins/common/templates/question/closed_question_info.html deleted file mode 100644 index 87d9379c22..0000000000 --- a/lms/askbot/skins/common/templates/question/closed_question_info.html +++ /dev/null @@ -1,5 +0,0 @@ -
          -

          {% trans close_reason=thread.get_close_reason_display() %}The question has been closed for the following reason "{{ close_reason }}" by{% endtrans %} - {{ thread.closed_by.username }}
          - {% trans closed_at=thread.closed_at %}close date {{closed_at}}{% endtrans %}

          -
          diff --git a/lms/askbot/skins/common/templates/question/question_author_info.html b/lms/askbot/skins/common/templates/question/question_author_info.html deleted file mode 100644 index e43f8931a5..0000000000 --- a/lms/askbot/skins/common/templates/question/question_author_info.html +++ /dev/null @@ -1,6 +0,0 @@ -{{ - macros.post_last_updater_and_creator_info( - question, - settings.MIN_REP_TO_EDIT_WIKI - ) -}} diff --git a/lms/askbot/skins/common/templates/question/question_comments.html b/lms/askbot/skins/common/templates/question/question_comments.html deleted file mode 100644 index e9d3f724c9..0000000000 --- a/lms/askbot/skins/common/templates/question/question_comments.html +++ /dev/null @@ -1,10 +0,0 @@ -{{ - macros.post_comments_widget( - post = question, - show_post = show_post, - show_comment = show_comment, - show_comment_position = show_comment_position, - user = request.user, - max_comments = settings.MAX_COMMENTS_TO_SHOW - ) -}} diff --git a/lms/askbot/skins/common/templates/question/question_controls.html b/lms/askbot/skins/common/templates/question/question_controls.html deleted file mode 100644 index 2409371c65..0000000000 --- a/lms/askbot/skins/common/templates/question/question_controls.html +++ /dev/null @@ -1,44 +0,0 @@ -{% set pipe=joiner('|') %} -{% if request.user|can_edit_post(question) %}{{ pipe() }} - {% trans %}edit{% endtrans %} -{% endif %} - -{% if thread.closed %} - - {% if request.user|can_reopen_question(question) %}{{ pipe() }} - {% trans %}reopen{% endtrans %} - {% endif %} - -{% else %} - - {% if request.user|can_close_question(question) %}{{ pipe() }} - {% trans %}close{% endtrans %} - {% endif %} - -{% endif %} - -{% if question.offensive_flag_count == 0 %}{{ pipe() }} - - - {% trans %}flag offensive{% endtrans %} - - {% if request.user|can_see_offensive_flags(question) %} - {% if question.offensive_flag_count > 0 %}({{ question.offensive_flag_count }}){% endif %} - {% endif %} - - -{% elif question.offensive_flag_count > 0 %}{{ pipe() }} - - - {% trans %}remove flag{% endtrans %} - - {% if request.user|can_see_offensive_flags(question) %} - {% if question.offensive_flag_count > 0 %}({{ question.offensive_flag_count }}){% endif %} - {% endif %} - -{% endif %} - -{% if request.user|can_delete_post(question) %}{{ pipe() }} - {% if question.deleted %}{% trans %}undelete{% endtrans %}{% else %}delete{% endif %} -{% endif %} diff --git a/lms/askbot/skins/common/templates/question/question_tags.html b/lms/askbot/skins/common/templates/question/question_tags.html deleted file mode 100644 index 8cc55a2af9..0000000000 --- a/lms/askbot/skins/common/templates/question/question_tags.html +++ /dev/null @@ -1,7 +0,0 @@ -{{ - macros.tag_list_widget( - tags = thread.get_tag_names(), - css_class = 'post-tags tags', - tag_css_class = 'post-tag' - ) -}} diff --git a/lms/askbot/skins/common/templates/question/question_vote_buttons.html b/lms/askbot/skins/common/templates/question/question_vote_buttons.html deleted file mode 100644 index 8466beb94a..0000000000 --- a/lms/askbot/skins/common/templates/question/question_vote_buttons.html +++ /dev/null @@ -1 +0,0 @@ -{{ macros.post_vote_buttons(post = question, visitor_vote = user_question_vote) }} diff --git a/lms/askbot/skins/common/templates/question/share_buttons.html b/lms/askbot/skins/common/templates/question/share_buttons.html deleted file mode 100644 index 5b4fc7ac63..0000000000 --- a/lms/askbot/skins/common/templates/question/share_buttons.html +++ /dev/null @@ -1,5 +0,0 @@ -{% if settings.ENABLE_SHARING_TWITTER %}{{ macros.share(site = 'twitter', icon = True) }}{% endif %} -{% if settings.ENABLE_SHARING_FACEBOOK %}{{ macros.share(site = 'facebook', icon = True) }}{% endif %} -{% if settings.ENABLE_SHARING_LINKEDIN %}{{ macros.share(site = 'linkedin', icon = True) }}{% endif %} -{% if settings.ENABLE_SHARING_IDENTICA %}{{ macros.share(site = 'identica', icon = True) }}{% endif %} -{% if settings.ENABLE_SHARING_GOOGLE %}{% endif %} diff --git a/lms/askbot/skins/common/templates/two_column_body.html b/lms/askbot/skins/common/templates/two_column_body.html deleted file mode 100644 index d3e04e1e2d..0000000000 --- a/lms/askbot/skins/common/templates/two_column_body.html +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "base.html" %} -{% block body_class %}two-col{% endblock %} -{% block body %} -
          -
          - {% block content%} - {% endblock%} -
          -
          - {% block sidebar%} - {% endblock%} -
          -
          -{% endblock %} diff --git a/lms/askbot/skins/common/templates/widgets/edit_post.html b/lms/askbot/skins/common/templates/widgets/edit_post.html deleted file mode 100644 index 32312916b9..0000000000 --- a/lms/askbot/skins/common/templates/widgets/edit_post.html +++ /dev/null @@ -1,63 +0,0 @@ -{% if edit_title %} -
          - - - {{ post_form.title.errors }}
          - {{ post_form.title }} -
          - {{ post_form.title.help_text }} -
          -
          -{% endif %} - -
          -
          - {{ post_form.text }}{# this element is resizable and will be wrapped by js #} - -
          -{# need label element for resizable input, b/c form validation won't find span #} -{% if post_type == 'question' %} -
          - {% if mandatory_tags %} - - {{ - tag_list_widget( - mandatory_tags, - make_links = False, - css_class = 'clearfix' - ) - }} - {% else %} - - {% endif %} - {{ post_form.tags.errors }}
          - {{ post_form.tags }} -
          - {{ post_form.tags.help_text }} -
          -
          -{% endif %} -{% if 'summary' in post_form['fields'] %} -
          - {{ post_form.summary.label_tag() }}
          - {{ post_form.summary }} -
          - {{ post_form.summary.help_text }} -
          -
          {{ post_form.summary.errors }}
          -
          -{% endif %} -
          - - {% trans %}hide preview{% endtrans %} - -
          -
          diff --git a/lms/askbot/skins/common/templates/widgets/related_tags.html b/lms/askbot/skins/common/templates/widgets/related_tags.html deleted file mode 100644 index ea01da18f4..0000000000 --- a/lms/askbot/skins/common/templates/widgets/related_tags.html +++ /dev/null @@ -1,21 +0,0 @@ -{% cache 0 "tags" tags search_tags scope sort query context.page language_code %} -
          -

          {% trans %}Related tags{% endtrans %}

          - {% if tag_list_type == 'list' %} -
            - {% for tag in tags %} -
          • - {{ macros.tag_widget( - tag.name, - html_tag = 'div', - search_state = search_state - )}} -
          • - {% endfor %} -
          - {% else %} - {{ macros.tag_cloud(tags = tags, font_sizes = font_size) }} - {% endif %} -
          - {% endcache %} - {# extra_content = '× ' ~ tag.local_used_count|intcomma ~ '',#} diff --git a/lms/askbot/skins/common/templates/widgets/search_bar.html b/lms/askbot/skins/common/templates/widgets/search_bar.html deleted file mode 100644 index 03fb895155..0000000000 --- a/lms/askbot/skins/common/templates/widgets/search_bar.html +++ /dev/null @@ -1,48 +0,0 @@ -{% if active_tab != "ask" %} -{% spaceless %} - {# url action depends on which tab is active #} -
          - - {% if active_tab == "tags" %} - - - - {% else %} - {% if active_tab == "users" %} - - {% endif %} - - {% endif %} - {# class was searchInput #} - - - - - - - - - - -
          -{% endspaceless %} -{% endif %} diff --git a/lms/askbot/skins/common/templates/widgets/tag_selector.html b/lms/askbot/skins/common/templates/widgets/tag_selector.html deleted file mode 100644 index 9ac09d7669..0000000000 --- a/lms/askbot/skins/common/templates/widgets/tag_selector.html +++ /dev/null @@ -1,47 +0,0 @@ -{% import "macros.html" as macros %} -
          -

          {% trans %}Interesting tags{% endtrans %}

          - {{ - macros.tag_list_widget( - interesting_tag_names, - deletable = True, - css_class = 'interesting marked-tags', - search_state = search_state - ) - }} - {# todo - add this via js - "remove '%(tag_name)s' from the list of interesting tags"| - format(tag_name = tag_name) - #} -
          -   - -
          -

          {% trans %}Ignored tags{% endtrans %}

          - {{ - macros.tag_list_widget( - ignored_tag_names, - deletable = True, - css_class = 'ignored marked-tags', - search_state = search_state - ) - }} - {# todo: add this via javascript - "remove '%(tag_name)s' from the list of ignored tags"| - format(tag_name = tag_name) - #} -
          -   - -
          -

          {% trans %}Display tag filter{% endtrans%}

          -
          - {{ - macros.radio_select( - name = "display_tag_filter_strategy", - value = request.user.display_tag_filter_strategy, - choices = tag_filter_strategy_choices - ) - }} -
          -
          diff --git a/lms/askbot/skins/loaders.py b/lms/askbot/skins/loaders.py deleted file mode 100644 index 2455951216..0000000000 --- a/lms/askbot/skins/loaders.py +++ /dev/null @@ -1,132 +0,0 @@ -import os.path -from django.template.loaders import filesystem -from django.template import RequestContext -from django.http import HttpResponse -from django.utils import translation -from django.conf import settings as django_settings -from coffin.common import CoffinEnvironment -from jinja2 import loaders as jinja_loaders -from jinja2.exceptions import TemplateNotFound -from jinja2.utils import open_if_exists -from askbot.conf import settings as askbot_settings -from askbot.skins import utils - -from coffin import template -template.add_to_builtins('askbot.templatetags.extra_filters_jinja') - -#module for skinning askbot -#via ASKBOT_DEFAULT_SKIN configureation variable (not django setting) - -#note - Django template loaders use method django.utils._os.safe_join -#to work on unicode file paths -#here it is ignored because it is assumed that we won't use unicode paths -ASKBOT_SKIN_COLLECTION_DIR = os.path.dirname(__file__) - -#changed the name from load_template_source -def filesystem_load_template_source(name, dirs=None): - """Django template loader - """ - - if dirs is None: - dirs = (ASKBOT_SKIN_COLLECTION_DIR, ) - else: - dirs += (ASKBOT_SKIN_COLLECTION_DIR, ) - - try: - #todo: move this to top after splitting out get_skin_dirs() - tname = os.path.join(askbot_settings.ASKBOT_DEFAULT_SKIN,'templates',name) - return filesystem.load_template_source(tname,dirs) - except: - tname = os.path.join('default','templates',name) - return filesystem.load_template_source(tname,dirs) -filesystem_load_template_source.is_usable = True -#added this for backward compatbility -load_template_source = filesystem_load_template_source - -class SkinEnvironment(CoffinEnvironment): - """Jinja template environment - that loads templates from askbot skins - """ - - def __init__(self, *args, **kwargs): - """save the skin path and initialize the - Coffin Environment - """ - self.skin = kwargs.pop('skin') - super(SkinEnvironment, self).__init__(*args, **kwargs) - - def _get_loaders(self): - """this method is not used - over-ridden function _get_loaders that creates - the loader for the skin templates - """ - loaders = list() - skin_dirs = utils.get_available_skins(selected = self.skin).values() - template_dirs = [os.path.join(skin_dir, 'templates') for skin_dir in skin_dirs] - loaders.append(jinja_loaders.FileSystemLoader(template_dirs)) - return loaders - - def set_language(self, language_code): - """hooks up translation objects from django to jinja2 - environment. - note: not so sure about thread safety here - """ - trans = translation.trans_real.translation(language_code) - self.install_gettext_translations(trans) - - def get_extra_css_link(self): - """returns either the link tag (to be inserted in the html head element) - or empty string - depending on the existence of file - SKIN_PATH/media/style/extra.css - """ - url = utils.get_media_url('style/extra.css', ignore_missing = True) - if url is not None: - return '' % url - return '' - -def load_skins(): - skins = dict() - for skin_name in utils.get_available_skins(): - skins[skin_name] = SkinEnvironment( - skin = skin_name, - extensions=['jinja2.ext.i18n',] - ) - skins[skin_name].set_language(django_settings.LANGUAGE_CODE) - #from askbot.templatetags import extra_filters_jinja as filters - #skins[skin_name].filters['media'] = filters.media - return skins - -SKINS = load_skins() - -def get_skin(request = None): - """retreives the skin environment - for a given request (request var is not used at this time)""" - return SKINS[askbot_settings.ASKBOT_DEFAULT_SKIN] - -def get_template(template, request = None): - """retreives template for the skin - request variable will be used in the future to set - template according to the user preference or admins preference - - request variable is used to localize the skin if possible - """ - skin = get_skin(request) - if hasattr(request,'LANGUAGE_CODE'): - skin.set_language(request.LANGUAGE_CODE) - return skin.get_template(template) - -def render_into_skin(template, data, request, mimetype = 'text/html'): - """in the future this function will be able to - switch skin depending on the site administrator/user selection - right now only admins can switch - """ - context = RequestContext(request, data) - template = get_template(template, request) - return HttpResponse(template.render(context), mimetype = mimetype) - -def render_text_into_skin(text, data, request): - context = RequestContext(request, data) - skin = get_skin(request) - template = skin.from_string(text) - return template.render(context) - diff --git a/lms/askbot/skins/mitx/media/images/accept.png b/lms/askbot/skins/mitx/media/images/accept.png deleted file mode 100644 index 16262c7ac7ea70e2d1238199a1ea9a3ee55bf6b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 727 zcmV;|0x127P)5R{7$q@YdYPu7T1rb&{G4Kt&TlQYiTd%qTUoEdZ3 zf%7fS`QG=u=SP%M{EzAX2F`_~#k3f(ZQ2zefTn>Xg+e3d_K)aW{uw)D@2w*F}XNLE^mcL`_zSf1RaC&yrH)K{DVs)L{^9S{9_o? z1`%)xc#I~}nE-Divt)AiqtRZ~T_orXNlU=vo4S8_gg0NhNv7A(G)KPkfKraHZ`3lm zki=57zUooa8bID;u=7|Kv%emb$gH91ATGzzzyvZDTn#D=Pm;PCur2Q5qyae7RCk!g z#A{3&ayD2BY`|2IHKC`?Y1QL{DnB5cE^a{qSu4ek4L5?$$IyGh&>&|)e_LtLx&bcD zX{V?_1X6!uj^u*%oltC<&>t*;?|l$-y*QQl&`2l2>xN1{_NTAZcpuB6z5k z>$;cYyD1ScGfe!PVrcFq?{>la2nr-VpaH02ucd%hrPOwL@Gp>!0{2?9GxY!f002ov JPDHLkV1nDXLM8wJ diff --git a/lms/askbot/skins/mitx/media/images/anon.png b/lms/askbot/skins/mitx/media/images/anon.png deleted file mode 100644 index a2041590216dc4ed8f86195dcdfc66718bb47c39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 687 zcmV;g0#N;lP)XC>R=F^NKk_!2rAkH3rS@uh-eipOd3a}2O7i~W9ICor4Muuv$VD2f=5$1#`7 z;b1V(Vb<$4@;v{01J!C(N8D^S(QdbY!&xjAEEEbltSrmOvMjv;o6Uy%{hknxMkBOZ zt%ij4dR=Ei6h(RisZ>fwCP~uWC3QF)cs`#=PqA1u#2e0mbUIDy)9D1=Zr2D7008^_ z9#mB&&yh&P5N|jKI-L$or&Hj09u9{C9FNDl1^@sUh9ULka=D8)b7$|S+wI2d^-8v& zTrU594m_F+!(gk`BI38(4MU;O>kQOtHQk|YG#ZceJx9D$D(S=(ML~|^USptAsp!O2 zRYjlA_h|ofmt9d5^m@H!IOxSCN%|)4@p#Pg(23jacAU*-M0`9R(}>d>$Y!&;w~xhQ zR6Nw5WQjzA)WhKrWLc)-p*G<6`$;{Y&uMAs4Y*t`Qm>9R#xxjYc652mk=U zbUKB}Wb#@A&x(KVzu-@Ne0-3DsA(ExG8t+URQGqWSdba8TrR1n>D#y9?FRnef=}bN VTfTAXK@I=_002ovPDHLkV1g0tCr|(Y diff --git a/lms/askbot/skins/mitx/media/images/answers-background.png b/lms/askbot/skins/mitx/media/images/answers-background.png deleted file mode 100644 index 0e9b478872ed2a8087d491a96700d79a8536e8b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^Ahrny8<5=Wv@!umu@pObhHwBu4M$1`kk47*5m^jW ze;tGwoit`w00kvWTq8KCy z2i6=EbniT1`Cj;&^|sbyH?&Qwj!ry%(e(4mmoscz4gUrI$m!V|v{*mhc>b)u)Vfyo Y>UP8Gy8+idfOax?y85}Sb4q9e0Lf-iMgRZ+ diff --git a/lms/askbot/skins/mitx/media/images/background-user-info.png b/lms/askbot/skins/mitx/media/images/background-user-info.png deleted file mode 100644 index b681cb37f4b12265ba03513f959830d6b832f574..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmeAS@N?(olHy`uVBq!ia0vp^T0m^U!3HF|?`E9_QY^(zo*^7SP{WbZ0pxQQctjQh z)n5l;MkkHg6+l7B64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1T^dAc}; zWHi2=ahmI}0T0XT3IG46etnYANBo0xh^s`bvvU3_zQ$?c49y-{WTWxE#WpA}814&`X%1^Sr5)78&qol`;+0AKo$ Ap8x;= diff --git a/lms/askbot/skins/mitx/media/images/bigbutton.png b/lms/askbot/skins/mitx/media/images/bigbutton.png deleted file mode 100644 index 2a7c0f05858e26e279fe52242d4d2acf7b8926c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^Y(N~s0U{T6xorVbEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4&$zvn9~6EtZ`^i_Kc&@Uqr$fxhx0DITbMW_t+i0)Y0gW5 z111hvt|`7MYYnLJpblKlqWG(SPyyip4(M3kDZRAec-nq>lf8G9ZE1RYT_qu4I z8CFZ)M+vtSM*8|Ev;Tc?xZywBZMoICUz@caF#RjdJJeUgGZp9_22WQ%mvv4FO#q;5 BUts_M diff --git a/lms/askbot/skins/mitx/media/images/bigbuttonhover.png b/lms/askbot/skins/mitx/media/images/bigbuttonhover.png deleted file mode 100644 index cf4bacca69ffc4736c0c1ec25795647bf7bec72e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^Y(T8d0V1RS{agT~Sc;uILpXq-h9ji|$mcBZh%5%G zzYfBTP8zc-fP#`Gt`Q}{`DrEPiAAXl<>lpinR(g8$%zH2dih1^v)|cB0TpF>x;Tbd z^sb$7k+;D>!0F$d~L-N zvOJSrlNlb$zAV1{^xDV5&|PgTe~DWM4f!;x4L diff --git a/lms/askbot/skins/mitx/media/images/blue-up-arrow-h18px.png b/lms/askbot/skins/mitx/media/images/blue-up-arrow-h18px.png deleted file mode 100755 index e1f29e86334ce72d2d28989a133571d7bf53a94e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 zcmV-X0{6iqad+$V|KR(Q{q;Ok;ua!jjQtuI1z7)O( zySE1i5k-TnUMhU^!Fth&L`=(4hnCB&mew0>atrF^~@9muPo$nmJ5BNLwb>CS+ z;4aaxR`*WD1Hfmk^?b25_^vW#;gMP0a=;-lw8uKYF+TucXlk2wNsBS@}pFD ztaavBN$@-;DyO5Dqi0!d9a~=U7;O0Ayiuq>#Jyi<@Hb@35~1ra$v5dmgDzqB>^+=uOM7b5+>fY}+kwy1R`cV__*wFuQ!Bi@#VE~BJd f7UnWh{5Sjn&bP0xmAf5500000NkvXXu0mjfU!M$- diff --git a/lms/askbot/skins/mitx/media/images/box-arrow.gif b/lms/askbot/skins/mitx/media/images/box-arrow.gif deleted file mode 100755 index 89dcf5b3dd40fac0e6afb0b1a7ff899a059f923f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69 zcmZ?wbhEHbWM@!dXkcJ?_wL=lfBzJJvM@6+Ff!;c00Bsbfk~#Pf92`7{EJz*0#eqW WoE7iinDij`X5pe+YFj-S8LR>Nkr%B1 diff --git a/lms/askbot/skins/mitx/media/images/bullet_green.gif b/lms/askbot/skins/mitx/media/images/bullet_green.gif deleted file mode 100755 index fa530910f9dc11fadaa2314f72bd98f29df39daf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64 zcmZ?wbhEHbKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=00004XF*Lt006O$eEU(80000WV@Og>004R=004l4008;_004mL004C` z008P>0026e000+nl3&F}000VaNklJyRN8J52lge3Dk<@*>AXrMmGP=H z$s9P2&*V2vPMX-1L}oIXPMP_nlH^n>#fZ%$`c@)Y4M0h*N)5H*Dy5UhPr>W;VqjnZ zld(w!&=SoOtX;bn<{y|*_V7bUrc~hhgft*Y9vryzSY}M06iG7y={dwn-rQt#5xb>+`RC^f6v^z4(Q|d8B-!MDTk(XP{Q8r-@ZB!XmXA&5bSa9P_XS zTCEm>AV9CzqqMXX0MOIZgGeL-kH>?Fi3wI$un4HD--X4uEk+`dKs=E^A`wR-kx-fp zO5tksDt`IIQ;5Z45Cj2ErxSX;UeVb|B!b%7T6jDjXfztMI$CGF)V0_(RPU_$!r;hu zn9lZ|rQW`C)aUP`!JwZmydNaNB2aqrl2)swmX;QZMx!*Bbai!+R;y+0iVQ_`zOR=C zgM;K7?4#bkbL8zkOJ~GxdiQVd(CO||bmE=kWH1;A09mb81)hvE^BFSsTgU&bNJWOC ztT-;GleTW!d{a21qod^O>my%ZAB~QV=7j@*cmPnPZLnIUf?B22T%*y5Kp=qT=4NQM z+BwaG)oMjJ9A;B#Bs79{#}S1s=b1+$c_V(GAE8hPf*_!N_wIR3kkx91AP5)f1LhU0p{MZ^CXrv4!x zo%i*U_q?RV@4WXHG89YN8xDu_#t(4No=U&Jo}T#mV+4R& zT3YDP!9xUqj=uF)UN~}pe0_Zq-ks~{XWMO5zpIW`EYs79WqNWsojGx`Xt1Qkj%OUq z-gb3$&8xN9M61=p>-Dm>jzf;LFP+w4F6~qEJVKX3FqurVY@E$zV_I&r*%W1Zy&fi$ zNwKnrLK03{Ss5PLxDjJxV>r{@jTOuE`0wO3Y}U!qMyXh{a+E1ug;r z%7vfc5AII1wI9abrbYmOyR$1Njx4Ng@pzP#D|w7a2#pJ(xpq`?(9P7 z(xtp`WNCd?Qn=s$@fCLONB7?k0Eoq6`1s0|oH&eNS)06GFC(YAx|&rIMG+Q@1!l7u zX0sV~yFF)FM@NUkUdmeRJ?qWTUJe{TP4H(Sciwdu+S(6ebaWK;yXsK#z1#8j(W5AP za099~Z(%lcF41T-aJgK#O|t|qzx;C6I-h)UeNGH%qrq|DISvB@1Com+2#gp}6k#@- z6^%qugeZ!ruC9i~VwqKT;lc%Ub#*Z;x7&?@fdOd;m?l;tmt%fqw#7`=T&vYOt2|qq znfGF`7|wKeqpkfgte0#kdvF5)px@_1zt4xl!a{J1)N|r2Qmav4SBKjcFJ|}peLj|7 zreBt`KN%V&|pt!ggq9`H~i6}ZI575lK?1PG;2!p|(*jdfQ`Nd<8qjleYth#+Asy1)I zhnFL$sH{X=`(adV+m;v3*w`3anwqh7(`K~p+mF_L`_a_U007v%XHU-lCm%bWIiI-6)J@3jZHeAiPP48 z7`7cdaOL0s!au`dxSUSxZE8eCWhLwf_M>FY>UnW&J9fafV}~@*ot^0F?8Nm?u46;l zL)cQaHD`YmCgSsyb?eu`P;7w5^H-xjdsS!VZ-~n8|ENOLdaWM?V#dG2)HJFr9tW0|%YqQ(!#>B(~ zg25n`FJBJ3-OkG7ZE|K==5(HpkFp;{CmLHCq0wmIcDrG*SXi6PC|e{FfyH7$M@I)V z8Vz<<@0|5AdwyG=6=&D(I=ueo8#jfsdd+H7R92#*vJ!^k;=FKJu*W|x zk_klrGl7HlgUpvS8jUa-jnHbf5Jiy<`g}o}Yq4u+JLq6Rn$Hu51$+93`cY6&0DF@i zo?{+pwOT}@QH5vVa=BPA$7C|0xw)AQfXn4#bu-HVVEOXph(sc|?}zu{h_fBnr=}2} zL9iS*P9;<$H0nVR0kLsr+|JUhsq9(&;-H5o|Zng_MaPR;g z-0%RV;!~K4$B~G~5l_q@I7^9PX4ba;*Y)WDdvcoO zj3Xnq$kMHKWW*MC0MyXjK>pzY3SJD*qd$FA5m5^S0t2x}BJ@2C6#Q+Tk{q)lBUdp@e%wwXN`OJIs z;mp@QAFOP37K$-TgJr3Cx*Ap6s@PGF=0 zojBKXZow~eGp1oalQ0+lLI*8hj5!IG<=)bJv7u}O?pS>XzM;{iKb@L3Fhqo_u^5I1 zhj9Aj=>-$}S!wXi+Ti)tginp&ujD2+8btKKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=00004XF*Lt006O$eEU(80000WV@Og>004R=004l4008;_004mL004C` z008P>0026e000+nl3&F}000Q~Nkl0x(=yA<`H9zo;y7lu1KkAHW+`R1R0{t-h6aWM?@6`shN z3n7GI01yDUaq~J@mIceQ;5ZH}%YkEAu$*~iSuhL>mSMm!48Sm!77!2+oj@l#blpgr zrWsdVgQn@wb&b~PM5pZuA=b;#{No@8_a6cPFaU@JF2`|3V!2YDg=rjJgHnE-PRF^hwHZ!8V@V;R|O)=}>9cpx2+ zuyx0lRe`Zy`WXP^lUx4)&+`;ip689k@fcP{(08s6Q&UsRQs{QO(f+%3w6yGks%g+P z6{>0`O@*pzl;M?_T+ZSL|M?OZ;}g{rD3swz~q2vt>`Cc^?)H*L8M=&uW3BXlB+LZJXjk`Rl< z(9qD}_=tQykG8fp$g&KV%Z1*)-erTZ-ufxPxBhhtH5RZnJZktF2e^VDARG=O6beBQ zgas8Q5(%`mwNap(JWY6i;BWX|Z7o!_h+?rwnOqU%GJD+lW)~*169@zX7#tidO*_-H z*qNS4BoGV+(d22unR7kM0-%!q$;nAfO->rKvA!Pl_4O;(e{laHumHfBHkju)@SKym zq9`JrP9qYDEDA0F1Ofr%aydH1CbAPa-*>@b%USA?Fr{Sv*#W#amc~SO0+J-5{nV)? zKPC_eK$0X(WG8TMEWIq7Tdx1_moLNn{0lgG_y~?3J_7IaFW}RgH&>+J5*7eh%Pr$L z3@alJaFfa8ylJzT2!eoQGD$&}hhz*7kAUO&${@3r+Xn~8^2f$I#9}dcnw!i0%ZdwP zEEaS0T};aLkKVqG?yd;xpLrHuuMY=WTLA#S{?%*vQ-6Qe`W*lp3^rKYcdm~DH8?o9 zBx@G~+3MT(hd$GnHo;{~pPDs23vuBP{P=5Eu2XLz91c?!u0#Yu zpd&stHHB+euhR{S0rJ8o!jekQPb3l*^NaOaNbGHU-!+K!*AG9SWj}uDB>+I7P{5ZD z9#pNL0&KAOFfRLXF%B#8o}C<=T&pQDqaC{Ppy zp->2Zzkgoc`1m+ol_g0+B9TBUl`?jKHei7gxFxT=q$`ujR9ws~<^}?RdG(e0EF|`} zH9U{@lP9sUww9KS-o8!q&ow+(wSF6ejSsbUXqz{0rVZNK+Nk}><#KeOgbPr26#DQwYBEB#s4%bosxJ6tXo z5{U%-em~V^_k;8KJp6t?`uqFga=CCKbYj^bUrGP=9ouoBwG{_iTj6PLUX^~zVC#kJ zTy>Z&%wl|eoHmF=BJ|;#Hf?eMXVqmgnR#`VSi0(5bs)sH9R`6lrsmzemwU?f6yg{A z@y^?QkYyRNEJGAUh@uEV5TGauCBsUBG3%|LuG^z`N3mhU21L7}kcVUlf`IAiX@_SJ zkH=|@!Rz%R5{Xdu#^Z6?)?Nnyjg5`S=ks{+M=#<+>^vUL&7oMFLs2cFSX7}|aS2_6 zuIV%gU%pfOHij!{u;=!jf1{>m13nx1458nI=(aE%4zKE^tpEuCoPGN&e!6Ej=8AKe zD;A*^izupP09Oe3eA@%=EC70>N6hVZllY(GBy&Ga?qtTudw+Rv)hr-{ zESk5Mtyce1&s;TwEeXF7!qHzGrKb=|au`>yTwV0oexI}tUT+IMYrAsgD$YjFu6~iI zz^=7oZuv7Ro%gMV#mr*+)~(yNpfl2i`X9J$rxEsWBOHFK^^Yf0laqM&d<-MQBWtq? z+dy1v)3DI97JKHJ0c^>xmR;DhcMrC0--hqIT+SG-=~{hNDB$j$ySQ=f#+m{9O)+>W x8^7)VKarISLkQW(FwB3SK(P)R3__Uy4FK>(yR3Yb!O;K!002ovPDHLkV1lxPh(-Va diff --git a/lms/askbot/skins/mitx/media/images/close-small-dark.png b/lms/askbot/skins/mitx/media/images/close-small-dark.png deleted file mode 100644 index 72ada35bb953efe95848729035f1f8f4db50ac2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 879 zcmV-#1CacQP)rh#E(a&&TLLeufKXfly`&Wyf4 z9PZ`3dw%c0J?9>I)!M4~t3uYzz9cXP^q(Iee*vKJUy?N~YkJm zzYYZY0c1mlJC=gWTK;22NaUKWKvAmA-VDKG2|RT3CLM!=_%2;q_tl&`N5|kGE#2Lg zL`z_BV1Sa!N{-yRMMYB+W&8Kja{D&Uefya1>$3!IdCPlFoZwVnAE{6XP1kYN*7D){ zb>br<#b*c*9~oih!2`iRkEeLx(auiF4;~~uG{o$?cSMGV z`8F_sr=fxN-d;q@9h&o&#W2|2+6p2hCMU@(E&cWDI=ce_5aH+7udJq0g#mY zZ%0R;0mz%tQTxh9ME0=5QuQBp@9~^A5DbM z!5~Y&e-{q~SV$%bMWeW#PF$wRbR@z;GPzYq{=!aY-$H=YhW)mHF4N?2eLX9g3~Os^ zH2ZwGOmllcP19)c`_Xlssqf$U5)R|gbpnlz7`k3Ou&J&NPiZNUxjABq1hez=gkv#W zPAAPiA0m=7E@vHz2+??)==?m3>GZmPIuhYWA^{@kn#O7-Qy5Sw#X^n&WaZzWwB4;Y zX77*^d15E<<>}+c9~!{&zaJE^ZuX@F#uPk0)7JI~;19ef{aO^HznlO7002ovPDHLk FV1fmxlotR1 diff --git a/lms/askbot/skins/mitx/media/images/close-small-hover.png b/lms/askbot/skins/mitx/media/images/close-small-hover.png deleted file mode 100755 index 7899aec7213b837143a2e975faa90a2abd456521..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^d?3ui3?$#C89V|~+9j?LCC){ui6xo&c?uz!xv2~x z8Knv)3c;xb3PuJ7779kjR>r1QCT0q{1{MYeDE)e-c@Ne1ia=5ZCX&{{Hy&_tW!N_ZKfc zpObUM#pTWAs~3xk4w#ty`t$F>lBGXhy}DLgdpr1Q#zqRd1{MYe;g^zIfZEtgJbhi+Z*Z~+S_nO6;N1-r z;wE)e-c@Ne1ia=5Z4(qXDwR1Wb5`Fd-okU zaq{%lYd1c8`uyw9U!Xizkhgxu4WI-^NswRge+Xc>*St3pD5mS_;uunKD_NtRfsJRE z&YnFcvL4forc1XpAK{H{IrvG{>z#&4h|Ds+W&FE$GCZx(SSr0JY6i#_Pgg&ebxsLQ E08gA+X#fBK diff --git a/lms/askbot/skins/mitx/media/images/close.png b/lms/askbot/skins/mitx/media/images/close.png deleted file mode 100644 index cfe209ff30d5c25d3f8337dcdb74ad6558351463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 469 zcmV;`0V@89P))A<)W>_W;Eah^p+6IKnu+s)iL%)57nL<9hkBuQ69s@B?e zzu&j`rNLmp%seKdO&rJ10Kg9FiO2{*i^kTm zBGSI^HvzyHGZPV2@E=MdQbj=`qS7?IcFXz+zgn`^wwd_~KveLL0H>+7w(TvKOEJd0 z<#~PspmOH$Awn32QK!?f3;;^0t;;n3gPZ%l-&9I%0oUp!V&J=SW6TWaa{)lz7&F^H zl}ALJ=lKM{{XZ_MWLZ{TtyZrkW*+0XQQ#+Uaf*nUKbeR&MS_TQ5Cn}N2pUABPxu>e zu~@vX*Xs`ecW!?ghG7&%(O0cjvuT>XWLZ`QaOmi?(iurU%00000 LNkvXXu0mjf&BMNO diff --git a/lms/askbot/skins/mitx/media/images/comment-background.png b/lms/askbot/skins/mitx/media/images/comment-background.png deleted file mode 100644 index 4299b8479168719d433b874215ad2db045d57d8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3HGrSK5O(EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4zopr002E$a{vGU diff --git a/lms/askbot/skins/mitx/media/images/comment.png b/lms/askbot/skins/mitx/media/images/comment.png deleted file mode 100644 index 9dcc4c6693050a7cde009440c69e12ff86bcbadd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606 zcmV-k0-^nhP)9qjX%bMx6iJp%p+U5fsAv^P zC+RFCMM#qbi&)re6GEC`|TtM4XM1Xg2E1wODrC%+5%1s`u`@ z@4M%|ANur)Yrr z0ITM3(-o)OvXzd7oHOG-VlTzotO5^9lnEuK`^W5Qn!Rstbv6pA0%yA8PETgU-EK(J z(@fLTOlMviwT2UM8;Je~s=F0iOE_FYEOm!U<5m?s>yG6Tn_k9FeBCl*LU0-&sOzD` zhFi8L02nV2SF;>75XSO$iGA;B`nRJ`o4pWT{qDK^()Aryl$Hf3yvVo)s>;#6be zKr@M3`z7OIf5l$M7Clt~+=@+hVu7bIIc#7QvOoZSl;iTii0zP~MniqYU7nk`kZjFQ zBgFDQbl0Lu{2J^%m!07*qoM6N<$f;>bA;s5{u diff --git a/lms/askbot/skins/mitx/media/images/contributorsback.png b/lms/askbot/skins/mitx/media/images/contributorsback.png deleted file mode 100644 index dd72838396a66be23b99c4f3dac2e22a07e5f124..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 714 zcmV;*0yX`KP)!S<-E*`}w|bpTgd0gjDDs@DtguF7w88g%!Z0L=B09Y;K@jZ4saru6dCp>< zVU79Hqm-i6Y11DL@csXA`EJFRg~QS91}(n0N%BMX0OwefOh4a zuZ{ZY&JVMm$ut$AqP%(BZqbmtt!x}dI0Os(<500io)+Vgh%eFmf9m${7ASm(Ca9_sujWopgj z`5Cv9$Xa{Q>-!%4;oxY#Fp3C2jRi%Xg9rj3Ab>)Uw*lD#JSdsa%YuAw>O?u&d)Z_qy<>haI-lg*85czODZG5RFG(T1w5NYdmisI$vV z^H$N#kv{3e0!r~?{6LbXdvkSJ?Nx&~i7%^tB7&}J%Cbc3nkb4%(gbHMv)Adt7~l7a zk{HkPkfuS`dJiZJL&m=zFY6MNQp9OOeBiYhqggHX+ZX2?WnLW3dG~OSQWq5D@6;cT zKoqOx^5hub54aycY&*}ZLn);g+>MBmm~1-7xx*dAyV7=>;oXSMF2HS|-qmWiNn0(- wqM*ogthQKd@H~$o42j~9POnE0d~RIeAJ(%PeH15L(*OVf07*qoM6N<$g6QE>TL1t6 diff --git a/lms/askbot/skins/mitx/media/images/dash.gif b/lms/askbot/skins/mitx/media/images/dash.gif deleted file mode 100755 index d1ddc507fe00bd654fce38ac8552793aa18c9966..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44 wcmZ?wbhEHbWMN=rXkcLY|NsBAY10&cvM{hS{AbW%00NK<0~50k11p0y023w&(*OVf diff --git a/lms/askbot/skins/mitx/media/images/delete.png b/lms/askbot/skins/mitx/media/images/delete.png deleted file mode 100644 index 9263eae325b809869e5a56f78e13d71c39f41bd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 434 zcmV;j0ZsmiP)TapIApjNAO0AywWG@H$J;K0oGfn8t$xCtQ~`$C~G*KW7V z-unXZ2|SqDwWKky4HT2nXmsbCtA-HBA?dd^vr}hg%fK^#_=S*>io*B)Yw7}3U>@*hwh=cS=Av`Gb*7ZBCIA2c07*qoM6N<$f<=d{t^fc4 diff --git a/lms/askbot/skins/mitx/media/images/dialog-warning-off.png b/lms/askbot/skins/mitx/media/images/dialog-warning-off.png deleted file mode 100644 index 258e4d86c0d6da8f214fc49eb311fb88814d454e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 419 zcmV;U0bKrxP)Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igk;0s{aA zV|5a8|Zt%ng-9WwT z{<07*xL_f4me>5I8w|POhC{l6HvjvpVmPNqk8>77XZ1TbBEOxeG^C0&(x{>#iHf%W z05Z1B9t_y9VW0=gl<@_i9W!4?4T2O>5Y$kInb%GPsL04N`-nqe!-gP^J}gs4DnIvo z*;AKW`rL8NHFxy6WtZ8L_5f(iJ(f7(fqVLFvrV6S9yno%?ond~29hkJ1%W`2K_=>2 zC_|DMh_k(act!_|f(Q`2;RT1CJcf57H@-u>GiK?z_9dUVmXGlC`VB}Lc;@7(Wzqlu N002ovPDHLkV1fy(s`3B; diff --git a/lms/askbot/skins/mitx/media/images/dialog-warning.png b/lms/askbot/skins/mitx/media/images/dialog-warning.png deleted file mode 100644 index a9e4ff3991cb0ad2a99cc25e2d13c35e52c680c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 603 zcmV-h0;K(kP)J2V5SdEtMnl9PhCxc2Fa&}~V}o=Tx)35=bmuS|@d;cT zbY;Loz(q+`1+A}82tI&NTm%Y*7F^UoNilyn))L6H_Q1W1%i%j`bA(=?F!-5EVN!MFB_9*XAp~_l%n771CUH65fQk#;c9J-59jBDOQ<*CorDm33|CLV znm<0~VYP}<3Z)daS`C19yN!q-BK$Z#V4_~XOaDE<2tY)*Zne1F+TuNYlS3Fj19`yz=_l|J pl>P}02k>Sh;xD3f4Z|KZe*u@?eFz-1;S&G=002ovPDHLkV1mMw_G175 diff --git a/lms/askbot/skins/mitx/media/images/djangomade124x25_grey.gif b/lms/askbot/skins/mitx/media/images/djangomade124x25_grey.gif deleted file mode 100755 index d34bb311615b1378a672a828c7a7916490cd882b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2035 zcmcJOSyz(>0zk8Y5oHk(5d(s_FbFhAqNt4L16&YNCyID%iyA#v9i~-V)T#$7C{?Rq zJuXmNkX;Zk3t36XzAs-E$W8(YK|~TDELE}gFw-9~_w_#9r@MFGo{ViLN+D5@_t6k? zub_>}Y9`ZKyBS?Q+zuw^CB28p=9m6l=^h>P&(87W>M^fRs?m>(j#(W;9ErkUvGq!o zR>z=aV9@3qVhSZRzIguQM;cEA4PH>{`)!UPyVLdOr%&oW6O}KX^iRvR21>7B_K!bg zpuy#NEl_HdeI}XK;2M6dGg;OB7NH7sx`ycjiOOJXqcVp_-!Mh8P9}%M;d7*l9dn^o^Yc8JiXo6#2L{zfi^DzK#p>;|ITX6Se!BxS zS=nOw+`D&V4qvF$^jqyzo~TDG>y;|lVi{d1<;qn?yF=A))|stRQ2&y_<|)*2U7tjw zV~V8YUSW?!VYCi#Byx?(%9SZ)x_-xyo5JBc-5#D?H9GEn-bvP4>_a1?Mw^2xQ-LN+ zBe7ec(5U;2FS?oT(KkAyXb zH`<+SiGsov4vvg6M6xClb-?9rrO;i&BX+lk$mV$`rZ`gN>v8YfiAm6G<101ow4OKP zUbVqQ?BTjSuXPq%Yd5pISJ261cQQEjo#Yk@y{?1ASAq*s-`cubDGW-lki_O|%{D4etT9^j7JEC5N#je{GL^~hpbMnVVNY!b z@p%VHZ?SpC-cHTTm>h#mB$`;Qbq9D5VJ`EU_H44c4@Fu%*g{g$2m} zjre&46atBcB>!Fb`w0kg0fIg2-$QN?-a;-U9a~C|Sx_l#$$ zbyds`pGKe0LOZIh;hTXQH~7?2Jo0 zAKTtHp2*){xDdLxDX)5Bq$d9S)rRYTt~R1BZu8%arq9oL7S0X{cVZ83Md|CWuc5Ww zgHJrm4n{311;Egli>`(nMilUQIqb4)5Q?cl#}=HzL03S&F5J5ZvF3I&1iAmphxib7 z=~(%y)r?(&s;zbaOiB%VcyqB)a3LW*6`!N2T5$*vtPDAu4Lr&i{1t{hUIbJv$v&)4 zc!CfB!4I<5zFha<24-Hg2z@rDMTRf&8K%(xp|Jl;8yyb7(z29dO~7 z0?>d2d_u(#9&?g)BczhRg5UXUk{R}HU+hrKk846$t{)2uvfo5}`X_+FT_r3*q@K(Q zIFy3^Nem&SdwmdC?f@$3a69--AQ=DME>cj0|A&0oy86<nZyuyLVuwr{IGXQux+DRXY@2U6(<)cxduLt8LR@#Wa`O=WAre>^=26DJK^^h~Zenh_Qpc_eE|a>K3SC}>hGS%%baA>Rzm6~eB6s0c`oTN0US zfK?FULsI-Xr|IOSn-WhZ6RhFiUYWj6SlS#V&y{WdZMyPn->wo=`JS}ytYDdcZ9-8+ z#g^jc^%g~Q?0bcL=f~+^%9ggo{bjwMjFH13QK!~qEei?la)%F0L$*X*t*SoddGxEM zWy4mba{slN#|^%bl*nZdHaOy*)Xwd`S5&UbXN;^SSGFdf*{A-}K2y!otWP}=A9U0{ sv!XO(598i6?6_>^sSNjGbB$7Sdi(Nfq+XETwht`+l3E>&L_&7_7sn(m+5i9m diff --git a/lms/askbot/skins/mitx/media/images/dot-g.gif b/lms/askbot/skins/mitx/media/images/dot-g.gif deleted file mode 100755 index 5d6bb28e56377b0eeb80899222aa3290ec2a3a95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61 zcmZ?wbhEHb1;oomohA-cw8MruKF$f7>W?=Zo!hivofRLHNli}wd9fr@0yBS{oImf`r!T=CJ zObo<=KYvmfSa>QJq}1IQ{xNkh{QGMS5(Wq$!Uiw`?fv_wh=H9yhCxi_BLl18R|YAy zzYGlQ%?$tlTLT0TVFP~usbb(1@&ju6$nf>=e}=c;7#aR?|7H-C1iI?46+i&7;IWyL z;n$xU20l?+1~CPo=06M!Uw{_>X8zCc{xt`~yO&=Xm{>Lg1Q0F*xPh8m83e@j8ARki zGJO8U!0_!K1H&(%gWtd9WO)AQ6T^RoY6eEe8vp@>#en~UKxelz2uZ60@n?olzZn_6 z{|9LXI{!5n!^+`mIW?f>FASf4GBSJvI{OzR z1H&<(HAFtjse0v3qvG*Lj!k<6yW@2D$#+OV00*L7y zBZtO!W_$i{sO4^#Rs-O?>`EBV-VT&i$$;vm@)9CGk^eM*?-}6i0Jdne+|V2 zxHvw3_{Z?+(@RDM_T7w3%nJ!=1_6KoVp+N8l7OGV`-jpW1oz1C@m=Tm^ZxZW7V#J0 oz$F3z1Q6r@|Nj{%0RRC80Nya-9-e3d82|tP07*qoM6N<$g1t^w0{{R3 diff --git a/lms/askbot/skins/mitx/media/images/edit2.png b/lms/askbot/skins/mitx/media/images/edit2.png deleted file mode 100644 index f142a68c2d1fe2aaa0afe50d8c931b9582767cc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 498 zcmV z{R1*|kmSAO-P}O7;NZ|dp@R(>LMNw+&`DjSrAw)UCJRUIVJsj`(~gL|GP79`=>Q*r=VrF&oZH9)#LNI_Hk(u3Zub~ih|X`#>|L6s zUq*H?TojAN8xbi0=h68i5ovkv-{t}U<#PFF2w@qxh!HbudGFV90f0)S@_m3@M&-w5 z)^^UV<^lucG=#7M{D~0}X*=gu;=2!z_`lR@wU@v?_n&N-8&zE^l}ZOAI~XQOk`rJR zxQfcZMP$0sXw2jS1LSCcTm!#Ub-Um1f9mym?{i1^XPnm}GGk_+fhWLO2w{F~V3>Nn oz7#^pfMqk=niz1{UH||9 diff --git a/lms/askbot/skins/mitx/media/images/email-sharing.png b/lms/askbot/skins/mitx/media/images/email-sharing.png deleted file mode 100644 index 57fcee00e9fe761674706aa60e8c699c9ca87fee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1095 zcmV-N1i1T&P)IuL^073!2WZC{}CDW9pzQn1A?3v?jUD zIV-O1kNRh268J|`RLE-9qCYgSOoyYXSk$P-sU>lro?qC(n-8CHpYQi>e?)u1gTdUs z->2WZ?YrF^rPP1QbntX=uHde&E~mD()~f|ri!IoN_t1+jyn<>hh9h-$cIF>kU0v;1 zZVsNs0Dgzc;WEBJGb-SoEB|2kf1YDA(1c+qpMJp(&NXkUgYUy&j;lC=lM{yVCzMH9 zS=o=#X!J2SCUtdnc?EC4IF#lB_TmXFLJ6`f#?4rTHk^jiWRP?Wi$o&6gI}8DVcmxL zuw4nBnIwFtqph;C(pT_PP?}G$5PnyRJy4qM`3B#EG?dVeLah-QC}F+d-~fgU4_l%4 z0+etGH~I-~gc1&5sQfUEAkeUPv2lE^nDFA;T*vso8X(Y8^m77g|Hg#9>*n*v2VcL z-MABSFGFP!yuv0}e`wZ0E`U+=!QCx5W)b=uVsN(+<5&f`Fs_N!M!%Y^28$u8iK#quH2Jw_cZ>{V&BG0+>Xz*e|r%6 zj)>qxHo?8(fG5Gs!J2#FZaKcgRXm66hM+8h_le*^o8Ufiz!R3ijd1roZbb=}i96Z# zxC^5e!5@j><2J$F;()^lg}5SuU$Y5b14Vh5HSspP!`d&V(Qr7NJGiH($BD<| zPE}Ra4#N-CQ?9gZ*h)vB9RDtelf7SyE}WZ zjP_8yh(c|x;f0pX4Gj&B-(Yu1C`~&;$Y%-d%DVdC_zu>8Nz{Ccb?~|s7=Y63M#;PAnEH z+}}9*`}-YkjW$BKA6t;Z0KUW^4&!~iij^pppPNi3r~isH9sIuw{uin!?BI$*JzD?( N002ovPDHLkV1fgl9bf-1 zz`((v1Cj)p!N8&|aME-2UW?afcmGe&$YV~Jr(qS6`f6R+>scREmz$PdzB_la&4mZ% LT2lR!I2fz}g2F4- diff --git a/lms/askbot/skins/mitx/media/images/expander-arrow-show.gif b/lms/askbot/skins/mitx/media/images/expander-arrow-show.gif deleted file mode 100755 index 6825c56ee42f0184d66c0fe954d7fc4b6f05e850..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135 zcmZ?wbhEHb6k!l$Xl7tYOG|5RZr;3k^RZ*c9zTA(V8Mcdf`WVZ?*0G&p8*?C{K>-1 zz`((v1Cj)p!N6i7aME-2(x+KmpRPH4k6ma{w6t6)bw%IW-N%f4X5Wr&{_cHgU%a-) Votr)GNqpOrH0{qn(_mt-1^|9hF$Dks diff --git a/lms/askbot/skins/mitx/media/images/facebook-sharing.png b/lms/askbot/skins/mitx/media/images/facebook-sharing.png deleted file mode 100644 index a82612c342f5d5266e6cc6c4c432f3d03508dd82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1085 zcmV-D1j74?P){bHf%x)ag@W6(&=>Y;D&|<$8b^H zi(NPk zpHRYYNMQj?Hw$;;FqEd-(NlpEIBF7H#Dh1)lhJBj7s1#S}Ve$A?*nkO}OI}&&v;~2wtn%{8RozsHmv$5AN;lb())-o$Bi9HkTLG z|J2sW&sADlx|;^4y}jKhSm^KXk8<$$TJ+O7k`1u-*080j1fANYG%pr=eVY zfh3k;7W9QshI_C>++xyzJT@MW2MU&pVZ+7!`85wbOqobqt!ChT6O}#78iK7;gzhWy^`rNDb!GnW?4!;^r z6rdVOY{5qu!spnF0X&OUD3r&hQmL8$BFzN1H+=zw@2aRw&!9=SHHla;rcwSz3*o+&L{Sv!64 c)OnoqV!K+;J)5NUt?gsS{@LgDvocr%0B>L%O8@`> diff --git a/lms/askbot/skins/mitx/media/images/favicon.ico b/lms/askbot/skins/mitx/media/images/favicon.ico deleted file mode 100644 index 67203a5c9540190523f485de03bd9f39ff845dc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14846 zcmeI1u}&L75Qc|@M9?HqL_$hqxuQrBX_eFzyaI0!t#|{vh|*QcNc#rJuV4zwNZc#9 zPvu9*<(oU!cRp@m7as=1p82@l|7K_AX4mV(h-}HOj7EE$x8?5}k>4V6aB$P#68ZU7 zWN)wTAJVt)1be}LM=o|me!W-wy8nmv_m65{_fN6?_sQFjIxe*5-GaJ^=x)oYjx{c_N$~? z`Q<*77FUnXd{>L$34iH2=dB}OVPot3W{Fd~xo zV1R+-gANWX7{D2k(Rn$rV1NMRg8~jL7$7M5po0So21tZU=-|MD0XpP^4h}3Bz<_+v z!GQ$>3?d(N(3b@RI3gdi0|yoi;GBHW!GQ$>1SB7HaA3gzNiYN*99S?wgM84zfdvCx zBp>uD6Lek%7(hN$3LIE4fD`gT2L~1m;Fx^S!GQ$>1S21GaA3gz3E&DH99S^GFY-aJ zs)Ej0UtAy`!hkMIU4pvYFeV>#(B+{^L8l!DI+Z$YIz>7iT6#L@+@6+D%cZ5!GUzSq z?dh#(+M1%KqoFm7y42xnsS^8dZ~Yu=zL&_KWBGF|e~#t9wp{&M|u{j~zI>t$%Wy#Dg~%j@sy-+%snxXE+R zR{|TA^m~ft|C*y<>`m3AZ*Pr_9Wyq@CKNAbY>Z9zzxw;z6G0e;pV^%lqKR4wqF7ss6h-_=6`>~)a?y)7 zLD1qs4ceYfV0F_Th!3>2TLJ3_%)kFPNr6Oppgg@0Pr$BoEu#(xlymUw1x$}X!~TmS zjd}^AmPdtRFf$6p@33Y)guB2D!@54`J_7w`p!+Diy8@M55Q0(&I}6bsRILai3)WAl z&VgIjDP<19&a=AQ!5c7o8ictF0*Ho%D1E~_FofEBNtfc3U~U{rX_$Tji<5BdIYfIQ zvIVO1Er`+Tv|GS%3W#POLNVBugxwdQ?*w=b%)SMsVC!M+bwjlr_bqn)e81sG? z;^lG3r}Uacm);hegZEN1E zRUu#QK>iansxWp{JI8vp&0T8yIfY+4gs_RSEYUh$*&qlx#HX#q6+zpro3TttG> zC(y$BWA$9YT%nahEEG#B_i=>T&#zD&z6A<_)pLqJbnnC&4^s~=00000NkvXXu0mjf DijN~n diff --git a/lms/askbot/skins/mitx/media/images/flag.png b/lms/askbot/skins/mitx/media/images/flag.png deleted file mode 100644 index fc302335e2d128c5951284332f665048c4ebdde8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 515 zcmV+e0{s1nP)8X_c@mzyj27dVQDB83d%R0J*JCe=wQMsO?$f<%x&$jkk?L@DMq>TkREoR9Au zI3@}2{joGno06^pCxIO^yWi<_Ua=t7?RHo5Jdcyf}e_>pDV7O*@V z4x4`i=gc$vRp23T&N;XL&t?GU+&1tWc+l_n(|Ke843H$rCU9mj7~J}AxZQ3a08L3< z?|tJacy8yzwGhHCkjEG=RNZ!^c^1VOH-K-oTJ3mM!%r#?oNXq%p(+3X002ovPDHLk FV1g89+tUC5 diff --git a/lms/askbot/skins/mitx/media/images/go-up-grey.png b/lms/askbot/skins/mitx/media/images/go-up-grey.png deleted file mode 100644 index 763bb799ede3a67cd037bedb41e0595b7cd97ab3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 563 zcmV-30?hr1P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipb} z1`0Te$~fl$00FZ}L_t(2&!v$uiyA=`$KRXXVHZ!qMORR6L3S%y1y8Q976R#P!d;zk zpu4?a!j#8>u}P64g-uAx3&9Vtuv>+It%b@cYId38j+ra&Og!<@%T6PLHNhY`)0Fwk;!Brj$_F= z2hKU>^ZCT2l;v`HUaeL?tBBY)O|v|mP9c>_-Rrup zP9_u3G!1OqMoQ`ZcDq%x*{r=@uluSH;!_kwU&1g<(&_YVyWIvUB~VI1(=-^5$7+%! zuMqJB5r3Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipb} z1_=O(<;!SGu3>lMEqv97#7Y6X5~F%6cJS8Hby(8dDQB&S74ttW zA{6X*J!7AYzPSfag;7slpsK#t)v6z4(2T}g-`>qi^4$CN7YmOziVHuC!SK`mvD=V- z3!WZ=R69^B-jU79`Wc}R6goC!Y97VT$zDxsFzTxu@Y}>f0lv#DB#k`8vz~w06jN71 z+kX0A_5T2|2e1e7U4Z?+0J+5ugyY;uo+nTMJTSxzqHO`Mx#p}sn9-R1&bH(?zB}EX YpD4ec72Ga}h5!Hn07*qoM6N<$f&)YOMF0Q* diff --git a/lms/askbot/skins/mitx/media/images/google-plus-sharing.png b/lms/askbot/skins/mitx/media/images/google-plus-sharing.png deleted file mode 100644 index 04f21d7860c0414c878b5f85369b820bd2849ac8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1161 zcmV;41a|w0P)`ma z=vY}Ujn$x4t0*1KKV2WRNo|hOESsUuR0OW{>;2$7`0lqK+~2u}9<=eJdUXdLLnYoo3wEIq8?X!saHP)8PXEEh#l?>0Vz3JP z@GDdV7x5{oF&_@Eqb(;VC#vA5a1%-xKsKV?-Pmu4-s(5_K3sqjx-l2iv2BLvLO;R1hS=#| z9h7h$cSRFiZnzC@hu6g*()K_Jd%OnE!H-a`8_0xd@pujIp&#Gib9{{>$k#q}4M>1o ztoC|0vDiy+5tOhKre)v^dXR@|3`1cMn{k`?`>9Y^0)4BYgjO%X2gQX~u?YHR<0LL& zj{IxZUTPD(R9=MjFl{*$zJcc5yNS>2?}+POM{x?YX&eVg1c>kn?>*i%*SMFhr&^DKgQrV1`r3i1=x&*m~4F_ zxZftYLj?bX04CdPyork#!hU>@KHQ0D)-8g6unB%w1fRw%MA|$&Ev|b6(QcmzK4lZU zTfFdD56=w&`~`&`%tJIgB!UNQg6p*tE*VqpA#6f}c3Opy0k1nDf)CpS>nF}in3jwl z4C5`V#-k|22jU${hV2q?MFh9l1Se|`>#fiihf`3xKnazQ+h7r#hzWcJn=R4a*^jIqeo9J89F~O3;^LpR zLm&fV7{!w?Z6_4UynJ_s{Pgtn$iW>Q9Zq$1wUd>V)vSGicE~-CVf=%3tU*3D;tP!7 zbwr&0kA;+!lztj!H8wUHgN>S-n-{pBawWV7xqDELUL13MiCxHq&9dcB2HfJde8Tg8 z1~xS{nI5XcsKRtD2j`)L9c5)@PE^6}wnJ$e5d%M4hf7dGF9J~qi@j}#?#FU?-2>=? z(i}lN96!NwtxyJisKmXPY(YHZhF*ix^vZ|%($Z32!E!H%2OQm1oWMc6gAR1#JNyY{ zFo6~X!2AZAm*$2{K>5&LP*9K;3WXfq(9n?g;D&|vFI86O{?`L)+f buwVZI>rjb<6xVPw00000NkvXXu0mjfEyo+L diff --git a/lms/askbot/skins/mitx/media/images/gray-up-arrow-h18px.png b/lms/askbot/skins/mitx/media/images/gray-up-arrow-h18px.png deleted file mode 100755 index 78767445ec3e38fab840f8177c249e38379abb06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 383 zcmV-_0f7FAP)Bj>^LJ3~~S>i&IO88=qln{V-q zOM40!3-puuch|@DVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5X*aCb)TzBu@{r~^}iVZzqfg(&L zL4Lvi8J=!8@B;EgJY5_^DsCku9AK6xWM-3k!OUU6z#qV1KKathOF(%BPgg&ebxsLQ E0Ke)mAOHXW diff --git a/lms/askbot/skins/mitx/media/images/indicator.gif b/lms/askbot/skins/mitx/media/images/indicator.gif deleted file mode 100755 index 1c72ebb554be018511ae972c3f2361dff02dce02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2545 zcma*pX;2es8VB%~zPr=ibVMCx-JQ^BhLDAsK)^**h(ZDp9YGuzZ%~j!}+w%FI;|aC7){7CdVvG)P{bng1y9Te*f}~*`1kQl$jwb z$tlW~rRS!X?#xfm_&6tTdp_`cjgYwbRFLNdoJCN$S-yhg`ZnC-yvedRSmOh%;Y`Gl6bY$Z-}#C=#F4%9!I1b zWQ~f+9P?;vhCxWwlwl=lrWG|7IYo;{jjmzJ5R9?f>n%-d@>kLINUc z4wM5dAO;kq<$}Dk{2-u0$I6@2N}&cUx9nmV1dYc8jfC}%=F9WCg^OQK9C6poh#2!A z3^EU*UFZvS^)?bu3T?J;@Ahb~%I?+@4!l5!*TjC}GIslNan-RCrrd~PdHYnNLJk+m&`$Y+NV(e>CCu%R#_8GqY4cv#j`#uRWdsg9DxWy(?oOvgCU}&@jy%c!H&-Q zqXJxajAtmQRoRa9V-RFXXh-bK*;Fum{BjpkYQGX~i@OZ^Dx0n&H}kvGKqQ?w(6iGXu_g08T|_hp#ZvFzIwKF*a=oMJ~3UGAjZ?g}GOxm44td zXoyYrU*I=y*vHv89hkYH(v5R#wc)BC3dZJKb3K)f>zaM3%JP(mpecViP0eKKYf3zy z->jx_mc?mCtPEvCQ?uppk?eLJt}_IR7giW%Jr)RyI!+E-voIs*lXI*z`GQc_&D#X( z{6G};HPYj6O|$lXxBJeDaweqa{4L=tOZCjTI^&UOxXg})LRG_cr^B9Rqt(i5ORbQX zq`_xCRsH>xEYY%&*Nyi#{S_JZNlTm#K56`RI%7^amom;*h90Si&g1CfaFV3D|a!`3Y-GKKbL*KSbl z>I96`TR@CqPJl(>QqB~RvK~-U)`e`l4LIqj+IU^~yyIe*|BRVB>4Bup%j{tLdKz4j zY^<8P8m~GRGz*yv0&-RJE+-keJ+%m3wNeopzsltWd->eWmBVwUr)pX` zK~CD<;~Z*Uy3W`3+MrEYxm5qYQ!z%YI;y7DTG`UVH0;@{M{!B&id_}3DBQ?zsotuR zEGLdRx25nLm%-wjlnEi;-aN_1S7???rO~WgA67jjr&(vRa3y$u#kqJbeKnw z{!T!1li9>M+sJ6AUe+*9d}2uGjhzd z|L1Rtp8uTGYyZoQ*`DS^m2dw-X{a)l+3m?ncvn^+O>)hdd3(hMtlhkRGns{<8c0I! zDDjpmwtj?@!6kA|iu3q+Ai;@JR+ zfk+ln&YFC{4bhK6IxVgLs4W%^8Lk`qzWU*L>yq0A3;l}{!wKZ!ue)C)SKI)9dl1hl zhIRLV@8E}rwvE{gX(}$f6x*k)_`*Ijt1=EU-Ls6-(phomeQBgtUs z5Xz~Cd*nE)Ac!0i4ep}Z1AugMB(&F?)#CU{Qc{Sp^vKsdL}vRB30H+Bbzrn`M##H3 z{W8dc_mDroEE+p8_}mnJtzZ4!RNe)zhB)Ds;S57nYSJxtek>^~&(7B+N5MPf2+2xx z5Dl&4X|c@f{Kd|z1r+N|$DmsoVp*3yOdxT^J^-VAk)Z@$4^XrPrFP-Co+MXZ+KJ(W z{JNYvraLLWA;&tRhIKOvhW|HC|L-dLvAUF(MG0(Nl?4tB{RzN7I(}Cb%hwN{crFC8 zji#aJElKvDFV+&VI1V?oUMA>*kto0^;3W8FQBSZ|{ z$v~TqE=(8DZa^i$^oht&h};P1N&wMXorKh*Z68gPV&ouy>%f36Oqkwemyeas$Qbz# zV?7Jy%o7KY6^I=P@eCji%W`o5sf(5hySYo9$l4e2`(hIV_?=H-#R6}0$WVA|*(K@3 z=5?@RlcLh(meW%A4)hGzcvEpm(_w?>zhL*i&s9$2>r zAtk{8Cia|+Y+V!uX9BtpXoF%lswuRKsM!pSs!?yhlCy!269K0|b M?FSZn2B>%I-}ej|s{jB1 diff --git a/lms/askbot/skins/mitx/media/images/link.png b/lms/askbot/skins/mitx/media/images/link.png deleted file mode 100644 index 6ad60f5ef2ae166bcb670d56d1a30ad0988c0a16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 601 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 RGYmjzSq#w7E_7iR1|UK{r;v$;?gF0#&cYY~ XOb8FnbVdh;pnwjPkVRw~CJ+ESxAf|` diff --git a/lms/askbot/skins/mitx/media/images/logo.png b/lms/askbot/skins/mitx/media/images/logo.png deleted file mode 100644 index 10559161a3e8ef09566d6291bac225281203ca96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5841 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 bsql9I+IY{C+hEHK00000NkvXXu0mjf6)5?5 diff --git a/lms/askbot/skins/mitx/media/images/logo1.png b/lms/askbot/skins/mitx/media/images/logo1.png deleted file mode 100755 index d79a627174b08ee90776540abad2e76f28909652..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2752 zcmcguX* z1E?4wgA2<ibF5B?oZ9u^18n1*~xFBuz3-<%yx3)#_ftUE+Qo`d)qPK67?2S(r z0zbj_1R*mtDSopsN*FIl+1W1i27nS38t4}z)g^qLp7y;lhYt7a0jSl3L8?S)fQbgp z9GIgd0|RA`d?7_d00faod_JKJpnwt1uSD7Z2a|-B1yhe(GKu=epgmLHL<<`k8h-xr z#Rdb>9oZ&!^VeQMo#r!{pg-pxO=%%wiP-5se;)6v3??meND?n)RA!O@$<(3FLWQ+$ zOH6FdOV()2Oid#y4ULJnFZpl4eYEx}KeR}+M$Gk5S zqnm}0W#xsXD4uMIn&y?8n~Sx|d}IA$=JVCuRjV$XJ}sknP^i=`V|K{Uo}IS~d2w;U zw>#2*{<@gaLWBV!hwNSpj+t{B4+|*Cyj*>2K%9^omNa`xrFm7gG6I0)*hvDZW~2n9%+MzzWk{Tzj9=GEY?tX{kpHp1&$#)S9m54a>eAI8%Q-XV);&;*9apqP&PXYp>>%+b;E;=0xznd$s;o zNiW9QI{j^mKNAYvs+E&f1KTijaz9V7?^FoLb3{g=Tb7$1e){vBP^z+Zns=jU$thc( zw2kd%$grJDyMNT!)Sct9dhWuKlacvPp`- z8Y8&LnwaoBc`{&GJVY{O#mCp`P@%=Q3Yaf}s2B6C79AD5YR#P~V>m6)bOTOOJli=W zPNp*HEQD667cH}?Hg{}+gdgp}93YjUmp*9c`gj8_aBZ0sW8avY zX6NiSFgF7CK79K0^heY)4c1V_P-sdc?>r6RHTL$J{dk^GMMm!9(tmz0dWka-lQA#W zXdf`;=ExOJv+V3vx`;W^wrWq(KyLp>!+{ofPxJF9|Ku2~4KPy`&%r!MfevTFv?hRH zP^Pv`=qS9h326iT7wKo$i=g2*B^lbLre~#DL(I(n28>2Gg^v4`z>bmBWVf432BE}! z=%dyMYS3f}wFCnuO`6FNZ&g-=WBwi8-KIYYS~6hF|43W|sCKWJaqiix73<%aT>M#5 z?iKC8)_XL&u;F5WRi;7`VW01Uz?7QJJz;?DfTU)e2~pZhZ!ORA0JzhpA(Hd7nVDJl ztq(E=8|M-c?lGfz@4u1lb$BMrC2Om_dxO4-tz2^b_1KuqlAiJtXpSQ6`8qPSH$8nC zMZpy}rL*@|27`gFMY^W63My8YCbaRwy~}3>~>!x8!nLwhyfOZXVGBycPfMA^MtwF)p}uJ zB~ORB*G&5!yTZ<$OqwMMHLF_PJ&jGd-SXLoYICY?CVF(&Vw#m#{b%s+m#mJxx&FG3 z8EpzW20O+=4wK)eCMQ3=(LXxwIZs6*uopv5ROAkrE?rPBaxA;pgO}{nULCe zHva>TDb#W^s+&*5L4WaxR#7-B1|!KkpC9{0e>FF=@ssguLF9d|wA!E~;qk9j!Nb{V z724{=IXkjH?b#LE~)Ia~*I(j^ z&q7!0`jgh#H!;;L(ylgBpXh9_2S(;HM+P(Zgj)SipDbK@^n^bC=|1xLztn?+(cTs; zL9LTzC`o)-7zuSAeKT~#fv@{a-vaYz1u)j9(QBzS8#fk8^g^SuEFbTf!OCZm@e1Hz zk~G1k6;|w?^B68VecJwAmXgBAYOPakiL>pz(w!`at=gC8Z#gHN?r?plOG7Gru6NLxkY;S=fF2z|YbO3%qJzr|R*`t+_ElUU&&^^{glpQP5mHpLzxP@1#e01HOQOj08Vo z)cfHL0^U{i&=SYTLGdn3&Ju3SY#4p@t=L7hVjDBl94p&Pms&GXe$dl$W59QduVdfz zK_DwVt5H0(psqg{TB3EPB_MT+v zLYBDN^U+I)`GZ+Th^mq2lakVw_C)=`4cD`4R&i(Ib*)VL&w?yA@5bAw@19`~{B3xY kse_>K@2>xA`@bf7AU)z?-rE%2I=lr1p}dH|I)5bN->?*N_5c6? diff --git a/lms/askbot/skins/mitx/media/images/logo2.png b/lms/askbot/skins/mitx/media/images/logo2.png deleted file mode 100755 index bd3cccd9f47793f86864cd068621ab07198b5ff0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2124 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 WUm6n{|NG;^K=;Pgvdd1fVwpR diff --git a/lms/askbot/skins/mitx/media/images/lrg/facebook-sharing.png b/lms/askbot/skins/mitx/media/images/lrg/facebook-sharing.png deleted file mode 100644 index 782e8306802b663ae61b2be1c0df595807987e81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8433 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 diff --git a/lms/askbot/skins/mitx/media/images/lrg/facebook.png b/lms/askbot/skins/mitx/media/images/lrg/facebook.png deleted file mode 100644 index f024b7c8ae509831e6fd5b8e6b9dd05922c587e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^GC(ZL!3HFE2J#pJsVSZ=jv*Dd-d@|t*j)v?AAh>1Gp1nla@!+k6d(<~_W|gnsbwGZRnEVORi2_WfIZMs5W|v8ARb9+- zWxd)Cc{0AFnHs`;Mn%loywL?|MAnOpza~{cg`63spGNRU=bggTe~DWM4f D;wDOf diff --git a/lms/askbot/skins/mitx/media/images/lrg/google-plus-sharing.png b/lms/askbot/skins/mitx/media/images/lrg/google-plus-sharing.png deleted file mode 100644 index ddf2abef837b3ed15c02faa72ea88b03ff22b47e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9367 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 diff --git a/lms/askbot/skins/mitx/media/images/lrg/twitter-sharing.png b/lms/askbot/skins/mitx/media/images/lrg/twitter-sharing.png deleted file mode 100644 index 55b29fafc0fa96a29a8dc77de2a2a3ecc3caa922..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8867 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

          lKiGtb72vJii0@8dk0KbsVCY; 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 F{{g69hmZgO diff --git a/lms/askbot/skins/mitx/media/images/lrg/twitter.png b/lms/askbot/skins/mitx/media/images/lrg/twitter.png deleted file mode 100644 index 3d1856f834af5b95c587830de81c0e60e02b3796..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmV*GqW2+_HV2W0ZiC0&j!C21@}{uV}j_( z1{*f`DFOED;A{(*nNr6F)%sW4C-u3&7odZg9H5ufQ8WjL98e~Rf@F4JdvE+xz>x?J l09zv10<01m3PK?n)dH{W?EEpQVr>8b002ovPDHLkV1hlLS+)QG diff --git a/lms/askbot/skins/mitx/media/images/lrg/youtube-sharing.png b/lms/askbot/skins/mitx/media/images/lrg/youtube-sharing.png deleted file mode 100644 index 111aa685a85524cb646508e3f92c83082bd3aa2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14387 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 U*|ijlW33qLU($Q2<8bqT0T*p%aR2}S diff --git a/lms/askbot/skins/mitx/media/images/mail-envelope-empty.png b/lms/askbot/skins/mitx/media/images/mail-envelope-empty.png deleted file mode 100644 index 0fde87dc9d6d8a3861fc1d0565cd778620356194..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 547 zcmV+;0^I$HP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2igV( z0XG0dpY@gi00E;(L_t(I%hi)TYZOrwhM$>9alx7F&XUDO2?RA0W(zkdA|lbhWTUNr zAWhgJtssVwGE0&rh5n8uT@qHrh*@-)xgY0R?C$6kHa6m^4iD$P_kFqN!hc@@!0T5p zKNLTT7f}=uMN33cNW0y_Ifru&YhB$tCpc$k+_^UZ4EA35%Jbq zZ>{xO>&Dz*Z`X$lE9av#!Z1Wcu+~zRB~?|SwZ<5OF$QZbB0?C3oR7``2my>S^f$K{ zot~hSA_xLR z^(9LF3T9?;8k(oV|a+!BB`rtvh7 z`+eTOd)r{nJDzMmZ7^-jOh80xSQG`*+bOM9O5W?${QLBVn=fBkZY|diL}cz@9^v}x znopAn_wU_hBj0G;mUdD;PcFH04~O30G{nU|KrxJu4SyQWn7HM_53`7 l|F*wBX#d3~e*E{J=_j4B6J&6NXg>e|002ovPDHLkV1lFs>mvXF diff --git a/lms/askbot/skins/mitx/media/images/mail-envelope-full.png b/lms/askbot/skins/mitx/media/images/mail-envelope-full.png deleted file mode 100644 index 2277e919779eeb21478ab71d5598346dfa701e54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 482 zcmV<80UiE{P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2igV( z0X8WgHe9;^00Cl2L_t(I%hi)TP6IIzg+Dvaf{V=p1rel=lr9AlEe(g@3N&1Snu~A+ zBnqfNxks`~gd!9QlC0Mr3hxpEqM<>IG_v*l{N~4F`1hs&E;^mNw-8R0QW(GhS*wK? zp#r=JpY3O;eV2zgUR?khR+kfZNH0(_Zge$8RSSj*^6|?$1gj z3iw)}v0;*MGaheX6>z+@wSoCYAbbKBBD{t`M{5SnO8|2bX5Q1$nykjc*Akw}lBxF` z8bg13dm~x~JUd5TRZx~3Si3F(pqS5N`g?mnPTjt>?AP3euK>=|^u>wn{9+RC|Nb+* Y1G^5%Mvgs9zyJUM07*qoM6N<$f>X1_mjD0& diff --git a/lms/askbot/skins/mitx/media/images/medala.gif b/lms/askbot/skins/mitx/media/images/medala.gif deleted file mode 100755 index 93dd1a3960a9668a92ed55a81402592f296c9333..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 801 zcmV++1K#{cNk%w1VJrb40K@oE*q;kn@I-k&}bV{vSuh^`1%k6r<;IMd1E+ZG{w0g~MyWjA*d`_?1 z@A$la&+q&HfPsR8goTEOh-(y!jE#0PICFAzz_X{% zpFo2O9ZIyQ(W6L{DqYI7sne%Wqe>k@wW`&tShH%~%C)Q4uV7~+8cVjU*|TU7DOk(4 zt=qS7(BTJr4xw7TUm@^~T z%(=7Y&!9t#9!C>oFt6t5zwd>cgV;`7JySDAyxO3~?&AYen-@tu`Sa-0t6$H)z5Dm@NG7S| zk}d||0+o_zM{=bwNED(Iku7HVjkApih7e}UBq diff --git a/lms/askbot/skins/mitx/media/images/medala_on.gif b/lms/askbot/skins/mitx/media/images/medala_on.gif deleted file mode 100755 index a18f9e8562941254941a446efad3e6edcb651d9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 957 zcmV;u148^qNk%w1VJrb40K@E)v5}!; z41e42_PDkdcy;l$Dm3n3(BTJqC>oFt6n{%wd>cgW6KueptkMXxO3~?&AYen-@t5f($n3;DZoGDB*+&RA}La7-p#9h8%Y2;fElG zDB_4DmT2OMD5j|5iU_pm;)^iGDC3MY)@b96IOeG1jy(400+o_zM{=bwNED(Iku7Ha6Bh$gD&q69SR=%bKED(R$@R%+>`m}aW!rkr-_ z>8GHED(a{Mlxpg!sHUpws;su^>Z`EED(kGY)@tjmxaO+st^xGw>#x8DE9|hu7HjOW z$R?}ovdlK??6c5DEA6xbRBP=zwb*8>?Y7)@>+QGThAZy4+ZYo f#w+i<^ww+dz4+#<@4o!@>+in+2Q2WwApih7u&Gpl diff --git a/lms/askbot/skins/mitx/media/images/medium-button.png b/lms/askbot/skins/mitx/media/images/medium-button.png deleted file mode 100644 index f384be914e238c32719ac9748b5fdf51b4d2f4ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^+(7KY!3HG57oDFEq*#ibJVQ8upoSx*1IXtr@Q5r1 zs=p4xj7}P}D}aKMC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6dvdAc}; zcyuQ3`S#^#J)07v@J23o(S9vCrmo1k|397gJd)pEclns);x2d5%khS%x4*y7-e~Lw zRIzM-(zNyW>jl>TIK2G)mcnBz9t9o^2|S~utmw8SiQ(D@p}+61)B!DEVDNPHb6Mw< G&;$T4Z%eNL diff --git a/lms/askbot/skins/mitx/media/images/new.gif b/lms/askbot/skins/mitx/media/images/new.gif deleted file mode 100755 index 8a220b531225397b6a304918e4d96f6196ef40a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 635 zcmZ?wbhEHblwuHIc*el+@5|9!VKPrU6JO0wzv{&J_sfTWzkfci3%c&b^ZDfVC#}&> zyOaNZ`}}-T?z6u1zh6H-?MZpollt+%s=r@9J?->=+L`dQ-S^kCd)M4KzTZCopv3i7 zg#7c#dEf6|d^NB3$Neksx6gmOcH+A&vz~S(UH9g@mudETVb^R-1c%-`NuBSmGx$*^t}v|N3{XpZ=QLxvghB=@852m{z+->`t|DZla{DoFCJX;;C#~TaW_r#|NsA29T^4|DE?#tJ3t3Sg5rdM{YC?W zNN`JQTYE>a2m^CyU;l)Olls+yCQqLcG;PM53A6e*r27K<7?(+e+V$BkQ0bc=>K)=6 z>S?AMvXf0cM9U_`CsbZ({cMkrfKVO*0bx^n7M2ip!4S?%Tu1x7I766NnV3TOd0ax> zT^02BokLcHZqTpCs*6-yL$WVW?v z$*r&`a5&o0$QRlWP#C1jBFZZwJ5}J(3P%A63#oz=VNXx?YB3g7+`6(-c+I>yOH7zf SWil{ucTQ5<#GoL+U=08@?DshU diff --git a/lms/askbot/skins/mitx/media/images/nophoto.png b/lms/askbot/skins/mitx/media/images/nophoto.png deleted file mode 100755 index 2daf0ffd4333c90aafd71479510144bcdcb16c79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmV;p0!RIcP)FMR=<>BGs+}zyR+1b_A)zQ(>&CSip$;tWo`Nqb^+obycyPRT{LUB1#`*2@<8tPF=iD3b$&izilao_AJ$Uu| z?T7EI;9G2Ni9S*S|C71nPeS~@YXtLGZ#Xme_@@>8G%0p2sX6212og-Y1w$?e z!WtwvbPJl0Aa)A^G6(_^hxshQF(4>p2|9paHcPMx2&P29rJ}2$!H> zp6f%wU$+bD9?CDf;J*mCI1D_PzD=;|;mna;B%E*;B%w%FK=_dsy!3SVseTRsf;O0PA5l@7S3xZ$It;!i#Ky zUwupv47dxD@P=FMLIa$I+=l%s0_x#ZiV;DS09Qn^j9pByOm?A=ICBWn)?Lr=Eg7SN z03L<9;aJ866<{Oli{Qt&ARUsBlRXUURcV2;m^$aahm^dfY4!Hqk3O{)q1D z1TF3(2qBkcAppN3{)S!D3NGw#J)8~}C44zdYXvndi+CRUT0sljYWS7$P%CI+|Ayli em8wo4&)6FRqy5_K=O4cS0000BCRYi5j5JF2~jeZ#+NQ|EQvzRK)r^|WW5FkgGHP+$Myhf{bS s7kC}|SZFb4QlgBXr-dDw#MT14UKh34((P5!KpPl5UHx3vIVCg!0E*s5BLDyZ diff --git a/lms/askbot/skins/mitx/media/images/openid.gif b/lms/askbot/skins/mitx/media/images/openid.gif deleted file mode 100755 index 8540e12bcd8303b44a1f1676b59e9ff61713a2da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 910 zcmZ?wbhEHb6krfwXlG#fm(2V(jpJV?&;M+JKNXr6_HFsUvFYNGJ;#CI^x0FVPMtk_ z_WY$Qch4QYcj?q6Ah>${>eZ`v@813YY~Q2faPbmo5s9gt%|d4ho>o57Mp#$&^RgUuZ5eg+dZJYZnp<>ZnO zn8@79#>ir^py2~!6AQbMoJWI#lOrpaM#=_*i%myaxx_eX7A$CT;APg}>iKX$rJbGI pjAPFPVa3)-5*81xR0c3Hu?omAG~5VaYGz`Q2)lD?YqkS}H2_zIYl#2= diff --git a/lms/askbot/skins/mitx/media/images/print.png b/lms/askbot/skins/mitx/media/images/print.png deleted file mode 100644 index 37bf88afb27a85a0201006be6515f307ffce4bd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1391 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjY)RhkE(}6TtKSPDj(q#+`%nLkS978;g&z*8QU&dA7SiPQ{aIOUr9b<4dOt34TkisQA&nbLY;9Ccc(3tE@kX znE6UyUl+T&^ThS)X`LSZvHSkK+^(b)C2gpd8>Yw9YOz%K{?MI3b8>FYng zg7JWavpq*sgNo;g6r<+f&-XN&Sv-%4pIH6yyXyw`2g(l?RLOZPm@;X(+iPCEdC$MT zd94@`6*bGYIIYa@^}jFd8?H?{n|Afkp+oJzpI3Fg`MvM??|IKF<-EQw52?i2W)YJWX>apJ^D?$6>Lmqjk`V}C23|M_GcQ|q-^FJHc#ZujfQtp_>8oo%osN*4%%ep{Ml2kwIxe$mgJ+jD9T! zJbP!(oLSND@-~N6QTWG^k0OZ@LT-ZRqF#Nq@?3oI*<#;5d3#5Rwv^3^$1=*cmEX7# zq3$WQ#LQK5#w;tlt?dh91G06mW=+jn+T>?)Okz!`MY^Gy>+6>NVgFs!IeS$UGfgg7 zEeyN;>`eFOIn~c&=al;N$j^Qu;N#;XVmy zzozET@ulpPJd+a?#`RV3j#D! zq7O@~VBF34pn+`yQ>Fk*@OdE_h3Tia?tWSI`t7`&>zW5XefqR`?b@}0RaMV|7n+%y zOFut9fBDps%atN?=d=E2KKDwZt`|B)KRxu_RSD1xPR$85mgV8XD>v zS%esxTNzqd8CmEWm|Gbb7*5=z1JeLfX$8>*)L>|!Yha{nWDsIxY-MC-Wn>J|@H!7D^o*=hRq6(LFI@k$Von#$*Fn8sSFt>$tTND5Q diff --git a/lms/askbot/skins/mitx/media/images/pw-login.gif b/lms/askbot/skins/mitx/media/images/pw-login.gif deleted file mode 100644 index f88b1bcf0bdf05b8dd91b0927333fed55b6ae6df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1818 zcmW+#eN>ZG7{6nHsJTrP6%if5F=J}s)iKnudGH`AFc3lrln?O=g2yHze&9g^mFy@B zwYZf9;qjx?R?{8I10k45z6dmOd^;OTsN^(00)pG~?*8|j=Xri#&-<=hAFK#SjztU6 zFhY!f9AlI*!Wd=@@fF80jxvrg4l@q%P0BG!86}KjMiD!#~P#gyS&BA)Xd0N;yh6iaCmS70@J@peH4G%=wVQ;fhph=N&)2t}A8um^d7OxT7vz(0rphoBn3Ks2a?QP2Uz zfDO=qh4|$7Hq`JiA&3tW`~fXg7!!;jSFj5zph*xW2y%p^AppI^VkOew`7_b2v@h9S^p$#=W1Q&xK!5`2z|+BIvso;brluynUa!;Xl9G}lA|ljkwMwOuN~IEs1U`MQ z5k~>8Xwv+^+bO{<>4N^ zcH7Oy#GiI|zZNvfMIFZ6-s+>Pb~vexyISvM-@52`!G9NWIB>t-v&OoOkU@`V;<|WO5O6hdrrp3 zM_B^15^wddy7w}(rB-w^-SB4P`EC1NI|%l-i@Qu2Yo1i@uRG9PSyLGF@%*q+>Bi5F zPwu`W7k#_-Q19LBti!R10hwJ7MxLAZbi^GRy-xp`B8pe!$>O)Bu54Wxt{ofNe&1MR zT_Fp)|JbAA=j@zzN56cwbjka#Hq;N=-i`?^n*Y?+Z_cRQEJoiMto6?~SG?0THjbPZ zS&le5Ts|9hMcdmFRkq!y7Xn|vRjCo*2$l>~AYnZlsdGD9n{Ows{ z*~9F&sCwA4yd%e@IVds6oGU!78ea5Xr+hde>a;?$zD=Wel;oTu*B|vhts1x*Eb<>s zEiVeV+9y=2{!D1OB=_@NSETIhxlrWR;kH(z63;4`6FnGusqf;XUC;W|BXR9I`AF)S zqLh5a#b+zqbQKomKOeA#8LQiE`5O7~N50L<3CC~ds79~Wd86^t1oZ9e~pFZiglv!LAH{BE(v)BCcmysWr%~D>?^fvus*>8H0-kRDuH|3~)lMfpB z%M>r)eU~;WqqYRO-k$XJjJ}8zVM&Sa&@ZYLlu&c)>k!hlBw)`kMFbLGXx zc1ur~v`cGhkiXTi_o1@4I!@HL?2i@hRox|4pEYH^(Hd#9=M`hhV4HQ{-|?Et`NdVT zi(jRPo*6V(ivKLn-Spz1`}x4zv!lmuKHZ+LP<7@sYJ#2mO+~|9FO?4mAAWwRL}|Wb zdNB4%@!!{KvwEI*^}lslVan37#A|NNeJ4`d%Y1Y6!T@u`2?w`A_q@#D7~5sH^+RQf zOt-Zj#ji?MKaG5IbozbOndu>c*Zstz*FrR5D2?u^t@&Z*Mrqx)GP&>Nn!*BZ!KZEO LF3fY4pjH0^IY)F; diff --git a/lms/askbot/skins/mitx/media/images/quest-bg.gif b/lms/askbot/skins/mitx/media/images/quest-bg.gif deleted file mode 100755 index b754023882679555b5d31862f777e5f8b1877bcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmb79KQF^k6n#yEq+=^$FjT|RNGC(FR2r3bG9We##9%NQ3>uLbk@yBARv*JGzJSqW zdH4Uj&-?iX&Pnb)_vW6Q-0jh@w{~0$JK-|~h%skR?y5pa2$0O&vznEh|N+RO!h?sK@|HmRv z{h3y(TKyEJ2mNOMtn<{HAAUcKPwGpL&s#5zxz_#Zs$8wV{*2!`hmD)b^4H{i;qK%8 aqJF!3xj$$f?HydV+s)ZpZKm7Z3>&}3(53|d diff --git a/lms/askbot/skins/mitx/media/images/retag.png b/lms/askbot/skins/mitx/media/images/retag.png deleted file mode 100644 index 836c043c081c607699097107e618a3e0e239ad80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 474 zcmV<00VV#4P)5r00004b3#c}2nYxW zd?UaQpx69WL;M+p(R2JjxC)|$=cS*21LPHOPb8Axs#W9F1n z(*RnLy~QvLZ>+VGaSfsYcL0#f<(>e%_3ch6rEbgRa?gFSP$-NmrJmdMuSn(rECI+S z9J>V|t+hS^0E!5la}5Ba35FzWYpwIDJ=Fhb27s({uBrgQdv8T#_a7n46p`*!EEdxw zs{jUm;}((Co`7~pisT7^p&$HvTI&tf&l+RSz4x;K9=|bPdhfS@_AA7}T027Wl;nJ$ z)bQTV1VQiue14=@1VQjBA}Nx`5js>#t#r)aHi)8BDrH1uT|_d*n8T>{0g}FiA5Yau Q$p8QV07*qoM6N<$f+GgJTmS$7 diff --git a/lms/askbot/skins/mitx/media/images/scopearrow.png b/lms/askbot/skins/mitx/media/images/scopearrow.png deleted file mode 100644 index 73dc674452aa75bc0968f1e3118235401955aa92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 538 zcmV+#0_FXQP)fhZiG;freZ-_=)YZr zQUWocVB91WMFj)nswF>Myf<^ZczMYSn)YE249w=vH|N}AyuVdy$QV=JFa}fs6xCYe zxVn(ySd6g%s4A)vh_zt<1eE}51rfno0U*XmjA4FC*m|I?2XHu-k|Y~kT@C1Tz7b=@ zxdai1wRYip?R(Gds2Y`sLnJ{J&d)oHMz;WLZf(lLXK*fNBY#+6VTGh z67u*squV`UJpR2h>|8>-{h8g}<^mSu^RN}r(uE+BAd=wyJ!fY>$g*s0#I4px_V(Tp zLPnmKu+@^x%TPpRZMl;o`{A(9U~sWEcPQG|@1HW6{G!$R02o4m5TM#fSNw_v#JPkR zm2US0@9+N#sp|TA$Ye66-9APn0ajt=;o(jTHx3cUY&NCW`_6Pat_`WG(Rj__;TO{M z6(MBv>c2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4etLXe|BcZ8|9@l+!g&ojr{&+@pEzB@x6{RY qL(SiR%)5`AkKfOJCe+!7i9sM&XoFY6dNw0Q;hj?Mru|uJTpMcsf1F)&c7NS})#%Rxyc+_~ez|hy&|%NAhn69K zZB|vD$VmJ7;i2-+S^MjM`)zxsD3!2y*2|TW41HY!>&;CT2m#Gz@O1TaS?83{1OUqg BOS%96 diff --git a/lms/askbot/skins/mitx/media/images/social/email-sharing.png b/lms/askbot/skins/mitx/media/images/social/email-sharing.png deleted file mode 100644 index 57fcee00e9fe761674706aa60e8c699c9ca87fee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1095 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 buwVZI>rjb<6xVPw00000NkvXXu0mjfEyo+L diff --git a/lms/askbot/skins/mitx/media/images/social/twitter-sharing.png b/lms/askbot/skins/mitx/media/images/social/twitter-sharing.png deleted file mode 100644 index 7d171d0fefa3f5dfbff33538098deb100ac5fbaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1065 zcmV+^1lIeBP)Jd{pvbu~9Q04K%o@#gf3#ShK`gd%r<((>U>f#M>Y#00 z8^v}0(f+wo3H+lqw7+apP^gfSIh0Y7BG->~F7wBIdj8QLZ$5l~-|dfRFL=QI*nPjx z{kZ#ncT-yH|CGhx#bCGK(a}-W(b3`8{n&^;yoZmF#wd274Ruh`$jC_H!EJ4A%Ht~W z3MTOzw2SLFfgPxY;#`FX^Od`WF2y#?KnHXcdpXzgg$`beX_xQfC7k)!4E}(&Qe9nr zzM-LE6O@(C&d!2@U&0);;WEbYJl0^DcuXl)VFUKzJhUN?gtAy95(ymKWAkGjz`gLg zW!Q=zpbbOHSbcqcpx_sw4WD5(g02clXv6M8gC9cda8_ z@h0=R;wN}YJn#ytVD3SzgVP?zcj8!o;vKXiiItF(&zXw^mwO3bXCao~A8 z0IO{x;vbO`>{=E4)g1reO~5~=TO$oYsphf-MWE}Rv?6JCNh8z*?uCHMri5ACqqYRrq^ zx4ZURevixGwmrD%5Su{=wli-D2(I)R zyaQU;0=ZJO;8h&JDTmN`yp0k#tr557D+$4#-wB0VLUn3W5VH8Vix0g6kc}B z_`|dz91gn&kByC~SS+TRnws`n+*Dhw5{-x=h8M6774W)Vc`iba(4Ynf2c3hZR4R3k z#obm9ioK_BL!2WQkH^El-waG9lZri!yz!%Y4aM3 z8(KIB6*yRI$mRy76@J%@Nod0ngbEFo+YN1D8oh|vTymG74qNd#^3aB~e2wnv>Ixie zE{dOQ!f)XMzQkc1!W7QpI<%>*tZc5PrX~(04Gatv94uFh_eDeyd3@5|-X6(jv&xjq z<@^T^4-YGsJ%WAs(MRad_z+D{(P*@I|KrGHGKx#17v*S1A5xgaSD3~ze2h2If-3pg jL?W^HU!=w0|6TAuu>;j?=9u~f00000NkvXXu0mjfR7eE# diff --git a/lms/askbot/skins/mitx/media/images/social/youtube-sharing.png b/lms/askbot/skins/mitx/media/images/social/youtube-sharing.png deleted file mode 100644 index a26b18121b8ac99b19bec12d907a0840bd18b208..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1396 zcmV-)1&jKLP)wb%bGfoP)4K!F|Djf@^AOL{U*uutp#k<@f-*(TEzng*=RbQ0>^UBmCgJygXrZ zqObtR@H>nEy3vf~7!JX{!Vl&*4;1q;I+q8Yv2OB&Xw_r$j zF~Z?+h=ha$k(ih$A|oRO^9(NGM-<`^uEC9^ScO^?=!Nm|@xFB;A|lLplS?q9Kamtn zup5SA1$;Z`?(P;nJv|~TD@({ZgI|y-cUp?Cu>qTL2n+P!=H_O>I==T?IkU8VZV4v% zgmz3tLnI|739r}d+ivRAsY1>M97h7$;Fgi=@h(0`u^xQk!Uf+tlP6DB?{0-5-5@y9 zPVg}81hEUk41W0Vp>MmKoE#x%4UQlYKcEO-p-O7<7u?#~>RTs0Jzc$f2@Dg#nRbHp zm&O$!cpXk58dq=;+p!Eca0f*;gH!N839hgcT%p9?$H)M|@t7cQk4G{3VK8zq5z#h- z9k`|hH`)oVR)TLLB0%skjFi!1k&HA@tVQqvCHTCZ;5udD z>u^{EpO$C235ddbTGSFOhv5&w<1B)YE5WDi1bdW)J2BiM*gV#1k%znT_DSr=CQLyo z?%^R?mzChp>;&g)&&Ep@!OhCmTRzUqZMUFA{(Kcqd?Mp3F+m1r`3W9{ z`%3T{JHeynx!jQ6w+KF`1m~d*E>xoe8?gb!sKt2X;zb#p?I(D?cH)?B_tbn|JB}m# z1b?Rmw;~@Oq8tQ+VAQ~gZ?O+vf~Tm#`tgf91V`Bo*8f=Mo58)ky=L%H`PfFxz(pj= z+sjY|7oJxRiB*^cZ(Cd2L@n5fUKmmX!M4AbcnTfbvphICIr*RMrcIl+S3Y(IALAY> zun9+T7OPQ?PJDrU`Iyn(-X707A|oTi3_huSFm&>%_#w2xh7JIH8AW5S5jc*1@`lhK48Q#fzaRfjUWe zUAb6)8|$!MT8Bz_P>#iz33X-qUhSoN6OU_h{e01~bkU+k zBBWqB9vGUfh(tJ3rarUM9*B^G^$&@fi*O;>$;2@jn!|8}6|Bu#7=E;%6sZ^hefnbz z+&Bs^3{9hY&9ZRe!tjIT6yj%#@CUex(>R2KIF8HchN0sVbLWsDL&_jjD_5=zD_Ec5 z*l9+D$cz021qG=c9UVf~)zuYzaCLRH2ry%@8CQb{y^W8M0Z~|3`1t4Z})EE4}3;r9G(Uv=hjtIX10000Ci diff --git a/lms/askbot/skins/mitx/media/images/socialsprite.png b/lms/askbot/skins/mitx/media/images/socialsprite.png deleted file mode 100644 index 8d01ed773758bab8d625ac89bfed4ed63917cd61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3030 zcmV;{3n}!8P)?&p3`fPVAY1D&tHXz_HsX zArG~QRboS%6omV-E2BOrQcC3lEp3U?N>oV`Qc6Wc3j|07q$Gy4!HJzhupzW4k^u)B z;#ZspW4nnn$;^1}>+HQ(|G4*_d(VB?V`i3gq_g)~XRW>WTI;vg-sh<8kI&}wk-a7G z7}rV#ECM-^xN10Bta!T~xTP=$aP50{WL4~M3VeTD;f0H%$Hlfaa=k{)ZTV(j6Wsq*gA4}NG4VDH|&{@B>q7T_Zy@|MNWqm=rQi2UQ| z=;*`#K+bL{gnCElt8uOHm0Fl^5paU37&#Jnwg5Z;5ZLT(nOyF#{2&}x$_rTpMb24c zGw~5GoK5sBSytHMXQMyYfj_R57qUP#2sp7-7n{RNJb$2}XLNM*_dL(Le_&uBm(6BT z3!IOLP%4$yO;1mM?u8d#5Wg>@cPuUFD{_IxQ?M8lv4UTW-Gn~Nj>bfyZ2r&k{TE#s zMmep{@k!&WPao* zeyFte5D{b%6>06^1!1B`dx3}2I43OXgp{tyZXuDh{8O*}gl~Lz2eByu5cm;+pQBiw z!q_U$9{&c%Cin4MH~uqA`^UPfX~^^iuq^Hz5+!Z-P8_)Td$H#!)~y+4cv(N0&<7wk zmPfyR2&I}Z)vCvd;G9dz5rp-Z4Dq&0hWPR16#FNqexay!(tDAn=T7pUPk)5ilvq-@ zlW z$7IP~Fx1%=x#Aq++`REp#BtS{mArf76|7j+ml&p4s`AJa`|*P)B|Fh+9LCu6IN~bz zzH=S9(5F}(;q9N?g%@0S!DdaH!CU6{%ul~Wr8>)!zE%A0%@5#vQSv+=UBtxbCWe=; zx#1(G2 z{xU``8BC1Q7dH6Rx0-dAZ2{om^Z(V;0RVg>U|eU!lwx5xTZ4<0IZY{+3yv7mBGxt*aGpZq zxXdq&EKAxCJ-U}-sft5)7^5{}oV8e+jub!`L_`lWFdEAADpVl^Fa?M3fsy873Vug0^YT zb|M_TYkSgObLW3>=x^T*!2XwBcz%d+j;}v?uqLZTc5+{bozyrg)l|DuEGGBsS1)7z>Sd|t?_K|9KE3x4|5r4r zerLPqn8Ctol+u)|Gn6XR=S=D^zw$!>l+rloI*gx0jB#MPKxenUR#Md9u41I;Vz1206yW>2{@@YF~H97g*7skegF2MqR&Fn#vtsifad({m@;_qls0e*YCz<2E8Ps!6s%d-nPb|a ztu2Y4c)iG}*>qF|O0dSHP7m7Uv{JGB8cX_Ca%z8?B9Qx-P=FR+M~A-hWX}@j6mEC%IYO^_UHj=x~%t=rK#pNnp~oSWYFu?}9}BB=#TQ5{VV%o^+)G13y*T7e%Zf}nFV+8|4N z#LO4UKv1mT_yJ5@#t$Mg`GF3MPh`8aSBvh#r#w(zb3}?}+ogG+9w@f0DCiL}7eb>~ zUeEh?exEPCe-o#79$?cy+?$erlvnOfr0?>ZCZc)@6&rx@*E|faNbW(?$`58uO zk095F@A4?EQQGT(w+5x4OkD3WaiP?rM=4ct&SgCB{Kqiu4W7CE={E}xuhz9h{?7qUVE_9D*81w;%eJTHWnk@bQSaW2^%IxAI_Ta=$L zI><_*M?}6-DwVe8^Z6bb_T1!o88&_J6CF`kE|+8A3%(T&YsbW*eT8jM?b!ctqiLPp zJh}5d?#?KgW9G`X0 zoz+_3=R4=_GfwYNnsHM8xgfIQIP9FeuhF4Q`F5*=P2ca?X@hzZ!Aiw?~RO%>;~Nb Y1IWFupjs*@u>b%707*qoM6N<$f)g?pQ~&?~ diff --git a/lms/askbot/skins/mitx/media/images/sprite.png b/lms/askbot/skins/mitx/media/images/sprite.png deleted file mode 100644 index 1a0fbc78dfff11e390d63d765d07d219e0842487..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5325 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 diff --git a/lms/askbot/skins/mitx/media/images/sprites.png b/lms/askbot/skins/mitx/media/images/sprites.png deleted file mode 100644 index 8c513508dbd403aaf7fef76222ffd3327d8c0461..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12705 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 oF4O&XjDS|odQr&P?s;4HUIQ~0E5It9{>OV diff --git a/lms/askbot/skins/mitx/media/images/sprites_source/graphics.svg b/lms/askbot/skins/mitx/media/images/sprites_source/graphics.svg deleted file mode 100644 index 72e1d2aa20..0000000000 --- a/lms/askbot/skins/mitx/media/images/sprites_source/graphics.svg +++ /dev/null @@ -1,1291 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - ASK A QUESTION - ASK A QUESTION - - - - - - - - - - - - - - - cancel - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - x - - example - - - - x - - x - - - - - - - - - - - - - - - - - - - - diff --git a/lms/askbot/skins/mitx/media/images/sprites_source/sprites.svg b/lms/askbot/skins/mitx/media/images/sprites_source/sprites.svg deleted file mode 100644 index 585e578f4d..0000000000 --- a/lms/askbot/skins/mitx/media/images/sprites_source/sprites.svg +++ /dev/null @@ -1,507 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - X - - - X - - - X - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lms/askbot/skins/mitx/media/images/summary-background.png b/lms/askbot/skins/mitx/media/images/summary-background.png deleted file mode 100644 index 28a6a398d4371307d8a633be6046ce63f35e692f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^vOpZg!3HE<&c)saQY^(zo*^7SP{WbZ0pu_6ba4#H zXncFso3BAZfaT(`g8#oa9h$25)O^B>b(RhJCys<@Ee(;K_u7Pm>sP+X@+pVxqh5bs zKmV|+=i2rkcSL~TiVUxRw08ETwk=<64n1GC00^FCMBJ*H^lg#iqFP)5O z)Q2{VJ2s*BS!ZT#8NU(QGu@eB=T6X(AH$}m- zQViLQ1S@v$?^MR{_4=A8rSQ{#jrgfGw`GZGTigZH7omsEhBsrl$}(1Y{(n#`CExGw zd21T7Bw@W=PD22(lzh9pLtBdwg4?1PjeCGTz=zES+jShh=gVp}3Y~S&dCy~2ktPXw zmQh0(9P=BhMb~9UaIs9gP2NC6eS@^ou@V0Jm z-IMEe?^onrJa+iu|GQDu*F@6|cUv$;yXP+b<8sF;OIy`=_Tp_tEoZXNCzJ)=yAsw1 z{2s9hP@N$YX(nOKbLh*2~7af CaE`P9 diff --git a/lms/askbot/skins/mitx/media/images/tips.png b/lms/askbot/skins/mitx/media/images/tips.png deleted file mode 100644 index 7e8aafdf9654fcd9867918d06779c1df4f008799..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 716 zcmV;-0yF)IP)HoVv^USjYY&aEvvdg*88S2FT8vYktNAiqpG4FEA5RYOSAQP4JW z=KPh}XLlXP1LFv*VqMPhs*v?xxcT7rp!@Vi=whm=9GtjMpaB82H#K?f-c?nr5lw3} zX@d+SAVn!FrJWT#J##Ar1m_g(fM90sFbpUFz{0GRJ7zkB|cWktw zpkZAccQ-hWK z(e(Fk@pYbeaV%?Lwqjq_Gl^9STsU-ZdhbC;RX8P_SpB#GV2)udJoTX@Ov{cWkYYXY zR5lrvF=j9!ET%q<8Oi4#`fNd3YwL{}7jinCwQ!VVCL;r`R4Rq$p33%16R2j?b<5$m zfL<^CMWIj-ydnw&{HW33Q9oe6El^(owM&vTLIZ_D0hP;nBTr)vP_Y|_jpvMEU@+EB y(I9+Vz|MhspyocJd{pvbu~9Q04K%o@#gf3#ShK`gd%r<((>U>f#M>Y#00 z8^v}0(f+wo3H+lqw7+apP^gfSIh0Y7BG->~F7wBIdj8QLZ$5l~-|dfRFL=QI*nPjx z{kZ#ncT-yH|CGhx#bCGK(a}-W(b3`8{n&^;yoZmF#wd274Ruh`$jC_H!EJ4A%Ht~W z3MTOzw2SLFfgPxY;#`FX^Od`WF2y#?KnHXcdpXzgg$`beX_xQfC7k)!4E}(&Qe9nr zzM-LE6O@(C&d!2@U&0);;WEbYJl0^DcuXl)VFUKzJhUN?gtAy95(ymKWAkGjz`gLg zW!Q=zpbbOHSbcqcpx_sw4WD5(g02clXv6M8gC9cda8_ z@h0=R;wN}YJn#ytVD3SzgVP?zcj8!o;vKXiiItF(&zXw^mwO3bXCao~A8 z0IO{x;vbO`>{=E4)g1reO~5~=TO$oYsphf-MWE}Rv?6JCNh8z*?uCHMri5ACqqYRrq^ zx4ZURevixGwmrD%5Su{=wli-D2(I)R zyaQU;0=ZJO;8h&JDTmN`yp0k#tr557D+$4#-wB0VLUn3W5VH8Vix0g6kc}B z_`|dz91gn&kByC~SS+TRnws`n+*Dhw5{-x=h8M6774W)Vc`iba(4Ynf2c3hZR4R3k z#obm9ioK_BL!2WQkH^El-waG9lZri!yz!%Y4aM3 z8(KIB6*yRI$mRy76@J%@Nod0ngbEFo+YN1D8oh|vTymG74qNd#^3aB~e2wnv>Ixie zE{dOQ!f)XMzQkc1!W7QpI<%>*tZc5PrX~(04Gatv94uFh_eDeyd3@5|-X6(jv&xjq z<@^T^4-YGsJ%WAs(MRad_z+D{(P*@I|KrGHGKx#17v*S1A5xgaSD3~ze2h2If-3pg jL?W^HU!=w0|6TAuu>;j?=9u~f00000NkvXXu0mjfR7eE# diff --git a/lms/askbot/skins/mitx/media/images/view-background.png b/lms/askbot/skins/mitx/media/images/view-background.png deleted file mode 100644 index 5e951f401ea1219b9705382ffe2469e301c9f063..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^Ahrny8<5=Wv@!umu@pObhHwBu4M$1`kk47*5m^jW ze;tGwoit`w00kvWTq8#C_FR@f z=4#j!R2>VncxA;^UYd6Hi%DR|>Q1KbZzs;3`Quxe=nJPpCfoBTfG%S2boFyt=akR{ E0G+vALjV8( diff --git a/lms/askbot/skins/mitx/media/images/vote-accepted-on.png b/lms/askbot/skins/mitx/media/images/vote-accepted-on.png deleted file mode 100755 index 2026f3bcc50e2738bdb6c21f32ffb2a82d088e11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1124 zcmV-q1e^PbP)(98f962%urEyvrobTSI2iWDonJaRXmcCZ2&_7W|s$8;q zX78?p{;d3j=Jt6u zRf1NRn45~bKOeQloe<4k4F*a0^w988Pn>Cnf)+6fhvK8hS8!=&g-Tr5fO=!taU4$~ zOcn}~1dq~+P+Mn_{a3^epPXDNqV_QrDaOtjsGVmiri&cVy-8sMq#8b+xcl4la{1KX zd)90%K-Mw{%5_9>cd}5B8H|=?=ws;;*H`e>Y)`)g+x+z483yu`hh? z)vUt~N$7kH$t{g&Q6XMdNY^x24}P89!Jn~piFLVw3}%z-ZxONXwNtVCms$I=Hpt<1 z;>5`C2ui916R`wY2}KWfU9>D9Dg;Y<_4cY;b#?q^Z}exPXQRCee0Tq%=HACy;vCVa z)oQ5K>nMeJcUM{?j$?G%ZU0GpPJBRg?!=6hb@~7WeF-jmZ%z`A5yxGcdRvZYk@$u9 qnpoR$QRL8vDfll$;(wNZ1Q-D2C|}A%ZKM4F00002jDb`!&=tG_0s>$|K>*|`prJ6sL73(3+qcd@u04=FA87F=kXo2eKmZ_sFf2$; zPWA&zCIel<#Ldmk0CYVA$YsbuiEN3WpdiEV-@jQtefpFN6jJ#4^XDXHW@fmf00M{! z+3>`~M022FsXRP9Oq`sYV1r>6fM^&7@nIMgTp$C5g@r+ma0TLs@87?}%>)P_xCIFb z3Bo|lB^(?aU=1+CkRuHnMz)lXj}Igk4Pmg5nWK zgM9!HKul2A3d156+4UepK$wMv1;uh~hS${8fRioA43Jqsb)q0~fB<5G=1>+`+J?D) z%9JT^&HerTa5l0y4Aj-tf${>ww{PE&GbGq-fB*uAJJ7~2AO*0T3i2vCz-BNA)YjHA z05ccZaO6}4^z~N|8z6v~pcXs;rCV4KfV@~$RYfo!V1|GF`V}PzL1I7)9)r{X1Q0AA zT!9r*AO#=|po~*pU5(RlP?-Pt@dK;cg2@4U%(nbkq83~4GrM%MlNq) zt_Q^*$WcIgHIVxmBnA*bjL2RCmZUYn2r>s2cJMME1VFhHRs;jfeUu1=7iz%L6XYu( z0EK-K5dWAvcP;}!05PGJEj>WnAAr0L$}BL~0gGY=V7brm?%g}EuaFBtSO$Xz??)hR z2I3zuIe-8{v0&c3c_1f%lFyZoA3rjH3O+6_F0kui`2-depv(ty1ju)w_yQXE94J)^ z#Ltn<1PCBTY{dew=mzBvKWLT74YCM?K^B1kDEN?45GX8n0Pzwa{)%kQf&~j000M{+ zU%3+(7sm^vtby1Jh*f}C5Gn;S=spmi2jcxe{2E;^$d?NjE@S`*AVy+~WpV*P05LJp c7ytwq03Nl7Z}J%VEdT%j07*qoM6N<$f`!tbz5oCK diff --git a/lms/askbot/skins/mitx/media/images/vote-arrow-down-new.png b/lms/askbot/skins/mitx/media/images/vote-arrow-down-new.png deleted file mode 100644 index f2a28aea28c05382f18068b97c948c90b33c8fb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1458 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 BwKxC( diff --git a/lms/askbot/skins/mitx/media/images/vote-arrow-up-on-new.png b/lms/askbot/skins/mitx/media/images/vote-arrow-up-on-new.png deleted file mode 100644 index ef895206bbbbb62992cbd5095d1c41d0ecb7167f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1029 zcmV+g1p51lP)EV!e)g%b50AL6M{muKaIec#w!u;m=7b6ef7NAsC?}M-l z00@LWa{$pg)9Y=16lQ2ca80wIPmX5B;;RBAGo#}K90=+jb2sj4X!i<*>{Y+);+D!`nsq|-K;hF&BnbAQ4zZ%rr)^_8*rU$uLw5||Q&T)#rgjJ-tx9tEVNdN!? zJ6Gzw_x=@-`f99;!5^aHn0UixJQCjv$0=U+{qmgFMo~&#u&n&0mhhd+d*b`5Vxp&# znZ(h51fn^xAayS zz_H|)iT=L;($m8s2>(>zn2-u%sB;9G>aN+gHDee$XBaxCbzNR-o!46BnZ2vFT|B?L z?Qv|nqvMZxMEEE-p zR4QF8m&@M{-ZPA7C>G3IL(G%u(@!@7fOLDVy#%7eLASqs2wR)FY|F|{F!PcS(h)-1 zLP$p`=}4&^DU~CovZa)c>#qFR5LvUnJ+@`t#rbdGu?GM#Pa505p1AO_?0vTD9RMZ( zJkZ*QzD)yV+qRCouKSae>IRXpwN?(1bcm!arLct%wv^HlLfArx8=mKWzplaDVb*V` z|6$>~VAl>WUVwbz$nyjF<)ynjV>_^K%X28Z?(4;(b%ux*04xyEJQ3!IXif;R;CcRn zQfkrj{6(eIA~P>Zspfs3XIi6edqB`vvaNn`8Ff~$ckkp z5vb}q;#-WuH(d%uB8?9zt=~F5dqQ0J^&GaD_h*QiUj&c>@Hv2kf#C1LvhpB;sDP-l z1XXK@NTlH~5xv69Afnltf2LLDF=n1)=0m>&5Ejn5$77Am00000NkvXXu0mjfqR`=k diff --git a/lms/askbot/skins/mitx/media/images/vote-arrow-up-on.png b/lms/askbot/skins/mitx/media/images/vote-arrow-up-on.png deleted file mode 100755 index 56ad0c2591434e732e2148420330878414dd25b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 906 zcmV;519kj~P)xCZ&X`T>s1rrok967{t#$kYGS7Vd|fw?Kji~ z;lV5VHnRYeM`{4BF0c$^a34H4Y$j8XY%{~vP4Ur0f;38Hd%(7f1L*It^x#ox6Y^@F zBDnIA8Ir>UzFOH#7SIa-feR)47XkUfbW{ysEx$_Za+(2mrv@e0$jB+NG1p<%zK%|C zDhyl)$6NrHqq@G{IrJPRPyB_8o%g~qnsOblfcn? zud345g@qRO!2EE%0Z?uLjv-MxAZ&$ojSA9F#F=yV|e*{B8pP@ zPpy`qnVS0ErfIu&a2$lel&veGH2NtLOlegf9(x9-G9&7J^nDl1oLg=Hr16Fr(Oro+ zQbLGVpQ1pj;IRb_B#w0GLze=Va%%)w6bBhuOzm9OdN+s8=o$#_ccLp*OIu$G;h>rLx z;mgpUhOxf69+e^?1Ywq=jh2GNqFYu`xESK?pEsfZhXwuLEj*_r99^_vuKcEHdY&#l z0Wa8SHm?w7E{Z_H{N^6JFTqUk){$jh)SV7SR)<^84Pbk)5p-5xEIhKMBS92|x<@3= zZ)!HBX})$JOk*s=%QA0e+p{3c*vl0e=9sUD))!9#$+3Q`u!ebIIb1s(-e@F=*U1b% z9-vyObQ;pB6zoI_#Ud071$xZ|IC*EJ6cLci_@% diff --git a/lms/askbot/skins/mitx/media/images/vote-arrow-up.png b/lms/askbot/skins/mitx/media/images/vote-arrow-up.png deleted file mode 100755 index 6e9a51c7df2da30fd2e56359a93f4712077ee62d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 843 zcmV-R1GM~!P)Ze18CM!Al?Dub8&GoOqw)_0U&_j1|%mZ z3j?V-AXWlNa&mGq04*cZdym|9R2`JR?`}glckWT;thzab!KYu)chAIdN z2{HWr`xlHsmVhvfpOlou(AU?;;Ns$fQw<0U3k!q96hLNz%mxS`umwN?TMiBmxCT(X zz%UHx=;(lHFE1~+7_vH;K9D6Kvw*ZMNDV*$!7NY%c@N!iY!;y#j4TgxAjmABm>Nh7 zAb^;l8VIHqU?k#|$KnXEnE(OAf-H%y2t6WU0F?aD!Pc!?8Fud6iD4l?05Re7HZlf< zD?Z@u?ajc%#Do!S00G2;&E;unX$-o$x?py0ZZ5;*$&)b*1c~GFC9-({0mOnW3}J@j z3pQ+)=H=yK1UEncF%grAhy|b^LI(f=#DX0Dq!^ZylS5Px0R#}iRD>&trc9ZFHD1uo z0tg@`LIz>;HohQ2&zJxK#DXjV0<5g8D4IZp7&efdosDoMP(O0;g2Z7C0|+1%sG)yA zIS*DU-nemtK|@0WtN>JWV*^vCPQ{suK*a^n%pV{zfB=G7a0gg^Yk+0$lVq#(#)YQ~)1`j9~!(0t4szGKx0I>lA2$l~H18vm+Dfss78yF*}3LYLF zh6M{2fGtH24p`ms^XE@^(165%^kI-ZKmfrk*aj4E1sbd%ARqvC0Z0=pj6Z+=Ot?w| zS`LaokmG=6fn2{0Bn}Wjj4(qI5)wdFCb(AP=H>>wniTNm%NGV#&7yzfB V!E{DAJ$nEE002ovPDHLkV1i?NM1}wW diff --git a/lms/askbot/skins/mitx/media/images/vote-background.png b/lms/askbot/skins/mitx/media/images/vote-background.png deleted file mode 100644 index 0e1ded6e1b4aa094d29e31409ce8e2bc158fb903..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^Ahrny8<5=Wv@!umu@pObhHwBu4M$1`kk47*5m^jW ze;tGwoit`w00kvWTq8*M!#1Rg)&GG&$E>Itmz8OBQ5N7A`ADVh{0GY5J$HKYgls$4p8 zP|A4A)+z>D=aLxy)oUF7ez6b<;{W>j>xNTY%&*<Q zl~7{r#<-|Zx+tX^7v1(nLEMz+FA(Vu=&lr@i%_r>io5Ej3qgvws#2;kN-aKOFk(}p z#$w4mvd&mnLCfqGB`LW%tTQXT~$@pwWz4*(Z$7u`~3X;?Ck6f-uOMADC8`%H49ug9F8Y$ zw_8+IRf)E?w)=F~D6T0AgF(40thghvTO@bbp`oEcsi>%U%r*rBP;F6Pqt;fdRTLK& z>)!xC_VxAkhJ(#!6RoYS59m#UO~C*#0w5d#&H*ynH51s~l9G~3PA->Ap>jP%V%H7; z1$bs+Zcu>R9*^fGmE?+(-EJ4{?d|vr-^j>_mM?&1XlTeop!aHPYwM^Sb=B3?ZURv7 zN9E<^df;4gaBv`wkB@cT+uMthZf$OE#_0YhP1;0PS65oCtgL+9(a~Wg;GAGQS@Lv2 zkN}h`N1!eQU0hu3oSU1o(cP$Wa&nTu!eDWr*}!96BogVHo}P|wZ*Lo!n{BzQY=b5*FE0apfWSv{QAJ{HZLNQP zem;yw6#{1^;uGuZ>*=Yfskc2nJ!4n)Ad9ee={G;^@9!H;&ZqE2X`<2Sx8B~~uQ}N? z!#RA{$lSzt+5M1{!p76PmY3|<5RSAL&84NK2CzIy@&xf8fJSJCngW4N5yyPM&Jfr$uh-k@bUF=s0dG-KZhD`{`3D>TQ-Os; z#w#l;;f;+A00-HDHurrf6dIy?@=((>&<&onoKqxC$uC;-AG8mSL?SV4mQhBw zj*gB7W@ctSFDxuPr@!!0KgLYy`Z|>GFQSP5EPn+U0OR;~TRRy%rT_o{07*qoM6N<$ Ef@zSrumAu6 diff --git a/lms/askbot/skins/mitx/media/images/vote-favorite-on.png b/lms/askbot/skins/mitx/media/images/vote-favorite-on.png deleted file mode 100755 index 1f9c14ab0813a1aec1f66b12c3eebe7232be3d8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1023 zcmVZd<5{Le6mt|)_<`GX($dlRu2ZJkuE zjf4$Qewch0=TDhyPWI*W3&@@n;Mrh z;ON^;+o1J6x+lSyC4yAc5*r#_RRe6^%F}2A*z}DOqn}Ca7lL#(u})I%7x#^k&|B0; z`f()bM-h)+;pZ4u$ALJ}P;Wvb3dM-H#z&Yj5-&MXQ!CKC#TXEuPEEBSJ=cPnS)ej| z2r5#+g@;jQ$TU_*6Ij=36b6CwjWTT^%5_m~{H>S28)%4W9OsGaYMC6L=yK8ysOFtZ z$a|Cc`qnVdXsKFY-eyhS#>TZMyvv&Gk-Z`#?>^Zjhh+Uaj*dLD2Glrl0XhE%M&6JK zdqZ9sxMdI+<1Dr0Qu()0dB28}pC5!-B*l|clf(rIB=P3C6)a-E6moW+nx^tEqNfk1 zhaN6W(@j2{T4UmW|9SG(9X_!#|lMVmx<&Y38Ta_F{^dJ0jyZ z^KE3Yfqc<E7fl_u~mXc`B_ShF#sjOqSPbOw6(spucpG!yqP5!xrMP zXa--)`><8~qDbZjaUY(43Ik6LqKX$#+j`!7QB^cQueWs7N thq=s2qJz(mO1EpR@jr*ce;$7X7ywPEpB^Im6SDvS002ovPDHLkV1mKF-a7yQ diff --git a/lms/askbot/skins/mitx/media/images/wiki.png b/lms/askbot/skins/mitx/media/images/wiki.png deleted file mode 100644 index 06d487f3e2a76ed2783f6c3f95b56bd2e2249680..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5178 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 diff --git a/lms/askbot/skins/mitx/media/images/youtube-sharing.png b/lms/askbot/skins/mitx/media/images/youtube-sharing.png deleted file mode 100644 index a26b18121b8ac99b19bec12d907a0840bd18b208..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1396 zcmV-)1&jKLP)wb%bGfoP)4K!F|Djf@^AOL{U*uutp#k<@f-*(TEzng*=RbQ0>^UBmCgJygXrZ zqObtR@H>nEy3vf~7!JX{!Vl&*4;1q;I+q8Yv2OB&Xw_r$j zF~Z?+h=ha$k(ih$A|oRO^9(NGM-<`^uEC9^ScO^?=!Nm|@xFB;A|lLplS?q9Kamtn zup5SA1$;Z`?(P;nJv|~TD@({ZgI|y-cUp?Cu>qTL2n+P!=H_O>I==T?IkU8VZV4v% zgmz3tLnI|739r}d+ivRAsY1>M97h7$;Fgi=@h(0`u^xQk!Uf+tlP6DB?{0-5-5@y9 zPVg}81hEUk41W0Vp>MmKoE#x%4UQlYKcEO-p-O7<7u?#~>RTs0Jzc$f2@Dg#nRbHp zm&O$!cpXk58dq=;+p!Eca0f*;gH!N839hgcT%p9?$H)M|@t7cQk4G{3VK8zq5z#h- z9k`|hH`)oVR)TLLB0%skjFi!1k&HA@tVQqvCHTCZ;5udD z>u^{EpO$C235ddbTGSFOhv5&w<1B)YE5WDi1bdW)J2BiM*gV#1k%znT_DSr=CQLyo z?%^R?mzChp>;&g)&&Ep@!OhCmTRzUqZMUFA{(Kcqd?Mp3F+m1r`3W9{ z`%3T{JHeynx!jQ6w+KF`1m~d*E>xoe8?gb!sKt2X;zb#p?I(D?cH)?B_tbn|JB}m# z1b?Rmw;~@Oq8tQ+VAQ~gZ?O+vf~Tm#`tgf91V`Bo*8f=Mo58)ky=L%H`PfFxz(pj= z+sjY|7oJxRiB*^cZ(Cd2L@n5fUKmmX!M4AbcnTfbvphICIr*RMrcIl+S3Y(IALAY> zun9+T7OPQ?PJDrU`Iyn(-X707A|oTi3_huSFm&>%_#w2xh7JIH8AW5S5jc*1@`lhK48Q#fzaRfjUWe zUAb6)8|$!MT8Bz_P>#iz33X-qUhSoN6OU_h{e01~bkU+k zBBWqB9vGUfh(tJ3rarUM9*B^G^$&@fi*O;>$;2@jn!|8}6|Bu#7=E;%6sZ^hefnbz z+&Bs^3{9hY&9ZRe!tjIT6yj%#@CUex(>R2KIF8HchN0sVbLWsDL&_jjD_5=zD_Ec5 z*l9+D$cz021qG=c9UVf~)zuYzaCLRH2ry%@8CQb{y^W8M0Z~|3`1t4Z})EE4}3;r9G(Uv=hjtIX10000Ci diff --git a/lms/askbot/skins/mitx/media/style/auth.css b/lms/askbot/skins/mitx/media/style/auth.css deleted file mode 100644 index 33702758c8..0000000000 --- a/lms/askbot/skins/mitx/media/style/auth.css +++ /dev/null @@ -1,48 +0,0 @@ -#bigicon_providers, #smallicon_providers { - display: block; - padding: 0px; - width:600px; - margin:0px 0px 5px 0px; -} - -.provider_logo { - display: inline-block; - padding: 4px; - border: 1px solid #DDD; - text-align: center; - vertical-align: middle; -} - -.provider_logo.big { - height: 40px; - width: 90px; -} - -.provider_logo.small { - height: 32px; - width: 32px; -} - -.provider_logo.selected { - outline: 2px solid #FFF8C6; -} - -.provider_logo .provider_url { - display: none; -} - -.signin_form input[type="text"], .signin_form input[type="password"], .signin_form input[type="submit"] { - height: 28px; - line-height: 22px; - font-size: 140%; - border: 1px solid #999; -} - -.signin_form .icon_input { - padding-left: 20px; -} - -.or_label { - margin-top: 20px; - margin-bottom: 10px; -} \ No newline at end of file diff --git a/lms/askbot/skins/mitx/media/style/extra.css b/lms/askbot/skins/mitx/media/style/extra.css deleted file mode 100644 index 8877522b2e..0000000000 --- a/lms/askbot/skins/mitx/media/style/extra.css +++ /dev/null @@ -1,227 +0,0 @@ -div.header-wrapper-mitx header div.table-wrapper, div.header-wrapper-mitx header div.course-wrapper, div.header-wrapper-mitx header div.book-wrapper, div.header-wrapper-mitx header div.profile-wrapper, html body.askbot div.header-wrapper-mitx header section.main-content div.discussion-wrapper { - display: table; -width: 100%; } - -div.header-wrapper { - -webkit-box-shadow: inset 0 -1px 2px #732626; - -moz-box-shadow: inset 0 -1px 2px #732626; - -ms-box-shadow: inset 0 -1px 2px #732626; - -o-box-shadow: inset 0 -1px 2px #732626; - box-shadow: inset 0 -1px 2px #732626; - background: #993333; - border-bottom: 1px solid #fff; - overflow: hidden; - font-family: "Open Sans", "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif; - margin: 0 auto; - padding: 0; -} - -div.header-wrapper header { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - -o-box-sizing: border-box; - box-sizing: border-box; - padding: 0 22.652px; - margin: 0 auto; - max-width: 1400px; - min-width: 810px; - width: 100%; - text-align: left; - display: block; -} - -div.header-wrapper header hgroup { -float: left; } - -div.header-wrapper header hgroup:after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; -} - -div.header-wrapper header hgroup h1 { - border-right: 1px solid #862d2d; - color: #4d1919; - font-size: 20px; - font-weight: 800; - margin: 0 22.652px 0 0; - padding: 17px 22.652px 14px 0; - text-shadow: 0 1px 0 #bf4040; - line-height: 22.652px; - display: -moz-inline-box; - -moz-box-orient: vertical; - display: inline-block; - vertical-align: baseline; - zoom: 1; - *display: inline; - *vertical-align: auto; -} - -div.header-wrapper header hgroup h2 { - display: -moz-inline-box; - -moz-box-orient: vertical; - display: inline-block; - vertical-align: baseline; - zoom: 1; - *display: inline; *vertical-align: auto; - margin: 0 22.652px 0 0; - padding: 19px 22.652px 9px 0; - line-height: 22.652px; - border-right: 1px solid #862d2d; - -webkit-font-smoothing: antialiased; - font-size: 14px; - font-weight: bold; - letter-spacing: 1px; - text-transform: uppercase; -} - -div.header-wrapper header hgroup h2 a { - color: #fff; -text-decoration: none; } - -div.header-wrapper header hgroup h2 a:hover { -color: rgba(255, 255, 255, 0.7); } - - @media screen and (max-width: 920px) { - div.header-wrapper header hgroup { - border-bottom: 1px solid #862d2d; - display: block; - float: none; } - div.header-wrapper header hgroup h1 { - float: right; - border: 0; - margin-right: 0; - padding-right: 0; - - } - div.header-wrapper header hgroup h2 { - float: left; - border: 0; - margin-right: 0; - padding-right: 0; } } - -div.header-wrapper header nav { - float: left; - display: block; - margin: 0; - padding: 0; - text-shadow: 0 -1px 0 #732626; --webkit-font-smoothing: antialiased; } - -div.header-wrapper header nav ul { - display: inline-block; - padding: 19px 0 9px; -margin: 0; } - -div.header-wrapper header nav ul li { - margin-right: 22.652px; - display: inline-block; - margin-bottom: 0; -line-height: 22.652px; } - -div.header-wrapper header nav ul li a { - color: #fff; -text-decoration: none; } - -div.header-wrapper header nav ul li a:hover { - color: rgba(255, 255, 255, 0.7); - background-color: none; -text-decoration: none; } - -.content-wrapper { - /* margin: 0 auto; */ - padding: 0 20px; - max-width: 1300px; - min-width: 975px; - width: 100%; -} -#ContentLeft { - width: 83%; - margin-right: 2%; -} -#ContentRight { - width: 15%; -} -.short-summary { - width:98%; - background: none; -} -.short-summary h2 { - font-size:18px; -} -.short-summary .counts .item-count { - font-size: 20px; -} -#ground { - border: 0; - background: none; -} -#ground .content-wrapper { - border-top: 1px solid #ddd; - padding: 10px; -} -.powered-link { - color: #999; -} -.copyright a { - color: #bbb; -} -#searchBar { - float: left; - /* margin-left: 40px; */ -} -#scopeWrapper { - width: 60% !important; - min-width: 725px; - box-sizing: border-box; -} - -.question-page .question-content { - width: 95%; -} -.question-page .answer-table { - padding: 12px; -} -.question-page .comments div.controls { - float: none; -} -.question-page .tabBar-answer { - width: 100%; -} -#ContentFull { - float: left; - width: 100%; -} - -.user-stats-table .narrow { - width: 100%; -} -#askButton { - text-transform: capitalize; - font-size: 18px; - width: 15%; - overflow: hidden; -} -#secondaryHeader #scopeWrapper .scope-selector { - font-size: 15px; -} - -#secondaryHeader { - height: auto !important; -} -.tabBar { - font-family: "Open sans", sans-serif; -} -.rss { - display: none; -} -#question-table { - width: 100%; -} -h2.share-question { - font-weight: normal; - font-size: 16px; -} diff --git a/lms/askbot/skins/mitx/media/style/jquery.autocomplete.css b/lms/askbot/skins/mitx/media/style/jquery.autocomplete.css deleted file mode 100644 index 09b08192db..0000000000 --- a/lms/askbot/skins/mitx/media/style/jquery.autocomplete.css +++ /dev/null @@ -1,40 +0,0 @@ -.acInput { - width: 200px; -} -.acResults { - padding: 0px; - border: 1px solid WindowFrame; - background-color: #fff; - overflow: hidden; - -webkit-box-shadow: 0px 1px 1px #A7A7A7; - -moz-box-shadow: 0px 1px 1px #BFBFBF; - box-shadow: 0px 1px 1px #BFBFBF; -} - -.acResults ul { - width: 100%; - list-style-position: outside; - list-style: none; - padding: 0; - margin: 0; -} - -.acResults li { - margin: 0px; - padding: 2px 5px; - cursor: pointer; - display: block; - width: 100%; - font: menu; - font-size: 14px; - overflow: hidden; -} - -.acLoading { - background : url('../images/indicator.gif') right center no-repeat; -} - -.acSelect { - background-color: Highlight; - color: HighlightText; -} diff --git a/lms/askbot/skins/mitx/media/style/lib_style.less b/lms/askbot/skins/mitx/media/style/lib_style.less deleted file mode 100644 index 941c83ff96..0000000000 --- a/lms/askbot/skins/mitx/media/style/lib_style.less +++ /dev/null @@ -1,65 +0,0 @@ -/* General Predifined classes, read more in lesscss.org */ - -/* Variables for Colors*/ - -@header-color:#16160f; -@link:#1b79bd; -@question-link:#464646; -@button-label:#4a757f; -@section-title:#7ea9b3; -@info-text:#707070; -@info-text-dark:#525252; - -/* Variables for fonts*/ - -@body-font:Arial; /* "Trebuchet MS", sans-serif;*/ -@sort-font:Georgia, serif; -@main-font:'Yanone Kaffeesatz', sans-serif; -@secondary-font:Arial; - -/* Receive exactly positions for background Sprite */ - -.sprites(@hor,@vert,@back:url(../images/sprites.png)){ - background:@hor @vert @back no-repeat; -} - -/* CSS3 Elements */ - -.box-shadow (@hor: 0px, @vert: 0px, @blur: 5px, @shadow: #929292){ - -webkit-box-shadow: @arguments ; - -moz-box-shadow: @arguments; - box-shadow: @arguments; -} - -.text-shadow(@hor: 0px, @vert: 0px, @blur: 5px, @shadow: #929292){ - text-shadow: @arguments; - -moz-text-shadow: @arguments; - -webkit-text-shadow: @arguments; -} - -.rounded-corners(@radio: 5px){ - border-radius: @radio; - -ms-border-radius: @radio; - -moz-border-radius: @radio; - -webkit-border-radius: @radio; - -khtml-border-radius: @radio; -} - -.rounded-corners-top(@radio:5px){ - border-top-right-radius:@radio; - border-top-left-radius:@radio; - -moz-border-radius-topright:@radio; - -moz-border-radius-topleft:@radio; - -webkit-border-top-left-radius:@radio; - -webkit-border-top-right-radius:@radio; -} - -.rounded-corners-right(@radio:5px){ - border-top-right-radius:@radio; - border-bottom-right-radius:@radio; - -moz-border-radius-topright:@radio; - -moz-border-radius-bottomright:@radio; - -webkit-border-bottom-right-radius:@radio; - -webkit-border-top-right-radius:@radio; -} - diff --git a/lms/askbot/skins/mitx/media/style/openid.css b/lms/askbot/skins/mitx/media/style/openid.css deleted file mode 100644 index 0d201df2f4..0000000000 --- a/lms/askbot/skins/mitx/media/style/openid.css +++ /dev/null @@ -1,45 +0,0 @@ -#openid_form { - width: 470px; -} - #openid_form legend { - font-weight: bold; - } -#openid_choice { - display: none; -} -#openid_input_area { - clear: both; - padding: 10px; -} -#openid_btns, #openid_btns br { - clear: both; -} - #openid_highlight { - padding: 3px; - background-color: #FFFCC9; - float: left; - } - .openid_large_btn { - width: 100px; - height: 60px; - border: 1px solid #DDD; - margin: 3px; - float: left; - } - .openid_small_btn { - width: 24px; - height: 24px; - border: 1px solid #DDD; - margin: 3px; - float: left; - } - a.openid_large_btn:focus { - outline: none; - } - a.openid_large_btn:focus - { - -moz-outline-style: none; - } - .openid_selected { - border: 4px solid #DDD; - } diff --git a/lms/askbot/skins/mitx/media/style/prettify.css b/lms/askbot/skins/mitx/media/style/prettify.css deleted file mode 100644 index 10a37577c7..0000000000 --- a/lms/askbot/skins/mitx/media/style/prettify.css +++ /dev/null @@ -1,27 +0,0 @@ -/* Pretty printing styles. Used with prettify.js. */ - -.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 { 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; } -} diff --git a/lms/askbot/skins/mitx/media/style/style.css b/lms/askbot/skins/mitx/media/style/style.css deleted file mode 100644 index 487e7faf93..0000000000 --- a/lms/askbot/skins/mitx/media/style/style.css +++ /dev/null @@ -1,3165 +0,0 @@ -@import url(jquery.autocomplete.css); -/* General Predifined classes, read more in lesscss.org */ -/* Variables for Colors*/ -/* Variables for fonts*/ -/* "Trebuchet MS", sans-serif;*/ -/* Receive exactly positions for background Sprite */ -/* CSS3 Elements */ -/* Library of predifined less functions styles */ -/* ----- General HTML 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; - /*overflow: auto;*/ - - background-color: #F5F5F5; - padding-left: 5px; - padding-top: 5px; - /*width: 671px;*/ - - padding-bottom: 20px ! ie7; -} -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; -} -/* http://pathfindersoftware.com/2007/09/developers-note-2/ */ -* html .clearfix, * html .paginator { - height: 1; - overflow: visible; -} -+ html .clearfix, + html .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; -} -/* ----- Extra space above for messages ----- */ -body.user-messages { - margin-top: 2.4em; -} -/* ----- Custom positions ----- */ -.left { - float: left; -} -.right { - float: right; -} -.clean { - clear: both; -} -.center { - margin: 0 auto; - padding: 0; -} -/* ----- Notify message bar , check blocks/system_messages.html ----- */ -.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; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -.notify 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(../images/sprites.png) no-repeat; - cursor: pointer; - width: 20px; - height: 20px; -} -#closeNotify:hover { - background: -26px -5px url(../images/sprites.png) no-repeat; -} -/* ----- Header, check blocks/header.html ----- */ -#header { - margin-top: 0px; - background: #16160f; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -.content-wrapper { - /* wrapper positioning class */ - - width: 960px; - margin: auto; - position: relative; -} -#logo img { - padding: 5px 0px 5px 0px; - height: 75px; - width: auto; - float: left; -} -#userToolsNav { - /* Navigation bar containing login link or user information, check widgets/user_navigation.html*/ - - height: 20px; - padding-bottom: 5px; -} -#userToolsNav a { - height: 35px; - text-align: right; - margin-left: 20px; - text-decoration: underline; - color: #d0e296; - font-size: 16px; -} -#userToolsNav a:first-child { - margin-left: 0; -} -#userToolsNav a#ab-responses { - margin-left: 3px; -} -#userToolsNav .user-info, #userToolsNav .user-micro-info { - color: #b5b593; -} -#userToolsNav a img { - vertical-align: middle; - margin-bottom: 2px; -} -#userToolsNav .user-info a { - margin: 0; - text-decoration: none; -} -#metaNav { - /* Top Navigation bar containing links for tags, people and badges, check widgets/header.html */ - - float: right; - /* for #header.with-logo it is modified */ - -} -#metaNav 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; -} -#metaNav a:hover { - text-decoration: underline; -} -#metaNav a.on { - font-weight: bold; - color: #FFF; - text-decoration: none; -} -#metaNav a.special { - font-size: 18px; - color: #B02B2C; - font-weight: bold; - text-decoration: none; -} -#metaNav a.special:hover { - text-decoration: underline; -} -#metaNav #navTags { - background: -50px -5px url(../images/sprites.png) no-repeat; -} -#metaNav #navUsers { - background: -125px -5px url(../images/sprites.png) no-repeat; -} -#metaNav #navBadges { - background: -210px -5px url(../images/sprites.png) no-repeat; -} -#header.with-logo #userToolsNav { - position: absolute; - bottom: 0; - right: 0px; -} -#header.without-logo #userToolsNav { - float: left; - margin-top: 7px; -} -#header.without-logo #metaNav { - margin-bottom: 7px; -} -#secondaryHeader { - /* Div containing Home button, scope navigation, search form and ask button, check blocks/secondary_header.html */ - - height: 55px; - background: #e9e9e1; - border-bottom: #d3d3c2 1px solid; - border-top: #fcfcfc 1px solid; - margin-bottom: 10px; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -#secondaryHeader #homeButton { - border-right: #afaf9e 1px solid; - background: -6px -36px url(../images/sprites.png) no-repeat; - height: 55px; - width: 43px; - display: block; - float: left; -} -#secondaryHeader #homeButton:hover { - background: -51px -36px url(../images/sprites.png) no-repeat; -} -#secondaryHeader #scopeWrapper { - width: 688px; - float: left; -} -#secondaryHeader #scopeWrapper a { - display: block; - float: left; -} -#secondaryHeader #scopeWrapper .scope-selector { - font-size: 21px; - color: #5a5a4b; - height: 55px; - line-height: 55px; - margin-left: 24px; -} -#secondaryHeader #scopeWrapper .on { - background: url(../images/scopearrow.png) no-repeat center bottom; -} -#secondaryHeader #scopeWrapper .ask-message { - font-size: 24px; -} -#searchBar { - /* Main search form , check widgets/search_bar.html */ - - display: inline-block; - background-color: #fff; - width: 412px; - border: 1px solid #c9c9b5; - float: right; - height: 42px; - margin: 6px 0px 0px 15px; -} -#searchBar .searchInput, #searchBar .searchInputCancelable { - font-size: 30px; - height: 40px; - font-weight: 300; - background: #FFF; - border: 0px; - color: #484848; - padding-left: 10px; - font-family: Arial; - vertical-align: middle; -} -#searchBar .searchInput { - width: 352px; -} -#searchBar .searchInputCancelable { - width: 317px; -} -#searchBar .logoutsearch { - width: 337px; -} -#searchBar .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(../images/sprites.png) no-repeat; - cursor: pointer; -} -#searchBar .searchBtn:hover { - background: -146px -36px url(../images/sprites.png) no-repeat; -} -#searchBar .cancelSearchBtn { - font-size: 30px; - color: #ce8888; - background: #fff; - height: 42px; - border: 0px; - border-left: #deded0 1px solid; - text-align: center; - width: 35px; - cursor: pointer; -} -#searchBar .cancelSearchBtn:hover { - color: #d84040; -} -body.anon #searchBar { - width: 500px; -} -body.anon #searchBar .searchInput { - width: 440px; -} -body.anon #searchBar .searchInputCancelable { - width: 405px; -} -#askButton { - /* check blocks/secondary_header.html and widgets/ask_button.html*/ - - background: url(../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; -} -#askButton:hover { - text-decoration: none; - background: url(../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; -} -/* ----- Content layout, check two_column_body.html or one_column_body.html ----- */ -#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; -} -/* ----- Sidebar Widgets Box, check main_page/sidebar.html or question/sidebar.html ----- */ -.box { - background: #fff; - padding: 4px 0px 10px 0px; - width: 200px; - /* widgets for question template */ - - /* notify by email box */ - -} -.box p { - margin-bottom: 4px; -} -.box p.info-box-follow-up-links { - text-align: right; - margin: 0; -} -.box 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; -} -.box h3 { - color: #4a757f; - font-size: 18px; - text-align: left; - font-weight: normal; - font-family: 'Yanone Kaffeesatz', sans-serif; - padding-left: 0px; -} -.box .contributorback { - background: #eceeeb url(../images/contributorsback.png) no-repeat center left; -} -.box label { - color: #707070; - font-size: 15px; - display: block; - float: right; - text-align: left; - font-family: 'Yanone Kaffeesatz', sans-serif; - width: 80px; - margin-right: 18px; -} -.box #displayTagFilterControl label { - /*Especial width just for the display tag filter box in index page*/ - - width: 160px; -} -.box ul { - margin-left: 22px; -} -.box li { - list-style-type: disc; - font-size: 13px; - line-height: 20px; - margin-bottom: 10px; - color: #707070; -} -.box ul.tags { - list-style: none; - margin: 0; - padding: 0; - line-height: 170%; - display: block; -} -.box #displayTagFilterControl p label { - color: #707070; - font-size: 15px; -} -.box .inputs #interestingTagInput, .box .inputs #ignoredTagInput { - width: 153px; - padding-left: 5px; - border: #c9c9b5 1px solid; - height: 25px; -} -.box .inputs #interestingTagAdd, .box .inputs #ignoredTagAdd { - background: url(../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; -} -.box .inputs #interestingTagAdd:hover, .box .inputs #ignoredTagAdd:hover { - background: url(../images/small-button-blue.png) repeat-x bottom; -} -.box img.gravatar { - margin: 1px; -} -.box a.followed, .box a.follow { - background: url(../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; -} -.box a.followed:hover, .box a.follow:hover { - text-decoration: none; - background: url(../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; -} -.box a.followed div.unfollow { - display: none; -} -.box a.followed:hover div { - display: none; -} -.box a.followed:hover div.unfollow { - display: inline; - color: #a05736; -} -.box .favorite-number { - padding: 5px 0 0 5px; - font-size: 100%; - font-family: Arial; - font-weight: bold; - color: #777; - text-align: center; -} -.box .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; -} -.statsWidget p strong { - float: right; - padding-right: 10px; -} -.questions-related { - word-wrap: break-word; -} -.questions-related p { - line-height: 20px; - padding: 4px 0px 4px 0px; - font-size: 16px; - font-weight: normal; - border-bottom: #cccccc 1px solid; -} -.questions-related a { - font-size: 13px; -} -/* tips and markdown help are widgets for ask template */ -#tips li { - color: #707070; - font-size: 13px; - list-style-image: url(../images/tips.png); -} -#tips a { - font-size: 16px; -} -#markdownHelp li { - color: #707070; - font-size: 13px; -} -#markdownHelp a { - font-size: 16px; -} -/* ----- Sorting top Tab, check main_page/tab_bar.html ------*/ -.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; -} -.tabBar h2 { - float: left; -} -.tabsA, .tabsC { - float: right; - position: relative; - display: block; - height: 20px; -} -/* tabsA - used for sorting */ -.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: #ffffff url(../images/feed-icon-small.png) no-repeat center right; - float: right; - font-family: Georgia, serif; - font-size: 16px; -} -.rss:hover { - color: #F4A731 !important; -} -/* ----- Headline, containing number of questions and tags selected, check main_page/headline.html ----- */ -#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; -} -.search-tips a { - text-decoration: underline; - color: #1b79bd; -} -/* ----- Question list , check main_page/content.html and macros/macros.html----- */ -#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(../images/summary-background.png) repeat-x; -} -.short-summary h2 { - font-size: 24px; - font-weight: normal; - line-height: 26px; - padding-left: 0; - margin-bottom: 6px; - display: block; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -.short-summary a { - color: #464646; -} -.short-summary .userinfo { - text-align: right; - line-height: 16px; - font-family: Arial; - padding-right: 4px; -} -.short-summary .userinfo .relativetime, .short-summary span.anonymous { - font-size: 11px; - clear: both; - font-weight: normal; - color: #555; -} -.short-summary .userinfo a { - font-weight: bold; - font-size: 11px; -} -.short-summary .counts { - float: right; - margin: 4px 0 0 5px; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -.short-summary .counts .item-count { - padding: 0px 5px 0px 5px; - font-size: 25px; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -.short-summary .counts .votes div, -.short-summary .counts .views div, -.short-summary .counts .answers div, -.short-summary .counts .favorites div { - margin-top: 3px; - font-size: 14px; - line-height: 14px; - color: #646464; -} -.short-summary .tags { - margin-top: 0; -} -.short-summary .votes, -.short-summary .answers, -.short-summary .favorites, -.short-summary .views { - text-align: center; - margin: 0 3px; - padding: 8px 2px 0px 2px; - width: 51px; - float: right; - height: 44px; - border: #dbdbd4 1px solid; -} -.short-summary .votes { - background: url(../images/vote-background.png) repeat-x; -} -.short-summary .answers { - background: url(../images/answers-background.png) repeat-x; -} -.short-summary .views { - background: url(../images/view-background.png) repeat-x; -} -.short-summary .no-votes .item-count { - color: #b1b5b6; -} -.short-summary .some-votes .item-count { - color: #4a757f; -} -.short-summary .no-answers .item-count { - color: #b1b5b6; -} -.short-summary .some-answers .item-count { - color: #eab243; -} -.short-summary .no-views .item-count { - color: #b1b5b6; -} -.short-summary .some-views .item-count { - color: #d33f00; -} -.short-summary .accepted .item-count { - background: url(../images/accept.png) no-repeat top right; - display: block; - text-align: center; - width: 40px; - color: #eab243; -} -.short-summary .some-favorites .item-count { - background: #338333; - color: #d0f5a9; -} -.short-summary .no-favorites .item-count { - background: #eab243; - color: yellow; -} -/* ----- Question list Paginator , check main_content/pager.html and macros/utils_macros.html----- */ -.evenMore { - font-size: 13px; - color: #707070; - padding: 15px 0px 10px 0px; - clear: both; -} -.evenMore 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; -} -.paginator .prev a, -.paginator .prev a:visited, -.paginator .next a, -.paginator .next a:visited { - background-color: #fff; - color: #777; - padding: 2px 4px 3px 4px; -} -.paginator a { - color: #7ea9b3; -} -.paginator .prev { - margin-right: .5em; -} -.paginator .next { - margin-left: .5em; -} -.paginator .page a, .paginator .page a:visited, .paginator .curr { - padding: .25em; - background-color: #fff; - margin: 0em .25em; - color: #ff; -} -.paginator .curr { - background-color: #8ebcc7; - color: #fff; - font-weight: bold; -} -.paginator .next a, .paginator .prev a { - color: #7ea9b3; -} -.paginator .page a:hover, -.paginator .curr a:hover, -.paginator .prev a:hover, -.paginator .next a:hover { - color: #8C8C8C; - background-color: #E1E1E1; - text-decoration: none; -} -.paginator .text { - color: #777; - padding: .3em; -} -.paginator .paginator-container-left { - padding: 5px 0 10px 0; -} -/* ----- Tags Styles ----- */ -/* tag formatting is also copy-pasted in template - because it must be the same in the emails - askbot/models/__init__.py:format_instant_notification_email() -*/ -/* tag cloud */ -.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, ul.tags.marked-tags, ul#related-tags { - list-style: none; - margin: 0; - padding: 0; - line-height: 170%; - display: block; -} -ul.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, ul#ab-user-tags li { - width: 160px; - margin: 5px; -} -ul#related-tags li { - margin: 0 5px 8px 0; - float: left; - clear: left; -} -/* .tag-left and .tag-right are for the sliding doors decoration of tags */ -.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; - /* .box-shadow(0px,1px,0px,#88a8a8);*/ - - 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, .tags span.tag-right { - color: #585858; - text-decoration: none; -} -.tags 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; -} -.delete-icon: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; -} -/* ----- Ask and Edit Question Form template----- */ -.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; -} -#askFormBar p { - margin: 0 0 5px 0; - font-size: 14px; - color: #525252; - line-height: 1.4; -} -#askFormBar .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(../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(../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 { - /*adjustment for editor preview*/ - - 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: 717px; -} -#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; -} -.wmd-preview p { - margin-bottom: 14px; - line-height: 1.4; - font-size: 14px; -} -.wmd-preview pre { - background-color: #E7F1F8; -} -.wmd-preview blockquote { - background-color: #eee; -} -.wmd-preview IMG { - max-width: 600px; -} -.preview-toggle { - width: 100%; - color: #b6a475; - /*letter-spacing:1px;*/ - - text-align: left; -} -.preview-toggle 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; -} -.question-options 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 template ----- */ -.question-page h1 { - padding-top: 0px; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -.question-page h1 a { - color: #464646; - font-size: 30px; - font-weight: normal; - line-height: 1; -} -.question-page p.rss { - float: none; - clear: both; - padding: 3px 0 0 23px; - font-size: 15px; - width: 110px; - background-position: center left; - margin-left: 0px !important; -} -.question-page p.rss a { - font-family: 'Yanone Kaffeesatz', sans-serif; - vertical-align: top; -} -.question-page .question-content { - float: right; - width: 682px; - margin-bottom: 10px; -} -.question-page #question-table { - float: left; - border-top: #f0f0f0 1px solid; -} -.question-page #question-table, .question-page .answer-table { - margin: 6px 0 6px 0; - border-spacing: 0px; - /* width: 670px; */ - padding-right: 10px; -} -.question-page .answer-table { - margin-top: 0px; - border-bottom: 1px solid #D4D4D4; - /* float: right; */ -} -.question-page .answer-table td, .question-page #question-table td { - width: 20px; - vertical-align: top; -} -.question-page .question-body, .question-page .answer-body { - overflow: auto; - margin-top: 10px; - font-family: Arial; - color: #4b4b4b; -} -.question-page .question-body p, .question-page .answer-body p { - margin-bottom: 14px; - line-height: 1.4; - font-size: 14px; - padding: 0px 5px 5px 0px; -} -.question-page .question-body a, .question-page .answer-body a { - color: #1b79bd; -} -.question-page .question-body li, .question-page .answer-body li { - margin-bottom: 7px; -} -.question-page .question-body IMG, .question-page .answer-body IMG { - max-width: 600px; -} -.question-page .post-update-info-container { - float: right; - width: 175px; -} -.question-page .post-update-info { - background: #ffffff url(../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; -} -.question-page .post-update-info p { - line-height: 13px; - font-size: 11px; - margin: 0 0 2px 1px; - padding: 0; -} -.question-page .post-update-info a { - color: #444; -} -.question-page .post-update-info .gravatar { - float: left; - margin-right: 4px; -} -.question-page .post-update-info p.tip { - color: #444; - line-height: 13px; - font-size: 10px; -} -.question-page .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; -} -.question-page .post-controls 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; -} -.question-page .post-controls a:hover { - background-color: #f5f0c9; - border-radius: 3px; - -ms-border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - -khtml-border-radius: 3px; -} -.question-page .post-controls .sep { - color: #ccc; - float: right; - height: 18px; - font-size: 18px; -} -.question-page .post-controls .question-delete, .question-page .answer-controls .question-delete { - background: url(../images/delete.png) no-repeat center left; - padding-left: 16px; -} -.question-page .post-controls .question-flag, .question-page .answer-controls .question-flag { - background: url(../images/flag.png) no-repeat center left; -} -.question-page .post-controls .question-edit, .question-page .answer-controls .question-edit { - background: url(../images/edit2.png) no-repeat center left; -} -.question-page .post-controls .question-retag, .question-page .answer-controls .question-retag { - background: url(../images/retag.png) no-repeat center left; -} -.question-page .post-controls .question-close, .question-page .answer-controls .question-close { - background: url(../images/close.png) no-repeat center left; -} -.question-page .post-controls .permant-link, .question-page .answer-controls .permant-link { - background: url(../images/link.png) no-repeat center left; -} -.question-page .tabBar { - width: 100%; -} -.question-page #questionCount { - float: left; - font-family: 'Yanone Kaffeesatz', sans-serif; - line-height: 15px; -} -.question-page .question-img-upvote, -.question-page .question-img-downvote, -.question-page .answer-img-upvote, -.question-page .answer-img-downvote { - width: 25px; - height: 20px; - cursor: pointer; -} -.question-page .question-img-upvote, .question-page .answer-img-upvote { - background: url(../images/vote-arrow-up-new.png) no-repeat; -} -.question-page .question-img-downvote, .question-page .answer-img-downvote { - background: url(../images/vote-arrow-down-new.png) no-repeat; -} -.question-page .question-img-upvote:hover, -.question-page .question-img-upvote.on, -.question-page .answer-img-upvote:hover, -.question-page .answer-img-upvote.on { - background: url(../images/vote-arrow-up-on-new.png) no-repeat; -} -.question-page .question-img-downvote:hover, -.question-page .question-img-downvote.on, -.question-page .answer-img-downvote:hover, -.question-page .answer-img-downvote.on { - background: url(../images/vote-arrow-down-on-new.png) no-repeat; -} -.question-page #fmanswer_button { - margin: 8px 0px ; -} -.question-page .question-img-favorite:hover { - background: url(../images/vote-favorite-on.png); -} -.question-page div.comments { - padding: 0; -} -.question-page #comment-title { - font-weight: bold; - font-size: 23px; - color: #7ea9b3; - width: 200px; - float: left; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -.question-page .comments { - font-size: 12px; - clear: both; - /* A small hack to solve 1px problem on webkit browsers */ - -} -.question-page .comments div.controls { - clear: both; - float: left; - width: 100%; - margin: 3px 0 20px 5px; -} -.question-page .comments .controls a { - color: #988e4c; - padding: 0 3px 2px 22px; - font-family: Arial; - font-size: 13px; - background: url(../images/comment.png) no-repeat center left; -} -.question-page .comments .controls a:hover { - background-color: #f5f0c9; - text-decoration: none; -} -.question-page .comments .button { - color: #988e4c; - font-size: 11px; - padding: 3px; - cursor: pointer; -} -.question-page .comments a { - background-color: inherit; - color: #1b79bd; - padding: 0; -} -.question-page .comments form.post-comments { - margin: 3px 26px 0 42px; -} -.question-page .comments form.post-comments textarea { - font-size: 13px; - line-height: 1.3; -} -.question-page .comments 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; -} -@media screen and (-webkit-min-device-pixel-ratio:0) { - textarea { - padding-left: 3px !important; - } -} -.question-page .comments input { - margin-left: 10px; - margin-top: 1px; - vertical-align: top; - width: 100px; -} -.question-page .comments button { - background: url(../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; -} -.question-page .comments button:hover { - background: url(../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; -} -.question-page .comments .counter { - display: inline-block; - width: 245px; - float: right; - color: #b6a475 !important; - vertical-align: top; - font-family: Arial; - float: right; - text-align: right; -} -.question-page .comments .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: #ffffff url(../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; -} -.question-page .comments div.comment:hover { - background-color: #efefef; -} -.question-page .comments a.author { - background-color: inherit; - color: #1b79bd; - padding: 0; -} -.question-page .comments a.author:hover { - text-decoration: underline; -} -.question-page .comments span.delete-icon { - background: url(../images/close-small.png) no-repeat; - border: 0; - width: 14px; - height: 14px; -} -.question-page .comments span.delete-icon: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; -} -.question-page .comments .content { - margin-bottom: 7px; -} -.question-page .comments .comment-votes { - float: left; - width: 37px; - line-height: 130%; - padding: 6px 5px 6px 3px; -} -.question-page .comments .comment-body { - line-height: 1.3; - margin: 3px 26px 0 46px; - padding: 5px 3px; - color: #666; - font-size: 13px; -} -.question-page .comments .comment-body .edit { - padding-left: 6px; -} -.question-page .comments .comment-body p { - font-size: 13px; - line-height: 1.3; - margin-bottom: 3px; - padding: 0; -} -.question-page .comments .comment-delete { - float: right; - width: 14px; - line-height: 130%; - padding: 8px 6px; -} -.question-page .comments .upvote { - margin: 0px; - padding-right: 17px; - padding-top: 2px; - text-align: right; - height: 20px; - font-size: 13px; - font-weight: bold; - color: #777; -} -.question-page .comments .upvote.upvoted { - color: #d64000; -} -.question-page .comments .upvote.hover { - background: url(../images/go-up-grey.png) no-repeat; - background-position: right 1px; -} -.question-page .comments .upvote:hover { - background: url(../images/go-up-orange.png) no-repeat; - background-position: right 1px; -} -.question-page .comments .help-text { - float: right; - text-align: right; - color: gray; - margin-bottom: 0px; - margin-top: 0px; - line-height: 50%; -} -.question-page #questionTools { - font-size: 22px; - margin-top: 11px; - text-align: left; -} -.question-page .question-status { - margin-top: 10px; - margin-bottom: 15px; - padding: 20px; - background-color: #fef7cc; - text-align: center; - border: #e1c04a 1px solid; -} -.question-page .question-status h3 { - font-size: 20px; - color: #707070; - font-weight: normal; -} -.question-page .vote-buttons { - float: left; - text-align: center; - padding-top: 2px; - margin: 10px 10px 0px 3px; -} -.question-page .vote-buttons IMG { - cursor: pointer; -} -.question-page .vote-number { - font-family: 'Yanone Kaffeesatz', sans-serif; - padding: 0px 0 5px 0; - font-size: 25px; - font-weight: bold; - color: #777; -} -.question-page .vote-buttons .notify-sidebar { - text-align: left; - width: 120px; -} -.question-page .vote-buttons .notify-sidebar label { - vertical-align: top; -} -.question-page .tabBar-answer { - margin-bottom: 15px; - padding-left: 7px; - width: 723px; - margin-top: 10px; -} -.question-page .answer .vote-buttons { - float: left; -} -.question-page .accepted-answer { - background-color: #f7fecc; - border-bottom-color: #9BD59B; -} -.question-page .accepted-answer .vote-buttons { - width: 27px; - margin-right: 10px; - margin-top: 10px; -} -.question-page .answer .post-update-info a { - color: #444444; -} -.question-page .answered { - background: #CCC; - color: #999; -} -.question-page .answered-accepted { - background: #DCDCDC; - color: #763333; -} -.question-page .answered-accepted strong { - color: #E1E818; -} -.question-page .answered-by-owner { - background: #F1F1FF; -} -.question-page .answered-by-owner .comments .button { - background-color: #E6ECFF; -} -.question-page .answered-by-owner .comments { - background-color: #E6ECFF; -} -.question-page .answered-by-owner .vote-buttons { - margin-right: 10px; -} -.question-page .answer-img-accept:hover { - background: url(../images/vote-accepted-on.png); -} -.question-page .answer-body a { - color: #1b79bd; -} -.question-page .answer-body li { - margin-bottom: 0.7em; -} -.question-page #fmanswer { - color: #707070; - line-height: 1.2; - margin-top: 10px; -} -.question-page #fmanswer h2 { - font-family: 'Yanone Kaffeesatz', sans-serif; - color: #7ea9b3; - font-size: 24px; -} -.question-page #fmanswer label { - font-size: 13px; -} -.question-page .message { - padding: 5px; - margin: 0px 0 10px 0; -} -.facebook-share.icon, -.twitter-share.icon, -.linkedin-share.icon, -.identica-share.icon { - background: url(../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; -} -/* -----Content pages, Login, About, FAQ, Users----- */ -.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(../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(../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(../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(../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(../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(../images/small-button-blue.png) repeat-x bottom; -} -.openid-input { - background: url(../images/openid.gif) no-repeat; - padding-left: 15px; - cursor: pointer; -} -.openid-login-input { - background-position: center left; - background: url(../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%; -} -/* People page */ -.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 .user-micro-info { - color: #525252; -} -.user ul { - margin: 0; - list-style-type: none; -} -.user .thumb { - clear: both; - float: left; - margin-right: 4px; - display: inline; -} -/* tags page */ -.tabBar-tags { - width: 270px; - margin-bottom: 15px; -} -/* badges page */ -a.medal { - font-size: 17px; - line-height: 250%; - margin-right: 5px; - color: #333; - text-decoration: none; - background: url(../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; -} -a:hover.medal { - color: #333; - text-decoration: none; - background: url(../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; -} -/* profile page */ -.tabBar-profile { - width: 100%; - margin-bottom: 15px; - float: left; -} -.user-profile-page { - font-size: 13px; - color: #525252; -} -.user-profile-page p { - font-size: 13px; - line-height: 1.3; - color: #525252; -} -.user-profile-page .avatar img { - border: #eee 1px solid; - padding: 5px; -} -.user-profile-page h2 { - padding: 10px 0px 10px 0px; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -.user-details { - font-size: 13px; -} -.user-details h3 { - font-size: 16px; -} -.user-about { - background-color: #EEEEEE; - height: 200px; - line-height: 20px; - overflow: auto; - padding: 10px; - width: 90%; -} -.user-about 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(../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(../images/small-button-blue.png) repeat-x bottom; - text-decoration: none !important; -} -.follow-toggle .follow { - font-color: #000; - font-style: normal; -} -.follow-toggle .unfollow div.unfollow-red { - display: none; -} -.follow-toggle .unfollow:hover div.unfollow-red { - display: inline; - color: #fff; - font-weight: bold; - color: #A05736; -} -.follow-toggle .unfollow:hover div.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; - /*letter-spacing:0px*/ - - 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; -} -.karma-summary 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; -} -.karma-details 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 pages ----- */ -.revision { - margin: 10px 0 10px 0; - font-size: 13px; - color: #525252; -} -.revision p { - font-size: 13px; - line-height: 1.3; - color: #525252; -} -.revision h3 { - font-family: 'Yanone Kaffeesatz', sans-serif; - font-size: 21px; - padding-left: 0px; -} -.revision .header { - background-color: #F5F5F5; - padding: 5px; - cursor: pointer; -} -.revision .author { - background-color: #e9f3f5; -} -.revision .summary { - padding: 5px 0 10px 0; -} -.revision .summary 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; -} -.revision .answerbody { - padding: 10px 0 5px 10px; -} -.revision .revision-mark { - width: 150px; - text-align: left; - display: inline-block; - font-size: 11px; - overflow: hidden; -} -.revision .revision-mark .gravatar { - float: left; - margin-right: 4px; - padding-top: 5px; -} -.revision .revision-number { - font-size: 300%; - font-weight: bold; - font-family: sans-serif; -} -del, del .post-tag { - color: #C34719; -} -ins .post-tag, ins p, ins { - background-color: #E6F0A2; -} -/* ----- Red Popup notification ----- */ -.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; -} -.vote-notification h3 { - background: url(../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; -} -.vote-notification a { - color: #fb7321; - text-decoration: underline; - font-weight: bold; -} -/* ----- Footer links , check blocks/footer.html----- */ -#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; -} -#ground p { - margin-bottom: 0; -} -.footer-links { - color: #EEE; - text-align: left; - width: 500px; - float: left; -} -.footer-links a { - color: #e7e8a8; -} -.powered-link { - width: 500px; - float: left; - text-align: left; -} -.powered-link a { - color: #8ebcc7; -} -.copyright { - color: #616161; - width: 450px; - float: right; - text-align: right; -} -.copyright a { - color: #8ebcc7; -} -.copyright img.license-logo { - margin: 6px 0px 20px 10px; - float: right; -} -.notify-me { - float: left; -} -span.text-counter { - margin-right: 20px; -} -span.form-error { - color: #990000; - font-weight: normal; - margin-left: 5px; -} -ul.errorlist { - margin-bottom: 0; -} -p.form-item { - margin: 0px; -} -.deleted { - background: #F4E7E7 none repeat scroll 0 0; -} -/* openid styles */ -.form-row { - line-height: 25px; -} -table.form-as-table { - margin-top: 5px; -} -table.form-as-table ul { - list-style-type: none; - display: inline; -} -table.form-as-table li { - display: inline; -} -table.form-as-table td { - text-align: right; -} -table.form-as-table th { - text-align: left; - font-weight: normal; -} -table.ab-subscr-form { - width: 45em; -} -table.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-count-off { - color: #919191; - float: left; - text-align: center; -} - -.favorites-count { - color: #D4A849; - float: left; - text-align: center; -} -*/ -/* todo: get rid of this in html */ -.favorites-empty { - width: 32px; - height: 45px; - float: left; -} -.user-info-table { - margin-bottom: 10px; - border-spacing: 0; -} -/* todo: remove this hack? */ -.user-stats-table .narrow { - width: 660px; -} -.narrow .summary h3 { - padding: 0px; - margin: 0px; -} -.relativetime { - font-weight: bold; - text-decoration: none; -} -.narrow .tags { - float: left; -} -/* todo: make these more semantic */ -.user-action-1 { - font-weight: bold; - color: #333; -} -.user-action-2 { - font-weight: bold; - color: #CCC; -} -.user-action-3 { - color: #333; -} -.user-action-4 { - color: #333; -} -.user-action-5 { - color: darkred; -} -.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; -} -/* todo: make these more semantic */ -.post-type-1 a { - font-weight: bold; -} -.post-type-3 a { - font-weight: bold; -} -.post-type-5 a { - font-weight: bold; -} -.post-type-2 a { - color: #333; -} -.post-type-4 a { - color: #333; -} -.post-type-6 a { - color: #333; -} -.post-type-8 a { - color: #333; -} -.hilite { - background-color: #ff0; -} -.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; -} -a.offensive { - color: #999; -} -.message h1 { - padding-top: 0px; - font-size: 15px; -} -.message p { - margin-bottom: 0px; -} -p.space-above { - margin-top: 10px; -} -.warning { - color: red; -} -button::-moz-focus-inner { - padding: 0; - border: none; -} -.submit { - cursor: pointer; - /*letter-spacing:1px;*/ - - background-color: #D4D0C8; - height: 30px; - border: 1px solid #777777; - /* width:100px; */ - - font-weight: bold; - font-size: 120%; -} -.submit:hover { - text-decoration: underline; -} -.submit.small { - margin-right: 5px; - height: 20px; - font-weight: normal; - font-size: 12px; - padding: 1px 5px; -} -.submit.small: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 { - /* used in django.po */ - - 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; -} -.action-status span { - padding: 3px 5px 3px 5px; - background-color: #fff380; - /* nice yellow */ - - font-weight: normal; - -moz-border-radius: 5px; - -khtml-border-radius: 5px; - -webkit-border-radius: 5px; -} -.list-table td { - vertical-align: top; -} -/* these need to go */ -table.form-as-table .errorlist { - display: block; - margin: 0; - padding: 0 0 0 5px; - text-align: left; - font-size: 10px; - color: darkred; -} -table.form-as-table input { - display: inline; - margin-left: 4px; -} -table.form-as-table th { - vertical-align: bottom; - padding-bottom: 4px; -} -.form-row-vertical { - margin-top: 8px; - display: block; -} -.form-row-vertical label { - margin-bottom: 3px; - display: block; -} -/* above stuff needs to go */ -.text-align-right { - text-align: center; -} -ul.form-horizontal-rows { - list-style: none; - margin: 0; -} -ul.form-horizontal-rows li { - position: relative; - height: 40px; -} -ul.form-horizontal-rows label { - display: inline-block; -} -ul.form-horizontal-rows ul.errorlist { - list-style: none; - color: darkred; - font-size: 10px; - line-height: 10px; - position: absolute; - top: 2px; - left: 180px; - text-align: left; - margin: 0; -} -ul.form-horizontal-rows ul.errorlist li { - height: 10px; -} -ul.form-horizontal-rows label { - position: absolute; - left: 0px; - bottom: 6px; - margin: 0px; - line-height: 12px; - font-size: 12px; -} -ul.form-horizontal-rows 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; -} -ul.post-tags li { - margin-top: 4px; - margin-bottom: 3px; -} -ul.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; -} -#hideIgnoredTagsControl 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; -} -/* a workaround to set link colors correctly */ -.wmd-preview a { - color: #1b79bd; -} -.wmd-preview 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; -} -#responses div.face { - float: left; - text-align: center; - width: 54px; - padding: 3px; - overflow: hidden; -} -.response-parent { - margin-top: 18px; -} -.response-parent 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; -} -#re_sections .on { - font-weight: bold; -} -.avatar-page ul { - list-style: none; -} -.avatar-page li { - display: inline; -} -.user-profile-page .avatar p { - margin-bottom: 0px; -} -.user-profile-page .tabBar a#stats { - margin-left: 0; -} -.user-profile-page img.gravatar { - margin: 2px 0 3px 0; -} -.user-profile-page 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; -} -/* Pretty printing styles. Used with prettify.js. */ -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; -} -/* name conflict here */ -.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; - } -} -#leading-sidebar { - float: left; -} - -a.re_expand{ - color: #616161; - text-decoration:none; -} - -a.re_expand .re_content{ - display:none; - margin-left:77px; -} \ No newline at end of file diff --git a/lms/askbot/skins/mitx/media/style/style.less b/lms/askbot/skins/mitx/media/style/style.less deleted file mode 100644 index f7efdc18bb..0000000000 --- a/lms/askbot/skins/mitx/media/style/style.less +++ /dev/null @@ -1,3351 +0,0 @@ -@import url(jquery.autocomplete.css); -@import "lib_style.less"; /* Library of predifined less functions styles */ - -/* ----- General HTML Styles----- */ - -body { - background: #FFF; - font-size: 14px; - line-height: 150%; - margin: 0; - padding: 0; - color: #000; - font-family:@body-font; -} - -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:@link; - 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; - /*overflow: auto;*/ - background-color: #F5F5F5; - padding-left: 5px; - padding-top: 5px; - /*width: 671px;*/ - padding-bottom: 20px ! ie7; -} - -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; -} - -/* http://pathfindersoftware.com/2007/09/developers-note-2/ */ -* html .clearfix, -* html .paginator { - height: 1; - overflow: visible; -} -+ html .clearfix, -+ html .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; -} - -/* ----- Extra space above for messages ----- */ - -body.user-messages { - margin-top: 2.4em; -} - -/* ----- Custom positions ----- */ - -.left{float:left} -.right{float:right} -.clean{clear:both} -.center{ - margin: 0 auto; - padding: 0; -} - - -/* ----- Notify message bar , check blocks/system_messages.html ----- */ - -.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; - font-family:@main-font; - - 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; - .sprites(-6px,-5px); - cursor: pointer; - width:20px; - height:20px; -} - -#closeNotify:hover { - .sprites(-26px,-5px); -} - -/* ----- Header, check blocks/header.html ----- */ - -#header { - margin-top: 0px; - background: @header-color; - font-family:@main-font; -} - -.content-wrapper {/* wrapper positioning class */ - width: 960px; - margin: auto; - position:relative; -} - -#logo img{ - padding: 5px 0px 5px 0px; - height: 75px; - width: auto; - float: left; -} - -#userToolsNav {/* Navigation bar containing login link or user information, check widgets/user_navigation.html*/ - height: 20px; - padding-bottom:5px; - - a { - height: 35px; - text-align: right; - margin-left: 20px; - text-decoration: underline; - color:#d0e296; - font-size:16px; - } - - a:first-child { - margin-left: 0; - } - - a#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 {/* Top Navigation bar containing links for tags, people and badges, check widgets/header.html */ - float: right;/* for #header.with-logo it is modified */ - - 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; - } - - a:hover { - text-decoration: underline; - } - - a.on { - font-weight:bold; - color: #FFF; - text-decoration: none; - } - - a.special { - font-size: 18px; - color: #B02B2C; - font-weight: bold; - text-decoration: none; - } - - a.special:hover { - text-decoration: underline; - } - - #navTags{ - .sprites(-50px,-5px) - } - - #navUsers{ - .sprites(-125px,-5px) - } - - #navBadges{ - .sprites(-210px,-5px) - } -} - -#header.with-logo #userToolsNav { - position:absolute; - bottom: 0; - right:0px; -} - -#header.without-logo #userToolsNav { - float:left; - margin-top: 7px; -} - -#header.without-logo #metaNav { - margin-bottom: 7px; -} - -#secondaryHeader{ /* Div containing Home button, scope navigation, search form and ask button, check blocks/secondary_header.html */ - height:55px; - background:#e9e9e1; - border-bottom:#d3d3c2 1px solid; - border-top:#fcfcfc 1px solid; - margin-bottom:10px; - font-family:@main-font; - - #homeButton{ - border-right:#afaf9e 1px solid; - .sprites(-6px,-36px); - height:55px; - width:43px; - display:block; - float:left; - } - - #homeButton:hover{ - .sprites(-6px-45,-36px); - } - - #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(../images/scopearrow.png) no-repeat center bottom; - } - - .ask-message{ - font-size:24px; - } - } -} - -#searchBar { /* Main search form , check widgets/search_bar.html */ - 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:@body-font; - 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; - .sprites(-98px,-36px); - cursor:pointer; - } - - .searchBtn:hover { - .sprites(-98px-48,-36px); - } - - .cancelSearchBtn { - font-size: 30px; - color: #ce8888; - background:#fff; - height: 42px; - border:0px; - border-left:#deded0 1px solid; - text-align: center; - width: 35px; - cursor:pointer; - } - - .cancelSearchBtn:hover { - color: #d84040; - } -} - -body.anon { - #searchBar { - width: 500px; - .searchInput { - width: 440px; - } - - .searchInputCancelable { - width: 405px; - } - } -} - - -#askButton{ /* check blocks/secondary_header.html and widgets/ask_button.html*/ - background: url(../images/bigbutton.png) repeat-x bottom; - line-height:44px; - text-align:center; - width:200px; - height:42px; - font-size:23px; - color:@button-label; - margin-top:7px; - float:right; - text-transform:uppercase; - .rounded-corners(5px); - .box-shadow(1px, 1px, 2px, #636363) -} - -#askButton:hover{ - text-decoration:none; - background: url(../images/bigbutton.png) repeat-x top; - .text-shadow(0px, 1px, 0px, #c6d9dd) -} - -/* ----- Content layout, check two_column_body.html or one_column_body.html ----- */ - -#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; -} - -/* ----- Sidebar Widgets Box, check main_page/sidebar.html or question/sidebar.html ----- */ - -.box { - background: #fff; - padding: 4px 0px 10px 0px; - width:200px; - - p { - margin-bottom: 4px; - } - - p.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:@main-font; - } - h3{ - color:#4a757f; - font-size:18px; - text-align:left; - font-weight:normal; - font-family:@main-font; - padding-left:0px; - } - .contributorback{ - background: #eceeeb url(../images/contributorsback.png) no-repeat center left; - } - - label { - color: @info-text; - font-size:15px; - display: block; - float: right; - text-align:left; - font-family:@main-font; - width:80px; - margin-right:18px; - } - - #displayTagFilterControl label { /*Especial width just for the display tag filter box in index page*/ - width:160px; - } - - ul { - margin-left: 22px; - } - - li { - list-style-type: disc; - font-size: 13px; - line-height: 20px; - margin-bottom: 10px; - color:@info-text; - } - ul.tags { - list-style: none; - margin: 0; - padding: 0; - line-height: 170%; - display: block; - } - #displayTagFilterControl p label{ - color:@info-text; - font-size:15px; - } - - .inputs{ - #interestingTagInput, #ignoredTagInput{ - width:153px; - padding-left:5px; - border:#c9c9b5 1px solid; - height:25px; - } - #interestingTagAdd, #ignoredTagAdd{ - background:url(../images/small-button-blue.png) repeat-x top; - border:0; - color:@button-label; - font-weight:bold; - font-size:12px; - width:30px; - height:27px; - margin-top:-2px; - cursor:pointer; - .rounded-corners(4px); - .text-shadow(0px,1px,0px,#E6F6FA); - .box-shadow(1px, 1px, 2px, #808080); - - - } - #interestingTagAdd:hover, #ignoredTagAdd:hover{ - background:url(../images/small-button-blue.png) repeat-x bottom; - } - } - - img.gravatar { - margin:1px; - } - -/* widgets for question template */ - - a.followed, a.follow{ - background: url(../images/medium-button.png) top repeat-x; - height:34px; - line-height:34px; - text-align:center; - border:0; - font-family:@main-font; - color:@button-label; - font-weight:normal; - font-size:21px; - margin-top:3px; - - display:block; - width:120px; - text-decoration:none; - .rounded-corners(4px); - .box-shadow(1px, 1px, 2px, #636363); - .center; - } - - a.followed:hover, a.follow:hover{ - text-decoration:none; - background: url(../images/medium-button.png) bottom repeat-x; - .text-shadow(0px, 1px, 0px, #c6d9dd); - } - - a.followed div.unfollow{ - display:none; - } - - a.followed:hover div{ - display:none; - } - a.followed:hover div.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 by email box */ - .notify-sidebar #question-subscribe-sidebar { - margin: 7px 0 0 3px; - } -} - -.statsWidget p{ - color:@info-text; - 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 and markdown help are widgets for ask template */ - -#tips{ - li{ - color:@info-text; - font-size:13px; - list-style-image: url(../images/tips.png); - } - a{ - font-size:16px; - } -} - -#markdownHelp{ - li{ - color:@info-text; - font-size:13px; - } - a{ - font-size:16px; - } -} - - -/* ----- Sorting top Tab, check main_page/tab_bar.html ------*/ - -.tabBar { - background-color: #eff5f6; - height: 30px; - margin-bottom: 3px; - margin-top: 3px; - float:right; - font-family:@sort-font; - font-size:16px; - .rounded-corners(5px); -} - -.tabBar h2 { - float: left; -} - -.tabsA, .tabsC { - float: right; - position: relative; - display: block; - height: 20px; -} - -/* tabsA - used for sorting */ -.tabsA { float: right; } -.tabsC { float: left; } - -.tabsA a, .tabsC a{ - - border-left: 1px solid #d0e1e4; - color: @section-title; - 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: @button-label; -} - -.tabsA a.rev.on, tabsA a.rev.on:hover { -} - -.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:#fff url(../images/feed-icon-small.png) no-repeat center right; - float:right; - font-family:@sort-font; - font-size:16px; -} - -.rss:hover { - color: #F4A731 !important; -} - -/* ----- Headline, containing number of questions and tags selected, check main_page/headline.html ----- */ - -#questionCount{ - font-weight:bold; - font-size:23px; - color:@section-title; - width:200px; - float:left; - margin-bottom:8px; - padding-top:6px; - font-family:@main-font; -} - -#listSearchTags{ - float:left; - margin-top:3px; - color:@info-text; - font-size:16px; - font-family:@main-font; -} - -ul#searchTags { - margin-left:10px; - float:right; - padding-top:2px; -} - -.search-tips { - font-size:16px; - line-height:17px; - color: @info-text; - margin:5px 0 10px 0; - padding:0px; - float:left; - font-family:@main-font; - - a { - text-decoration: underline; - color: @link; - } -} - -/* ----- Question list , check main_page/content.html and macros/macros.html----- */ - -#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(../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:@main-font; - } - - a { - color:@question-link; - } - - .userinfo { - text-align:right; - line-height:16px; - font-family:@body-font; - padding-right:4px; - } - - - .userinfo .relativetime, 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:@main-font; - } - - .counts .item-count { - padding:0px 5px 0px 5px; - font-size: 25px; - font-family:@main-font; - } - - .counts .votes div, - .counts .views div, - .counts .answers div, - .counts .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(../images/vote-background.png) repeat-x; - } - - .answers{ - background:url(../images/answers-background.png) repeat-x; - } - - .views { - background:url(../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(../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; - } - -} - -/* ----- Question list Paginator , check main_content/pager.html and macros/utils_macros.html----- */ - -.evenMore { - font-size: 13px; - color:@info-text; - padding:15px 0px 10px 0px; - clear:both; -} - -.evenMore a { - text-decoration: underline; - color:@link; -} - -.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, .prev a:visited, - .next a, .next a:visited { - background-color: #fff; - color: #777; - padding: 2px 4px 3px 4px; - } - a{ - color:@section-title; - } - .prev { - margin-right: .5em; - } - - .next { - margin-left: .5em; - } - - .page a, .page a:visited, .curr { - padding: .25em; - background-color: #fff; - margin: 0em .25em; - color: #ff; - } - - .curr { - background-color: #8ebcc7; - color: #fff; - font-weight: bold; - } - .next a, .prev a{ - color:@section-title - } - .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; - } - -} - -/* ----- Tags Styles ----- */ - -/* tag formatting is also copy-pasted in template - because it must be the same in the emails - askbot/models/__init__.py:format_instant_notification_email() -*/ - -/* tag cloud */ - -.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, -ul.tags.marked-tags, -ul#related-tags { - list-style: none; - margin: 0; - padding: 0; - line-height: 170%; - display: block; -} - -ul.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, -ul#ab-user-tags li { - width: 160px; - margin:5px; -} - -ul#related-tags li { - margin: 0 5px 8px 0; - float: left; - clear: left; -} - -/* .tag-left and .tag-right are for the sliding doors decoration of tags */ - -.tag-left { - cursor: pointer; - display: block; - float: left; - height: 17px; - margin: 0 5px 0 0; - padding: 0; - .box-shadow(0px,0px,5px,#d3d6d7); -} - -.tag-right { - background: #f3f6f6; - border:#fff 1px solid ; - border-top:#fff 2px solid; - outline:#cfdbdb 1px solid; - /* .box-shadow(0px,1px,0px,#88a8a8);*/ - 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:@body-font; - color:#717179; -} -.deletable-tag { - margin-right: 3px; - white-space: nowrap; - .rounded-corners-right(4px); -} - -.tags a.tag-right, -.tags span.tag-right { - color: #585858; - text-decoration: none; - -} -.tags 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:@body-font; - .rounded-corners-right(4px); - .text-shadow(0px,1px,0px,#7ea0a0) - -} -.delete-icon: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; -} - -/* ----- Ask and Edit Question Form template----- */ - -.section-title{ - color:@section-title; - font-family:@main-font; - 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:@info-text-dark; - 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, .edit-question-page{ - - div#question-list { - float: none; - border-bottom:#f0f0ec 1px solid; - float:left; - margin-bottom:10px; - a{ - line-height:30px; - } - - } - - div#question-list h2 { - font-size: 13px; - padding-bottom: 0; - color:@link; - border-top:#f0f0ec 1px solid; - border-left:#f0f0ec 1px solid; - height:30px; - line-height:30px; - font-weight:normal; - } - - 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; - .rounded-corners(3px); - } - label{ - color:@info-text-dark; - font-size:13px; - } - - #id_tags{ - border:#cce6ec 3px solid; - height:25px; - padding-left:5px; - width:395px; - font-size:14px; - } -} - -.title-desc { - color: @info-text; - font-size: 13px; -} - -#fmanswer input.submit, -.ask-page input.submit, -.edit-question-page input.submit { - float: left; - background: url(../images/medium-button.png) top repeat-x; - height:34px; - border:0; - font-family:@main-font; - color:@button-label; - font-weight:normal; - font-size:21px; - margin-top:3px; - .rounded-corners(4px); - .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(../images/medium-button.png) bottom repeat-x; - .text-shadow(0px, 1px, 0px, #c6d9dd) -} -#editor { /*adjustment for editor preview*/ - 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:717px; -} - -#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:@body-font; - - p{ - margin-bottom:14px; - line-height:1.4; - font-size:14px; - } -} - -.wmd-preview pre { - background-color: #E7F1F8; - -} - -.wmd-preview blockquote { - background-color: #eee; -} - -.wmd-preview IMG { - max-width: 600px; -} - -.preview-toggle { - width: 100%; - color: #b6a475; /*letter-spacing:1px;*/ - text-align: left; -} - -.preview-toggle 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; -} -.question-options 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:@info-text-dark; - - #id_revision{ - font-size:14px; - margin-top:5px; - margin-bottom:5px; - } - #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; - } - #id_summary{ - border:#cce6ec 3px solid; - height:25px; - padding-left:5px; - width:395px; - font-size:14px; - } - .title-desc{ - margin-bottom:10px; - } -} - -/* ----- Question template ----- */ - -.question-page{ - - h1{ - padding-top:0px; - font-family:@main-font; - } - - h1 a{ - color:@question-link; - 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; - } - - p.rss a { - font-family:@main-font; - vertical-align: top; - } - - .question-content{ - float:right; - width:682px; - margin-bottom:10px; - } - - #question-table{ - float:left; - border-top:#f0f0f0 1px solid; - } - - #question-table, - .answer-table { - margin: 6px 0 6px 0; - border-spacing: 0px; - padding-right:10px; - } - - .answer-table { - margin-top:0px; - border-bottom: 1px solid #D4D4D4; - } - - .answer-table td, - #question-table td { - width:20px; - vertical-align:top; - } - .question-body, .answer-body { - overflow: auto; - margin-top:10px; - font-family:@body-font; - color:#4b4b4b; - - p{ - margin-bottom:14px; - line-height:1.4; - font-size:14px; - padding:0px 5px 5px 0px; - } - - a { - color:@link; - } - - 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: #fff url(../images/background-user-info.png) repeat-x bottom; - float: right; - font-size: 9px; - font-family:@secondary-font; - width: 158px; - padding:4px; - margin:0px 0px 5px 5px; - line-height: 14px; - .rounded-corners(4px); - .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 7px 3px 18px; - cursor: pointer; - border: none; - font-size:12px; - font-family:@body-font; - text-decoration: none; - height:18px; - display:block; - float:right; - line-height:18px; - margin-top:-2px; - margin-left:4px; - } - - a:hover { - background-color: #f5f0c9; - .rounded-corners(3px); - - } - .sep { - color: #ccc; - float:right; - height:18px; - font-size:18px; - } - } - .post-controls, .answer-controls{ - .question-delete{ - background: url(../images/delete.png) no-repeat center left; - padding-left:11px; - } - .question-flag{ - background: url(../images/flag.png) no-repeat center left; - } - .question-edit{ - background: url(../images/edit2.png) no-repeat center left; - } - .question-retag{ - background: url(../images/retag.png) no-repeat center left; - } - .question-close{ - background: url(../images/close.png) no-repeat center left; - } - .permant-link{ - background: url(../images/link.png) no-repeat center left; - } - } - .tabBar{ - width:100%; - } - - #questionCount{ - float:left; - font-family:@main-font; - 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(../images/vote-arrow-up-new.png) no-repeat; - } - - .question-img-downvote, .answer-img-downvote { - background: url(../images/vote-arrow-down-new.png) no-repeat; - } - - .question-img-upvote:hover, .question-img-upvote.on, - .answer-img-upvote:hover, .answer-img-upvote.on { - background: url(../images/vote-arrow-up-on-new.png) no-repeat; - } - - .question-img-downvote:hover, .question-img-downvote.on, - .answer-img-downvote:hover, .answer-img-downvote.on { - background: url(../images/vote-arrow-down-on-new.png) no-repeat; - } - - #fmanswer_button{ - margin:8px 0px ; - } - .question-img-favorite:hover { - background: url(../images/vote-favorite-on.png) - } - div.comments { - padding: 0; - } - #comment-title{ - font-weight:bold; - font-size:23px; - color:@section-title; - width:200px; - float:left; - font-family:@main-font; - } - .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:@body-font; - font-size:13px; - background:url(../images/comment.png) no-repeat center left; - } - - .controls a:hover { - background-color: #f5f0c9; - text-decoration: none; - } - - .button { - color: #988e4c; - font-size: 11px; - padding: 3px; - cursor: pointer; - } - a { - background-color: inherit; - color: @link; - 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: @body-font; - outline: none; - overflow:auto; - font-size: 12px; - line-height: 140%; - padding-left:2px; - padding-top:3px; - border:#cce6ec 3px solid; - } - - /* A small hack to solve 1px problem on webkit browsers */ - @media screen and (-webkit-min-device-pixel-ratio:0){ - textarea{ - padding-left:3px !important; - } - } - - input { - margin-left: 10px; - margin-top: 1px; - vertical-align: top; - width: 100px; - } - button{ - background:url(../images/small-button-blue.png) repeat-x top; - border:0; - color:@button-label; - font-family:@body-font; - font-size:13px; - width:100px; - font-weight:bold; - height:27px; - line-height:25px; - margin-bottom:5px; - cursor:pointer; - .rounded-corners(4px); - .text-shadow(0px,1px,0px,#E6F6FA); - .box-shadow(1px, 1px, 2px, #808080); - } - button:hover{ - background: url(../images/small-button-blue.png) bottom repeat-x; - .text-shadow(0px, 1px, 0px, #c6d9dd); - } - .counter { - display: inline-block; - width: 245px; - float:right; - color:#b6a475 !important; - vertical-align: top; - font-family:@body-font; - 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:@body-font; - font-size:11px; - min-height: 25px; - background:#fff url(../images/comment-background.png) bottom repeat-x; - .rounded-corners(5px); - } - div.comment:hover { - background-color: #efefef; - } - a.author{ - background-color: inherit; - color: @link; - padding: 0; - } - - a.author:hover { - text-decoration: underline; - } - span.delete-icon{ - background:url(../images/close-small.png) no-repeat; - border:0; - width:14px; - height:14px; - } - span.delete-icon:hover{ - border:#BC564B 2px solid; - .rounded-corners(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; - } - } - - .comment-body 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; - } - - .upvote.upvoted { - color: #d64000; - } - - .upvote.hover { - background: url(../images/go-up-grey.png) no-repeat; - background-position: right 1px; - } - - .upvote:hover { - background: url(../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; - } - - .question-status h3 { - font-size: 20px; - color:@info-text; - font-weight:normal; - } - - .vote-buttons { - float: left; - text-align: center; - padding-top: 2px; - margin:10px 10px 0px 3px; - } - - .vote-buttons IMG { - cursor: pointer; - } - - .vote-number { - font-family: @main-font; - padding: 0px 0 5px 0; - font-size: 25px; - font-weight: bold; - color: #777; - } - - .vote-buttons .notify-sidebar { - text-align: left; - width:120px; - } - .vote-buttons .notify-sidebar 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; - } - .comments { - background-color: #E6ECFF; - } - .vote-buttons { - margin-right:10px; - } - } - - .answer-img-accept:hover { - background: url(../images/vote-accepted-on.png) - } - .answer-body a { - color:@link; - } - .answer-body li { - margin-bottom:0.7em; - } - - #fmanswer{ - color:@info-text; - line-height:1.2; - margin-top:10px; - - h2{ - font-family:@main-font; - color:@section-title; - font-size:24px; - } - label{ - font-size:13px; - } - } - .message { - padding: 5px; - margin: 0px 0 10px 0; - - } - -} - -.facebook-share.icon, .twitter-share.icon, .linkedin-share.icon, .identica-share.icon { - background: url(../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; -} - -/* -----Content pages, Login, About, FAQ, Users----- */ - -.openid-signin, -.meta, -.users-page, -.user-profile-edit-page, -{ - font-size:13px; - line-height:1.3; - color:@info-text-dark; - p{ - font-size:13px; - color:@info-text; - line-height:1.3; - font-family:@body-font; - color:@info-text-dark; - margin-bottom:12px; - } - h2{ - color:@info-text-dark; - padding-left:0px; - font-size:16px; - } -} - -.openid-signin, -.meta, -.users-page, -.user-profile-edit-page, -.user-profile-page, -{ - form{ - margin-bottom:15px; - } - input[type="text"],input[type="password"],select{ - border:#cce6ec 3px solid; - height:25px; - padding-left:5px; - width:395px; - font-size:14px; - } - select{ - width:405px; - height:30px; - } - textarea{ - border:#cce6ec 3px solid; - padding-left:5px; - padding-top:5px; - width:395px; - font-size:14px; - } - input.submit{ - background:url(../images/small-button-blue.png) repeat-x top; - border:0; - color:@button-label; - font-weight:bold; - font-size:13px; - font-family:@body-font; - height:26px; - margin:5px 0px; - width:100px; - cursor:pointer; - .rounded-corners(4px); - .text-shadow(0px,1px,0px,#E6F6FA); - .box-shadow(1px, 1px, 2px, #808080); - } - input.submit:hover{ - background:url(../images/small-button-blue.png) repeat-x bottom; - text-decoration:none; - } - .cancel{ - background:url(../images/small-button-cancel.png) repeat-x top !important; - color:#525252 !important; - } - .cancel:hover{ - background:url(../images/small-button-cancel.png) repeat-x bottom !important; - } -} - -#email-input-fs,#local_login_buttons,#password-fs,#openid-fs{ - margin-top:10px; - #id_email,#id_username,#id_password{ - font-size: 12px; - line-height: 20px; - height: 20px; - margin: 0px; - padding: 0px 0 0 5px; - border:#cce6ec 3px solid; - width:200px; - } - .submit-b{ - background:url(../images/small-button-blue.png) repeat-x top; - border:0; - color:@button-label; - font-weight:bold; - font-size:13px; - font-family:@body-font; - height:24px; - margin-top:-2px; - padding-left:10px; - padding-right:10px; - cursor:pointer; - .rounded-corners(4px); - .text-shadow(0px,1px,0px,#E6F6FA); - .box-shadow(1px, 1px, 2px, #808080) - } - .submit-b:hover{ - background:url(../images/small-button-blue.png) repeat-x bottom; - } -} -.openid-input { - background: url(../images/openid.gif) no-repeat; - padding-left: 15px; - cursor: pointer; -} - -.openid-login-input { - background-position: center left; - background: url(../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%; -} - -/* People page */ - -.tabBar-user{ - width:375px; -} - -.user { - padding: 5px; - line-height: 140%; - width: 166px; - border:#eee 1px solid; - margin-bottom:5px; - .rounded-corners(3px); - .user-micro-info{ - color:@info-text-dark; - } - -} - -.user ul { - margin: 0; - list-style-type: none; -} - -.user .thumb { - clear: both; - float: left; - margin-right: 4px; - display: inline; -} - -/* tags page */ - -.tabBar-tags{ - width:270px; - margin-bottom:15px; -} - -/* badges page */ - -a.medal { - font-size: 17px; - line-height: 250%; - margin-right:5px; - color: #333; - text-decoration: none; - background: url(../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; -} - -a:hover.medal { - color: #333; - text-decoration: none; - background: url(../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; - } -} - -/* profile page */ - -.tabBar-profile{ - width:100%; - margin-bottom:15px; - float:left; -} - -.user-profile-page{ - font-size:13px; - color:@info-text-dark; - - p{ - font-size:13px; - line-height:1.3; - color:@info-text-dark; - } - .avatar img{ - border:#eee 1px solid; - padding:5px; - } - h2{ - padding:10px 0px 10px 0px; - font-family:@main-font; - } -} - -.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:@button-label; - font-weight:bold; - font-size:12px; - height:26px; - line-height:26px; - margin-top:-2px; - font-size:15px; - cursor:pointer; - font-family:@main-font; - background:url(../images/small-button-blue.png) repeat-x top; - .rounded-corners(4px); - .text-shadow(0px,1px,0px,#E6F6FA); - .box-shadow(1px, 1px, 2px, #808080) -} - -.follow-toggle:hover, .submit:hover { - background:url(../images/small-button-blue.png) repeat-x bottom; - text-decoration:none !important; -} - -.follow-toggle .follow{ - font-color: #000; - font-style:normal; -} - -.follow-toggle .unfollow div.unfollow-red{ - display:none; -} - -.follow-toggle .unfollow:hover div.unfollow-red{ - display:inline; - color:#fff; - font-weight:bold; - color:#A05736; -} - -.follow-toggle .unfollow:hover div.unfollow-green{ - display:none; -} - -.count { - font-family: @main-font; - font-size: 200%; - font-weight: 700; - color: #777 -} - -.scoreNumber { - font-family: @main-font; - font-size: 35px; - font-weight: 800; - color: #777; - line-height: 40px; /*letter-spacing:0px*/ - 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; - .rounded-corners(4px); -} - -.karma-summary { - padding:5px; - font-size:13px; -} - -.karma-summary 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; - .rounded-corners(3px); -} - -.karma-lost { - font-weight:bold; - background:#eee; - width:25px; - color:red; - padding:3px; - display:block; - margin-right:5px; - float:left; - text-align:center; - .rounded-corners(3px); -} - -.submit-row{ - margin-bottom:10px; -} - -/*----- Revision pages ----- */ - -.revision { - margin: 10px 0 10px 0; - font-size: 13px; - color:@info-text-dark; - - p{ - font-size:13px; - line-height:1.3; - color:@info-text-dark; - } - - h3{ - font-family:@main-font; - font-size:21px; - padding-left:0px; - } - - .header { - background-color: #F5F5F5; - padding: 5px; - cursor: pointer; - } - - .author { - background-color: #e9f3f5; - } - - .summary { - padding: 5px 0 10px 0; - } - - .summary span { - background-color:#fde785; - padding:6px; - .rounded-corners(4px); - display: inline; - .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, del .post-tag { - color: #C34719; -} - -ins .post-tag, ins p, ins { - background-color: #E6F0A2; -} - -/* ----- Red Popup notification ----- */ - -.vote-notification { - z-index: 1; - cursor: pointer; - display: none; - position: absolute; - font-family:@secondary-font; - font-size:14px; - font-weight:normal; - color: white; - background-color: #8e0000; - text-align: center; - padding-bottom:10px; - .box-shadow(0px, 2px, 4px, #370000); - .rounded-corners(4px); - - h3{ - background:url(../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; - .rounded-corners-top(4px); - } - a { - color: #fb7321; - text-decoration: underline; - font-weight:bold; - } - -} - - -/* ----- Footer links , check blocks/footer.html----- */ - -#ground { - width: 100%; - clear: both; - border-top: 1px solid #000; - padding: 6px 0 0 0; - background: @header-color; - font-size:16px; - font-family:@main-font; - - 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; -} - -span.form-error { - color: #990000; - font-weight: normal; - margin-left: 5px; -} - -ul.errorlist { - margin-bottom: 0; -} - -p.form-item { - margin: 0px; -} - - - - -.deleted { - background: #F4E7E7 none repeat scroll 0 0; -} - - -/* openid styles */ -.form-row { - line-height: 25px; -} - -table.form-as-table { - margin-top: 5px; -} - -table.form-as-table ul { - list-style-type: none; - display: inline; -} - -table.form-as-table li { - display: inline; -} - -table.form-as-table td { - text-align: right; -} - -table.form-as-table th { - text-align: left; - font-weight: normal; -} - -table.ab-subscr-form { - width: 45em; -} - -table.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-count-off { - color: #919191; - float: left; - text-align: center; -} - -.favorites-count { - color: #D4A849; - float: left; - text-align: center; -} -*/ - -/* todo: get rid of this in html */ -.favorites-empty { - width: 32px; - height: 45px; - float: left; -} - -.user-info-table { - margin-bottom: 10px; - border-spacing: 0; -} - -/* todo: remove this hack? */ -.user-stats-table .narrow { - width: 660px; -} - -.narrow .summary h3 { - padding: 0px; - margin: 0px; -} - -.relativetime { - font-weight: bold; - text-decoration: none; -} - -.narrow .tags { - float: left; -} - - - - -/* todo: make these more semantic */ -.user-action-1 { - font-weight: bold; - color: #333; -} - -.user-action-2 { - font-weight: bold; - color: #CCC; -} - -.user-action-3 { - color: #333; -} - -.user-action-4 { - color: #333; -} - -.user-action-5 { - color: darkred; -} - -.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; -} - -/* todo: make these more semantic */ -.post-type-1 a { - font-weight: bold; - -} - -.post-type-3 a { - font-weight: bold; - -} - -.post-type-5 a { - font-weight: bold; -} - -.post-type-2 a { - color: #333; -} - -.post-type-4 a { - color: #333; -} - -.post-type-6 a { - color: #333; -} - -.post-type-8 a { - color: #333; -} - -.hilite { - background-color: #ff0; -} - -.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; -} - -a.offensive { - color: #999; -} - -.message h1 { - padding-top: 0px; - font-size: 15px; -} - -.message p { - margin-bottom: 0px; -} - -p.space-above { - margin-top: 10px; -} - -.warning { - color: red; -} - - - -button::-moz-focus-inner { - padding:0; - border:none; -} -.submit { - cursor: pointer; /*letter-spacing:1px;*/ - background-color: #D4D0C8; - height: 30px; - border: 1px solid #777777; /* width:100px; */ - font-weight: bold; - font-size: 120%; -} - -.submit:hover { - text-decoration: underline; -} - -.submit.small { - margin-right:5px; - height:20px; - font-weight:normal; - font-size:12px; - padding:1px 5px; -} -.submit.small: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 {/* used in django.po */ - 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; -} - -.action-status span { - padding: 3px 5px 3px 5px; - background-color: #fff380; /* nice yellow */ - font-weight: normal; - -moz-border-radius: 5px; - -khtml-border-radius: 5px; - -webkit-border-radius: 5px; -} - -.list-table td { - vertical-align: top; -} - -/* these need to go */ -table.form-as-table .errorlist { - display: block; - margin: 0; - padding: 0 0 0 5px; - text-align: left; - font-size: 10px; - color: darkred; -} - -table.form-as-table input { - display: inline; - margin-left: 4px; -} - -table.form-as-table th { - vertical-align: bottom; - padding-bottom: 4px; -} - -.form-row-vertical { - margin-top: 8px; - display: block; -} - -.form-row-vertical label { - margin-bottom: 3px; - display: block; -} - -/* above stuff needs to go */ -.text-align-right { - text-align: center; -} - -ul.form-horizontal-rows { - list-style: none; - margin: 0; -} - -ul.form-horizontal-rows li { - position: relative; - height: 40px; -} - -ul.form-horizontal-rows label { - display: inline-block; -} - -ul.form-horizontal-rows ul.errorlist { - list-style: none; - color: darkred; - font-size: 10px; - line-height: 10px; - position: absolute; - top: 2px; - left: 180px; - text-align: left; - margin: 0; -} - -ul.form-horizontal-rows ul.errorlist li { - height: 10px; -} - -ul.form-horizontal-rows label { - position: absolute; - left: 0px; - bottom: 6px; - margin: 0px; - line-height: 12px; - font-size: 12px; -} - -ul.form-horizontal-rows 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; -} -ul.post-tags li { - margin-top: 4px; - margin-bottom: 3px; -} - -ul.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; -} - -#hideIgnoredTagsControl 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; -} - -/* a workaround to set link colors correctly */ - -.wmd-preview a { - color:@link; -} - -.wmd-preview 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; -} - -#responses div.face { - float:left; - text-align: center; - width: 54px; - padding: 3px; - overflow:hidden; -} - -.response-parent { - margin-top: 18px; -} - -.response-parent 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; -} -#re_sections .on { - font-weight:bold; -} - -.avatar-page ul { - list-style: none; -} -.avatar-page li { - display: inline; -} -.user-profile-page .avatar p { - margin-bottom: 0px; -} -.user-profile-page .tabBar a#stats { - margin-left: 0; -} -.user-profile-page img.gravatar { - margin: 2px 0 3px 0; -} -.user-profile-page 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; -} - - -/* Pretty printing styles. Used with prettify.js. */ - -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; }/* name conflict here */ -.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; } -} - -#leading-sidebar { - float: left; -} diff --git a/lms/askbot/skins/mitx/templates/404.html b/lms/askbot/skins/mitx/templates/404.html deleted file mode 100644 index 158bfb9475..0000000000 --- a/lms/askbot/skins/mitx/templates/404.html +++ /dev/null @@ -1,5 +0,0 @@ -{% load extra_tags %} -{% include_jinja "404.jinja.html" request %} -{% comment %} -this one has to be a django template because of use of default hander404 -{% endcomment %} diff --git a/lms/askbot/skins/mitx/templates/404.jinja.html b/lms/askbot/skins/mitx/templates/404.jinja.html deleted file mode 100644 index 2da99646d9..0000000000 --- a/lms/askbot/skins/mitx/templates/404.jinja.html +++ /dev/null @@ -1,44 +0,0 @@ -{% extends "one_column_body.html" %} - -{% block title %}{% spaceless %}{% trans %}Page not found{% endtrans %}{% endspaceless %}{% endblock %} -{% block forestyle%} - -{% endblock %} -{% block content %} -

      {% trans %}Page not found{% endtrans %}

      -
      -
      -

      {% trans %}Sorry, could not find the page you requested.{% endtrans %}

      -
      - {% trans %}This might have happened for the following reasons:{% endtrans %}
      -
        -
      • {% trans %}this question or answer has been deleted;{% endtrans %}
      • -
      • {% trans %}url has error - please check it;{% endtrans %}
      • -
      • {% trans %}the page you tried to visit is protected or you don't have sufficient points, see{% endtrans %} {% trans %}faq{% endtrans %};
      • -
      • {% trans %}if you believe this error 404 should not have occured, please{% endtrans %} - {% trans %}report this problem{% endtrans %}
      • - -
      - - -
        -
      • {% trans %}back to previous page{% endtrans %} »
      • -
      • {% trans %}see all questions{% endtrans %} »
      • -
      • {% trans %}see all tags{% endtrans %} »
      • - -
      -
      -{% endblock %} -{% block endjs %} - -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/500.html b/lms/askbot/skins/mitx/templates/500.html deleted file mode 100644 index 8ec1bce495..0000000000 --- a/lms/askbot/skins/mitx/templates/500.html +++ /dev/null @@ -1,5 +0,0 @@ -{% load extra_tags %} -{% include_jinja "500.jinja.html" request %} -{% comment %}this template must be django -because of the use of default handler500 -{% endcomment %} diff --git a/lms/askbot/skins/mitx/templates/500.jinja.html b/lms/askbot/skins/mitx/templates/500.jinja.html deleted file mode 100644 index 297ae7367e..0000000000 --- a/lms/askbot/skins/mitx/templates/500.jinja.html +++ /dev/null @@ -1,25 +0,0 @@ -{% extends "two_column_body.html" %} - -{% block title %}{% spaceless %}{% trans %}Internal server error{% endtrans %}{% endspaceless %}{% endblock %} -{% block content %} -

      {% trans %}Internal server error{% endtrans %}

      -
      -
      - {% trans %}system error log is recorded, error will be fixed as soon as possible{% endtrans %}
      - {% trans %}please report the error to the site administrators if you wish{% endtrans %} -
        -
      • {% trans %}back to previous page{% endtrans %}
      • -
      • {% trans %}see latest questions{% endtrans %}
      • -
      • {% trans %}see tags{% endtrans %}
      • - -
      -
      -{% endblock %} -{% block endjs %} - -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/answer_edit.html b/lms/askbot/skins/mitx/templates/answer_edit.html deleted file mode 100644 index e9674a3141..0000000000 --- a/lms/askbot/skins/mitx/templates/answer_edit.html +++ /dev/null @@ -1,84 +0,0 @@ -{% extends "two_column_body.html" %} -{% import "macros.html" as macros %} - -{% block title %}{% spaceless %}{% trans %}Edit answer{% endtrans %}{% endspaceless %}{% endblock %} -{% block content %} - - -
      -

      {% trans %}Edit answer{% endtrans %} {% trans %}back{% endtrans %} -

      -
      - -
      {% csrf_token %} - - -
      - {{ macros.edit_post(form) }} - {% if settings.WIKI_ON and answer.wiki == False %} - {{ macros.checkbox_in_div(form.wiki) }} - {% endif %} -
      - -
      -   - -
      - -
      -{% endblock %} - -{% block sidebar %} -{% include "widgets/answer_edit_tips.html" %} -{% endblock %} - -{% block endjs %} -{% include "meta/editor_data.html" %} - - - - - - - -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/ask.html b/lms/askbot/skins/mitx/templates/ask.html deleted file mode 100644 index e75a53bde2..0000000000 --- a/lms/askbot/skins/mitx/templates/ask.html +++ /dev/null @@ -1,67 +0,0 @@ -{% extends "two_column_body.html" %} -{% import "macros.html" as macros %} - -{% block title %}{% spaceless %}{% trans %}Ask a question{% endtrans %}{% endspaceless %}{% endblock %} -{% block forestyle %} - -{% endblock %} -{# main contents of ask form is in the template input_bar #} -{% block sidebar %} -{% include "widgets/question_edit_tips.html" %} -{% endblock %} -{% block content %} - {% include "widgets/ask_form.html" %} -{% endblock %} -{% block endjs %} - - - - - - - - {% include "meta/editor_data.html" %} - {% if mandatory_tags %} - {% include "meta/mandatory_tags_js.html" %} - {% endif %} - -{% endblock %} - - diff --git a/lms/askbot/skins/mitx/templates/badge.html b/lms/askbot/skins/mitx/templates/badge.html deleted file mode 100644 index dea62bc784..0000000000 --- a/lms/askbot/skins/mitx/templates/badge.html +++ /dev/null @@ -1,40 +0,0 @@ -{% extends "two_column_body.html" %} -{% import "macros.html" as macros %} -{%from "macros.html" import gravatar %} - -{% block title %}{% spaceless %}{% trans name=badge.name %}{{name}}{% endtrans %} - {% trans %}Badge{% endtrans %}{% endspaceless %}{% endblock %} -{% block content %} -
      -

      {% trans name=badge.name %}Badge "{{name}}"{% endtrans %}

      -
      - - - -
      - {% if badge.awarded_count %} -

      {{ badge_recipients|length|intcomma }} - {% trans num_awardees=badge_recipients|length %}user received this badge:{% pluralize %}users received this badge:{% endtrans %}

      - {% endif %} -
      - -
      - {% for recipient in badge_recipients %} -
      -
        -
      • {{recipient.username}}
      • -
      • {{ macros.user_score_and_badge_summary(recipient) }}
      • -
      -
      - {% endfor %} -
      - -{% endblock %} -{% block sidebar %} -

      Description

      -
      -

      - {% trans description=badge.description %}{{description}}{% endtrans %} -

      -
      -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/badges.html b/lms/askbot/skins/mitx/templates/badges.html deleted file mode 100644 index 64d3ee3030..0000000000 --- a/lms/askbot/skins/mitx/templates/badges.html +++ /dev/null @@ -1,66 +0,0 @@ -{% extends "two_column_body.html" %} - -{% block title %}{% spaceless %}{% trans %}Badges summary{% endtrans %}{% endspaceless %}{% endblock %} -{% block content %} -
      -

      {% trans %}Badges{% endtrans %}

      -
      -
      -

      - {% trans %}Community gives you awards for your questions, answers and votes.{% endtrans %}
      - {% trans %}Below is the list of available badges and number - of times each type of badge has been awarded. Give us feedback at {{feedback_faq_url}}. - {% endtrans %} -

      -
      -
        - {% for badge in badges %} -
      • -
        - {% for a in mybadges %} - {% if a.badge_id == badge.id %} - ✓ - {% endif %} - {% endfor %} -
        -
        - ● {{badge.name}} - × {{ badge.awarded_count|intcomma }} -
        -

        {{badge.description}}

        -
      • - {% endfor %} -
      -{% endblock %} -{% block sidebar %} - -

      {% trans %}Community badges{% endtrans %}

      -
      - -
      - ● {% trans %}gold{% endtrans %} -

      - {% trans %}gold badge description{% endtrans %} -

      -
      - -
      - ● {% trans %}silver{% endtrans %} -

      - {% trans %}silver badge description{% endtrans %} -

      -
      - - -
      - ● {% trans %}bronze{% endtrans %} -

      - {% trans %}bronze badge description{% endtrans %} -

      -
      - -
      -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/base.html b/lms/askbot/skins/mitx/templates/base.html deleted file mode 100644 index 4c5a36bd46..0000000000 --- a/lms/askbot/skins/mitx/templates/base.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - {% spaceless %} - - {% block title %}{% endblock %} - {% include "meta/html_head_meta.html" %} - - {% include "meta/html_head_stylesheets.html" %} - {% block forestyle %}{% endblock %} - {% include "meta/html_head_javascript.html" %} - {% if settings.USE_CUSTOM_HTML_HEAD %} - {{ settings.CUSTOM_HTML_HEAD }} - {% endif %} - - {% endspaceless %} - - {% include "widgets/system_messages.html" %} - {% include "debug_header.html" %} - {% include "widgets/header.html" %} {# Logo, user tool navigation and meta navitation #} - -
      - {# include "widgets/secondary_header.html" #} {# Scope selector, search input and ask button #} - -
      - {% block body %} - {% endblock %} -
      -
      - - {% if settings.FOOTER_MODE == 'default' %} - {% include "widgets/footer.html" %} - {% elif settings.FOOTER_MODE == 'customize' %} - {{ settings.CUSTOM_FOOTER }} - {% endif %} - {% include "custom_footer.html" ignore missing %} - {% include "meta/bottom_scripts.html" %} - {% block endjs %} - {% endblock %} - - - - diff --git a/lms/askbot/skins/mitx/templates/close.html b/lms/askbot/skins/mitx/templates/close.html deleted file mode 100644 index 6446ffd828..0000000000 --- a/lms/askbot/skins/mitx/templates/close.html +++ /dev/null @@ -1,28 +0,0 @@ -{% extends "one_column_body.html" %} - -{% block title %}{% spaceless %}{% trans %}Close question{% endtrans %}{% endspaceless %}{% endblock %} -{% block content %} - -

      {% trans %}Close question{% endtrans %}

      -

      {% trans %}Close the question{% endtrans %}: - {{ question.get_question_title()|escape }} -

      -
      {% csrf_token %} -

      - {% trans %}Reasons{% endtrans %}: - {{ form.reason }} -

      -

      -   - -

      -
      -{% endblock %} -{% block endjs %} - -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/course_navigation.jinja.html b/lms/askbot/skins/mitx/templates/course_navigation.jinja.html deleted file mode 100644 index d39fd22166..0000000000 --- a/lms/askbot/skins/mitx/templates/course_navigation.jinja.html +++ /dev/null @@ -1,16 +0,0 @@ -
      -
      -
        -
      1. Courseware
      2. -
      3. Course Info
      4. - {% if user.is_authenticated(): %} -
      5. Textbook
      6. -
      7. Discussion
      8. - {% endif%} -
      9. Wiki
      10. - {% if user.is_authenticated():%} -
      11. Profile
      12. - {% endif %} -
      -
      -
      diff --git a/lms/askbot/skins/mitx/templates/faq_static.html b/lms/askbot/skins/mitx/templates/faq_static.html deleted file mode 100644 index b676f7939a..0000000000 --- a/lms/askbot/skins/mitx/templates/faq_static.html +++ /dev/null @@ -1,93 +0,0 @@ -{% extends "two_column_body.html" %} - -{% block title %}{% spaceless %}{% trans %}FAQ{% endtrans %}{% endspaceless %}{% endblock %} -{% block content %} -

      {% trans %}Frequently Asked Questions {% endtrans %}({% trans %}FAQ{% endtrans %})

      -

      {% trans %}What kinds of questions can I ask here?{% endtrans %}

      -

      {% trans %}Most importanly - questions should be relevant to this community.{% endtrans %} -{% trans %}Before asking the question - please make sure to use search to see whether your question has alredy been answered.{% endtrans %} -

      -

      {% trans %}What questions should I avoid asking?{% endtrans %}

      -

      {% trans %}Please avoid asking questions that are not relevant to this community, too subjective and argumentative.{% endtrans %} -

      -

      {% trans %}What should I avoid in my answers?{% endtrans %}

      -

      {{ settings.APP_TITLE }} {% trans %}is a Q&A site, not a discussion group. Therefore - please avoid having discussions in your answers, comment facility allows some space for brief discussions.{% endtrans %}

      -

      {% trans %}Who moderates this community?{% endtrans %}

      -

      {% trans %}The short answer is: you.{% endtrans %} -{% trans %}This website is moderated by the users.{% endtrans %} -{% trans %}The reputation system allows users earn the authorization to perform a variety of moderation tasks.{% endtrans %} -

      -

      {% trans %}How does reputation system work?{% endtrans %}

      -

      {% trans %}Rep system summary{% endtrans %}

      -

      {% trans MAX_REP_GAIN_PER_USER_PER_DAY=settings.MAX_REP_GAIN_PER_USER_PER_DAY, REP_GAIN_FOR_RECEIVING_UPVOTE=settings.REP_GAIN_FOR_RECEIVING_UPVOTE, REP_LOSS_FOR_RECEIVING_DOWNVOTE=settings.REP_LOSS_FOR_RECEIVING_DOWNVOTE|absolute_value %}For example, if you ask an interesting question or give a helpful answer, your input will be upvoted. On the other hand if the answer is misleading - it will be downvoted. Each vote in favor will generate {{REP_GAIN_FOR_RECEIVING_UPVOTE}} points, each vote against will subtract {{REP_LOSS_FOR_RECEIVING_DOWNVOTE}} points. There is a limit of {{MAX_REP_GAIN_PER_USER_PER_DAY}} points that can be accumulated for a question or answer per day. The table below explains reputation point requirements for each type of moderation task.{% endtrans %} -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {% if settings.WIKI_ON %} - - - - - {% endif %} - - - - - - - - -
      {{settings.MIN_REP_TO_VOTE_UP}}{% trans %}upvote{% endtrans %}
      {{settings.MIN_REP_TO_LEAVE_COMMENTS}}{% trans %}add comments{% endtrans %}
      {{settings.MIN_REP_TO_VOTE_DOWN}}{% trans %}downvote{% endtrans %}
      {{settings.MIN_REP_TO_ACCEPT_OWN_ANSWER}}{% trans %} accept own answer to own questions{% endtrans %}
      {{settings.MIN_REP_TO_CLOSE_OWN_QUESTIONS}}{% trans %}open and close own questions{% endtrans %}
      {{settings.MIN_REP_TO_RETAG_OTHERS_QUESTIONS}}{% trans %}retag other's questions{% endtrans %}
      {{settings.MIN_REP_TO_EDIT_WIKI}}{% trans %}edit community wiki questions{% endtrans %}
      {{settings.MIN_REP_TO_EDIT_OTHERS_POSTS}}{% trans %}edit any answer{% endtrans %}
      {{settings.MIN_REP_TO_DELETE_OTHERS_COMMENTS}}{% trans %}delete any comment{% endtrans %}
      -

      {% trans %}what is gravatar{% endtrans %}

      -{% trans %}gravatar faq info{% endtrans %} -

      {% trans %}To register, do I need to create new password?{% endtrans %}

      -

      {% trans %}No, you don't have to. You can login through any service that supports OpenID, e.g. Google, Yahoo, AOL, etc."{% endtrans %} -{% trans %}"Login now!"{% endtrans %} » -

      -

      {% trans %}Why other people can edit my questions/answers?{% endtrans %}

      -

      {% trans %}Goal of this site is...{% endtrans %} {% trans %}So questions and answers can be edited like wiki pages by experienced users of this site and this improves the overall quality of the knowledge base content.{% endtrans %} -{% trans %}If this approach is not for you, we respect your choice.{% endtrans %} -

      -

      {% trans %}Still have questions?{% endtrans %}

      -

      {% trans %}Please ask your question at {{ask_question_url}}, help make our community better!{% endtrans %} -

      - - -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/feedback.html b/lms/askbot/skins/mitx/templates/feedback.html deleted file mode 100644 index 85b5d00a93..0000000000 --- a/lms/askbot/skins/mitx/templates/feedback.html +++ /dev/null @@ -1,68 +0,0 @@ -{% extends "two_column_body.html" %} - -{% block title %}{% spaceless %}{% trans %}Feedback{% endtrans %}{% endspaceless %}{% endblock %} -{% block content %} -

      {% trans %}Give us your feedback!{% endtrans %}

      -{% if form.errors %} - - {{form.errors.__all__}} - -{%endif%} -
      {% csrf_token %} - {% if user.is_authenticated() %} -

      - {% trans user_name=user.username %} - Dear {{user_name}}, we look forward to hearing your feedback. - Please type and send us your message below. - {% endtrans %} -

      - {% else %} -

      - {% trans %} - Dear visitor, we look forward to hearing your feedback. - Please type and send us your message below. - {% endtrans %} -

      -

      {{form.name}}
      -
      -
      {{form.email}} -
      -
      - -
      - {% endif %} -
      - - {% endif %} -
      - {{form.message}} -
      - {% if form.recaptcha %} -
      - {% if form.errors.recaptcha%} - {% trans %}(Please solve the captcha){% endtrans %} - - {% endif %} - {{form.recaptcha}} -
      - {% endif %} - {{form.next}} -
      -   - -
      -
      -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/feedback_email.txt b/lms/askbot/skins/mitx/templates/feedback_email.txt deleted file mode 100644 index a729066aba..0000000000 --- a/lms/askbot/skins/mitx/templates/feedback_email.txt +++ /dev/null @@ -1,13 +0,0 @@ -{% spaceless %} -{% trans site_title = settings.APP_SHORT_NAME|safe %} -Hello, this is a {{site_title}} forum feedback message. -{% endtrans %} -{% endspaceless %} -{% if user.is_authenticated() -%} - {{user.username|safe}} ({{user.email|safe}}, ip:{{request.META.REMOTE_ADDR}}) -{%- else %} - {%- if name %}{{name|safe}} {% else %}{% trans %}Anonymous{% endtrans %} {% endif -%} - ({%- if email %}, {% endif -%}ip:{{request.META.REMOTE_ADDR}}) -{%- endif %} wrote: - -{{message|safe}} diff --git a/lms/askbot/skins/mitx/templates/help.html b/lms/askbot/skins/mitx/templates/help.html deleted file mode 100644 index 7dc58f5d5c..0000000000 --- a/lms/askbot/skins/mitx/templates/help.html +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "two_column_body.html" %} -{% block title %}{% trans %}Help{% endtrans %}{% endblock %} -{% block content %} -

      {% trans %}Help{% endtrans %}

      -

      - {% if request.user.is_authenticated() %} - {% trans username = request.user.username %}Welcome {{username}},{% endtrans %} - {% else %} - {% trans %}Welcome,{% endtrans %} - {% endif %} -

      -

      - {% trans %}Thank you for using {{app_name}}, here is how it works.{% endtrans %} -

      -

      - {% trans %}This site is for asking and answering questions, not for open-ended discussions.{% endtrans %} - {% trans %}We encourage everyone to use “question†space for asking and “answer†for answering.{% endtrans %} -

      -

      - {% trans %}Despite that, each question and answer can be commented – - the comments are good for the limited discussions.{% endtrans %} -

      -

      - {% trans %}Voting in {{app_name}} helps to select best answers and thank most helpful users.{% endtrans %} -

      - {% trans %}Please vote when you find helpful information, - it really helps the {{app_name}} community.{% endtrans %} - - {% trans %}Besides, you can @mention users anywhere in the text to point their attention, - follow users and conversations and report inappropriate content by flagging it.{% endtrans %} -

      -

      {% trans %}Enjoy.{% endtrans %}

      -{% endblock %} diff --git a/lms/askbot/skins/mitx/templates/import_data.html b/lms/askbot/skins/mitx/templates/import_data.html deleted file mode 100644 index affeaa735a..0000000000 --- a/lms/askbot/skins/mitx/templates/import_data.html +++ /dev/null @@ -1,31 +0,0 @@ -{% extends "two_column_body.html" %} -{% block title %}{% trans %}Import StackExchange data{% endtrans %}{% endblock %} -{% block content %} -

      {% trans %}Import StackExchange data{% endtrans %}

      - {% if need_configuration %} -

      Note: to import stackexchange data, first add - 'askbot.importers.stackexchange', - to the INSTALLED_APPS setting in your settings.py - file, then run python manage.py syncdb, and restart the application. - After that, pleale return to here and try again. -

      - {% else %} -

      {% trans %}Warning: if your database is not empty, please back it up - before attempting this operation.{% endtrans %} -

      -

      {% trans %}Upload your stackexchange dump .zip file, then wait until - the data import completes. This process may take several minutes. - Please note that feedback will be printed in plain text. - {% endtrans %} -

      -
      {% csrf_token %} - - {{dump_upload_form.as_table()}} -
      - -
      -

      {% trans %}In the case you experience any difficulties in using this import tool, - please try importing your data via command line: python manage.py load_stackexchange path/to/your-data.zip{% endtrans %} -

      - {% endif %} -{% endblock %} diff --git a/lms/askbot/skins/mitx/templates/instant_notification.html b/lms/askbot/skins/mitx/templates/instant_notification.html deleted file mode 100644 index 92799a963f..0000000000 --- a/lms/askbot/skins/mitx/templates/instant_notification.html +++ /dev/null @@ -1,42 +0,0 @@ -{% trans %}

      Dear {{receiving_user_name}},

      {% endtrans %} - {% if update_type == 'question_comment' %} -{% trans %} -

      {{update_author_name}} left a new comment:

      -{% endtrans %} - {% endif %} - {% if update_type == 'answer_comment' %} -{% trans %} -

      {{update_author_name}} left a new comment

      -{% endtrans %} - {% endif %} - {% if update_type == 'new_answer' %} -{% trans %} -

      {{update_author_name}} answered a question -{{origin_post_title}}

      -{% endtrans %} - {% endif %} - {% if update_type == 'new_question' %} -{% trans %} -

      {{update_author_name}} posted a new question -{{origin_post_title}}

      -{% endtrans %} - {% endif %} - {%if update_type == 'answer_update' %} -{% trans %} -

      {{update_author_name}} updated an answer to the question -{{origin_post_title}}

      -{% endtrans %} - {% endif %} - {% if update_type == 'question_update' %} -{% trans %} -

      {{update_author_name}} updated a question -{{origin_post_title}}

      -{% endtrans %} - {% endif %} -

      -{% trans %} -
      {{content_preview}}
      -

      Please note - you can easily change -how often you receive these notifications or unsubscribe. Thank you for your interest in our forum!

      -{% endtrans %} -{% trans %}

      Sincerely,
      Forum Administrator

      {% endtrans %} diff --git a/lms/askbot/skins/mitx/templates/macros.html b/lms/askbot/skins/mitx/templates/macros.html deleted file mode 100644 index 855bf9efe5..0000000000 --- a/lms/askbot/skins/mitx/templates/macros.html +++ /dev/null @@ -1,625 +0,0 @@ -{% load extra_filters_jinja %} - -{%- macro share(site = None, site_label = None, icon = False) -%} - {% if icon == False %}{% if site_label %}{{ site_label }}{% else %}{{ site }}{% endif %}{% endif %} -{%- endmacro -%} - -{%- macro follow_toggle(follow, name, alias, id) -%} - {# follow - boolean; name - object type name; alias - e.g. users name; id - object id #} -
      - {% if follow %} -
      {% trans %}follow {{alias}}{% endtrans %}
      - {% else %} -
      -
      {% trans %}unfollow {{alias}}{% endtrans %}
      -
      {% trans %}following {{alias}}{% endtrans %}
      -
      - {% endif %} -
      -{%- endmacro -%} - -{%- macro post_vote_buttons(post = None, visitor_vote = None) -%} - -
        -
      • -
      • {{ post.score }}
      • -
      • -
      - -{%- endmacro -%} - -{%- macro post_contributor_avatar_and_credentials(post, user) -%} - {% if post.is_anonymous %} - -

      {{ user.get_anonymous_name() }}

      - {% else %} - - - -
      - {{ user.get_profile_link()}} - - {{ user_score_and_badge_summary(user) }} - - {{ user_website_link(user) }} -
      - {% endif %} -{%- endmacro -%} - -{%- macro post_last_updater_and_creator_info(post, min_rep_to_edit_wiki) -%} - {{ post_contributor_info(post, "original_author", post.wiki, min_rep_to_edit_wiki) }} - {{ post_contributor_info(post, "last_updater", post.wiki, min_rep_to_edit_wiki) }} -{%- endmacro -%} - -{%- macro post_contributor_info(post, contributor_type, is_wiki, wiki_min_rep) -%} -{# there is a whole bunch of trickery here, probably indicative of -poor design of the data or methods on data objects #} -{% if contributor_type=="original_author" %} -
      - {% if is_wiki %} -

      - {%- if post.post_type == 'question' -%} - {%- trans %}Asked{% endtrans %} - {% elif post.post_type == 'answer' %} - {%- trans %}Answered{% endtrans %} - {% else %} - {%- trans %}Posted{% endtrans %} - {% endif %} - {{post.added_at|diff_date}} -

      - {% trans %}this post is marked as community wiki{% endtrans %} -

      {% trans %}This post is a wiki. - Anyone with karma >{{wiki_min_rep}} is welcome to improve it.{% endtrans %}

      - {% else %} -
      - {% if post.post_type == 'question' %} - {% trans %}Asked{% endtrans %} - {% elif post.post_type == 'answer' %} - {% trans %}Answered{% endtrans %} - {% else %} - {% trans %}Posted{% endtrans %} - {% endif %} - {% if post.__class__.__name__ == 'PostRevision' %} - {{post.revised_at|diff_date}} by - {% else %} - {{post.added_at|diff_date}} by - {% endif %} -
      - {{ post_contributor_avatar_and_credentials(post, post.author) }} - {% endif %} -
      -{% elif contributor_type=="last_updater" %} - {% if post.post_type in ('question', 'answer') %} - {% set last_edited_at = post.last_edited_at %} - {% set original_author = post.author %} - {% set update_author = post.last_edited_by %} - {% elif post.__class__.__name__ == 'PostRevision' %} - {% set last_edited_at = post.revised_at %} - {% set original_author = None %}{# fake value to force display widget in the revision views #} - {% set update_author = post.author %} - {% endif %} - {% if last_edited_at %} -
      - {% trans %}Updated{% endtrans %} {{ last_edited_at|diff_date }} - {% if original_author != update_author or is_wiki %} - {{ post_contributor_avatar_and_credentials(post, update_author) }} - {% endif %} -
      - {% endif %} -{% endif %} -{%- endmacro -%} - -{%- macro if_else(condition, if_true, if_false) -%} - {%- if condition == True -%} - {{if_true}} - {%- else -%} - {{if_false}} - {%- endif -%} -{%- endmacro -%} - -{%- macro tag_cloud(tags = None, font_sizes = None) -%} - {% for tag in tags %} - - {{ tag.name }} - - {% endfor %} -{%- endmacro -%} - -{%- macro tag_list_widget( - tags, - id = None, - deletable = False, - make_links = True, - search_state = None, - css_class = None, - tag_css_class = None, - tag_html_tag = 'li' - ) --%} -
        - {% if tags %} - {% for tag in tags %} - {{ tag_widget( - tag, - css_class = tag_css_class, - deletable = deletable, - is_link = make_links, - search_state = search_state, - html_tag = tag_html_tag - )}} - {% endfor %} - {% endif %} -
      -{%- endmacro -%} - -{# todo: remove the extra content argument to make its usage more explicit #} -{%- macro tag_widget( - tag, - deletable = False, - is_link = True, - delete_link_title = None, - css_class = None, - search_state = None, - html_tag = 'div', - extra_content = '' - ) --%} - {% if not search_state %} {# get empty SearchState() if there's none; CAUTION: for some reason this doesn't work inside `spaceless` tag below! #} - {% set search_state=search_state|get_empty_search_state %} - {% endif %} - {% spaceless %} - <{{ html_tag }} class="tag-left{% if deletable %} deletable-tag{% endif %}"> - <{% if not is_link or tag[-1] == '*' %}span{% else %}a{% endif %} - class="tag tag-right{% if css_class %} {{ css_class }}{% endif %}" - {% if is_link %} - href="{{ search_state.add_tag(tag).full_url() }}" - title="{% trans %}see questions tagged '{{ tag }}'{% endtrans %}" - {% endif %} - rel="tag" - >{{ tag|replace('*', '✽')|truncate(20,True)}} - {% if deletable %} -
      ✕
      - {% endif %} - - {{ extra_content }} - {% endspaceless %} -{%- endmacro -%} - -{%- macro radio_select(name = None, value = None, choices = None) -%} - {% for choice in choices %} -

      - {% set id = "id_" ~ name ~ "_" ~ choice[0] %} - - -

      - {% endfor %} -{%- endmacro -%} - -{%- macro question_summary(thread, question, extra_class=None, search_state=None) -%} -{%include "widgets/question_summary.html" %} -{%- endmacro -%} - -{# Warning! Any changes to the comment markup here must be duplicated in post.js -for the purposes of the AJAX comment editor #} - -{%- macro add_or_show_comments_button(post = None, can_post = None, max_comments = None, widget_id = None) -%} - - {% if post.comment_count > max_comments %} - {% set remaining_comments = post.comment_count - max_comments %} - - {% if can_post %} - {% trans %}add comment{% endtrans %} / - {% trans counter=remaining_comments %}see {{counter}} more{% pluralize %}see {{counter}} more{% endtrans %} - {% else %} - {% trans counter=remaining_comments %}see {{counter}} more comment{% pluralize %}see {{counter}} more comments - {% endtrans %} - {% endif %} - - {% elif can_post %} - {% trans %}add comment{% endtrans %} - {% endif %} -{%- endmacro -%} - -{%- macro post_comments_widget( - post=None, - show_post = None, - show_comment = None, - show_comment_position = None, - user=None, - max_comments=None - ) --%} - {% spaceless %} - - - - {% set widget_id = 'comments-for-' + post.post_type + '-' + post.id|string %} -
      -
      - {% if show_post == post and show_comment and show_comment_position > max_comments %} - {% set comments = post._cached_comments[:show_comment_position] %} - {% else %} - {% set comments = post._cached_comments[:max_comments] %} - {% endif %} - {% for comment in comments %} - {# Warning! Any changes to the comment markup IN THIS `FOR` LOOP must be duplicated in post.js - for the purposes of the AJAX comment editor #} -
      - {% if comment.author.is_administrator() %}Staff comment{%endif%} - {% if user|can_delete_comment(comment) %} -
      -
      - ✖ -
      -
      - {% if user|can_edit_comment(comment) %} - ✒ - {% endif %} -
      -
      - {% endif %} - -
      - {{comment.html}} -
      - {{comment.author.username}} -  ({{comment.added_at|diff_date}}) -
      -
      -
      - {% endfor %} -
      -
      - {% set can_post = user.is_authenticated() and user.can_post_comment(post) %} - {% if show_post == post and show_comment %} - {% if show_comment_position > max_comments %} - {{ add_or_show_comments_button( - post = post, - can_post = can_post, - max_comments = show_comment_position, - widget_id = widget_id) }} - {% else %} - {{ add_or_show_comments_button( - post = post, - can_post = can_post, - max_comments = max_comments, - widget_id = widget_id) }} - {% endif %} - {% else %} - {{ add_or_show_comments_button( - post = post, - can_post = can_post, - max_comments = max_comments, - widget_id = widget_id) }} - {% endif %} -
      -
      - {% endspaceless %} -{%- endmacro -%} - -{%- macro reversible_sort_button(button_sort_criterium=None, asc_tooltip=None, - desc_tooltip=None, label=None, current_sort_method=None, search_state=None) -%} -{# - sort button where descending sort is default - and the search method is togglable between ascending and descending - buttons are rendered as links with id constructed as - "by_" + button_sort_criterium - class "on" is added when current_sort_method is one of - button_sort_criterium + "asc" or "desc" -#} - {% set key_name = button_sort_criterium %} - {% if current_sort_method == key_name + "-asc" %}{# "worst" first #} - {{label}} ▲ - {% elif current_sort_method == key_name + "-desc" %}{# "best first" #} - {{label}} ▼ - {% else %}{# default, when other button is active #} - {{label}} - {% endif %} - -{%- endmacro %} - -{%- macro checkbox_in_div(checkbox_field, class = 'checkbox') -%} - - {{ checkbox_field }} - {{ checkbox_field.label_tag() }} - {{ checkbox_field.errors }} - -{%- endmacro -%} - -{%- macro edit_post( - post_form, - post_type = None, - mandatory_tags = None, - edit_title = False - ) --%} -{%include "widgets/edit_post.html" %} -{%- endmacro -%} - -{%- macro tag_autocomplete_js(id = '#id_tags') -%} - var tagAc = new AutoCompleter({ - url: '{% url "get_tag_list" %}', - preloadData: true, - minChars: 1, - useCache: true, - matchInside: true, - maxCacheLength: 100, - delay: 10 - }); - tagAc.decorate($("{{ id }}")); -{%- endmacro -%} - -{%- macro answer_classes(answer, question) -%} -answer {% if answer.accepted() %}accepted-answer{% endif %} {% if answer.author_id==question.author_id %} answered-by-owner{% endif %} {% if answer.deleted %}deleted{% endif -%} -{%- endmacro -%} - -{%- macro user_score_and_badge_summary(user) -%} - {%include "widgets/user_score_and_badge_summary.html"%} -{%- endmacro -%} - -{%- macro follow_toggle(follow, name, alias, id) -%} - {# follow - boolean; name - object type name; alias - e.g. users name; id - object id #} -
      - {% if follow %} -
      {% trans %}follow {{alias}}{% endtrans %}
      - {% else %} -
      -
      {% trans %}unfollow {{alias}}{% endtrans %}
      -
      {% trans %}following {{alias}}{% endtrans %}
      -
      - {% endif %} -
      -{%- endmacro -%} - -{%- macro follow_user_toggle(visitor = None, subject = None) -%} - {% if visitor.is_anonymous() %} - {{ follow_toggle(True, 'user', subject.username, subject.id) }} - {% else %} - {% if visitor != subject %} - {% if visitor.is_following(subject) %} - {{ follow_toggle(False, 'user', subject.username, subject.id) }} - {% else %} - {{ follow_toggle(True, 'user', subject.username, subject.id) }} - {% endif %} - {% endif %} - {% endif %} -{%- endmacro -%} - -{%- macro user_long_score_and_badge_summary(user) -%} - {% include "widgets/user_long_score_and_badge_summary.html" %} -{%- endmacro -%} - -{%- macro user_country_flag(user) -%} - {% if user.country and user.show_country %} - {% trans 
-                    country=user.country.name 
-                    %}flag of {{country}}{% 
-                endtrans %} - {% endif %} -{%- endmacro -%} - -{%- macro user_country_name_and_flag(user) -%} - {% if user.country and user.show_country %} - {{ user.country.name }} - {{ user_country_flag(user) }} - {% endif %} -{%- endmacro -%} - -{%- macro user_full_location(user) -%} - {% if user.location %} - {{ user.location }}, - {% endif %} - {{ user_country_name_and_flag(user) }} -{%- endmacro -%} - -{%- macro user_list(users, profile_section = None) -%} -{% include "widgets/user_list.html"%} -{%- endmacro -%} - -{#todo: rename this to avatar #} -{%- macro gravatar(user, size) -%} -{% spaceless %} -{% trans username=user.username %}{{username}} gravatar image{% endtrans %} -{% endspaceless %} -{%- endmacro -%} - -{%- macro user_website_link(user, max_display_length=25) -%} - {% if user.website %} - - {{user.website|truncate(length=max_display_length, killwords=True, end='...')}} - - {% endif %} -{%- endmacro -%} - -{%- macro paginator(p, position='left', anchor='') -%}{# p is paginator context dictionary #} -{% spaceless %} - {% if p.is_paginated %} -
      - {% if p.has_previous %} - - ‹ {% trans %}previous{% endtrans %} - {% endif %} - {% if not p.in_leading_range %} - {% for num in p.pages_outside_trailing_range %} - {{ num }} - {% endfor %} - ... - {% endif %} - - {% for num in p.page_numbers %} - {% if num == p.page and p.pages != 1%} - {{ num }} - {% else %} - {{ num }} - {% endif %} - {% endfor %} - - {% if not p.in_trailing_range %} - ... - {% for num in p.pages_outside_leading_range|reverse %} - {{ num }} - {% endfor %} - {% endif %} - {% if p.has_next %} - {% trans %}next page{% endtrans %} › - {% endif %} -
      - {% endif %} -{% endspaceless %} -{%- endmacro -%} - - - -{%- macro paginator_main_page(p, position, search_state) -%} {# p is paginator context dictionary #} - {% spaceless %} - {% if p.is_paginated %} -
      - {% if p.has_previous %} - - « {% trans %}previous{% endtrans %} - {% endif %} - {% if not p.in_leading_range %} - {% for num in p.pages_outside_trailing_range %} - {{ num }} - {% endfor %} - ... - {% endif %} - - {% for num in p.page_numbers %} - {% if num == p.page and p.pages != 1%} - {{ num }} - {% else %} - {{ num }} - {% endif %} - {% endfor %} - - {% if not p.in_trailing_range %} - ... - {% for num in p.pages_outside_leading_range|reverse %} - {{ num }} - {% endfor %} - {% endif %} - {% if p.has_next %} - {% trans %}next page{% endtrans %} » - {% endif %} -
      - {% endif %} - {% endspaceless %} -{%- endmacro -%} - - -{%- macro inbox_link(user) -%} - {% if user.new_response_count > 0 or user.seen_response_count > 0 %} - - {% trans username=user.username %}responses for {{username}}{% endtrans %} 0 %} - src="{{ "/images/mail-envelope-full.png"|media }}" - title="{% trans response_count=user.new_response_count %}you have a new response{% pluralize %}you have {{response_count}} new responses{% endtrans %}" - {% elif user.seen_response_count > 0 %} - src="{{ "/images/mail-envelope-empty.png"|media }}" - title="{% trans %}no new responses yet{% endtrans %}" - {% endif %} - /> - - {% endif %} -{%- endmacro -%} - -{%- macro moderation_items_link(user, moderation_items) -%} - {% if moderation_items %} - - {% if moderation_items['new_count'] > 0 %} - 0 %} - alt="{% trans new=moderation_items['new_count'], seen=moderation_items['seen_count']%}{{new}} new flagged posts and {{seen}} previous{% endtrans %}" - title="{% trans new=moderation_items['new_count'], seen=moderation_items['seen_count']%}{{new}} new flagged posts and {{seen}} previous{% endtrans %}" - {% else %} - alt="{% trans new=moderation_items['new_count'] %}{{new}} new flagged posts{% endtrans %}" - title="{% trans new=moderation_items['new_count'] %}{{new}} new flagged posts{% endtrans %}" - {% endif %} - /> - {% elif moderation_items['seen_count'] > 0 %} - {% trans seen=moderation_items['seen_count'] %}{{seen}} flagged posts{% endtrans %} - {% endif %} - - {% endif %} -{%- endmacro -%} diff --git a/lms/askbot/skins/mitx/templates/main_page.html b/lms/askbot/skins/mitx/templates/main_page.html deleted file mode 100644 index eef655fbf6..0000000000 --- a/lms/askbot/skins/mitx/templates/main_page.html +++ /dev/null @@ -1,28 +0,0 @@ -{% extends "two_column_body.html" %} -{# - this template is split into several - blocks that are included here - the blocks are within directory templates/main_page - relative to the skin directory - - there is no html markup in this file -#} - -{% block title %}{% spaceless %}{% trans %}Questions{% endtrans %}{% endspaceless %}{% endblock %} -{% block content %} - {% include "main_page/tab_bar.html" %} - {# include "main_page/headline.html" #} - {# ==== BEGIN: main_page/content.html === #} -
        - {% include "main_page/questions_loop.html" %} -
      - {# ==== END: main_page/content.html === #} - {% include "main_page/paginator.html" %} -{% endblock %} -{% block sidebar %} - {% include "main_page/sidebar.html" %} -{% endblock %} -{% block endjs %} - {% include "main_page/javascript.html" %} -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/main_page/content.html b/lms/askbot/skins/mitx/templates/main_page/content.html deleted file mode 100644 index 022d172d83..0000000000 --- a/lms/askbot/skins/mitx/templates/main_page/content.html +++ /dev/null @@ -1,3 +0,0 @@ -
        - {% include "main_page/questions_loop.html" %} -
      diff --git a/lms/askbot/skins/mitx/templates/main_page/headline.html b/lms/askbot/skins/mitx/templates/main_page/headline.html deleted file mode 100644 index 5f48e1c54a..0000000000 --- a/lms/askbot/skins/mitx/templates/main_page/headline.html +++ /dev/null @@ -1,42 +0,0 @@ -{% import "macros.html" as macros %} -{% if questions_count > 0 %} -

      - {% trans cnt=questions_count, q_num=questions_count|intcomma %}{{q_num}} question{% pluralize %}{{q_num}} questions{% endtrans %} - {% if author_name %} - {% trans %}with {{author_name}}'s contributions{% endtrans %} - {% endif %} -

      - {% if search_tags %} -
      - {% trans %}Tagged{% endtrans %} - {{ macros.tag_list_widget( - search_tags, - id = 'searchTags', - deletable = True, - make_links = False, - search_state = search_state - ) - }} -
      - {% endif %} - {% if author_name or search_tags or query %} -
      {% trans %}Search tips:{% endtrans %} - {% if reset_method_count > 1 %} - {% if author_name %} - {% trans %}reset author{% endtrans %} - {% endif %} - {% if search_tags %}{% if author_name and query %}, {% elif author_name %}{% trans %} or {% endtrans %}{% endif %} - {% trans %}reset tags{% endtrans %} - {% endif %} - {% if query %}{% trans %} or {% endtrans %} - {% trans %}start over{% endtrans %} - {% endif %} - {% else %} - {% trans %}start over{% endtrans %} - {% endif %} - {% trans %} - to expand, or dig in by adding more tags and revising the query.{% endtrans %} -
      - {% else %} -
      {% trans %}Search tip:{% endtrans %} {% trans %}add tags and a query to focus your search{% endtrans %}
      - {% endif %} -{% endif %} diff --git a/lms/askbot/skins/mitx/templates/main_page/javascript.html b/lms/askbot/skins/mitx/templates/main_page/javascript.html deleted file mode 100644 index 4c51cfd91c..0000000000 --- a/lms/askbot/skins/mitx/templates/main_page/javascript.html +++ /dev/null @@ -1,32 +0,0 @@ - - -{% if request.user.is_authenticated() %} - -{% endif %} - - diff --git a/lms/askbot/skins/mitx/templates/main_page/nothing_found.html b/lms/askbot/skins/mitx/templates/main_page/nothing_found.html deleted file mode 100644 index 3811700f98..0000000000 --- a/lms/askbot/skins/mitx/templates/main_page/nothing_found.html +++ /dev/null @@ -1,30 +0,0 @@ -{# todo: add tips to widen selection #} -{% if search_state.scope == "unanswered" %} -

      - {% trans %}There are no unanswered questions here{% endtrans %} -

      -{% endif %} -{% if search_state.scope == "favorite" %} -

      - {% trans %}No questions here. {% endtrans %} - {% trans %}Please follow some questions or follow some users.{% endtrans %} -

      -{% endif %} - -{% if search_state.query or search_state.tags or search_state.author %} - {% if reset_method_count > 1 %} - {% if search_state.author %} - {% trans %}You can expand your search by {% endtrans %}{% trans %}resetting author{% endtrans %} - {% endif %} - {% if search_state.tags %}{% if search_state.author and search_state.query %}, {% elif search_state.author %}{% trans %} or {% endtrans %}{% endif %} - {% trans %}You can expand your search by {% endtrans %}{% trans %}resetting tags{% endtrans %} - {% endif %} - {% if search_state.query %} - {% trans %}You can expand your search by {% endtrans %}{% trans %}starting over{% endtrans %} - {% endif %} - {% else %} - {% trans %}You can expand your search by {% endtrans %}{% trans %}starting over{% endtrans %} - {% endif %} - -{% endif %} - {% trans %}Ask a question{% endtrans %} diff --git a/lms/askbot/skins/mitx/templates/main_page/paginator.html b/lms/askbot/skins/mitx/templates/main_page/paginator.html deleted file mode 100644 index e7dc246a0a..0000000000 --- a/lms/askbot/skins/mitx/templates/main_page/paginator.html +++ /dev/null @@ -1,7 +0,0 @@ -{% import "macros.html" as macros %} -{% if questions_count > page_size %} -
      - {{ macros.paginator_main_page(context|setup_paginator, position='left', search_state=search_state) }} -
      -
      -{% endif %} diff --git a/lms/askbot/skins/mitx/templates/main_page/questions_loop.html b/lms/askbot/skins/mitx/templates/main_page/questions_loop.html deleted file mode 100644 index ad23b7f4bf..0000000000 --- a/lms/askbot/skins/mitx/templates/main_page/questions_loop.html +++ /dev/null @@ -1,14 +0,0 @@ -{% import "macros.html" as macros %} -{# cache 0 "questions" questions search_tags scope sort query context.page language_code #} -{% for thread in threads.object_list %} - {{ macros.question_summary(thread, thread._question_post(), search_state=search_state) }} -{% endfor %} -{% if threads.object_list|length == 0 %} - {% include "main_page/nothing_found.html" %} -{% else %} -
      - {% trans %}Did not find what you were looking for?{% endtrans %} - {% trans %}Please, post your question!{% endtrans %} -
      -{% endif %} - diff --git a/lms/askbot/skins/mitx/templates/main_page/scope_filters.html b/lms/askbot/skins/mitx/templates/main_page/scope_filters.html deleted file mode 100644 index 96ab0f0f9c..0000000000 --- a/lms/askbot/skins/mitx/templates/main_page/scope_filters.html +++ /dev/null @@ -1,16 +0,0 @@ -
      -
        -
      • Display
      • -
      • - {% trans %}All{% endtrans %} -
      • - {% if request.user.is_authenticated() %} -
      • - {% trans %}Only followed{% endtrans %} -
      • - {% endif %} -
      -
      - diff --git a/lms/askbot/skins/mitx/templates/main_page/sidebar.html b/lms/askbot/skins/mitx/templates/main_page/sidebar.html deleted file mode 100644 index d6ee573ad1..0000000000 --- a/lms/askbot/skins/mitx/templates/main_page/sidebar.html +++ /dev/null @@ -1,34 +0,0 @@ -{% import "macros.html" as macros %} - -

      Course Discussion

      - -{% if request.user.is_authenticated() %} -
      - Ask a question - View profile ({{user.username}}) -
      -{% endif %} - -
      -

      Search questions

      - {% include "widgets/search_bar.html" %} {# include search form widget #} -
      - - -{{ settings.SIDEBAR_MAIN_HEADER }} - -{% if contributors and settings.SIDEBAR_MAIN_SHOW_AVATARS %} - {# include "widgets/contributors.html" #} -{% endif %} - -{% if request.user.is_authenticated() and settings.SIDEBAR_MAIN_SHOW_TAG_SELECTOR %} - {% include "widgets/tag_selector.html" %} -{% endif %} - -{% if tags and settings.SIDEBAR_MAIN_SHOW_TAGS %} - {% include "widgets/related_tags.html" %} -{% endif %} - - - -{{ settings.SIDEBAR_MAIN_FOOTER }} diff --git a/lms/askbot/skins/mitx/templates/main_page/tab_bar.html b/lms/askbot/skins/mitx/templates/main_page/tab_bar.html deleted file mode 100644 index 658cb7ccdb..0000000000 --- a/lms/askbot/skins/mitx/templates/main_page/tab_bar.html +++ /dev/null @@ -1,119 +0,0 @@ -{% import "macros.html" as macros %} -{% load extra_filters_jinja %} -{% cache 0 "scope_sort_tabs" search_tags request.user scope sort query context.page language_code %} - -
      -
      - -
      - - {% if questions_count > 0 %} -

      - {% trans cnt=questions_count, q_num=questions_count|intcomma %}{{q_num}} question{% pluralize %}{{q_num}} questions{% endtrans %} - - {% if author_name %} - {% trans %}with {{author_name}}'s contributions{% endtrans %} - {% endif %} -

      - - - - {% else %} - -

      No questions found

      - - {% endif %} -
      - - - {% if questions_count > 0 %} -
      -
      -
      - {% trans %}Sort by {% endtrans %} - {% if show_sort_by_relevance %} - {% set asc_relevance_tooltip = gettext('most relevant questions') %} - {% set desc_relevance_tooltip = gettext('click to see most relevant questions') %} - {% set relevance_label = gettext('relevance') %} - {% if query %} - {{relevance_label}} ▼ - {% else %} - href="{{ search_state.change_sort('relevance-desc').full_url() }}" - class="off" - title="{{desc_relevance_tooltip}}">{{relevance_label}} - {% endif %} - - {% endif %} - - - {% endif %} - - {{macros.reversible_sort_button( - button_sort_criterium = 'age', - label = gettext('by date'), - asc_tooltip = gettext('click to see the oldest questions'), - desc_tooltip = gettext('click to see the newest questions'), - current_sort_method = sort, - search_state = search_state, - ) - }} - {{macros.reversible_sort_button( - button_sort_criterium = 'activity', - label = gettext('by activity'), - asc_tooltip = gettext('click to see the least recently updated questions'), - desc_tooltip = gettext('click to see the most recently updated questions'), - current_sort_method = sort, - search_state = search_state, - ) - }} - {{macros.reversible_sort_button( - button_sort_criterium = 'answers', - label = gettext('by answers'), - asc_tooltip = gettext('click to see the least answered questions'), - desc_tooltip = gettext('click to see the most answered questions'), - current_sort_method = sort, - search_state = search_state, - ) - }} - {{macros.reversible_sort_button( - button_sort_criterium = 'votes', - label = gettext('by votes'), - asc_tooltip = gettext('click to see least voted questions'), - desc_tooltip = gettext('click to see most voted questions'), - current_sort_method = sort, - search_state = search_state, - ) - }} -
      -
      -
      - {% endif %} - -
      - - {% if search_tags %} -
      - -
      - Reset filter -
      - -
      - - {{ macros.tag_list_widget( search_tags, id = 'searchTags', deletable = True, make_links = False, search_state = search_state) }} -
      - - - -
      - {% endif %} - -
      - -{% endcache %} diff --git a/lms/askbot/skins/mitx/templates/meta/bottom_scripts.html b/lms/askbot/skins/mitx/templates/meta/bottom_scripts.html deleted file mode 100644 index 4e189f598c..0000000000 --- a/lms/askbot/skins/mitx/templates/meta/bottom_scripts.html +++ /dev/null @@ -1,107 +0,0 @@ -{# most, if not all javascripts should go here - this template is included at the very bottow of the - main template "base.html" -#} -
      - -
      - - - -{# - -#} - - - - -{% if settings.ENABLE_MATHJAX %} - -{% endif %} - -{% if settings.USE_CUSTOM_JS %} - -{% endif %} -{% if settings.GOOGLE_ANALYTICS_KEY %} - - -{% endif %} diff --git a/lms/askbot/skins/mitx/templates/meta/editor_data.html b/lms/askbot/skins/mitx/templates/meta/editor_data.html deleted file mode 100644 index 025be8a03e..0000000000 --- a/lms/askbot/skins/mitx/templates/meta/editor_data.html +++ /dev/null @@ -1,13 +0,0 @@ - diff --git a/lms/askbot/skins/mitx/templates/meta/html_head_javascript.html b/lms/askbot/skins/mitx/templates/meta/html_head_javascript.html deleted file mode 100644 index 2d453215e8..0000000000 --- a/lms/askbot/skins/mitx/templates/meta/html_head_javascript.html +++ /dev/null @@ -1,11 +0,0 @@ - - -{% block forejs %} -{% endblock %} -{# avoid adding javascript here so that pages load faster #} diff --git a/lms/askbot/skins/mitx/templates/meta/html_head_meta.html b/lms/askbot/skins/mitx/templates/meta/html_head_meta.html deleted file mode 100644 index 352ffb534b..0000000000 --- a/lms/askbot/skins/mitx/templates/meta/html_head_meta.html +++ /dev/null @@ -1,8 +0,0 @@ - -{% block meta_description %} - -{% endblock %} - -{% if settings.GOOGLE_SITEMAP_CODE %} - -{% endif %} diff --git a/lms/askbot/skins/mitx/templates/meta/html_head_stylesheets.html b/lms/askbot/skins/mitx/templates/meta/html_head_stylesheets.html deleted file mode 100644 index a6a3d3cd46..0000000000 --- a/lms/askbot/skins/mitx/templates/meta/html_head_stylesheets.html +++ /dev/null @@ -1,3 +0,0 @@ -{% load extra_filters_jinja %} -{{ 'application' | compressed_css }} -{{ 'course' | compressed_css }} diff --git a/lms/askbot/skins/mitx/templates/meta/mandatory_tags_js.html b/lms/askbot/skins/mitx/templates/meta/mandatory_tags_js.html deleted file mode 100644 index f04a6345b7..0000000000 --- a/lms/askbot/skins/mitx/templates/meta/mandatory_tags_js.html +++ /dev/null @@ -1,25 +0,0 @@ - diff --git a/lms/askbot/skins/mitx/templates/navigation.jinja.html b/lms/askbot/skins/mitx/templates/navigation.jinja.html deleted file mode 100644 index 686ae3a724..0000000000 --- a/lms/askbot/skins/mitx/templates/navigation.jinja.html +++ /dev/null @@ -1,27 +0,0 @@ -
      -
      -

      -
        -
      1. - Find Courses -
      2. -
      - -
        -
      1. - - - {{user.username}} - -
      2. -
      3. - ▾ -
          - {#
        • Account Settings
        • #} -
        • Help
        • -
        • Log Out
        • -
        -
      4. -
      -
      -
      diff --git a/lms/askbot/skins/mitx/templates/question.html b/lms/askbot/skins/mitx/templates/question.html deleted file mode 100644 index b2462faf69..0000000000 --- a/lms/askbot/skins/mitx/templates/question.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends "two_column_body.html" %} - -{% block title %}{% spaceless %}{{ question.get_question_title()|escape }}{% endspaceless %}{% endblock %} -{% block meta_description %} - -{% endblock %} -{% block keywords %}{{thread.tagname_meta_generator()}}{% endblock %} -{% block forestyle %} - - -{% endblock %} -{% block content %} - {# ==== BEGIN: question/content.html ==== #} - {% include "question/content.html" %} - {# ==== END: question/content.html ==== #} -{% endblock %} -{% block sidebar %} - {%include "question/sidebar.html" %} -{% endblock %} -{% block endjs %} - {%include "question/javascript.html" %} -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/question/answer_card.html b/lms/askbot/skins/mitx/templates/question/answer_card.html deleted file mode 100644 index 1af4496c99..0000000000 --- a/lms/askbot/skins/mitx/templates/question/answer_card.html +++ /dev/null @@ -1,41 +0,0 @@ -
      - - - {% if answer.old_answer_id %} - {# Make old URL anchors/hashes work #} - - {% endif %} - -
      - {# ==== START: question/answer_vote_buttons.html ==== #} - {% include "question/answer_vote_buttons.html" %} - {# ==== END: question/answer_vote_buttons.html ==== #} -
      - -
      - -
      - -
      - {{ answer.html }} - {# ==== START: question/question_comments.html ==== #} - {% include "question/answer_comments.html" %} - {# ==== END: question/question_comments.html ==== #} -
      - - {# ==== START: "question/question_author_info.html" #} -
      - - {% if answer.author.is_administrator() %}
      Staff answer
      {%endif%} - {% include "question/answer_author_info.html" %} -
      - {% include "question/answer_controls.html" %} -
      -
      - {# ==== END: "question/question_author_info.html" #} - -
      - -
      - -
      diff --git a/lms/askbot/skins/mitx/templates/question/answer_tab_bar.html b/lms/askbot/skins/mitx/templates/question/answer_tab_bar.html deleted file mode 100644 index d8a5626a4e..0000000000 --- a/lms/askbot/skins/mitx/templates/question/answer_tab_bar.html +++ /dev/null @@ -1,29 +0,0 @@ -
      -
      -

      - {% trans counter=answer_count %} - {{counter}} Answer - {% pluralize %} - {{counter}} Answers - {% endtrans %} -

      -
      -
      -
      -
      - - {% trans %}Sort by{% endtrans %} - - {% trans %}oldest answers{% endtrans %} - {% trans %}newest answers{% endtrans %} - {% trans %}popular answers{% endtrans %} -
      -
      -
      -
      diff --git a/lms/askbot/skins/mitx/templates/question/content.html b/lms/askbot/skins/mitx/templates/question/content.html deleted file mode 100644 index 33ebf3fcc0..0000000000 --- a/lms/askbot/skins/mitx/templates/question/content.html +++ /dev/null @@ -1,42 +0,0 @@ -{% import "macros.html" as macros %} - -{# ==== BEGIN: question/question_card.html ==== #} -{% include "question/question_card.html" %} -{# ==== END: question/question_card.html ==== #} -{% if thread.closed %} - {# ==== START: question/closed_question_info.html ==== #} - {% include "question/closed_question_info.html" %} - {# ==== END: question/closed_question_info.html ==== #} -{% endif %} - -{% if answers %} - - {# ==== START: question/answer_tab_bar.html ==== #} - {% include "question/answer_tab_bar.html" %} - {# ==== END: question/answer_tab_bar.html ==== #} - - - - {% for answer in answers %} - {# ==== START: question/answer_card.html ==== #} - {% include "question/answer_card.html" %} - {# ==== END: question/answer_card.html ==== #} - {% endfor %} - - {{ macros.paginator(paginator_context, anchor='#sort-top') }} - -{% else %} - {# ==== START: question/sharing_prompt_phrase.html ==== #} - {% include "question/sharing_prompt_phrase.html" %} - {# ==== END: question/sharing_prompt_phrase.html ==== #} -{% endif %} - -{# ==== START: question/new_answer_form.html ==== #} -{% include "question/new_answer_form.html" %} -{# ==== END: question/new_answer_form.html ==== #} - -{% if request.user == question.author %}{# this is outside the form on purpose #} -
      - -
      -{%endif%} diff --git a/lms/askbot/skins/mitx/templates/question/javascript.html b/lms/askbot/skins/mitx/templates/question/javascript.html deleted file mode 100644 index 96f001a952..0000000000 --- a/lms/askbot/skins/mitx/templates/question/javascript.html +++ /dev/null @@ -1,91 +0,0 @@ -{% if not thread.closed %} - - - - -{% endif %} - - - -{% include "meta/editor_data.html" %} diff --git a/lms/askbot/skins/mitx/templates/question/new_answer_form.html b/lms/askbot/skins/mitx/templates/question/new_answer_form.html deleted file mode 100644 index e36de02e51..0000000000 --- a/lms/askbot/skins/mitx/templates/question/new_answer_form.html +++ /dev/null @@ -1,59 +0,0 @@ -
      {% csrf_token %} - - {% if request.user.is_anonymous() and settings.ALLOW_POSTING_BEFORE_LOGGING_IN == False %} - {% if not thread.closed %} - {% trans %}Login/Signup to Answer{% endtrans %} - {% endif %} - {% else %} - {% if not thread.closed %} -
      -

      - {% if answers %} - {% trans %}Your answer{% endtrans %} - {% else %} - {% trans %}Be the first one to answer this question!{% endtrans %} - {% endif %} -

      -
      - - {% if request.user.is_anonymous() %} -
      {% trans %}you can answer anonymously and then login{% endtrans %}
      - {% else %} -

      - {% if request.user==question.author %} - {% trans %}answer your own question only to give an answer{% endtrans %} - {% else %} - {% trans %}please only give an answer, no discussions{% endtrans %} - {% endif %} -

      - {% endif %} - - {# ==== START: question/subscribe_by_email_prompt.html ==== #} - {# include "question/subscribe_by_email_prompt.html" #} - {# ==== END: question/subscribe_by_email_prompt.html ==== #} - - {{ macros.edit_post(answer) }} - -
      - - {% if settings.WIKI_ON %} - {{ macros.checkbox_in_div(answer.wiki) }} - {% endif %} -
      - - {% endif %} - {% endif %} -
      diff --git a/lms/askbot/skins/mitx/templates/question/question_card.html b/lms/askbot/skins/mitx/templates/question/question_card.html deleted file mode 100644 index 7a31662581..0000000000 --- a/lms/askbot/skins/mitx/templates/question/question_card.html +++ /dev/null @@ -1,47 +0,0 @@ -
      - -
      - {# ==== BEGIN: question/question_vote_buttons.html ==== #} - {% include "question/question_vote_buttons.html" %} - {# ==== END: question/question_vote_buttons.html ==== #} - {# ==== BEGIN: question/share_buttons.html ==== #} - - {# ==== END: question/share_buttons.html ==== #} -
      - -
      - -

      {{ thread.get_title(question)|escape }}

      - -
      - -
      - {% include "question/question_tags.html" %} -
      - -
      - {% include "question/question_controls.html" %} -
      - -
      - -
      - -
      - {{ question.html }} - {# ==== START: question/question_comments.html ==== #} - {% include "question/question_comments.html" %} - {# ==== END: question/question_comments.html ==== #} -
      - - {# ==== START: "question/question_author_info.html" #} -
      - {% if question.author.is_administrator() %}
      Staff question
      {%endif%} - {% include "question/question_author_info.html" %}
      - {# ==== END: "question/question_author_info.html" #} - -
      - -
      - -
      diff --git a/lms/askbot/skins/mitx/templates/question/sharing_prompt_phrase.html b/lms/askbot/skins/mitx/templates/question/sharing_prompt_phrase.html deleted file mode 100644 index ebd3e19055..0000000000 --- a/lms/askbot/skins/mitx/templates/question/sharing_prompt_phrase.html +++ /dev/null @@ -1,13 +0,0 @@ -{% set question_url=settings.APP_URL+question.get_absolute_url()|urlencode %} -
      -

      {% trans %}Know someone who can answer? Share a link to this question via{% endtrans %} - {% if settings.ENABLE_SHARING_TWITTER %}{{ macros.share(site = 'twitter', site_label = 'Twitter') }},{% endif %} - {% if settings.ENABLE_SHARING_FACEBOOK %}{{ macros.share(site = 'facebook', site_label = 'Facebook') }},{% endif %} - {% if settings.ENABLE_SHARING_LINKEDIN %}{{ macros.share(site = 'linkedin', site_label = 'LinkedIn') }},{% endif %} - {% if settings.ENABLE_SHARING_IDENTICA %}{{ macros.share(site = 'identica', site_label = 'Identi.ca') }},{% endif %} - {%- if settings.ENABLE_SHARING_TWITTER or settings.ENABLE_SHARING_FACEBOOK or settings.ENABLE_SHARING_LINKEDIN or settings.ENABLE_SHARING_IDENTICA -%} - {% trans %} or{% endtrans %} - {% endif %} - {% trans %}email{% endtrans %}. -

      -
      diff --git a/lms/askbot/skins/mitx/templates/question/sidebar.html b/lms/askbot/skins/mitx/templates/question/sidebar.html deleted file mode 100644 index 669fc3d525..0000000000 --- a/lms/askbot/skins/mitx/templates/question/sidebar.html +++ /dev/null @@ -1,63 +0,0 @@ -{% import "macros.html" as macros %} -{{ settings.SIDEBAR_QUESTION_HEADER }} -

      Course Question

      - - - - - - - - - - - - - - - - - - - - - - - -{% if settings.SIDEBAR_QUESTION_SHOW_META %} -
      -
        -
      • - {% trans %}question asked{% endtrans %} {{question.added_at|diff_date}} -
      • -
      • - {% trans %}question was seen{% endtrans %} {{ thread.view_count|intcomma }} {% trans %}times{% endtrans %} -
      • -
      • - {% trans %}last updated{% endtrans %} {{thread.last_activity_at|diff_date}} -
      • - - - - - -
      -
      -{% endif %} - -{% if similar_threads.data and settings.SIDEBAR_QUESTION_SHOW_RELATED %} -{#% cache 1800 "related_questions" related_questions question.id language_code %#} - - - - - - - - - - -{#% endcache %#} -{% endif %} - -{{ settings.SIDEBAR_QUESTION_FOOTER }} diff --git a/lms/askbot/skins/mitx/templates/question/subscribe_by_email_prompt.html b/lms/askbot/skins/mitx/templates/question/subscribe_by_email_prompt.html deleted file mode 100644 index f6520fc3b0..0000000000 --- a/lms/askbot/skins/mitx/templates/question/subscribe_by_email_prompt.html +++ /dev/null @@ -1,23 +0,0 @@ -{% if request.user.is_authenticated() %} -

      - {{ answer.email_notify }} - - {% trans profile_url=request.user.get_profile_url() %}You can always adjust frequency of email updates from your {{profile_url}}{% endtrans %} -

      -{% else %} -

      - {{ answer.email_notify }} - -

      -{% endif %} diff --git a/lms/askbot/skins/mitx/templates/question_edit.html b/lms/askbot/skins/mitx/templates/question_edit.html deleted file mode 100644 index 07ed178ee3..0000000000 --- a/lms/askbot/skins/mitx/templates/question_edit.html +++ /dev/null @@ -1,96 +0,0 @@ -{% extends "two_column_body.html" %} -{% import "macros.html" as macros %} - -{% block title %}{% spaceless %}{% trans %}Edit question{% endtrans %}{% endspaceless %}{% endblock %} -{% block content %} - - -
      -

      {% trans %}Edit question{% endtrans %} {% trans %}back to question{% endtrans %}

      -
      - -
      {% csrf_token %} - - - {{ - macros.edit_post( - form, - post_type='question', - edit_title=True, - mandatory_tags = mandatory_tags - ) - }} -
      - {% if settings.WIKI_ON and question.wiki == False %} - {{ macros.checkbox_in_div(form.wiki) }} - {% endif %} - {% if form.can_stay_anonymous() %} - {{ macros.checkbox_in_div(form.reveal_identity) }} - {% endif %} -
      - -
      -   - - -
      -
      -{% endblock %} - -{% block sidebar %} -{% include "widgets/question_edit_tips.html" %} -{% endblock %} - -{% block endjs %} - {% include "meta/editor_data.html" %} - - {% if mandatory_tags %} - {% include "meta/mandatory_tags_js.html" %} - {% endif %} - - - - - -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/question_retag.html b/lms/askbot/skins/mitx/templates/question_retag.html deleted file mode 100644 index d15813e5d3..0000000000 --- a/lms/askbot/skins/mitx/templates/question_retag.html +++ /dev/null @@ -1,68 +0,0 @@ -{% extends "two_column_body.html" %} - -{% block title %}{% spaceless %}{% trans %}Change tags{% endtrans %}{% endspaceless %}{% endblock %} -{% block content %} -

      {% trans %}Change tags{% endtrans %} [{% trans %}back{% endtrans %}]

      -
      {% csrf_token %} -

      - {{ question.thread.get_title()|escape }} -

      -
      - {{ question.html }} -
      -
      - {{ form.tags.label_tag() }}:
      - {{ form.tags }} {{ form.tags.errors }} -
      - {{ form.tags.help_text }} -
      -
      -
      -   - -
      -{% endblock %} - -{% block sidebar %} -
      -

      {% trans %}Why use and modify tags?{% endtrans %}

      -
        -
      • {% trans %}Tags help to keep the content better organized and searchable{% endtrans %}
      • -
      • - {% trans %}tag editors receive special awards from the community{% endtrans %} -
      • -
      -

      - faq » -

      -
      -{% endblock %} -{% block endjs %} - - - - -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/question_widget.html b/lms/askbot/skins/mitx/templates/question_widget.html deleted file mode 100644 index 9d32294bce..0000000000 --- a/lms/askbot/skins/mitx/templates/question_widget.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - {{settings.QUESTIONS_WIDGET_HEADER|safe}} -
      -
        - {% for thread in threads %} -
      • - {{ thread.title|escape }}
      • - {% endfor %} -
      -
      - {{settings.QUESTIONS_WIDGET_FOOTER|safe}} - - diff --git a/lms/askbot/skins/mitx/templates/reopen.html b/lms/askbot/skins/mitx/templates/reopen.html deleted file mode 100644 index d1ccc31315..0000000000 --- a/lms/askbot/skins/mitx/templates/reopen.html +++ /dev/null @@ -1,38 +0,0 @@ -{% extends "two_column_body.html" %} - -{% block title %}{% spaceless %}{% trans %}Reopen question{% endtrans %}{% endspaceless %}{% endblock %} -{% block content %} -

      {% trans %}Reopen question{% endtrans %}

      -

      {% trans %}Title{% endtrans %}: - - {{ question.get_question_title()|escape }} - -

      -

      {% trans %}This question has been closed by - {{closed_by_username}} -{% endtrans %} -

      -

      - {% trans %}Close reason:{% endtrans %} "{{question.thread.get_close_reason_display()}}". -

      -

      - {% trans %}When:{% endtrans %} {{question.thread.closed_at|diff_date}} -

      -

      - {% trans %}Reopen this question?{% endtrans %} -

      -
      {% csrf_token %} -
      -   - -
      -
      -{% endblock %} -{% block endjs %} - -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/revisions.html b/lms/askbot/skins/mitx/templates/revisions.html deleted file mode 100644 index 07b98b5bb0..0000000000 --- a/lms/askbot/skins/mitx/templates/revisions.html +++ /dev/null @@ -1,102 +0,0 @@ -{% extends "two_column_body.html" %} -{% import "macros.html" as macros %} - -{% block title %}{% spaceless %}{% trans %}Revision history{% endtrans %}{% endspaceless %}{% endblock %} -{% block content %} -

      - {% trans %}Revision history{% endtrans %} [{% trans %}back{% endtrans %}] -

      -
      -{% for revision in revisions %} -
      -
      -
      - - - - - - - -
      - {% trans %}click to hide/show revision{% endtrans %} - - {{ revision.revision }} - {% if revision.summary %} -
      - {{ revision.summary|escape }} -
      - {% endif %} - {% if request.user|can_edit_post(post) %} - {% if post.post_type == 'answer' %} - {% trans %}edit{% endtrans %} - {% endif %} - {% if post.post_type == 'question' %} - {% trans %}edit{% endtrans %} - {% endif %} - {% endif %} -
      -
      - {% if revision.revision == 1 %} - {% set contributor_type = "original_author" %} - {% else %} - {% set contributor_type = "last_updater" %} - {% endif %} - {{ macros.post_contributor_info( - revision, - contributor_type, - False, - 0 - ) - }} -
      -
      -
      -
      -
      - {{ revision.diff }} -
      -
      -{% endfor %} -
      -{% endblock %} - -{% block endjs %} - - - -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/static_page.html b/lms/askbot/skins/mitx/templates/static_page.html deleted file mode 100644 index c537e19945..0000000000 --- a/lms/askbot/skins/mitx/templates/static_page.html +++ /dev/null @@ -1,10 +0,0 @@ -{% extends "two_column_body.html" %} - -{% block title %}{% spaceless %}{{title}}{% endspaceless %}{% endblock %} -{% block content %} -
      -

      {{title}}

      - {{content}} -
      -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/subscribe_for_tags.html b/lms/askbot/skins/mitx/templates/subscribe_for_tags.html deleted file mode 100644 index b436fb840a..0000000000 --- a/lms/askbot/skins/mitx/templates/subscribe_for_tags.html +++ /dev/null @@ -1,19 +0,0 @@ -{% extends "two_column_body.html" %} -{% import "macros.html" as macros %} -{% block title %}{% trans %}Subscribe for tags{% endtrans %}{% endblock %} -{% block content %} -

      {% trans %}Subscribe for tags{% endtrans %}

      -

      {% trans %}Please, subscribe for the following tags:{% endtrans %}

      -
        - {% for tag in tags %} - {{ macros.tag_widget(tag, html_tag = 'li', is_link = False) }} - {% endfor %} -
      -
      -
      {% csrf_token %} - - - -
      -
      -{% endblock %} diff --git a/lms/askbot/skins/mitx/templates/tags.html b/lms/askbot/skins/mitx/templates/tags.html deleted file mode 100644 index 4894bdb1a4..0000000000 --- a/lms/askbot/skins/mitx/templates/tags.html +++ /dev/null @@ -1,75 +0,0 @@ -{% extends "two_column_body.html" %} -{% import "macros.html" as macros %} - -{% block title %}{% spaceless %}{% trans %}Tag list{% endtrans %}{% endspaceless %}{% endblock %} -{% block content %} - -{% if stag %} -

      {% trans %}Tags, matching "{{ stag }}"{% endtrans %}

      -{% else %} -

      {% trans %}Tag list{% endtrans %}

      -{% endif %} -
      -
      - {% trans %}Sort by »{% endtrans %} - {% trans %}by name{% endtrans %} - {% trans %}by popularity{% endtrans %} -
      -
      -{% if tag_list_type == 'list' %} - {% if not tags.object_list %} - {% trans %}Nothing found{% endtrans %} - {% endif %} - {% if tags.object_list %} -
      -
        - {% for tag in tags.object_list %} -
      • - {{ macros.tag_widget( - tag = tag.name, - html_tag = 'div', - extra_content = '× ' ~ - tag.used_count|intcomma ~ '' - ) - }} -
      • - {% endfor %} -
      -
      -
      - {{macros.paginator(paginator_context)}} -
      - {% endif %} -{% else %} -
      - {% if not tags %} - {% trans %}Nothing found{% endtrans %} - {% endif %} - {{ macros.tag_cloud(tags = tags, font_sizes = font_size) }} -{% endif %} - -{% endblock %} -{% block endjs %} - -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/user_profile/user.html b/lms/askbot/skins/mitx/templates/user_profile/user.html deleted file mode 100644 index c7231efe0a..0000000000 --- a/lms/askbot/skins/mitx/templates/user_profile/user.html +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "two_column_body.html" %} - - -{% block title %}{{ page_title }}{% endblock %} - -{% block content %} - {% block usercontent %}{% endblock %} -{% endblock %} - -{% block endjs %} - - {% if request.user|can_moderate_user(view_user) %} - - {% endif %} - - {% block userjs %} - {% endblock %} -{% endblock %} - -{% block sidebar %} - -{{ settings.SIDEBAR_PROFILE_HEADER }} - -{{ settings.SIDEBAR_PROFILE_FOOTER }} - -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/user_profile/user_edit.html b/lms/askbot/skins/mitx/templates/user_profile/user_edit.html deleted file mode 100644 index aa1c276e23..0000000000 --- a/lms/askbot/skins/mitx/templates/user_profile/user_edit.html +++ /dev/null @@ -1,120 +0,0 @@ -{% extends "one_column_body.html" %} -{% import "macros.html" as macros %} - -{% block title %}{% spaceless %}{% trans %}Edit user profile{% endtrans %}{% endspaceless %}{% endblock %} -{% block content %} -

      - {{ request.user.username }} - {% trans %}edit profile{% endtrans %} -

      - -
      -
      {% csrf_token %} -
      -
      - {{ macros.gravatar(view_user, 128) }} - {% if request.user == view_user %} -

      {% trans %}change picture{% endtrans %}

      - {% if support_custom_avatars %} -

      {% trans %}remove{% endtrans %} -

      - {% endif %} - {% endif %} -
      -
      -
      -

      {% trans %}Registered user{% endtrans %}

      - - - - - - - - - {% else %} - {{ view_user.username }} - {% endif %} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      {% trans %}Screen Name{% endtrans %}: - {% if settings.EDITABLE_SCREEN_NAME %} - {{ form.username }} - {{ form.username.errors }}
      - {{ form.email.label_tag() }}: - - {% if settings.EDITABLE_EMAIL %} - {{ form.email }} - - {{ form.email.errors }} - {% else %} - {{ view_user.email }} - {% trans %}(cannot be changed){% endtrans %} - {% endif %} -
      {{ form.realname.label_tag() }}:{{ form.realname }} {{ form.realname.errors }}
      {{ form.website.label_tag() }}:{{ form.website }} {{ form.website.errors }}
      {{ form.city.label_tag() }}:{{ form.city }} {{ form.city.errors }}
      {{ form.country.label_tag() }}:{{ form.country }} {{ form.country.errors }}
      {{ form.show_country.label_tag() }}:{{ form.show_country }} {{ form.show_country.errors }}
      {{ form.birthday.label_tag() }}:{{ form.birthday }} {{ form.birthday.errors }}
      {{ form.birthday.help_text }}
      -
      {{ form.about.label_tag() }}:{{ form.about }} {{ form.about.errors }}
      -
      -   - -
      -
      -
      -
      -{% endblock %} -{% block endjs %} - - {% block userjs %} - {% endblock %} -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/user_profile/user_email_subscriptions.html b/lms/askbot/skins/mitx/templates/user_profile/user_email_subscriptions.html deleted file mode 100644 index e6a18dd35c..0000000000 --- a/lms/askbot/skins/mitx/templates/user_profile/user_email_subscriptions.html +++ /dev/null @@ -1,27 +0,0 @@ -{% extends "user_profile/user.html" %} - -{% block profilesection %} - {% trans %}subscriptions{% endtrans %} -{% endblock %} -{% block usercontent %} -

      {% trans %}Email subscription settings{% endtrans %}

      -

      {% trans %}email subscription settings info{% endtrans %}

      -
      - {% if action_status %} -

      {{action_status}}

      - {% endif %} -
      {% csrf_token %} - - {{email_feeds_form.as_table()}} -
      - - {{tag_filter_selection_form}} -
      -
      -   - -
      -
      -
      -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/user_profile/user_favorites.html b/lms/askbot/skins/mitx/templates/user_profile/user_favorites.html deleted file mode 100644 index 08c3c68859..0000000000 --- a/lms/askbot/skins/mitx/templates/user_profile/user_favorites.html +++ /dev/null @@ -1,9 +0,0 @@ -{% extends "user_profile/user.html" %} - -{% block profilesection %} -

      {% trans %}followed questions{% endtrans %}

      -{% endblock %} -{% block usercontent %} -{% include "user_profile/users_questions.html" %} -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/user_profile/user_inbox.html b/lms/askbot/skins/mitx/templates/user_profile/user_inbox.html deleted file mode 100644 index f70f1884bc..0000000000 --- a/lms/askbot/skins/mitx/templates/user_profile/user_inbox.html +++ /dev/null @@ -1,131 +0,0 @@ -{% extends "user_profile/user.html" %} -{% import "macros.html" as macros %} - -{# -This template accepts a list of response list -they are a generalized form of any response and - -The following properties of response object are used: -timestamp - when it happened -user - user who gave response (database object) -response_type - type of response -response_url - link to the question -response_title - title of the question -response_snippet - abbreviated content of the response -inbox_section - forum|flags -#} -{% block profilesection %} - {% trans %}inbox{% endtrans %} -{% endblock %} -{% block usercontent %} -
      - {% set re_count = request.user.new_response_count + - request.user.seen_response_count - %} - {% if moderation_items %} - {% set flag_count = moderation_items['new_count'] + - moderation_items['seen_count'] - %} - {% else %} - {% set flag_count = 0 %} - {% endif %} - {% if re_count > 0 and flag_count > 0 %} -
      - {% trans %}Sections:{% endtrans %} - - {% trans %}forum responses ({{re_count}}){% endtrans -%} - | - - {% trans %}flagged items ({{flag_count}}){% endtrans %} - -
      - {% endif %} - {% if inbox_section == 'forum' %} -
      - {% trans %}select:{% endtrans %} - {% trans %}all{% endtrans %} | - {% trans %}seen{% endtrans %} | - {% trans %}new{% endtrans %} | - {% trans %}none{% endtrans %}
      - - - -
      - {% endif %} - {% if inbox_section == 'flags' %} -
      - {% trans %}select:{% endtrans %} - {% trans %}all{% endtrans %} | - {% trans %}seen{% endtrans %} | - {% trans %}new{% endtrans %} | - {% trans %}none{% endtrans %}
      - - - -
      - {% endif %} -
      - {% for response in responses %} -
      -

      - "{{ response.response_title.strip()|escape}}" -

      -
      - -
      - {{ macros.gravatar(response.user, 48) }} -
      - {{ response.user.username }} - - {{ response.response_type }} - ({{ response.timestamp|diff_date(True) }}):
      - {% if inbox_section != 'flags' %} - {{ response.response_snippet }} - {% endif %} -
      - {% if inbox_section == 'flags' %} - -
      {{ response.response_snippet }}
      -
      {{ response.response_content }}
      - {% endif %} -
      - {% if response.nested_responses %} - {%for nested_response in response.nested_responses %} -
      - -
      - {{ macros.gravatar(nested_response.user, 48) }} -
      - {{ nested_response.user.username }} - - {{ nested_response.response_type }} - ({{ nested_response.timestamp|diff_date(True) }}):
      - {% if inbox_section != 'flags' %} - {{ nested_response.response_snippet }} - {% endif %} -
      - {% if inbox_section == 'flags' %} - -
      {{ nested_response.response_snippet }}
      -
      {{ nested_response.response_content }}
      - {% endif %} -
      - {%endfor%} - {%endif%} -
      - {% endfor %} -
      -
      -{% endblock %} -{% block userjs %} - - -{% endblock %} diff --git a/lms/askbot/skins/mitx/templates/user_profile/user_info.html b/lms/askbot/skins/mitx/templates/user_profile/user_info.html deleted file mode 100644 index b1e5ef8ff8..0000000000 --- a/lms/askbot/skins/mitx/templates/user_profile/user_info.html +++ /dev/null @@ -1,90 +0,0 @@ - -{% import "macros.html" as macros %} - - - - - - - - - - - - - - - - - - - - -

      - {% trans username=view_user.username %}{{username}}’s profile{% endtrans %} -

      - -
      -
      -

      {{user_status_for_display}}

      -

      {% trans %}member for{% endtrans %} {{ view_user.date_joined|diff_date }}

      -
      -
      -

      {{view_user.reputation|intcomma}} {% trans %}reputation{% endtrans %}

      -
      - -
      - -
      -
        -

        User stats

        - - - - - - - - - - - - - - - - - {% if view_user.real_name %} -
      • {% trans %}real name{% endtrans %} {{view_user.real_name}}
      • - {% endif %} - - - - - - - {% if view_user.website %} -
      • {% trans %}user website{% endtrans %} {{ macros.user_website_link(view_user, max_display_length = 30) }}
      • - {% endif %} - - {% if view_user.location or view_user.country %} -
      • {% trans %}location{% endtrans %} {{ macros.user_full_location(view_user) }}
      • - {% endif %} - - {% if view_user.date_of_birth %} - -
      • {% trans %}age{% endtrans %} {{view_user.date_of_birth|get_age}} {% trans %}age unit{% endtrans %}
      • - {% endif %} - - {% if votes_today_left %} -
      • {% trans %}todays unused votes{% endtrans %} {{ votes_today_left }}
      • - {% endif %} - - - - - - - -
      -
      diff --git a/lms/askbot/skins/mitx/templates/user_profile/user_moderate.html b/lms/askbot/skins/mitx/templates/user_profile/user_moderate.html deleted file mode 100644 index 048f35b414..0000000000 --- a/lms/askbot/skins/mitx/templates/user_profile/user_moderate.html +++ /dev/null @@ -1,93 +0,0 @@ -{% extends "user_profile/user.html" %} - -{% block profilesection %} - {% trans %}moderation{% endtrans %} -{% endblock %} -{% block usercontent %} -{% if request.user != view_user %} -

      {% trans username=view_user.username, status=view_user.get_status_display() %}{{username}}'s current status is "{{status}}"{% endtrans %} -

      - {% if user_status_changed %} -

      {% trans %}User status changed{% endtrans %}

      - {% endif %} -
      {% csrf_token %} - - - {{ change_user_status_form.as_table() }} -
      -

      -

      - -
      -{% endif %} -

      -{% if request.user == view_user %} - {% trans reputation=view_user.reputation %}Your current reputation is {{reputation}} points{% endtrans %} -{% else %} - {% trans reputation=view_user.reputation %}User's current reputation is {{reputation}} points{% endtrans %} -{% endif %} -

      -{% if user_rep_changed %} -

      {% trans %}User reputation changed{% endtrans %}

      -{% endif %} -
      {% csrf_token %} - - - {{ change_user_reputation_form.as_table() }} -
      -   - -
      -{% if request.user != view_user %} -
      -

      {% trans username=view_user.username %}Send message to {{username}}{% endtrans %}

      -

      {% trans %}An email will be sent to the user with 'reply-to' field set to your email address. Please make sure that your address is entered correctly.{% endtrans %}

      - {% if message_sent %} -

      {% trans %}Message sent{% endtrans %}

      - {% endif %} -
      {% csrf_token %} - -
      - - {% if send_message_form.subject_line.errors %} -

      {{send_message_form.subject_line.errors|join(', ')}}

      - {% endif %} - {{ send_message_form.subject_line}} -
      -
      - - {% if send_message_form.body_text.errors %} -

      {{send_message_form.body_text.errors|join(', ')}}

      - {% endif %} - {{ send_message_form.body_text}} -
      - -
      -{% endif %} -{% endblock %} -{% block endjs %} - -{% endblock %} diff --git a/lms/askbot/skins/mitx/templates/user_profile/user_network.html b/lms/askbot/skins/mitx/templates/user_profile/user_network.html deleted file mode 100644 index 1fd2e06ab9..0000000000 --- a/lms/askbot/skins/mitx/templates/user_profile/user_network.html +++ /dev/null @@ -1,25 +0,0 @@ -{% extends "user_profile/user.html" %} -{% import "macros.html" as macros %} - -{% block profileseciton %} - {% trans %}network{% endtrans %} -{% endblock %} -{% block usercontent %} - {% if followed_users or followers %} - {% if followers %} -

      {% trans count=followers|length %}Followed by {{count}} person{% pluralize count %}Followed by {{count}} people{% endtrans %}

      - {{ macros.user_list(followers, profile_section = 'network') }} - {% endif %} - {% if followed_users %} -

      {% trans count=followed_users|length %}Following {{count}} person{% pluralize count %}Following {{count}} people{% endtrans %}

      - {{ macros.user_list(followed_users, profile_section = 'network') }} - {% endif %} - {% else %} - {% if request.user == view_user %} -

      {% trans %}Your network is empty. Would you like to follow someone? - Just visit their profiles and click "follow"{% endtrans %}

      - {% else %} -

      {% trans username = view_user.username %}{{username}}'s network is empty{% endtrans %}

      - {% endif %} - {% endif %} -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/user_profile/user_recent.html b/lms/askbot/skins/mitx/templates/user_profile/user_recent.html deleted file mode 100644 index 53c2675748..0000000000 --- a/lms/askbot/skins/mitx/templates/user_profile/user_recent.html +++ /dev/null @@ -1,40 +0,0 @@ -{% extends "user_profile/user.html" %} - -{% block profilesection %} -{% trans %}activity{% endtrans %} -{% endblock %} -{% block usercontent %} -
      - {% for act in activities %} -
      -
      {{ act.time|diff_date(True) }}
      -
      - {{ act.type }} -
      -
      - {% if act.is_badge %} - - ● {% trans name=act.badge.name %}{{name}}{% endtrans %} - - {% if act.content_object.post_type == 'question' %} - {% set question=act.content_object %} - ({% trans %}source{% endtrans %}) - {% elif act.content_object.post_type == 'answer' %} - {% set answer=act.content_object %} - ({% trans %}source{% endtrans %}) - {% endif %} - {% else %} - {{ act.title|escape }} - {% if act.summary %}{{ act.summary|escape }}{% endif %} - {% endif %} -
      -
      -
      - {% endfor %} -
      -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/user_profile/user_reputation.html b/lms/askbot/skins/mitx/templates/user_profile/user_reputation.html deleted file mode 100644 index 0deb2b9786..0000000000 --- a/lms/askbot/skins/mitx/templates/user_profile/user_reputation.html +++ /dev/null @@ -1,41 +0,0 @@ -{% extends "user_profile/user.html" %} - -{% block profilesection %} - {% trans %}karma{% endtrans %} -{% endblock %} -{% block usercontent %} -
      -
      -
      - {% if view_user.id == user.id %} -

      {% trans %}Your karma change log.{% endtrans %}

      - {% else %} -

      {% trans user_name=view_user.username %}{{user_name}}'s karma change log{% endtrans %}

      - {% endif %} - {% for rep in reputation %} -

      - {{ rep.positive }} - {{ rep.negative }} - {{ rep.get_explanation_snippet() }} - ({{rep.reputed_at|diff_date}}) -

      -

      - {% endfor %} -
      -
      -{% endblock %} -{% block userjs %} - - - -{% endblock %} diff --git a/lms/askbot/skins/mitx/templates/user_profile/user_stats.html b/lms/askbot/skins/mitx/templates/user_profile/user_stats.html deleted file mode 100644 index 9118502c86..0000000000 --- a/lms/askbot/skins/mitx/templates/user_profile/user_stats.html +++ /dev/null @@ -1,155 +0,0 @@ -{% extends "user_profile/user.html" %} -{% import "macros.html" as macros %} - -{% block profilesection %} -{% trans %}overview{% endtrans %} -{% endblock %} - -{% block sidebar%} -{% include "user_profile/user_info.html" %} -{% endblock%} - -{% block usercontent %} - -
      -
      -

      {% trans counter=question_count %}{{counter}} Question{% pluralize %}{{counter}} Questions{% endtrans %} asked by {% trans username=view_user.username %}{{username}}{% endtrans %}

      -
      -{% include "user_profile/users_questions.html" %} -
      - -
        - -
      • -

        {% trans cnt=total_votes %}{{cnt}} Vote{% pluralize %}{{cnt}} Votes {% endtrans %}

        - -
          -
        • - {{up_votes}} -
        • - -
        • - {{down_votes}} -
        • -
        - -

        {% trans counter=total_badges %}{{counter}} Badge{% pluralize %}{{counter}} Badges{% endtrans %}

        -
          - {% for badge, badge_user_awards in badges %} -
        • - - -  {% trans name=badge.name %}{{name}}{% endtrans %} - - - - {{ badge_user_awards|length|intcomma }} - - -
            - {% for award in badge_user_awards %} - {% if award.content_object_is_post %} - -
          • - - {% if award.content_type.post_type == 'answer' %}{% trans %}Answer to:{% endtrans %}{% endif %} {{ award.content_object.thread.title }} -
          • - - {% endif %} - {% endfor %} -
          - {% if loop.index is divisibleby 3 %} - - {% endif %} -
        • - {% endfor %} -
        -
        -

        View all MITx badges ➜

        -
      • - -
      • - -

        {{ top_answer_count }} {% trans counter=top_answer_count %}Answer{% pluralize %}Answers{% endtrans %}

        - -
          - {% for top_answer in top_answers %} - -
        • - - - {{ top_answer.score }} - - - -
          - {% spaceless %} - {{ top_answer.thread.title|escape }} - {% endspaceless %} - {% if top_answer.comment_count > 0 %} - - {% trans comment_count=top_answer.comment_count %}({{ comment_count }} comment){% pluralize %}the answer has been commented {{ comment_count }} times{% endtrans %} - - {% endif %} -
          -
        • - {% endfor %} -
        -
      • - - -
      • -

        {% trans counter=user_tags|length %}{{counter}} Tag{% pluralize %}{{counter}} Tags{% endtrans %}

        - -
          - {% for tag in user_tags %} -
        • - {{ macros.tag_widget( - tag.name, - html_tag = 'div', - search_state = search_state, - extra_content = - '× ' ~ - tag.user_tag_usage_count|intcomma ~ - '' - ) - }} -
        • - {# - {% if loop.index is divisibleby 10 %} -
      - {% endif %} - #} - {% endfor %} - - - - -{% endblock %} - -{% block endjs %} -{{ super() }} - -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/user_profile/user_tabs.html b/lms/askbot/skins/mitx/templates/user_profile/user_tabs.html deleted file mode 100644 index a1384be563..0000000000 --- a/lms/askbot/skins/mitx/templates/user_profile/user_tabs.html +++ /dev/null @@ -1,57 +0,0 @@ - -
      -
      - {% trans %}overview{% endtrans %} - {% if request.user == view_user or request.user|can_moderate_user(view_user) %} - {% trans %}inbox{% endtrans %} - {% endif %} - {% if user_follow_feature_on %} - {% trans %}network{% endtrans %} - {% endif %} - {% trans %}reputation history{% endtrans %} - {% trans %}followed questions{% endtrans %} - - {% trans %}activity{% endtrans %} - - {% if request.user == view_user or request.user|can_moderate_user(view_user) %} - {% trans %}casted votes{% endtrans %} - {% endif %} - - {% if request.user == view_user or request.user|can_moderate_user(view_user) %} - {% trans %}subscriptions{% endtrans %} - {% endif %} - - {% if request.user|can_moderate_user(view_user) %} - {% trans %}moderation{% endtrans %} - {% endif %} -
      -
      -
      - diff --git a/lms/askbot/skins/mitx/templates/user_profile/user_votes.html b/lms/askbot/skins/mitx/templates/user_profile/user_votes.html deleted file mode 100644 index b63d4c9e16..0000000000 --- a/lms/askbot/skins/mitx/templates/user_profile/user_votes.html +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "user_profile/user.html" %} - -{% block profilesection %} -{% trans %}votes{% endtrans %} -{% endblock %} -{% block usercontent %} -
      - {% for vote in votes %} -
      -
      {{vote.voted_at|diff_date(True)}}
      -
      - {% if vote.vote==1 %} - - {% else %} - - {% endif %} -
      -
      - {% if vote.answer_id==0 %} - {{ vote.title|escape }} - {% else %} - {{ vote.title|escape}} - {% endif %} -
      -
      -
      - {% endfor %} -
      -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/user_profile/users_questions.html b/lms/askbot/skins/mitx/templates/user_profile/users_questions.html deleted file mode 100644 index c103f961a4..0000000000 --- a/lms/askbot/skins/mitx/templates/user_profile/users_questions.html +++ /dev/null @@ -1,9 +0,0 @@ - -{% import "macros.html" as macros %} - -
        - {% for question in questions %} - {{macros.question_summary(question.thread, question, extra_class='narrow', search_state=search_state)}} - {% endfor %} -
      - diff --git a/lms/askbot/skins/mitx/templates/users.html b/lms/askbot/skins/mitx/templates/users.html deleted file mode 100644 index 0502a6e5ec..0000000000 --- a/lms/askbot/skins/mitx/templates/users.html +++ /dev/null @@ -1,60 +0,0 @@ -{% extends "two_column_body.html" %} -{% import "macros.html" as macros %} - -{% block title %}{% spaceless %}{% trans %}Users{% endtrans %}{% endspaceless %}{% endblock %} -{% block content %} -

      {% trans %}Users{% endtrans %}

      -
      -
      - {% trans %}Sort by »{% endtrans %} - {% trans %}reputation{% endtrans %} - {% trans %}recent{% endtrans %} - {% trans %}oldest{% endtrans %} - {% trans %}by username{% endtrans %} -
      -
      -
      -

      - {% if suser %} - {% trans %}users matching query {{suser}}:{% endtrans %} - {% endif %} - {% if not users.object_list %} - {% trans %}Nothing found.{% endtrans %} - {% endif %} -

      -{{ macros.user_list(users.object_list) }} -
      - {{ macros.paginator(paginator_context) }} -
      -{% endblock %} -{% block endjs %} - -{% endblock %} - diff --git a/lms/askbot/skins/mitx/templates/widgets/answer_edit_tips.html b/lms/askbot/skins/mitx/templates/widgets/answer_edit_tips.html deleted file mode 100644 index 5444b4c86b..0000000000 --- a/lms/askbot/skins/mitx/templates/widgets/answer_edit_tips.html +++ /dev/null @@ -1,64 +0,0 @@ - -
      -

      {% trans %}answer tips{% endtrans %}

      -
        -
      • {% trans %}please make your answer relevant to this community{% endtrans %}
      • -
      • {% trans %}try to give an answer, rather than engage into a discussion{% endtrans %}
      • -
      • {% trans %}please try to provide details{% endtrans %}
      • -
      • {% trans %}be clear and concise{% endtrans %}
      • -
      -

      - -

      -
      - -
      -

      {% trans %}Markdown tips{% endtrans %}

      -
        - {% if settings.MARKUP_CODE_FRIENDLY or settings.ENABLE_MATHJAX %} -
      • - {% trans %}*italic*{% endtrans %} -
      • -
      • - {% trans %}**bold**{% endtrans %} -
      • - {% else %} -
      • - {% trans %}*italic* or _italic_{% endtrans %} -
      • -
      • - {% trans %}**bold** or __bold__{% endtrans %} -
      • - {% endif %} -
      • - {% trans %}link{% endtrans %}:[{% trans %}text{% endtrans %}](http://url.com/ "{% trans %}title{% endtrans %}") - -
      • -
      • - {% trans %}image{% endtrans %}:![alt {% trans %}text{% endtrans %}](/path/img.jpg "{% trans %}title{% endtrans %}") - -
      • -
      • - {% trans %}numbered list:{% endtrans %} -
          -
        1. - Foo -
        2. -
        3. - Bar -
        4. -
        -
      • -
      • - {% trans %}basic HTML tags are also supported{% endtrans %} -
      • -
      -

      - -

      -
      - diff --git a/lms/askbot/skins/mitx/templates/widgets/ask_button.html b/lms/askbot/skins/mitx/templates/widgets/ask_button.html deleted file mode 100644 index 0eb9243e4d..0000000000 --- a/lms/askbot/skins/mitx/templates/widgets/ask_button.html +++ /dev/null @@ -1,6 +0,0 @@ -{% if active_tab != "ask" %} - {% if not search_state %} {# get empty SearchState() if there's none #} - {% set search_state=search_state|get_empty_search_state %} - {% endif %} - {% trans %}ask a question{% endtrans %} -{% endif %} diff --git a/lms/askbot/skins/mitx/templates/widgets/ask_form.html b/lms/askbot/skins/mitx/templates/widgets/ask_form.html deleted file mode 100644 index bab9fec321..0000000000 --- a/lms/askbot/skins/mitx/templates/widgets/ask_form.html +++ /dev/null @@ -1,49 +0,0 @@ -{% import "macros.html" as macros %} - -
      -

      Ask a question Cancel

      -
      - -
      {% csrf_token %} -
      - - - - {% if settings.EMAIL_VALIDATION %} - {% if not request.user.email_isvalid %} - {% trans email=request.user.email %}must have valid {{email}} to post, - see {{email_validation_faq_url}} - {% endtrans %} - {% endif %} - {% endif %} - - {{ form.title.errors }}
      - -
      - {{ form.title.help_text }} -
      -
      -
      - {{ - macros.edit_post( - form, - post_type = 'question', - edit_title = False, - mandatory_tags = mandatory_tags - ) - }} -
      - {% if settings.WIKI_ON %} - {{ macros.checkbox_in_div(form.wiki) }} - {% endif %} - {% if settings.ALLOW_ASK_ANONYMOUSLY %} - {{ macros.checkbox_in_div(form.ask_anonymously) }} - {% endif %} -
      - {% if not request.user.is_authenticated() %} - - {% else %} - - {% endif %} -
      diff --git a/lms/askbot/skins/mitx/templates/widgets/contributors.html b/lms/askbot/skins/mitx/templates/widgets/contributors.html deleted file mode 100644 index 12d50032f6..0000000000 --- a/lms/askbot/skins/mitx/templates/widgets/contributors.html +++ /dev/null @@ -1,10 +0,0 @@ -{% cache 600 "contributors" contributors search_tags scope sort query context.page language_code %} -
      -

      {% trans %}Contributors{% endtrans %}

      - {% spaceless %} - {% for person in contributors %} - {{ macros.gravatar(person,48) }} - {% endfor %} - {% endspaceless %} -
      -{% endcache %} diff --git a/lms/askbot/skins/mitx/templates/widgets/footer.html b/lms/askbot/skins/mitx/templates/widgets/footer.html deleted file mode 100644 index 8d7b6d7737..0000000000 --- a/lms/askbot/skins/mitx/templates/widgets/footer.html +++ /dev/null @@ -1,38 +0,0 @@ - -
      -
      -
      -
      - - Find Courses - About - Blog - Jobs - Contact -
      - -
      - - - - -
      -
      - -
      -
      -

      © 2012 edX, some rights reserved.

      -
      - -
      - Terms of Service - Privacy Policy - Honor Code - Help -
      -
      - -
      -
      - - diff --git a/lms/askbot/skins/mitx/templates/widgets/header.html b/lms/askbot/skins/mitx/templates/widgets/header.html deleted file mode 100644 index a922e7cb2b..0000000000 --- a/lms/askbot/skins/mitx/templates/widgets/header.html +++ /dev/null @@ -1,4 +0,0 @@ - -{% import "macros.html" as macros %} -{% include "navigation.jinja.html" %} -{% include "course_navigation.jinja.html" %} diff --git a/lms/askbot/skins/mitx/templates/widgets/logo.html b/lms/askbot/skins/mitx/templates/widgets/logo.html deleted file mode 100644 index 1b251432cd..0000000000 --- a/lms/askbot/skins/mitx/templates/widgets/logo.html +++ /dev/null @@ -1,5 +0,0 @@ -{% trans site=settings.APP_SHORT_NAME %}{{site}} logo{% endtrans %} - diff --git a/lms/askbot/skins/mitx/templates/widgets/meta_nav.html b/lms/askbot/skins/mitx/templates/widgets/meta_nav.html deleted file mode 100644 index b459b02561..0000000000 --- a/lms/askbot/skins/mitx/templates/widgets/meta_nav.html +++ /dev/null @@ -1,15 +0,0 @@ -{% trans %}tags{% endtrans %} -{% trans %}users{% endtrans %} -{% trans %}badges{% endtrans %} diff --git a/lms/askbot/skins/mitx/templates/widgets/question_edit_tips.html b/lms/askbot/skins/mitx/templates/widgets/question_edit_tips.html deleted file mode 100644 index 66efbab681..0000000000 --- a/lms/askbot/skins/mitx/templates/widgets/question_edit_tips.html +++ /dev/null @@ -1,69 +0,0 @@ - -
      -

      {% trans %}question tips{% endtrans %}

      -
        -
      • {% trans %}please ask a relevant question{% endtrans %} -
      • -
      • - {% trans %}please try provide enough details{% endtrans %} -
      • -
      • - {% trans %}be clear and concise{% endtrans %} -
      • -
      -

      - -

      -
      - -
      -

      {% trans %}Markdown tips{% endtrans %}

      -
        - {% if settings.MARKDUP_CODE_FRIENDLY or settings.ENABLE_MATHJAX %} -
      • - {% trans %}*italic*{% endtrans %} -
      • -
      • - {% trans %}**bold**{% endtrans %} -
      • - {% else %} -
      • - {% trans %}*italic* or _italic_{% endtrans %} -
      • -
      • - {% trans %}**bold** or __bold__{% endtrans %} -
      • - {% endif %} -
      • - {% trans %}link{% endtrans %}:[{% trans %}text{% endtrans %}](http://url.com/ "{% trans %}title{% endtrans %}") - -
      • - -
      • - {% trans %}image{% endtrans %}:![alt {% trans %}text{% endtrans %}](/path/img.jpg "{% trans %}title{% endtrans %}") - -
      • -
      • - {% trans %}numbered list:{% endtrans %} -
          -
        1. - Foo -
        2. -
        3. - Bar -
        4. -
        -
      • -
      • - {% trans %}basic HTML tags are also supported{% endtrans %} -
      • -
      -

      - -

      -
      - diff --git a/lms/askbot/skins/mitx/templates/widgets/question_summary.html b/lms/askbot/skins/mitx/templates/widgets/question_summary.html deleted file mode 100644 index 032010e450..0000000000 --- a/lms/askbot/skins/mitx/templates/widgets/question_summary.html +++ /dev/null @@ -1,63 +0,0 @@ -{% from "macros.html" import user_country_flag, tag_list_widget %} -
    • - -
      - -

      {{thread.get_title(question)|escape}}

      -

      {{question.summary}}…

      - -
      - {{ thread.last_activity_at|diff_date }} - {% if question.is_anonymous %} - {{ thread.last_activity_by.get_anonymous_name() }} - {% else %} - by {{thread.last_activity_by.username}}{{ user_country_flag(thread.last_activity_by) }} - {#{user_score_and_badge_summary(thread.last_activity_by)}#} - {% endif %} -
      - -  {{ tag_list_widget(thread.get_tag_names(), search_state=search_state) }} - -
      - -
      -
        -
      • - {{thread.view_count}} -
        - {% trans cnt=thread.view_count %}view{% pluralize %}views{% endtrans %} -
        -
      • - -
      • - {{thread.answer_count}}{% if thread.accepted_answer_id %}{% endif %} -
        - {% trans cnt=thread.answer_count %}answer{% pluralize %}answers{% endtrans %} -
        -
      • - -
      • - {{question.score}} -
        - {% trans cnt=question.score %}vote{% pluralize %}votes{% endtrans %} -
        -
      • - -
      -
      -
    • - diff --git a/lms/askbot/skins/mitx/templates/widgets/scope_nav.html b/lms/askbot/skins/mitx/templates/widgets/scope_nav.html deleted file mode 100644 index 8e4d8f6518..0000000000 --- a/lms/askbot/skins/mitx/templates/widgets/scope_nav.html +++ /dev/null @@ -1,25 +0,0 @@ -{% if active_tab != "ask" %} - {% if not search_state %} {# get empty SearchState() if there's none #} - {% set search_state=search_state|get_empty_search_state %} - {% endif %} -
    • - {% trans %}All{% endtrans %} -
    • - -
    • - {% trans %}Unanswered{% endtrans %} -
    • - - {% if request.user.is_authenticated() %} - -
    • - {% trans %}Followed{% endtrans %} -
    • - - {% endif %} -{% else %} -
      {% trans %}Go back to {% endtrans %}
      -{% endif %} diff --git a/lms/askbot/skins/mitx/templates/widgets/secondary_header.html b/lms/askbot/skins/mitx/templates/widgets/secondary_header.html deleted file mode 100644 index bb1a57cd12..0000000000 --- a/lms/askbot/skins/mitx/templates/widgets/secondary_header.html +++ /dev/null @@ -1,21 +0,0 @@ - -
      -
      - -
      - Questions -
        - {% include "widgets/scope_nav.html" %} -
      -
      - -
      - {% include "widgets/search_bar.html" %} {# include search form widget #} -
      - - - -
      -
      diff --git a/lms/askbot/skins/mitx/templates/widgets/system_messages.html b/lms/askbot/skins/mitx/templates/widgets/system_messages.html deleted file mode 100644 index 10ba4a84cd..0000000000 --- a/lms/askbot/skins/mitx/templates/widgets/system_messages.html +++ /dev/null @@ -1,8 +0,0 @@ -
      - {% if user_messages %} - {% for message in user_messages %} -

      {{ message }}

      - {% endfor %} - {% endif %} - -
      diff --git a/lms/askbot/skins/mitx/templates/widgets/user_list.html b/lms/askbot/skins/mitx/templates/widgets/user_list.html deleted file mode 100644 index 7874946b90..0000000000 --- a/lms/askbot/skins/mitx/templates/widgets/user_list.html +++ /dev/null @@ -1,22 +0,0 @@ -{%from "macros.html" import gravatar %} -
      - - - - - -
      - {% for user in users %} -
      -
        -
      • {{ gravatar(user, 32) }}
      • -
      • {{user.username}}{{ user_country_flag(user) }}
      • -
      • {{ user_score_and_badge_summary(user) }}
      • -
      -
      - {% if loop.index is divisibleby 7 %} -
      - {% endif %} - {% endfor %} -
      -
      diff --git a/lms/askbot/skins/mitx/templates/widgets/user_long_score_and_badge_summary.html b/lms/askbot/skins/mitx/templates/widgets/user_long_score_and_badge_summary.html deleted file mode 100644 index 121ae48f06..0000000000 --- a/lms/askbot/skins/mitx/templates/widgets/user_long_score_and_badge_summary.html +++ /dev/null @@ -1,21 +0,0 @@ -{% trans %}karma:{% endtrans %} {{user.reputation}} -{%- if user.gold or user.silver or user.bronze %} -{% trans %}badges:{% endtrans %} - {% if user.gold %} - ● - {{user.gold}} - {% endif %} - {% if user.silver %} - ● - {{user.silver}} - {% endif %} - {% if user.bronze %} - ● - {{user.bronze}} - {%- endif -%} - -{%- endif -%} diff --git a/lms/askbot/skins/mitx/templates/widgets/user_navigation.html b/lms/askbot/skins/mitx/templates/widgets/user_navigation.html deleted file mode 100644 index 8d6dc33051..0000000000 --- a/lms/askbot/skins/mitx/templates/widgets/user_navigation.html +++ /dev/null @@ -1,17 +0,0 @@ -{% if request.user.is_authenticated() %} - {{ request.user.username }} - - {{ macros.inbox_link(request.user) }} - {{ macros.moderation_items_link(request.user, moderation_items) }} - ({{ macros.user_long_score_and_badge_summary(user) }}) - - {% if settings.USE_ASKBOT_LOGIN_SYSTEM %} - {% trans %}logout{% endtrans %} - {% endif %} -{% elif settings.USE_ASKBOT_LOGIN_SYSTEM %} - {% trans %}login{% endtrans %} -{% endif %} -{% if request.user.is_authenticated() and request.user.is_administrator() %} - {% trans %}settings{% endtrans %} -{% endif %} - {% trans %}help{% endtrans %} diff --git a/lms/askbot/skins/mitx/templates/widgets/user_score_and_badge_summary.html b/lms/askbot/skins/mitx/templates/widgets/user_score_and_badge_summary.html deleted file mode 100644 index 2f55b202c0..0000000000 --- a/lms/askbot/skins/mitx/templates/widgets/user_score_and_badge_summary.html +++ /dev/null @@ -1,19 +0,0 @@ -{{user.reputation}} -{% if user.gold or user.silver or user.bronze %} - - {% if user.gold %} - ● - {{user.gold}} - {% endif %} - {% if user.silver %} - ● - {{user.silver}} - {% endif %} - {% if user.bronze %} - ● - {{user.bronze}} - {% endif %} - -{% endif %} diff --git a/lms/askbot/skins/utils.py b/lms/askbot/skins/utils.py deleted file mode 100644 index 520fa2f7f4..0000000000 --- a/lms/askbot/skins/utils.py +++ /dev/null @@ -1,195 +0,0 @@ -"""utilities dealing with resolution of skin components - -the lookup resolution process for templates and media works as follows: -* look up item in selected skin -* if not found look in 'default' -* raise an exception -""" -import os -import logging -import urllib -from django.conf import settings as django_settings -from django.utils.datastructures import SortedDict -from askbot.utils import hasher - -class MediaNotFound(Exception): - """raised when media file is not found""" - pass - -def get_skins_from_dir(directory): - """returns sorted dict with skin data, like get_available_skins - but from a specific directory - """ - skins = SortedDict() - for item in sorted(os.listdir(directory)): - item_dir = os.path.join(directory, item) - if os.path.isdir(item_dir): - skins[item] = item_dir - return skins - -def get_available_skins(selected=None): - """selected is a name of preferred skin - if it's None, then information about all skins will be returned - otherwise, only data about selected and default skins - will be returned - - selected skin is guaranteed to be the first item in the dictionary - """ - skins = SortedDict() - if hasattr(django_settings, 'ASKBOT_EXTRA_SKINS_DIR'): - skins.update(get_skins_from_dir(django_settings.ASKBOT_EXTRA_SKINS_DIR)) - - stock_dir = os.path.normpath(os.path.dirname(__file__)) - stock_skins = get_skins_from_dir(stock_dir) - default_dir = stock_skins.pop('default') - common_dir = stock_skins.pop('common') - - skins.update(stock_skins) - if selected: - if selected in skins: - selected_dir = skins[selected] - skins.clear() - skins[selected] = selected_dir - else: - assert(selected == 'default' or selected == 'common') - skins = SortedDict() - - #re-insert default as a last item - skins['default'] = default_dir - skins['common'] = common_dir - return skins - - -def get_path_to_skin(skin): - """returns path to directory in the list of - available skin directories that contains another - directory called skin - - it is assumed that all skins are named uniquely - """ - skin_dirs = get_available_skins() - return skin_dirs.get(skin, None) - -def get_skin_choices(): - """returns a tuple for use as a set of - choices in the form""" - skin_names = list(reversed(get_available_skins().keys())) - return zip(skin_names, skin_names) - -def resolve_skin_for_media(media=None, preferred_skin = None): - #see if file exists, if not, try skin 'default' - available_skins = get_available_skins(selected = preferred_skin).items() - for skin_name, skin_dir in available_skins: - if os.path.isfile(os.path.join(skin_dir, 'media', media)): - return skin_name - raise MediaNotFound(media) - -def get_media_url(url, ignore_missing = False): - """returns url prefixed with the skin name - of the first skin that contains the file - directories are searched in this order: - askbot_settings.ASKBOT_DEFAULT_SKIN, then 'default', then 'commmon' - if file is not found - returns None - and logs an error message - - todo: move this to the skin environment class - """ - #import datetime - #before = datetime.datetime.now() - url = urllib.unquote(unicode(url)) - while url[0] == '/': url = url[1:] - - #a hack allowing urls media stored on external locations to - #just pass through unchanged - if url.startswith('http://') or url.startswith('https://'): - return url - #todo: handles case of multiple skin directories - - #if file is in upfiles directory, then give that - url_copy = url - if url_copy.startswith(django_settings.MEDIA_URL[1:]): - file_path = url_copy.replace( - django_settings.MEDIA_URL[1:], - '', - 1 - ) - file_path = os.path.join( - django_settings.MEDIA_ROOT, - file_path - ) - if os.path.isfile(file_path): - url_copy = os.path.normpath( - '///' + url_copy - ).replace( - '\\', '/' - ).replace( - '///', '/' - ) - return url_copy - elif ignore_missing == False: - logging.critical('missing media resource %s' % url) - - #2) if it does not exist in uploaded files directory - look in skins - - #purpose of this try statement is to determine - #which skin is currently used - try: - #this import statement must be hidden here - #because at startup time this branch will fail - #due to an import error - from askbot.conf import settings as askbot_settings - use_skin = askbot_settings.ASKBOT_DEFAULT_SKIN - resource_revision = askbot_settings.MEDIA_RESOURCE_REVISION - except ImportError: - use_skin = 'default' - resource_revision = None - - #determine from which skin take the media file - try: - use_skin = resolve_skin_for_media(media=url, preferred_skin = use_skin) - except MediaNotFound: - if ignore_missing == False: - log_message = 'missing media resource %s in skin %s' \ - % (url, use_skin) - logging.critical(log_message) - return None - - url = django_settings.STATIC_URL + use_skin + '/media/' + url - url = os.path.normpath(url).replace('\\', '/') - - if resource_revision: - url += '?v=%d' % resource_revision - - #after = datetime.datetime.now() - #print after - before - return url - -def update_media_revision(skin = None): - """update skin media revision number based on the contents - of the skin media directory""" - from askbot.conf import settings as askbot_settings - resource_revision = askbot_settings.MEDIA_RESOURCE_REVISION - - if skin: - if skin in get_skin_choices(): - skin_path = get_path_to_skin(skin) - else: - raise MediaNotFound('Skin %s not found' % skin) - else: - skin = 'default' - skin_path = get_path_to_skin(askbot_settings.ASKBOT_DEFAULT_SKIN) - - media_dirs = [os.path.join(skin_path, 'media'),] - - if skin != 'default': - #we have default skin as parent of the custom skin - default_skin_path = get_path_to_skin('default') - media_dirs.append(os.path.join(default_skin_path, 'media')) - - current_hash = hasher.get_hash_of_dirs(media_dirs) - - if current_hash != askbot_settings.MEDIA_RESOURCE_REVISION_HASH: - askbot_settings.update('MEDIA_RESOURCE_REVISION', resource_revision + 1) - askbot_settings.update('MEDIA_RESOURCE_REVISION_HASH', current_hash) - logging.debug('MEDIA_RESOURCE_REVISION changed') - askbot_settings.MEDIA_RESOURCE_REVISION diff --git a/lms/djangoapps/courseware/tabs.py b/lms/djangoapps/courseware/tabs.py index adb1ab3c0f..980fedb947 100644 --- a/lms/djangoapps/courseware/tabs.py +++ b/lms/djangoapps/courseware/tabs.py @@ -222,9 +222,6 @@ def get_default_tabs(user, course, active_page): link = reverse('django_comment_client.forum.views.forum_form_discussion', args=[course.id]) tabs.append(CourseTab('Discussion', link, active_page == 'discussion')) - elif settings.MITX_FEATURES.get('ENABLE_DISCUSSION'): - ## This is Askbot, which we should be retiring soon... - tabs.append(CourseTab('Discussion', reverse('questions'), active_page == 'discussion')) tabs.extend(_wiki({'name': 'Wiki', 'type': 'wiki'}, user, course, active_page)) diff --git a/lms/envs/askbotsettings.py b/lms/envs/askbotsettings.py deleted file mode 100644 index eb4840a157..0000000000 --- a/lms/envs/askbotsettings.py +++ /dev/null @@ -1,293 +0,0 @@ -""" -There are other askbot settings in common.py that covers things like where the -templates are located, etc. This file is purely for askbot forum *behavior*. -This means things like karma limits, the ability to post questions as wikis, -anonymous questions, etc. -""" - -LIVESETTINGS_OPTIONS = { - 1: { - 'DB' : False, - 'SETTINGS' : { - 'ACCESS_CONTROL' : { - 'ASKBOT_CLOSED_FORUM_MODE' : True, - }, - 'BADGES' : { - 'DISCIPLINED_BADGE_MIN_UPVOTES' : 3, - 'PEER_PRESSURE_BADGE_MIN_DOWNVOTES' : 3, - 'TEACHER_BADGE_MIN_UPVOTES' : 1, - 'NICE_ANSWER_BADGE_MIN_UPVOTES' : 2, - 'GOOD_ANSWER_BADGE_MIN_UPVOTES' : 3, - 'GREAT_ANSWER_BADGE_MIN_UPVOTES' : 5, - 'NICE_QUESTION_BADGE_MIN_UPVOTES' : 2, - 'GOOD_QUESTION_BADGE_MIN_UPVOTES' : 3, - 'GREAT_QUESTION_BADGE_MIN_UPVOTES' : 5, - 'POPULAR_QUESTION_BADGE_MIN_VIEWS' : 150, - 'NOTABLE_QUESTION_BADGE_MIN_VIEWS' : 250, - 'FAMOUS_QUESTION_BADGE_MIN_VIEWS' : 500, - 'SELF_LEARNER_BADGE_MIN_UPVOTES' : 1, - 'CIVIC_DUTY_BADGE_MIN_VOTES' : 100, - 'ENLIGHTENED_BADGE_MIN_UPVOTES' : 3, - 'ASSOCIATE_EDITOR_BADGE_MIN_EDITS' : 20, - 'COMMENTATOR_BADGE_MIN_COMMENTS' : 10, - 'ENTHUSIAST_BADGE_MIN_DAYS' : 30, - 'FAVORITE_QUESTION_BADGE_MIN_STARS' : 3, - 'GURU_BADGE_MIN_UPVOTES' : 5, - 'NECROMANCER_BADGE_MIN_DELAY' : 30, - 'NECROMANCER_BADGE_MIN_UPVOTES' : 1, - 'STELLAR_QUESTION_BADGE_MIN_STARS' : 5, - 'TAXONOMIST_BADGE_MIN_USE_COUNT' : 10, - }, - 'EMAIL' : { - 'EMAIL_SUBJECT_PREFIX' : u'[Django] ', - 'EMAIL_UNIQUE' : True, - 'EMAIL_VALIDATION' : False, - 'DEFAULT_NOTIFICATION_DELIVERY_SCHEDULE_M_AND_C' : u'w', - 'DEFAULT_NOTIFICATION_DELIVERY_SCHEDULE_Q_ALL' : u'w', - 'DEFAULT_NOTIFICATION_DELIVERY_SCHEDULE_Q_ANS' : u'w', - 'DEFAULT_NOTIFICATION_DELIVERY_SCHEDULE_Q_ASK' : u'w', - 'DEFAULT_NOTIFICATION_DELIVERY_SCHEDULE_Q_SEL' : u'w', - 'ENABLE_UNANSWERED_REMINDERS' : False, - 'DAYS_BEFORE_SENDING_UNANSWERED_REMINDER' : 1, - 'UNANSWERED_REMINDER_FREQUENCY' : 1, - 'MAX_UNANSWERED_REMINDERS' : 5, - 'ENABLE_ACCEPT_ANSWER_REMINDERS' : False, - 'DAYS_BEFORE_SENDING_ACCEPT_ANSWER_REMINDER' : 3, - 'ACCEPT_ANSWER_REMINDER_FREQUENCY' : 3, - 'MAX_ACCEPT_ANSWER_REMINDERS' : 5, - 'ANONYMOUS_USER_EMAIL' : u'anonymous@askbot.org', - 'ALLOW_ASKING_BY_EMAIL' : False, - 'REPLACE_SPACE_WITH_DASH_IN_EMAILED_TAGS' : True, - 'MAX_ALERTS_PER_EMAIL' : 7, - }, - 'EMBEDDABLE_WIDGETS' : { - 'QUESTIONS_WIDGET_CSS' : u"\nbody {\n overflow: hidden;\n}\n#container {\n width: 200px;\n height: 350px;\n}\nul {\n list-style: none;\n padding: 5px;\n margin: 5px;\n}\nli {\n border-bottom: #CCC 1px solid;\n padding-bottom: 5px;\n padding-top: 5px;\n}\nli:last-child {\n border: none;\n}\na {\n text-decoration: none;\n color: #464646;\n font-family: 'Yanone Kaffeesatz', sans-serif;\n font-size: 15px;\n}\n", - 'QUESTIONS_WIDGET_FOOTER' : u"\n\n", - 'QUESTIONS_WIDGET_HEADER' : u'', - 'QUESTIONS_WIDGET_MAX_QUESTIONS' : 7, - }, - 'EXTERNAL_KEYS' : { - 'RECAPTCHA_KEY' : u'', - 'RECAPTCHA_SECRET' : u'', - 'FACEBOOK_KEY' : u'', - 'FACEBOOK_SECRET' : u'', - 'HOW_TO_CHANGE_LDAP_PASSWORD' : u'', - 'IDENTICA_KEY' : u'', - 'IDENTICA_SECRET' : u'', - 'GOOGLE_ANALYTICS_KEY' : u'', - 'GOOGLE_SITEMAP_CODE' : u'', - 'LDAP_PROVIDER_NAME' : u'', - 'LDAP_URL' : u'', - 'LINKEDIN_KEY' : u'', - 'LINKEDIN_SECRET' : u'', - 'TWITTER_KEY' : u'', - 'TWITTER_SECRET' : u'', - 'USE_LDAP_FOR_PASSWORD_LOGIN' : False, - 'USE_RECAPTCHA' : False, - }, - 'FLATPAGES' : { - 'FORUM_ABOUT' : u'', - 'FORUM_FAQ' : u'', - 'FORUM_PRIVACY' : u'', - }, - 'FORUM_DATA_RULES' : { - 'MIN_TITLE_LENGTH' : 1, - 'MIN_QUESTION_BODY_LENGTH' : 1, - 'MIN_ANSWER_BODY_LENGTH' : 1, - 'WIKI_ON' : False, - 'ALLOW_ASK_ANONYMOUSLY' : True, - 'ALLOW_POSTING_BEFORE_LOGGING_IN' : False, - 'ALLOW_SWAPPING_QUESTION_WITH_ANSWER' : False, - 'MAX_TAG_LENGTH' : 20, - 'MIN_TITLE_LENGTH' : 1, - 'MIN_QUESTION_BODY_LENGTH' : 1, - 'MIN_ANSWER_BODY_LENGTH' : 1, - 'MANDATORY_TAGS' : u'', - 'FORCE_LOWERCASE_TAGS' : False, - 'TAG_LIST_FORMAT' : u'list', - 'USE_WILDCARD_TAGS' : False, - 'MAX_COMMENTS_TO_SHOW' : 5, - 'MAX_COMMENT_LENGTH' : 300, - 'USE_TIME_LIMIT_TO_EDIT_COMMENT' : True, - 'MINUTES_TO_EDIT_COMMENT' : 10, - 'SAVE_COMMENT_ON_ENTER' : True, - 'MIN_SEARCH_WORD_LENGTH' : 4, - 'DECOUPLE_TEXT_QUERY_FROM_SEARCH_STATE' : False, - 'MAX_TAGS_PER_POST' : 5, - 'DEFAULT_QUESTIONS_PAGE_SIZE' : u'30', - 'UNANSWERED_QUESTION_MEANING' : u'NO_ACCEPTED_ANSWERS', - - # Enabling video requires forked version of markdown - # pip uninstall markdown2 - # pip install -e git+git://github.com/andryuha/python-markdown2.git#egg=markdown2 - 'ENABLE_VIDEO_EMBEDDING' : False, - }, - 'GENERAL_SKIN_SETTINGS' : { - 'CUSTOM_CSS' : u'', - 'CUSTOM_FOOTER' : u'', - 'CUSTOM_HEADER' : u'', - 'CUSTOM_HTML_HEAD' : u'', - 'CUSTOM_JS' : u'', - 'SITE_FAVICON' : u'/images/favicon.gif', - 'SITE_LOGO_URL' : u'/images/logo.gif', - 'SHOW_LOGO' : False, - 'LOCAL_LOGIN_ICON' : u'/images/pw-login.gif', - 'ALWAYS_SHOW_ALL_UI_FUNCTIONS' : False, - 'ASKBOT_DEFAULT_SKIN' : u'mitx', - 'USE_CUSTOM_HTML_HEAD' : False, - 'FOOTER_MODE' : u'default', - 'USE_CUSTOM_CSS' : False, - 'USE_CUSTOM_JS' : False, - }, - 'LEADING_SIDEBAR' : { - 'ENABLE_LEADING_SIDEBAR' : False, - 'LEADING_SIDEBAR' : u'', - }, - 'LOGIN_PROVIDERS' : { - 'PASSWORD_REGISTER_SHOW_PROVIDER_BUTTONS' : True, - 'SIGNIN_ALWAYS_SHOW_LOCAL_LOGIN' : True, - 'SIGNIN_AOL_ENABLED' : True, - 'SIGNIN_BLOGGER_ENABLED' : True, - 'SIGNIN_CLAIMID_ENABLED' : True, - 'SIGNIN_FACEBOOK_ENABLED' : True, - 'SIGNIN_FLICKR_ENABLED' : True, - 'SIGNIN_GOOGLE_ENABLED' : True, - 'SIGNIN_IDENTI.CA_ENABLED' : True, - 'SIGNIN_LINKEDIN_ENABLED' : True, - 'SIGNIN_LIVEJOURNAL_ENABLED' : True, - 'SIGNIN_LOCAL_ENABLED' : True, - 'SIGNIN_OPENID_ENABLED' : True, - 'SIGNIN_TECHNORATI_ENABLED' : True, - 'SIGNIN_TWITTER_ENABLED' : True, - 'SIGNIN_VERISIGN_ENABLED' : True, - 'SIGNIN_VIDOOP_ENABLED' : True, - 'SIGNIN_WORDPRESS_ENABLED' : True, - 'SIGNIN_WORDPRESS_SITE_ENABLED' : False, - 'SIGNIN_YAHOO_ENABLED' : True, - 'WORDPRESS_SITE_ICON' : u'/images/logo.gif', - 'WORDPRESS_SITE_URL' : '', - }, - 'LICENSE_SETTINGS' : { - 'LICENSE_ACRONYM' : u'cc-by-sa', - 'LICENSE_LOGO_URL' : u'/images/cc-by-sa.png', - 'LICENSE_TITLE' : u'Creative Commons Attribution Share Alike 3.0', - 'LICENSE_URL' : 'http://creativecommons.org/licenses/by-sa/3.0/legalcode', - 'LICENSE_USE_LOGO' : True, - 'LICENSE_USE_URL' : True, - 'USE_LICENSE' : True, - }, - 'MARKUP' : { - 'MARKUP_CODE_FRIENDLY' : False, - 'ENABLE_MATHJAX' : True, - 'MATHJAX_BASE_URL' : u'/static/js/vendor/mathjax-MathJax-c9db6ac/', - 'ENABLE_AUTO_LINKING' : False, - 'AUTO_LINK_PATTERNS' : u'', - 'AUTO_LINK_URLS' : u'', - }, - 'MIN_REP' : { - 'MIN_REP_TO_ACCEPT_OWN_ANSWER' : 1, - 'MIN_REP_TO_ANSWER_OWN_QUESTION' : 1, - 'MIN_REP_TO_CLOSE_OTHERS_QUESTIONS' : 1200, - 'MIN_REP_TO_CLOSE_OWN_QUESTIONS' : 1, - 'MIN_REP_TO_DELETE_OTHERS_COMMENTS' : 5000, - 'MIN_REP_TO_DELETE_OTHERS_POSTS' : 10000, - 'MIN_REP_TO_EDIT_OTHERS_POSTS' : 5000, - 'MIN_REP_TO_EDIT_WIKI' : 200, - 'MIN_REP_TO_FLAG_OFFENSIVE' : 1, - 'MIN_REP_TO_HAVE_STRONG_URL' : 250, - 'MIN_REP_TO_LEAVE_COMMENTS' : 1, - 'MIN_REP_TO_LOCK_POSTS' : 10000, - 'MIN_REP_TO_REOPEN_OWN_QUESTIONS' : 1, - 'MIN_REP_TO_RETAG_OTHERS_QUESTIONS' : 100, - 'MIN_REP_TO_UPLOAD_FILES' : 1, - 'MIN_REP_TO_VIEW_OFFENSIVE_FLAGS' : 2000, - 'MIN_REP_TO_VOTE_DOWN' : 15, - 'MIN_REP_TO_VOTE_UP' : 1, - }, - 'QA_SITE_SETTINGS' : { - 'APP_COPYRIGHT' : u'Copyright Askbot, 2010-2011.', - 'APP_DESCRIPTION' : u'Open source question and answer forum written in Python and Django', - 'APP_KEYWORDS' : u'Askbot,CNPROG,forum,community', - 'APP_SHORT_NAME' : u'Askbot', - 'APP_TITLE' : u'Askbot: Open Source Q&A Forum', - 'APP_URL' : u'http://askbot.org', - 'FEEDBACK_SITE_URL' : u'', - 'ENABLE_GREETING_FOR_ANON_USER' : True, - 'GREETING_FOR_ANONYMOUS_USER' : u'First time here? Check out the FAQ!', - }, - 'REP_CHANGES' : { - 'MAX_REP_GAIN_PER_USER_PER_DAY' : 200, - 'REP_GAIN_FOR_ACCEPTING_ANSWER' : 2, - 'REP_GAIN_FOR_CANCELING_DOWNVOTE' : 1, - 'REP_GAIN_FOR_RECEIVING_ANSWER_ACCEPTANCE' : 15, - 'REP_GAIN_FOR_RECEIVING_DOWNVOTE_CANCELATION' : 2, - 'REP_GAIN_FOR_RECEIVING_UPVOTE' : 10, - 'REP_LOSS_FOR_CANCELING_ANSWER_ACCEPTANCE' : -2, - 'REP_LOSS_FOR_DOWNVOTING' : -2, - 'REP_LOSS_FOR_RECEIVING_CANCELATION_OF_ANSWER_ACCEPTANCE' : -5, - 'REP_LOSS_FOR_RECEIVING_DOWNVOTE' : -1, - 'REP_LOSS_FOR_RECEIVING_FIVE_FLAGS_PER_REVISION' : -100, - 'REP_LOSS_FOR_RECEIVING_FLAG' : -2, - 'REP_LOSS_FOR_RECEIVING_THREE_FLAGS_PER_REVISION' : -30, - 'REP_LOSS_FOR_RECEIVING_UPVOTE_CANCELATION' : -10, - }, - 'SOCIAL_SHARING' : { - 'ENABLE_SHARING_TWITTER' : False, - 'ENABLE_SHARING_FACEBOOK' : False, - 'ENABLE_SHARING_LINKEDIN' : False, - 'ENABLE_SHARING_IDENTICA' : False, - 'ENABLE_SHARING_GOOGLE' : False, - }, - 'SIDEBAR_MAIN' : { - 'SIDEBAR_MAIN_AVATAR_LIMIT' : 16, - 'SIDEBAR_MAIN_FOOTER' : u'', - 'SIDEBAR_MAIN_HEADER' : u'', - 'SIDEBAR_MAIN_SHOW_AVATARS' : True, - 'SIDEBAR_MAIN_SHOW_TAGS' : True, - 'SIDEBAR_MAIN_SHOW_TAG_SELECTOR' : True, - }, - 'SIDEBAR_PROFILE' : { - 'SIDEBAR_PROFILE_FOOTER' : u'', - 'SIDEBAR_PROFILE_HEADER' : u'', - }, - 'SIDEBAR_QUESTION' : { - 'SIDEBAR_QUESTION_FOOTER' : u'', - 'SIDEBAR_QUESTION_HEADER' : u'', - 'SIDEBAR_QUESTION_SHOW_META' : True, - 'SIDEBAR_QUESTION_SHOW_RELATED' : True, - 'SIDEBAR_QUESTION_SHOW_TAGS' : True, - }, - 'SITE_MODES' : { - 'ACTIVATE_BOOTSTRAP_MODE' : False, - }, - 'SKIN_COUNTER_SETTINGS' : { - - }, - 'SPAM_AND_MODERATION' : { - 'AKISMET_API_KEY' : u'', - 'USE_AKISMET' : False, - }, - 'USER_SETTINGS' : { - 'EDITABLE_SCREEN_NAME' : False, - 'EDITABLE_EMAIL' : False, - 'ALLOW_ADD_REMOVE_LOGIN_METHODS' : False, - 'ENABLE_GRAVATAR' : False, - 'GRAVATAR_TYPE' : u'identicon', - 'NAME_OF_ANONYMOUS_USER' : u'', - 'DEFAULT_AVATAR_URL' : u'/images/nophoto.png', - 'MIN_USERNAME_LENGTH' : 1, - 'ALLOW_ACCOUNT_RECOVERY_BY_EMAIL' : True, - }, - 'VOTE_RULES' : { - 'MAX_VOTES_PER_USER_PER_DAY' : 30, - 'MAX_FLAGS_PER_USER_PER_DAY' : 5, - 'MIN_DAYS_FOR_STAFF_TO_ACCEPT_ANSWER' : 0, - 'MIN_DAYS_TO_ANSWER_OWN_QUESTION' : 0, - 'MIN_FLAGS_TO_DELETE_POST' : 5, - 'MIN_FLAGS_TO_HIDE_POST' : 3, - 'MAX_DAYS_TO_CANCEL_VOTE' : 1, - 'VOTES_LEFT_WARNING_THRESHOLD' : 5, - }, - }, - }, -} diff --git a/lms/envs/aws.py b/lms/envs/aws.py index 36d1a809df..16216bbe09 100644 --- a/lms/envs/aws.py +++ b/lms/envs/aws.py @@ -19,11 +19,10 @@ EMAIL_BACKEND = 'django_ses.SESBackend' SESSION_ENGINE = 'django.contrib.sessions.backends.cache' DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' -# Disable askbot, enable Berkeley forums -MITX_FEATURES['ENABLE_DISCUSSION'] = False +# Enable Berkeley forums MITX_FEATURES['ENABLE_DISCUSSION_SERVICE'] = True -# IMPORTANT: With this enabled, the server must always be behind a proxy that +# IMPORTANT: With this enabled, the server must always be behind a proxy that # strips the header HTTP_X_FORWARDED_PROTO from client requests. Otherwise, # a user can fool our server into thinking it was an https connection. # See https://docs.djangoproject.com/en/dev/ref/settings/#secure-proxy-ssl-header @@ -80,4 +79,4 @@ if 'COURSE_ID' in ENV_TOKENS: ASKBOT_URL = "courses/{0}/discussions/".format(ENV_TOKENS['COURSE_ID']) PEARSON_TEST_USER = "pearsontest" -PEARSON_TEST_PASSWORD = AUTH_TOKENS.get("PEARSON_TEST_PASSWORD") \ No newline at end of file +PEARSON_TEST_PASSWORD = AUTH_TOKENS.get("PEARSON_TEST_PASSWORD") diff --git a/lms/envs/common.py b/lms/envs/common.py index 38e9940bd8..594dd854c5 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -27,15 +27,12 @@ import hashlib from collections import defaultdict import socket -import djcelery from path import path -from .askbotsettings import * # this is where LIVESETTINGS_OPTIONS comes from from .discussionsettings import * ################################### FEATURES ################################### COURSEWARE_ENABLED = True -ASKBOT_ENABLED = False GENERATE_RANDOM_USER_CREDENTIALS = False PERFSTATS = False @@ -102,14 +99,11 @@ PROJECT_ROOT = path(__file__).abspath().dirname().dirname() # /mitx/lms REPO_ROOT = PROJECT_ROOT.dirname() COMMON_ROOT = REPO_ROOT / "common" ENV_ROOT = REPO_ROOT.dirname() # virtualenv dir /mitx is in -ASKBOT_ROOT = REPO_ROOT / "askbot" COURSES_ROOT = ENV_ROOT / "data" DATA_DIR = COURSES_ROOT sys.path.append(REPO_ROOT) -sys.path.append(ASKBOT_ROOT) -sys.path.append(ASKBOT_ROOT / "askbot" / "deps") sys.path.append(PROJECT_ROOT / 'djangoapps') sys.path.append(PROJECT_ROOT / 'lib') sys.path.append(COMMON_ROOT / 'djangoapps') @@ -156,10 +150,8 @@ TEMPLATE_DIRS = ( TEMPLATE_CONTEXT_PROCESSORS = ( 'django.core.context_processors.request', 'django.core.context_processors.static', - 'askbot.context.application_settings', 'django.contrib.messages.context_processors.messages', #'django.core.context_processors.i18n', - 'askbot.user_messages.context_processors.user_messages',#must be before auth 'django.contrib.auth.context_processors.auth', #this is required for admin 'django.core.context_processors.csrf', #necessary for csrf protection @@ -270,7 +262,6 @@ STATIC_ROOT = ENV_ROOT / "staticfiles" STATICFILES_DIRS = [ COMMON_ROOT / "static", PROJECT_ROOT / "static", - PROJECT_ROOT / "askbot" / "skins", ] if os.path.isdir(DATA_DIR): # Add the full course repo if there is no static directory @@ -316,35 +307,6 @@ ALLOWED_GITRELOAD_IPS = ['207.97.227.253', '50.57.128.197', '108.171.174.178'] # in the global settings.py AWS_QUERYSTRING_EXPIRE = 10 * 365 * 24 * 60 * 60 # 10 years -################################### ASKBOT ##################################### -LIVESETTINGS_OPTIONS['MITX_ROOT_URL'] = MITX_ROOT_URL -skin_settings = LIVESETTINGS_OPTIONS[1]['SETTINGS']['GENERAL_SKIN_SETTINGS'] -skin_settings['SITE_FAVICON'] = unicode(MITX_ROOT_URL) + skin_settings['SITE_FAVICON'] -skin_settings['SITE_LOGO_URL'] = unicode(MITX_ROOT_URL) + skin_settings['SITE_LOGO_URL'] -skin_settings['LOCAL_LOGIN_ICON'] = unicode(MITX_ROOT_URL) + skin_settings['LOCAL_LOGIN_ICON'] -LIVESETTINGS_OPTIONS[1]['SETTINGS']['LOGIN_PROVIDERS']['WORDPRESS_SITE_ICON'] = unicode(MITX_ROOT_URL) + LIVESETTINGS_OPTIONS[1]['SETTINGS']['LOGIN_PROVIDERS']['WORDPRESS_SITE_ICON'] -LIVESETTINGS_OPTIONS[1]['SETTINGS']['LICENSE_SETTINGS']['LICENSE_LOGO_URL'] = unicode(MITX_ROOT_URL) + LIVESETTINGS_OPTIONS[1]['SETTINGS']['LICENSE_SETTINGS']['LICENSE_LOGO_URL'] - -# ASKBOT_EXTRA_SKINS_DIR = ASKBOT_ROOT / "askbot" / "skins" -ASKBOT_EXTRA_SKINS_DIR = PROJECT_ROOT / "askbot" / "skins" -ASKBOT_ALLOWED_UPLOAD_FILE_TYPES = ('.jpg', '.jpeg', '.gif', '.bmp', '.png', '.tiff') -ASKBOT_MAX_UPLOAD_FILE_SIZE = 1024 * 1024 # result in bytes - -CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True -CACHE_PREFIX = SITE_ID -ASKBOT_URL = 'discussion/' -LOGIN_REDIRECT_URL = MITX_ROOT_URL + '/' -LOGIN_URL = MITX_ROOT_URL + '/' - -ALLOW_UNICODE_SLUGS = False -ASKBOT_USE_STACKEXCHANGE_URLS = False # mimic url scheme of stackexchange -ASKBOT_CSS_DEVEL = True - -# Celery Settings -BROKER_TRANSPORT = "djkombu.transport.DatabaseTransport" -CELERY_ALWAYS_EAGER = True -djcelery.setup_loader() - ################################# SIMPLEWIKI ################################### SIMPLE_WIKI_REQUIRE_LOGIN_EDIT = True SIMPLE_WIKI_REQUIRE_LOGIN_VIEW = False @@ -380,8 +342,6 @@ TEMPLATE_LOADERS = ( # 'django.template.loaders.filesystem.Loader', # 'django.template.loaders.app_directories.Loader', - #'askbot.skins.loaders.filesystem_load_template_source', - # 'django.template.loaders.eggs.Loader', ) MIDDLEWARE_CLASSES = ( @@ -400,13 +360,6 @@ MIDDLEWARE_CLASSES = ( 'course_wiki.course_nav.Middleware', - 'askbot.middleware.anon_user.ConnectToSessionMessagesMiddleware', - 'askbot.middleware.forum_mode.ForumModeMiddleware', - 'askbot.middleware.cancel.CancelActionMiddleware', - 'django.middleware.transaction.TransactionMiddleware', - 'askbot.middleware.view_log.ViewLogMiddleware', - 'askbot.middleware.spaceless.SpacelessMiddleware', - # 'askbot.middleware.pagesize.QuestionsPageSizeMiddleware', # 'debug_toolbar.middleware.DebugToolbarMiddleware', 'django_comment_client.utils.ViewNameMiddleware', @@ -642,18 +595,6 @@ INSTALLED_APPS = ( # For testing 'django_jasmine', - # Discussion + # Discussion forums 'django_comment_client', - - # For Askbot - 'django.contrib.sitemaps', - 'django.contrib.admin', - 'django_countries', - 'djcelery', - 'djkombu', - 'askbot', - 'askbot.deps.livesettings', - 'followit', - 'keyedcache', - 'robots' ) diff --git a/lms/envs/dev.py b/lms/envs/dev.py index f5213ba593..9d45a9ad6f 100644 --- a/lms/envs/dev.py +++ b/lms/envs/dev.py @@ -39,8 +39,7 @@ DATABASES = { } CACHES = { - # This is the cache used for most things. Askbot will not work without a - # functioning cache -- it relies on caching to load its settings in places. + # This is the cache used for most things. # In staging/prod envs, the sessions also live here. 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', @@ -159,16 +158,6 @@ DEBUG_TOOLBAR_PANELS = ( DEBUG_TOOLBAR_CONFIG = { 'INTERCEPT_REDIRECTS': False } -############################ FILE UPLOADS (ASKBOT) ############################# -DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage' -MEDIA_ROOT = ENV_ROOT / "uploads" -MEDIA_URL = "/static/uploads/" -STATICFILES_DIRS.append(("uploads", MEDIA_ROOT)) -FILE_UPLOAD_TEMP_DIR = ENV_ROOT / "uploads" -FILE_UPLOAD_HANDLERS = ( - 'django.core.files.uploadhandler.MemoryFileUploadHandler', - 'django.core.files.uploadhandler.TemporaryFileUploadHandler', -) ########################### PIPELINE ################################# diff --git a/lms/envs/dev_ike.py b/lms/envs/dev_ike.py index 0be9146fd4..f9c7f094c5 100644 --- a/lms/envs/dev_ike.py +++ b/lms/envs/dev_ike.py @@ -44,7 +44,6 @@ SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https') # django 1.4 fo INSTALLED_APPS = tuple([ app for app in INSTALLED_APPS if not app.startswith('debug_toolbar') ]) MIDDLEWARE_CLASSES = tuple([ mcl for mcl in MIDDLEWARE_CLASSES if not mcl.startswith('debug_toolbar') ]) -#TEMPLATE_LOADERS = tuple([ app for app in TEMPLATE_LOADERS if not app.startswith('askbot') ]) #TEMPLATE_LOADERS = tuple([ app for app in TEMPLATE_LOADERS if not app.startswith('mitxmako') ]) TEMPLATE_LOADERS = ( 'django.template.loaders.filesystem.Loader', diff --git a/lms/envs/devgroups/courses.py b/lms/envs/devgroups/courses.py index 92b28f3575..e9ed28a09d 100644 --- a/lms/envs/devgroups/courses.py +++ b/lms/envs/devgroups/courses.py @@ -40,7 +40,3 @@ def course_db_for(course_id): 'NAME' : path_for_db(db_name) } } - -def askbot_url_for(course_id): - return "courses/{0}/discussions/".format(course_id) - diff --git a/lms/envs/devgroups/h_cs50.py b/lms/envs/devgroups/h_cs50.py index 3cd6d6f2c0..9643c33d35 100644 --- a/lms/envs/devgroups/h_cs50.py +++ b/lms/envs/devgroups/h_cs50.py @@ -1,4 +1,3 @@ from .courses import * DATABASES = course_db_for('HarvardX/CS50x/2012') -ASKBOT_URL = askbot_url_for("HarvardX/CS50x/2012") \ No newline at end of file diff --git a/lms/envs/devgroups/m_6002.py b/lms/envs/devgroups/m_6002.py index e791857d3a..411e2bcc3c 100644 --- a/lms/envs/devgroups/m_6002.py +++ b/lms/envs/devgroups/m_6002.py @@ -1,4 +1,3 @@ from .courses import * DATABASES = course_db_for('MITx/6.002x/2012_Fall') -ASKBOT_URL = askbot_url_for("MITx/6.002x/2012_Fall") diff --git a/lms/envs/devplus.py b/lms/envs/devplus.py index bb4524a1ab..5c79304c0a 100644 --- a/lms/envs/devplus.py +++ b/lms/envs/devplus.py @@ -5,7 +5,7 @@ you're running memcached. You'll want to use this to test caching and database migrations. Assumptions: -* MySQL 5.1 (version important -- askbot breaks on 5.5) +* MySQL 5.1 (version important? (askbot breaks on 5.5, but that's gone now)) Dir structure: /envroot/ diff --git a/lms/envs/edx4edx_aws.py b/lms/envs/edx4edx_aws.py index 963cd68ff7..adc2c6e1ce 100644 --- a/lms/envs/edx4edx_aws.py +++ b/lms/envs/edx4edx_aws.py @@ -25,7 +25,6 @@ COURSE_SETTINGS = {'edx4edx': {'number' : 'edX.01', STATICFILES_DIRS = [ PROJECT_ROOT / "static", - ASKBOT_ROOT / "askbot" / "skins", ("edx4edx", EDX4EDX_ROOT / "html"), ("circuits", DATA_DIR / "images"), ("handouts", DATA_DIR / "handouts"), diff --git a/lms/envs/static.py b/lms/envs/static.py index 179f9160c5..f5ec06a438 100644 --- a/lms/envs/static.py +++ b/lms/envs/static.py @@ -25,8 +25,7 @@ DATABASES = { } CACHES = { - # This is the cache used for most things. Askbot will not work without a - # functioning cache -- it relies on caching to load its settings in places. + # This is the cache used for most things. # In staging/prod envs, the sessions also live here. 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', @@ -50,12 +49,3 @@ CACHES = { # Dummy secret key for dev SECRET_KEY = '85920908f28904ed733fe576320db18cabd7b6cd' -############################ FILE UPLOADS (ASKBOT) ############################# -DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage' -MEDIA_ROOT = ENV_ROOT / "uploads" -MEDIA_URL = "/discussion/upfiles/" -FILE_UPLOAD_TEMP_DIR = ENV_ROOT / "uploads" -FILE_UPLOAD_HANDLERS = ( - 'django.core.files.uploadhandler.MemoryFileUploadHandler', - 'django.core.files.uploadhandler.TemporaryFileUploadHandler', -) diff --git a/lms/envs/test.py b/lms/envs/test.py index e11946a47a..dc120af1b4 100644 --- a/lms/envs/test.py +++ b/lms/envs/test.py @@ -70,7 +70,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) @@ -100,8 +99,7 @@ DATABASES = { } CACHES = { - # This is the cache used for most things. Askbot will not work without a - # functioning cache -- it relies on caching to load its settings in places. + # This is the cache used for most things. # In staging/prod envs, the sessions also live here. 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', @@ -130,11 +128,7 @@ MITX_FEATURES['AUTH_USE_OPENID'] = True MITX_FEATURES['AUTH_USE_OPENID_PROVIDER'] = True OPENID_PROVIDER_TRUSTED_ROOTS = ['*'] -############################ FILE UPLOADS (ASKBOT) ############################# -DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage' -MEDIA_ROOT = TEST_ROOT / "uploads" -MEDIA_URL = "/static/uploads/" -STATICFILES_DIRS.append(("uploads", MEDIA_ROOT)) +############################ STATIC FILES ############################# new_staticfiles_dirs = [] # Strip out any static files that aren't in the repository root @@ -150,12 +144,6 @@ for static_dir in STATICFILES_DIRS: new_staticfiles_dirs.append(static_dir) STATICFILES_DIRS = new_staticfiles_dirs -FILE_UPLOAD_TEMP_DIR = PROJECT_ROOT / "uploads" -FILE_UPLOAD_HANDLERS = ( - 'django.core.files.uploadhandler.MemoryFileUploadHandler', - 'django.core.files.uploadhandler.TemporaryFileUploadHandler', -) - ################### Make tests faster #http://slacy.com/blog/2012/04/make-your-tests-faster-in-django-1-4/ diff --git a/lms/envs/test_ike.py b/lms/envs/test_ike.py index 8bdecb3c8f..9a340a545d 100644 --- a/lms/envs/test_ike.py +++ b/lms/envs/test_ike.py @@ -17,7 +17,6 @@ INSTALLED_APPS = [ app for app in INSTALLED_APPS - if not app.startswith('askbot') ] # Nose Test Runner @@ -52,8 +51,7 @@ DATABASES = { } CACHES = { - # This is the cache used for most things. Askbot will not work without a - # functioning cache -- it relies on caching to load its settings in places. + # This is the cache used for most things. # In staging/prod envs, the sessions also live here. 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', @@ -77,13 +75,3 @@ CACHES = { # Dummy secret key for dev SECRET_KEY = '85920908f28904ed733fe576320db18cabd7b6cd' -############################ FILE UPLOADS (ASKBOT) ############################# -DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage' -MEDIA_ROOT = PROJECT_ROOT / "uploads" -MEDIA_URL = "/static/uploads/" -STATICFILES_DIRS.append(("uploads", MEDIA_ROOT)) -FILE_UPLOAD_TEMP_DIR = PROJECT_ROOT / "uploads" -FILE_UPLOAD_HANDLERS = ( - 'django.core.files.uploadhandler.MemoryFileUploadHandler', - 'django.core.files.uploadhandler.TemporaryFileUploadHandler', -) diff --git a/lms/static/sass/course.scss b/lms/static/sass/course.scss index 886871e4fe..924b4852c0 100644 --- a/lms/static/sass/course.scss +++ b/lms/static/sass/course.scss @@ -48,6 +48,7 @@ @import "course/instructor/instructor"; // Askbot / Discussion styles +// TODO: Get rid of askbot-specific styles. @import "course/discussion/askbot-original"; @import "course/discussion/discussion"; @import "course/discussion/sidebar"; diff --git a/lms/urls.py b/lms/urls.py index 047a828df4..4141a5e6b3 100644 --- a/lms/urls.py +++ b/lms/urls.py @@ -1,14 +1,8 @@ from django.conf import settings from django.conf.urls import patterns, include, url -from django.contrib import admin from django.conf.urls.static import static import django.contrib.auth.views -# Uncomment the next two lines to enable the admin: -if settings.DEBUG: - from django.contrib import admin - admin.autodiscover() - urlpatterns = ('', url(r'^$', 'branding.views.index', name="root"), # Main marketing page, or redirect to courseware url(r'^dashboard$', 'student.views.dashboard', name="dashboard"), @@ -246,20 +240,9 @@ if settings.QUICKEDIT: urlpatterns += (url(r'^quickedit/(?P[^/]*)$', 'dogfood.views.quickedit'),) urlpatterns += (url(r'^dogfood/(?P[^/]*)$', 'dogfood.views.df_capa_problem'),) -if settings.ASKBOT_ENABLED: - urlpatterns += (url(r'^%s' % settings.ASKBOT_URL, include('askbot.urls')), \ - url(r'^settings/', include('askbot.deps.livesettings.urls')), \ - url(r'^followit/', include('followit.urls')), \ -# url(r'^robots.txt$', include('robots.urls')), - ) - - - if settings.DEBUG: - ## Jasmine and admin - urlpatterns=urlpatterns + (url(r'^_jasmine/', include('django_jasmine.urls')), - url(r'^admin/', include(admin.site.urls)), - ) + ## Jasmine + urlpatterns=urlpatterns + (url(r'^_jasmine/', include('django_jasmine.urls')),) if settings.MITX_FEATURES.get('AUTH_USE_OPENID'): urlpatterns += ( From d636d729c605cb31f9124a0209ba67eabc5912a3 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Tue, 30 Oct 2012 19:54:15 -0400 Subject: [PATCH 247/308] add migration to remove askbot columns --- .../student/migrations/0021_remove_askbot.py | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 common/djangoapps/student/migrations/0021_remove_askbot.py diff --git a/common/djangoapps/student/migrations/0021_remove_askbot.py b/common/djangoapps/student/migrations/0021_remove_askbot.py new file mode 100644 index 0000000000..b933f6cc7c --- /dev/null +++ b/common/djangoapps/student/migrations/0021_remove_askbot.py @@ -0,0 +1,123 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + +ASKBOT_AUTH_USER_COLUMNS = ( + 'website', + 'about', + 'gold', + 'email_isvalid', + 'real_name', + 'location', + 'reputation', + 'gravatar', + 'bronze', + 'last_seen', + 'silver', + 'questions_per_page', + 'new_response_count', + 'seen_response_count', +) + + +class Migration(SchemaMigration): + + def forwards(self, orm): + "Kill the askbot" + for column in ASKBOT_AUTH_USER_COLUMNS: + db.delete_column('auth_user', column) + + def backwards(self, orm): + raise RuntimeError("Cannot reverse this migration: there's no going back to Askbot.") + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + 'student.courseenrollment': { + 'Meta': {'unique_together': "(('user', 'course_id'),)", 'object_name': 'CourseEnrollment'}, + 'course_id': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'student.pendingemailchange': { + 'Meta': {'object_name': 'PendingEmailChange'}, + 'activation_key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32', 'db_index': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'new_email': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) + }, + 'student.pendingnamechange': { + 'Meta': {'object_name': 'PendingNameChange'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'new_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'rationale': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) + }, + 'student.registration': { + 'Meta': {'object_name': 'Registration', 'db_table': "'auth_registration'"}, + 'activation_key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32', 'db_index': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'unique': 'True'}) + }, + 'student.userprofile': { + 'Meta': {'object_name': 'UserProfile', 'db_table': "'auth_userprofile'"}, + 'courseware': ('django.db.models.fields.CharField', [], {'default': "'course.xml'", 'max_length': '255', 'blank': 'True'}), + 'gender': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '6', 'null': 'True', 'blank': 'True'}), + 'goals': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'language': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}), + 'level_of_education': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '6', 'null': 'True', 'blank': 'True'}), + 'location': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}), + 'mailing_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'meta': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'profile'", 'unique': 'True', 'to': "orm['auth.User']"}), + 'year_of_birth': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}) + }, + 'student.usertestgroup': { + 'Meta': {'object_name': 'UserTestGroup'}, + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '32', 'db_index': 'True'}), + 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'db_index': 'True', 'symmetrical': 'False'}) + } + } + + complete_apps = ['student'] From 22ed22d956cbd51332db89a45b4c96819d71cb23 Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Tue, 30 Oct 2012 18:35:03 -0400 Subject: [PATCH 248/308] Updating the certificate app for testing Conflicts: lms/djangoapps/certificates/models.py --- .../management/commands/ungenerated_certs.py | 69 ++++++-- lms/djangoapps/certificates/models.py | 155 +++++------------ lms/djangoapps/certificates/views.py | 163 +++--------------- 3 files changed, 127 insertions(+), 260 deletions(-) diff --git a/lms/djangoapps/certificates/management/commands/ungenerated_certs.py b/lms/djangoapps/certificates/management/commands/ungenerated_certs.py index 7d384103ab..947af913dd 100644 --- a/lms/djangoapps/certificates/management/commands/ungenerated_certs.py +++ b/lms/djangoapps/certificates/management/commands/ungenerated_certs.py @@ -1,22 +1,71 @@ from django.utils.simplejson import dumps from django.core.management.base import BaseCommand, CommandError from certificates.models import GeneratedCertificate +from courseware import grades, courses +from django.contrib.auth.models import User +from django.test.client import RequestFactory +from profilehooks import profile +import cProfile +from pprint import pprint +from capa.xqueue_interface import XQueueInterface +from capa.xqueue_interface import make_xheader +from django.conf import settings +from requests.auth import HTTPBasicAuth class Command(BaseCommand): help = """ - This command finds all GeneratedCertificate objects that do not have a - certificate generated. These come into being when a user requests a - certificate, or when grade_all_students is called (for pre-generating - certificates). - + This command finds all users that have not been graded + for a single course. It returns a json formatted list of users and their user ids """ +# @profile + def _grade(self,student, request, course): + grades.grade(student, request, course) + def handle(self, *args, **options): - users = GeneratedCertificate.objects.filter( - download_url=None) - user_output = [{'user_id':user.user_id, 'name':user.name} - for user in users] - self.stdout.write(dumps(user_output) + "\n") + factory = RequestFactory() + course_id = 'BerkeleyX/CS169.1x/2012_Fall' + course = courses.get_course_by_id(course_id) + if settings.XQUEUE_INTERFACE.get('basic_auth') is not None: + requests_auth = HTTPBasicAuth( + *settings.XQUEUE_INTERFACE['basic_auth']) + else: + requests_auth = None + + xqueue_interface = XQueueInterface( + settings.XQUEUE_INTERFACE['url'], + settings.XQUEUE_INTERFACE['django_auth'], + requests_auth, + ) + + header = make_xheader('/certificate', 'foo', 'test-pull') + print "Sending test message to queue" + xqueue_interface.send_to_queue(header, { 'test': 'foo' }) + + #enrolled_students = User.objects.filter( + # courseenrollment__course_id=course_id).prefetch_related( + # "groups").order_by('username') + #generated_certificates = GeneratedCertificate.objects.filter( + # course_id=course_id) + #request = factory.get('/') + #student = User.objects.get(username='03199618') + #print "total students: {0}".format(len(enrolled_students)) + #count = 0 + #for student in enrolled_students: + # count += 1 + # if count % 1000 == 0: + # print "{0}/{1}".format(count, len(enrolled_students)) + # grades.grade(student, request, course) + + #for student in enrolled_students: + # g = grades.grade(student, request, course) + # if g['grade'] is not None: + # print str(student) + # pprint(g) + # break + + + diff --git a/lms/djangoapps/certificates/models.py b/lms/djangoapps/certificates/models.py index 5815db64ca..eacd5b7977 100644 --- a/lms/djangoapps/certificates/models.py +++ b/lms/djangoapps/certificates/models.py @@ -1,5 +1,3 @@ -from django.conf import settings as settings - from django.contrib.auth.models import User from django.db import models @@ -14,131 +12,66 @@ we save these generated certificates (for later verification), we also record the UUID so that if we regenerate the certificate it will have the same UUID. -If certificates are being generated on the fly, a GeneratedCertificate -should be created with the user, certificate_id, and enabled set -when a student requests a certificate. When the certificate has been -generated, the download_url should be set. +Certificates are generated in batches by a cron job, when a +certificate is available for download the GeneratedCertificate +table is updated with information that will be displayed +on the course overview page. -Certificates can also be pre-generated. In this case, the user, -certificate_id, and download_url are all set before the user does -anything. When the user requests the certificate, only enabled -needs to be set to true. ''' class GeneratedCertificate(models.Model): - user = models.ForeignKey(User, db_index=True) - # This is the name at the time of request - name = models.CharField(blank=True, max_length=255) + user = models.ForeignKey(User) + course_id = models.CharField(max_length=255, default=False) + certificate_id = models.CharField(max_length=32, default=False) + graded_certificate_id = models.CharField(max_length=32, default=False) - certificate_id = models.CharField(max_length=32, null=True, default=None) - graded_certificate_id = models.CharField(max_length=32, null=True, default=None) + download_url = models.CharField(max_length=128, default=False) + graded_download_url = models.CharField(max_length=128, default=False) + grade = models.CharField(max_length=5, default=False) + key = models.CharField(max_length=32, default=False) - download_url = models.CharField(max_length=128, null=True) - graded_download_url = models.CharField(max_length=128, null=True) - - grade = models.CharField(max_length=5, null=True) - - # enabled should only be true if the student has earned a grade in the course - # The student must have a grade and request a certificate for enabled to be True + # enabled should only be true if the student has earned a passing grade + # in the course. enabled = models.BooleanField(default=False) -class RevokedCertificate(models.Model): - """ - This model is for when a GeneratedCertificate must be regenerated. This model - contains all the same fields, to store a record of what the GeneratedCertificate - was before it was revoked (at which time all of it's information can change when - it is regenerated). - - GeneratedCertificate may be deleted once they are revoked, and then created again. - For this reason, the only link between a GeneratedCertificate and RevokedCertificate - is that they share the same user. - """ - ####-------------------New Fields--------------------#### - explanation = models.TextField(blank=True) - - ####---------Fields from GeneratedCertificate---------#### - user = models.ForeignKey(User, db_index=True) - # This is the name at the time of request - name = models.CharField(blank=True, max_length=255) - - certificate_id = models.CharField(max_length=32, null=True, default=None) - graded_certificate_id = models.CharField(max_length=32, null=True, default=None) - - download_url = models.CharField(max_length=128, null=True) - graded_download_url = models.CharField(max_length=128, null=True) - - grade = models.CharField(max_length=5, null=True) - - enabled = models.BooleanField(default=False) - - -def revoke_certificate(certificate, explanation): - """ - This method takes a GeneratedCertificate. It records its information from the certificate - into a RevokedCertificate, and then marks the certificate as needing regenerating. - When the new certificiate is regenerated it will have new IDs and download URLS. - - Once this method has been called, it is safe to delete the certificate, or modify the - certificate's name or grade until it has been generated again. - """ - revoked = RevokedCertificate(user=certificate.user, - name=certificate.name, - certificate_id=certificate.certificate_id, - graded_certificate_id=certificate.graded_certificate_id, - download_url=certificate.download_url, - graded_download_url=certificate.graded_download_url, - grade=certificate.grade, - enabled=certificate.enabled) - - revoked.explanation = explanation - - certificate.certificate_id = None - certificate.graded_certificate_id = None - certificate.download_url = None - certificate.graded_download_url = None - - certificate.save() - revoked.save() - - -def certificate_state_for_student(student, grade): +def certificate_state_for_student(student): ''' - This returns a dictionary with a key for state, and other information. The state is one of the - following: + This returns a dictionary with a key for state, and other information. + The state is one of the following: - unavailable - A student is not eligible for a certificate. - requestable - A student is eligible to request a certificate - generating - A student has requested a certificate, but it is not generated yet. - downloadable - The certificate has been requested and is available for download. + unavailable - A student is not eligible for a certificate. + generating - A student has requested a certificate, + but it is not generated yet. + downloadable - The certificate has been requested and is + available for download. - If the state is "downloadable", the dictionary also contains "download_url" and "graded_download_url". + If the state is "downloadable", the dictionary also contains + "download_url" and "graded_download_url". ''' - if grade: - #TODO: Remove the following after debugging - if settings.DEBUG_SURVEY: - return {'state': 'requestable'} - - try: - generated_certificate = GeneratedCertificate.objects.get(user=student) - if generated_certificate.enabled: - if generated_certificate.download_url: - return {'state': 'downloadable', - 'download_url': generated_certificate.download_url, - 'graded_download_url': generated_certificate.graded_download_url} - else: - return {'state': 'generating'} + try: + generated_certificate = GeneratedCertificate.objects.get( + user=student) + if generated_certificate.enabled: + if generated_certificate.download_url: + return { + 'state': 'downloadable', + 'download_url': + generated_certificate.download_url, + 'graded_download_url': + generated_certificate.graded_download_url + } else: - # If enabled=False, it may have been pre-generated but not yet requested - # Our output will be the same as if the GeneratedCertificate did not exist - pass - except GeneratedCertificate.DoesNotExist: + return {'state': 'generating'} + else: + # If enabled=False, there is no certificate available + # Our output will be the same as if the + # GeneratedCertificate did not exist pass - return {'state': 'requestable'} - else: - # No grade, no certificate. No exceptions - return {'state': 'unavailable'} + except GeneratedCertificate.DoesNotExist: + pass + return {'state': 'unavailable'} diff --git a/lms/djangoapps/certificates/views.py b/lms/djangoapps/certificates/views.py index 472215ab5c..d701794b6d 100644 --- a/lms/djangoapps/certificates/views.py +++ b/lms/djangoapps/certificates/views.py @@ -1,146 +1,31 @@ -import json import logging -import uuid - -from django.conf import settings -from django.contrib.auth.decorators import login_required -from django.core.mail import send_mail -from django.http import Http404, HttpResponse -from django.shortcuts import redirect - -import courseware.grades as grades -from certificates.models import GeneratedCertificate, certificate_state_for_student, revoke_certificate -from mitxmako.shortcuts import render_to_response, render_to_string -from student.models import UserProfile -#TODO: Finish migrating these changes from stable -# from student.survey_questions import exit_survey_list_for_student -# from student.views import student_took_survey, record_exit_survey +from certificates.models import GeneratedCertificate +from pprint import pprint log = logging.getLogger("mitx.certificates") -@login_required -def certificate_request(request): - ''' Attempt to send a certificate. ''' - if not settings.END_COURSE_ENABLED: - raise Http404 +def update_certificate(request): + """ + Will update GeneratedCertificate for a new certificate or + modify an existing certificate entry. + """ if request.method == "POST": - honor_code_verify = request.POST.get('cert_request_honor_code_verify', 'false') - name_verify = request.POST.get('cert_request_name_verify', 'false') - id_verify = request.POST.get('cert_request_id_verify', 'false') - error = '' - - def return_error(error): - return HttpResponse(json.dumps({'success': False, - 'error': error})) - - if honor_code_verify != 'true': - error += 'Please verify that you have followed the honor code to receive a certificate. ' - - if name_verify != 'true': - error += 'Please verify that your name is correct to receive a certificate. ' - - if id_verify != 'true': - error += 'Please certify that you understand the unique ID on the certificate. ' - - if len(error) > 0: - return return_error(error) - - survey_response = record_exit_survey(request, internal_request=True) - if not survey_response['success']: - return return_error(survey_response['error']) - - grade = None - student_gradesheet = grades.grade(request.user, request, course) - grade = student_gradesheet['grade'] - - if not grade: - return return_error('You have not earned a grade in this course. ') - - generate_certificate(request.user, grade) - - return HttpResponse(json.dumps({'success': True})) - - else: - #This is not a POST, we should render the page with the form - - student_gradesheet = grades.grade(request.user, request, course) - certificate_state = certificate_state_for_student(request.user, grade_sheet['grade']) - - if certificate_state['state'] != "requestable": - return redirect("/profile") - - user_info = UserProfile.objects.get(user=request.user) - - took_survey = student_took_survey(user_info) - if settings.DEBUG_SURVEY: - took_survey = False - survey_list = [] - if not took_survey: - survey_list = exit_survey_list_for_student(request.user) - - context = {'certificate_state': certificate_state, - 'took_survey': took_survey, - 'survey_list': survey_list, - 'name': user_info.name} - - return render_to_response('cert_request.html', context) - - -# This method should only be called if the user has a grade and has requested a certificate -def generate_certificate(user, grade): - # Make sure to see the comments in models.GeneratedCertificate to read about the valid - # states for a GeneratedCertificate object - if grade and user.is_active: - generated_certificate = None - - try: - generated_certificate = GeneratedCertificate.objects.get(user=user) - except GeneratedCertificate.DoesNotExist: - generated_certificate = GeneratedCertificate(user=user) - - generated_certificate.enabled = True - if generated_certificate.graded_download_url and (generated_certificate.grade != grade): - log.critical(u"A graded certificate has been pre-generated with the grade " - "of {gen_grade} but requested by user id {userid} with grade " - "{req_grade}! The download URLs were {graded_dl_url} and " - "{ungraded_dl_url}".format( - gen_grade=generated_certificate.grade, - req_grade=grade, - graded_dl_url=generated_certificate.graded_download_url, - ungraded_dl_url=generated_certificate.download_url, - userid=user.id)) - revoke_certificate(generated_certificate, "The grade on this certificate may be inaccurate.") - - user_name = UserProfile.objects.get(user=user).name - if generated_certificate.download_url and (generated_certificate.name != user_name): - log.critical(u"A Certificate has been pre-generated with the name of " - "{gen_name} but current name is {user_name} (user id is " - "{userid})! The download URLs were {graded_dl_url} and " - "{ungraded_dl_url}".format( - gen_name=generated_certificate.name.encode('utf-8'), - user_name=user_name.encode('utf-8'), - graded_dl_url=generated_certificate.graded_download_url, - ungraded_dl_url=generated_certificate.download_url, - userid=user.id)) - revoke_certificate(generated_certificate, "The name on this certificate may be inaccurate.") - - generated_certificate.grade = grade - generated_certificate.name = user_name - generated_certificate.save() - - certificate_id = generated_certificate.certificate_id - - log.debug("Generating certificate for " + str(user.username) + " with ID: " + str(certificate_id)) - - # TODO: If the certificate was pre-generated, send the email that it is ready to download - if certificate_state_for_student(user, grade)['state'] == "downloadable": - subject = render_to_string('emails/certificate_ready_subject.txt', {}) - subject = ''.join(subject.splitlines()) - message = render_to_string('emails/certificate_ready.txt', {}) - - res = send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [user.email, ]) - - else: - log.warning("Asked to generate a certificate for student " + str(user.username) + " but with a grade of " + str(grade) + " and active status " + str(user.is_active)) + pprint(request) +# user = request.POST.get('user') +# try: +# generated_certificate = GeneratedCertificate.objects.get( +# key=key) +# except GeneratedCertificate.DoesNotExist: +# generated_certificate = GeneratedCertificate(user=user) +# +# enabled = request.POST.get('enabled') +# enabled = True if enabled == 'True' else False +# generated_certificate.grade = request.POST.get('grade') +# generated_certificate.download_url = request.POST.get('download_url') +# generated_certificate.graded_download_url = request.POST.get( +# 'graded_download_url') +# generated_certificate.course_id = request.POST.get('course_id') +# generated_certificate.enabled = enabled +# generated_certificate.save() From 8ccaafd758350bd8929dbb70289c99961291d848 Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Tue, 30 Oct 2012 20:17:02 -0400 Subject: [PATCH 249/308] adding migration for certificate changes --- ...el_field_generatedcertificate_name__add.py | 163 ++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 lms/djangoapps/certificates/migrations/0008_auto__del_revokedcertificate__del_field_generatedcertificate_name__add.py diff --git a/lms/djangoapps/certificates/migrations/0008_auto__del_revokedcertificate__del_field_generatedcertificate_name__add.py b/lms/djangoapps/certificates/migrations/0008_auto__del_revokedcertificate__del_field_generatedcertificate_name__add.py new file mode 100644 index 0000000000..cbec7214c0 --- /dev/null +++ b/lms/djangoapps/certificates/migrations/0008_auto__del_revokedcertificate__del_field_generatedcertificate_name__add.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Deleting model 'RevokedCertificate' + db.delete_table('certificates_revokedcertificate') + + # Deleting field 'GeneratedCertificate.name' + db.delete_column('certificates_generatedcertificate', 'name') + + # Adding field 'GeneratedCertificate.course_id' + db.add_column('certificates_generatedcertificate', 'course_id', + self.gf('django.db.models.fields.CharField')(default=False, max_length=255), + keep_default=False) + + # Adding field 'GeneratedCertificate.key' + db.add_column('certificates_generatedcertificate', 'key', + self.gf('django.db.models.fields.CharField')(default=False, max_length=32), + keep_default=False) + + + # Changing field 'GeneratedCertificate.grade' + db.alter_column('certificates_generatedcertificate', 'grade', self.gf('django.db.models.fields.CharField')(max_length=5)) + + # Changing field 'GeneratedCertificate.certificate_id' + db.alter_column('certificates_generatedcertificate', 'certificate_id', self.gf('django.db.models.fields.CharField')(max_length=32)) + + # Changing field 'GeneratedCertificate.download_url' + db.alter_column('certificates_generatedcertificate', 'download_url', self.gf('django.db.models.fields.CharField')(max_length=128)) + + # Changing field 'GeneratedCertificate.graded_download_url' + db.alter_column('certificates_generatedcertificate', 'graded_download_url', self.gf('django.db.models.fields.CharField')(max_length=128)) + + # Changing field 'GeneratedCertificate.graded_certificate_id' + db.alter_column('certificates_generatedcertificate', 'graded_certificate_id', self.gf('django.db.models.fields.CharField')(max_length=32)) + + def backwards(self, orm): + # Adding model 'RevokedCertificate' + db.create_table('certificates_revokedcertificate', ( + ('grade', self.gf('django.db.models.fields.CharField')(max_length=5, null=True)), + ('certificate_id', self.gf('django.db.models.fields.CharField')(default=None, max_length=32, null=True)), + ('explanation', self.gf('django.db.models.fields.TextField')(blank=True)), + ('graded_download_url', self.gf('django.db.models.fields.CharField')(max_length=128, null=True)), + ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('enabled', self.gf('django.db.models.fields.BooleanField')(default=False)), + ('download_url', self.gf('django.db.models.fields.CharField')(max_length=128, null=True)), + ('graded_certificate_id', self.gf('django.db.models.fields.CharField')(default=None, max_length=32, null=True)), + )) + db.send_create_signal('certificates', ['RevokedCertificate']) + + # Adding field 'GeneratedCertificate.name' + db.add_column('certificates_generatedcertificate', 'name', + self.gf('django.db.models.fields.CharField')(default='', max_length=255, blank=True), + keep_default=False) + + # Deleting field 'GeneratedCertificate.course_id' + db.delete_column('certificates_generatedcertificate', 'course_id') + + # Deleting field 'GeneratedCertificate.key' + db.delete_column('certificates_generatedcertificate', 'key') + + + # Changing field 'GeneratedCertificate.grade' + db.alter_column('certificates_generatedcertificate', 'grade', self.gf('django.db.models.fields.CharField')(max_length=5, null=True)) + + # Changing field 'GeneratedCertificate.certificate_id' + db.alter_column('certificates_generatedcertificate', 'certificate_id', self.gf('django.db.models.fields.CharField')(max_length=32, null=True)) + + # Changing field 'GeneratedCertificate.download_url' + db.alter_column('certificates_generatedcertificate', 'download_url', self.gf('django.db.models.fields.CharField')(max_length=128, null=True)) + + # Changing field 'GeneratedCertificate.graded_download_url' + db.alter_column('certificates_generatedcertificate', 'graded_download_url', self.gf('django.db.models.fields.CharField')(max_length=128, null=True)) + + # Changing field 'GeneratedCertificate.graded_certificate_id' + db.alter_column('certificates_generatedcertificate', 'graded_certificate_id', self.gf('django.db.models.fields.CharField')(max_length=32, null=True)) + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}), + 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), + 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}), + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}), + 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), + 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}), + 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}), + 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}), + 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}), + 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}), + 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) + }, + 'certificates.generatedcertificate': { + 'Meta': {'object_name': 'GeneratedCertificate'}, + 'certificate_id': ('django.db.models.fields.CharField', [], {'default': 'False', 'max_length': '32'}), + 'course_id': ('django.db.models.fields.CharField', [], {'default': 'False', 'max_length': '255'}), + 'download_url': ('django.db.models.fields.CharField', [], {'default': 'False', 'max_length': '128'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'grade': ('django.db.models.fields.CharField', [], {'default': 'False', 'max_length': '5'}), + 'graded_certificate_id': ('django.db.models.fields.CharField', [], {'default': 'False', 'max_length': '32'}), + 'graded_download_url': ('django.db.models.fields.CharField', [], {'default': 'False', 'max_length': '128'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'default': 'False', 'max_length': '32'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + } + } + + complete_apps = ['certificates'] \ No newline at end of file From b326b83fb65edff65b1ad4634c216d0fcddb2d07 Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Thu, 1 Nov 2012 16:34:51 -0400 Subject: [PATCH 250/308] Adding XQueueCertificate interface. Adding, removing and updating certs --- lms/djangoapps/certificates/queue.py | 88 ++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 lms/djangoapps/certificates/queue.py diff --git a/lms/djangoapps/certificates/queue.py b/lms/djangoapps/certificates/queue.py new file mode 100644 index 0000000000..e7cdf31c51 --- /dev/null +++ b/lms/djangoapps/certificates/queue.py @@ -0,0 +1,88 @@ +from django.utils.simplejson import dumps +from django.core.management.base import BaseCommand, CommandError +from certificates.models import GeneratedCertificate +from certificates.models import certificate_status_for_student +from courseware import grades, courses +from django.contrib.auth.models import User +from django.test.client import RequestFactory +from pprint import pprint +from capa.xqueue_interface import XQueueInterface +from capa.xqueue_interface import make_xheader, make_hashkey +from django.conf import settings +from requests.auth import HTTPBasicAuth +from student.models import UserProfile +import json +import random +import logging + + +def add_cert_to_queue(student, course_id, xqueue_interface, request=None): + """ + Update or create a new GeneratedCertificates: + + If certificate generation is in progress this function will + return None. + + If certificate generation was completed for the user this + will add a request to delete the existing certificate. + + A new certificate request will be made if the student's + grade is not None + """ + log = logging.getLogger("mitx.certificates") + if request is None: + factory = RequestFactory() + request = factory.get('/') + + cert_status = certificate_status_for_student(student, course_id) + if cert_status['status'] == 'generating': + return None + + if cert_status['status'] == 'downloadable': + generated_certificate = GeneratedCertificate.objects.get( + user=student, course_id=course_id) + generated_certificate.status = 'unavailable' + key = generated_certificate.key + username = generated_certificate.user.username + generated_certificate.save() + + contents = { + 'remove': True, + 'verify_uuid': cert.verify_uuid, + 'download_uuid': cert.download_uuid, + 'key': cert.key, + 'username': cert.user.username + } + xheader = make_xheader('http://sandbox-jrjarvis-001.m.edx.org/certificate', key, 'test-pull') + (error, msg) = xqueue_interface.send_to_queue(header=xheader, + body=json.dumps(contents)) + + # grade the student + course = courses.get_course_by_id(course_id) + grade = grades.grade(student, request, course) + + if grade['grade'] is not None: + cert, created = GeneratedCertificate.objects.get_or_create( + user=student, course_id=course_id) + profile = UserProfile.objects.get(user=student) + + key = make_hashkey(random.random()) + + cert.status = 'generating' + cert.grade = grade['percent'] + cert.user = student + cert.course_id = course_id + cert.key = key + cert.save() + + contents = { + 'username': student.username, + 'course_id': course_id, + 'name': profile.name, + } + xheader = make_xheader('http://sandbox-jrjarvis-001.m.edx.org/update_certificate', key, 'test-pull') + (error, msg) = xqueue_interface.send_to_queue(header=xheader, + body=json.dumps(contents)) + if error: + log.critical('Unable to send message') + From 29ed95c1478c2745d3716be889221c877736da31 Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Thu, 1 Nov 2012 16:38:36 -0400 Subject: [PATCH 251/308] "ungenerated_certs" command update Updated for testing (for now) This will eventually be run periodically and/or server as a way to generate certificate requests from the commandline --- .../management/commands/ungenerated_certs.py | 75 +++++++------------ 1 file changed, 25 insertions(+), 50 deletions(-) diff --git a/lms/djangoapps/certificates/management/commands/ungenerated_certs.py b/lms/djangoapps/certificates/management/commands/ungenerated_certs.py index 947af913dd..86bef18c76 100644 --- a/lms/djangoapps/certificates/management/commands/ungenerated_certs.py +++ b/lms/djangoapps/certificates/management/commands/ungenerated_certs.py @@ -1,71 +1,46 @@ from django.utils.simplejson import dumps from django.core.management.base import BaseCommand, CommandError from certificates.models import GeneratedCertificate +from certificates.models import certificate_status_for_student +from certificates.queue import XQueueCertInterface from courseware import grades, courses from django.contrib.auth.models import User from django.test.client import RequestFactory -from profilehooks import profile -import cProfile -from pprint import pprint from capa.xqueue_interface import XQueueInterface -from capa.xqueue_interface import make_xheader +from capa.xqueue_interface import make_xheader, make_hashkey from django.conf import settings from requests.auth import HTTPBasicAuth +from student.models import UserProfile +import json +import random +import logging class Command(BaseCommand): help = """ - This command finds all users that have not been graded - for a single course. - It returns a json formatted list of users and their user ids + Find all students that have need certificates + and put certificate requests on the queue """ -# @profile - def _grade(self,student, request, course): - grades.grade(student, request, course) - def handle(self, *args, **options): - factory = RequestFactory() + course_id = 'BerkeleyX/CS169.1x/2012_Fall' course = courses.get_course_by_id(course_id) - if settings.XQUEUE_INTERFACE.get('basic_auth') is not None: - requests_auth = HTTPBasicAuth( - *settings.XQUEUE_INTERFACE['basic_auth']) - else: - requests_auth = None - - xqueue_interface = XQueueInterface( - settings.XQUEUE_INTERFACE['url'], - settings.XQUEUE_INTERFACE['django_auth'], - requests_auth, - ) - - header = make_xheader('/certificate', 'foo', 'test-pull') - print "Sending test message to queue" - xqueue_interface.send_to_queue(header, { 'test': 'foo' }) - - #enrolled_students = User.objects.filter( - # courseenrollment__course_id=course_id).prefetch_related( - # "groups").order_by('username') - #generated_certificates = GeneratedCertificate.objects.filter( - # course_id=course_id) - #request = factory.get('/') - #student = User.objects.get(username='03199618') - #print "total students: {0}".format(len(enrolled_students)) - #count = 0 - #for student in enrolled_students: - # count += 1 - # if count % 1000 == 0: - # print "{0}/{1}".format(count, len(enrolled_students)) - # grades.grade(student, request, course) - - #for student in enrolled_students: - # g = grades.grade(student, request, course) - # if g['grade'] is not None: - # print str(student) - # pprint(g) - # break - + enrolled_students = User.objects.filter( + courseenrollment__course_id=course_id).prefetch_related( + "groups").order_by('username') + xq = XQueueCertInterface() + # delete all entries + for c in GeneratedCertificate.objects.all(): + c.delete() + count = 0 + for student in enrolled_students: + ret = xq.add_cert_to_queue(student, course_id) + if ret == 'generating': + print 'generating for {0}'.format(student) + count += 1 + if count > 10: + break From 416b5458a6106a2596381cedc4528b3026650585 Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Thu, 1 Nov 2012 16:39:21 -0400 Subject: [PATCH 252/308] Certificate model for tracking certificate statuses --- lms/djangoapps/certificates/models.py | 85 +++++++++++++-------------- 1 file changed, 41 insertions(+), 44 deletions(-) diff --git a/lms/djangoapps/certificates/models.py b/lms/djangoapps/certificates/models.py index eacd5b7977..7541d31ef5 100644 --- a/lms/djangoapps/certificates/models.py +++ b/lms/djangoapps/certificates/models.py @@ -7,71 +7,68 @@ Certificates are created for a student and an offering of a course. When a certificate is generated, a unique ID is generated so that the certificate can be verified later. The ID is a UUID4, so that -it can't be easily guessed and so that it is unique. Even though -we save these generated certificates (for later verification), we -also record the UUID so that if we regenerate the certificate it -will have the same UUID. +it can't be easily guessed and so that it is unique. Certificates are generated in batches by a cron job, when a certificate is available for download the GeneratedCertificate table is updated with information that will be displayed on the course overview page. - ''' +class CertificateStatuses(object): + unavailable='unavailable' + generating='generating' + regenerating='regenerating' + deleting='deleting' + deleted='deleted' + downloadable='downloadable' + error='error' class GeneratedCertificate(models.Model): user = models.ForeignKey(User) - course_id = models.CharField(max_length=255, default=False) - certificate_id = models.CharField(max_length=32, default=False) - graded_certificate_id = models.CharField(max_length=32, default=False) + course_id = models.CharField(max_length=255, blank=True, default='') + verify_uuid = models.CharField(max_length=32, blank=True, default='') + download_uuid = models.CharField(max_length=32, blank=True, default='') + download_url = models.CharField(max_length=128, blank=True, default='') + grade = models.CharField(max_length=5, blank=True, default='') + key = models.CharField(max_length=32, blank=True, default='') + distinction = models.BooleanField(default=False) + status = models.CharField(max_length=32, default='unavailable') - download_url = models.CharField(max_length=128, default=False) - graded_download_url = models.CharField(max_length=128, default=False) - grade = models.CharField(max_length=5, default=False) - key = models.CharField(max_length=32, default=False) + class Meta: + unique_together= (('user', 'course_id'),) - # enabled should only be true if the student has earned a passing grade - # in the course. - enabled = models.BooleanField(default=False) - - -def certificate_state_for_student(student): +def certificate_status_for_student(student, course_id): ''' - This returns a dictionary with a key for state, and other information. - The state is one of the following: + This returns a dictionary with a key for status, and other information. + The status is one of the following: unavailable - A student is not eligible for a certificate. - generating - A student has requested a certificate, - but it is not generated yet. - downloadable - The certificate has been requested and is - available for download. + generating - A request has been made to generate a certificate, + but it has not been generated yet. + regenerating - A request has been made to regenerate a certificate, + but it has not been generated yet. + deleting - A request has been made to delete a certificate. + + deleted - The certificate has been deleted. + downloadable - The certificate is available for download. - If the state is "downloadable", the dictionary also contains - "download_url" and "graded_download_url". + If the status is "downloadable", the dictionary also contains + "download_url". ''' try: generated_certificate = GeneratedCertificate.objects.get( - user=student) - if generated_certificate.enabled: - if generated_certificate.download_url: - return { - 'state': 'downloadable', - 'download_url': - generated_certificate.download_url, - 'graded_download_url': - generated_certificate.graded_download_url - } - else: - return {'state': 'generating'} - else: - # If enabled=False, there is no certificate available - # Our output will be the same as if the - # GeneratedCertificate did not exist - pass + user=student, course_id=course_id) + if generated_certificate.status == CertificateStatuses.downloadable: + return { + 'status': CertificateStatuses.downloadable, + 'download_url': generated_certificate.download_url, + } + else: + return {'status': generated_certificate.status} except GeneratedCertificate.DoesNotExist: pass - return {'state': 'unavailable'} + return {'status': 'unavailable'} From 0ef54cdeb8a6cd8b7250a24b19700da06de07e3c Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Thu, 1 Nov 2012 16:40:40 -0400 Subject: [PATCH 253/308] Certificate interface to xqueue Add, remove or update and existing certificate --- lms/djangoapps/certificates/queue.py | 238 ++++++++++++++++++++------- 1 file changed, 177 insertions(+), 61 deletions(-) diff --git a/lms/djangoapps/certificates/queue.py b/lms/djangoapps/certificates/queue.py index e7cdf31c51..c254c19ebb 100644 --- a/lms/djangoapps/certificates/queue.py +++ b/lms/djangoapps/certificates/queue.py @@ -2,87 +2,203 @@ from django.utils.simplejson import dumps from django.core.management.base import BaseCommand, CommandError from certificates.models import GeneratedCertificate from certificates.models import certificate_status_for_student +from certificates.models import CertificateStatuses as status + from courseware import grades, courses from django.contrib.auth.models import User from django.test.client import RequestFactory -from pprint import pprint from capa.xqueue_interface import XQueueInterface from capa.xqueue_interface import make_xheader, make_hashkey from django.conf import settings from requests.auth import HTTPBasicAuth from student.models import UserProfile +from django.conf import settings + import json import random import logging +class XQueueCertInterface(object): -def add_cert_to_queue(student, course_id, xqueue_interface, request=None): - """ - Update or create a new GeneratedCertificates: - - If certificate generation is in progress this function will - return None. - - If certificate generation was completed for the user this - will add a request to delete the existing certificate. - - A new certificate request will be made if the student's - grade is not None - """ log = logging.getLogger("mitx.certificates") - if request is None: - factory = RequestFactory() - request = factory.get('/') - cert_status = certificate_status_for_student(student, course_id) - if cert_status['status'] == 'generating': - return None + def __init__(self, request=None): - if cert_status['status'] == 'downloadable': - generated_certificate = GeneratedCertificate.objects.get( - user=student, course_id=course_id) - generated_certificate.status = 'unavailable' - key = generated_certificate.key - username = generated_certificate.user.username - generated_certificate.save() + if settings.XQUEUE_INTERFACE.get('basic_auth') is not None: + requests_auth = HTTPBasicAuth( + *settings.XQUEUE_INTERFACE['basic_auth']) + else: + requests_auth = None - contents = { - 'remove': True, - 'verify_uuid': cert.verify_uuid, - 'download_uuid': cert.download_uuid, - 'key': cert.key, - 'username': cert.user.username - } - xheader = make_xheader('http://sandbox-jrjarvis-001.m.edx.org/certificate', key, 'test-pull') - (error, msg) = xqueue_interface.send_to_queue(header=xheader, - body=json.dumps(contents)) + if request is None: + factory = RequestFactory() + self.request = factory.get('/') + else: + self.request = request - # grade the student - course = courses.get_course_by_id(course_id) - grade = grades.grade(student, request, course) - if grade['grade'] is not None: - cert, created = GeneratedCertificate.objects.get_or_create( - user=student, course_id=course_id) - profile = UserProfile.objects.get(user=student) + self.xqueue_interface = XQueueInterface( + settings.XQUEUE_INTERFACE['url'], + settings.XQUEUE_INTERFACE['django_auth'], + requests_auth, + ) - key = make_hashkey(random.random()) - cert.status = 'generating' - cert.grade = grade['percent'] - cert.user = student - cert.course_id = course_id - cert.key = key - cert.save() + def regen_cert(self, student, course_id): + """ - contents = { - 'username': student.username, - 'course_id': course_id, - 'name': profile.name, - } - xheader = make_xheader('http://sandbox-jrjarvis-001.m.edx.org/update_certificate', key, 'test-pull') - (error, msg) = xqueue_interface.send_to_queue(header=xheader, - body=json.dumps(contents)) - if error: - log.critical('Unable to send message') + Arguments: + student - User.object + course_id - courseenrollment.course_id (string) + Removes certificate for a student, will change + the certificate status to 'regenerating'. + Will invalidate the old certificate and generate + a new one. + + When completed the certificate status will change + to 'downloadable' + + Returns the certificate status. + + """ + + VALID_STATUSES = [status.downloadable] + + cert_status = certificate_status_for_student( + student, course_id)['status'] + + if cert_status in VALID_STATUSES: + + profile = UserProfile.objects.get(user=student) + + cert = GeneratedCertificate.objects.get( + user=student, course_id=course_id) + cert.status = status.regenerating + cert.save() + + contents = { + 'action': 'regen', + 'remove_verify_uuid': cert.verify_uuid, + 'remove_download_uuid': cert.download_uuid, + 'username': cert.user.username, + 'course_id': cert.course_id, + 'name': profile.name, + } + + + key = cert.key + xheader = make_xheader('http://sandbox-jrjarvis-001.m.edx.org/certificate', key, 'test-pull') + (error, msg) = self.xqueue_interface.send_to_queue(header=xheader, + body=json.dumps(contents)) + + return cert_status + + + def remove_cert(self, student, course_id): + """ + + Arguments: + student - User.object + course_id - courseenrollment.course_id (string) + + Removes certificate for a student, will change + the certificate status to 'deleting'. + + When completed the certificate status will change + to 'deleted'. + + Returns the certificate status. + + """ + + VALID_STATUSES = [status.downloadable] + + cert_status = certificate_status_for_student( + student, course_id)['status'] + + if cert_status in VALID_STATUSES: + + cert = GeneratedCertificate.objects.get( + user=student, course_id=course_id) + username = cert.user.username + cert.status = status.deleting + cert.save() + + contents = { + 'action': 'remove', + 'remove_verify_uuid': cert.verify_uuid, + 'remove_download_uuid': cert.download_uuid, + 'username': cert.user.username, + } + + + key = cert.key + xheader = make_xheader('http://sandbox-jrjarvis-001.m.edx.org/certificate', key, 'test-pull') + (error, msg) = self.xqueue_interface.send_to_queue(header=xheader, + body=json.dumps(contents)) + + return cert_status + + + def add_cert_to_queue(self, student, course_id): + """ + + Arguments: + student - User.object + course_id - courseenrollment.course_id (string) + + Adds a new certificate request to the queue only if + the current certificate status is 'unavailable' or + 'deleted' and the student has a passing grade for + the course. + + When completed the certificate status will change + to 'downloadable'. + + If the current status is 'generating', 'regenerating' + or 'deleting' this function will return that status + + Returns 'unavailable' if the student is eligible for + a certificate but does not have a passing grade. + + """ + + VALID_STATUSES = [status.unavailable, status.deleted] + + cert_status = certificate_status_for_student( + student, course_id)['status'] + + + if cert_status in VALID_STATUSES: + # grade the student + course = courses.get_course_by_id(course_id) + grade = grades.grade(student, self.request, course) + + if grade['grade'] is not None: + cert_status = status.generating + cert, created = GeneratedCertificate.objects.get_or_create( + user=student, course_id=course_id) + profile = UserProfile.objects.get(user=student) + + key = make_hashkey(random.random()) + cert.status = cert_status + cert.grade = grade['percent'] + cert.user = student + cert.course_id = course_id + cert.key = key + cert.save() + + contents = { + 'action': 'create', + 'username': student.username, + 'course_id': course_id, + 'name': profile.name, + } + xheader = make_xheader('http://sandbox-jrjarvis-001.m.edx.org/update_certificate?{0}'.format(key), key, 'test-pull') + (error, msg) = self.xqueue_interface.send_to_queue( + header=xheader, body=json.dumps(contents)) + if error: + log.critical('Unable to send message') + + return cert_status From fceed0fc70ba70e8076545c04f9d4dcf56ffa19c Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Thu, 1 Nov 2012 16:41:22 -0400 Subject: [PATCH 254/308] view for the certificate callback URL --- lms/djangoapps/certificates/views.py | 53 ++++++++++++++++++---------- lms/urls.py | 3 ++ 2 files changed, 37 insertions(+), 19 deletions(-) diff --git a/lms/djangoapps/certificates/views.py b/lms/djangoapps/certificates/views.py index d701794b6d..b71b648aec 100644 --- a/lms/djangoapps/certificates/views.py +++ b/lms/djangoapps/certificates/views.py @@ -1,10 +1,12 @@ import logging from certificates.models import GeneratedCertificate -from pprint import pprint +from django.views.decorators.csrf import csrf_exempt +from django.http import HttpResponse +import json log = logging.getLogger("mitx.certificates") - +@csrf_exempt def update_certificate(request): """ Will update GeneratedCertificate for a new certificate or @@ -12,20 +14,33 @@ def update_certificate(request): """ if request.method == "POST": - pprint(request) -# user = request.POST.get('user') -# try: -# generated_certificate = GeneratedCertificate.objects.get( -# key=key) -# except GeneratedCertificate.DoesNotExist: -# generated_certificate = GeneratedCertificate(user=user) -# -# enabled = request.POST.get('enabled') -# enabled = True if enabled == 'True' else False -# generated_certificate.grade = request.POST.get('grade') -# generated_certificate.download_url = request.POST.get('download_url') -# generated_certificate.graded_download_url = request.POST.get( -# 'graded_download_url') -# generated_certificate.course_id = request.POST.get('course_id') -# generated_certificate.enabled = enabled -# generated_certificate.save() + + xqueue_body = json.loads(request.POST.get('xqueue_body')) + xqueue_header = json.loads(request.POST.get('xqueue_header')) + + try: + cert = GeneratedCertificate.objects.get( + user__username=xqueue_body['username'], + course_id=xqueue_body['course_id'], + key=xqueue_header['lms_key']) + + except GeneratedCertificate.DoesNotExist: + log.critical('Unable to lookup certificate\n' + 'xqueue_body: {0}\n' + 'xqueue_header: {1}'.format( + xqueue_body, xqueue_header)) + + return HttpResponse(json.dumps({ + 'return_code': 1, + 'content': 'unable to lookup key'}), + mimetype='application/json') + + cert.download_uuid = xqueue_body['download_uuid'] + cert.verify_uuid = xqueue_body['download_uuid'] + cert.download_url = xqueue_body['url'] + cert.status = 'downloadable' + cert.save() + return HttpResponse(json.dumps({'return_code': 0}), + mimetype='application/json') + + diff --git a/lms/urls.py b/lms/urls.py index 4141a5e6b3..ea663aeaf8 100644 --- a/lms/urls.py +++ b/lms/urls.py @@ -4,6 +4,9 @@ from django.conf.urls.static import static import django.contrib.auth.views urlpatterns = ('', + # certificate view + + url(r'^update_certificate$', 'certificates.views.update_certificate'), url(r'^$', 'branding.views.index', name="root"), # Main marketing page, or redirect to courseware url(r'^dashboard$', 'student.views.dashboard', name="dashboard"), From 8c2e55676b32bb982c2fb39ecf0f675b61f98fa7 Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Thu, 1 Nov 2012 17:01:53 -0400 Subject: [PATCH 255/308] Cleanup --- lms/djangoapps/certificates/models.py | 27 ++++++++++++---------- lms/djangoapps/certificates/queue.py | 33 ++++++++++++--------------- lms/djangoapps/certificates/views.py | 5 ++-- 3 files changed, 31 insertions(+), 34 deletions(-) diff --git a/lms/djangoapps/certificates/models.py b/lms/djangoapps/certificates/models.py index 7541d31ef5..7fdea9c868 100644 --- a/lms/djangoapps/certificates/models.py +++ b/lms/djangoapps/certificates/models.py @@ -7,7 +7,7 @@ Certificates are created for a student and an offering of a course. When a certificate is generated, a unique ID is generated so that the certificate can be verified later. The ID is a UUID4, so that -it can't be easily guessed and so that it is unique. +it can't be easily guessed and so that it is unique. Certificates are generated in batches by a cron job, when a certificate is available for download the GeneratedCertificate @@ -16,14 +16,16 @@ on the course overview page. ''' + class CertificateStatuses(object): - unavailable='unavailable' - generating='generating' - regenerating='regenerating' - deleting='deleting' - deleted='deleted' - downloadable='downloadable' - error='error' + unavailable = 'unavailable' + generating = 'generating' + regenerating = 'regenerating' + deleting = 'deleting' + deleted = 'deleted' + downloadable = 'downloadable' + error = 'error' + class GeneratedCertificate(models.Model): user = models.ForeignKey(User) @@ -37,7 +39,8 @@ class GeneratedCertificate(models.Model): status = models.CharField(max_length=32, default='unavailable') class Meta: - unique_together= (('user', 'course_id'),) + unique_together = (('user', 'course_id'),) + def certificate_status_for_student(student, course_id): ''' @@ -48,9 +51,9 @@ def certificate_status_for_student(student, course_id): generating - A request has been made to generate a certificate, but it has not been generated yet. regenerating - A request has been made to regenerate a certificate, - but it has not been generated yet. + but it has not been generated yet. deleting - A request has been made to delete a certificate. - + deleted - The certificate has been deleted. downloadable - The certificate is available for download. @@ -67,7 +70,7 @@ def certificate_status_for_student(student, course_id): 'status': CertificateStatuses.downloadable, 'download_url': generated_certificate.download_url, } - else: + else: return {'status': generated_certificate.status} except GeneratedCertificate.DoesNotExist: pass diff --git a/lms/djangoapps/certificates/queue.py b/lms/djangoapps/certificates/queue.py index c254c19ebb..5aad41a8d4 100644 --- a/lms/djangoapps/certificates/queue.py +++ b/lms/djangoapps/certificates/queue.py @@ -1,27 +1,21 @@ -from django.utils.simplejson import dumps -from django.core.management.base import BaseCommand, CommandError from certificates.models import GeneratedCertificate from certificates.models import certificate_status_for_student from certificates.models import CertificateStatuses as status from courseware import grades, courses -from django.contrib.auth.models import User from django.test.client import RequestFactory from capa.xqueue_interface import XQueueInterface from capa.xqueue_interface import make_xheader, make_hashkey from django.conf import settings from requests.auth import HTTPBasicAuth from student.models import UserProfile -from django.conf import settings import json import random -import logging + class XQueueCertInterface(object): - log = logging.getLogger("mitx.certificates") - def __init__(self, request=None): if settings.XQUEUE_INTERFACE.get('basic_auth') is not None: @@ -36,14 +30,12 @@ class XQueueCertInterface(object): else: self.request = request - self.xqueue_interface = XQueueInterface( settings.XQUEUE_INTERFACE['url'], settings.XQUEUE_INTERFACE['django_auth'], requests_auth, ) - def regen_cert(self, student, course_id): """ @@ -86,15 +78,16 @@ class XQueueCertInterface(object): 'name': profile.name, } - key = cert.key - xheader = make_xheader('http://sandbox-jrjarvis-001.m.edx.org/certificate', key, 'test-pull') + # TODO - this needs to be read from settings + xheader = make_xheader( + 'http://sandbox-jrjarvis-001.m.edx.org/certificate', + key, 'test-pull') (error, msg) = self.xqueue_interface.send_to_queue(header=xheader, body=json.dumps(contents)) return cert_status - def remove_cert(self, student, course_id): """ @@ -121,7 +114,6 @@ class XQueueCertInterface(object): cert = GeneratedCertificate.objects.get( user=student, course_id=course_id) - username = cert.user.username cert.status = status.deleting cert.save() @@ -132,15 +124,16 @@ class XQueueCertInterface(object): 'username': cert.user.username, } - key = cert.key - xheader = make_xheader('http://sandbox-jrjarvis-001.m.edx.org/certificate', key, 'test-pull') + # TODO - this needs to be read from settings + xheader = make_xheader( + 'http://sandbox-jrjarvis-001.m.edx.org/certificate', + key, 'test-pull') (error, msg) = self.xqueue_interface.send_to_queue(header=xheader, body=json.dumps(contents)) return cert_status - def add_cert_to_queue(self, student, course_id): """ @@ -169,7 +162,6 @@ class XQueueCertInterface(object): cert_status = certificate_status_for_student( student, course_id)['status'] - if cert_status in VALID_STATUSES: # grade the student course = courses.get_course_by_id(course_id) @@ -195,10 +187,13 @@ class XQueueCertInterface(object): 'course_id': course_id, 'name': profile.name, } - xheader = make_xheader('http://sandbox-jrjarvis-001.m.edx.org/update_certificate?{0}'.format(key), key, 'test-pull') + # TODO - this needs to be read from settings + xheader = make_xheader( + 'http://sandbox-jrjarvis-001.m.edx.org/' + 'update_certificate?{0}'.format(key), key, 'test-pull') (error, msg) = self.xqueue_interface.send_to_queue( header=xheader, body=json.dumps(contents)) if error: - log.critical('Unable to send message') + raise Exception('Unable to send queue message') return cert_status diff --git a/lms/djangoapps/certificates/views.py b/lms/djangoapps/certificates/views.py index b71b648aec..450eb9e181 100644 --- a/lms/djangoapps/certificates/views.py +++ b/lms/djangoapps/certificates/views.py @@ -6,6 +6,7 @@ import json log = logging.getLogger("mitx.certificates") + @csrf_exempt def update_certificate(request): """ @@ -25,7 +26,7 @@ def update_certificate(request): key=xqueue_header['lms_key']) except GeneratedCertificate.DoesNotExist: - log.critical('Unable to lookup certificate\n' + log.critical('Unable to lookup certificate\n' 'xqueue_body: {0}\n' 'xqueue_header: {1}'.format( xqueue_body, xqueue_header)) @@ -42,5 +43,3 @@ def update_certificate(request): cert.save() return HttpResponse(json.dumps({'return_code': 0}), mimetype='application/json') - - From 84ff92d4d9f57a908f8ca8770cee36623305887b Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Thu, 1 Nov 2012 17:05:09 -0400 Subject: [PATCH 256/308] new migrations for certificates --- ...icate_graded_download_url__del_field_ge.py | 95 +++++++++++++++++++ ...icate_enabled__add_field_generatedcerti.py | 81 ++++++++++++++++ ...icate_certificate_id__add_field_generat.py | 90 ++++++++++++++++++ 3 files changed, 266 insertions(+) create mode 100644 lms/djangoapps/certificates/migrations/0009_auto__del_field_generatedcertificate_graded_download_url__del_field_ge.py create mode 100644 lms/djangoapps/certificates/migrations/0010_auto__del_field_generatedcertificate_enabled__add_field_generatedcerti.py create mode 100644 lms/djangoapps/certificates/migrations/0011_auto__del_field_generatedcertificate_certificate_id__add_field_generat.py diff --git a/lms/djangoapps/certificates/migrations/0009_auto__del_field_generatedcertificate_graded_download_url__del_field_ge.py b/lms/djangoapps/certificates/migrations/0009_auto__del_field_generatedcertificate_graded_download_url__del_field_ge.py new file mode 100644 index 0000000000..40637452cc --- /dev/null +++ b/lms/djangoapps/certificates/migrations/0009_auto__del_field_generatedcertificate_graded_download_url__del_field_ge.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Deleting field 'GeneratedCertificate.graded_download_url' + db.delete_column('certificates_generatedcertificate', 'graded_download_url') + + # Deleting field 'GeneratedCertificate.graded_certificate_id' + db.delete_column('certificates_generatedcertificate', 'graded_certificate_id') + + # Adding field 'GeneratedCertificate.distinction' + db.add_column('certificates_generatedcertificate', 'distinction', + self.gf('django.db.models.fields.BooleanField')(default=False), + keep_default=False) + + # Adding unique constraint on 'GeneratedCertificate', fields ['course_id', 'user'] + db.create_unique('certificates_generatedcertificate', ['course_id', 'user_id']) + + + def backwards(self, orm): + # Removing unique constraint on 'GeneratedCertificate', fields ['course_id', 'user'] + db.delete_unique('certificates_generatedcertificate', ['course_id', 'user_id']) + + # Adding field 'GeneratedCertificate.graded_download_url' + db.add_column('certificates_generatedcertificate', 'graded_download_url', + self.gf('django.db.models.fields.CharField')(default=False, max_length=128), + keep_default=False) + + # Adding field 'GeneratedCertificate.graded_certificate_id' + db.add_column('certificates_generatedcertificate', 'graded_certificate_id', + self.gf('django.db.models.fields.CharField')(default=False, max_length=32), + keep_default=False) + + # Deleting field 'GeneratedCertificate.distinction' + db.delete_column('certificates_generatedcertificate', 'distinction') + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + 'certificates.generatedcertificate': { + 'Meta': {'unique_together': "(('user', 'course_id'),)", 'object_name': 'GeneratedCertificate'}, + 'certificate_id': ('django.db.models.fields.CharField', [], {'default': 'False', 'max_length': '32'}), + 'course_id': ('django.db.models.fields.CharField', [], {'default': 'False', 'max_length': '255'}), + 'distinction': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'download_url': ('django.db.models.fields.CharField', [], {'default': 'False', 'max_length': '128'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'grade': ('django.db.models.fields.CharField', [], {'default': 'False', 'max_length': '5'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'default': 'False', 'max_length': '32'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + } + } + + complete_apps = ['certificates'] \ No newline at end of file diff --git a/lms/djangoapps/certificates/migrations/0010_auto__del_field_generatedcertificate_enabled__add_field_generatedcerti.py b/lms/djangoapps/certificates/migrations/0010_auto__del_field_generatedcertificate_enabled__add_field_generatedcerti.py new file mode 100644 index 0000000000..5970c96f6b --- /dev/null +++ b/lms/djangoapps/certificates/migrations/0010_auto__del_field_generatedcertificate_enabled__add_field_generatedcerti.py @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Deleting field 'GeneratedCertificate.enabled' + db.delete_column('certificates_generatedcertificate', 'enabled') + + # Adding field 'GeneratedCertificate.status' + db.add_column('certificates_generatedcertificate', 'status', + self.gf('django.db.models.fields.CharField')(default='unavailable', max_length=32), + keep_default=False) + + + def backwards(self, orm): + # Adding field 'GeneratedCertificate.enabled' + db.add_column('certificates_generatedcertificate', 'enabled', + self.gf('django.db.models.fields.BooleanField')(default=False), + keep_default=False) + + # Deleting field 'GeneratedCertificate.status' + db.delete_column('certificates_generatedcertificate', 'status') + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + 'certificates.generatedcertificate': { + 'Meta': {'unique_together': "(('user', 'course_id'),)", 'object_name': 'GeneratedCertificate'}, + 'certificate_id': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '32', 'blank': 'True'}), + 'course_id': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'distinction': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'download_url': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'grade': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '5', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '32', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "'unavailable'", 'max_length': '32'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + } + } + + complete_apps = ['certificates'] \ No newline at end of file diff --git a/lms/djangoapps/certificates/migrations/0011_auto__del_field_generatedcertificate_certificate_id__add_field_generat.py b/lms/djangoapps/certificates/migrations/0011_auto__del_field_generatedcertificate_certificate_id__add_field_generat.py new file mode 100644 index 0000000000..36d6e5d4f3 --- /dev/null +++ b/lms/djangoapps/certificates/migrations/0011_auto__del_field_generatedcertificate_certificate_id__add_field_generat.py @@ -0,0 +1,90 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Deleting field 'GeneratedCertificate.certificate_id' + db.delete_column('certificates_generatedcertificate', 'certificate_id') + + # Adding field 'GeneratedCertificate.verify_uuid' + db.add_column('certificates_generatedcertificate', 'verify_uuid', + self.gf('django.db.models.fields.CharField')(default='', max_length=32, blank=True), + keep_default=False) + + # Adding field 'GeneratedCertificate.download_uuid' + db.add_column('certificates_generatedcertificate', 'download_uuid', + self.gf('django.db.models.fields.CharField')(default='', max_length=32, blank=True), + keep_default=False) + + + def backwards(self, orm): + # Adding field 'GeneratedCertificate.certificate_id' + db.add_column('certificates_generatedcertificate', 'certificate_id', + self.gf('django.db.models.fields.CharField')(default='', max_length=32, blank=True), + keep_default=False) + + # Deleting field 'GeneratedCertificate.verify_uuid' + db.delete_column('certificates_generatedcertificate', 'verify_uuid') + + # Deleting field 'GeneratedCertificate.download_uuid' + db.delete_column('certificates_generatedcertificate', 'download_uuid') + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + 'certificates.generatedcertificate': { + 'Meta': {'unique_together': "(('user', 'course_id'),)", 'object_name': 'GeneratedCertificate'}, + 'course_id': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'distinction': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'download_url': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'download_uuid': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '32', 'blank': 'True'}), + 'grade': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '5', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '32', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "'unavailable'", 'max_length': '32'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}), + 'verify_uuid': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '32', 'blank': 'True'}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + } + } + + complete_apps = ['certificates'] \ No newline at end of file From 66c31fe21ab7f7ebd9fa2df029ff7b36ae5c5c82 Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Thu, 1 Nov 2012 20:51:05 -0400 Subject: [PATCH 257/308] Adding logging, reading sitename from settings --- lms/djangoapps/certificates/queue.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/lms/djangoapps/certificates/queue.py b/lms/djangoapps/certificates/queue.py index 5aad41a8d4..44ccb82823 100644 --- a/lms/djangoapps/certificates/queue.py +++ b/lms/djangoapps/certificates/queue.py @@ -12,6 +12,10 @@ from student.models import UserProfile import json import random +import logging + + +logger = logging.getLogger(__name__) class XQueueCertInterface(object): @@ -79,12 +83,14 @@ class XQueueCertInterface(object): } key = cert.key - # TODO - this needs to be read from settings xheader = make_xheader( - 'http://sandbox-jrjarvis-001.m.edx.org/certificate', + 'http://{0}/certificate'.format(settings.SITE_NAME), key, 'test-pull') - (error, msg) = self.xqueue_interface.send_to_queue(header=xheader, - body=json.dumps(contents)) + (error, msg) = self.xqueue_interface.send_to_queue( + header=xheader, body=json.dumps(contents)) + if error: + logger.critical('Unable to add a request to the queue') + raise Exception('Unable to send queue message') return cert_status @@ -125,9 +131,8 @@ class XQueueCertInterface(object): } key = cert.key - # TODO - this needs to be read from settings xheader = make_xheader( - 'http://sandbox-jrjarvis-001.m.edx.org/certificate', + 'http://{0}/certificate'.format(settings.SITE_NAME), key, 'test-pull') (error, msg) = self.xqueue_interface.send_to_queue(header=xheader, body=json.dumps(contents)) @@ -187,13 +192,14 @@ class XQueueCertInterface(object): 'course_id': course_id, 'name': profile.name, } - # TODO - this needs to be read from settings xheader = make_xheader( - 'http://sandbox-jrjarvis-001.m.edx.org/' - 'update_certificate?{0}'.format(key), key, 'test-pull') + 'http://{0}/update_certificate?{1}'.format( + key, settings.SITE_NAME), key, 'test-pull') + (error, msg) = self.xqueue_interface.send_to_queue( header=xheader, body=json.dumps(contents)) if error: + logger.critical('Unable to post results to qserver') raise Exception('Unable to send queue message') return cert_status From f589adcd718ab76dc445894c31568cccf9b25a26 Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Thu, 1 Nov 2012 20:53:03 -0400 Subject: [PATCH 258/308] Comment about basic auth --- lms/djangoapps/certificates/queue.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lms/djangoapps/certificates/queue.py b/lms/djangoapps/certificates/queue.py index 44ccb82823..9ada836ea9 100644 --- a/lms/djangoapps/certificates/queue.py +++ b/lms/djangoapps/certificates/queue.py @@ -22,6 +22,9 @@ class XQueueCertInterface(object): def __init__(self, request=None): + # Get basic auth (username/password) for + # xqueue connection if it's in the settings + if settings.XQUEUE_INTERFACE.get('basic_auth') is not None: requests_auth = HTTPBasicAuth( *settings.XQUEUE_INTERFACE['basic_auth']) From a9b26cb87118d864ea6aeef4b552c281b34b28bc Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Thu, 1 Nov 2012 21:37:02 -0400 Subject: [PATCH 259/308] Cleanup, docstrings, recording name in certificate table --- lms/djangoapps/certificates/models.py | 22 +++++++++ lms/djangoapps/certificates/queue.py | 71 +++++++++++++++++++++------ 2 files changed, 78 insertions(+), 15 deletions(-) diff --git a/lms/djangoapps/certificates/models.py b/lms/djangoapps/certificates/models.py index 7fdea9c868..ac7f8c8028 100644 --- a/lms/djangoapps/certificates/models.py +++ b/lms/djangoapps/certificates/models.py @@ -14,6 +14,27 @@ certificate is available for download the GeneratedCertificate table is updated with information that will be displayed on the course overview page. + +State diagram: + +[deleted,error,unavailable] [error,downloadable] + + + + + | | | + | | | + add_cert regen_cert del_cert + | | | + v v v + [generating] [regenerating] [deleting] + + + + + | | | + certificate certificate certificate + created removed,created deleted + +----------------+-------------+------->[error] + | | | + | | | + v v v + [downloadable] [downloadable] [deleted] + ''' @@ -37,6 +58,7 @@ class GeneratedCertificate(models.Model): key = models.CharField(max_length=32, blank=True, default='') distinction = models.BooleanField(default=False) status = models.CharField(max_length=32, default='unavailable') + name = models.CharField(blank=True, max_length=255) class Meta: unique_together = (('user', 'course_id'),) diff --git a/lms/djangoapps/certificates/queue.py b/lms/djangoapps/certificates/queue.py index 9ada836ea9..1433fa1407 100644 --- a/lms/djangoapps/certificates/queue.py +++ b/lms/djangoapps/certificates/queue.py @@ -19,6 +19,35 @@ logger = logging.getLogger(__name__) class XQueueCertInterface(object): + """ + XQueueCertificateInterface provides an + interface to the xqueue server for + managing student certificates. + + Instantiating an object will create a new + connection to the queue server. + + See models.py for valid state transitions, + summary of methods: + + add_cert: Add a new certificate. Puts a single + request on the queue for the student/course. + Once the certificate is generated a post + will be made to the update_certificate + view which will save the certificate + download URL. + + regen_cert: Regenerate an existing certificate. + For a user that already has a certificate + this will delete the existing one and + generate a new cert. + + + del_cert: Delete an existing certificate + For a user that already has a certificate + this will delete his cert. + + """ def __init__(self, request=None): @@ -45,7 +74,6 @@ class XQueueCertInterface(object): def regen_cert(self, student, course_id): """ - Arguments: student - User.object course_id - courseenrollment.course_id (string) @@ -62,7 +90,7 @@ class XQueueCertInterface(object): """ - VALID_STATUSES = [status.downloadable] + VALID_STATUSES = [status.error, status.downloadable] cert_status = certificate_status_for_student( student, course_id)['status'] @@ -70,11 +98,16 @@ class XQueueCertInterface(object): if cert_status in VALID_STATUSES: profile = UserProfile.objects.get(user=student) + try: + cert = GeneratedCertificate.objects.get( + user=student, course_id=course_id) + except GeneratedCertificate.DoesNotExist: + logger.warning("Attempting to regenerate a certificate" + "for a user that doesn't have one") + raise - cert = GeneratedCertificate.objects.get( - user=student, course_id=course_id) cert.status = status.regenerating - cert.save() + cert.name = profile.name contents = { 'action': 'regen', @@ -94,10 +127,11 @@ class XQueueCertInterface(object): if error: logger.critical('Unable to add a request to the queue') raise Exception('Unable to send queue message') + cert.save() return cert_status - def remove_cert(self, student, course_id): + def del_cert(self, student, course_id): """ Arguments: @@ -114,17 +148,22 @@ class XQueueCertInterface(object): """ - VALID_STATUSES = [status.downloadable] + VALID_STATUSES = [status.error, status.downloadable] cert_status = certificate_status_for_student( student, course_id)['status'] if cert_status in VALID_STATUSES: - cert = GeneratedCertificate.objects.get( - user=student, course_id=course_id) + try: + cert = GeneratedCertificate.objects.get( + user=student, course_id=course_id) + except GeneratedCertificate.DoesNotExist: + logger.warning("Attempting to delete a certificate" + "for a user that doesn't have one") + raise + cert.status = status.deleting - cert.save() contents = { 'action': 'remove', @@ -140,9 +179,10 @@ class XQueueCertInterface(object): (error, msg) = self.xqueue_interface.send_to_queue(header=xheader, body=json.dumps(contents)) + cert.save() return cert_status - def add_cert_to_queue(self, student, course_id): + def add_cert(self, student, course_id): """ Arguments: @@ -150,8 +190,8 @@ class XQueueCertInterface(object): course_id - courseenrollment.course_id (string) Adds a new certificate request to the queue only if - the current certificate status is 'unavailable' or - 'deleted' and the student has a passing grade for + the current certificate status is 'unavailable', 'error' + or 'deleted' and the student has a passing grade for the course. When completed the certificate status will change @@ -165,7 +205,7 @@ class XQueueCertInterface(object): """ - VALID_STATUSES = [status.unavailable, status.deleted] + VALID_STATUSES = [status.unavailable, status.deleted, status.error] cert_status = certificate_status_for_student( student, course_id)['status'] @@ -187,7 +227,7 @@ class XQueueCertInterface(object): cert.user = student cert.course_id = course_id cert.key = key - cert.save() + cert.name = profile.name contents = { 'action': 'create', @@ -204,5 +244,6 @@ class XQueueCertInterface(object): if error: logger.critical('Unable to post results to qserver') raise Exception('Unable to send queue message') + cert.save() return cert_status From df37f111229cfd8e36e3e61d36ec2a92542abd74 Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Thu, 1 Nov 2012 21:40:23 -0400 Subject: [PATCH 260/308] Adding modified and created fields to GeneratedCertificates --- lms/djangoapps/certificates/models.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lms/djangoapps/certificates/models.py b/lms/djangoapps/certificates/models.py index ac7f8c8028..8f62ee85c2 100644 --- a/lms/djangoapps/certificates/models.py +++ b/lms/djangoapps/certificates/models.py @@ -59,6 +59,8 @@ class GeneratedCertificate(models.Model): distinction = models.BooleanField(default=False) status = models.CharField(max_length=32, default='unavailable') name = models.CharField(blank=True, max_length=255) + created_date = models.DateTimeField(auto_now_add=True) + modified_date = models.DateTimeField(auto_now=True) class Meta: unique_together = (('user', 'course_id'),) From cb1489a7cb9ac2fb2b9b6c3a9b3720d1780d13f1 Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Thu, 1 Nov 2012 21:51:10 -0400 Subject: [PATCH 261/308] docstring cleanup, grading for regen_cert --- lms/djangoapps/certificates/queue.py | 94 +++++++++++++--------------- 1 file changed, 45 insertions(+), 49 deletions(-) diff --git a/lms/djangoapps/certificates/queue.py b/lms/djangoapps/certificates/queue.py index 1433fa1407..adccad0633 100644 --- a/lms/djangoapps/certificates/queue.py +++ b/lms/djangoapps/certificates/queue.py @@ -80,13 +80,11 @@ class XQueueCertInterface(object): Removes certificate for a student, will change the certificate status to 'regenerating'. - Will invalidate the old certificate and generate - a new one. - When completed the certificate status will change - to 'downloadable' + Certificate must be in the 'error' or 'downloadable' state + and the student must have a passing grade. - Returns the certificate status. + otherwise it will return the current state """ @@ -96,44 +94,49 @@ class XQueueCertInterface(object): student, course_id)['status'] if cert_status in VALID_STATUSES: + # grade the student + course = courses.get_course_by_id(course_id) + grade = grades.grade(student, self.request, course) - profile = UserProfile.objects.get(user=student) - try: - cert = GeneratedCertificate.objects.get( - user=student, course_id=course_id) - except GeneratedCertificate.DoesNotExist: - logger.warning("Attempting to regenerate a certificate" - "for a user that doesn't have one") - raise + if grade['grade'] is not None: - cert.status = status.regenerating - cert.name = profile.name + profile = UserProfile.objects.get(user=student) + try: + cert = GeneratedCertificate.objects.get( + user=student, course_id=course_id) + except GeneratedCertificate.DoesNotExist: + logger.warning("Attempting to regenerate a certificate" + "for a user that doesn't have one") + raise - contents = { - 'action': 'regen', - 'remove_verify_uuid': cert.verify_uuid, - 'remove_download_uuid': cert.download_uuid, - 'username': cert.user.username, - 'course_id': cert.course_id, - 'name': profile.name, - } + cert.status = status.regenerating + cert.name = profile.name - key = cert.key - xheader = make_xheader( - 'http://{0}/certificate'.format(settings.SITE_NAME), - key, 'test-pull') - (error, msg) = self.xqueue_interface.send_to_queue( - header=xheader, body=json.dumps(contents)) - if error: - logger.critical('Unable to add a request to the queue') - raise Exception('Unable to send queue message') - cert.save() + contents = { + 'action': 'regen', + 'remove_verify_uuid': cert.verify_uuid, + 'remove_download_uuid': cert.download_uuid, + 'username': cert.user.username, + 'course_id': cert.course_id, + 'name': profile.name, + } + + key = cert.key + xheader = make_xheader( + 'http://{0}/certificate'.format(settings.SITE_NAME), + key, 'test-pull') + (error, msg) = self.xqueue_interface.send_to_queue( + header=xheader, body=json.dumps(contents)) + if error: + logger.critical('Unable to add a request to the queue') + raise Exception('Unable to send queue message') + cert.save() return cert_status def del_cert(self, student, course_id): - """ + """ Arguments: student - User.object course_id - courseenrollment.course_id (string) @@ -141,10 +144,8 @@ class XQueueCertInterface(object): Removes certificate for a student, will change the certificate status to 'deleting'. - When completed the certificate status will change - to 'deleted'. - - Returns the certificate status. + Certificate must be in the 'error' or 'downloadable' state + otherwise it will return the current state """ @@ -189,19 +190,14 @@ class XQueueCertInterface(object): student - User.object course_id - courseenrollment.course_id (string) - Adds a new certificate request to the queue only if - the current certificate status is 'unavailable', 'error' - or 'deleted' and the student has a passing grade for - the course. + Request a new certificate for a student. + Will change the certificate status to 'deleting'. - When completed the certificate status will change - to 'downloadable'. + Certificate must be in the 'unavailable', 'error', + or 'deleted' state and the student must have + a passing grade. - If the current status is 'generating', 'regenerating' - or 'deleting' this function will return that status - - Returns 'unavailable' if the student is eligible for - a certificate but does not have a passing grade. + otherwise it will return the current state """ From 5019e2d03cda66b31ff633d272cb2001b3686d1e Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Thu, 1 Nov 2012 21:51:43 -0400 Subject: [PATCH 262/308] cleanup --- .../management/commands/ungenerated_certs.py | 20 ++++--------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/lms/djangoapps/certificates/management/commands/ungenerated_certs.py b/lms/djangoapps/certificates/management/commands/ungenerated_certs.py index 86bef18c76..95f9a94aa4 100644 --- a/lms/djangoapps/certificates/management/commands/ungenerated_certs.py +++ b/lms/djangoapps/certificates/management/commands/ungenerated_certs.py @@ -1,19 +1,7 @@ -from django.utils.simplejson import dumps -from django.core.management.base import BaseCommand, CommandError +from django.core.management.base import BaseCommand from certificates.models import GeneratedCertificate -from certificates.models import certificate_status_for_student from certificates.queue import XQueueCertInterface -from courseware import grades, courses from django.contrib.auth.models import User -from django.test.client import RequestFactory -from capa.xqueue_interface import XQueueInterface -from capa.xqueue_interface import make_xheader, make_hashkey -from django.conf import settings -from requests.auth import HTTPBasicAuth -from student.models import UserProfile -import json -import random -import logging class Command(BaseCommand): @@ -26,19 +14,19 @@ class Command(BaseCommand): def handle(self, *args, **options): course_id = 'BerkeleyX/CS169.1x/2012_Fall' - course = courses.get_course_by_id(course_id) enrolled_students = User.objects.filter( courseenrollment__course_id=course_id).prefetch_related( "groups").order_by('username') xq = XQueueCertInterface() - # delete all entries + + # TODO (this is for debugging, remove) for c in GeneratedCertificate.objects.all(): c.delete() count = 0 for student in enrolled_students: - ret = xq.add_cert_to_queue(student, course_id) + ret = xq.add_cert(student, course_id) if ret == 'generating': print 'generating for {0}'.format(student) count += 1 From 5529eecb85d7e7107158d2057b1c9aefed9bab73 Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Thu, 1 Nov 2012 21:59:51 -0400 Subject: [PATCH 263/308] Separate function for send_to_xqueue --- lms/djangoapps/certificates/queue.py | 39 ++++++++++++---------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/lms/djangoapps/certificates/queue.py b/lms/djangoapps/certificates/queue.py index adccad0633..273ff1e738 100644 --- a/lms/djangoapps/certificates/queue.py +++ b/lms/djangoapps/certificates/queue.py @@ -122,14 +122,7 @@ class XQueueCertInterface(object): } key = cert.key - xheader = make_xheader( - 'http://{0}/certificate'.format(settings.SITE_NAME), - key, 'test-pull') - (error, msg) = self.xqueue_interface.send_to_queue( - header=xheader, body=json.dumps(contents)) - if error: - logger.critical('Unable to add a request to the queue') - raise Exception('Unable to send queue message') + self.__send_to_xqueue(contents, key) cert.save() return cert_status @@ -174,12 +167,7 @@ class XQueueCertInterface(object): } key = cert.key - xheader = make_xheader( - 'http://{0}/certificate'.format(settings.SITE_NAME), - key, 'test-pull') - (error, msg) = self.xqueue_interface.send_to_queue(header=xheader, - body=json.dumps(contents)) - + self.__send_to_xqueue(contents, key) cert.save() return cert_status @@ -231,15 +219,22 @@ class XQueueCertInterface(object): 'course_id': course_id, 'name': profile.name, } - xheader = make_xheader( - 'http://{0}/update_certificate?{1}'.format( - key, settings.SITE_NAME), key, 'test-pull') - (error, msg) = self.xqueue_interface.send_to_queue( - header=xheader, body=json.dumps(contents)) - if error: - logger.critical('Unable to post results to qserver') - raise Exception('Unable to send queue message') + self.__send_to_xqueue(contents, key) cert.save() return cert_status + + def __send_to_xqueue(self, contents, key): + + # TODO - need to read queue name from settings + + xheader = make_xheader( + 'http://{0}/update_certificate?{1}'.format( + key, settings.SITE_NAME), key, 'test-pull') + + (error, msg) = self.xqueue_interface.send_to_queue( + header=xheader, body=json.dumps(contents)) + if error: + logger.critical('Unable to add a request to the queue') + raise Exception('Unable to send queue message') From 0481cf995f63f98eca09986c79017d9e5bc35277 Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Thu, 1 Nov 2012 22:17:05 -0400 Subject: [PATCH 264/308] Updating view for different certificate statuses, error --- lms/djangoapps/certificates/views.py | 30 ++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/lms/djangoapps/certificates/views.py b/lms/djangoapps/certificates/views.py index 450eb9e181..2475492524 100644 --- a/lms/djangoapps/certificates/views.py +++ b/lms/djangoapps/certificates/views.py @@ -1,10 +1,11 @@ import logging from certificates.models import GeneratedCertificate +from certificates.models import CertificateStatuses as status from django.views.decorators.csrf import csrf_exempt from django.http import HttpResponse import json -log = logging.getLogger("mitx.certificates") +logger = logging.getLogger(__name__) @csrf_exempt @@ -12,6 +13,10 @@ def update_certificate(request): """ Will update GeneratedCertificate for a new certificate or modify an existing certificate entry. + + See models.py for a state diagram of certificate states + + This view should only ever be accessed by the xqueue server """ if request.method == "POST": @@ -26,7 +31,7 @@ def update_certificate(request): key=xqueue_header['lms_key']) except GeneratedCertificate.DoesNotExist: - log.critical('Unable to lookup certificate\n' + logger.critical('Unable to lookup certificate\n' 'xqueue_body: {0}\n' 'xqueue_header: {1}'.format( xqueue_body, xqueue_header)) @@ -36,10 +41,23 @@ def update_certificate(request): 'content': 'unable to lookup key'}), mimetype='application/json') - cert.download_uuid = xqueue_body['download_uuid'] - cert.verify_uuid = xqueue_body['download_uuid'] - cert.download_url = xqueue_body['url'] - cert.status = 'downloadable' + if 'error' in xqueue_body: + cert.status = status.error + else: + if cert.state in [status.generating, status.regenerating]: + cert.download_uuid = xqueue_body['download_uuid'] + cert.verify_uuid = xqueue_body['verify_uuid'] + cert.download_url = xqueue_body['url'] + cert.status = status.downloadable + elif cert.state in [status.deleting]: + cert.status = status.deleted + else: + logger.critical('Invalid state for cert update: {0}'.format( + cert.state)) + return HttpResponse(json.dumps({ + 'return_code': 1, + 'content': 'invalid cert state'}), + mimetype='application/json') cert.save() return HttpResponse(json.dumps({'return_code': 0}), mimetype='application/json') From 507794acf5c37b2bc8779bd0e69925acdb189a3d Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Fri, 2 Nov 2012 13:35:56 -0400 Subject: [PATCH 265/308] Adding defaults to created and added fields --- lms/djangoapps/certificates/models.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lms/djangoapps/certificates/models.py b/lms/djangoapps/certificates/models.py index 8f62ee85c2..b9e348da1d 100644 --- a/lms/djangoapps/certificates/models.py +++ b/lms/djangoapps/certificates/models.py @@ -1,6 +1,6 @@ from django.contrib.auth.models import User from django.db import models - +from datetime import datetime ''' Certificates are created for a student and an offering of a course. @@ -59,8 +59,10 @@ class GeneratedCertificate(models.Model): distinction = models.BooleanField(default=False) status = models.CharField(max_length=32, default='unavailable') name = models.CharField(blank=True, max_length=255) - created_date = models.DateTimeField(auto_now_add=True) - modified_date = models.DateTimeField(auto_now=True) + created_date = models.DateTimeField( + auto_now_add=True, default=datetime.now) + modified_date = models.DateTimeField( + auto_now=True, default=datetime.now) class Meta: unique_together = (('user', 'course_id'),) From 8d628ef234729c96846a9296c6a14a5acb374190 Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Fri, 2 Nov 2012 13:38:44 -0400 Subject: [PATCH 266/308] unavailable->CertificateStatuses.unavailable --- lms/djangoapps/certificates/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lms/djangoapps/certificates/models.py b/lms/djangoapps/certificates/models.py index b9e348da1d..a1fd62041c 100644 --- a/lms/djangoapps/certificates/models.py +++ b/lms/djangoapps/certificates/models.py @@ -100,4 +100,4 @@ def certificate_status_for_student(student, course_id): return {'status': generated_certificate.status} except GeneratedCertificate.DoesNotExist: pass - return {'status': 'unavailable'} + return {'status': CertificateStatuses.unavailable} From 8e5d6bd416046cd9744511415082743d9b179d73 Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Sun, 4 Nov 2012 18:56:30 -0500 Subject: [PATCH 267/308] Change 'remove' to 'delete' for consistency --- lms/djangoapps/certificates/queue.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lms/djangoapps/certificates/queue.py b/lms/djangoapps/certificates/queue.py index 273ff1e738..0bb238474b 100644 --- a/lms/djangoapps/certificates/queue.py +++ b/lms/djangoapps/certificates/queue.py @@ -114,8 +114,8 @@ class XQueueCertInterface(object): contents = { 'action': 'regen', - 'remove_verify_uuid': cert.verify_uuid, - 'remove_download_uuid': cert.download_uuid, + 'delete_verify_uuid': cert.verify_uuid, + 'delete_download_uuid': cert.download_uuid, 'username': cert.user.username, 'course_id': cert.course_id, 'name': profile.name, @@ -160,9 +160,9 @@ class XQueueCertInterface(object): cert.status = status.deleting contents = { - 'action': 'remove', - 'remove_verify_uuid': cert.verify_uuid, - 'remove_download_uuid': cert.download_uuid, + 'action': 'delete', + 'delete_verify_uuid': cert.verify_uuid, + 'delete_download_uuid': cert.download_uuid, 'username': cert.user.username, } From fb882d285fac59dc8fe216110edb84304b6448fc Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Mon, 5 Nov 2012 15:03:55 -0500 Subject: [PATCH 268/308] cert.state->cert.status --- lms/djangoapps/certificates/views.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lms/djangoapps/certificates/views.py b/lms/djangoapps/certificates/views.py index 2475492524..390dca1ef7 100644 --- a/lms/djangoapps/certificates/views.py +++ b/lms/djangoapps/certificates/views.py @@ -44,19 +44,19 @@ def update_certificate(request): if 'error' in xqueue_body: cert.status = status.error else: - if cert.state in [status.generating, status.regenerating]: + if cert.status in [status.generating, status.regenerating]: cert.download_uuid = xqueue_body['download_uuid'] cert.verify_uuid = xqueue_body['verify_uuid'] cert.download_url = xqueue_body['url'] cert.status = status.downloadable - elif cert.state in [status.deleting]: + elif cert.status in [status.deleting]: cert.status = status.deleted else: logger.critical('Invalid state for cert update: {0}'.format( - cert.state)) + cert.status)) return HttpResponse(json.dumps({ 'return_code': 1, - 'content': 'invalid cert state'}), + 'content': 'invalid cert status'}), mimetype='application/json') cert.save() return HttpResponse(json.dumps({'return_code': 0}), From 076619c81b8a5afad29225e07ca08bd516a998e9 Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Mon, 5 Nov 2012 15:04:22 -0500 Subject: [PATCH 269/308] Changing private method to use a single underscore --- lms/djangoapps/certificates/queue.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lms/djangoapps/certificates/queue.py b/lms/djangoapps/certificates/queue.py index 0bb238474b..7ee9adddcf 100644 --- a/lms/djangoapps/certificates/queue.py +++ b/lms/djangoapps/certificates/queue.py @@ -122,7 +122,7 @@ class XQueueCertInterface(object): } key = cert.key - self.__send_to_xqueue(contents, key) + self._send_to_xqueue(contents, key) cert.save() return cert_status @@ -167,7 +167,7 @@ class XQueueCertInterface(object): } key = cert.key - self.__send_to_xqueue(contents, key) + self._send_to_xqueue(contents, key) cert.save() return cert_status @@ -220,18 +220,18 @@ class XQueueCertInterface(object): 'name': profile.name, } - self.__send_to_xqueue(contents, key) + self._send_to_xqueue(contents, key) cert.save() return cert_status - def __send_to_xqueue(self, contents, key): + def _send_to_xqueue(self, contents, key): # TODO - need to read queue name from settings xheader = make_xheader( 'http://{0}/update_certificate?{1}'.format( - key, settings.SITE_NAME), key, 'test-pull') + settings.SITE_NAME, key), key, 'test-pull') (error, msg) = self.xqueue_interface.send_to_queue( header=xheader, body=json.dumps(contents)) From 5d6687d89740f5ffb466c64b64c7ed475f893e86 Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Mon, 5 Nov 2012 15:35:59 -0500 Subject: [PATCH 270/308] Adding error_reason --- lms/djangoapps/certificates/models.py | 1 + lms/djangoapps/certificates/views.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/lms/djangoapps/certificates/models.py b/lms/djangoapps/certificates/models.py index a1fd62041c..d7e189ccb9 100644 --- a/lms/djangoapps/certificates/models.py +++ b/lms/djangoapps/certificates/models.py @@ -63,6 +63,7 @@ class GeneratedCertificate(models.Model): auto_now_add=True, default=datetime.now) modified_date = models.DateTimeField( auto_now=True, default=datetime.now) + error_reason = models.CharField(max_length=512, blank=True, default='') class Meta: unique_together = (('user', 'course_id'),) diff --git a/lms/djangoapps/certificates/views.py b/lms/djangoapps/certificates/views.py index 390dca1ef7..ae15245588 100644 --- a/lms/djangoapps/certificates/views.py +++ b/lms/djangoapps/certificates/views.py @@ -43,6 +43,20 @@ def update_certificate(request): if 'error' in xqueue_body: cert.status = status.error + if 'error_reason' in xqueue_body: + + # Hopefully we will record a meaningful error + # here if something bad happened during the + # certificate generation process + # + # example: + # (aamorm BerkeleyX/CS169.1x/2012_Fall) + # : + # HTTP error (reason=error(32, 'Broken pipe'), filename=None) : + # certificate_agent.py:175 + + + cert.error_reason = xqueue_body['error_reason'] else: if cert.status in [status.generating, status.regenerating]: cert.download_uuid = xqueue_body['download_uuid'] From be13bc602693abc3bc30df9302929a0f528e0249 Mon Sep 17 00:00:00 2001 From: Brian Talbot Date: Wed, 7 Nov 2012 17:15:29 -0500 Subject: [PATCH 271/308] added in completed course status to dashboard and certificate availability states --- lms/static/sass/base/_variables.scss | 1 - lms/static/sass/multicourse/_dashboard.scss | 117 ++++++++++++++++++++ lms/templates/dashboard.html | 36 +++++- 3 files changed, 151 insertions(+), 3 deletions(-) diff --git a/lms/static/sass/base/_variables.scss b/lms/static/sass/base/_variables.scss index fad5feff3a..8d1b78a0eb 100644 --- a/lms/static/sass/base/_variables.scss +++ b/lms/static/sass/base/_variables.scss @@ -26,7 +26,6 @@ $sidebar-color: #f6f6f6; $outer-border-color: #aaa; // old variables - $light-gray: #ddd; $dark-gray: #333; $text-color: $dark-gray; diff --git a/lms/static/sass/multicourse/_dashboard.scss b/lms/static/sass/multicourse/_dashboard.scss index 53418bc0dd..ccd5650da4 100644 --- a/lms/static/sass/multicourse/_dashboard.scss +++ b/lms/static/sass/multicourse/_dashboard.scss @@ -179,6 +179,7 @@ overflow: hidden; position: relative; width: flex-grid(12); + z-index: 20; @include transition(all, 0.15s, linear); &:last-child { @@ -318,6 +319,19 @@ } } + .course-status-completed { + background: #ccc; + color: #fff; + + p { + color: #222; + + span { + font-weight: bold; + } + } + } + .enter-course { @include button(shiny, $blue); @include box-sizing(border-box); @@ -357,10 +371,113 @@ border-color: darken(rgb(200,200,200), 3%); @include box-shadow(0 1px 0 0 rgba(255,255,255, 0.6)); } + + .course-status-completed { + background: #888; + color: #fff; + } } } } + .message-status { + @include border-radius(3px); + @include box-shadow(0 1px 4px 0 rgba(0,0,0, 0.1), inset 0 -1px 0 0 rgba(255,255,255, 0.8), inset 0 1px 0 0 rgba(255,255,255, 0.8)); + display: none; + position: relative; + top: -15px; + z-index: 10; + margin: 0 0 20px 0; + padding: 15px 20px; + font-family: "Open Sans", Verdana, Geneva, sans-serif; + background: #fffcf0; + border: 1px solid #ccc; + + .message-copy { + margin: 0; + + .grade-value { + font-size: 1.4rem; + font-weight: bold; + } + } + + .actions { + @include clearfix; + list-style: none; + margin: 15px 0 0 0; + padding: 0; + + .action { + float: left; + margin:0 15px 10px 0; + + .btn, .cta { + display: inline-block; + } + + .btn { + @include button(shiny, $blue); + @include box-sizing(border-box); + @include border-radius(3px); + float: left; + font: normal 0.8rem/1.2rem $sans-serif; + letter-spacing: 1px; + padding: 6px 12px; + text-align: center; + + &.disabled { + @include button(shiny, #eee); + cursor: default !important; + + &:hover { + background: #eee; + background-image: -webkit-linear-gradient(top, #EEE 0%, #C2C2C2 50%, #ABABAB 50%, #B0B0B0 100%); + background-image: -moz-linear-gradient(top, #EEE 0%, #C2C2C2 50%, #ABABAB 50%, #B0B0B0 100%); + background-image: -ms-linear-gradient(top, #EEE 0%, #C2C2C2 50%, #ABABAB 50%, #B0B0B0 100%); + background-image: -o-linear-gradient(top, #EEE 0%, #C2C2C2 50%, #ABABAB 50%, #B0B0B0 100%); + background-image: linear-gradient(top, #EEE 0%, #C2C2C2 50%, #ABABAB 50%, #B0B0B0 100%); + } + } + } + + .cta { + @include button(shiny, #666); + float: left; + font: normal 0.8rem/1.2rem $sans-serif; + letter-spacing: 1px; + padding: 6px 12px; + text-align: center; + } + } + } + + &.is-shown { + display: block; + } + + &.course-status-processing { + + } + + &.course-status-certnotavailable { + // background: #fee8d6; + } + + &.course-status-certrendering { + // background: #d9e7db; + + .cta { + margin-top: 2px; + } + } + + &.course-status-certavailable { + // background: #d9e7db; + } + } + + a.unenroll { float: right; font-style: italic; diff --git a/lms/templates/dashboard.html b/lms/templates/dashboard.html index 3fdcbb5c1c..f2b0c5239b 100644 --- a/lms/templates/dashboard.html +++ b/lms/templates/dashboard.html @@ -135,8 +135,8 @@

      ${get_course_about_section(course, 'university')}

      ${course.number} ${course.title}

      -
      -

      Class Starts - ${course.start_date_text}

      +
      +

      Course Completed - Nov 6, 2012

      % if course.id in show_courseware_links_for:

      View Courseware

      @@ -144,6 +144,38 @@
      + +
      +

      Final course details are being wrapped up at this time. Your final standing will be available shortly.

      +
      + +
      +

      You have received a grade of B in this course.

      + +
        +
      • Your Certificate is Generating
      • +
      • Complete our course feedback survey
      • +
      +
      + +
      +

      You have received a grade of B in this course.

      + +
        +
      • Download Your PDF Certificate
      • +
      • Complete our course feedback survey
      • +
      +
      + +
      +

      You did not complete the necessary requirements for completion of this course.

      + +
        +
      • Contact Faculty
      • +
      • Complete our course feedback survey
      • +
      +
      + Unregister % endfor From d155869f16b99570930af0fe2cf9d510d113d867 Mon Sep 17 00:00:00 2001 From: Brian Talbot Date: Thu, 8 Nov 2012 11:38:01 -0500 Subject: [PATCH 272/308] added in course-wide completion message static states and styling --- lms/static/sass/course/base/_base.scss | 74 ++++++++++++++++++++++++++ lms/templates/navigation.html | 41 ++++++++++++++ 2 files changed, 115 insertions(+) diff --git a/lms/static/sass/course/base/_base.scss b/lms/static/sass/course/base/_base.scss index 62237fd7a9..4439b5b290 100644 --- a/lms/static/sass/course/base/_base.scss +++ b/lms/static/sass/course/base/_base.scss @@ -132,7 +132,81 @@ img { } .site-status { + display: block; +} + +.course-status { + display: none; + padding: 20px 10px; + background: #fffcf0; + border-bottom: 1px solid #999; + @include linear-gradient(#f2dfbe, #fffcf0); + @include box-shadow(0 -2px 0 #fff inset); + + .inner-wrapper { + margin: auto; + max-width: 1180px; + @include clearfix(); + + .message-copy { + display: inline-block; + margin-right: 20px; + + .grade-value { + font-size: 1.4rem; + font-weight: bold; + } + } + + .actions { + display: inline-block; + margin: 0; + padding: 0; + list-style: none; + + .action { + display: inline-block; + margin-right: 10px; + + &:last-child { + margin-right: 0; + } + + .btn { + padding: 6px 12px; + @include box-sizing(border-box); + @include button(shiny, $blue); + @include border-radius(3px); + font: normal 0.8rem/1.2rem $sans-serif; + letter-spacing: 1px; + text-align: center; + + &.disabled { + @include button(shiny, #eee); + cursor: default !important; + + &:hover { + background: #eee; + background-image: -webkit-linear-gradient(top, #EEE 0%, #C2C2C2 50%, #ABABAB 50%, #B0B0B0 100%); + background-image: -moz-linear-gradient(top, #EEE 0%, #C2C2C2 50%, #ABABAB 50%, #B0B0B0 100%); + background-image: -ms-linear-gradient(top, #EEE 0%, #C2C2C2 50%, #ABABAB 50%, #B0B0B0 100%); + background-image: -o-linear-gradient(top, #EEE 0%, #C2C2C2 50%, #ABABAB 50%, #B0B0B0 100%); + background-image: linear-gradient(top, #EEE 0%, #C2C2C2 50%, #ABABAB 50%, #B0B0B0 100%); + } + } + } + + .cta { + font-size: 0.8rem; + font-weight: bold; + } + } + } + } + + &.is-shown { display: block; + } } .toast-notification { diff --git a/lms/templates/navigation.html b/lms/templates/navigation.html index d574bc3f6e..dfce6d3e90 100644 --- a/lms/templates/navigation.html +++ b/lms/templates/navigation.html @@ -91,6 +91,47 @@ site_status_msg = get_site_status_msg(course_id)
      Warning: Your browser is not fully supported. We strongly recommend using Chrome or Firefox.
      % endif +% if course: +
      +
      +

      You have received a grade of B in this course.

      + +
        +
      • Download Your PDF Certificate
      • +
      • Complete our course feedback survey
      • +
      +
      +
      + +
      +
      +

      You did not complete the necessary requirements for completion of this course.

      + +
        +
      • Contact Faculty
      • +
      • Complete our course feedback survey
      • +
      +
      +
      + +
      +
      +

      You have received a grade of B in this course.

      + +
        +
      • Your Certificate is Generating
      • +
      • Complete our course feedback survey
      • +
      +
      +
      + +
      +
      +

      Final course details are being wrapped up at this time. Your final standing will be available shortly.

      +
      +
      +% endif + %if not user.is_authenticated(): <%include file="login_modal.html" /> <%include file="signup_modal.html" /> From c6bfb67b1aea5ea4cd07bf11f00ee8c134e204c0 Mon Sep 17 00:00:00 2001 From: Brian Talbot Date: Thu, 8 Nov 2012 12:08:09 -0500 Subject: [PATCH 273/308] revised no certificate state for dashboard messages and removed course message UI for future work on separate branch --- lms/static/sass/course/base/_base.scss | 74 -------------------------- lms/templates/dashboard.html | 1 - lms/templates/navigation.html | 41 -------------- 3 files changed, 116 deletions(-) diff --git a/lms/static/sass/course/base/_base.scss b/lms/static/sass/course/base/_base.scss index 4439b5b290..6183c8a675 100644 --- a/lms/static/sass/course/base/_base.scss +++ b/lms/static/sass/course/base/_base.scss @@ -135,80 +135,6 @@ img { display: block; } -.course-status { - display: none; - padding: 20px 10px; - background: #fffcf0; - border-bottom: 1px solid #999; - @include linear-gradient(#f2dfbe, #fffcf0); - @include box-shadow(0 -2px 0 #fff inset); - - .inner-wrapper { - margin: auto; - max-width: 1180px; - @include clearfix(); - - .message-copy { - display: inline-block; - margin-right: 20px; - - .grade-value { - font-size: 1.4rem; - font-weight: bold; - } - } - - .actions { - display: inline-block; - margin: 0; - padding: 0; - list-style: none; - - .action { - display: inline-block; - margin-right: 10px; - - &:last-child { - margin-right: 0; - } - - .btn { - padding: 6px 12px; - @include box-sizing(border-box); - @include button(shiny, $blue); - @include border-radius(3px); - font: normal 0.8rem/1.2rem $sans-serif; - letter-spacing: 1px; - text-align: center; - - &.disabled { - @include button(shiny, #eee); - cursor: default !important; - - &:hover { - background: #eee; - background-image: -webkit-linear-gradient(top, #EEE 0%, #C2C2C2 50%, #ABABAB 50%, #B0B0B0 100%); - background-image: -moz-linear-gradient(top, #EEE 0%, #C2C2C2 50%, #ABABAB 50%, #B0B0B0 100%); - background-image: -ms-linear-gradient(top, #EEE 0%, #C2C2C2 50%, #ABABAB 50%, #B0B0B0 100%); - background-image: -o-linear-gradient(top, #EEE 0%, #C2C2C2 50%, #ABABAB 50%, #B0B0B0 100%); - background-image: linear-gradient(top, #EEE 0%, #C2C2C2 50%, #ABABAB 50%, #B0B0B0 100%); - } - } - } - - .cta { - font-size: 0.8rem; - font-weight: bold; - } - } - } - } - - &.is-shown { - display: block; - } -} - .toast-notification { position: fixed; top: 20px; diff --git a/lms/templates/dashboard.html b/lms/templates/dashboard.html index f2b0c5239b..ad2d66f8be 100644 --- a/lms/templates/dashboard.html +++ b/lms/templates/dashboard.html @@ -171,7 +171,6 @@

      You did not complete the necessary requirements for completion of this course.

        -
      • Contact Faculty
      • Complete our course feedback survey
      diff --git a/lms/templates/navigation.html b/lms/templates/navigation.html index dfce6d3e90..d574bc3f6e 100644 --- a/lms/templates/navigation.html +++ b/lms/templates/navigation.html @@ -91,47 +91,6 @@ site_status_msg = get_site_status_msg(course_id)
      Warning: Your browser is not fully supported. We strongly recommend using Chrome or Firefox.
      % endif -% if course: -
      -
      -

      You have received a grade of B in this course.

      - -
        -
      • Download Your PDF Certificate
      • -
      • Complete our course feedback survey
      • -
      -
      -
      - -
      -
      -

      You did not complete the necessary requirements for completion of this course.

      - -
        -
      • Contact Faculty
      • -
      • Complete our course feedback survey
      • -
      -
      -
      - -
      -
      -

      You have received a grade of B in this course.

      - -
        -
      • Your Certificate is Generating
      • -
      • Complete our course feedback survey
      • -
      -
      -
      - -
      -
      -

      Final course details are being wrapped up at this time. Your final standing will be available shortly.

      -
      -
      -% endif - %if not user.is_authenticated(): <%include file="login_modal.html" /> <%include file="signup_modal.html" /> From 83b79fb87efbfaed862c72694a7324133aed10df Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Fri, 9 Nov 2012 10:57:03 -0500 Subject: [PATCH 274/308] Adding new certificate state for "notpassing" --- lms/djangoapps/certificates/models.py | 1 + lms/djangoapps/certificates/queue.py | 62 ++++++++++++++++++--------- 2 files changed, 43 insertions(+), 20 deletions(-) diff --git a/lms/djangoapps/certificates/models.py b/lms/djangoapps/certificates/models.py index d7e189ccb9..98b76d8fdc 100644 --- a/lms/djangoapps/certificates/models.py +++ b/lms/djangoapps/certificates/models.py @@ -45,6 +45,7 @@ class CertificateStatuses(object): deleting = 'deleting' deleted = 'deleted' downloadable = 'downloadable' + notpassing = 'notpassing' error = 'error' diff --git a/lms/djangoapps/certificates/queue.py b/lms/djangoapps/certificates/queue.py index 7ee9adddcf..6bbea61250 100644 --- a/lms/djangoapps/certificates/queue.py +++ b/lms/djangoapps/certificates/queue.py @@ -82,7 +82,12 @@ class XQueueCertInterface(object): the certificate status to 'regenerating'. Certificate must be in the 'error' or 'downloadable' state - and the student must have a passing grade. + + If the student has a passing grade a certificate + request will be put on the queue + + If the student is not passing his state will change + to status.notpassing otherwise it will return the current state @@ -98,16 +103,16 @@ class XQueueCertInterface(object): course = courses.get_course_by_id(course_id) grade = grades.grade(student, self.request, course) - if grade['grade'] is not None: + profile = UserProfile.objects.get(user=student) + try: + cert = GeneratedCertificate.objects.get( + user=student, course_id=course_id) + except GeneratedCertificate.DoesNotExist: + logger.critical("Attempting to regenerate a certificate" + "for a user that doesn't have one") + raise - profile = UserProfile.objects.get(user=student) - try: - cert = GeneratedCertificate.objects.get( - user=student, course_id=course_id) - except GeneratedCertificate.DoesNotExist: - logger.warning("Attempting to regenerate a certificate" - "for a user that doesn't have one") - raise + if grade['grade'] is not None: cert.status = status.regenerating cert.name = profile.name @@ -125,6 +130,11 @@ class XQueueCertInterface(object): self._send_to_xqueue(contents, key) cert.save() + else: + cert.status = status.notpassing + cert.name = profile.name + cert.save() + return cert_status def del_cert(self, student, course_id): @@ -182,14 +192,20 @@ class XQueueCertInterface(object): Will change the certificate status to 'deleting'. Certificate must be in the 'unavailable', 'error', - or 'deleted' state and the student must have - a passing grade. + or 'deleted' state. - otherwise it will return the current state + If a student has a passing grade a request will made + for a new cert + + If a student does not have a passing grade the status + will change to status.notpassing + + Returns the student's status """ - VALID_STATUSES = [status.unavailable, status.deleted, status.error] + VALID_STATUSES = [status.unavailable, status.deleted, status.error, + status.notpassing] cert_status = certificate_status_for_student( student, course_id)['status'] @@ -198,14 +214,14 @@ class XQueueCertInterface(object): # grade the student course = courses.get_course_by_id(course_id) grade = grades.grade(student, self.request, course) + profile = UserProfile.objects.get(user=student) + cert, created = GeneratedCertificate.objects.get_or_create( + user=student, course_id=course_id) if grade['grade'] is not None: cert_status = status.generating - cert, created = GeneratedCertificate.objects.get_or_create( - user=student, course_id=course_id) - profile = UserProfile.objects.get(user=student) - key = make_hashkey(random.random()) + cert.status = cert_status cert.grade = grade['percent'] cert.user = student @@ -222,13 +238,19 @@ class XQueueCertInterface(object): self._send_to_xqueue(contents, key) cert.save() + else: + cert_status = status.notpassing + + cert.status = cert_status + cert.user = student + cert.course_id = course_id + cert.name = profile.name + cert.save() return cert_status def _send_to_xqueue(self, contents, key): - # TODO - need to read queue name from settings - xheader = make_xheader( 'http://{0}/update_certificate?{1}'.format( settings.SITE_NAME, key), key, 'test-pull') From 01dcf291b63fbf2af2e756ed79bcf8a38925f3ac Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Fri, 9 Nov 2012 11:03:58 -0500 Subject: [PATCH 275/308] Adding setting variable for CERT_QUEUE --- lms/djangoapps/certificates/queue.py | 2 +- lms/envs/aws.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lms/djangoapps/certificates/queue.py b/lms/djangoapps/certificates/queue.py index 6bbea61250..a048e4e235 100644 --- a/lms/djangoapps/certificates/queue.py +++ b/lms/djangoapps/certificates/queue.py @@ -253,7 +253,7 @@ class XQueueCertInterface(object): xheader = make_xheader( 'http://{0}/update_certificate?{1}'.format( - settings.SITE_NAME, key), key, 'test-pull') + settings.SITE_NAME, key), key, settings.CERT_QUEUE) (error, msg) = self.xqueue_interface.send_to_queue( header=xheader, body=json.dumps(contents)) diff --git a/lms/envs/aws.py b/lms/envs/aws.py index 16216bbe09..128553f600 100644 --- a/lms/envs/aws.py +++ b/lms/envs/aws.py @@ -59,6 +59,7 @@ COURSE_LISTINGS = ENV_TOKENS.get('COURSE_LISTINGS', {}) SUBDOMAIN_BRANDING = ENV_TOKENS.get('SUBDOMAIN_BRANDING', {}) COMMENTS_SERVICE_URL = ENV_TOKENS.get("COMMENTS_SERVICE_URL",'') COMMENTS_SERVICE_KEY = ENV_TOKENS.get("COMMENTS_SERVICE_KEY",'') +CERT_QUEUE = ENV_TOKENS.get("CERT_QUEUE", 'test-pull') ############################## SECURE AUTH ITEMS ############################### # Secret things: passwords, access keys, etc. From cf33d85ef9dc6b59cd805c13e57000e529be5631 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Fri, 9 Nov 2012 12:02:01 -0500 Subject: [PATCH 276/308] Wire up cert status --- common/djangoapps/student/views.py | 45 ++++++----- common/lib/xmodule/xmodule/course_module.py | 10 +++ lms/djangoapps/certificates/models.py | 7 +- lms/templates/dashboard.html | 83 ++++++++++++++------- 4 files changed, 97 insertions(+), 48 deletions(-) diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index 8810c8609b..5d5dff81d2 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -29,6 +29,9 @@ from django_future.csrf import ensure_csrf_cookie, csrf_exempt from student.models import (Registration, UserProfile, PendingNameChange, PendingEmailChange, CourseEnrollment) + +from certificates.models import CertificateStatuses, certificate_status_for_student + from xmodule.course_module import CourseDescriptor from xmodule.modulestore.exceptions import ItemNotFoundError from xmodule.modulestore.django import modulestore @@ -143,11 +146,15 @@ def dashboard(request): show_courseware_links_for = frozenset(course.id for course in courses if has_access(request.user, course, 'load')) + cert_statuses = [certificate_status_for_student(request.user, course.id) for course in courses] + context = {'courses': courses, 'message': message, 'staff_access': staff_access, 'errored_courses': errored_courses, - 'show_courseware_links_for' : show_courseware_links_for} + 'show_courseware_links_for' : show_courseware_links_for, + 'cert_statuses': cert_statuses, + } return render_to_response('dashboard.html', context) @@ -206,13 +213,13 @@ def change_enrollment(request): return {'success': False, 'error': 'enrollment in {} not allowed at this time' .format(course.display_name)} - - org, course_num, run=course_id.split("/") + + org, course_num, run=course_id.split("/") statsd.increment("common.student.enrollment", tags=["org:{0}".format(org), "course:{0}".format(course_num), "run:{0}".format(run)]) - + enrollment, created = CourseEnrollment.objects.get_or_create(user=user, course_id=course.id) return {'success': True} @@ -220,13 +227,13 @@ def change_enrollment(request): try: enrollment = CourseEnrollment.objects.get(user=user, course_id=course_id) enrollment.delete() - - org, course_num, run=course_id.split("/") + + org, course_num, run=course_id.split("/") statsd.increment("common.student.unenrollment", tags=["org:{0}".format(org), "course:{0}".format(course_num), "run:{0}".format(run)]) - + return {'success': True} except CourseEnrollment.DoesNotExist: return {'success': False, 'error': 'You are not enrolled for this course.'} @@ -275,13 +282,13 @@ def login_user(request, error=""): log.info("Login success - {0} ({1})".format(username, email)) try_change_enrollment(request) - + statsd.increment("common.student.successful_login") - + return HttpResponse(json.dumps({'success': True})) - + log.warning("Login failed - Account not active for user {0}, resending activation".format(username)) - + reactivation_email_for_user(user) not_activated_msg = "This account has not been activated. We have " + \ "sent another activation message. Please check your " + \ @@ -483,9 +490,9 @@ def create_account(request, post_override=None): log.debug('bypassing activation email') login_user.is_active = True login_user.save() - + statsd.increment("common.student.account_created") - + js = {'success': True} return HttpResponse(json.dumps(js), mimetype="application/json") @@ -541,9 +548,9 @@ def password_reset(request): ''' Attempts to send a password reset e-mail. ''' if request.method != "POST": raise Http404 - + # By default, Django doesn't allow Users with is_active = False to reset their passwords, - # but this bites people who signed up a long time ago, never activated, and forgot their + # but this bites people who signed up a long time ago, never activated, and forgot their # password. So for their sake, we'll auto-activate a user for whome password_reset is called. try: user = User.objects.get(email=request.POST['email']) @@ -551,7 +558,7 @@ def password_reset(request): user.save() except: log.exception("Tried to auto-activate user to enable password reset, but failed.") - + form = PasswordResetForm(request.POST) if form.is_valid(): form.save(use_https = request.is_secure(), @@ -589,7 +596,7 @@ def reactivation_email_for_user(user): res = user.email_user(subject, message, settings.DEFAULT_FROM_EMAIL) return HttpResponse(json.dumps({'success': True})) - + @ensure_csrf_cookie def change_email_request(request): @@ -764,8 +771,8 @@ def accept_name_change_by_id(id): @ensure_csrf_cookie def accept_name_change(request): - ''' JSON: Name change process. Course staff clicks 'accept' on a given name change - + ''' JSON: Name change process. Course staff clicks 'accept' on a given name change + We used this during the prototype but now we simply record name changes instead of manually approving them. Still keeping this around in case we want to go back to this approval method. diff --git a/common/lib/xmodule/xmodule/course_module.py b/common/lib/xmodule/xmodule/course_module.py index fc27a692ea..46e8e145df 100644 --- a/common/lib/xmodule/xmodule/course_module.py +++ b/common/lib/xmodule/xmodule/course_module.py @@ -298,6 +298,16 @@ class CourseDescriptor(SequenceDescriptor): # Explicit comparison to True because we always want to return a bool. return self.metadata.get('hide_progress_tab') == True + @property + def end_of_course_survey_url(self): + """ + Pull from policy. Once we have our own survey module set up, can change this to point to an automatically + created survey for each class. + + Returns None if no url specified. + """ + return self.metadata.get('end_of_course_survey_url') + @property def title(self): return self.display_name diff --git a/lms/djangoapps/certificates/models.py b/lms/djangoapps/certificates/models.py index 98b76d8fdc..1434510920 100644 --- a/lms/djangoapps/certificates/models.py +++ b/lms/djangoapps/certificates/models.py @@ -2,7 +2,7 @@ from django.contrib.auth.models import User from django.db import models from datetime import datetime -''' +""" Certificates are created for a student and an offering of a course. When a certificate is generated, a unique ID is generated so that @@ -35,8 +35,7 @@ State diagram: v v v [downloadable] [downloadable] [deleted] -''' - +""" class CertificateStatuses(object): unavailable = 'unavailable' @@ -88,6 +87,7 @@ def certificate_status_for_student(student, course_id): If the status is "downloadable", the dictionary also contains "download_url". + If the student has been graded, the dictionary also contains their grade for the course. ''' try: @@ -97,6 +97,7 @@ def certificate_status_for_student(student, course_id): return { 'status': CertificateStatuses.downloadable, 'download_url': generated_certificate.download_url, + 'grade': generated_certificate.grade, } else: return {'status': generated_certificate.status} diff --git a/lms/templates/dashboard.html b/lms/templates/dashboard.html index ad2d66f8be..c6c71017b3 100644 --- a/lms/templates/dashboard.html +++ b/lms/templates/dashboard.html @@ -2,6 +2,7 @@ from django.core.urlresolvers import reverse from courseware.courses import course_image_url, get_course_about_section from courseware.access import has_access + from certificates.models import CertificateStatuses %> <%inherit file="main.html" /> @@ -114,7 +115,7 @@ % if len(courses) > 0: - % for course in courses: + % for course, cert_status in zip(courses, cert_statuses):
      <% @@ -145,35 +146,65 @@
      -
      -

      Final course details are being wrapped up at this time. Your final standing will be available shortly.

      -
      -
      -

      You have received a grade of B in this course.

      + % if course.has_ended: + <% + passing_grade = False + cert_button = False + survey_button = False + if cert_status['status'] in [CertificateStatuses.generating, CertificateStatuses.regenerating]: + status_css_class = 'course-status-certrendering' + cert_button = True + survey_button = True + passing_grade = True + elif cert_status['status'] == CertificateStatuses.downloadable: + status_css_class = 'course-status-certavailable' + cert_button = True + survey_button = True + passing_grade = True + elif cert_status['status'] == CertificateStatuses.notpassing: + status_css_class = 'course-status-certnotavailable' + survey_button = True + else cert_status['status']: + # This is primarily the 'unavailable' state, but also 'error', 'deleted', etc. + status_css_class = 'course-status-processing' -
        -
      • Your Certificate is Generating
      • -
      • Complete our course feedback survey
      • -
      -
      + if survey_button and not course.end_of_course_survey_url: + survey_button = False + %> +
      -
      -

      You have received a grade of B in this course.

      + % if cert_status == CertificateStatuses.unavailable: +

      Final course details are being wrapped up at this time. + Your final standing will be available shortly.

      + % elif passing_grade: +

      You have received a grade of + ${cert_status['grade']} + in this course.

      + % elif cert_status == CertificateStatuses.notpassing: +

      You did not complete the necessary requirements for + completion of this course. Your grade was ${cert_status['grade']} +

      + % endif + % if cert_button or survey_button: +
        + % if cert_button and cert_status['status'] == CertificateStatuses.generating: +
      • Your Certificate is Generating
      • + % elif cert_button and cert_status['status'] == CertificateStatuses.downloadable: +
      • + + Download Your PDF Certificate
      • + % endif + % if survey_button: +
      • + Complete our course feedback survey
      • + % endif +
      + % endif +
      -
        -
      • Download Your PDF Certificate
      • -
      • Complete our course feedback survey
      • -
      -
      - -
      -

      You did not complete the necessary requirements for completion of this course.

      - -
        -
      • Complete our course feedback survey
      • -
      -
      + % endif Unregister From 0b69870d05a2c9bbd7bb04767ff178b0d43e4096 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Fri, 9 Nov 2012 12:02:44 -0500 Subject: [PATCH 277/308] Reverting askbot removal for now Revert "add migration to remove askbot columns" This reverts commit 9281f3c1405e7fbee932c9c9f830632e010a98e7. --- .../student/migrations/0021_remove_askbot.py | 123 ------------------ 1 file changed, 123 deletions(-) delete mode 100644 common/djangoapps/student/migrations/0021_remove_askbot.py diff --git a/common/djangoapps/student/migrations/0021_remove_askbot.py b/common/djangoapps/student/migrations/0021_remove_askbot.py deleted file mode 100644 index b933f6cc7c..0000000000 --- a/common/djangoapps/student/migrations/0021_remove_askbot.py +++ /dev/null @@ -1,123 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - -ASKBOT_AUTH_USER_COLUMNS = ( - 'website', - 'about', - 'gold', - 'email_isvalid', - 'real_name', - 'location', - 'reputation', - 'gravatar', - 'bronze', - 'last_seen', - 'silver', - 'questions_per_page', - 'new_response_count', - 'seen_response_count', -) - - -class Migration(SchemaMigration): - - def forwards(self, orm): - "Kill the askbot" - for column in ASKBOT_AUTH_USER_COLUMNS: - db.delete_column('auth_user', column) - - def backwards(self, orm): - raise RuntimeError("Cannot reverse this migration: there's no going back to Askbot.") - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'student.courseenrollment': { - 'Meta': {'unique_together': "(('user', 'course_id'),)", 'object_name': 'CourseEnrollment'}, - 'course_id': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}), - 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'student.pendingemailchange': { - 'Meta': {'object_name': 'PendingEmailChange'}, - 'activation_key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32', 'db_index': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'new_email': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}), - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) - }, - 'student.pendingnamechange': { - 'Meta': {'object_name': 'PendingNameChange'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'new_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), - 'rationale': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) - }, - 'student.registration': { - 'Meta': {'object_name': 'Registration', 'db_table': "'auth_registration'"}, - 'activation_key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32', 'db_index': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'unique': 'True'}) - }, - 'student.userprofile': { - 'Meta': {'object_name': 'UserProfile', 'db_table': "'auth_userprofile'"}, - 'courseware': ('django.db.models.fields.CharField', [], {'default': "'course.xml'", 'max_length': '255', 'blank': 'True'}), - 'gender': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '6', 'null': 'True', 'blank': 'True'}), - 'goals': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'language': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}), - 'level_of_education': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '6', 'null': 'True', 'blank': 'True'}), - 'location': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}), - 'mailing_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), - 'meta': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}), - 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'profile'", 'unique': 'True', 'to': "orm['auth.User']"}), - 'year_of_birth': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}) - }, - 'student.usertestgroup': { - 'Meta': {'object_name': 'UserTestGroup'}, - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '32', 'db_index': 'True'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'db_index': 'True', 'symmetrical': 'False'}) - } - } - - complete_apps = ['student'] From 2846c61d15c72543847fddf36db37057a1318823 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Fri, 9 Nov 2012 12:03:12 -0500 Subject: [PATCH 278/308] Revert "remove (almost) all references to askbot." This reverts commit 793354a0dca872780568ee1a6ebe4c775434af31. --- .gitignore | 2 + .gitmodules | 3 + .hgignore | 12 + askbot | 1 + common/djangoapps/student/models.py | 2 - common/lib/xmodule/xmodule/x_module.py | 2 +- create-dev-env.sh | 9 + doc/overview.md | 2 +- install.txt | 3 + lms/askbot/skins/README | 71 + lms/askbot/skins/__init__.py | 0 lms/askbot/skins/common/media/images/anon.png | Bin 0 -> 687 bytes .../skins/common/media/images/bigbutton.png | Bin 0 -> 263 bytes .../common/media/images/bigbuttonhover.png | Bin 0 -> 236 bytes .../media/images/blue-up-arrow-h18px.png | Bin 0 -> 593 bytes .../skins/common/media/images/box-arrow.gif | Bin 0 -> 69 bytes .../common/media/images/bullet_green.gif | Bin 0 -> 64 bytes .../skins/common/media/images/cc-88x31.png | Bin 0 -> 5460 bytes .../skins/common/media/images/cc-by-sa.png | Bin 0 -> 5083 bytes .../common/media/images/close-small-dark.png | Bin 0 -> 226 bytes .../common/media/images/close-small-hover.png | Bin 0 -> 337 bytes .../skins/common/media/images/close-small.png | Bin 0 -> 293 bytes .../common/media/images/contributorsback.png | Bin 0 -> 714 bytes lms/askbot/skins/common/media/images/dash.gif | Bin 0 -> 44 bytes .../media/images/dialog-warning-off.png | Bin 0 -> 419 bytes .../common/media/images/dialog-warning.png | Bin 0 -> 603 bytes .../media/images/djangomade124x25_grey.gif | Bin 0 -> 2035 bytes .../skins/common/media/images/dot-g.gif | Bin 0 -> 61 bytes .../skins/common/media/images/dot-list.gif | Bin 0 -> 56 bytes lms/askbot/skins/common/media/images/edit.png | Bin 0 -> 758 bytes .../media/images/expander-arrow-hide.gif | Bin 0 -> 126 bytes .../media/images/expander-arrow-show.gif | Bin 0 -> 135 bytes .../skins/common/media/images/favicon.gif | Bin 0 -> 78 bytes .../skins/common/media/images/favicon.ico | Bin 0 -> 14846 bytes .../common/media/images/feed-icon-small.png | Bin 0 -> 669 bytes .../skins/common/media/images/flags/ad.gif | Bin 0 -> 371 bytes .../skins/common/media/images/flags/ae.gif | Bin 0 -> 361 bytes .../skins/common/media/images/flags/af.gif | Bin 0 -> 369 bytes .../skins/common/media/images/flags/ag.gif | Bin 0 -> 361 bytes .../skins/common/media/images/flags/ai.gif | Bin 0 -> 369 bytes .../skins/common/media/images/flags/al.gif | Bin 0 -> 370 bytes .../skins/common/media/images/flags/am.gif | Bin 0 -> 363 bytes .../skins/common/media/images/flags/an.gif | Bin 0 -> 368 bytes .../skins/common/media/images/flags/ao.gif | Bin 0 -> 244 bytes .../skins/common/media/images/flags/ar.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/as.gif | Bin 0 -> 365 bytes .../skins/common/media/images/flags/at.gif | Bin 0 -> 361 bytes .../skins/common/media/images/flags/au.gif | Bin 0 -> 378 bytes .../skins/common/media/images/flags/aw.gif | Bin 0 -> 365 bytes .../skins/common/media/images/flags/ax.gif | Bin 0 -> 376 bytes .../skins/common/media/images/flags/az.gif | Bin 0 -> 370 bytes .../skins/common/media/images/flags/ba.gif | Bin 0 -> 363 bytes .../skins/common/media/images/flags/bb.gif | Bin 0 -> 368 bytes .../skins/common/media/images/flags/bd.gif | Bin 0 -> 361 bytes .../skins/common/media/images/flags/be.gif | Bin 0 -> 359 bytes .../skins/common/media/images/flags/bf.gif | Bin 0 -> 358 bytes .../skins/common/media/images/flags/bg.gif | Bin 0 -> 360 bytes .../skins/common/media/images/flags/bh.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/bi.gif | Bin 0 -> 374 bytes .../skins/common/media/images/flags/bj.gif | Bin 0 -> 368 bytes .../skins/common/media/images/flags/bm.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/bn.gif | Bin 0 -> 373 bytes .../skins/common/media/images/flags/bo.gif | Bin 0 -> 359 bytes .../skins/common/media/images/flags/br.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/bs.gif | Bin 0 -> 351 bytes .../skins/common/media/images/flags/bt.gif | Bin 0 -> 377 bytes .../skins/common/media/images/flags/bv.gif | Bin 0 -> 376 bytes .../skins/common/media/images/flags/bw.gif | Bin 0 -> 364 bytes .../skins/common/media/images/flags/by.gif | Bin 0 -> 361 bytes .../skins/common/media/images/flags/bz.gif | Bin 0 -> 368 bytes .../skins/common/media/images/flags/ca.gif | Bin 0 -> 376 bytes .../common/media/images/flags/catalonia.gif | Bin 0 -> 238 bytes .../skins/common/media/images/flags/cc.gif | Bin 0 -> 371 bytes .../skins/common/media/images/flags/cd.gif | Bin 0 -> 243 bytes .../skins/common/media/images/flags/cf.gif | Bin 0 -> 364 bytes .../skins/common/media/images/flags/cg.gif | Bin 0 -> 359 bytes .../skins/common/media/images/flags/ch.gif | Bin 0 -> 332 bytes .../skins/common/media/images/flags/ci.gif | Bin 0 -> 368 bytes .../skins/common/media/images/flags/ck.gif | Bin 0 -> 362 bytes .../skins/common/media/images/flags/cl.gif | Bin 0 -> 364 bytes .../skins/common/media/images/flags/cm.gif | Bin 0 -> 369 bytes .../skins/common/media/images/flags/cn.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/co.gif | Bin 0 -> 353 bytes .../skins/common/media/images/flags/cr.gif | Bin 0 -> 359 bytes .../skins/common/media/images/flags/cs.gif | Bin 0 -> 364 bytes .../skins/common/media/images/flags/cu.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/cv.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/cx.gif | Bin 0 -> 363 bytes .../skins/common/media/images/flags/cy.gif | Bin 0 -> 365 bytes .../skins/common/media/images/flags/cz.gif | Bin 0 -> 362 bytes .../skins/common/media/images/flags/de.gif | Bin 0 -> 362 bytes .../skins/common/media/images/flags/dj.gif | Bin 0 -> 369 bytes .../skins/common/media/images/flags/dk.gif | Bin 0 -> 374 bytes .../skins/common/media/images/flags/dm.gif | Bin 0 -> 368 bytes .../skins/common/media/images/flags/do.gif | Bin 0 -> 362 bytes .../skins/common/media/images/flags/dz.gif | Bin 0 -> 370 bytes .../skins/common/media/images/flags/ec.gif | Bin 0 -> 362 bytes .../skins/common/media/images/flags/ee.gif | Bin 0 -> 364 bytes .../skins/common/media/images/flags/eg.gif | Bin 0 -> 363 bytes .../skins/common/media/images/flags/eh.gif | Bin 0 -> 359 bytes .../common/media/images/flags/england.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/er.gif | Bin 0 -> 361 bytes .../skins/common/media/images/flags/es.gif | Bin 0 -> 360 bytes .../skins/common/media/images/flags/et.gif | Bin 0 -> 364 bytes .../media/images/flags/europeanunion.gif | Bin 0 -> 171 bytes .../skins/common/media/images/flags/fam.gif | Bin 0 -> 370 bytes .../skins/common/media/images/flags/fi.gif | Bin 0 -> 371 bytes .../skins/common/media/images/flags/fj.gif | Bin 0 -> 370 bytes .../skins/common/media/images/flags/fk.gif | Bin 0 -> 372 bytes .../skins/common/media/images/flags/fm.gif | Bin 0 -> 377 bytes .../skins/common/media/images/flags/fo.gif | Bin 0 -> 370 bytes .../skins/common/media/images/flags/fr.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/ga.gif | Bin 0 -> 359 bytes .../skins/common/media/images/flags/gb.gif | Bin 0 -> 260 bytes .../skins/common/media/images/flags/gd.gif | Bin 0 -> 364 bytes .../skins/common/media/images/flags/ge.gif | Bin 0 -> 379 bytes .../skins/common/media/images/flags/gf.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/gh.gif | Bin 0 -> 358 bytes .../skins/common/media/images/flags/gi.gif | Bin 0 -> 370 bytes .../skins/common/media/images/flags/gl.gif | Bin 0 -> 368 bytes .../skins/common/media/images/flags/gm.gif | Bin 0 -> 362 bytes .../skins/common/media/images/flags/gn.gif | Bin 0 -> 363 bytes .../skins/common/media/images/flags/gp.gif | Bin 0 -> 357 bytes .../skins/common/media/images/flags/gq.gif | Bin 0 -> 361 bytes .../skins/common/media/images/flags/gr.gif | Bin 0 -> 368 bytes .../skins/common/media/images/flags/gs.gif | Bin 0 -> 363 bytes .../skins/common/media/images/flags/gt.gif | Bin 0 -> 374 bytes .../skins/common/media/images/flags/gu.gif | Bin 0 -> 370 bytes .../skins/common/media/images/flags/gw.gif | Bin 0 -> 358 bytes .../skins/common/media/images/flags/gy.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/hk.gif | Bin 0 -> 373 bytes .../skins/common/media/images/flags/hm.gif | Bin 0 -> 378 bytes .../skins/common/media/images/flags/hn.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/hr.gif | Bin 0 -> 364 bytes .../skins/common/media/images/flags/ht.gif | Bin 0 -> 361 bytes .../skins/common/media/images/flags/hu.gif | Bin 0 -> 357 bytes .../skins/common/media/images/flags/id.gif | Bin 0 -> 362 bytes .../skins/common/media/images/flags/ie.gif | Bin 0 -> 371 bytes .../skins/common/media/images/flags/il.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/in.gif | Bin 0 -> 363 bytes .../skins/common/media/images/flags/io.gif | Bin 0 -> 373 bytes .../skins/common/media/images/flags/iq.gif | Bin 0 -> 361 bytes .../skins/common/media/images/flags/ir.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/is.gif | Bin 0 -> 373 bytes .../skins/common/media/images/flags/it.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/jm.gif | Bin 0 -> 365 bytes .../skins/common/media/images/flags/jo.gif | Bin 0 -> 360 bytes .../skins/common/media/images/flags/jp.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/ke.gif | Bin 0 -> 360 bytes .../skins/common/media/images/flags/kg.gif | Bin 0 -> 373 bytes .../skins/common/media/images/flags/kh.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/ki.gif | Bin 0 -> 371 bytes .../skins/common/media/images/flags/km.gif | Bin 0 -> 358 bytes .../skins/common/media/images/flags/kn.gif | Bin 0 -> 370 bytes .../skins/common/media/images/flags/kp.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/kr.gif | Bin 0 -> 385 bytes .../skins/common/media/images/flags/kw.gif | Bin 0 -> 362 bytes .../skins/common/media/images/flags/ky.gif | Bin 0 -> 373 bytes .../skins/common/media/images/flags/kz.gif | Bin 0 -> 374 bytes .../skins/common/media/images/flags/la.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/lb.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/lc.gif | Bin 0 -> 259 bytes .../skins/common/media/images/flags/li.gif | Bin 0 -> 359 bytes .../skins/common/media/images/flags/lk.gif | Bin 0 -> 377 bytes .../skins/common/media/images/flags/lr.gif | Bin 0 -> 360 bytes .../skins/common/media/images/flags/ls.gif | Bin 0 -> 369 bytes .../skins/common/media/images/flags/lt.gif | Bin 0 -> 362 bytes .../skins/common/media/images/flags/lu.gif | Bin 0 -> 368 bytes .../skins/common/media/images/flags/lv.gif | Bin 0 -> 363 bytes .../skins/common/media/images/flags/ly.gif | Bin 0 -> 362 bytes .../skins/common/media/images/flags/ma.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/mc.gif | Bin 0 -> 359 bytes .../skins/common/media/images/flags/md.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/me.gif | Bin 0 -> 238 bytes .../skins/common/media/images/flags/mg.gif | Bin 0 -> 372 bytes .../skins/common/media/images/flags/mh.gif | Bin 0 -> 370 bytes .../skins/common/media/images/flags/mk.gif | Bin 0 -> 382 bytes .../skins/common/media/images/flags/ml.gif | Bin 0 -> 363 bytes .../skins/common/media/images/flags/mm.gif | Bin 0 -> 365 bytes .../skins/common/media/images/flags/mn.gif | Bin 0 -> 368 bytes .../skins/common/media/images/flags/mo.gif | Bin 0 -> 378 bytes .../skins/common/media/images/flags/mp.gif | Bin 0 -> 368 bytes .../skins/common/media/images/flags/mq.gif | Bin 0 -> 379 bytes .../skins/common/media/images/flags/mr.gif | Bin 0 -> 377 bytes .../skins/common/media/images/flags/ms.gif | Bin 0 -> 371 bytes .../skins/common/media/images/flags/mt.gif | Bin 0 -> 369 bytes .../skins/common/media/images/flags/mu.gif | Bin 0 -> 358 bytes .../skins/common/media/images/flags/mv.gif | Bin 0 -> 372 bytes .../skins/common/media/images/flags/mw.gif | Bin 0 -> 364 bytes .../skins/common/media/images/flags/mx.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/my.gif | Bin 0 -> 375 bytes .../skins/common/media/images/flags/mz.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/na.gif | Bin 0 -> 371 bytes .../skins/common/media/images/flags/nc.gif | Bin 0 -> 364 bytes .../skins/common/media/images/flags/ne.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/nf.gif | Bin 0 -> 375 bytes .../skins/common/media/images/flags/ng.gif | Bin 0 -> 371 bytes .../skins/common/media/images/flags/ni.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/nl.gif | Bin 0 -> 360 bytes .../skins/common/media/images/flags/no.gif | Bin 0 -> 376 bytes .../skins/common/media/images/flags/np.gif | Bin 0 -> 302 bytes .../skins/common/media/images/flags/nr.gif | Bin 0 -> 364 bytes .../skins/common/media/images/flags/nu.gif | Bin 0 -> 369 bytes .../skins/common/media/images/flags/nz.gif | Bin 0 -> 369 bytes .../skins/common/media/images/flags/om.gif | Bin 0 -> 364 bytes .../skins/common/media/images/flags/pa.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/pe.gif | Bin 0 -> 361 bytes .../skins/common/media/images/flags/pf.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/pg.gif | Bin 0 -> 360 bytes .../skins/common/media/images/flags/ph.gif | Bin 0 -> 361 bytes .../skins/common/media/images/flags/pk.gif | Bin 0 -> 377 bytes .../skins/common/media/images/flags/pl.gif | Bin 0 -> 360 bytes .../skins/common/media/images/flags/pm.gif | Bin 0 -> 374 bytes .../skins/common/media/images/flags/pn.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/pr.gif | Bin 0 -> 369 bytes .../skins/common/media/images/flags/ps.gif | Bin 0 -> 358 bytes .../skins/common/media/images/flags/pt.gif | Bin 0 -> 369 bytes .../skins/common/media/images/flags/pw.gif | Bin 0 -> 374 bytes .../skins/common/media/images/flags/py.gif | Bin 0 -> 363 bytes .../skins/common/media/images/flags/qa.gif | Bin 0 -> 364 bytes .../skins/common/media/images/flags/re.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/ro.gif | Bin 0 -> 363 bytes .../skins/common/media/images/flags/rs.gif | Bin 0 -> 238 bytes .../skins/common/media/images/flags/ru.gif | Bin 0 -> 361 bytes .../skins/common/media/images/flags/rw.gif | Bin 0 -> 361 bytes .../skins/common/media/images/flags/sa.gif | Bin 0 -> 370 bytes .../skins/common/media/images/flags/sb.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/sc.gif | Bin 0 -> 357 bytes .../common/media/images/flags/scotland.gif | Bin 0 -> 378 bytes .../skins/common/media/images/flags/sd.gif | Bin 0 -> 355 bytes .../skins/common/media/images/flags/se.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/sg.gif | Bin 0 -> 364 bytes .../skins/common/media/images/flags/sh.gif | Bin 0 -> 371 bytes .../skins/common/media/images/flags/si.gif | Bin 0 -> 362 bytes .../skins/common/media/images/flags/sj.gif | Bin 0 -> 376 bytes .../skins/common/media/images/flags/sk.gif | Bin 0 -> 361 bytes .../skins/common/media/images/flags/sl.gif | Bin 0 -> 363 bytes .../skins/common/media/images/flags/sm.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/sn.gif | Bin 0 -> 364 bytes .../skins/common/media/images/flags/so.gif | Bin 0 -> 376 bytes .../skins/common/media/images/flags/sr.gif | Bin 0 -> 361 bytes .../skins/common/media/images/flags/st.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/sv.gif | Bin 0 -> 363 bytes .../skins/common/media/images/flags/sy.gif | Bin 0 -> 361 bytes .../skins/common/media/images/flags/sz.gif | Bin 0 -> 363 bytes .../skins/common/media/images/flags/tc.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/td.gif | Bin 0 -> 368 bytes .../skins/common/media/images/flags/tf.gif | Bin 0 -> 365 bytes .../skins/common/media/images/flags/tg.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/th.gif | Bin 0 -> 360 bytes .../skins/common/media/images/flags/tj.gif | Bin 0 -> 361 bytes .../skins/common/media/images/flags/tk.gif | Bin 0 -> 372 bytes .../skins/common/media/images/flags/tl.gif | Bin 0 -> 360 bytes .../skins/common/media/images/flags/tm.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/tn.gif | Bin 0 -> 375 bytes .../skins/common/media/images/flags/to.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/tr.gif | Bin 0 -> 371 bytes .../skins/common/media/images/flags/tt.gif | Bin 0 -> 377 bytes .../skins/common/media/images/flags/tv.gif | Bin 0 -> 361 bytes .../skins/common/media/images/flags/tw.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/tz.gif | Bin 0 -> 366 bytes .../skins/common/media/images/flags/ua.gif | Bin 0 -> 360 bytes .../skins/common/media/images/flags/ug.gif | Bin 0 -> 359 bytes .../skins/common/media/images/flags/um.gif | Bin 0 -> 371 bytes .../skins/common/media/images/flags/us.gif | Bin 0 -> 367 bytes .../skins/common/media/images/flags/uy.gif | Bin 0 -> 373 bytes .../skins/common/media/images/flags/uz.gif | Bin 0 -> 364 bytes .../skins/common/media/images/flags/va.gif | Bin 0 -> 369 bytes .../skins/common/media/images/flags/vc.gif | Bin 0 -> 370 bytes .../skins/common/media/images/flags/ve.gif | Bin 0 -> 364 bytes .../skins/common/media/images/flags/vg.gif | Bin 0 -> 368 bytes .../skins/common/media/images/flags/vi.gif | Bin 0 -> 376 bytes .../skins/common/media/images/flags/vn.gif | Bin 0 -> 370 bytes .../skins/common/media/images/flags/vu.gif | Bin 0 -> 365 bytes .../skins/common/media/images/flags/wales.gif | Bin 0 -> 372 bytes .../skins/common/media/images/flags/wf.gif | Bin 0 -> 377 bytes .../skins/common/media/images/flags/ws.gif | Bin 0 -> 365 bytes .../skins/common/media/images/flags/ye.gif | Bin 0 -> 356 bytes .../skins/common/media/images/flags/yt.gif | Bin 0 -> 382 bytes .../skins/common/media/images/flags/za.gif | Bin 0 -> 363 bytes .../skins/common/media/images/flags/zm.gif | Bin 0 -> 358 bytes .../skins/common/media/images/flags/zw.gif | Bin 0 -> 365 bytes .../skins/common/media/images/go-up-grey.png | Bin 0 -> 563 bytes .../common/media/images/go-up-orange.png | Bin 0 -> 586 bytes .../media/images/gray-up-arrow-h18px.png | Bin 0 -> 383 bytes .../skins/common/media/images/grippie.png | Bin 0 -> 162 bytes .../skins/common/media/images/indicator.gif | Bin 0 -> 2545 bytes lms/askbot/skins/common/media/images/logo.gif | Bin 0 -> 3792 bytes lms/askbot/skins/common/media/images/logo.png | Bin 0 -> 5841 bytes .../skins/common/media/images/logo1.png | Bin 0 -> 2752 bytes .../skins/common/media/images/logo2.png | Bin 0 -> 2124 bytes .../media/images/mail-envelope-empty.png | Bin 0 -> 547 bytes .../media/images/mail-envelope-full.png | Bin 0 -> 482 bytes .../skins/common/media/images/medala.gif | Bin 0 -> 801 bytes .../skins/common/media/images/medala_on.gif | Bin 0 -> 957 bytes lms/askbot/skins/common/media/images/new.gif | Bin 0 -> 635 bytes .../skins/common/media/images/nophoto.png | Bin 0 -> 696 bytes .../skins/common/media/images/openid.gif | Bin 0 -> 910 bytes .../skins/common/media/images/openid/aol.gif | Bin 0 -> 2205 bytes .../common/media/images/openid/blogger.ico | Bin 0 -> 3638 bytes .../common/media/images/openid/claimid.ico | Bin 0 -> 3638 bytes .../common/media/images/openid/facebook.gif | Bin 0 -> 2075 bytes .../common/media/images/openid/flickr.ico | Bin 0 -> 1150 bytes .../common/media/images/openid/google.gif | Bin 0 -> 1596 bytes .../media/images/openid/livejournal.ico | Bin 0 -> 5222 bytes .../common/media/images/openid/myopenid.ico | Bin 0 -> 2862 bytes .../media/images/openid/openid-inputicon.gif | Bin 0 -> 237 bytes .../common/media/images/openid/openid.gif | Bin 0 -> 740 bytes .../common/media/images/openid/technorati.ico | Bin 0 -> 2294 bytes .../common/media/images/openid/twitter.png | Bin 0 -> 3130 bytes .../common/media/images/openid/verisign.ico | Bin 0 -> 4710 bytes .../common/media/images/openid/vidoop.ico | Bin 0 -> 1406 bytes .../common/media/images/openid/wordpress.ico | Bin 0 -> 1150 bytes .../common/media/images/openid/yahoo.gif | Bin 0 -> 1510 bytes .../skins/common/media/images/print.png | Bin 0 -> 1391 bytes .../skins/common/media/images/pw-login.gif | Bin 0 -> 1818 bytes .../skins/common/media/images/quest-bg.gif | Bin 0 -> 294 bytes .../skins/common/media/images/scopearrow.png | Bin 0 -> 538 bytes .../skins/common/media/images/sprite.png | Bin 0 -> 5325 bytes .../skins/common/media/images/sprites.png | Bin 0 -> 12545 bytes .../media/images/sprites_source/sprites.svg | 732 ++ .../media/images/summary-background.png | Bin 0 -> 291 bytes .../skins/common/media/images/tag-left.png | Bin 0 -> 290 bytes .../skins/common/media/images/tag-right.png | Bin 0 -> 187 bytes .../common/media/images/vote-accepted-on.png | Bin 0 -> 1124 bytes .../common/media/images/vote-accepted.png | Bin 0 -> 1058 bytes .../media/images/vote-arrow-down-on.png | Bin 0 -> 905 bytes .../common/media/images/vote-arrow-down.png | Bin 0 -> 876 bytes .../common/media/images/vote-arrow-up-on.png | Bin 0 -> 906 bytes .../common/media/images/vote-arrow-up.png | Bin 0 -> 843 bytes .../common/media/images/vote-favorite-off.png | Bin 0 -> 930 bytes .../common/media/images/vote-favorite-on.png | Bin 0 -> 1023 bytes lms/askbot/skins/common/media/images/wiki.png | Bin 0 -> 5178 bytes .../common/media/jquery-openid/images/aol.gif | Bin 0 -> 1872 bytes .../media/jquery-openid/images/blogger-1.png | Bin 0 -> 432 bytes .../media/jquery-openid/images/blogger.ico | Bin 0 -> 3638 bytes .../media/jquery-openid/images/claimid-0.png | Bin 0 -> 629 bytes .../media/jquery-openid/images/claimid.ico | Bin 0 -> 3638 bytes .../media/jquery-openid/images/facebook.gif | Bin 0 -> 1737 bytes .../media/jquery-openid/images/flickr.ico | Bin 0 -> 1150 bytes .../media/jquery-openid/images/flickr.png | Bin 0 -> 426 bytes .../media/jquery-openid/images/google.gif | Bin 0 -> 1528 bytes .../media/jquery-openid/images/identica.png | Bin 0 -> 6601 bytes .../media/jquery-openid/images/linkedin.gif | Bin 0 -> 1530 bytes .../jquery-openid/images/livejournal-1.png | Bin 0 -> 713 bytes .../jquery-openid/images/livejournal.ico | Bin 0 -> 5222 bytes .../media/jquery-openid/images/myopenid-2.png | Bin 0 -> 511 bytes .../media/jquery-openid/images/myopenid.ico | Bin 0 -> 2862 bytes .../jquery-openid/images/openid-inputicon.gif | Bin 0 -> 237 bytes .../media/jquery-openid/images/openid.gif | Bin 0 -> 1473 bytes .../media/jquery-openid/images/openidico.png | Bin 0 -> 654 bytes .../jquery-openid/images/openidico16.png | Bin 0 -> 554 bytes .../jquery-openid/images/technorati-1.png | Bin 0 -> 606 bytes .../media/jquery-openid/images/technorati.ico | Bin 0 -> 2294 bytes .../media/jquery-openid/images/twitter.gif | Bin 0 -> 1913 bytes .../media/jquery-openid/images/verisign-2.png | Bin 0 -> 859 bytes .../media/jquery-openid/images/verisign.ico | Bin 0 -> 4710 bytes .../media/jquery-openid/images/vidoop.ico | Bin 0 -> 1406 bytes .../media/jquery-openid/images/vidoop.png | Bin 0 -> 499 bytes .../media/jquery-openid/images/wordpress.ico | Bin 0 -> 1150 bytes .../media/jquery-openid/images/wordpress.png | Bin 0 -> 566 bytes .../media/jquery-openid/images/yahoo.gif | Bin 0 -> 1607 bytes .../media/jquery-openid/jquery.openid.js | 440 ++ .../common/media/jquery-openid/openid.css | 39 + .../skins/common/media/js/autocompleter.js | 766 ++ lms/askbot/skins/common/media/js/compress.bat | 5 + lms/askbot/skins/common/media/js/editor.js | 75 + .../skins/common/media/js/excanvas.min.js | 1 + .../skins/common/media/js/flot-build.bat | 3 + .../skins/common/media/js/jquery-1.4.3.js | 6883 +++++++++++++++++ .../common/media/js/jquery-fieldselection.js | 83 + .../media/js/jquery-fieldselection.min.js | 1 + .../common/media/js/jquery.ajaxfileupload.js | 195 + .../common/media/js/jquery.animate-colors.js | 105 + .../skins/common/media/js/jquery.flot.js | 2119 +++++ .../skins/common/media/js/jquery.flot.min.js | 1 + .../skins/common/media/js/jquery.form.js | 654 ++ .../skins/common/media/js/jquery.history.js | 1 + .../skins/common/media/js/jquery.i18n.js | 133 + .../skins/common/media/js/jquery.openid.js | 176 + .../skins/common/media/js/jquery.validate.js | 1146 +++ .../common/media/js/jquery.validate.min.js | 16 + .../common/media/js/jquery.validate.pack.js | 15 + lms/askbot/skins/common/media/js/less.min.js | 16 + .../skins/common/media/js/live_search.js | 276 + .../common/media/js/live_search_new_thread.js | 82 + .../skins/common/media/js/modernizr.custom.js | 4 + .../skins/common/media/js/output-words.html | 49 + .../skins/common/media/js/output-words.js | 97 + lms/askbot/skins/common/media/js/post.js | 1952 +++++ lms/askbot/skins/common/media/js/se_hilite.js | 1 + .../skins/common/media/js/se_hilite_src.js | 273 + .../skins/common/media/js/tag_selector.js | 375 + lms/askbot/skins/common/media/js/user.js | 215 + lms/askbot/skins/common/media/js/utils.js | 493 ++ .../wmd/images/editor-toolbar-background.png | Bin 0 -> 282 bytes .../media/js/wmd/images/wmd-buttons.png | Bin 0 -> 11480 bytes .../skins/common/media/js/wmd/showdown-min.js | 1 + .../skins/common/media/js/wmd/showdown.js | 1332 ++++ .../skins/common/media/js/wmd/wmd-min.js | 1 + .../skins/common/media/js/wmd/wmd-test.html | 158 + lms/askbot/skins/common/media/js/wmd/wmd.css | 131 + lms/askbot/skins/common/media/js/wmd/wmd.js | 2438 ++++++ lms/askbot/skins/common/media/style/auth.css | 48 + .../media/style/jquery.autocomplete.css | 37 + .../skins/common/media/style/lib_style.less | 38 + .../skins/common/media/style/openid.css | 45 + .../skins/common/media/style/prettify.css | 27 + lms/askbot/skins/common/media/style/style.css | 2616 +++++++ .../authopenid/authopenid_macros.html | 58 + .../templates/authopenid/changeemail.html | 80 + .../common/templates/authopenid/complete.html | 84 + .../templates/authopenid/confirm_email.txt | 12 + .../templates/authopenid/email_validation.txt | 14 + .../common/templates/authopenid/logout.html | 31 + .../authopenid/providers_javascript.html | 55 + .../common/templates/authopenid/signin.html | 245 + .../authopenid/signup_with_password.html | 58 + .../skins/common/templates/avatar/add.html | 15 + .../skins/common/templates/avatar/change.html | 24 + .../templates/avatar/confirm_delete.html | 15 + .../skins/common/templates/debug_header.html | 27 + .../common/templates/one_column_body.html | 10 + .../question/answer_author_info.html | 6 + .../templates/question/answer_comments.html | 10 + .../templates/question/answer_controls.html | 42 + .../question/answer_vote_buttons.html | 22 + .../question/closed_question_info.html | 5 + .../question/question_author_info.html | 6 + .../templates/question/question_comments.html | 10 + .../templates/question/question_controls.html | 44 + .../templates/question/question_tags.html | 7 + .../question/question_vote_buttons.html | 1 + .../templates/question/share_buttons.html | 5 + .../common/templates/two_column_body.html | 14 + .../common/templates/widgets/edit_post.html | 63 + .../templates/widgets/related_tags.html | 21 + .../common/templates/widgets/search_bar.html | 48 + .../templates/widgets/tag_selector.html | 47 + lms/askbot/skins/loaders.py | 132 + lms/askbot/skins/mitx/media/images/accept.png | Bin 0 -> 727 bytes lms/askbot/skins/mitx/media/images/anon.png | Bin 0 -> 687 bytes .../mitx/media/images/answers-background.png | Bin 0 -> 235 bytes .../media/images/background-user-info.png | Bin 0 -> 361 bytes .../skins/mitx/media/images/bigbutton.png | Bin 0 -> 263 bytes .../mitx/media/images/bigbuttonhover.png | Bin 0 -> 236 bytes .../mitx/media/images/blue-up-arrow-h18px.png | Bin 0 -> 593 bytes .../skins/mitx/media/images/box-arrow.gif | Bin 0 -> 69 bytes .../skins/mitx/media/images/bullet_green.gif | Bin 0 -> 64 bytes .../skins/mitx/media/images/cc-88x31.png | Bin 0 -> 5460 bytes .../skins/mitx/media/images/cc-by-sa.png | Bin 0 -> 5083 bytes .../mitx/media/images/close-small-dark.png | Bin 0 -> 879 bytes .../mitx/media/images/close-small-hover.png | Bin 0 -> 337 bytes .../skins/mitx/media/images/close-small.png | Bin 0 -> 293 bytes lms/askbot/skins/mitx/media/images/close.png | Bin 0 -> 469 bytes .../mitx/media/images/comment-background.png | Bin 0 -> 250 bytes .../skins/mitx/media/images/comment.png | Bin 0 -> 606 bytes .../mitx/media/images/contributorsback.png | Bin 0 -> 714 bytes lms/askbot/skins/mitx/media/images/dash.gif | Bin 0 -> 44 bytes lms/askbot/skins/mitx/media/images/delete.png | Bin 0 -> 434 bytes .../mitx/media/images/dialog-warning-off.png | Bin 0 -> 419 bytes .../mitx/media/images/dialog-warning.png | Bin 0 -> 603 bytes .../media/images/djangomade124x25_grey.gif | Bin 0 -> 2035 bytes lms/askbot/skins/mitx/media/images/dot-g.gif | Bin 0 -> 61 bytes .../skins/mitx/media/images/dot-list.gif | Bin 0 -> 56 bytes lms/askbot/skins/mitx/media/images/edit.png | Bin 0 -> 758 bytes lms/askbot/skins/mitx/media/images/edit2.png | Bin 0 -> 498 bytes .../skins/mitx/media/images/email-sharing.png | Bin 0 -> 1095 bytes .../mitx/media/images/expander-arrow-hide.gif | Bin 0 -> 126 bytes .../mitx/media/images/expander-arrow-show.gif | Bin 0 -> 135 bytes .../mitx/media/images/facebook-sharing.png | Bin 0 -> 1085 bytes .../skins/mitx/media/images/favicon.gif | Bin 0 -> 78 bytes .../skins/mitx/media/images/favicon.ico | Bin 0 -> 14846 bytes .../mitx/media/images/feed-icon-small.png | Bin 0 -> 669 bytes lms/askbot/skins/mitx/media/images/flag.png | Bin 0 -> 515 bytes .../skins/mitx/media/images/go-up-grey.png | Bin 0 -> 563 bytes .../skins/mitx/media/images/go-up-orange.png | Bin 0 -> 586 bytes .../mitx/media/images/google-plus-sharing.png | Bin 0 -> 1161 bytes .../mitx/media/images/gray-up-arrow-h18px.png | Bin 0 -> 383 bytes .../skins/mitx/media/images/grippie.png | Bin 0 -> 162 bytes .../skins/mitx/media/images/indicator.gif | Bin 0 -> 2545 bytes lms/askbot/skins/mitx/media/images/link.png | Bin 0 -> 601 bytes lms/askbot/skins/mitx/media/images/logo.gif | Bin 0 -> 2249 bytes lms/askbot/skins/mitx/media/images/logo.png | Bin 0 -> 5841 bytes lms/askbot/skins/mitx/media/images/logo1.png | Bin 0 -> 2752 bytes lms/askbot/skins/mitx/media/images/logo2.png | Bin 0 -> 2124 bytes .../mitx/media/images/lrg/email-sharing.png | Bin 0 -> 8874 bytes .../media/images/lrg/facebook-sharing.png | Bin 0 -> 8433 bytes .../skins/mitx/media/images/lrg/facebook.png | Bin 0 -> 205 bytes .../media/images/lrg/google-plus-sharing.png | Bin 0 -> 9367 bytes .../skins/mitx/media/images/lrg/linkedin.png | Bin 0 -> 229 bytes .../mitx/media/images/lrg/twitter-sharing.png | Bin 0 -> 8867 bytes .../skins/mitx/media/images/lrg/twitter.png | Bin 0 -> 235 bytes .../mitx/media/images/lrg/youtube-sharing.png | Bin 0 -> 14387 bytes .../mitx/media/images/mail-envelope-empty.png | Bin 0 -> 547 bytes .../mitx/media/images/mail-envelope-full.png | Bin 0 -> 482 bytes lms/askbot/skins/mitx/media/images/medala.gif | Bin 0 -> 801 bytes .../skins/mitx/media/images/medala_on.gif | Bin 0 -> 957 bytes .../skins/mitx/media/images/medium-button.png | Bin 0 -> 217 bytes lms/askbot/skins/mitx/media/images/new.gif | Bin 0 -> 635 bytes .../skins/mitx/media/images/nophoto.png | Bin 0 -> 696 bytes .../skins/mitx/media/images/notification.png | Bin 0 -> 217 bytes lms/askbot/skins/mitx/media/images/openid.gif | Bin 0 -> 910 bytes lms/askbot/skins/mitx/media/images/print.png | Bin 0 -> 1391 bytes .../skins/mitx/media/images/pw-login.gif | Bin 0 -> 1818 bytes .../skins/mitx/media/images/quest-bg.gif | Bin 0 -> 294 bytes lms/askbot/skins/mitx/media/images/retag.png | Bin 0 -> 474 bytes .../skins/mitx/media/images/scopearrow.png | Bin 0 -> 538 bytes .../mitx/media/images/small-button-blue.png | Bin 0 -> 202 bytes .../mitx/media/images/small-button-cancel.png | Bin 0 -> 211 bytes .../media/images/social/email-sharing.png | Bin 0 -> 1095 bytes .../media/images/social/facebook-sharing.png | Bin 0 -> 1085 bytes .../images/social/google-plus-sharing.png | Bin 0 -> 1161 bytes .../media/images/social/twitter-sharing.png | Bin 0 -> 1065 bytes .../media/images/social/youtube-sharing.png | Bin 0 -> 1396 bytes .../skins/mitx/media/images/socialsprite.png | Bin 0 -> 3030 bytes lms/askbot/skins/mitx/media/images/sprite.png | Bin 0 -> 5325 bytes .../skins/mitx/media/images/sprites.png | Bin 0 -> 12705 bytes .../media/images/sprites_source/graphics.svg | 1291 ++++ .../media/images/sprites_source/sprites.svg | 507 ++ .../mitx/media/images/summary-background.png | Bin 0 -> 233 bytes .../skins/mitx/media/images/tag-left.png | Bin 0 -> 488 bytes .../skins/mitx/media/images/tag-right.png | Bin 0 -> 365 bytes lms/askbot/skins/mitx/media/images/tips.png | Bin 0 -> 716 bytes .../mitx/media/images/twitter-sharing.png | Bin 0 -> 1065 bytes .../mitx/media/images/view-background.png | Bin 0 -> 265 bytes .../mitx/media/images/vote-accepted-on.png | Bin 0 -> 1124 bytes .../skins/mitx/media/images/vote-accepted.png | Bin 0 -> 1058 bytes .../mitx/media/images/vote-arrow-down-new.png | Bin 0 -> 1458 bytes .../media/images/vote-arrow-down-on-new.png | Bin 0 -> 980 bytes .../mitx/media/images/vote-arrow-down-on.png | Bin 0 -> 905 bytes .../mitx/media/images/vote-arrow-down.png | Bin 0 -> 876 bytes .../mitx/media/images/vote-arrow-up-new.png | Bin 0 -> 979 bytes .../media/images/vote-arrow-up-on-new.png | Bin 0 -> 1029 bytes .../mitx/media/images/vote-arrow-up-on.png | Bin 0 -> 906 bytes .../skins/mitx/media/images/vote-arrow-up.png | Bin 0 -> 843 bytes .../mitx/media/images/vote-background.png | Bin 0 -> 225 bytes .../mitx/media/images/vote-favorite-off.png | Bin 0 -> 930 bytes .../mitx/media/images/vote-favorite-on.png | Bin 0 -> 1023 bytes lms/askbot/skins/mitx/media/images/wiki.png | Bin 0 -> 5178 bytes .../mitx/media/images/youtube-sharing.png | Bin 0 -> 1396 bytes lms/askbot/skins/mitx/media/style/auth.css | 48 + lms/askbot/skins/mitx/media/style/extra.css | 227 + .../mitx/media/style/jquery.autocomplete.css | 40 + .../skins/mitx/media/style/lib_style.less | 65 + lms/askbot/skins/mitx/media/style/openid.css | 45 + .../skins/mitx/media/style/prettify.css | 27 + lms/askbot/skins/mitx/media/style/style.css | 3165 ++++++++ lms/askbot/skins/mitx/media/style/style.less | 3351 ++++++++ lms/askbot/skins/mitx/templates/404.html | 5 + .../skins/mitx/templates/404.jinja.html | 44 + lms/askbot/skins/mitx/templates/500.html | 5 + .../skins/mitx/templates/500.jinja.html | 25 + .../skins/mitx/templates/answer_edit.html | 84 + lms/askbot/skins/mitx/templates/ask.html | 67 + lms/askbot/skins/mitx/templates/badge.html | 40 + lms/askbot/skins/mitx/templates/badges.html | 66 + lms/askbot/skins/mitx/templates/base.html | 47 + lms/askbot/skins/mitx/templates/close.html | 28 + .../templates/course_navigation.jinja.html | 16 + .../skins/mitx/templates/faq_static.html | 93 + lms/askbot/skins/mitx/templates/feedback.html | 68 + .../skins/mitx/templates/feedback_email.txt | 13 + lms/askbot/skins/mitx/templates/help.html | 33 + .../skins/mitx/templates/import_data.html | 31 + .../mitx/templates/instant_notification.html | 42 + lms/askbot/skins/mitx/templates/macros.html | 625 ++ .../skins/mitx/templates/main_page.html | 28 + .../mitx/templates/main_page/content.html | 3 + .../mitx/templates/main_page/headline.html | 42 + .../mitx/templates/main_page/javascript.html | 32 + .../templates/main_page/nothing_found.html | 30 + .../mitx/templates/main_page/paginator.html | 7 + .../templates/main_page/questions_loop.html | 14 + .../templates/main_page/scope_filters.html | 16 + .../mitx/templates/main_page/sidebar.html | 34 + .../mitx/templates/main_page/tab_bar.html | 119 + .../mitx/templates/meta/bottom_scripts.html | 107 + .../mitx/templates/meta/editor_data.html | 13 + .../templates/meta/html_head_javascript.html | 11 + .../mitx/templates/meta/html_head_meta.html | 8 + .../templates/meta/html_head_stylesheets.html | 3 + .../templates/meta/mandatory_tags_js.html | 25 + .../mitx/templates/navigation.jinja.html | 27 + lms/askbot/skins/mitx/templates/question.html | 23 + .../mitx/templates/question/answer_card.html | 41 + .../templates/question/answer_tab_bar.html | 29 + .../mitx/templates/question/content.html | 42 + .../mitx/templates/question/javascript.html | 91 + .../templates/question/new_answer_form.html | 59 + .../templates/question/question_card.html | 47 + .../question/sharing_prompt_phrase.html | 13 + .../mitx/templates/question/sidebar.html | 63 + .../question/subscribe_by_email_prompt.html | 23 + .../skins/mitx/templates/question_edit.html | 96 + .../skins/mitx/templates/question_retag.html | 68 + .../skins/mitx/templates/question_widget.html | 21 + lms/askbot/skins/mitx/templates/reopen.html | 38 + .../skins/mitx/templates/revisions.html | 102 + .../skins/mitx/templates/static_page.html | 10 + .../mitx/templates/subscribe_for_tags.html | 19 + lms/askbot/skins/mitx/templates/tags.html | 75 + .../mitx/templates/user_profile/user.html | 30 + .../templates/user_profile/user_edit.html | 120 + .../user_email_subscriptions.html | 27 + .../user_profile/user_favorites.html | 9 + .../templates/user_profile/user_inbox.html | 131 + .../templates/user_profile/user_info.html | 90 + .../templates/user_profile/user_moderate.html | 93 + .../templates/user_profile/user_network.html | 25 + .../templates/user_profile/user_recent.html | 40 + .../user_profile/user_reputation.html | 41 + .../templates/user_profile/user_stats.html | 155 + .../templates/user_profile/user_tabs.html | 57 + .../templates/user_profile/user_votes.html | 30 + .../user_profile/users_questions.html | 9 + lms/askbot/skins/mitx/templates/users.html | 60 + .../templates/widgets/answer_edit_tips.html | 64 + .../mitx/templates/widgets/ask_button.html | 6 + .../mitx/templates/widgets/ask_form.html | 49 + .../mitx/templates/widgets/contributors.html | 10 + .../skins/mitx/templates/widgets/footer.html | 38 + .../skins/mitx/templates/widgets/header.html | 4 + .../skins/mitx/templates/widgets/logo.html | 5 + .../mitx/templates/widgets/meta_nav.html | 15 + .../templates/widgets/question_edit_tips.html | 69 + .../templates/widgets/question_summary.html | 63 + .../mitx/templates/widgets/scope_nav.html | 25 + .../templates/widgets/secondary_header.html | 21 + .../templates/widgets/system_messages.html | 8 + .../mitx/templates/widgets/user_list.html | 22 + .../user_long_score_and_badge_summary.html | 21 + .../templates/widgets/user_navigation.html | 17 + .../widgets/user_score_and_badge_summary.html | 19 + lms/askbot/skins/utils.py | 195 + lms/djangoapps/courseware/tabs.py | 3 + lms/envs/askbotsettings.py | 293 + lms/envs/aws.py | 3 +- lms/envs/common.py | 61 +- lms/envs/dev.py | 13 +- lms/envs/dev_ike.py | 1 + lms/envs/devgroups/courses.py | 4 + lms/envs/devgroups/h_cs50.py | 1 + lms/envs/devgroups/m_6002.py | 1 + lms/envs/devplus.py | 2 +- lms/envs/edx4edx_aws.py | 1 + lms/envs/static.py | 12 +- lms/envs/test.py | 16 +- lms/envs/test_ike.py | 14 +- lms/static/sass/course.scss | 1 - lms/urls.py | 21 +- 651 files changed, 39089 insertions(+), 15 deletions(-) create mode 100644 .hgignore create mode 160000 askbot create mode 100644 lms/askbot/skins/README create mode 100644 lms/askbot/skins/__init__.py create mode 100644 lms/askbot/skins/common/media/images/anon.png create mode 100644 lms/askbot/skins/common/media/images/bigbutton.png create mode 100644 lms/askbot/skins/common/media/images/bigbuttonhover.png create mode 100755 lms/askbot/skins/common/media/images/blue-up-arrow-h18px.png create mode 100755 lms/askbot/skins/common/media/images/box-arrow.gif create mode 100755 lms/askbot/skins/common/media/images/bullet_green.gif create mode 100755 lms/askbot/skins/common/media/images/cc-88x31.png create mode 100644 lms/askbot/skins/common/media/images/cc-by-sa.png create mode 100755 lms/askbot/skins/common/media/images/close-small-dark.png create mode 100755 lms/askbot/skins/common/media/images/close-small-hover.png create mode 100755 lms/askbot/skins/common/media/images/close-small.png create mode 100644 lms/askbot/skins/common/media/images/contributorsback.png create mode 100755 lms/askbot/skins/common/media/images/dash.gif create mode 100644 lms/askbot/skins/common/media/images/dialog-warning-off.png create mode 100644 lms/askbot/skins/common/media/images/dialog-warning.png create mode 100755 lms/askbot/skins/common/media/images/djangomade124x25_grey.gif create mode 100755 lms/askbot/skins/common/media/images/dot-g.gif create mode 100755 lms/askbot/skins/common/media/images/dot-list.gif create mode 100755 lms/askbot/skins/common/media/images/edit.png create mode 100755 lms/askbot/skins/common/media/images/expander-arrow-hide.gif create mode 100755 lms/askbot/skins/common/media/images/expander-arrow-show.gif create mode 100644 lms/askbot/skins/common/media/images/favicon.gif create mode 100644 lms/askbot/skins/common/media/images/favicon.ico create mode 100644 lms/askbot/skins/common/media/images/feed-icon-small.png create mode 100755 lms/askbot/skins/common/media/images/flags/ad.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ae.gif create mode 100755 lms/askbot/skins/common/media/images/flags/af.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ag.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ai.gif create mode 100755 lms/askbot/skins/common/media/images/flags/al.gif create mode 100755 lms/askbot/skins/common/media/images/flags/am.gif create mode 100755 lms/askbot/skins/common/media/images/flags/an.gif create mode 100644 lms/askbot/skins/common/media/images/flags/ao.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ar.gif create mode 100755 lms/askbot/skins/common/media/images/flags/as.gif create mode 100755 lms/askbot/skins/common/media/images/flags/at.gif create mode 100755 lms/askbot/skins/common/media/images/flags/au.gif create mode 100755 lms/askbot/skins/common/media/images/flags/aw.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ax.gif create mode 100755 lms/askbot/skins/common/media/images/flags/az.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ba.gif create mode 100755 lms/askbot/skins/common/media/images/flags/bb.gif create mode 100755 lms/askbot/skins/common/media/images/flags/bd.gif create mode 100755 lms/askbot/skins/common/media/images/flags/be.gif create mode 100755 lms/askbot/skins/common/media/images/flags/bf.gif create mode 100755 lms/askbot/skins/common/media/images/flags/bg.gif create mode 100755 lms/askbot/skins/common/media/images/flags/bh.gif create mode 100755 lms/askbot/skins/common/media/images/flags/bi.gif create mode 100755 lms/askbot/skins/common/media/images/flags/bj.gif create mode 100755 lms/askbot/skins/common/media/images/flags/bm.gif create mode 100755 lms/askbot/skins/common/media/images/flags/bn.gif create mode 100755 lms/askbot/skins/common/media/images/flags/bo.gif create mode 100755 lms/askbot/skins/common/media/images/flags/br.gif create mode 100755 lms/askbot/skins/common/media/images/flags/bs.gif create mode 100755 lms/askbot/skins/common/media/images/flags/bt.gif create mode 100755 lms/askbot/skins/common/media/images/flags/bv.gif create mode 100755 lms/askbot/skins/common/media/images/flags/bw.gif create mode 100755 lms/askbot/skins/common/media/images/flags/by.gif create mode 100755 lms/askbot/skins/common/media/images/flags/bz.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ca.gif create mode 100644 lms/askbot/skins/common/media/images/flags/catalonia.gif create mode 100755 lms/askbot/skins/common/media/images/flags/cc.gif create mode 100644 lms/askbot/skins/common/media/images/flags/cd.gif create mode 100755 lms/askbot/skins/common/media/images/flags/cf.gif create mode 100755 lms/askbot/skins/common/media/images/flags/cg.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ch.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ci.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ck.gif create mode 100755 lms/askbot/skins/common/media/images/flags/cl.gif create mode 100755 lms/askbot/skins/common/media/images/flags/cm.gif create mode 100755 lms/askbot/skins/common/media/images/flags/cn.gif create mode 100755 lms/askbot/skins/common/media/images/flags/co.gif create mode 100755 lms/askbot/skins/common/media/images/flags/cr.gif create mode 100755 lms/askbot/skins/common/media/images/flags/cs.gif create mode 100755 lms/askbot/skins/common/media/images/flags/cu.gif create mode 100755 lms/askbot/skins/common/media/images/flags/cv.gif create mode 100755 lms/askbot/skins/common/media/images/flags/cx.gif create mode 100755 lms/askbot/skins/common/media/images/flags/cy.gif create mode 100755 lms/askbot/skins/common/media/images/flags/cz.gif create mode 100755 lms/askbot/skins/common/media/images/flags/de.gif create mode 100755 lms/askbot/skins/common/media/images/flags/dj.gif create mode 100755 lms/askbot/skins/common/media/images/flags/dk.gif create mode 100755 lms/askbot/skins/common/media/images/flags/dm.gif create mode 100755 lms/askbot/skins/common/media/images/flags/do.gif create mode 100755 lms/askbot/skins/common/media/images/flags/dz.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ec.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ee.gif create mode 100755 lms/askbot/skins/common/media/images/flags/eg.gif create mode 100755 lms/askbot/skins/common/media/images/flags/eh.gif create mode 100755 lms/askbot/skins/common/media/images/flags/england.gif create mode 100755 lms/askbot/skins/common/media/images/flags/er.gif create mode 100755 lms/askbot/skins/common/media/images/flags/es.gif create mode 100755 lms/askbot/skins/common/media/images/flags/et.gif create mode 100644 lms/askbot/skins/common/media/images/flags/europeanunion.gif create mode 100755 lms/askbot/skins/common/media/images/flags/fam.gif create mode 100755 lms/askbot/skins/common/media/images/flags/fi.gif create mode 100755 lms/askbot/skins/common/media/images/flags/fj.gif create mode 100755 lms/askbot/skins/common/media/images/flags/fk.gif create mode 100755 lms/askbot/skins/common/media/images/flags/fm.gif create mode 100755 lms/askbot/skins/common/media/images/flags/fo.gif create mode 100755 lms/askbot/skins/common/media/images/flags/fr.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ga.gif create mode 100644 lms/askbot/skins/common/media/images/flags/gb.gif create mode 100755 lms/askbot/skins/common/media/images/flags/gd.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ge.gif create mode 100755 lms/askbot/skins/common/media/images/flags/gf.gif create mode 100755 lms/askbot/skins/common/media/images/flags/gh.gif create mode 100755 lms/askbot/skins/common/media/images/flags/gi.gif create mode 100755 lms/askbot/skins/common/media/images/flags/gl.gif create mode 100755 lms/askbot/skins/common/media/images/flags/gm.gif create mode 100755 lms/askbot/skins/common/media/images/flags/gn.gif create mode 100755 lms/askbot/skins/common/media/images/flags/gp.gif create mode 100755 lms/askbot/skins/common/media/images/flags/gq.gif create mode 100755 lms/askbot/skins/common/media/images/flags/gr.gif create mode 100755 lms/askbot/skins/common/media/images/flags/gs.gif create mode 100755 lms/askbot/skins/common/media/images/flags/gt.gif create mode 100755 lms/askbot/skins/common/media/images/flags/gu.gif create mode 100755 lms/askbot/skins/common/media/images/flags/gw.gif create mode 100755 lms/askbot/skins/common/media/images/flags/gy.gif create mode 100755 lms/askbot/skins/common/media/images/flags/hk.gif create mode 100755 lms/askbot/skins/common/media/images/flags/hm.gif create mode 100755 lms/askbot/skins/common/media/images/flags/hn.gif create mode 100755 lms/askbot/skins/common/media/images/flags/hr.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ht.gif create mode 100755 lms/askbot/skins/common/media/images/flags/hu.gif create mode 100755 lms/askbot/skins/common/media/images/flags/id.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ie.gif create mode 100755 lms/askbot/skins/common/media/images/flags/il.gif create mode 100755 lms/askbot/skins/common/media/images/flags/in.gif create mode 100755 lms/askbot/skins/common/media/images/flags/io.gif create mode 100755 lms/askbot/skins/common/media/images/flags/iq.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ir.gif create mode 100755 lms/askbot/skins/common/media/images/flags/is.gif create mode 100755 lms/askbot/skins/common/media/images/flags/it.gif create mode 100755 lms/askbot/skins/common/media/images/flags/jm.gif create mode 100755 lms/askbot/skins/common/media/images/flags/jo.gif create mode 100755 lms/askbot/skins/common/media/images/flags/jp.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ke.gif create mode 100755 lms/askbot/skins/common/media/images/flags/kg.gif create mode 100755 lms/askbot/skins/common/media/images/flags/kh.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ki.gif create mode 100755 lms/askbot/skins/common/media/images/flags/km.gif create mode 100755 lms/askbot/skins/common/media/images/flags/kn.gif create mode 100755 lms/askbot/skins/common/media/images/flags/kp.gif create mode 100755 lms/askbot/skins/common/media/images/flags/kr.gif create mode 100755 lms/askbot/skins/common/media/images/flags/kw.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ky.gif create mode 100755 lms/askbot/skins/common/media/images/flags/kz.gif create mode 100755 lms/askbot/skins/common/media/images/flags/la.gif create mode 100755 lms/askbot/skins/common/media/images/flags/lb.gif create mode 100644 lms/askbot/skins/common/media/images/flags/lc.gif create mode 100755 lms/askbot/skins/common/media/images/flags/li.gif create mode 100755 lms/askbot/skins/common/media/images/flags/lk.gif create mode 100755 lms/askbot/skins/common/media/images/flags/lr.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ls.gif create mode 100755 lms/askbot/skins/common/media/images/flags/lt.gif create mode 100755 lms/askbot/skins/common/media/images/flags/lu.gif create mode 100755 lms/askbot/skins/common/media/images/flags/lv.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ly.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ma.gif create mode 100755 lms/askbot/skins/common/media/images/flags/mc.gif create mode 100755 lms/askbot/skins/common/media/images/flags/md.gif create mode 100644 lms/askbot/skins/common/media/images/flags/me.gif create mode 100755 lms/askbot/skins/common/media/images/flags/mg.gif create mode 100755 lms/askbot/skins/common/media/images/flags/mh.gif create mode 100755 lms/askbot/skins/common/media/images/flags/mk.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ml.gif create mode 100755 lms/askbot/skins/common/media/images/flags/mm.gif create mode 100755 lms/askbot/skins/common/media/images/flags/mn.gif create mode 100755 lms/askbot/skins/common/media/images/flags/mo.gif create mode 100755 lms/askbot/skins/common/media/images/flags/mp.gif create mode 100755 lms/askbot/skins/common/media/images/flags/mq.gif create mode 100755 lms/askbot/skins/common/media/images/flags/mr.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ms.gif create mode 100755 lms/askbot/skins/common/media/images/flags/mt.gif create mode 100755 lms/askbot/skins/common/media/images/flags/mu.gif create mode 100755 lms/askbot/skins/common/media/images/flags/mv.gif create mode 100755 lms/askbot/skins/common/media/images/flags/mw.gif create mode 100755 lms/askbot/skins/common/media/images/flags/mx.gif create mode 100755 lms/askbot/skins/common/media/images/flags/my.gif create mode 100755 lms/askbot/skins/common/media/images/flags/mz.gif create mode 100755 lms/askbot/skins/common/media/images/flags/na.gif create mode 100755 lms/askbot/skins/common/media/images/flags/nc.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ne.gif create mode 100755 lms/askbot/skins/common/media/images/flags/nf.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ng.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ni.gif create mode 100755 lms/askbot/skins/common/media/images/flags/nl.gif create mode 100755 lms/askbot/skins/common/media/images/flags/no.gif create mode 100755 lms/askbot/skins/common/media/images/flags/np.gif create mode 100755 lms/askbot/skins/common/media/images/flags/nr.gif create mode 100755 lms/askbot/skins/common/media/images/flags/nu.gif create mode 100755 lms/askbot/skins/common/media/images/flags/nz.gif create mode 100755 lms/askbot/skins/common/media/images/flags/om.gif create mode 100755 lms/askbot/skins/common/media/images/flags/pa.gif create mode 100755 lms/askbot/skins/common/media/images/flags/pe.gif create mode 100755 lms/askbot/skins/common/media/images/flags/pf.gif create mode 100755 lms/askbot/skins/common/media/images/flags/pg.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ph.gif create mode 100755 lms/askbot/skins/common/media/images/flags/pk.gif create mode 100755 lms/askbot/skins/common/media/images/flags/pl.gif create mode 100755 lms/askbot/skins/common/media/images/flags/pm.gif create mode 100755 lms/askbot/skins/common/media/images/flags/pn.gif create mode 100755 lms/askbot/skins/common/media/images/flags/pr.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ps.gif create mode 100755 lms/askbot/skins/common/media/images/flags/pt.gif create mode 100755 lms/askbot/skins/common/media/images/flags/pw.gif create mode 100755 lms/askbot/skins/common/media/images/flags/py.gif create mode 100755 lms/askbot/skins/common/media/images/flags/qa.gif create mode 100755 lms/askbot/skins/common/media/images/flags/re.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ro.gif create mode 100644 lms/askbot/skins/common/media/images/flags/rs.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ru.gif create mode 100755 lms/askbot/skins/common/media/images/flags/rw.gif create mode 100755 lms/askbot/skins/common/media/images/flags/sa.gif create mode 100755 lms/askbot/skins/common/media/images/flags/sb.gif create mode 100755 lms/askbot/skins/common/media/images/flags/sc.gif create mode 100755 lms/askbot/skins/common/media/images/flags/scotland.gif create mode 100755 lms/askbot/skins/common/media/images/flags/sd.gif create mode 100755 lms/askbot/skins/common/media/images/flags/se.gif create mode 100755 lms/askbot/skins/common/media/images/flags/sg.gif create mode 100755 lms/askbot/skins/common/media/images/flags/sh.gif create mode 100755 lms/askbot/skins/common/media/images/flags/si.gif create mode 100755 lms/askbot/skins/common/media/images/flags/sj.gif create mode 100755 lms/askbot/skins/common/media/images/flags/sk.gif create mode 100755 lms/askbot/skins/common/media/images/flags/sl.gif create mode 100755 lms/askbot/skins/common/media/images/flags/sm.gif create mode 100755 lms/askbot/skins/common/media/images/flags/sn.gif create mode 100755 lms/askbot/skins/common/media/images/flags/so.gif create mode 100755 lms/askbot/skins/common/media/images/flags/sr.gif create mode 100755 lms/askbot/skins/common/media/images/flags/st.gif create mode 100755 lms/askbot/skins/common/media/images/flags/sv.gif create mode 100755 lms/askbot/skins/common/media/images/flags/sy.gif create mode 100755 lms/askbot/skins/common/media/images/flags/sz.gif create mode 100755 lms/askbot/skins/common/media/images/flags/tc.gif create mode 100755 lms/askbot/skins/common/media/images/flags/td.gif create mode 100755 lms/askbot/skins/common/media/images/flags/tf.gif create mode 100755 lms/askbot/skins/common/media/images/flags/tg.gif create mode 100755 lms/askbot/skins/common/media/images/flags/th.gif create mode 100755 lms/askbot/skins/common/media/images/flags/tj.gif create mode 100755 lms/askbot/skins/common/media/images/flags/tk.gif create mode 100755 lms/askbot/skins/common/media/images/flags/tl.gif create mode 100755 lms/askbot/skins/common/media/images/flags/tm.gif create mode 100755 lms/askbot/skins/common/media/images/flags/tn.gif create mode 100755 lms/askbot/skins/common/media/images/flags/to.gif create mode 100755 lms/askbot/skins/common/media/images/flags/tr.gif create mode 100755 lms/askbot/skins/common/media/images/flags/tt.gif create mode 100755 lms/askbot/skins/common/media/images/flags/tv.gif create mode 100755 lms/askbot/skins/common/media/images/flags/tw.gif create mode 100755 lms/askbot/skins/common/media/images/flags/tz.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ua.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ug.gif create mode 100755 lms/askbot/skins/common/media/images/flags/um.gif create mode 100755 lms/askbot/skins/common/media/images/flags/us.gif create mode 100755 lms/askbot/skins/common/media/images/flags/uy.gif create mode 100755 lms/askbot/skins/common/media/images/flags/uz.gif create mode 100755 lms/askbot/skins/common/media/images/flags/va.gif create mode 100755 lms/askbot/skins/common/media/images/flags/vc.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ve.gif create mode 100755 lms/askbot/skins/common/media/images/flags/vg.gif create mode 100755 lms/askbot/skins/common/media/images/flags/vi.gif create mode 100755 lms/askbot/skins/common/media/images/flags/vn.gif create mode 100755 lms/askbot/skins/common/media/images/flags/vu.gif create mode 100755 lms/askbot/skins/common/media/images/flags/wales.gif create mode 100755 lms/askbot/skins/common/media/images/flags/wf.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ws.gif create mode 100755 lms/askbot/skins/common/media/images/flags/ye.gif create mode 100755 lms/askbot/skins/common/media/images/flags/yt.gif create mode 100755 lms/askbot/skins/common/media/images/flags/za.gif create mode 100755 lms/askbot/skins/common/media/images/flags/zm.gif create mode 100755 lms/askbot/skins/common/media/images/flags/zw.gif create mode 100644 lms/askbot/skins/common/media/images/go-up-grey.png create mode 100644 lms/askbot/skins/common/media/images/go-up-orange.png create mode 100755 lms/askbot/skins/common/media/images/gray-up-arrow-h18px.png create mode 100755 lms/askbot/skins/common/media/images/grippie.png create mode 100755 lms/askbot/skins/common/media/images/indicator.gif create mode 100644 lms/askbot/skins/common/media/images/logo.gif create mode 100644 lms/askbot/skins/common/media/images/logo.png create mode 100755 lms/askbot/skins/common/media/images/logo1.png create mode 100755 lms/askbot/skins/common/media/images/logo2.png create mode 100644 lms/askbot/skins/common/media/images/mail-envelope-empty.png create mode 100644 lms/askbot/skins/common/media/images/mail-envelope-full.png create mode 100755 lms/askbot/skins/common/media/images/medala.gif create mode 100755 lms/askbot/skins/common/media/images/medala_on.gif create mode 100755 lms/askbot/skins/common/media/images/new.gif create mode 100755 lms/askbot/skins/common/media/images/nophoto.png create mode 100755 lms/askbot/skins/common/media/images/openid.gif create mode 100755 lms/askbot/skins/common/media/images/openid/aol.gif create mode 100755 lms/askbot/skins/common/media/images/openid/blogger.ico create mode 100755 lms/askbot/skins/common/media/images/openid/claimid.ico create mode 100755 lms/askbot/skins/common/media/images/openid/facebook.gif create mode 100755 lms/askbot/skins/common/media/images/openid/flickr.ico create mode 100755 lms/askbot/skins/common/media/images/openid/google.gif create mode 100755 lms/askbot/skins/common/media/images/openid/livejournal.ico create mode 100755 lms/askbot/skins/common/media/images/openid/myopenid.ico create mode 100755 lms/askbot/skins/common/media/images/openid/openid-inputicon.gif create mode 100755 lms/askbot/skins/common/media/images/openid/openid.gif create mode 100755 lms/askbot/skins/common/media/images/openid/technorati.ico create mode 100755 lms/askbot/skins/common/media/images/openid/twitter.png create mode 100755 lms/askbot/skins/common/media/images/openid/verisign.ico create mode 100755 lms/askbot/skins/common/media/images/openid/vidoop.ico create mode 100755 lms/askbot/skins/common/media/images/openid/wordpress.ico create mode 100755 lms/askbot/skins/common/media/images/openid/yahoo.gif create mode 100644 lms/askbot/skins/common/media/images/print.png create mode 100644 lms/askbot/skins/common/media/images/pw-login.gif create mode 100755 lms/askbot/skins/common/media/images/quest-bg.gif create mode 100644 lms/askbot/skins/common/media/images/scopearrow.png create mode 100644 lms/askbot/skins/common/media/images/sprite.png create mode 100644 lms/askbot/skins/common/media/images/sprites.png create mode 100644 lms/askbot/skins/common/media/images/sprites_source/sprites.svg create mode 100644 lms/askbot/skins/common/media/images/summary-background.png create mode 100644 lms/askbot/skins/common/media/images/tag-left.png create mode 100644 lms/askbot/skins/common/media/images/tag-right.png create mode 100755 lms/askbot/skins/common/media/images/vote-accepted-on.png create mode 100755 lms/askbot/skins/common/media/images/vote-accepted.png create mode 100755 lms/askbot/skins/common/media/images/vote-arrow-down-on.png create mode 100755 lms/askbot/skins/common/media/images/vote-arrow-down.png create mode 100755 lms/askbot/skins/common/media/images/vote-arrow-up-on.png create mode 100755 lms/askbot/skins/common/media/images/vote-arrow-up.png create mode 100755 lms/askbot/skins/common/media/images/vote-favorite-off.png create mode 100755 lms/askbot/skins/common/media/images/vote-favorite-on.png create mode 100644 lms/askbot/skins/common/media/images/wiki.png create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/aol.gif create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/blogger-1.png create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/blogger.ico create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/claimid-0.png create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/claimid.ico create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/facebook.gif create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/flickr.ico create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/flickr.png create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/google.gif create mode 100644 lms/askbot/skins/common/media/jquery-openid/images/identica.png create mode 100644 lms/askbot/skins/common/media/jquery-openid/images/linkedin.gif create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/livejournal-1.png create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/livejournal.ico create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/myopenid-2.png create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/myopenid.ico create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/openid-inputicon.gif create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/openid.gif create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/openidico.png create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/openidico16.png create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/technorati-1.png create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/technorati.ico create mode 100644 lms/askbot/skins/common/media/jquery-openid/images/twitter.gif create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/verisign-2.png create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/verisign.ico create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/vidoop.ico create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/vidoop.png create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/wordpress.ico create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/wordpress.png create mode 100755 lms/askbot/skins/common/media/jquery-openid/images/yahoo.gif create mode 100644 lms/askbot/skins/common/media/jquery-openid/jquery.openid.js create mode 100644 lms/askbot/skins/common/media/jquery-openid/openid.css create mode 100644 lms/askbot/skins/common/media/js/autocompleter.js create mode 100644 lms/askbot/skins/common/media/js/compress.bat create mode 100644 lms/askbot/skins/common/media/js/editor.js create mode 100644 lms/askbot/skins/common/media/js/excanvas.min.js create mode 100644 lms/askbot/skins/common/media/js/flot-build.bat create mode 100644 lms/askbot/skins/common/media/js/jquery-1.4.3.js create mode 100644 lms/askbot/skins/common/media/js/jquery-fieldselection.js create mode 100644 lms/askbot/skins/common/media/js/jquery-fieldselection.min.js create mode 100644 lms/askbot/skins/common/media/js/jquery.ajaxfileupload.js create mode 100644 lms/askbot/skins/common/media/js/jquery.animate-colors.js create mode 100644 lms/askbot/skins/common/media/js/jquery.flot.js create mode 100644 lms/askbot/skins/common/media/js/jquery.flot.min.js create mode 100644 lms/askbot/skins/common/media/js/jquery.form.js create mode 100644 lms/askbot/skins/common/media/js/jquery.history.js create mode 100644 lms/askbot/skins/common/media/js/jquery.i18n.js create mode 100644 lms/askbot/skins/common/media/js/jquery.openid.js create mode 100644 lms/askbot/skins/common/media/js/jquery.validate.js create mode 100644 lms/askbot/skins/common/media/js/jquery.validate.min.js create mode 100644 lms/askbot/skins/common/media/js/jquery.validate.pack.js create mode 100644 lms/askbot/skins/common/media/js/less.min.js create mode 100644 lms/askbot/skins/common/media/js/live_search.js create mode 100644 lms/askbot/skins/common/media/js/live_search_new_thread.js create mode 100644 lms/askbot/skins/common/media/js/modernizr.custom.js create mode 100644 lms/askbot/skins/common/media/js/output-words.html create mode 100644 lms/askbot/skins/common/media/js/output-words.js create mode 100644 lms/askbot/skins/common/media/js/post.js create mode 100644 lms/askbot/skins/common/media/js/se_hilite.js create mode 100644 lms/askbot/skins/common/media/js/se_hilite_src.js create mode 100644 lms/askbot/skins/common/media/js/tag_selector.js create mode 100644 lms/askbot/skins/common/media/js/user.js create mode 100644 lms/askbot/skins/common/media/js/utils.js create mode 100644 lms/askbot/skins/common/media/js/wmd/images/editor-toolbar-background.png create mode 100755 lms/askbot/skins/common/media/js/wmd/images/wmd-buttons.png create mode 100644 lms/askbot/skins/common/media/js/wmd/showdown-min.js create mode 100644 lms/askbot/skins/common/media/js/wmd/showdown.js create mode 100644 lms/askbot/skins/common/media/js/wmd/wmd-min.js create mode 100644 lms/askbot/skins/common/media/js/wmd/wmd-test.html create mode 100644 lms/askbot/skins/common/media/js/wmd/wmd.css create mode 100644 lms/askbot/skins/common/media/js/wmd/wmd.js create mode 100644 lms/askbot/skins/common/media/style/auth.css create mode 100644 lms/askbot/skins/common/media/style/jquery.autocomplete.css create mode 100644 lms/askbot/skins/common/media/style/lib_style.less create mode 100644 lms/askbot/skins/common/media/style/openid.css create mode 100644 lms/askbot/skins/common/media/style/prettify.css create mode 100644 lms/askbot/skins/common/media/style/style.css create mode 100644 lms/askbot/skins/common/templates/authopenid/authopenid_macros.html create mode 100644 lms/askbot/skins/common/templates/authopenid/changeemail.html create mode 100644 lms/askbot/skins/common/templates/authopenid/complete.html create mode 100644 lms/askbot/skins/common/templates/authopenid/confirm_email.txt create mode 100644 lms/askbot/skins/common/templates/authopenid/email_validation.txt create mode 100644 lms/askbot/skins/common/templates/authopenid/logout.html create mode 100644 lms/askbot/skins/common/templates/authopenid/providers_javascript.html create mode 100644 lms/askbot/skins/common/templates/authopenid/signin.html create mode 100644 lms/askbot/skins/common/templates/authopenid/signup_with_password.html create mode 100644 lms/askbot/skins/common/templates/avatar/add.html create mode 100644 lms/askbot/skins/common/templates/avatar/change.html create mode 100644 lms/askbot/skins/common/templates/avatar/confirm_delete.html create mode 100644 lms/askbot/skins/common/templates/debug_header.html create mode 100644 lms/askbot/skins/common/templates/one_column_body.html create mode 100644 lms/askbot/skins/common/templates/question/answer_author_info.html create mode 100644 lms/askbot/skins/common/templates/question/answer_comments.html create mode 100644 lms/askbot/skins/common/templates/question/answer_controls.html create mode 100644 lms/askbot/skins/common/templates/question/answer_vote_buttons.html create mode 100644 lms/askbot/skins/common/templates/question/closed_question_info.html create mode 100644 lms/askbot/skins/common/templates/question/question_author_info.html create mode 100644 lms/askbot/skins/common/templates/question/question_comments.html create mode 100644 lms/askbot/skins/common/templates/question/question_controls.html create mode 100644 lms/askbot/skins/common/templates/question/question_tags.html create mode 100644 lms/askbot/skins/common/templates/question/question_vote_buttons.html create mode 100644 lms/askbot/skins/common/templates/question/share_buttons.html create mode 100644 lms/askbot/skins/common/templates/two_column_body.html create mode 100644 lms/askbot/skins/common/templates/widgets/edit_post.html create mode 100644 lms/askbot/skins/common/templates/widgets/related_tags.html create mode 100644 lms/askbot/skins/common/templates/widgets/search_bar.html create mode 100644 lms/askbot/skins/common/templates/widgets/tag_selector.html create mode 100644 lms/askbot/skins/loaders.py create mode 100644 lms/askbot/skins/mitx/media/images/accept.png create mode 100644 lms/askbot/skins/mitx/media/images/anon.png create mode 100644 lms/askbot/skins/mitx/media/images/answers-background.png create mode 100644 lms/askbot/skins/mitx/media/images/background-user-info.png create mode 100644 lms/askbot/skins/mitx/media/images/bigbutton.png create mode 100644 lms/askbot/skins/mitx/media/images/bigbuttonhover.png create mode 100755 lms/askbot/skins/mitx/media/images/blue-up-arrow-h18px.png create mode 100755 lms/askbot/skins/mitx/media/images/box-arrow.gif create mode 100755 lms/askbot/skins/mitx/media/images/bullet_green.gif create mode 100755 lms/askbot/skins/mitx/media/images/cc-88x31.png create mode 100644 lms/askbot/skins/mitx/media/images/cc-by-sa.png create mode 100644 lms/askbot/skins/mitx/media/images/close-small-dark.png create mode 100755 lms/askbot/skins/mitx/media/images/close-small-hover.png create mode 100755 lms/askbot/skins/mitx/media/images/close-small.png create mode 100644 lms/askbot/skins/mitx/media/images/close.png create mode 100644 lms/askbot/skins/mitx/media/images/comment-background.png create mode 100644 lms/askbot/skins/mitx/media/images/comment.png create mode 100644 lms/askbot/skins/mitx/media/images/contributorsback.png create mode 100755 lms/askbot/skins/mitx/media/images/dash.gif create mode 100644 lms/askbot/skins/mitx/media/images/delete.png create mode 100644 lms/askbot/skins/mitx/media/images/dialog-warning-off.png create mode 100644 lms/askbot/skins/mitx/media/images/dialog-warning.png create mode 100755 lms/askbot/skins/mitx/media/images/djangomade124x25_grey.gif create mode 100755 lms/askbot/skins/mitx/media/images/dot-g.gif create mode 100755 lms/askbot/skins/mitx/media/images/dot-list.gif create mode 100755 lms/askbot/skins/mitx/media/images/edit.png create mode 100644 lms/askbot/skins/mitx/media/images/edit2.png create mode 100644 lms/askbot/skins/mitx/media/images/email-sharing.png create mode 100755 lms/askbot/skins/mitx/media/images/expander-arrow-hide.gif create mode 100755 lms/askbot/skins/mitx/media/images/expander-arrow-show.gif create mode 100644 lms/askbot/skins/mitx/media/images/facebook-sharing.png create mode 100644 lms/askbot/skins/mitx/media/images/favicon.gif create mode 100644 lms/askbot/skins/mitx/media/images/favicon.ico create mode 100644 lms/askbot/skins/mitx/media/images/feed-icon-small.png create mode 100644 lms/askbot/skins/mitx/media/images/flag.png create mode 100644 lms/askbot/skins/mitx/media/images/go-up-grey.png create mode 100644 lms/askbot/skins/mitx/media/images/go-up-orange.png create mode 100644 lms/askbot/skins/mitx/media/images/google-plus-sharing.png create mode 100755 lms/askbot/skins/mitx/media/images/gray-up-arrow-h18px.png create mode 100755 lms/askbot/skins/mitx/media/images/grippie.png create mode 100755 lms/askbot/skins/mitx/media/images/indicator.gif create mode 100644 lms/askbot/skins/mitx/media/images/link.png create mode 100644 lms/askbot/skins/mitx/media/images/logo.gif create mode 100644 lms/askbot/skins/mitx/media/images/logo.png create mode 100755 lms/askbot/skins/mitx/media/images/logo1.png create mode 100755 lms/askbot/skins/mitx/media/images/logo2.png create mode 100644 lms/askbot/skins/mitx/media/images/lrg/email-sharing.png create mode 100644 lms/askbot/skins/mitx/media/images/lrg/facebook-sharing.png create mode 100644 lms/askbot/skins/mitx/media/images/lrg/facebook.png create mode 100644 lms/askbot/skins/mitx/media/images/lrg/google-plus-sharing.png create mode 100644 lms/askbot/skins/mitx/media/images/lrg/linkedin.png create mode 100644 lms/askbot/skins/mitx/media/images/lrg/twitter-sharing.png create mode 100644 lms/askbot/skins/mitx/media/images/lrg/twitter.png create mode 100644 lms/askbot/skins/mitx/media/images/lrg/youtube-sharing.png create mode 100644 lms/askbot/skins/mitx/media/images/mail-envelope-empty.png create mode 100644 lms/askbot/skins/mitx/media/images/mail-envelope-full.png create mode 100755 lms/askbot/skins/mitx/media/images/medala.gif create mode 100755 lms/askbot/skins/mitx/media/images/medala_on.gif create mode 100644 lms/askbot/skins/mitx/media/images/medium-button.png create mode 100755 lms/askbot/skins/mitx/media/images/new.gif create mode 100755 lms/askbot/skins/mitx/media/images/nophoto.png create mode 100644 lms/askbot/skins/mitx/media/images/notification.png create mode 100755 lms/askbot/skins/mitx/media/images/openid.gif create mode 100644 lms/askbot/skins/mitx/media/images/print.png create mode 100644 lms/askbot/skins/mitx/media/images/pw-login.gif create mode 100755 lms/askbot/skins/mitx/media/images/quest-bg.gif create mode 100644 lms/askbot/skins/mitx/media/images/retag.png create mode 100644 lms/askbot/skins/mitx/media/images/scopearrow.png create mode 100644 lms/askbot/skins/mitx/media/images/small-button-blue.png create mode 100644 lms/askbot/skins/mitx/media/images/small-button-cancel.png create mode 100644 lms/askbot/skins/mitx/media/images/social/email-sharing.png create mode 100644 lms/askbot/skins/mitx/media/images/social/facebook-sharing.png create mode 100644 lms/askbot/skins/mitx/media/images/social/google-plus-sharing.png create mode 100644 lms/askbot/skins/mitx/media/images/social/twitter-sharing.png create mode 100644 lms/askbot/skins/mitx/media/images/social/youtube-sharing.png create mode 100644 lms/askbot/skins/mitx/media/images/socialsprite.png create mode 100644 lms/askbot/skins/mitx/media/images/sprite.png create mode 100644 lms/askbot/skins/mitx/media/images/sprites.png create mode 100644 lms/askbot/skins/mitx/media/images/sprites_source/graphics.svg create mode 100644 lms/askbot/skins/mitx/media/images/sprites_source/sprites.svg create mode 100644 lms/askbot/skins/mitx/media/images/summary-background.png create mode 100644 lms/askbot/skins/mitx/media/images/tag-left.png create mode 100644 lms/askbot/skins/mitx/media/images/tag-right.png create mode 100644 lms/askbot/skins/mitx/media/images/tips.png create mode 100644 lms/askbot/skins/mitx/media/images/twitter-sharing.png create mode 100644 lms/askbot/skins/mitx/media/images/view-background.png create mode 100755 lms/askbot/skins/mitx/media/images/vote-accepted-on.png create mode 100755 lms/askbot/skins/mitx/media/images/vote-accepted.png create mode 100644 lms/askbot/skins/mitx/media/images/vote-arrow-down-new.png create mode 100644 lms/askbot/skins/mitx/media/images/vote-arrow-down-on-new.png create mode 100755 lms/askbot/skins/mitx/media/images/vote-arrow-down-on.png create mode 100755 lms/askbot/skins/mitx/media/images/vote-arrow-down.png create mode 100644 lms/askbot/skins/mitx/media/images/vote-arrow-up-new.png create mode 100644 lms/askbot/skins/mitx/media/images/vote-arrow-up-on-new.png create mode 100755 lms/askbot/skins/mitx/media/images/vote-arrow-up-on.png create mode 100755 lms/askbot/skins/mitx/media/images/vote-arrow-up.png create mode 100644 lms/askbot/skins/mitx/media/images/vote-background.png create mode 100755 lms/askbot/skins/mitx/media/images/vote-favorite-off.png create mode 100755 lms/askbot/skins/mitx/media/images/vote-favorite-on.png create mode 100644 lms/askbot/skins/mitx/media/images/wiki.png create mode 100644 lms/askbot/skins/mitx/media/images/youtube-sharing.png create mode 100644 lms/askbot/skins/mitx/media/style/auth.css create mode 100644 lms/askbot/skins/mitx/media/style/extra.css create mode 100644 lms/askbot/skins/mitx/media/style/jquery.autocomplete.css create mode 100644 lms/askbot/skins/mitx/media/style/lib_style.less create mode 100644 lms/askbot/skins/mitx/media/style/openid.css create mode 100644 lms/askbot/skins/mitx/media/style/prettify.css create mode 100644 lms/askbot/skins/mitx/media/style/style.css create mode 100644 lms/askbot/skins/mitx/media/style/style.less create mode 100644 lms/askbot/skins/mitx/templates/404.html create mode 100644 lms/askbot/skins/mitx/templates/404.jinja.html create mode 100644 lms/askbot/skins/mitx/templates/500.html create mode 100644 lms/askbot/skins/mitx/templates/500.jinja.html create mode 100644 lms/askbot/skins/mitx/templates/answer_edit.html create mode 100644 lms/askbot/skins/mitx/templates/ask.html create mode 100644 lms/askbot/skins/mitx/templates/badge.html create mode 100644 lms/askbot/skins/mitx/templates/badges.html create mode 100644 lms/askbot/skins/mitx/templates/base.html create mode 100644 lms/askbot/skins/mitx/templates/close.html create mode 100644 lms/askbot/skins/mitx/templates/course_navigation.jinja.html create mode 100644 lms/askbot/skins/mitx/templates/faq_static.html create mode 100644 lms/askbot/skins/mitx/templates/feedback.html create mode 100644 lms/askbot/skins/mitx/templates/feedback_email.txt create mode 100644 lms/askbot/skins/mitx/templates/help.html create mode 100644 lms/askbot/skins/mitx/templates/import_data.html create mode 100644 lms/askbot/skins/mitx/templates/instant_notification.html create mode 100644 lms/askbot/skins/mitx/templates/macros.html create mode 100644 lms/askbot/skins/mitx/templates/main_page.html create mode 100644 lms/askbot/skins/mitx/templates/main_page/content.html create mode 100644 lms/askbot/skins/mitx/templates/main_page/headline.html create mode 100644 lms/askbot/skins/mitx/templates/main_page/javascript.html create mode 100644 lms/askbot/skins/mitx/templates/main_page/nothing_found.html create mode 100644 lms/askbot/skins/mitx/templates/main_page/paginator.html create mode 100644 lms/askbot/skins/mitx/templates/main_page/questions_loop.html create mode 100644 lms/askbot/skins/mitx/templates/main_page/scope_filters.html create mode 100644 lms/askbot/skins/mitx/templates/main_page/sidebar.html create mode 100644 lms/askbot/skins/mitx/templates/main_page/tab_bar.html create mode 100644 lms/askbot/skins/mitx/templates/meta/bottom_scripts.html create mode 100644 lms/askbot/skins/mitx/templates/meta/editor_data.html create mode 100644 lms/askbot/skins/mitx/templates/meta/html_head_javascript.html create mode 100644 lms/askbot/skins/mitx/templates/meta/html_head_meta.html create mode 100644 lms/askbot/skins/mitx/templates/meta/html_head_stylesheets.html create mode 100644 lms/askbot/skins/mitx/templates/meta/mandatory_tags_js.html create mode 100644 lms/askbot/skins/mitx/templates/navigation.jinja.html create mode 100644 lms/askbot/skins/mitx/templates/question.html create mode 100644 lms/askbot/skins/mitx/templates/question/answer_card.html create mode 100644 lms/askbot/skins/mitx/templates/question/answer_tab_bar.html create mode 100644 lms/askbot/skins/mitx/templates/question/content.html create mode 100644 lms/askbot/skins/mitx/templates/question/javascript.html create mode 100644 lms/askbot/skins/mitx/templates/question/new_answer_form.html create mode 100644 lms/askbot/skins/mitx/templates/question/question_card.html create mode 100644 lms/askbot/skins/mitx/templates/question/sharing_prompt_phrase.html create mode 100644 lms/askbot/skins/mitx/templates/question/sidebar.html create mode 100644 lms/askbot/skins/mitx/templates/question/subscribe_by_email_prompt.html create mode 100644 lms/askbot/skins/mitx/templates/question_edit.html create mode 100644 lms/askbot/skins/mitx/templates/question_retag.html create mode 100644 lms/askbot/skins/mitx/templates/question_widget.html create mode 100644 lms/askbot/skins/mitx/templates/reopen.html create mode 100644 lms/askbot/skins/mitx/templates/revisions.html create mode 100644 lms/askbot/skins/mitx/templates/static_page.html create mode 100644 lms/askbot/skins/mitx/templates/subscribe_for_tags.html create mode 100644 lms/askbot/skins/mitx/templates/tags.html create mode 100644 lms/askbot/skins/mitx/templates/user_profile/user.html create mode 100644 lms/askbot/skins/mitx/templates/user_profile/user_edit.html create mode 100644 lms/askbot/skins/mitx/templates/user_profile/user_email_subscriptions.html create mode 100644 lms/askbot/skins/mitx/templates/user_profile/user_favorites.html create mode 100644 lms/askbot/skins/mitx/templates/user_profile/user_inbox.html create mode 100644 lms/askbot/skins/mitx/templates/user_profile/user_info.html create mode 100644 lms/askbot/skins/mitx/templates/user_profile/user_moderate.html create mode 100644 lms/askbot/skins/mitx/templates/user_profile/user_network.html create mode 100644 lms/askbot/skins/mitx/templates/user_profile/user_recent.html create mode 100644 lms/askbot/skins/mitx/templates/user_profile/user_reputation.html create mode 100644 lms/askbot/skins/mitx/templates/user_profile/user_stats.html create mode 100644 lms/askbot/skins/mitx/templates/user_profile/user_tabs.html create mode 100644 lms/askbot/skins/mitx/templates/user_profile/user_votes.html create mode 100644 lms/askbot/skins/mitx/templates/user_profile/users_questions.html create mode 100644 lms/askbot/skins/mitx/templates/users.html create mode 100644 lms/askbot/skins/mitx/templates/widgets/answer_edit_tips.html create mode 100644 lms/askbot/skins/mitx/templates/widgets/ask_button.html create mode 100644 lms/askbot/skins/mitx/templates/widgets/ask_form.html create mode 100644 lms/askbot/skins/mitx/templates/widgets/contributors.html create mode 100644 lms/askbot/skins/mitx/templates/widgets/footer.html create mode 100644 lms/askbot/skins/mitx/templates/widgets/header.html create mode 100644 lms/askbot/skins/mitx/templates/widgets/logo.html create mode 100644 lms/askbot/skins/mitx/templates/widgets/meta_nav.html create mode 100644 lms/askbot/skins/mitx/templates/widgets/question_edit_tips.html create mode 100644 lms/askbot/skins/mitx/templates/widgets/question_summary.html create mode 100644 lms/askbot/skins/mitx/templates/widgets/scope_nav.html create mode 100644 lms/askbot/skins/mitx/templates/widgets/secondary_header.html create mode 100644 lms/askbot/skins/mitx/templates/widgets/system_messages.html create mode 100644 lms/askbot/skins/mitx/templates/widgets/user_list.html create mode 100644 lms/askbot/skins/mitx/templates/widgets/user_long_score_and_badge_summary.html create mode 100644 lms/askbot/skins/mitx/templates/widgets/user_navigation.html create mode 100644 lms/askbot/skins/mitx/templates/widgets/user_score_and_badge_summary.html create mode 100644 lms/askbot/skins/utils.py create mode 100644 lms/envs/askbotsettings.py diff --git a/.gitignore b/.gitignore index 1dd3b77523..81d9a57d3c 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,8 @@ .AppleDouble database.sqlite courseware/static/js/mathjax/* +db.newaskbot +db.oldaskbot flushdb.sh build .coverage diff --git a/.gitmodules b/.gitmodules index e69de29bb2..72ec77d0e2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "askbot"] + path = askbot + url = git@github.com:MITx/askbot-devel.git diff --git a/.hgignore b/.hgignore new file mode 100644 index 0000000000..67ea339cd8 --- /dev/null +++ b/.hgignore @@ -0,0 +1,12 @@ +syntax: glob +*.pyc +*~ +*.scssc +*.swp +*.orig +*.DS_Store +database.sqlite +courseware/static/js/mathjax/* +db.newaskbot +db.oldaskbot +flushdb.sh diff --git a/askbot b/askbot new file mode 160000 index 0000000000..e56ae38084 --- /dev/null +++ b/askbot @@ -0,0 +1 @@ +Subproject commit e56ae380846f7c6cdaeacfc58880fab103540491 diff --git a/common/djangoapps/student/models.py b/common/djangoapps/student/models.py index 0eded21df1..61c2537399 100644 --- a/common/djangoapps/student/models.py +++ b/common/djangoapps/student/models.py @@ -3,8 +3,6 @@ Models for Student Information Replication Notes -TODO: Update this to be consistent with reality (no portal servers, no more askbot) - In our live deployment, we intend to run in a scenario where there is a pool of Portal servers that hold the canoncial user information and that user information is replicated to slave Course server pools. Each Course has a set of diff --git a/common/lib/xmodule/xmodule/x_module.py b/common/lib/xmodule/xmodule/x_module.py index 2b2e709bcb..dd0df2125a 100644 --- a/common/lib/xmodule/xmodule/x_module.py +++ b/common/lib/xmodule/xmodule/x_module.py @@ -388,7 +388,7 @@ class XModuleDescriptor(Plugin, HTMLSnippet, ResourceTemplates): entry_point = "xmodule.v1" module_class = XModule - # Attributes for inspection of the descriptor + # Attributes for inpsection of the descriptor stores_state = False # Indicates whether the xmodule state should be # stored in a database (independent of shared state) has_score = False # This indicates whether the xmodule is a problem-type. diff --git a/create-dev-env.sh b/create-dev-env.sh index e481d3fd5e..0d7e392313 100755 --- a/create-dev-env.sh +++ b/create-dev-env.sh @@ -72,6 +72,12 @@ clone_repos() { git clone git@github.com:MITx/mitx.git fi + if [[ ! -d "$BASE/mitx/askbot/.git" ]]; then + output "Cloning askbot as a submodule of mitx" + cd "$BASE/mitx" + git submodule update --init + fi + # By default, dev environments start with a copy of 6.002x cd "$BASE" mkdir -p "$BASE/data" @@ -328,6 +334,9 @@ pip install -r mitx/pre-requirements.txt output "Installing MITx requirements" cd mitx pip install -r requirements.txt +output "Installing askbot requirements" +pip install -r askbot/askbot_requirements.txt +pip install -r askbot/askbot_requirements_dev.txt mkdir "$BASE/log" || true mkdir "$BASE/db" || true diff --git a/doc/overview.md b/doc/overview.md index f64d12920d..36e22e16eb 100644 --- a/doc/overview.md +++ b/doc/overview.md @@ -27,7 +27,7 @@ You should be familiar with the following. If you're not, go read some docs... - CMS -- Course Management System. The instructor-facing parts of the system. Allows instructors to see and modify their course, add lectures, problems, reorder things, etc. - - Forums -- this is a ruby on rails service that runs on Heroku. Contributed by berkeley folks. The LMS has a wrapper lib that talks to it. + - Askbot -- the discussion forums. We have a custom fork of this project. We're also hoping to replace it with something better later. (e.g. need support for multiple classes, etc) - Data. In the data/ dir. There is currently a single `course.xml` file that describes an entire course. Speaking of which... diff --git a/install.txt b/install.txt index 801036af6b..37a6e50986 100644 --- a/install.txt +++ b/install.txt @@ -9,6 +9,7 @@ There is also a script "create-dev-env.sh" that automates these steps. mkdir ~/mitx_all cd ~/mitx_all git clone git@github.com:MITx/mitx.git + git clone git@github.com:MITx/askbot-devel hg clone ssh://hg-content@gp.mitx.mit.edu/data 2) Install OSX dependencies (Mac users only) @@ -48,6 +49,8 @@ There is also a script "create-dev-env.sh" that automates these steps. source ~/mitx_all/python/bin/activate cd ~/mitx_all + pip install -r askbot-devel/askbot_requirements.txt + pip install -r askbot-devel/askbot_requirements_dev.txt pip install -r mitx/pre-requirements.txt pip install -r mitx/requirements.txt diff --git a/lms/askbot/skins/README b/lms/askbot/skins/README new file mode 100644 index 0000000000..3fbc8c331e --- /dev/null +++ b/lms/askbot/skins/README @@ -0,0 +1,71 @@ +============================= +Customization of Askbot skins +============================= + +The default skin at the moment is in the development, however +it is already possible to start customizing your site without +incurring much maintenance overhead. + +Current status of templates +=========================== +The two busiest templates are - the "main" page and the "question" page, +the main page is more or less complete. "Question" page will be significantly +refactored in the near future. + +How skins work in Askbot +======================== + +The skins reside in up to two directories: + +* `askbot/skins` in the source code (contains any stock skins) +* directory pointed to by a ASKBOT_EXTRA_SKINS_DIR in your settings.py + with any other skins + +Currently, the skin is selected by the site administrator in the live settings. +Also, at the moment skin default is special - it serves any resources +absent in other skins. In a way - all other skins inherit from the "default". + +Templates and media are resolved in the following way: +* check in skin named as in settings.ASKBOT_DEFAULT_SKIN +* then skin named 'default' + +How to customize a skin +======================= + +There are three options: + +* edit custom css via the settings interface - good for small tweaks + (no need to directly log in to the server) +* create a new skin in separate files (need direct access to the server + files, more maintenance overhead) +* directly modify the "default" skin (as in the previous option - need + direct access to the server, less maintenance overhead, some + knowledge of git system is required) + +The first option only allows to modify css and add custom javascript. +The latter two options allow changing the templates as well. + +If you wish to follow the second option, create a directory named the same +way as the skin you are building and start adding files with the same names +and relative locations as those in the "default" skin. + +NO NEED TO CREATE ALL TEMPLATES/MEDIA FILES AT ONCE as your skin will inherit +pieces from the "default". + +The disadvantage of thil second approach is that you will be on your own maintaining +the synchrony of your template, stylesheet and the core code. + +Third approach is the best, but it requires (the most basic) use of +git source code management software. With git you will easily merge the updates +from the development repository. + +Structure of the skin directories +================================= +Todo. + +To simplify maintenance of the css as the skin is being developed, +populate css file `media/style/extra.css` with any rules that will +override those in the `media/style/style.css` file. If you do that + +media does not have to be composed of files named the same way as in default skin +whatever media you link to from your templates - will be in operation diff --git a/lms/askbot/skins/__init__.py b/lms/askbot/skins/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lms/askbot/skins/common/media/images/anon.png b/lms/askbot/skins/common/media/images/anon.png new file mode 100644 index 0000000000000000000000000000000000000000..a2041590216dc4ed8f86195dcdfc66718bb47c39 GIT binary patch literal 687 zcmV;g0#N;lP)XC>R=F^NKk_!2rAkH3rS@uh-eipOd3a}2O7i~W9ICor4Muuv$VD2f=5$1#`7 z;b1V(Vb<$4@;v{01J!C(N8D^S(QdbY!&xjAEEEbltSrmOvMjv;o6Uy%{hknxMkBOZ zt%ij4dR=Ei6h(RisZ>fwCP~uWC3QF)cs`#=PqA1u#2e0mbUIDy)9D1=Zr2D7008^_ z9#mB&&yh&P5N|jKI-L$or&Hj09u9{C9FNDl1^@sUh9ULka=D8)b7$|S+wI2d^-8v& zTrU594m_F+!(gk`BI38(4MU;O>kQOtHQk|YG#ZceJx9D$D(S=(ML~|^USptAsp!O2 zRYjlA_h|ofmt9d5^m@H!IOxSCN%|)4@p#Pg(23jacAU*-M0`9R(}>d>$Y!&;w~xhQ zR6Nw5WQjzA)WhKrWLc)-p*G<6`$;{Y&uMAs4Y*t`Qm>9R#xxjYc652mk=U zbUKB}Wb#@A&x(KVzu-@Ne0-3DsA(ExG8t+URQGqWSdba8TrR1n>D#y9?FRnef=}bN VTfTAXK@I=_002ovPDHLkV1g0tCr|(Y literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/bigbutton.png b/lms/askbot/skins/common/media/images/bigbutton.png new file mode 100644 index 0000000000000000000000000000000000000000..2a7c0f05858e26e279fe52242d4d2acf7b8926c8 GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^Y(N~s0U{T6xorVbEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4&$zvn9~6EtZ`^i_Kc&@Uqr$fxhx0DITbMW_t+i0)Y0gW5 z111hvt|`7MYYnLJpblKlqWG(SPyyip4(M3kDZRAec-nq>lf8G9ZE1RYT_qu4I z8CFZ)M+vtSM*8|Ev;Tc?xZywBZMoICUz@caF#RjdJJeUgGZp9_22WQ%mvv4FO#q;5 BUts_M literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/bigbuttonhover.png b/lms/askbot/skins/common/media/images/bigbuttonhover.png new file mode 100644 index 0000000000000000000000000000000000000000..cf4bacca69ffc4736c0c1ec25795647bf7bec72e GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^Y(T8d0V1RS{agT~Sc;uILpXq-h9ji|$mcBZh%5%G zzYfBTP8zc-fP#`Gt`Q}{`DrEPiAAXl<>lpinR(g8$%zH2dih1^v)|cB0TpF>x;Tbd z^sb$7k+;D>!0F$d~L-N zvOJSrlNlb$zAV1{^xDV5&|PgTe~DWM4f!;x4L literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/blue-up-arrow-h18px.png b/lms/askbot/skins/common/media/images/blue-up-arrow-h18px.png new file mode 100755 index 0000000000000000000000000000000000000000..e1f29e86334ce72d2d28989a133571d7bf53a94e GIT binary patch literal 593 zcmV-X0{6iqad+$V|KR(Q{q;Ok;ua!jjQtuI1z7)O( zySE1i5k-TnUMhU^!Fth&L`=(4hnCB&mew0>atrF^~@9muPo$nmJ5BNLwb>CS+ z;4aaxR`*WD1Hfmk^?b25_^vW#;gMP0a=;-lw8uKYF+TucXlk2wNsBS@}pFD ztaavBN$@-;DyO5Dqi0!d9a~=U7;O0Ayiuq>#Jyi<@Hb@35~1ra$v5dmgDzqB>^+=uOM7b5+>fY}+kwy1R`cV__*wFuQ!Bi@#VE~BJd f7UnWh{5Sjn&bP0xmAf5500000NkvXXu0mjfU!M$- literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/box-arrow.gif b/lms/askbot/skins/common/media/images/box-arrow.gif new file mode 100755 index 0000000000000000000000000000000000000000..89dcf5b3dd40fac0e6afb0b1a7ff899a059f923f GIT binary patch literal 69 zcmZ?wbhEHbWM@!dXkcJ?_wL=lfBzJJvM@6+Ff!;c00Bsbfk~#Pf92`7{EJz*0#eqW WoE7iinDij`X5pe+YFj-S8LR>Nkr%B1 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/bullet_green.gif b/lms/askbot/skins/common/media/images/bullet_green.gif new file mode 100755 index 0000000000000000000000000000000000000000..fa530910f9dc11fadaa2314f72bd98f29df39daf GIT binary patch literal 64 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 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/close-small-dark.png b/lms/askbot/skins/common/media/images/close-small-dark.png new file mode 100755 index 0000000000000000000000000000000000000000..280c1fc74e47c0e7d1c68d6f356eb22eeba7a2de GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^d?3ui3?$#C89V|~1_3@Hu3NY7ShRS_jG43c?mKYe z;M6!dxb8-^+kP+MX_sAsp9}6ArM>V3CjzZ7^A^)I5Q~ t!yzC*Q0L$Zl?Eqn$0Lca5`Jx9W=NmTc;}pLNdZtBgQu&X%Q~loCIHsxKFr1QCT0q{1{MYeDE)e-c@Ne1ia=5ZCX&{{Hy&_tW!N_ZKfc zpObUM#pTWAs~3xk4w#ty`t$F>lBGXhy}DLgdpr1Q#zqRd1{MYe;g^zIfZEtgJbhi+Z*Z~+S_nO6;N1-r z;wE)e-c@Ne1ia=5Z4(qXDwR1Wb5`Fd-okU zaq{%lYd1c8`uyw9U!Xizkhgxu4WI-^NswRge+Xc>*St3pD5mS_;uunKD_NtRfsJRE z&YnFcvL4forc1XpAK{H{IrvG{>z#&4h|Ds+W&FE$GCZx(SSr0JY6i#_Pgg&ebxsLQ E08gA+X#fBK literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/contributorsback.png b/lms/askbot/skins/common/media/images/contributorsback.png new file mode 100644 index 0000000000000000000000000000000000000000..dd72838396a66be23b99c4f3dac2e22a07e5f124 GIT binary patch literal 714 zcmV;*0yX`KP)!S<-E*`}w|bpTgd0gjDDs@DtguF7w88g%!Z0L=B09Y;K@jZ4saru6dCp>< zVU79Hqm-i6Y11DL@csXA`EJFRg~QS91}(n0N%BMX0OwefOh4a zuZ{ZY&JVMm$ut$AqP%(BZqbmtt!x}dI0Os(<500io)+Vgh%eFmf9m${7ASm(Ca9_sujWopgj z`5Cv9$Xa{Q>-!%4;oxY#Fp3C2jRi%Xg9rj3Ab>)Uw*lD#JSdsa%YuAw>O?u&d)Z_qy<>haI-lg*85czODZG5RFG(T1w5NYdmisI$vV z^H$N#kv{3e0!r~?{6LbXdvkSJ?Nx&~i7%^tB7&}J%Cbc3nkb4%(gbHMv)Adt7~l7a zk{HkPkfuS`dJiZJL&m=zFY6MNQp9OOeBiYhqggHX+ZX2?WnLW3dG~OSQWq5D@6;cT zKoqOx^5hub54aycY&*}ZLn);g+>MBmm~1-7xx*dAyV7=>;oXSMF2HS|-qmWiNn0(- wqM*ogthQKd@H~$o42j~9POnE0d~RIeAJ(%PeH15L(*OVf07*qoM6N<$g6QE>TL1t6 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/dash.gif b/lms/askbot/skins/common/media/images/dash.gif new file mode 100755 index 0000000000000000000000000000000000000000..d1ddc507fe00bd654fce38ac8552793aa18c9966 GIT binary patch literal 44 wcmZ?wbhEHbWMN=rXkcLY|NsBAY10&cvM{hS{AbW%00NK<0~50k11p0y023w&(*OVf literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/dialog-warning-off.png b/lms/askbot/skins/common/media/images/dialog-warning-off.png new file mode 100644 index 0000000000000000000000000000000000000000..258e4d86c0d6da8f214fc49eb311fb88814d454e GIT binary patch literal 419 zcmV;U0bKrxP)Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igk;0s{aA zV|5a8|Zt%ng-9WwT z{<07*xL_f4me>5I8w|POhC{l6HvjvpVmPNqk8>77XZ1TbBEOxeG^C0&(x{>#iHf%W z05Z1B9t_y9VW0=gl<@_i9W!4?4T2O>5Y$kInb%GPsL04N`-nqe!-gP^J}gs4DnIvo z*;AKW`rL8NHFxy6WtZ8L_5f(iJ(f7(fqVLFvrV6S9yno%?ond~29hkJ1%W`2K_=>2 zC_|DMh_k(act!_|f(Q`2;RT1CJcf57H@-u>GiK?z_9dUVmXGlC`VB}Lc;@7(Wzqlu N002ovPDHLkV1fy(s`3B; literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/dialog-warning.png b/lms/askbot/skins/common/media/images/dialog-warning.png new file mode 100644 index 0000000000000000000000000000000000000000..a9e4ff3991cb0ad2a99cc25e2d13c35e52c680c8 GIT binary patch literal 603 zcmV-h0;K(kP)J2V5SdEtMnl9PhCxc2Fa&}~V}o=Tx)35=bmuS|@d;cT zbY;Loz(q+`1+A}82tI&NTm%Y*7F^UoNilyn))L6H_Q1W1%i%j`bA(=?F!-5EVN!MFB_9*XAp~_l%n771CUH65fQk#;c9J-59jBDOQ<*CorDm33|CLV znm<0~VYP}<3Z)daS`C19yN!q-BK$Z#V4_~XOaDE<2tY)*Zne1F+TuNYlS3Fj19`yz=_l|J pl>P}02k>Sh;xD3f4Z|KZe*u@?eFz-1;S&G=002ovPDHLkV1mMw_G175 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/djangomade124x25_grey.gif b/lms/askbot/skins/common/media/images/djangomade124x25_grey.gif new file mode 100755 index 0000000000000000000000000000000000000000..d34bb311615b1378a672a828c7a7916490cd882b GIT binary patch literal 2035 zcmcJOSyz(>0zk8Y5oHk(5d(s_FbFhAqNt4L16&YNCyID%iyA#v9i~-V)T#$7C{?Rq zJuXmNkX;Zk3t36XzAs-E$W8(YK|~TDELE}gFw-9~_w_#9r@MFGo{ViLN+D5@_t6k? zub_>}Y9`ZKyBS?Q+zuw^CB28p=9m6l=^h>P&(87W>M^fRs?m>(j#(W;9ErkUvGq!o zR>z=aV9@3qVhSZRzIguQM;cEA4PH>{`)!UPyVLdOr%&oW6O}KX^iRvR21>7B_K!bg zpuy#NEl_HdeI}XK;2M6dGg;OB7NH7sx`ycjiOOJXqcVp_-!Mh8P9}%M;d7*l9dn^o^Yc8JiXo6#2L{zfi^DzK#p>;|ITX6Se!BxS zS=nOw+`D&V4qvF$^jqyzo~TDG>y;|lVi{d1<;qn?yF=A))|stRQ2&y_<|)*2U7tjw zV~V8YUSW?!VYCi#Byx?(%9SZ)x_-xyo5JBc-5#D?H9GEn-bvP4>_a1?Mw^2xQ-LN+ zBe7ec(5U;2FS?oT(KkAyXb zH`<+SiGsov4vvg6M6xClb-?9rrO;i&BX+lk$mV$`rZ`gN>v8YfiAm6G<101ow4OKP zUbVqQ?BTjSuXPq%Yd5pISJ261cQQEjo#Yk@y{?1ASAq*s-`cubDGW-lki_O|%{D4etT9^j7JEC5N#je{GL^~hpbMnVVNY!b z@p%VHZ?SpC-cHTTm>h#mB$`;Qbq9D5VJ`EU_H44c4@Fu%*g{g$2m} zjre&46atBcB>!Fb`w0kg0fIg2-$QN?-a;-U9a~C|Sx_l#$$ zbyds`pGKe0LOZIh;hTXQH~7?2Jo0 zAKTtHp2*){xDdLxDX)5Bq$d9S)rRYTt~R1BZu8%arq9oL7S0X{cVZ83Md|CWuc5Ww zgHJrm4n{311;Egli>`(nMilUQIqb4)5Q?cl#}=HzL03S&F5J5ZvF3I&1iAmphxib7 z=~(%y)r?(&s;zbaOiB%VcyqB)a3LW*6`!N2T5$*vtPDAu4Lr&i{1t{hUIbJv$v&)4 zc!CfB!4I<5zFha<24-Hg2z@rDMTRf&8K%(xp|Jl;8yyb7(z29dO~7 z0?>d2d_u(#9&?g)BczhRg5UXUk{R}HU+hrKk846$t{)2uvfo5}`X_+FT_r3*q@K(Q zIFy3^Nem&SdwmdC?f@$3a69--AQ=DME>cj0|A&0oy86<nZyuyLVuwr{IGXQux+DRXY@2U6(<)cxduLt8LR@#Wa`O=WAre>^=26DJK^^h~Zenh_Qpc_eE|a>K3SC}>hGS%%baA>Rzm6~eB6s0c`oTN0US zfK?FULsI-Xr|IOSn-WhZ6RhFiUYWj6SlS#V&y{WdZMyPn->wo=`JS}ytYDdcZ9-8+ z#g^jc^%g~Q?0bcL=f~+^%9ggo{bjwMjFH13QK!~qEei?la)%F0L$*X*t*SoddGxEM zWy4mba{slN#|^%bl*nZdHaOy*)Xwd`S5&UbXN;^SSGFdf*{A-}K2y!otWP}=A9U0{ sv!XO(598i6?6_>^sSNjGbB$7Sdi(Nfq+XETwht`+l3E>&L_&7_7sn(m+5i9m literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/dot-g.gif b/lms/askbot/skins/common/media/images/dot-g.gif new file mode 100755 index 0000000000000000000000000000000000000000..5d6bb28e56377b0eeb80899222aa3290ec2a3a95 GIT binary patch literal 61 zcmZ?wbhEHb1;oomohA-cw8MruKF$f7>W?=Zo!hivofRLHNli}wd9fr@0yBS{oImf`r!T=CJ zObo<=KYvmfSa>QJq}1IQ{xNkh{QGMS5(Wq$!Uiw`?fv_wh=H9yhCxi_BLl18R|YAy zzYGlQ%?$tlTLT0TVFP~usbb(1@&ju6$nf>=e}=c;7#aR?|7H-C1iI?46+i&7;IWyL z;n$xU20l?+1~CPo=06M!Uw{_>X8zCc{xt`~yO&=Xm{>Lg1Q0F*xPh8m83e@j8ARki zGJO8U!0_!K1H&(%gWtd9WO)AQ6T^RoY6eEe8vp@>#en~UKxelz2uZ60@n?olzZn_6 z{|9LXI{!5n!^+`mIW?f>FASf4GBSJvI{OzR z1H&<(HAFtjse0v3qvG*Lj!k<6yW@2D$#+OV00*L7y zBZtO!W_$i{sO4^#Rs-O?>`EBV-VT&i$$;vm@)9CGk^eM*?-}6i0Jdne+|V2 zxHvw3_{Z?+(@RDM_T7w3%nJ!=1_6KoVp+N8l7OGV`-jpW1oz1C@m=Tm^ZxZW7V#J0 oz$F3z1Q6r@|Nj{%0RRC80Nya-9-e3d82|tP07*qoM6N<$g1t^w0{{R3 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/expander-arrow-hide.gif b/lms/askbot/skins/common/media/images/expander-arrow-hide.gif new file mode 100755 index 0000000000000000000000000000000000000000..feb6a6187c2742ea8e516244f139e7946ed757fb GIT binary patch literal 126 zcmZ?wbhEHb6k!l$Xl7tYOG_&#C^&ZP*n$NM9zTBE+}u2E+O#ug&iw!Xp8*?C{K>-1 zz`((v1Cj)p!N8&|aME-2UW?afcmGe&$YV~Jr(qS6`f6R+>scREmz$PdzB_la&4mZ% LT2lR!I2fz}g2F4- literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/expander-arrow-show.gif b/lms/askbot/skins/common/media/images/expander-arrow-show.gif new file mode 100755 index 0000000000000000000000000000000000000000..6825c56ee42f0184d66c0fe954d7fc4b6f05e850 GIT binary patch literal 135 zcmZ?wbhEHb6k!l$Xl7tYOG|5RZr;3k^RZ*c9zTA(V8Mcdf`WVZ?*0G&p8*?C{K>-1 zz`((v1Cj)p!N6i7aME-2(x+KmpRPH4k6ma{w6t6)bw%IW-N%f4X5Wr&{_cHgU%a-) Votr)GNqpOrH0{qn(_mt-1^|9hF$Dks literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/favicon.gif b/lms/askbot/skins/common/media/images/favicon.gif new file mode 100644 index 0000000000000000000000000000000000000000..d106e5da966cf18cc4fae1b00f72eeaf24ffdba4 GIT binary patch literal 78 zcmZ?wbhEHb6krfwn8*ME|NsA=X>1H+=zw@2aRw&!9=SHHla;rcwSz3*o+&L{Sv!64 c)OnoqV!K+;J)5NUt?gsS{@LgDvocr%0B>L%O8@`> literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/favicon.ico b/lms/askbot/skins/common/media/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..67203a5c9540190523f485de03bd9f39ff845dc7 GIT binary patch literal 14846 zcmeI1u}&L75Qc|@M9?HqL_$hqxuQrBX_eFzyaI0!t#|{vh|*QcNc#rJuV4zwNZc#9 zPvu9*<(oU!cRp@m7as=1p82@l|7K_AX4mV(h-}HOj7EE$x8?5}k>4V6aB$P#68ZU7 zWN)wTAJVt)1be}LM=o|me!W-wy8nmv_m65{_fN6?_sQFjIxe*5-GaJ^=x)oYjx{c_N$~? z`Q<*77FUnXd{>L$34iH2=dB}OVPot3W{Fd~xo zV1R+-gANWX7{D2k(Rn$rV1NMRg8~jL7$7M5po0So21tZU=-|MD0XpP^4h}3Bz<_+v z!GQ$>3?d(N(3b@RI3gdi0|yoi;GBHW!GQ$>1SB7HaA3gzNiYN*99S?wgM84zfdvCx zBp>uD6Lek%7(hN$3LIE4fD`gT2L~1m;Fx^S!GQ$>1S21GaA3gz3E&DH99S^GFY-aJ zs)Ej0UtAy`!hkMIU4pvYFeV>#(B+{^L8l!DI+Z$YIz>7iT6#L@+@6+D%cZ5!GUzSq z?dh#(+M1%KqoFm7y42xnsS^8dZ~Yu=zL&_KWBGF|e~#t9wp{&M|u{j~zI>t$%Wy#Dg~%j@sy-+%snxXE+R zR{|TA^m~ft|C*y<>`m3AZ*Pr_9Wyq@CKNAbY>Z9zzxw;z6G0e;pV^%lqKR4wqF7ss6h-_=6`>~)a?y)7 zLD1qs4ceYfV0F_Th!3>2TLJ3_%)kFPNr6Oppgg@0Pr$BoEu#(xlymUw1x$}X!~TmS zjd}^AmPdtRFf$6p@33Y)guB2D!@54`J_7w`p!+Diy8@M55Q0(&I}6bsRILai3)WAl z&VgIjDP<19&a=AQ!5c7o8ictF0*Ho%D1E~_FofEBNtfc3U~U{rX_$Tji<5BdIYfIQ zvIVO1Er`+Tv|GS%3W#POLNVBugxwdQ?*w=b%)SMsVC!M+bwjlr_bqn)e81sG? z;^lG3r}Uacm);hegZEN1E zRUu#QK>iansxWp{JI8vp&0T8yIfY+4gs_RSEYUh$*&qlx#HX#q6+zpro3TttG> zC(y$BWA$9YT%nahEEG#B_i=>T&#zD&z6A<_)pLqJbnnC&4^s~=00000NkvXXu0mjf DijN~n literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ad.gif b/lms/askbot/skins/common/media/images/flags/ad.gif new file mode 100755 index 0000000000000000000000000000000000000000..57b499733f149e68f5b20495eac12252c14c6fed GIT binary patch literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h)6)R7#Qm$ zB&f9J_V!($tK;oCIQ#o}?d>T0`)!t_;nc5ru)FHewutjcNcHtl$p8S!x>NI3P38aq zUUJmBrF!#PT9l#P?(ReFLPFR80Hd$vS8UWRNWPJu-?qQ(>C<7Js_4pNny+2sd`ao z&-3wbA^8LV00000EC2ui01yBR000J%z!hgm5*Uv(+Gfc)IVprF;qeFrJf2N+F-kom zzZm0UvDiGK=BS~IR4S7k*=Ep)NEEgt(hHze19UAGB0dy45+)22C@wcF1}zF9B0LL; z1uz{hI0!P52@V)93nm2x7aa(z5DEzi1{gadr!@mC85s}|uL&&}C2SuB3}XWzAP$kg RI|t4OGtmIk7}eE506T1-p$-55 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ae.gif b/lms/askbot/skins/common/media/images/flags/ae.gif new file mode 100755 index 0000000000000000000000000000000000000000..78d15b67dcba8937b13dd3a4514037af411e38b0 GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h{#{)FXaLsM)&N)l07n4){QUF)02US&L_|bQwM{!a zJ1#CRQnykxG&K7~MF4vM{#jZ7dwc$OclrPT?f?J)bO8HGNevAR^78Wg`}@(+(fm(O z`aM1TR8;{7Oq@ zz-9buYW-7FAt514OG{zCU`Vq_{&I8u008sz^ZNSw`1ttw`T6(v_w@Ai_4W1k_V)h( z00000A^8LV00000EC2ui01yBR000JtK%dZ8dps(YfO5bj_#zRHBt&hsWTg=!;f$OB z5N%?XN|`>NnbQOA6bhMJ4yWt!dV-n+(jmd+bap#Dc{DE@EOB#nJUccj8Z|T<77l=n zju<-{6E2k;i-I;77&aiC4jdc}3nDNu2L~4y3qJ-YCo3H&F$f3>3Jt8a2E`Nn2%x z*e)ma?d|GgUfMJ*;#5wpU2^H5pXC4me0OEedwMwl0Kvb2w=Fw?004up-P^%bgn)75 znVGe-Ym9$Uj(dB5Z#G7R%u$crhciH4k<0CYeBZx4Wny4moZreMBhqK1`Xu~6I^ zV1mz)AV^<}%Vie>(<}uCucDHiBm%+1HK+W={*92I(D{i^@+;so| zRIAVK01}EvipKwjichuW0048F%I#yL(PX{m{gRegoX&i(*{xWCU7*mff}Com)BpfG zGK0ndBboN*r#gkiP?gI^k;y)Z$NId%)XLm&snlkm&w;bs?}3Qrlb!#?%J_(o@AUcq zt+48#s{g94G=IbS+~ro4$6B7xk(<4+kg5PKqAh^LT86lYsLr0T(npcU-;|;E;+Dy5 ziPBVUA^8LV00000EC2ui01yBR000J#K*Hg0xf~k4PKUvSI1#bMNU%^vEEYpaqme*< zFN$NlLYXR>EJmUrkVX_r%T=2NScL*>rZ^OIJSh?A6Z8;wq83-~oAR!(A z2_69oHYXAoGZls*A`_+$AR8SPprQjIq#_RwHv_5`p`#5VA21vo2qCHlT3w&HAg?LB(9j#x(?I|`wXLLC literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/al.gif b/lms/askbot/skins/common/media/images/flags/al.gif new file mode 100755 index 0000000000000000000000000000000000000000..c44fe0a0aec913b8667d8d4f97acb82bb5b33db5 GIT binary patch literal 370 zcmZ?wbhEHb6kyz3*}0WNQQnvVdvF@dpO9#693UzcW`aWZ|>R$Cbv9v>Zj zRafpT1H&yhiwBXux0xBPnW*0JvAA zyIK1a6Z5xF`pJP4pI&E-JAhTIwFxZ(2F);`!Bq4Wte13okgB~V^5PN-pf{h*p zAteG86(=ezEhsMpAT$_0Jer-Kp`)c3rxy$`FghC>92^n5A|eY59}El+!~wgvzV&T?|aJ3FiQL`3`h z`_}*fy1U{404(+O_3Z!vAt9Xr0Cq%0u~byK{7g*uFfjHiD)l5J`9D8TPqy~<_WMUi z;o;%v=jYws-QVBe<>lq$Dk%YNlCM|w%ym)?La`QHa4b+iq7-%^Y{1n`1ttC%gg%u`ttJf`T6<&{{Hdt z@&Et-A^8LV00000EC2ui01yBR000J!K%Y=}dKe#_4k*O=_#~nZLK!| literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ao.gif b/lms/askbot/skins/common/media/images/flags/ao.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c854fa1084eb333de9df427f96983a28cf4e35c GIT binary patch literal 244 zcmZ?wbhEHb6ky+^Ctb=TzxAm zD>E~*kIgX~pw=%k)gc|Ao`~`SG%K%Jl$* z-r4N-Dzo>~)6@R`{sEio;qv?T_VyE}@Al(K)#>w#)Ax+l{F&PMqu%_G)%W`P`sMci z^YioH@%e+!^Z<D}-6A+PhVGu49(E0Y`USYuTe9rimz0Ujl`@h=fpTgCg+xq(Jb)Mb)3#0Az_4WMx z{PgtnA^8LV00000EC2ui01yBR000Jyz?WfY2pItY1_Py%s0^uSYCy%5cDc)H^#~0> z;6T7)IUHiNMCH+PZQi31q|-T(77G&2&ge>OT369R@m9Ep65 z8VE8n2!|XTKMgl9a&&fh6sf5-3_E6M39$sTGcySa3?*4x85I>Q9v%h53II$JJP*nu MA|D?L&>uknJCLTx^#A|> literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/as.gif b/lms/askbot/skins/common/media/images/flags/as.gif new file mode 100755 index 0000000000000000000000000000000000000000..d776ec2711bcd6ff8f0451188b0d3c739c309e70 GIT binary patch literal 365 zcmV-z0h0blNk%w1VGsZd0M!5hRaEwDEp<;cvh zmg&=GczFE-1N~@c`kMd%Y#p=i+=i}ivibS>_Vx7WjD6^Ue7Tf#+fG92l$7$Pp!)If z0RZgw%*BU?{gY2F>dj8UqI{sBo&W%!m2%IZQ?T#W%Cmn}&{}ieU|-a1ec)YD`Q+Tb z004VpPuE2}qKtt60O91|;+lr(@aV!rLGuFu0DJ%fyH|#HRm|hs(;*@M@Z_)f@#z2n z`4JKSA^8LV00000EC2ui01yBR000Jxz};{7Yxs`H(XG|`1)fiX)Ii8&G#!|e!F4z! zs)6NTQe0eH21#YHXnGUH=@Sw;32hB)!k1s@2oM==8+?2b6bUi{bsRGi76TO>6cZFY z5eXqWB0dHV0691*D-|Xb3m_m7ody7}H8l_gFBlaG2{fG^9$j9qB`7Nc2c1V8$jC9v LF(WoN4?zGsMO>ji literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/at.gif b/lms/askbot/skins/common/media/images/flags/at.gif new file mode 100755 index 0000000000000000000000000000000000000000..87e1217365c869c8bf2fa6a35cd597108dbe47c5 GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h`uh6#`1tGq0P_F<`ZYEEqN4V4a`#J1_V)JrL`3v6 zGxFNCd z0RI30A^8LV00000EC2ui01yBR000Jtz@PBvEBa2zfl?s&HJ+0Rj=?aEP&Ce=+0bZe zF&it9SP&GXEujEwK_IJ7NOm)nGM`5;mGba-F8}}m0T&lN4j_AefP#bwhKP!cfr9}E z4i_7UGdTqj5pi>McNiElDkmmoW+XZ;6%``07O7V>9a<6+6ch>y78W~715Cyb$SNv3 H%s~J<(#ocW literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/au.gif b/lms/askbot/skins/common/media/images/flags/au.gif new file mode 100755 index 0000000000000000000000000000000000000000..5269c6a0e0a2c5ff0554266d9fdb854c5e8c2807 GIT binary patch literal 378 zcmV-=0fqiYNk%w1VGsZd0M!5hthUorYNpAFmH;h|$9IETa;%q+vf+)8=jrf|D@Z|H zod5tb002@WL5j)H;s5{=<7sHLz0`J#yGmoCo2knH0%eb#!f1W6HBp!Grld`4sybGg zi*}uDfwPsQ#=67WMPHtAg}5+Hlu2TrK3SXAW@_hgZ|Ka?-NVdvJ!zq$!lkm%e~Gu{ z-R7UU+uf|Qvx1nUkgSJ)r?+v3=()aYMRnfc>)>y2ws2+)GW3#LM5@q^ivc z3EsHAA^8LV00000EC2ui01yBR000J;K!R+LNDNZ5ijpy6EEc<5>(xW)0Fuy!=U5dM zz5@;dG2Kc9&Ex{W1QrQe28YWWU;)a6gaLFGEGH@g0xmx>6dxZL77-B(H3kPCM3J(k+1vUs2B&Z?{ARY}Qx>_DQ Yq5-4|5jGYZx(rTFPY>D;4ckEgI~~rLTmS$7 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/aw.gif b/lms/askbot/skins/common/media/images/flags/aw.gif new file mode 100755 index 0000000000000000000000000000000000000000..27fdb4d13906897b572573cf0364bb72d800054b GIT binary patch literal 365 zcmV-z0h0blNk%w1VGsZd0M!5hVy@I}wAfRm&H!$=eY@L?#Ns-Z#*@h7^4~=A+$(ao z+WhWz06LcW*Z@PD$p9&oS*g-$v)5g!(faFb`{`8xSE~8uOZMVC0DQavW3K>8n)&Ht z4Ti$^=34gSQsQoIPNB?(!QOVd+upGNg1_EXrq4;9%K%uj0CTkyip2m(sT+~W^x{gM z#NB4F)enlq06n7UiHUr_;Bd9rXs^>~vDg3~h5PDU27$ly-!xdL&>@k>Tc^(eGL-k@ zLtd-XA^8LV00000EC2ui01yBR000Jxz+GyU;&5;n3<@>KWGb0gD|V&_xBzzL_Kr{{KP*w!!KXxD{01P+XD|HEL{k zjt)FM4GT9E6c!df7Z*7Rs0bqiB$aC=m<|TB0ydo!6B`>H9UdMmEC|A@87C(dDk?BA L3_TCe&p`k?K;@jA literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ax.gif b/lms/askbot/skins/common/media/images/flags/ax.gif new file mode 100755 index 0000000000000000000000000000000000000000..0ceb6849f49d128216572e9fa7d9b6318090c31b GIT binary patch literal 376 zcmV-;0f+uaNk%w1VGsZd0M!5h?7K+=N~&j+%0+m&{TK{}s@VA2hVsK$H*K~jXt|NH z*!$9ZbezokXJve&((W`Y_FGi|B$ogHY}Rc6>$pGw08Ri6i#&3*p1k7uuoGU5$|z#4 z05+msio*PRbWwx8{gjVZg~j`IZy#d4OMbrm+m-ZEN$tT}^TuWQ#Bcb`Z1>`#>&s@^ z003f-#r)x&X_C?H(Rm(Qt;<;e^k`r3(rfm*VENB=?Mg!PNkdP8!|Aa!@k2cHz9{g% zPS1@1A^8LV00000EC2ui01yBR000J+z{F_SBV+;r4kr?^I1`xY3RF@Q3JwQDAdrkO zSA%E4fC)4q9Z4gBhDEontMefZI+EVYU|2L#DkujBJ^&Oa69gb0A`J}?5GFZ150yAA z86^uhDiAh8Z0J0uLubnGBOtx99ax8G$$0b#*@te literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/az.gif b/lms/askbot/skins/common/media/images/flags/az.gif new file mode 100755 index 0000000000000000000000000000000000000000..d771618498ded597d5d95979e455fa797e77c0cc GIT binary patch literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5hG_KcFw{-xD#p8>NNwwNmx!VAJ0NiwR0Biu&Vqwip zOaM;+E~Zu5Yiu^ETmW~t(_38SmzV%D07tWGlK=qTdwV^wV#`ED^V-|$xVX?#Q2=DD zSH9tA!QLC9M*vu;a>n9b!Q*<$8VuqG3ax&5B2k|~b7DarE_DPRAqW#ad>9cw5)Cyk1OyBqhCC;V zAsIZ4kpK)Ih8>tVHVYdRF#s~32o@U=A*2fn9u=so3#}U!23?pSJP-}DtrkyEPzcHn J2M)?X06XGIopAsF literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/bb.gif b/lms/askbot/skins/common/media/images/flags/bb.gif new file mode 100755 index 0000000000000000000000000000000000000000..b7d08e57e3686b1fcec0bf4668fd99ffa8bcedb2 GIT binary patch literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5h001id$12hmiRI literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/bd.gif b/lms/askbot/skins/common/media/images/flags/bd.gif new file mode 100755 index 0000000000000000000000000000000000000000..0fd27ecabe8d3014611684d8d81a1c6a8529fce3 GIT binary patch literal 361 zcmZ?wbhEHb6kyB6foGBf_Bm?D%#Qiu>wVkbDPVFy-ika1 zX9gfp{K*2M7<51c$WIJxZ4UD_jU#(5bnG@?xbvhkx3Yz_p}ajOznr?2L~$dpks%9PyRABpNuLt0 zm@x~7tUWs;4}+)%_iQmeRSsc=MIsFHY(l1Ubk+(BGcAg*v01u>ErV&V7pu>y)2AI7 FtO3oAcfkMv literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/be.gif b/lms/askbot/skins/common/media/images/flags/be.gif new file mode 100755 index 0000000000000000000000000000000000000000..ae09bfbe149911d7877616273c87935511426dbc GIT binary patch literal 359 zcmV-t0hsb-^(-t(N=ow_9P#e}`}=eD?6 z@&Eu-R8;%>M_5@|_xCUM_9{9$I{f@h_4Oo0MMeGT0QvJh-_Zc{?K$}JHsRv{)!_j4 zH#bjDPyPK-`S$?N+W`0XF!|^JKtDhG_F(+{W%TVI(cb{u-2kNk0Q2)e_Vz;Y@ih1G zFaQ7mA^8LV00000EC2ui01yBR000Jrz@JcfFqvks8E44}{2ovS0s(>8YJ;r6`Jhlf zn%Bs4Ikf_g7Fa+1{qEacm)!07%~Zffld)F1tmLtAR!3` z1{E!iku(k%l_WQr6#xo96D2evJ)sQ^6&o9-sB9V%5u0s6) z0RI30A^8LV00000EC2ui01yBR000Jqz@PBvD;5z*WFqlfI2VIKr2>KQL;wnNVXfZ4HdccqdBJh?EiD(F7ySJE-0a-*78Xf) z6z22hJghuTxlQu&@=LW#?(XjD_UiguTl{2X9HSg9sxA8Z`uF$uYLh+rQd8>c>iRuB za+*i>_V(W1-s}JXC88zuJ3I3L0ObGxVT&^JG&JM!<3O`O@eK`9xKaRw0015UE2S&o z002g_Mp(L7AfF)M?cXq`Ft^jU(dW_l0000&0QfXCJFq(7@8IA^8LV00000EC2ui01yBR000JsK%Y?PC_;`JO=CpZEXdlVD~0yZ`T z92^)JBqRf$3ZWz`H4^|EAvXmDIywmnC@2Ljr4kYu834K=AtfcNJR-s$#Ka@VEiF9D GK>#~f5SPFJ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/bh.gif b/lms/askbot/skins/common/media/images/flags/bh.gif new file mode 100755 index 0000000000000000000000000000000000000000..56aa72b2b645a4054500f28e6c2336aafc8ab784 GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h_bn~@K|%RaQv3V+@-8m@0Ri?ZD)>7){p#xK>gx0$ zAoV3B@eK|4MMd{ZOY;B#@(>XHYH9U8KIQ-b_%=4`0092|{rpQy`$tFa0092b(EV<1 z_b@R0W@YprAM+U*_%t;7008+{SK?}vx}hKAh$0Q&m+{QUg#^78)v z{{R2~A^8LV00000EC2ui01yBR000Jzz@D&ID;Nu*&|{g&^nOqaA_v<$0=*^74@Y0EW_r?D_Tl*4*fbh-<`Z*OQ9fXJ`8Q z`T%4A_w4fHc6QubTh#;u$Lq@T#l>^Sa^>jUSiV?Nx>Lyj00372o7Cpiup3;{PE7apk*31SHeBncV- Utrs{bA<@wS)YLLEFgig1JGeZe&;S4c literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/bj.gif b/lms/askbot/skins/common/media/images/flags/bj.gif new file mode 100755 index 0000000000000000000000000000000000000000..e676116f8ea589be623ced9474ae95d26b409ae1 GIT binary patch literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5hRJK(0^&~s1I(o@^_e41WQ~>+?0A9UbvXB=jF2-~a&g z85!s20Q>t#_b)H?^*>0kM)vkZSh`kXzhXnJKwQ0Ca>jG^Ha7P=F#P;XPO?isuRq-Y z004;qA^8LV00000EC2ui01yBR000J!z@PBvC>oBLj7IbMI0n!Y^zleoArQvqH#po( z-rY+S8j(uc=htJRjmzi2%;h+lJSh)=Y%T=?F?2Y16)8Lf1UeED78V2u4GJk09ThS; zFeoZ3EfYDA3Y0w^Hkq596ALU2H61+yubP|_ARrhl5j6)K0K60w7Z(c)7#Kbc5fKH; O1qjXvEG$0LK>$1EJ(0`+ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/bm.gif b/lms/askbot/skins/common/media/images/flags/bm.gif new file mode 100755 index 0000000000000000000000000000000000000000..9feb87bc9e846584ff47884f0b08b21637a36896 GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h%NG}sahT%O-_0y6<%NaQJ3M;2WAotO+PA@tO>&t4 z0P)({gu!msuDRZ0W6m)#=zMvq0081^YK{N^wg3RwN=fmkrF9`q+gn@JN=nc*HQsD& z*i}_+#O2mSMaB*e$6;;MKtQ>Jn$tx^&pJBGAt5v-P1Hg{-@(h7i;IzlvBP|hgBLyM z&(`L)*me*ge$*`cb~Pfy=?di3Y#kD$!}09k(( zJ%<1QA^8LV00000EC2ui01yBR000JzKv3Z3WA!c|ijop(Mocb21BYnAHVy}d!^tTC zGQvy((QQ1Zg61*EC@wAwfnce{(!2a&q@bZxA|gBu0cr;w9Sb27FDnTkAPF`zYYQeR z3nUX1GdUF=A!=+42BjLC5}%=K10^M-9}hni4xnlStt9{eAF;DqTR9mcX(VfGvrZ8T N%oENNKhZxy06PV_l#2iW literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/bn.gif b/lms/askbot/skins/common/media/images/flags/bn.gif new file mode 100755 index 0000000000000000000000000000000000000000..b7b6b0f9199a96b4ef57eb4cac7413fe8a71793a GIT binary patch literal 373 zcmV-*0gC=dNk%w1VGsZd0M!5h*@ScBy8zjGWz@n?Mn*{IW$=0|4^4?A^E-v-e0KTa|+?tW#iFo|`==t;W?$|Hn z-uU+CRPy)t@7qi8-B9t*0QKfQiHC=(s;czoc(aE9QBhI&?M?OB0QK_MVPRqZ{{8>} z0RR90A^8LV00000EC2ui01yBR000J(K%Hr5su*RLOJf-b{C*G!V><10G8u!x`RjRA z48!Aq!7LVt3C-K%xD}|w;mjgUd>@`j!C9pMEiV!~F(eLnI5-3V03Zc_5)vU21tvBF z1epL76ape3A(I6a3@$kb11ACk6c(-oH43B%2N5$G9v%s5gG|6 TzDf;E0Ta;<4ih8SH$eb9y}PV* literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/bo.gif b/lms/askbot/skins/common/media/images/flags/bo.gif new file mode 100755 index 0000000000000000000000000000000000000000..4844f856924ae58edfb7fba44e7f5c448a2409cf GIT binary patch literal 359 zcmV-t0hs4vV(D)Xgb0J8x6j)oh?9PI!A>Dfc;*-7r+SMA+W=+{2y)j90jO;OfS+aCb+ zZ2+~@I#HDX`@xU-Yhm@MWcaUe{SE+6*-y~rdg<6v>DpD3#Q^l7S@h_CxYj>a*j4D* zPX84HA^8LV00000EC2ui01yBR000Jrz@P9(D-Mpwk#h8VI3JN{C=>`BuFOZ(dMJ2f zF@>TqYQZ?1nMNb~=yZbkhc)S3E)GY9H53#K02vt#up%M=2&W4R8yh_+f5#0kd62+7Jp F06Q~Io@M|5 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/br.gif b/lms/askbot/skins/common/media/images/flags/br.gif new file mode 100755 index 0000000000000000000000000000000000000000..8c8661626bae57026266d56824709a9283d8c7ff GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h*yZ@7)EQ*1WcKzcVzE>JD*$C`>Gbp+sM%CSoJIWn zQhU35Q=?NucKT?rY5e?309XJTgBo9}UjRe^CWu`v2kCd}8kT1>3rugqR`S3bi zgXwK^s&kt8u;D^CmlU4TF*&3(uH8eG%5(PeNv*7*{qs>jm_YUIMD*z&EnxTj{8|8G z00000A^8LV00000EC2ui01yBR000JzK%YxI2Q|##o}-XBqc_nX~imf zicKPi(J(H}D*|_FGz=@5CIvz-2nvM?01#zd0|OKZ7Z5dh4=oKZ93dtH2L~iS5FP{% z8z>nK6&yE_F&%{?3?MWt20T0lI{^_97(WvuAPEUG12#Gb6t58)vRzpWG%#ai8o)?P NOBc>R(9u6Z06T&Vj4=QJ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/bs.gif b/lms/askbot/skins/common/media/images/flags/bs.gif new file mode 100755 index 0000000000000000000000000000000000000000..c0a741e5ca69ebadee7774120d87675df8f6671f GIT binary patch literal 351 zcmV-l0igazNk%w1VGsZd0M!5hMwYHDg_-ri8!;Q+I)&W*gF7+nE;!qRZKOZCw|d!C*;+}}yn+fUcmx}HB1#?JuD%K#f2#Hvf&yg>cgPCviDJJ8U&oE3tS1(vB1E9iJ}{c4-fTIVo~<2!MAGgDgFLhzJ)0iw_wz xkbjbsiy1pHWd{cv8#N#x2P!{4BvmsX9v(bA6ciyL1UCgs1p&Uk1i`{V06Udwm5Ej<$3qzlIq*j_PPM<>g?U%;q-DH zHz@pY7YC=NAd&!=j7w<4FL0hGvELK*3i%RX*Bbn0QcQj_}5dq zmwf!+Nalz{@sUyQ6#(zM0PNRa-@8`meof^k6VUOkydMcq-6}VrsEW3M&=`)TtD{ zkw~S{$joSq1J_#!yF{6IX16(Ty6p%d*8_Z7HV|nXKMG+4A`cH5A0#9j8v`5|h6FA( z4;L2(5HAQJk{AL67Ca~h3=07oI1(WyCkX-y5DY0AHwzmGpCJw>KLR=w!~rk|0|O=| X4h}vlBO@^-B_JRi*e54G+(7_4r_HFM literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/bv.gif b/lms/askbot/skins/common/media/images/flags/bv.gif new file mode 100755 index 0000000000000000000000000000000000000000..6202d1f3a2df4184878f5ed8bc23aa630d43c061 GIT binary patch literal 376 zcmV-;0f+uaNk%w1VGsZd0M!5h01vKZmEH98^zCF}`uh6sZENy;dei^_23FAb_xIv4 zFM6fq>gwv0xa;FBE9*^5?Ot5H007+=6wLqt>r_(O008MkL-O+Sq$r8H8S8KAKx4qwEzI+G%}a&g)Y3x25QbD!hlDJJ;%`1$$yu>b)6{{G_A^8LV00000EC2ui01yBR000J+K%cOO_*IUTgL1<384SHfuU06)29OoSwQzVEFmNnFct&>I;*X(EH(-}2Ut4`IvFn*G%YA0 W3NpY46Bhss8xhtKBqTiBK>$0|z?fYC literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/bw.gif b/lms/askbot/skins/common/media/images/flags/bw.gif new file mode 100755 index 0000000000000000000000000000000000000000..986ab63c2764732ffd789269068ea5b033c3ace0 GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h0Ega4$@D@(LOaCqa&mL>^72YbN;5Mv0JHX7()euE z_k-U2W7PVV<^THn`u6tr0G;YpRaJ`N{r&y@`1tr`()K$$I{>coe&7CS*7_2|{`B

      v=j^b6%_x}F=0IBa4#s7NR`F`B`Pft%J z$^T%_^Z>W_Z`k~L-2TnY%?ZH$?d|PR&GwVz{*U7Ra@Y5B*!XkW{dU{^)z#IA-~0i+ z{Qv*}A^8LV00000EC2ui01yBR000Jwz*cIgnazBo(F<|8pir7d!)CkPB)!FAr6S=V zQ4A)w)4?(sMj~NSKnkb$WbUX_9{30EM~FmN1_A;W2L~J>Ap$>qe}RLAhanvniv)mz zgocP69S1)&6LofZ8wI8XGA|2hYbG@TumiFp00>)MISL9D6)qkgBD60}C?FsZ5FZ~U KB>>I$03T&+g{ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/by.gif b/lms/askbot/skins/common/media/images/flags/by.gif new file mode 100755 index 0000000000000000000000000000000000000000..43ffcd4c7168eed43697af80901f59eb800c8d2e GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h^B5TYTU+S>093qGEvhXRp%(m0OZPA^^#B0Ij1oIEdc!h z0RI30A^8LV00000EC2ui01yBR000Jtz)u48^BIkZWKtmbxf~9RbTUaK0<@V#a5Iep z0SL*!xnx3z#r7u*kIUz@Vke-0Mi3R*j9w@d8Uj8aG?sYQ0`8CB=w=;M2%_}ui@050@}uG%YO>r938jh^H}W7}|?_-K3K zM1A#akM4Aj*@T_#<5Dho0|wkLR+Wj%A4LZh+xDUfJE%({`-8pwZ9f z{Ndf=;q&d~$@RWoci%R5=|6Golc2NI>C&_C&Srt-fT#OlgzToYz=W6VaHPjheDCQ1 z0Qmp_A^8LV00000EC2ui01yBR000J!z@KnP@c9VHqA^5jek3~#rqn@gHZc$d2LOlw zESpVnnI#fE!PYA}v>K7g;gPVUDH4&W!gwtlDlj}277uE90W2*A4kiT?2o@tVY8n9n zd<{A@5ezFM5R@U77Xb$~5iSb{2@nto0;3lk92W`(1`0B+uL1%c9Va;fHy$1_4;jiS OAV$tU1JTmcK>#~z$E7#` literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ca.gif b/lms/askbot/skins/common/media/images/flags/ca.gif new file mode 100755 index 0000000000000000000000000000000000000000..457d9662d54d976cdd5b4f4d8e480831995d9af1 GIT binary patch literal 376 zcmV-;0f+uaNk%w1VGsZd0M!5h_3Z8L?(Xu0iRy=l@p^jcX>8{c8~XbC@H|54tgHR~ z{p{o9^^lbH_4V@d^4S0Y+eAs^MMu~qDBL$X>Rw;?qo?RyWA1ZyrT_rA008Uj>+XGl z$p8S=85!+vbKXr;=1x@WC@jm%%f!UQ?PX@=VP@_yIonlP;%sf|SXl8(Q|!II=^rQF zYHQTg)b-HQ_nxBe&dtBSzw`C=^ox+{QeE3CFX-Ld^p=?QnV#ZRTln|*=)l3>GB@Ep zK=kzVA^8LV00000EC2ui01yBR000J+KotTJ`WcN5N8rKam?{;VVhR8p4!gp|!$DLS zo9SV&nKc>_P{CQD5frZ&iNaese34Sd1QT2iS{?-@5Dq;)78xNq0v=;27Bvwq0X7pl z87w#(BnJQ}ARs3T0TMkQ83qg&6gv$72??Yc9X1~r4>TSr4L=Syv$PTrxB?pmy-ESg W8WRx2Ob;9`BGn_;G8ozzK>$0p52i2x literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/catalonia.gif b/lms/askbot/skins/common/media/images/flags/catalonia.gif new file mode 100644 index 0000000000000000000000000000000000000000..73df9a0498e644d740d4b977b750e7c2f81c6777 GIT binary patch literal 238 zcmV>2R(OZZtg{&-mI@-yij3G>G+^+_kur3&)* zRQT&N?ejb0wj1j3Dd+AZ_{=f;YDez$MDjlu?7$`U=P22&66m}k?^h%Ay9L;CJOA^8LV00000EC2ui01yBR000GRASa4Yd7M;wH4xyw+omXjATbR_ z?0n>Vg8^n>fW%@nfksm(I2?ssXFBx&2Z-zhVK{ug;Ll=Fsbn%03&zS0Vzt}ua>-~u oAAx)zv9`Li2or*W1{5_m40TQqczFpa6e|sr7L^tWmZ&#vi!oWTyicM>= zhmfsIOrUA~?N;j4Rj|#BG>=sgeLO*$Wh{(RN}X%~76AYBesQ#oRG(};m|-=NS^!f3 z07L*pms~xQRYsj?Ih9>zu7hB!eoUQS=FC1!n^Iq*gHNGvceRn>%}V3YQ{vNQ?9xyE z-B^6BU(voNRhBx+#7NJ{QUF~SLYHNzx=l@-V*pPXW1vrLt#M?oaMHv-+Q~uM%1;1Y z0{{R3A^8LV00000EC2ui01yBR000J%K%Y>!DRPd2jX+TGJuCy%<)To8M1@u1)Et-! z4FCZ1kz_!)38gZ#7z|;GLzP)TCJEQ?_GmS92P!fdH9QLmFg-~ZIRFP3EF&Ey2nhiJ z1V0-WClm}eDKQ>+moFMW9109&9UUY)mH`nF5U3#^XBr-Nmk}@#6R090Vx1o}X9PQG RKTAs$&=o(^Kho1d06YCiiGu(D literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/cd.gif b/lms/askbot/skins/common/media/images/flags/cd.gif new file mode 100644 index 0000000000000000000000000000000000000000..1df717ae5cdacf3d7ea543831aaf2fdb0f94262a GIT binary patch literal 243 zcmV}Nk%w1VGsZd0K@0RL4d|2GYA-u}p90A|GB{{Rq6xZ3|^8TV$2-0BSTOZ tJ`>D_6ZdB5brBvA8-;Rze|2hu4{{fe7ZH+^gBA%3n3x5d9-W;b06Q}=W@i8Z literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/cf.gif b/lms/askbot/skins/common/media/images/flags/cf.gif new file mode 100755 index 0000000000000000000000000000000000000000..35787ca489da892f75fb431d52e85ad726b85b3d GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h`b9-Fr!*Lr7?RSH`T1A%_4V}hIiuO501eXV>6HEb z{f4IZ3O(rdDk{6;F$7`+i^_{+i1YaP_?Wc%`8YY$)BsDmOGURuCY&a1$Zh20=d#-z z1~B0LYiod^_`|~h^71dM)(v`{_TJtA03+Vc&H(ZN001BW*#H3h`~AS?Tbi4q&y8{3Je{YcVx#GE#tooSGnC6XK%v(QD>^g>goG3n0|O9?HV+RO78VydITQ^T z7y_CBCy$bp0S%X$n#~#3Y`-G literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/cg.gif b/lms/askbot/skins/common/media/images/flags/cg.gif new file mode 100755 index 0000000000000000000000000000000000000000..e0a62a51cafbd00551b5258b17284e542272d4d3 GIT binary patch literal 359 zcmV-t0hsg*-+&G0P{37UEWHq-x`d#!NAM+U*-~a$r+f?z%0s8ts^UDeL zvnuz?OHkNM%JOCP%@Oy}7yJ8Qtm|UG@JH=Q0Qas=P1OMRQ%3E-0QS8pX5D6<=tSKB z006@PA^8LV00000EC2ui01yBR000Jrz@Kn9C^BR*mWpEg1)d7UWio-yN|?%x-i_`v_xJf&S^aWy{$F4GWo7tRSoJ+U`$V)sTy`awef zdwTg;So~^g^&=zw{Qdb`TlOj{_b)I0d3pQ$`~G@*?EnDy`1tzz`uzO-`T6<%{r&v_ z0RI30A^8LV00000EC2ui01E&M000JQz@PBvEBY7&!0&LV-EJ8Ts8aZ~C=NldmkO8` zznY`7-33@Eg|DWK?QA-ptl_)$cJFv@g!4^yCvZGD5e5(pFBl?vG&3Fp1SKCNgApMx e4+#J&94-$1Sv6Q#~ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ci.gif b/lms/askbot/skins/common/media/images/flags/ci.gif new file mode 100755 index 0000000000000000000000000000000000000000..844120a52b2ace1595d581a03c564d71d3f14f0c GIT binary patch literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5h`m8gwt)$}Rwl0QB_q($doZhX69oGW>l24Z{ucWdQrJMgIQ&Ce0=`%{KnKS^c`}_R-{Py=9HV>Qy5;rs^761T%qz?}T6ci0NGb$-49Dtb*84?W*9y1jc3JND8 O%n%R`H#Z&*K>$0Fexktu literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ck.gif b/lms/askbot/skins/common/media/images/flags/ck.gif new file mode 100755 index 0000000000000000000000000000000000000000..2edb73994c90da240f120ea7a3143da4fd1b0723 GIT binary patch literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5hixQZ�Ba-d*wp60o~!^6Yf z)83@4%IKArdyBAef1%iKb3RdjrBiL=Y-?zGr1<#wL{@{-8yPn@f!UCkyJvfopvUIJ z$^ZZWA^8LV00000EC2ui01yBR000JuKpslu@tis|!iT^lC=@zhtI;TsTrt6jVUws7 zxfdW%3j}1K2jyUJWPY9%1^~e9OqatA;@}v50|f~c6+I0lI1zjt3lu*c2@)0-4-6qQ zZHx#9EFUl_8EOZLeG3Q(5kH=xYY`fK2B#Ynssf^}rKb}c8me1eDy#>i5U)Q?PftI~ I%*;UmJAFx!?*IS* literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/cl.gif b/lms/askbot/skins/common/media/images/flags/cl.gif new file mode 100755 index 0000000000000000000000000000000000000000..cbc370e6ca757d338d851e78a257338c5088edff GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5hRHfwoZEXNt#rj)Y{A6Tir``HdQS$Qg>gwwG^78T% z6WQwbRFu-}008$yMC1Sf^*cNC008nXF7)l~g}mnO@9*&q4f_B9d$#5KMMd~DH1{tr z_9`m%Bqa17ANe{u`btXkGBWcS8Q%Z^=jZ48KR+|dD`anSRHa6wc(|D`gRGQiV zKd)P$+t=y#k;CU(nAH9K{@?BRcd_F4@bLKf`1SSm-2edm{QUOz_Wk|+`uh6&`}_I% z`S#~9+pog_ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/cm.gif b/lms/askbot/skins/common/media/images/flags/cm.gif new file mode 100755 index 0000000000000000000000000000000000000000..1fb102b295c86d04176b567ac795d92913dd23c8 GIT binary patch literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h_AD&?YG?LHIOgU6^Ya||J2?0EN$l+aXu@dsc60gp zR{(|p_4OoEyHoo_MMZ!}X15^;I|>4pih*93Mh&*jH7OM41RiNO4Iv>JI2af>8Vm%10~a?T4;>i= z6EOf9j}$tQ2$eiJ1pojrA_No^Cn*;Q9Uve%rZA`!B_$jw8(ceVG$bT&JtrI-J{KD+ P%ry|t&nYQB)Ik6{8V!;B literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/cn.gif b/lms/askbot/skins/common/media/images/flags/cn.gif new file mode 100755 index 0000000000000000000000000000000000000000..b052530978823707ba275dd861a188e55cc0f181 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hs{jD)lSsJ$0Ony~-8MD*C@0eNB6BFS@ zMa=*J+b=KPKtS3nE7mS9;ZRW6B_-onSmsz(_Rmq*ARy5V4c|&i>2Ge`MMc&hANt&Q z;Z9E4Iy&AuI^aS=)fpMW008J}YW2)Z`zbm)I8f18ZBYhGiKN`WYtZ3-}cTd005pyci#QlQT^Lg`Poy8aNCjBL@cn87O~(gocQU000aq zE(MW?BZ-TZB`6LOEgvrf12zf@7$PD(0|ui3v>+g*rl_g14!yk)z`zE>!$AN$75JQN literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/cr.gif b/lms/askbot/skins/common/media/images/flags/cr.gif new file mode 100755 index 0000000000000000000000000000000000000000..0728dd6a498c4c3e2a69652e0476a60aafe60171 GIT binary patch literal 359 zcmV-t0hs42Jdg_UT4O>Pkug0516X`S5ac002{7e7D^g z7-xgL<~uv>q@;wL%<=N_f0xSk`T3Km)a_MO?yRf(%F5v-CF3hA004OLuC0xu(fP&1 z`~Cg)zP|Rny8r-X{Qmy+xwyFi0C$nbbdJMriNM|f0Q0uB^|!X)X=nMNq3cgi<>~3? zKtSE!-{2n~@rQ+ppw81lKlj4H>!6?d$jI})zWmhGdz8rG008;?{Q3X?^Rlt?^z`$z zv-|%3A^8LV00000EC2ui01yBR000Jrz<^MQDHcD-4+0U8I3*fQ%;A9GMx+vA2kQPf z9G%V(i3rXt)vZ#iZ8oz`#}hjFY^mH~GFcG@Eerqv7ZxuqA|`u&fP#dE3Ji${jDduO zFA53(A}}>{C_X$H6ci1oG!!xh90sliX97JBw6rc5R909eB?}7)zzGFNOT`EU$jQh- F06PNatDgV> literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/cs.gif b/lms/askbot/skins/common/media/images/flags/cs.gif new file mode 100755 index 0000000000000000000000000000000000000000..101db64939d70025b6a4712466a58640ff4023b7 GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5hb92T1{{HrJb6{Y-^A;8W0Eb*$yLx)b`uh6#`1tnr z_U6mWOiZzCY{7nh$ogAb`htS}=;-`pWJN`<002mXgUk6+Q}k?X`aM1Sii%THw(I}^ z_(VjCiqAAOru92J^8f$<0C@5)F7xyA@?~Y^00000Wb-sM@eK{&008^@`}Zy`kC4)& zq}umOOIcXC_%t;5008wNAvrm%^>}#re0(e{q4_B(Wo5wQ$H(;b_57fq_4W1L008{_ z{PgtnA^8LV00000EC2ui01yBR000Jwz=CjC2pL1BWU_E*9sqzw12-_dGz92g%kD>pJS1OzB3BBl}#4;B_K92_4XCnq8zJs`##$jBwj KDJebAK>#~H;F-+; literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/cu.gif b/lms/askbot/skins/common/media/images/flags/cu.gif new file mode 100755 index 0000000000000000000000000000000000000000..291255ca3f7621e4af8eec0a3239a7f75d22a6a9 GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h`T6<%$jA9;XxiJ|_Jq?EnA(CY< z^Mktn01D^oEiL{1{bi~BYNytGv)%LPT>u#CPn-Fj#LM*b^z!oZ@kmH@vHX0t{$Zv0 z_xJYzDDRrW$MaHBY^?fdsrf&V_C}QTL6Gu?z5f6J;cKn_Pnz}XMn-6>{zR1b-T(kg zm-P30drFx2Zm<52y217DZ~XhZ06QEjsZsy{ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/cx.gif b/lms/askbot/skins/common/media/images/flags/cx.gif new file mode 100755 index 0000000000000000000000000000000000000000..a5b43089b01283eabb0e53b270e414575d24679b GIT binary patch literal 363 zcmV-x0hInnNk%w1VGsZd0M!5hXV+)rR004|-W!KN{ zNC0jCCsdO~%|(se94IKpt*z%-a!RsRc0B{%_xkE$J z01Qw}%}f)z6QJZj005*@(oRo|A{h)Y9}6Tm7Z(8=IXf#Aehv;jf&nNIC>uCB zHYx*-9uf;62?P)j1qCfG4-7mWou8o_r4OFew3<>lq3*RJB@;{4ib^W~d`$By{bNBYx1_V)Ar{rvs$#re}e`qx+D<%^c7!WanIvNN(RvjoW z5F08akT^R6JXkUrFcA$A5j#3KI649bIW<}XAut}QI6^ox0AgcgkS(k;NlOj^1P28L L2m%5#&_Mt@EbY{X literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/cz.gif b/lms/askbot/skins/common/media/images/flags/cz.gif new file mode 100755 index 0000000000000000000000000000000000000000..0a605e581dee0f0d8500f0f0d67d7feb3f1d6f03 GIT binary patch literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5h$^Za_s@~NB0d}k9<{23PM6~kq^6u{Lz0&OJ>gwd> z<@B4I-QC^sl$7NY6Yq-RdeT z=_DlWG&JlxI_New+5iCPA0Kg@*yu7c>@P2RquY_Z>Wi=7@Q;t}OH0n(^6pSjm$>Bp z{r>ANF4x!BW1ZgbnVD^*;lkDL$Ay{x{{H*>`}p|y{QUg+`T6$t_Wk|+`uh6A008&* z_x1JlA^8LV00000EC2ui01yBR000JuK+EYzG#C%aL_)!|m{hfBYlp+xc)6R8VSx;0 zwH@`E_35_VzyLAEYIQ#ymle>+5ac)U_o}coB^fX@3kwYmC=U-Y0u>X1A{QPVBpVzd z1P&hn6(<>yla-g54kG{sC!ifJmY5D07!*AP0W=a4D=85X9v&Yf6tV?9ARq$A0szX& IJeDRmk~Z$xI*esy^4v)C;Ck|#M6-%7SXfx=i6{ABV78<$X*oGRKRWhOQtvY}y1KFV zSy{b7F`I-h{MDq&xUcenaD!W0=FJ`I9v)^%Jm`WQ@8E5%t)rE4a)5z>`|+ZjoRH|x zB0oPbA^8LV00000EC2ui01yBR000Juz>Q<*Nd1n;q=UsQ6mn1oqt{z3e#_l%GHG~8 zq|GLU_}O9-iB9+V%pPzQs_d!=1Q?2`r8*oeD-bdPb$EJwet-~ygcW&veSd)vHG>2& z3JM9EA|f3fB_%fs0Vg~e85$ZOARZnZ96mHSFDC=H0};9*ya2uc7bC(W1Ox`hF9a9L I7Z*VQJGrf#Gynhq literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/dj.gif b/lms/askbot/skins/common/media/images/flags/dj.gif new file mode 100755 index 0000000000000000000000000000000000000000..212406d973881f3be2b8c1f4cc4bbed17bf29119 GIT binary patch literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5hvFoud%q>TR{s5@}G|e*rmH>^h`X9+3l(+oH+5S}6 zRQ>$@iLLoMdHZFo#G1PLro;XGn3y@xIeet{jH&k|YV@ne{w>ih07~f+#S(<1_x$qm zMAJn1`uTmH^&`zAak9z{!wnf?@PVoKO4dn)tN5V5{29p^`uh9#_xJPn|6QiQzvI@8 z-;I^$mj1!P6J75BNr5eK_jKNL6v`Co_vw_h`PStA>hb+slm7rY=iT(({{H>|hXDKg z`~Uy{A^8LV00000EC2ui01yBR000J#z(h_!BsPw+N<{<{{Zt8y)B=H+Opgb`hWY(? zHxpuPFfdA^iJ{AD<1A$}dZNZG7O%|$m9SAL8X6uR6gqej5eq&jEFd5bkSicDiV+(= z9RMU37at!dG!g|qiat9t1OWjb2PYXB1U(&lngkcCtr;O90X-=-E(*dV92^o71gX6( P1I^6^(9k{8(?I|`axbfZ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/dk.gif b/lms/askbot/skins/common/media/images/flags/dk.gif new file mode 100755 index 0000000000000000000000000000000000000000..03e75bd297377de3d398b7c36a613ae283ca64e2 GIT binary patch literal 374 zcmV-+0g3)cNk%w1VGsZd0M!5h@KjXydV2Tk>-Tnb?>;`x008evN%!~n^<7=$LMcM0086-4e2E%>pnj6VPWhsG4xqk z?Kd~;D=YMBYV&4h@?Blw008hoLg*hK=NTFK`T6wp^yo4&{{H^%PEN=G0QL3t`{(EL zR8;Nl?dUZ%@mN^t&(G>PIqy3=`}_OyPfzgx0Ql_A^8LV00000EC2ui01yBR000J)K$~wk`LQOGN+ra6JbZ!Z0HqsvJ{b@UkZM2? zh|Mq8a)@ReO~=rf1j4PKqIOPqE{nosuxZtJ3Uz81BNzogC_g+rG&m(Y2L~%A5i1El zii{ACk&_V-CJ7ZD1`Y%zHyn2(BoY!QDit55GdnjL6s!^!77RTVSz9{-DGL}fFDDGX UOCb*pE-?)S)G8`HJt{!}JEF&=EC2ui literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/dm.gif b/lms/askbot/skins/common/media/images/flags/dm.gif new file mode 100755 index 0000000000000000000000000000000000000000..2f87f3ca6a52c118cdfe6bc0a6dbc623025db1a8 GIT binary patch literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5h0BZng!fANOcuk|@^oCLV{QPvaE&x*iRLC-1x?DV} zJY&COmA5ucv`vA{f&J}j^z`(2cXIaSTlV2N04@MOtv~a0HZ`d=OG-l;8rvDgkm9|A-a-SpKT&M)l)gBIsMxJ{ow$M z%uC&3AK>~-_2NPAW-IDzF!Xak@og&eZ!urKUH){MK+`4=x$Z$a8m$@ z00000A^8LV00000EC2ui01yBR000J!K%Y>k(X4(2fD&*x_#9A&KyZr`0t;IL=X3_N0|+uPBp@IdNClP! zB@7l52nHh%pc@(jI1LRs9t<=FE+{4$3KSXvre`5FBqOdFuoM7T3keA#5*QF?3MwkT ON=;3M8x+#hK>#~#;)-ej literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/do.gif b/lms/askbot/skins/common/media/images/flags/do.gif new file mode 100755 index 0000000000000000000000000000000000000000..f7d0bad39e027d93dfedfed5b001b2f32ff31205 GIT binary patch literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5hQ*62Y{r&1hL|}Np=Q=v}`22Z}&g@-X00372A)xo| z>*6FN=QcIe005Mv*vtR`=RQ8}^Y)FN)mwADIaaUaEG+u=_4M`i`SkPYQc~+ySNi(; z`1ttt_V(KV0C9)Q=SoWLVPU-h0K@q<#=ip))CxkzKSY=X$< zL_~g)(AnST003d>)zR>8Z~XW7^YioV^ZoB?YU)o_;9x^v5Wds;H z04ggcClfFpHk1%@3K5!|6g&tXC6x>nr9G$=00<3N8X7ksr2`WaJOH&zOd}&PFEGjo I%m_gMJNYW5asU7T literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/dz.gif b/lms/askbot/skins/common/media/images/flags/dz.gif new file mode 100755 index 0000000000000000000000000000000000000000..ed580a7cec832efa9c9aa4900ddfef45d938e132 GIT binary patch literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5h+S=Oe?CkdT_Kmuu<#K4(d2Vc{iBy$ylfS9*)z#Zr zP|?xR;o{=wj)z;Dd-Cn=`TF_*Tqpob5aC-;jhKPlQ%7Q zXrzXIvX}y9HFT?xhPIz!o`89-ly9hv^Yin@$;i&m&eqn}A$d)7dtl~!bnUsgMUH7q zk#6YE%<9?K^~=la^zu%kfVpj8RGfPC@bGl1kIrskW}19HgERA^8LV00000EC2ui01yBR000J$K$LEn@kBffjgr9t05XW^U;qL^u2=y;hv3lSh3Ar3bR z2QDf#BxXJ)5gnBWDGC(?Fc?0KK06X34hJnPIVmfujXgiEHiV-zF(f2DK0iMt5*NxF Q%o`;O3nn`|B_%-sJGCdIJOBUy literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ec.gif b/lms/askbot/skins/common/media/images/flags/ec.gif new file mode 100755 index 0000000000000000000000000000000000000000..9e41e0ec8c22fba363719ef9ba536c7c168e0ac7 GIT binary patch literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5h=)C~--(>ULTIq6f$N&KQ>yZEeTiZH1)+#FZ<5&06 z4<}}}?#2N0SW`xQ!*rUrS%aqSH!=C;b=Lp@_v3o@;cYr}zHF1RT#e23;dA=uW9R?? z`{;r7-%R=Def;Tb{p)l1=Y@Ks*JF*X;Y&;N&I9sFMEdEB@IpHPDWd%Cmr;etFm1b4 ziONiY#{J(5e4o4#Q;DSj0N+DH{_J>xqrTK1ALCL|{_v0TP)qgVVnTYs_hVg`w94VK z0QuJ$A^8LV00000EC2ui01yBR000Juz@Jd4P?V00Bw+bdIaP(i=@bfiD3lDK$>DfB z5=o^J2nYljANLy`m(PNV?}ej*K%b9BljwIkIsh>}H83y_4;L3BBM^=k1}P#K7%eL< z4m%bWEG!ESk&~8~nw*{sI|c*;HzXu82eAmVHZ}(`8$7xV4LK$zC@2xb5fd8|$jJoD I%*;UmJDaVaZU6uP literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ee.gif b/lms/askbot/skins/common/media/images/flags/ee.gif new file mode 100755 index 0000000000000000000000000000000000000000..9397a2d084aa397846d125405e06e31f81ca3eeb GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h04K9&qux6^JMr=HUY_3K;^K64b=un6(b3TWH@g4; znaaw_QkB_ElGrLMD;O9UA|fIH7OP51N&pF@S)1KGh}1?#Mm9D!KtMoLR8%*F(lLS1 zDtpcN`1tnr_Vo1hd$8pD`}@DYzxDO?071XS#l=rgPyGD+LyOc$kJnU~+b}RN!NI}9 z!^3#4gpdSZ}D|-{0T)`T6tn^ZNSw_xJbm^6~&f zzW@LLA^8LV00000EC2ui01yBR000JwK%dY@N*DpiNMtfm_&^|+OLn^j0tDKO(QtwY z1d58ALRB;yPE0{^g~yHZIn6;Seg<2{B(Y!w7b^}B5EwsrdwqX_gAfk_hcA47fP#b% z4;Mc*Cm|s_IUPJ6BOf|FJvuD~Cp(~`q^3Os13fGSpE;pCqot>)A~**JFfa(m3kxMB KEi57;K>$0OoS+N< literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/eg.gif b/lms/askbot/skins/common/media/images/flags/eg.gif new file mode 100755 index 0000000000000000000000000000000000000000..6857c7dd57a75a6232f2ce346c8183f63a0686fb GIT binary patch literal 363 zcmV-x0hInnNk%w1VGsZd0M!5h@ZEI!`uZ&`E%IYy^Wl9wJUsGTToDoxf`WqTG&Ji; zN$_%V?nOoOYisp-df&`s?Q3gWTU+Jj<>deX?p0Owii(PgiuQJPQc_df008#(_Ve@e zL_|dLQ&VeeZ0P_1G&D4OdwXJHW7PlvOG``det`CnkoJy_`}_OyyLRnZ0j?@dkV*@n*m0QjV&>^wd7_4WMx{Pgtn>i_`#{rzTU zW&i*HA^8LV00000EC2ui01yBR000JvK%S8I`Am+-j50IgIi8oxqR|)(3=|5j=`eUZ z9U6myOC($h+v;XIRVuPl%CT5LAgWPs-_z*=Ed(zb8aX>T5`2CrEGz&3g*zLFdy4@C zH8lW+8yhKMfJ|ZDMKRz4<1t0FMbfn-)8(JO2LuNwG=Z?A-bJ z`E+!2M@L5hY5-$nWBSR-;~Eq4$V;^5%--{3K$FCm^G`jL_HFE9K2`{FDt`eI@-rZV17Px0~b_w(}-mJa;< z`~Uy|A^8LV00000EC2ui01yBR000Jrz@KnPEQ)@BBw)b|g&YovL`OkFrJW9AdpfN& z6xa?#1`*CG6>Jp&a}IEy??J05c7AP^QL9~22K zE*l#uDFU7X2@sS64Hz#k1}qsFGcyGRJp(nQ7!wm07YGQbsW~z?qzwVX!zRWf$jBl= F06Y6ZlW+h4 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/england.gif b/lms/askbot/skins/common/media/images/flags/england.gif new file mode 100755 index 0000000000000000000000000000000000000000..933a4f0b3dbe2f328d15f73895ba576aa78295ed GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5hm;eCXgM;eo>f(xu{r&yob#>cSRqLap(9h55o}SDo zDA{sy`}Oto^z`}j^Sl56&oMFg@$uMAP0=E`CvM@Qe^-`(Ba z<>lq!;o;-s_-l#}!9?AJ#~)l5v{hKBF&@$K#H{P_6M zRaMcyzvk!aN=?0fyu0Xnen4Z^|l!7&RRaciTXx zJp#iZacpmv+sp?hh$SZn*V3@eTC~F)cv28j}X6%!B&kQV?jG$JK3 zGAWG|6e9}@0RSrmHCa3njvx&-J3BTA0t7l*I1!H~tU^0E0;XFLC?qDUAFVk{O&S|9 N001rs&^gjU06PoNyxsr+ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/er.gif b/lms/askbot/skins/common/media/images/flags/er.gif new file mode 100755 index 0000000000000000000000000000000000000000..3d4d612c774fd0e2af39995926d21a3c0b8c33fb GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5hX~bz*eB|_YI{*XE_{357d0X_DP6BTLW{B!MZRY?0 zy6Y(^N3}eC<0QHb`Po6pE007-CF#rGn!wCTDNk;Q#VfK7| z`MFH@&O-o*0Pb8vDyb?uvO2XpU-2?D_Q6E+9UbjoW3d1LRIf<(p;ccs0961%*ok^> za3QR6snbeIineuFWX#1pUi7&-%4kxThfdREezBl<`psB=irs;JII2%5xM4o^M@sas zMlq~0A^8LV00000EC2ui01yBR000JtK#c0(DH;#RgG5=`Y*;rKU^<0Z8Iq=^z@^nt zj8NzY!d50Y90AAaWq3LYsGN-$QiMDwIS9VK0l}>&D+&Y0$O_8K H3PAun=2?lT literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/es.gif b/lms/askbot/skins/common/media/images/flags/es.gif new file mode 100755 index 0000000000000000000000000000000000000000..c27d65e5f1218537ae3dc51733ae628cca95ecc6 GIT binary patch literal 360 zcmV-u0hj(qNk%w1VGsZd0M!5h{9Ii6Q&aWzCHD3!^erv?V`Jv#0RD1w{{D9J78d>e z0Q~$+>;M4s008~{ZSwLH{{C9~`$hLlOZr4a^fNR0JU#I8LG<-I{cCIgdV2RnMC@o) z^*cM|008(lHt`J&_VzII^BMU70QB@9`1m&9008;n?pN$nQT$9y^1ZOY&ZyvwQRJse>&Z*q008{} z0RI30A^8LV00000EC2ui01yBR000Jsz@PBvEBZvphLXYfWuBSC0fQ+N0D*v{nE`mS zx5=d9p%AtT1O!r3$s!RG2{aJM3~2~0wOLu@bOIw6cnByb8!b37b9EyjgbEG|E;=?Z zDuIs=k&`(*J1`cGArB8AGa?0JWCR2(EC~r89|R?;Us@U(92^v81U*U(OvN3?B_%z} GK>$1Bgrgn+ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/et.gif b/lms/askbot/skins/common/media/images/flags/et.gif new file mode 100755 index 0000000000000000000000000000000000000000..f77995d0ab47d81355552a534b769575ffe05d15 GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5hcf00^#no`Bb77rgPLfgiR8&xyi)FFm_4Oy}0000< z5dHmB^z}RVMn?1V9Q^!CnaZ(wy2}7F0RH}S^jJA*ql7PcT3(xf<>df*t&~QKYx`kh zQQBLHOpS(ke6LM7b* z00000A^8LV00000EC2ui01yBR000JwK$v1klo*YvWJ>XRWip*kWqP^rIJ2K3W4&?= z22Ctxv1oofnP4pdxJ`sOVUTJ~7We?b1u;bs2o4Mwb_)*=0elcDCV_&46NiWZiw6-7 zn1d@gA0IUoHU|eZJvSvK6f7$n4IUyVIUylBARs6xB&r)51-%WwBCjVTBt9d@BMHjO KEX_X8K>#~YC5%M? literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/europeanunion.gif b/lms/askbot/skins/common/media/images/flags/europeanunion.gif new file mode 100644 index 0000000000000000000000000000000000000000..28a762a59cae1c775b52f2c26b21ad658632073b GIT binary patch literal 171 zcmZ?wbhEHb6ky8jO69TOFm!wUDVT;A)?!_C{yfy2gaWmCOrR*q$^bR9R{scg(%O@TO|giqzYsR{U*?U8O5D U#0n;zPAS`BTG1CL&&Xg60F0$Rp#T5? literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/fam.gif b/lms/askbot/skins/common/media/images/flags/fam.gif new file mode 100755 index 0000000000000000000000000000000000000000..7d528852dc3f4efe6cec2d7f25e4674816af4c7c GIT binary patch literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5hRNVW-^HgZw`+DR4UETfrREzpag!n;y)AxGU`GuG5 z0Q_s4$@N_T#q;(ub86K9{dc4FD{i6i0O$Y!`2ZM9+WP>!{6yRPS>gWu04n!Og8-@Q zX3_w2;{EtOd&%=?%JpD#+5iBn@?_xt`9y#Kvi8pRX@KVc!SYYc_GI@scgXT(_%w6B z@k@E={?GMu_c?g^J9qp~h{yC7X~pN zixD#c0XPp9k`)&RESV9UC?5|y0u?$m9uW=^5k4p=Eh`))0s?pi8o?w7A0I0{4<#ZZ Q8ygeP&<_tB95+D#J95gS9{>OV literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/fi.gif b/lms/askbot/skins/common/media/images/flags/fi.gif new file mode 100755 index 0000000000000000000000000000000000000000..8d3a1918280816780d79856b678e2ebb5bb76d66 GIT binary patch literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h{r>*P&)WbiyhL-+$q-dTj%J8aF`-s|}I z_)&e-x4+G6k=`<8%JTB_Re;vK!qWHn`hcS2hNk7+;_YFI*-d)X!O7PE0Etd|&|iq! z005lz_4Q+m-1heNN_f-z`}Xr?J8L`~36s^SQy#NO#iq_xR=O^YZfY{QUg-`ug|x z_y7O@A^8LV00000EC2ui01yBR000J%K%G!05U@^_N+NMGkubX74?uZM06bo(7gP9F zQ2?M}m}$A*k1s$F%gUQnOp^O_3LOlK(r9=#2Q3gHAOk1}5E%j!27d<-3l}&82rdo_ ziW4({gOY{_4h|X_2{m(rAU=0C4g9xlX|nrTtN5Iz&ug^#l$OE(bNB!&-(s`+ z(LFiN`_)KB*mQZ%Q&iJjT~wa<0Dk;Y zc*Ul#)rlEBT(J49dzFJDNq-YNXBkUnu=&@Bj*x$;ak%+jh0f%+zRwvM=aiM^)7oiO zk9eKgA^8LV00000EC2ui01yBR000J$z(?UQdmU(uPA1c6hC&BKFOksoERcZ7B*5V$ zJKh992A~F;4XhHmNMt(DWCF6qJg|>Sk$NnA2sb1o7zsBX6(0(Vem5357#J--E-Miw z4kr#J3oHRR7Zf!EYz7P`92^W9o}r_q1S1X{4kH>F0ivW41_ZtV91sS#TV0^KA|kxQ QO&w1X&EkWpbP#0IBkZG(I zI|I#NsOdxu#!OOa0CKWjOjd$nAd$g9!fBicDjy#mKOiFk5j-s+BMm7kHWn5b9v}e@ zc>*B;6BIoe6&NBAmk1038!Vg@9-*U`4gvxi8V@g>D59he4hRSv8xIc-6AD>dprRuq Sq?g4^4GIm@(-YR$K>$0bS(5+& literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/fm.gif b/lms/askbot/skins/common/media/images/flags/fm.gif new file mode 100755 index 0000000000000000000000000000000000000000..7f8723b7da96997e52b64aa9a90b112828d0c3e1 GIT binary patch literal 377 zcmV-<0fzoZNk%w1VGsZd0M!5hah%8;X0MsK*@LOh2Uethrp>9v;gPl2JAA&LzTSzh z)RVN={QUfetkP|n#`gC1kFwRR$m6EL+`iN1mbcgdG>o~=soV?qm!{D{dLOaapBMH1q}A?D&`J_Xutgouc569)lqu+uPC6(d+B$=jZ3+&CSjG`}^|p^7i)j`uh6!_xJPj z^Z)<S_%x44Qgjl}c&lY3ENVi*#SF`jw zQJXCyqG-9^-Pb2pO=OL2x3{D1Ihy?y-rnB$m5kKX z)Yt$3w8iJV%jsr^%<5`g?(XiPwcY0C=H%q$?sjUj!{w&A-t&HP_xJazz2WW&0CJMj zs?RiQbXoVKJ@hTySuv= zN2U1q__xUC>|Rjp>+3{pyW-;FpP!#^kI|;N;Ipu>uD|3gSFo+9_7 z>~odVA^8LV00000EC2ui01yBR000Jyz@PB9K_CFBujQ zjbnlXC>J5^c-oz zY4-LpRD8_-{&QQrTlMuMUAjEtsVQ89)Jk>C0BQhQfWTjb&-wW~PP9V+MgUT`Qv3Tx`uafl z_%{9h0C&iDRDRK5zF=0lR${+dLvP7|&3P=PEM>u5ZIH=rkkx{r-tzJkag*0|me@V5 zF#v-AA^8LV00000EC2ui01yBR000Jrz@JcfDPBlOi_-G*IA0);Vj6SERFYJ)YQ<(U z8Vtsk{nc(W2xPNCX*9l22$ga*3^ZuCMA~Rr!T{VS~Ynna}=XVtbp!|Lf{JQmlm=H*ti=+u`)AVSnMi-(+*O z!o=O#-R=JV|NsC0A^8LV00000EC2ui01yBR000GnV5Ce?*=1Q51Qm2lOygk;;}L`x zMcji75JjW$iF_oI&!s{5FcJ_(MDzF@0Y^%qa!GVN)-V7Y{&)%*0&>hYxZMEDxBPL3 z5%_H+P@p93bqfgr0u>A&4+I-^1_%`h1P&1b10D|?7Z)C52rC>24jU5(0STrB78V5p KtO)}NApkqQ-f7za literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/gd.gif b/lms/askbot/skins/common/media/images/flags/gd.gif new file mode 100755 index 0000000000000000000000000000000000000000..25ea3123187325ea334cd556a8725f10d6d6f1ab GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h`PfMK+EtFuT8_Lk@?HSvIRN(7DqzG={^NFipiU;F zCK;R=^~gEr002p|M#j@PRk>7Pxj^&N8T;Qyd%9}#%_{qI0R7}u^8f(%%UDdOHb$H> zrNlTjrYKjZMEl)f_-;nm-dg?PYZsyy`QAL&008*hHif@+iNkvM(=_#7H|f_=ugXT( z#UD1X3&(aoaIP6(j4a=YRrX{&i@Q&=#15ajd-KmV;m$br(m?svJpG9PimYPY008{} z0RI30A^8LV00000EC2ui01yBR000Jwz@PB9v-m7Vf(65D_-u%1R3!RX1DS*qB?w)< zlQ7Bjh$0qz?3ck literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ge.gif b/lms/askbot/skins/common/media/images/flags/ge.gif new file mode 100755 index 0000000000000000000000000000000000000000..faa7f126a7eeb2cdd66c8e7d7bae6c19288d00a7 GIT binary patch literal 379 zcmV->0fhcXNk%w1VGsZd0M!5h^J`|q!^7$}FY#Me`uh6v*x2;+^!)7X+S=Ow{{HKU zgyQ1j?^;yL%ggeamFZ|=>XMD}^78baoA-%^($doUzr5z==J?*-?}dT$VqNpPw(o#@ z@TQ^D0RZh(PwfE!<4#BNkd42;zv=1e-{0TY*Vp%_r1Pz)_oJZqq@mf@+3(57?L|NN zuB_s9ZTZg1Edqm6FfT(fIiI{QUg={r&g% z_v`EHA^8LV00000EC2ui01yBR000J&4c69K@%@B50D}3d^dxy0jRWQH6{`n86gfi4j~dT9~*=NI5-0gECQAS zEFA+jC@B(&10EO(qZ<$%7Fil-I}9EMun-Xj0Si1QE*y6rAO;Z%ATSZN1Q!k$cK{Et Z1u!cSB1{M>B@`4L9Ss570U{zn06Tokyea?y literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/gf.gif b/lms/askbot/skins/common/media/images/flags/gf.gif new file mode 100755 index 0000000000000000000000000000000000000000..43d0b80172e97a08147c64f811ea5c7775ad46fb GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hs;a7*ui5eO@$F<*#M13od&TML>hy?y-rnB$m5kKX z)Yt$3w8iJV%jsr^%<5`g?(XiPwcY0C=H%q$?sjUj!{w&A-t&HP_xJazz2WW&0CJMj zs?RiQbXoVKJ@hTySuv= zN2U1q__xUC>|Rjp>+3{pyW-;FpP!#^kI|;N;Ipu>uD|3gSFo+9_7 z>~odVA^8LV00000EC2ui01yBR000Jyz@PB9K_CFBujQ zjbnlXC>|i_4OqFa&sJ> z9G#v)0Biu0l{WVFGxY!f<>dhXdU{*CTlOj{Xu@dxVPWe408+M7M@KpJ^*#4YO#N$X z04V@3r7r+j002h-3zZ81H~=)MG$f)V{7g(UrZOs{DioO%`8+-NH#hzL001BW{8d%` zQBnN-PxkgJ_c1a2{7PtMHDF#Z_C!QLuR!eYHu>~A^6x4Tmk;vt6k)z%_)}Bx^G5vu z0RI30A^8LV00000EC2ui01yBR000Jqz@PBvD;6I}q{Z@!I3tO~W>cvESUe3gV!gIV z1_LSun`oN=FIY^TOlTHWArNrIdW(k5@j?tT5OQ@f2MZV&4SfTDfdzI42RAY^IDP{< z4iF3!0s=JzA{{0p3JNDVB^;ZcprWLvIUpS?3_B7M7Z;tMpe3TT9>E{OA;lcWE6G6s EI~OyF2LJ#7 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/gi.gif b/lms/askbot/skins/common/media/images/flags/gi.gif new file mode 100755 index 0000000000000000000000000000000000000000..7b1984bc692fea25c149976f81b83eefe4115c6e GIT binary patch literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5h`FL*WsY>!XF8KKP@?25#^YhgJ0QX)~`D|k9&&~Mc z+9?L`uh9(`||Pe>FMdMX=VCmTk~2$@8aR!Ju%|O>|Rv)6$R*3O1V8X@@io8 z_4VOMJp7c6@l;63$H)7GeDvSm>F4L}<>dDE_T2yg_4W1r{r&g%_w@Ai{QUgy@9+Np z{{R2~A^8LV00000EC2ui01yBR000J$z@D(T*>FIh#e%^wH5$F&&qvMWcs!40Fwi-o zRNvzyQ*667Z!ervAP9#U8fSxSs*eOJq)O;)I6F8H96nb(02me*7!rX6Erf?22`(!o z36CE;5Hvg;9U2lO0W&o_1s@*;F)1$qum}eMBN+r4Fcd5|5eOn82eSbb7K;}G0=y9s Q6U`F_710$p)Hgu@JB@m~0ssI2 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/gl.gif b/lms/askbot/skins/common/media/images/flags/gl.gif new file mode 100755 index 0000000000000000000000000000000000000000..ef445be003587758a9c100f3b8f4ba28d7ecf95e GIT binary patch literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5h{JgyUWo7(cUi_n@_4W1b?d|w;bMrJb{QUg;Mn>xD z>gML=`kb8N;^N-k-uIJ}?-CN$*4Ffki~Hf>>;M4d008wnJM;hm`@zBTE-w9UZt)Eb z`v3s^R8{_ylk^`S{7XyU008qD8TlIRt_c0RS`uhztxb4-XQLFAy9W8Y)^` zJuWpLA`k}^93>!Tm@p=s5S}3%0SPt$Fa#4Ms2dv@Ar}GyCLJXtHYgSr2L~A$Hy6qj O%*++fAt5)@K>$0)Ft+3X literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/gm.gif b/lms/askbot/skins/common/media/images/flags/gm.gif new file mode 100755 index 0000000000000000000000000000000000000000..6847c5a8c0232d984f7c8569a6f7b89b96736963 GIT binary patch literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5h5tR{Cw^Y_hNB}DU(KIvwPXGl@{oP|@Y?=D{_Vz8K zEdU7Rgsc8MtUN<^^<_5J($?(pt{=R9%q&BwrH{BE81UXb>EsQut;Yv1MHQik(Ziu729_51ku@bd5>o*}!zyZH3;^!M~Kr7~iV z`@;YLA^8LV00000EC2ui01yBR000JuK+|tHq!^E+B~N4wt|z8sdlh&I zV1nSJx|lDwTVlQ2h2E@Ig~5nrKB5=m@qk%g3kD1bE*(A|9w{Io4h}0effX4UA|ePK zeHJw|AP);O7aF2GJR7Ds7^yfqB^(e94JZltZIsglm3;X*=`$a|mSy>dB6#V>6C88zu^&&H-GWYjO`|w8m z@k>OnMEp-r_xCUT>j3rjJ^cJ-ADQ4|UZN~l|!gvlF*DuHr^e2w<21@AEEG#Yme6E6cS92*@l3n(-Of<6(3BsGdK z01J;M1r?G5BoYpb04Wa!CN?Ub7onn0QOco{QUg+`T6xtH1=3N z{{H^@`uYLs0P{sE{&r#j%>aM*bo5g+`)pYGXinn*0Nnrpnf#Fa)@c0_0R8%J@IfCP z?Ev#+Nc3n-{_Tht`2*d*sr$8G{Nri;wS@lZaLKWk0Pz5I_G$i;g8a&V@kS)|Y*74$ zcktZGA^8LV00000EC2ui01yBR000Jpz?Nlb@fbag24abz#86OyR3aG+L?TDd^W%6q zm@uZ3$pFqWmF@uoMM#8Fps=}&dL~uP_J~B{0T2at1}`QFFe@o=a)KKp1_myNJ2W$Z zf`kS<5GM&fjB|Aw1|J_R1t&jaWM*do46(5{I9Co@6BQK)yb8V)N=p>OA;k;F$Uy)* Dz3QR) literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/gq.gif b/lms/askbot/skins/common/media/images/flags/gq.gif new file mode 100755 index 0000000000000000000000000000000000000000..8b4e0cc41ecc29ca33c6780e4d3334123a4aae24 GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5hgTMYUq%n5LcID;e`TO}0hyB~y+1XT70BGp}efw#` zX^g`9);c;~yk7VB_f51-;%sd5^Yi)k_Ls{20EPenNC2q-07R`s0CxcL_3{8@0P^nc zQ?^t0`S-j40N!F^-AYQ*EG+r(xBUG4)2@!#O!e!cz8 zA0Cg&>FM|To~6)`!;9ZrTfW1<-{s$-(EY{8$%?;)^!M`gF*dl3;n zehU*4oDwT5Dk>YJ8wQIqARr_RtRW#fEiDW`2rv-0A0ILYyd@%R1*_B3)xyo}qO|0?#_IX``tI=dzRBve!R7Gq z^7i)l@$&REUCfQ5+v)A~;pFX!pW6#P!~iM0f|}g`0GExV;q>(NO>)(NgUjvj_M5HX zdz9KOSIL#A-T)c2xy9!I0E*`6^7#4u_xSts_4?!H@B%f$;^N}`{QS4X=g-&gSa!$? zG@;Vg-SYJJy~yXt%GLlFq1oT@=<4&Tu*dA~^78Ze2O+8G=k5S}K;&nLhPNH9Mi1~aOXNQ>;tg^K!o zy} OO#v0p&mq#%K>#}%6u74V literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/gs.gif b/lms/askbot/skins/common/media/images/flags/gs.gif new file mode 100755 index 0000000000000000000000000000000000000000..ccc96ec0093b08b01c9324d90d77d962f297755d GIT binary patch literal 363 zcmV-x0hInnNk%w1VGsZd0M!5h#>Uv%tF_jJjVUR4c6Frd>+Sq$P!khzY;2-MM2%x( zpgTK-N=lKOAUxya>SqWx001uP%+g(5obhdC000!HeVPCOQ{{YoFff0MVvA5vlr}Yi ziH5ZE^YlhWeEpe$=UG|P&Z7Bwao*qN_(R_cf=VV}aquXVN$HH7Mwx{F#FkLGXerQFcmx-4h0Af06z@`JsBAuD>oY$ z9Vjg)1wRl78Vm_&mjfdqDlCnkqNErD0|X=m00^E6qiU}M2fe)*w_9DUX_v2_O%y-N J%+1R|06RkFo6i6M literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/gt.gif b/lms/askbot/skins/common/media/images/flags/gt.gif new file mode 100755 index 0000000000000000000000000000000000000000..7e94d1dda0ab4a00cf6ce142d317cb66ee3eb114 GIT binary patch literal 374 zcmV-+0g3)cNk%w1VGsZd0M!5h@$~p=rThS0|Aw~zRF?YyHudc9^y=#B07&=%1Lj$o z_fwVj03`2ClKOhD{q^ z-S_wRA^8LV00000EC2ui01yBR000J)K$~D_sU42ASwW>@s04#3NTSi`bd%92gNr~Z zfy~8v>H$h6nZi2=h&C5pc?a;wK8u6^B+A?_b2%6v9~F5PAQ>A36FoaQKNuAiF)t_< z4jUv56OTVU1~DNVEGP&LBm|t0JP!sO933X66sjcvpAW7byeTLJU?VsaKe+}bCMhXC U2ulnRD=rWaFfAx3KG{J4J1s%9mH+?% literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/gu.gif b/lms/askbot/skins/common/media/images/flags/gu.gif new file mode 100755 index 0000000000000000000000000000000000000000..eafef683d5f0280f58de5bda5d17a9f6766e1b72 GIT binary patch literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5hLu2wfUGmw{){dk8VSf70S6`E-|AU(R`T+pn0086w z0B(u;VSV*ndHHFC_fc>2?EnC4hWt!y^>T~)W`g^3js1zA{aktVewF-slKS)j09khQ zcaZ*7bM|(R`EZK;R(1DQbMsMf_ET{3dXxU2xQXOyYh`5VW`Ossfq&m)W}v!{w85sr zd7y5H_s4sm-DX2_jQOBSd(Kv6bdLSnyh6udh2m{-jf1Iwb*Wi)_(x~-_W%I#007$n z0R0I7A^8LV00000EC2ui01yBR000J$z@JcvDDrq3O|J)m{0z{+z+yQZFd5Ip|${z=jq{PzuC=Q~5-0B`hi(b~_At1AP$`Hv$4G4-z{77YPU! z3yTCQCpZO?00A2bJO`Q$GdVRflK}xCKBW|AIvoWt0HLlUJ{njaF$)e33=9_=AtMjH QOHB|8&mca zFyyoV_4Onfof$`~LHzt6FQ_jw zrZOL(AN*Na_Vz^e^*<4h0FKKgkj*RpcXwN^Q2P2@{7+C2mk;%Jc8zj#{Az0UZ*Tno z0RI30A^8LV00000EC2ui01yBR000Jqz@PBv%NQj{k7vRBMV_^UX8L&C3I$5Q$>F>{ ztJSDPGM!Lb?kfZym(L7Xz^4Nsa38lB#bCtdI{*L&1_l)s3N$ko78No+J$45U5FIQ7 zDJ~5v9RfZ)2L~7vmYA9iu_0t6dgAvPBml$9+5v;@M!AjQT4$jCte EJ2d&0^8f$< literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/gy.gif b/lms/askbot/skins/common/media/images/flags/gy.gif new file mode 100755 index 0000000000000000000000000000000000000000..1cb4cd71d6fd05fa1d42a8afbfc3d25d4512a43d GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h0B!)EnQ->^IW?y=)#$(Z`^x}K0QyKs$J@E-_10Ck zRFQ`}hRlg$zhl}@PxkqF{&#ow_ALHaR{$~q_V%iD!*>Rh2K;Jj6P6VE`dV^nM7Byu z^YyC4*j*zfYV=QR4sr<|QTZR8-|O zG|T`1^?G{x(b3!h0Pq<)OKR)9c8u3q0?Lk55MMdyoVe2?J@L5^%W@he1Mf7)f?Kn8^N=f7&AM$Ey`@g^S z;opdmE|u59$9OzQ z34=fevWx;4&bCXs%n}pUtb;~`7QYiX(O~6jE&wA4Di#z!8VMgf1QRj@H98n79ubEd zA1Njv1PuT&lO7TZJqIhA9UnFT0xc+_G^7V5CLJRq1_1~Our~!64pwb193eOs5ef)>y2ws2+)GW3#LM5@q^ivc z3EsHAA^8LV00000EC2ui01yBR000J;K!R+LNDNZ5ijpy6EEc<5>(xW)0Fuy!=U5dM zz5@;dG2Kc9&Ex{W1QrQe28YWWU;)a6gaLFGEGH@g0xmx>6dxZL77-B(H3kPCM3J(k+1vUs2B&Z?{ARY}Qx>_DQ Yq5-4|5jGYZx(rTFPY>D;4ckEgI~~rLTmS$7 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/hn.gif b/lms/askbot/skins/common/media/images/flags/hn.gif new file mode 100755 index 0000000000000000000000000000000000000000..6c4ffe8e84324c2ea40f2a50e6e0ab391b0f77a4 GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h{{H^N#KdHN(O7iOJzc|ei`VMx^A9$%dy?7!08#)1 znqGO(CP}>X_4TB);s6q%=H}*wmCI^_)BpgALu1Ik$m;m`_^!I)y2a@L0CTm$sZ_G1Q!otn%E>FI>#O60vzkrt9J5igp zzvo3;r5ixGm#E+K^YhQw@k(dLNN346Sj6My@y5{a`T6<${QQBH*1*c^!OHB#&+fCn z;s5}9A^8LV00000EC2ui01yBR000Jzz=u$%C{B*YpYpM4BA$hUL?T!W1{nonVI7n_ zGzy_+LeWAI*{yft?JAg53k15PTo8bs1moav78?c)gaLT~IUEKY4h|MJF%6N1h&d!1 zfEFD(1~DHE0cj_1DJdEnJ{K1wBR(t>0%Bw+3=A(X2e~K-6I5JY9y1~$1OzH72|p7` N8Oi__SwdDR?U1Oct<>lpbsoy$<%>4ZP`*n40r`}bR()Ttt z`anPc9HdB%(f@9$KW)_t+!_C!SY zNl5@y!TbCB`~3U-OH21xR{#*5_*`5{daY=p+i9fUY^2*!lhgI}_5A<<`OM7p^z{Ax z{r>;}A^8LV00000EC2ui01yBR000Jwz@PB9D;5n%Bn0vcIG-3yqv3GSWXym>Qd(3B zw*qIQNVKxt#Ud8s@W=@h3*!5He3wJ}EjZ|UIuvzyd2Smd0)L5ucrY(IZzKsRJpuwf z6fO}NHUuIyWi=inBNithnw=sKDmf^l7O@&23@a-G6&W}-6RQsz8acEK0L1_u9Wyfs K2q4ZNK>$19yrlgA literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ht.gif b/lms/askbot/skins/common/media/images/flags/ht.gif new file mode 100755 index 0000000000000000000000000000000000000000..059604ab20eb6f3a5063c0321ae2e8b1badc4a67 GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h_eVDX5y0py7K@tXbA{g4008b+M)GJ`1187oMl)`K z-2el)YjMhyqv%|5)@6Cx>Od~!002^H)9y?={9H`*b7Wm(#C?w9`%*&y9K`lHCw+s| zWoyXG004!R;`1vPdW+rw0Iq6%+Dl^4TkZPe^MD(g2S=`tUA zis1bK0C;`T3l*p0EmYUr3G9Lf{dG&c}c8K5aU{L*g zZ^ZxrA^8LV00000EC2ui01yBR000JtK!i}3$piw6WM~;eG@dltVBqmwKsy01**8HYX?(2@onPECK=~2^|p?qNJv%sw5;3Kd%S7JvIiTq@}o?5e3G_9myR( H%s~J<4X=$u literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/hu.gif b/lms/askbot/skins/common/media/images/flags/hu.gif new file mode 100755 index 0000000000000000000000000000000000000000..6142d86817c12d74b84a4b19d7f60045bc0dfbd8 GIT binary patch literal 357 zcmV-r0h<0tNk%w1VGsZd0M!5hqT^01W^xjxG*;4(N1r^YimXo<#s90K5PIJ(xW@mOAQtd$j-n05|~QOiVA4FDi~I zB#R{0Dk>j`9~6NU-aAHk%VprRSYEHkW3d1LYzG;FX-Onn zhgF6J3W;1D7W4HDkIUyyCpYMsOugL>bxM^~Bsx4g3U+yWeSd*G5IBW-G<<%5f)Efq z3IsJV5ik`68XFuQBOeYoKLi1tpP{3r4h{{e0RaZLGo2KlHx08Gz!Jg?#6QNzKS2OH D+N+ap literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/id.gif b/lms/askbot/skins/common/media/images/flags/id.gif new file mode 100755 index 0000000000000000000000000000000000000000..865161b0307cfd1609732950cba4d9a6c7999aa3 GIT binary patch literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5h@$vERqMhVoS?qdq@s5YO008Rh>gML=>64A?o|*Eh zrs7RQ+%+oWP)6leP3C4^%m4uEY-Gd$0Mh^f-T(mF008J=SL0Jj?SOgeXkX=AQ{hNG z;Nal={QUj>{p@pV112#cW>!lRp)AA@TZ~kuBz>JZt9nj?3$I| zJu=`!IOdLs@QQ=*jD^)03-0dj`1ttt_V(S~-QNQM`}_O#_4WGt`tfFwS*DGCZG0RagtD+mZL2{IlY9UVA2 zJTyKvIXgW+J0LigmzkTLpFceuJRLfinw*|L002K6KBcCovp+vJIXwU~#0CZj2Ou0A IHqAi*JCOOXTL1t6 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ie.gif b/lms/askbot/skins/common/media/images/flags/ie.gif new file mode 100755 index 0000000000000000000000000000000000000000..506ad285906c72324b51a6d2e9e067177444dbb0 GIT binary patch literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h?e*;dhXCjR0OsfB^nWvY$$IE^k-~a$hv`X}aJLBWy`k7kwdM5alQDVPh_<}cg z$alWJu+Y%Z_Ixbx`0)4d=;7bnSiD&Ei9hrp06?xk0FeOr`1sub0Qvd(_V)Jr`uhC* z{P*|wA^8LV00000EC2ui01yBR000J%KwMxL7#Ihqnay^&U;>3`%h&1nd_5FOr4m3_ z3Qf#v=xtaOSj1Zhhho0+ZbSH_)`1o+Gy=$TG9L~JHC_*VB>+7;IX^OkASMD03nL{S z0E|C83<)406eN_FHxrFK6$~H;2Lz%k9ybsZn-!@C85trZ5?~q#w6zQb1R^3j4H6O@ R94;>}78WifBs$hX06RAOp?v@V literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/il.gif b/lms/askbot/skins/common/media/images/flags/il.gif new file mode 100755 index 0000000000000000000000000000000000000000..c8483ae52f057c8131c67501b466bd5bdd3e46fd GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h&d$z)rTd+o`NG1&dY<`ek@k(P{eGhQTZQw1l=tW7 z=jG+)m$UxY*Vn(lzst+Z)6>(tySwr6@#Ev;)z#I-#l^k7z2V{E$H&KTkNS$B`(=yv z-{0Tv?)r0>_jQ{1{rvrQj`wtw`-Y$OgPHn>pZZ~l^#@1kYm52m>Gq1J`T!;000706 ztNQZt^z`-h>FN0U`}_F#_}kmt`T6FNFb z{r>*`A^8LV00000EC2ui01yBR000Jyz@AX3SS%(N&TQ78Ku(Nk)L>Al0tW)&!|MIM zKc9~mtI=dOoDJapig}vSIlaR@6mAehL=tRNI6FE!7y?`uh6v^7Hz%001}u^YiprrdUp*P5>YP`}_P! zpGo!Je*W#Gp|je6zJUGUZGV!-`~3Uou>kk60Pv&$_RcK)-)V!4z4y>D`P4o9*i7{F z_5Z&BA^8LV00000EC2ui01yBR000Jvz@JbEDVj_+h2nO5{65f+!y(IMG6aDD_4?|E8002HHJ`#B&EQtsfIthX(C54AHEF=^& zGZsFBkrE6O1_lEI5h(#GEe#DFDIlMsq^78<9UTEH3^5uS8ylgc5v2jQ3?arM$S2Am J%qz}806T|Gt@i)` literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/io.gif b/lms/askbot/skins/common/media/images/flags/io.gif new file mode 100755 index 0000000000000000000000000000000000000000..de7e7ab385eecd5e55ff60cc67e06604c2ca7ead GIT binary patch literal 373 zcmV-*0gC=dNk%w1VGsZd0M!5hk9Dg60*GdAx`nK8)1|q)z}>aD+IFN@_tw~um%5oQ zUH}I&%uGl6=jQ+bZe3-z{imduwur24O~l6HsI1iay1I#n!|l>Z002&Gn@c|@i`(4n z^4;S5oS8~etev6F)Ya=)V6#I@sovo3?bO?TsAAjG&gr(ks>Ph* z!_4l?IpEIRTSuAQ$wl4Gdcnoo*L{uP;PFveu(G9OaGPHBprQ3&U-$C&tbwT4*z2iH zbD59BA^8LV00000EC2ui01yBR000J(KpG&RP!KhNfWxs^I$)d~V#R5E3ZO!S6`4_V z6-cK8$?*h&N9lkYV0?&1C5Jd!D3kT!5c&K_Dg*>6Efx~ T6b2F>xK2wL)Ya4r*g*h0BUh+0 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/iq.gif b/lms/askbot/skins/common/media/images/flags/iq.gif new file mode 100755 index 0000000000000000000000000000000000000000..c34fe3c44ac029c96bbc44f4fd1a814b8235902e GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h>hlr5TwF#*M)d#ytK6*S_2zwh zeZJzt{9|KdV`Mx$JnH}e6ciNp`uTy#gZE5K{cCIcMMeL6diyvyTU%SS;kN#Ec2ZJP z{fdhD{rvodg~H~=oYJ26adPhV@ia6vz2m)XX>5&)jg`-q_vX5cu>1kC^SPodc962ANhPDA|fCG0R(s%EC>rXEG#VxED|S$cs&RS z2`(fg0G*SC0x~8hIynjoHZ?CLB@GHcKMe*B4kH4$5V^Smunia(8yg10v?I2>u*u5H Hut5Mj5z(S@ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ir.gif b/lms/askbot/skins/common/media/images/flags/ir.gif new file mode 100755 index 0000000000000000000000000000000000000000..156040fc578e6a7a1bc2399c40523cfa7f41e945 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h>Hq-wmX^8Wx%8{60E7U`<;$nnr{(44*Y4L!v`WnA z%<_bU{AFhI#l`X!754V_V!mSfy1D>&0Q566089W}yj=SA_It{E0Av9A)YSS!MEYA> zQn*oT!fQOPJaWZz`L(wAP*C$NE%!u3^(7_sJ3I0K0Q&m+^Yioe%+28d0Qdj^`J$q; z-?XpZu|K0fcgT10rKMB0Q&+lI_wn*Es4)09H~Bm~{N?5Q`}_6v_1ypf{QUd?i2(HU z^!@$)A^8LV00000EC2ui01yBR000Jyz@AV@AV`i9j8aLsTwt)zr_+HzDl=Jv(z{%- z98MzP@ziQtfdV05BU%cV!cd^Ue)u1cX90m|4-Yy%ItO`sIRPvY0fIg#g?NZ3CkqQS zgD5CI2Mah68K5931EdWx4Fd}+3>q3YHWMNwBo4L?6FaOM8zH_UBPAshvLZVs$R+^G M%PP()JJCS^JK%<H%{6AP`uh4~io)bW zLI40qah1w#lgUwhyjX(1-Y6#{SfxyOxh`R>^78WUd3Y&Zs6KA9003rQhr$2=S>ro8 zL2b=SW9KbF%;ngZTLPLvXX(003%_#`gC1`}_Mq zZ?Urg0OwX!>R49iO-$wGMR}ioeJSROX0EIFs6(2AHF(e8b8#)k^3NAl< z1uP_igM|PT05Svy84m~wCp8x$2NM$(B?|-|4>LR)J*%x277-{5CRr*xFFg-AI1)4^ TC@l+20RuM!8r2Ke*g*h0+u4{_ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/it.gif b/lms/askbot/skins/common/media/images/flags/it.gif new file mode 100755 index 0000000000000000000000000000000000000000..d79e90e99e9cd5e9603313cd6a840bdf23abd8f2 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h_e@Lxg#hB>;@;lg<^TZl6BGGWRrK`q^*uf8008nX zE?Bx*09OF<4GsSO{#?CW^8f%tuR>I|RRDbed&+wNWdKyURP`k#^BEaWwod?d0P`|3 z-~a#si2%aF!uK&TNwi7yA0PHBD|yIybjEb$<>dfx005By^foqFyjac6&GsxT$jHb` zvrG6lH#(|1Xu@dvTwL=tHTFbAV83D8+uQZ^_1ypf{r&y>`}_R-{PydN zd@J3P04Wauo4O>(*?IKSABDqIg2{K~!vN>OBme4q?$1tHSy<-VS(SxFl8t()nOR+_ z82|tPA^8LV00000EC2ui01yBR000JxKu0YFC>9gQ*XA2tx8hJl#0*Mp>0Sg0!8Ut&I4@2FfukLorfVND;ysdus$jd6&pV<1`G%tV`Ly8Bp4YsKNA-K63NLT L%*+xME({S;F)=14CLS9-epOaZVqkDu>-d|2;g6S>^(yPXxw#C% z48dE2V|K+PCnx*(_+)2iU%PfqW03}fJ3~oHiL0w?aB%Q%7Z<77(tm)Ur-#9U;cr+N zgEqsbPoFMcy!f+k;)|T5KXd2*NlS|e4?lnYyy;5Qf3s%Y4fa}6U9C7@@t2F|p9vH8 z#KcUQ9m|lwur<@(V3|SEzNA0?{$IX+wODSE5FK4vS^4?%=N~_QeETpBlj-E-sawYi(g7&(0-fEUvB4T4f<;-Nn_YF|o2; zPR>G=U0K|KnT=D;P)JBiLV{D4T~W`7mzRf!dD(JPQ(0DSeSPjD!ot!gWKYRDGFSru D;P{a* literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/jp.gif b/lms/askbot/skins/common/media/images/flags/jp.gif new file mode 100755 index 0000000000000000000000000000000000000000..444c1d05c59ed6a43e63fc7cc7b809f47422ccca GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h`8zxI_V)Pr`0wxU)6>)K?d|L9>-R4&_%=4><>lAc z*XQTw_9`mr>FM3w-PP6A+uPgwMn>P?-}p5(_A4v+G&KBGRoU6u`8+(~%`awbW*4FfWef0J9{i>?b(b4r)RrXt3`~3U#lau|syY;)f{r&#= zmX-Riul(uh`+0f%et-M>`}Fkm@$vD`&(Hb!`TF|$_xJbw{QUj>{qpki^Yiom{{Hp# z_5c6>A^8LV00000EC2ui01yBR000JyK%Y>^ zZ-qQvx?SNNBcTYxnl_dwY83H$CD#LiO|W?MqSQ008AJGra%+Sy)(L zKtS_hW#AVdH?TYMU14m)ZE#IZ=jh_q*T3uM=grE>+tbJ_q%`yK@!;9cQBhGDp&(aW zTmS$7A^8LV00000EC2ui01yBR000Jsz@KnPEDA};in72gNLW1HQS$WNE|=TG!hQU1 zqmx*N_}3(3k0 GK>$0)Ly?03 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/kg.gif b/lms/askbot/skins/common/media/images/flags/kg.gif new file mode 100755 index 0000000000000000000000000000000000000000..72a4d412c805708b5f27c5a38622a46e86a14cad GIT binary patch literal 373 zcmV-*0gC=dNk%w1VGsZd0M!5h_@ztrYismlWAm3S>^nQ`D=X?MALtqy`N~7;BO~Mh z0Q7}9_QNy!)z^Sy}N#MfiJr@?Bl&Ha7HBRP8Y_^G{Frd3otEG4X{f_I*qA zRZ;RtLgy?j^jT5wKsN4QBk(~w_MSWUl1B1aSopv?^tUSXQ&aVKO6@otQ-kt?Kxm(j!%+|jWD|880;3=hGc0v?6DBMW3lJ+U92_?)1pojJg)9p* zFDNT9Iw}edk_CkpGc_D22{8%@3J9SS4-8^tW;PMGBO^TlAXYzF9ykXF1UWe*BmqiH NOc~A@0nyPx06Qe4k+A>( literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ki.gif b/lms/askbot/skins/common/media/images/flags/ki.gif new file mode 100755 index 0000000000000000000000000000000000000000..4a0751a221904a25343137a7a4a5aef71e112f5e GIT binary patch literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h@rQbxtlas-yX9F&_U_%w)9PDz%0^j|=-Axod}+hX z=jr9+wZiA)NjCP*$?R@k%m4sugwX&3cIsqPe3aPF*X>qgj_Sf#^yO0uE0F15PK%z~ z-Z&)b-BpmK;Bbl4VSUc>-FyH5SHA!N*4*%_xZmPJFEmV*2Fo_ z*3sn7((l~9Q)#JVahYm_&5fD6=@ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/km.gif b/lms/askbot/skins/common/media/images/flags/km.gif new file mode 100755 index 0000000000000000000000000000000000000000..5859595e809b6e8a98704cc408a7267920ad3e80 GIT binary patch literal 358 zcmV-s0h#_sNk%w1VGsZd0M!5h01oTx)d2YTQ~LV)mxr|gYXJ84_5A#D>GSE^G#2{$ zYS`=8Xr1@rNGhkd+*cC>-6gY0NwH0 z003D4A^8LV00000EC2ui01yBR000Jqz+1paEE)sIKtVU7P!3SVWh$sDAC{b~gnq9G%<3I~Ib&TxZo_Wz4GoNldUwcoQc+PVr+09H^hX}@W4 z$7M{kOuDfv^id$~I{@0++TY*cX=h@foQj5lTxDTNZ)#U`Z$igy0G*nShJt3@0001q z00000A^8LV00000EC2ui01yBR000J$K#gzcix?9~4dBO&K%OUyg~VzZYz-9Z=Ys^k zsf(+i7|j@BxE&= zfD;Y}2OkwG5e67L6dfQd5*3^uo+`r_g2Jw5vA>G4cV05t6HJ39bN@c<6qBz6D!#KiMNMeIXE04C?|QdIlO%H{9> z07CBU008xJbKL0q_H}mli;Lpz{`=nD`qR_j>ip&>-Kkf?qp>#egEhb6n~@L!P)=#kB|46ne}gQ`^d<%&G+_& zgz!;PA^8LV00000EC2ui01yBR000Jyz#3&pF&GI*f<(fR;5N{WXj&?LJ_tlX2FuMr zJ5OM&P-K258UXfsX&j7@#S%%e28qiW#EbECBM)_V2?7lO9Udbj9wZI{c6b7Yh&vTN z6(I}{gp)QdhzAE6438<20yZcuh#(3-4<{E55iTtQCMJ44S6EsF1uDV|#5YPz91su~ M%quGs&?`XzJM&4QW&i*H literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/kr.gif b/lms/askbot/skins/common/media/images/flags/kr.gif new file mode 100755 index 0000000000000000000000000000000000000000..1cddbe75b3087d8abe0be4845b8339b490d1f713 GIT binary patch literal 385 zcmV-{0e=2RNk%w1VGsZd0M!5hbeiF&rli!=)A@*pe0+RUYQ_6SMf>yfXlG~P=jHkN z`NYJ;-sIx-_4V1=+U@f4{Mgv(>FJ7!ipSLL%F4>_4Co$*W>Bw*WcaQ;os%!>*ww5^7Q%Z@$l2x+34={uCTDs*VScizN*CV-{0TH zd6Uc0&-1ah(9q5D_4W1i^R=DBqpaE5+}zL8(a+V>{{H^`{r&Xx^z!oZ_xJbw{QU9v z_5c6>A^8LV00000EC2ui01yBR000J_K%Y?9={z1K%}De~FnqtCW1-9CdcEC-qToG$ z5ecD|gFqAx1i`@z`EU*i>M$@E20IjD(Ez=15iu`z6%_*-4mu4O9XMA#GlePzEj&6I z4IU3y5i%#DGxmY1OX%fq5vlW92*%oB|R(z2m(A46FV>*2oyUO8a)aN fC=on74Gj?iC_BeXO$-bnAQ&bdDK-`sEMJYmMn>ov z8Bb47;^E>l>J20u+s5T1;X@Z*S%*UzWbssOwF!_RG6&GQb!{>9vG+m7@|Vx4Va?&x;h|s8^>EksaoG6! z)kD0~h_BI+aM9+z*OX+^^?1j!Y1aFT%dCRUyWhV6pVFt_$~foGMu({bf!E<)&gZJh zcmu!xA^8LV00000EC2ui01yBR000J)z~48ZQ0cPx# literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/la.gif b/lms/askbot/skins/common/media/images/flags/la.gif new file mode 100755 index 0000000000000000000000000000000000000000..d14cf4d82c62f716ee124e1b2afbf8bd79a41c0f GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h@;N!BW|MW1+gp6p`T6;WLw!AE%7&og%+>Dva&z|p z05o36ggkg`i`%h(sQO}J`dwX}Ta4QP0A+*K004**002pC%;o9xEm*|-Yio;0fSXi= zWQ5rMdV2LlMC||ou5z0I7PwV;)8qgE_fk^#O-=Y#SMe_|03*I%f!Fu<_ic#Qe>8A$ zjoVOl&P#I9?eO<~n&4@O+E8@RvUs17PJ)$HiA-?KpJS82kg@FV_MTsmO#nY_15fb) z0Q~>}A^8LV00000EC2ui01yBR000Jyz@KoaC>DLl&*#@^b`pt9=J9}-NTp9NN27s2 zfxs>j*=%Zo3hK~m$R+{=Vr8it29&j%!+{Y97c&NfA`~G9G8_W}e*`KM3kC}=hA|u| z0|Ppa7ZwW(7&n!eA}<_r1D_Ze78E=VIAb<78U+luEG#t@3RNaoB_19C#3#lQNIps* MBh4cc(9uBvJEn@1%m4rY literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/lb.gif b/lms/askbot/skins/common/media/images/flags/lb.gif new file mode 100755 index 0000000000000000000000000000000000000000..003d83af5e0ac0bb96a30dfa4932a43915e3fba6 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hD%NwCGBEU>P{CMGEg1KS zeDQ2t^78WW^z_5R!lKNh@M2NS003L0TlxC>(*OYVfpqR(PCb)7+W-Kx0092|{q0*y z=0r06{r$uM0O>_Cz5oD2mPARKO855m_4W1hdTsvx{`2?sg}Q{x-^=AcF8%xb?N~@C}y*Yt0X(b7Px_hsW==K zScqkVAP_zl5J1Dut#+tdU@{^ZNDhF>)amse5+XJyb$5AuelQX`AtEVucLe}_JvR~( zAr~Pu4F(Jbl9e|TCjl214*@(3p9K^p8!TlnA1VR@3Arsk6jxbevSu$FDk{865gr~O M%o)xZKG8t{JI9i#CjbBd literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/lc.gif b/lms/askbot/skins/common/media/images/flags/lc.gif new file mode 100644 index 0000000000000000000000000000000000000000..f5fe5bffd2017b1a599d94b4fd5745098fb0e845 GIT binary patch literal 259 zcmV+e0sQ_)Nk%w1VGsZd0K@-TAu z@%Gn5Hf!~fxAkFQm2{o+Dq`bplkGn{JYR_JahUI(!uQRgGWYE*V~z4EUfn8R;k)Ab zD`W7m!s?EOgeqX$A^8LV00000EC2ui01yBR000GmAO?&;VKN1yG8_X0a8NbdhBOVL zLocom1j1wRpil(7Kn@{Dcsz*+MWH~xbchE*A|YTR3d}%LsOSWU0Jk&1U?vZ;S@1|W zEEY#%!l%dubPWa<7X||W695z$1q}iN3LOWN2OR~85g80V2n(K{3K61=DjXaTs2Uj` J8Lg`!06T6AWa9t; literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/li.gif b/lms/askbot/skins/common/media/images/flags/li.gif new file mode 100755 index 0000000000000000000000000000000000000000..713c58e1df193b0256be462a3437c95af926e600 GIT binary patch literal 359 zcmV-t0hssmzVQaqZh z!vGnld1aW&008t@L+xl)DF~@ zSCHT;5Aa4W>|sowk+<${TPX`+X;O^vO*e2`laHREMR3Hv!KX%Z$msw8@N{DP;A8aM zX8-^TA^8LV00000EC2ui01yBR000Jrz=d$QAQ+E?OlA>Ms8Tt_X2aohIv2n)#4`Cr zE5OHtlNd0c?Wre<+{WcI#k160vSM8vL!sa@Gcf~$0}O^XEi@n?3_m*-BO?wDH8n3K zB?1BvH4O(AFbD|=0R;sUnh-7l6$d1uq^78wE+_@9JTfv5FrlykrMCye4aLR{70Jp$ F06Pnflbiqm literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/lk.gif b/lms/askbot/skins/common/media/images/flags/lk.gif new file mode 100755 index 0000000000000000000000000000000000000000..1b3ee7f572ddb8199166f65e8803233cdaebca1b GIT binary patch literal 377 zcmV-<0fzoZNk%w1VGsZd0M!5h{+C$v(@WyB7rACo`;AEGyd>$jN1;4ZaHnYW)E}!% zW?Y+G^2j5eHA(i>Q0~Vy_uOQ;Wiqo`Z25*h^Up)ccqB}aNb$@)o-{hmhC;)6bf-mJ z#BUqfm@L|xL{*nm?Y}d(V|1=kX0cgR>%uPi*;JV=LjIy<_SHC}K|J~2a`o9;{gO~b zj6~k2Kv9%W%7Rquz-MNmW!9KB$9p@^f)K4vPsoC6u24#^QeDi1F3^N5-J&1%*HqJz zNBP-TA^8LV00000EC2ui01yBR000J-z@P9}>Ny;N0EKe7JRUy;;&f8QG@+10A{zKQ zKiL8RfM{-9MQ$?~?ZV@-L}7q=JQ>`fQW67L5OW47AT~1*dp!#uECeee3Md&M1qnJ0 z6%Gq81Oz<_8$Jx93>YRH0Us6w6Al{(12i2GJf^5GEfW&~BLfY;CKwSZ9274Wx&baD X2f!vN5j9Ls4Oz$U literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/lr.gif b/lms/askbot/skins/common/media/images/flags/lr.gif new file mode 100755 index 0000000000000000000000000000000000000000..435af9e506f70a8cc09022ae3029373facb3ee0c GIT binary patch literal 360 zcmV-u0hj(qNk%w1VGsZd0M!5h;Ami@006B30N!R@(LFP>wA0{cU&H_a-eX$bURAaL z0L}mag@?Gl00885ZR2ri;caExT2b3qO`HG#003CoRZC`RrPfSB{{H^`{r&Xx^zZNW z_xJk9006lF0M}Vh++0%OY-8tyeW0Po+gVT3L^<{6<@f99*ic8`Z)VtERnRakXhcp5e|E(;u`37noK1Oy)wCUthEk~66;OHB$20>uHx6B9o_ GK>$0mai$so literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ls.gif b/lms/askbot/skins/common/media/images/flags/ls.gif new file mode 100755 index 0000000000000000000000000000000000000000..427ae957e508a6c90df90c68f2320b119bf372e7 GIT binary patch literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h<>loTn-%~u03Dnr01s_coyhC#>_wKu-`(3QhPvwU z^F*&lB9T_py_GPCz4`h1JF7bYL;y65zx(<2`1bNAe4D>{miq3 z-_Wu>lENi^wBggYHmEi;rZV;K<^25nD1x_as?K<^(Hx*0%H8JxF@pd>jnU!i)xevM zzS{Bh_0hVG_wwpkqRl_4Nx00`OQv)D`};(Zy>FefA)7Sq=GVrmdHehO>FMeG{QT|h z?fUxqA^8LV00000EC2ui01yBR000J#K%dZOFz|SQBw{&J`93faXQa{edb{7FRUr5% zuMMY))hZ4N8^O@PSTMEn1Jy~8Yyw1swb43i7#0Q1BE`QJsoDir+URq$bA z_uD)C=X3hyYxl|k{nP;W-&O5BJ%l;7{1gcNpq%=3ZTkB9`1tq$YVH6;-d(c!gv9#*g7BZ7tSf@AJVX6BGjjJwH7-dJBDjfrEu6Jso$1Tgt5T@ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/lv.gif b/lms/askbot/skins/common/media/images/flags/lv.gif new file mode 100755 index 0000000000000000000000000000000000000000..17e71b7eb6bb2dc4f4e63837cd70be048d08f1a1 GIT binary patch literal 363 zcmV-x0hInnNk%w1VGsZd0M!5hu0lhpG&H(YRP5Q=oE#jaGBUzzYjgkrX8-{F{QR*- zMp^&>@!{dhdwRxlbG1=Xtv)`;o}RKwN~JC?>B`FV_4P>r0O{7&zFb^^008>>`uOXBfMEz^Yiom{{EO06y@dR=+o2W&(EqnJnGli#(8&0BdeM3Si~wcH zWdK_MOTJ4`!BBF|a&F9S0A&DS#$i#vQ6;V=O}|YrvoJcgI$_CS08#)|!&QRRg8)SU z089W*z)n}gS2eUXe$#$x%4$KkK_IIjJ+wVHwKqAlIWMsNmIg8Xv}C?!dXPQLsh_4fYX3GxH~nqHaE66Nxn%-yh~lg zT>zN?A^8LV00000EC2ui01yBR000Juz@Jb!7$g#cB9w9}<=Yc$F ziVG}|X;27;)=uKZg;V4P1KlcBD2pHH0x!=EIXV?6G7AF;eR61lgA)Z912JSBb1oJi zjUyr)2@W%q1ePBsDib3BB%BW&JfWAQrT_pY8vP*D9* zQS~Jy`a(kaR8;@^dKPd4Gs57O6~vv^*%l3008@8Ve~pW`bI|jL`3=k0QLX? z@&Ew-Sy}1;0RMY?^dBGd85#F5F#Kw2{AOnQU0vb;0Q^f!`$|dqJU#O=GW}Fk-v9vl zIy(M&dHO#;`B+%Ga_{m6nG9Rd>Ax1Hw1McAs2WLHYgY` z6f`t43y=joCK@A_FD-PPAq530EE*&kr2`0$sSyzdEE`%}2@)6r6c;-x1~NTMO->#j N6%{5XEIrae06XmGiQoVL literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/mc.gif b/lms/askbot/skins/common/media/images/flags/mc.gif new file mode 100755 index 0000000000000000000000000000000000000000..02a7c8e1bdcd38bf6ce52dc5662d1d75026b67d1 GIT binary patch literal 359 zcmV-t0hs(J z@$vEgU0w3>^YuSJ>gwwBW@i0#bo***^dKP5&(G)Q=lpMP`cF^&aB=!vT=-K{`Bzu= zL`3{$W&C$|$H&LX%gOm?XZ!p6`1tts_4UQY#rF30`T6<%008sz^ZNSw_xJbo^z`!b z^8Ww;A^8LV00000EC2ui01yBR000Jrz@PA!E9NE>gVJy~{5DXBD0LdS3M$qL<=k{S zh{`3QSTr7xNTLfClg;P|r6tKZ!sGHeO(A{i3=A(KRWbzt00RRFArc$`kTW|tG(0yo zJvu%;8Xy5Pl9ZO1nm#%iCILH>m6w@592`D27@?x0nI1l~7`*}l78V2qB^ogqHZV3p F06Uswuu=d3 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/md.gif b/lms/askbot/skins/common/media/images/flags/md.gif new file mode 100755 index 0000000000000000000000000000000000000000..e4b8a7e3f67097d65193a435018d68d1a0798af8 GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h-B3dS0I{c(RP^B~OJ~w#ecS!+UE*X}+e$s_#sL2E zdxMwa_T@3wGbO120GfwGY=qpl008>wOY_(!ev{(-?r8k%RQufk<-GvrZe-g=IChNQ z;8;xg=tTDAJ=7~4{L%o!0032S)?azq+CVawgFOHMpV&Jsp#T6{b=dgkK=$QK zj7na3)ioRq>SWf5>VEgl*qCmap|6ni3lGcpehgbe_P8#y9A z5-l$}B@8DGl9ZPO9V!o<1E3!WC;<>Y1TQKK6B9hCAFHij1uix=H7g!8Xlbn`$R-I1 N7|j?CDA6cE06R$cn05dF literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/me.gif b/lms/askbot/skins/common/media/images/flags/me.gif new file mode 100644 index 0000000000000000000000000000000000000000..a260453c2f73f32c07a75de3dcc5d990fceff33a GIT binary patch literal 238 zcmVjVnU0|@E6KJ?8$=pz#6vOEuFvF)}# z;jSy>oHOJA2LItkA^8LV00000EC2ui01yBS000GR;3tkw=|CuST?pX5upkRc``kCB zQ&LacI7(;X=?w-y04{*ZbTFMGvZmApHX4mndfx o1nz;Q5ovVj2NQP^Qb%-vf-^D)jE#*G36YTzlo14%m;@mJJHTpU4*&oF literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/mg.gif b/lms/askbot/skins/common/media/images/flags/mg.gif new file mode 100755 index 0000000000000000000000000000000000000000..a91b577d138eeaa5d0f9bc8a00cee9ddb3305062 GIT binary patch literal 372 zcmV-)0gL`eNk%w1VGsZd0M!5hO0r5Eo*epARO$c#>gwt}tUXz}TK#Kl05$;iBqaAt zOy=h1HL5k@;^Nxc+S5HKFQqT^007W49sB?Q3zZ81D*ymT0R3iW`$tFmK|=XFJoq;@ z_c1Z{D=Q?TB>YTFGo~^sq$(7d6#4o2?d|Q~-`_T{HrGcp{9s`hq!%KpBKAZ?+fqQA z008=2T<2$9^*=xTaB&cq57$mREw3&6{QLd<{Vbv^{)L76`}_U<{rdX){QUgy@9+Np z{{R2~A^8LV00000EC2ui01yBR000J&z@D&2ni!3dWMnYt{eC_lE_OIvP%eQ$(S$}1 zf)6I6*>F1CUeu?%h{@(oVl^N|bvD$vd`=`_0|ab5JTELWCnpaN5)v~l1Ufu5IR*s` zG&CwIDJdov1Uxx8I|d98Aszt%A~GNd3p_hJBLJwXtTGf36$_*zBL)Bf1(ysU5H}SK S4J8gG7SR?6)D_kUK>$0+p_E1d literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/mh.gif b/lms/askbot/skins/common/media/images/flags/mh.gif new file mode 100755 index 0000000000000000000000000000000000000000..92f5f485c3bb6e33dbf40656bda07e3742c071a3 GIT binary patch literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5hxy0R=s?qhQZg-KxskYMq0BsmTlZ|k9L}{`3+q?h( zR7+~BwRBrkbh12StM=p2001wAo5ymG!dYjT_kl4(W29SsxmkI%WrDf@02nq~q5l5< zG+3T%hPy{i_^kXs|~^Yw2A8*Wm7JgR#$@g7wX=EKr+wc$#u) zga8S9A^8LV00000EC2ui01yBR000J$z@Jc9C>9k+r0W*}m?8s-MAX4pF1;1)7uak9 zmqsJxaa3M2*zHH~2F9V9!xy6n9;ZTt0KkM6H4_YWC?6#`1p{Fr2sH;XcON(r7Z3#! zV+eu*2`K;_JR=$z1tNb3oFoArAO^0Z1sFX#I{*?IAi1t192p8MEd&yO3mz2}4jLT2 QHYx>35Yf^Z)YL%$J4-p13IG5A literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/mk.gif b/lms/askbot/skins/common/media/images/flags/mk.gif new file mode 100755 index 0000000000000000000000000000000000000000..7aeb8311b2b6a4e18b278d1774459e57335c1b76 GIT binary patch literal 382 zcmV-^0fGKUNk%w1VGsZd0M!5h{8?7{*f{@h0RED8_Bl8G+;I4bGyD4h^Z)?$ye#Pe z0Qq@4_{>KBb#?o_NBKub`-VsR###JvPyA(N_xCySnG)&h0Qash_NpfT`gijf82*1* z_ADp->r?wvO!Pn?_H8-zM>O_oC+#-?`<6rdZCLqcNA`9q-v9vgEga~^0QF4({Wk#o z;{ftO6#bV`_Bbo@S`*#f0Q2S={CH;j@M8XmS@vBk`Mx>y*dOuA4)WtH`maL$zf}6u zUHXiT c9uEu*1koW0J17S$NebF3Dhepy-!ee}J1K9L&j0`b literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ml.gif b/lms/askbot/skins/common/media/images/flags/ml.gif new file mode 100755 index 0000000000000000000000000000000000000000..53d6f490c1777de4f9d44195d5e188cf2a35db0e GIT binary patch literal 363 zcmV-x0hInnNk%w1VGsZd0M!5h?Da!Rv`Xjz0BXW&`22I|=m7luY4kBM_en|lS6BS} z0QD>^^Bf!ihyeE3D0<0y>GL=BBqUL`QS9|j^wb<&y<7l#0CL82I;uJVXaM*3MDi08 z`T0Bg`a$^kHT69`Sh`sNR{-%14e|g0MX^Qu`$zZpFZT8-{QOMy^(0idRNw#r{ryqn zqX6&tQ}py6!4O&4|n0B#;M4t{?E78eo$BmjCQCk_k@ z8#yZ$1CTlp9+W8*m>UP110*^a5TY*>8zLg78C)PL6EPYZH9ci!KNcAoAt5&f$OSDc JD?iRb06S!MmRbM+ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/mm.gif b/lms/askbot/skins/common/media/images/flags/mm.gif new file mode 100755 index 0000000000000000000000000000000000000000..9e0a2756d2ebf850087f556cf77289009985f3a1 GIT binary patch literal 365 zcmV-z0h0blNk%w1VGsZd0M!5h`9nkXB_-Y6`1CwI`dwZ000610?d1Rf_%=58OH1ki z0Qx>Y@=a6#0LOiO zmFiJU*Kly;czNVTM%}@|@=HtGMLW(_Sl(S&*Yq|v`$$OfLrQFA+Hq~)c5>d`008X( z0002PA^8LV00000EC2ui01yBR000Jxz{c+1@_u`KpBFCl2H5} z6@dU{a^V0ggeKDchQ~7wS}h4+4h`5NWvInMX&QAM0|z8LHaaI9AvAOW9Up~0Dhv!c zIRh+$kRK2?2OAz|3nh<{5D+3G8z2Cs2oZyx7Z(#F1z8qb2^ataH#Z^^6Fo~!J_-s4 L%p)T`&_Mt@&VP;h literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/mn.gif b/lms/askbot/skins/common/media/images/flags/mn.gif new file mode 100755 index 0000000000000000000000000000000000000000..dff8ea5a63f0a3ec96dfd0dcb95a0a7abed8083c GIT binary patch literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5hK|%Ta+GzgCTz7N&^f58_NlE{EdHYpV^(-tZD)v!P z{qr0g`)FH4IPLW$B>d4${Aft?00000>He%%?EnB(N%8z!Tl!r+X=(iC008n66ZJhk zFfaB$J@rRN`ZYE9@eK_C0Q>*|);l}-OicXw001N;_22*iT~hJ;*hC&4^z}A2WnlLn z8SehbdH=P0{@ro=abhYY@cxH(Jvj0tAMZ;`_b@B*`m#j+-ds&V?)h6){ex89008{} z0RI30A^8LV00000EC2ui01yBR000J!z@PBvlZ1{TNn}Z({0uLHVKBg0S(d}0;4}yr z7LX O63r4KCnr7AK>#~`43F&q literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/mo.gif b/lms/askbot/skins/common/media/images/flags/mo.gif new file mode 100755 index 0000000000000000000000000000000000000000..66cf5b4f05dc02126365be46762113446f171a8b GIT binary patch literal 378 zcmV-=0fqiYNk%w1VGsZd0M!5htJ5t>eK)_ z0QC0sQngY=u|?YK+Iq=)am8`~g8*H=UAEn}m(P~~SpZMAPXI{(M6N^tbO3P0Y)Y|8 zF{LnGyi7l?KRT*93zZ81EC3pu8d|!738K-oN;DY5a``m@aiMCmJs`=!Yv%|;$A$NP0yis$eeV4+6o4SOY!gi9p zM{BlIcBwmInnGuu001C@l!%F>i0sgicaElSjJR!vwDiBKYoDF;_+o*uV2ZQ2#p3<#r26otkD|Afrn#QA zrT{I0A^8LV00000EC2ui01yBR000J!z@Jc9DGrW@Wby}S0t_sN1J>IRN~QzTvf;G^ zw9^DZx#}tgQ1uJ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/mq.gif b/lms/askbot/skins/common/media/images/flags/mq.gif new file mode 100755 index 0000000000000000000000000000000000000000..570bc5dd18a8cd881e03c9a56c3ebcc514191fa0 GIT binary patch literal 379 zcmV->0fhcXNk%w1VGsZd0M!5hTXLl}RGv_4tisCRo~+NNwAAM6@??9o{QUgT*5k_3 z<+j1v03U?2z1I2p`2YfQ=H})A05XA<#O&_!U3RgBn8lT)&AGzb003F^_4Q9`sk+79 z)!F8Zoy5)5<#~_6003wJ07b~q;?UUXLSCYGjK03e-o3`%_xJh$02lxgeZ$M$SaGn5 zoykaLr%7h0`uh5Eh`rk0=-}n>)!poAfw|q{?_YSayv5t;>FMF-?bh4q`}_O$_V)e# z{rC6xA^8LV00000EC2ui01yBR000J)s+bJnQ06YHGuI>N; literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/mr.gif b/lms/askbot/skins/common/media/images/flags/mr.gif new file mode 100755 index 0000000000000000000000000000000000000000..f52fcf0933bdd5a8e30a1d2f7d76b97f728c9ed0 GIT binary patch literal 377 zcmV-<0fzoZNk%w1VGsZd0M!5hfXF0h!e{`M05z#K0E7ThwNXT_L_@GK0BHc&>@Y2) zEdV_LGo>>Cc>sFJdH_lQaKv#rmpNj-VqLyn`ujyqt4;6rEkm+HBcUUs*-C4>Yd)?% z09ybVn;9mPCQ7wRAB!JPwogj4N;;}KSh-nLxKwt?b`+Wv04D%Dt~*`4T`rj}g2^NRIXC!;d4wT zq*5W1F>D3{g^24V?FtnNg*G@SFop-gq>J@F1{Wy|3@{!T8w&&wB^5F}G!YRm2{||& zBZ?3qA2SIyEiE+(ARQ+I3k?Au7aI{Q78U@dCpQc~s;wylD;^%SH#Z7D2v=bRA_it7 X0}KiZC=E*-91qqD3qRT@3qb%oq~mv! literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ms.gif b/lms/askbot/skins/common/media/images/flags/ms.gif new file mode 100755 index 0000000000000000000000000000000000000000..5e5a67aa882715433cef156d6586341b5f50c8a4 GIT binary patch literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5hX)9;rcXyqRRA+R#002$RY&qox!(I;tiatq!836tfEpCMGHrtpi#hprWH0 R%*0Gi1Ps#B9@W)B06X1&k5K>s literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/mt.gif b/lms/askbot/skins/common/media/images/flags/mt.gif new file mode 100755 index 0000000000000000000000000000000000000000..45c709f2bc68af31bf62940c2765474f1798639a GIT binary patch literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h{9|M0=H}JY)8gXd+}zyq6BG0D^7T48^Z)?t008nX zF844n^(7_xQ&aH`4fjn=^*%o4008+yLjL^y_A4v&A0PNPHuW|(^BEc9008;`0Qo#U z^D;8u008*-`1kks_4W1d@9*vH?fF+%y|}p4$;rvc$olW^`dnQ3OH1=LHSgWs@$c{U z>gxP*a`^4->+9?M^78um`S?ag`~3U+@bLHR?EUri-2edj`T6_%`}+F&@$vEg{{H;@ z{Qdp?A^8LV00000EC2ui01yBR000J#Kpu-nB(5|Xgc6ZRfMkMSulKvT007je@kkg1 zq!RTPYe+Vh1tsO2n8vwT33!M%Q3az80A1@CO2Pzy23OFzU0RsaB P1SJs>85tco)Ik6{yXCVQ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/mu.gif b/lms/askbot/skins/common/media/images/flags/mu.gif new file mode 100755 index 0000000000000000000000000000000000000000..081ab4533607939fa2bb70838fc34e35024272aa GIT binary patch literal 358 zcmV-s0h#_sNk%w1VGsZd0M!5hXLpgiSZP$WRO4r7SZaqkShP8&IRH}tsWeF@M5grg z9I{ASQfj;R_bo=PMwrei`}|AYQ&U4-vj8yw`};!q`8v1&07+!I$^ZcJ@)M-iJ^lS{ z02xc0(JTNK0F%ocb%UJr^fY*j%c=kX=5TR}#tlqfeL7RE=z4lqal!oj0001oFQ6~@ z_%-$QB#@o3T5!GL;Q+~dh!2YZVYvWbx?nF&tVsX>hX4Qo07T(lUZ~kbx!`7w$P=H_ zG{XP@A^8LV00000EC2ui01yBR000JqK+JDAv>1=0ttvyIpt@ zV8r6K62V{$#zi7IootDOBv($Q)aydQ2AAhJFCc;dgan2JCMEzLDjN_G6ciOL4Gk^| z3K=0WjgXR*mY5luF*H0o8X7(w4-X$7JtZX%GY2&_0=W*m2E8o59tXn16UD|J$R0re EJA^uk@&Et; literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/mv.gif b/lms/askbot/skins/common/media/images/flags/mv.gif new file mode 100755 index 0000000000000000000000000000000000000000..46b63875b1fb72f602ec068d935042455e4ed795 GIT binary patch literal 372 zcmV-)0gL`eNk%w1VGsZd0M!5huG&JNjG2bX7 zUf*8qWL@xAR&wZd>Hq*(-dlR?e&j4S;mhrjc|>04A$;8)`S z0OtSzA^8LV00000EC2ui01yBR000J&KoICh^cj7XWaYvHNuH9y;BY_?2%g5`;v{rB z7+xY_k&Q@zMWCA#i9Uv10T*cjAc5Ziqk1!D0yZ}hCL0QQ10E z4K5!A3<5L;Aw4e-84i~V69ok&Ius@_FEym52oPo@8ZjFiD-RDoF%A`09$5$1RfRXqB literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/mw.gif b/lms/askbot/skins/common/media/images/flags/mw.gif new file mode 100755 index 0000000000000000000000000000000000000000..ad045a09c124c010eeb1ce5adf28a3b5f28fba4c GIT binary patch literal 364 zcmZ?wbhEHb6ky*$`1tskt};Cv73Hj{sjsj9l!1YTh2fi-*-vZhJO+lp3=FYLT>tp{JFRo-FgKeO z8=H10ZDC~Ol9G~$h4%Iv?WGsUM7y{oF853{H?QBG)m2&PGtDq@UsAD?lfhC0<;BVj z#tcB9_>%=hG3bB@ke?XXIuFb*@UWWOb|OASveA--DS+GID~IwG@e>Cgz7aB;c;eS# z$*AZytAk!GPFv(pDNbC$H~Z|;EgM3##FdN7*m-%?YU)H;8jH)@I%?}#SX7mz%uO{7 zB_u34I2ac(TB@+>@f!)t3kcX68#8aR;bOHC5s{SS=hqfqZDS*_m6cWMxa>(;yE9x| Ic8(0z0Cd)M=l}o! literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/mx.gif b/lms/askbot/skins/common/media/images/flags/mx.gif new file mode 100755 index 0000000000000000000000000000000000000000..ddc75d04d8f2b05b315d7960abebe0604fd9e1fa GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h=W1?MqI7z=lG`;q09yu2oow7kOSk|4gMO=WUGP6008&*_j9z3-aSIuFE!ygI_=U{QTe5#NOoIjeTn0 zPgCSzWb*Frqq3jR&(FZHllS@f`1JJRN>BCo_B@ne!esC^{avh*CKMIRzCIsgCw literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/my.gif b/lms/askbot/skins/common/media/images/flags/my.gif new file mode 100755 index 0000000000000000000000000000000000000000..fc7d5236148edbed734df8a666731eabfe88968e GIT binary patch literal 375 zcmV--0f_!bNk%w1VGsZd0M!5h^ycRK@$vKMn%&Wc>gwrCP4ndB-bGE;007*krQl6hwg3PR2bl8W;?|v= z+c`t-!oudp#sC1t-m0qLEG(0d(AyjwOiSF{&w|6PC5LxQv8}`L$Hm>dyYA)gZEfLq zb;9-U_3P8q_ut>$)TQIvp5Md6@#pS4JK6i^<@fFF57%;0^5q7T=u^K8V V9UTu35D+*ZAQl!qJsTTA06XF)t_T1C literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/mz.gif b/lms/askbot/skins/common/media/images/flags/mz.gif new file mode 100755 index 0000000000000000000000000000000000000000..7d635082a690908e3fb17ac14c490b6e39eab441 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hzn{ItTgr0 zDoM0SRJv4k$#wbKH`<7D=i|-KQCR?l0Qb{IX~JncI6L;oUi8m7`$Jo91@Pl4&nF6HJ%NMG!|np7M&mJFnd`S z;Dk7V)%HGxlDY(F!(afG;L$pKA~KIBQ>mCt9zFsFHx?imJbfl7Cn_oxf;$!uh#4y@ zBqTa1DJwod8WO{DxC$Yl79744z!$n; MATw7ID zxc~r<05kw8qA8o7*lKFS`8zusoEwLP!}w-x>*4D>t32W0@A!#{^3v7p>GAk@cW`jU z004T%z`N>543qa92rdRbTTX? z0zpAR?ol+JQ4KNphQ}Za=9GS^I)opnFrH;D5NQ`CF)Iu|8ww8=E(w7cu10t>=AFvDtISC1?JS!^|BqSmt R4Zlq`It0=T)Ya5M06TOHp8)^> literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/nc.gif b/lms/askbot/skins/common/media/images/flags/nc.gif new file mode 100755 index 0000000000000000000000000000000000000000..b1e91b9a80f4e4d69a3225e1dce5faaf099e0499 GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h`1UqumfigBbxln;GlW^1nnM5xtQvMkiKydqb4~mE zOZ6p91xLs897bA=+xIhAq;jj9Wutth<3o&Q{rp)beNdsHPy72s04BQtEdXStf&etz302BcAJz(Vk0GY1JkF)9aD^ih>H220taUFf^?pvR{s9m6a^}#yc z;&5DEKu~{b{JDF^sD}N%gIJMx)7Mb*^IoXOQ@7N4B>**Zp5W5ZnnsanRD^C$gw_B{ z%K!iXA^8LV00000EC2ui01yBR000JwK%daZU~G<dD>FPV6FU$1Tl#-7C literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ne.gif b/lms/askbot/skins/common/media/images/flags/ne.gif new file mode 100755 index 0000000000000000000000000000000000000000..ff4eaf074e9ffd097b3820ad9c56fdda7e336fd1 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hRJT99`H4pOc{Bh|001ul0BivKq-omi z-5Z!3)z#HJsyzPw{?X;pCZ8tq^78(xbS|PU_V)Jd1_1LS0R5U>_T}39IRHtqN&A&l z`OdXry<+|C;`!;_)#%mw`uh2@hWqQ`L#{(Jr8EBT<^QjG{fh{R2`<`I?)V<&E-~N_a_1VeylTP*H)-|X#p~s>8{QUIv z^!4@iA^8LV00000EC2ui01yBR000Jyz<_WV$QUh1OT`j6IVI49ltyc9a+Sc~a=C3# zC<0-%DijD6oXlkMct-Hg2ZPaJUO$Jv*Q<#J9268kK0gc*dp#*GWg>$<5r&9-DIpvK zF*Ae_5k3qs0yd&H3Z*O{AP)~9JO~{m4Gkp|5D*IsD!CH}t{nis8XB+-JF~k8$Os0@ M1_#Xt(9l5uJ4gkx9{>OV literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/nf.gif b/lms/askbot/skins/common/media/images/flags/nf.gif new file mode 100755 index 0000000000000000000000000000000000000000..c83424c2c3c02352efee0e63f4011be0129e2fc5 GIT binary patch literal 375 zcmV--0f_!bNk%w1VGsZd0M!5he5-s+lT5?Q!}a#{VxD6FD*%M8gf@OQw9T}|+Qs_% z`tkAcHlUu^q!s_no*yY$Qd@Ws`T^ev2YNBd%taZ)b&HerT01^PY(z-K&Gc9#3 z6Kxa8-N{OgN<@uBSejT3X$?GtJVJ&-Q zlAGcJh$&rKcY$4i6R$4Gs_pAt4c_1a2L504oCv VJZi&CO)EV$Is!d94Ngu$06RnPl%)Uw literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ng.gif b/lms/askbot/skins/common/media/images/flags/ng.gif new file mode 100755 index 0000000000000000000000000000000000000000..bdde7cb3bf708d1ee0bbea86c0b0d407d708b691 GIT binary patch literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5hddYe=r#ABU@?5=K?(Xhw#BBh20CL82GN&^2`t<-e z004ymFQhN^_4V)c@9gsI09gP~wovNu>HuT_Pqj~3yIBpE4FF0204xAXvq}<|5&&!f z{r&wVp(RDJMO3y_RJl|+syRQcKP;pyAD$l>n;8_E6ab3=`}_Mzv`N<1*4f$FT)A9C zuSCbw$K2-J=kDiNxmX~dAa}@jV83Blyjbh&>*(+3y~n*~z-IXP`276*`T6{#XcoB}a*Jd(-OcsFXEWzRIb^=!HL%Ey) zv_XZsL-`yb#3*xtia&y~kLOT#TJ2d4L=l*IIu9cqG9n5K2Otp{0&_Y)4;>^WAqoZs z5h)%5fImGFlO_R{1)3rbk39`HB_0>NbZe0G=U#X^llC=&nx18Q8b z*~KC;8kJau1Zed*od$yt1k#~x9JS8t$N%+uDLOef3=BLzJO+J#I3g%8B!)g7iF}M4 zA}T5*haMh21`-c&avcH!cQqOsHZcbgWF;*H5)~B)2s1MU83b5b3m9YyB`#>ZOHCgj M%mL0B(9l5uJD$t2%m4rY literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/nl.gif b/lms/askbot/skins/common/media/images/flags/nl.gif new file mode 100755 index 0000000000000000000000000000000000000000..c1c8f46d0c328cc5ceae99f0ccd7c5047ae93d83 GIT binary patch literal 360 zcmV-u0hj(qNk%w1VGsZd0M!5h00DIV{{A#>vH&5E`eJhySf}*>0P^zk`uh6#`1tnr z_WpW_T8hK{U28>qx;k>TDrThkJd0frAGJ zJ|Y7!3?LsJ4jT^wArKH68x{Z(4k@EDry2zX92_AYs|=l=p{@d?5V!!t7{$dF$R5fb GK>$0vUY#BQ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/no.gif b/lms/askbot/skins/common/media/images/flags/no.gif new file mode 100755 index 0000000000000000000000000000000000000000..6202d1f3a2df4184878f5ed8bc23aa630d43c061 GIT binary patch literal 376 zcmV-;0f+uaNk%w1VGsZd0M!5h01vKZmEH98^zCF}`uh6sZENy;dei^_23FAb_xIv4 zFM6fq>gwv0xa;FBE9*^5?Ot5H007+=6wLqt>r_(O008MkL-O+Sq$r8H8S8KAKx4qwEzI+G%}a&g)Y3x25QbD!hlDJJ;%`1$$yu>b)6{{G_A^8LV00000EC2ui01yBR000J+K%cOO_*IUTgL1<384SHfuU06)29OoSwQzVEFmNnFct&>I;*X(EH(-}2Ut4`IvFn*G%YA0 W3NpY46Bhss8xhtKBqTiBK>$0|z?fYC literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/np.gif b/lms/askbot/skins/common/media/images/flags/np.gif new file mode 100755 index 0000000000000000000000000000000000000000..1096893a70f475c9407efff0afe534deec81af54 GIT binary patch literal 302 zcmV+}0nz?PNk%w1VF>^W0M$PL2MRYH7*)Xl0KxzO+yDR~9Bd&n)-ENh5gT<88gd8> zINksN8Wle0ZEZ6t#ugrb`|Il{H_R+VwCn%?>V17GBAM6#0QS?<`sU^xC!PigHt+xd zCm)0Ch=}A}T_iHP>VksM008;i+zJmq3lK*N5Jdd&@D>s_`QYFZ9C)t)039us#{dBO z!001*8$=^#$@~*BhC%Fp|N&D*RKe$V2vVE zgga)E<;rVZf~hZEjT=pYS$?HpgsSP$e0P?%02^IScAi~k7044wcNL72H z0022XXp~BFoJMb%ex18}nYmYeqi&C}YKyLAhpKdxwBY9LVuYq;h^v#U#7=ji-oaQ@ zdZdr2zb99Pc9gTbfdKK{n%}h@`}_Og!(2;rp6JhZNN}2do3^;e)?K91Plxa2sJDOF&HKr zE*oYG26Qh94+}pUBPui}0%>%h4*&+EBoQY%3kj96S*)B^MPQa-6ojOH2jJ KKh4g~K>$0!fQ&2v literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/nu.gif b/lms/askbot/skins/common/media/images/flags/nu.gif new file mode 100755 index 0000000000000000000000000000000000000000..618210a755d0faa72b11a29fb07ab7c0c66d155d GIT binary patch literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h+S2WMhw1sIrumhX?dC~rblC3cP2|Wt?9@x}*;M`1 z)ryDQ^6gRe@>%BGJ^1xp-@!HY@K#%S?&{$}^-DrUv-L;mT4>Cr~&;6Cf*M)U7i=ifm6#>L0A-h+C{{`!3V%V7S%zWsM^{ephu zSXt%a_3Y$C{qs^*R?64m{PyBoZe+BAlET4@;6XMqvHP^M=Hf~8>sa&d zQ~cj?A^8LV00000EC2ui01yBR000J#z`|+~z!VA;U1FBWBrXVvOyNQSO1Hr1@n}RC z2#ew)s0@ArOK-&37#JYRc#vY5Tbs6l(D6uB05B#yHU&Hedm;oLF#-!U7y&0OG>8Nu zI2s2T99>>M43?NVFPj_al}cTuV|24eRGOEZ#pJ@uA~}%ps;HHCopL&7HAET>aRJP@1%w*VbZ zFoFSP7(X&DldJGJkX{u6q0)13Hkd(Sz)3JBEFB#ZI~E%=5qkkH2{kf4EiEMt78pMP z6cjuf2_GpS4;&d97zG8H000=B9-$(nrl=RHoe&(arKc1C3JMnm2?$vWU7;Bp8W94f P!3a*z2MN;C(m?<_p3#U7 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/om.gif b/lms/askbot/skins/common/media/images/flags/om.gif new file mode 100755 index 0000000000000000000000000000000000000000..2b8c77501d4fcb4eebfadfd58e5fceaff2e50afe GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h+*(=yPyqV+`uOgo=i4(8_OGpsVE0083R;zYDW-rnBYR8;o%_AaR|(JCs|MMXTaJpTIn z{{H^hN=ni@JJvuz)jK;Xt11+s6fdnWB&Z}Gr5_oi8PPU2(?37XD=Ppk0NPJa{P*`X zuQW@zOVl+r@9*%@FfcihdMqNJv%4i~Eo0CzVo6B8OTEf5zMDiOxU0m%x> KKg}vCK>$0WIGL^h literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/pa.gif b/lms/askbot/skins/common/media/images/flags/pa.gif new file mode 100755 index 0000000000000000000000000000000000000000..d518b2f9780dcab0072328d4007ce28bd7f3f064 GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h^IBT&h=}R{0Ar=~hr0RfM@IlS=<;%M{QUg!czAZM z_3I=gfVTM3($e)~WA1BfZL0Qrv-s`p?a$86_V)JiOiW3Y@$B^e^3>G&`uYG^^3?zU z07&itDB=Jb-d>{h-v9tqob>K7G3_fW@jN{5H#S+H^-r1e^YioXK|$}w$MMU{*Vor) zsQ8`8`Wt`s@9*&B@cr{qQt*C$08jDgGBJ3u_qf;l_4W1r{r&#_{>#hD^78WZ^z`xZ z@&Et-A^8LV00000EC2ui01yBR000JzK%Y29|%qH<0z*6k@`pQ(=)3n?2fE?^81HVQKd2L}%iGaDKVEdw7W zAtw|RI6WvlJq?qVm=+eCJplncC=)ahmzk!WD+M(wJUbkT5D){Fs2CVLxf}+^9UUGX NEDa446FbsD06SJcu!#Tw literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/pe.gif b/lms/askbot/skins/common/media/images/flags/pe.gif new file mode 100755 index 0000000000000000000000000000000000000000..3bc7639057b36907b31b465d608bbabe017e9409 GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h^*ufEE-v|0Rq+iC{{H^*5D@!CMe+au{#jY>0094c zd;WKK_5c9-U0wAhCFTGC^BEcX008O$0O9}u`bkOiGBV!)0QB_q{7+B)R8;pdG4?Af z@)Q*MKR@&zAO3lH{N&{RTwMKNVfRi>_`}_O+{QUOz_WJtz`T6;rJ6A>nr9g8|N7Z4l;6&9Wb9V>vN7Z;}k0Tv7*TLOTX7cLb60X0ia2{Ohc$P*Sd H%s~J<+RLIo literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/pf.gif b/lms/askbot/skins/common/media/images/flags/pf.gif new file mode 100755 index 0000000000000000000000000000000000000000..849297a57045d279a8edf2657314cfc5e9496ac5 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h>*-{-007)PJmXVS~=I5Zl$?gej>%Xy+eIWCjc!MB6xayJ1RFUH8(khJb4FhJ0u`7 z4h}XWKRg{jdX*#+5+xH8C7m4|JSh(@WMvQ#At43^Gcy(x4^~()3>6gu0vj6^yGct+ M3C+zE&=f%cJBfF#l>h($ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/pg.gif b/lms/askbot/skins/common/media/images/flags/pg.gif new file mode 100755 index 0000000000000000000000000000000000000000..2d20b078561ed92f92a9034f24d382e33db894df GIT binary patch literal 360 zcmV-u0hj(qNk%w1VGsZd0M!5h^8x~$QBin!c>Z;D^(rXy7Z#Wu9A#x?Ha0fs004Ph zT=`X1C@3gIL`2jvG5BRRQ4kPjH8u1yGF)9HO zv9Yn<008_?gxH1m2HZvX)Hyes-+Tp<$^*n4~Y zb7k{F8o|NAG%qjt$~^l^NBc)d^tK;HOG}WDkoKx8jeC3eyf@NOQT28u^@Jt;00930 z00000A^8LV00000EC2ui01yBR000JsKuE&p>lu%LWHRx?u?EnA#nKX~7K;i~FbQB6 z9@(apdl0lg?nI&U%r-HT=|;$GCm_ltka;{vDLW(>TQ3?H95oRR5(GRnE`(`%4FU}a z2nGZNCj}Br2Nw+u6bLX33=ks)o*h324ICk+s2?9I1^^PS2NO02hohLLi>^P%$jQkl GK>#}|p@q}{ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ph.gif b/lms/askbot/skins/common/media/images/flags/ph.gif new file mode 100755 index 0000000000000000000000000000000000000000..12b380acd38aba726f63d337660206bafba34339 GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h?EnD%{dn;U3-t8p0002=^z{G$ZTCh-Wg>ZUa>f1q zSo9nmG&HJ0L9qE$RQ>(_X=%a$080J+A(&zsEx%BMH{QSvA zMzSCvpZcn;`DJGM(aU*x$@=p0`}~dn|2OaN8v6Qct*w`)jh10xzMr4kva;e>SGjk0 z#@zq_A^8LV00000EC2ui01yBR000JtK%8etG#HPOWNo#R`4S0;R5$8{D3QVA!5f9H ztwx8zn6x4VOGc7PP{QM~8J!6PI0c`WJejyUSt<$&EFw2K7Z(VN2p0qe8UZvMGZiEy zCMOFE8yF~Q8WJ%umzkRzohVu&F9)TXoErilC^jn<4!H-rA0HSPARs>#0L8||D9I>4 H%s~JUbKv57`IX+(7_4In0sJ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/pl.gif b/lms/askbot/skins/common/media/images/flags/pl.gif new file mode 100755 index 0000000000000000000000000000000000000000..bf10646366e6e2de00d04ca75e60c5cbc662e5d6 GIT binary patch literal 360 zcmV-u0hj(qNk%w1VGsZd0M!5h{qFAkZf^BEJN8OS^Z)?o*4FYaF8Ekk`~U#>U|{hL z4gLK6@(>XEMMd{DHTN$s_9`mw008wQB<27B;s5~jA0PQTI_dxb`$|dkGc)rU8Q%Z^ z_4W1oKR^BP@$wWD`dwZ3Pfz$$RQyj*_vz{TWo7T-;q^m9{d9En=H~tH@&1mE>Dk%q z-QD@?>-+8P`)FwVYHID@-|^$)`}_O&`1sub0Qvd(_V)Jr`uhC*{P*|w{r&y_@$vrt z{{R2~A^8LV00000EC2ui01yBR000Jsz@D(@Q2_ui7b%sRnPk1+&qw9)bUIq@R@=3r zRG&4w?c#Qg~;C6SYrmzfL-1{(x~hKLO(0s$0JO|I|& literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/pm.gif b/lms/askbot/skins/common/media/images/flags/pm.gif new file mode 100755 index 0000000000000000000000000000000000000000..99bf6fdb60bb4e92ef55622efaddf8f322b76e48 GIT binary patch literal 374 zcmV-+0g3)cNk%w1VGsZd0M!5h?t^XN;o`WXG33)!zpqdL042z~a)Y9Q@o8aKS-8iy zR!d8tYGZTO$7JFF03%=p(9_j;c(7Mkr+;*4Kti<4xJ3W}MK(9A003k|M4)nLSdxl; zXl0UNTWQn z(|4Hw08db)Oii@bWpU9>T+&u#e}KN)p=apm=EA8Rl9AwEI2nzYq!I&Itw5<1trek03<;E_85kuJ zje$hLSrAGv%L6nzWCw$di0olVERfYFghFxTA_O`l3U`I>`Zo5O=hzI051K~ z(R_<>S8lfe08IC$s7zz1X_}18YJZxl>x+b1RQb4~o>;?C9eRBNk8W`r_Lc|lsEEJ&qabh%J)=l-If*U#vAcDdW0t59c{qL|M? zT9{XUUdpxCcdTA|sdZm*-y1o{004QLj>=kgbga1}^|Q9!qO@64x&Q9&duhKhOrw8Y zt2YSqof5S0td1JtF5IyBnu)pA`1x=TU`vH2oDw`$OXSl NPt6Sp(9sD&06UU^mbL%@ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/pr.gif b/lms/askbot/skins/common/media/images/flags/pr.gif new file mode 100755 index 0000000000000000000000000000000000000000..6d5d5896709989000cb51a3d13f77593ba68938d GIT binary patch literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h+}!(XWcK5CcKP}F&Nw-JdHlEl0Hy!|%vx>p^74iN z0QvRx*i%&8Y;0Ux{?kK4@$K#Q_V$_p06{_eFCVq(Yu0Mu1g#KQf}GBQg``_)WL z_44un0Q<-&DE#^O`uqI!^z_+XUZh^7#2p=wj{eU)Jl9!S007rWM*H^l^=@hX`1ki- zVE%t==D}z#U02f4{@KaN_4oMMzrScv;No#|s%WaWd$?3l z`~U#|A^8LV00000EC2ui01yBR000J#K-9rPG#HPDgYxhz^kg!@Zr6ZSDxwQR(rme2 zpD=4dj;J`4=E~6mfIx!*i)D^bIwf1lq2VDI3>yy*CMOad7$5*XDHAgU86F-aBqjikL05|~sR#yLddH^c` z{ZCN+Z*TJQ^7)RD(9qEN`T6wq^*EA)g`sSy@VtOm+tkj;Px--7*}^>iaB*p(T-NCNQ;|jW zJT~WeT<}3KL6J1>-QDecPGFy5^ED~-XH4SISMItt`%_2oxIILUMEXKP>S-$G(A3=k z002z@A^8LV00000EC2ui01yBR000J#z@Ko)DRMMOjm7f&d`6>2>T;P(6xay!GgBQl zCjo8;3K<64-zZ?S5o!WK`Ru?zevQCJR_YOQEp!DBcMTLKGBGPIH!lMY1%nU^2owhZ zE+h;LkC7Q6lL!(l04NCwJdgz$83rPhIu#W#12n1`9UTL&GXVh<6cHF04|u})Ik6{x-5+a literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/pw.gif b/lms/askbot/skins/common/media/images/flags/pw.gif new file mode 100755 index 0000000000000000000000000000000000000000..5854510fa9ee2e9b218f8a783b331e7200512ea3 GIT binary patch literal 374 zcmV-+0g3)cNk%w1VGsZd0M!5h^!Fw-sr3MY{Vk;Q_V_gbF5UoT@rBE{09@{2zWe?A z6ic)BJF4{nIpTWB|5CR2L9O^bt@&)j{Y|y{amD@sd;0)z_FcaI{`?&O`~-Kxq5wnZ z3zhL$y8c+Y`2bGqII8$1q4gi0^hL4z6q)ifrt=w`^LNPpXTbb>#4U`KTifeJ-R)Blm+~v5?p?h4JgnuO)sBnL$6UMmr`nlDu=d2_VNb0k217Wg2cg`?cj|ZmKYK8v+zND;a@583Z(jCJYUV z6BB@fFESz~BmoT-5(^_W3KB;M4z`ua|7-SPAJ^YioT?DFsO`}f(|_b)H>_4?=C-GiCy>VSFs z`}^nV@a^yU_SDh&($MzI$oTW~>UneN>hN%Z%JcO4_xJq#OicCl_5A$&{Qv;;^z;A# zr~d!|A^8LV00000EC2ui01yBR000Jvz@PBPD;5_>Bnb4&I5UUC<|OCLdiK6o5=c`StaMQcHnNM|M6p zWG5hOF)4pdM*IBxg;GuM?(A0$1?lJKmTG14@bHdbTJ`hu_4V_2K|7&%bewZ-a5ph} zML&HFMX?<>TYwrht5fRZny~H2eGe{r&y=`uh3#`S{{H{} z{{R30A^8LV00000EC2ui01yBR000JwK+JB45oZ=7$k?u1o-Ww zQyM@4(hv@tLCrhu@o#}@Z;vhj literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/re.gif b/lms/askbot/skins/common/media/images/flags/re.gif new file mode 100755 index 0000000000000000000000000000000000000000..43d0b80172e97a08147c64f811ea5c7775ad46fb GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hs;a7*ui5eO@$F<*#M13od&TML>hy?y-rnB$m5kKX z)Yt$3w8iJV%jsr^%<5`g?(XiPwcY0C=H%q$?sjUj!{w&A-t&HP_xJazz2WW&0CJMj zs?RiQbXoVKJ@hTySuv= zN2U1q__xUC>|Rjp>+3{pyW-;FpP!#^kI|;N;Ipu>uD|3gSFo+9_7 z>~odVA^8LV00000EC2ui01yBR000Jyz@PB9K_CFBujQ zjbnlXC>KmW0Po!Z_V!r){ZaeyVEp`L^%SwzVzog`06(D@Hu4#=r=dt008Ib=jvcp(q3Wp^>_62^zga4?W3f@001?Bw(;@t z09Bas^77^7<@NRTA^8LV00000EC2ui01yBR000GRU?hr0X)Y)lAuKz+Qz8REwn9)a z3{2qvH3I_2s8o7CU+tiIJTMH#r9drkID!MydHHk*)hkxpd<-a*fmJ;IxIYX6fnl+9 oHXFsqV|f#H1b27}3LPGLZyy^Sj2(oG9t{qY5)vMln3*8}JCP7%O#lD@ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ru.gif b/lms/askbot/skins/common/media/images/flags/ru.gif new file mode 100755 index 0000000000000000000000000000000000000000..b525c4623312f57d837c23d28d18fdb97e730de0 GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5hjg9#7^8NHJEf^T{&pl|Ioc{d${KqF&^A;8`F!xne z{o~~C`deH4WMnEU_Jf1>A|mzr`ug|x_xMmy`aL~#bpGDn>h|{bm6iO`M{w)_0QW>h z^*cNB002r#{lgqh;ebFwadRwpd3${j11fPZgLry;eggw3CNVS_ z83Y73HwOnFA0#9003CJ#W_foV%^7cdX_ehGj%=Gw9;mAnu^D_W7 z=LduTA^8LV00000EC2ui01yBR000Jtz@P9pnGBADj&jBP5uOB&)MP5yJRaD{S?GRB zB?Jr8;PDz;f)^~lU}}|$ZZsi$z6db}lgY?r7d{683JNV8000iJBqS#%E)EM3G&BOc61@h$D8VWb55>g`$jB!TWms0>s z00000A^8LV00000EC2ui01yBR000J$K%Y>EKqQWnf)CD0m(r zJv}=CC>sq86eKMmKM5HN0VyXIG8hmB79;=-r5XV=5-tr23^5`E000U<6IWRmn=~jA QAiKj#Oh3}o)IUK0JE%R1wg3PC literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/sb.gif b/lms/askbot/skins/common/media/images/flags/sb.gif new file mode 100755 index 0000000000000000000000000000000000000000..8f5ff837fe4c9c0280ee8d3e4601725c86099fa2 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h=F3Yvg*&9A>&CB&R#+8hXWlG(Eab^=%ELz-avT5v zyNiqG`1t&CbK*mbL#DGuKtJ0_O5Mem009BWB6cEdY~WH-+ftKLkAI^^Mb;E;6k1!{ zM@QcdX$~}jG$nT>dwb=-sE7aw0OQhQkyik>oq}+jK-IWxrkAL$qP5}FUE|~U005uT z()GW-L*&F?zQt&@weYW*0H3Wt=*&N!p6W|W*j0}*l49~5{KF%~rz9CJDkgb4`&KMEBV z5ji0M2se=l8XlDu5k4n9ke?bIq6#US2qp#w6q2hQ20sJ?BQO^iI1Ua00UjQ+KN2zo MB0tX0(9S^sJJi99umAu6 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/sc.gif b/lms/askbot/skins/common/media/images/flags/sc.gif new file mode 100755 index 0000000000000000000000000000000000000000..31b47677e0d51f2958f3c833b36345c5267a064d GIT binary patch literal 357 zcmV-r0h<0tNk%w1VGsZd0M!5h2apH&la}uR0MF>s_*7N=`bz*a003M7rPrqb0EaoI zIrb?j`8z!JwYB?;NBfyY^z`)o{Zjn*Y1r9l^YQX}ddm4=V2_TNgi;OnPEP#%0OaK4 zbacsIU%dVOaWA7U`anSVHa1>f!S^sQ1pzMr0D1hDWy#3^`hA7#=imFXXM@Otsi~>p z;A$(CCHOizmzk*S_48)CX7}dp=g-ge!ov2}*Y-q2?(pvRb#?ejNwe9raB#%d+kE-$ z079-pA^8LV00000EC2ui01yBR000Jpz=TkE(inY$q%u)yvOG|U$zmZ8G6JTk(~3k2 z4iFhbdcSh@gVtvZd#003=tu-+(Vym_VDgS_JY{{BRK z#{dC{7+JJus@d}L@_Du4_4V}tNweYM;Z2p&#oX?Y!Q=J%`%;3+HgmrK6qrSn%`J4o zTAtQNjn7k_)YH_|01A&Cbio{b#432i057Wh`}<*!&`WE;M}o<3uiYPj#+}LNC4<8N zRi#s**d+4_rI1Ud8VwT%$LkG9 zm4tY8nRFDDE~G&S9B8pp0*6unx)cKn6nJnh2qh&xJ6#P1AvOyE1uh;Z9fVyYFDfDf zizyQd1(H1w5FQL6m=Q226ofb%8vqavGYlIG84o^$6$T?A3_1?K8U!AL79M3a8Uq*u Y0KWo4EDInq86Y4F3j_o$A0I&gJ6ofk%>V!Z literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/sd.gif b/lms/askbot/skins/common/media/images/flags/sd.gif new file mode 100755 index 0000000000000000000000000000000000000000..53ae214fa16b78b4c491add45bb56f70f4339a6a GIT binary patch literal 355 zcmV-p0i6CvNk%w1VGsZd0M!5h1#HJ(<>gwuk#BF=edi-N!6ciNu?(O$XO#N$X`a(kedwNQ>O6&jt z{qFAb^Yh~3;yXJ#`}_O$=H}qw;50NePq$C|R#shMU3kfO_)}B;QBl3Uy^z0(K}10S zJpkv&$8M}|T*6#$l*FC5{(%MR9h?+zy#V#mJ^0c!5^0?raiBAOsQ@Hw?3(~Ng{wV@t_^9H00~z5)<8pxux6sb zC3&I%07L!TQTx|M_RcGNu*&}3S@+N{SedzCpS}Pvbp6~^001HU*-HQ!WBl4rd9KO! z&oceN000wR_ts18p#W2swf zr~pHOA^8LV00000EC2ui01yBR000Jzz@PBvYBWry$wc+SU^>50h!qI%7K=?uN0Kq1 zp^`#$@-P4zOT}jZbaE^OuAH)^*9MNJ;|h>HDIXaF4RtgN26(1d0tj zD?NgQhLi+5EeR$IXOV0i5eErYSWN=oisUF9Ss@MUJ~LPFcm&)v_@;nUOTF){LZc=^lA?&Rb7yuAGG?)~!e@L^%` z=jZDQ3G?ac_3P{FK|$z6Md(;q?O0g*`}_F#`1SSm_V)JY008;<`SbJh`uh6!_xJSl z^z!oZA^8LV00000EC2ui01yBR000Jwz(~#|gcu=>WTV2&ohS?dgCG!qSRUGhBgs)x ziPXgez=SfElBUyL6)uU>2@^xBKQak~p(0!+baoma9}XK400{|KSz8@43Jx$1Vk+U%X literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/sh.gif b/lms/askbot/skins/common/media/images/flags/sh.gif new file mode 100755 index 0000000000000000000000000000000000000000..dcc7f3bcffadfaf36ba17812e55f66c0fd10b466 GIT binary patch literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h_N1uI(B(o`u8Et=MqRQrOsen)40MCV002uoQmg%E zX3wuVOJTLTqDpFg!TAVRxPV;gJFGlwVI~X=wWJAX}C5{ufeNT&#^$$v_ar?f;Ug7psm@myx(P! zWdHy(A^8LV00000EC2ui01yBR000J%K-8gNz!YRF(PnvRUIc(ZBoY|$9F7SolL;XV z5RXD3rdbFAK|*3dU;q#@egr`|)&KyA^78WT?(X_qTl{2XO;pbGvA6pA`b1CB_xJbtQd3)F)A~I< z_V)JmJ3I6M0H-Hi^E5P~9aZrS4Xrh3_V@fiOw9lQw=O)%;Q#>0Z|2P=x>$^&uhg?)LaJG~nR$FF?&d0028l&mS(t0};cjWSy2-qo!Y)jgsTt008y% z_5c6>A^8LV00000EC2ui01yBR000JuK%YoL4$SBGv IJgwv0xa;FBE9*^5?Ot5H007+=6wLqt>r_(O008MkL-O+Sq$r8H8S8KAKx4qwEzI+G%}a&g)Y3x25QbD!hlDJJ;%`1$$yu>b)6{{G_A^8LV00000EC2ui01yBR000J+K%cOO_*IUTgL1<384SHfuU06)29OoSwQzVEFmNnFct&>I;*X(EH(-}2Ut4`IvFn*G%YA0 W3NpY46Bhss8xhtKBqTiBK>$0|z?fYC literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/sk.gif b/lms/askbot/skins/common/media/images/flags/sk.gif new file mode 100755 index 0000000000000000000000000000000000000000..1b3f22baf9e1af04495b4044dc6b7082552f9f04 GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h`uh6xD=YPOdZqvX{D+0t!`l4v^Zot(_3Z9SW7g^b z0Q5IE_(n!VT+#pmrFx3pcYD)3Sk(MvVrF*P?c?P085#OpTj6_*S##Zknd|h6koi(m zRc+XWli>j%%lG&9@&EwPLR!iyM)3^|P-oZu-rnH=0Ew95{q5}bo}$h+P+f4<@N0AS zkd^rF@P>86_y7RMBR}x1v*+F4{msnghLqs5!}93rthes`;^B~*;cITr_*h!q008~< z_5c6>A^8LV00000EC2ui01yBR000JtK%Y=(D7st-#O+3*_GVcXs8?y!r_n-4Gk-Fc4=#Te}NH$bp|bk^45 zii+iD;b=58%TiL+K0eR@0GIRg^8ma6dU@StW!5@6&j0|30G$A!pz2=UUR>K;EiKXe z`}++Iz&EA^8LV00000EC2ui01yBR000Jvz@Jcf8yPJ~3t{;~I1vDVMq@A>4l4($+36fq z*;*vB3j}JYfb4S7K_IqV^zksnEP{c)*J~*h3kwW9K0F(F1AKmff`lT5d5V95gFYf6 zJ~S*T92^uBFC-ZmI5QeZm$h@{>+^E9`isQ<0BQGNtM+BD z`T6tyd%OBwsPt;F_y8o|RipCt_4NQOzN}z?zWa{2fmx~eYOK=n z`TtdoNKc~mezW1D%+i#`_hp^acDelkQ}0NV)r7$OjkmFi!1VU^_V@Sq{r&y%_y7L> z{{R2~A^8LV00000EC2ui01yBR000Jzz*cWaDj7}4g0j=;{eHeEkN2o<7K>dID&=uD z*Q{f8YI^(6iMbM-wv`};>!xl~57L0G(5cgT0(005WKJoorCRkl0k*Z}1EMqs~T@AfLO-Z1$1G@jH!!{k8x@@4$=Y5V$M{rzqD_cn3Gae~M%jLtP!xmeu* z004miA^8LV00000EC2ui01yBR000Jwz@Jd4Dyjg0fO0VSIi4hs2WP9@5?Dmj@sf-L z0u2cBU>y`%r#BQHKXPY?mO&bYE*jU&v}!3J4IcvxI(GyhG$(Ed?D5n;Qou76u|287HNu3mdkp7F|7T6}=P`W@kPY5ycT4$SElk KB_%%3K>$0(ftB|F literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/so.gif b/lms/askbot/skins/common/media/images/flags/so.gif new file mode 100755 index 0000000000000000000000000000000000000000..f1961694ab98384142d534dd682287dda3b37892 GIT binary patch literal 376 zcmV-;0f+uaNk%w1VGsZd0M!5hl*#@8Nai7+^!WgD_KCv# z;_diGo%D9P{RM&j*y;L4obv!~_CcBQdA$Bvrt<)H`AVPkb+`F!wEI@1@_D)WeZ2Zl zqV*7m{vnb7aJ2UTUhjIi_I$hgX|VTGqViFs_KU>*akTis-TJ=T_p;Uaki_}8+WS?f z`4fr%A^8LV00000EC2ui01yBR000J+z}Ii+YJ3(8lSU+w#9|GA6oA3pHWtQgg@Ofs zfJlVoQ7BTBgh2p#1YBXVqB5EI){qu05S34QARs#zHZ3O!1Roe>DJeM_89ERMCm{!k zH)m-)92^@Rl_LTK3ma$^1``Z27a<`d4kZI778Df+26-nPuMQ3>10oD8TsRLj2?qiK WB`P%o8ci_;1p(Fs*aO-GK>$0Av#T!v literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/sr.gif b/lms/askbot/skins/common/media/images/flags/sr.gif new file mode 100755 index 0000000000000000000000000000000000000000..0f7499ad954a455a4742c4b53c3c8c2e3f558275 GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h{bgnVP5}D-`e(st?DFjO`Str%RRD(o^B5TW%|-w+ z0Q^cy0Ac`p%6sVV>GJmT{aIT3Mn(X20A0Oa^)fU4cX#$nOZ6fm`SUsZtWrp_N%*!h z`N%jstUdKBEA>4+GNv>A008Cy0AapkRJc|5`}p-kKHmTUHK;eq*~>w$LQb_%{7+Bv zE->^rIR0*M_(4MUMo9KZL+$zT`hr0CQBe6^UiQK&`q)4Bd@xY9P*}QJaK&(S$aT}@ z)&7c%A^8LV00000EC2ui01yBR000Jtz=LpjkQgP5Wb)8xHhMhXU@)5ONV>pGz~z>{ zg~DU}@P&S_Gyssv7;2Un%q9v|AO_YVfx~eq9v2rMbuW1f5i}SWIe`}lgds0_5ilGZ z8#jUo2rhLMHh48~GA1q*Eglvp1Yltg1hEdYvndi(RwOGL8Y&$fC?FsTNJ#<5#|p~J H3PAunnPZt? literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/st.gif b/lms/askbot/skins/common/media/images/flags/st.gif new file mode 100755 index 0000000000000000000000000000000000000000..4f1e6e092b35de465031930db0bd661ab5e1665e GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h>+(1NYXDigRr~u!tf@8tDgf~S0D8)J08#+;^(Ksp zB|57#OS4D$XG}AuF87sH=sZ2EN%iwBqCt&9G(Z63I zC5FqgSU4ElO6-wZMcx3wWCBs~eiaGrF&MB2Fc=Ug2_hGG5)BOlA}2Tm2?{tFhCd$? zIurvi8iWZb87&xx9}N@{adQwI9UL4QJ3lusV`dIBBO^T|Bo00XHCI_-wYClgAxa3# N%RbIN1qD7q06RBYi{tlp#qV34i@{^(4g`4a4_Vxe(w>w%R&?NpnbSvS+W;xo_4W1q{QUIv z^!@$)A^8LV00000EC2ui01yBR000Jvz@2cXP<%eE(}~0673_xJ^z5$PLO3 JD9tEA06WZouv!2B literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/sy.gif b/lms/askbot/skins/common/media/images/flags/sy.gif new file mode 100755 index 0000000000000000000000000000000000000000..dc8bd50948773d5698d49ad4a214a9847fb09d5b GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5hWMpLfMMeL6dRtpt^Z54G*4F-Zc2ZJP^Z)?t00918 zUPMGh78VvQEiIkZpY;3oG&D3mK0f*Y06IE44Gj(V_xJnz`}+F&^78WW@$u2o(WTp` z>GSJcx?cTJQTkk5jLwen`S9-U?)+n8{cCGWOH1}FEaC9s&(F{IF){czH~3Ri`Bzu@ zOicY$RQ_36At538JU#tzar^xH`1tts_4WMx{Q3F${Qv;=_V)Ah^Yrxe{r&y^{{H^} z00000A^8LV00000EC2ui01yBR000JtK%dZuE8-*)gc6ZR_ykacK}I5t6d%^AIv6{aadLEag`pTaC_exT5fcy%4KOea3=|X%Kdu7<2L~k!u(Gqfy~)bU Hy+Hsw(&wg* literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/sz.gif b/lms/askbot/skins/common/media/images/flags/sz.gif new file mode 100755 index 0000000000000000000000000000000000000000..f37aaf801198a2afc9700c33f0c71a126358ab67 GIT binary patch literal 363 zcmV-x0hInnNk%w1VGsZd0M!5hP)SKIa=JS-G|P)m+04jKi^iE37kQ1f3|ghfuCK+v zy!pv|^0!#~)RX`(j+wmEt2H#&Qvmh7WXN`P^N|9w&fx$>ou$Ot>ZUoCxzDmpOx&n- z^y}vvWU!60$?dE|gssJ`%HF0bDZg7<^}%lLu}-6#n1TQRIDEP7vQx7|K$AK;o2bX* z;NF9Bke|TT+?ruTgT&>+xd1(Px`0BOMMh>}V!~KdkBf<+owlM;QM^-3UXKTY(pY#G zq_9N7D3ciXq~*0T001yqc9~yusj-_rQfPT=jJ;2Ft~+I=VT8GruG0Vj6f#_( zdw8NeVyW?`rYlf>GFOCig^kv&x08maHejIu0AXf`y3(>idm}~m>CH-UuJFrVP;aPR zfVDtqs@>Gy^A^8LV00000EC2ui01yBR000Jyzy!yDLKy;yl5)Xh8V)Z}?$F4XOqf=oV1d{G z0L4$C=&@XpP$;5;1P-1Wz{5ZgI=t0`Mu12fItUCIA|n?rFewi+E^asl95DnKBP0$d z0s=c78YLALDg-VUBpU-eGCmU_Z7Ng}vMDgWn^XPTyO-%p+miX?J_wA48NJ?dc&%gix@ZxCd zMo8@7TkYa*6+^k?Eic>2A?eLf=srK{&{XT*SMTVa!K(nxmjLERNb%Wh04=j+gw*um zi08WiA^8LV00000EC2ui01yBR000J!Kp14mlPQjh-($IiB%X)c>4ZZ009e4oIgo%p z6bgy7E44BK0asE1lL(H*nU>}yygkp`F#~&-k$9M literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/tf.gif b/lms/askbot/skins/common/media/images/flags/tf.gif new file mode 100755 index 0000000000000000000000000000000000000000..51a43250963e5862d4cbf19d34a4cbb53cfb3b7b GIT binary patch literal 365 zcmV-z0h0blNk%w1VGsZd0M!5h001pZU8DVNZ2$pje2KbYajtcNv-vqX000$MWuyQA zSN#0^Phg}#QkuNN)^2>YiIv1WPMJ1Il|E3Ic7(Y4K|ufjMvR!oMOdHvM@Lv_sQdr` zI!%}SOiW#EtT9BAMOK~SF!)>sd0a|`}_NDe6vbhpg~idEkTe^V4~jO=Tc*&YI(B&33vYf z{{8*^A^8LV00000EC2ui01yBR000Jxz@E_e`)!T`h0?<8T`s<;U^+XESST65Ns0bS zoeU#@c||l^$c*?4SID=BWCs{P9>2vRQ#oL691>-#1P%=opahkdnGGB!Ar3kQ2nrN4H9V6kE(tj+Aru_B3QSA@ L%m4__&_Mt@20fAt literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/tg.gif b/lms/askbot/skins/common/media/images/flags/tg.gif new file mode 100755 index 0000000000000000000000000000000000000000..ca6b4e7744dd89a6bc12c61900830fd7054c6554 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h0Dk~jxmMc47642D^2ro9r#5J^H0#z#ZN_We$SKvh z1^_Vt{aagHt0hmR8T(UH`bkOte0=iOL;iJk+L8d~%`E_80QS)<{@mQ|(KO@FI{Ml@ z``SeQwYL9-g-WnS9hn^fasXnzU@@aE_0A*s)iq(TFFUb2>)d9meE|F2N#~saMXo|n zv`+re&_Ap@`{PF{pez2HoBPE8{N!r=R=!E6)`2{7IR*wd4GlR1J|18X5D+H?BQZQ6AO#C~ zZj2B*CWQ{41_LuRDjXXdb9E#HtT+@3CgjLrD? z`1bbp?EnCCbHrO*xc`EI{B(5u{QUZAYCAitgoVla`ug@&Rbpehnw!=D0DAxcF696K z_gGjgETMOJ#PUT&N=mXpMX`H)#`N^`Mn3S?zx3nKxuvndD=H4<1_92Nz?A0IqRO~o6>FfcsJ GK>#~&ADH3* literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/tj.gif b/lms/askbot/skins/common/media/images/flags/tj.gif new file mode 100755 index 0000000000000000000000000000000000000000..2fe38d4ab9213a814453896b2edaa13d69751c4a GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h_u-uK^77qdV?>HXQj=5ENlDQ(G~a7$J7MMc=y z*!ktE^wo6Ybaedu{MuGlEqW~$Y!=;ITmTvX_St@!008;<`7(VnK88ND007xiQltO? z4Q37a-i@sQ0K5PI_xJbu`ufw;)Arw&*G*0K(P18O9$lJU`10Lkpk(>!wmO44SeIDz z)_6;fOZCrPBXuLrEG+ligEfFPE_^QZ_4U&{J^TCn_V)Jk^Yi`v{q*$o{{H^I008y% z^#A|>A^8LV00000EC2ui01yBR000Jtz@D)8DQ1oy&t_TaA)bxs;UEx59vV^;A?adC ziG6m&a23ORXuHz5Eca|}BhgiIU*A&0~jkaG!QT*5fL05G(W2+ECd8D1Ff$Y5D>Z(Kgr6= H%RvA;T1}p6 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/tk.gif b/lms/askbot/skins/common/media/images/flags/tk.gif new file mode 100755 index 0000000000000000000000000000000000000000..3d3a727fde64fe5afc971a13eb412b6adfd2de77 GIT binary patch literal 372 zcmV-)0gL`eNk%w1VGsZd0M!5hN`-D*b=Cj?i+Ymfv9e^Ks+7aKP_MM8m!g|0N64?R zUCYB)=IQr2RLcMWrT_qYR&LfzWz>w7qG^1}WO~}ArDQl%(d*n!it#^at|=Q zZiC(|ShZE6J+iZYf{ukkUC;mkv==zTQfkCSU%jWNdN54M-O^Zli@vzFe|m$Bf05cC zKgQqLd|RYYmX>1A$Y06EdDhKt*wAI;+=h{!fsvezOXSZ9d5~1|~QjkCxAr=?}AQdfnA{-Di2t6bg7A1rRBMkzH z5h^z*7#1fTFFY`n510}=F*ybm9RMBx8z-d{AtWXXHUtV4t{brr4io_p69qIE7djXK S4JQe}OH2X})YH_|K>$0GgO)@9 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/tl.gif b/lms/askbot/skins/common/media/images/flags/tl.gif new file mode 100755 index 0000000000000000000000000000000000000000..df22d5823900f670fcccfd571052d18619ac8441 GIT binary patch literal 360 zcmZ?wbhEHb6kyP#$Sy@>RA3l7_!0_GMJ0c?LPjd1n28O@c+234TJ_!r|1d5xP{p_&*rmg)+Pw%_F z{*R!bpJ8E3mMs3r%Ue}d<>lq|)5i7z(7Ml|KR4UVotE^o%=&L|@UQzpKYuy=d}{sO z%3#)_`2U;?{~D`4UAO<47Fk&6`p3uTUu)Fn)iu9jVtjmp{>1q7PmBEd)8_B4n!7;T z89+esCkvR?0g)g-F|f5d96If;6W2FcrTOFLj|puWtx6N`*vN7iKMA@Tq#3o);1Gk! zt$2+^+MGp?KS>5w{;})xP+D+G#6U)hgPFUGuU&~<+gh@*xuvYa!kAGsNW&kJvCUQg1b!{qiMqQS3Jb+e7ief^9TsnVMQIBd(jAkHiJ^(TR z(sE@CVl9uho*Qa9Vwrf(YFx==Uu2qj%x!0^001v`OLnM=#amRnCmGavY_-n5b*G3S zZa=@&$l{@y!Pd!uu9CN4UekYdMu%TVh+)lTQ_*Qug|L;uV_;{VecYOo-imP5g?<1z z00000A^8LV00000EC2ui01yBR000JzK%XyF3Tz&o$6@(v{(J@k;l+wEU>?vUfyq1# z5grMLF;p6p3&K?SsvI25s^)5p5DN+Iw>gn=A{h(-03H?#5G@vbEF3Z+H5L>jhlw8- zKMx8b11ORR1&A#l0tlH5Ap Nvp)evPSMdp06X`pgsA`k literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/tn.gif b/lms/askbot/skins/common/media/images/flags/tn.gif new file mode 100755 index 0000000000000000000000000000000000000000..917d4288c9424fb3a01546189e8765091127b7c9 GIT binary patch literal 375 zcmV--0f_!bNk%w1VGsZd0M!5h^fNQ{JUsPWT=Xq1{dRWt>+9?Q0Q3L=|9X1*Qc~pr z0R6SK_S@U{OH1`5Bl@wi^BNlVw6yxGtNvYG_C!SbJw5tFMDi08`GbS`R8{_Qa{X>@ z`fhIV4GsHYVfp|7{#jZ4YHIvuX8K)S`$|dR008_?Px|TU^sB4=R8;miH~8o0^Ho*( zy}kXx!S`rq{Iat5WMuTAq4(C-{omjDSXlOaeEFQ5_>`0RcX#~n@BLF#`FMEU008{} z0RI30A^8LV00000EC2ui01yBR000J*z@PBvEBZd4gYsZ7{18wAL9+>oJfm8s;Y3U( zAQw%id+=0%0rv@BEC>ls3-=m0C<-3|lzQJz7#IvO4h{i%8apO12`4!e5d{Jc5Qjb+ zCL|9WH!C+b3<3}rDheMVBo-19F#!S*C@dEj03{zH78Ml_GX(`Q0v8<}10@GoS_usl V6ai>y13gPk)C$%mB|X|f06P+8o0b3o literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/to.gif b/lms/askbot/skins/common/media/images/flags/to.gif new file mode 100755 index 0000000000000000000000000000000000000000..d7ed4d11641ae1c1c9001dddc7653973045b6c66 GIT binary patch literal 367 zcmZ?wbhEHb6ky>fLOY4)K-jAT5ud1p)Lqh-N z<$Y05_{huq&Bf)rm)AQ6hOc&Z&lnhfCnkQevifdd@YBlbmy62}GqYa|4Br?SJ~1%7 z0?N9%eUX>{VPf)GQu0q$)}OSrU$L=|fZ|@BKW%J38yVeaVED_x@XOx*|NsAg{`~n1 zM1TMOtEu_@`}h0zAK$-!|L@|(pAiv2vCpQaKdo)Pn3?@cNciLJ^B1TvIQZYce|H%e zK7RbD_>+YJ1av?I$WIJxJqP9oNK9U8B-xv`xzV9c`%w3V)w)iLPIk0$6fCf0Sn%{x zDVLg0>W3fS(so96m->bCaJE0W{(5JbjsdHARt1lskS4bcV_I`7r<{UFCpV*Ny4ZwC zOcpAViZist;M4#va<950ObGx_e)FmLqqyT zM*dx0{(5@(JU#Lg6ZbJO{&sf!etz;UF7zNE`B72*o}T$sRr+CJ{&8~sZf@}n4f;Sp z^(7_x00913S@`7S`8zuLadGn*8T@K${AOnQU0w7aANV&n^D;8v008zZEd1o;_x1Jn zx3~T2>G@b#`=X-vjEwX)Hu%`s^z&1=FloSdBO001^NHuL}h<^cioeSP;!OZ6ioDk>^tV`KjF^ZP_ZT3TBBo16KQlm2vd zQ&Us+EG+!)?)5!A_ck^}L`3*fQWzN-`Bql);^Oy3Mf+i4`Tzj@SXlgKX5Ih*`dwX2 zOicSqN&HVw{OjxS-rnQE!T%*C_Li3YQ&ax6wf=c|{pIEQ?d|mA;@i8s^@fK100930 z00000A^8LV00000EC2ui01yBR000J-K-lQ_8{twt6zaizG#WDtV}M{-Yys7YMG{FG zKARG4D<~>zYaIqU7$YMsF$OCSTPa-< XCNu;KlNBY$Oi$Jj5HdtWJ3#FMOnWx-8hvD?$HWv97lqg?>qvO8n2**KTU!;U!T=C}U-{`~y>{r&xE00960 z{{R30A^8LV00000EC2ui01yBR000Jtz@D%N0$Glhi}FHC^hQvP20;Y?WUfab;q&Rf zJl;-1o)8F=miIuiK_H&WhBLrK7z&=lQ8K_Q3v?Ja1t@t83_Cjq3xRbZA9o!B0uCt# zfPym-A}|9T5-B+`a)OW|5e1(TV`XP&4Y9E&7gi4sCMGN@0W~-jz&}d~#2FbYFBU(` H%RvA;*H)jd literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/tw.gif b/lms/askbot/skins/common/media/images/flags/tw.gif new file mode 100755 index 0000000000000000000000000000000000000000..cacfd9b7aacab39f8975b3567d65ab0ac0e62813 GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5hT!hm2HZ}K4OZjVVgrwg97pwU^Jz|N}_C!RuxaX3R z+42(;bClWlEiLvcD)KHa_)=2!B_;a+0Qpu|03onbeb4kDAby|S@eK`4c+2`gK<)ql z^*%o4008@8Ve~pW_b@Q~MMd@i0P+9;>Hq-Z008;<{h68F^dBGd85#U$X8K)S`8qmR zfzkU)N%Jx?-v9u8o!jg|OYt^3?MF~|nc4IrvLjctHMir)KbL%AFn40IVgYk3wN9R)E505}yH88dhhC@CKu z5(7LgAsQ@&lqm}~Ndugopp^>?FEA1+ou3VPsu&m#Fd|zMT>=OQ93M9?4-Y;}PERBx N9UUblFh0^j06S#9jNSkM literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/tz.gif b/lms/askbot/skins/common/media/images/flags/tz.gif new file mode 100755 index 0000000000000000000000000000000000000000..82b52ca29807dcb6dfcc632cb22c853b52f41fd5 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hH>mW~=twm*GgMGB0EGY-n(~~{hJ}v++UjFly<5V? zGv((-l#VL^EZzV~%ve}h(#}Hwc>n-7;(Ez?&fNe~wNi4%b5yxgZpTgG-b62?@`{K< z4wmr%MCfkBZd6o4RI$8w$akH|0C{vt=I~w5=1NXZPUY=4K&|$_y#TwnJ(Sm4U%>#R z-b=3FN5SD+laE&K?OZ=UJoWQQ)zW5VWMWgT08zM1*yTZKziEAYJTs!-;OJm(ZLC>U;-H(TEIYv2%*H~(po?UXafo*1`Y%kZg3lCbT|PZ01^=%eGngK zf+q$A1(7}oGmB>oI4>Za8~_azG?xN`0R}s$92yNjH4hIkJS06RC;$K&#J5Zb6gCbW M9TLtB&=NraJ0=2<1^@s6 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ua.gif b/lms/askbot/skins/common/media/images/flags/ua.gif new file mode 100755 index 0000000000000000000000000000000000000000..5d6cd83f597ea6681e2afe62af7745ce3f6ca463 GIT binary patch literal 360 zcmV-u0hj(qNk%w1VGsZd0M!5h{QPM7`C0160QB@60C@aYxYzmlJl?hdD5Lg9vioVm z{QLY%`};)m^E6Sn{NlX;a>o7uX!Y{)6MD)207L0ZveWnXMD_JMYr)=3v-k4yE?vI< z^3?!hz1%{t`SI}$`rZKc+5kMR`2d3cOSb$stN8f%H23!}_Vz0E^(0if{aL*JF{$?e zSMNTn&v3-x`1npkuF)W$^Z;G)E~obZk;jVA=Rd9W{ow#%zWV@AnRm$kTDtn~&j47v z{s4vlA^8LV00000EC2ui01yBR000Jsz@P9p8WE0!h;r6yjV90?1fr#}mt*h$* literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ug.gif b/lms/askbot/skins/common/media/images/flags/ug.gif new file mode 100755 index 0000000000000000000000000000000000000000..58b731ad5c6cad47c4f3fdea21763c6537010a5a GIT binary patch literal 359 zcmV-t0hsTZ9Ldc$_uEAD^(*~SQiX+mt4&QrL`0l3 zGwJ{U^I|pg^BMNoHu(4V#K~8fCvvH7Y_<0hzdd<35^L84=NJ^lmZDq z05Tq%0|OAB8lf5xE;BI!8yhJFtPQRsBLycJ9UT-DI5;7@480~MJ{iIb#Kk?wKFK~o F06WatnQZ_7 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/um.gif b/lms/askbot/skins/common/media/images/flags/um.gif new file mode 100755 index 0000000000000000000000000000000000000000..3b4c84839342c61a9e9b079291cb4b021824019f GIT binary patch literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5hkhb2ayyfgnOtAm})YR1Z`T5EK0NdKzxytP7LqnAS z0PXGV={h=h008FZ=2U#n*E%}(_V)1b@a|n*^!4@I0RgAGged` z<}EGM003Em)7m2=;wUJ5wB7vt{G+(wrMcqs^YdVp+5Z0ie}8|_(9rL1Z}Oj?(HgwPoCbr1xqqpGZDk@KR$ya{R?(XjL^78EL z>|2A?A^8LV00000EC2ui01yBR000J%z@PBv**zY*3#h{Ebbcp9RCFu2A`wcjCqexX ztyU~xA&n*zL4qMLd_}Q>B{BkVc|Ofz=0OC=W&j~-3>h2=13MxC1tb&z5*T z4=-gnf*2+Y7aSlT5DF;;StSw@lN$~W2L~`0D=KMghB-DLEG!TWGO2e9c^fnb1Sv2~ R6;2%n&;tVs3Juml06QBhscHZK literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/us.gif b/lms/askbot/skins/common/media/images/flags/us.gif new file mode 100755 index 0000000000000000000000000000000000000000..8f198f73a777a6af8d3c8e0b9b2ce48168a216dd GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5hV`H}Z`ug_v_3`oX{6FMd)+t~b6RQz~i+ha=mD=V72{QPBRx?@WGIy&a&mbT%E8IW!TtSPICuH}{{8#^`tkAa18?Ei{{8*o z++%0NA^8LV00000EC2ui01yBR000Jzz@PA!N&$|l2Vx0<{BkH=DIlQ+0->w`_Cs+v zo`Ju(0i zIDb4K9W8?qA0G<`A^`#$8+MVC77acxDm7+kX%V0WxGEYA0Wn&rsXHq)79ulC2u)2S N7!(u-2O82r06XTKt3Ch# literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/uy.gif b/lms/askbot/skins/common/media/images/flags/uy.gif new file mode 100755 index 0000000000000000000000000000000000000000..12848c74131363a1a78d279e0df008422b1707fe GIT binary patch literal 373 zcmV-*0gC=dNk%w1VGsZd0M!5h@%H;fi__%fSEy~E0ryX58U@tnfv?(_I+q}t_4Qnix#T&7(5uVr_4MOio7(N|?EpEfD0jtmtKZ}4@0!2k z>gwrJmf57n=+oBR&ePWO^Pb4g)56Hk?(TV^#OU(!mFe&FgRg5)ut8It(x{3=C)|Cn^R8 zDg-qzb9Hxk1y?s44;Ky<6@`X~i5M6GED8Wh1F_g*4pwM4d#!!qcQlV_X0LQl(QglQgWX)=o~N zs#9y#)#_SWs;*me^YineLtc1zyPZ5(07n2WkS>`vQk5}H003XTz0sdUUgF~Kjw3G;uVrPhOQB1;a)vsXI@#Fj+1c!~v)2uO4Y|45_4W1q{QUIv z^Z)<=A^8LV00000EC2ui01yBR000JwK$NBv)N2g z55eGigLPuDf_n42)IJ{$$6^VMOeY0P^?M!uJv}ZA3=IGPJU%=XEr5cAhKN2OivkCM zgN28QARs;|ZgnGfc`Pghs3$)p5)=?N86^n`2(>yoC94t<5f~UW6t1wbxg-n63jxXj KKh4fRK>$0~?46DP literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/va.gif b/lms/askbot/skins/common/media/images/flags/va.gif new file mode 100755 index 0000000000000000000000000000000000000000..2bd74468d6b328a625c2c3a44f46dee979ec4b97 GIT binary patch literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h`uh6&>2vnuTm0>e`|5i3<6-H{0{iTR`si-*^77r?-Sy;d*4Eb3)6(nbtn}eki6e!)2#sX_4N1m_xa~( z`}*d=)eem$>`1bABvjFSO z2hY#XA^8LV00000EC2ui01yBR000J#K$XGgGkA`!O2uM9IDMt)U~m|q09e3Bt~bosFgUFR4!2l23cLIxVa!9Aw3uv PA|fvk5D^hS)Ik6{@a)B^ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/vc.gif b/lms/askbot/skins/common/media/images/flags/vc.gif new file mode 100755 index 0000000000000000000000000000000000000000..48213816af17a104ca3d031312588ff1ec97afc9 GIT binary patch literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5h<+T9!_k92)04bs=7nv8M*+f@Y(Rq2~>hd=H{8IAs zTTHS{089Y!^dz?4HpJ#eOR_ES@J;{#v|wP=X1y~pr7`sM9q#fd=I$2!{A2t3MU~Gd z_V`Ed??(I909LnE-|so}_C)>tZ~fZiZsGOyJ7i?uJ*qu|g5K=G0Qvbm4wMe~ z_%#3k#{dA4_Rs+I@l$)qMrLQ$x7{S@@E=65LZjC@?Db3Z^kDb*E{4l1{QOLw(vPW{0^y9Kt#=06`#+-d6>;| zi3CrhSs^L|8+SHQByb!KqJuGP8#FZp1Qh}jB?crND=iQZ4Hg&#ETR%8B&RJpJsTFTEU}{}Y;GJOAtokgXrmG@ QFDlL|0MP&f)B-^OJ8QU=H2?qr literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ve.gif b/lms/askbot/skins/common/media/images/flags/ve.gif new file mode 100755 index 0000000000000000000000000000000000000000..19ce6c1466f493ff8702f776364295095e8f6f2a GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h=;-$J0s{U0cl`WmJUr7F7|H$S0Q4v*`BYTv008{_ zTlhvs`};-f!2lv6%=Y#wa&qIDndM4K+Vd6`{NDhECxQ3(PE}Ri`(a{T2v_<&J?Ogt znn#xPJ3I2$0Q502j53Gv^7#M&jY5_H_S*or)BybaO!@ge`1m&f0KWbGRHdcr_xCa3 z008~{QMuY_eHnPH(uwZR0O8{CgM{9$YN{kh863OF{$woXuOh6r26)05&!b4g?~2dwnYeHxV<01%`Nh0E;(* zjs*obA{jLt96386AQcrbs4yTt0T>G!9UmVD2NSjv0Us@`7zn-#z#Xx&2R{MF3CYSW K%q>69K>$0TIGSMq literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/vg.gif b/lms/askbot/skins/common/media/images/flags/vg.gif new file mode 100755 index 0000000000000000000000000000000000000000..1fc0f96eed0e8e31729bd61b0dafaafd9e2c76ea GIT binary patch literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5hv2~Z&tGEgRk^lftJ3OnlUwTx6Q{u$XEiI(VevkkF zGOEL%N=ve1W4!Y{Hb9*F{CK-*|gnUAlM>PJ3Ra zQc|_7tXl7(omPZrGc~4?bEzUCpn;xH001DLzMfcEx#f|R*P5w3Jg?<~fnSSWex`4n zmS&=zZ-88%gAql>zg<5+t~ffW%@r4ygT39(-^jveQ&YZDNvvFvN#bZ{VO6h+dcDrEeN++Tb~mIuCKQa OP0b3=3MA6fK>#~4#*32x literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/vi.gif b/lms/askbot/skins/common/media/images/flags/vi.gif new file mode 100755 index 0000000000000000000000000000000000000000..66f9e746b6aedf561e504119ba5827873e95414b GIT binary patch literal 376 zcmV-;0f+uaNk%w1VGsZd0M!5hy}ix*`QYQ*DC_I%kJ8lA zu=VVWcW~0y*4KiTN%-~CE2lM>r2|&>G$uO z{QUH*s^DBk+3d~G_xJhG&(HAaYxnl?>(w6k^1$rhM)K@)=;-H*f8e~%ro6nm?(Xi+ z&MV&AUhe2I=jYAIzf$h**5u`u*46Ut<)i%ezGP6{lCw>moZY{_ZT0I`%gf91^78!r z{PFSeA^8LV00000EC2ui01yBR000J+z@JdaDzXMB6k!?pQ33(m!nfJ@D5b|^QE-Yb z3kv6y;RHk&h)c)vEi9H@YBFIIUM&c$!2l^P7#R#V9v%<^E;Sth3^Wx!J|ZIr9|sT$ zIU0)z5)vQ|7zUIFCKU+;i){u55I8e2I0ywK8a+KB13s%PDku;n2stZ4Jv=C@s~{jF WG7=RPw#7#~Vbius< literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/vn.gif b/lms/askbot/skins/common/media/images/flags/vn.gif new file mode 100755 index 0000000000000000000000000000000000000000..f1e20c9412cd1d7b33b1daf3b2c178896dc8b1e3 GIT binary patch literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5h^*lW6008s=0RMV=Z$Q(|r8}|tomt>1Gt7B0Re2K6Fw*Y-)IWQI#0Cy89EhP>g9}zJa7Aqu$J`^n` z8yPPVGc}PU4JQN~A($C15i~qIk_`Xkh5lViL;|4Z{t5e0n`vI=`<^?c9IDRa7k-0NcGH0H6RuK|iOTd$6W&mU?-! zOiSd=P_uOaRjpM3Jpk3mb|N4h&A)S7bXb)D0LPU8)vEyM(@)TMcNoVRGchg`#uNPj z00000A^8LV00000EC2ui01yBR000JxKojm~^BIpmfKvHWkytv8v_M5zHGp5J;<=O% z8VF=S#$dIb%H+}#lLr_KBrBUR46a8i<>2usGbukmG#xn)1_A;Kj2jy#0xv%+BXnFaf>|z!4DyxIZ^PF(}Fj L%n1w6&p`k?=S6^; literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/wales.gif b/lms/askbot/skins/common/media/images/flags/wales.gif new file mode 100755 index 0000000000000000000000000000000000000000..901d17507dfa6428fee33367dfa321144dcfcece GIT binary patch literal 372 zcmV-)0gL`eNk%w1VGsZd0M!5h>W+{~y+8f^{g1|Rx0K-U-R{uKzCkbU z_V)7G*vVT_dvPE6`1pF2JmiFbAX}WbY>sxB#C-6A(&>Vx9`KL0eoJ z0!9a7i!BnMtsrrUg&Yiss6i5?1vSA;vYJ64A1xyQ9w0j^4<`&49UXBU4+I%1DLw-V z5(Eqp5e^O;B^o9-7?uhd2N66I8xtllBPa!>mjO94HykV^8Yns_9JB*93knJ^2RJev SIUK$0m_LeLF literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/wf.gif b/lms/askbot/skins/common/media/images/flags/wf.gif new file mode 100755 index 0000000000000000000000000000000000000000..eaa954b13694ab9e3aa3f77ed03e372f47abd722 GIT binary patch literal 377 zcmV-<0fzoZNk%w1VGsZd0M!5h&PhqoR8+<_HQRP}!7eW1m6hRjw5!6hZfK0Vrvjcot`l>h*P004CW0M%h( zi~s=2L`1g_56L<@oB#mVW@gMmL3{uJ+HY^zYHHJ6UC~ZX!!|aLcO;jB`)Sd~r&_Kx8K1!xK#3pNWCBR3HR1_nAiHUcgS6c#Nx zBM>Aw00#^o0t74)76dOS8W1I&p8_>05(_OaGbD|`4_aIa038Sw X5-2MK!%I#a)EOBg8rc^Y8bJU%oBE4P literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/ws.gif b/lms/askbot/skins/common/media/images/flags/ws.gif new file mode 100755 index 0000000000000000000000000000000000000000..a51f939ede562216b0b37b393dcb489ed82968bb GIT binary patch literal 365 zcmV-z0h0blNk%w1VGsZd0M!5h_e)FtZEa>|qxn2NNlBFUL`1#4*76e*_bn}YdarbA zqV_5(@-8m;Qd0FLCHnvX`Bqo-ARzG#4FCW$`anSL008wqKIQ-b`(a^OS)BAbI`=Rz z`$a`eL5KDL08vMZ@&Eue^dBGiHa7S)H1io5{AOnQU0vb;0QovPoSnn_ zN=X0!Cr3Mj^D;8u008thHm$JGc6PAP(c*D&sd;gy{7+AtqssF&H9|rNfACB_)6>)b zz`*{@%=M?I_^+?*JS?uRuJrZw_IPddab@*&Y4P##wY9alxVZO(dHnqR^z`)g_4V%n z00000A^8LV00000EC2ui01yBR000JoK%dZ;DH=6M&EeqlcyuF)gl4ND5GjL$>A7Z6 zphjcGV8pf}SF3fwU`VABOrdy{Ouf&Cv)hFR0|W#GJv==V6nlMtfrEtEGj2CI139h2?+qF8yg7~KM(>I76BC%549b)tgR3cyaK+k0kXM2#Kp$PK>#~Y Covxz* literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/yt.gif b/lms/askbot/skins/common/media/images/flags/yt.gif new file mode 100755 index 0000000000000000000000000000000000000000..a2267c0546ff372e5c0717dc7c79518a2e6c7cce GIT binary patch literal 382 zcmV-^0fGKUNk%w1VGsZd0M!5hN=dQI%E{&B<^JgC);3%v*F7z?w%N6`wAR(t?(XjVva@bK{F;^OD$=jrF?_44w&xw`uM`}+3w z^6&5S^Yi|{zx4F<;o{-`_xIb`>SAQR@9*%~*VpLl>iGEh`uX_%`1j_muE@v7-B3cn zy}HE5;qK(*Vp_BO`S`A^t?KFN>FDP9@9**P@!CQ!^Y8Kg{{Hgv^7i)j-QC^K&(HPs z_5c6>A^8LV00000EC2ui01yBR000J?K%WqU!EqFd*XuH~2tdByZxHc#3fMxVc9QU- zxkV_HifvGv+HU9d<#Gsw#?`2QOoGoY;Z6hsHX{Io3N0BcJ|!JF2OJV4Fd`xVGc*<% z9}hMQJrfc(ECdV$GbRoW9S55l6FLekHw+9FATkiCBnvw$I|?cWz!ftNGdevG8X6WB c5*={}Iy^iS#tKbOJS7hY2LU|?J>fwBJ6lxJZ~y=R literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/za.gif b/lms/askbot/skins/common/media/images/flags/za.gif new file mode 100755 index 0000000000000000000000000000000000000000..ede52589199b0360eb5d92c3aa174dd9b4eda473 GIT binary patch literal 363 zcmV-x0hInnNk%w1VGsZd0M!5hF)_^b006PF<;vvPpxUzcF*1+H0QR@I0052rWoA>f zX{nC@YQJ{?X8`#~NcpCw=<04pMbkU0T}ZKL6cofkuVd!hTKQL3laW?hxOaNUkaBW! z=I!PinK(0|O8_|l0EH1asaij)VRO4@DWOa=rdQd~%iPpd$-#c2o?ddgU1ML%_`SbN zzjys_a44KW>GFq!yIRD9Dg=(mWWb=&5I7H)D?zi00;(L8Us2Jz!9{=2n`J#0yj4Z J%+1b006TO7llA}r literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/flags/zm.gif b/lms/askbot/skins/common/media/images/flags/zm.gif new file mode 100755 index 0000000000000000000000000000000000000000..b2851d2b405c7ffe20eadff1b0bccbb7fe8b62e3 GIT binary patch literal 358 zcmV-s0h#_sNk%w1VGsZd0M!5h12q8d85sa)0AZ|Qe7$@CSO9UhacQw>07n3Xz=QyN z09mM6ZnbVK7Z+x*X59b)mC2R!C@AMFC6309Ri;(#I5h2qJzc9^6%-K4004-?hyZf{ z?0+_7u4Cl@0C~K6QlwILxpq#XPLarw=%i(BvTfa;TRAi_=t4Y6pGlmsb?BK_fWLrh zvuo)zF7Aj!c&=#iibv>(IcTqFdAWIBu3d}7i{vC6S+r(QqEP3IKjWfbC?X(Ns8<7l z0{{R3A^8LV00000EC2ui01yBR000JqK%da3C~h`_WMPT$L7t<@#HLB8NITOC;A9a# zAp@i3z}0jzSQGLMj~$)Mf|8p76eF;h9Ir%pJTV>$6K-S!axQ;7FCH5G^(%_TIQaKBkgjm`_4Vd*NT%Co08;=cC@9!j zI{p1s{QLW%S4PJ=83BXlXiPMy_R-c=~E;drwE0IS|{@$n7s@9&mlPWSgoJ3Ku1){pJQz1QK_^1WV( z003VA0P?x1qSjyW@A1!4Hs9R<+)N^;rAxq3MCs`O@AB}RTvqYy=#=S< z9u8+f4xDa0TB@-xB)W-I0RP{6BNP%#KZtT7E1^c L%M#Ad5Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipb} z1`0Te$~fl$00FZ}L_t(2&!v$uiyA=`$KRXXVHZ!qMORR6L3S%y1y8Q976R#P!d;zk zpu4?a!j#8>u}P64g-uAx3&9Vtuv>+It%b@cYId38j+ra&Og!<@%T6PLHNhY`)0Fwk;!Brj$_F= z2hKU>^ZCT2l;v`HUaeL?tBBY)O|v|mP9c>_-Rrup zP9_u3G!1OqMoQ`ZcDq%x*{r=@uluSH;!_kwU&1g<(&_YVyWIvUB~VI1(=-^5$7+%! zuMqJB5r3Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipb} z1_=O(<;!SGu3>lMEqv97#7Y6X5~F%6cJS8Hby(8dDQB&S74ttW zA{6X*J!7AYzPSfag;7slpsK#t)v6z4(2T}g-`>qi^4$CN7YmOziVHuC!SK`mvD=V- z3!WZ=R69^B-jU79`Wc}R6goC!Y97VT$zDxsFzTxu@Y}>f0lv#DB#k`8vz~w06jN71 z+kX0A_5T2|2e1e7U4Z?+0J+5ugyY;uo+nTMJTSxzqHO`Mx#p}sn9-R1&bH(?zB}EX YpD4ec72Ga}h5!Hn07*qoM6N<$f&)YOMF0Q* literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/gray-up-arrow-h18px.png b/lms/askbot/skins/common/media/images/gray-up-arrow-h18px.png new file mode 100755 index 0000000000000000000000000000000000000000..78767445ec3e38fab840f8177c249e38379abb06 GIT binary patch literal 383 zcmV-_0f7FAP)Bj>^LJ3~~S>i&IO88=qln{V-q zOM40!3-puuch|@DVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5X*aCb)TzBu@{r~^}iVZzqfg(&L zL4Lvi8J=!8@B;EgJY5_^DsCku9AK6xWM-3k!OUU6z#qV1KKathOF(%BPgg&ebxsLQ E0Ke)mAOHXW literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/indicator.gif b/lms/askbot/skins/common/media/images/indicator.gif new file mode 100755 index 0000000000000000000000000000000000000000..1c72ebb554be018511ae972c3f2361dff02dce02 GIT binary patch literal 2545 zcma*pX;2es8VB%~zPr=ibVMCx-JQ^BhLDAsK)^**h(ZDp9YGuzZ%~j!}+w%FI;|aC7){7CdVvG)P{bng1y9Te*f}~*`1kQl$jwb z$tlW~rRS!X?#xfm_&6tTdp_`cjgYwbRFLNdoJCN$S-yhg`ZnC-yvedRSmOh%;Y`Gl6bY$Z-}#C=#F4%9!I1b zWQ~f+9P?;vhCxWwlwl=lrWG|7IYo;{jjmzJ5R9?f>n%-d@>kLINUc z4wM5dAO;kq<$}Dk{2-u0$I6@2N}&cUx9nmV1dYc8jfC}%=F9WCg^OQK9C6poh#2!A z3^EU*UFZvS^)?bu3T?J;@Ahb~%I?+@4!l5!*TjC}GIslNan-RCrrd~PdHYnNLJk+m&`$Y+NV(e>CCu%R#_8GqY4cv#j`#uRWdsg9DxWy(?oOvgCU}&@jy%c!H&-Q zqXJxajAtmQRoRa9V-RFXXh-bK*;Fum{BjpkYQGX~i@OZ^Dx0n&H}kvGKqQ?w(6iGXu_g08T|_hp#ZvFzIwKF*a=oMJ~3UGAjZ?g}GOxm44td zXoyYrU*I=y*vHv89hkYH(v5R#wc)BC3dZJKb3K)f>zaM3%JP(mpecViP0eKKYf3zy z->jx_mc?mCtPEvCQ?uppk?eLJt}_IR7giW%Jr)RyI!+E-voIs*lXI*z`GQc_&D#X( z{6G};HPYj6O|$lXxBJeDaweqa{4L=tOZCjTI^&UOxXg})LRG_cr^B9Rqt(i5ORbQX zq`_xCRsH>xEYY%&*Nyi#{S_JZNlTm#K56`RI%7^amom;*h90Si&g1CfaFV3D|a!`3Y-GKKbL*KSbl z>I96`TR@CqPJl(>QqB~RvK~-U)`e`l4LIqj+IU^~yyIe*|BRVB>4Bup%j{tLdKz4j zY^<8P8m~GRGz*yv0&-RJE+-keJ+%m3wNeopzsltWd->eWmBVwUr)pX` zK~CD<;~Z*Uy3W`3+MrEYxm5qYQ!z%YI;y7DTG`UVH0;@{M{!B&id_}3DBQ?zsotuR zEGLdRx25nLm%-wjlnEi;-aN_1S7???rO~WgA67jjr&(vRa3y$u#kqJbeKnw z{!T!1li9>M+sJ6AUe+*9d}2uGjhzd z|L1Rtp8uTGYyZoQ*`DS^m2dw-X{a)l+3m?ncvn^+O>)hdd3(hMtlhkRGns{<8c0I! zDDjpmwtj?@!6kA|iu3q+Ai;@JR+ zfk+ln&YFC{4bhK6IxVgLs4W%^8Lk`qzWU*L>yq0A3;l}{!wKZ!ue)C)SKI)9dl1hl zhIRLV@8E}rwvE{gX(}$f6x*k)_`*Ijt1=EU-Ls6-(phomeQBgtUs z5Xz~Cd*nE)Ac!0i4ep}Z1AugMB(&F?)#CU{Qc{Sp^vKsdL}vRB30H+Bbzrn`M##H3 z{W8dc_mDroEE+p8_}mnJtzZ4!RNe)zhB)Ds;S57nYSJxtek>^~&(7B+N5MPf2+2xx z5Dl&4X|c@f{Kd|z1r+N|$DmsoVp*3yOdxT^J^-VAk)Z@$4^XrPrFP-Co+MXZ+KJ(W z{JNYvraLLWA;&tRhIKOvhW|HC|L-dLvAUF(MG0(Nl?4tB{RzN7I(}Cb%hwN{crFC8 zji#aJElKvDFV+&VI1V?oUMA>*kto0^;3W8FQBSZ|{ z$v~TqE=(8DZa^i$^oht&h};P1N&wMXorKh*Z68gPV&ouy>%f36Oqkwemyeas$Qbz# zV?7Jy%o7KY6^I=P@eCji%W`o5sf(5hySYo9$l4e2`(hIV_?=H-#R6}0$WVA|*(K@3 z=5?@RlcLh(meW%A4)hGzcvEpm(_w?>zhL*i&s9$2>r zAtk{8Cia|+Y+V!uX9BtpXoF%lswuRKsM!pSs!?yhlCy!269K0|b M?FSZn2B>%I-}ej|s{jB1 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/logo.gif b/lms/askbot/skins/common/media/images/logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..ac4ceda66e823ad3e73cddf5bcb4c8ac6882b3e4 GIT binary patch literal 3792 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 W^f}hD@z|-|$J&n``$k2;s{a5|29cWp literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/logo.png b/lms/askbot/skins/common/media/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..10559161a3e8ef09566d6291bac225281203ca96 GIT binary patch literal 5841 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 bsql9I+IY{C+hEHK00000NkvXXu0mjf6)5?5 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/logo1.png b/lms/askbot/skins/common/media/images/logo1.png new file mode 100755 index 0000000000000000000000000000000000000000..d79a627174b08ee90776540abad2e76f28909652 GIT binary patch literal 2752 zcmcguX* z1E?4wgA2<ibF5B?oZ9u^18n1*~xFBuz3-<%yx3)#_ftUE+Qo`d)qPK67?2S(r z0zbj_1R*mtDSopsN*FIl+1W1i27nS38t4}z)g^qLp7y;lhYt7a0jSl3L8?S)fQbgp z9GIgd0|RA`d?7_d00faod_JKJpnwt1uSD7Z2a|-B1yhe(GKu=epgmLHL<<`k8h-xr z#Rdb>9oZ&!^VeQMo#r!{pg-pxO=%%wiP-5se;)6v3??meND?n)RA!O@$<(3FLWQ+$ zOH6FdOV()2Oid#y4ULJnFZpl4eYEx}KeR}+M$Gk5S zqnm}0W#xsXD4uMIn&y?8n~Sx|d}IA$=JVCuRjV$XJ}sknP^i=`V|K{Uo}IS~d2w;U zw>#2*{<@gaLWBV!hwNSpj+t{B4+|*Cyj*>2K%9^omNa`xrFm7gG6I0)*hvDZW~2n9%+MzzWk{Tzj9=GEY?tX{kpHp1&$#)S9m54a>eAI8%Q-XV);&;*9apqP&PXYp>>%+b;E;=0xznd$s;o zNiW9QI{j^mKNAYvs+E&f1KTijaz9V7?^FoLb3{g=Tb7$1e){vBP^z+Zns=jU$thc( zw2kd%$grJDyMNT!)Sct9dhWuKlacvPp`- z8Y8&LnwaoBc`{&GJVY{O#mCp`P@%=Q3Yaf}s2B6C79AD5YR#P~V>m6)bOTOOJli=W zPNp*HEQD667cH}?Hg{}+gdgp}93YjUmp*9c`gj8_aBZ0sW8avY zX6NiSFgF7CK79K0^heY)4c1V_P-sdc?>r6RHTL$J{dk^GMMm!9(tmz0dWka-lQA#W zXdf`;=ExOJv+V3vx`;W^wrWq(KyLp>!+{ofPxJF9|Ku2~4KPy`&%r!MfevTFv?hRH zP^Pv`=qS9h326iT7wKo$i=g2*B^lbLre~#DL(I(n28>2Gg^v4`z>bmBWVf432BE}! z=%dyMYS3f}wFCnuO`6FNZ&g-=WBwi8-KIYYS~6hF|43W|sCKWJaqiix73<%aT>M#5 z?iKC8)_XL&u;F5WRi;7`VW01Uz?7QJJz;?DfTU)e2~pZhZ!ORA0JzhpA(Hd7nVDJl ztq(E=8|M-c?lGfz@4u1lb$BMrC2Om_dxO4-tz2^b_1KuqlAiJtXpSQ6`8qPSH$8nC zMZpy}rL*@|27`gFMY^W63My8YCbaRwy~}3>~>!x8!nLwhyfOZXVGBycPfMA^MtwF)p}uJ zB~ORB*G&5!yTZ<$OqwMMHLF_PJ&jGd-SXLoYICY?CVF(&Vw#m#{b%s+m#mJxx&FG3 z8EpzW20O+=4wK)eCMQ3=(LXxwIZs6*uopv5ROAkrE?rPBaxA;pgO}{nULCe zHva>TDb#W^s+&*5L4WaxR#7-B1|!KkpC9{0e>FF=@ssguLF9d|wA!E~;qk9j!Nb{V z724{=IXkjH?b#LE~)Ia~*I(j^ z&q7!0`jgh#H!;;L(ylgBpXh9_2S(;HM+P(Zgj)SipDbK@^n^bC=|1xLztn?+(cTs; zL9LTzC`o)-7zuSAeKT~#fv@{a-vaYz1u)j9(QBzS8#fk8^g^SuEFbTf!OCZm@e1Hz zk~G1k6;|w?^B68VecJwAmXgBAYOPakiL>pz(w!`at=gC8Z#gHN?r?plOG7Gru6NLxkY;S=fF2z|YbO3%qJzr|R*`t+_ElUU&&^^{glpQP5mHpLzxP@1#e01HOQOj08Vo z)cfHL0^U{i&=SYTLGdn3&Ju3SY#4p@t=L7hVjDBl94p&Pms&GXe$dl$W59QduVdfz zK_DwVt5H0(psqg{TB3EPB_MT+v zLYBDN^U+I)`GZ+Th^mq2lakVw_C)=`4cD`4R&i(Ib*)VL&w?yA@5bAw@19`~{B3xY kse_>K@2>xA`@bf7AU)z?-rE%2I=lr1p}dH|I)5bN->?*N_5c6? literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/logo2.png b/lms/askbot/skins/common/media/images/logo2.png new file mode 100755 index 0000000000000000000000000000000000000000..bd3cccd9f47793f86864cd068621ab07198b5ff0 GIT binary patch literal 2124 zcmcIm`&Uy}7Cw1j9(f?ogb*T6 zR7xF)f`B{(Do|8Luizj$s9*~MRt2>X1!+Z~1*!Hr|H7>K;heqp+UuPCt?ygs+owPh z9z-=}83O>QA;AHWSUia>UkH!w{6lRrED-njZSe!3sdpXe0oyJ}doah{1$l3>n$0jEa145Xm{l=`0 z1LOGW4g>)b$0!*Rr7zHbv%EOo9Z|$Fo71*7zJWCy1avV4C^u25yk)w+l|hG~+NP%M z5{YQYU@)jZ|6}ppWJ?dj(b2ICDyt7~YcEeqbnFp!&dzSWetl`j4p9%R#_ovkDqA); zH&^*-g-KjDYY(ZuwsyF`U!+y!<>j?5(BX=hvuhN^Uk??}&Q{n9Y4Zjg#C7RoPy$Wi z{*X1KD~4_Y4Z$7tC2Omw9FAC!5Acv66G_Q!o6uY7#pImab!WWHb~w?Z0Yl``%a$|q z+>?+r?Ts74s#CZ+-0m|}TfQ#NUh)?>(Z$J0GLxDv2Bn)2Z1H?F;I?WNsG~%EmS7Pjk|D)ZWt7A)huHmXOer^gBJH%1K9jp$`#$4x zb~w%Q?@pblQ{_46k=OZ}+xH(tNCYC#!ac#N_JOZWKf7U{DDkgy2`d$SnL*NS*Lyk0 z%meWH?Wzzz0i!T%m4v~F`SGnry4R#TIUJ1vJ3A0IipV;YRq&)YZGt}EW(eud{ zE;wK6z~y^1FP?Bu(p|Q0-uZ9VP{;H9U`&*-j-@vuhP{16BhsxE$`{EVKiAp{q~8uq zr@u2SsG*&O$?=ivqQiihvx^*$fSkYwVxu7!GvA=hX{$Q^|2i*Q5IBWivcFZ#_XbQb<4Md2}~BtK?7vNsOe@; z8A7rc8k5Y~=#YTZ36{>eteYjoWt1`AYnuXw~+sOqb zwxMU@^F4f%7!EBh=q1a|wAiZ_D+JOhUX!JJa2*$iS7#3pi1YLFdk4gKV7j*>o*xr) z>u|a52rtb9z` zL5qYJFB}IWKha&}+a4CAY57e4)62=pAG~t$p>#RjdtqsQ+_oJzW`~!f=cC-qY`D zk$bnEefjm5qa|4Mzj(KDJvR>pqy+7to)KGbH~EW!4A`pNaZ zoo-AVwbdl!!x09)Z|CpRy=ESskd{ID`jXDLfL?hW9X-=U$GpHyAgw3%zFZB{#O zNiG-P)g6G3eOSK97L?xGE4MfIYy#f`>zXaygC;%Ei~H&H6ZB;yzeOe+$gdv&7;t@C zrZ*)T@!lqtLa&6cr>4Y#2wypjY&gET2c|!nXb&Nw67mG0^=3cjK+>=HMrGJ-oxxOB?TeD9Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2igV( z0XG0dpY@gi00E;(L_t(I%hi)TYZOrwhM$>9alx7F&XUDO2?RA0W(zkdA|lbhWTUNr zAWhgJtssVwGE0&rh5n8uT@qHrh*@-)xgY0R?C$6kHa6m^4iD$P_kFqN!hc@@!0T5p zKNLTT7f}=uMN33cNW0y_Ifru&YhB$tCpc$k+_^UZ4EA35%Jbq zZ>{xO>&Dz*Z`X$lE9av#!Z1Wcu+~zRB~?|SwZ<5OF$QZbB0?C3oR7``2my>S^f$K{ zot~hSA_xLR z^(9LF3T9?;8k(oV|a+!BB`rtvh7 z`+eTOd)r{nJDzMmZ7^-jOh80xSQG`*+bOM9O5W?${QLBVn=fBkZY|diL}cz@9^v}x znopAn_wU_hBj0G;mUdD;PcFH04~O30G{nU|KrxJu4SyQWn7HM_53`7 l|F*wBX#d3~e*E{J=_j4B6J&6NXg>e|002ovPDHLkV1lFs>mvXF literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/mail-envelope-full.png b/lms/askbot/skins/common/media/images/mail-envelope-full.png new file mode 100644 index 0000000000000000000000000000000000000000..2277e919779eeb21478ab71d5598346dfa701e54 GIT binary patch literal 482 zcmV<80UiE{P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2igV( z0X8WgHe9;^00Cl2L_t(I%hi)TP6IIzg+Dvaf{V=p1rel=lr9AlEe(g@3N&1Snu~A+ zBnqfNxks`~gd!9QlC0Mr3hxpEqM<>IG_v*l{N~4F`1hs&E;^mNw-8R0QW(GhS*wK? zp#r=JpY3O;eV2zgUR?khR+kfZNH0(_Zge$8RSSj*^6|?$1gj z3iw)}v0;*MGaheX6>z+@wSoCYAbbKBBD{t`M{5SnO8|2bX5Q1$nykjc*Akw}lBxF` z8bg13dm~x~JUd5TRZx~3Si3F(pqS5N`g?mnPTjt>?AP3euK>=|^u>wn{9+RC|Nb+* Y1G^5%Mvgs9zyJUM07*qoM6N<$f>X1_mjD0& literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/medala.gif b/lms/askbot/skins/common/media/images/medala.gif new file mode 100755 index 0000000000000000000000000000000000000000..93dd1a3960a9668a92ed55a81402592f296c9333 GIT binary patch literal 801 zcmV++1K#{cNk%w1VJrb40K@oE*q;kn@I-k&}bV{vSuh^`1%k6r<;IMd1E+ZG{w0g~MyWjA*d`_?1 z@A$la&+q&HfPsR8goTEOh-(y!jE#0PICFAzz_X{% zpFo2O9ZIyQ(W6L{DqYI7sne%Wqe>k@wW`&tShH%~%C)Q4uV7~+8cVjU*|TU7DOk(4 zt=qS7(BTJr4xw7TUm@^~T z%(=7Y&!9t#9!C>oFt6t5zwd>cgV;`7JySDAyxO3~?&AYen-@tu`Sa-0t6$H)z5Dm@NG7S| zk}d||0+o_zM{=bwNED(Iku7HVjkApih7e}UBq literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/medala_on.gif b/lms/askbot/skins/common/media/images/medala_on.gif new file mode 100755 index 0000000000000000000000000000000000000000..a18f9e8562941254941a446efad3e6edcb651d9c GIT binary patch literal 957 zcmV;u148^qNk%w1VJrb40K@E)v5}!; z41e42_PDkdcy;l$Dm3n3(BTJqC>oFt6n{%wd>cgW6KueptkMXxO3~?&AYen-@t5f($n3;DZoGDB*+&RA}La7-p#9h8%Y2;fElG zDB_4DmT2OMD5j|5iU_pm;)^iGDC3MY)@b96IOeG1jy(400+o_zM{=bwNED(Iku7Ha6Bh$gD&q69SR=%bKED(R$@R%+>`m}aW!rkr-_ z>8GHED(a{Mlxpg!sHUpws;su^>Z`EED(kGY)@tjmxaO+st^xGw>#x8DE9|hu7HjOW z$R?}ovdlK??6c5DEA6xbRBP=zwb*8>?Y7)@>+QGThAZy4+ZYo f#w+i<^ww+dz4+#<@4o!@>+in+2Q2WwApih7u&Gpl literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/new.gif b/lms/askbot/skins/common/media/images/new.gif new file mode 100755 index 0000000000000000000000000000000000000000..8a220b531225397b6a304918e4d96f6196ef40a8 GIT binary patch literal 635 zcmZ?wbhEHblwuHIc*el+@5|9!VKPrU6JO0wzv{&J_sfTWzkfci3%c&b^ZDfVC#}&> zyOaNZ`}}-T?z6u1zh6H-?MZpollt+%s=r@9J?->=+L`dQ-S^kCd)M4KzTZCopv3i7 zg#7c#dEf6|d^NB3$Neksx6gmOcH+A&vz~S(UH9g@mudETVb^R-1c%-`NuBSmGx$*^t}v|N3{XpZ=QLxvghB=@852m{z+->`t|DZla{DoFCJX;;C#~TaW_r#|NsA29T^4|DE?#tJ3t3Sg5rdM{YC?W zNN`JQTYE>a2m^CyU;l)Olls+yCQqLcG;PM53A6e*r27K<7?(+e+V$BkQ0bc=>K)=6 z>S?AMvXf0cM9U_`CsbZ({cMkrfKVO*0bx^n7M2ip!4S?%Tu1x7I766NnV3TOd0ax> zT^02BokLcHZqTpCs*6-yL$WVW?v z$*r&`a5&o0$QRlWP#C1jBFZZwJ5}J(3P%A63#oz=VNXx?YB3g7+`6(-c+I>yOH7zf SWil{ucTQ5<#GoL+U=08@?DshU literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/nophoto.png b/lms/askbot/skins/common/media/images/nophoto.png new file mode 100755 index 0000000000000000000000000000000000000000..2daf0ffd4333c90aafd71479510144bcdcb16c79 GIT binary patch literal 696 zcmV;p0!RIcP)FMR=<>BGs+}zyR+1b_A)zQ(>&CSip$;tWo`Nqb^+obycyPRT{LUB1#`*2@<8tPF=iD3b$&izilao_AJ$Uu| z?T7EI;9G2Ni9S*S|C71nPeS~@YXtLGZ#Xme_@@>8G%0p2sX6212og-Y1w$?e z!WtwvbPJl0Aa)A^G6(_^hxshQF(4>p2|9paHcPMx2&P29rJ}2$!H> zp6f%wU$+bD9?CDf;J*mCI1D_PzD=;|;mna;B%E*;B%w%FK=_dsy!3SVseTRsf;O0PA5l@7S3xZ$It;!i#Ky zUwupv47dxD@P=FMLIa$I+=l%s0_x#ZiV;DS09Qn^j9pByOm?A=ICBWn)?Lr=Eg7SN z03L<9;aJ866<{Oli{Qt&ARUsBlRXUURcV2;m^$aahm^dfY4!Hqk3O{)q1D z1TF3(2qBkcAppN3{)S!D3NGw#J)8~}C44zdYXvndi+CRUT0sljYWS7$P%CI+|Ayli em8wo4&)6FRqy5_K=O4cS0000${>eZ`v@813YY~Q2faPbmo5s9gt%|d4ho>o57Mp#$&^RgUuZ5eg+dZJYZnp<>ZnO zn8@79#>ir^py2~!6AQbMoJWI#lOrpaM#=_*i%myaxx_eX7A$CT;APg}>iKX$rJbGI pjAPFPVa3)-5*81xR0c3Hu?omAG~5VaYGz`Q2)lD?YqkS}H2_zIYl#2= literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/openid/aol.gif b/lms/askbot/skins/common/media/images/openid/aol.gif new file mode 100755 index 0000000000000000000000000000000000000000..decc4f12362124c74e1e0b78ad4e5d132621ab23 GIT binary patch literal 2205 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 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/openid/google.gif b/lms/askbot/skins/common/media/images/openid/google.gif new file mode 100755 index 0000000000000000000000000000000000000000..1b6cd07bd8b9f27175e0a03be3b5849e0f5479c7 GIT binary patch literal 1596 zcmc(e`#aNn0DwQcU}GKMxn#>^B<6OWQKZt-cb3xBiE^HYQf=ZKSu)*APi@FdDnu7l zbE$~JN>R#|+lE{hiz(BRl~d+uOl9Xe=bt$55AUzjP!`6aB*XlLd;L`$MA0-=oh;_@%=DSKzTW5!kkg02oxN<-;QgzZXZ6@(M)5 zb-u1@<^vWqN`U%R3CtOJuojJt|Ec%yo>_yZ%MV%ajx`i>ysy4d0^mKeNIQ#t@2y*KMj}jE8i*m zl#eQZ7!1Pfn72wr)$QwY6gabm(O6$Lylw3Pd(s%KbU5crNh3{eeZxI4(dJKB1MUAN>n;QZCCkQs_tGtJY-^iC3ja3x9v_uTP?vFVW;}s># zx;OS=;!{FWer7!3y~sj6t|9~xWcTkC-QJ+z*` z{$kU`Oy-`7hp(oZDFCEubef~t-M)K#*_S^K7T>g7T^A0(oK7oIN_s0RehD8}s1*i- z0sK!m=+Xa`J^uB-PXLSoRAEU$)j~-M#?mcPT3yt{hn6u4gKCOf&J$L|DbuOJmz+s9 z2lJ2J?sjAok}A_-F35;rl&1P$i@IJDD5Bmxks6yO#s#L4K20(2&;kgjBXbWq$Y}&> zCc!g3Y<~;U$CQlDX2nU|3Dx218gg&b%2GehXilrp4#P1y;weqVUjQptQlB1c;VO7e z@*D^wqyiQ&MP@@Eiijj!C6&AUPa6q7&lm^MToqj2ny^P9>WX^Ttd-e`;&k}6HltTz=X|A>@zzv6@ z)2r$ZZK19Hq1s>pg(Wg*yF5bqcpgSu2*Z=3Y48rhsMseSGm6D#RWnKSz*rI2&e%)U zhJ)uMj-*j*Cq6a|SR^kuis=outMPl7vPf8@-OF`fK(;t_tEV6%zOcxe#-=20Mq7|L zi=0@wEQshFjSRBhL&)v46Z=EWNGr^Y7(cjs9|q}uirjP>UklMq_Cn}BpIZ=OxlIZN zrqgmZ9Daq-5mP(tkggoG%l1Mp5`!YX9P+{9a@vc{UA@ux9w!5<$J7Qsxz)kjp9U>O zdMGwqZ?ce!P4?kRO}wMe2<(jAw{y`J9zkIp$bd;9jpjy5e7h8h$r8hU6K*}g{&bHR zc4&^sGRyCwh1g@leXv&EK^8KfI43fLjtGZ4%_yBJq-Q6Ii74-1r$U?ItVA?Z^o7I@ z6Gx_VGVMkkya7VbaJCw^O!RGWg$&GOOC(&Bu>?}_7>IP{%ivHGBI}%WA6YI2+3M9H z%iJLj*4d~I--NgTJ(9t@qodNU?AaV`YHlKR%UVir5C+OujBse~Mp}pFlaUEl5;MVK zxnv+FK^_1to@fbJn^<{1g0s+?k E17=sO82|tP literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/openid/livejournal.ico b/lms/askbot/skins/common/media/images/openid/livejournal.ico new file mode 100755 index 0000000000000000000000000000000000000000..f3d21ec5e8f629b77c77615982cef929802fbde4 GIT binary patch literal 5222 zcmdT{3s6+o89vBPQIq*$1QbbvAP7Q0Tpmk!l@)pHf>>S> z1vbL6JXf&Eq~nt$W+Y}?NhYbg%X2}TX`y3UlPS(H)68fPIsMMP%d)ZvOQtiO{(Js= z?m7Sef9JdZJ&(JD*bxy~wQ3b%;$cU~E2vFPBC#hV6@5-lg8iE%gba#Un|TxR-jjq} zb3h#KnTHdU;W5$jSK%T=Pj@H?K_Lo-P~nPOqSb0qGXv!dp_JW0@nc==!i$LGD~{u9 zt~8U?B2Fd~qvpC~M^KA`gqqWJF*i|=E@%ujnuad%Of!pb5`P(QC7kR#SP2OTzQ<#W zlv%8aIKD~feX!6nCX`OuQ922|4;{CsbQG#}pj5FEW=E(mRL;B7LWEq0KANYW^3Y=B z_y|vmH;?ldeDaRw*8J(~hC!qOw?4H%Oa?Y1JnqbNZuG{_4-W8zh5g(k>k33gQDw%FD{ne3XB@ z!rC7_g|Gdhw<&R;HMK*r`+|J;KQGI_{V?zIn&?P3mLE&uo!9m>GUrS3pvy(U5A^kP z_$(c0u8#D!b_R{U=43cu$bYTlSjYsNjhYF)s`QQZ*3Ky}xtxmjy4jX?u^{kLVeo`r zO$S;h4E5!2dRRN72QywCwpkgq;m=hECwm&HvGsd>T}g=BENAdX&yl^G;15ZD@oDXe za5~)ny+KtH;%e1SDcr|-+q7@ZKZGT0tS19Bm$;2T93LRj8^{4y675bB zwk%H%+bJ)|KhfTK`uexou|aVjGo#E;Z%!+~BizWLXGzMgwI!$9Yp#x{^ivH+c7UV2 ztG$yM@p8QPk{Hi9qZjA|_iy0IrBz^V2FDGCt7!c=X2YVB&%j+s%GRZq6}$VIQ&2P#@0_gE zNAUFwKQH_3h_#F3ZUXmN_F>UpAnQ~Ky-mq~NZp*1ER$dEt(TrWr;qctLx_#Sm^+j7oj?A#I7DC$ zaD!T6s6Sj3{L6HyM1HcisHVO0oT2v1d(D5PMI|R99BoZLz$4vBrg+7t)3*@)h!oupL+wwg_YH%9vj*4aIjHXba4{8xkuc);A<= z{dZS2HK=KK!_1Gt{0T^;r%|h@D@A zwEWI*^|gxqvzS+eyR}HSKjd>V18&q9+tQP_E(>?D2|U7;$hbAy$_UJGbI$ekhw(yN zQ(t@t+Lp`(@GUljJClQ+q->vynK|C(jk-g{A&xDnJEp9_2N%N}naK~`m>>4s;pgp< z9QJ=jEdleAH`nptjkB2FdOtgL+Y^|;w&WZ>d7<84e)0JS>Jtat2~yqPk^=D3P?xq0 z@f7|6Jern%&D$w>p*GAGyl#LeY+CZk`Lq2)w{GZkg^@2rdyw`F-&0YZ?HMmk^)y+7 zCvI74%WRnjCpgYpE3*5H!##ZipIx~q^<9GpuZi7A2hXs1Zk~!pO}{2J>4l}(OBYOw zFj0B(Bt6hCeb>`pT-SE@^z{x5U2Ln3-?S|8w?F!!Jf|8`_0G@Mi{w$ z=X|SDy7MOoto~1%!)>|A@LPpZ)J;^~NDC9o;+|ify5q^Z+~}r~bWFtv8#b;5N6F%T zh9Q2R{a&r|U)2@;IgyF6UTmI3tzX1!nST@^QP$V_qZVtm#9wTzwZCbi{LlWU{0Anp BEK2|Y literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/openid/myopenid.ico b/lms/askbot/skins/common/media/images/openid/myopenid.ico new file mode 100755 index 0000000000000000000000000000000000000000..ceb06e6a3f0d88fb97cf10475a3062fb0edab33e GIT binary patch literal 2862 zcmeHJJxc>Y5S@6ZrZbS)owhjA&;jnXfl*X745tmMB3MrBW$)n`RP3b417qd6J6bL?UM{+)q(3xlv0Ik%T7j-l59$8$m>#ard~jq(8yIciUu?j(!>?&WKIe?G5c$>` zV+r!H1WS-ha)=*H^!uZEl>O1BP8%xc=fconk~~4DvKCYWn4`b_pUnoZ788}%mc>uh z9HV;s)r}P~NWtqf_p5&HGjTJoZI|S8n)uf0l05g}rdhqaIBpnv^myAWbI*7E=&N3x z95xI+0zR;x-|08c&;6Ul#XdjZARV+no-wSN`};1(+>)AIisPc*P@H*_1Kd%ys#()H z>NUmL)tL6ccj9UxPF`{LG^Rc9JypwV>?^N0yvK~LBc9f{#^OA9dQUv#8Tz7oxfa(K u#=%<%_2}PpAb{bmUKcqz}))c5uC(7v?)v4a2P)ZNa- z@$&T2)z|&~{r~^}A^8LV00000EC2ui01yBW000GQ;3tk`X`bk)Wk@<6#nZYULKH{p zEx|?+kif!I0vIL|#ZMubBmjWH2OtmxIFVa~6JQ7!1CK!f5W#StOTv&C3=E8h2vI1s n+#cd5;2fT3B_0kF0v!+!GARoV78n&7dMN`JIW(4+BOw4gP{MS* literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/openid/openid.gif b/lms/askbot/skins/common/media/images/openid/openid.gif new file mode 100755 index 0000000000000000000000000000000000000000..c718b0e6f37012db6c9c10d9d21c4dea0d0c01bc GIT binary patch literal 740 zcmZ?wbhEHb^k$G`xXQrrKS$vIw-5i{JotZf!T-qt{~ulWe{RG7ST3!;kh({9A)7tlU&$%5*g$f^Ar># z6BXsynVh) zJ?osJf(s)D10z?npvQi179P(djPk7Va&pI%NfVlv<{V@&c*Q1S?C^%corz71;ll+1P9`Sd{~>qE3OQZcJ(5}z4)|O#`p@vJ zr9;Fsp~HjOs*vv^`}=;ISs7Cf1bMkUpV%Pi{6*$qgF{F5!;-XxTBi=%eG5gPtV^!wdin~r1kkVO&vN=8Ce+Xv z$*|MCqlY(ACp$%vPrNeV;U*4lo)c<`?yngdvl5)QWEV6rHbi?!)@MOEE;CkPT#L!!@77y7u K{UjJ!7_0#i2pVPp literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/openid/technorati.ico b/lms/askbot/skins/common/media/images/openid/technorati.ico new file mode 100755 index 0000000000000000000000000000000000000000..fa1083c116527de7cdbf5897976aae8807fce878 GIT binary patch literal 2294 zcmeH}ze^lZ5XZl}d+sirdNzWcsg4x+2g0RLIAWPjuoD!tN}VeB7eq*vB1MXHX)Xi{ zAytZyMi86WScxK7SO|(gE|<@|cRuzut2sy&xMBC*%tj+A zE!c_l2H#`zaX;dYlru_mk^31KdcB@L9&W3#wIFp`YJOeP`OSr1{CK6O-`2Es@?E#T zy1MFK>-Ep~I=Vd7%e_s#J@}-Zvwh`X=4ClX_h=7BXW;)k1Ifb@+v7M5AZI7aYkiNm z$KjX;Qm=X2(~a>=Zn(6-IG8mv>sbkaBEroVrCFBdHr=3XM61uF&u!`5GI1u;Qf<+zMxU!sr1q{f@m!ic#&7x4 zjcDZqv{&NU85cGO2UiL7I^;$4kVpqJ@-E;pjlK(>l3v2Y;e5IS@q=)?(5+CX;*7LwCwnlxopJBahPURBFV+~&J eFF>coTp;}_7zqbJAQuX63TM^f{)_Klzq8-HK65Pq literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/openid/twitter.png b/lms/askbot/skins/common/media/images/openid/twitter.png new file mode 100755 index 0000000000000000000000000000000000000000..9a6552d18444ac98fdc776e6c58b794dd4452772 GIT binary patch literal 3130 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 UY}!*r@&Et;07*qoM6N<$f<-Fwq5uE@ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/openid/verisign.ico b/lms/askbot/skins/common/media/images/openid/verisign.ico new file mode 100755 index 0000000000000000000000000000000000000000..3953af931987b0e66c122b338dc352502564eafd GIT binary patch literal 4710 zcmeHJc~n&A75@Q)fTGMB7?4e2SOip*O~H*}8$=cdnTIhNBRWh_BW_>?5imwU5pfq4 zQ4m>QjBTZ+CRIeErNk zREwwe2CX!zp{LmSu(HSiXS0Z~ELfW_hmFlL(pSOSItLB|b75<{0z+Ju!Pzbsp04@u z^IM5gez^!5o)68~JR~M1V)|=3XwNQ8?a>Ya%3;dK~By}6c*$o zzc7z#uYNYpl*u)SjcUZ3@pYK4t;Vd>gP50g5b0^P$e34y71<3~mHQrY z^v!hsAEG!C)5bMuezljdfeI&}&sTTWohhE|ksJA(uJTd-&Q zMO2ly;NXEa9IkGqoEFsAT)_K>+aNTx;izy9$B(q(h|rGX$9{>EKmIk&oIQ<;7cbz` z_Vf7oOgqlCbl~T$U*gkC?YPwb87^PGj4!TTMMqaVuHU?hTbV;iCum zZRbOL{qcZs;#f*}wrlz{`0xBe*(I;Sz zyL{rRJv~s#3{DZZtH%`9aNO9+=O$@yE9B}Ppw5xAUn^OeZyC|qoIL(nKmn&nYY>eL zKrf+{E*!VX7~r9ZuM^b@Gr+V$Li3f}Ym!#NDK|=*KfCmKlHM?d^N_SO`K0ZlR@aaD z`$@HgRh&}Pnx=3wq}{WbyQe^@gROXtjgE@>Qu-jEKP!rl1Z1YS(s35^4X=At_Fe%L7)Z2wJ zI=BcM$Zt(2XjtYnSb8HX6)sr~HNO7Fi=k7(q*OSR;1tv-=GQtZrfwBAkrlHYyo$=k zI88HxY21*dylU_ihyn*o`a+siMM#3?z2La9_bI5tty|5m@_$Kv=M-r`DWnsuDXI|SI(OnaFs5Rj zX)H<$bK-%v#3C6u8ZzR^Dh7HHqo*OR6YUU|4ygcb%!+EsW(iDpCu}sLU`Ao=$b{)2 zqYUx~O12syWYaUKC^j&d+|rIZmK*4)3nD=!V^Y|D)97J|C?PnK9W{j|5sikK_<-~j zB9Ma7re4g!anVfBnN3BRq6!uR)Iqc*BNYKUJ~~i(NLEqh;Ss1(xyk6vj3QL-oI(}E ztJRXtBFNMQ1%(&^QRrgWCG@7zAyK_e%IJBC60Uv0=A*yw|Kz_F$NuLuvWqkMvw2)i zo$zJE=5ZUFK~Q{S_xsb>KZ5B3WHsh5CkCG#~pZKK$?_l$V}GW#u_kRkqUX z`UyTd@da8=wc+%sYiMmfjdN#zfeRNd;rz$faN&FhZrr$v&dv^;YrTU@mu}(8l`dTS zyp!h7d$`$gpJq>*C%Yct?%liirkiHU``!4q`ysx0_@`GhR*Wg zL+$LnVne>U0!F8BBDJgQ#SO&zJnpsR{N}Sv)RGX5ladO5OX7h<2Rs-#nHmcwuE~3rz z2>~NUOyad;2ZtE}qZs8M)E9^dp|1)1sQ>G$Z=aRsiI#u(rfHU-9}N`$^h{weM0ms) zh?4E1IgP=fR~iiIb_PS5COyWGoN9OA+h%v^2+Yx zGJaHiGz3ONU|59!7au1(GXnz`A0HnV&|@H)n}q>L0s$9;ARnmIVdDT(f_z;3d|=N* zDLy_ze4rMf1_3@kMlc035Cr)7nOM2`_ymE1g8cmaK$@2aOo2_OfcXEPfdPgOHZw3Z X0PU5rU|_JTL0}LcBo2~?sfE!1%eOAT literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/openid/wordpress.ico b/lms/askbot/skins/common/media/images/openid/wordpress.ico new file mode 100755 index 0000000000000000000000000000000000000000..31b7d2c2b77c039342854190a90a8d8436992b47 GIT binary patch literal 1150 zcmaKqJxT*n6op^J!coBi!TOa}allq&O3PWo1c^ULbO>qe21^@jt1Q7KOpyh+ge)Q1 zK|J4huRH_#zwbc3UEA;R9AO!H&d%roag-+O5 zO!N95T@?S*G}Sgw{mN!=VmhZ5Rzf4>LLtlrZUAWLgGPY+oVrG5xo^yW`xZU-Q@wk~@ zYxS@D)yH#t7kvCm!TtK*mFh-7(+TYB+*i5pa!nc|Jf3SU=XN{`fjrfux$lA7e}n0{ zlfCqFi>Z(M`wVVG>yKK1*9rZ1`iw}=W^iIUOLNU?<8e1$!1FrglCO_u)5YTUvK?eu yI~YIj#-~XLO;hd+o2#A2S^08*UB1qS`QCUE52vFxJ9}scm-~xFcCkL1j=lhFMR`a7 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/openid/yahoo.gif b/lms/askbot/skins/common/media/images/openid/yahoo.gif new file mode 100755 index 0000000000000000000000000000000000000000..0f0eb8efe7eb64bfb49b71bcfed741c1193fae55 GIT binary patch literal 1510 zcmW+!eN5I>6h2Lvn6<^!)Xd5hDlfLZ?*XcrP9QW)@-4ktMwaM%)M8CbQ_0*l24$96 zFCxc~J~6$k=GUBkF2{?49T|aFsb(Ko&Z+fB)4rCSet7>lyXT(mKF@icXKLw`+wYh+ z8-~IXfYE>VhrW~BSNh&w=(_*{5C8)RfPw)q2!_Bg7y+YT0W5+gunbnfDmVa#;0PRp z6L1P1z$179&)@~TLI4N|fgmshfuPafpa@E!3@V^e6Ja9)AuxhOGcER$-0QkIY5^5?}#|%n$=&Pz;G-F(O9Af>;zw zVp*(+RdFB=#gRA`C*o8*h)3}xp2drJl>ib@0!d&AB0)t#6h%ptMMYHmf)Ke8NfPmj zhEWs@s6jQPhSi7~RSRlSEvaR-qE^*`I#fsMSe>X-^`IWrlX_M!>Qw`1Knp*qp;Bn<`OCEbSmdY9b-PCpKTi3^Piz?f8 zy?dyt^GwNvp40E_er`*8*@3T<(}!)EUr^Op+Wlj^>bA2Zu5HOanSSmqx^=>0X=Kzc=shR~H^k^D_Zi zm0opINA;Grd+-0WzzmB`9htoIiPY)gdyAhf=<2`k$K9pb0|sBWeR^%q^M`Ymzy0{v zAGS1YzH-Xo)hi!8cI)gxUElrt`{^%}>1j`mD86O+Bh%J=eAmCXEE%zRZiAWIIC00W zAKEkSsqYxqQb6nD8wb6-Eq;Dd#o_vaK4;Y0sB zlrb|aKY!qiCqsAY>3-`Dw8pcK>`aU~%LVGIDmHY4O%6#(r zGy7)b{WdzUcIZF3+Y{BVyg1;&!k_|&&Wb)U7@G{hd*@p61{K8lY zrQfzUZ=akxn9jU!Wo>@vjsXJ~W_|iavS?$;@p-quF|A^H-qD(SYOemd(}6TtKSPDj(q#+`%nLkS978;g&z*8QU&dA7SiPQ{aIOUr9b<4dOt34TkisQA&nbLY;9Ccc(3tE@kX znE6UyUl+T&^ThS)X`LSZvHSkK+^(b)C2gpd8>Yw9YOz%K{?MI3b8>FYng zg7JWavpq*sgNo;g6r<+f&-XN&Sv-%4pIH6yyXyw`2g(l?RLOZPm@;X(+iPCEdC$MT zd94@`6*bGYIIYa@^}jFd8?H?{n|Afkp+oJzpI3Fg`MvM??|IKF<-EQw52?i2W)YJWX>apJ^D?$6>Lmqjk`V}C23|M_GcQ|q-^FJHc#ZujfQtp_>8oo%osN*4%%ep{Ml2kwIxe$mgJ+jD9T! zJbP!(oLSND@-~N6QTWG^k0OZ@LT-ZRqF#Nq@?3oI*<#;5d3#5Rwv^3^$1=*cmEX7# zq3$WQ#LQK5#w;tlt?dh91G06mW=+jn+T>?)Okz!`MY^Gy>+6>NVgFs!IeS$UGfgg7 zEeyN;>`eFOIn~c&=al;N$j^Qu;N#;XVmy zzozET@ulpPJd+a?#`RV3j#D! zq7O@~VBF34pn+`yQ>Fk*@OdE_h3Tia?tWSI`t7`&>zW5XefqR`?b@}0RaMV|7n+%y zOFut9fBDps%atN?=d=E2KKDwZt`|B)KRxu_RSD1xPR$85mgV8XD>v zS%esxTNzqd8CmEWm|Gbb7*5=z1JeLfX$8>*)L>|!Yha{nWDsIxY-MC-Wn>J|@H!7D^o*=hRq6(LFI@k$Von#$*Fn8sSFt>$tTND5Q literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/pw-login.gif b/lms/askbot/skins/common/media/images/pw-login.gif new file mode 100644 index 0000000000000000000000000000000000000000..f88b1bcf0bdf05b8dd91b0927333fed55b6ae6df GIT binary patch literal 1818 zcmW+#eN>ZG7{6nHsJTrP6%if5F=J}s)iKnudGH`AFc3lrln?O=g2yHze&9g^mFy@B zwYZf9;qjx?R?{8I10k45z6dmOd^;OTsN^(00)pG~?*8|j=Xri#&-<=hAFK#SjztU6 zFhY!f9AlI*!Wd=@@fF80jxvrg4l@q%P0BG!86}KjMiD!#~P#gyS&BA)Xd0N;yh6iaCmS70@J@peH4G%=wVQ;fhph=N&)2t}A8um^d7OxT7vz(0rphoBn3Ks2a?QP2Uz zfDO=qh4|$7Hq`JiA&3tW`~fXg7!!;jSFj5zph*xW2y%p^AppI^VkOew`7_b2v@h9S^p$#=W1Q&xK!5`2z|+BIvso;brluynUa!;Xl9G}lA|ljkwMwOuN~IEs1U`MQ z5k~>8Xwv+^+bO{<>4N^ zcH7Oy#GiI|zZNvfMIFZ6-s+>Pb~vexyISvM-@52`!G9NWIB>t-v&OoOkU@`V;<|WO5O6hdrrp3 zM_B^15^wddy7w}(rB-w^-SB4P`EC1NI|%l-i@Qu2Yo1i@uRG9PSyLGF@%*q+>Bi5F zPwu`W7k#_-Q19LBti!R10hwJ7MxLAZbi^GRy-xp`B8pe!$>O)Bu54Wxt{ofNe&1MR zT_Fp)|JbAA=j@zzN56cwbjka#Hq;N=-i`?^n*Y?+Z_cRQEJoiMto6?~SG?0THjbPZ zS&le5Ts|9hMcdmFRkq!y7Xn|vRjCo*2$l>~AYnZlsdGD9n{Ows{ z*~9F&sCwA4yd%e@IVds6oGU!78ea5Xr+hde>a;?$zD=Wel;oTu*B|vhts1x*Eb<>s zEiVeV+9y=2{!D1OB=_@NSETIhxlrWR;kH(z63;4`6FnGusqf;XUC;W|BXR9I`AF)S zqLh5a#b+zqbQKomKOeA#8LQiE`5O7~N50L<3CC~ds79~Wd86^t1oZ9e~pFZiglv!LAH{BE(v)BCcmysWr%~D>?^fvus*>8H0-kRDuH|3~)lMfpB z%M>r)eU~;WqqYRO-k$XJjJ}8zVM&Sa&@ZYLlu&c)>k!hlBw)`kMFbLGXx zc1ur~v`cGhkiXTi_o1@4I!@HL?2i@hRox|4pEYH^(Hd#9=M`hhV4HQ{-|?Et`NdVT zi(jRPo*6V(ivKLn-Spz1`}x4zv!lmuKHZ+LP<7@sYJ#2mO+~|9FO?4mAAWwRL}|Wb zdNB4%@!!{KvwEI*^}lslVan37#A|NNeJ4`d%Y1Y6!T@u`2?w`A_q@#D7~5sH^+RQf zOt-Zj#ji?MKaG5IbozbOndu>c*Zstz*FrR5D2?u^t@&Z*Mrqx)GP&>Nn!*BZ!KZEO LF3fY4pjH0^IY)F; literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/quest-bg.gif b/lms/askbot/skins/common/media/images/quest-bg.gif new file mode 100755 index 0000000000000000000000000000000000000000..b754023882679555b5d31862f777e5f8b1877bcf GIT binary patch literal 294 zcmb79KQF^k6n#yEq+=^$FjT|RNGC(FR2r3bG9We##9%NQ3>uLbk@yBARv*JGzJSqW zdH4Uj&-?iX&Pnb)_vW6Q-0jh@w{~0$JK-|~h%skR?y5pa2$0O&vznEh|N+RO!h?sK@|HmRv z{h3y(TKyEJ2mNOMtn<{HAAUcKPwGpL&s#5zxz_#Zs$8wV{*2!`hmD)b^4H{i;qK%8 aqJF!3xj$$f?HydV+s)ZpZKm7Z3>&}3(53|d literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/scopearrow.png b/lms/askbot/skins/common/media/images/scopearrow.png new file mode 100644 index 0000000000000000000000000000000000000000..73dc674452aa75bc0968f1e3118235401955aa92 GIT binary patch literal 538 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 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/sprites.png b/lms/askbot/skins/common/media/images/sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..e7244673e65066fa2773aeed011c3b2bfb9b6fad GIT binary patch literal 12545 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 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/sprites_source/sprites.svg b/lms/askbot/skins/common/media/images/sprites_source/sprites.svg new file mode 100644 index 0000000000..34898e3037 --- /dev/null +++ b/lms/askbot/skins/common/media/images/sprites_source/sprites.svg @@ -0,0 +1,732 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + X + + + X + + + X + + + + + + + + + + + + + + + + + + + + + + + + + ASK A QUESTION + ASK A QUESTION + + + + + + + + + + + + + diff --git a/lms/askbot/skins/common/media/images/summary-background.png b/lms/askbot/skins/common/media/images/summary-background.png new file mode 100644 index 0000000000000000000000000000000000000000..58c3855abb22e956124b2fc203be49aa3b88d91d GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^vOpZg!3HE<&c)saQY^(zo*^7SP{WbZ0pxQQctjQh z)n5l;MkkHg6+l7B64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1SRc)B=- zWHi3L>dn`nAi#3*Si%3_n+{FYdul#m#yZP}{1Zn)w3dd*&UqnHk)OtsgP^z{Tpgjtk-RyYfFx9Iji@kIQYWaV&<1F VVkcJcD}p@F;OXk;vd$@?2>=#9ZoU8j literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/tag-left.png b/lms/askbot/skins/common/media/images/tag-left.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9d8a0d384fbda62d62f47e6a74aec6738e17fd GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRt!3HF+tk*dLq!^2X+?^QKos)S9vL>4nJ za0`PlBg3pY5H=O_S;MX3|5l&%}hY1ZSiz*46!)9c8Vcai-Caa{T5c;q9zlk zbrXKeD~1ca6?J6Ycq)v|bW_Himqrim)Bf>K6mUuiKWy+}NeaKjaY4a_I;U?le07sy z+?fQVcs>Mr1&X*98J;&TjXl13tJvC7u83)>j5$fqW8PH0*H?U%wPv%#0n73kFVr6t za@Dg(WPiLTUp1Tkq<79NHHqX+!4ooPF%?KYT`Rif+Lzk%yVm`b3kjXd+o|@<>B%4Y gExF#;OSdz|=j@LC__$zopr0ADm{LjV8( literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/tag-right.png b/lms/askbot/skins/common/media/images/tag-right.png new file mode 100644 index 0000000000000000000000000000000000000000..871664c301341cc62d22dd6008ede26e68675c1a GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^XMk9cg9%8=J-8AAq!^2X+?^QKos)S9vL>4nJ za0`PlBg3pY5H=O_S;MX3>JE!dq1}Wg?v3-978hhy}e{8c))>!;h@TA)qkyt zK$TzCH)-t_%6s?r9s9L2XF53)Zv=FVdQ&MBb@02|9XApigX literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/vote-accepted-on.png b/lms/askbot/skins/common/media/images/vote-accepted-on.png new file mode 100755 index 0000000000000000000000000000000000000000..2026f3bcc50e2738bdb6c21f32ffb2a82d088e11 GIT binary patch literal 1124 zcmV-q1e^PbP)(98f962%urEyvrobTSI2iWDonJaRXmcCZ2&_7W|s$8;q zX78?p{;d3j=Jt6u zRf1NRn45~bKOeQloe<4k4F*a0^w988Pn>Cnf)+6fhvK8hS8!=&g-Tr5fO=!taU4$~ zOcn}~1dq~+P+Mn_{a3^epPXDNqV_QrDaOtjsGVmiri&cVy-8sMq#8b+xcl4la{1KX zd)90%K-Mw{%5_9>cd}5B8H|=?=ws;;*H`e>Y)`)g+x+z483yu`hh? z)vUt~N$7kH$t{g&Q6XMdNY^x24}P89!Jn~piFLVw3}%z-ZxONXwNtVCms$I=Hpt<1 z;>5`C2ui916R`wY2}KWfU9>D9Dg;Y<_4cY;b#?q^Z}exPXQRCee0Tq%=HACy;vCVa z)oQ5K>nMeJcUM{?j$?G%ZU0GpPJBRg?!=6hb@~7WeF-jmZ%z`A5yxGcdRvZYk@$u9 qnpoR$QRL8vDfll$;(wNZ1Q-D2C|}A%ZKM4F00002jDb`!&=tG_0s>$|K>*|`prJ6sL73(3+qcd@u04=FA87F=kXo2eKmZ_sFf2$; zPWA&zCIel<#Ldmk0CYVA$YsbuiEN3WpdiEV-@jQtefpFN6jJ#4^XDXHW@fmf00M{! z+3>`~M022FsXRP9Oq`sYV1r>6fM^&7@nIMgTp$C5g@r+ma0TLs@87?}%>)P_xCIFb z3Bo|lB^(?aU=1+CkRuHnMz)lXj}Igk4Pmg5nWK zgM9!HKul2A3d156+4UepK$wMv1;uh~hS${8fRioA43Jqsb)q0~fB<5G=1>+`+J?D) z%9JT^&HerTa5l0y4Aj-tf${>ww{PE&GbGq-fB*uAJJ7~2AO*0T3i2vCz-BNA)YjHA z05ccZaO6}4^z~N|8z6v~pcXs;rCV4KfV@~$RYfo!V1|GF`V}PzL1I7)9)r{X1Q0AA zT!9r*AO#=|po~*pU5(RlP?-Pt@dK;cg2@4U%(nbkq83~4GrM%MlNq) zt_Q^*$WcIgHIVxmBnA*bjL2RCmZUYn2r>s2cJMME1VFhHRs;jfeUu1=7iz%L6XYu( z0EK-K5dWAvcP;}!05PGJEj>WnAAr0L$}BL~0gGY=V7brm?%g}EuaFBtSO$Xz??)hR z2I3zuIe-8{v0&c3c_1f%lFyZoA3rjH3O+6_F0kui`2-depv(ty1ju)w_yQXE94J)^ z#Ltn<1PCBTY{dew=mzBvKWLT74YCM?K^B1kDEN?45GX8n0Pzwa{)%kQf&~j000M{+ zU%3+(7sm^vtby1Jh*f}C5Gn;S=spmi2jcxe{2E;^$d?NjE@S`*AVy+~WpV*P05LJp c7ytwq03Nl7Z}J%VEdT%j07*qoM6N<$f`!tbz5oCK literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/vote-arrow-down-on.png b/lms/askbot/skins/common/media/images/vote-arrow-down-on.png new file mode 100755 index 0000000000000000000000000000000000000000..048dbb44dcf2aa3669386737e4e34503659cfa70 GIT binary patch literal 905 zcmV;419tq0P)-y5{XDqL?wtw8c7i~ zN0Q6^?9Pnu+qv8Oi^-+Pz_+tI^UZtT@2q2t0Un+PKF$My_TW0l0Sr+3C>}Z+0c92j zQ&9RPZchib4JRZRISTw*?j`s&D(yi!4W!bYK|2l~#3&Yl)q=eKB*_hofA~`;xN^ut zQH^pphu&R)Hdf>y>Qg&-^&xZ21q}p#FHqmiA?Xcc?0sNEuv}tToE&x%yyA;O9n_c& ztgi)$?=eay3oI<;;0F@w=OKY#QG@aB?kYGJj-3UDF8m+(%RAuS)fP`Uv|~x*NmL4j z!2}6hSuY1_FXH@Eno4SYa2fqafZMOBtL=P?a&g3-4|twf6~U}kNf0P6+^mhu1MQ&W zQ|)VwXZi;$cy;)KStHP5wXSdC?sR7rWK_$yj`F9K-3tj+pzGE&CT^qA=z+D=Rv$@J zbvtq)#Yq4@9@OYr{|tt^${b4@Tb$voWYw^jsXJl~1l){yZ6Z~mTapgVXlRrfvI@o5R%kNt_@+gec_sFS>sC)ftV7EML$Cz1 z{=+$y6i-HJNDispz>1H>a&r@96Rxcq37>Q;^OE=LI@u)mx5b(Kd2vsyAI4-kummT= zg6^eUr{s{$(8UZkHS&32F)wd(AU!Q7(Rdg%m8GwFfuZFFfcG!1F;4WvoH_`{s8d}AU+B-V@FC#${&~nKmaj< zELga3A;YgoU<-h@djJ(F zfE2(qfH25qFg7-fEDzJi!NCC%R{)s_G8-U(SfCczf+Ro+KtNAVkHN^u2xqW7e*BnW z&z?PC3($iL1VFy|@#BXrkhujQfWSWZ{rk5XND$^Ce1?O7tgI|UVqzj#J%|QjXJ=fy@M{1qdLp4}jidfk}eE+_`fx3{6f>#t=jHft;KiJOrSj0yY~UfM6D&CG|15)01!ZM3y{4xbLLD8!_w2!F~pGdzzl|Am>fU= z!Gj1S080fK85v~z06FP`06+k-pxX?ygxFk+ZUJ&W0Reyjg8Kl3VH&1PnSx) z)Ie%~{`?8YATeO(f|~^k4S)aw`v6o-fJ#FqCMIw$Jbn5!!8)eg7&Qmi00000xCZ&X`T>s1rrok967{t#$kYGS7Vd|fw?Kji~ z;lV5VHnRYeM`{4BF0c$^a34H4Y$j8XY%{~vP4Ur0f;38Hd%(7f1L*It^x#ox6Y^@F zBDnIA8Ir>UzFOH#7SIa-feR)47XkUfbW{ysEx$_Za+(2mrv@e0$jB+NG1p<%zK%|C zDhyl)$6NrHqq@G{IrJPRPyB_8o%g~qnsOblfcn? zud345g@qRO!2EE%0Z?uLjv-MxAZ&$ojSA9F#F=yV|e*{B8pP@ zPpy`qnVS0ErfIu&a2$lel&veGH2NtLOlegf9(x9-G9&7J^nDl1oLg=Hr16Fr(Oro+ zQbLGVpQ1pj;IRb_B#w0GLze=Va%%)w6bBhuOzm9OdN+s8=o$#_ccLp*OIu$G;h>rLx z;mgpUhOxf69+e^?1Ywq=jh2GNqFYu`xESK?pEsfZhXwuLEj*_r99^_vuKcEHdY&#l z0Wa8SHm?w7E{Z_H{N^6JFTqUk){$jh)SV7SR)<^84Pbk)5p-5xEIhKMBS92|x<@3= zZ)!HBX})$JOk*s=%QA0e+p{3c*vl0e=9sUD))!9#$+3Q`u!ebIIb1s(-e@F=*U1b% z9-vyObQ;pB6zoI_#Ud071$xZ|IC*EJ6cLci_@% literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/vote-arrow-up.png b/lms/askbot/skins/common/media/images/vote-arrow-up.png new file mode 100755 index 0000000000000000000000000000000000000000..6e9a51c7df2da30fd2e56359a93f4712077ee62d GIT binary patch literal 843 zcmV-R1GM~!P)Ze18CM!Al?Dub8&GoOqw)_0U&_j1|%mZ z3j?V-AXWlNa&mGq04*cZdym|9R2`JR?`}glckWT;thzab!KYu)chAIdN z2{HWr`xlHsmVhvfpOlou(AU?;;Ns$fQw<0U3k!q96hLNz%mxS`umwN?TMiBmxCT(X zz%UHx=;(lHFE1~+7_vH;K9D6Kvw*ZMNDV*$!7NY%c@N!iY!;y#j4TgxAjmABm>Nh7 zAb^;l8VIHqU?k#|$KnXEnE(OAf-H%y2t6WU0F?aD!Pc!?8Fud6iD4l?05Re7HZlf< zD?Z@u?ajc%#Do!S00G2;&E;unX$-o$x?py0ZZ5;*$&)b*1c~GFC9-({0mOnW3}J@j z3pQ+)=H=yK1UEncF%grAhy|b^LI(f=#DX0Dq!^ZylS5Px0R#}iRD>&trc9ZFHD1uo z0tg@`LIz>;HohQ2&zJxK#DXjV0<5g8D4IZp7&efdosDoMP(O0;g2Z7C0|+1%sG)yA zIS*DU-nemtK|@0WtN>JWV*^vCPQ{suK*a^n%pV{zfB=G7a0gg^Yk+0$lVq#(#)YQ~)1`j9~!(0t4szGKx0I>lA2$l~H18vm+Dfss78yF*}3LYLF zh6M{2fGtH24p`ms^XE@^(165%^kI-ZKmfrk*aj4E1sbd%ARqvC0Z0=pj6Z+=Ot?w| zS`LaokmG=6fn2{0Bn}Wjj4(qI5)wdFCb(AP=H>>wniTNm%NGV#&7yzfB V!E{DAJ$nEE002ovPDHLkV1i?NM1}wW literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/vote-favorite-off.png b/lms/askbot/skins/common/media/images/vote-favorite-off.png new file mode 100755 index 0000000000000000000000000000000000000000..c1bef0745ea9acd1c405ac11e0d5555e8b12d7e3 GIT binary patch literal 930 zcmV;T16}-yP)Q zl~7{r#<-|Zx+tX^7v1(nLEMz+FA(Vu=&lr@i%_r>io5Ej3qgvws#2;kN-aKOFk(}p z#$w4mvd&mnLCfqGB`LW%tTQXT~$@pwWz4*(Z$7u`~3X;?Ck6f-uOMADC8`%H49ug9F8Y$ zw_8+IRf)E?w)=F~D6T0AgF(40thghvTO@bbp`oEcsi>%U%r*rBP;F6Pqt;fdRTLK& z>)!xC_VxAkhJ(#!6RoYS59m#UO~C*#0w5d#&H*ynH51s~l9G~3PA->Ap>jP%V%H7; z1$bs+Zcu>R9*^fGmE?+(-EJ4{?d|vr-^j>_mM?&1XlTeop!aHPYwM^Sb=B3?ZURv7 zN9E<^df;4gaBv`wkB@cT+uMthZf$OE#_0YhP1;0PS65oCtgL+9(a~Wg;GAGQS@Lv2 zkN}h`N1!eQU0hu3oSU1o(cP$Wa&nTu!eDWr*}!96BogVHo}P|wZ*Lo!n{BzQY=b5*FE0apfWSv{QAJ{HZLNQP zem;yw6#{1^;uGuZ>*=Yfskc2nJ!4n)Ad9ee={G;^@9!H;&ZqE2X`<2Sx8B~~uQ}N? z!#RA{$lSzt+5M1{!p76PmY3|<5RSAL&84NK2CzIy@&xf8fJSJCngW4N5yyPM&Jfr$uh-k@bUF=s0dG-KZhD`{`3D>TQ-Os; z#w#l;;f;+A00-HDHurrf6dIy?@=((>&<&onoKqxC$uC;-AG8mSL?SV4mQhBw zj*gB7W@ctSFDxuPr@!!0KgLYy`Z|>GFQSP5EPn+U0OR;~TRRy%rT_o{07*qoM6N<$ Ef@zSrumAu6 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/vote-favorite-on.png b/lms/askbot/skins/common/media/images/vote-favorite-on.png new file mode 100755 index 0000000000000000000000000000000000000000..1f9c14ab0813a1aec1f66b12c3eebe7232be3d8d GIT binary patch literal 1023 zcmVZd<5{Le6mt|)_<`GX($dlRu2ZJkuE zjf4$Qewch0=TDhyPWI*W3&@@n;Mrh z;ON^;+o1J6x+lSyC4yAc5*r#_RRe6^%F}2A*z}DOqn}Ca7lL#(u})I%7x#^k&|B0; z`f()bM-h)+;pZ4u$ALJ}P;Wvb3dM-H#z&Yj5-&MXQ!CKC#TXEuPEEBSJ=cPnS)ej| z2r5#+g@;jQ$TU_*6Ij=36b6CwjWTT^%5_m~{H>S28)%4W9OsGaYMC6L=yK8ysOFtZ z$a|Cc`qnVdXsKFY-eyhS#>TZMyvv&Gk-Z`#?>^Zjhh+Uaj*dLD2Glrl0XhE%M&6JK zdqZ9sxMdI+<1Dr0Qu()0dB28}pC5!-B*l|clf(rIB=P3C6)a-E6moW+nx^tEqNfk1 zhaN6W(@j2{T4UmW|9SG(9X_!#|lMVmx<&Y38Ta_F{^dJ0jyZ z^KE3Yfqc<E7fl_u~mXc`B_ShF#sjOqSPbOw6(spucpG!yqP5!xrMP zXa--)`><8~qDbZjaUY(43Ik6LqKX$#+j`!7QB^cQueWs7N thq=s2qJz(mO1EpR@jr*ce;$7X7ywPEpB^Im6SDvS002ovPDHLkV1mKF-a7yQ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/images/wiki.png b/lms/askbot/skins/common/media/images/wiki.png new file mode 100644 index 0000000000000000000000000000000000000000..06d487f3e2a76ed2783f6c3f95b56bd2e2249680 GIT binary patch literal 5178 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 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/aol.gif b/lms/askbot/skins/common/media/jquery-openid/images/aol.gif new file mode 100755 index 0000000000000000000000000000000000000000..24d1e152c952b30b093fae1e9b4df6e9dea44750 GIT binary patch literal 1872 zcmW+#dr*^C7QZem!?cCi4Za2uSG(A?)lR)_AP=$#uGO}Lw%Ju{QB#pyu#UnCq9Qxh zSm;zBV61Sh5h~)M#VTZrfPfD~qP-9-R)T~G8z`6r9em~{s&r0&j6SaruC9Kr2SKyr%~ZsOJ<0K1{#bAT&Bc;E@BM#iVcCZ0`9O;106 z@of6}9jmLOZv<^PGh<`1M|ANYHx_$sKKqiUM6~VvoVe0O373{88CUGD2t8Q6=9{`t z_4Tpeo05u~v_Ji-t7toO)Arxyo|@LaYxnzawma^2KXwd1J$bd`$J^aKgJZ7Ii5Hwt zKY#w>1^n_qPkPP(qv%c0fQ0`9^5$rU_xv@N3a@Lu#Y>}2mwu?vn7R1UR7!Cg|Skive}}#-GINZ|~Mf_BpM!sTonH zF6$Q<+np6T{vYg(=)T?Bc(L$m>O|MwAFGG@WP3CnKkuGn_P?BMdr(%Np758NZ(h5 zc%#^9{pV&`lEaqVnzHL*ox#7h?Af}X0zN#{u}EK3Djljy%>SiqG-${sXGQb2>r<8o zC=HgH_EGXl;Z@_Tyn>g5mj~1ynz9b?1sT4ZgHy*HwGoY-C$AW8Oa*(2;gXH#BF)Ih&6N)gkb)&<*= zB6P}}>uS+wuO_NRUwdX3H6Qpxc8ss$vQLj$Ig}&LKG>njk6zzt(gw;0yCQVKQ~h?I z(9vz$-{ebf{GO9Y4Mv0X@hjVOvWGcF-$bw83RS+-y7)}Gcdp+i`O1Nm&HE=U`XED9a*`>tcdCx*t; z;fkqzRp@BGN3(PSCG<vDUMnh5bXB)n6!F#l<5@f6 z9HZw?4>CtwO74QZA0n(RT3^|gN7YXG+VES=>ov9YXIEOf)T)rap86)Gquk$I@ThQ~ zD4g9fo%lIo#j0J>l4SYujgxQA$(OmV*|WZzC>PJa;VeU* z;$zH;2cFAR(v7PxsFW6_9r{ORP}19^=a_x0?aFUwBkOugTe~Ex2BXR{%Rg(L?ACp? zD0Dj35E=T?muit*Eaq|9?UsJ6NNMY-%#n;yS&ZmiQ%#OC7Yi-ib z4X+*ObNWTL7zTTcmx3p2@NDI{#%?bEM*4(?oKCLKl2qDH?JXQaXl_Wfez789>xxbD z<2=)gYDT&au-E_Rsu4#8TMk=alXy=RrLFq5VJy45F;AZzb1}u_Rkz<|Q^WH8 N!$&m7)`lS@|35eW&(i<^ literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/blogger-1.png b/lms/askbot/skins/common/media/jquery-openid/images/blogger-1.png new file mode 100755 index 0000000000000000000000000000000000000000..8b360ea5620915124dc45ea465a9f2411730a925 GIT binary patch literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*VRoSU95jv*GOlT#X+>N9=*OL{Q)Z2o6xWB>${ z7E9g~a4RxB%)s5|;lj_{?8?N<+|JB}<)%Hfk6edRIx|)U-=MyYvG@3L2ePrxsR2Oqt zBxw2I!og0~3Z95SriB-Uh0Z(^<`&3W(C}!9Pi0zD;fb^77(DfzpVpq9FbC*K)e_f; zlH{V)#FA9q6d=I>^q-}!frYMtWr%^Hm7$51se!J6iIsuDpB2g>Fb%o+DVb@N$QsOa gjf_K#jI2zIfJz}6>YoYA12r&sy85}Sb4q9e0RGj5MF0Q* literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/blogger.ico b/lms/askbot/skins/common/media/jquery-openid/images/blogger.ico new file mode 100755 index 0000000000000000000000000000000000000000..1b9730b01c3e60a396afa4193986b7ce800784a7 GIT binary patch literal 3638 zcmeHKJ5Iwu5Ph~|?1U(aasn#_qUHo}jTDrKiXtUdlmp}lu2BjK4iLGb^Z_VRaDbGQ zV`g{OIJ=vVkdP%LkF;y=%$twL>zy$WAVijduPI(q;0nNaEbGS@D4BQ7Jci(whr)Rj z2q%0XEZ+#_Ct;QoHXnrD7mcRRG|JxzlR06vA#8Vq`Ijl@shxhCs9J>F=Pk_Z-FQz1P;kqy49I?9vmhesu(DDd2TIQ)X`OMtv zn36eGX(BoIuReV`=lQ(PMGs~LG0b10`Y_|q?3EjYCVKU(mu83%PtE7$VCeoT#ik(R zI_G=Ly}Z;TPEX~szaC%nFS05~vowSpGdW`wz5QNNiS763 z)A|{|X4mk|Pb``6HD(c4gZ06~PM`I2P38&B*lpoil+UKHq(V!B*N4IXtYRdaF@vLl zmV&|Rr42{^DojjF{P2k7k-;lA^VR%bjPq6nUi{3FY3ZQZzmogqF?nyszfZWEm-L2B z-JibT!wa5rZ$|dN(=9gsk6^s8>ePX{)JfmC{wZV@OTAD2$6>+F!Ka<9w$43N|KZD> zPKm$&mc^Jhy;?nm8U4s*&rmI|-^laso@xK@w* zQ%73r<~Q4ldN041`4(R&vsZcBa-Fqj;u&0Ae(<|~YnlAQHvQkZs|?d;eGo36IJ3*} zU)cm;w5gW3MwBEMr6!i7>ZSk*1|tIlOI-sCT?5My14AoA6Dv~#T>}#<1A{*+ltW+| qa`RI%(<+fQnCTiBhZq@InHT|;LNwGr6P5>RVDNPHb6Mw<&;$Sg?fAn0 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/claimid.ico b/lms/askbot/skins/common/media/jquery-openid/images/claimid.ico new file mode 100755 index 0000000000000000000000000000000000000000..2b80f49183c7c36fee4c4f9f0a82d4fd9950fcd5 GIT binary patch literal 3638 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 O!#>o_*!YQVNcKOTTaAJM literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/flickr.ico b/lms/askbot/skins/common/media/jquery-openid/images/flickr.ico new file mode 100755 index 0000000000000000000000000000000000000000..11f6e07f68446a858eb793ece7bd44dad957a8e3 GIT binary patch literal 1150 zcmeH_Jr06E5QQJn&W6N<+R_e7ID~KjOJm{@{ApYu)=)sD$dVm%x8e+Ke`=wY_TR8Nr~50fe7M}lw@Sx z)|sz}w0Z6jHaQ_AqDOitt<&SSea)PHxo<4{I(gaj_r1;9XTGktbGBaB{saBT0srj_ z{;~R31Lym74}$(bu>NSIe?gpv&bzYY@H?IKd literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/flickr.png b/lms/askbot/skins/common/media/jquery-openid/images/flickr.png new file mode 100755 index 0000000000000000000000000000000000000000..142405a6e6a4d5739f00b18dd6ff5693f6db1109 GIT binary patch literal 426 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*VRoXegrjv*GO-%i}<$K)u`w*TgY2f{yOO759% zIVQj{S8?O+?FWuNikNpOhMmz%p*o8@@35=;(PrbQ5pQe$i2HdeZ*?nLqyz z*gx6rmBaFdf&I+MMb|f6OiX%kEqhthHhX5F*-XuQFM7Gz#J$x2c%k9W|0p|=FU=Ef zNL2hRo-L$jZzr9ZTC>}H~WqJD0<%)F#> zzDalYrg(pGEJF+otqe`9Obv7mOsotH{;W_AfoaIiPsvQH kMAl%YYh)Z^WMpMx1XK#qQ2$I=9;kuA)78&qol`;+0FfD;b^rhX literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/google.gif b/lms/askbot/skins/common/media/jquery-openid/images/google.gif new file mode 100755 index 0000000000000000000000000000000000000000..653953658f06dfdc9cdb2a4d46cf1d2d600803f9 GIT binary patch literal 1528 zcmW+#c~q2D6o12_Bie{5;4%_8R4Q89i&yW@BMA}`*e#JsWmGN=nZ5? zh>OQKr<@bcG3Q8BjB!ReBb;H*kZ4lIDdm)KiaAAMmM~5zCxjEs2@Lxp>&m=Gj_1b;va6~+W3$QA5@3TP6934$CUX$Syx!8imBZXrs@17yNB!~vSXFgOI& z00yFA6J&u7AO>uJM&d+b8ro39LvS$&68r%zR2YemL*(kbw`e*~C}MVAMa(*b7O6Y4 z6RXZR#1Whh1(H*=xQSDT0Cqyd=KxoN@W2yLA^$VF6~}#|eqXn*{7_*7tAEyN>vatB zrazwkQr7satEaEuF*wY7`s|M3!HJO*+xyz>4tvR!lD+qgO-*&24-5?02L>FyJ+|kU zMphJP`|Z6idb;cDEPuCHt)*8wYAae(*EJNKzL^kx)gArkaCCHZz^Cu;aFc*hG)rg@ z{{)h9B$3J^FXY`eO2^MkG+j7$=UY!j)K8Jc$4mE5#Otl5;{1CVe&OHA7hgP4o-;ir zJ3w{NTE0Cn&pe~7s7<{o|Kgg5%Js|C*?-lX5A-frt=^b+Yt$~Essx-oU$-EEq_0*d z|065<SCD@H}b6w5t|=Jg(gZO%0ed%?Xf9L3!eOzI=i(rd{)i!qZ=DbCOy1TIVJ6j z3i-pv`h`h{724}$`K-B#SS#!3KBw}uj{EXpg1KLrnQQZMxw>Y&R5nF<^5<2qe!A4W z?}PTCPVW8oxUtISF%|88G5WGB9qKGq1kNe(K{t<$E`0F8*1ke}VM~U#uhS^qJ>kz< zHuIJC@ew}m4KI$Wq~>PBw(ed2GGDW8WSXH`>b5M-Ax&8#8%#{e`rLABm1k0On!*sK z+Z(U<%qYl7OLx!8Ss9u#q|6L{)UTR`ybJw}WBN8nRL4knDw?K0E^yJxf+nB1qj=ew zlK!5@nAYm0mKud#ZCSCSEo{iIpjNrW@^0q)D0Yi48ju%{*y1LUyf(Vq8m|vAM#LY$ zEpji*SLj;&h}`IT#skVCue+7G=tB7u?Qr2oOEp1V>derjMBCWt$2B_wLWjC8RqKXh zE#V*H{T@H)f^3H_eUt4fDV~AsySf+VxLCSQo~$%z^iyL;^-i6yZFWUr@AT%6Q#Y9I zPgYrz^P`me_k@=z22I){8n-iw;Da9$mivMUVDTVaT>cjizP#m?{5Svx3j+jg?Aklq#>rFWq%tblBY4FU_&> O8(&%sYeV%~6#PFV+wk@P literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/identica.png b/lms/askbot/skins/common/media/jquery-openid/images/identica.png new file mode 100644 index 0000000000000000000000000000000000000000..2b607db163d6159412c694e31036a361db75f3c9 GIT binary patch literal 6601 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

      7g;&>oLSQWk&pYg5F)WLI?J1k&X3ih{ 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 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/livejournal.ico b/lms/askbot/skins/common/media/jquery-openid/images/livejournal.ico new file mode 100755 index 0000000000000000000000000000000000000000..f3d21ec5e8f629b77c77615982cef929802fbde4 GIT binary patch literal 5222 zcmdT{3s6+o89vBPQIq*$1QbbvAP7Q0Tpmk!l@)pHf>>S> z1vbL6JXf&Eq~nt$W+Y}?NhYbg%X2}TX`y3UlPS(H)68fPIsMMP%d)ZvOQtiO{(Js= z?m7Sef9JdZJ&(JD*bxy~wQ3b%;$cU~E2vFPBC#hV6@5-lg8iE%gba#Un|TxR-jjq} zb3h#KnTHdU;W5$jSK%T=Pj@H?K_Lo-P~nPOqSb0qGXv!dp_JW0@nc==!i$LGD~{u9 zt~8U?B2Fd~qvpC~M^KA`gqqWJF*i|=E@%ujnuad%Of!pb5`P(QC7kR#SP2OTzQ<#W zlv%8aIKD~feX!6nCX`OuQ922|4;{CsbQG#}pj5FEW=E(mRL;B7LWEq0KANYW^3Y=B z_y|vmH;?ldeDaRw*8J(~hC!qOw?4H%Oa?Y1JnqbNZuG{_4-W8zh5g(k>k33gQDw%FD{ne3XB@ z!rC7_g|Gdhw<&R;HMK*r`+|J;KQGI_{V?zIn&?P3mLE&uo!9m>GUrS3pvy(U5A^kP z_$(c0u8#D!b_R{U=43cu$bYTlSjYsNjhYF)s`QQZ*3Ky}xtxmjy4jX?u^{kLVeo`r zO$S;h4E5!2dRRN72QywCwpkgq;m=hECwm&HvGsd>T}g=BENAdX&yl^G;15ZD@oDXe za5~)ny+KtH;%e1SDcr|-+q7@ZKZGT0tS19Bm$;2T93LRj8^{4y675bB zwk%H%+bJ)|KhfTK`uexou|aVjGo#E;Z%!+~BizWLXGzMgwI!$9Yp#x{^ivH+c7UV2 ztG$yM@p8QPk{Hi9qZjA|_iy0IrBz^V2FDGCt7!c=X2YVB&%j+s%GRZq6}$VIQ&2P#@0_gE zNAUFwKQH_3h_#F3ZUXmN_F>UpAnQ~Ky-mq~NZp*1ER$dEt(TrWr;qctLx_#Sm^+j7oj?A#I7DC$ zaD!T6s6Sj3{L6HyM1HcisHVO0oT2v1d(D5PMI|R99BoZLz$4vBrg+7t)3*@)h!oupL+wwg_YH%9vj*4aIjHXba4{8xkuc);A<= z{dZS2HK=KK!_1Gt{0T^;r%|h@D@A zwEWI*^|gxqvzS+eyR}HSKjd>V18&q9+tQP_E(>?D2|U7;$hbAy$_UJGbI$ekhw(yN zQ(t@t+Lp`(@GUljJClQ+q->vynK|C(jk-g{A&xDnJEp9_2N%N}naK~`m>>4s;pgp< z9QJ=jEdleAH`nptjkB2FdOtgL+Y^|;w&WZ>d7<84e)0JS>Jtat2~yqPk^=D3P?xq0 z@f7|6Jern%&D$w>p*GAGyl#LeY+CZk`Lq2)w{GZkg^@2rdyw`F-&0YZ?HMmk^)y+7 zCvI74%WRnjCpgYpE3*5H!##ZipIx~q^<9GpuZi7A2hXs1Zk~!pO}{2J>4l}(OBYOw zFj0B(Bt6hCeb>`pT-SE@^z{x5U2Ln3-?S|8w?F!!Jf|8`_0G@Mi{w$ z=X|SDy7MOoto~1%!)>|A@LPpZ)J;^~NDC9o;+|ify5q^Z+~}r~bWFtv8#b;5N6F%T zh9Q2R{a&r|U)2@;IgyF6UTmI3tzX1!nST@^QP$V_qZVtm#9wTzwZCbi{LlWU{0Anp BEK2|Y literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/myopenid-2.png b/lms/askbot/skins/common/media/jquery-openid/images/myopenid-2.png new file mode 100755 index 0000000000000000000000000000000000000000..f64fb8e81b1adfbdf56a27de64731491f9cb82d2 GIT binary patch literal 511 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*U87#KA?T^vI!PA4ZU5HLs*?m4T~osf_a(WfS} zvm)v`SIO2h5hl-#3=Gb+7M(XRF!+<6knkWmA%Wwf`PRDfmtQUhpLjKMgGGYSl&}b! zwWmuyZqbuuV`Hl{v3$dJByFmt^UT=p<)yYQo%-{xeeGy$T*&Rq8zz20<$prqO>>R6 zE$12RG-|oJ88!xw#@LoR68=nUA^bgP7O;gK1jMIbk>J*@O-}%8c!i(EIWI z{rz}FN5!-nDf^l~AEq;E{tD!I@bFpcygPA6JI*)UIkoM-yj|S^p637m742qhFYP_hAF>%3ImO7yz6kU8N?5ex!R_zs z>o0dpe>}!^&mjdE692ya)mHQlOyXqlj0-XqdN%7fFaT9cTq8=7i&7IyQgu^+1OqUD zEOiYmbPX&+3=FLdO{`1}bPY_bfZ?@5IRvI5H$NpatrA&-nXZv>h>?+%i4jmKL__^E RVR@hi22WQ%mvv4FO#r_Lz6k&T literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/myopenid.ico b/lms/askbot/skins/common/media/jquery-openid/images/myopenid.ico new file mode 100755 index 0000000000000000000000000000000000000000..ceb06e6a3f0d88fb97cf10475a3062fb0edab33e GIT binary patch literal 2862 zcmeHJJxc>Y5S@6ZrZbS)owhjA&;jnXfl*X745tmMB3MrBW$)n`RP3b417qd6J6bL?UM{+)q(3xlv0Ik%T7j-l59$8$m>#ard~jq(8yIciUu?j(!>?&WKIe?G5c$>` zV+r!H1WS-ha)=*H^!uZEl>O1BP8%xc=fconk~~4DvKCYWn4`b_pUnoZ788}%mc>uh z9HV;s)r}P~NWtqf_p5&HGjTJoZI|S8n)uf0l05g}rdhqaIBpnv^myAWbI*7E=&N3x z95xI+0zR;x-|08c&;6Ul#XdjZARV+no-wSN`};1(+>)AIisPc*P@H*_1Kd%ys#()H z>NUmL)tL6ccj9UxPF`{LG^Rc9JypwV>?^N0yvK~LBc9f{#^OA9dQUv#8Tz7oxfa(K u#=%<%_2}PpAb{bmUKcqz}))c5uC(7v?)v4a2P)ZNa- z@$&T2)z|&~{r~^}A^8LV00000EC2ui01yBW000GQ;3tk`X`bk)Wk@<6#nZYULKH{p zEx|?+kif!I0vIL|#ZMubBmjWH2OtmxIFVa~6JQ7!1CK!f5W#StOTv&C3=E8h2vI1s n+#cd5;2fT3B_0kF0v!+!GARoV78n&7dMN`JIW(4+BOw4gP{MS* literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/openid.gif b/lms/askbot/skins/common/media/jquery-openid/images/openid.gif new file mode 100755 index 0000000000000000000000000000000000000000..19eb7c6f6849c2a5ff61efb3fb9980b6935a4d78 GIT binary patch literal 1473 zcmW+#Yf#ix6hFHw0+uWZN{J633Nz928j!}gz7jM?q9K7rMTES$}eFf5s@ z!P|m}uoZ}iuLToalt+M9BTxxs98l0$trS5FSZ?R;{jziBob!8~|1J*wIOxMQk?=P3 z0|@!J5KIUv1Q7yc#kt^2a4I+v9AuMm!I)rFFd`VpS;_@vf>J?=pdeQX7la8y1tEd} zA_?FEm;fq(2*3id5gM^@8K*(=$j3ORoDNL_Dd7~PD4ZpX z6UqtU1W+Tca$p=N2f_haQ8j|0XjF-^u!qEmjnIgN%ODNO8XskhFb2{e(qcs^ql8hA zc2Na331x&Z0_Yw^;Vc8nfG|LNmh_9Y~DW2#r`Elap<% z@exWv28sTV7Arz10n8Qcq6%zMAQUi1Od10~T{wi^WHG-jN z+(cQZ1BnqEp+TNVPGcKue1I3jAkiPvVnslH95Pq?y=BvWLK(CDDst8yv`pQeom{oY zA&+2pD3R=<L~%pK<7J->#eUWqzdnP99JIy!?EgdYp@|Qn^k~ zpH&y0GuP20u4qH(`4g7!XRf#Urar%BW^=Un4tJ9&%aZ%cqP(ns9}md&y4bCqx23xA zSj37ib{5?5yp`5gmSAe#T=;o`ZPdshefzr$lGhqHJ-+0h-@=@VYEl~1x@wh2?3i-s zP?#^c3?^L6I6Y%-xou#}#5qr|?ss%FJ81M*uQjC&gI}q^;IF)%=ay!&`k%8j2ix|q zEK_Q9jk^^3rg81(Rv)rKs)13a-8pIM&Ox^2iliR{YvLGFK}K%dR#7DABh?b+qU5nmYn6uikz{5MVWNhu7tQC#U9X~WIi}GG@Cc$k*0O(R5 z=w`db?>T&BbV`?lqU=SRDz0_hgw(j3?ujR-2RFw@1lbNX1hlwEt_)x`x9+gC7Z0>w z=j9*oZ#BKwm1NwSv8XpDAUir%v2pqM-tht2@bPX+<@V6-@IUpH%)vSGKuc!HH#92a z{X+u{g}c_|9tm`sRWs>Z--+!SrD_x_Omg10G<&P_n7~O{t!!t7%B5W!UF;e<`;^7A zwQ54v?L|R8fxV#xo)x!)Jy@}#|N6aBL-;4@g|DuU&R#a|@&~^2T^3rO)%s>^=&76X Pb74>Yv=aWQ2Il+^c-q-* literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/openidico.png b/lms/askbot/skins/common/media/jquery-openid/images/openidico.png new file mode 100755 index 0000000000000000000000000000000000000000..ab622669dfd9a90d93d01eb3e371b7cafe6c655e GIT binary patch literal 654 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%3?x6Bmj*I0Fp32Dgt!8^n_%GkWH}&$@vzfy z1rWt>E_T&OqG&47xJU{SOk_34Y=jC7*0n{c5V6N|Jm8Y}^&-pOTo@1JE@fGk2Mm|U zk|4ie21aHU7FITPP98pf0dWZ#894<7C1n*|6AMc#7k5uz|L};|rUGc>Lt$+fQGx%PFW>%kX-!fgBRjqK{jeiYax&1X*6P`ZiOyxhY@aaR2pHCO>zir$)LCtXD8x_6F mSx4_%OzwSX@y%uX6P_|}hZ#5T25SNR#^CAd=d#Wzp$Py+&RzQe literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/openidico16.png b/lms/askbot/skins/common/media/jquery-openid/images/openidico16.png new file mode 100755 index 0000000000000000000000000000000000000000..ad718ac5a62bcc6e995e934064f095ead4b6e7c2 GIT binary patch literal 554 zcmV+_0@eMAP)&P@Tx$zK zg`~UL-C8ZQ2-|28!5~Wx5)m0L>Jb1(5jV;Nr?PiaL(OqwOY$%cI)+e zAGk59mne!(`M>};2%H0!rya0}IAG0BlH^dWR(m2M_f_=)@IgeLT5I34aqs`2{fRh^ s=d86?fHUW}g5FWL{!;FK`&|V13)hOgVr~+r0{{R307*qoM6N<$g5FK`NWB;egxu81uWJVQJd%?yFbuOKe63n-+pJq8^_inN|!<5KX zFN*sfuYBh^N#*37U5;*-g&BHG&qzF5KIPbyTdo@Gp3RZ!`IWi(>*ra1sXp?qirOVN z+Itk=U-XFkoPOfbN^#}~I=N0}kqkSk`viJ^ao?*q-!qH#kL$)M@5?;K9~EEDvaZD#)>=N%EREX+1lcxA4c zbH1=*x3k7Nr4-imOyRkvhk35~Crs+v$HZ_e=WoT`Y_=s6ikx`d{>Ip})TM+aN6+|d zsKDGyYt<-~H<*?|Py7&ZkT|u3=hh%dXrI`@B$d-ImSy<^r20u_tJy z{YrS?&d+&*_oKPcrceK*|8w1xcc@~H-P%ytZ}Ltj+A zE!c_l2H#`zaX;dYlru_mk^31KdcB@L9&W3#wIFp`YJOeP`OSr1{CK6O-`2Es@?E#T zy1MFK>-Ep~I=Vd7%e_s#J@}-Zvwh`X=4ClX_h=7BXW;)k1Ifb@+v7M5AZI7aYkiNm z$KjX;Qm=X2(~a>=Zn(6-IG8mv>sbkaBEroVrCFBdHr=3XM61uF&u!`5GI1u;Qf<+zMxU!sr1q{f@m!ic#&7x4 zjcDZqv{&NU85cGO2UiL7I^;$4kVpqJ@-E;pjlK(>l3v2Y;e5IS@q=)?(5+CX;*7LwCwnlxopJBahPURBFV+~&J eFF>coTp;}_7zqbJAQuX63TM^f{)_Klzq8-HK65Pq literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/twitter.gif b/lms/askbot/skins/common/media/jquery-openid/images/twitter.gif new file mode 100644 index 0000000000000000000000000000000000000000..173cace1cb2481dc6cacc7416fa59321a4410a36 GIT binary patch literal 1913 zcmW+#YgAKL7CwieY5}VyZ8R~_kH`^bsN@- z0`_c0-pGs)ejj3GXwlu^Pc$0%kL@kK%zA&hX0U`7z%%TdM=#&L|pj6?h= zrVJB?IfgOA2#^?}3=xJnhA=~r05(7a77Rl-;`i`DDCH={lp=mDWQ0({QGzK!JPRmt zgmN6^Fy#o9;&TX& z5KIW-^}$-mIF4|baEO-+ETD)vf-%7e)B`E#C5R&k69n?W513=G+-g#Ilc@z1m-xz8wvVgEo2yT7=f=K7g#`%LzqM0BRCBP0550n*fhJgGo3@$EQ$ynx z^VD?T@c6U-q2aNK2VDc5gQH!B;ht9}gK5IEi3yvT_kHH~fcgK%KKPA&NSU~Wt^J+t zc*4^3O!b158rYL@)-%bhGpuQp8LVv7#>_L!YO~G2OSet4X)BwVv0AMbiv>O`v%Dq% zq3C_!fcSp`IWZ(~@>pMXsV>9G?cE*CWqI|d76>=yt}oC3_3R>?pldEyHz_^C&vsG?mZHrtNlXkpWwbmdTC?YtiwreA{UR4Z**yA zXyg3QnuBAgP*dHem!z6ev$bfU$Gwu68|m`5zyEXf;lXB-;TW1L%IT@{Pw`EPmmGMZ z7fiY@3cdA3S54b?pC6Lis;2t$WbrLaj+3t1(+-X@lc+?u>iTTt##J3MwEmR%)}v4E z$Pdhu8{V|!ddbt5x;EVM-`-dATKV{sDp@a%|d0=^KFgF;31__KJ4XuDE@ES=FfMTMiatfwSc6I_AFZx$ z`C)L!+|a$BADY`M{!fZL^Js5ds!-fp=^zd0F9`QSL#_MnpGeJ?w}>a21?`eijY{Dq zefD4d$${!?IlIR+F)q1Bf6j2(8C@P8FV6kB-UaDB9zXmpa>}vm*hp=RLbdJr(++Xk z9j09(2`g&M$;Q!nR>)i>eT6p^l2?`5ebL7DIadREGh?=i98ZTArJ7=Y zEICT;BoXzHz`k}`%->ZY6^Bx5b{m*0w$QIvTTy4<#Wv)qx-X1INyD48D z=AhOVX(IK0iN{`4;dagVf`+nl@498J%r|IM2JxWAq>!j8#)nyBH5u>yG30q?@s6tQYb&!BNPUYFqjnu}4Qi?IUKVKFdUBO`Ul__R4NEGOeYexKlMWI*z(Qb8~sc6rc@?X|CNB54|ZsR=#7X%AjKAE5F=8`_Ln|Pru zL2=UTJ#)9XvP;hE3cFY4<(x=(XZ-H2kg++(H4$@H_ES!_WY12g{Yz&uFYcT8-Stb|<&5Y3>zr@ZxnH$}pZG_^rd^?h%A+s->D@i- zxH|f4-;lq)bvU8-lzp7vQ|J9=eC$^**NV=BFTC>bOTRxif3_(z-L=!h*QfS={%C>r uT=JyDv42%|i!|!_FUMwk?f*{g(YL-y{A@&#O4aX}o122CRw@JnB>5ZB-r*ns literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/verisign-2.png b/lms/askbot/skins/common/media/jquery-openid/images/verisign-2.png new file mode 100755 index 0000000000000000000000000000000000000000..c14670084ad7edd1b0e9d0795e6528cdef94476b GIT binary patch literal 859 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*U87?@f-T^vI!PEVa2>oGY|}cueE8LQ-r;?xW+qEnNYQEJ<;m0d)a9Q_@mBVkN|!>Qw5|?oEj@ zJHq?c^=`&1?qzR(mMiWxyVlEZV}5@A=jwBo|BFqWIFe>RcdoZ*x}TP)x54RF-iE~s z8DC#e@LbN^5O848Yiql$Ta`ELV`DH#n{(vi8smtFhy%ax$(8JV*Rc1K+L@U%85qvq z7pmEuXL6g%@aFaAyM}BT%H@tx|9dyM>Obn2cTOoZWK*|KKKZ)!@yE$)SOq+4T&ZVtR9A6KuU$Y6Q?$#Qaa}_p@ ziv*gC<@l8sFRJ+A!F1kJ==pE9CPrpHc5R{FIYm32n)aUJnmlO|N5i&BO52{sK0kbA zOM=7O&ft=;y9;$r`wVX1A7Ex4E?i21Paf zk!EFRxSVGEDCsc+!>?d^$k<~9c|4`!9(VT;faV{nLzlk55Tah2J(E1ez6oEP5T-aWN3KX2YP1Ks=A zYy(#2_0JYBF1~uJRbbBS84GlMPM>=wiOhxKu z#nY^gWqq5n3nWU#buPR-G_mk(7c;x?hvJ{?`$|fat4cU-KApNFrdB^?r^)|yoAa;r zUc8nrk(b}TNXJ>ox==$^@_Bx!qMqv0{kMOz|Izv_r~7BpAzFVdQ&MBb@03r5qo&W#< literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/verisign.ico b/lms/askbot/skins/common/media/jquery-openid/images/verisign.ico new file mode 100755 index 0000000000000000000000000000000000000000..3953af931987b0e66c122b338dc352502564eafd GIT binary patch literal 4710 zcmeHJc~n&A75@Q)fTGMB7?4e2SOip*O~H*}8$=cdnTIhNBRWh_BW_>?5imwU5pfq4 zQ4m>QjBTZ+CRIeErNk zREwwe2CX!zp{LmSu(HSiXS0Z~ELfW_hmFlL(pSOSItLB|b75<{0z+Ju!Pzbsp04@u z^IM5gez^!5o)68~JR~M1V)|=3XwNQ8?a>Ya%3;dK~By}6c*$o zzc7z#uYNYpl*u)SjcUZ3@pYK4t;Vd>gP50g5b0^P$e34y71<3~mHQrY z^v!hsAEG!C)5bMuezljdfeI&}&sTTWohhE|ksJA(uJTd-&Q zMO2ly;NXEa9IkGqoEFsAT)_K>+aNTx;izy9$B(q(h|rGX$9{>EKmIk&oIQ<;7cbz` z_Vf7oOgqlCbl~T$U*gkC?YPwb87^PGj4!TTMMqaVuHU?hTbV;iCum zZRbOL{qcZs;#f*}wrlz{`0xBe*(I;Sz zyL{rRJv~s#3{DZZtH%`9aNO9+=O$@yE9B}Ppw5xAUn^OeZyC|qoIL(nKmn&nYY>eL zKrf+{E*!VX7~r9ZuM^b@Gr+V$Li3f}Ym!#NDK|=*KfCmKlHM?d^N_SO`K0ZlR@aaD z`$@HgRh&}Pnx=3wq}{WbyQe^@gROXtjgE@>Qu-jEKP!rl1Z1YS(s35^4X=At_Fe%L7)Z2wJ zI=BcM$Zt(2XjtYnSb8HX6)sr~HNO7Fi=k7(q*OSR;1tv-=GQtZrfwBAkrlHYyo$=k zI88HxY21*dylU_ihyn*o`a+siMM#3?z2La9_bI5tty|5m@_$Kv=M-r`DWnsuDXI|SI(OnaFs5Rj zX)H<$bK-%v#3C6u8ZzR^Dh7HHqo*OR6YUU|4ygcb%!+EsW(iDpCu}sLU`Ao=$b{)2 zqYUx~O12syWYaUKC^j&d+|rIZmK*4)3nD=!V^Y|D)97J|C?PnK9W{j|5sikK_<-~j zB9Ma7re4g!anVfBnN3BRq6!uR)Iqc*BNYKUJ~~i(NLEqh;Ss1(xyk6vj3QL-oI(}E ztJRXtBFNMQ1%(&^QRrgWCG@7zAyK_e%IJBC60Uv0=A*yw|Kz_F$NuLuvWqkMvw2)i zo$zJE=5ZUFK~Q{S_xsb>KZ5B3WHsh5CkCG#~pZKK$?_l$V}GW#u_kRkqUX z`UyTd@da8=wc+%sYiMmfjdN#zfeRNd;rz$faN&FhZrr$v&dv^;YrTU@mu}(8l`dTS zyp!h7d$`$gpJq>*C%Yct?%liirkiHU``!4q`ysx0_@`GhR*Wg zL+$LnVne>U0!F8BBDJgQ#SO&zJnpsR{N}Sv)RGX5ladO5OX7h<2Rs-#nHmcwuE~3rz z2>~NUOyad;2ZtE}qZs8M)E9^dp|1)1sQ>G$Z=aRsiI#u(rfHU-9}N`$^h{weM0ms) zh?4E1IgP=fR~iiIb_PS5COyWGoN9OA+h%v^2+Yx zGJaHiGz3ONU|59!7au1(GXnz`A0HnV&|@H)n}q>L0s$9;ARnmIVdDT(f_z;3d|=N* zDLy_ze4rMf1_3@kMlc035Cr)7nOM2`_ymE1g8cmaK$@2aOo2_OfcXEPfdPgOHZw3Z X0PU5rU|_JTL0}LcBo2~?sfE!1%eOAT literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/vidoop.png b/lms/askbot/skins/common/media/jquery-openid/images/vidoop.png new file mode 100755 index 0000000000000000000000000000000000000000..032c9e9897bb71bb0a603534bfac1a442be1cf20 GIT binary patch literal 499 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*U87#L+dT^vI!PM@7*>(3M@;Cgqe21^@jt1Q7KOpyh+ge)Q1 zK|J4huRH_#zwbc3UEA;R9AO!H&d%roag-+O5 zO!N95T@?S*G}Sgw{mN!=VmhZ5Rzf4>LLtlrZUAWLgGPY+oVrG5xo^yW`xZU-Q@wk~@ zYxS@D)yH#t7kvCm!TtK*mFh-7(+TYB+*i5pa!nc|Jf3SU=XN{`fjrfux$lA7e}n0{ zlfCqFi>Z(M`wVVG>yKK1*9rZ1`iw}=W^iIUOLNU?<8e1$!1FrglCO_u)5YTUvK?eu yI~YIj#-~XLO;hd+o2#A2S^08*UB1qS`QCUE52vFxJ9}scm-~xFcCkL1j=lhFMR`a7 literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/images/wordpress.png b/lms/askbot/skins/common/media/jquery-openid/images/wordpress.png new file mode 100755 index 0000000000000000000000000000000000000000..ee29f0cf1acf19c7dfe7407b582422511d8d20c9 GIT binary patch literal 566 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*U87#QO{T^vI!POqJOFt^!3z;%8gR{`e|W&z#@ zTsh$k`!={g;#w5)pddwmoA!p_Mo&iVU?$Z7C%!+f+Dl}VQdLz&Yw`xl0Z#EMLLB^eIW!H4}F&{V=c{y`~F=GJ7WcP!sgnTVS9uyb*-2UJa zyX8gU^EHyJ5)F#0Z>a>7vTsvVNHXe-51kX5%U84V#``+8kTv3J@u{J|FE}JUSQ0Bg zlc#vvo$#l^NBfjkE2}kMVfyAM?Qu71W8A0etJe-(wf?BN$j{t_Xf0)0$=*^XiS;GhnchwTth?3-@)Wnih z-4r0fU}RumscT@NYhW2-U}$A%Vr6QeYhYq!VDM*!atKUAZhlH;S|zduGhHL&5F;Zi Z6CjKRe&~e!ri$?{9tmeb%mvl%u6+ z5+TN)z!+tWFoqdJyb=T^P$m#2U?w2mqynRqQNk!@6!BRiFhUt2j9^9(U&R8$lwra! zW*7kyLjpsTA;J)52nxUkXuyJHm`0q3KPm`B5U?O1P74*K0wn^)0!3T}Gzk?55eOCt z;-X*{QvnkJV*w-32&)330wMy!0s>Z04PYP|RDvw%0Wn|$G+@Cp;)Zw)k5Gy!Mcg0I zLPZEAm=eV8f(mG2LNTTofqM`IvlJ1EFhyVw@&K8z4RL^f5CINBHGqL=Pzj@;1Bd|| zpaBc<fJXd8d>YzN!$WW}2on4OEmRoskAvrGxHoSaPRL_6T!qgX zg663kvg50UIQS6^4mpxRG{1>K2M0Dl!{-23g7Cl-P>oLL-cQX;>Gb;9xf%UztLClx zM5U*<4v zECQow1!zG0KY`2`5}AqpsxHakfX{DX0H9xe+dw!RlZBbcs zgvCT^O+#R2dv}k6EYP=II%!?oAZ<;H5__*LQ<(?76txGqZ%W4JJzbX1qbW!1lXuAU zji@kIwm3TAfM(#z)~FkMM+!6NwKbb$`k7p5->DF*Hk^uVlID8K?0)Ey7EX6Q4Bafr z69;5klvycn{TWj#^+_A+j$bqv(|ua@?O=QEeoKig*66<<&Gw}@4~7OsOf&||)$3y) zX3iP!yL>9;(tNLjNFI_=WLlWo<8WxasV`7H(40}~*!)DDepeJ{rA+$pdUjAjHF5HG z8sJ6lUX-}@>_b!RaatrONJGnI%r_YonD;%SnJjSA$h6ZFN!E-;QnML{AOC+~b8yK#fNA*1NN?s-W;ZoRkUleia#3- zw@6w&{@B4&6B=Q%vs3;2hgR7> zc#$8~RB7onIgm9!!&O>xxWJVJE0Jk@{NcjffJ+0gju7uoZS(bxY2LI))f literal 0 HcmV?d00001 diff --git a/lms/askbot/skins/common/media/jquery-openid/jquery.openid.js b/lms/askbot/skins/common/media/jquery-openid/jquery.openid.js new file mode 100644 index 0000000000..249413b919 --- /dev/null +++ b/lms/askbot/skins/common/media/jquery-openid/jquery.openid.js @@ -0,0 +1,440 @@ +$.fn.authenticator = function() { + var signin_page = $(this); + var signin_form = $('#signin-form'); + var openid_login_token_input = $('input[name=openid_login_token]'); + var openid_login_token_input_fields = $('#openid-fs'); + var provider_name_input = $('input[name=login_provider_name]'); + var email_input_fields = $('#email-input-fs'); + var account_recovery_heading = $('#account-recovery-heading'); + var account_recovery_hint = $('#account-recovery-form>.hint'); + var account_recovery_link = $('#account-recovery-form>.hint>span.link'); + var account_recovery_text_span = $('#account-recovery-form>.hint>span.text'); + var password_input_fields = $('#password-fs'); + var existing_login_methods_div = $('#existing-login-methods'); + var openid_submit_button = $('input[name=openid_login_with_extra_token]'); + var existing_login_methods = {}; + + var account_recovery_question_text = account_recovery_heading.html(); + var account_recovery_prompt_text = account_recovery_text_span.html(); + + var setup_click_handler = function(elements, handler_function){ + elements.unbind('click').click(handler_function); + }; + + var setup_enter_key_handler = function(elements, handler_function){ + elements.each( + function(index, element){ + $(element).unbind('keypress').keypress( + function(e){ + if ((e.which && e.which == 13)||(e.keyCode && e.keyCode == 13)){ + if (handler_function){ + return handler_function(); + } + else { + element.click(); + return false; + } + } + } + ); + } + ); + }; + + var setup_event_handlers = function(elements, handler_function){ + setup_click_handler(elements, handler_function); + setup_enter_key_handler(elements); + }; + + var get_provider_name = function(row_el){ + var row = $(row_el); + var name_span = row.find('.ab-provider-name'); + return provider_name = $.trim(name_span.html()); + }; + + var read_existing_login_methods = function(){ + $('.ab-provider-row').each( + function(i, provider_row){ + var provider_name = get_provider_name(provider_row); + existing_login_methods[provider_name] = true; + } + ); + }; + + var setup_login_method_deleters = function(){ + $('.ab-provider-row').each( + function(i, provider_row){ + var provider_name = get_provider_name(provider_row); + var remove_button = $( + provider_row + ).find('button'); + remove_button.click( + function(){ + var message = interpolate(gettext('Are you sure you want to remove your %s login?'), [provider_name]); + if (confirm(message)){ + $.ajax({ + type: 'POST', + url: authUrl + 'delete_login_method/',//url!!! + data: {provider_name: provider_name}, + success: function(data, text_status, xhr){ + $(provider_row).remove(); + delete existing_login_methods[provider_name]; + provider_count -=1; + if (provider_count < 0){ + provider_count === 0; + } + if (provider_count === 0){ + $('#ab-existing-login-methods').remove(); + $('#ab-show-login-methods').remove(); + $('h1').html( + gettext("Please add one or more login methods.") + ); + $('#login-intro').html( + gettext("You don\'t have a method to log in right now, please add one or more by clicking any of the icons below.") + ); + existing_login_methods = null; + } + } + }); + } + } + ); + } + ); + } + + var submit_login_with_password = function(){ + var username = $('#id_username'); + var password = $('#id_password'); + + if (username.val().length < 1){ + username.focus(); + return false; + } + if (password.val().length < 1){ + password.focus(); + return false; + } + return true; + }; + + var submit_change_password = function(){ + var newpass = $('#id_new_password'); + var newpass_retyped = $('#id_new_password_retyped'); + if (newpass.val().length < 1){ + newpass.focus(); + return false + } + if (newpass_retyped.val().length < 1){ + newpass_retyped.focus(); + return false; + } + if (newpass.val() !== newpass_retyped.val()){ + newpass_retyped.after( + '' + + gettext('passwords do not match') + + '' + ); + newpass.val('').focus(); + newpass_retyped.val(''); + return false; + } + return true; + }; + + //validator, may be extended to check url for openid + var submit_with_extra_openid_token = function() { + if (openid_login_token_input.val().length < 1) { + openid_login_token_input.focus(); + return false; + } + return true; + }; + + var insert_login_list_enabler = function(){ + var enabler = $('#login-list-enabler'); + if (enabler.is('p#login-list-enabler')){ + enabler.show(); + } + else { + enabler = $( + '

      ' + + gettext('Show/change current login methods') + + '

      '); + setup_event_handlers( + enabler, + function(){ + if (askbot['settings']['signin_always_show_local_login'] === false){ + password_input_fields.hide(); + } + openid_login_token_input_fields.hide(); + enabler.hide(); + existing_login_methods_div.show(); + } + ); + existing_login_methods_div.after(enabler); + } + }; + + var reset_password_input_fields = function(){ + if (userIsAuthenticated){ + $('#id_new_password').val(''); + $('#id_new_password_retyped').val(''); + } + else { + $('#id_username').val(''); + $('#id_password').val(''); + } + }; + + var reset_form = function(){ + openid_login_token_input_fields.hide(); + if (askbot['settings']['signin_always_show_local_login'] === false){ + password_input_fields.hide(); + } + reset_password_input_fields(); + if (userIsAuthenticated === false){ + email_input_fields.hide(); + account_recovery_heading.hide(); + account_recovery_link.show(); + account_recovery_hint.show(); + $('#account-recovery-form>p.hint').css('margin-top','10px'); + account_recovery_text_span.html(account_recovery_question_text).show(); + } + else { + if (existing_login_methods !== null){ + existing_login_methods_div.hide(); + insert_login_list_enabler(); + } + } + }; + + var reset_form_and_errors = function(){ + reset_form(); + $('.error').remove(); + } + + var set_provider_name = function(element){ + var provider_name = element.attr('name'); + provider_name_input.val(provider_name); + }; + + var show_openid_input_fields = function(provider_name){ + reset_form_and_errors(); + var token_name = extra_token_name[provider_name] + if (userIsAuthenticated){ + $('#openid-heading').html( + interpolate(gettext('Please enter your %s, then proceed'), [token_name]) + ); + var button_text = gettext('Connect your %(provider_name)s account to %(site)s'); + var data = { + provider_name: provider_name, + site: siteName + } + button_text = interpolate(button_text, data, true); + openid_submit_button.val(button_text); + } + else { + $('#openid-heading>span').html(token_name); + } + openid_login_token_input_fields.show(); + openid_login_token_input.focus(); + }; + + var start_simple_login = function() { + //$('#openid_form .providers td').removeClass('highlight'); + //$li.addClass('highlight'); + set_provider_name($(this)); + signin_form.submit(); + return true; + }; + + var start_login_with_extra_openid_token = function() { + show_openid_input_fields($(this).attr('name')); + set_provider_name($(this)); + + setup_enter_key_handler( + openid_login_token_input, + function(){ + openid_submit_button.click(); + return false; + } + ); + + setup_event_handlers( + openid_submit_button, + function(){ + signin_form.unbind( + 'submit' + ).submit( + submit_with_extra_openid_token + ); + } + ); + return false; + }; + + var start_facebook_login = function(){ + set_provider_name($(this)); + if (typeof FB != 'undefined'){ + FB.getLoginStatus(function(response){ + if (response.authResponse){ + signin_form.submit(); + } + else { + if (FB.getAuthResponse()){ + signin_form.submit(); + } + FB.login(); + } + }); + } + return false; + }; + + var start_password_login_or_change = function(){ + //called upon clicking on one of the password login buttons + reset_form_and_errors(); + set_provider_name($(this)); + var provider_name = $(this).attr('name'); + return setup_password_login_or_change(provider_name); + }; + + var init_always_visible_password_login = function(){ + reset_form(); + //will break wordpress and ldap + provider_name_input.val('local'); + setup_password_login_or_change('local'); + }; + + var setup_password_login_or_change = function(provider_name){ + var token_name = extra_token_name[provider_name] + var password_action_input = $('input[name=password_action]'); + if (userIsAuthenticated === true){ + var password_button = $('input[name=change_password]'); + var submit_action = submit_change_password; + if (provider_name === 'local'){ + var provider_cleaned_name = siteName; + } + else { + var provider_cleaned_name = provider_name; + } + if (existing_login_methods && existing_login_methods[provider_name]){ + var password_heading_text = interpolate(gettext('Change your %s password'), [provider_cleaned_name]) + var password_button_text = gettext('Change password') + } + else { + var password_heading_text = interpolate(gettext('Create a password for %s'), [provider_cleaned_name]) + var password_button_text = gettext('Create password') + } + $('#password-heading').html( + password_heading_text + ) + password_button.val(password_button_text); + password_action_input.val('change_password'); + var focus_input = $('#id_new_password'); + var submittable_input = $('#id_new_password_retyped'); + } + else{ + $('#password-heading>span').html(token_name); + var password_button = $('input[name=login_with_password]'); + var submit_action = submit_login_with_password; + var create_pw_link = $('a.create-password-account') + if (create_pw_link.length > 0){ + create_pw_link.html(gettext('Create a password-protected account')); + var url = create_pw_link.attr('href'); + if (url.indexOf('?') !== -1){ + url = url.replace(/\?.*$/,'?login_provider=' + provider_name); + } + else{ + url += '?login_provider=' + provider_name; + } + create_pw_link.attr('href', url); + } + password_action_input.val('login'); + var focus_input = $('#id_username'); + var submittable_input = $('#id_password'); + } + password_input_fields.show(); + focus_input.focus(); + + var submit_password_login = function(){ + signin_form.unbind('submit').submit(submit_action); + }; + + setup_enter_key_handler( + submittable_input, + function() { + password_button.click(); + return false; + } + ); + setup_event_handlers(password_button, submit_password_login); + return false; + }; + + var start_account_recovery = function(){ + reset_form_and_errors(); + account_recovery_hint.hide(); + account_recovery_heading.css('margin-bottom', '0px'); + account_recovery_heading.html(account_recovery_prompt_text).show(); + email_input_fields.show(); + $('#id_email').focus(); + }; + + var clear_password_fields = function(){ + $('#id_password').val(''); + $('#id_new_password').val(''); + $('#id_new_password_retyped').val(''); + }; + + var setup_default_handlers = function(){ + setup_event_handlers( + signin_page.find('input.openid-direct'), + start_simple_login + ); + + setup_event_handlers( + signin_page.find('input.openid-username'), + start_login_with_extra_openid_token + ); + + setup_event_handlers( + signin_page.find('input.openid-generic'), + start_login_with_extra_openid_token + ); + + setup_event_handlers( + signin_page.find('input.facebook'), + start_facebook_login + ); + + setup_event_handlers( + signin_page.find('input.oauth'), + start_simple_login + ); + + setup_event_handlers( + signin_page.find('input.password'), + start_password_login_or_change + ); + setup_event_handlers( + signin_page.find('input.wordpress_site'), + start_password_login_or_change + ); + + setup_event_handlers(account_recovery_link, start_account_recovery); + + if (userIsAuthenticated){ + read_existing_login_methods(); + setup_login_method_deleters(); + } + }; + + setup_default_handlers(); + if (askbot['settings']['signin_always_show_local_login'] === true){ + init_always_visible_password_login(); + } + clear_password_fields(); + return this; +}; diff --git a/lms/askbot/skins/common/media/jquery-openid/openid.css b/lms/askbot/skins/common/media/jquery-openid/openid.css new file mode 100644 index 0000000000..0028722442 --- /dev/null +++ b/lms/askbot/skins/common/media/jquery-openid/openid.css @@ -0,0 +1,39 @@ +div#login-icons {margin:10px 0 0 0;padding:10px;border:#eee 1px solid;} +ul.login-icons {width: 450px; margin:0;padding:0;text-align:left; list-style-type:none; display:block;} +ul.login-icons li {display:inline;} +ul.large input {height: 40px; width: 90px;border:1px solid #ccc;margin:0 5px 5px 0;} +.openid-signin h2 {margin-top:15px;} +.openid-signin h2#account-recovery-heading {margin-bottom:2px;} +#account-recovery-form p.hint a {color:#1b79bd; text-decoration: none;} +#account-recovery-form p.hint a:hover {text-decoration: underline;} +.openid-signin fieldset { border-style:none;margin:0;padding:0;} +.openid-signin p {margin:0;padding:0}; +.openid-signin p.hint {color: #555;} +.openid-signin #password-fs label {width:100px;margin-top:5px;text-align:left;} +.openid-signin #password-fs .hint {margin-bottom:5px} +#password-fs a {padding-left:5px;} +/*#signin-form #account-recovery-form input {cursor:pointer;} +#signin-form #account-recovery-form input.text {cursor:default;}*/ + +table.login { text-align: right;} + +.openid-signin .submit-b { + cursor: pointer; /*letter-spacing:1px;*/ + margin: 0 0 2px 0; + vertical-align: middle; +} + +.openid-signin .highlight { -moz-border-radius:4px; -webkit-border-radius:4px; background-color: #FD6} + +ul.providers { + display: block; +} + +.openid-signin th { + color: #555; + font-weight: normal; +} + +.openid-signin .ab-provider-name { + font-weight: bold; +} diff --git a/lms/askbot/skins/common/media/js/autocompleter.js b/lms/askbot/skins/common/media/js/autocompleter.js new file mode 100644 index 0000000000..a7c5431592 --- /dev/null +++ b/lms/askbot/skins/common/media/js/autocompleter.js @@ -0,0 +1,766 @@ +/** + * AutoCompleter Object, refactored closure style from + * jQuery autocomplete plugin + * @param {Object=} options Settings + * @constructor + */ +var AutoCompleter = function(options) { + + /** + * Default options for autocomplete plugin + */ + var defaults = { + autocompleteMultiple: true, + multipleSeparator: ' ',//a single character + inputClass: 'acInput', + loadingClass: 'acLoading', + resultsClass: 'acResults', + selectClass: 'acSelect', + queryParamName: 'q', + limitParamName: 'limit', + extraParams: {}, + lineSeparator: '\n', + cellSeparator: '|', + minChars: 2, + maxItemsToShow: 10, + delay: 400, + useCache: true, + maxCacheLength: 10, + matchSubset: true, + matchCase: false, + matchInside: true, + mustMatch: false, + preloadData: false, + selectFirst: false, + stopCharRegex: /\s+/, + selectOnly: false, + formatItem: null, // TBD + onItemSelect: false, + autoFill: false, + filterResults: true, + sortResults: true, + sortFunction: false, + onNoMatch: false + }; + + /** + * Options dictionary + * @type Object + * @private + */ + this.options = $.extend({}, defaults, options); + + /** + * Cached data + * @type Object + * @private + */ + this.cacheData_ = {}; + + /** + * Number of cached data items + * @type number + * @private + */ + this.cacheLength_ = 0; + + /** + * Class name to mark selected item + * @type string + * @private + */ + this.selectClass_ = 'jquery-autocomplete-selected-item'; + + /** + * Handler to activation timeout + * @type ?number + * @private + */ + this.keyTimeout_ = null; + + /** + * Last key pressed in the input field (store for behavior) + * @type ?number + * @private + */ + this.lastKeyPressed_ = null; + + /** + * Last value processed by the autocompleter + * @type ?string + * @private + */ + this.lastProcessedValue_ = null; + + /** + * Last value selected by the user + * @type ?string + * @private + */ + this.lastSelectedValue_ = null; + + /** + * Is this autocompleter active? + * @type boolean + * @private + */ + this.active_ = false; + + /** + * Is it OK to finish on blur? + * @type boolean + * @private + */ + this.finishOnBlur_ = true; + + this.options.minChars = parseInt(this.options.minChars, 10); + if (isNaN(this.options.minChars) || this.options.minChars < 1) { + this.options.minChars = 2; + } + + this.options.maxItemsToShow = parseInt(this.options.maxItemsToShow, 10); + if (isNaN(this.options.maxItemsToShow) || this.options.maxItemsToShow < 1) { + this.options.maxItemsToShow = 10; + } + + this.options.maxCacheLength = parseInt(this.options.maxCacheLength, 10); + if (isNaN(this.options.maxCacheLength) || this.options.maxCacheLength < 1) { + this.options.maxCacheLength = 10; + } + + if (this.options['preloadData'] === true){ + this.fetchRemoteData('', function(){}); + } +}; +inherits(AutoCompleter, WrappedElement); + +AutoCompleter.prototype.decorate = function(element){ + + /** + * Init DOM elements repository + */ + this._element = element; + + /** + * Switch off the native autocomplete + */ + this._element.attr('autocomplete', 'off'); + + /** + * Create DOM element to hold results + */ + this._results = $('
      ').hide(); + if (this.options.resultsClass) { + this._results.addClass(this.options.resultsClass); + } + this._results.css({ + position: 'absolute' + }); + $('body').append(this._results); + + this.setEventHandlers(); +}; + +AutoCompleter.prototype.setEventHandlers = function(){ + /** + * Shortcut to self + */ + var self = this; + + /** + * Attach keyboard monitoring to $elem + */ + self._element.keydown(function(e) { + self.lastKeyPressed_ = e.keyCode; + switch(self.lastKeyPressed_) { + + case 38: // up + e.preventDefault(); + if (self.active_) { + self.focusPrev(); + } else { + self.activate(); + } + return false; + break; + + case 40: // down + e.preventDefault(); + if (self.active_) { + self.focusNext(); + } else { + self.activate(); + } + return false; + break; + + case 9: // tab + case 13: // return + if (self.active_) { + e.preventDefault(); + self.selectCurrent(); + return false; + } + break; + + case 27: // escape + if (self.active_) { + e.preventDefault(); + self.finish(); + return false; + } + break; + + default: + self.activate(); + + } + }); + self._element.blur(function() { + if (self.finishOnBlur_) { + setTimeout(function() { self.finish(); }, 200); + } + }); +}; + +AutoCompleter.prototype.position = function() { + var offset = this._element.offset(); + this._results.css({ + top: offset.top + this._element.outerHeight(), + left: offset.left + }); +}; + +AutoCompleter.prototype.cacheRead = function(filter) { + var filterLength, searchLength, search, maxPos, pos; + if (this.options.useCache) { + filter = String(filter); + filterLength = filter.length; + if (this.options.matchSubset) { + searchLength = 1; + } else { + searchLength = filterLength; + } + while (searchLength <= filterLength) { + if (this.options.matchInside) { + maxPos = filterLength - searchLength; + } else { + maxPos = 0; + } + pos = 0; + while (pos <= maxPos) { + search = filter.substr(0, searchLength); + if (this.cacheData_[search] !== undefined) { + return this.cacheData_[search]; + } + pos++; + } + searchLength++; + } + } + return false; +}; + +AutoCompleter.prototype.cacheWrite = function(filter, data) { + if (this.options.useCache) { + if (this.cacheLength_ >= this.options.maxCacheLength) { + this.cacheFlush(); + } + filter = String(filter); + if (this.cacheData_[filter] !== undefined) { + this.cacheLength_++; + } + return this.cacheData_[filter] = data; + } + return false; +}; + +AutoCompleter.prototype.cacheFlush = function() { + this.cacheData_ = {}; + this.cacheLength_ = 0; +}; + +AutoCompleter.prototype.callHook = function(hook, data) { + var f = this.options[hook]; + if (f && $.isFunction(f)) { + return f(data, this); + } + return false; +}; + +AutoCompleter.prototype.activate = function() { + var self = this; + var activateNow = function() { + self.activateNow(); + }; + var delay = parseInt(this.options.delay, 10); + if (isNaN(delay) || delay <= 0) { + delay = 250; + } + if (this.keyTimeout_) { + clearTimeout(this.keyTimeout_); + } + this.keyTimeout_ = setTimeout(activateNow, delay); +}; + +AutoCompleter.prototype.activateNow = function() { + var value = this.getValue(); + if (value !== this.lastProcessedValue_ && value !== this.lastSelectedValue_) { + if (value.length >= this.options.minChars) { + this.active_ = true; + this.lastProcessedValue_ = value; + this.fetchData(value); + } + } +}; + +AutoCompleter.prototype.fetchData = function(value) { + if (this.options.data) { + this.filterAndShowResults(this.options.data, value); + } else { + var self = this; + this.fetchRemoteData(value, function(remoteData) { + self.filterAndShowResults(remoteData, value); + }); + } +}; + +AutoCompleter.prototype.fetchRemoteData = function(filter, callback) { + var data = this.cacheRead(filter); + if (data) { + callback(data); + } else { + var self = this; + if (this._element){ + this._element.addClass(this.options.loadingClass); + } + var ajaxCallback = function(data) { + var parsed = false; + if (data !== false) { + parsed = self.parseRemoteData(data); + self.options.data = parsed;//cache data forever - E.F. + self.cacheWrite(filter, parsed); + } + if (self._element){ + self._element.removeClass(self.options.loadingClass); + } + callback(parsed); + }; + $.ajax({ + url: this.makeUrl(filter), + success: ajaxCallback, + error: function() { + ajaxCallback(false); + } + }); + } +}; + +AutoCompleter.prototype.setOption = function(name, value){ + this.options[name] = value; +}; + +AutoCompleter.prototype.setExtraParam = function(name, value) { + var index = $.trim(String(name)); + if (index) { + if (!this.options.extraParams) { + this.options.extraParams = {}; + } + if (this.options.extraParams[index] !== value) { + this.options.extraParams[index] = value; + this.cacheFlush(); + } + } +}; + +AutoCompleter.prototype.makeUrl = function(param) { + var self = this; + var url = this.options.url; + var params = $.extend({}, this.options.extraParams); + // If options.queryParamName === false, append query to url + // instead of using a GET parameter + if (this.options.queryParamName === false) { + url += encodeURIComponent(param); + } else { + params[this.options.queryParamName] = param; + } + + if (this.options.limitParamName && this.options.maxItemsToShow) { + params[this.options.limitParamName] = this.options.maxItemsToShow; + } + + var urlAppend = []; + $.each(params, function(index, value) { + urlAppend.push(self.makeUrlParam(index, value)); + }); + if (urlAppend.length) { + url += url.indexOf('?') == -1 ? '?' : '&'; + url += urlAppend.join('&'); + } + return url; +}; + +AutoCompleter.prototype.makeUrlParam = function(name, value) { + return String(name) + '=' + encodeURIComponent(value); +}; + +/** + * Sanitize CR and LF, then split into lines + */ +AutoCompleter.prototype.splitText = function(text) { + return String(text).replace(/(\r\n|\r|\n)/g, '\n').split(this.options.lineSeparator); +}; + +AutoCompleter.prototype.parseRemoteData = function(remoteData) { + var value, lines, i, j, data; + var results = []; + var lines = this.splitText(remoteData); + for (i = 0; i < lines.length; i++) { + var line = lines[i].split(this.options.cellSeparator); + data = []; + for (j = 0; j < line.length; j++) { + data.push(unescape(line[j])); + } + value = data.shift(); + results.push({ value: unescape(value), data: data }); + } + return results; +}; + +AutoCompleter.prototype.filterAndShowResults = function(results, filter) { + this.showResults(this.filterResults(results, filter), filter); +}; + +AutoCompleter.prototype.filterResults = function(results, filter) { + + var filtered = []; + var value, data, i, result, type, include; + var regex, pattern, testValue; + + for (i = 0; i < results.length; i++) { + result = results[i]; + type = typeof result; + if (type === 'string') { + value = result; + data = {}; + } else if ($.isArray(result)) { + value = result[0]; + data = result.slice(1); + } else if (type === 'object') { + value = result.value; + data = result.data; + } + value = String(value); + if (value > '') { + if (typeof data !== 'object') { + data = {}; + } + if (this.options.filterResults) { + pattern = String(filter); + testValue = String(value); + if (!this.options.matchCase) { + pattern = pattern.toLowerCase(); + testValue = testValue.toLowerCase(); + } + include = testValue.indexOf(pattern); + if (this.options.matchInside) { + include = include > -1; + } else { + include = include === 0; + } + } else { + include = true; + } + if (include) { + filtered.push({ value: value, data: data }); + } + } + } + + if (this.options.sortResults) { + filtered = this.sortResults(filtered, filter); + } + + if (this.options.maxItemsToShow > 0 && this.options.maxItemsToShow < filtered.length) { + filtered.length = this.options.maxItemsToShow; + } + + return filtered; + +}; + +AutoCompleter.prototype.sortResults = function(results, filter) { + var self = this; + var sortFunction = this.options.sortFunction; + if (!$.isFunction(sortFunction)) { + sortFunction = function(a, b, f) { + return self.sortValueAlpha(a, b, f); + }; + } + results.sort(function(a, b) { + return sortFunction(a, b, filter); + }); + return results; +}; + +AutoCompleter.prototype.sortValueAlpha = function(a, b, filter) { + a = String(a.value); + b = String(b.value); + if (!this.options.matchCase) { + a = a.toLowerCase(); + b = b.toLowerCase(); + } + if (a > b) { + return 1; + } + if (a < b) { + return -1; + } + return 0; +}; + +AutoCompleter.prototype.showResults = function(results, filter) { + var self = this; + var $ul = $('
        '); + var i, result, $li, extraWidth, first = false, $first = false; + var numResults = results.length; + for (i = 0; i < numResults; i++) { + result = results[i]; + $li = $('
      • ' + this.showResult(result.value, result.data) + '
      • '); + $li.data('value', result.value); + $li.data('data', result.data); + $li.click(function() { + var $this = $(this); + self.selectItem($this); + }).mousedown(function() { + self.finishOnBlur_ = false; + }).mouseup(function() { + self.finishOnBlur_ = true; + }); + $ul.append($li); + if (first === false) { + first = String(result.value); + $first = $li; + $li.addClass(this.options.firstItemClass); + } + if (i == numResults - 1) { + $li.addClass(this.options.lastItemClass); + } + } + + // Alway recalculate position before showing since window size or + // input element location may have changed. This fixes #14 + this.position(); + + this._results.html($ul).show(); + extraWidth = this._results.outerWidth() - this._results.width(); + this._results.width(this._element.outerWidth() - extraWidth); + $('li', this._results).hover( + function() { self.focusItem(this); }, + function() { /* void */ } + ); + if (this.autoFill(first, filter)) { + this.focusItem($first); + } +}; + +AutoCompleter.prototype.showResult = function(value, data) { + if ($.isFunction(this.options.showResult)) { + return this.options.showResult(value, data); + } else { + return value; + } +}; + +AutoCompleter.prototype.autoFill = function(value, filter) { + var lcValue, lcFilter, valueLength, filterLength; + if (this.options.autoFill && this.lastKeyPressed_ != 8) { + lcValue = String(value).toLowerCase(); + lcFilter = String(filter).toLowerCase(); + valueLength = value.length; + filterLength = filter.length; + if (lcValue.substr(0, filterLength) === lcFilter) { + this._element.val(value); + this.selectRange(filterLength, valueLength); + return true; + } + } + return false; +}; + +AutoCompleter.prototype.focusNext = function() { + this.focusMove(+1); +}; + +AutoCompleter.prototype.focusPrev = function() { + this.focusMove(-1); +}; + +AutoCompleter.prototype.focusMove = function(modifier) { + var i, $items = $('li', this._results); + modifier = parseInt(modifier, 10); + for (var i = 0; i < $items.length; i++) { + if ($($items[i]).hasClass(this.selectClass_)) { + this.focusItem(i + modifier); + return; + } + } + this.focusItem(0); +}; + +AutoCompleter.prototype.focusItem = function(item) { + var $item, $items = $('li', this._results); + if ($items.length) { + $items.removeClass(this.selectClass_).removeClass(this.options.selectClass); + if (typeof item === 'number') { + item = parseInt(item, 10); + if (item < 0) { + item = 0; + } else if (item >= $items.length) { + item = $items.length - 1; + } + $item = $($items[item]); + } else { + $item = $(item); + } + if ($item) { + $item.addClass(this.selectClass_).addClass(this.options.selectClass); + } + } +}; + +AutoCompleter.prototype.selectCurrent = function() { + var $item = $('li.' + this.selectClass_, this._results); + if ($item.length == 1) { + this.selectItem($item); + } else { + this.finish(); + } +}; + +AutoCompleter.prototype.selectItem = function($li) { + var value = $li.data('value'); + var data = $li.data('data'); + var displayValue = this.displayValue(value, data); + this.lastProcessedValue_ = displayValue; + this.lastSelectedValue_ = displayValue; + + this.setValue(displayValue); + + this.setCaret(displayValue.length); + this.callHook('onItemSelect', { value: value, data: data }); + this.finish(); +}; + +/** + * @return {boolean} true if the symbol matches something that is + * considered content and false otherwise + * @param {string} symbol - a single char string + */ +AutoCompleter.prototype.isContentChar = function(symbol){ + if (symbol.match(this.options['stopCharRegex'])){ + return false; + } else if (symbol === this.options['multipleSeparator']){ + return false; + } else { + return true; + } +}; + +/** + * takes value from the input box + * and saves _selection_start and _selection_end coordinates + * respects settings autocompleteMultiple and + * multipleSeparator + * @return {string} the current word in the + * autocompletable word + */ +AutoCompleter.prototype.getValue = function(){ + var sel = this._element.getSelection(); + var text = this._element.val(); + var pos = sel.start;//estimated start + //find real start + var start = pos; + for (cpos = pos; cpos >= 0; cpos = cpos - 1){ + if (cpos === text.length){ + continue; + } + var symbol = text.charAt(cpos); + if (!this.isContentChar(symbol)){ + break; + } + start = cpos; + } + //find real end + var end = pos; + for (cpos = pos; cpos < text.length; cpos = cpos + 1){ + if (cpos === 0){ + continue; + } + var symbol = text.charAt(cpos); + if (!this.isContentChar(symbol)){ + break; + } + end = cpos; + } + this._selection_start = start; + this._selection_end = end; + return text.substring(start, end); +} + +/** + * sets value of the input box + * by replacing the previous selection + * with the value from the autocompleter + */ +AutoCompleter.prototype.setValue = function(val){ + var prefix = this._element.val().substring(0, this._selection_start); + var postfix = this._element.val().substring(this._selection_end + 1); + this._element.val(prefix + val + postfix); +}; + +AutoCompleter.prototype.displayValue = function(value, data) { + if ($.isFunction(this.options.displayValue)) { + return this.options.displayValue(value, data); + } else { + return value; + } +}; + +AutoCompleter.prototype.finish = function() { + if (this.keyTimeout_) { + clearTimeout(this.keyTimeout_); + } + if (this._element.val() !== this.lastSelectedValue_) { + if (this.options.mustMatch) { + this._element.val(''); + } + this.callHook('onNoMatch'); + } + this._results.hide(); + this.lastKeyPressed_ = null; + this.lastProcessedValue_ = null; + if (this.active_) { + this.callHook('onFinish'); + } + this.active_ = false; +}; + +AutoCompleter.prototype.selectRange = function(start, end) { + var input = this._element.get(0); + if (input.setSelectionRange) { + input.focus(); + input.setSelectionRange(start, end); + } else if (this.createTextRange) { + var range = this.createTextRange(); + range.collapse(true); + range.moveEnd('character', end); + range.moveStart('character', start); + range.select(); + } +}; + +AutoCompleter.prototype.setCaret = function(pos) { + this.selectRange(pos, pos); +}; + diff --git a/lms/askbot/skins/common/media/js/compress.bat b/lms/askbot/skins/common/media/js/compress.bat new file mode 100644 index 0000000000..53d72588d2 --- /dev/null +++ b/lms/askbot/skins/common/media/js/compress.bat @@ -0,0 +1,5 @@ +#java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 wmd\wmd.js -o wmd\wmd-min.js +#java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 wmd\showdown.js -o wmd\showdown-min.js +#java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 post.js -o post.pack.js +java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 se_hilite_src.js -o se_hilite.js +pause diff --git a/lms/askbot/skins/common/media/js/editor.js b/lms/askbot/skins/common/media/js/editor.js new file mode 100644 index 0000000000..2d1f567079 --- /dev/null +++ b/lms/askbot/skins/common/media/js/editor.js @@ -0,0 +1,75 @@ +/* + jQuery TextAreaResizer plugin + Created on 17th January 2008 by Ryan O'Dell + Version 1.0.4 +*/(function($){var textarea,staticOffset;var iLastMousePos=0;var iMin=32;var grip;$.fn.TextAreaResizer=function(){return this.each(function(){textarea=$(this).addClass('processed'),staticOffset=null;$(this).wrap('
        ').parent().append($('
        ').bind("mousedown",{el:this},startDrag));var grippie=$('div.grippie',$(this).parent())[0];grippie.style.marginRight=(grippie.offsetWidth-$(this)[0].offsetWidth)+'px'})};function startDrag(e){textarea=$(e.data.el);textarea.blur();iLastMousePos=mousePosition(e).y;staticOffset=textarea.height()-iLastMousePos;textarea.css('opacity',0.25);$(document).mousemove(performDrag).mouseup(endDrag);return false}function performDrag(e){var iThisMousePos=mousePosition(e).y;var iMousePos=staticOffset+iThisMousePos;if(iLastMousePos>=(iThisMousePos)){iMousePos-=5}iLastMousePos=iThisMousePos;iMousePos=Math.max(iMin,iMousePos);textarea.height(iMousePos+'px');if(iMousePosoptions.captureLength&&elTxt.toUpperCase()!=timer.text)||(override&&elTxt.length>options.captureLength)){timer.text=elTxt.toUpperCase();timer.cb(elTxt)}};function watchElement(elem){if(elem.type.toUpperCase()=="TEXT"||elem.nodeName.toUpperCase()=="TEXTAREA"){var timer={timer:null,text:jQuery(elem).val().toUpperCase(),cb:options.callback,el:elem,wait:options.wait};if(options.highlight){jQuery(elem).focus(function(){this.select()})}var startWatch=function(evt){var timerWait=timer.wait;var overrideBool=false;if(evt.keyCode==13&&this.type.toUpperCase()=="TEXT"){timerWait=1;overrideBool=true}var timerCallbackFx=function(){checkElement(timer,overrideBool)};clearTimeout(timer.timer);timer.timer=setTimeout(timerCallbackFx,timerWait)};jQuery(elem).keydown(startWatch)}};return this.each(function(index){watchElement(this)})}})(jQuery); +/* +Ajax upload +*/jQuery.extend({createUploadIframe:function(d,b){var a="jUploadFrame"+d;if(window.ActiveXObject){var c=document.createElement('