# default log server
server = "http://athos.ipv6.lip6.fr/activity/push/log"
-def logWrite(request, action, message):
+def logWrite(request, action, message, objects = None):
if not apikey :
print "===============>> activity: no apikey"
"action" : action,
"message" : message,
"apikey" : apikey,
- "signature" : sign(secret, "%s%s%s%s" % (timestamp, ip, request.user, action))
+ "signature" : sign(secret, "%s%s%s%s" % (timestamp, ip, request.user, action)),
+ "slice" : None,
+ "resource" : None
}
+
+ if objects and 'slice' in objects :
+ log['slice'] = objects['slice']
+
+ if objects and 'resource' in objects :
+ log['resource'] = objects['resource']
+
try :
result = urllib2.urlopen(server, urllib.urlencode(log))
+ print "===============>> activity: " + action + " <" + request.user + "> " + message
content = result.read()
except urllib2.URLError as e:
print "===============>> activity: connection to " + server + " impossible, could not log action"
-def log(request, action, message):
+def log(request, action, message, objects = None):
# Create a new thread in Daemon mode to send the log entry
- t = threading.Thread(target=logWrite, args=(request, action, message))
+ t = threading.Thread(target=logWrite, args=(request, action, message, objects))
t.setDaemon(True)
t.start()
--- /dev/null
+#
+# log functions for slice
+#
+
+import activity
+
+def validate(request, o):
+ activity.log(request, "slice.validate", "Slice validation", o)
+
+def resource(request, o):
+ activity.log(request, "slice.resource", "Resource reservation", o)
\ No newline at end of file
theme = ThemeView()
+import activity.slice
+
# Thierry: moving this right into the code so
# most people can use myslice without having to install sfa
# XXX tmp sfa dependency, should be moved to SFA gateway
raise Exception, "Could not create %s. Already exists ?" % slice_params['hrn']
else:
clear_user_creds(wsgi_request,user_email)
-
+ # log user activity
+ activity.slice.validate(self.request, "Slice validation", { "slice" : hrn })
try:
theme.template_name = 'slice_request_validated.txt'
text_content = render_to_string(theme.template, request)
+@import url("../fonts/opensans_bold_macroman/stylesheet.css");
+
html { height: 100% }
body {
margin:0;
padding:0;
height: 100%;
+ letter-spacing:0.3px;
}
a, a:active, a:focus {
outline: 0;
+ text-decoration:none;
+ color:#760073;
+}
+a:hover {
+ color:#0D0049;
}
+a.current {
+ text-decoration:underline;
+ color:#333333;
+}
+p.command {
+ padding:15px;
+ margin:15px 0;
+ color:#890000;
+ background-color:#E0E0E0;
+ font-family:Courier, monospace;
+}
h1 {
border-bottom:1px solid #DDDDDD;
padding:0 0 0 0;
- margin:0 0 0 0;
+ margin:15px 0 15px 0;
font-size:14pt;
}
h1 img {
}
h2 {
margin:0 0 15px 0;
- font-size:13pt;
- color:#0C0045;
+ font-size:14pt;
+ color:#333333;
}
h3 {
- font-size:11pt;
+ margin:0 0 5px 0;
+ font-size:13pt;
color:#201E62;
}
-button {
- font-size:11pt;
-}
-div.wrapper {
- width:980px;
- margin:0 auto;
- position:relative;
+h4 {
+ margin:0 0 5px 0;
+ font-size:12pt;
+ color:#333333;
}
-div.container {
- width:980px;
- margin:25px auto;
+span.subtitle {
+ color:#454545;
+ font-size:9pt;
+ font-weight:normal;
+ text-transform:uppercase;
}
-div.wide {
- margin:25px auto;
- padding:0 25px;
+span.small {
+ font-size:9pt;
}
-
-span.label {
- font-size:11pt;
+span.gray {
color:gray;
+}
+span.type {
+ color:#201E62;
+ font-weight:bold;
+ font-size:9pt;
+}
+span.htitle {
+ color:#454545;
+ font-size:9pt;
font-weight:normal;
- padding:0;
}
-/***** Notifications *****/
-.warning {
- border: 1px solid red;
- margin: 20px 60px;
- padding: 10px 20px;
- color: red;
- background-color: #f2dbdb;
- text-align: center;
+span.version {
+ font-size:8pt;
+ color:#888888;
}
-/* HEADER */
-div#header {
- height:100px;
- background-color:white;
+input[type=text], input[type=password], input[type=email], input[type=tel], input[type=number], select, option {
+ min-width:260px;
+ padding:6px;
+ border:1pt solid #22606D;
+ vertical-align:bottom;
+ border-radius:0;
}
-div#secondary {
-
+textarea {
+ padding:6px;
+ border:1pt solid #22606D !important;
+ border-radius:0 !important;
}
-div#secondary ul {
- position:absolute;
- top:20px;
- right:0;
+span.label {
+ font-size:11pt;
+ color:gray;
+ font-weight:normal;
+ padding:0;
}
-
-div#secondary li {
+div.el {
+ padding-bottom:15px;
+}
+div.breadcrumbs {
+ margin:15px 0;
+ color:gray;
font-size:10pt;
- float:left;
- list-style:none;
- margin-right:30px;
}
-div#secondary li a {
- color:black;
+div.breadcrumbs a {
+ color:gray;
}
-div#secondary li a:hover {
- color:#270A5A;
- text-decoration:none;
+div.breadcrumbs a:hover {
+ text-decoration:underline;
}
-div#secondary li:last-child {
- margin-right:0;
+.tab-pane {
+ padding-top:15px;
}
-
-div#navigation {
- background-color:black;
- width:100%;
- height:40px;
+/* buttons */
+button.btn, input.btn {
+ padding:6px 10px;
+ border-radius:5px;
+ font-size:10pt;
+ font-weight:normal;
}
-div#navigation div.wrapper {
- text-align:center;
+button.btn span.glyphicon {
+ margin-right:6px;
}
-div#navigation ul {
- margin:0;
- padding:0;
- display: inline-block;
- list-style-type: none;
- white-space: nowrap;
+button.btn-default {
+ border-bottom:3px solid #cccccc;
}
-
-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;
+button.btn-default:hover {
+ background-color:white;
+ border:1px solid #ADADAD;
+ border-bottom:3px solid #ADADAD;
}
-div#navigation li a {
+button.btn-default:active {
+ background-color:white;
+ border:1px solid #ADADAD;
+ border-bottom:1px solid #ADADAD;
+ margin-top:2px;
+ box-shadow:none;
+}
+button.btn-primary {
+ border-bottom:3px solid #3071A9;
+}
+button.btn-primary:hover {
+ box-shadow:none;
+ background-color:#428bca;
+ border:1px solid #357ebd;
+ border-bottom:3px solid #3071A9;
+}
+button.btn-primary:active {
+ box-shadow:none;
+ border-bottom:1px solid #3071A9;
+ margin-top:2px;
+}
+button.btn-danger {
+ border-bottom:3px solid #A13F3A;
+}
+button.btn-danger:hover {
+ box-shadow:none;
+ background-color:#d9534f;
+ border:1px solid #d43f3a;
+ border-bottom:3px solid #A13F3A;
+}
+button.btn-danger:active {
+ border:1px solid #d43f3a;
+ box-shadow:none;
+ margin-top:2px;
+}
+button.btn-onelab, input.btn-onelab {
+ border:0;
+ border-bottom:3px solid #760073;
+ background-color:#302562;
color:white;
}
-div#navigation li a:hover {
- text-decoration:none;
- color:#B8B2FF;
+button.btn-onelab:hover, input.btn-onelab:hover {
+ border:0;
+ border-bottom:3px solid #760073;
+ background-color:#302562;
+ color:white;
}
-div#navigation li:last-child {
- margin-right:0;
+button.btn-onelab:active, input.btn-onelab:active {
+ box-shadow:none;
+ border-bottom:1px solid #760073;
+ margin-top:2px;
}
-div#navigation li.active {
- padding:5px;
- padding-top: 15px;
- min-height: 40px;
- margin-top: 0px;
- background-color:gray;
- color:#FF0000;
-}
-div#navigation li.slices {
- position:relative;
- cursor:pointer;
+.container-resource button {
+ padding:2px 4px;
+ border-radius:3px;
+ font-size:9pt;
+ font-weight:normal;
}
-div#navigation .dropdown-menu {
- color:white;
- padding:0 15px 15px 15px;
- margin-top:5px;
- margin-left:-16px;
- background-color:black;
+.container-resource select,.container-resource option, .container-resource input {
+ padding:2px 4px;
+ font-size:9pt;
}
-div#navigation .dropdown-menu a {
- color:white;
+.badge {
+ font-size:9pt;
+ margin-left:4px;
}
-
-div#menu-slice-list{
- display:none;
- position:absolute;
- background-color:black;
- padding:15px;
- left:-15px;
- z-index:10;
+/***** Notifications *****/
+.warning {
+ border: 1px solid red;
+ margin: 20px 60px;
+ padding: 10px 20px;
+ color: red;
+ background-color: #f2dbdb;
+ text-align: center;
}
-div#navigation .dropdown-menu li:first-child {
- border-bottom:1px solid white;
- padding-bottom:5px;
-
-}
/* HOME DASHBOARD */
div#home-dashboard {
color:black;
}
-.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;
-}
/**/
/**/
div.well {
}
/**/
-/* BUTTON */
-.btn.btn-default {
- font-weight: bold;
-}
-
-.btn.btn-default:hover {
- font-weight: bold;
-}
-/**/
/* TABLE */
table.table {
margin:0;
margin:20px 0;
}
-ul.nav-tabs {}
+ul.nav-tabs {
+ margin:0 0 15px 0;
+}
ul.nav-tabs ul {}
ul.nav-tabs li {}
ul.nav-section li a {
+ color:black;
border-bottom:0;
}
ul.nav-section li:first-child {
padding:0;
}
ul.nav-section li:first-child a {
- font-weight:bold;
- padding:6px 15px 4px 15px;
}
ul.nav-section li:first-child.active a {
- padding:6px 15px 3px 15px;
-}
-ul.nav-section li:first-child img {
- margin:0 4px 1px 0;
- padding:0;
}
ul.nav-resources {
}
/* SLICE VIEW */
-
-
+div.container-resource, div.container-slice {
+ padding-right:15px;
+ padding-left:15px;
+}
+.table th {
+ border-top:0 !important;
+}
div#slice-view {
margin:0;
}
div.list-group-item {
border:0;
+ -moz-border-radius: 0;
+ border-radius: 0;
background-color:white;
font-weight:bold;
padding-left:0;
}
a.list-group-item {
+ -moz-border-radius: 0;
+ border-radius: 0;
border:0;
background-color:white;
- padding:3px 0 3px 10px;
+ padding:3px 2px 3px 10px;
border-left:2pt white solid;
}
-a.list-group-item.active, a.list-group-item.active:hover {
+a.list-group-item.active, a.list-group-item.active:hover, a.list-group-item.active:focus {
+ -moz-border-radius: 0;
+ border-radius: 0;
font-weight: bold;
color:black;
- background-color:transparent;
+ background-color:#F5F5F5;
border-left:2pt blue solid;
}
-a.list-group-item.active:hover {
- background-color:#dddddd;
-}
+
a.list-group-item:hover {
+ -moz-border-radius: 0;
+ border-radius: 0;
border-left:2pt blue solid;
}
a.list-group-item p.list-group-item-text {
+ -moz-border-radius: 0;
+ border-radius: 0;
font-size:9pt;
font-style:italic;
font-weight: normal;
color: black !important;
}
+span.sl-resources {
+ font-size:9pt;
+ color:gray;
+}
+a.sl-resources, a.sl-resources:hover {
+ font-size:9pt;
+ border:0;
+ padding:2px 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ width:105px;
+ margin-left:4px;
+ margin-bottom:8px;
+ text-align: center;
+}
+a.sl-resources.active, a.sl-resources.active:hover, a.sl-resources.active:focus {
+ border:0;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+a.sl-resources:first-child {
+ margin-left:12px;
+}
+button.btn-apply {
+ font-size:13px;
+ padding:2px 8px;
+}
div#slice-info {
margin-top:25px;
}
padding:3px 5px;
}
.slice-pending button.apply {
+ font-size:14px;
+ padding:2px 5px;
}
.slice-pending button.clear {
}
float:left;
width:400px;
}
+
+/* HEADER */
+
+
+.header {
+ -moz-box-shadow: 0 0 1px rgba(82,82,82,0.6);
+ -webkit-box-shadow: 0 0 1px rgba(82,82,82,0.6);
+ box-shadow: 0 0 1px rgba(82,82,82,0.6);
+ height:61px;
+ background-color:white;
+}
+
+div.navigation {
+
+}
+div.navigation ul {
+ margin:26px 0 0 0;
+ padding:0;
+ display: inline-block;
+ list-style-type: none;
+ white-space: nowrap;
+}
+
+div.navigation li {
+ color:#0C0047;
+ font-family:open_sansbold, sans-serif;
+ font-size:9pt;
+ font-weight:normal;
+ line-height:0.8em;
+ letter-spacing:0.4pt;
+ list-style:none;
+ float:left;
+ padding:0 15px;
+ margin:0;
+ text-transform:uppercase;
+}
+div.navigation li:hover {
+}
+div.navigation li a {
+ color:#0C0047;
+}
+div.navigation li a:hover, div.navigation li a.current {
+ color:#760073;
+ text-decoration:none;
+}
+
+div.navigation li:last-child {
+ margin-right:0;
+}
+
+
+div.navigation .dropdown-menu {
+ color:black;
+ -moz-box-shadow: 1px 1px 0px 0 rgba(58, 48, 100,0.8);
+ -webkit-box-shadow: 1px 1px 0px 0 rgba(58, 48, 100,0.8);
+ box-shadow: 1px 1px 0px 0 rgba(58, 48, 100,0.8);
+ border-radius:2px;
+ padding:0 5px 5px 5px;
+ margin-top:5px;
+ margin-left:20px;
+}
+div.navigation .dropdown-menu ul {
+ margin:0;
+ padding:15px 5px 5px 5px;
+ display:list-item;
+}
+div.navigation .dropdown-menu li {
+ margin:0 10px 0 0;
+ padding:0 0 8px 0;
+ display:list-item;
+ float:none;
+ text-transform: none;
+}
+
+div.navigation .dropdown-menu a {
+ font-family:Helvetica,sans-serif;
+ font-size:10pt;
+ color:black;
+}
+div.navigation .dropdown-menu li.title {
+ margin-bottom:10px;
+}
+div.navigation .dropdown-menu li.title a {
+ font-family:open_sansbold, sans-serif;
+}
+
+
+div.navigation .dropdown-menu li:first-child {
+ border-bottom:1px solid white;
+ padding-bottom:5px;
+
+}
+
+div.secondary {
+ text-align:right;
+}
+
+div.secondary ul {
+ margin:6px 0 0 0;
+ padding:0;
+}
+
+div.secondary li {
+ font-size:9pt;
+ display:inline;
+ list-style:none;
+ margin:0px;
+ padding:0;
+ margin-right:15px;
+ color:#747474;
+ letter-spacing:0.4px;
+}
+div.secondary li:last-child {
+ margin-right:0;
+}
+div.secondary li a {
+ color:#747474;
+}
+div.secondary li a:hover {
+ text-decoration:underline;
+}
+div.secondary .button {
+ width:300px;
+ margin-top:15px;
+}
+div.secondary .account {
+ margin-top:10px;
+ padding:0;
+ font-size:9pt;
+ color:gray;
+ text-align:right;
+}
+div.secondary .account span {
+ font-size:8pt;
+}
+div.secondary .account a {
+ color:black;
+}
+
+
+div.footer {
+ padding-top:15px;
+}
+div.footer div.bottom {
+ position:absolute;
+ bottom:0;
+}
+div.footer ul {
+ margin:6px 0 0 0;
+ padding:0;
+}
+
+div.footer li {
+ font-size:9pt;
+ display:inline;
+ list-style:none;
+ margin:0px;
+ padding:0;
+ margin-right:15px;
+ color:#747474;
+ letter-spacing:0.4px;
+}
+
+div.footer li a {
+ color:#747474;
+}
+div.footer li a:hover {
+ text-decoration:underline;
+}
+div.copy {
+ font-size:8pt;
+ color:gray;
+ padding-top:15px;
+ padding-bottom:15px;
+}
+
+div.home {
+ font-size:11pt;
+ line-height:1.2em;
+ letter-spacing:0.3pt;
+ min-height:500px;
+ background-image: url('../img/bg-experiment.png');
+ background-repeat:no-repeat;
+ background-size:cover;
+ background-position:center top;
+ background-color:#086274;
+ padding:100px 0;
+}
+div.home h2 {
+ color:white;
+ line-height:1.2em;
+ font-size:18pt;
+}
+div.home h3 {
+ color:white;
+ line-height:1.4em;
+}
+div.dashboard {
+ text-align:center;
+}
+div.dashboard div {
+ margin:25px 0;
+}
+div.dashboard ul {
+ text-align:left;
+ margin-left:24px;
+ list-style:none;
+}
+div.registration-form {
+ padding-top:150px;
+ text-align:center;
+}
+
+.login-form input {
+ width:320px;
+}
+.login-form input[type=submit] {
+ width:108px;
+}
+
+.login-submit {
+ vertical-align:middle;
+ padding:0;
+}
+.lost-password {
+ font-size:10pt;
+ color:black;
+ text-align:right;
+ padding:0px;
+}
+.lost-password a {
+ color:white;
+ text-shadow:0.5px 0.5px black;
+}
+.login-signup {
+ font-size:12pt;
+ color:white;
+ text-shadow:0.5px 0.5px black;
+ margin-top:45px;
+ padding:5px 0 0 4px;
+
+}
+.login-signup a {
+ color:white;
+ text-shadow:0.5px 0.5px black;
+ padding-bottom:2px;
+ border-bottom:2pt solid white;
+}
+.login-signup a:hover {
+ text-decoration:none;
+}
+.login-signup button {
+ padding:8px;
+ border:0;
+ border-bottom:2px solid #540086;
+ background-color:#302562;
+ color:white;
+ width:100px;
+ border-radius:5px;
+ font-size:12pt;
+}
+div.slogan {
+ text-align:center;
+ color:white;
+ padding-top:60px;
+ text-shadow: 1px 1px #013540;
+}
+
+th {
+ border:0 !important;
+}
+
+div.monitor {
+ padding:40px 0 25px 0;
+}
+div.monitor h1 {
+ margin-bottom:25px;
+}
+div.s-monitor {
+ padding-bottom:25px;
+}
+span#stats-period-txt {
+ text-transform:lowercase;
+}
--- /dev/null
+<div class="footer">
+<div class="container">
+ <div class="row">
+ <div class="col-md-12">
+ <ul>
+ <li><a href="/terms">Terms and Conditions</a></li>
+ </ul>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-12 copy">
+ Copyright © UPMC Sorbonne Universités, on behalf of the OneLab consortium
+ </div>
+ </div>
+</div>
+</div>
\ No newline at end of file
{% block base_content %}
{% endblock %}
{% endblock container %}
-<div class="footer">
-<div class="container">
- <div class="row">
- <div class="col-md-12">
- <ul>
- <li><a href="/terms">Terms and Conditions</a></li>
- </ul>
- </div>
- </div>
- <div class="row">
- <div class="col-md-12 copy">
- Copyright © UPMC Sorbonne Universités, on behalf of the OneLab consortium
- </div>
- </div>
-</div>
-</div>
+{% widget "_footer.html" %}
<div class="loading">
<div><img src="{{ STATIC_URL }}/img/loading.gif" /> Loading...</div>
<div> </div>
--- /dev/null
+<div class="footer">
+<div class="container">
+ <div class="row">
+ <div class="col-md-12">
+ <ul>
+ <li></li>
+ </ul>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-12 copy">
+
+ </div>
+ </div>
+</div>
+</div>
\ No newline at end of file
--- /dev/null
+{% extends "layout_base.html" %}
+{% load portal_filters %}
+
+{% block content %}
+<!-- <div class="row">
+{% widget '_widget-news.html' %}
+</div> -->
+{% if username %}
+<div class="container dashboard">
+ <div class="row">
+ {%if 'is_pi' in pi %}
+ <div class="col-md-3">
+ <h3>
+ EXPERIMENT
+ </h3>
+ <div>
+ <a href="#"><img src="{{ STATIC_URL }}img/icon_slices.png" alt="" /></a>
+ </div>
+ <div>
+ <button id="slicerequestbtn" type="button" class="btn btn-default"><span class="glyphicon glyphicon-plus"></span> Create Slice</button>
+ </div>
+ <div>
+ <p><strong>Your slices </strong>
+ <span title="A slice is a set of testbed resources on which you can conduct an experiment.
+ Either ask your colleagues to give you access to an existing slice or request a new slice by clicking 'Request Slice'.
+ However, on the OneLab portal, you will only see slices that you have created through OneLab. If you have created slices elsewhere,
+ such as on the PlanetLab Europe portal, those slices will not appear here."
+ class="glyphicon glyphicon-info-sign">
+ </span>
+
+ </p>
+ </div>
+ <div>
+ <div id="home-slice-list"><img src="{{ STATIC_URL }}img/loading.gif" alt="Loading Slices" /></div>
+ </div>
+ </div>
+ <div class="col-md-3">
+ <h3>MANAGEMENT</h3>
+ <div>
+ <a href="/portal/institution"><img src="{{ STATIC_URL }}img/icon_authority_color.png" alt="" /></a>
+ </div>
+ <div>
+ <button id="validaterequestbtn" type="button" class="btn btn-default"><span class="glyphicon glyphicon-ok"></span> Validate Requests</button>
+ </div>
+ </div>
+ <div class="col-md-3">
+ <h3>
+ SUPPORT
+ </h3>
+ <div>
+ <a href="/portal/support"><img src="{{ STATIC_URL }}img/icon_support.png" alt="" /></a>
+ </div>
+ <div>
+ <button id="ticketbtn" type="button" class="btn btn-default"><span class="glyphicon glyphicon-envelope"></span> Contact</button>
+ </div>
+ </div>
+
+ <div class="col-md-3">
+ <h3>
+ ACCOUNT
+ </h3>
+ <div>
+ <a href="/portal/account/"><img src="{{ STATIC_URL }}img/icon_user_color.png" alt="" /></a>
+ </div>
+ <div>
+ <button id="logoutbtn" type="button" class="btn btn-default" data-username="{{ username }}"><span class="glyphicon glyphicon-off"></span> Logout</button>
+ </div>
+ <div>
+ {% if person.last_name %}
+ {{person.first_name}} {{person.last_name}}<br />
+ {% endif %}
+ <span class="label">Username:</span> <a href='/portal/account/' title="Click here to see and edit your account details.">{{person.email}}</a>
+ </div>
+ </div>
+ </div>
+ {%else%}
+ <div class="row">
+ <div class="col-md-4">
+ <h3>
+ EXPERIMENT
+ </h3>
+ <div>
+ <a href="#"><img src="{{ STATIC_URL }}img/icon_slices.png" alt="" /></a>
+ </div>
+ <div>
+ <button id="slicerequestbtn" type="button" class="btn btn-default"><span class="glyphicon glyphicon-plus"></span> Request Slice</button>
+ </div>
+ <div>
+ <p><strong>Your slices </strong>
+ <span title="A slice is a set of testbed resources on which you can conduct an experiment.
+ Either ask your colleagues to give you access to an existing slice or request a new slice by clicking 'Request Slice'.
+ However, on the OneLab portal, you will only see slices that you have created through OneLab. If you have created slices elsewhere,
+ such as on the PlanetLab Europe portal, those slices will not appear here."
+ class="glyphicon glyphicon-info-sign">
+ </span>
+ </p>
+ </div>
+ <div>
+ <div id="home-slice-list"><img src="{{ STATIC_URL }}img/loading.gif" alt="Loading Slices" /></div>
+ </div>
+ </div>
+ <div class="col-md-4">
+ <h3>
+ SUPPORT
+ </h3>
+ <div>
+ <a href="/portal/support"><img src="{{ STATIC_URL }}img/icon_support.png" alt="" /></a>
+ </div>
+ <div>
+ <button id="ticketbtn" type="button" class="btn btn-default"><span class="glyphicon glyphicon-envelope"></span> Contact</button>
+ </div>
+ </div>
+
+ <div class="col-md-4">
+ <h3>
+ ACCOUNT
+ </h3>
+ <div>
+ <a href="/portal/account/"><img src="{{ STATIC_URL }}img/icon_user_color.png" alt="" /></a>
+ </div>
+ <div>
+ <button id="logoutbtn" type="button" class="btn btn-default" data-username="{{ username }}"><span class="glyphicon glyphicon-off"></span> Logout</button>
+ </div>
+ <div>
+ {% if person.last_name %}
+ {{person.first_name}} {{person.last_name}}<br />
+ {% endif %}
+ <span class="label">Username:</span> <a href='/portal/account/' title="Click here to see and edit your account details.">{{person.email}}</a>
+ </div>
+ </div>
+ </div>
+ {%endif%}
+
+</div>
+{% else %}
+<div class="container-fluid home">
+ <div class="">
+ <div class="col-sm-2"></div>
+ <div class="col-sm-4 slogan">
+ <h2>
+ FanTaaStic:
+ </h2>
+ <h3>
+ the one-stop shop for ICT testbeds and support services
+ </h3>
+ </div>
+ <div class="col-sm-5 col-sm-offset-1">
+ <div class="row">
+ {% widget '_widget-login-user.html' %}
+ </div>
+ </div>
+ <div class="col-sm-1"></div>
+ </div>
+</div>
+{% endif %}
+
+
+<script type="text/javascript">
+ $(document).ready(function() {
+ $('a.home-tab').click(function() {
+ $('ul.nav-tabs li').removeClass('active');
+ $(this).parent().addClass('active');
+ $('div.home-panel').hide();
+ $('div#'+$(this).data('panel')).show();
+ });
+ $('button#validaterequestbtn').click(function() {
+ window.location="/portal/institution#requests";
+ });
+ $('button#ticketbtn').click(function() {
+ window.location="/portal/contact/";
+ });
+ $('button#signupbtn').click(function() {
+ window.location="/portal/register/";
+ });
+ $('button#slicerequestbtn').click(function() {
+ window.location="/portal/slice_request/";
+ });
+/*-------
+List of slices has been moved in
+portal/templates/base.html
+This should go into session
+--------*/
+});
+</script>
+{# widget "_widget-monitor.html" #}
+{# widget "_widget-stats-top-slices.html" #}
+
+{% endblock %}
--- /dev/null
+<div class="login-form">
+ {% if state %}
+ <span class="help-block">{{ state }}</span>
+ {% endif %}
+ <form action="/login/" method="post" role="form">
+ {% csrf_token %}
+ {% if next %}
+ <input type="hidden" name="next" value="{{ next }}" />
+ {% endif %}
+ <div class="form-group">
+ <input type="email" name="username" placeholder="Enter Email / Username">
+ </div>
+ <div class="form-group">
+ <input type="password" name="password" placeholder="Password">
+ </div>
+ <div class="login-submit">
+ <input type="submit" class="btn btn-onelab" value="Sign In" />
+ <span class="lost-password"> | <a href="/portal/pass_reset/">Can't access your account?</a></span>
+ </div>
+ <div class="login-signup">
+ <!-- You don't have yet an account?
+
+ <a href="/register">Sign Up!</a> -->
+ </div>
+ </form>
+</div>
-
-<div id="header">
- <div class="wrapper">
- <div class="logo">
- <a href="/"><img src="{{ STATIC_URL }}img/fantaastic-s.png" alt="FanTaaStic" /></a>
+{% load portal_filters %}
+<div class="header">
+<div class="container">
+ <div class="row">
+ <div class="col-sm-3 col-md-3 logo">
+ <a href="/"><img height="60" src="{{ STATIC_URL }}img/fantaastic.png" alt="FanTaaStic | testbeds.eu Portal - EIT ICT Labs" /></a>
</div>
-
- <div id="secondary">
+ {% if username %}
+ <div class="col-sm-4 col-md-4 navigation">
<ul>
- <li>News</li>
- <li><a href="/portal/about">About</a></li>
- <li><a target="_blank" href="http://www.onelab.eu">Public Website</a></li>
- <li><a target="_blank" href="http://intranet.onelab.eu">Intranet</a></li>
+ <li>
+ <a class="dropdown-toggle" data-toggle="dropdown" href="#">
+ EXPERIMENT <span class="caret"></span>
+ </a>
+
+ <div class="dropdown-menu" style="z-index:99;">
+ <ul id="dropdown-slice-list">
+ <li class="title"><a href="/portal/slice_request/">Request Slice</a></li>
+ </ul>
+ </div>
+ </li>
+ {%if 'is_pi' in pi %}
+ <li id="nav-institution" class=""><a href="/institution">MANAGEMENT</a></li>
+ {%endif%}
+ <li><a href="/support/">SUPPORT</a></li>
</ul>
</div>
- </div>
-
- {% if username %}
- <div id="navigation">
- <div class="wrapper">
- <ul>
- <li id="nav-account"><a href="/portal/account/">{{ username }}</a></li>
- <li>|</li>
- <li id="nav-institution" class=""><a href="/portal/institution">INSTITUTION</a></li>
- <li class="slices">
- <a class="dropdown-toggle" data-toggle="dropdown" href="#">
- SLICES <span class="caret"></span>
- </a>
+ {% else %}
+ <div class="col-sm-4 col-md-4 navigation">
+ </div>
+ {% endif %}
+ <div class="col-sm-5 col-md-5 secondary">
+ <ul>
- <div class="dropdown-menu" style="z-index:99;">
- <ul>
- <li><a href="/portal/slice_request/">Request Slice</a></li>
- <li><a href="/slice/ple.upmc.agent3/">ple.upmc.agent3</a></li>
- <li><a href="/slice/ple.upmc.agent/">ple.upmc.agent</a></li>
- <li><a href="/slice/ple.upmc.myslicedemo/">ple.upmc.myslicedemo</a></li>
- <li><a href="/slice/ple.upmc.slicestat/">ple.upmc.slicestat</a></li>
- <li><a href="/slice/ple.upmc.agent2/">ple.upmc.agent2</a></li>
- </ul>
- </div>
- </li>
- <li id="nav-request"><a href="/portal/validate">REQUESTS</a></li>
- <li id="nav-support"><a href="/portal/support/">SUPPORT</a></li>
- <li>|</li>
- <li id="nav-logout" style="margin-top: 10px;"><a id="logout" style="cursor:pointer;" data-username="{{ username }}"><span class="glyphicon glyphicon-off"></span> LOGOUT</a></li>
- </ul>
+ <li><a target="_blank" href="http://status.testbeds.eu">Services Status</a></li>
+ <li><a target="_blank" href="http://testbeds.eu">Web site</a></li>
+ </ul>
+ {% if username %}
+ <div class="account">You are logged in as <a href="/account/">{{ username }}</a> | <a id="logout" style="cursor:pointer;" data-username="{{ username }}"><span class="glyphicon glyphicon-off"></span> Logout</a></div>
+ {% endif %}
</div>
</div>
- {% else %}
- <div id="navigation">
- <div class="wrapper"></div>
- </div>
- {% endif %}
+</div>
+</div>
+
+<div class="row">
+{% widget '_widget-message.html' %}
</div>
<script>
$(document).ready(function() {