Compare commits
35 Commits
2021-12-06
...
2023-01-16
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2868cf3548 | ||
|
|
f627218e41 | ||
|
|
8506356a13 | ||
|
|
ce03a21ad7 | ||
|
|
e6c87bb3f6 | ||
|
|
10e8116d83 | ||
|
|
f671c365a3 | ||
|
|
b19cfa6d48 | ||
|
|
f898ee8d31 | ||
|
|
87f067b077 | ||
|
|
e1b1d194fd | ||
|
|
ab842809c7 | ||
|
|
e909ee8405 | ||
|
|
9ce19a34a7 | ||
|
|
710abf74df | ||
|
|
2de5727ea2 | ||
|
|
30f96d4fdc | ||
|
|
313f95fac8 | ||
|
|
20b2273623 | ||
|
|
6cd69c5d4b | ||
|
|
2bbeaacb76 | ||
|
|
9f352da395 | ||
|
|
fe1285d455 | ||
|
|
31c2d294fe | ||
|
|
48230b623a | ||
|
|
6c1fdc06fc | ||
|
|
956c307b6c | ||
|
|
743ebba052 | ||
|
|
13a5fdd6f7 | ||
|
|
7c79891983 | ||
|
|
9e93d41bc3 | ||
|
|
a72c5f03cf | ||
|
|
eb00a806fc | ||
|
|
f543beee1b | ||
|
|
adf8501263 |
@@ -13,6 +13,5 @@ WORKDIR /usr/src/portal-webapp
|
||||
RUN apt-get update && apt-get -y install wkhtmltopdf && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN pip3 install --no-cache-dir pdfkit flask==1.1.4 flask-dropzone flask-log-request-id flask-login Flask-SQLAlchemy alembic flask-migrate==2.7.0 Flask-script psycopg2 gunicorn pdfkit Werkzeug==1.0.1 PyJWT
|
||||
|
||||
RUN pip3 install --no-cache-dir pdfkit markupsafe==2.0.1 flask==1.1.4 flask-dropzone flask-log-request-id flask-login Flask-SQLAlchemy==2.5.1 alembic flask-migrate==2.7.0 Flask-script psycopg2 gunicorn pdfkit Werkzeug==1.0.1 PyJWT
|
||||
ENTRYPOINT ["./entrypoint.sh"]
|
||||
|
||||
484
app.py
484
app.py
@@ -2,6 +2,8 @@ import logging
|
||||
import os
|
||||
import re
|
||||
import configparser
|
||||
import random
|
||||
import string
|
||||
from pathlib import Path
|
||||
from werkzeug.security import check_password_hash
|
||||
|
||||
@@ -12,6 +14,10 @@ from flask_script import Manager
|
||||
from flask_login import LoginManager, login_required, login_user, current_user, logout_user
|
||||
from portal.model import db, RegisteredUser
|
||||
|
||||
from email.mime.multipart import MIMEMultipart
|
||||
from email.mime.text import MIMEText
|
||||
from email.mime.application import MIMEApplication
|
||||
|
||||
import portal.solar
|
||||
|
||||
# TODO: Integrate Shibboleth login.
|
||||
@@ -26,6 +32,8 @@ config = configparser.ConfigParser()
|
||||
config.read('config.ini')
|
||||
config = config['DEFAULT']
|
||||
|
||||
SERVER_NAME = config['SERVER_NAME']
|
||||
ROUTE_PREFIX = config['ROUTE_PREFIX']
|
||||
MAIL_HOST = config['MAIL_HOST']
|
||||
MAIL_LOGIN = config['MAIL_LOGIN']
|
||||
MAIL_PASS = config['MAIL_PASS']
|
||||
@@ -47,6 +55,10 @@ if not UPLOADS_DIR.exists:
|
||||
UPLOADS_DIR.mkdir(parents=True)
|
||||
|
||||
# Override configs with environment variables, if set
|
||||
if 'PORTALDS4DS1_SERVER_NAME' in os.environ:
|
||||
SERVER_NAME = os.environ['PORTALDS4DS1_SERVER_NAME']
|
||||
if 'PORTALDS4DS1_ROUTE_PREFIX' in os.environ:
|
||||
ROUTE_PREFIX = os.environ['PORTALDS4DS1_ROUTE_PREFIX']
|
||||
if 'PORTALDS4DS1_MAIL_HOST' in os.environ:
|
||||
MAIL_HOST = os.environ['PORTALDS4DS1_MAIL_HOST']
|
||||
if 'PORTALDS4DS1_MAIL_LOGIN' in os.environ:
|
||||
@@ -77,9 +89,11 @@ if 'PORTALDS4DS1_SQL_CONN_STR' in os.environ:
|
||||
|
||||
######################
|
||||
|
||||
app = Flask(__name__)
|
||||
app = Flask(__name__, static_url_path = ROUTE_PREFIX + '/static')
|
||||
#app = Flask(__name__)
|
||||
|
||||
app.config.update(
|
||||
SERVER_NAME = SERVER_NAME,
|
||||
SECRET_KEY = APP_SECRET_KEY,
|
||||
UPLOADED_PATH = UPLOADS_DIR,
|
||||
MAX_CONTENT_LENGTH = MAX_UPLOAD_SIZE,
|
||||
@@ -99,6 +113,7 @@ manager.add_command('db', MigrateCommand)
|
||||
dropzone = Dropzone(app)
|
||||
|
||||
upload_handler_solar = portal.solar.UploadHandlerSolar(
|
||||
SERVER_NAME = SERVER_NAME,
|
||||
UPLOADS_DIR=UPLOADS_DIR,
|
||||
MAIL_HOST=MAIL_HOST,
|
||||
MAIL_LOGIN=MAIL_LOGIN,
|
||||
@@ -124,11 +139,11 @@ def redirect_url(default='/'):
|
||||
url_for(default)
|
||||
|
||||
|
||||
@app.route('/')
|
||||
@app.route(ROUTE_PREFIX + '/')
|
||||
def index():
|
||||
if current_user.is_authenticated:
|
||||
return redirect('/oddaja')
|
||||
return redirect('/login')
|
||||
return redirect(ROUTE_PREFIX + '/oddaja/')
|
||||
return redirect(ROUTE_PREFIX + '/login/')
|
||||
|
||||
|
||||
@login_manager.user_loader
|
||||
@@ -137,17 +152,17 @@ def load_user(user_id):
|
||||
return user
|
||||
|
||||
|
||||
@app.route('/login')
|
||||
@app.route(ROUTE_PREFIX + '/login')
|
||||
def solar_login_get():
|
||||
return render_template('solar-login.html')
|
||||
return render_template('solar-login.html', ROUTE_PREFIX=ROUTE_PREFIX)
|
||||
|
||||
|
||||
@app.route('/register')
|
||||
@app.route(ROUTE_PREFIX + '/register')
|
||||
def solar_register_get():
|
||||
return render_template('solar-register.html')
|
||||
return render_template('solar-register.html', ROUTE_PREFIX=ROUTE_PREFIX)
|
||||
|
||||
|
||||
@app.route('/login', methods=['POST'])
|
||||
@app.route(ROUTE_PREFIX + '/login', methods=['POST'])
|
||||
def solar_login_post():
|
||||
email = request.form.get('email')
|
||||
password = request.form.get('password')
|
||||
@@ -157,19 +172,19 @@ def solar_login_post():
|
||||
|
||||
if not user or not check_password_hash(user.pass_hash, password):
|
||||
flash('Napačni podatki za prijavo. Poskusite ponovno.')
|
||||
return redirect('/login')
|
||||
return redirect(ROUTE_PREFIX + '/login/')
|
||||
|
||||
if not user.active:
|
||||
flash('Vaš uporabniški račun še ni bil aktiviran.')
|
||||
return redirect('/login')
|
||||
return redirect(ROUTE_PREFIX + '/login/')
|
||||
|
||||
#portal.solar.add_user_session(user.id)
|
||||
login_user(user, remember=remember)
|
||||
|
||||
return redirect('/oddaja')
|
||||
return redirect(ROUTE_PREFIX + '/oddaja/')
|
||||
|
||||
|
||||
@app.route('/register', methods=['POST'])
|
||||
@app.route(ROUTE_PREFIX + '/register', methods=['POST'])
|
||||
def solar_register_post():
|
||||
name = request.form.get('name')
|
||||
email = request.form.get('email')
|
||||
@@ -182,38 +197,38 @@ def solar_register_post():
|
||||
|
||||
if user:
|
||||
flash('Uporabniški račun s tem emailom je že registriran.')
|
||||
return redirect('/register')
|
||||
return redirect(ROUTE_PREFIX + '/register/')
|
||||
|
||||
if not name:
|
||||
flash('Prazno polje za ime.')
|
||||
return redirect('/register')
|
||||
return redirect(ROUTE_PREFIX + '/register/')
|
||||
if len(name) > 100:
|
||||
flash('Predolgo ime.')
|
||||
return redirect('/register')
|
||||
return redirect(ROUTE_PREFIX + '/register/')
|
||||
|
||||
if not email:
|
||||
flash('Prazno polje za elektronsko pošto.')
|
||||
return redirect('/register')
|
||||
return redirect(ROUTE_PREFIX + '/register/')
|
||||
if len(email) > 100:
|
||||
flash('Predolgi email naslov')
|
||||
return redirect('/register')
|
||||
return redirect(ROUTE_PREFIX + '/register/')
|
||||
elif not re.search(portal.solar.REGEX_EMAIL, email):
|
||||
flash('Email napačnega formata.')
|
||||
return redirect('/register')
|
||||
return redirect(ROUTE_PREFIX + '/register/')
|
||||
|
||||
if not password:
|
||||
flash('Prazno polje za geslo.')
|
||||
return redirect('/register')
|
||||
if len(password) > 8:
|
||||
return redirect(ROUTE_PREFIX + '/register/')
|
||||
if len(password) < 8:
|
||||
flash('Geslo mora biti vsaj 8 znakov dolgo.')
|
||||
return redirect('/register')
|
||||
return redirect(ROUTE_PREFIX + '/register/')
|
||||
if len(password) > 100:
|
||||
flash('Predolgo geslo.')
|
||||
return redirect('/register')
|
||||
return redirect(ROUTE_PREFIX + '/register/')
|
||||
|
||||
if institution_role not in ['coordinator', 'mentor', 'other']:
|
||||
flash('Neveljavna vloga v instituciji.')
|
||||
return redirect('/register')
|
||||
return redirect(ROUTE_PREFIX + '/register/')
|
||||
|
||||
if not institution:
|
||||
institution_id = portal.solar.add_institution(institution_name, "")
|
||||
@@ -224,20 +239,22 @@ def solar_register_post():
|
||||
user_id = portal.solar.register_new_user(name, email, password, active=False)
|
||||
portal.solar.add_user_to_institution(user_id, institution_id, institution_role)
|
||||
|
||||
portal.solar.add_cooperation_history_item(user_id, institution_id, institution_role)
|
||||
|
||||
portal.solar.send_admins_new_user_notification_mail(user_id, upload_handler_solar.config)
|
||||
|
||||
flash('Podatki so bili poslani v potrditev. Ko bo registracija potrjena, boste o tem obveščeni po e-mailu, ki ste ga posredovali zgoraj.')
|
||||
return redirect('/login')
|
||||
flash('Podatki so bili poslani v potrditev. Ko bo registracija potrjena, boste o tem obveščeni po e-mailu. To lahko traja nekaj časa.')
|
||||
return redirect(ROUTE_PREFIX + '/login/')
|
||||
|
||||
|
||||
@app.route('/logout')
|
||||
@app.route(ROUTE_PREFIX + '/logout')
|
||||
@login_required
|
||||
def logout():
|
||||
logout_user()
|
||||
return redirect('/login')
|
||||
return redirect(ROUTE_PREFIX + '/login/')
|
||||
|
||||
|
||||
@app.route('/<path:text>')
|
||||
@app.route(ROUTE_PREFIX + '/<path:text>')
|
||||
@login_required
|
||||
def solar(text):
|
||||
is_admin = current_user.role == 'admin'
|
||||
@@ -252,6 +269,7 @@ def solar(text):
|
||||
|
||||
if text.startswith('oddaja/') or text == 'oddaja':
|
||||
return render_template('solar-oddaja.html',
|
||||
ROUTE_PREFIX=ROUTE_PREFIX,
|
||||
is_admin=is_admin,
|
||||
institution=current_user_institution,
|
||||
institution_contract=institution_contract,
|
||||
@@ -270,9 +288,10 @@ def solar(text):
|
||||
else:
|
||||
institution_names.append(institution.name)
|
||||
return render_template('solar-zgodovina.html', upload_history=upload_items, uploader_names=uploader_names,
|
||||
institution_names=institution_names, is_admin=is_admin, is_institution_coordinator=current_user_institution_coordinator)
|
||||
institution_names=institution_names, is_admin=is_admin, is_institution_coordinator=current_user_institution_coordinator,
|
||||
ROUTE_PREFIX=ROUTE_PREFIX)
|
||||
elif text.startswith('pogodbe-institucije/') or text.startswith('pogodbe-ucencistarsi/'):
|
||||
# Check for ownload contract request.
|
||||
# Check for download contract request.
|
||||
match = re.match('^pogodbe-(institucije|ucencistarsi)/([a-z0-9_]+\.pdf)$', text)
|
||||
if match:
|
||||
contract_type = match.group(1)
|
||||
@@ -299,52 +318,75 @@ def solar(text):
|
||||
enable_upload_school_contract = False
|
||||
show_upload_form = False
|
||||
collaborators = []
|
||||
institution_id = ""
|
||||
cooperation_history = dict()
|
||||
if current_user_institution:
|
||||
collaborators = portal.solar.get_all_active_institution_users(current_user_institution.id)
|
||||
show_upload_form = True
|
||||
contract_school = portal.solar.get_institution_contract(current_user_institution.id)
|
||||
cooperation_history = portal.solar.get_institution_cooperation_history(current_user_institution.id)
|
||||
logging.error(cooperation_history)
|
||||
institution_id = current_user_institution.id
|
||||
if portal.solar.is_institution_coordinator(current_user_obj.id, current_user_institution.id):
|
||||
contracts_students = portal.solar.get_institution_student_contracts(current_user_institution.id)
|
||||
enable_upload_school_contract = True
|
||||
else:
|
||||
contracts_students = portal.solar.get_institution_student_contracts(current_user_institution.id, current_user_obj.id)
|
||||
|
||||
return render_template('solar-pogodbe.html', contracts_students=contracts_students,
|
||||
institution_users = portal.solar.get_all_active_institution_users(current_user_institution.id),
|
||||
#logging.error(institution_users)
|
||||
role_map = dict()
|
||||
for institution_user in institution_users[0]:
|
||||
#logging.error(institution_user)
|
||||
role_map[institution_user.id] = portal.solar.get_user_institution_role_str(institution_user.id, current_user_institution.id)
|
||||
|
||||
return render_template('solar-pogodbe.html',
|
||||
ROUTE_PREFIX=ROUTE_PREFIX,
|
||||
contracts_students=contracts_students,
|
||||
contract_school=contract_school,
|
||||
enable_upload_school_contract=enable_upload_school_contract,
|
||||
show_upload_form=show_upload_form,
|
||||
collaborators=collaborators,
|
||||
cooperation_history=cooperation_history,
|
||||
institution_users = institution_users[0],
|
||||
role_map=role_map,
|
||||
user_id=current_user.id,
|
||||
institution_id=institution_id,
|
||||
is_admin=is_admin, is_institution_coordinator=current_user_institution_coordinator)
|
||||
elif text.startswith('admin/') or text == 'admin':
|
||||
users = portal.solar.get_all_users_join_institutions()
|
||||
inactive_users = portal.solar.get_all_users_join_institutions(active=False)
|
||||
solar_institutions = portal.solar.get_all_institutions()
|
||||
cooperation_history = portal.solar.get_cooperation_history()
|
||||
uploads = portal.solar.get_all_upload_history(-1)
|
||||
if is_admin:
|
||||
return render_template('solar-admin.html', users=users, user_cooperation_history=cooperation_history,
|
||||
return render_template('solar-admin.html', ROUTE_PREFIX=ROUTE_PREFIX, users=users,
|
||||
institutions=solar_institutions, inactive_users=inactive_users, uploads=uploads)
|
||||
elif text.startswith('manage-institution/') or text == 'manage-institution':
|
||||
if portal.solar.is_institution_coordinator(current_user.id, current_user_institution.id):
|
||||
solar_users = portal.solar.get_all_active_users()
|
||||
institution_users = portal.solar.get_all_active_institution_users(current_user_institution.id)
|
||||
return render_template('solar-manage-institution.html', users=solar_users,
|
||||
institution_users=institution_users)
|
||||
|
||||
role_map = dict()
|
||||
for institution_user in institution_users:
|
||||
role_map[institution_user.id] = portal.solar.get_user_institution_role_str(institution_user.id, current_user_institution.id)
|
||||
|
||||
return render_template('solar-manage-institution.html',
|
||||
ROUTE_PREFIX=ROUTE_PREFIX,
|
||||
institution=current_user_institution,
|
||||
users=solar_users,
|
||||
institution_users=institution_users,
|
||||
role_map=role_map)
|
||||
return '', 404
|
||||
|
||||
@app.route('/pogodbe', methods=['POST'])
|
||||
@app.route(ROUTE_PREFIX + '/pogodbe', methods=['POST'])
|
||||
@login_required
|
||||
def solar_upload_contract():
|
||||
msg = upload_handler_solar.handle_contract_upload(request, current_user.get_id())
|
||||
flash(msg)
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
|
||||
@app.route('/adduser', methods=['POST'])
|
||||
@app.route(ROUTE_PREFIX + '/adduser', methods=['POST'])
|
||||
@login_required
|
||||
def solar_add_user():
|
||||
|
||||
@@ -357,41 +399,41 @@ def solar_add_user():
|
||||
|
||||
if not name:
|
||||
flash('Prazno polje za ime.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
if len(name) > 100:
|
||||
flash('Predolgo ime.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
if not email:
|
||||
flash('Prazno polje za elektronsko pošto.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
if len(email) > 100:
|
||||
flash('Predolg email naslov.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
elif not re.search(portal.solar.REGEX_EMAIL, email):
|
||||
flash('Email napačnega formata.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
if not password:
|
||||
flash('Prazno polje za geslo.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
if len(password) > 100:
|
||||
flash('Predolgo geslo.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
user = portal.solar.get_user_obj_by_email(email)
|
||||
if user:
|
||||
#portal.solar.undo_remove_user(user.id)
|
||||
flash('Uporabnik s tem emailom je že vnešen v sistem.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
portal.solar.register_new_user(name, email, password)
|
||||
|
||||
flash('Uporabnik je bil uspešno dodan.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
|
||||
@app.route('/activateuser', methods=['POST'])
|
||||
@app.route(ROUTE_PREFIX + '/activateuser', methods=['POST'])
|
||||
@login_required
|
||||
def solar_activate_user():
|
||||
if not portal.solar.is_admin(current_user.id):
|
||||
@@ -400,7 +442,7 @@ def solar_activate_user():
|
||||
user_id = request.form.get('id')
|
||||
if not user_id:
|
||||
flash('Prazno polje za ID uporabnika.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
rowcount = portal.solar.activate_user(user_id)
|
||||
if rowcount == 0:
|
||||
@@ -409,35 +451,35 @@ def solar_activate_user():
|
||||
portal.solar.send_user_activation_mail(user_id, upload_handler_solar.config)
|
||||
|
||||
flash('Uporabnik je bil aktiviran.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
|
||||
@app.route('/forgotpass')
|
||||
@app.route(ROUTE_PREFIX + '/forgotpass')
|
||||
def solar_forgotpass():
|
||||
return render_template('solar-forgotpass.html')
|
||||
return render_template('solar-forgotpass.html', ROUTE_PREFIX=ROUTE_PREFIX)
|
||||
|
||||
|
||||
@app.route('/sendresetpass', methods=['POST'])
|
||||
@app.route(ROUTE_PREFIX + '/sendresetpass', methods=['POST'])
|
||||
def solar_sendresetpass():
|
||||
email = request.form.get('email')
|
||||
|
||||
portal.solar.send_resetpass_mail(email, upload_handler_solar.config)
|
||||
|
||||
flash('Povezava za ponastavitev gesla je bila poslana na vpisan email naslov.')
|
||||
return redirect(redirect_url())
|
||||
flash('Povezava za ponastavitev gesla je bila poslana na vpisani e-naslov.')
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
|
||||
@app.route('/resetpass/<token>')
|
||||
@app.route(ROUTE_PREFIX + '/resetpass/<token>')
|
||||
def solar_resetpass(token):
|
||||
user = portal.solar.verify_reset_token(token, upload_handler_solar.config['APP_SECRET_KEY'])
|
||||
|
||||
if not user:
|
||||
return '', 404
|
||||
|
||||
return render_template('solar-resetpass.html', user=user, token=token)
|
||||
return render_template('solar-resetpass.html',ROUTE_PREFIX=ROUTE_PREFIX, user=user, token=token)
|
||||
|
||||
|
||||
@app.route('/resetpass/<token>', methods=['POST'])
|
||||
@app.route(ROUTE_PREFIX + '/resetpass/<token>', methods=['POST'])
|
||||
def solar_resetpass_post(token):
|
||||
new_password = request.form.get('new_password')
|
||||
user = portal.solar.verify_reset_token(token, upload_handler_solar.config['APP_SECRET_KEY'])
|
||||
@@ -450,16 +492,33 @@ def solar_resetpass_post(token):
|
||||
return '', 404
|
||||
|
||||
flash('Ponastavitev gesla je bila uspešna.')
|
||||
return redirect('/login')
|
||||
return redirect(ROUTE_PREFIX + '/login/')
|
||||
|
||||
|
||||
@app.route('/topuploads')
|
||||
@app.route(ROUTE_PREFIX + '/topuploads')
|
||||
@login_required
|
||||
def solar_topuploads_srednje():
|
||||
def solar_topuploads():
|
||||
return jsonify(portal.solar.get_top_uploading_institutions())
|
||||
|
||||
|
||||
@app.route('/deluser', methods=['POST'])
|
||||
@app.route(ROUTE_PREFIX + '/topuploads-institution/<institution_id>')
|
||||
@login_required
|
||||
def solar_topuploads_institution(institution_id):
|
||||
return jsonify(portal.solar.get_top_uploading_users(institution_id))
|
||||
|
||||
|
||||
@app.route(ROUTE_PREFIX + '/uploadstats-institution/<institution_id>')
|
||||
@login_required
|
||||
def solar_uploadstats_institution(institution_id):
|
||||
return jsonify(portal.solar.get_institution_upload_stats(institution_id))
|
||||
|
||||
@app.route(ROUTE_PREFIX + '/uploadstats-per-region')
|
||||
@login_required
|
||||
def solar_uploadstats_per_region():
|
||||
return jsonify(portal.solar.get_region_stats())
|
||||
|
||||
|
||||
@app.route(ROUTE_PREFIX + '/deluser', methods=['POST'])
|
||||
@login_required
|
||||
def solar_del_user():
|
||||
if not portal.solar.is_admin(current_user.id):
|
||||
@@ -467,9 +526,9 @@ def solar_del_user():
|
||||
user_id = request.form.get('user_id')
|
||||
portal.solar.remove_user(user_id)
|
||||
flash('Uporabnik je bil odstranjen.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
@app.route('/addinstitution', methods=['POST'])
|
||||
@app.route(ROUTE_PREFIX + '/addinstitution', methods=['POST'])
|
||||
@login_required
|
||||
def add_institution():
|
||||
if not portal.solar.is_admin(current_user.id):
|
||||
@@ -480,21 +539,21 @@ def add_institution():
|
||||
|
||||
if not name:
|
||||
flash('Prazno polje za naziv.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
if len(name) > 100:
|
||||
flash('Predolgo ime.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
if not region in portal.solar.VALID_REGIONS:
|
||||
flash('Neveljavna vrednost za regijo.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
institution_id = portal.solar.add_institution(name, region)
|
||||
portal.solar.grant_institution_corpus_access(institution_id, "solar") # TODO: throw out
|
||||
flash('Institucija je bila dodana.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
@app.route('/mergeinstitutions', methods=['POST'])
|
||||
@app.route(ROUTE_PREFIX + '/mergeinstitutions', methods=['POST'])
|
||||
@login_required
|
||||
def merge_institutions():
|
||||
if not portal.solar.is_admin(current_user.id):
|
||||
@@ -505,18 +564,18 @@ def merge_institutions():
|
||||
|
||||
if not id_from or not id_to:
|
||||
flash('Prazno polje.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
institution_from = portal.solar.get_institution_obj(id_from)
|
||||
institution_to = portal.solar.get_institution_obj(id_to)
|
||||
|
||||
if not institution_from:
|
||||
flash('Institucija z ID "{}" ne obstaja.'.format(id_from))
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
if not institution_to:
|
||||
flash('Institucija z ID "{}" ne obstaja.'.format(id_to))
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
|
||||
portal.solar.transfer_users_institution(institution_from.id, institution_to.id)
|
||||
@@ -525,45 +584,45 @@ def merge_institutions():
|
||||
portal.solar.remove_institution(institution_from.id)
|
||||
|
||||
flash('Instituciji uspešno združeni')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
@app.route('/addcooperationhistoryitem', methods=['POST'])
|
||||
@login_required
|
||||
def add_cooperation_history_item():
|
||||
if not portal.solar.is_admin(current_user.id):
|
||||
return '', 404
|
||||
#@app.route(ROUTE_PREFIX + '/addcooperationhistoryitem', methods=['POST'])
|
||||
#@login_required
|
||||
#def add_cooperation_history_item():
|
||||
# if not portal.solar.is_admin(current_user.id):
|
||||
# return '', 404
|
||||
#
|
||||
# user_id = request.form.get('user')
|
||||
# institution_id = request.form.get('institution')
|
||||
# role = request.form.get('role')
|
||||
# school_year = request.form.get('school-year')
|
||||
# badge_text = request.form.get('badge-text')
|
||||
#
|
||||
# user = portal.solar.get_user_obj(user_id)
|
||||
# institution = portal.solar.get_institution_obj(institution_id)
|
||||
#
|
||||
# if not user:
|
||||
# flash('Uporabnik s tem ID-jem ne obstaja.')
|
||||
# return redirect(ROUTE_PREFIX + redirect_url())
|
||||
#
|
||||
# if not institution:
|
||||
# flash('Institucija s tem ID-jem ne obstaja.')
|
||||
# return redirect(ROUTE_PREFIX + redirect_url())
|
||||
#
|
||||
# if not role in ['coordinator', 'mentor', 'other']:
|
||||
# flash('Neveljavna vloga "{}".'.format(role))
|
||||
# return redirect(ROUTE_PREFIX + redirect_url())
|
||||
#
|
||||
# if not school_year or not re.match('[0-9]{4}/[0-9]{2}', school_year):
|
||||
# flash('Šolsko leto mora biti formata "2021/22".')
|
||||
# return redirect(ROUTE_PREFIX + redirect_url())
|
||||
#
|
||||
# portal.solar.add_cooperation_history_item(user_id, institution_id, role, school_year, badge_text)
|
||||
#
|
||||
# flash('Vnos dodan.')
|
||||
# return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
user_id = request.form.get('user')
|
||||
institution_id = request.form.get('institution')
|
||||
role = request.form.get('role')
|
||||
school_year = request.form.get('school-year')
|
||||
badge_text = request.form.get('badge-text')
|
||||
|
||||
user = portal.solar.get_user_obj(user_id)
|
||||
institution = portal.solar.get_institution_obj(institution_id)
|
||||
|
||||
if not user:
|
||||
flash('Uporabnik s tem ID-jem ne obstaja.')
|
||||
return redirect(redirect_url())
|
||||
|
||||
if not institution:
|
||||
flash('Institucija s tem ID-jem ne obstaja.')
|
||||
return redirect(redirect_url())
|
||||
|
||||
if not role in ['coordinator', 'mentor', 'other']:
|
||||
flash('Neveljavna vloga "{}".'.format(role))
|
||||
return redirect(redirect_url())
|
||||
|
||||
if not school_year or not re.match('[0-9]{4}/[0-9]{2}', school_year):
|
||||
flash('Šolsko leto mora biti formata "2021/22".')
|
||||
return redirect(redirect_url())
|
||||
|
||||
portal.solar.add_cooperation_history_item(user_id, institution_id, role, school_year, badge_text)
|
||||
|
||||
flash('Vnos dodan.')
|
||||
return redirect(redirect_url())
|
||||
|
||||
@app.route('/updateuploaditem', methods=['POST'])
|
||||
@app.route(ROUTE_PREFIX + '/updateuploaditem', methods=['POST'])
|
||||
@login_required
|
||||
def update_upload_item():
|
||||
if not portal.solar.is_admin(current_user.id):
|
||||
@@ -572,7 +631,7 @@ def update_upload_item():
|
||||
err_msg = portal.solar.UploadHandlerSolar.check_form(request.form)
|
||||
if err_msg:
|
||||
flash(err_msg)
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
item_id = request.form.get('item-id')
|
||||
program = request.form.get('program')
|
||||
@@ -599,22 +658,22 @@ def update_upload_item():
|
||||
return '', 404
|
||||
|
||||
flash('Vnos spremenjen.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
|
||||
@app.route('/delcooperationhistoryitem', methods=['POST'])
|
||||
@login_required
|
||||
def del_cooperation_history_item():
|
||||
if not portal.solar.is_admin(current_user.id):
|
||||
return '', 404
|
||||
#@app.route(ROUTE_PREFIX + '/delcooperationhistoryitem', methods=['POST'])
|
||||
#@login_required
|
||||
#def del_cooperation_history_item():
|
||||
# if not portal.solar.is_admin(current_user.id):
|
||||
# return '', 404
|
||||
#
|
||||
# entry_id = request.form.get('entry-id')
|
||||
# portal.solar.del_cooperation_history_item(entry_id)
|
||||
#
|
||||
# flash('Vnos odstranjen.')
|
||||
# return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
entry_id = request.form.get('entry-id')
|
||||
portal.solar.del_cooperation_history_item(entry_id)
|
||||
|
||||
flash('Vnos odstranjen.')
|
||||
return redirect(redirect_url())
|
||||
|
||||
@app.route('/changeinstitutiondata', methods=['POST'])
|
||||
@app.route(ROUTE_PREFIX + '/changeinstitutiondata', methods=['POST'])
|
||||
@login_required
|
||||
def change_institution_data():
|
||||
if not portal.solar.is_admin(current_user.id):
|
||||
@@ -626,21 +685,21 @@ def change_institution_data():
|
||||
|
||||
if not new_name:
|
||||
flash('Prazno polje za naziv.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
if len(new_name) > 100:
|
||||
flash('Predolgo ime.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
if not new_region in portal.solar.VALID_REGIONS:
|
||||
flash('Neveljavna vrednost za regijo.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
portal.solar.update_institution_data(institution_id, new_name, new_region)
|
||||
flash('Podatki institucije so bili spremenjeni.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
|
||||
@app.route('/changeuseremail', methods=['POST'])
|
||||
@app.route(ROUTE_PREFIX + '/changeuseremail', methods=['POST'])
|
||||
@login_required
|
||||
def change_user_email():
|
||||
if not portal.solar.is_admin(current_user.id):
|
||||
@@ -651,17 +710,43 @@ def change_user_email():
|
||||
|
||||
if not re.search(portal.solar.REGEX_EMAIL, email):
|
||||
flash('Email napačnega formata.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
portal.solar.update_user_email(user_id, email)
|
||||
|
||||
flash('Email spremenjen.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
@app.route(ROUTE_PREFIX + '/changeuserrole-institution', methods=['POST'])
|
||||
@login_required
|
||||
def change_user_role_institution():
|
||||
institution = portal.solar.get_user_institution(current_user.id)
|
||||
if not portal.solar.is_admin(current_user.id):
|
||||
# Institution coordinators can only assign roles of users in their own
|
||||
# institution.
|
||||
if institution and portal.solar.is_institution_coordinator(current_user.id, institution.id):
|
||||
pass
|
||||
else:
|
||||
return '', 404
|
||||
|
||||
user_id = request.form.get('user-id')
|
||||
role = request.form.get('role')
|
||||
|
||||
if role not in ['coordinator', 'mentor', 'other']:
|
||||
flash('Neveljavna vloga.')
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
portal.solar.update_user_institution_role(user_id, institution.id, role)
|
||||
portal.solar.add_cooperation_history_item(user_id, institution.id, role)
|
||||
|
||||
flash('Vloga v instituciji spremenjena.')
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
|
||||
@app.route('/changeuserrole', methods=['POST'])
|
||||
@app.route(ROUTE_PREFIX + '/changeuserrole', methods=['POST'])
|
||||
@login_required
|
||||
def change_user_role():
|
||||
institution = portal.solar.get_user_institution(current_user.id)
|
||||
if not portal.solar.is_admin(current_user.id):
|
||||
return '', 404
|
||||
|
||||
@@ -670,14 +755,14 @@ def change_user_role():
|
||||
|
||||
if not role in ['admin', 'user']:
|
||||
flash('Neveljavna vloga.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
portal.solar.update_user_role(user_id, role)
|
||||
|
||||
flash('Vloga spremenjena.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
@app.route('/changeusername', methods=['POST'])
|
||||
@app.route(ROUTE_PREFIX + '/changeusername', methods=['POST'])
|
||||
@login_required
|
||||
def change_user_name():
|
||||
if not portal.solar.is_admin(current_user.id):
|
||||
@@ -689,9 +774,9 @@ def change_user_name():
|
||||
portal.solar.update_user_name(user_id, name)
|
||||
|
||||
flash('Ime in priimek spremenjena.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
@app.route('/addusertoinstitution', methods=['POST'])
|
||||
@app.route(ROUTE_PREFIX + '/addusertoinstitution', methods=['POST'])
|
||||
@login_required
|
||||
def add_user_institution_mapping():
|
||||
institution_id = request.form.get('institution_id')
|
||||
@@ -700,7 +785,7 @@ def add_user_institution_mapping():
|
||||
if institution:
|
||||
institution_id = institution.id
|
||||
|
||||
if not (portal.solar.is_admin(current_user.id) or portal.solar.is_institution_coordinator(current_user.id, institution_id)):
|
||||
if not portal.solar.is_admin(current_user.id):
|
||||
return '', 404
|
||||
|
||||
user_id = request.form['user_id']
|
||||
@@ -710,36 +795,145 @@ def add_user_institution_mapping():
|
||||
|
||||
if portal.solar.get_user_institution(user_id):
|
||||
flash('Uporabnik je že dodeljen instituciji.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
portal.solar.add_user_to_institution(user_id, institution_id, role)
|
||||
portal.solar.add_cooperation_history_item(user_id, institution_id, role)
|
||||
flash('Uporabnik je bil dodeljen instituciji.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
@app.route('/deluserfrominstitution', methods=['POST'])
|
||||
@app.route(ROUTE_PREFIX + '/deluserfrominstitution', methods=['POST'])
|
||||
@login_required
|
||||
def del_user_institution_mapping():
|
||||
user_id = request.form['user_id']
|
||||
institution = portal.solar.get_user_institution(user_id)
|
||||
if not institution:
|
||||
flash('Uporabnik ni član nobene institucije.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
if not portal.solar.is_admin(current_user.id) \
|
||||
and not portal.solar.is_institution_coordinator(current_user.id, institution.id):
|
||||
flash('Nimate ustreznih pravic za odstranitev uporabnika iz institucije.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
portal.solar.del_user_from_institution(user_id, institution.id)
|
||||
flash('Uporabnik je bil odstranjen iz institucije.')
|
||||
return redirect(redirect_url())
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
@app.route('/upload', methods=['POST'])
|
||||
@app.route(ROUTE_PREFIX + '/upload', methods=['POST'])
|
||||
def handle_upload():
|
||||
if not current_user.is_authenticated:
|
||||
return '', 404
|
||||
return upload_handler_solar.handle_upload(request, current_user.get_id())
|
||||
|
||||
|
||||
@app.route(ROUTE_PREFIX + '/getuploadfile/<upload_id>/<file_hash>', methods=['GET'])
|
||||
@login_required
|
||||
def get_upload_file(upload_id, file_hash):
|
||||
is_admin = current_user.role == 'admin'
|
||||
current_user_institution = portal.solar.get_user_institution(current_user.id)
|
||||
upload_obj = portal.solar.get_upload_object(upload_id)
|
||||
|
||||
if current_user_institution.id != upload_obj.institution:
|
||||
return '', 404
|
||||
|
||||
file_hashes = upload_obj.upload_file_hashes
|
||||
if file_hash not in upload_obj.upload_file_hashes:
|
||||
return '', 404
|
||||
|
||||
prefix = file_hash[:2]
|
||||
suffix = file_hash[2:]
|
||||
safe_path = safe_join(str(upload_handler_solar.get_uploads_subdir('files')), prefix, suffix)
|
||||
|
||||
f_name = os.listdir(safe_path)[0]
|
||||
safe_path = safe_join(safe_path, f_name)
|
||||
|
||||
f_suffix = f_name.split('.')[-1]
|
||||
f_dlname = upload_obj.upload_file_codes[file_hashes.index(file_hash)]
|
||||
if f_suffix in portal.solar.UploadHandlerSolar.ENABLED_FILETYPES:
|
||||
f_dlname += '.' + f_suffix
|
||||
|
||||
try:
|
||||
return send_file(safe_path, attachment_filename=f_dlname, as_attachment=True)
|
||||
except FileNotFoundError:
|
||||
return '', 404
|
||||
|
||||
@app.route(ROUTE_PREFIX + '/institutionadduser', methods=['POST'])
|
||||
@login_required
|
||||
def solar_institution_add_user():
|
||||
|
||||
current_user_institution = portal.solar.get_user_institution(current_user.id)
|
||||
if not portal.solar.is_institution_coordinator(current_user.id, current_user_institution.id):
|
||||
return '', 404
|
||||
|
||||
name = request.form.get('name')
|
||||
email = request.form.get('email')
|
||||
role = request.form.get('role')
|
||||
password=''.join(random.choices(string.ascii_lowercase, k=8))
|
||||
|
||||
if not name:
|
||||
flash('Prazno polje za ime.')
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
if len(name) > 100:
|
||||
flash('Predolgo ime.')
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
if not email:
|
||||
flash('Prazno polje za elektronsko pošto.')
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
if len(email) > 100:
|
||||
flash('Predolg email naslov.')
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
elif not re.search(portal.solar.REGEX_EMAIL, email):
|
||||
flash('Email napačnega formata.')
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
if not password:
|
||||
flash('Prazno polje za geslo.')
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
if len(password) > 100:
|
||||
flash('Predolgo geslo.')
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
user = portal.solar.get_user_obj_by_email(email)
|
||||
if user:
|
||||
#portal.solar.undo_remove_user(user.id)
|
||||
flash('Uporabnik s tem emailom je že vnešen v sistem.')
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
new_user_id = portal.solar.register_new_user(name, email, password)
|
||||
portal.solar.add_user_to_institution(new_user_id, current_user_institution.id, role)
|
||||
portal.solar.add_cooperation_history_item(new_user_id, current_user_institution.id, role)
|
||||
|
||||
portal.solar.activate_user(new_user_id)
|
||||
#token za nastaviti geslo
|
||||
jwt_token = portal.solar.get_password_reset_token(email, config['APP_SECRET_KEY'])
|
||||
|
||||
#pošlji email uporabniku
|
||||
body = '''
|
||||
Ustvarjen je bil uporabniški račun na Portalu Šolar.
|
||||
|
||||
Geslo lahko nastavite na naslednji povezavi: https://{}/resetpass/{}'''.format(config['SERVER_NAME'], jwt_token)
|
||||
message = MIMEMultipart()
|
||||
message['From'] = config['MAIL_LOGIN']
|
||||
message['To'] = email
|
||||
message['Subject'] = 'Portal Šolar: Ponastavitev gesla'
|
||||
message.attach(MIMEText(body, "plain"))
|
||||
text = message.as_string()
|
||||
|
||||
# Create a secure SSL context
|
||||
context = ssl.create_default_context()
|
||||
|
||||
try:
|
||||
with SMTP_SSL(config['MAIL_HOST'], config['SMTP_PORT'], context=context) as server:
|
||||
server.login(config['MAIL_LOGIN'], config['MAIL_PASS'])
|
||||
server.sendmail(config['MAIL_LOGIN'], email, text)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
flash('Uporabnik je bil uspešno dodan.')
|
||||
return redirect(ROUTE_PREFIX + redirect_url())
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(debug=True)
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
[DEFAULT]
|
||||
SERVER_NAME=localhost:5000
|
||||
ROUTE_PREFIX=
|
||||
SQL_CONN_STR=postgresql://portal:randompass123@localhost/portal
|
||||
MAIL_HOST=posta.cjvt.si
|
||||
MAIL_LOGIN=oddaja-besedil@cjvt.si
|
||||
@@ -10,8 +12,6 @@ MAX_UPLOAD_SIZE=1000000000
|
||||
MAX_FILES_PER_UPLOAD=30
|
||||
UPLOADS_DIR=./uploads
|
||||
CONTRACT_CLIENT_CONTACT=Testko Tester
|
||||
DESC_PREVODI=<h2 id="subtitle">Prevodi</h2><p>Strojno prevajanje je ena od uporabnih jezikovnih tehnologij, saj omogoča hitro sporazumevanje med ljudmi iz različnih kultur in jezikovnih okolij. Več o razvoju slovenskega strojnega prevajalnika lahko preberete na tej <a href="https://slovenscina.eu/strojno-prevajanje">povezavi</a>. Za kakovosten strojni prevajalnik so ključnega pomena prevodi, iz kateri se algoritmi umetne inteligence naučijo prevajati. S prispevanjem besedil v korpus prevodov boste pomembno prispevali k razvoju slovenskega strojnega prevajalnika med angleščino in slovenščino. Več informacij o prispevanju besedil najdete <a href="https://slovenscina.eu/zbiranje-besedil">tukaj</a>.</p>
|
||||
DESC_GIGAFIDA=<h2 id="subtitle">Gigafida</h2><p><a href="https://viri.cjvt.si/gigafida/">Gigafida</a> je referenčni korpus pisne slovenščine. Besedila so izbrana in strojno obdelana z namenom, da bi korpus kot vzorec sodobne standardne slovenščine lahko služil za jezikoslovne in druge humanistične raziskave, izdelavo sodobnih slovarjev, slovnic, učnih gradiv in razvoj jezikovnih tehnologij za slovenščino. S prispevanjem besedil v korpus Gigafida pomembno prispevate k razvoju sodobnih jezikovnih tehnologij za slovenski jezik.</p>
|
||||
MAIL_SUBJECT=RSDO: pogodba za oddana besedila ({upload_id})
|
||||
MAIL_BODY=Hvala, ker ste prispevali besedila in na ta način pomagali pri razvoju slovenskega jezika v digitalnem okolju. V prilogi vam pošiljamo pogodbo s seznamom naloženih datotek.
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ services:
|
||||
build: .
|
||||
restart: always
|
||||
environment:
|
||||
- PORTALDS4DS1_SERVER_NAME=localhost:5000
|
||||
- PORTALDS4DS1_SQL_CONN_STR=postgresql://portal:randompass123@db/portal
|
||||
- PORTALDS4DS1_MAIL_HOST=posta.cjvt.si
|
||||
- PORTALDS4DS1_MAIL_LOGIN=oddaja-besedil@cjvt.si
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
"""Altered cooperation history structure.
|
||||
|
||||
Revision ID: 0cf2d8f74766
|
||||
Revises: c7bb822adf9f
|
||||
Create Date: 2022-02-14 13:04:01.143637
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '0cf2d8f74766'
|
||||
down_revision = 'c7bb822adf9f'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# Delete all rows
|
||||
query = 'DELETE FROM user_cooperation;'
|
||||
op.execute(query)
|
||||
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.add_column('user_cooperation', sa.Column('timestamp', sa.DateTime(), nullable=False))
|
||||
op.drop_column('user_cooperation', 'badge_text')
|
||||
op.drop_column('user_cooperation', 'school_year')
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.add_column('user_cooperation', sa.Column('school_year', sa.VARCHAR(), autoincrement=False, nullable=False))
|
||||
op.add_column('user_cooperation', sa.Column('badge_text', sa.VARCHAR(), autoincrement=False, nullable=True))
|
||||
op.drop_column('user_cooperation', 'timestamp')
|
||||
# ### end Alembic commands ###
|
||||
@@ -0,0 +1,28 @@
|
||||
"""Added upload file names column.
|
||||
|
||||
Revision ID: 0d9dd68fd94b
|
||||
Revises: 44dae32b13af
|
||||
Create Date: 2021-12-14 10:52:34.326600
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '0d9dd68fd94b'
|
||||
down_revision = '44dae32b13af'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.add_column('upload_solar', sa.Column('upload_file_names', sa.ARRAY(sa.String()), nullable=True))
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_column('upload_solar', 'upload_file_names')
|
||||
# ### end Alembic commands ###
|
||||
@@ -0,0 +1,30 @@
|
||||
"""Added upload file codes column.
|
||||
|
||||
Revision ID: c7bb822adf9f
|
||||
Revises: 0d9dd68fd94b
|
||||
Create Date: 2021-12-20 09:00:57.208921
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'c7bb822adf9f'
|
||||
down_revision = '0d9dd68fd94b'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.add_column('upload_solar', sa.Column('region', sa.String(), nullable=True))
|
||||
op.add_column('upload_solar', sa.Column('upload_file_codes', sa.ARRAY(sa.String()), nullable=True))
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_column('upload_solar', 'upload_file_codes')
|
||||
op.drop_column('upload_solar', 'region')
|
||||
# ### end Alembic commands ###
|
||||
@@ -19,6 +19,7 @@ class UploadSolar(db.Model):
|
||||
institution = db.Column(db.Integer, sqlalchemy.ForeignKey('institution.id'), nullable=True)
|
||||
upload_hash = db.Column(db.String, nullable=False)
|
||||
timestamp = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
|
||||
region = db.Column(db.String, nullable=True)
|
||||
program = db.Column(db.String, nullable=True)
|
||||
subject = db.Column(db.String, nullable=True)
|
||||
subject_custom = db.Column(db.String, nullable=True)
|
||||
@@ -28,6 +29,8 @@ class UploadSolar(db.Model):
|
||||
school_year = db.Column(db.String, nullable=True)
|
||||
grammar_corrections = db.Column(db.String, nullable=True)
|
||||
upload_file_hashes = db.Column(sqlalchemy.types.ARRAY(db.String), nullable=True)
|
||||
upload_file_names = db.Column(sqlalchemy.types.ARRAY(db.String), nullable=True)
|
||||
upload_file_codes = db.Column(sqlalchemy.types.ARRAY(db.String), nullable=True)
|
||||
|
||||
|
||||
class ContractsSolar(db.Model):
|
||||
@@ -68,8 +71,7 @@ class UserCooperationHistory(db.Model):
|
||||
user = db.Column(db.Integer, sqlalchemy.ForeignKey('registered_user.id'), nullable=False)
|
||||
institution = db.Column(db.Integer, sqlalchemy.ForeignKey('institution.id'), nullable=False)
|
||||
role = db.Column(db.String, nullable=False)
|
||||
school_year = db.Column(db.String, nullable=False)
|
||||
badge_text = db.Column(db.String, nullable=True)
|
||||
timestamp = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
|
||||
|
||||
|
||||
class Institution(db.Model):
|
||||
|
||||
224
portal/solar.py
224
portal/solar.py
@@ -6,15 +6,11 @@ import traceback
|
||||
import ssl
|
||||
from datetime import datetime
|
||||
from sqlalchemy import desc
|
||||
from collections import Counter
|
||||
from sqlalchemy import func
|
||||
from pathlib import Path
|
||||
|
||||
import imaplib
|
||||
from smtplib import SMTP_SSL
|
||||
|
||||
import email
|
||||
from email import encoders
|
||||
from email.mime.base import MIMEBase
|
||||
from email.mime.multipart import MIMEMultipart
|
||||
from email.mime.text import MIMEText
|
||||
from email.mime.application import MIMEApplication
|
||||
@@ -29,10 +25,11 @@ from werkzeug.security import generate_password_hash
|
||||
from . model import *
|
||||
|
||||
|
||||
|
||||
VALID_PROGRAMS = {'OS', 'SSG', 'MGP', 'ZG', 'NPI', 'SPI', 'SSI', 'PTI'}
|
||||
VALID_SUBJECTS = {'slo', 'drug-jez', 'drug-druz', 'drug-narav', 'drug-strok', 'drug-izb'}
|
||||
VALID_TEXT_TYPES = {'esej-spis', 'prakticno', 'solski-test', 'delo-v-razredu'}
|
||||
VALID_GRAMMAR_CORRECTIONS = {'popr-ne', 'brez-popr', 'popr-da'}
|
||||
VALID_SUBJECTS = {'SLO', 'DJP', 'DDP', 'DNP', 'DSP', 'DIP'}
|
||||
VALID_TEXT_TYPES = {'E', 'PB', 'T', 'R'}
|
||||
VALID_GRAMMAR_CORRECTIONS = {'DD', 'N', 'DN'}
|
||||
VALID_REGIONS = {'CE', 'GO', 'KK', 'KP', 'KR', 'LJ', 'MB', 'MS', 'NM', 'PO', 'SG'}
|
||||
|
||||
#REGEX_EMAIL = re.compile('^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[.]\w{2,3}$')
|
||||
@@ -153,17 +150,12 @@ class UploadHandlerSolar():
|
||||
timestamp = datetime.fromtimestamp(upload_metadata['timestamp'])
|
||||
form_data = upload_metadata['form_data']
|
||||
file_hashes = upload_metadata['file_hashes_dict']
|
||||
sorted_f_hashes = list(file_hashes.values())
|
||||
sorted_f_hashes.sort()
|
||||
sorted_file_items = sorted(file_hashes.items(), key=lambda item: item[1])
|
||||
|
||||
institution_id = get_user_institution(user_id).id
|
||||
|
||||
model_obj = UploadSolar(
|
||||
upload_user = user_id,
|
||||
institution = institution_id,
|
||||
upload_hash=upload_metadata['upload_id'],
|
||||
timestamp=timestamp,
|
||||
program=form_data['program'],
|
||||
region = form_data['regija']
|
||||
program = form_data['program']
|
||||
subject = form_data['predmet'],
|
||||
subject_custom = form_data['predmet-custom'],
|
||||
grade = form_data['letnik'],
|
||||
@@ -171,7 +163,36 @@ class UploadHandlerSolar():
|
||||
text_type_custom = form_data['vrsta-custom'],
|
||||
school_year = form_data['solsko-leto'],
|
||||
grammar_corrections = form_data['jezikovni-popravki'],
|
||||
upload_file_hashes=sorted_f_hashes
|
||||
upload_file_codes = []
|
||||
for i in range(len(sorted_file_items)):
|
||||
file_code = '{}_{}_{}_{}_{}_{}_{}_{}'.format(
|
||||
region,
|
||||
program,
|
||||
subject[0],
|
||||
grade[0],
|
||||
text_type[0],
|
||||
school_year[0],
|
||||
grammar_corrections[0],
|
||||
i)
|
||||
upload_file_codes.append(file_code)
|
||||
|
||||
model_obj = UploadSolar(
|
||||
upload_user = user_id,
|
||||
institution = institution_id,
|
||||
upload_hash=upload_metadata['upload_id'],
|
||||
timestamp=timestamp,
|
||||
region=region,
|
||||
program=program,
|
||||
subject=subject,
|
||||
subject_custom=subject_custom,
|
||||
grade=grade,
|
||||
text_type=text_type,
|
||||
text_type_custom=text_type_custom,
|
||||
school_year=school_year,
|
||||
grammar_corrections=grammar_corrections,
|
||||
upload_file_hashes=[x[1] for x in sorted_file_items],
|
||||
upload_file_names=[x[0] for x in sorted_file_items],
|
||||
upload_file_codes=upload_file_codes,
|
||||
)
|
||||
UploadHandlerSolar.store_model(model_obj)
|
||||
|
||||
@@ -217,7 +238,7 @@ class UploadHandlerSolar():
|
||||
# Store to database.
|
||||
self.store_metadata(upload_metadata, user_id)
|
||||
|
||||
return 'Uspešno ste oddali datotek(e). Št. datotek: {}'.format(len(request.files))
|
||||
return 'Število uspešno oddanih datotek: {}. Podatki o oddaji so na voljo v zavihku Zgodovina sodelovanja.'.format(len(request.files))
|
||||
|
||||
def handle_contract_upload(self, request, user_id):
|
||||
contract_type = request.form['tip-pogodbe']
|
||||
@@ -281,6 +302,7 @@ class UploadHandlerSolar():
|
||||
|
||||
@staticmethod
|
||||
def check_form(form):
|
||||
region = form['regija']
|
||||
program = form['program']
|
||||
predmet = form['predmet']
|
||||
letnik = int(form['letnik'])
|
||||
@@ -288,6 +310,8 @@ class UploadHandlerSolar():
|
||||
solsko_leto = form['solsko-leto']
|
||||
jezikovni_popravki = form['jezikovni-popravki']
|
||||
|
||||
if region not in VALID_REGIONS:
|
||||
return 'Invalid region "{}"'.format(region)
|
||||
if program not in VALID_PROGRAMS:
|
||||
return 'Invalid program "{}"'.format(program)
|
||||
if predmet not in VALID_SUBJECTS:
|
||||
@@ -392,6 +416,9 @@ def get_upload_history(user_id, n=20):
|
||||
def get_institution_upload_history(institution_id, n=20):
|
||||
return UploadSolar.query.filter_by(institution=institution_id).order_by(desc(UploadSolar.timestamp)).limit(n).all()
|
||||
|
||||
def get_upload_object(upload_id):
|
||||
return UploadSolar.query.filter_by(id=upload_id).first()
|
||||
|
||||
def get_all_upload_history(n=20):
|
||||
if n == -1:
|
||||
return UploadSolar.query.order_by(desc(UploadSolar.timestamp)).all()
|
||||
@@ -432,6 +459,63 @@ def get_top_uploading_institutions():
|
||||
return dict(sorted(res.items(), key=lambda x:x[1], reverse=True))
|
||||
|
||||
|
||||
def get_top_uploading_users(institution_id):
|
||||
res = dict()
|
||||
users = get_all_active_institution_users(institution_id)
|
||||
for user in users:
|
||||
uploads = UploadSolar.query.filter_by(upload_user=user.id).all()
|
||||
for upload in uploads:
|
||||
if user.name not in res:
|
||||
res[user.name] = 0
|
||||
res[user.name] += len(upload.upload_file_hashes)
|
||||
if len(res) >= 5:
|
||||
return dict(sorted(res.items(), key=lambda x:x[1], reverse=True)[:5])
|
||||
return dict(sorted(res.items(), key=lambda x:x[1], reverse=True))
|
||||
|
||||
|
||||
def get_institution_upload_stats(institution_id):
|
||||
res = {
|
||||
'region': [],
|
||||
'program': [],
|
||||
}
|
||||
|
||||
# Region
|
||||
for region in VALID_REGIONS:
|
||||
count = UploadSolar.query.filter_by(institution=institution_id, region=region).count()
|
||||
res['region'].append((region, count))
|
||||
res['region'] = sorted(res['region'], key=lambda x:x[1], reverse=True)
|
||||
|
||||
# Program
|
||||
for program in VALID_PROGRAMS:
|
||||
count = UploadSolar.query.filter_by(institution=institution_id, program=program).count()
|
||||
res['program'].append((program, count))
|
||||
res['program'] = sorted(res['program'], key=lambda x:x[1], reverse=True)
|
||||
|
||||
return res
|
||||
|
||||
def get_region_stats():
|
||||
ret = {'CE': [0,0], 'GO': [0,0], 'KK': [0,0], 'KP': [0,0], 'KR': [0,0], 'LJ': [0,0], 'MB': [0,0], 'MS': [0,0], 'NM': [0,0], 'PO': [0,0], 'SG': [0,0]}
|
||||
|
||||
os = db.session.query(UploadSolar.region, func.count(UploadSolar.id)).filter_by(program="OS").group_by(UploadSolar.region).all()
|
||||
neos = db.session.query(UploadSolar.region, func.count(UploadSolar.id)).filter(sqlalchemy.not_(UploadSolar.program.contains("OS"))).group_by(UploadSolar.region).all()
|
||||
|
||||
#logging.error(os)
|
||||
#logging.error(neos)
|
||||
|
||||
for key, val in os:
|
||||
if key not in VALID_REGIONS:
|
||||
continue
|
||||
ret[key][0] = val
|
||||
for key, val in neos:
|
||||
if key not in VALID_REGIONS:
|
||||
continue
|
||||
ret[key][1] = val
|
||||
|
||||
logging.error(ret)
|
||||
return ret
|
||||
|
||||
|
||||
|
||||
def get_all_active_users():
|
||||
# TODO: do filtering purely within an SQL query
|
||||
res = []
|
||||
@@ -441,8 +525,9 @@ def get_all_active_users():
|
||||
res.append(user)
|
||||
return res
|
||||
|
||||
def update_upload_item(item_id, program, subject, subject_custom, grade, text_type, text_type_custom, school_year, grammar_corrections):
|
||||
def update_upload_item(item_id, region, program, subject, subject_custom, grade, text_type, text_type_custom, school_year, grammar_corrections):
|
||||
rowcount = db.session.query(UploadSolar).filter_by(id=item_id).update({
|
||||
'region': region,
|
||||
'program': program,
|
||||
'subject': subject,
|
||||
'subject_custom': subject_custom,
|
||||
@@ -467,20 +552,48 @@ def get_institution_contract(institution_id):
|
||||
|
||||
|
||||
def get_institution_cooperation_history(institution_id):
|
||||
#return CooperationToken.query.join(UserCooperationTokenMapping,
|
||||
# UserCooperationTokenMapping.cooperation_token == CooperationToken.id).filter(UserCooperationTokenMapping.user == user_id).all()
|
||||
#
|
||||
res = dict()
|
||||
items = db.session.query(UserCooperationHistory.role,
|
||||
UserCooperationHistory.timestamp,
|
||||
RegisteredUser.id,
|
||||
RegisteredUser.name
|
||||
).select_from(
|
||||
UserCooperationHistory,
|
||||
).join(
|
||||
RegisteredUser,
|
||||
UserCooperationHistory.user == RegisteredUser.id,
|
||||
).filter(
|
||||
UserCooperationHistory.institution == institution_id,
|
||||
).order_by(UserCooperationHistory.timestamp.desc()).all()
|
||||
|
||||
uch_rows = UserCooperationHistory.query.filter_by(institution=institution_id).order_by(UserCooperationHistory.school_year.desc()).all()
|
||||
for row in uch_rows:
|
||||
if row.user not in res:
|
||||
res[row.user] = {
|
||||
'coordinator': [],
|
||||
'mentor': [],
|
||||
'other': []
|
||||
}
|
||||
res[row.user][row.role].append((row.school_year, row.badge_text))
|
||||
return items
|
||||
res = []
|
||||
|
||||
prev_schoolyear = None
|
||||
item_buff = []
|
||||
users_seen = set()
|
||||
for item in items:
|
||||
timestamp = item.timestamp
|
||||
year = timestamp.year
|
||||
month = timestamp.month
|
||||
|
||||
if month >= 9 :
|
||||
school_year = '{}/{}'.format(year, str(year+1)[-2:])
|
||||
else:
|
||||
school_year = '{}/{}'.format(year-1, str(year)[-2:])
|
||||
|
||||
if school_year != prev_schoolyear:
|
||||
if len(item_buff) > 0:
|
||||
res.append((prev_schoolyear, item_buff))
|
||||
prev_schoolyear = school_year
|
||||
item_buff = []
|
||||
users_seen = set()
|
||||
|
||||
if not item.id in users_seen:
|
||||
users_seen.add(item.id)
|
||||
item_buff.append(item)
|
||||
|
||||
if len(item_buff) > 0:
|
||||
res.append((prev_schoolyear, item_buff))
|
||||
|
||||
return res
|
||||
|
||||
@@ -489,21 +602,20 @@ def get_cooperation_history():
|
||||
return UserCooperationHistory.query.all()
|
||||
|
||||
|
||||
def add_cooperation_history_item(user_id, institution_id, role, school_year, badge_text):
|
||||
def add_cooperation_history_item(user_id, institution_id, role):
|
||||
model_obj = UserCooperationHistory(
|
||||
user=user_id,
|
||||
institution=institution_id,
|
||||
role=role,
|
||||
school_year=school_year,
|
||||
badge_text=badge_text
|
||||
timestamp=datetime.now()
|
||||
)
|
||||
db.session.add(model_obj)
|
||||
db.session.commit()
|
||||
return model_obj.id
|
||||
|
||||
def del_cooperation_history_item(entry_id):
|
||||
db.session.query(UserCooperationHistory).filter_by(id=entry_id).delete()
|
||||
db.session.commit()
|
||||
#def del_cooperation_history_item(entry_id):
|
||||
# db.session.query(UserCooperationHistory).filter_by(id=entry_id).delete()
|
||||
# db.session.commit()
|
||||
|
||||
def has_user_corpus_access(user_id, corpus_name):
|
||||
user = RegisteredUser.query.filter_by(id=user_id).first()
|
||||
@@ -539,7 +651,6 @@ def get_user_obj_by_email(email):
|
||||
def get_institution_obj(institution_id):
|
||||
return Institution.query.filter_by(id=institution_id).first()
|
||||
|
||||
|
||||
def get_institution_obj_by_name(institution_name):
|
||||
return Institution.query.filter_by(name=institution_name).first()
|
||||
|
||||
@@ -608,6 +719,12 @@ def update_user_role(user_id, role):
|
||||
return rowcount
|
||||
|
||||
|
||||
def update_user_institution_role(user_id, institution_id, role):
|
||||
rowcount = db.session.query(UserInstitutionMapping).filter_by(user=user_id, institution=institution_id).update({'role': role})
|
||||
db.session.commit()
|
||||
return rowcount
|
||||
|
||||
|
||||
def update_user_email(user_id, new_email):
|
||||
rowcount = db.session.query(RegisteredUser).filter_by(id=user_id).update({'email': new_email})
|
||||
db.session.commit()
|
||||
@@ -650,6 +767,22 @@ def del_user_from_institution(user_id, institution_id):
|
||||
db.session.commit()
|
||||
|
||||
|
||||
def get_user_institution_role_str(user_id, institution_id):
|
||||
res = UserInstitutionMapping.query.filter_by(
|
||||
user=user_id
|
||||
).filter_by(
|
||||
institution=institution_id
|
||||
).first()
|
||||
if not res:
|
||||
return ''
|
||||
role_str_map = {
|
||||
'coordinator': 'Koordinator/-ka',
|
||||
'mentor': 'Mentor/-ica',
|
||||
'other': 'Druga vloga'
|
||||
}
|
||||
return role_str_map[res.role]
|
||||
|
||||
|
||||
def get_all_active_users():
|
||||
return RegisteredUser.query.filter_by(active=True).order_by(RegisteredUser.id).all()
|
||||
|
||||
@@ -664,7 +797,6 @@ def get_all_users_join_institutions(active=True):
|
||||
RegisteredUser.id == UserInstitutionMapping.user).filter(RegisteredUser.active == active).order_by(RegisteredUser.id).all()
|
||||
|
||||
|
||||
|
||||
def get_all_active_institution_users(institution_id):
|
||||
return RegisteredUser.query.filter_by(active=True).join(UserInstitutionMapping,
|
||||
RegisteredUser.id == UserInstitutionMapping.user).filter(UserInstitutionMapping.institution == institution_id).all()
|
||||
@@ -701,9 +833,11 @@ def get_actual_studentparent_contract_filename(f_hash):
|
||||
|
||||
|
||||
def get_password_reset_token(email, key, expires=600):
|
||||
return jwt.encode({'reset_password': email,
|
||||
token = jwt.encode({'reset_password': email,
|
||||
'exp': int(time.time()) + expires},
|
||||
key=key, algorithm='HS256')
|
||||
logging.error(token)
|
||||
return token
|
||||
|
||||
|
||||
def transfer_users_institution(institution_id_from, institution_id_to):
|
||||
@@ -748,12 +882,11 @@ def send_resetpass_mail(email, config):
|
||||
body = '''
|
||||
Zahtevali ste ponastavitev gesla vašega uporabniškega računa.
|
||||
|
||||
Geslo lahko ponastavite na naslednji povezavi: https://zbiranje.slovenscina.eu/solar/resetpass/{}'''.format(jwt_token)
|
||||
|
||||
Geslo lahko ponastavite na naslednji povezavi: https://{}/resetpass/{}'''.format(config['SERVER_NAME'], jwt_token)
|
||||
message = MIMEMultipart()
|
||||
message['From'] = config['MAIL_LOGIN']
|
||||
message['To'] = email
|
||||
message['Subject'] = 'Ponastavitev gesla'
|
||||
message['Subject'] = 'Portal Šolar: Ponastavitev gesla'
|
||||
message.attach(MIMEText(body, "plain"))
|
||||
text = message.as_string()
|
||||
|
||||
@@ -802,7 +935,7 @@ def send_user_activation_mail(user_id, config):
|
||||
message = MIMEMultipart()
|
||||
message['From'] = config['MAIL_LOGIN']
|
||||
message['To'] = user.email
|
||||
message['Subject'] = 'Ponastavitev gesla'
|
||||
message['Subject'] = 'Portal Šolar: Vaš uporabniški račun je odobren'
|
||||
message.attach(MIMEText(body, "plain"))
|
||||
text = message.as_string()
|
||||
|
||||
@@ -816,3 +949,4 @@ def send_user_activation_mail(user_id, config):
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
|
||||
|
||||
@@ -2,19 +2,22 @@
|
||||
html {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-size: 16px;
|
||||
color: #46535B; }
|
||||
color: #46535B;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 16px;
|
||||
padding: 0;
|
||||
margin: 0; }
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 30px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 35px;
|
||||
color: #006CB7; }
|
||||
color: #006CB7;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 18px;
|
||||
@@ -22,16 +25,19 @@ h2 {
|
||||
font-weight: 300;
|
||||
line-height: 21px;
|
||||
text-transform: uppercase;
|
||||
color: #006CB7; }
|
||||
color: #006CB7;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 18px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 21px; }
|
||||
line-height: 21px;
|
||||
}
|
||||
|
||||
em {
|
||||
font-weight: 300; }
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.btn {
|
||||
border: none;
|
||||
@@ -43,18 +49,26 @@ em {
|
||||
font-size: 1.125rem;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
transition: opacity 0.3s ease-out; }
|
||||
-webkit-transition: opacity 0.3s ease-out;
|
||||
transition: opacity 0.3s ease-out;
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
opacity: 0.8; }
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.btn:disabled {
|
||||
cursor: default;
|
||||
opacity: 0.5; }
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.panel {
|
||||
background: #F5F5F5;
|
||||
padding: 40px 60px;
|
||||
border-radius: 20px;
|
||||
max-width: 30rem; }
|
||||
max-width: 30rem;
|
||||
}
|
||||
|
||||
.panel .panel-logo {
|
||||
position: absolute;
|
||||
top: -60px;
|
||||
@@ -66,13 +80,15 @@ em {
|
||||
padding: 20px 30px;
|
||||
width: 100px;
|
||||
border-radius: 100%;
|
||||
text-align: center; }
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.line {
|
||||
background: #C4C4C4;
|
||||
height: 2px;
|
||||
width: 200px;
|
||||
margin: auto; }
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.a-right {
|
||||
display: block;
|
||||
@@ -80,58 +96,89 @@ em {
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
color: #006CB7;
|
||||
text-transform: uppercase; }
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.alert {
|
||||
position: relative;
|
||||
color: #8D3D3D;
|
||||
margin-bottom: 2rem; }
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.alert.alert-success {
|
||||
color: #88B52F;
|
||||
}
|
||||
|
||||
.alert img {
|
||||
position: relative;
|
||||
top: 0.25rem;
|
||||
width: 1.8rem; }
|
||||
width: 1.8rem;
|
||||
}
|
||||
|
||||
.alert p {
|
||||
position: absolute;
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-webkit-box-pack: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
height: 2rem;
|
||||
left: 3rem;
|
||||
top: 0;
|
||||
margin: 0;
|
||||
text-transform: uppercase; }
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.submit-alert {
|
||||
background: white;
|
||||
border: 2px solid #B7DB70;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
border-radius: 8px; }
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.submit-alert .btn {
|
||||
margin-top: 0.5rem;
|
||||
background: #88B52F;
|
||||
border-radius: 4px; }
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.contract-item {
|
||||
position: relative;
|
||||
margin-left: 3rem;
|
||||
border-bottom: 1px solid #C4C4C4;
|
||||
padding-bottom: 1.25rem; }
|
||||
padding-bottom: 1.25rem;
|
||||
}
|
||||
|
||||
.contract-item .contract-item-icon {
|
||||
position: absolute;
|
||||
left: -3rem;
|
||||
top: 0;
|
||||
width: 2rem;
|
||||
height: 2rem; }
|
||||
height: 2rem;
|
||||
}
|
||||
|
||||
.contract-item .contract-item-title {
|
||||
font-weight: 500;
|
||||
font-size: 0.875rem;
|
||||
line-height: 1rem; }
|
||||
line-height: 1rem;
|
||||
}
|
||||
|
||||
.contract-item .contract-item-date {
|
||||
font-weight: normal;
|
||||
font-size: 0.625rem;
|
||||
line-height: 0.75rem;
|
||||
text-transform: uppercase; }
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.contract-item .contract-item-download {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
@@ -140,10 +187,23 @@ em {
|
||||
line-height: 0.825rem;
|
||||
text-transform: uppercase;
|
||||
color: #006CB7;
|
||||
text-decoration: none; }
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.collaborators-item {
|
||||
.team-item {
|
||||
background: white;
|
||||
width: 100%; }
|
||||
width: 100%;
|
||||
padding-left: 1rem;
|
||||
position: relative;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.team-item .team-item-name {
|
||||
line-height: 3.25rem;
|
||||
}
|
||||
|
||||
.team-item .team-item-name .team-item-role {
|
||||
color: #848C90;
|
||||
margin-left: 1rem;
|
||||
}
|
||||
/*# sourceMappingURL=contracts.css.map */
|
||||
@@ -1,7 +1,11 @@
|
||||
{
|
||||
"version": 3,
|
||||
"mappings": "AAAQ,+IAAuI;AAa/I,IAAK;EACH,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAC,IAAI;EACd,KAAK,EAZC,OAAO;;AAef,IAAK;EACH,SAAS,EAAC,IAAI;EACd,OAAO,EAAC,CAAC;EACT,MAAM,EAAC,CAAC;;ACpBV,EAAG;EACD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;EACjB,KAAK,EDLA,OAAO;;ACOd,EAAG;EACD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,SAAS;EACzB,KAAK,EDbA,OAAO;;ACgBd,EAAG;EACD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;;AAGnB,EAAG;EACD,WAAW,EAAE,GAAG;;AAGlB,IAAK;EACH,MAAM,EAAC,IAAI;EACX,WAAW,EAAE,MAAM;EACnB,OAAO,EAAE,QAAQ;EACjB,KAAK,EAAC,KAAK;EACX,UAAU,EDhCL,OAAO;ECiCZ,aAAa,EAAE,IAAI;EACnB,SAAS,EAAE,QAAQ;EACnB,WAAW,EAAE,GAAG;EAChB,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,qBAAqB;EACjC,UAAQ;IACN,OAAO,EAAE,GAAG;EAEd,aAAW;IACT,MAAM,EAAC,OAAO;IACd,OAAO,EAAC,GAAG;;AAMf,MAAO;EACL,UAAU,ED5CJ,OAAO;EC6Cb,OAAO,EAAE,SAAS;EAClB,aAAa,EAAE,IAAI;EACnB,SAAS,EAAC,KAAK;EACf,kBAAY;IACV,QAAQ,EAAC,QAAQ;IACjB,GAAG,EAAE,KAAK;IACV,IAAI,EAAC,CAAC;IACN,KAAK,EAAC,CAAC;IACP,OAAO,EAAC,KAAK;IACb,MAAM,EAAC,IAAI;IACX,UAAU,EDvDN,OAAO;ICwDX,OAAO,EAAC,SAAS;IACjB,KAAK,EAAE,KAAK;IACZ,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,MAAM;;AAKtB,KAAM;EACJ,UAAU,EDpEL,OAAO;ECqEZ,MAAM,EAAC,GAAG;EACV,KAAK,EAAC,KAAK;EACX,MAAM,EAAE,IAAI;;AAGd,QAAS;EACP,OAAO,EAAC,KAAK;EACb,UAAU,EAAE,KAAK;EACjB,SAAS,EAAC,IAAI;EACd,eAAe,EAAE,IAAI;EACrB,KAAK,EDlFA,OAAO;ECmFZ,cAAc,EAAE,SAAS;;AAG3B,MAAO;EACL,QAAQ,EAAC,QAAQ;EACjB,KAAK,EDvFD,OAAO;ECwFX,aAAa,EAAC,IAAI;EAClB,UAAI;IACF,QAAQ,EAAC,QAAQ;IACjB,GAAG,EAAC,OAAO;IACX,KAAK,EAAC,MAAM;EAEd,QAAE;IACA,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,IAAI;IACb,cAAc,EAAE,MAAM;IACtB,eAAe,EAAE,MAAM;IACvB,WAAW,EAAE,MAAM;IACnB,MAAM,EAAC,IAAI;IACX,IAAI,EAAC,IAAI;IACT,GAAG,EAAE,CAAC;IACN,MAAM,EAAC,CAAC;IACR,cAAc,EAAE,SAAS;;AAI7B,aAAc;EACZ,UAAU,EAAC,KAAK;EAChB,MAAM,EAAE,iBAAsB;EAC9B,UAAU,EAAE,UAAU;EACtB,aAAa,EAAE,GAAG;EAClB,kBAAK;IACH,UAAU,EAAC,MAAM;IACjB,UAAU,ED5GN,OAAO;IC6GX,aAAa,EAAE,GAAG;;ACrHtB,cAAe;EACb,QAAQ,EAAC,QAAQ;EACjB,WAAW,EAAC,IAAI;EAChB,aAAa,EAAE,iBAAe;EAC9B,cAAc,EAAC,OAAO;EACtB,kCAAoB;IAClB,QAAQ,EAAC,QAAQ;IACjB,IAAI,EAAC,KAAK;IACV,GAAG,EAAC,CAAC;IACL,KAAK,EAAC,IAAI;IACV,MAAM,EAAC,IAAI;EAEb,mCAAqB;IACnB,WAAW,EAAE,GAAG;IAChB,SAAS,EAAE,QAAQ;IACnB,WAAW,EAAE,IAAI;EAEnB,kCAAoB;IAClB,WAAW,EAAE,MAAM;IACnB,SAAS,EAAE,QAAQ;IACnB,WAAW,EAAE,OAAO;IACpB,cAAc,EAAE,SAAS;EAE3B,sCAAwB;IACtB,QAAQ,EAAC,QAAQ;IACjB,KAAK,EAAC,CAAC;IACP,GAAG,EAAC,IAAI;IACR,SAAS,EAAE,OAAO;IAClB,WAAW,EAAE,QAAQ;IACrB,cAAc,EAAE,SAAS;IACzB,KAAK,EF9BF,OAAO;IE+BV,eAAe,EAAE,IAAI;;AAIzB,mBAAoB;EAClB,UAAU,EAAC,KAAK;EAChB,KAAK,EAAC,IAAI",
|
||||
"sources": ["slovenscina-theme.scss","slovenscina-elements.scss","contracts.scss"],
|
||||
"mappings": "AEAA,OAAO,CAAC,uIAAI;AAaZ,AAAA,IAAI,CAAC;EACH,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAC,IAAI;EACd,KAAK,EAZC,OAAO;CAad;;AAED,AAAA,IAAI,CAAC;EACH,SAAS,EAAC,IAAI;EACd,OAAO,EAAC,CAAC;EACT,MAAM,EAAC,CAAC;CACT;;ADrBD,AAAA,EAAE,CAAC;EACD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;EACjB,KAAK,ECLA,OAAO;CDMb;;AACD,AAAA,EAAE,CAAC;EACD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,SAAS;EACzB,KAAK,ECbA,OAAO;CDcb;;AAED,AAAA,EAAE,CAAC;EACD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;CAClB;;AAED,AAAA,EAAE,CAAC;EACD,WAAW,EAAE,GAAG;CACjB;;AAED,AAAA,IAAI,CAAC;EACH,MAAM,EAAC,IAAI;EACX,WAAW,EAAE,MAAM;EACnB,OAAO,EAAE,QAAQ;EACjB,KAAK,EAAC,KAAK;EACX,UAAU,EChCL,OAAO;EDiCZ,aAAa,EAAE,IAAI;EACnB,SAAS,EAAE,QAAQ;EACnB,WAAW,EAAE,GAAG;EAChB,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,qBAAqB;CAQlC;;AAlBD,AAWE,IAXE,AAWD,MAAM,CAAC;EACN,OAAO,EAAE,GAAG;CACb;;AAbH,AAcE,IAdE,AAcD,SAAS,CAAC;EACT,MAAM,EAAC,OAAO;EACd,OAAO,EAAC,GAAG;CACZ;;AAKH,AAAA,MAAM,CAAC;EACL,UAAU,EC5CJ,OAAO;ED6Cb,OAAO,EAAE,SAAS;EAClB,aAAa,EAAE,IAAI;EACnB,SAAS,EAAC,KAAK;CAchB;;AAlBD,AAKE,MALI,CAKJ,WAAW,CAAC;EACV,QAAQ,EAAC,QAAQ;EACjB,GAAG,EAAE,KAAK;EACV,IAAI,EAAC,CAAC;EACN,KAAK,EAAC,CAAC;EACP,OAAO,EAAC,KAAK;EACb,MAAM,EAAC,IAAI;EACX,UAAU,ECvDN,OAAO;EDwDX,OAAO,EAAC,SAAS;EACjB,KAAK,EAAE,KAAK;EACZ,aAAa,EAAE,IAAI;EACnB,UAAU,EAAE,MAAM;CACnB;;AAIH,AAAA,KAAK,CAAC;EACJ,UAAU,ECpEL,OAAO;EDqEZ,MAAM,EAAC,GAAG;EACV,KAAK,EAAC,KAAK;EACX,MAAM,EAAE,IAAI;CACb;;AAED,AAAA,QAAQ,CAAC;EACP,OAAO,EAAC,KAAK;EACb,UAAU,EAAE,KAAK;EACjB,SAAS,EAAC,IAAI;EACd,eAAe,EAAE,IAAI;EACrB,KAAK,EClFA,OAAO;EDmFZ,cAAc,EAAE,SAAS;CAC1B;;AAED,AAAA,MAAM,CAAC;EACL,QAAQ,EAAC,QAAQ;EACjB,KAAK,ECvFD,OAAO;EDwFX,aAAa,EAAC,IAAI;CAqBnB;;AAxBD,AAIE,MAJI,AAIH,cAAc,CAAC;EACd,KAAK,ECnFD,OAAO;CDoFZ;;AANH,AAOE,MAPI,CAOJ,GAAG,CAAC;EACF,QAAQ,EAAC,QAAQ;EACjB,GAAG,EAAC,OAAO;EACX,KAAK,EAAC,MAAM;CACb;;AAXH,AAYE,MAZI,CAYJ,CAAC,CAAC;EACA,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;EACtB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;EACnB,MAAM,EAAC,IAAI;EACX,IAAI,EAAC,IAAI;EACT,GAAG,EAAE,CAAC;EACN,MAAM,EAAC,CAAC;EACR,cAAc,EAAE,SAAS;CAC1B;;AAGH,AAAA,aAAa,CAAC;EACZ,UAAU,EAAC,KAAK;EAChB,MAAM,EAAE,GAAG,CAAC,KAAK,CC3GL,OAAO;ED4GnB,UAAU,EAAE,UAAU;EACtB,aAAa,EAAE,GAAG;CAMnB;;AAVD,AAKE,aALW,CAKX,IAAI,CAAC;EACH,UAAU,EAAC,MAAM;EACjB,UAAU,EC/GN,OAAO;EDgHX,aAAa,EAAE,GAAG;CACnB;;ADzHH,AAAA,cAAc,CAAC;EACb,QAAQ,EAAC,QAAQ;EACjB,WAAW,EAAC,IAAI;EAChB,aAAa,EAAE,GAAG,CAAC,KAAK,CEAnB,OAAO;EFCZ,cAAc,EAAC,OAAO;CA6BvB;;AAjCD,AAKE,cALY,CAKZ,mBAAmB,CAAC;EAClB,QAAQ,EAAC,QAAQ;EACjB,IAAI,EAAC,KAAK;EACV,GAAG,EAAC,CAAC;EACL,KAAK,EAAC,IAAI;EACV,MAAM,EAAC,IAAI;CACZ;;AAXH,AAYE,cAZY,CAYZ,oBAAoB,CAAC;EACnB,WAAW,EAAE,GAAG;EAChB,SAAS,EAAE,QAAQ;EACnB,WAAW,EAAE,IAAI;CAClB;;AAhBH,AAiBE,cAjBY,CAiBZ,mBAAmB,CAAC;EAClB,WAAW,EAAE,MAAM;EACnB,SAAS,EAAE,QAAQ;EACnB,WAAW,EAAE,OAAO;EACpB,cAAc,EAAE,SAAS;CAC1B;;AAtBH,AAuBE,cAvBY,CAuBZ,uBAAuB,CAAC;EACtB,QAAQ,EAAC,QAAQ;EACjB,KAAK,EAAC,CAAC;EACP,GAAG,EAAC,IAAI;EACR,SAAS,EAAE,OAAO;EAClB,WAAW,EAAE,QAAQ;EACrB,cAAc,EAAE,SAAS;EACzB,KAAK,EE9BF,OAAO;EF+BV,eAAe,EAAE,IAAI;CACtB;;AAGH,AAAA,UAAU,CAAC;EACT,UAAU,EAAC,KAAK;EAChB,KAAK,EAAC,IAAI;EACV,YAAY,EAAC,IAAI;EACjB,QAAQ,EAAC,QAAQ;EACjB,aAAa,EAAC,IAAI;CASnB;;AAdD,AAME,UANQ,CAMR,eAAe,CAAC;EACd,WAAW,EAAC,OAAO;CAKpB;;AAZH,AAQI,UARM,CAMR,eAAe,CAEb,eAAe,CAAC;EACd,KAAK,EExCC,OAAO;EFyCb,WAAW,EAAC,IAAI;CACjB",
|
||||
"sources": [
|
||||
"contracts.scss",
|
||||
"slovenscina-elements.scss",
|
||||
"slovenscina-theme.scss"
|
||||
],
|
||||
"names": [],
|
||||
"file": "contracts.css"
|
||||
}
|
||||
@@ -35,7 +35,18 @@
|
||||
}
|
||||
}
|
||||
|
||||
.collaborators-item {
|
||||
.team-item {
|
||||
background:white;
|
||||
width:100%;
|
||||
padding-left:1rem;
|
||||
position:relative;
|
||||
margin-bottom:1rem;
|
||||
.team-item-name {
|
||||
line-height:3.25rem;
|
||||
.team-item-role {
|
||||
color:$grey-dark;
|
||||
margin-left:1rem;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,19 +2,22 @@
|
||||
html {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-size: 16px;
|
||||
color: #46535B; }
|
||||
color: #46535B;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 16px;
|
||||
padding: 0;
|
||||
margin: 0; }
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 30px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 35px;
|
||||
color: #006CB7; }
|
||||
color: #006CB7;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 18px;
|
||||
@@ -22,16 +25,19 @@ h2 {
|
||||
font-weight: 300;
|
||||
line-height: 21px;
|
||||
text-transform: uppercase;
|
||||
color: #006CB7; }
|
||||
color: #006CB7;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 18px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 21px; }
|
||||
line-height: 21px;
|
||||
}
|
||||
|
||||
em {
|
||||
font-weight: 300; }
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.btn {
|
||||
border: none;
|
||||
@@ -43,18 +49,26 @@ em {
|
||||
font-size: 1.125rem;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
transition: opacity 0.3s ease-out; }
|
||||
-webkit-transition: opacity 0.3s ease-out;
|
||||
transition: opacity 0.3s ease-out;
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
opacity: 0.8; }
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.btn:disabled {
|
||||
cursor: default;
|
||||
opacity: 0.5; }
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.panel {
|
||||
background: #F5F5F5;
|
||||
padding: 40px 60px;
|
||||
border-radius: 20px;
|
||||
max-width: 30rem; }
|
||||
max-width: 30rem;
|
||||
}
|
||||
|
||||
.panel .panel-logo {
|
||||
position: absolute;
|
||||
top: -60px;
|
||||
@@ -66,13 +80,15 @@ em {
|
||||
padding: 20px 30px;
|
||||
width: 100px;
|
||||
border-radius: 100%;
|
||||
text-align: center; }
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.line {
|
||||
background: #C4C4C4;
|
||||
height: 2px;
|
||||
width: 200px;
|
||||
margin: auto; }
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.a-right {
|
||||
display: block;
|
||||
@@ -80,74 +96,114 @@ em {
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
color: #006CB7;
|
||||
text-transform: uppercase; }
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.alert {
|
||||
position: relative;
|
||||
color: #8D3D3D;
|
||||
margin-bottom: 2rem; }
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.alert.alert-success {
|
||||
color: #88B52F;
|
||||
}
|
||||
|
||||
.alert img {
|
||||
position: relative;
|
||||
top: 0.25rem;
|
||||
width: 1.8rem; }
|
||||
width: 1.8rem;
|
||||
}
|
||||
|
||||
.alert p {
|
||||
position: absolute;
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-webkit-box-pack: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
height: 2rem;
|
||||
left: 3rem;
|
||||
top: 0;
|
||||
margin: 0;
|
||||
text-transform: uppercase; }
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.submit-alert {
|
||||
background: white;
|
||||
border: 2px solid #B7DB70;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
border-radius: 8px; }
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.submit-alert .btn {
|
||||
margin-top: 0.5rem;
|
||||
background: #88B52F;
|
||||
border-radius: 4px; }
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.form-wrapper {
|
||||
margin-bottom: 1rem; }
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.form-wrapper label {
|
||||
display: block;
|
||||
font-weight: normal;
|
||||
font-size: 0.75rem;
|
||||
line-height: 0.875rem;
|
||||
text-transform: uppercase; }
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.form-wrapper select {
|
||||
display: block;
|
||||
background: #FFFFFF;
|
||||
border: 1px solid #B6BEC3;
|
||||
padding: 0.75rem 1rem;
|
||||
width: 100%; }
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.form-wrapper input[type="text"] {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
display: block;
|
||||
background: #FFFFFF;
|
||||
border: 1px solid #B6BEC3;
|
||||
padding: 0.75rem 1rem;
|
||||
width: 100%; }
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.form-wrapper input[type="radio"] {
|
||||
float: left;
|
||||
margin: 0;
|
||||
margin-right: 0.5rem; }
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
|
||||
.form-wrapper .dropzone {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
padding: 0.5rem;
|
||||
height: 4.5rem;
|
||||
background: #E0E6EA; }
|
||||
background: #E0E6EA;
|
||||
}
|
||||
|
||||
.form-wrapper .dropzone .dz-default.dz-message {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
display: block;
|
||||
height: 3.5rem;
|
||||
text-align: center;
|
||||
border: 2px dashed white; }
|
||||
border: 2px dashed white;
|
||||
}
|
||||
|
||||
.form-wrapper .dropzone .dz-default.dz-message span {
|
||||
display: inline-block;
|
||||
background: #006CB7;
|
||||
@@ -155,23 +211,31 @@ em {
|
||||
color: white;
|
||||
padding: 0.5rem 0.75rem;
|
||||
margin-top: 0.5rem;
|
||||
cursor: pointer; }
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.form-wrapper .dz-preview.dz-file-preview {
|
||||
position: relative;
|
||||
background: white;
|
||||
height: 4.5rem;
|
||||
margin-top: 1rem; }
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.form-wrapper .dz-preview.dz-file-preview .dz-image {
|
||||
position: absolute;
|
||||
left: 1rem;
|
||||
top: 1rem;
|
||||
background: url("/static/image/file.svg");
|
||||
background: url(/static/image/file.svg);
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
width: 2rem;
|
||||
height: 2rem; }
|
||||
height: 2rem;
|
||||
}
|
||||
|
||||
.form-wrapper .dz-preview.dz-file-preview .dz-image img {
|
||||
display: none; }
|
||||
display: none;
|
||||
}
|
||||
|
||||
.form-wrapper .dz-preview.dz-file-preview .dz-details .dz-filename {
|
||||
position: absolute;
|
||||
top: 1.5rem;
|
||||
@@ -179,23 +243,42 @@ em {
|
||||
width: 50%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis; }
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.form-wrapper .dz-preview.dz-file-preview .dz-details .dz-size {
|
||||
position: absolute;
|
||||
top: 1.5rem;
|
||||
right: 1rem; }
|
||||
right: 2.5rem;
|
||||
}
|
||||
|
||||
.form-wrapper .dz-preview.dz-file-preview .dz-success-mark, .form-wrapper .dz-preview.dz-file-preview .dz-error-mark {
|
||||
display: none; }
|
||||
display: none;
|
||||
}
|
||||
|
||||
.form-wrapper .dz-preview.dz-file-preview .dz-progress {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 1.5rem;
|
||||
width: 28%;
|
||||
border-radius: 10px;
|
||||
overflow: hidden; }
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.form-wrapper .dz-preview.dz-file-preview .dz-progress .dz-upload {
|
||||
height: 20px;
|
||||
display: inline-block;
|
||||
background: #006CB7; }
|
||||
background: #006CB7;
|
||||
}
|
||||
|
||||
.form-wrapper .dz-preview.dz-file-preview .dz-remove {
|
||||
position: absolute;
|
||||
top: 1.5rem;
|
||||
right: 1rem;
|
||||
width: 1rem;
|
||||
height: 1rem;
|
||||
background: url(/static/image/trash.svg);
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
/*# sourceMappingURL=form.css.map */
|
||||
File diff suppressed because one or more lines are too long
@@ -60,7 +60,7 @@
|
||||
position:absolute;
|
||||
left:1rem;
|
||||
top:1rem;
|
||||
background: url("/static/image/file.svg");
|
||||
background: url(/static/image/file.svg);
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
width:2rem;
|
||||
@@ -82,7 +82,7 @@
|
||||
.dz-size {
|
||||
position:absolute;
|
||||
top:1.5rem;
|
||||
right:1rem;
|
||||
right:2.5rem;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -100,5 +100,15 @@
|
||||
background:$blue;
|
||||
}
|
||||
}
|
||||
.dz-remove {
|
||||
position:absolute;
|
||||
top:1.5rem;
|
||||
right:1rem;
|
||||
width:1rem;
|
||||
height:1rem;
|
||||
background: url(/static/image/trash.svg);
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,19 +2,22 @@
|
||||
html {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-size: 16px;
|
||||
color: #46535B; }
|
||||
color: #46535B;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 16px;
|
||||
padding: 0;
|
||||
margin: 0; }
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 30px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 35px;
|
||||
color: #006CB7; }
|
||||
color: #006CB7;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 18px;
|
||||
@@ -22,16 +25,19 @@ h2 {
|
||||
font-weight: 300;
|
||||
line-height: 21px;
|
||||
text-transform: uppercase;
|
||||
color: #006CB7; }
|
||||
color: #006CB7;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 18px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 21px; }
|
||||
line-height: 21px;
|
||||
}
|
||||
|
||||
em {
|
||||
font-weight: 300; }
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.btn {
|
||||
border: none;
|
||||
@@ -43,18 +49,26 @@ em {
|
||||
font-size: 1.125rem;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
transition: opacity 0.3s ease-out; }
|
||||
-webkit-transition: opacity 0.3s ease-out;
|
||||
transition: opacity 0.3s ease-out;
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
opacity: 0.8; }
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.btn:disabled {
|
||||
cursor: default;
|
||||
opacity: 0.5; }
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.panel {
|
||||
background: #F5F5F5;
|
||||
padding: 40px 60px;
|
||||
border-radius: 20px;
|
||||
max-width: 30rem; }
|
||||
max-width: 30rem;
|
||||
}
|
||||
|
||||
.panel .panel-logo {
|
||||
position: absolute;
|
||||
top: -60px;
|
||||
@@ -66,13 +80,15 @@ em {
|
||||
padding: 20px 30px;
|
||||
width: 100px;
|
||||
border-radius: 100%;
|
||||
text-align: center; }
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.line {
|
||||
background: #C4C4C4;
|
||||
height: 2px;
|
||||
width: 200px;
|
||||
margin: auto; }
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.a-right {
|
||||
display: block;
|
||||
@@ -80,40 +96,64 @@ em {
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
color: #006CB7;
|
||||
text-transform: uppercase; }
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.alert {
|
||||
position: relative;
|
||||
color: #8D3D3D;
|
||||
margin-bottom: 2rem; }
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.alert.alert-success {
|
||||
color: #88B52F;
|
||||
}
|
||||
|
||||
.alert img {
|
||||
position: relative;
|
||||
top: 0.25rem;
|
||||
width: 1.8rem; }
|
||||
width: 1.8rem;
|
||||
}
|
||||
|
||||
.alert p {
|
||||
position: absolute;
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-webkit-box-pack: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
height: 2rem;
|
||||
left: 3rem;
|
||||
top: 0;
|
||||
margin: 0;
|
||||
text-transform: uppercase; }
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.submit-alert {
|
||||
background: white;
|
||||
border: 2px solid #B7DB70;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
border-radius: 8px; }
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.submit-alert .btn {
|
||||
margin-top: 0.5rem;
|
||||
background: #88B52F;
|
||||
border-radius: 4px; }
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
body {
|
||||
background: #F5F5F5; }
|
||||
background: #F5F5F5;
|
||||
}
|
||||
|
||||
header {
|
||||
position: fixed;
|
||||
@@ -122,26 +162,37 @@ header {
|
||||
height: 4rem;
|
||||
background: #006CB7;
|
||||
z-index: 1000000;
|
||||
box-shadow: 0px 4px 40px rgba(0, 0, 0, 0.2); }
|
||||
-webkit-box-shadow: 0px 4px 40px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0px 4px 40px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
header .logo {
|
||||
display: inline-block;
|
||||
padding: 0.5rem 1.5rem; }
|
||||
padding: 0.5rem 1.5rem;
|
||||
}
|
||||
|
||||
header .logo img {
|
||||
height: 3rem; }
|
||||
height: 3rem;
|
||||
}
|
||||
|
||||
header .menu-items {
|
||||
float: right;
|
||||
padding: 1.5rem 1.5rem;
|
||||
display: inline-block; }
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
header .menu-items a {
|
||||
margin-left: 2rem;
|
||||
display: inline-block;
|
||||
color: white;
|
||||
text-decoration: none; }
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.tab-nav {
|
||||
margin-top: 2rem;
|
||||
border-bottom: 1px solid #848C90; }
|
||||
border-bottom: 1px solid #848C90;
|
||||
}
|
||||
|
||||
.tab-nav a {
|
||||
position: relative;
|
||||
top: 1px;
|
||||
@@ -152,21 +203,90 @@ header .menu-items {
|
||||
padding: 0.25rem 2rem;
|
||||
text-decoration: none;
|
||||
color: #848C90;
|
||||
transition: color 0.3s ease-out; }
|
||||
-webkit-transition: color 0.3s ease-out;
|
||||
transition: color 0.3s ease-out;
|
||||
}
|
||||
|
||||
.tab-nav a.active, .tab-nav a:hover {
|
||||
color: #006CB7;
|
||||
border-bottom: 4px solid #006CB7; }
|
||||
border-bottom: 4px solid #006CB7;
|
||||
}
|
||||
|
||||
h1.title {
|
||||
font-weight: 300;
|
||||
font-size: 1.5rem;
|
||||
line-height: 1.75rem;
|
||||
margin: 0;
|
||||
color: #006CB7; }
|
||||
color: #006CB7;
|
||||
}
|
||||
|
||||
p.subtitle {
|
||||
font-size: 14px;
|
||||
line-height: 150%;
|
||||
margin-top: 0.5rem; }
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
|
||||
/* Style The Dropdown Button */
|
||||
.dropbtn {
|
||||
color: white;
|
||||
line-height: 4rem;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
background: none;
|
||||
padding: 0 1rem;
|
||||
}
|
||||
|
||||
.dropbtn img {
|
||||
position: relative;
|
||||
top: 0.75rem;
|
||||
}
|
||||
|
||||
/* The container <div> - needed to position the dropdown content */
|
||||
.dropdown {
|
||||
margin-right: 1rem;
|
||||
float: right;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* Dropdown Content (Hidden by Default) */
|
||||
.dropdown-content {
|
||||
display: none;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
background-color: #f9f9f9;
|
||||
min-width: 160px;
|
||||
-webkit-box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
/* Links inside the dropdown */
|
||||
.dropdown-content a {
|
||||
color: #848C90;
|
||||
padding: 0.5rem 1rem;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.dropdown-content a:hover {
|
||||
background-color: #f1f1f1;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dropdown-content hr {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
border-top: 1px solid #B6BEC3;
|
||||
}
|
||||
|
||||
/* Show the dropdown menu on hover */
|
||||
.dropdown:hover .dropdown-content {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Change the background color of the dropdown button when the dropdown content is shown */
|
||||
.dropdown:hover .dropbtn {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
/*# sourceMappingURL=header.css.map */
|
||||
@@ -1,7 +1,11 @@
|
||||
{
|
||||
"version": 3,
|
||||
"mappings": "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",
|
||||
"sources": ["slovenscina-theme.scss","slovenscina-elements.scss","header.scss"],
|
||||
"mappings": "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",
|
||||
"sources": [
|
||||
"header.scss",
|
||||
"slovenscina-elements.scss",
|
||||
"slovenscina-theme.scss"
|
||||
],
|
||||
"names": [],
|
||||
"file": "header.css"
|
||||
}
|
||||
@@ -68,3 +68,67 @@ p.subtitle {
|
||||
line-height: 150%;
|
||||
margin-top:0.5rem;
|
||||
}
|
||||
|
||||
|
||||
/* Style The Dropdown Button */
|
||||
.dropbtn {
|
||||
color: white;
|
||||
line-height:4rem;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
background:none;
|
||||
padding:0 1rem;
|
||||
img {
|
||||
position:relative;
|
||||
top:0.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
/* The container <div> - needed to position the dropdown content */
|
||||
.dropdown {
|
||||
margin-right:1rem;
|
||||
float:right;
|
||||
display: inline-block;
|
||||
position:relative;
|
||||
}
|
||||
|
||||
/* Dropdown Content (Hidden by Default) */
|
||||
.dropdown-content {
|
||||
display: none;
|
||||
position: absolute;
|
||||
right:0;
|
||||
background-color: #f9f9f9;
|
||||
min-width: 160px;
|
||||
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
/* Links inside the dropdown */
|
||||
.dropdown-content {
|
||||
a {
|
||||
color: $grey-dark;
|
||||
padding: 0.5rem 1rem;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
&:hover {
|
||||
background-color: #f1f1f1;
|
||||
cursor:pointer;
|
||||
}
|
||||
}
|
||||
hr {
|
||||
margin-top:0;
|
||||
margin-bottom:0;
|
||||
border-top: 1px solid $grey-border;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Show the dropdown menu on hover */
|
||||
.dropdown:hover .dropdown-content {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Change the background color of the dropdown button when the dropdown content is shown */
|
||||
.dropdown:hover .dropbtn {
|
||||
background:rgba(0,0,0,0.2);
|
||||
}
|
||||
@@ -2,19 +2,22 @@
|
||||
html {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-size: 16px;
|
||||
color: #46535B; }
|
||||
color: #46535B;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 16px;
|
||||
padding: 0;
|
||||
margin: 0; }
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 30px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 35px;
|
||||
color: #006CB7; }
|
||||
color: #006CB7;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 18px;
|
||||
@@ -22,16 +25,19 @@ h2 {
|
||||
font-weight: 300;
|
||||
line-height: 21px;
|
||||
text-transform: uppercase;
|
||||
color: #006CB7; }
|
||||
color: #006CB7;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 18px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 21px; }
|
||||
line-height: 21px;
|
||||
}
|
||||
|
||||
em {
|
||||
font-weight: 300; }
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.btn {
|
||||
border: none;
|
||||
@@ -43,18 +49,26 @@ em {
|
||||
font-size: 1.125rem;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
transition: opacity 0.3s ease-out; }
|
||||
-webkit-transition: opacity 0.3s ease-out;
|
||||
transition: opacity 0.3s ease-out;
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
opacity: 0.8; }
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.btn:disabled {
|
||||
cursor: default;
|
||||
opacity: 0.5; }
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.panel {
|
||||
background: #F5F5F5;
|
||||
padding: 40px 60px;
|
||||
border-radius: 20px;
|
||||
max-width: 30rem; }
|
||||
max-width: 30rem;
|
||||
}
|
||||
|
||||
.panel .panel-logo {
|
||||
position: absolute;
|
||||
top: -60px;
|
||||
@@ -66,13 +80,15 @@ em {
|
||||
padding: 20px 30px;
|
||||
width: 100px;
|
||||
border-radius: 100%;
|
||||
text-align: center; }
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.line {
|
||||
background: #C4C4C4;
|
||||
height: 2px;
|
||||
width: 200px;
|
||||
margin: auto; }
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.a-right {
|
||||
display: block;
|
||||
@@ -80,37 +96,60 @@ em {
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
color: #006CB7;
|
||||
text-transform: uppercase; }
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.alert {
|
||||
position: relative;
|
||||
color: #8D3D3D;
|
||||
margin-bottom: 2rem; }
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.alert.alert-success {
|
||||
color: #88B52F;
|
||||
}
|
||||
|
||||
.alert img {
|
||||
position: relative;
|
||||
top: 0.25rem;
|
||||
width: 1.8rem; }
|
||||
width: 1.8rem;
|
||||
}
|
||||
|
||||
.alert p {
|
||||
position: absolute;
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-webkit-box-pack: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
height: 2rem;
|
||||
left: 3rem;
|
||||
top: 0;
|
||||
margin: 0;
|
||||
text-transform: uppercase; }
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.submit-alert {
|
||||
background: white;
|
||||
border: 2px solid #B7DB70;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
border-radius: 8px; }
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.submit-alert .btn {
|
||||
margin-top: 0.5rem;
|
||||
background: #88B52F;
|
||||
border-radius: 4px; }
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.history-item {
|
||||
background: white;
|
||||
@@ -118,14 +157,27 @@ em {
|
||||
max-height: 2.875rem;
|
||||
padding: 1rem 1.5rem;
|
||||
position: relative;
|
||||
transition: max-height 0.3s ease-out; }
|
||||
-webkit-transition: max-height 1s ease-out;
|
||||
transition: max-height 1s ease-out;
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.history-item .history-item-chevron {
|
||||
position: absolute;
|
||||
bottom: 1rem;
|
||||
right: 1rem;
|
||||
}
|
||||
|
||||
.history-item .history-item-date {
|
||||
text-transform: uppercase;
|
||||
display: inline-block;
|
||||
color: #848C90;
|
||||
line-height: 1rem;
|
||||
font-weight: 400;
|
||||
font-size: 0.875rem; }
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.history-item .history-item-uploader {
|
||||
display: inline-block;
|
||||
padding-left: 1rem;
|
||||
@@ -134,7 +186,9 @@ em {
|
||||
color: #848C90;
|
||||
line-height: 1rem;
|
||||
font-weight: 400;
|
||||
font-size: 0.875rem; }
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.history-item .history-item-filecount {
|
||||
position: absolute;
|
||||
top: 1rem;
|
||||
@@ -142,7 +196,9 @@ em {
|
||||
color: #006CB7;
|
||||
line-height: 1rem;
|
||||
font-weight: 400;
|
||||
font-size: 0.875rem; }
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.history-item .history-item-desc {
|
||||
position: absolute;
|
||||
bottom: 1rem;
|
||||
@@ -150,40 +206,78 @@ em {
|
||||
font-weight: normal;
|
||||
font-size: 1rem;
|
||||
line-height: 1.25rem;
|
||||
color: #46535B; }
|
||||
color: #46535B;
|
||||
}
|
||||
|
||||
.history-item .history-item-desc-full {
|
||||
display: none;
|
||||
margin-top: 1rem; }
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.history-item .history-item-files-full {
|
||||
display: none; }
|
||||
display: none;
|
||||
}
|
||||
|
||||
.history-item .history-item-files-full .file-item {
|
||||
position: relative;
|
||||
height: 3.125rem;
|
||||
border-bottom: 1px solid #848C90; }
|
||||
border-bottom: 1px solid #848C90;
|
||||
}
|
||||
|
||||
.history-item .history-item-files-full .file-item:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.history-item .history-item-files-full .file-item .file-icon {
|
||||
position: absolute;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
left: 0;
|
||||
top: 1rem; }
|
||||
top: 1rem;
|
||||
}
|
||||
|
||||
.history-item .history-item-files-full .file-item .file-name {
|
||||
position: absolute;
|
||||
left: 3rem;
|
||||
top: 1rem; }
|
||||
top: 1rem;
|
||||
color: #46535B;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.history-item .history-item-files-full .file-item .file-name:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.history-item.open {
|
||||
max-height: 100rem; }
|
||||
max-height: 20rem;
|
||||
}
|
||||
|
||||
.history-item.open .history-item-date {
|
||||
display: block; }
|
||||
display: block;
|
||||
}
|
||||
|
||||
.history-item.open .history-item-uploader {
|
||||
display: block;
|
||||
padding-left: 0;
|
||||
margin-left: 0;
|
||||
border-left: none; }
|
||||
.history-item.open .history-item-desc {
|
||||
display: none; }
|
||||
.history-item.open .history-item-desc-full {
|
||||
display: block; }
|
||||
.history-item.open .history-item-files-full {
|
||||
display: block; }
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
.history-item.open .history-item-desc {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.history-item.open .history-item-desc-full {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.history-item.open .history-item-files-full {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.history-item.open .history-item-chevron {
|
||||
-webkit-transform: rotate(180deg);
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
/*# sourceMappingURL=history.css.map */
|
||||
@@ -1,7 +1,11 @@
|
||||
{
|
||||
"version": 3,
|
||||
"mappings": "AAAQ,+IAAuI;AAa/I,IAAK;EACH,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAC,IAAI;EACd,KAAK,EAZC,OAAO;;AAef,IAAK;EACH,SAAS,EAAC,IAAI;EACd,OAAO,EAAC,CAAC;EACT,MAAM,EAAC,CAAC;;ACpBV,EAAG;EACD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;EACjB,KAAK,EDLA,OAAO;;ACOd,EAAG;EACD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,SAAS;EACzB,KAAK,EDbA,OAAO;;ACgBd,EAAG;EACD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;;AAGnB,EAAG;EACD,WAAW,EAAE,GAAG;;AAGlB,IAAK;EACH,MAAM,EAAC,IAAI;EACX,WAAW,EAAE,MAAM;EACnB,OAAO,EAAE,QAAQ;EACjB,KAAK,EAAC,KAAK;EACX,UAAU,EDhCL,OAAO;ECiCZ,aAAa,EAAE,IAAI;EACnB,SAAS,EAAE,QAAQ;EACnB,WAAW,EAAE,GAAG;EAChB,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,qBAAqB;EACjC,UAAQ;IACN,OAAO,EAAE,GAAG;EAEd,aAAW;IACT,MAAM,EAAC,OAAO;IACd,OAAO,EAAC,GAAG;;AAMf,MAAO;EACL,UAAU,ED5CJ,OAAO;EC6Cb,OAAO,EAAE,SAAS;EAClB,aAAa,EAAE,IAAI;EACnB,SAAS,EAAC,KAAK;EACf,kBAAY;IACV,QAAQ,EAAC,QAAQ;IACjB,GAAG,EAAE,KAAK;IACV,IAAI,EAAC,CAAC;IACN,KAAK,EAAC,CAAC;IACP,OAAO,EAAC,KAAK;IACb,MAAM,EAAC,IAAI;IACX,UAAU,EDvDN,OAAO;ICwDX,OAAO,EAAC,SAAS;IACjB,KAAK,EAAE,KAAK;IACZ,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,MAAM;;AAKtB,KAAM;EACJ,UAAU,EDpEL,OAAO;ECqEZ,MAAM,EAAC,GAAG;EACV,KAAK,EAAC,KAAK;EACX,MAAM,EAAE,IAAI;;AAGd,QAAS;EACP,OAAO,EAAC,KAAK;EACb,UAAU,EAAE,KAAK;EACjB,SAAS,EAAC,IAAI;EACd,eAAe,EAAE,IAAI;EACrB,KAAK,EDlFA,OAAO;ECmFZ,cAAc,EAAE,SAAS;;AAG3B,MAAO;EACL,QAAQ,EAAC,QAAQ;EACjB,KAAK,EDvFD,OAAO;ECwFX,aAAa,EAAC,IAAI;EAClB,UAAI;IACF,QAAQ,EAAC,QAAQ;IACjB,GAAG,EAAC,OAAO;IACX,KAAK,EAAC,MAAM;EAEd,QAAE;IACA,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,IAAI;IACb,cAAc,EAAE,MAAM;IACtB,eAAe,EAAE,MAAM;IACvB,WAAW,EAAE,MAAM;IACnB,MAAM,EAAC,IAAI;IACX,IAAI,EAAC,IAAI;IACT,GAAG,EAAE,CAAC;IACN,MAAM,EAAC,CAAC;IACR,cAAc,EAAE,SAAS;;AAI7B,aAAc;EACZ,UAAU,EAAC,KAAK;EAChB,MAAM,EAAE,iBAAsB;EAC9B,UAAU,EAAE,UAAU;EACtB,aAAa,EAAE,GAAG;EAClB,kBAAK;IACH,UAAU,EAAC,MAAM;IACjB,UAAU,ED5GN,OAAO;IC6GX,aAAa,EAAE,GAAG;;ACrHtB,aAAc;EACZ,UAAU,EAAC,KAAK;EAChB,UAAU,EAAC,QAAQ;EACnB,UAAU,EAAC,QAAQ;EACnB,OAAO,EAAC,WAAW;EACnB,QAAQ,EAAC,QAAQ;EACjB,UAAU,EAAE,wBAAwB;EAEpC,gCAAmB;IACjB,cAAc,EAAE,SAAS;IACzB,OAAO,EAAE,YAAY;IACrB,KAAK,EFPG,OAAO;IEQf,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,GAAG;IAChB,SAAS,EAAC,QAAQ;EAEpB,oCAAuB;IACrB,OAAO,EAAE,YAAY;IACrB,YAAY,EAAC,IAAI;IACjB,WAAW,EAAC,IAAI;IAChB,WAAW,EAAE,iBAAoB;IACjC,KAAK,EFjBG,OAAO;IEkBf,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,GAAG;IAChB,SAAS,EAAC,QAAQ;EAEpB,qCAAwB;IACtB,QAAQ,EAAC,QAAQ;IACjB,GAAG,EAAC,IAAI;IACR,KAAK,EAAC,IAAI;IACV,KAAK,EF9BF,OAAO;IE+BV,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,GAAG;IAChB,SAAS,EAAC,QAAQ;EAEpB,gCAAmB;IACjB,QAAQ,EAAC,QAAQ;IACjB,MAAM,EAAC,IAAI;IACX,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,MAAM;IACnB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,OAAO;IACpB,KAAK,EFxCD,OAAO;EE0Cb,qCAAwB;IACtB,OAAO,EAAE,IAAI;IACb,UAAU,EAAC,IAAI;EAEjB,sCAAyB;IACvB,OAAO,EAAE,IAAI;IACb,iDAAW;MACT,QAAQ,EAAC,QAAQ;MACjB,MAAM,EAAC,QAAQ;MACf,aAAa,EAAE,iBAAoB;MACnC,4DAAW;QACT,QAAQ,EAAC,QAAQ;QACjB,KAAK,EAAC,MAAM;QACZ,MAAM,EAAC,MAAM;QACb,IAAI,EAAC,CAAC;QACN,GAAG,EAAC,IAAI;MAEV,4DAAW;QACT,QAAQ,EAAC,QAAQ;QACjB,IAAI,EAAC,IAAI;QACT,GAAG,EAAC,IAAI;EAId,kBAAO;IACL,UAAU,EAAE,MAAM;IAClB,qCAAmB;MAAC,OAAO,EAAC,KAAK;IACjC,yCAAuB;MACrB,OAAO,EAAC,KAAK;MACb,YAAY,EAAC,CAAC;MACd,WAAW,EAAC,CAAC;MACb,WAAW,EAAE,IAAI;IAEnB,qCAAmB;MACjB,OAAO,EAAE,IAAI;IAEf,0CAAwB;MACtB,OAAO,EAAE,KAAK;IAEhB,2CAAyB;MACvB,OAAO,EAAE,KAAK",
|
||||
"sources": ["slovenscina-theme.scss","slovenscina-elements.scss","history.scss"],
|
||||
"mappings": "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",
|
||||
"sources": [
|
||||
"history.scss",
|
||||
"slovenscina-elements.scss",
|
||||
"slovenscina-theme.scss"
|
||||
],
|
||||
"names": [],
|
||||
"file": "history.css"
|
||||
}
|
||||
@@ -6,8 +6,14 @@
|
||||
max-height:2.875rem;
|
||||
padding:1rem 1.5rem;
|
||||
position:relative;
|
||||
transition: max-height 0.3s ease-out;
|
||||
|
||||
transition: max-height 1s ease-out;
|
||||
cursor:pointer;
|
||||
overflow:hidden;
|
||||
.history-item-chevron {
|
||||
position:absolute;
|
||||
bottom:1rem;
|
||||
right:1rem;
|
||||
}
|
||||
.history-item-date {
|
||||
text-transform: uppercase;
|
||||
display: inline-block;
|
||||
@@ -54,6 +60,9 @@
|
||||
position:relative;
|
||||
height:3.125rem;
|
||||
border-bottom: 1px solid $grey-dark;
|
||||
&:last-child {
|
||||
border-bottom:none;
|
||||
}
|
||||
.file-icon {
|
||||
position:absolute;
|
||||
width:1.5rem;
|
||||
@@ -65,11 +74,17 @@
|
||||
position:absolute;
|
||||
left:3rem;
|
||||
top:1rem;
|
||||
color:$black;
|
||||
text-decoration: none;
|
||||
cursor:pointer;
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
&.open {
|
||||
max-height: 100rem;
|
||||
max-height: 20rem;
|
||||
.history-item-date {display:block;}
|
||||
.history-item-uploader {
|
||||
display:block;
|
||||
@@ -86,5 +101,8 @@
|
||||
.history-item-files-full {
|
||||
display: block;
|
||||
}
|
||||
.history-item-chevron {
|
||||
transform:rotate(180deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,19 +2,22 @@
|
||||
html {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-size: 16px;
|
||||
color: #46535B; }
|
||||
color: #46535B;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 16px;
|
||||
padding: 0;
|
||||
margin: 0; }
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 30px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 35px;
|
||||
color: #006CB7; }
|
||||
color: #006CB7;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 18px;
|
||||
@@ -22,16 +25,19 @@ h2 {
|
||||
font-weight: 300;
|
||||
line-height: 21px;
|
||||
text-transform: uppercase;
|
||||
color: #006CB7; }
|
||||
color: #006CB7;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 18px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 21px; }
|
||||
line-height: 21px;
|
||||
}
|
||||
|
||||
em {
|
||||
font-weight: 300; }
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.btn {
|
||||
border: none;
|
||||
@@ -43,18 +49,26 @@ em {
|
||||
font-size: 1.125rem;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
transition: opacity 0.3s ease-out; }
|
||||
-webkit-transition: opacity 0.3s ease-out;
|
||||
transition: opacity 0.3s ease-out;
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
opacity: 0.8; }
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.btn:disabled {
|
||||
cursor: default;
|
||||
opacity: 0.5; }
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.panel {
|
||||
background: #F5F5F5;
|
||||
padding: 40px 60px;
|
||||
border-radius: 20px;
|
||||
max-width: 30rem; }
|
||||
max-width: 30rem;
|
||||
}
|
||||
|
||||
.panel .panel-logo {
|
||||
position: absolute;
|
||||
top: -60px;
|
||||
@@ -66,13 +80,15 @@ em {
|
||||
padding: 20px 30px;
|
||||
width: 100px;
|
||||
border-radius: 100%;
|
||||
text-align: center; }
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.line {
|
||||
background: #C4C4C4;
|
||||
height: 2px;
|
||||
width: 200px;
|
||||
margin: auto; }
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.a-right {
|
||||
display: block;
|
||||
@@ -80,115 +96,164 @@ em {
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
color: #006CB7;
|
||||
text-transform: uppercase; }
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.alert {
|
||||
position: relative;
|
||||
color: #8D3D3D;
|
||||
margin-bottom: 2rem; }
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.alert.alert-success {
|
||||
color: #88B52F;
|
||||
}
|
||||
|
||||
.alert img {
|
||||
position: relative;
|
||||
top: 0.25rem;
|
||||
width: 1.8rem; }
|
||||
width: 1.8rem;
|
||||
}
|
||||
|
||||
.alert p {
|
||||
position: absolute;
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-webkit-box-pack: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
height: 2rem;
|
||||
left: 3rem;
|
||||
top: 0;
|
||||
margin: 0;
|
||||
text-transform: uppercase; }
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.submit-alert {
|
||||
background: white;
|
||||
border: 2px solid #B7DB70;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
border-radius: 8px; }
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.submit-alert .btn {
|
||||
margin-top: 0.5rem;
|
||||
background: #88B52F;
|
||||
border-radius: 4px; }
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.background {
|
||||
background: #848C90;
|
||||
-webkit-background-size: cover;
|
||||
-moz-background-size: cover;
|
||||
-o-background-size: cover;
|
||||
background-size: cover;
|
||||
overflow-y: scroll;
|
||||
height: 200vh;
|
||||
width: 100%; }
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.login-panel {
|
||||
position: absolute;
|
||||
width: 50%;
|
||||
left: 25%;
|
||||
top: 100px;
|
||||
box-shadow: 0 0 2.5rem 0 rgba(0, 0, 0, 0.25); }
|
||||
-webkit-box-shadow: 0 0 2.5rem 0 rgba(0, 0, 0, 0.25);
|
||||
box-shadow: 0 0 2.5rem 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
|
||||
.register-button {
|
||||
position: relative;
|
||||
margin-top: 2rem;
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
color: #848C90; }
|
||||
color: #848C90;
|
||||
}
|
||||
|
||||
.register-button img {
|
||||
width: 2rem; }
|
||||
width: 2rem;
|
||||
}
|
||||
|
||||
.register-button h3 {
|
||||
position: absolute;
|
||||
left: 3rem;
|
||||
top: 0;
|
||||
margin: 0; }
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.register-button p {
|
||||
position: absolute;
|
||||
left: 3rem;
|
||||
bottom: 0;
|
||||
margin: 0;
|
||||
font-size: 0.875rem;
|
||||
font-weight: 300; }
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.input-wrapper {
|
||||
position: relative;
|
||||
height: 4rem; }
|
||||
height: 4rem;
|
||||
}
|
||||
|
||||
.input-wrapper .input-icon {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0.5rem;
|
||||
display: block;
|
||||
width: 1.5rem; }
|
||||
width: 1.5rem;
|
||||
}
|
||||
|
||||
.input-wrapper .input-floating-label {
|
||||
position: absolute;
|
||||
left: 3rem;
|
||||
right: 0;
|
||||
display: block; }
|
||||
display: block;
|
||||
}
|
||||
|
||||
.input-wrapper .input-floating-label input, .input-wrapper .input-floating-label select {
|
||||
padding: 0.25rem 0;
|
||||
background: none;
|
||||
border: none;
|
||||
display: block;
|
||||
width: 100%;
|
||||
border-bottom: 2px solid #C4C4C4; }
|
||||
border-bottom: 2px solid #C4C4C4;
|
||||
}
|
||||
|
||||
.input-wrapper .input-floating-label input:focus, .input-wrapper .input-floating-label select:focus {
|
||||
outline: none; }
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.input-wrapper .input-floating-label label {
|
||||
font-size: 10px;
|
||||
color: #46535B; }
|
||||
color: #46535B;
|
||||
}
|
||||
|
||||
.input-wrapper .input-floating-label label.input-hint {
|
||||
color: #848C90;
|
||||
}
|
||||
|
||||
.back-to-login {
|
||||
position: relative;
|
||||
height: 2rem; }
|
||||
height: 2rem;
|
||||
}
|
||||
|
||||
.back-to-login img {
|
||||
position: absolute;
|
||||
top: 0.25rem;
|
||||
left: 0.5rem; }
|
||||
left: 0.5rem;
|
||||
}
|
||||
|
||||
.back-to-login a {
|
||||
position: relative;
|
||||
top: 0;
|
||||
left: 3rem;
|
||||
text-decoration: none;
|
||||
color: #46535B; }
|
||||
|
||||
color: #46535B;
|
||||
}
|
||||
/*# sourceMappingURL=login-styles.css.map */
|
||||
@@ -1,7 +1,11 @@
|
||||
{
|
||||
"version": 3,
|
||||
"mappings": "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",
|
||||
"sources": ["slovenscina-theme.scss","slovenscina-elements.scss","login-styles.scss"],
|
||||
"mappings": "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",
|
||||
"sources": [
|
||||
"login-styles.scss",
|
||||
"slovenscina-elements.scss",
|
||||
"slovenscina-theme.scss"
|
||||
],
|
||||
"names": [],
|
||||
"file": "login-styles.css"
|
||||
}
|
||||
@@ -77,6 +77,9 @@
|
||||
font-size: 10px;
|
||||
color: $black;
|
||||
}
|
||||
label.input-hint {
|
||||
color:$grey-dark;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,19 +2,22 @@
|
||||
html {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-size: 16px;
|
||||
color: #46535B; }
|
||||
color: #46535B;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 16px;
|
||||
padding: 0;
|
||||
margin: 0; }
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 30px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 35px;
|
||||
color: #006CB7; }
|
||||
color: #006CB7;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 18px;
|
||||
@@ -22,16 +25,19 @@ h2 {
|
||||
font-weight: 300;
|
||||
line-height: 21px;
|
||||
text-transform: uppercase;
|
||||
color: #006CB7; }
|
||||
color: #006CB7;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 18px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 21px; }
|
||||
line-height: 21px;
|
||||
}
|
||||
|
||||
em {
|
||||
font-weight: 300; }
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.btn {
|
||||
border: none;
|
||||
@@ -43,18 +49,26 @@ em {
|
||||
font-size: 1.125rem;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
transition: opacity 0.3s ease-out; }
|
||||
-webkit-transition: opacity 0.3s ease-out;
|
||||
transition: opacity 0.3s ease-out;
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
opacity: 0.8; }
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.btn:disabled {
|
||||
cursor: default;
|
||||
opacity: 0.5; }
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.panel {
|
||||
background: #F5F5F5;
|
||||
padding: 40px 60px;
|
||||
border-radius: 20px;
|
||||
max-width: 30rem; }
|
||||
max-width: 30rem;
|
||||
}
|
||||
|
||||
.panel .panel-logo {
|
||||
position: absolute;
|
||||
top: -60px;
|
||||
@@ -66,13 +80,15 @@ em {
|
||||
padding: 20px 30px;
|
||||
width: 100px;
|
||||
border-radius: 100%;
|
||||
text-align: center; }
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.line {
|
||||
background: #C4C4C4;
|
||||
height: 2px;
|
||||
width: 200px;
|
||||
margin: auto; }
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.a-right {
|
||||
display: block;
|
||||
@@ -80,36 +96,58 @@ em {
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
color: #006CB7;
|
||||
text-transform: uppercase; }
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.alert {
|
||||
position: relative;
|
||||
color: #8D3D3D;
|
||||
margin-bottom: 2rem; }
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.alert.alert-success {
|
||||
color: #88B52F;
|
||||
}
|
||||
|
||||
.alert img {
|
||||
position: relative;
|
||||
top: 0.25rem;
|
||||
width: 1.8rem; }
|
||||
width: 1.8rem;
|
||||
}
|
||||
|
||||
.alert p {
|
||||
position: absolute;
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-webkit-box-pack: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
height: 2rem;
|
||||
left: 3rem;
|
||||
top: 0;
|
||||
margin: 0;
|
||||
text-transform: uppercase; }
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.submit-alert {
|
||||
background: white;
|
||||
border: 2px solid #B7DB70;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
border-radius: 8px; }
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.submit-alert .btn {
|
||||
margin-top: 0.5rem;
|
||||
background: #88B52F;
|
||||
border-radius: 4px; }
|
||||
|
||||
border-radius: 4px;
|
||||
}
|
||||
/*# sourceMappingURL=manage-institution.css.map */
|
||||
@@ -1,7 +1,11 @@
|
||||
{
|
||||
"version": 3,
|
||||
"mappings": "AAAQ,+IAAuI;AAa/I,IAAK;EACH,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAC,IAAI;EACd,KAAK,EAZC,OAAO;;AAef,IAAK;EACH,SAAS,EAAC,IAAI;EACd,OAAO,EAAC,CAAC;EACT,MAAM,EAAC,CAAC;;ACpBV,EAAG;EACD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;EACjB,KAAK,EDLA,OAAO;;ACOd,EAAG;EACD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,SAAS;EACzB,KAAK,EDbA,OAAO;;ACgBd,EAAG;EACD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;;AAGnB,EAAG;EACD,WAAW,EAAE,GAAG;;AAGlB,IAAK;EACH,MAAM,EAAC,IAAI;EACX,WAAW,EAAE,MAAM;EACnB,OAAO,EAAE,QAAQ;EACjB,KAAK,EAAC,KAAK;EACX,UAAU,EDhCL,OAAO;ECiCZ,aAAa,EAAE,IAAI;EACnB,SAAS,EAAE,QAAQ;EACnB,WAAW,EAAE,GAAG;EAChB,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,qBAAqB;EACjC,UAAQ;IACN,OAAO,EAAE,GAAG;EAEd,aAAW;IACT,MAAM,EAAC,OAAO;IACd,OAAO,EAAC,GAAG;;AAMf,MAAO;EACL,UAAU,ED5CJ,OAAO;EC6Cb,OAAO,EAAE,SAAS;EAClB,aAAa,EAAE,IAAI;EACnB,SAAS,EAAC,KAAK;EACf,kBAAY;IACV,QAAQ,EAAC,QAAQ;IACjB,GAAG,EAAE,KAAK;IACV,IAAI,EAAC,CAAC;IACN,KAAK,EAAC,CAAC;IACP,OAAO,EAAC,KAAK;IACb,MAAM,EAAC,IAAI;IACX,UAAU,EDvDN,OAAO;ICwDX,OAAO,EAAC,SAAS;IACjB,KAAK,EAAE,KAAK;IACZ,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,MAAM;;AAKtB,KAAM;EACJ,UAAU,EDpEL,OAAO;ECqEZ,MAAM,EAAC,GAAG;EACV,KAAK,EAAC,KAAK;EACX,MAAM,EAAE,IAAI;;AAGd,QAAS;EACP,OAAO,EAAC,KAAK;EACb,UAAU,EAAE,KAAK;EACjB,SAAS,EAAC,IAAI;EACd,eAAe,EAAE,IAAI;EACrB,KAAK,EDlFA,OAAO;ECmFZ,cAAc,EAAE,SAAS;;AAG3B,MAAO;EACL,QAAQ,EAAC,QAAQ;EACjB,KAAK,EDvFD,OAAO;ECwFX,aAAa,EAAC,IAAI;EAClB,UAAI;IACF,QAAQ,EAAC,QAAQ;IACjB,GAAG,EAAC,OAAO;IACX,KAAK,EAAC,MAAM;EAEd,QAAE;IACA,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,IAAI;IACb,cAAc,EAAE,MAAM;IACtB,eAAe,EAAE,MAAM;IACvB,WAAW,EAAE,MAAM;IACnB,MAAM,EAAC,IAAI;IACX,IAAI,EAAC,IAAI;IACT,GAAG,EAAE,CAAC;IACN,MAAM,EAAC,CAAC;IACR,cAAc,EAAE,SAAS;;AAI7B,aAAc;EACZ,UAAU,EAAC,KAAK;EAChB,MAAM,EAAE,iBAAsB;EAC9B,UAAU,EAAE,UAAU;EACtB,aAAa,EAAE,GAAG;EAClB,kBAAK;IACH,UAAU,EAAC,MAAM;IACjB,UAAU,ED5GN,OAAO;IC6GX,aAAa,EAAE,GAAG",
|
||||
"sources": ["slovenscina-theme.scss","slovenscina-elements.scss"],
|
||||
"mappings": "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",
|
||||
"sources": [
|
||||
"manage-institution.scss",
|
||||
"slovenscina-elements.scss",
|
||||
"slovenscina-theme.scss"
|
||||
],
|
||||
"names": [],
|
||||
"file": "manage-institution.css"
|
||||
}
|
||||
@@ -1,31 +1,42 @@
|
||||
.hidden-sm {
|
||||
display: none; }
|
||||
display: none;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 90%;
|
||||
margin-left: auto;
|
||||
margin-right: auto; }
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 33.75em) {
|
||||
.container {
|
||||
width: 80%; } }
|
||||
width: 80%;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 60em) {
|
||||
.container {
|
||||
width: 90%;
|
||||
max-width: 80rem; } }
|
||||
max-width: 80rem;
|
||||
}
|
||||
}
|
||||
|
||||
.row {
|
||||
position: relative;
|
||||
width: 100%; }
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.row [class^="col"] {
|
||||
float: left;
|
||||
margin: 0.5rem 2%;
|
||||
min-height: 0.125rem; }
|
||||
min-height: 0.125rem;
|
||||
}
|
||||
|
||||
.row::after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both; }
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.col-1,
|
||||
.col-2,
|
||||
@@ -39,82 +50,96 @@
|
||||
.col-10,
|
||||
.col-11,
|
||||
.col-12 {
|
||||
width: 96%; }
|
||||
width: 96%;
|
||||
}
|
||||
|
||||
.col-1-sm {
|
||||
width: 4.3333333333%; }
|
||||
width: 4.33333%;
|
||||
}
|
||||
|
||||
.col-2-sm {
|
||||
width: 12.6666666667%; }
|
||||
width: 12.66667%;
|
||||
}
|
||||
|
||||
.col-3-sm {
|
||||
width: 21%; }
|
||||
width: 21%;
|
||||
}
|
||||
|
||||
.col-4-sm {
|
||||
width: 29.3333333333%; }
|
||||
width: 29.33333%;
|
||||
}
|
||||
|
||||
.col-5-sm {
|
||||
width: 37.6666666667%; }
|
||||
width: 37.66667%;
|
||||
}
|
||||
|
||||
.col-6-sm {
|
||||
width: 46%; }
|
||||
width: 46%;
|
||||
}
|
||||
|
||||
.col-7-sm {
|
||||
width: 54.3333333333%; }
|
||||
width: 54.33333%;
|
||||
}
|
||||
|
||||
.col-8-sm {
|
||||
width: 62.6666666667%; }
|
||||
width: 62.66667%;
|
||||
}
|
||||
|
||||
.col-9-sm {
|
||||
width: 71%; }
|
||||
width: 71%;
|
||||
}
|
||||
|
||||
.col-10-sm {
|
||||
width: 79.3333333333%; }
|
||||
width: 79.33333%;
|
||||
}
|
||||
|
||||
.col-11-sm {
|
||||
width: 87.6666666667%; }
|
||||
width: 87.66667%;
|
||||
}
|
||||
|
||||
.col-12-sm {
|
||||
width: 96%; }
|
||||
width: 96%;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 45em) {
|
||||
.col-1 {
|
||||
width: 4.3333333333%; }
|
||||
|
||||
width: 4.33333%;
|
||||
}
|
||||
.col-2 {
|
||||
width: 12.6666666667%; }
|
||||
|
||||
width: 12.66667%;
|
||||
}
|
||||
.col-3 {
|
||||
width: 21%; }
|
||||
|
||||
width: 21%;
|
||||
}
|
||||
.col-4 {
|
||||
width: 29.3333333333%; }
|
||||
|
||||
width: 29.33333%;
|
||||
}
|
||||
.col-5 {
|
||||
width: 37.6666666667%; }
|
||||
|
||||
width: 37.66667%;
|
||||
}
|
||||
.col-6 {
|
||||
width: 46%; }
|
||||
|
||||
width: 46%;
|
||||
}
|
||||
.col-7 {
|
||||
width: 54.3333333333%; }
|
||||
|
||||
width: 54.33333%;
|
||||
}
|
||||
.col-8 {
|
||||
width: 62.6666666667%; }
|
||||
|
||||
width: 62.66667%;
|
||||
}
|
||||
.col-9 {
|
||||
width: 71%; }
|
||||
|
||||
width: 71%;
|
||||
}
|
||||
.col-10 {
|
||||
width: 79.3333333333%; }
|
||||
|
||||
width: 79.33333%;
|
||||
}
|
||||
.col-11 {
|
||||
width: 87.6666666667%; }
|
||||
|
||||
width: 87.66667%;
|
||||
}
|
||||
.col-12 {
|
||||
width: 96%; }
|
||||
|
||||
width: 96%;
|
||||
}
|
||||
.hidden-sm {
|
||||
display: block; } }
|
||||
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
/*# sourceMappingURL=simple-grid.css.map */
|
||||
@@ -1,7 +1,9 @@
|
||||
{
|
||||
"version": 3,
|
||||
"mappings": "AACA,UAAW;EACT,OAAO,EAAE,IAAI;;AAWf,UAAW;EACT,KAAK,EAAE,GAAG;EACV,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,IAAI;EAElB,2CAAsD;IALxD,UAAW;MAMP,KAAK,EAAE,GAAG;EAGZ,wCAAsD;IATxD,UAAW;MAUP,KAAK,EAAE,GAAG;MACV,SAAS,EAAE,KAAK;;AAIpB,IAAK;EACH,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI;;AAGb,mBAAoB;EAClB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,SAAS;EACjB,UAAU,EAAE,QAAQ;;AAGtB,WAAY;EACV,OAAO,EAAE,EAAE;EACX,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;;AAGb;;;;;;;;;;;OAWQ;EACN,KAAK,EAlDC,GAAG;;AAqDX,SAAU;EAAE,KAAK,EAAC,aAAmC;;AACrD,SAAU;EAAE,KAAK,EAAE,cAAkC;;AACrD,SAAU;EAAE,KAAK,EAAE,GAAiC;;AACpD,SAAU;EAAE,KAAK,EAAE,cAAiC;;AACpD,SAAU;EAAE,KAAK,EAAE,cAAwC;;AAC3D,SAAU;EAAE,KAAK,EAAE,GAAiC;;AACpD,SAAU;EAAE,KAAK,EAAE,cAAwC;;AAC3D,SAAU;EAAE,KAAK,EAAE,cAAwC;;AAC3D,SAAU;EAAE,KAAK,EAAE,GAAwC;;AAC3D,UAAW;EAAE,KAAK,EAAE,cAAyC;;AAC7D,UAAW;EAAE,KAAK,EAAE,cAAyC;;AAC7D,UAAW;EAAE,KAAK,EAhEV,GAAG;;AAkEX,wCAAoD;EAClD,MAAO;IAAE,KAAK,EAAC,aAAmC;;EAClD,MAAO;IAAE,KAAK,EAAE,cAAkC;;EAClD,MAAO;IAAE,KAAK,EAAE,GAAiC;;EACjD,MAAO;IAAE,KAAK,EAAE,cAAiC;;EACjD,MAAO;IAAE,KAAK,EAAE,cAAwC;;EACxD,MAAO;IAAE,KAAK,EAAE,GAAiC;;EACjD,MAAO;IAAE,KAAK,EAAE,cAAwC;;EACxD,MAAO;IAAE,KAAK,EAAE,cAAwC;;EACxD,MAAO;IAAE,KAAK,EAAE,GAAwC;;EACxD,OAAQ;IAAE,KAAK,EAAE,cAAyC;;EAC1D,OAAQ;IAAE,KAAK,EAAE,cAAyC;;EAC1D,OAAQ;IAAE,KAAK,EA9ET,GAAG;;EAgFT,UAAW;IACT,OAAO,EAAE,KAAK",
|
||||
"sources": ["simple-grid.scss"],
|
||||
"mappings": "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",
|
||||
"sources": [
|
||||
"simple-grid.scss"
|
||||
],
|
||||
"names": [],
|
||||
"file": "simple-grid.css"
|
||||
}
|
||||
192
static/css/slovenscina-admin.css
Normal file
192
static/css/slovenscina-admin.css
Normal file
@@ -0,0 +1,192 @@
|
||||
@import url(https://fonts.googleapis.com/css?family=Roboto:400,400italic,500,500italic,700,700italic,900,900italic,300italic,300,100italic,100);
|
||||
html {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-size: 16px;
|
||||
color: #46535B;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 16px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 30px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 35px;
|
||||
color: #006CB7;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 18px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 21px;
|
||||
text-transform: uppercase;
|
||||
color: #006CB7;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 18px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 21px;
|
||||
}
|
||||
|
||||
em {
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.btn {
|
||||
border: none;
|
||||
line-height: 2.5rem;
|
||||
padding: 0 2.5rem;
|
||||
color: white;
|
||||
background: #006CB7;
|
||||
border-radius: 20px;
|
||||
font-size: 1.125rem;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
-webkit-transition: opacity 0.3s ease-out;
|
||||
transition: opacity 0.3s ease-out;
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.btn:disabled {
|
||||
cursor: default;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.panel {
|
||||
background: #F5F5F5;
|
||||
padding: 40px 60px;
|
||||
border-radius: 20px;
|
||||
max-width: 30rem;
|
||||
}
|
||||
|
||||
.panel .panel-logo {
|
||||
position: absolute;
|
||||
top: -60px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
display: block;
|
||||
margin: auto;
|
||||
background: #F5F5F5;
|
||||
padding: 20px 30px;
|
||||
width: 100px;
|
||||
border-radius: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.line {
|
||||
background: #C4C4C4;
|
||||
height: 2px;
|
||||
width: 200px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.a-right {
|
||||
display: block;
|
||||
text-align: right;
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
color: #006CB7;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.alert {
|
||||
position: relative;
|
||||
color: #8D3D3D;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.alert.alert-success {
|
||||
color: #88B52F;
|
||||
}
|
||||
|
||||
.alert img {
|
||||
position: relative;
|
||||
top: 0.25rem;
|
||||
width: 1.8rem;
|
||||
}
|
||||
|
||||
.alert p {
|
||||
position: absolute;
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-webkit-box-pack: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
height: 2rem;
|
||||
left: 3rem;
|
||||
top: 0;
|
||||
margin: 0;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.submit-alert {
|
||||
background: white;
|
||||
border: 2px solid #B7DB70;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.submit-alert .btn {
|
||||
margin-top: 0.5rem;
|
||||
background: #88B52F;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.tableFixHead {
|
||||
overflow-y: scroll;
|
||||
max-height: 306px;
|
||||
}
|
||||
|
||||
.tableFixHead thead th {
|
||||
position: -webkit-sticky;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table th, table td {
|
||||
padding: 8px 16px;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
table th {
|
||||
background: #eee;
|
||||
}
|
||||
|
||||
table input[type=submit], table a {
|
||||
font-size: 0.8rem;
|
||||
background: none;
|
||||
outline: none;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
color: #006CB7;
|
||||
}
|
||||
|
||||
table input[type=submit]:hover, table a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
/*# sourceMappingURL=slovenscina-admin.css.map */
|
||||
11
static/css/slovenscina-admin.css.map
Normal file
11
static/css/slovenscina-admin.css.map
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"version": 3,
|
||||
"mappings": "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",
|
||||
"sources": [
|
||||
"slovenscina-admin.scss",
|
||||
"slovenscina-elements.scss",
|
||||
"slovenscina-theme.scss"
|
||||
],
|
||||
"names": [],
|
||||
"file": "slovenscina-admin.css"
|
||||
}
|
||||
33
static/css/slovenscina-admin.scss
Normal file
33
static/css/slovenscina-admin.scss
Normal file
@@ -0,0 +1,33 @@
|
||||
@import "slovenscina-elements.scss";
|
||||
.tableFixHead {
|
||||
overflow-y: scroll;
|
||||
max-height: 306px;
|
||||
}
|
||||
.tableFixHead thead th {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
th,td {
|
||||
padding: 8px 16px;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
th {
|
||||
background: #eee;
|
||||
}
|
||||
input[type=submit],a {
|
||||
font-size: 0.8rem;
|
||||
background:none;
|
||||
outline:none;
|
||||
border:none;
|
||||
cursor:pointer;
|
||||
text-decoration: none;
|
||||
color:$blue;
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,153 @@
|
||||
@import url(https://fonts.googleapis.com/css?family=Roboto:400,400italic,500,500italic,700,700italic,900,900italic,300italic,300,100italic,100);
|
||||
html {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
color: #46535B; }
|
||||
font-size: 16px;
|
||||
color: #46535B;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 16px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 30px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 35px;
|
||||
color: #006CB7;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 18px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 21px;
|
||||
text-transform: uppercase;
|
||||
color: #006CB7;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 18px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 21px;
|
||||
}
|
||||
|
||||
em {
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.btn {
|
||||
border: none;
|
||||
line-height: 2.5rem;
|
||||
padding: 0 2.5rem;
|
||||
color: white;
|
||||
background: #006CB7;
|
||||
border-radius: 20px;
|
||||
font-size: 1.125rem;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
-webkit-transition: opacity 0.3s ease-out;
|
||||
transition: opacity 0.3s ease-out;
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.btn:disabled {
|
||||
cursor: default;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.panel {
|
||||
background: #F5F5F5; }
|
||||
background: #F5F5F5;
|
||||
padding: 40px 60px;
|
||||
border-radius: 20px;
|
||||
max-width: 30rem;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=slovenscina-elments.css.map */
|
||||
.panel .panel-logo {
|
||||
position: absolute;
|
||||
top: -60px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
display: block;
|
||||
margin: auto;
|
||||
background: #F5F5F5;
|
||||
padding: 20px 30px;
|
||||
width: 100px;
|
||||
border-radius: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.line {
|
||||
background: #C4C4C4;
|
||||
height: 2px;
|
||||
width: 200px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.a-right {
|
||||
display: block;
|
||||
text-align: right;
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
color: #006CB7;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.alert {
|
||||
position: relative;
|
||||
color: #8D3D3D;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.alert.alert-success {
|
||||
color: #88B52F;
|
||||
}
|
||||
|
||||
.alert img {
|
||||
position: relative;
|
||||
top: 0.25rem;
|
||||
width: 1.8rem;
|
||||
}
|
||||
|
||||
.alert p {
|
||||
position: absolute;
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-webkit-box-pack: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
height: 2rem;
|
||||
left: 3rem;
|
||||
top: 0;
|
||||
margin: 0;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.submit-alert {
|
||||
background: white;
|
||||
border: 2px solid #B7DB70;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.submit-alert .btn {
|
||||
margin-top: 0.5rem;
|
||||
background: #88B52F;
|
||||
border-radius: 4px;
|
||||
}
|
||||
/*# sourceMappingURL=slovenscina-elements.css.map */
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
"version": 3,
|
||||
"mappings": "AAMA,IAAK;EACH,WAAW,EAAE,oBAAoB;EACjC,KAAK,EANC,OAAO;;ACAf,MAAO;EACL,UAAU,EDCJ,OAAO",
|
||||
"sources": ["slovenscina-theme.scss","slovenscina-elments.scss"],
|
||||
"mappings": "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",
|
||||
"sources": [
|
||||
"slovenscina-elements.scss",
|
||||
"slovenscina-theme.scss"
|
||||
],
|
||||
"names": [],
|
||||
"file": "slovenscina-elments.css"
|
||||
"file": "slovenscina-elements.css"
|
||||
}
|
||||
@@ -90,6 +90,9 @@ em {
|
||||
position:relative;
|
||||
color:$red;
|
||||
margin-bottom:2rem;
|
||||
&.alert-success {
|
||||
color:$green;
|
||||
}
|
||||
img {
|
||||
position:relative;
|
||||
top:0.25rem;
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
@import url(https://fonts.googleapis.com/css?family=Roboto:400,400italic,500,500italic,700,700italic,900,900italic,300italic,300,100italic,100);
|
||||
html {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
color: #46535B; }
|
||||
font-size: 16px;
|
||||
color: #46535B;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 16px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
/*# sourceMappingURL=slovenscina-theme.css.map */
|
||||
@@ -1,7 +1,9 @@
|
||||
{
|
||||
"version": 3,
|
||||
"mappings": "AAMA,IAAK;EACH,WAAW,EAAE,oBAAoB;EACjC,KAAK,EANC,OAAO",
|
||||
"sources": ["slovenscina-theme.scss"],
|
||||
"mappings": "AAAA,OAAO,CAAC,uIAAI;AAaZ,AAAA,IAAI,CAAC;EACH,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAC,IAAI;EACd,KAAK,EAZC,OAAO;CAad;;AAED,AAAA,IAAI,CAAC;EACH,SAAS,EAAC,IAAI;EACd,OAAO,EAAC,CAAC;EACT,MAAM,EAAC,CAAC;CACT",
|
||||
"sources": [
|
||||
"slovenscina-theme.scss"
|
||||
],
|
||||
"names": [],
|
||||
"file": "slovenscina-theme.css"
|
||||
}
|
||||
@@ -1,17 +1,22 @@
|
||||
.text-center {
|
||||
text-align: center; }
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.m-b-1 {
|
||||
margin-bottom: 1rem; }
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.m-b-2 {
|
||||
margin-bottom: 2rem; }
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.m-b-3 {
|
||||
margin-bottom: 3rem; }
|
||||
margin-bottom: 3rem;
|
||||
}
|
||||
|
||||
.set-open-transition {
|
||||
-webkit-transition: max-height 0.3s ease-out;
|
||||
transition: max-height 0.3s ease-out;
|
||||
overflow: hidden; }
|
||||
|
||||
overflow: hidden;
|
||||
}
|
||||
/*# sourceMappingURL=utils.css.map */
|
||||
@@ -1,7 +1,9 @@
|
||||
{
|
||||
"version": 3,
|
||||
"mappings": "AAAA,YAAa;EACX,UAAU,EAAE,MAAM;;AAGpB,MAAO;EACL,aAAa,EAAC,IAAI;;AAEpB,MAAO;EACL,aAAa,EAAC,IAAI;;AAEpB,MAAO;EACL,aAAa,EAAC,IAAI;;AAGpB,oBAAqB;EACnB,UAAU,EAAE,wBAAwB;EACpC,QAAQ,EAAE,MAAM",
|
||||
"sources": ["utils.scss"],
|
||||
"mappings": "AAAA,AAAA,YAAY,CAAC;EACX,UAAU,EAAE,MAAM;CACnB;;AAED,AAAA,MAAM,CAAC;EACL,aAAa,EAAC,IAAI;CACnB;;AACD,AAAA,MAAM,CAAC;EACL,aAAa,EAAC,IAAI;CACnB;;AACD,AAAA,MAAM,CAAC;EACL,aAAa,EAAC,IAAI;CACnB;;AAED,AAAA,oBAAoB,CAAC;EACnB,UAAU,EAAE,wBAAwB;EACpC,QAAQ,EAAE,MAAM;CACjB",
|
||||
"sources": [
|
||||
"utils.scss"
|
||||
],
|
||||
"names": [],
|
||||
"file": "utils.css"
|
||||
}
|
||||
BIN
static/favicon.ico
Normal file
BIN
static/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
10
static/favicon.svg
Normal file
10
static/favicon.svg
Normal file
@@ -0,0 +1,10 @@
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<rect fill="#006CB7" width="512" height="512"/>
|
||||
<path fill="#fff" d="M409.26,145.32V69.5l-46.06,55.16c-5.06-1.88-10.5-3.99-16.1-5.71c-16.12-4.52-32.56-7.82-49.17-9.86
|
||||
c-5.37-0.47-11.2-0.47-17.04-0.47c-64.88,0-87.21,25.27-87.21,51.25c0,29.89,32.44,46.95,107.28,66.27
|
||||
c89.47,22.07,117.94,63.93,117.94,114.79c0.04,6.77-0.59,13.54-1.87,20.19c41.39-26.92,66.98-64.24,66.98-105.48
|
||||
c0-43.74-28.79-83.02-74.61-110.33"/>
|
||||
<path fill="#fff" d="M241.92,278.65c-84.49-19.95-124.47-61.66-124.47-112.6c-0.13-10.68,1.69-21.29,5.37-31.3
|
||||
c-57.41,27.07-94.76,71.13-94.76,120.89c0,42.02,26.61,79.89,69.32,107.04v79.81l47.38-56.73c23.89,8.63,48.73,14.33,73.98,16.98
|
||||
c8.56,0.7,17.35,1.17,26.53,1.17c65.66,0,96.39-23.47,96.39-58.45c0-29.26-28.32-50-99.81-66.82"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 852 B |
3
static/image/chevron-down.svg
Normal file
3
static/image/chevron-down.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="14" height="8" viewBox="0 0 14 8" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.7071 0.292893C14.0976 0.683418 14.0976 1.31658 13.7071 1.70711L7.70711 7.70711C7.31658 8.09763 6.68342 8.09763 6.29289 7.70711L0.292893 1.70711C-0.0976315 1.31658 -0.0976315 0.683417 0.292893 0.292893C0.683417 -0.0976317 1.31658 -0.0976317 1.70711 0.292893L7 5.58579L12.2929 0.292893C12.6834 -0.0976312 13.3166 -0.0976311 13.7071 0.292893Z" fill="#848C91"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 516 B |
5
static/image/menu.svg
Normal file
5
static/image/menu.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg width="7" height="27" viewBox="0 0 7 27" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="3.5" cy="3.5" r="2.5" stroke="#F5F5F5" stroke-width="2"/>
|
||||
<circle cx="3.5" cy="13.5" r="2.5" stroke="#F5F5F5" stroke-width="2"/>
|
||||
<circle cx="3.5" cy="23.5" r="2.5" stroke="#F5F5F5" stroke-width="2"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 325 B |
5
static/image/success.svg
Normal file
5
static/image/success.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M15 29.6668C6.86671 29.6668 0.333374 23.1335 0.333374 15.0002C0.333374 6.86683 6.86671 0.333496 15 0.333496C23.1334 0.333496 29.6667 6.86683 29.6667 15.0002C29.6667 23.1335 23.1334 29.6668 15 29.6668ZM15 3.00016C8.33337 3.00016 3.00004 8.3335 3.00004 15.0002C3.00004 21.6668 8.33337 27.0002 15 27.0002C21.6667 27.0002 27 21.6668 27 15.0002C27 8.3335 21.6667 3.00016 15 3.00016Z" fill="#88B52F"/>
|
||||
<path d="M15 16.3335C14.2 16.3335 13.6667 15.8002 13.6667 15.0002V9.66683C13.6667 8.86683 14.2 8.3335 15 8.3335C15.8 8.3335 16.3334 8.86683 16.3334 9.66683V15.0002C16.3334 15.8002 15.8 16.3335 15 16.3335Z" fill="#88B52F"/>
|
||||
<path d="M15 21.6668C14.6 21.6668 14.3334 21.5335 14.0667 21.2668C13.8 21.0002 13.6667 20.7335 13.6667 20.3335C13.6667 20.2002 13.6667 19.9335 13.8 19.8002C13.9334 19.6668 13.9334 19.5335 14.0667 19.4002C14.4667 19.0002 15 18.8668 15.5334 19.1335C15.6667 19.1335 15.6667 19.1335 15.8 19.2668C15.8 19.2668 15.9334 19.4002 16.0667 19.4002C16.2 19.5335 16.3334 19.6668 16.3334 19.8002C16.3334 19.9335 16.3334 20.2002 16.3334 20.3335C16.3334 20.4668 16.3334 20.7335 16.2 20.8668C16.0667 21.0002 16.0667 21.1335 15.9334 21.2668C15.6667 21.5335 15.4 21.6668 15 21.6668Z" fill="#88B52F"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
6
static/image/trash.svg
Normal file
6
static/image/trash.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg width="14" height="15" viewBox="0 0 14 15" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.333252 3.49984C0.333252 3.13165 0.631729 2.83317 0.999919 2.83317H12.9999C13.3681 2.83317 13.6666 3.13165 13.6666 3.49984C13.6666 3.86803 13.3681 4.1665 12.9999 4.1665H0.999919C0.631729 4.1665 0.333252 3.86803 0.333252 3.49984Z" fill="#848C91"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.66659 1.49984C5.48977 1.49984 5.32021 1.57007 5.19518 1.6951C5.07016 1.82012 4.99992 1.98969 4.99992 2.1665V2.83317H8.99992V2.1665C8.99992 1.98969 8.92968 1.82012 8.80466 1.6951C8.67963 1.57007 8.51006 1.49984 8.33325 1.49984H5.66659ZM10.3333 2.83317V2.1665C10.3333 1.63607 10.1225 1.12736 9.74747 0.75229C9.37239 0.377218 8.86369 0.166504 8.33325 0.166504H5.66659C5.13615 0.166504 4.62744 0.377218 4.25237 0.75229C3.8773 1.12736 3.66659 1.63607 3.66659 2.1665V2.83317H2.33325C1.96506 2.83317 1.66659 3.13165 1.66659 3.49984V12.8332C1.66659 13.3636 1.8773 13.8723 2.25237 14.2474C2.62744 14.6225 3.13615 14.8332 3.66659 14.8332H10.3333C10.8637 14.8332 11.3724 14.6225 11.7475 14.2474C12.1225 13.8723 12.3333 13.3636 12.3333 12.8332V3.49984C12.3333 3.13165 12.0348 2.83317 11.6666 2.83317H10.3333ZM2.99992 4.1665V12.8332C2.99992 13.01 3.07016 13.1795 3.19518 13.3046C3.32021 13.4296 3.48977 13.4998 3.66659 13.4998H10.3333C10.5101 13.4998 10.6796 13.4296 10.8047 13.3046C10.9297 13.1795 10.9999 13.01 10.9999 12.8332V4.1665H2.99992Z" fill="#848C91"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.66659 6.1665C6.03478 6.1665 6.33325 6.46498 6.33325 6.83317V10.8332C6.33325 11.2014 6.03478 11.4998 5.66659 11.4998C5.2984 11.4998 4.99992 11.2014 4.99992 10.8332V6.83317C4.99992 6.46498 5.2984 6.1665 5.66659 6.1665Z" fill="#848C91"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.33325 6.1665C8.70144 6.1665 8.99992 6.46498 8.99992 6.83317V10.8332C8.99992 11.2014 8.70144 11.4998 8.33325 11.4998C7.96506 11.4998 7.66659 11.2014 7.66659 10.8332V6.83317C7.66659 6.46498 7.96506 6.1665 8.33325 6.1665Z" fill="#848C91"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
@@ -3,6 +3,12 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Admin panel - Šolar</title>
|
||||
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
|
||||
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/header.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/form.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/simple-grid.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/manage-institution.css" type="text/css">
|
||||
<style>
|
||||
.tableFixHead {
|
||||
overflow-y: scroll;
|
||||
@@ -30,7 +36,21 @@
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a href="../oddaja">Nazaj na oddajo</a>
|
||||
<header>
|
||||
<div class="logo"><a href="{{ROUTE_PREFIX}}/"><img src="{{ROUTE_PREFIX}}/static/image/logo-white.svg"/></a></div>
|
||||
<div class="menu-items">
|
||||
<a href="{{ROUTE_PREFIX}}/oddaja">Oddaja besedil</a>
|
||||
{% if is_institution_coordinator %}
|
||||
<a href="{{ROUTE_PREFIX}}/manage-institution">Upravljaj z ekipo</a>
|
||||
{% endif %}
|
||||
{% if is_admin %}
|
||||
<a href="{{ROUTE_PREFIX}}/admin">Administracijski meni</a>
|
||||
{% endif %}
|
||||
<a href="https://slovenscina.eu/" target="_blank">Več informacij o sodelovanju</a>
|
||||
<a href="{{ROUTE_PREFIX}}/logout">Odjava</a>
|
||||
</div>
|
||||
</header>
|
||||
<div class="container" style="margin-top:8rem;">
|
||||
{% with messages = get_flashed_messages() %}
|
||||
{% if messages %}
|
||||
<div style="background: blue;">
|
||||
@@ -65,7 +85,7 @@
|
||||
</table>
|
||||
</div>
|
||||
<h3>Dodaj uporabnika</h3>
|
||||
<form action="../adduser" method="post">
|
||||
<form action="{{ROUTE_PREFIX}}/adduser" method="post">
|
||||
<label for="name">Ime in priimek:</label><br>
|
||||
<input type="text" id="name" name="name"><br>
|
||||
<label for="email">Email:</label><br>
|
||||
@@ -75,7 +95,7 @@
|
||||
<input type="submit" value="Dodaj">
|
||||
</form>
|
||||
<h3>Spremeni email uporabnika</h3>
|
||||
<form action="../changeuseremail" method="post">
|
||||
<form action="{{ROUTE_PREFIX}}/changeuseremail" method="post">
|
||||
<label for="user-id">ID uporabnika:</label><br>
|
||||
<input type="text" id="user-id" name="user-id"><br>
|
||||
<label for="email">Nov email:</label><br>
|
||||
@@ -83,7 +103,7 @@
|
||||
<input type="submit" value="Spremeni">
|
||||
</form>
|
||||
<h3>Spremeni ime in priimek uporabnika</h3>
|
||||
<form action="../changeusername" method="post">
|
||||
<form action="{{ROUTE_PREFIX}}/changeusername" method="post">
|
||||
<label for="user-id">ID uporabnika:</label><br>
|
||||
<input type="text" id="user-id" name="user-id"><br>
|
||||
<label for="name">Ime in priimek:</label><br>
|
||||
@@ -91,13 +111,13 @@
|
||||
<input type="submit" value="Spremeni">
|
||||
</form>
|
||||
<h3>Odstrani uporabnika</h3>
|
||||
<form action="../deluser" method="post">
|
||||
<form action="{{ROUTE_PREFIX}}/deluser" method="post">
|
||||
<label for="user_id">ID uporabnika:</label><br>
|
||||
<input type="text" id="user_id" name="user_id"><br>
|
||||
<input type="submit" value="Odstrani">
|
||||
</form>
|
||||
<h3>Dodeli uporabnika instituciji</h3>
|
||||
<form action="../addusertoinstitution" method="post">
|
||||
<form action="{{ROUTE_PREFIX}}/addusertoinstitution" method="post">
|
||||
<label for="user_id">ID uporabnika:</label>
|
||||
<input type="text" id="user_id" name="user_id"><br>
|
||||
<label for="institution_id">ID institucije:</label>
|
||||
@@ -111,13 +131,13 @@
|
||||
<input type="submit" value="Dodeli">
|
||||
</form>
|
||||
<h3>Odstrani uporabnika iz institucije</h3>
|
||||
<form action="../deluserfrominstitution" method="post">
|
||||
<form action="{{ROUTE_PREFIX}}/deluserfrominstitution" method="post">
|
||||
<label for="user_id">ID uporabnika:</label>
|
||||
<input type="text" id="user_id" name="user_id"><br>
|
||||
<input type="submit" value="Odstrani">
|
||||
</form>
|
||||
<h3>Spremeni vlogo uporabniškega računa</h3>
|
||||
<form action="../changeuserrole" method="post">
|
||||
<form action="{{ROUTE_PREFIX}}/changeuserrole" method="post">
|
||||
<label for="user-id">ID uporabnika:</label>
|
||||
<input type="text" id="user-id" name="user-id"><br>
|
||||
<label for="role">Vloga:</label>
|
||||
@@ -137,6 +157,7 @@
|
||||
<th>Email</th>
|
||||
<th>Institucija</th>
|
||||
<th>Vloga v instituciji</th>
|
||||
<th>Akcije</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -147,20 +168,21 @@
|
||||
<td>{{item[0].email}}</td>
|
||||
<td>{{item[1].institution}}</td>
|
||||
<td>{{item[1].role}}</td>
|
||||
<td>
|
||||
<form action="{{ROUTE_PREFIX}}/activateuser" method="post">
|
||||
<input type="hidden" id="id" name="id" value="{{item[0].id}}">
|
||||
<input type="submit" value="Aktiviraj">
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
<h3>Aktiviraj uporabnika</h3>
|
||||
<form action="../activateuser" method="post">
|
||||
<label for="id">ID uporabnika:</label>
|
||||
<input type="text" id="id" name="id"><br>
|
||||
<input type="submit" value="Aktiviraj">
|
||||
</form>
|
||||
|
||||
<div> </div>
|
||||
<h2>Institucije</h2>
|
||||
<h3>Dodaj institucijo</h3>
|
||||
<form action="../addinstitution" method="post">
|
||||
<form action="{{ROUTE_PREFIX}}/addinstitution" method="post">
|
||||
<label for="name">Naziv:</label>
|
||||
<input type="text" id="name" name="name"><br>
|
||||
<label for="region">Regija:</label>
|
||||
@@ -200,7 +222,7 @@
|
||||
</table>
|
||||
</div>
|
||||
<h3>Združi instituciji</h3>
|
||||
<form action="../mergeinstitutions" method="post">
|
||||
<form action="{{ROUTE_PREFIX}}/mergeinstitutions" method="post">
|
||||
<label for="id-from">Institucijo z ID</label>
|
||||
<input type="text" id="id-from" name="id-from">
|
||||
<label for="id-to">združi v institucijo z ID</label>
|
||||
@@ -208,7 +230,7 @@
|
||||
<input type="submit" value="Združi">
|
||||
</form>
|
||||
<h3>Spremeni podatke institucije</h3>
|
||||
<form action="../changeinstitutiondata" method="post">
|
||||
<form action="{{ROUTE_PREFIX}}/changeinstitutiondata" method="post">
|
||||
<label for="id">ID institucije</label>
|
||||
<input type="text" id="id" name="id"><br>
|
||||
<label for="name">Nov naziv:</label>
|
||||
@@ -229,52 +251,8 @@
|
||||
</select>
|
||||
<input type="submit" value="Spremeni">
|
||||
</form>
|
||||
<h2>Zgodovina sodelovanja</h2>
|
||||
<div class="tableFixHead">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>ID uporabnika</th>
|
||||
<th>ID institucije</th>
|
||||
<th>Vloga</th>
|
||||
<th>Šolsko leto</th>
|
||||
<th>Besedilo značke</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for item in user_cooperation_history %}
|
||||
<tr>
|
||||
<td>{{item.id}}</td>
|
||||
<td>{{item.user}}</td>
|
||||
<td>{{item.institution}}</td>
|
||||
<td>{{item.role}}</td>
|
||||
<td>{{item.school_year}}</td>
|
||||
<td>{{item.badge_text}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
<h3>Dodaj vnos</h3>
|
||||
<form action="../addcooperationhistoryitem" method="post">
|
||||
<label for="user">ID uporabnika</label>
|
||||
<input type="text" id="user" name="user"><br>
|
||||
<label for="institution">ID institucije</label>
|
||||
<input type="text" id="institution" name="institution"><br>
|
||||
<label for="role">Vloga</label>
|
||||
<select name="role" id="role">
|
||||
<option value="coordinator">Koordinator/-ka</option>
|
||||
<option value="mentor">Mentor/-ica</option>
|
||||
<option value="other">Druga vloga</option>
|
||||
</select><br>
|
||||
<label for="school-year">Šolsko leto (npr. "2021/22")</label>
|
||||
<input type="text" id="school-year" name="school-year"><br>
|
||||
<label for="badge-text">Besedilo značke</label>
|
||||
<input type="text" id="badge-text" name="badge-text"><br>
|
||||
<input type="submit" value="Dodaj">
|
||||
</form>
|
||||
<h3>Odstrani vnos</h3>
|
||||
<form action="../delcooperationhistoryitem" method="post">
|
||||
<form action="{{ROUTE_PREFIX}}/delcooperationhistoryitem" method="post">
|
||||
<label for="entry-id">ID vnosa</label>
|
||||
<input type="text" id="entry-id" name="entry-id"><br>
|
||||
<input type="submit" value="Odstrani">
|
||||
@@ -320,7 +298,7 @@
|
||||
</table>
|
||||
</div>
|
||||
<h3>Posodobi podatke nalaganja</h3>
|
||||
<form action="../updateuploaditem" method="post">
|
||||
<form action="{{ROUTE_PREFIX}}/updateuploaditem" method="post">
|
||||
<label for="item-id">ID nalaganja</label>
|
||||
<input type="text" id="item-id" name="item-id"/><br>
|
||||
<label for="program">Program</label>
|
||||
@@ -389,6 +367,7 @@
|
||||
|
||||
<button id="button-submit" type="submit">Posodobi</button>
|
||||
</form>
|
||||
</div>
|
||||
<script>
|
||||
var selectPredmet = document.getElementById("predmet");
|
||||
var selectVrsta = document.getElementById("vrsta");
|
||||
|
||||
@@ -3,20 +3,22 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Portal ŠOLAR</title>
|
||||
<link rel="stylesheet" href="/static/css/login-styles.css" type="text/css">
|
||||
<link rel="stylesheet" href="/static/css/utils.css" type="text/css">
|
||||
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
|
||||
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/login-styles.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/utils.css" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="background">
|
||||
<div class="panel login-panel">
|
||||
<div class="panel-logo">
|
||||
<img src="/static/image/logo.svg" alt="logo"/>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/logo.svg" alt="logo"/>
|
||||
</div>
|
||||
<h1 class="m-b-3">Pozabljeno geslo - ŠOLAR</h1>
|
||||
<div>
|
||||
<form method="POST" action="../sendresetpass" class="m-b-2">
|
||||
<form method="POST" action="{{ROUTE_PREFIX}}/sendresetpass" class="m-b-2">
|
||||
<div class="input-wrapper">
|
||||
<img src="../static/image/user.svg" alt="user" class="input-icon"/>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/user.svg" alt="user" class="input-icon"/>
|
||||
<div class="input-floating-label">
|
||||
<label>E-mail</label>
|
||||
<input type="text" name="email">
|
||||
@@ -27,16 +29,16 @@
|
||||
</form>
|
||||
{% with messages = get_flashed_messages() %}
|
||||
{% if messages %}
|
||||
<div class="alert">
|
||||
<img src="../static/image/alert.svg" alt="alert"/>
|
||||
<div class="alert alert-success">
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/success.svg" alt="alert"/>
|
||||
<p>{{ messages[0] }}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
|
||||
<div class="back-to-login">
|
||||
<img src="/static/image/chevron-left.svg"/>
|
||||
<a href="/login">Nazaj na prijavo</a>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/chevron-left.svg"/>
|
||||
<a href="{{ROUTE_PREFIX}}/login">Nazaj na prijavo</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3,54 +3,63 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Portal ŠOLAR</title>
|
||||
<link rel="stylesheet" href="/static/css/login-styles.css" type="text/css">
|
||||
<link rel="stylesheet" href="/static/css/utils.css" type="text/css">
|
||||
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
|
||||
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/login-styles.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/utils.css" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="background">
|
||||
<div class="panel login-panel">
|
||||
<div class="panel-logo">
|
||||
<img src="/static/image/logo.svg" alt="logo"/>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/logo.svg" alt="logo"/>
|
||||
</div>
|
||||
<h2 class="text-center">Portal za oddajanje besedil</h2>
|
||||
<div class="line"></div>
|
||||
<h1 class="text-center">Korpus ŠOLAR</h1>
|
||||
|
||||
<div class="text-center m-b-3"><em>Zbiranje besedil za korpus Šolar poteka po naslednjem postopku, ki prinaša tudi točke za napredovanje.</em></div>
|
||||
<div class="text-center m-b-3"><em>Zbiranje besedil za korpus Šolar poteka po naslednjem postopku, ki prinaša tudi točke za napredovanje v pedagoški naziv.</em></div>
|
||||
|
||||
<h1 class="m-b-3">Prijava</h1>
|
||||
{% with messages = get_flashed_messages() %}
|
||||
{% if messages %}
|
||||
{% if "potrditev" in messages[0] or "uspešna" in messages[0] %}
|
||||
<div class="alert alert-success">
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/success.svg" alt="alert"/>
|
||||
<p>{{ messages[0] }}</p>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="alert">
|
||||
<img src="/static/image/alert.svg" alt="alert"/>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/alert.svg" alt="alert"/>
|
||||
<p>{{ messages[0] }}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
<div>
|
||||
<form method="POST" action="../login" class="m-b-2">
|
||||
<form method="POST" action="{{ROUTE_PREFIX}}/login" class="m-b-2">
|
||||
<div class="input-wrapper">
|
||||
<img src="../static/image/user.svg" alt="user" class="input-icon"/>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/user.svg" alt="user" class="input-icon"/>
|
||||
<div class="input-floating-label">
|
||||
<label>E-mail</label>
|
||||
<input type="text" name="email">
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-wrapper">
|
||||
<img src="../static/image/password.svg" alt="user" class="input-icon"/>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/password.svg" alt="user" class="input-icon"/>
|
||||
<div class="input-floating-label">
|
||||
<label>Geslo</label>
|
||||
<input type="password" name="password">
|
||||
</div>
|
||||
</div>
|
||||
<a href="../forgotpass" class="a-right m-b-1">Pozabljeno geslo</a>
|
||||
<a href="{{ROUTE_PREFIX}}/forgotpass" class="a-right m-b-1">Pozabljeno geslo</a>
|
||||
|
||||
<button class="btn" style="margin-left: 46px;">PRIJAVA</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<a href="../register" class="register-button">
|
||||
<img src="../static/image/register.svg" alt="register"/>
|
||||
<a href="{{ROUTE_PREFIX}}/register" class="register-button">
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/register.svg" alt="register"/>
|
||||
<h3>Registracija</h3>
|
||||
<p>Še nimate uporabniškega računa? Registrirajte se!</p>
|
||||
</a>
|
||||
|
||||
@@ -3,120 +3,126 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Upravljanje institucije - Šolar</title>
|
||||
<link rel="stylesheet" href="/static/css/header.css" type="text/css">
|
||||
<link rel="stylesheet" href="/static/css/form.css" type="text/css">
|
||||
<link rel="stylesheet" href="/static/css/simple-grid.css" type="text/css">
|
||||
<link rel="stylesheet" href="/static/css/manage-institution.css" type="text/css">
|
||||
<style>
|
||||
.tableFixHead {
|
||||
overflow-y: scroll;
|
||||
max-height: 306px;
|
||||
}
|
||||
.tableFixHead thead th {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
th,
|
||||
td {
|
||||
padding: 8px 16px;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
th {
|
||||
background: #eee;
|
||||
}
|
||||
h2 {
|
||||
color: blue;
|
||||
}
|
||||
</style>
|
||||
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
|
||||
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/header.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/form.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/simple-grid.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/slovenscina-admin.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/manage-institution.css" type="text/css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div class="logo"><a href="/"><img src="/static/image/logo-white.svg"/></a></div>
|
||||
<div class="logo"><a href="{{ROUTE_PREFIX}}/"><img src="{{ROUTE_PREFIX}}/static/image/logo-white.svg"/></a></div>
|
||||
<div class="menu-items">
|
||||
<a href="../logout">Odjava</a>
|
||||
<a href="{{ROUTE_PREFIX}}/oddaja">Oddaja besedil</a>
|
||||
{% if is_institution_coordinator %}
|
||||
<a href="../manage-institution">Upravljaj z institucijo</a>
|
||||
<a href="{{ROUTE_PREFIX}}/manage-institution">Upravljaj z ekipo</a>
|
||||
{% endif %}
|
||||
{% if is_admin %}
|
||||
<a href="../admin">Administracijski meni</a>
|
||||
<a href="{{ROUTE_PREFIX}}/admin">Administracijski meni</a>
|
||||
{% endif %}
|
||||
<a href="../oddaja">Oddaja</a>
|
||||
<a href="mailto:email@example.com">Pomoč</a>
|
||||
<a href="https://slovenscina.eu/" target="_blank">Več informacij o sodelovanju</a>
|
||||
<a href="{{ROUTE_PREFIX}}/logout">Odjava</a>
|
||||
</div>
|
||||
</header>
|
||||
<div class="container" style="margin-top:8rem;">
|
||||
<a href="../oddaja">Nazaj na oddajo</a>
|
||||
{% with messages = get_flashed_messages() %}
|
||||
{% if messages %}
|
||||
<div style="background: blue;">
|
||||
<div>
|
||||
{{ messages[0] }}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
<h3>Seznam vseh aktivnih uporabnikov</h3>
|
||||
<div class="tableFixHead">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Ime in priimek</th>
|
||||
<th>Email</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for item in users %}
|
||||
<tr>
|
||||
<td>{{item.id}}</td>
|
||||
<td>{{item.name}}</td>
|
||||
<td>{{item.email}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h1>{{institution.name}}</h1>
|
||||
<h3>Seznam uporabnikov v vaši instituciji</h3>
|
||||
<div class="tableFixHead">
|
||||
<table>
|
||||
<table class="tableFixHead">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Ime in priimek</th>
|
||||
<th>Email</th>
|
||||
<th>Vloga</th>
|
||||
<th>Akcije</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for item in institution_users %}
|
||||
<tr>
|
||||
<td>{{item.id}}</td>
|
||||
<td>{{item.name}}</td>
|
||||
<td>{{item.email}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
<td>
|
||||
<div>
|
||||
<a href="javascript:void(0);" onclick="toggleEditForm(this)" class="toggle-edit-role">Spremeni</a>
|
||||
{{role_map[item.id]}}
|
||||
</div>
|
||||
<br>
|
||||
<h3>Dodaj uporabnika instituciji</h3>
|
||||
<form action="../addusertoinstitution" method="post">
|
||||
<label for="user_id">ID uporabnika:</label>
|
||||
<input type="text" id="user_id" name="user_id"><br>
|
||||
<label for="role">Vloga v instituciji:</label>
|
||||
<select name="role" id="role">
|
||||
<form action="{{ROUTE_PREFIX}}/changeuserrole-institution" method="post" style="display:none;">
|
||||
<input type="hidden" id="user-id" name="user-id" value="{{item.id}}"/>
|
||||
<select class="role" name="role">
|
||||
<option value="coordinator">Koordinator/-ka</option>
|
||||
<option value="mentor">Mentor/-ica</option>
|
||||
<option value="other">Druga vloga</option>
|
||||
</select>
|
||||
<input type="submit" value="Dodeli">
|
||||
<input type="submit" value="Shrani"/>
|
||||
</form>
|
||||
<h3>Odstrani uporabnika iz institucije</h3>
|
||||
<form action="../deluserfrominstitution" method="post">
|
||||
<label for="user_id">ID uporabnika:</label>
|
||||
<input type="text" id="user_id" name="user_id"><br>
|
||||
<input type="submit" value="Odstrani">
|
||||
</td>
|
||||
<td>
|
||||
<form action="{{ROUTE_PREFIX}}/deluserfrominstitution" method="post">
|
||||
<input type="hidden" id="user_id" name="user_id" value="{{item.id}}">
|
||||
<input type="submit" value="Odstrani uporabnika">
|
||||
</form>
|
||||
<div> </div>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<form action="/institutionadduser" method="POST">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<h1>Dodaj uporabnika</h1>
|
||||
<div class="form-wrapper">
|
||||
<label for="regija">Ime</label>
|
||||
<input type="text" name="name" />
|
||||
</div>
|
||||
<div class="form-wrapper">
|
||||
<label for="regija">Email</label>
|
||||
<input type="text" name="email" />
|
||||
</div>
|
||||
<div class="form-wrapper">
|
||||
<label for="regija">Vloga</label>
|
||||
<select class="role" name="role">
|
||||
<option value="coordinator">Koordinator/-ka</option>
|
||||
<option value="mentor">Mentor/-ica</option>
|
||||
<option value="other">Druga vloga</option>
|
||||
</select>
|
||||
</div>
|
||||
<input type="submit" class="btn" value="Dodaj"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<script>
|
||||
var toggleEditForm = function(el) {
|
||||
var td = el.closest("td");
|
||||
el.closest("div").style.display = "none";
|
||||
td.querySelector("form").style.display = "block";
|
||||
};
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
</html>
|
||||
|
||||
@@ -3,36 +3,38 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Portal za oddajanje besedil</title>
|
||||
<link rel="stylesheet" href="/static/css/header.css" type="text/css">
|
||||
<link rel="stylesheet" href="/static/css/form.css" type="text/css">
|
||||
<link rel="stylesheet" href="/static/css/simple-grid.css" type="text/css">
|
||||
<link rel="stylesheet" href="/static/css/utils.css" type="text/css">
|
||||
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
|
||||
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/header.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/form.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/simple-grid.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/utils.css" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div class="logo"><a href="/"><img src="/static/image/logo-white.svg"/></a></div>
|
||||
<div class="logo"><a href="{{ROUTE_PREFIX}}/"><img src="{{ROUTE_PREFIX}}/static/image/logo-white.svg"/></a></div>
|
||||
<div class="menu-items">
|
||||
<a href="../logout">Odjava</a>
|
||||
{% if is_institution_coordinator %}
|
||||
<a href="../manage-institution">Upravljaj z institucijo</a>
|
||||
<a href="{{ROUTE_PREFIX}}/manage-institution">Upravljaj z ekipo</a>
|
||||
{% endif %}
|
||||
{% if is_admin %}
|
||||
<a href="../admin">Administracijski meni</a>
|
||||
<a href="{{ROUTE_PREFIX}}/admin">Administracijski meni</a>
|
||||
{% endif %}
|
||||
<a href="mailto:email@example.com">Pomoč</a>
|
||||
<a href="https://slovenscina.eu/" target="_blank">Več informacij o sodelovanju</a>
|
||||
<a href="{{ROUTE_PREFIX}}/logout">Odjava</a>
|
||||
</div>
|
||||
</header>
|
||||
<div class="container" style="margin-top:8rem;">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h1 class="title">Koprus SOLAR</h1>
|
||||
<p class="subtitle">Zbiranje besedil za korpus Šolar poteka po naslednjem postopku, ki prinaša tudi točke za napredovanje.</p>
|
||||
<h1 class="title">Korpus Šolar</h1>
|
||||
<p class="subtitle" style="width:60%">Prosimo, določite podatke o besedilih, ki jih želite oddati, in nato naložite besedila. Če oddajate besedila, ki so nastala v različnih razredih, se razlikujejo glede učiteljskih popravkov in podobno, jih oddajte v ločenih paketih.</p>
|
||||
|
||||
|
||||
<div class="tab-nav">
|
||||
<a href="/oddaja" class="active">Oddaja</a>
|
||||
<a href="/zgodovina">Zgodovina</a>
|
||||
<a href="/pogodbe">Pogodbe</a>
|
||||
<a href="{{ROUTE_PREFIX}}/oddaja" class="active">Oddaja besedil</a>
|
||||
<a href="{{ROUTE_PREFIX}}/zgodovina">Zgodovina sodelovanja</a>
|
||||
<a href="{{ROUTE_PREFIX}}/pogodbe">Ekipa</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -43,17 +45,21 @@
|
||||
<div class="col-6">
|
||||
{% if not institution %}
|
||||
<div class="alert">
|
||||
<img src="/static/image/alert.svg" alt="alert"/>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/alert.svg" alt="alert"/>
|
||||
<p>Niste član nobene institucije!</p>
|
||||
</div>
|
||||
{% elif not institution_contract %}
|
||||
<div class="alert">
|
||||
<img src="/static/image/alert.svg" alt="alert"/>
|
||||
<!--<div class="alert">
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/alert.svg" alt="alert"/>
|
||||
<p>Pogodba s šolo še ni naložena!</p>
|
||||
</div>
|
||||
</div>-->
|
||||
{% endif %}
|
||||
<div class="alert" id="error-message">
|
||||
<img src="/static/image/alert.svg" alt="alert"/>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/alert.svg" alt="alert"/>
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="alert alert-success" id="success-message">
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/success.svg" alt="alert"/>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -64,7 +70,30 @@
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="form-wrapper">
|
||||
<label>Program</label>
|
||||
<label for="regija">Regija</label>
|
||||
<select id="regija" name="regija">
|
||||
<option value="CE" selected="selected">Celje (CE)</option>
|
||||
<option value="GO">Nova Gorica (GO)</option>
|
||||
<option value="KK">Krško (KK)</option>
|
||||
<option value="KP">Koper (KP)</option>
|
||||
<option value="KR">Kranj (KR)</option>
|
||||
<option value="LJ">Ljubljana (LJ)</option>
|
||||
<option value="MB">Maribor (MB)</option>
|
||||
<option value="MS">Murska Sobota (MS)</option>
|
||||
<option value="NM">Novo Mesto (NM)</option>
|
||||
<option value="PO">Postojna (PO)</option>
|
||||
<option value="SG">Slovenj Gradec (SG)</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="form-wrapper">
|
||||
<label for="program">Program</label>
|
||||
<select id="program" name="program">
|
||||
<option value="OS" selected="selected">Osnovnošolski (OŠ)</option>
|
||||
<option value="SSG">Splošna in strokovna gimnazija (SGG)</option>
|
||||
@@ -73,12 +102,12 @@
|
||||
<option value="NPI">Nižje poklicno izobraževanje (NPI)</option>
|
||||
<option value="SPI">Srednje poklicno izobraževanje (SPI)</option>
|
||||
<option value="SSI">Srednje strokovno izobraževanje (SSI)</option>
|
||||
<option value="PTI">Poklicno-tehnično izobraževanje (PTI)</option>
|
||||
<option value="PTI">Poklicno-tehniško izobraževanje (PTI)</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<p>lalala</p>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
@@ -86,17 +115,17 @@
|
||||
<div class="form-wrapper">
|
||||
<label for="predmet">Predmet</label>
|
||||
<select id="predmet" name="predmet">
|
||||
<option value="slo" selected="selected">Slovenščina</option>
|
||||
<option value="drug-jez">Drugi jezikoslovni predmeti</option>
|
||||
<option value="drug-druz">Drugi družboslovni predmeti</option>
|
||||
<option value="drug-narav">Drugi naravoslovni predmeti</option>
|
||||
<option value="drug-strok">Drugi strokovni predmeti</option>
|
||||
<option value="drug-izb">Drugi izbirni ali dodatni predmeti</option>
|
||||
<option value="SLO" selected="selected">Slovenščina (SLO)</option>
|
||||
<option value="DJP">Drugi jezikoslovni predmeti (vtipkajte ime predmeta) (DJP)</option>
|
||||
<option value="DDP">Drugi družboslovni predmeti (vtipkajte ime predmeta) (DDP)</option>
|
||||
<option value="DNP">Drugi naravoslovni predmeti (vtipkajte ime predmeta) (DNP)</option>
|
||||
<option value="DSP">Drugi strokovni predmeti (vtipkajte ime predmeta) (DSP)</option>
|
||||
<option value="DIP">Drugi izbirni ali dodatni predmeti (vtipkajte ime predmeta) (DIP)</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<p>lalala</p>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -108,14 +137,14 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<p>lalala</p>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="form-wrapper">
|
||||
<label for="letnik">Letnik</label>
|
||||
<label for="letnik">Razred/Letnik</label>
|
||||
<select id="letnik" name="letnik">
|
||||
<option value="1" selected="selected">1</option>
|
||||
<option value="2">2</option>
|
||||
@@ -130,7 +159,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<p>lalala</p>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -139,15 +168,15 @@
|
||||
<div class="form-wrapper" >
|
||||
<label for="vrsta">Vrsta besedila</label>
|
||||
<select id="vrsta" name="vrsta">
|
||||
<option value="esej-spis" selected="selected">Esej ali spis</option>
|
||||
<option value="prakticno">Praktično besedilo (npr. vabila, prošnje ipd. pri pouku slovenščine), napisano za oceno</option>
|
||||
<option value="solski-test">Šolski test</option>
|
||||
<option value="delo-v-razredu">Delo v razredu, ne za oceno</option>
|
||||
<option value="E" selected="selected">Esej ali spis (E)</option>
|
||||
<option value="PB">Praktično besedilo, napisano za oceno - npr. vabilo, prošnja ali podobno (PE)</option>
|
||||
<option value="T">Šolski test (T)</option>
|
||||
<option value="R">Delo v razredu, ne za oceno (vtipkajte besedilno vrsto) (R)</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<p>lalala</p>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -159,7 +188,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<p>lalala</p>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -174,7 +203,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<p>lalala</p>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -183,14 +212,14 @@
|
||||
<div class="form-wrapper">
|
||||
<label for="jezikovni-popravki">Jezikovni popravki</label>
|
||||
<select id="jezikovni-popravki" name="jezikovni-popravki">
|
||||
<option value="popr-ne" selected="selected">Besedilo vsebuje učiteljske popravke in strinjam se z njihovo vključitvijo v korpus</option>
|
||||
<option value="brez-popr">Besedilo ne vsebuje učiteljskih popravkov</option>
|
||||
<option value="popr-da">Besedilo vsebuje učiteljske popravke in ne strinjam se z njihovo vključitvijo v korpus</option>
|
||||
<option value="DD" selected="selected">Besedilo vsebuje učiteljske popravke in strinjam se z njihovo vključitvijo v korpus. (DD)</option>
|
||||
<option value="N">Besedilo ne vsebuje učiteljskih popravkov. (N)</option>
|
||||
<option value="DN">Besedilo vsebuje učiteljske popravke in ne strinjam se z njihovo vključitvijo v korpus. (DN)</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<p>lalala</p>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -210,7 +239,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<p>lalala</p>
|
||||
<p>Oddate lahko eno ali (hkrati) več besedil, ki ustrezajo izbranim podatkom. Sprejemljivi formati so: txt, csv, pdf, doc, docx, xls, xlsx, ppt, pptx, jpg, jpeg, png.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -219,7 +248,7 @@
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="form-wrapper">
|
||||
<button id="button-submit" type="submit" class="btn">Oddaj</button>
|
||||
<button id="button-submit" type="button" class="btn">Oddaj</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
@@ -229,10 +258,10 @@
|
||||
|
||||
<div class="row submit-alert" id="data-confirm-notification">
|
||||
<div class="col-6">
|
||||
<button id="button-submit-final" type="submit" class="btn">Potrdi in oddaj</button>
|
||||
<button id="button-submit-final" type="button" class="btn">Potrdi in oddaj</button>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<p>Prosimo, preverite in potrdite vnešene podatke.</p>
|
||||
<p>Prosimo, preverite, če so vneseni podatki ustrezni in besedila prava. Naknadno spreminjanje ne bo več mogoče.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -240,11 +269,11 @@
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<br/><br/><br/><br/><br/><br/><br/>
|
||||
|
||||
|
||||
<!--{{ dropzone.load_js() }}-->
|
||||
<script src="/static/dropzone.js"></script>
|
||||
<script src="{{ROUTE_PREFIX}}/static/dropzone.js"></script>
|
||||
<script>
|
||||
/////////////////////////
|
||||
// Dropzone //
|
||||
@@ -258,6 +287,7 @@
|
||||
var termsScrollbox = document.getElementById("popup-terms-text");
|
||||
var dataConfirmNotification = document.getElementById("data-confirm-notification");
|
||||
var errorMessage = document.getElementById("error-message");
|
||||
var successMessage = document.getElementById("success-message");
|
||||
var form = document.forms["form-oddaja"];
|
||||
|
||||
{% if not institution %}
|
||||
@@ -277,13 +307,20 @@
|
||||
});
|
||||
}
|
||||
|
||||
const reEmail = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||
function showSuccess(str) {
|
||||
successMessage.querySelector("p").textContent = str;
|
||||
successMessage.style.display = "block";
|
||||
window.scroll({
|
||||
top: 0,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
//onready
|
||||
selectPredmet.addEventListener("change", function(e) {
|
||||
var predmetCustomBox = document.getElementById("predmet-custom-box").closest('.row');
|
||||
if (selectPredmet.value.startsWith("drug")) {
|
||||
if (selectPredmet.value.startsWith("D")) {
|
||||
predmetCustomBox.style.maxHeight = "150px";
|
||||
} else {
|
||||
predmetCustomBox.style.maxHeight = "0px";
|
||||
@@ -292,7 +329,7 @@
|
||||
|
||||
selectVrsta.addEventListener("change", function(e) {
|
||||
var vrstaCustomBox = document.getElementById("vrsta-custom-box").closest('.row');
|
||||
if (selectVrsta.value == "delo-v-razredu") {
|
||||
if (selectVrsta.value == "R") {
|
||||
vrstaCustomBox.style.maxHeight = "150px";
|
||||
} else {
|
||||
vrstaCustomBox.style.maxHeight = "0px";
|
||||
@@ -305,32 +342,33 @@
|
||||
|
||||
|
||||
Dropzone.options.myDropzone = { // The camelized version of the ID of the form element
|
||||
url: "../upload",
|
||||
url: "{{ROUTE_PREFIX}}/upload",
|
||||
autoProcessQueue: false,
|
||||
uploadMultiple: true,
|
||||
parallelUploads: 20,
|
||||
paramName: "file", // The name that will be used to transfer the file
|
||||
maxFilesize: 1000, // MB
|
||||
timeout: 5000000, // milliseconds
|
||||
acceptedFiles: ".txt, .csv, .pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .jpg, .jpeg, .png, .mkv",
|
||||
acceptedFiles: ".txt, .csv, .pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .jpg, .jpeg, .png",
|
||||
maxFiles: 20,
|
||||
previewsContainer: "#dropzone-previews",
|
||||
dictDefaultMessage: "Kliknite ali odložite datoteke sem.",
|
||||
dictDefaultMessage: "Kliknite to polje ali povlecite datoteke vanj.",
|
||||
dictFallbackMessage: "Vaš brskalnik ne podpira izbiranje datotek z odlaganjem (\"drag & drop\").",
|
||||
dictInvalidFileType: "Datoteka je napačnega formata.",
|
||||
dictFileTooBig: "Datoteke je prevelika {{filesize}}. Največja dovoljena velikost: {{maxFilesize}}MiB.",
|
||||
dictResponseError: "Napaka strežnika: {{statusCode}}",
|
||||
dictMaxFilesExceeded: "Ne morete naložiti več datotek.",
|
||||
dictCancelUpload: "Prekini prenos",
|
||||
dictRemoveFile: "Odstrani datoteko",
|
||||
dictCancelUpload: "",
|
||||
dictRemoveFile: "",
|
||||
dictCancelUploadConfirmation: "Ali res želite odstraniti to datoteko?",
|
||||
dictUploadCanceled: "Prenos prekinjen",
|
||||
|
||||
addRemoveLinks: true,
|
||||
// The setting up of the dropzone
|
||||
init: function() {
|
||||
var dz = this;
|
||||
dataConfirmNotification.style.display = "none";
|
||||
errorMessage.style.display = "none";
|
||||
successMessage.style.display = "none";
|
||||
|
||||
btnSubmit.addEventListener("click", function(e) {
|
||||
// Make sure that the form isn't actually being sent.
|
||||
@@ -338,6 +376,7 @@
|
||||
e.stopPropagation();
|
||||
|
||||
// Check form validity.
|
||||
var regija = form["regija"].value;
|
||||
var program = form["program"].value;
|
||||
var predmet = form["predmet"].value;
|
||||
var predmetCustom = form["predmet-custom"].value;
|
||||
@@ -347,9 +386,9 @@
|
||||
var solskoLeto = form["solsko-leto"].value;
|
||||
var jezikovniPopravki = form["jezikovni-popravki"].value;
|
||||
|
||||
if (predmet.startsWith("drug") && isEmptyOrSpaces(predmetCustom)) {
|
||||
if (predmet.startsWith("D") && isEmptyOrSpaces(predmetCustom)) {
|
||||
showError("Polje za predmet ne more biti prazno!");
|
||||
} else if (vrsta === "delo-v-razredu" && isEmptyOrSpaces(vrstaCustom)) {
|
||||
} else if (vrsta === "R" && isEmptyOrSpaces(vrstaCustom)) {
|
||||
showError("Polje za vrsto besedila ne more biti prazno!");
|
||||
} else if (dataConfirmNotification.style.display == "none") {
|
||||
dataConfirmNotification.style.display = "inherit";
|
||||
@@ -357,12 +396,12 @@
|
||||
} else {
|
||||
|
||||
// Hand off data to dropzone
|
||||
dz.processQueue();
|
||||
//dz.processQueue();
|
||||
|
||||
// Clear fields and hide popup agian
|
||||
dataConfirmNotification.style.display = "none";
|
||||
btnSubmit.textContent = "Oddaj";
|
||||
form.reset();
|
||||
//form.reset();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -380,6 +419,12 @@
|
||||
// Hide the success button or the complete form.
|
||||
});
|
||||
this.on("successmultiple", function(files, response) {
|
||||
showSuccess(response);
|
||||
dz.removeAllFiles();
|
||||
dataConfirmNotification.style.display = "none";
|
||||
btnSubmit.style.display = "";
|
||||
return;
|
||||
|
||||
// Gets triggered when the files have successfully been sent.
|
||||
// Redirect user or notify of success.
|
||||
});
|
||||
@@ -390,6 +435,7 @@
|
||||
|
||||
|
||||
this.on("sending", function(file, xhr, formData) {
|
||||
formData.append("regija",form["regija"].value);
|
||||
formData.append("program",form["program"].value);
|
||||
formData.append("predmet",form["predmet"].value);
|
||||
formData.append("predmet-custom",form["predmet-custom"].value);
|
||||
@@ -404,7 +450,7 @@
|
||||
},
|
||||
uploadprogress: function(file, progress, bytesSent) {
|
||||
if (file.previewElement) {
|
||||
console.log(progress);
|
||||
//console.log(progress);
|
||||
var progressElement = file.previewElement.querySelector("[data-dz-uploadprogress]");
|
||||
progressElement.style.width = progress + "%";
|
||||
//progressElement.querySelector(".progress-text").textContent = progress + "%";
|
||||
|
||||
@@ -3,446 +3,247 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Portal za oddajanje besedil</title>
|
||||
<link rel="stylesheet" href="/static/css/header.css" type="text/css">
|
||||
<link rel="stylesheet" href="/static/css/form.css" type="text/css">
|
||||
<link rel="stylesheet" href="/static/css/simple-grid.css" type="text/css">
|
||||
<link rel="stylesheet" href="/static/css/contracts.css" type="text/css">
|
||||
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
|
||||
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/header.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/form.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/simple-grid.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/contracts.css" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div class="logo"><a href="/"><img src="/static/image/logo-white.svg"/></a></div>
|
||||
<div class="logo"><a href="{{ROUTE_PREFIX}}/"><img src="{{ROUTE_PREFIX}}/static/image/logo-white.svg"/></a></div>
|
||||
<div class="menu-items">
|
||||
<a href="../logout">Odjava</a>
|
||||
{% if is_institution_coordinator %}
|
||||
<a href="../manage-institution">Upravljaj z institucijo</a>
|
||||
<a href="{{ROUTE_PREFIX}}/manage-institution">Upravljaj z ekipo</a>
|
||||
{% endif %}
|
||||
{% if is_admin %}
|
||||
<a href="../admin">Administracijski meni</a>
|
||||
<a href="{{ROUTE_PREFIX}}/admin">Administracijski meni</a>
|
||||
{% endif %}
|
||||
<a href="mailto:email@example.com">Pomoč</a>
|
||||
<a href="https://slovenscina.eu/" target="_blank">Več informacij o sodelovanju</a>
|
||||
<a href="{{ROUTE_PREFIX}}/logout">Odjava</a>
|
||||
</div>
|
||||
</header>
|
||||
<div class="container" style="margin-top:8rem;">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h1 class="title">Koprus SOLAR</h1>
|
||||
<p class="subtitle">Zbiranje besedil za korpus Šolar poteka po naslednjem postopku, ki prinaša tudi točke za napredovanje.</p>
|
||||
<h1 class="title">Korpus Šolar</h1>
|
||||
<p class="subtitle"></p>
|
||||
|
||||
<div class="tab-nav">
|
||||
<a href="/oddaja">Oddaja</a>
|
||||
<a href="/zgodovina">Zgodovina</a>
|
||||
<a href="/pogodbe" class="active">Pogodbe</a>
|
||||
<a href="{{ROUTE_PREFIX}}/oddaja">Oddaja besedil</a>
|
||||
<a href="{{ROUTE_PREFIX}}/zgodovina">Zgodovina sodelovanja</a>
|
||||
<a href="{{ROUTE_PREFIX}}/pogodbe" class="active">Ekipa</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h2>Oddaj pogodbo</h2>
|
||||
</div>
|
||||
</div>
|
||||
{% if show_upload_form %}
|
||||
<form action="" method="POST" id="form-pogodbe" enctype="multipart/form-data">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="form-wrapper">
|
||||
<input type="radio" id="sola" name="tip-pogodbe" value="sola" {% if enable_upload_school_contract %}{%else%}disabled{%endif%}>
|
||||
<label for="sola">Pogodba s šolo</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="form-wrapper">
|
||||
<input type="radio" id="ucenci-starsi" name="tip-pogodbe" value="ucenci-starsi">
|
||||
<label for="ucenci-starsi">Pogodba z učenci / starši</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="form-wrapper">
|
||||
<div id="dropzone-previews" class="dropzone-previews"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="form-wrapper">
|
||||
<label for="my-dropzone">Datoteka</label>
|
||||
<div id="my-dropzone" class="dropzone"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<p>lalala</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<button class="btn" id="btn-submit" type="submit">Oddaj pogodbo</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% endif %}
|
||||
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h2>Oddane pogodbe</h2>
|
||||
</div>
|
||||
</div>
|
||||
{% if contract_school %}
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="contract-item">
|
||||
<img src="/static/image/contract.png" alt="contract" class="contract-item-icon"/>
|
||||
<div class="contract-item-title">Pogodba s šolo</div>
|
||||
<div class="contract-item-date">DODANO: {{contract_school.timestamp.strftime('%d. %m. %Y')}}</div>
|
||||
<a href="../pogodbe-institucije/{{ contract_school.file_contract }}.pdf" class="contract-item-download">Prenesi</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endif %}
|
||||
{% for item in contracts_students %}
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="contract-item">
|
||||
<img src="/static/image/contract.svg" alt="contract" class="contract-item-icon"/>
|
||||
<div class="contract-item-title">Pogodba o prenosu lastništva</div>
|
||||
<div class="contract-item-date">DODANO: {{item.timestamp.strftime('%d. %m. %Y')}}</div>
|
||||
<a href="../pogodbe-ucencistarsi/{{ item.file_contract }}.pdf" class="contract-item-download">Prenesi</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
|
||||
|
||||
<div class="row">
|
||||
<!--<div class="row">
|
||||
<div class="col-12">
|
||||
<h2>Sodelujoči</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>-->
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
{% for collaborator in collaborators %}
|
||||
<div class="collaborators-item">
|
||||
<div class="collaborators-item-name">{{collaborator.name}}</div>
|
||||
{% if collaborator.id in cooperation_history %}
|
||||
{% if cooperation_history[collaborator.id]["coordinator"]|length > 0 %}
|
||||
<div class="collaborators-item-years"><b>Vodenje:</b> {% for item in cooperation_history[collaborator.id]["coordinator"] %}
|
||||
{% if loop.index != 1 %}, {% endif %}
|
||||
{{item[0]}}
|
||||
{% endfor %}</div>
|
||||
{% endif %}
|
||||
{% if cooperation_history[collaborator.id]["mentor"]|length > 0 %}
|
||||
<div class="collaborators-item-years"><b>Mentorstvo:</b> {% for item in cooperation_history[collaborator.id]["mentor"] %}
|
||||
{% if loop.index != 1 %}, {% endif %}
|
||||
{{item[0]}}
|
||||
{% endfor %}</div>
|
||||
{% endif %}
|
||||
{% if cooperation_history[collaborator.id]["other"]|length > 0 %}
|
||||
<div class="collaborators-item-years"><b>Drugo:</b> {% for item in cooperation_history[collaborator.id]["other"] %}
|
||||
{% if loop.index != 1 %}, {% endif %}
|
||||
{{item[0]}}
|
||||
{% endfor %}</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<h2>Sodelujoči</h2>
|
||||
{% for u in institution_users %}
|
||||
<div class="team-item">
|
||||
<div class="team-item-name">{{u.name}} <span class="team-item-role">{{role_map[u.id]}}</span></div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
|
||||
<h2 style="margin-top:2rem">Zgodovina sprememb</h2>
|
||||
{% for item in cooperation_history %}
|
||||
<div class="team-item">
|
||||
<div class="team-item-name">
|
||||
{{item.name}}
|
||||
<span class="team-item-role" style="margin-left:0">{{item.timestamp.strftime('%d.%m.%Y')}} postane {% if item.role == "coordinator"%}koordinator/-ka{% elif item.role == "mentor" %}mentor/-ica{% elif item.role == "other" %}druga vloga{% endif %}</span>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="col-6">
|
||||
<div id="my_dataviz_title">
|
||||
<h2>Število oddaj na uporabnika</h2>
|
||||
<div id="my_dataviz"></div>
|
||||
</div>
|
||||
<div id="my_dataviz__region_title">
|
||||
<h2>Število vseh oddaj po regijah</h2>
|
||||
<div id="my_dataviz_region">
|
||||
|
||||
</div>
|
||||
<div>
|
||||
<div style="display:inline-block;width:12px;height:12px;background:#006CB7"></div>
|
||||
<p style="display:inline-block">Osnovne šole</p>
|
||||
|
||||
<div style="margin-left:32px;display:inline-block;width:12px;height:12px;background:#B86D00"></div>
|
||||
<p style="display:inline-block">Srednje šole</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
|
||||
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
<a href="../logout">Odjavi se</a>
|
||||
{% if is_institution_coordinator %}
|
||||
<br><a href="../manage-institution">Upravljaj z institucijo</a>
|
||||
{% endif %}
|
||||
{% if is_admin %}
|
||||
<br><a href="../admin">Administracijski meni</a>
|
||||
{% endif %}
|
||||
<br><a href="mailto:email@example.com">Pomoč</a>
|
||||
<div class="bg"></div>
|
||||
<div id="main-window">
|
||||
<div id="rect1">
|
||||
|
||||
{% with messages = get_flashed_messages() %}
|
||||
{% if messages %}
|
||||
<div class="message-notification">
|
||||
{{ messages[0] }}
|
||||
</div>
|
||||
<div id="contract-container" style="height: 250px;">
|
||||
{% else %}
|
||||
<div id="contract-container">
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
|
||||
{% if contract_school %}
|
||||
<div class="contract-item">
|
||||
<img src="/static/image/contract.png" alt="contract" class="contract-item-icon"/>
|
||||
<div class="contract-item-title">Pogodba s šolo</div>
|
||||
<div class="contract-item-data">{{contract_school.original_filename}}</div>
|
||||
<div class="contract-item-data">DODANO: {{contract_school.timestamp}}</div>
|
||||
<a href="../pogodbe-institucije/{{ contract_school.file_contract }}.pdf" class="contract-item-button">Prenesi</a>
|
||||
</div>
|
||||
</br>
|
||||
{% endif %}
|
||||
{% for item in contracts_students %}
|
||||
<div class="contract-item">
|
||||
<img src="/static/image/contract.png" alt="contract" class="contract-item-icon"/>
|
||||
<div class="contract-item-title" style="font-size: 12px;">{{item.original_filename}}</div>
|
||||
<div class="contract-item-data">Pogodba o prenosu lastništva</div>
|
||||
<div class="contract-item-data">DODANO: {{item.timestamp}}</div>
|
||||
<a href="../pogodbe-ucencistarsi/{{ item.file_contract }}.pdf" class="contract-item-button">Prenesi</a>
|
||||
</div>
|
||||
</br>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</br>
|
||||
</br>
|
||||
{% if show_upload_form %}
|
||||
<div style="padding: 20px; position: absolute; top: 500px; width: 89%;">
|
||||
<div class="section-desc">Oddaj pogodbo</div>
|
||||
<form action="../pogodbe" method="post" enctype="multipart/form-data">
|
||||
{% if enable_upload_school_contract %}
|
||||
<div style="display:flex; flex-direction: row; justify-content: left; align-items: center">
|
||||
<label style="width: 80%; text-align: right;" for="sola">Pogodba s šolo</label>
|
||||
<input style="width: 20%;" type="radio" id="sola" name="tip-pogodbe" value="sola">
|
||||
</div>
|
||||
{% else %}
|
||||
<div style="display:flex; flex-direction: row; justify-content: left; align-items: center">
|
||||
<label style="width: 80%; text-align: right;" for="sola">Pogodba s šolo</label>
|
||||
<input style="width: 20%;"type="radio" id="sola" name="tip-pogodbe" value="sola" disabled>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div style="display:flex; flex-direction: row; justify-content: left; align-items: center">
|
||||
<label style="width: 80%; text-align: right;" for="ucenci-starsi">Pogodba z učenci / starši</label>
|
||||
<input style="width: 20%;" type="radio" id="ucenci-starsi" name="tip-pogodbe" value="ucenci-starsi" checked>
|
||||
</div>
|
||||
<input style="font-size: 10px;" type="file" id="file-contract" name="file[]" multiple="">
|
||||
<button style="float: right;" type="submit">Oddaj pogodbo</button>
|
||||
</form>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div id="rect2" class="mock-side">
|
||||
<div id="collaborators-container">
|
||||
<div class="container-title">Sodelujoči</div>
|
||||
<div style="overflow-y: auto;">
|
||||
{% for collaborator in collaborators %}
|
||||
<div class="collaborators-item">
|
||||
<div class="collaborators-item-name">{{collaborator.name}}</div>
|
||||
{% if collaborator.id in cooperation_history %}
|
||||
{% if cooperation_history[collaborator.id]["coordinator"]|length > 0 %}
|
||||
<div class="collaborators-item-years"><b>Vodenje:</b> {% for item in cooperation_history[collaborator.id]["coordinator"] %}
|
||||
{% if loop.index != 1 %}, {% endif %}
|
||||
{{item[0]}}
|
||||
{% endfor %}</div>
|
||||
{% endif %}
|
||||
{% if cooperation_history[collaborator.id]["mentor"]|length > 0 %}
|
||||
<div class="collaborators-item-years"><b>Mentorstvo:</b> {% for item in cooperation_history[collaborator.id]["mentor"] %}
|
||||
{% if loop.index != 1 %}, {% endif %}
|
||||
{{item[0]}}
|
||||
{% endfor %}</div>
|
||||
{% endif %}
|
||||
{% if cooperation_history[collaborator.id]["other"]|length > 0 %}
|
||||
<div class="collaborators-item-years"><b>Drugo:</b> {% for item in cooperation_history[collaborator.id]["other"] %}
|
||||
{% if loop.index != 1 %}, {% endif %}
|
||||
{{item[0]}}
|
||||
{% endfor %}</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div id="awards-container">
|
||||
<div class="container-title">Sodelovanje v letih</div>
|
||||
<div style="overflow-y: auto; margin: auto; width: 100%; height: 200px;">
|
||||
{% if cooperation_history.keys()|length > 0 %}
|
||||
{% if user_id in cooperation_history %}
|
||||
{% for item in cooperation_history[user_id]['coordinator'] %}
|
||||
<div style="border-bottom: 2px solid #c4c4c4; min-height: 50px; margin-bottom: 10px;">
|
||||
<img src="/static/image/star.png" alt="star" style="float: left; width: 40px;"/>
|
||||
<div class="collaborators-item-name"
|
||||
style="float: right; width: 250px; text-align: left; margin-left: 20px;text-overflow: ellipsis; overflow: hidden; white-space: nowrap;">
|
||||
{{item[1]}}
|
||||
</div>
|
||||
<div class="collaborators-item-name"
|
||||
style="float: right; width: 250px; text-align: left; margin-left: 20px;">
|
||||
{{item[0]}}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% for item in cooperation_history[user_id]['mentor'] %}
|
||||
<div style="border-bottom: 2px solid #c4c4c4; min-height: 50px; margin-bottom: 10px;">
|
||||
<img src="/static/image/star.png" alt="star" style="float: left; width: 40px;"/>
|
||||
<div class="collaborators-item-name"
|
||||
style="float: right; width: 250px; text-align: left; margin-left: 20px;text-overflow: ellipsis; overflow: hidden; white-space: nowrap;">
|
||||
{{item[1]}}
|
||||
</div>
|
||||
<div class="collaborators-item-name"
|
||||
style="float: right; width: 250px; text-align: left; margin-left: 20px;">
|
||||
{{item[0]}}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% for item in cooperation_history[user_id]['other'] %}
|
||||
<div style="border-bottom: 2px solid #c4c4c4; min-height: 50px; margin-bottom: 10px;">
|
||||
<img src="/static/image/star.png" alt="star" style="float: left; width: 40px;"/>
|
||||
<div class="collaborators-item-name"
|
||||
style="float: right; width: 250px; text-align: left; margin-left: 20px;text-overflow: ellipsis; overflow: hidden; white-space: nowrap;">
|
||||
{{item[1]}}
|
||||
</div>
|
||||
<div class="collaborators-item-name"
|
||||
style="float: right; width: 250px; text-align: left; margin-left: 20px;">
|
||||
{{item[0]}}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>-->
|
||||
</body>
|
||||
<!--{{ dropzone.load_js() }}-->
|
||||
<script src="/static/dropzone.js"></script>
|
||||
<script src="https://d3js.org/d3.v6.js"></script>
|
||||
<style>
|
||||
#my_dataviz .tick line{
|
||||
visibility:hidden;
|
||||
}
|
||||
#my_dataviz path.domain{
|
||||
visibility:hidden;
|
||||
}
|
||||
#my_dataviz_region .tick line{
|
||||
visibility:hidden;
|
||||
}
|
||||
#my_dataviz_region path.domain{
|
||||
visibility:hidden;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
/////////////////////////
|
||||
// Dropzone //
|
||||
/////////////////////////
|
||||
var btnSubmit = document.getElementById("btn-submit");
|
||||
var errorMessage = document.getElementById("error-message");
|
||||
var form = document.forms["form-pogodbe"];
|
||||
|
||||
|
||||
function isEmptyOrSpaces(str){
|
||||
return str == null || str.match(/^ *$/) !== null;
|
||||
var data;
|
||||
// Parse the Data
|
||||
d3.json("/topuploads-institution/{{institution_id}}").then(function(jsondata) {
|
||||
if(Object.keys(jsondata).length < 1) {
|
||||
document.getElementById("my_dataviz_title").remove();
|
||||
return;
|
||||
}
|
||||
|
||||
function showError(str) {
|
||||
errorMessage.querySelector("p").textContent = str;
|
||||
errorMessage.style.display = "block";
|
||||
window.scroll({
|
||||
top: 0,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
data = [];
|
||||
console.log(Object.keys(jsondata).length);
|
||||
var margin = {top: 20, right: 0, bottom: 40, left: 0};
|
||||
var width = document.getElementById("my_dataviz").clientWidth - margin.left - margin.right;
|
||||
var height = Object.keys(jsondata).length * 56;
|
||||
var svg = d3.select("#my_dataviz")
|
||||
.append("svg")
|
||||
.attr("width", width + margin.left + margin.right)
|
||||
.attr("height", height + margin.top + margin.bottom)
|
||||
.style("overflow","visible")
|
||||
.append("g")
|
||||
.attr("transform",
|
||||
"translate(" + margin.left + "," + margin.top + ")");
|
||||
for(var key in jsondata) {
|
||||
data.push({'name': key, 'value':jsondata[key]});
|
||||
}
|
||||
|
||||
|
||||
console.log(data);
|
||||
|
||||
// Add X axis
|
||||
var x = d3.scaleLinear()
|
||||
.domain([0,d3.max(data, function (d) { return d.value})])
|
||||
.range([ 0, width]);
|
||||
|
||||
Dropzone.options.myDropzone = { // The camelized version of the ID of the form element
|
||||
url: "../pogodbe",
|
||||
autoProcessQueue: false,
|
||||
uploadMultiple: false,
|
||||
parallelUploads: 20,
|
||||
paramName: "file[]", // The name that will be used to transfer the file
|
||||
maxFilesize: 1000, // MB
|
||||
timeout: 5000000, // milliseconds
|
||||
acceptedFiles: ".txt, .csv, .pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .jpg, .jpeg, .png, .mkv",
|
||||
maxFiles: 20,
|
||||
previewsContainer: "#dropzone-previews",
|
||||
dictDefaultMessage: "Kliknite ali odložite datoteke sem.",
|
||||
dictFallbackMessage: "Vaš brskalnik ne podpira izbiranje datotek z odlaganjem (\"drag & drop\").",
|
||||
dictInvalidFileType: "Datoteka je napačnega formata.",
|
||||
dictFileTooBig: "Datoteke je prevelika {{filesize}}. Največja dovoljena velikost: {{maxFilesize}}MiB.",
|
||||
dictResponseError: "Napaka strežnika: {{statusCode}}",
|
||||
dictMaxFilesExceeded: "Ne morete naložiti več datotek.",
|
||||
dictCancelUpload: "Prekini prenos",
|
||||
dictRemoveFile: "Odstrani datoteko",
|
||||
dictCancelUploadConfirmation: "Ali res želite odstraniti to datoteko?",
|
||||
dictUploadCanceled: "Prenos prekinjen",
|
||||
svg.append("g")
|
||||
.attr("transform", "translate(0," + height + ")")
|
||||
.call(d3.axisBottom(x)/*.ticks(5)*/)
|
||||
.selectAll("text")
|
||||
.style("text-anchor", "center");
|
||||
|
||||
// The setting up of the dropzone
|
||||
init: function() {
|
||||
var dz = this;
|
||||
// Y axis
|
||||
var y = d3.scaleBand()
|
||||
.range([ 0, data.length*56 ])
|
||||
.domain(data.map(function(d) { return d.name; }))
|
||||
.padding(0);
|
||||
svg.append("g")
|
||||
.call(d3.axisLeft(y))
|
||||
.selectAll("text")
|
||||
.style("text-anchor", "start")
|
||||
.style("font-size", "14px")
|
||||
.attr("transform", "translate(8,-36)");
|
||||
|
||||
/*btnSubmit.addEventListener("click", function(e) {
|
||||
// Make sure that the form isn't actually being sent.
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
//Bars
|
||||
svg.selectAll("myRect")
|
||||
.data(data)
|
||||
.enter()
|
||||
.append("rect")
|
||||
.attr("x", x(0) )
|
||||
.attr("y", function(d) { return y(d.name); })
|
||||
.attr("width", function(d) { return x(d.value); })
|
||||
.attr("height", 32 )
|
||||
.attr("fill", "#006CB7");
|
||||
})
|
||||
|
||||
// Check form validity.
|
||||
var program = form["program"].value;
|
||||
var predmet = form["predmet"].value;
|
||||
var predmetCustom = form["predmet-custom"].value;
|
||||
var letnik = form["letnik"].value;
|
||||
var vrsta = form["vrsta"].value;
|
||||
var vrstaCustom = form["vrsta-custom"].value;
|
||||
var solskoLeto = form["solsko-leto"].value;
|
||||
var jezikovniPopravki = form["jezikovni-popravki"].value;
|
||||
</script>
|
||||
<script>
|
||||
var data;
|
||||
// Parse the Data
|
||||
d3.json("/uploadstats-per-region").then(function(jsondata) {
|
||||
|
||||
/*if (predmet.startsWith("drug") && isEmptyOrSpaces(predmetCustom)) {
|
||||
showError("Polje za predmet ne more biti prazno!");
|
||||
} else if (vrsta === "delo-v-razredu" && isEmptyOrSpaces(vrstaCustom)) {
|
||||
showError("Polje za vrsto besedila ne more biti prazno!");
|
||||
} else if (dataConfirmNotification.style.display == "none") {
|
||||
dataConfirmNotification.style.display = "inherit";
|
||||
btnSubmit.style.display = "none";
|
||||
} else {*/
|
||||
|
||||
// Hand off data to dropzone
|
||||
/*dz.processQueue();
|
||||
|
||||
// Clear fields and hide popup agian
|
||||
dataConfirmNotification.style.display = "none";
|
||||
btnSubmit.textContent = "Oddaj";
|
||||
form.reset();*/
|
||||
//}
|
||||
//});
|
||||
|
||||
|
||||
// First change the button to actually tell dropzone to process the queue.
|
||||
btnSubmit.addEventListener("click", function(e) {
|
||||
// Make sure that the form isn't actually being sent.
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
// Hand off data to dropzone
|
||||
|
||||
dz.processQueue();
|
||||
console.log(dz.files);
|
||||
console.log(form["tip-pogodbe"].value);
|
||||
//form.submit();
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
this.on("sending", function(file, xhr, formData) {
|
||||
//alert("lalalala");
|
||||
formData.append("tip-pogodbe", form["tip-pogodbe"].value);
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
uploadprogress: function(file, progress, bytesSent) {
|
||||
if (file.previewElement) {
|
||||
console.log(progress);
|
||||
var progressElement = file.previewElement.querySelector("[data-dz-uploadprogress]");
|
||||
progressElement.style.width = progress + "%";
|
||||
//progressElement.querySelector(".progress-text").textContent = progress + "%";
|
||||
}
|
||||
data = [];
|
||||
console.log(Object.keys(jsondata).length);
|
||||
var margin = {top: 20, right: 0, bottom: 40, left: 0};
|
||||
var width = document.getElementById("my_dataviz_region").clientWidth - margin.left - margin.right;
|
||||
var height = Object.keys(jsondata).length * 56;
|
||||
var svg = d3.select("#my_dataviz_region")
|
||||
.append("svg")
|
||||
.attr("width", width + margin.left + margin.right)
|
||||
.attr("height", height + margin.top + margin.bottom)
|
||||
.style("overflow","visible")
|
||||
.append("g")
|
||||
.attr("transform",
|
||||
"translate(" + margin.left + "," + margin.top + ")");
|
||||
for(var key in jsondata) {
|
||||
data.push({'name': key, 'value':jsondata[key]});
|
||||
}
|
||||
|
||||
|
||||
console.log(data);
|
||||
|
||||
// Add X axis
|
||||
var x = d3.scaleLinear()
|
||||
.domain([0,d3.max(data, function (d) { return Math.max(...d.value)})])
|
||||
.range([ 0, width]);
|
||||
|
||||
svg.append("g")
|
||||
.attr("transform", "translate(0," + height + ")")
|
||||
.call(d3.axisBottom(x))
|
||||
.selectAll("text")
|
||||
.style("text-anchor", "center");
|
||||
|
||||
// Y axis
|
||||
var y = d3.scaleBand()
|
||||
.range([ 0, data.length*56 ])
|
||||
.domain(data.map(function(d) { return d.name; }))
|
||||
.padding(0);
|
||||
svg.append("g")
|
||||
.call(d3.axisLeft(y))
|
||||
.selectAll("text")
|
||||
.style("text-anchor", "start")
|
||||
.style("font-size", "14px")
|
||||
.attr("transform", "translate(8,-36)");
|
||||
|
||||
//Bars
|
||||
svg.selectAll("myRect")
|
||||
.data(data)
|
||||
.enter()
|
||||
.append("rect")
|
||||
.attr("x", x(0) )
|
||||
.attr("y", function(d) { return y(d.name); })
|
||||
.attr("width", function(d) { return x(d.value[0]); })
|
||||
.attr("height", 16 )
|
||||
.attr("fill", "#006CB7");
|
||||
svg.selectAll("myRect")
|
||||
.data(data)
|
||||
.enter()
|
||||
.append("rect")
|
||||
.attr("x", x(0) )
|
||||
.attr("y", function(d) { return y(d.name); })
|
||||
.attr("width", function(d) { return x(d.value[1]); })
|
||||
.attr("height", 16 )
|
||||
.attr("transform", "translate(0,16)")
|
||||
.attr("fill", "#B86D00");
|
||||
})
|
||||
|
||||
}
|
||||
</script>
|
||||
</html>
|
||||
|
||||
@@ -3,55 +3,66 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Portal ŠOLAR</title>
|
||||
<link rel="stylesheet" href="/static/css/login-styles.css" type="text/css">
|
||||
<link rel="stylesheet" href="/static/css/utils.css" type="text/css">
|
||||
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
|
||||
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/login-styles.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/utils.css" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="background">
|
||||
<div class="panel login-panel">
|
||||
<div class="panel-logo">
|
||||
<img src="/static/image/logo.svg" alt="logo"/>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/logo.svg" alt="logo"/>
|
||||
</div>
|
||||
<h2 class="text-center">Portal za oddajanje besedil</h2>
|
||||
<div class="line"></div>
|
||||
<h1 class="text-center">Korpus ŠOLAR</h1>
|
||||
|
||||
<div class="text-center m-b-3"><em>Zbiranje besedil za korpus Šolar poteka po naslednjem postopku, ki prinaša tudi točke za napredovanje.</em></div>
|
||||
<div class="text-center m-b-3"><em>Zbiranje besedil za korpus Šolar poteka po naslednjem postopku, ki prinaša tudi točke za napredovanje v pedagoški naziv.</em></div>
|
||||
|
||||
<h1 class="m-b-3">Registracija</h1>
|
||||
{% with messages = get_flashed_messages() %}
|
||||
{% if messages %}
|
||||
<div class="alert">
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/alert.svg" alt="alert"/>
|
||||
<p>{{ messages[0] }}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
<div>
|
||||
<form method="POST" action="../register" class="m-b-2">
|
||||
<form method="POST" action="{{ROUTE_PREFIX}}/register" class="m-b-2">
|
||||
<div class="input-wrapper">
|
||||
<img src="../static/image/user.svg" alt="user" class="input-icon"/>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/user.svg" alt="user" class="input-icon"/>
|
||||
<div class="input-floating-label">
|
||||
<label>Ime in priimek</label>
|
||||
<input type="name" name="name" autofocus="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-wrapper">
|
||||
<img src="../static/image/user.svg" alt="user" class="input-icon"/>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/user.svg" alt="user" class="input-icon"/>
|
||||
<div class="input-floating-label">
|
||||
<label>Email</label>
|
||||
<input type="email" name="email">
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-wrapper">
|
||||
<img src="../static/image/password.svg" alt="user" class="input-icon"/>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/password.svg" alt="user" class="input-icon"/>
|
||||
<div class="input-floating-label">
|
||||
<label>Geslo</label>
|
||||
<input type="password" name="password">
|
||||
<label class="input-hint">Geslo naj bo dolgo vsaj 8 znakov.</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-wrapper">
|
||||
<img src="../static/image/user.svg" alt="user" class="input-icon"/>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/user.svg" alt="user" class="input-icon"/>
|
||||
<div class="input-floating-label">
|
||||
<label>Naziv institucije</label>
|
||||
<input type="institution" name="institution">
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-wrapper">
|
||||
<img src="../static/image/password.svg" alt="user" class="input-icon"/>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/password.svg" alt="user" class="input-icon"/>
|
||||
<div class="input-floating-label">
|
||||
<label>Vloga v instituciji</label>
|
||||
<select id="role" name="role" >
|
||||
@@ -64,17 +75,10 @@
|
||||
<button class="btn" style="margin-left: 46px;">REGISTRACIJA</button>
|
||||
</form>
|
||||
</div>
|
||||
{% with messages = get_flashed_messages() %}
|
||||
{% if messages %}
|
||||
<div class="alert">
|
||||
<img src="/static/image/alert.svg" alt="alert"/>
|
||||
<p>{{ messages[0] }}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
|
||||
<div class="back-to-login">
|
||||
<img src="/static/image/chevron-left.svg"/>
|
||||
<a href="/login">Nazaj na prijavo</a>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/chevron-left.svg"/>
|
||||
<a href="{{ROUTE_PREFIX}}/login">Nazaj na prijavo</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -3,23 +3,26 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Portal ŠOLAR</title>
|
||||
<link rel="stylesheet" href="/static/css/login-styles.css" type="text/css">
|
||||
<link rel="stylesheet" href="/static/css/utils.css" type="text/css">
|
||||
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
|
||||
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/login-styles.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/utils.css" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="background">
|
||||
<div class="panel login-panel">
|
||||
<div class="panel-logo">
|
||||
<img src="/static/image/logo.svg" alt="logo"/>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/logo.svg" alt="logo"/>
|
||||
</div>
|
||||
<h1 class="m-b-3">Ponastavitev gesla - ŠOLAR</h1>
|
||||
<div>
|
||||
<form method="POST" action="" class="m-b-2">
|
||||
<div class="input-wrapper">
|
||||
<img src="../static/image/password.svg" alt="user" class="input-icon"/>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/password.svg" alt="user" class="input-icon"/>
|
||||
<div class="input-floating-label">
|
||||
<label>Novo geslo</label>
|
||||
<input type="password" name="new_password">
|
||||
<label class="input-hint">Geslo naj bo dolgo vsaj 8 znakov.</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -28,7 +31,7 @@
|
||||
{% with messages = get_flashed_messages() %}
|
||||
{% if messages %}
|
||||
<div class="alert">
|
||||
<img src="../static/image/alert.svg" alt="alert"/>
|
||||
<img src="{{ROUTE_PREFIX}}/static/image/alert.svg" alt="alert"/>
|
||||
<p>{{ messages[0] }}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
@@ -3,84 +3,108 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Portal za oddajanje besedil</title>
|
||||
<!--<link rel="stylesheet" href="/static/style.css" type="text/css">-->
|
||||
<script src="/static/chart.js"></script>
|
||||
<link rel="stylesheet" href="/static/css/header.css" type="text/css">
|
||||
<link rel="stylesheet" href="/static/css/form.css" type="text/css">
|
||||
<link rel="stylesheet" href="/static/css/simple-grid.css" type="text/css">
|
||||
<link rel="stylesheet" href="/static/css/history.css" type="text/css">
|
||||
<!--<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/style.css" type="text/css">-->
|
||||
<script src="{{ROUTE_PREFIX}}/static/chart.js"></script>
|
||||
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
|
||||
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/header.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/form.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/simple-grid.css" type="text/css">
|
||||
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/history.css" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div class="logo"><a href="/"><img src="/static/image/logo-white.svg"/></a></div>
|
||||
<div class="logo"><a href="{{ROUTE_PREFIX}}/"><img src="{{ROUTE_PREFIX}}/static/image/logo-white.svg"/></a></div>
|
||||
<div class="menu-items">
|
||||
<a href="../logout">Odjava</a>
|
||||
{% if is_institution_coordinator %}
|
||||
<a href="../manage-institution">Upravljaj z institucijo</a>
|
||||
<a href="{{ROUTE_PREFIX}}/manage-institution">Upravljaj z ekipo</a>
|
||||
{% endif %}
|
||||
{% if is_admin %}
|
||||
<a href="../admin">Administracijski meni</a>
|
||||
<a href="{{ROUTE_PREFIX}}/admin">Administracijski meni</a>
|
||||
{% endif %}
|
||||
<a href="mailto:email@example.com">Pomoč</a>
|
||||
<a href="https://slovenscina.eu/" target="_blank">Več informacij o sodelovanju</a>
|
||||
<a href="{{ROUTE_PREFIX}}/logout">Odjava</a>
|
||||
</div>
|
||||
</header>
|
||||
<div class="container" style="margin-top:8rem;">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h1 class="title">Koprus SOLAR</h1>
|
||||
<p class="subtitle">Zbiranje besedil za korpus Šolar poteka po naslednjem postopku, ki prinaša tudi točke za napredovanje.</p>
|
||||
<h1 class="title">Korpus Šolar</h1>
|
||||
<p class="subtitle"></p>
|
||||
|
||||
|
||||
<div class="tab-nav">
|
||||
<a href="/oddaja">Oddaja</a>
|
||||
<a href="/zgodovina" class="active">Zgodovina</a>
|
||||
<a href="/pogodbe">Pogodbe</a>
|
||||
<a href="{{ROUTE_PREFIX}}/oddaja">Oddaja besedil</a>
|
||||
<a href="{{ROUTE_PREFIX}}/zgodovina" class="active">Zgodovina sodelovanja</a>
|
||||
<a href="{{ROUTE_PREFIX}}/pogodbe">Ekipa</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<!--<div class="row">
|
||||
<div class="col-12">
|
||||
<h2>Zgodovina naloženih datotek</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>-->
|
||||
{% set map_program = {
|
||||
"OS" : "Osnovna šola (OŠ)",
|
||||
"SSG" : "Splošna in strokovna gimnazija (SGG)",
|
||||
"MGP" : "Mednarodni gimnazijski programi (MGP)",
|
||||
"ZG" : "Zasebne gimnazije (ZG)",
|
||||
"NPI" : "Nižje poklicno izobraževanje (NPI)",
|
||||
"SPI" : "Srednje poklicno izobraževanje (SPI)",
|
||||
"SSI" : "Srednje strokovno izobraževanje (SSI)",
|
||||
"PTI" : "Poklicno-tehnično izobraževanje (PTI)"
|
||||
"OS" : "Osnovna šola",
|
||||
"SSG" : "Splošna in strokovna gimnazija",
|
||||
"MGP" : "Mednarodni gimnazijski programi",
|
||||
"ZG" : "Zasebne gimnazije",
|
||||
"NPI" : "Nižje poklicno izobraževanje",
|
||||
"SPI" : "Srednje poklicno izobraževanje",
|
||||
"SSI" : "Srednje strokovno izobraževanje",
|
||||
"PTI" : "Poklicno-tehnično izobraževanje"
|
||||
}%}
|
||||
{% set map_subject = {
|
||||
"slo" : "Slovenščina",
|
||||
"drug-jez" : "Drugi jezikoslovni predmeti",
|
||||
"drug-druz" : "Drugi družboslovni predmeti",
|
||||
"drug-narav" : "Drugi naravoslovni predmeti",
|
||||
"drug-strok" : "Drugi strokovni predmeti",
|
||||
"drug-izb" : "Drugi izbirni ali dodatni predmeti",
|
||||
"SLO" : "Slovenščina",
|
||||
"DJP" : "Drugi jezikoslovni predmeti",
|
||||
"DDP" : "Drugi družboslovni predmeti",
|
||||
"DNP" : "Drugi naravoslovni predmeti",
|
||||
"DSP" : "Drugi strokovni predmeti",
|
||||
"DIP" : "Drugi izbirni ali dodatni predmeti",
|
||||
}%}
|
||||
{% set map_text_type = {
|
||||
"esej-spis" : "Esej ali spis",
|
||||
"prakticno" : "Praktično besedilo, napisano za oceno",
|
||||
"solski-test" : "Šolski test",
|
||||
"delo-v-razredu" : "Delo v razredu, ne za oceno",
|
||||
"E" : "Esej ali spis",
|
||||
"PB" : "Praktično besedilo, napisano za oceno",
|
||||
"T" : "Šolski test",
|
||||
"R" : "Delo v razredu, ne za oceno",
|
||||
}%}
|
||||
{% set map_grammar_corrections = {
|
||||
"popr-ne" : "Besedilo vsebuje učiteljske popravke",
|
||||
"brez-popr" : "Besedilo ne vsebuje učiteljskih popravkov",
|
||||
"popr-da" : "Besedilo vsebuje učiteljske popravke in ne strinjam se z njihovo vključitvijo v korpus",
|
||||
"DD" : "Besedilo vsebuje učiteljske popravke",
|
||||
"N" : "Besedilo ne vsebuje učiteljskih popravkov",
|
||||
"DN" : "Besedilo vsebuje učiteljske popravke in ne strinjam se z njihovo vključitvijo v korpus",
|
||||
}%}
|
||||
{% set map_regions = {
|
||||
"CE" : "Celje",
|
||||
"GO" : "Nova Gorica",
|
||||
"KK" : "Krško",
|
||||
"KP" : "Koper",
|
||||
"KR" : "Kranj",
|
||||
"LJ" : "Ljubljana",
|
||||
"MB" : "Maribor",
|
||||
"MS" : "Murska Sobota",
|
||||
"NM" : "Novo Mesto",
|
||||
"PO" : "Postojna",
|
||||
"SG" : "Slovenj Gradec",
|
||||
}%}
|
||||
|
||||
|
||||
|
||||
{% if upload_history|length == 0 %}
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<p>Zgodovina sodelovanja je trenutno še prazna.</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% for item in upload_history %}
|
||||
{% set item_values = [] %}
|
||||
{% if institution_names[loop.index - 1] %}
|
||||
{% set item_values = item_values + [institution_names[loop.index - 1]] %}
|
||||
{% endif %}
|
||||
{% if item.region %}
|
||||
{% set item_values = item_values + [map_regions[item.region]] %}
|
||||
{% endif %}
|
||||
{% if item.program %}
|
||||
{% set item_values = item_values + [map_program[item.program]] %}
|
||||
{% endif %}
|
||||
@@ -111,8 +135,9 @@
|
||||
<div class="history-item-date">Dodano {{ item.timestamp.strftime('%d. %m. %Y') }}</div>
|
||||
<div class="history-item-uploader">{{ uploader_names[loop.index - 1] }}</div>
|
||||
<div class="history-item-filecount">Št. datotek: {{ item.upload_file_hashes|length }}</div>
|
||||
<div class="history-item-chevron"><img src="{{ROUTE_PREFIX}}/static/image/chevron-down.svg"/></div>
|
||||
<div class="history-item-desc">
|
||||
{{ item_values | join(" | ") }}
|
||||
{{ item_values | join(" | ") |truncate(120) }}
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-6" style="margin:0">
|
||||
@@ -124,135 +149,50 @@
|
||||
</div>
|
||||
<div class="col-6" style="margin:0">
|
||||
<div class="history-item-files-full">
|
||||
{% for f in item.upload_file_hashes %}
|
||||
{% if item.upload_file_names != None %}
|
||||
{% for f_name in item.upload_file_names %}
|
||||
<div class="file-item">
|
||||
<div class="file-icon"><img src="/static/image/file.svg"/></div>
|
||||
<div class="file-name">Datoteka 1</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--<div class="bg"></div>
|
||||
<div id="main-window">
|
||||
<div id="rect1">
|
||||
<div style="padding: 20px;">
|
||||
<div id="logo-container">
|
||||
<img src="/static/image/logo.svg" alt="logo"/>
|
||||
</div>
|
||||
<h1 id="title" style="font-size: 25px; position: relative;">Korpus ŠOLAR</h1>
|
||||
<div class="selection-tabs">
|
||||
<button onclick="window.location.replace('../oddaja');" class="selection-tab-button">ODDAJA</button>
|
||||
<button onclick="window.location.replace('../zgodovina');" class="selection-tab-button selected">ZGODOVINA</button>
|
||||
<button onclick="window.location.replace('../pogodbe');" class="selection-tab-button">POGODBE</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="history-container" style="padding: 20px;">
|
||||
{% for item in upload_history %}
|
||||
<div class="history-item">
|
||||
<div class="history-item-date">{{ item.timestamp }}</div>
|
||||
<div class="history-item-uploader">{{ uploader_names[loop.index - 1] }}</div>
|
||||
<div class="history-item-filecount">Št. datotek: {{ item.upload_file_hashes|length }}</div>
|
||||
<div class="history-item-desc">
|
||||
[
|
||||
{% set began = False %}
|
||||
{% if institution_names[loop.index - 1] %}
|
||||
{% if began %}, {% endif %} {{ institution_names[loop.index - 1] }}
|
||||
{% set began = True %}
|
||||
<div class="file-icon"><img src="{{ROUTE_PREFIX}}/static/image/file.svg"/></div>
|
||||
<a href="getuploadfile/{{item.id}}/{{item.upload_file_hashes[loop.index - 1]}}" class="file-name" {% if item.upload_file_codes != None %}download="{{item.upload_file_codes[loop.index - 1]}}.{{f_name.split('.')[1]}}"{%endif%}>
|
||||
{% if item.upload_file_codes != None %}
|
||||
{{item.upload_file_codes[loop.index - 1]}}.{{f_name.split('.')[1]}}
|
||||
{%else%}
|
||||
{{f_name}}
|
||||
{% endif %}
|
||||
{% if item.program %}
|
||||
{% if began %}, {% endif %} {{ item.program }}
|
||||
{% set began = True %}
|
||||
{% endif %}
|
||||
{% if item.subject %}
|
||||
{% if began %}, {% endif %} {{ item.subject }}
|
||||
{% set began = True %}
|
||||
{% endif %}
|
||||
{% if item.subject_custom %}
|
||||
{% if began %}, {% endif %} {{ item.subject_custom }}
|
||||
{% set began = True %}
|
||||
{% endif %}
|
||||
{% if item.grade %}
|
||||
{% if began %}, {% endif %} {{ item.grade }}
|
||||
{% set began = True %}
|
||||
{% endif %}
|
||||
{% if item.text_type %}
|
||||
{% if began %}, {% endif %} {{ item.text_type }}
|
||||
{% set began = True %}
|
||||
{% endif %}
|
||||
{% if item.text_type_custom %}
|
||||
{% if began %}, {% endif %} {{ item.text_type_custom }}
|
||||
{% set began = True %}
|
||||
{% endif %}
|
||||
{% if item.school_year %}
|
||||
{% if began %}, {% endif %} {{ item.school_year }}
|
||||
{% set began = True %}
|
||||
{% endif %}
|
||||
{% if item.grammar_corrections %}
|
||||
{% if began %}, {% endif %} {{ item.grammar_corrections }}
|
||||
{% set began = True %}
|
||||
{% endif %}
|
||||
]
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</br>
|
||||
{% if item.upload_file_codes != None %}
|
||||
<!--<div>{{item.upload_file_codes[loop.index - 1]}}</div>-->
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
{% for f_hash in item.upload_file_hashes %}
|
||||
<div class="file-item">
|
||||
<div class="file-icon"><img src="{{ROUTE_PREFIX}}/static/image/file.svg"/></div>
|
||||
<a href="getuploadfile/{{item.id}}/{{f_hash}}" class="file-name">{{f_hash}}</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div id="rect2" class="mock-side">
|
||||
<canvas id="myChart" width="400" height="400"></canvas>
|
||||
<script>
|
||||
function drawChart(data) {
|
||||
var ctx = document.getElementById('myChart').getContext('2d');
|
||||
var myChart = new Chart(ctx, {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: Object.keys(data),
|
||||
datasets: [{
|
||||
label: 'št. naloženih datotek',
|
||||
data: Object.values(data),
|
||||
backgroundColor: 'rgba(54, 162, 235, 1.0)',
|
||||
borderWidth: 1
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
plugins: {
|
||||
title: {
|
||||
display: true,
|
||||
text: ''
|
||||
}
|
||||
},
|
||||
scales: {
|
||||
y: {
|
||||
beginAtZero: true
|
||||
}
|
||||
},
|
||||
indexAxis: 'y'
|
||||
}
|
||||
});
|
||||
}
|
||||
fetch('../topuploads').then(r => r.json()).then(j => drawChart(j));
|
||||
|
||||
</script>-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br/><br/><br/><br/><br/><br/><br/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
var toggleOpen = function() {
|
||||
@@ -262,6 +202,14 @@
|
||||
for (var i = 0; i < elements.length; i++) {
|
||||
elements[i].addEventListener('click', toggleOpen, false);
|
||||
}
|
||||
|
||||
var files = document.getElementsByClassName("file-item");
|
||||
for (var i = 0; i < files.length; i++) {
|
||||
files[i].addEventListener('click', function(e) {
|
||||
e.stopPropagation();
|
||||
}, false);
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user