Commit 446d8cf5 authored by Romain Loth's avatar Romain Loth

claim_profile page layout and visiting card layout

parent c3d79cbf
......@@ -14,6 +14,7 @@
<link rel="stylesheet" href="static/explorerlibs/css2/sidebar.css" media="screen">
<link rel="stylesheet" href="static/explorerlibs/bootswatch/css/bootswatch.css">
<link rel="stylesheet" href="static/explorerlibs/css2/font.css" type="text/css">
<link rel="stylesheet" href="static/css/comex.css" type="text/css">
<style>
.sigma_labels_canvas {
......
......@@ -604,16 +604,47 @@ class MyExtractor:
else:
color = '78,193,127'
# content is an instance of #information.our-vcard
# --------------------------------------------------
# <img src="....">
# <ul>
# <li class=bigger>
# <b>{{ hon_title }}
# {{ first_name }}
# {{ mid_initials }}
# {{ last_name }}</b>
# <br/>
# <br/>
# </li>
# <li>
# <b>Country: </b>{{ country }}<br>
# <b>Position: </b>{{ position }}<br>
# <b>Keywords: </b>{{ keywords }}<br>
# [ <a href="{{ info.home_url }}" target="blank">
# View homepage
# </a>]
# <br>
# </li>
# </ul>
content=""
pic_src=self.scholars[idNode]['pic_src']
# pic in vcard
pic_src=self.scholars[idNode]['pic_src']
if pic_src and pic_src != "":
content += '<img src="'+pic_src+'" width=' + str(self.imsize) + 'px style=float:left;margin:5px>';
content += '<img src="'+pic_src+'" width=' + str(self.imsize) + 'px>';
else:
if len(self.scholars)<2000:
im_id = int(floor(randint(0, 11)))
content += '<img src="static/img/'+str(im_id)+'.png" width=' + str(self.imsize) + 'px style=float:left;margin:5px>'
content += '<img src="static/img/'+str(im_id)+'.png" width=' + str(self.imsize) + 'px>'
# label in vcard
content += '<p class=bigger><b>'+nodeLabel+'</b></p>'
# other infos in vcard
content += '<p>'
content += '<b>Country: </b>' + self.scholars[idNode]['country'] + '</br>'
if self.scholars[idNode]['position'] and self.scholars[idNode]['position'] != "":
......@@ -639,6 +670,8 @@ class MyExtractor:
content += '[ <a href=' +self.scholars[idNode]['home_url'].replace("&"," and ")+ ' target=blank > View homepage </a >]<br/>'
content += '</p>'
node = {}
node["type"] = "Document"
node["label"] = nodeLabel
......
......@@ -473,7 +473,6 @@ def claim_profile():
# identify who came back from the return token
if 'token' in request.args:
return_token = sanitize(request.args['token'])
print("clean token", return_token)
......@@ -490,12 +489,15 @@ def claim_profile():
# claim failure cases
if return_token is None or luid is None or return_user is None:
mlog('INFO', 'failed claim profile attempt with return_token=%s, luid=%s' % str(return_token),str(luid))
mlog('INFO', 'failed claim profile attempt with return_token=%s, luid=%s' % (str(return_token),str(luid)))
return render_template(
"message.html",
message = """
This is not the correct link. Don't attempt to claim a profile that is not yours.
"""
This is not the correct link. If you're trying to register to an old profile, please simply click on the link in the email you received.
<br/>
<br/>
Otherwise you can simply register via <span class='code'><a href="%s">%s</a></span>
""" % (url_for('register'),url_for('register'))
)
# claim success
......
......@@ -65,6 +65,10 @@ div.my-box {
-webkit-transition: opacity .2s ease-out;
}
.panel-body {
padding: 5px 15px;
}
/* for intro text */
.mini-hero {
margin-top: 5px;
......@@ -83,6 +87,11 @@ div.my-box {
/*text-align: center;*/
}
#information-example {
}
/* self-made modals */
.modal.self-made {
top:25%;
......@@ -190,22 +199,41 @@ div.my-box {
margin-top: -.5em;
}
/* big categories */
h2.cat {
font-size: 24px;
font-family: "Droid Sans", Calibri, Ubuntu, sans-serif;
padding-top: 1em;
font-weight: bold;
color: #910;
}
h2.catfirst {
font-size: 24px;
margin-top: .2em;
font-weight: bold;
color: #910;
}
/* page sections: style snippets from old bootstrap h2 */
h2.oldstyle {
font-size: 26px;
font-family: "Droid Sans", Calibri, Ubuntu, sans-serif;
font-size: 24px;
font-family: Ubuntu, sans-serif;
font-weight: bold;
}
@media(max-width:768px){
/* sm */
h2.oldstyle {
h2.cat, h2.oldstyle {
font-size: 22px !important;
}
}
@media(max-width:544px){
/* xs */
h2.oldstyle {
h2.cat, h2.oldstyle {
font-size: 16px !important;
}
}
......@@ -215,7 +243,9 @@ h2.oldstyle {
div.ccsection-wrap {
margin: 0 ;
padding: 0 ;
border: none;
background-color: transparent;
max-width: 62em; /* must be > FORMWIDTH */
}
a.ccsection-toggle {
margin: 0 ;
......@@ -224,6 +254,20 @@ a.ccsection-toggle {
a.ccsection-toggle:hover, a.ccsection-toggle:focus {
text-decoration: none;
}
h2.ccsection {
padding-top: 1em;
font-size: 1.5em;
font-family: "Droid Sans", Calibri, Ubuntu, sans-serif;
font-weight: bold;
}
/* uform with bg has already enough padding */
/*uform > h2.ccsection {
padding: 0;
margin: 0
}*/
.ccsection-toggle h2.ccsection, .ccsection-toggle:focus h2.ccsection {
color: #333 ; /* passive: like normal body color */
}
......@@ -244,7 +288,7 @@ div.ccsection-heading {
div.ccsection-uform-body {
background-color: #ddd;
border-radius: 0 ;
padding: 15px 30px 53px 30px;
padding: 5px 15px 20px 15px;
}
div.ccsection-footer {
......@@ -255,9 +299,30 @@ div.ccsection-footer {
/**/
/* "carte de visite" */
.our-vcard {
line-height: 110%;
background-color:#fff;
border-radius: .3em;
padding: 2em 1em .3em 1em;
margin: 2em ;
border: 2px solid #555;
max-width: 35em;
}
.our-vcard img {
float:left;
width: 90px;
position: relative;
margin: -7px 10px 5px 5px;
}
.our-vcard ul {
list-style: none;
}
/**/
.bigger {
font-size: 150%;
}
......
......@@ -2,10 +2,25 @@
/* form content for reg, profile, login, etc.... */
div.uform {
padding: 15px 30px 53px 30px;
margin: 38px 38px 8px 38px;
/*padding: 15px 30px 53px 30px;*/
padding: 0px 5px 3px 5px;
margin: 7px 5px 3px 5px;
background-color: #ddd;
max-width: 950px;
max-width: 57em; /* FORMWIDTH */
}
/* form content for reg, profile, login, etc.... */
div.uform-white {
padding: 0px 5px 3px 5px;
margin: 7px 5px 3px 5px;
background-color: #fff;
max-width: 57em; /* FORMWIDTH */
border-radius: 5px;
}
div.uform-white .ccsection-heading,
div.uform-white .ccsection-uform-body {
background-color: #fff;
}
/*div.uform::before {
......@@ -16,17 +31,40 @@ div.uform {
color: #000;
}*/
/* same but to put a panel-body inside */
/* same but no margin and no color: good to put a panel-body inside */
div.uform-nobg {
margin: 38px 38px 8px 38px;
max-width: 900px;
max-width: 57em; /* FORMWIDTH */
}
.uform.readonly input,
.uform.readonly label,
.uform-white.readonly input,
.uform-white.readonly label {
color: #888;
}
.uform.readonly .tagbox-container,
.uform-white.readonly .tagbox-container {
border: 1px solid #ccc;
border-radius: 5px;
}
.uform.readonly .tagbox-container input,
.uform-white.readonly .tagbox-container input {
display: none;
}
.uform.readonly .tagbox-container label,
.uform-white.readonly .tagbox-container label {
border-top: none;
border-left: none;
border-bottom: none;
border-right: 1px solid #ccc;;
}
@media(max-width:991px){
/* sm and md */
div.uform, div.uform-nobg {
padding: 0;
margin: 12px 12px 2px 12px;
margin: 5px 0px 0px 5px;
}
}
......@@ -54,8 +92,13 @@ p#doors_ret_msg {
border-radius: 2em;
padding: 1em 3em;
text-align: center;
max-width: 57em;
}
/* ex: profile overview in readonly */
.readonly.panel-body {
background-color: #ddd;
}
/* a fixed div for validation messsages */
.menu-right-fixed {
......@@ -78,7 +121,7 @@ p#doors_ret_msg {
.question {
padding: 0 1em;
margin-bottom: 2em;
max-width: 52em; /* FORMWIDTH */
max-width: 57em; /* FORMWIDTH */
}
@media(max-width:991px){
......@@ -175,24 +218,17 @@ input.readonly {
border-bottom: 3px solid #ccc;
}
/* collapsible sections */
h2.ccsection {
padding-top: 1em;
font-size: 1.5em;
font-family: "Droid Sans", Calibri, Ubuntu, sans-serif;
font-weight: bold;
}
/* big categories: like form sections etc. */
/* form categories: like form sections etc. */
h3.formcat {
font-size: 20px;
font-size: 16px;
padding-top: 1em;
font-weight: bold;
color: #910;
}
h3.formcatfirst {
font-size: 20px;
font-size: 16px;
margin-top: .2em;
font-weight: bold;
color: #910;
......
......@@ -2,17 +2,17 @@
.loader{
text-align:center;
transform: translate(0, 50%) !important;
-ms-transform: translate(0, 50%) !important; /*IE 9*/
-ms-transform: translate(0, 50%) !important; /*IE 9*/
-webkit-transform: translate(0, 50%) !important; /*Safari and Chrome */
}
.navbar {
.navbar {
margin-bottom:1px;
}
#defaultop{
#defaultop{
min-height: 5%;
max-height: 10%;
}
......@@ -60,10 +60,10 @@
/*.selection-item{
display:inline-block;
border:solid 1px;
-moz-border-radius: 6px;
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
-webkit-border-radius: 6px;
-khtml-border-radius: 6px;'+
border-color:#BDBDBD;
border-color:#BDBDBD;
padding:0px 2px 0px 2px;
margin:1px 0px 1px 0px;
cursor: pointer;
......@@ -90,10 +90,10 @@
display:inline-block;
border:solid 1px;
/*box-shadow: 0px 0px 0px 1px rgba(0,0,0,0.3); */
-moz-border-radius: 6px;
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
-webkit-border-radius: 6px;
-khtml-border-radius: 6px;'+
border-color:#BDBDBD;
border-color:#BDBDBD;
padding:0px 2px 0px 2px;
margin:1px 0px 1px 0px;
cursor: pointer;
......@@ -122,7 +122,7 @@
}
.gradient {
background-color: #f0f0f8;
background-color: #f0f0f8;
background-image: -webkit-radial-gradient(#ffffff, #d8d8e0); background-image: -moz-radial-gradient(#ffffff, #d8d8e0);
/*background-color: #434343;*/
/*background-image: linear-gradient(#434343, #282828);*/
......@@ -261,19 +261,34 @@
}
#tips ul{
/*list-style:none;*/
padding-left:10%;
padding-left:10%;
}
/* "carte de visite" */
#information {
font-size:80%;
}
line-height: 110%;
background-color:#fff;
border-radius: .3em;
padding: 2em 1em .3em 1em;
margin: 2em ;
border: 2px solid #555;
max-width: 35em;
}
#information img {
clear:both
width: 90px;
position: relative;
top: -7px;
right: 10px;
}
#information ul {
list-style:none;
padding-left:5%;
}
list-style: none;
}
.btn-sm:hover {
font-weight: bold;
......@@ -287,4 +302,4 @@
.tab.active { background: #fff; padding-top: 6px; position: relative; top: 1px; border-color: #666; }
.tab a.active { font-weight: bold; }
.tab-container .panel-container { background: #fff; border: solid #666 1px; padding: 10px; -moz-border-radius: 0 4px 4px 4px; -webkit-border-radius: 0 4px 4px 4px; }
.panel-container { margin-bottom: 10px; }
\ No newline at end of file
.panel-container { margin-bottom: 10px; }
......@@ -25,6 +25,7 @@ function selectSavedMenus(uinfo) {
if (colType == 'm') {
var colName = cmxClt.COLS[i][0]
var chosenV = uinfo[colName]
console.log("..selectSavedMenus", colName, chosenV)
var selectElt = document.getElementById(colName)
if (selectElt) {
var myOption = selectElt.querySelector(`option[value="${chosenV}"]`)
......@@ -42,6 +43,19 @@ function selectSavedMenus(uinfo) {
}
}
// the contents are conditioned on what return_user had in his info
var presentMtis = []
if (uinfo.keywords.length) {
presentMtis.push(
{'id':'keywords', 'prevals': uinfo.keywords}
)
}
if (uinfo.hashtags.length) {
presentMtis.push(
{'id':'hashtags', 'prevals': uinfo.hashtags,'color': "#23A"}
)
}
// initialize form controllers
var theUForm = cmxClt.uform.Form(
......@@ -50,17 +64,9 @@ var theUForm = cmxClt.uform.Form(
// onkeyup function
null,
// other params
{ 'multiTextinputs': [{'id':'keywords',
'prevals': uinfo.keywords},
{'id':'hashtags',
'prevals': uinfo.hashtags,
'color': "#23A"}]
}
{ 'multiTextinputs': presentMtis }
)
var deleteUser = document.getElementById('delete_user')
deleteUser.checked = false
selectSavedMenus(uinfo)
// memory
......
......@@ -399,13 +399,13 @@ function htmlfied_nodesatts(elems){
socnodes.push(information);
} else {
if(node.type==catSoc){
information += '<li><b>' + node.label + '</b></li>';
if(node.htmlCont==""){
information += '<li><b>' + node.label + '</b></li>';
if (!isUndef(node.level)) {
information += '<li>' + node.level + '</li>';
}
} else {
information += '<li>' + $("<div/>").html(node.htmlCont).text() + '</li>';
information += $("<div/>").html(node.htmlCont).text() ;
}
socnodes.push(information)
}
......@@ -451,9 +451,7 @@ function updateLeftPanel_fix() {
// getTopPapers("semantic");
informationDIV += '<br><h4>Information:</h4><ul>';
informationDIV += htmlfied_nodesatts( getNodeIDs(selections) ).join("<br>\n")
informationDIV += '</ul><br>';
informationDIV = htmlfied_nodesatts( getNodeIDs(selections) ).join("<br>\n")
//using the readmore.js
// ive put a limit for nodes-name div
......
......@@ -23,7 +23,7 @@
<!-- <h2 class="oldstyle">Your Profile Info</h2> -->
<p class="mini-hero">
<span class="bigger">
Welcome to your old profile page,
Welcome to your archived profile page,
<strong>
{% if return_user.info.hon_title is not none %}
{{ return_user.info.hon_title }}
......@@ -34,82 +34,31 @@
</p>
</div>
<!-- createlogin -->
<!-- DOORS EMAIL -->
<h3 class="formcat"> Login infos </h3>
<p class="mini-hero">
This email is your main ID. You may only change it via the <a href="http://{{ doors_connect }}/">Doors portal</a>.
</p>
<div class="question input-group">
<label for="email" class="smlabel input-group-addon">
Email
</label>
<input readonly id="email" name="email" maxlength="255" readonly
type="text" class="form-control readonly"
value="{{ return_user.info.email }}">
</div>
<p class="mini-hero">
By registering your email with the Institute's portal, you will claim this data and get the possibility to change or remove it.
</p>
<!-- overview -->
<div class="panel ccsection-wrap">
<a class="ccsection-toggle"
data-parent="#profile_box"
data-toggle="collapse"
href="#overview"
aria-controls="overview"
id="ccsection_toggle_overview">
<div class="panel-heading ccsection-heading" role="tab">
<h2 class="ccsection">
<span class="glyphicon glyphicon-collapse-down glyphicon-float-right"></span>
Your saved data
</h2>
</div>
<h2 class="cat">
You legacy data
</h2>
<p class="mini-hero">
In these 2 panels, you will find your data from the <strong>previous version of Community Explorer</strong>.
</p>
</a>
<div id="overview"
class="panel-body panel-collapse collapse in"
role="tabpanel" aria-expanded="true">
<h3 class="formcatfirst">This is the data you filled on the previous version of Community Explorer</h2>
<!-- CARTE DE VISITE -->
<div id="information-example" class="our-vcard">
<ul>
<!-- TODO if empty then click on image starts showPicImg -->
<img src="{{ (return_user.pic_src | safe) if return_user.pic_src else ''}}" width="80px" style="float:left;margin:5px">
<li>
<b>{{ return_user.info.hon_title }}
{{ return_user.info.first_name }}
<!-- TODO mid initials -->
{{ return_user.info.last_name }}</b>
</li>
<li>
<b>Country: </b>{{ return_user.info.country }}<br>
<b>Position: </b>{{ return_user.info.position }}<br>
<b>Keywords: </b>{{ return_user.info.keywords }}<br>
[ <a href="{{ return_user.info.home_url }}" target="blank">
View homepage
</a>]
<br>
</li>
</ul>
<br>
</div>
<div class="panel ccsection-wrap">
<div class="panel-heading ccsection-heading" role="tab">
<h2 class="ccsection">
Your database entries
</h2>
</div>
<div id="overview" class="readonly panel-body" role="tabpanel">
<p class="mini-hero">
Unfold the tabs below to check all the entries we have in the database.
</p>
<div class="uform-nobg accordion" id="profile_uform">
<div class="uform-white readdonly" id="profile_uform">
<form id="comex_claim_profile_form" enctype="multipart/form-data"
......@@ -141,17 +90,20 @@
role="tabpanel" aria-expanded="false">
<!-- NAME & COUNTRY -->
<div class="question input-group">
{% if return_user.info.hon_title %}
<div class="question input-group">
<label for="hon_title" class="smlabel input-group-addon"> Title </label>
<input readonly id="hon_title" name="hon_title" maxlength="30"
type="text" class="form-control autocomp" placeholder="eg. Mr or Prof. Dr."
onblur="cmxClt.makeBold(this)" onfocus="cmxClt.makeNormal(this)"
value="{{ return_user.info.hon_title }}">
</div>
</div>
{% endif %}
{% if return_user.info.first_name %}
<div class="question input-group">
<label for="first_name" class="smlabel input-group-addon">
* First name
First name
</label>
<input readonly id="first_name" name="first_name" maxlength="30"
type="text" class="form-control" placeholder="prénom"
......@@ -169,8 +121,9 @@
</button>
</div>
</div>
{% endif %}
<!-- optionnel -->
{% if return_user.info.middle_name %}
<div id="group-midname" class="question input-group" style='display:none'>
<label for="middle_name" class="smlabel input-group-addon">
Middle name
......@@ -180,24 +133,29 @@
onblur="cmxClt.makeBold(this)" onfocus="cmxClt.makeNormal(this)"
value="{{ return_user.info.middle_name }}">
</div>
{% endif %}
{% if return_user.info.last_name %}
<div class="question input-group">
<label for="last_name" class="smlabel input-group-addon">
* Last name
Last name
</label>
<input readonly id="last_name" name="last_name" maxlength="30"
type="text" class="form-control" placeholder="nom de famille"
onblur="cmxClt.makeBold(this)" onfocus="cmxClt.makeNormal(this)"
value="{{ return_user.info.last_name }}">
</div>
{% endif %}
<input readonly id="initials" name="initials" maxlength="7"
type="text" hidden
value="{{ return_user.info.initials }}">
{% if return_user.info.country %}
<div class="question input-group">
<label for="country" class="smlabel input-group-addon">
* Country
Country
</label>
<input readonly id="country" name="country" maxlength="60"
type="text" class="form-control autocomp"
......@@ -205,13 +163,14 @@
onblur="if(this.value=='France'){teamCityDivStyle.display = 'block'} else {teamCityDivStyle.display='none'}"
value="{{ return_user.info.country }}">
</div>
{% endif %}
</div> <!-- /panel-body -->
<div class="panel-footer ccsection-footer">&nbsp;</div>
</div>
<!-- essential mapping infos -->
<div class="panel ccsection-wrap">
......@@ -228,52 +187,101 @@
<span class="glyphicon glyphicon-collapse-down glyphicon-float-right"></span>
<span class="glyphicon glyphicon-tags"></span>&nbsp;
Mapping data
<small>(Click here to see more)</small>
</h2>
</div>
</a>
<div id="map_infos_usection"
class="panel-body ccsection-uform-body panel-collapse collapse in"
class="panel-body ccsection-uform-body panel-collapse collapse out"
role="tabpanel" aria-expanded="true">
<!-- JOB, INTERESTS AND ORGANIZATION -->
<h3 class="formcatfirst"> About your job and research </h3>
<p class="mini-hero">
The <strong>keywords</strong> and <strong>affiliation</strong> count as similarities to identify your network neighbours.
<br/>
</p>
<p class="mini-hero">
The <strong>keywords</strong> and <strong>affiliation</strong> will count as similarities to identify your network neighbours. Just start typing... we have autocomplete!
</p>
<!-- JOB, INTERESTS AND ORGANIZATION -->
{% if return_user.info.keywords %}
<div class="question">
<div class="input-group tagbox-container">
<label for="keywords" class="smlabel input-group-addon">* Key subjects</label>
<label for="keywords" class="smlabel input-group-addon">Key subjects</label>
<input readonly id="keywords" name="keywords" maxlength="350"
type="text" class="form-control autocomp" placeholder="Add a keyword here"
value="{{ return_user.info.keywords }}">
<!-- <div class="input-group-addon operation-dark">
<span class="glyphicon glyphicon-plus" onclick="TODO DEPRECATED mtiPopOneTag['keywords']"></span>
</div> -->
</div>
<p class="legend">Please enter at least 5 keywords (press TAB or ENTER after each)</p>
</div>
{% endif %}
{% if return_user.info.position %}
<div class="question input-group">
<label for="position" class="smlabel input-group-addon">* Job Position</label>
<label for="position" class="smlabel input-group-addon">Job Position</label>
<input readonly id="position" name="position" maxlength="30"
type="text" class="form-control autocomp" placeholder="titre"
onblur="cmxClt.makeBold(this)" onfocus="cmxClt.makeNormal(this)"
value="{{ return_user.info.position }}">
</div>
{% endif %}
<!-- ORG QUESTIONS -->
{% if return_user.info.org %}
<div class="question">
<div class="input-group">
<label for="team_lab" class="smlabel input-group-addon">* Lab / Team / Dept</label>
<label for="org" class="smlabel input-group-addon">Parent Institution</label>
<input readonly id="org" name="org" maxlength="120"
type="text" class="form-control autocomp" placeholder='eg "CNRS" or "University of Oxford"'
value="{{ return_user.info.org }}">
</div>
</div>
{% endif %}
{% if return_user.info.org_type and return_user.info.org_type != "null" %}
<div class="question">
<div class="input-group">
<label for="org_type" class="smlabel input-group-addon">Institution Type</label>
<select id="org_type" name="org_type"
class="custom-select form-control"
onchange="if(this.value=='other'){otherInstDivStyle.display = 'block'} else {otherInstDivStyle.display='none'}">
<option selected disabled value="">Please select</option>
<option value="university">University</option>
<option value="public R&amp;D org">Public sector R&amp;D organization</option>
<option value="public other org">Other public sector organization</option>
<option value="private org">Private sector organization</option>
<option value="none">None at the moment</option>
<option value="other"
onclick="otherInstDivStyle.display = 'block'"
>Other</option>
</select>
</div>
<!-- Other institution type <=> only if previous choice == 5 -->
<div class="question conditional-q" id="other_org_div">
<div class="input-group">
<label for="other_org_type" class="smlabel input-group-addon">Other type</label>
<input readonly id="other_org_type" name="other_org_type" maxlength="120"
type="text" class="form-control" placeholder="Clarify here the type of your parent institution">
</div>
</div>
</div>
{% endif %}
{% if return_user.info.team_lab %}
<div class="question">
<div class="input-group">
<label for="team_lab" class="smlabel input-group-addon">Lab / Team / Dept</label>
<input readonly id="team_lab" name="team_lab" maxlength="120"
type="text" class="form-control" placeholder="More detailed affiliation, if relevant"
value="{{ return_user.info.team_lab }}">
</div>
</div>
{% endif %}
{% if return_user.info.org_city %}
<!-- Lab city <=> only for France -->
<div class="question conditional-q" id="team_city_div">
<div class="input-group">
......@@ -283,33 +291,29 @@
value="{{ return_user.info.org_city }}">
</div>
</div>
{% endif %}
{% if return_user.info.job_looking_date or return_user.info.hashtags %}
<h3 class="formcat"> About your future activities </h3>
{% endif %}
{% if return_user.info.job_looking_date %}
<div class="question">
<div class="input-group">
<label for="job_bool" class="smlabel input-group-addon">Soon on the job market? <br/><small>and do you want our job contacts?</small></label>
<label for="job_bool" class="smlabel input-group-addon">Job offers</label>
<select id="job_bool" name="job_bool"
class="custom-select form-control">
<option selected value="No">No</option>
<option value="Yes">Yes</option>
</select>
</div>
<!-- job_looking_date_div <=> only if previous choice == Yes -->
<div class="question conditional-q" id="job_looking_div">
<p class="legend">
We'll show you're available for job offers...
<br/>(it can be until a given date)</p>
<div class="input-group">
<label for="job_looking_date" class="smlabel input-group-addon"><small>Subscribe until ?</small></label>
<input readonly id="job_looking_date" name="job_looking_date" maxlength="10"
type="text" class="form-control" placeholder="ex: 2019/09/30">
</div>
<p id="job_date_message" class="legend red" style="font-weight:bold"></p>
</div>
</div>
{% endif %}
{% if return_user.info.hashtags %}
<div class="question">
<p class="legend">Hashtags for community interest groups (seminars, mailing lists, events...)</p>
<div class="input-group tagbox-container">
......@@ -318,89 +322,14 @@
type="text" class="form-control" placeholder="eg #dataviz, #networks, #rochebrune2018"
value="{{ return_user.info.hashtags }}">
</div>
<p class="legend">(press TAB or ENTER after each)</p>
</div>
{% endif %}
</div> <!-- /panel-body -->
<div class="panel-footer ccsection-footer">&nbsp;</div>
</div>
<!-- Affiliation -->
<div class="panel ccsection-wrap">
<a class="ccsection-toggle"
data-parent="#profile_uform"
data-toggle="collapse"
href="#org_infos_usection"
aria-controls="org_infos_usection"
id="ccsection_toggle_org_infos">
<div class="panel-heading ccsection-heading" role="tab">
<h2 class="ccsection"
title="This is your affiliation data, if you want to fill it it'll be available in stats.">
<span class="glyphicon glyphicon-collapse-down glyphicon-float-right"></span>
<span class="glyphicon glyphicon-briefcase"></span>
Affiliation details
</h2>
</div>
</a>
<div id="org_infos_usection"
class="panel-body ccsection-uform-body panel-collapse collapse out"
role="tabpanel" aria-expanded="false">
<!-- ORG QUESTIONS -->
<div class="question">
<div class="input-group">
<label for="org" class="smlabel input-group-addon">* Parent Institution</label>
<input readonly id="org" name="org" maxlength="120"
type="text" class="form-control autocomp" placeholder='eg "CNRS" or "University of Oxford"'
value="{{ return_user.info.org }}">
</div>
</div>
<div class="question">
<div class="input-group">
<label for="org_type" class="smlabel input-group-addon">* Institution Type</label>
<select id="org_type" name="org_type"
class="custom-select form-control"
onchange="if(this.value=='other'){otherInstDivStyle.display = 'block'} else {otherInstDivStyle.display='none'}">
<option selected disabled value="">Please select</option>
<option value="university">University</option>
<option value="public R&amp;D org">Public sector R&amp;D organization</option>
<option value="public other org">Other public sector organization</option>
<option value="private org">Private sector organization</option>
<option value="none">None at the moment</option>
<option value="other"
onclick="otherInstDivStyle.display = 'block'"
>Other</option>
</select>
</div>
<!-- Other institution type <=> only if previous choice == 5 -->
<div class="question conditional-q" id="other_org_div">
<div class="input-group">
<label for="other_org_type" class="smlabel input-group-addon">Other type</label>
<input readonly id="other_org_type" name="other_org_type" maxlength="120"
type="text" class="form-control" placeholder="Clarify here the type of your parent institution">
</div>
</div>
</div>
</div> <!-- /panel-body -->
<div class="panel-footer ccsection-footer">&nbsp;</div>
</div>
<!-- additional mapping infos -->
<div class="panel ccsection-wrap">
......@@ -417,7 +346,8 @@
<span class="glyphicon glyphicon-collapse-down glyphicon-float-right"></span>
<span class="glyphicon glyphicon-picture"></span>
Additional Personal data
</h2>
<small>(Click here to see more)</small>
</h2>
</div>
</a>
......@@ -426,13 +356,8 @@
class="panel-body ccsection-uform-body panel-collapse collapse out"
role="tabpanel" aria-expanded="false">
<p class="mini-hero">
The <strong>home page (url)</strong>, <strong>picture (url or file)</strong> and <strong>free description</strong> will allow your neighbours to know you a little better.
</p>
<h3 class="formcat"> Homepage and other IDS </h3>
{% if return_user.info.home_url %}
<h3 class="formcat"> Homepage</h3>
<div class="question">
<div class="input-group">
<label for="home_url" class="smlabel input-group-addon">Homepage</label>
......@@ -441,14 +366,9 @@
value="{{ return_user.info.home_url }}">
</div>
</div>
<div class="question">
<div class="input-group">
<label for="linked_ids" class="smlabel input-group-addon">Linked IDs</label>
<input readonly id="linked_ids" name="linked_ids" maxlength="120"
type="text" readonly placeholder="available shortly">
</div>
</div>
{% endif %}
{% if return_user.info.pic_url %}
<h3 class="formcat"> Picture </h3>
<div class="question">
<p class="legend">Link to a picture of yours...</p>
......@@ -459,7 +379,9 @@
value="{{ return_user.info.pic_url }}">
</div>
</div>
{% endif %}
{% if return_user.info.pic_fname %}
<div class="question" style="margin-bottom:.5em" >
<p class="legend">... or upload a picture (png, jpg or gif, max source size: 200kB)</p>
<!-- <p class="legend">Upload a picture of yours (max source size: 4MB, then the image will be reduced to 200kB)</p> -->
......@@ -472,13 +394,17 @@
</div>
<p id="picture_message" class="legend red" style="font-weight:bold"></p>
</div>
{% endif %}
<div id="box_show_pic">
<img id="show_pic" src=""></img>
</div>
<!-- OTHER PERSONAL INFO -->
{% if return_user.info.gender or return_user.info.interests_text %}
<h3 class="formcat"> Complementary information </h3>
{% endif %}
{% if return_user.info.gender and return_user.info.gender != 0 %}
<div class="question">
<div class="input-group">
<label for="gender" class="smlabel input-group-addon">Gender</label>
......@@ -491,7 +417,9 @@
<!-- £TODO js select return_user.info.gender -->
</div>
</div>
{% endif %}
{% if return_user.info.interests_text %}
<div class="question">
<div class="input-group">
<label for="interests_text" class="input-group-addon">
......@@ -506,78 +434,164 @@
</div>
<p class="legend">Optional, ~15 lines max (1200 chars)</p>
</div>
{% endif %}
</div> <!-- /panel-body -->
<div class="panel-footer ccsection-footer">&nbsp;</div>
</div>
<!-- hidden input for modification date -->
<input readonly id="last_modified_date" name="last_modified_date" type="text" hidden>
</input>
<!-- no submit, this form is read-only -->
<!-- hidden input for main user id -->
<input readonly id="luid" name="luid" type="text" hidden
value="{{ return_user.uid | safe }}">
</input>
</form>
</div>
<!-- hidden input for doors user id -->
<input readonly id="doors_uid" name="doors_uid" type="text" hidden
value="{{ return_user.info.doors_uid | safe }}">
</input>
<p class="mini-hero">
<br/><br/>
During the renewal period, you can claim this data and get the possibility to change or remove it.
</p>
<p class="mini-hero">
Simply <strong>register your email with the Institute's portal at the bottom of this page</strong>. If you don't claim this data, we will remove it after 3 months.
</p>
</div>
<div class="panel-footer ccsection-footer" style="min-height:2em;">&nbsp;</div>
</div>
<!-- hidden input for special action: DELETE USER -->
<input readonly id="delete_user" name="delete_user" type="checkbox" hidden>
</input>
<!-- <p> TEST UID {{ return_user.uid | safe }} </p> -->
<div class="panel ccsection-wrap">
<!-- == S U B M I T == -->
<div style="text-align:center">
<!-- @type button to avoid ENTER submit -->
<button class="btn btn-lg btn-success" id="form_submit"
type="button" onclick="theUForm.elForm.submit()">
Save profile
</button>
<div class="panel-heading ccsection-heading" role="tab">
<h2 class="ccsection">
What the others see
</h2>
</div>
<div id="avcard" class="readonly panel-body" role="tabpanel">
<p class="mini-hero">
This "visiting card" is shown to those who find you in the directory.
</p>
<!-- CARTE DE VISITE -->
<div id="information-example" class="our-vcard">
<!-- TODO if empty then click on image starts showPicImg -->
<img src="{{ (return_user.pic_src | safe) if return_user.pic_src else ''}}" class="our-vcard-img">
<ul>
<li class=bigger>
<b>{{ return_user.info.hon_title }}
{{ return_user.info.first_name }}
<!-- TODO mid initials -->
{{ return_user.info.last_name }}</b>
<br/>
<br/>
</li>
<li>
<b>Country: </b>{{ return_user.info.country }}<br>
<b>Position: </b>{{ return_user.info.position }}<br>
<b>Keywords: </b>{{ return_user.info.keywords }}<br>
[ <a href="{{ return_user.info.home_url }}" target="blank">
View homepage
</a>]
<br>
</li>
</ul>
<br>
</div>
</div>
<div class="panel-footer ccsection-footer" style="min-height:2em;">&nbsp;</div>
</div>
<!-- createlogin -->
<div class="uform-nobg">
<!-- EMAIL & PASSWORD -->
<h2 class="cat"> Register and claim this profile </h2>
<p class="mini-hero">
To gain back your access to the data, just pick a password below and this account will become active, receive a confirmation email from the ISC services portal "Doors"
</p>
<form id="comex_createlogin_form" enctype="multipart/form-data"
method="post" onsubmit="console.info('createlogin submitted')">
<div class="question">
<!-- POSS login within modal like comex_test_modal -->
<p class="legend">Your email will also be your login for the ISC services. </p>
<div class="input-group">
<!-- email validation onblur/onchange is done by cmxClt.uauth in comex_user_shared_auth.js -->
<label for="email" class="smlabel input-group-addon">* Email</label>
<input readonly id="email" name="email" maxlength="255" readonly
type="text" class="form-control readonly"
value="{{ return_user.info.email }}">
<!-- doors return value icon -->
<div class="uicontitmsg input-group-addon"
title="The email will be checked in our DB after you type and leave the box.">
<span class="uicon glyphicon glyphicon-question-sign grey"
></span>
</div>
</div>
<!-- doors return value message -->
<p class="umessage legend"></p>
</div>
</form>
</div>
</div>
<div class="panel-footer ccsection-footer">&nbsp;</div>
<div class="question">
<p class="legend">Please make your password difficult to predict.</p>
<div class="input-group">
<label for="password" class="smlabel input-group-addon">* Password</label>
<input id="password" name="password" maxlength="30"
type="password" class="form-control" placeholder="Create a password">
</div>
</div>
</div>
<div class="question">
<div class="input-group">
<label for="password2" class="smlabel input-group-addon">* Password</label>
<input id="password2" name="password2" maxlength="30"
type="password" class="form-control" placeholder="Repeat the password">
</div>
<p class="umessage legend red" style="font-weight:bold"></p>
</div>
<!-- ########################### ( FORM ) ########################## -->
<!-- todo onsubmit also save to cache -->
<!-- == S U B M I T == -->
<button class="btn btn-lg btn-success" style="float:right"
id="form_submit" type=button disabled
onclick="if (validateAndMsg(event)) {registerDoorsAndSubmit()}">
Submit your form to the doors portal.
</button>
<!-- hidden input for main user id -->
<input readonly id="luid" name="luid" type="text" hidden
value="{{ return_user.uid | safe }}">
</input>
<!-- hidden input for doors user id after registration -->
<input readonly id="doors_uid" name="doors_uid" type="text" hidden>
</input>
</form>
</div>
</div>
<div class="spacer col-lg-2 col-md-1 hidden-sm-down">&nbsp;</div>
</div>
<div class="menu-right-fixed">
<!-- main validation message -->
<p id="main_message" class="legend"></p>
</div>
<!-- CNIL WARNING -->
<div class="row spacerrow">&nbsp;</div>
<div class="row">
<div class="spacer col-lg-1 hidden-md-down">&nbsp;</div>
<div class="col-lg-9 col-md-11 col-sm-12">
<h3 class="formcat"> About your data </h3>
<h2 class="cat"> About your data </h2>
<div class="cartouche" id="cnil_warning">
<p>Les informations recueillies à partir de ce formulaire font l’objet d’un traitement
informatique destiné à: </p>
......@@ -594,8 +608,8 @@
loi « informatique et libertés » du 6 janvier 1978 modifiée</a>,
vous disposez d’un <a href="https://www.cnil.fr/fr/le-droit-dacces">droit d’accès</a>
et <a href="https://www.cnil.fr/fr/le-droit-de-rectification">de rectification</a>
aux informations qui vous concernent, en vous adressant à :</p>
<p class="rtecenter"><strong>todo@iscpif.fr</strong></p>
aux informations qui vous concernent.<!-- , en vous adressant à :</p>
<p class="rtecenter"><strong>todo@iscpif.fr</strong></p> -->
<p>Vous pouvez également, pour des motifs légitimes,
<a href="https://www.cnil.fr/fr/le-droit-dopposition">vous opposer au traitement
des données vous concernant</a>. Pour en savoir plus, <a href="https://www.cnil.fr/fr/comprendre-vos-droits">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment