From: Costas Yiotis Date: Tue, 18 Nov 2014 11:24:55 +0000 (+0200) Subject: myslice reputation plugin v0.1 X-Git-Tag: myslice-1.1~13^2~10 X-Git-Url: http://git.onelab.eu/?p=myslice.git;a=commitdiff_plain;h=90c5da3ffa580fa4514579e405eb130adabe2ad5 myslice reputation plugin v0.1 --- diff --git a/portal/reputationview.py b/portal/reputationview.py new file mode 100644 index 00000000..4699dd22 --- /dev/null +++ b/portal/reputationview.py @@ -0,0 +1,308 @@ +from django.contrib.auth import authenticate, login, logout +from django.template import RequestContext +from django.shortcuts import render, render_to_response + +from manifoldapi.manifoldresult import ManifoldResult +from ui.topmenu import topmenu_items, the_user +from myslice.configengine import ConfigEngine +from manifold.core.query import Query +from unfold.page import Page +from manifoldapi.manifoldapi import execute_admin_query, execute_query +from unfold.loginrequired import LoginRequiredAutoLogoutView + +from myslice.theme import ThemeView +import json +import hashlib +import datetime +import urllib2 +import ast +from django.views.decorators.csrf import csrf_exempt +from django.http import * + +def response_mimetype(request): + + if "application/json" in request.META['HTTP_ACCEPT']: + return "application/json" + else: + return "text/plain" + + +def json_to_rest(url, data ): + + req = urllib2.Request(url) + req.add_header('Content-Type', 'application/json') + response = urllib2.urlopen(req, json.dumps(data)) + + if data == "a": + mylist = ast.literal_eval(response.read()) + else: + mylist = response.read().translate(None, '"[]').split(",") + + return (mylist) + + +def unix_to_timestamp(timest): + try: + return datetime.datetime.fromtimestamp(int(timest)).strftime('%Y-%m-%d %H:%M:%S') + except: + return timest + +def timestamp_to_unix(timest): + try: + pass + except: + pass + + +def slice_to_exp(slices_users): + experiments = {} + testbeds = {} + + + for slice in slices_users: + nodes={} + leases = slice['lease'] + if leases is not None: + for lease in leases: + resource = lease['resource'] + start_t = lease['start_time'] + end_t = lease['end_time'] + #node = lease['resource'] + + testbed_start = resource.index('IDN+')+4 + testbed_end = resource.index('+node+') + + testbed = resource[testbed_start:testbed_end] + node = resource[testbed_end+6:] + + if testbed in testbeds: + if node not in testbeds[testbed]: + testbeds[testbed].append(node) + else: + testbeds[testbed] = [node] + + #group nodes in consecutive timeslots + if not node in nodes: + nodes[node]={str(start_t):{'start_t':start_t, 'nodes':node, 'end_t':end_t}} + else: + if not str(start_t) in nodes[node]: + f=0 + for n in nodes[node]: + if n[str(end_t)] == start_t: + n[str(end_t)] == end_t + f=1 + if f==0: + nodes[node][str(start_t)]={'start_t':start_t, 'nodes':node, 'end_t':end_t} + + #group grouped nodes in experiments + for n in nodes: + for exp in nodes[n]: + key = str(exp) + str(nodes[n][exp]['end_t']) + + if key not in experiments: + experiments[key]={'slice_hrn':slice['slice_hrn'], \ + 'start':nodes[n][exp]['start_t'], 'end':nodes[n][exp]['end_t'], 'nodes':[nodes[n][exp]['nodes']]} + elif nodes[n][exp]['end_t'] == experiments[key]['end']: + experiments[key]['nodes'].append(nodes[n][exp]['nodes']) + + return (experiments,testbeds) + +class ReputationView (LoginRequiredAutoLogoutView, ThemeView): + template_name = 'reputation.html' + + # expose this so we can mention the backend URL on the welcome page + def default_env (self): + return { + 'MANIFOLD_URL':ConfigEngine().manifold_url(), + } + + def post (self,request): + env = self.default_env() + env['theme'] = self.theme + + + + with open('/home/coyiotis/testlog.log') as f: + f.write(str('test')) + + + return render_to_response(self.template, env, context_instance=RequestContext(request)) + + + + + def get (self, request, state=None): + env = self.default_env() + + ##### *** Reputation Plugin-specific START *** ############ + with open('/home/coyiotis/testlog.log', 'w') as f: + f.write(str(request.GET)) + for key in request.GET: + f.write('\n') + f.write(str(request.GET[key])) + + #The following 'if' is a dirty way for bypassing the JS AJAX cross-domain prevention policy...not pretty + if request.GET.has_key(u'slicedata[user_eval][overall]'): + dict_to_send = {} + dict_to_send['eid'] = str(request.GET[u'slicedata[id]']) + dict_to_send['slice_hrn'] = str(request.GET[u'slicedata[slice_hrn]']) + dict_to_send['user_hrn'] = str(request.GET[u'slicedata[user_hrn]']) + dict_to_send['start_tunix'] = str(request.GET[u'slicedata[start_tunix]']) + dict_to_send['end_tunix'] = str(request.GET[u'slicedata[end_tunix]']) + dict_to_send['start_t'] = str(request.GET[u'slicedata[start_t]']) + dict_to_send['end_t'] = str(request.GET[u'slicedata[end_t]']) + dict_to_send['testbeds'] = ast.literal_eval(str(request.GET[u'testbeds'])) + dict_to_send['user_eval'] = {} + dict_to_send['user_eval']['reuse'] = str(request.GET[u'slicedata[user_eval][reuse]']) + dict_to_send['user_eval']['availability'] = str(request.GET[u'slicedata[user_eval][availability]']) + dict_to_send['user_eval']['pay'] = str(request.GET[u'slicedata[user_eval][pay]']) + dict_to_send['user_eval']['support'] = str(request.GET[u'slicedata[user_eval][support]']) + dict_to_send['user_eval']['overall'] = str(request.GET[u'slicedata[user_eval][overall]']) + dict_to_send['user_eval']['link_quality'] = str(request.GET[u'slicedata[user_eval][link_quality]']) + dict_to_send['user_eval']['problems'] = str(request.GET[u'slicedata[user_eval][problems]']) + dict_to_send['user_eval']['quality'] = str(request.GET[u'slicedata[user_eval][quality]']) + + slicedata_received = json_to_rest('http://survivor.lab.netmode.ntua.gr:4567/reputation/json', dict_to_send ) + + return HttpResponse(json.dumps(slicedata_received), content_type = response_mimetype(self.request)) + + + slices_users = [] + + #get slices + userslice_query = Query().get('slice').select('slice_urn', 'slice_hrn', 'users', 'resource', 'lease') + slice_details = execute_query(self.request, userslice_query) + + #get local users + local_user_query = Query().get('local:user').select('email','status','config') + local_user_details = execute_admin_query(self.request, local_user_query) + + #get users - create dict[email]=hrn + user_query = Query().get('user').select('user_hrn','user_urn','user_email') + user_details = execute_admin_query(self.request, user_query) + users_hrn = {} + for item in user_details: + users_hrn[item['user_email']] = item['user_hrn'] + + #get currenct username (email) + if request.user.is_authenticated(): + cur_username = request.user.username + + #get a list of all the slices for the logged in user + testbeds = [] + + for slice in slice_details: + + if users_hrn[cur_username] in slice['users']: + slices_users.append({'slice_hrn':slice['slice_hrn'], 'user':cur_username, 'user_hrn':users_hrn[cur_username] \ + , 'resource':slice['resource'], 'lease':slice['lease'] }) + + + env['slices_users'] = slices_users ### For logging + + #####create slicelist for template & JSON + experiments,testbeds = slice_to_exp(slices_users) + + all_exp = [] + iddata = [] + + for exp in experiments: + experiment = {} + experiment['slice_hrn'] = experiments[exp]['slice_hrn'] + experiment['user_hrn'] = users_hrn[cur_username] + experiment['start_tunix'] = experiments[exp]['start'] + experiment['end_tunix'] = experiments[exp]['end'] + experiment['start_t'] = unix_to_timestamp(experiments[exp]['start']) + experiment['end_t'] = unix_to_timestamp(experiments[exp]['end']) + experiment['testbeds'] = {} + for exp_node in experiments[exp]['nodes']: + list_testbeds = [ key for key,val in testbeds.items()] + for tkey in list_testbeds: + if exp_node in testbeds[tkey]: + if tkey in experiment['testbeds']: + if exp_node not in experiment['testbeds'][tkey]: + experiment['testbeds'][tkey].append(exp_node) + else: + experiment['testbeds'][tkey] = [exp_node] + tempid = hashlib.sha1(str(experiment)).hexdigest() + experiment['id'] = tempid + + iddata.append(tempid) + all_exp.append(experiment) + + + ###### Check which experiments have not been rated yet. Pop from all_exp any experiment that has already been rated + unrated_exp = json_to_rest('http://survivor.lab.netmode.ntua.gr:4567/reputation/qid', iddata) + + for item in all_exp: + if item['id'] in unrated_exp: + pass + else: + all_exp.pop(all_exp.index(item)) + + + + ###### Get Reputation values from Reputation DB + reps = json_to_rest('http://survivor.lab.netmode.ntua.gr:4567/reputation/showrep', "a") + env['logging_test'] = reps + + services = [] + for item in reps: + for serv in item['services']: + if serv.keys()[0] not in services: + services.append(serv.keys()[0]) + + + #in json, sevices are in the form: 'services':[{'serv1':x}, {'serv2':y}], so we transform it to 'services':[x,y] based on + # the services dict above. If for a specific service there is no applicable value, we put N/A + for testbed in reps: + d = list(testbed['services']) + del testbed['services'] + testbed['services'] = [] + for s in services: + set_v = 0 + for i in d: + try: + testbed['services'].append(i[s]) + set_v=1 + except: + pass + if set_v == 0 : + testbed['services'].append('N/A') + + ###### Pass variables to template + env['logging_test'] = json.dumps(all_exp, ensure_ascii=False) + env['reputation'] = reps + env['rep_serv'] = services + env['slicelist'] = all_exp + env['json_data'] = json.dumps(all_exp, ensure_ascii=False) + + ###### *** Reputation Plugin-specific END *** ############ + + + if request.user.is_authenticated(): + env['person'] = self.request.user + else: + env['person'] = None + + env['theme'] = self.theme + #env['user_list']= user_list + + env['username']=the_user(request) + env['topmenu_items'] = topmenu_items(None, request) + if state: env['state'] = state + elif not env['username']: env['state'] = None + # use one or two columns for the layout - not logged in users will see the login prompt + env['layout_1_or_2']="layout-unfold2.html" if not env['username'] else "layout-unfold1.html" + + return render_to_response(self.template, env, context_instance=RequestContext(request)) + + + + + + + + + + \ No newline at end of file diff --git a/portal/static/reputation_static/css/delete.gif b/portal/static/reputation_static/css/delete.gif new file mode 100644 index 00000000..43c6ca87 Binary files /dev/null and b/portal/static/reputation_static/css/delete.gif differ diff --git a/portal/static/reputation_static/css/images/star-off.png b/portal/static/reputation_static/css/images/star-off.png new file mode 100644 index 00000000..956fa7c6 Binary files /dev/null and b/portal/static/reputation_static/css/images/star-off.png differ diff --git a/portal/static/reputation_static/css/images/star-on.png b/portal/static/reputation_static/css/images/star-on.png new file mode 100644 index 00000000..975fe7f3 Binary files /dev/null and b/portal/static/reputation_static/css/images/star-on.png differ diff --git a/portal/static/reputation_static/css/images/ui-bg_flat_0_aaaaaa_40x100.png b/portal/static/reputation_static/css/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 00000000..5b5dab2a Binary files /dev/null and b/portal/static/reputation_static/css/images/ui-bg_flat_0_aaaaaa_40x100.png differ diff --git a/portal/static/reputation_static/css/images/ui-bg_flat_75_ffffff_40x100.png b/portal/static/reputation_static/css/images/ui-bg_flat_75_ffffff_40x100.png new file mode 100644 index 00000000..ac8b229a Binary files /dev/null and b/portal/static/reputation_static/css/images/ui-bg_flat_75_ffffff_40x100.png differ diff --git a/portal/static/reputation_static/css/images/ui-bg_glass_55_fbf9ee_1x400.png b/portal/static/reputation_static/css/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 00000000..ad3d6346 Binary files /dev/null and b/portal/static/reputation_static/css/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/portal/static/reputation_static/css/images/ui-bg_glass_65_ffffff_1x400.png b/portal/static/reputation_static/css/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 00000000..42ccba26 Binary files /dev/null and b/portal/static/reputation_static/css/images/ui-bg_glass_65_ffffff_1x400.png differ diff --git a/portal/static/reputation_static/css/images/ui-bg_glass_75_dadada_1x400.png b/portal/static/reputation_static/css/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 00000000..5a46b47c Binary files /dev/null and b/portal/static/reputation_static/css/images/ui-bg_glass_75_dadada_1x400.png differ diff --git a/portal/static/reputation_static/css/images/ui-bg_glass_75_e6e6e6_1x400.png b/portal/static/reputation_static/css/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 00000000..86c2baa6 Binary files /dev/null and b/portal/static/reputation_static/css/images/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/portal/static/reputation_static/css/images/ui-bg_glass_95_fef1ec_1x400.png b/portal/static/reputation_static/css/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 00000000..4443fdc1 Binary files /dev/null and b/portal/static/reputation_static/css/images/ui-bg_glass_95_fef1ec_1x400.png differ diff --git a/portal/static/reputation_static/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/portal/static/reputation_static/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 00000000..7c9fa6c6 Binary files /dev/null and b/portal/static/reputation_static/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/portal/static/reputation_static/css/images/ui-icons_222222_256x240.png b/portal/static/reputation_static/css/images/ui-icons_222222_256x240.png new file mode 100644 index 00000000..b273ff11 Binary files /dev/null and b/portal/static/reputation_static/css/images/ui-icons_222222_256x240.png differ diff --git a/portal/static/reputation_static/css/images/ui-icons_2e83ff_256x240.png b/portal/static/reputation_static/css/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 00000000..09d1cdc8 Binary files /dev/null and b/portal/static/reputation_static/css/images/ui-icons_2e83ff_256x240.png differ diff --git a/portal/static/reputation_static/css/images/ui-icons_454545_256x240.png b/portal/static/reputation_static/css/images/ui-icons_454545_256x240.png new file mode 100644 index 00000000..59bd45b9 Binary files /dev/null and b/portal/static/reputation_static/css/images/ui-icons_454545_256x240.png differ diff --git a/portal/static/reputation_static/css/images/ui-icons_888888_256x240.png b/portal/static/reputation_static/css/images/ui-icons_888888_256x240.png new file mode 100644 index 00000000..6d02426c Binary files /dev/null and b/portal/static/reputation_static/css/images/ui-icons_888888_256x240.png differ diff --git a/portal/static/reputation_static/css/images/ui-icons_cd0a0a_256x240.png b/portal/static/reputation_static/css/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 00000000..2ab019b7 Binary files /dev/null and b/portal/static/reputation_static/css/images/ui-icons_cd0a0a_256x240.png differ diff --git a/portal/static/reputation_static/css/jquery-ui-1.9.2.custom.min.css b/portal/static/reputation_static/css/jquery-ui-1.9.2.custom.min.css new file mode 100644 index 00000000..5708cbc3 --- /dev/null +++ b/portal/static/reputation_static/css/jquery-ui-1.9.2.custom.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.9.2 - 2013-01-17 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.button.css, jquery.ui.dialog.css, jquery.ui.tabs.css, jquery.ui.tooltip.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +* Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{zoom:1}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;zoom:1}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto;zoom:1}.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;cursor:pointer;text-align:center;zoom:1;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:1.4}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;width:300px;overflow:hidden}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-tabs{position:relative;padding:.2em;zoom:1}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}* html .ui-tooltip{background-image:none}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px} \ No newline at end of file diff --git a/portal/static/reputation_static/css/jquery.rating.css b/portal/static/reputation_static/css/jquery.rating.css new file mode 100644 index 00000000..50cf2e2d --- /dev/null +++ b/portal/static/reputation_static/css/jquery.rating.css @@ -0,0 +1,12 @@ +/* jQuery.Rating Plugin CSS - http://www.fyneworks.com/jquery/star-rating/ */ +div.rating-cancel,div.star-rating{float:left;width:17px;height:15px;text-indent:-999em;cursor:pointer;display:block;background:transparent;overflow:hidden} +div.rating-cancel,div.rating-cancel a{background:url(delete.gif) no-repeat 0 -16px} +div.star-rating,div.star-rating a{background:url(star.gif) no-repeat 0 0px} +div.rating-cancel a,div.star-rating a{display:block;width:16px;height:100%;background-position:0 0px;border:0} +div.star-rating-on a{background-position:0 -16px!important} +div.star-rating-hover a{background-position:0 -32px} +/* Read Only CSS */ +div.star-rating-readonly a{cursor:default !important} +/* Partial Star CSS */ +div.star-rating{background:transparent!important;overflow:hidden!important} +/* END jQuery.Rating Plugin CSS */ \ No newline at end of file diff --git a/portal/static/reputation_static/css/main.css b/portal/static/reputation_static/css/main.css new file mode 100644 index 00000000..2f9dcbf4 --- /dev/null +++ b/portal/static/reputation_static/css/main.css @@ -0,0 +1,196 @@ +/* +* +*/ + + + +*{ margin: 0; padding: 0; } + +:focus,:active { outline: 0; } +body { + font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif; + font-size:12px; + color: #111; + background: #f7f7f7; +} +.registration_form { + margin:0 auto; + width:500px; + padding:14px; +} +label { + width: 10em; + float: left; + margin-right: 0.5em; + display: block +} +.submit { + float:right; +} +fieldset { + background:#EBF4FB none repeat scroll 0 0; + border:2px solid #B7DDF2; + width: 500px; +} +legend { + color: #fff; + background: #80D3E2; + border: 1px solid #781351; + padding: 2px 6px +} +.elements { + padding:10px; +} +p { + color:#666666; + font-size:13px; + margin-bottom:20px; + padding-bottom:10px; +} +a{ + color:#0099FF; +font-weight:bold; +} + +/* Box Style */ + .success, .warning, .errormsgbox, .validation { + border: 1px solid; + margin: 0 auto; + padding:10px 5px 10px 60px; + background-repeat: no-repeat; + background-position: 10px center; + font-weight:bold; + width:450px; + +} +.success { + + color: #4F8A10; + background-color: #DFF2BF; + background-image:url('../images/success.png'); +} +.warning { + + color: #9F6000; + background-color: #FEEFB3; + background-image: url('../images/warning.png'); +} +.errormsgbox { + + color: #D8000C; + background-color: #FFBABA; + background-image: url('../images/error.png'); + +} +.validation { + + color: #D63301; + background-color: #FFCCBA; + background-image: url('../images/error.png'); +} + +a { text-decoration: none; color: #000; } + a:hover { color: #000; } +.x { clear: both; } + +p { line-height: 22px; margin: 0 0 22px; color:#666; } +img { border: 0; } + +h1 { font-size: 24px; font-weight: normal; margin-bottom: 15px;} +h2 { font-size: 14px; font-weight: normal; margin-bottom: 2px; color: #333; } +h3 { font-size: 14px; font-weight: bolder; margin-bottom: 10px; color: #333; } +h4 { font-size: 18px; font-weight: normal; float: left; margin: 3px 0 10px; width: 460px; } + +#wrapper { margin: 0 auto; width: 980px; background: url(../images/bg.jpg) no-repeat; } + +#logo { padding: 20px 12px 10px; } + #logo h1 { font: bold 24px Arial; text-shadow: 1px 1px 1px #fff; letter-spacing: 4px; } + #logo h1 a { color: #333; } + #logo h1 a span { color: #000; } +#content { background: #fff; width: 980px; } + +.menu { list-style:none; margin: 14px 25px 0 10px; width: 600px; float: left; } + .menu li { float: left; margin: 0 4px 0 0; } + .menu li a { display: block; font-size: 14px; padding: 14px 24px; border: 1px solid #fff; } + .menu a:hover, .menu li.current a { border: 1px solid #ddd; } + + .menu li ul { display: block; background: #fff; margin: -1px 0 0; position: absolute; display: none; z-index: 2; border: 1px solid #ddd; } + .menu li ul li { float: none; display: inline; margin: 0; padding: 0; } + .menu li ul li a { width: auto; margin: 4px; white-space: nowrap; } + +#search { float: right; width: 275px; margin: 23px 18px; display: inline; } + #search .text { width: 227px; height: 16px; border: 1px solid #ddd; padding: 5px; float: left; color: #888; } + #search .submit { float: right; border: 0; background: #000 url(../images/search.gif) no-repeat center 8px; width: 32px; height: 28px; padding-top: 1px; } + +#pitch { margin-bottom: 30px; } + #pitch .infoline { margin-top: -70px; padding: 25px 0 25px 25px; background: #000; font-size: 18px; width: 955px; height: 18px; opacity:0.70; filter:alpha(opacity=70); color: #fff; } + + .pitch-gallery { overflow: hidden; width: 980px; position: relative; } + .pitch-gallery-holder { width: 3920px; position: relative; top: 0; left: 0; } + .pitch-gallery-div { float: left; } + +#left { width: 600px; float: left; margin-left: 25px; display: inline; } + #left img { float: left; margin: 5px 20px 2px 0; padding: 3px; border: 1px solid #ccc; } + #left form { padding-left: 45px; } + #left label { float: left; display: block; clear: both; padding: 3px 0; color: #666; font-weight: normal; width: 150px; } + #left .lcurrent { font-weight: bold; } + #left label img { vertical-align: middle; } + #left input.text, textarea, select { float: left; margin: 0 5px 10px 0; padding: 2px; width: 250px; border: 1px solid #ccc; } + #left textarea { height: 200px; } + #left select { width: 366px; } + #left input.radio { } + #left input:focus { border-color:#aaa; } + #left textarea:focus { border-color: #aaa; } + .error { font-size: 10px; color: #666; margin: 0 0 10px 150px; display: none; } + #left .submit { border: 0; background: #000; color: #fff; padding: 5px; float: left; margin-left: 150px; } + +ul { color: #666; margin: 0 0 10px 10px; line-height: 18px; } +ol { color: #666; margin: 5px 0 5px 30px; line-height: 18px; } + + #contact-back { margin: 12px 40px 0 0; float: right; } + +.post { position: relative; margin-bottom: 20px; height: 127px; } +.post-options { position: relative; margin: -37px 0 40px 0; font-size: 10px; color: #666; } + +#right { width: 260px; float: right; border-left: 1px solid #ccc; padding-left: 36px; margin-right: 25px; display: inline; } + +#feature { margin-left: 25px; padding-bottom: 10px; } + .small-post { float: left; width: 260px; margin-right: 75px; } + .small-post img { border: 1px solid #ccc; padding: 3px; margin-bottom: 10px; } + .last { margin-right: 0; } + #feature ul { margin-top: -11px; } + +#footer { color: #666; font-size: 11px; margin: 20px 0 20px 10px; } + +.post-info { font-size: 11px; color: #999; } +.read-more { background: url(../images/link.gif) no-repeat center left; padding-left: 13px; font-size: 10px; } +.break { border-top: 1px solid #ccc; margin: 30px 0; display: block; } + .no-border { border: 0; } +.space { margin-bottom: 20px; } + +.ui-widget-header { + background: transparent !important; + border: none !important; + border-bottom: 1px solid #AAA !important; + border-radius: 0px !important; +} + + +#tabs{ + margin-top: 30px !important; + min-height: 700px; +} + + +#temp_log{ + display: block; + width:700px; + height:500px; + overflow: auto; + background-color:grey; + color:white !important; + padding: 10px 10px 10px 10px; + margin-left:auto; + margin-right:auto; + +} diff --git a/portal/static/reputation_static/img/star-off.png b/portal/static/reputation_static/img/star-off.png new file mode 100644 index 00000000..956fa7c6 Binary files /dev/null and b/portal/static/reputation_static/img/star-off.png differ diff --git a/portal/static/reputation_static/img/star-on.png b/portal/static/reputation_static/img/star-on.png new file mode 100644 index 00000000..975fe7f3 Binary files /dev/null and b/portal/static/reputation_static/img/star-on.png differ diff --git a/portal/static/reputation_static/img/star.gif b/portal/static/reputation_static/img/star.gif new file mode 100644 index 00000000..d0948a70 Binary files /dev/null and b/portal/static/reputation_static/img/star.gif differ diff --git a/portal/static/reputation_static/js/jquery-1.9.0.min.js b/portal/static/reputation_static/js/jquery-1.9.0.min.js new file mode 100644 index 00000000..50d1b22f --- /dev/null +++ b/portal/static/reputation_static/js/jquery-1.9.0.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.9.0 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license */(function(e,t){"use strict";function n(e){var t=e.length,n=st.type(e);return st.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e){var t=Tt[e]={};return st.each(e.match(lt)||[],function(e,n){t[n]=!0}),t}function i(e,n,r,i){if(st.acceptData(e)){var o,a,s=st.expando,u="string"==typeof n,l=e.nodeType,c=l?st.cache:e,f=l?e[s]:e[s]&&s;if(f&&c[f]&&(i||c[f].data)||!u||r!==t)return f||(l?e[s]=f=K.pop()||st.guid++:f=s),c[f]||(c[f]={},l||(c[f].toJSON=st.noop)),("object"==typeof n||"function"==typeof n)&&(i?c[f]=st.extend(c[f],n):c[f].data=st.extend(c[f].data,n)),o=c[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[st.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[st.camelCase(n)])):a=o,a}}function o(e,t,n){if(st.acceptData(e)){var r,i,o,a=e.nodeType,u=a?st.cache:e,l=a?e[st.expando]:st.expando;if(u[l]){if(t&&(r=n?u[l]:u[l].data)){st.isArray(t)?t=t.concat(st.map(t,st.camelCase)):t in r?t=[t]:(t=st.camelCase(t),t=t in r?[t]:t.split(" "));for(i=0,o=t.length;o>i;i++)delete r[t[i]];if(!(n?s:st.isEmptyObject)(r))return}(n||(delete u[l].data,s(u[l])))&&(a?st.cleanData([e],!0):st.support.deleteExpando||u!=u.window?delete u[l]:u[l]=null)}}}function a(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(Nt,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:wt.test(r)?st.parseJSON(r):r}catch(o){}st.data(e,n,r)}else r=t}return r}function s(e){var t;for(t in e)if(("data"!==t||!st.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function u(){return!0}function l(){return!1}function c(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function f(e,t,n){if(t=t||0,st.isFunction(t))return st.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return st.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=st.grep(e,function(e){return 1===e.nodeType});if(Wt.test(t))return st.filter(t,r,!n);t=st.filter(t,r)}return st.grep(e,function(e){return st.inArray(e,t)>=0===n})}function p(e){var t=zt.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function d(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function h(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function g(e){var t=nn.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function m(e,t){for(var n,r=0;null!=(n=e[r]);r++)st._data(n,"globalEval",!t||st._data(t[r],"globalEval"))}function y(e,t){if(1===t.nodeType&&st.hasData(e)){var n,r,i,o=st._data(e),a=st._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)st.event.add(t,n,s[n][r])}a.data&&(a.data=st.extend({},a.data))}}function v(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!st.support.noCloneEvent&&t[st.expando]){r=st._data(t);for(i in r.events)st.removeEvent(t,i,r.handle);t.removeAttribute(st.expando)}"script"===n&&t.text!==e.text?(h(t).text=e.text,g(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),st.support.html5Clone&&e.innerHTML&&!st.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Zt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function b(e,n){var r,i,o=0,a=e.getElementsByTagName!==t?e.getElementsByTagName(n||"*"):e.querySelectorAll!==t?e.querySelectorAll(n||"*"):t;if(!a)for(a=[],r=e.childNodes||e;null!=(i=r[o]);o++)!n||st.nodeName(i,n)?a.push(i):st.merge(a,b(i,n));return n===t||n&&st.nodeName(e,n)?st.merge([e],a):a}function x(e){Zt.test(e.type)&&(e.defaultChecked=e.checked)}function T(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Nn.length;i--;)if(t=Nn[i]+n,t in e)return t;return r}function w(e,t){return e=t||e,"none"===st.css(e,"display")||!st.contains(e.ownerDocument,e)}function N(e,t){for(var n,r=[],i=0,o=e.length;o>i;i++)n=e[i],n.style&&(r[i]=st._data(n,"olddisplay"),t?(r[i]||"none"!==n.style.display||(n.style.display=""),""===n.style.display&&w(n)&&(r[i]=st._data(n,"olddisplay",S(n.nodeName)))):r[i]||w(n)||st._data(n,"olddisplay",st.css(n,"display")));for(i=0;o>i;i++)n=e[i],n.style&&(t&&"none"!==n.style.display&&""!==n.style.display||(n.style.display=t?r[i]||"":"none"));return e}function C(e,t,n){var r=mn.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function k(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=st.css(e,n+wn[o],!0,i)),r?("content"===n&&(a-=st.css(e,"padding"+wn[o],!0,i)),"margin"!==n&&(a-=st.css(e,"border"+wn[o]+"Width",!0,i))):(a+=st.css(e,"padding"+wn[o],!0,i),"padding"!==n&&(a+=st.css(e,"border"+wn[o]+"Width",!0,i)));return a}function E(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=ln(e),a=st.support.boxSizing&&"border-box"===st.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=un(e,t,o),(0>i||null==i)&&(i=e.style[t]),yn.test(i))return i;r=a&&(st.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+k(e,t,n||(a?"border":"content"),r,o)+"px"}function S(e){var t=V,n=bn[e];return n||(n=A(e,t),"none"!==n&&n||(cn=(cn||st("