From a7337c66c2c7c3312c4205a8119252f04a1fbd58 Mon Sep 17 00:00:00 2001 From: Ciro Scognamiglio Date: Thu, 20 Feb 2014 17:06:44 +0100 Subject: [PATCH] added theme --- .settings/org.eclipse.core.resources.prefs | 5 + auth/static/js/logout.js | 2 +- devel/server-loop.sh | 4 +- myslice/configengine.py | 14 + portal/accountview.py | 5 +- portal/adminview.py | 6 +- portal/contactview.py | 9 +- portal/dashboardview.py | 6 +- portal/homeview.py | 26 +- portal/joinview.py | 5 +- portal/manageuserview.py | 5 +- portal/platformsview.py | 5 +- portal/platformview.py | 5 +- portal/registrationview.py | 5 +- portal/resourceview.py | 5 +- portal/sliceview.py | 8 +- portal/static/css/fed4fire.css | 628 ++++++++++++++++++ portal/static/css/onelab.css | 24 +- portal/static/img/f4f-logo.png | Bin 0 -> 77358 bytes portal/templates/fed4fire/_widget-login.html | 26 + .../templates/fed4fire/_widget-topmenu.html | 38 ++ portal/templates/fed4fire/home-view.html | 19 + portal/templates/home-view.html | 36 +- portal/templates/onelab/_widget-topmenu.html | 9 +- portal/templates/onelab/home-view.html | 97 +++ portal/theme.py | 13 + portal/validationview.py | 7 +- ui/templates/base.html | 7 +- 28 files changed, 967 insertions(+), 52 deletions(-) create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 portal/static/css/fed4fire.css create mode 100644 portal/static/img/f4f-logo.png create mode 100644 portal/templates/fed4fire/_widget-login.html create mode 100644 portal/templates/fed4fire/_widget-topmenu.html create mode 100644 portal/templates/fed4fire/home-view.html create mode 100644 portal/templates/onelab/home-view.html create mode 100644 portal/theme.py diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000..2bdc1575 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +encoding//portal/django_passresetview.py=utf-8 +encoding//portal/urls.py=utf-8 +encoding//portal/validationview.py=utf-8 +encoding//portal/views.py=utf-8 diff --git a/auth/static/js/logout.js b/auth/static/js/logout.js index c417bb59..9c9b4532 100644 --- a/auth/static/js/logout.js +++ b/auth/static/js/logout.js @@ -7,4 +7,4 @@ function logout () { if (confirm(msg)) window.location="/logout/"; } /* attach this function to the logout button */ -$(document).ready(function() { $('#logout').click(logout); }) +$(document).ready(function() { $('#logout').click(logout); $('#logoutbtn').click(logout); }); diff --git a/devel/server-loop.sh b/devel/server-loop.sh index c77258fc..49d433e5 100755 --- a/devel/server-loop.sh +++ b/devel/server-loop.sh @@ -3,8 +3,8 @@ DIRNAME=$(dirname $0) cd $DIRNAME/.. # default port : if hostname starts with z -> use 8080 ; otherwise take 80 -#hostname | grep -q '^z' && port=8080 || port=8080 -hostname | grep -q '^z' && port=8080 || port=80 +hostname | grep -q '^z' && port=8080 || port=8080 +#hostname | grep -q '^z' && port=8080 || port=80 [[ -n "$@" ]] && port=$1 while true; do diff --git a/myslice/configengine.py b/myslice/configengine.py index 8c98b4c0..e512adf4 100644 --- a/myslice/configengine.py +++ b/myslice/configengine.py @@ -46,6 +46,10 @@ class ConfigEngine(object): parser.read (os.path.join(ROOT,'myslice/myslice.ini')) self.config_parser=parser + def __getattr__(self, section): + if self.config_parser.has_section(section): + return ConfigSection(self.config_parser, section) + def manifold_url (self): return self.config_parser.get('manifold','url') @@ -59,3 +63,13 @@ class ConfigEngine(object): # exporting these details to js def manifold_js_export (self): return "var MANIFOLD_URL = '%s';\n"%self.manifold_url(); + +class ConfigSection(object) : + + def __init__(self, parser, section): + self._parser = parser + self._section = section + + def __getattr__(self, key): + if self._parser.has_option(self._section, key): + return self._parser.get(self._section, key) diff --git a/portal/accountview.py b/portal/accountview.py index 2a929bde..d4499a89 100644 --- a/portal/accountview.py +++ b/portal/accountview.py @@ -12,11 +12,13 @@ from django.contrib import messages from django.contrib.auth.decorators import login_required from django.core.mail import send_mail +from theme import ThemeView + # import json, os, re, itertools # requires login -class AccountView(LoginRequiredAutoLogoutView): +class AccountView(LoginRequiredAutoLogoutView, ThemeView): template_name = "account-view.html" def dispatch(self, *args, **kwargs): return super(AccountView, self).dispatch(*args, **kwargs) @@ -200,6 +202,7 @@ class AccountView(LoginRequiredAutoLogoutView): context['topmenu_items'] = topmenu_items_live('My Account', page) # so we can sho who is logged context['username'] = the_user(self.request) + context['theme'] = self.theme # context ['firstname'] = config['firstname'] prelude_env = page.prelude_env() context.update(prelude_env) diff --git a/portal/adminview.py b/portal/adminview.py index 8a51da99..6560d9d2 100644 --- a/portal/adminview.py +++ b/portal/adminview.py @@ -6,11 +6,11 @@ from manifold.manifoldapi import execute_admin_query from plugins.querytable import QueryTable from unfold.loginrequired import LoginRequiredAutoLogoutView - +from theme import ThemeView import json # View for platforms -class AdminView(LoginRequiredAutoLogoutView): +class AdminView(LoginRequiredAutoLogoutView, ThemeView): template_name = "adminview.html" def get_context_data(self, **kwargs): @@ -80,7 +80,7 @@ class AdminView(LoginRequiredAutoLogoutView): context['topmenu_items'] = topmenu_items_live('Admin', page) # so we can sho who is logged context['username'] = the_user(self.request) - + context['theme'] = self.theme context.update(page.prelude_env()) context['layout_1_or_2']="layout-unfold2.html" if not context['username'] else "layout-unfold1.html" diff --git a/portal/contactview.py b/portal/contactview.py index caee44a4..a97d697d 100644 --- a/portal/contactview.py +++ b/portal/contactview.py @@ -8,10 +8,12 @@ from ui.topmenu import topmenu_items, the_user from portal.forms import ContactForm +from theme import ThemeView + # splitting the 2 functions done here # GET is for displaying the empty form # POST is to process it once filled - or show the form again if anything is missing -class ContactView (FreeAccessView): +class ContactView (FreeAccessView, ThemeView): def post (self, request): form = ContactForm(request.POST) # A form bound to the POST data if form.is_valid(): # All validation rules pass @@ -31,7 +33,7 @@ class ContactView (FreeAccessView): msg = render_to_string('contact-support-email.txt', form.cleaned_data) send_mail("Onelab user %s submitted a query "%email, msg, email, recipients) - return render(request,'contact_sent.html') # Redirect after POST + return render(request,'contact_sent.html', { 'theme' : self.theme}) # Redirect after POST else: return self._display (request, form) @@ -42,5 +44,6 @@ class ContactView (FreeAccessView): return render(request, 'contact.html', { 'form': form, 'topmenu_items': topmenu_items('Contact', request), - 'username': the_user (request) + 'username': the_user (request), + 'theme' : self.theme }) diff --git a/portal/dashboardview.py b/portal/dashboardview.py index dea1c74c..3910726c 100644 --- a/portal/dashboardview.py +++ b/portal/dashboardview.py @@ -11,8 +11,10 @@ from unfold.loginrequired import LoginRequiredAutoLogoutView from ui.topmenu import topmenu_items_live, the_user +from theme import ThemeView + #This view requires login -class DashboardView (LoginRequiredAutoLogoutView): +class DashboardView (LoginRequiredAutoLogoutView, ThemeView): template_name = "dashboard.html" @@ -75,6 +77,8 @@ class DashboardView (LoginRequiredAutoLogoutView): # so we can sho who is logged context['username'] = the_user(self.request) + context['theme'] = self.theme + page.expose_js_metadata() # the page header and other stuff diff --git a/portal/homeview.py b/portal/homeview.py index efdf71e1..57041648 100644 --- a/portal/homeview.py +++ b/portal/homeview.py @@ -4,6 +4,7 @@ from django.http import HttpResponseRedirect from django.contrib.auth import authenticate, login, logout from django.template import RequestContext from django.shortcuts import render_to_response +from django.shortcuts import render from unfold.loginrequired import FreeAccessView @@ -11,8 +12,11 @@ from manifold.manifoldresult import ManifoldResult from ui.topmenu import topmenu_items, the_user from myslice.configengine import ConfigEngine -class HomeView (FreeAccessView): +from theme import ThemeView +class HomeView (FreeAccessView, ThemeView): + template_name = 'home-view.html' + # expose this so we can mention the backend URL on the welcome page def default_env (self): return { @@ -21,6 +25,7 @@ class HomeView (FreeAccessView): def post (self,request): env = self.default_env() + env['theme'] = self.theme username = request.POST.get('username') password = request.POST.get('password') @@ -39,7 +44,7 @@ class HomeView (FreeAccessView): # let's use ManifoldResult.__repr__ env['state']="%s"%manifoldresult env['layout_1_or_2']="layout-unfold2.html" - return render_to_response('home-view.html',env, context_instance=RequestContext(request)) + return render_to_response(self.template,env, context_instance=RequestContext(request)) # user was authenticated at the backend elif auth_result is not None: user=auth_result @@ -50,21 +55,32 @@ class HomeView (FreeAccessView): else: env['state'] = "Your account is not active, please contact the site admin." env['layout_1_or_2']="layout-unfold2.html" - return render_to_response('home-view.html',env, context_instance=RequestContext(request)) + return render_to_response(self.template,env, context_instance=RequestContext(request)) # otherwise else: env['state'] = "Your username and/or password were incorrect." env['layout_1_or_2']="layout-unfold2.html" - return render_to_response('home-view.html',env, context_instance=RequestContext(request)) + return render_to_response(self.template, env, context_instance=RequestContext(request)) # login-ok sets state="Welcome to MySlice" in urls.py def get (self, request, state=None): env = self.default_env() + + if request.user.is_authenticated(): + env['person'] = self.request.user + else: + env['person'] = None + + env['theme'] = self.theme + + 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('home-view.html',env, context_instance=RequestContext(request)) + + + return render_to_response(self.template, env, context_instance=RequestContext(request)) diff --git a/portal/joinview.py b/portal/joinview.py index e513a603..5d2d3639 100644 --- a/portal/joinview.py +++ b/portal/joinview.py @@ -19,10 +19,12 @@ from manifold.core.query import Query from portal.models import PendingUser,PendingAuthority from portal.actions import authority_get_pi_emails, manifold_add_user,manifold_add_account +from theme import ThemeView + # since we inherit from FreeAccessView we cannot redefine 'dispatch' # so let's override 'get' and 'post' instead # -class JoinView (FreeAccessView): +class JoinView (FreeAccessView, ThemeView): def post (self, request): return self.get_or_post (request, 'POST') @@ -204,6 +206,7 @@ class JoinView (FreeAccessView): 'root_authority_hrn': request.POST.get('root_authority_hrn', '').lower(), 'root_authorities': root_authorities, 'authorities': authorities, + 'theme': self.theme } template_env.update(page.prelude_env ()) return render(request, 'join_view.html',template_env) diff --git a/portal/manageuserview.py b/portal/manageuserview.py index 59fc1d62..cbed7ab0 100644 --- a/portal/manageuserview.py +++ b/portal/manageuserview.py @@ -11,12 +11,12 @@ from django.http import HttpResponse, HttpResponseRedirec from django.contrib import messages from django.contrib.auth.decorators import login_required from django.core.mail import send_mail - +from theme import ThemeView # import json, os, re, itertools # requires login -class UserView(LoginRequiredAutoLogoutView): +class UserView(LoginRequiredAutoLogoutView, ThemeView): template_name = "manageuserview.html" def dispatch(self, *args, **kwargs): return super(UserView, self).dispatch(*args, **kwargs) @@ -208,6 +208,7 @@ class UserView(LoginRequiredAutoLogoutView): context['topmenu_items'] = topmenu_items_live('My Account', page) # so we can sho who is logged context['username'] = the_user(self.request) + context['theme'] = self.theme # context ['firstname'] = config['firstname'] prelude_env = page.prelude_env() context.update(prelude_env) diff --git a/portal/platformsview.py b/portal/platformsview.py index 8c7640b4..eef773a3 100644 --- a/portal/platformsview.py +++ b/portal/platformsview.py @@ -5,9 +5,10 @@ from unfold.loginrequired import FreeAccessView from ui.topmenu import topmenu_items_live, the_user from plugins.querytable import QueryTable +from theme import ThemeView # View for platforms -class PlatformsView(FreeAccessView): +class PlatformsView(FreeAccessView, ThemeView): template_name = "platforms.html" def get_context_data(self, **kwargs): @@ -45,7 +46,7 @@ class PlatformsView(FreeAccessView): context['topmenu_items'] = topmenu_items_live('Platforms', page) # so we can sho who is logged context['username'] = the_user(self.request) - + context['theme'] = self.theme context.update(page.prelude_env()) context['layout_1_or_2']="layout-unfold2.html" if not context['username'] else "layout-unfold1.html" diff --git a/portal/platformview.py b/portal/platformview.py index a39fce99..d70c99b5 100644 --- a/portal/platformview.py +++ b/portal/platformview.py @@ -15,9 +15,10 @@ from ui.topmenu import topmenu_items_live, the_user from plugins.querytable import QueryTable from myslice.configengine import ConfigEngine +from theme import ThemeView # View for 1 platform and its details -class PlatformView(FreeAccessView): +class PlatformView(FreeAccessView, ThemeView): template_name = "platform.html" def get_context_data(self, **kwargs): @@ -140,7 +141,7 @@ class PlatformView(FreeAccessView): context['topmenu_items'] = topmenu_items_live('Platforms', page) # so we can sho who is logged context['username'] = the_user(self.request) - + context['theme'] = self.theme context.update(page.prelude_env()) return context diff --git a/portal/registrationview.py b/portal/registrationview.py index 455b1754..e04652cf 100644 --- a/portal/registrationview.py +++ b/portal/registrationview.py @@ -19,10 +19,12 @@ from manifold.core.query import Query from portal.models import PendingUser from portal.actions import authority_get_pi_emails, manifold_add_user,manifold_add_account +from theme import ThemeView + # since we inherit from FreeAccessView we cannot redefine 'dispatch' # so let's override 'get' and 'post' instead # -class RegistrationView (FreeAccessView): +class RegistrationView (FreeAccessView, ThemeView): def post (self, request): return self.get_or_post (request, 'POST') @@ -193,6 +195,7 @@ class RegistrationView (FreeAccessView): 'email': request.POST.get('email', ''), 'password': request.POST.get('password', ''), 'authorities': authorities, + 'theme': self.theme } template_env.update(page.prelude_env ()) return render(request, 'registration_view.html',template_env) diff --git a/portal/resourceview.py b/portal/resourceview.py index ac1813c7..a407725a 100644 --- a/portal/resourceview.py +++ b/portal/resourceview.py @@ -10,9 +10,10 @@ from plugins.lists.simplelist import SimpleList from plugins.slicestat import SliceStat from myslice.configengine import ConfigEngine +from theme import ThemeView # View for 1 platform and its details -class ResourceView(FreeAccessView): +class ResourceView(FreeAccessView, ThemeView): template_name = "resource.html" def get_context_data(self, **kwargs): @@ -88,7 +89,7 @@ class ResourceView(FreeAccessView): context['topmenu_items'] = topmenu_items_live(None, page) # so we can sho who is logged context['username'] = the_user(self.request) - + context['theme'] = self.theme context.update(page.prelude_env()) return context diff --git a/portal/sliceview.py b/portal/sliceview.py index eaec3faa..a48b846f 100644 --- a/portal/sliceview.py +++ b/portal/sliceview.py @@ -31,6 +31,8 @@ from plugins.slicestat import SliceStat from myslice.configengine import ConfigEngine +from theme import ThemeView + tmp_default_slice='ple.upmc.myslicedemo' # temporary : turn off the users part to speed things up @@ -46,7 +48,7 @@ insert_grid=False insert_messages=False #insert_messages=True -class SliceView (LoginRequiredAutoLogoutView): +class SliceView (LoginRequiredAutoLogoutView, ThemeView): def get (self,request, slicename=tmp_default_slice): @@ -427,7 +429,9 @@ class SliceView (LoginRequiredAutoLogoutView): template_env [ 'topmenu_items' ] = topmenu_items_live('Slice', page) # so we can sho who is logged template_env [ 'username' ] = the_user (request) - + + template_env ['theme'] = self.theme + # don't forget to run the requests page.expose_js_metadata() # the prelude object in page contains a summary of the requirements() for all plugins diff --git a/portal/static/css/fed4fire.css b/portal/static/css/fed4fire.css new file mode 100644 index 00000000..a014b34d --- /dev/null +++ b/portal/static/css/fed4fire.css @@ -0,0 +1,628 @@ +/* @override unfold/static/css/plugin.css */ +/* GENERAL */ +body { + padding-top: 60px; + padding-bottom: 20px; +} +*/ +/* center the buttons vertically in the header */ +div.topmenu { padding-top: 40px; } +ul.logged-in { + padding-top: 12px; +} +button.logged-in { + font-size: small; + margin-left: 5px; +} +li.username { + margin-bottom: 10px; + font-size: x-small; +} + +.logoTxt{ + font-size: 35px; + position: absolute; + margin-left: 20px; + font-family: verdana,arial,sans-serif; + font-weight: bold; +} +a{ + color: #777777; + text-decoration: none; +} +a:hover{ + color: red; + text-decoration: none; +} +.container { + padding: 0 !important; + color: black; + background-color: white; + margin: 0; + width: 100%; + max-width: 100%; + min-height: 100% !important; + height: 100% !important; + font-family: Ubuntu, Arial, sans-serif !important; +} +div.f4f-title{ + margin-top:20px; + margin-bottom:20px; + text-align: center; + border: 1px solid #61210B; + background-color: orange; +} +.container h1 { + color: #777777; + margin-top: 5px; +} +table { + color:black; +} + +.container h1, .container h2 { + color: #fff !important; +} + +div.plugin-outline-complete, +div.plugin-outline-body { + border: 0px solid; + border-radius: 0; + border-color: #ccc; + -webkit-transition: padding 200ms ease-out; + -moz-transition: padding 200ms ease-out; + -o-transition: padding 200ms ease-out; + transition: padding 0.2s ease-out; + padding: 20px; + margin: 0; +} +/* +div.plugin-outline-complete:hover, +div.plugin-outline-body:hover { + padding: 80px 80px 120px 80px; +} +*/ +a.plugin-tooltip { + font-size: 130%; + font-style: normal; + font-weight: bold; + padding: 5px; + color: #333; + font-family: Ubuntu, Arial, sans-serif; + text-transform: uppercase; +} + +a.plugin-tooltip:hover { + color: #fff; + text-decoration: none; +} + + + +/* LIST VIEW */ + +h2.well.well-lg { + border-radius:0; + border: 0; + font-family: Ubuntu, arial, sans-serif; + /* text-transform: ; */ + font-weight: normal; + font-size: 40px; + /* color: #30196d; */ + color: white; + margin-bottom: 0px; + margin-top: 0; + padding: 40px; + opacity: 1; + text-align: center; + background-color: #30196d; +} + +#complete-resources { +/* background-color: #92f79e ; */ + background-color: #B8B2FF ; +} + +#complete-filters { +/* background-color: #4af25d; */ + background-color: #add7ff; +} + +#complete-users { +/* background-color: #ff7394 ; */ + background-color: #add7ff ; +} +/* +#complete-measurements { + background-color: ; +} +*/ +#complete-pending { +/* background-color: #add7ff ; */ + background-color: #B8B2FF ; + +} + +#complete-customize-resources { + background-color: #efdfdf; +} + +#complete-msgs-pre { + background-color: #ccc; +} + +#complete-resources, +#complete-filters, +#complete-users, +#complete-measurements, +#complete-pending, +#complete-customize-resources, +#complete-msgs-pre { + opacity: 1; + text-align: center; + color: #333; +} + +#complete-resources:hover, +#complete-filters:hover, +#complete-users:hover, +#complete-measurements:hover, +#complete-pending:hover, +#complete-customize-resources:hover, +#complete-msgs-pre:hover { + opacity: 1; +} + +.nav.nav-tabs { + font-family: Ubuntu, Arial, sans-serif; + border: 0 !important; + border-bottom: 3px solid #fff !important; + margin-bottom: 40px; +} + +.nav.nav-tabs li.active a { + color: red; + border-left: 0px solid #572bc9; + border-top: 0px solid #572bc9; + border-right: 0px solid #572bc9; + background-color: orange; +} + +.nav.nav-tabs li a { + color: #333; + border: 0 !important; + margin-right: 5px; +} + +.nav.nav-tabs li a:hover { + color: #333; + background: red; + color: #fff; + border: 0 !important; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-color: orange; +} + +/* TOPMENU.CSS */ + +body { + /* background: #30196d !important; */ + /* background: black !important; */ + background: white !important; + padding-top: 0px; + padding-bottom: 0px; +} + +.navbar-fixed-top { + position: relative !important; +} + +.navbar-nav li a:hover { + color: red !important; +} + +.navbar-nav li.active a { + background: #eee !important; + background-color: orange; + color: #572bc9 ; +} + +.navbar-nav li.active a { + background: #eee ; +} + +/* Thierry : turning this off +ul.logged-in { + padding-top: 25px; +} +Thierry */ +button.logged-in { + font-size: 1em; + font-weight: bold; + margin-left: 5px; + margin-top: -5px; + /* background: #572bc9; */ + background: #FFD69B; + border: 1px solid orange; + color: #777777; + padding: 5px 15px; + border-radius:5px; +} + +button.logged-in:hover { + /* background: #4af25d; */ + background: orange; + border: 1px solid #777777; + color: #777777; +} +li.username { + margin-bottom: 10px; + font-size: 0.8em; + text-transform: none; + font-weight: normal; + color: #999; +} + + +/* BOOTSTRAP */ + + +ul.pagination li a { + /* background: ; */ + color: #572bc9; + font-family: Ubuntu, Arial, sans-serif; +} + +ul.pagination li.active a { + /* background: #572bc9; */ + background: orange; + border: 1px solid red; +} + +.btn.btn-default { + /* background: #572bc9; */ + background: #FFD69B; + color: #777777; + font-family: Ubuntu, Arial, sans-serif; + font-weight: bold; + border-color: #eea236; +} + +.btn.btn-default:hover { + /* background: #4af25d; */ + /* background: #ff7394; */ + background: orange; + color: #333; + font-family: Ubuntu, Arial, sans-serif; + font-weight: bold; + border-color: #927143; +} + +input { + border-radius: 3px; + border: none; + border: 1px solid #ccc; +} + +div.dataTables_length label, +div.dataTables_filter label, +div.dataTables_info { + font-family: Ubuntu, Arial, sans-serif ; +} + + + + +/* QUERYTABLE */ + +div.QueryTable table.dataTable th { + font: bold 12px/22px Ubuntu, Arial, sans-serif; + color: #333 ; + border-right: 0px solid #333 ; + border-bottom: 0px solid #C1DAD7 ; + border-top: 0px solid #C1DAD7 ; + letter-spacing: 1px; + text-transform: uppercase; + text-align: left; + padding: 8px 12px 4px 20px; + vertical-align:middle; + background: url('../img/tablesort-header.png') no-repeat ; +} + +div.QueryTable table.dataTable td, div.QueryTable table.dataTable textarea, div.QueryTable table.dataTable input [type="text"] { + font: normal 12px Ubuntu, Arial, Helvetica, sans-serif; + border-right: 0px solid #fff ; + border-bottom: 1px solid #fff ; +} + +div.QueryTable table.dataTable thead { + background: url('../img/tablesort-header.png') repeat-x ; + background-color: #caebea; +} + +div.QueryTable table.dataTable tfoot { + background: url('../img/tablesort-header.png') repeat-x ; + /* background-color: # ; */ +} + + +/* QUERY EDITOR */ + +table.query-editor { + margin: 40px auto ; + clear: both; + /* width: 80%;*/ + width: 100% ; + font-family: Ubuntu; +} + +.query-editor-spacer, +.plugin.QueryUpdater, +.plugin.Tabs { + margin-top: 60px !important; +/* Thierry : turning this off +.plugin.Tabs +Thierry */ +{ + margin-top: 60px ; +>>>>>>> 804932e8a431ddbf0d7c56457625457967b48d4c:portal/static/css/onelab_marko.css +} + +table.query-editor td { + padding: 5px 5px ; + font: normal 12px Ubuntu, Arial, sans-serif ; +} + + + +/* DASHBOARD */ + +#ms-dashboard-profile, +#ms-dashboard-testbeds, +#ms-dashboard-slices { + -webkit-transition: all 50ms ease-out; + -moz-transition: all 50ms ease-out; + -o-transition: all 50ms ease-out; + transition: all 0.05s ease-out; + padding-top: 140px; + padding-bottom: 60px; + margin-top: 60px; + color: #777777; + font-family: Ubuntu, Arial, sans-serif; + text-align: center; + +} + +#ms-dashboard-profile:hover, +#ms-dashboard-testbeds:hover, +#ms-dashboard-slices:hover { + margin-top: 65px; +} + +#ms-dashboard-profile { + background: url("../img/icon_users_color.png") top center no-repeat; +} + +#ms-dashboard-testbeds { + background: url("../img/icon_testbed_color.png") top center no-repeat; +} + +#ms-dashboard-slices { + background: url("../img/icon_slices_color.png") top center no-repeat; +} + +.ms-dashboard-content ul { + list-style-type: none ; + padding-left: 0; + text-align: center ; +} + +.ms-dashboard-content { + padding: 0 !important; +} + +.ms-dashboard-content a { +/* color: #ff7394 !important; */ + color: orange !important; +/* color: #ff0099 !important; */ +} + +.ms-dashboard-content a:hover { + color: red !important; +} +.ms-dashboard-caption h2 { + font-family: Ubuntu, Arial, sans-serif; + border-bottom: 0 !important; + text-transform: uppercase; + color: #777777 !important; +} + +#ms-dashboard-profile>div.ms-dashboard-caption { + background: no-repeat url(#) ; + padding-left: 0 ; +} + +#ms-dashboard-testbeds>div.ms-dashboard-caption { + background: no-repeat url(#) ; + padding-left: 0 ; +} + +#ms-dashboard-slices>div.ms-dashboard-caption { + background: no-repeat url(#) ; + padding-left: 0 ; +} + +.simplelist { + font-size: 100%; + text-align: center !important; + margin: 0 auto; +} + +/*** NEW CSS STYLES FOR ONLEAB ***/ + +body { + background-color:white; + color:black; +} +div.wrapper { + width:980px; + margin:0 auto; + position:relative; +} +/* HEADER */ +div#header { + height:100px; + background-color:white; +} + +div#secondary { + +} + +div#secondary ul { + position:absolute; + top:20px; + right:0; +} + +div#secondary li { + font-size:10pt; + float:left; + list-style:none; + margin-right:30px; +} +div#secondary li a { + color:black; +} +div#secondary li a:hover { + color:#270A5A; + text-decoration:none; +} +div#secondary li:last-child { + margin-right:0; +} + +div#navigation { + background-color:black; + width:100%; + height:40px; +} +div#navigation div.wrapper { + text-align:center; +} +div#navigation ul { + margin:0; + padding:0; + display: inline-block; + list-style-type: none; + white-space: nowrap; +} + +div#navigation li { + color:white; + font-family:helvetica, sans-serif; + font-size:10pt ; + font-weight:normal; + line-height:0.8em; + letter-spacing:0.6pt; + list-style:none; + float:left; + padding:0; + margin:15px 50px 0 0; +} +div#navigation li a { + color:white; +} +div#navigation li a:hover { + text-decoration:none; + color:#B8B2FF; +} +div#navigation li:last-child { + margin-right:0; +} + +/* HOME DASHBOARD */ +div#home-dashboard { + color:black; + margin:25px 0; +} +div#home-dashboard table { + margin:25px; + width:100%; +} +div#home-dashboard table td { + text-align:center; + padding:15px 0; + width:33%; +} +div#home-dashboard table tr:first-child td { + font-size:12pt; + font-weight:bold; + color:#270A5A; +} +div#home-dashboard table tr:last-child td { + text-align:left; +} +div#home-dashboard table td.support { + font-size:14pt; + vertical-align:top; + padding-left:11%; +} +div#home-dashboard table td.support a { +} +div#home-dashboard table td.support a:hover { + text-decoration:none; +} + + +.login-submit { + vertical-align:middle; + padding:0; +} +.lost-password { + font-size:10pt; + color:#CCCCCC; + text-align:right; + padding:0px; +} +.lost-password a { +} +.login-signup { + border-top:1px solid #CCCCCC; + text-align:center; + margin-top:15px; + padding:5px 0 0 0; +} +/**/ + +/* NAV TABS */ + +.nav.nav-tabs { +} + +.nav.nav-tabs li.active a { + +} + +.nav.nav-tabs li a { +} + +.nav.nav-tabs li a:hover { +} + +/**/ +/* WELL */ +div.well { +} +/**/ +/* BUTTON */ +.btn.btn-default { + font-weight: bold; +} + +.btn.btn-default:hover { + font-weight: bold; +} \ No newline at end of file diff --git a/portal/static/css/onelab.css b/portal/static/css/onelab.css index 06925d37..d5047550 100644 --- a/portal/static/css/onelab.css +++ b/portal/static/css/onelab.css @@ -345,6 +345,12 @@ div.wrapper { position:relative; } +span.label { + font-size:11pt; + color:gray; + font-weight:normal; + padding:0; +} /***** Notifications *****/ .warning { border: 1px solid red; @@ -429,8 +435,7 @@ div#navigation li:last-child { /* HOME DASHBOARD */ div#home-dashboard { color:black; - margin:25px 0; - border:1px red solid; + margin:25px auto; } div#home-dashboard table { margin:25px; @@ -447,12 +452,21 @@ div#home-dashboard table tr:first-child td { color:#270A5A; } div#home-dashboard table tr:last-child td { + font-size:12pt; + vertical-align:top; + border-right:1px solid #DDDDDD; + padding:25px; +} +div#home-dashboard table tr:last-child td:first-child { +} +div#home-dashboard table tr:last-child td:last-child { + border-right:0; +} +div#home-dashboard table tr:last-child td div { text-align:left; + padding:25px 0; } div#home-dashboard table td.support { - font-size:14pt; - vertical-align:top; - padding-left:11%; } div#home-dashboard table td.support a { } diff --git a/portal/static/img/f4f-logo.png b/portal/static/img/f4f-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8a72315d2058c741e692b01881ee8727399927d9 GIT binary patch literal 77358 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ΝoqEBpwA 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 + {% if state %} + {{ state }} + {% endif %} +
+ {% csrf_token %} + {% if next %} + + {% endif %} +
+ + +
+
+ + +
+
+ +
+ diff --git a/portal/templates/fed4fire/_widget-topmenu.html b/portal/templates/fed4fire/_widget-topmenu.html new file mode 100644 index 00000000..4b2ae0ee --- /dev/null +++ b/portal/templates/fed4fire/_widget-topmenu.html @@ -0,0 +1,38 @@ +{% insert_str prelude "js/bootstrap.js" %} +{% insert_str prelude "css/bootstrap.css" %} +{% insert_str prelude "css/topmenu.css" %} +{% insert_str prelude "js/logout.js" %} +