Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • vilem.ded/howto-cards
  • yjarosz/labCards
  • sarah.diehl/howto-cards
  • jacek.lebioda/howto-cards
  • pinar.alper/howto-cards
  • maharshi.vyas/howto-cards
  • manuel.maidorn/howto-cards
  • roland.krause/howto-cards
  • miriam.fougeras/howto-cards
  • soraya.hezzaz/howto-cards
  • fasavanh.sanichanh/howto-cards
  • marie.fossepre/howto-cards
  • jennifer.behm/howto-cards
  • annegrat.daujeumont/howto-cards
  • jon.gales/howto-cards-jpg
  • sandy.thill/howto-cards
  • jenny.tran/howto-cards
17 results
Show changes
Commits on Source (670)
Showing
with 132 additions and 434 deletions
#!/bin/sh
# change this with environment
DEFAULT_NOT_SOURCE_REGEX="/\\/assets\\//"
NOT_SOURCE_REGEX="${NOT_SOURCE_REGEX:-$DEFAULT_NOT_SOURCE_REGEX}"
TIMESTAMP_SUFFIX="${SUFFIX:-.timestamp}"
LOGFILE="${LOGFILE:-/dev/null}"
[ -z "$1" ] && echo "$0: no inputs specified?" >/dev/stderr
while [ -n "$1" ]
do
echo "sourcing directory '$1' ..." >> "$LOGFILE"
find "$1" -type f -name '*.md' | grep -v "$NOT_SOURCE_REGEX" | while read file ; do
fn=`basename "$file"`
dir=`dirname "$file"`
tsfn="$fn.timestamp"
(
echo "making timestamp in '$dir' for file '$fn' ..." >> "$LOGFILE"
cd "$dir"
if [ -f "$tsfn" ]
then echo "... but it already exists; skipping!" >> "$LOGFILE"
else
TIMESTAMP=`git log -n 1 --pretty=format:%cs -- "$fn"`
mv "$fn" "$fn.temporary"
head -n1 "$fn.temporary" > "$fn"
echo "timestamp: \"$TIMESTAMP\"" >> "$fn"
tail -n+2 "$fn.temporary" >> "$fn"
rm -f "$fn.temporary"
fi
)
done
shift
done
import os, re
from os import path
from natsort import natsorted
from pathlib import Path
from generator import core, save
def line_prepender(filename, line):
with open(filename, 'r+') as f:
content = f.read()
f.seek(0, 0)
f.write(line.rstrip('\r\n') + '\n' + content)
# walk through the folders with all the cards
ind, wl = core.core(["external"])
def build_link(title, href):
# strip the number of the title
if ('handbook' in href):
title = re.sub('[0-9.]', '', title).strip()
# add relative url
href = "{{ '" + href + "' | relative_url }}"
return f'\t\t\t<li><a href="{href}">{title}</a></li>\n'
def root_handbook(href):
# remove sym link reference in href
if ('handbook-additional' in href):
href = href.replace('handbook-additional', 'handbook').strip()
elif ('handbook-annexes' in href):
href = href.replace('handbook-annexes', 'handbook').strip()
return href
def root_lab(href):
# remove sym link reference in href
if ('lab-software' in href):
href = href.replace('lab-software', 'lab').strip()
elif ('lab-equipment' in href):
href = href.replace('lab-equipment', 'lab').strip()
elif ('lab-hsa' in href):
href = href.replace('lab-hsa', 'lab').strip()
return href
def build_section_start(title, shortcut):
title = title.replace("Gdpr", "GDPR")
title = title.replace("Handbook additional", "Handbook: PI/Supervisor specifics")
title = title.replace("Handbook annexes", "Handbook: Annexes")
title = title.replace("Covid 19", "COVID-19")
title = title.replace("Ppc", "PPC")
title = title.replace("Lab software", "Lab: Software")
title = title.replace("Lab equipment", "Lab: Equipment")
title = title.replace("Lab hsa", "Lab: Health & Safety, Access")
return f'\n\t<div class="index-box noborderbox" id="{shortcut}-card">\n\t\t<h3>{title}</h3>\n\t\t<ul>\n'
def build_section_end():
return "\t\t</ul>\n\t</div>"
def save_tag(localroot, root, filename, tag):
return_tag = ""
os.chdir(root)
length_tag = len(tag)
with open(filename, 'r') as f:
for line in f:
# check for the start of the section
if line[0:length_tag+1] == tag + ":":
return_tag = line[length_tag+2:]
break
# change back to the local root
os.chdir(localroot)
return return_tag.rstrip()
def get_ignore():
return ["404.html",
"Gemfile",
"Gemfile.lock",
"README.md",
"_config.yml",
"_site",
"assets",
"help.md",
"index.md",
"pagination.md"
]
def save_legacy_from(localroot, root, filename):
legacy_from = []
os.chdir(root)
count = 0
legacy_from_flag = False
with open(filename, 'r') as f:
for line in f:
count += 1
# check for the start of the section
if line[0:12] == "legacy_from:":
legacy_from_flag = True
# append lines from the legacy section
if legacy_from_flag:
legacy_from.append(line)
# check for the end of the header
if legacy_from_flag and line[0:3] == "---":
legacy_from_flag = False
break
# change back to the local root
os.chdir(localroot)
return legacy_from
def remove_header(localroot, root, filename):
nfirstlines = []
os.chdir(root)
# count the number of lines
count = 0
n = 0
headerCheck = False
with open(filename, 'r') as f:
for line in f:
count += 1
# check if the header is actually a header
if count > 1 and line[0:3] == "---":
headerCheck = True
n = count
# remove the header
if headerCheck:
with open(filename) as f, open("tmp"+filename, "w") as out:
for _ in range(n):
nfirstlines.append(next(f))
for line in f:
out.write(line)
os.remove(filename)
os.rename("tmp"+filename, filename)
print(" - Old header removed.")
# change back to the local root
os.chdir(localroot)
return n
def generate_header(folder, permalink, shortcut, order, legacy_from, title, description):
header = "---\n"
if len(order) > 0:
header += "card_order: " + str(order) + "\n"
header += "layout: page\n"
header += "permalink: " + permalink + "\n"
header += "shortcut: " + root_handbook(shortcut) + "\n"
header += "redirect_from:\n"
header += " - /cards/" + shortcut + "\n"
header += " - /" + folder + "/cards/" + shortcut + "\n"
# special case of handbook
if "handbook-annexes" in permalink or "handbook-additional" in permalink:
header += " - /cards/" + root_handbook(shortcut) + "\n"
header += " - /" + folder + "/cards/" + root_handbook(shortcut) + "\n"
# separate lab section
if "lab-software" in permalink or "lab-equipment" in permalink or "lab-hsa" in permalink:
header += " - /cards/" + root_lab(shortcut) + "\n"
header += " - /" + folder + "/cards/" + root_lab(shortcut) + "\n"
# add the title and description
if len(title) > 0:
header += "title: " + title + "\n"
if len(description) > 0:
header += "description: " + description + "\n"
# include the legacy section
if len(legacy_from) > 0:
for item in legacy_from:
header += str(item)
else:
header += "---"
return header
def generate_whitelist_entry(folder, permalink, shortcut):
wl_entry = permalink + "\n"
wl_entry += "/?" + shortcut + "\n"
wl_entry += "/cards/" + shortcut + "\n"
wl_entry += "/" + folder + "/cards/" + shortcut + "\n"
if "handbook-annexes" in permalink or "handbook-additional" in permalink:
wl_entry += "/cards/" + root_handbook(shortcut) + "\n"
wl_entry += "/" + folder + "/cards/" + root_handbook(shortcut) + "\n"
# separate lab section
if "lab-software" in permalink or "lab-equipment" in permalink or "lab-hsa" in permalink:
wl_entry += "/cards/" + root_lab(shortcut) + "\n"
wl_entry += "/" + folder + "/cards/" + root_lab(shortcut) + "\n"
return wl_entry
# loop through the entire internal tree
localroot = os.getcwd()
# retrieve ignore list
ignore = get_ignore()
# generate the index properly speaking
cardDirs = ["internal", "external", "policies"]
sections = []
# determine first the directories
for direct in cardDirs:
if path.isdir(direct):
dirs = os.listdir(direct)
dirs = natsorted(dirs)
for d in dirs:
if d[0] != "." and d not in ignore:
sections.append(d)
sections = list(set(sections))
sections = natsorted(sections)
# Index contains the generated content, init it with an empty container
index = ''
index += '\n<div class="index-box-container">\n'
whiteList = ''
localIndexArr = {k: [] for k in range(len(sections))}
orderArr = {k: [] for k in range(len(sections))}
for folder in cardDirs:
# FolderFlag gets set to true at the first iteration
folderFlag = True
# check if folder exists
if path.isdir(folder) and folder not in ignore:
dirs = os.listdir(folder)
dirs = natsorted(dirs)
for d in dirs:
if d[0] != "." and d not in ignore:
# set the header of the section
#index += "\n### " + d.replace("-", " ").capitalize() + "\n"
# get the index of the section
indexS = sections.index(d)
maxOrder = 0
if len(localIndexArr[indexS]) == 0:
localIndexArr[indexS] = ["\n"]
# walk through the folders with all the cards
for root, dirs, files in os.walk(folder+"/"+d):
for file in files:
if file.endswith(".md"):
fileName = os.path.join(root, file)
# ignore subsections (.md files that start with _)
if file[0] != "_":
print(" > Generating header for: " + fileName)
# save order and legacy section
order = save_tag(localroot, root, file, "card_order")
legacy_from = save_legacy_from(localroot, root, file)
title = save_tag(localroot, root, file, "title")
description = save_tag(localroot, root, file, "description")
# remove the previous header
n = remove_header(localroot, root, file)
# generate a permalink
permalink = "/" + root + "/"
# generate the shortcut
shortcut = re.sub(folder, '', root)
# remove the first /
shortcut = shortcut[1:]
# replace the / with a :
shortcut = re.sub('/', ':', shortcut)
if len(order) > 0:
# find the maximum of existing orders
if folderFlag:
if len(orderArr[indexS]) > 0:
maxOrder = max(orderArr[indexS])
else:
maxOrder = 0
# after determining the max order, set the folder flag to False to avoid another entry into the same block of code
folderFlag = False
tmp = orderArr[indexS].copy()
tmp.append(maxOrder + int(order))
orderArr[indexS] = tmp
else:
orderArr[indexS] = []
# generate the header for each card
header = generate_header(folder, permalink, shortcut, order, legacy_from, title, description)
# add autogenerated links to whitelist
whiteList += generate_whitelist_entry(folder, permalink, shortcut)
# add the header properly speaking
line_prepender(fileName, header)
# open file and get the title after the header
count = 0
title = ""
bp = n + 1
with open(fileName, 'r') as f:
for line in f:
count += 1
if count == bp:
if len(line) > 2:
title = line
break
else:
bp += 1
# remove first and last chars
title = title.rstrip("\n\r")
title = title[2:]
localIndexArr[indexS].append(build_link(title, root))
# output
print(" + New header added.")
print("-----------------------")
# ordering of cards
for d in sections:
indexS = sections.index(d)
# join all subcategories to the index
# if all subcategories have a predefined order
if len(orderArr[indexS]) == len(localIndexArr[indexS])-1 and len(orderArr[indexS]) > 0:
print("")
X = localIndexArr[indexS][1:]
Y = orderArr[indexS]
localIndexArr[indexS] = [x for _, x in sorted(zip(Y, X))]
# natural sorting otherwise
else:
localIndexArr[indexS] = natsorted(localIndexArr[indexS])
print(localIndexArr)
# determine the index
k = 0
for s in sections:
index += build_section_start(s.replace("-", " ").capitalize(), s)
index += ''.join(localIndexArr[k])
index += build_section_end()
k += 1
# close the container
index += "\n</div>"
## add link to return to main index
index += """<br><center><a href="{{ '/' | relative_url }}">go back</a></center>"""
index += """<br><center><a href="{{ '/cards' | relative_url }}">Overview of all HowTo cards</a></center>"""
# output the index
#print(index)
# Read in the file
indexFile = "cards.md"
filedata = ""
with open(indexFile, 'r') as file :
for line in file:
filedata += line
# stop reading once the index place holder has been reached
if re.search("<!-- index -->", line):
filedata += "[[ index ]]"
break
# Replace the target string
filedata = filedata.replace('[[ index ]]', index)
# Write the file out again
with open(indexFile, 'w') as file:
file.write(filedata)
print("\n > New index generated and saved in " + indexFile)
# write link whitelist out
whiteListFile = ".ci/whitelist.txt"
if Path(whiteListFile).exists():
with open(whiteListFile, 'r') as file :
for line in file:
whiteList += line
with open(whiteListFile, 'w') as file:
file.write(whiteList)
save.save_index(ind, "cards.md")
save.save_whitelist(wl, ".ci/whitelist.txt")
Subproject commit 53a922a13c4e8916c97599b5242493a47ea0a2e2
*.PNG filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.mp4 filter=lfs diff=lfs merge=lfs -text
......@@ -11,8 +11,10 @@ stages:
variables:
GIT_STRATEGY: clone
GIT_DEPTH: 0
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
GIT_SUBMODULE_STRATEGY: recursive
# prepare
# ------------------------------------------------------------------------------------
......@@ -24,7 +26,7 @@ prepare:index:
- if: $CI_COMMIT_REF_NAME
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_COMMIT_MESSAGE !~ /tmpBranch/ && $CI_COMMIT_MESSAGE !~ /Update index/'
before_script:
- pip install natsort
- pip install -r .ci/generator/requirements.txt
script:
- python .ci/generateIndex.py
- mkdir .tmp
......@@ -72,11 +74,11 @@ save:commitIndex:
# ------------------------------------------------------------------------------------
build:pages:
image: $CI_REGISTRY/r3/docker/jekyll-lcsb:1.8
image: $CI_REGISTRY/r3/docker/jekyll-lcsb
stage: build
variables:
JEKYLL_ENV: production
BUNDLER_VERSION: 2.0.2
BUNDLER_VERSION: 2.1.4
artifacts:
expire_in: 1 day
paths:
......@@ -107,6 +109,7 @@ build:pages:
- |
echo "Configuration: " && cat ".ci/_config_$CI_COMMIT_REF_NAME.yml"
# Run Jekyll with custom configuration
- LOGFILE=/dev/stdout .ci/add-timestamp-to-howtocard.sh external
- bundle exec jekyll build -d build --config "_config.yml,.ci/_config_$CI_COMMIT_REF_NAME.yml"
# check
......@@ -173,7 +176,7 @@ deploy:vm:
- echo "$KNOWNHOSTS" > ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
rules:
- if: '$CI_PIPELINE_SOURCE != "merge_request_event" && $CI_COMMIT_REF_NAME == "develop" && $CI_PROJECT_PATH == "R3/howto-cards"'
#- if: '$CI_PIPELINE_SOURCE != "merge_request_event" && $CI_COMMIT_REF_NAME == "develop" && $CI_PROJECT_PATH == "R3/howto-cards"'
- if: '$CI_PIPELINE_SOURCE != "merge_request_event" && $CI_COMMIT_REF_NAME == "master" && $CI_PROJECT_PATH == "R3/howto-cards"'
script:
- ssh -p $SSHPORT $SSHCONNECT "mkdir -p ~/$CI_COMMIT_REF_NAME/sources/public/$CI_JOB_ID ~/$CI_COMMIT_REF_NAME/public"
......
[submodule ".ci/generator"]
path = .ci/generator
url = https://gitlab.lcsb.uni.lu/R3/apps/generator.git
......@@ -12,7 +12,7 @@ gem "jekyll", "~> 4.0"
gem "bundler", "> 2.0"
gem "minima", "~> 2.5"
gem 'jekyll-theme-lcsb-default', '~> 0.4.7'
gem 'jekyll-theme-lcsb-default', '~> 0.5.0'
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`.
......
......@@ -10,6 +10,10 @@
{% comment %}This is used to generate share URL for howto-pages{% endcomment %}
<div class="footer-text-container">
{% if page.timestamp %}
<p>Last page modification: {{ page.timestamp }}</p>
{% endif %}
{% if page.shortcut %}
<p>
Share this page:
......@@ -44,4 +48,4 @@
</footer>
{% if site.siteID > 0 %}
{%- include gdpr-banner.html -%}
{% endif %}
\ No newline at end of file
{% endif %}
......@@ -24,7 +24,7 @@ window.boxHider = (function() {
function GetSelectedBoxElement(id) {
var allBoxesArray = GetAllBoxElementsArray();
// note: handbook and lab are actually grouped sections
if (id.startsWith('handbook') || id.startsWith('lab')) {
if (id.startsWith('handbook') || id.startsWith('lab') || id.startsWith('qms') || id.startsWith('publication')) {
return true;
} else {
var element = document.getElementById(id);
......@@ -96,6 +96,22 @@ window.boxHider = (function() {
ShowElement(box);
}
});
} else if (boxId.startsWith('qms')) {
allBoxes.map(function(box) {
if (!box.id.startsWith('qms')) {
HideElement(box);
} else {
ShowElement(box);
}
});
} else if (boxId.startsWith('publication')) {
allBoxes.map(function(box) {
if (!box.id.startsWith('publication')) {
HideElement(box);
} else {
ShowElement(box);
}
});
} else {
allBoxes.map(function(box) {
if (box != selectedBox) {
......
......@@ -37,7 +37,9 @@ order: -1
<li><a href="{{ 'external/access/harrenhal-access' | relative_url }}">HARRENHAL access</a></li>
<li><a href="{{ 'external/access/lums-passwords' | relative_url }}">LUMS account</a></li>
<li><a href="{{ 'external/access/passwords' | relative_url }}">Managing your passwords</a></li>
<li><a href="{{ 'external/access/vpn-cerbere-access' | relative_url }}">VPN/CERBERE connection</a></li>
<li><a href="{{ 'external/access/vpn-access' | relative_url }}">VPN connection</a></li>
<li><a href="{{ 'external/access/vpn-cerbere-access' | relative_url }}">Connect to Cerbere via VPN</a></li>
<li><a href="{{ 'external/access/vpn-mobile' | relative_url }}">VPN connection on your mobile phone</a></li>
<li><a href="{{ 'external/access/wifiNetworkAccessGuests' | relative_url }}">WiFi network access for guests</a></li>
</ul>
</div>
......@@ -54,6 +56,9 @@ order: -1
<li><a href="{{ 'external/contribute/install-git' | relative_url }}">Installation of Git</a></li>
<li><a href="{{ 'external/contribute/markdown' | relative_url }}">Markdown</a></li>
<li><a href="{{ 'external/contribute/mirror-fork' | relative_url }}">Mirror fork automatically</a></li>
<li><a href="{{ 'external/contribute/review' | relative_url }}">Reviewing in Git</a></li>
<li><a href="{{ 'external/contribute/ssh-key-generation' | relative_url }}">Key-based Authentication on GitLab</a></li>
<li><a href="{{ 'external/contribute/supersede' | relative_url }}">Take over a stale merge request</a></li>
<li><a href="{{ 'external/contribute/vscode' | relative_url }}">Contribute using Visual Studio Code</a></li>
<li><a href="{{ 'external/contribute/web-ide' | relative_url }}">Contribute using Gitlab Web IDE</a></li>
......@@ -62,9 +67,13 @@ order: -1
<div class="index-box noborderbox" id="exchange-channels-card">
<h3>Exchange channels</h3>
<ul>
<li><a href="{{ 'external/exchange-channels/calendar' | relative_url }}">Sharing calendar in Microsoft Exchange</a></li>
<li><a href="{{ 'external/exchange-channels/asperaweb' | relative_url }}">AsperaWEB Quick Guide</a></li>
<li><a href="{{ 'external/exchange-channels/atlas-hpc' | relative_url }}">Data transfer between Atlas and UL HPC Clusters</a></li>
<li><a href="{{ 'external/exchange-channels/calendar' | relative_url }}">Sharing calendar in Microsoft Exchange</a></li>
<li><a href="{{ 'external/exchange-channels/cryptomator' | relative_url }}">Cryptomator</a></li>
<li><a href="{{ 'external/exchange-channels/lft' | relative_url }}">LCSB file transfer (LFT) Quick Guide</a></li>
<li><a href="{{ 'external/exchange-channels/owncloud' | relative_url }}">Owncloud</a></li>
</ul>
</div>
<div class="index-box noborderbox" id="general-card">
......@@ -83,48 +92,67 @@ order: -1
<h3>Integrity</h3>
<ul>
<li><a href="{{ 'external/integrity/checksum' | relative_url }}">Ensuring Integrity of Data Files with Checksums</a></li>
<li><a href="{{ 'external/integrity/encryption/cloud' | relative_url }}">Data upload to cloud</a></li>
<li><a href="{{ 'external/integrity/dmp' | relative_url }}">Data Management Plan</a></li>
<li><a href="{{ 'external/integrity/encryption/disk' | relative_url }}">Encrypting the Startup Disk for Your Laptop/Desktop</a></li>
<li><a href="{{ 'external/integrity/encryption/file' | relative_url }}">Encrypting Files and Folders</a></li>
<li><a href="{{ 'external/integrity/naming' | relative_url }}">Naming files</a></li>
<li><a href="{{ 'external/integrity/organization' | relative_url }}">Organization</a></li>
<li><a href="{{ 'external/integrity/sanitisation' | relative_url }}">Sanitising Data Files</a></li>
<li><a href="{{ 'external/integrity/spreadsheets' | relative_url }}">Working with spreadsheets</a></li>
<li><a href="{{ 'external/integrity/transfer/owncloud-privatebin' | relative_url }}">Transfer of Human Data with OwnCloud</a></li>
</ul>
</div>
<div class="index-box noborderbox" id="lab-equipment-card">
<h3>Lab: Equipment</h3>
<ul>
<li><a href="{{ 'external/lab-equipment/cryostorage' | relative_url }}">Utilization of the cryostorage</a></li>
<li><a href="{{ 'external/lab-equipment/dishwasher-utilization-and-maintenance' | relative_url }}">Dishwasher utilization and maintenance</a></li>
<li><a href="{{ 'external/lab-equipment/hoods' | relative_url }}">Laminar Flow - Fume Hood - Biosafety Cabinet: what are the differences and when to use them?</a></li>
<li><a href="{{ 'external/lab-equipment/maintenance-of-fridges' | relative_url }}">Maintenance of fridges and freezers</a></li>
<li><a href="{{ 'external/lab-equipment/maintenance_of_cold_traps' | relative_url }}">Maintenance of cold traps </a></li>
<li><a href="{{ 'external/lab-equipment/utilization-of-autoclaves' | relative_url }}">Utilization of autoclaves</a></li>
<li><a href="{{ 'external/lab-equipment/utilization-of-balances' | relative_url }}">Utilization of balances</a></li>
<li><a href="{{ 'external/lab-equipment/utilization-of-bsc' | relative_url }}">Utilization of Biosafety Cabinets (BSC)</a></li>
<li><a href="{{ 'external/lab-equipment/utilization-of-pH-meter' | relative_url }}">Utilization of pH meter</a></li>
<li><a href="{{ 'external/lab-equipment/autoclaves' | relative_url }}">Autoclaves: utilization</a></li>
<li><a href="{{ 'external/lab-equipment/balances' | relative_url }}">Balances: utilization and maintenance</a></li>
<li><a href="{{ 'external/lab-equipment/biosafety-cabinets' | relative_url }}">Biosafety Cabinets: good practices</a></li>
<li><a href="{{ 'external/lab-equipment/cold-traps' | relative_url }}">Cold traps: maintenance</a></li>
<li><a href="{{ 'external/lab-equipment/cryostorage' | relative_url }}">Cryostorage: utilization</a></li>
<li><a href="{{ 'external/lab-equipment/dishwasher-utilization-and-maintenance' | relative_url }}">Dishwasher: utilization and maintenance</a></li>
<li><a href="{{ 'external/lab-equipment/electric-car' | relative_url }}">Electric Car</a></li>
<li><a href="{{ 'external/lab-equipment/freezers' | relative_url }}">-20°C Freezers: maintenance</a></li>
<li><a href="{{ 'external/lab-equipment/freezers-80' | relative_url }}">-80°C freezers: maintenance</a></li>
<li><a href="{{ 'external/lab-equipment/freezers-150' | relative_url }}">-150°C freezers: maintenance</a></li>
<li><a href="{{ 'external/lab-equipment/fridges' | relative_url }}">Fridges: maintenance</a></li>
<li><a href="{{ 'external/lab-equipment/hoods' | relative_url }}">Hoods: Laminar Flow - Fume Hood - Biosafety Cabinet</a></li>
<li><a href="{{ 'external/lab-equipment/incubators' | relative_url }}">Incubators: maintenance</a></li>
<li><a href="{{ 'external/lab-equipment/lightcycler' | relative_url }}">LightCycler: leave the virtual instrument mode</a></li>
<li><a href="{{ 'external/lab-equipment/pH-meter' | relative_url }}">pH meter: utilization and maintenance</a></li>
<li><a href="{{ 'external/lab-equipment/power-consumption' | relative_url }}">Power consumption of the equipment</a></li>
</ul>
</div>
<div class="index-box noborderbox" id="lab-good-practice-card">
<h3>Lab: Good Practice</h3>
<ul>
<li><a href="{{ 'external/lab-good-practice/mycoplasma' | relative_url }}">Mycoplasma contamination check</a></li>
</ul>
</div>
<div class="index-box noborderbox" id="lab-hsa-card">
<h3>Lab: Health & Safety, Access</h3>
<ul>
<li><a href="{{ 'external/lab-hsa/diphoterine' | relative_url }}">Diphoterine: utilization</a></li>
<li><a href="{{ 'external/lab-hsa/handwashing' | relative_url }}">Handwashing</a></li>
<li><a href="{{ 'external/lab-hsa/lab-coats' | relative_url }}">Lab coats</a></li>
<li><a href="{{ 'external/lab-hsa/personal-alert-safety-system' | relative_url }}">Personal alert safety system (PASS)</a></li>
<li><a href="{{ 'external/lab-hsa/shipment' | relative_url }}">Shipment of a biological or chemical sample</a></li>
<li><a href="{{ 'external/lab-hsa/spill-bsc' | relative_url }}">How to deal with a spill in a BSC</a></li>
<li><a href="{{ 'external/lab-hsa/waste' | relative_url }}">Chemical and Biological Waste Management</a></li>
<li><a href="{{ 'external/lab-hsa/pictograms' | relative_url }}">Pictograms</a></li>
<li><a href="{{ 'external/lab-hsa/ppe' | relative_url }}">Personal Protective Equipment (PPE)</a></li>
<li><a href="{{ 'external/lab-hsa/shipment' | relative_url }}">Shipment of biological or chemical samples with carrier</a></li>
<li><a href="{{ 'external/lab-hsa/spill' | relative_url }}">Spill in a laboratory</a></li>
<li><a href="{{ 'external/lab-hsa/spill-bsc' | relative_url }}">Spill in a Biosafety Cabinet</a></li>
<li><a href="{{ 'external/lab-hsa/waste' | relative_url }}">Waste Management: Chemical and Biological waste</a></li>
</ul>
</div>
<div class="index-box noborderbox" id="lab-software-card">
<h3>Lab: Software</h3>
<div class="index-box noborderbox" id="lab-quarks-card">
<h3>Lab: Quarks</h3>
<ul>
<li><a href="{{ 'external/lab-software/book-lab-equipment' | relative_url }}">How to book a Lab Equipment in Quarks</a></li>
<li><a href="{{ 'external/lab-software/quarks-general' | relative_url }}">Quarks - General information</a></li>
<li><a href="{{ 'external/lab-quarks/book-lab-equipment' | relative_url }}">Booking of a Lab Equipment</a></li>
<li><a href="{{ 'external/lab-quarks/general' | relative_url }}">General information on Quarks</a></li>
</ul>
</div>
......@@ -139,10 +167,17 @@ order: -1
<div class="index-box noborderbox" id="publication-card">
<h3>Publication</h3>
<ul>
<li><a href="{{ 'external/publication/publish-repo' | relative_url }}">Publish a repository</a></li>
<li><a href="{{ 'external/publication/add-gitignore' | relative_url }}">Add a .gitignore to your repository</a></li>
<li><a href="{{ 'external/publication/publishInBiotools' | relative_url }}">Publishing a tool in *bio.tools*</a></li>
<li><a href="{{ 'external/publication/orcid' | relative_url }}">Obtain an ORCID</a></li>
<li><a href="{{ 'external/publication/phdThesisTemplate' | relative_url }}">LaTeX template for a doctoral thesis at University of Luxembourg</a></li>
<li><a href="{{ 'external/publication/10WaysImproveEnglish' | relative_url }}">10 ways to improve your English</a></li>
</ul>
</div>
<div class="index-box noborderbox" id="publication-code-card">
<h3>Publication: Publishing code and programs</h3>
<ul>
<li><a href="{{ 'external/publication-code/publish-repo' | relative_url }}">Publish a repository</a></li>
<li><a href="{{ 'external/publication-code/add-gitignore' | relative_url }}">Add a .gitignore to your repository</a></li>
<li><a href="{{ 'external/publication-code/publishInBiotools' | relative_url }}">Publishing a tool in *bio.tools*</a></li>
</ul>
</div>
</div><br><center><a href="{{ '/' | relative_url }}">go back</a></center><br><center><a href="{{ '/cards' | relative_url }}">Overview of all HowTo cards</a></center>
\ No newline at end of file
......@@ -6,8 +6,8 @@ shortcut: access:harrenhal-access
redirect_from:
- /cards/access:harrenhal-access
- /external/cards/access:harrenhal-access
title: HARRENHAL access
description: This is the howto card that describes the access procedure to the HARRENHAL system
- /access/harrenhal-access
- /external/external/access/harrenhal-access/
---
# HARRENHAL access
......
external/access/harrenhal-access/img/all_connections_01.png

129 B | W: 0px | H: 0px

external/access/harrenhal-access/img/all_connections_01.png

7.97 KiB | W: 0px | H: 0px

external/access/harrenhal-access/img/all_connections_01.png
external/access/harrenhal-access/img/all_connections_01.png
external/access/harrenhal-access/img/all_connections_01.png
external/access/harrenhal-access/img/all_connections_01.png
  • 2-up
  • Swipe
  • Onion skin
external/access/harrenhal-access/img/login_01.png

130 B | W: 0px | H: 0px

external/access/harrenhal-access/img/login_01.png

17.2 KiB | W: 0px | H: 0px

external/access/harrenhal-access/img/login_01.png
external/access/harrenhal-access/img/login_01.png
external/access/harrenhal-access/img/login_01.png
external/access/harrenhal-access/img/login_01.png
  • 2-up
  • Swipe
  • Onion skin
external/access/harrenhal-access/img/login_03.png

130 B | W: 0px | H: 0px

external/access/harrenhal-access/img/login_03.png

30.1 KiB | W: 0px | H: 0px

external/access/harrenhal-access/img/login_03.png
external/access/harrenhal-access/img/login_03.png
external/access/harrenhal-access/img/login_03.png
external/access/harrenhal-access/img/login_03.png
  • 2-up
  • Swipe
  • Onion skin
external/access/harrenhal-access/img/login_04.png

130 B | W: 0px | H: 0px

external/access/harrenhal-access/img/login_04.png

12.9 KiB | W: 0px | H: 0px

external/access/harrenhal-access/img/login_04.png
external/access/harrenhal-access/img/login_04.png
external/access/harrenhal-access/img/login_04.png
external/access/harrenhal-access/img/login_04.png
  • 2-up
  • Swipe
  • Onion skin
external/access/harrenhal-access/img/server_01.png

130 B | W: 0px | H: 0px

external/access/harrenhal-access/img/server_01.png

66.2 KiB | W: 0px | H: 0px

external/access/harrenhal-access/img/server_01.png
external/access/harrenhal-access/img/server_01.png
external/access/harrenhal-access/img/server_01.png
external/access/harrenhal-access/img/server_01.png
  • 2-up
  • Swipe
  • Onion skin
external/access/lums-passwords/img/lums_first-reset-password.png

131 B | W: 0px | H: 0px

external/access/lums-passwords/img/lums_first-reset-password.png

118 KiB | W: 0px | H: 0px

external/access/lums-passwords/img/lums_first-reset-password.png
external/access/lums-passwords/img/lums_first-reset-password.png
external/access/lums-passwords/img/lums_first-reset-password.png
external/access/lums-passwords/img/lums_first-reset-password.png
  • 2-up
  • Swipe
  • Onion skin
external/access/lums-passwords/img/lums_home-settings.png

131 B | W: 0px | H: 0px

external/access/lums-passwords/img/lums_home-settings.png

116 KiB | W: 0px | H: 0px

external/access/lums-passwords/img/lums_home-settings.png
external/access/lums-passwords/img/lums_home-settings.png
external/access/lums-passwords/img/lums_home-settings.png
external/access/lums-passwords/img/lums_home-settings.png
  • 2-up
  • Swipe
  • Onion skin
external/access/lums-passwords/img/lums_login.png

130 B | W: 0px | H: 0px

external/access/lums-passwords/img/lums_login.png

89.3 KiB | W: 0px | H: 0px

external/access/lums-passwords/img/lums_login.png
external/access/lums-passwords/img/lums_login.png
external/access/lums-passwords/img/lums_login.png
external/access/lums-passwords/img/lums_login.png
  • 2-up
  • Swipe
  • Onion skin
external/access/lums-passwords/img/lums_reset-password.png

130 B | W: 0px | H: 0px

external/access/lums-passwords/img/lums_reset-password.png

25.6 KiB | W: 0px | H: 0px

external/access/lums-passwords/img/lums_reset-password.png
external/access/lums-passwords/img/lums_reset-password.png
external/access/lums-passwords/img/lums_reset-password.png
external/access/lums-passwords/img/lums_reset-password.png
  • 2-up
  • Swipe
  • Onion skin