Commit 46d52300 authored by shadMod's avatar shadMod 💬

Merge branch 'dev-shadmod-231010-1348' into merge-cherry

parents 93af9b6e 2b20b436
......@@ -12,5 +12,5 @@ __pycache__
.py[co]
# Compiled assets
/uitwww/static/website.css
/uitwww/static/assets/
/uitwww/static/website.js
......@@ -3,7 +3,7 @@ div.page div.row.background-wallpaper {
background: rgba(255, 255, 255, 0.5);
}
background: url("images/wallpapers/dotted.png") no-repeat 130% 10%;
background: url("../../images/wallpapers/dotted.png") no-repeat 130% 10%;
@media all and (max-width: 60rem) {
background: transparent;
......@@ -35,41 +35,41 @@ div.page div.row.background-wallpaper {
}
&.ubuntu, &.desktop {
background: url("images/wallpapers/ubuntu.jpg") 100% 0%;
background: url("../../images/wallpapers/ubuntu.jpg") 200% 0%;
}
&.kubuntu {
background: url("images/wallpapers/kubuntu.jpg") 100% 50%;
background: url("../../images/wallpapers/kubuntu.jpg") 200% 50%;
}
&.xubuntu {
background:
linear-gradient(rgba(100, 100, 100, 0.3), rgba(100, 100, 100, 0.3)),
url("images/wallpapers/xubuntu.jpg") 100% 50%;
url("../../images/wallpapers/xubuntu.jpg") 200% 50%;
}
&.lubuntu {
background: url("images/wallpapers/lubuntu.jpg") 100% 50%;
background: url("../../images/wallpapers/lubuntu.jpg") 200% 50%;
}
&.ubuntu-mate {
background:
linear-gradient(rgba(85, 85, 85, 0.3), rgba(85, 85, 85, 0.3)),
url("images/wallpapers/ubuntu-mate.jpg") 100% 50%;
url("../../images/wallpapers/ubuntu-mate.jpg") 200% 50%;
}
&.ubuntu-budgie {
background:
linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3)),
url("images/wallpapers/ubuntu-budgie.jpg") 100% 50%;
url("../../images/wallpapers/ubuntu-budgie.jpg") 200% 50%;
}
&.ubuntukylin {
background: url("images/wallpapers/ubuntu-kylin.jpg") 100% 50%;
background: url("../../images/wallpapers/ubuntu-kylin.jpg") 200% 50%;
}
&.ubuntustudio {
background: url("images/wallpapers/ubuntustudio.jpg") 100% 50%;
background: url("../../images/wallpapers/ubuntustudio.jpg") 200% 50%;
.box {
background: rgba(100, 100, 100, 0.25);
......@@ -77,16 +77,17 @@ div.page div.row.background-wallpaper {
}
&.ubuntu-touch {
background: url("images/wallpapers/ubuntu-touch.jpg") 100% 0%;
background: url("../../images/wallpapers/ubuntu-touch.jpg") 100% 0%;
}
&.nuovo-rilascio {
background: url("images/wallpapers/nuovo-rilascio.png") 100% 0%;
background: url("../../images/versions/jammy-jellyfish-desktop.jpg") 100% 0%;
}
&.banner-latest {
background: url("images/wallpapers/banner-latest.png") 100% 50%;
background: url("../../images/versions/jammy-jellyfish.jpg") 50% 50%;
}
}
div.page div.row.download-index-distro {
......@@ -174,3 +175,20 @@ div.page div.row div.col.image-attach-corner {
}
}
}
div.cookie-policy {
z-index: 10;
}
div.p-100 {
padding: 100px !important;
}
ul.item-list li {
margin: 0 0 0.25em 1.5em;
padding: 0 0 0 20px;
list-style-type: none;
background: url('https://www.ubuntu-it.org/sites/all/themes/light-drupal-theme/images/ubuntu-li.png') no-repeat left 4px;
font-size: 14px;
line-height: 20px;
}
\ No newline at end of file
:root {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg-rgb: 255, 255, 255;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-bg: #fff;
--bs-border-width: 1px;
--bs-border-style: solid;
--bs-border-color: #dee2e6;
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
--bs-border-radius: 0.375rem;
--bs-border-radius-sm: 0.25rem;
--bs-border-radius-lg: 0.5rem;
--bs-border-radius-xl: 1rem;
--bs-border-radius-2xl: 2rem;
--bs-border-radius-pill: 50rem;
--bs-link-color: #0d6efd;
--bs-link-hover-color: #0a58ca;
--bs-code-color: #d63384;
--bs-highlight-bg: #fff3cd;
}
.container,
.container-fluid,
.container-xxl,
.container-xl,
.container-lg,
.container-md,
.container-sm {
--bs-gutter-x: 1.5rem;
--bs-gutter-y: 0;
width: 100%;
padding-right: calc(var(--bs-gutter-x) * 0.5);
padding-left: calc(var(--bs-gutter-x) * 0.5);
margin-right: auto;
margin-left: auto;
}
@media (min-width: 576px) {
.container-sm, .container {
max-width: 540px;
}
}
@media (min-width: 768px) {
.container-md, .container-sm, .container {
max-width: 720px;
}
}
@media (min-width: 992px) {
.container-lg, .container-md, .container-sm, .container {
max-width: 960px;
}
}
@media (min-width: 1200px) {
.container-xl, .container-lg, .container-md, .container-sm, .container {
max-width: 1140px;
}
}
@media (min-width: 1400px) {
.container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {
max-width: 1320px;
}
}
.row {
--bs-gutter-x: 1.5rem;
--bs-gutter-y: 0;
display: flex;
flex-wrap: wrap;
margin-top: calc(-1 * var(--bs-gutter-y));
margin-right: calc(-0.5 * var(--bs-gutter-x));
margin-left: calc(-0.5 * var(--bs-gutter-x));
}
.row > * {
box-sizing: border-box;
flex-shrink: 0;
width: 100%;
max-width: 100%;
padding-right: calc(var(--bs-gutter-x) * 0.5);
padding-left: calc(var(--bs-gutter-x) * 0.5);
margin-top: var(--bs-gutter-y);
}
$size_width: ("sm": 576, "md": 768, "lg": 992, "xl": 1200, "xxl": 1400);
$list_cols: ("auto": "auto", "1": "8.33333333%", "2": "16.66666667%", "3": "25%", "4": "33.33333333%", "5": "41.66666667%", "6": "50%", "7": "58.33333333%", "8": "66.66666667%", "9": "75%", "10": "83.33333333%", "11": "91.66666667%", "12": "100%");
@each $col, $width in $list_cols {
.col-#{$col} {
flex: 0 0 auto;
width: #{$width};
}
}
@each $typology, $size in $size_width {
@media (min-width: #{$size}px) {
.col-#{$typology} {
flex: 1 0 0%;
}
@each $col, $width in $list_cols {
.col-#{$typology}-#{$col} {
flex: 0 0 auto;
width: #{$width};
}
}
}
}
$sizes: (25: "25%", 50: "50%", 75: "75%", 100: "100%", "auto": "auto");
@each $size, $width in $sizes {
.w-#{$size} {
width: #{$width} !important;
}
}
.m-auto {
margin: auto;
}
.text-justify {
text-align: justify !important;
}
......@@ -65,7 +65,7 @@ def clean(ctx):
exclude = ["%s/.git" % BASE, "%s/build" % BASE]
remove_files = [
re.compile(r'.py[co]$'), re.compile(r'.mo$'),
"%s/uitwww/static/website.css" % BASE,
"%s/uitwww/static/libs/main.css" % BASE,
]
remove_dirs = [
re.compile('__pycache__'),
......
......@@ -29,7 +29,7 @@ from . import redirects
from . import utils
def create_app(data_path):
def create_app(data_path, debug=False):
"""Create a new instance of the application"""
# Normalize the data path
data_path = os.path.expanduser(os.path.abspath(data_path))
......@@ -41,11 +41,11 @@ def create_app(data_path):
)
# Prepare the data directory
init_data_directory(data_path)
init_data_directory(data_path, debug)
# Load the secret key
with open(os.path.join(data_path, "secret_key")) as f:
app.secret_key = f.read().strip()
with open(os.path.join(data_path, "secret_key")) as fn:
app.secret_key = fn.read().strip()
# Initialize the database
app.db = db.Database(os.path.join(data_path, "database.db"))
......@@ -79,14 +79,14 @@ def create_app(data_path):
return app
def init_data_directory(data_path):
def init_data_directory(data_path, debug=False):
"""Initialize the data directory"""
src_directory = os.path.dirname(os.path.abspath(__file__))
# Create all the directories
dirs = ["", "cache"]
for dir in dirs:
os.makedirs(os.path.join(data_path, dir), exist_ok=True)
for name in dirs:
os.makedirs(os.path.join(data_path, name), exist_ok=True)
# Initialize the cache
static_dirs = {"static": "+assets"}
......@@ -105,6 +105,7 @@ def init_data_directory(data_path):
f.write("%s\n" % utils.random_key(64))
os.chmod(secret_key_path, 0o400)
if debug is False:
# Initialize the download files
download_inst = download.Downloads(data_path)
download_inst.store_cache_file()
......@@ -14,18 +14,16 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import functools
import time
import uuid
import yaml
import flask
import functools
import flask_openid
import pkg_resources
import time
import yaml
from .constants import UITWWW_DIR
from uitwww.third_party import openid_teams
SESSION_EXPIRES_AFTER = 86400
......@@ -148,8 +146,8 @@ class Sessions:
class Permissions:
def __init__(self):
raw = pkg_resources.resource_string("uitwww", "data/permissions.yml")
self.config = yaml.safe_load(raw.decode("utf-8"))
with open(UITWWW_DIR + "/data/permissions.yml") as fn:
self.config = yaml.safe_load(fn.read())
def allowed_teams(self):
"""Return a list of teams allowed to log in"""
......@@ -177,6 +175,7 @@ class Permissions:
def permission(perms):
"""Process the endpoint only if the user has permission"""
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
......@@ -200,6 +199,7 @@ def permission(perms):
return flask.abort(403)
return wrapper
return decorator
......@@ -277,7 +277,6 @@ def prepare_blueprint(app):
flask.flash("La sessione è stata terminata correttamente.", "success")
return flask.redirect(flask.url_for("pages.index"))
@bp.route("/sessions")
@permission("auth.sessions.manage")
def sessions_list():
......
import os
UITWWW_DIR = os.path.dirname(os.path.abspath(__file__))
BASE_DIR = os.path.join(UITWWW_DIR, "..")
......@@ -8,8 +8,8 @@ codename = "impish"
lts = false
[releases.lts]
version = "20.04.3"
codename = "focal"
version = "22.04.3"
codename = "jammy"
lts = true
......
......@@ -21,7 +21,7 @@
- name: Smartphone e tablet
endpoint: pages.scopri-ubuntu_ubuntu-touch
- name: 20.04 LTS Focal Fossa
- name: 22.04 LTS Jammy Jellyfish
endpoint: pages.scopri-ubuntu_nuovo-rilascio
- name: Derivate
......
......@@ -17,9 +17,6 @@
import threading
import sqlite3
import pkg_resources
_LOCAL = threading.local()
......
......@@ -22,15 +22,14 @@ import random
import collections
import flask
import itsdangerous
import requests
import pkg_resources
import itsdangerous
from . import cache
from . import launchpad
from .constants import UITWWW_DIR
CONFIG_FILE = "data/downloads.toml"
CONFIG_FILE = "/data/downloads.toml"
CACHE_FILE = "download-cache.json"
CACHE_FILE_VERSION = 1
......@@ -39,16 +38,16 @@ class Downloads:
def __init__(self, data_path):
# Load the configuration
raw = pkg_resources.resource_string("uitwww", CONFIG_FILE)
self.config = toml.loads(
raw.decode("utf-8"),
_dict=collections.OrderedDict,
path = UITWWW_DIR + CONFIG_FILE
self.config = toml.load(
path, _dict=collections.OrderedDict,
)
self._strip_non_lts_releases()
# Save the hash of the configuration
self._config_hash = "sha1=%s" % hashlib.sha1(raw).hexdigest()
with open(path, "rb") as raw:
self._config_hash = "sha1=%s" % hashlib.sha1(raw.read()).hexdigest()
self._cache_file = os.path.join(data_path, CACHE_FILE)
......
......@@ -15,13 +15,15 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
import sys
import click
import subprocess
import uitwww
from uitwww import utils
from scss.compiler import compile_file
from htmlmin import minify
from .constants import UITWWW_DIR, BASE_DIR
from .utils import ReverseProxied, GunicornInstance
@click.group()
......@@ -40,11 +42,8 @@ def cli():
@click.option("-d", "--debug", help="Enable debug mode", is_flag=True)
def run(data, gunicorn_config, port, public, workers, debug):
"""Run the application"""
# Create the application instance
src_directory = os.path.dirname(os.path.abspath(__file__))
app = uitwww.create_app(data)
app.wsgi_app = utils.ReverseProxied(app.wsgi_app)
app = uitwww.create_app(data, debug)
app.wsgi_app = ReverseProxied(app.wsgi_app)
host = "127.0.0.1"
if public:
......@@ -53,22 +52,22 @@ def run(data, gunicorn_config, port, public, workers, debug):
# In debug mode, run the flask builtin webserver
if debug:
extra_files = [
os.path.join(src_directory, "data/navbar.yml"),
os.path.join(src_directory, "data/permissions.yml"),
os.path.join(src_directory, "data/redirects.yml"),
os.path.join(src_directory, "data/downloads.toml"),
os.path.join(UITWWW_DIR, "data/navbar.yml"),
os.path.join(UITWWW_DIR, "data/permissions.yml"),
os.path.join(UITWWW_DIR, "data/redirects.yml"),
os.path.join(UITWWW_DIR, "data/downloads.toml"),
]
app.run(debug=True, port=port, host=host, extra_files=extra_files)
# Else run the application with gunicorn
else:
options = {
"bind": host+":"+str(port),
"bind": host + ":" + str(port),
"workers": workers,
"accesslog": "-",
"errorlog": "-",
}
server = utils.GunicornInstance(gunicorn_config, options)
server = GunicornInstance(gunicorn_config, options)
server.app = app
try:
......@@ -79,25 +78,28 @@ def run(data, gunicorn_config, port, public, workers, debug):
@cli.command("init")
@click.argument("data")
def init(data):
@click.option("-d", "--debug", help="Enable debug mode", is_flag=True)
def init(data, debug):
"""Initialize the data directory"""
print("Initializing data directory:", data)
data_path = os.path.expanduser(os.path.abspath(data))
uitwww.init_data_directory(data_path)
uitwww.init_data_directory(data_path, debug)
@cli.command("build_scss")
def build_scss():
"""Build the scss file"""
base_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..')
scss_file = open('%s/assets/scss/www.scss' % base_dir, 'rb')
css_file = open('%s/uitwww/static/website.css' % base_dir, 'wb')
subprocess.run(
[sys.executable, '-mscss'],
stdin=scss_file,
stdout=css_file,
check=True,
)
css_file.flush()
scss_file.close()
css_file.close()
"""Compile the scss file"""
print("Compile the scss file")
# init list of css path
css_path = ["libs/main", "vendor/bootstrap_v5"]
for val in css_path:
# init path css
path = f"{UITWWW_DIR}/static/assets/{val}.css"
# check and mk dir if dir_ not exists
if not os.path.isdir(os.path.dirname(path)):
os.makedirs(os.path.dirname(path))
# open file, compile and write css
with open(path, "w") as fn:
fn.write(minify(compile_file(
f"{BASE_DIR}/assets/scss/{val}.scss"
)))
......@@ -14,10 +14,10 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import flask
import json
import pkg_resources
import yaml
import flask
from .constants import UITWWW_DIR
class Navbar:
......@@ -55,8 +55,8 @@ class Navbar:
def install(self, app):
"""Install this navbar on the app"""
raw = pkg_resources.resource_string("uitwww", "data/navbar.yml")
config = yaml.safe_load(raw.decode("utf-8"))
with open(UITWWW_DIR + "/data/navbar.yml") as fn:
config = yaml.safe_load(fn.read())
self._prepare_navbar_cache(config, [])
# Add the _navbars variable to the templates
......
......@@ -15,10 +15,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
import json
import flask
import pkg_resources
from uitwww import cache
......
......@@ -14,16 +14,17 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import flask
import pkg_resources
import yaml
import flask
import hashlib
from .constants import UITWWW_DIR
def prepare_blueprint(app):
"""Prepare a blueprint containing all the redirects"""
raw = pkg_resources.resource_string("uitwww", "data/redirects.yml")
config = yaml.safe_load(raw.decode("utf-8"))
with open(UITWWW_DIR + "/data/redirects.yml") as fn:
config = yaml.safe_load(fn.read())
bp = flask.Blueprint("redirects", __name__)
......
{# Source code of the Ubuntu-it website
# Copyright (C) 2015 Pietro Albini <pietroalbini@ubuntu.com>
# Copyright (C) 2020 Alessandro Viprati <vipri.alessandro@gmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; witout even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
# Copyright (C) 2015 Pietro Albini <pietroalbini@ubuntu.com>
# Copyright (C) 2020 Alessandro Viprati <vipri.alessandro@gmail.com>
# Copyright (C) 2023 shadMod
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; witout even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
{% extends "layout.html" %}
{% block title %}Download{% endblock %}
{% block title %}
Download
{% endblock %}
{% block content %}
<div class="page">
<div class="row">
<div class="page">
<div class="row w-100 m-auto">
<div class="col text-center">
<h1>Scarica Ubuntu</h1>
<p class="intro">Entra subito nel mondo Ubuntu. Scaricalo ora!</p>
</div>
<h1>
Scarica Ubuntu
</h1>
<p class="intro">
Entra subito nel mondo Ubuntu. Scaricalo ora!
</p>
</div>
</div>
</div>
<div class="page">
<div class="page">
{% for name, data in distros.items() %}
<div class="row download-index-distro background-wallpaper {{ name }}">
<div class="row download-index-distro background-wallpaper {{ name }} w-100 m-auto">
<div class="col">
<h2>{{ data["name"] }}</h2>
<p>{{ data["description"] }}</p>
<h2>
{{ data["name"] }}
</h2>
<p>
{{ data["description"] }}
</p>
</div>
<div class="col col-center col-quarter">
<a class="btn" href="{{ url_for("download.landing", distro = name) }}">
<a class="btn" href="{{ url_for('download.landing', distro = name) }}">
Scaricalo ora
</a>
</div>
</div>
{% endfor %}
</div>
</div>
{% endblock %}
{# Source code of the Ubuntu-it website
# Copyright (C) 2015-2018 Pietro Albini <pietroalbini@ubuntu.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; witout even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
# Copyright (C) 2015 Pietro Albini <pietroalbini@ubuntu.com>
# Copyright (C) 2023 shadMod
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; witout even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
{% from "macros.html" import nav_item with context %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<head>
<title>{% block title %}Senza titolo{% endblock %} - Ubuntu-it</title>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">
<link rel="stylesheet" href="https://static.ubuntu-it.org/fonts/ubuntu/include.min.css">
<link rel="stylesheet" href="https://static.ubuntu-it.org/themes/italy/theme.min.css">
<link rel="stylesheet" href="{{ url_for("static", filename="website.css") }}">
<link rel="shortcut icon" href="{{ url_for("static", filename="favicon.ico") }}">
<link rel="stylesheet" href="{{ url_for('static', filename='assets/vendor/bootstrap_v5.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='assets/libs/main.css') }}">
{% block extra_header %}{% endblock %}
</head>
<body {% block extra_body %}{% endblock %}>
<div class="cookie-policy hidden">
</head>
<body {% block extra_body %}{% endblock %}>
<div class="cookie-policy hidden">
<div class="container">
<span>
Questo sito utilizza i cookie per offrirti un'esperienza
migliore. Continuando la navigazione ne accetti l'uso.
</span>
<a href="{{ url_for("pages.cookies") }}" id="ubuntuit-cookiepolicy-hide">OK</a>
<a href="#">Maggiori informazioni</a>
</div>
<a href="{{ url_for('pages.cookies') }}" id="ubuntuit-cookiepolicy-hide">
OK
</a>
<a href="#">
Maggiori informazioni
</a>
</div>
</div>
{% if g.auth_name %}
<nav class="sites-list">
{% if g.auth_name %}
<nav class="sites-list">
<div class="container">
<ul class="left">
{% if permission("auth.sessions.manage") %}
<li><a href="{{ url_for("auth.sessions_list") }}">
<li>
<a href="{{ url_for('auth.sessions_list') }}">
Sessioni attive: {{ g.auth_sessions_count }}
</a></li>
</a>
</li>
{% endif %}
{% if permission("actions.show") %}
<li><a href="{{ url_for("actions.show") }}">
<li>
<a href="{{ url_for('actions.show') }}">
Azioni recenti
</a></li>
</a>
</li>
{% endif %}
</ul>
<ul class="right">
{% if permission("auth.sessions.own") %}
<li><a href="{{ url_for("auth.sessions_show", id=g.auth_id) }}">
<li>
<a href="{{ url_for('auth.sessions_show', id=g.auth_id) }}">
{{ g.auth_name }}
</a></li>
</a>
</li>
{% endif %}
{% if permission("auth.logout") %}
<li><a href="{{ url_for("auth.logout") }}">Esci</a></li>
<li>
<a href="{{ url_for('auth.logout') }}">
Esci
</a>
</li>
{% endif %}
</ul>
</div>
</nav>
{% endif %}
</nav>
{% endif %}
<nav class="sites-list">
<nav class="sites-list">
<div class="container">
<ul>
<li><a href="{{ url_for('pages.index') }}" class="active">Sito web</a></li>
<li><a href="https://wiki.ubuntu-it.org">Wiki</a></li>
<li><a href="https://forum.ubuntu-it.org">Forum</a></li>
<li><a href="https://chiedi.ubuntu-it.org">Chiedi</a></li>
<li><a href="https://chat.ubuntu-it.org">Chat</a></li>
<li><a href="https://cerca.ubuntu-it.org">Cerca</a></li>
<li><a href="https://planet.ubuntu-it.org">Planet</a></li>
<li>
<a href="{{ url_for('pages.index') }}" class="active">
Sito web
</a>
</li>
<li>
<a href="https://wiki.ubuntu-it.org">
Wiki
</a>
</li>
<li>
<a href="https://forum.ubuntu-it.org">
Forum
</a>
</li>
<li>
<a href="https://chiedi.ubuntu-it.org">
Chiedi
</a>
</li>
<li>
<a href="https://chat.ubuntu-it.org">
Chat
</a>
</li>
<li>
<a href="https://cerca.ubuntu-it.org">
Cerca
</a>
</li>
<li>
<a href="https://planet.ubuntu-it.org">
Planet
</a>
</li>
</ul>
<ul class="right">
<li><a href="https://www.facebook.com/ubuntu.it">Facebook</a></li>
<li><a href="https://twitter.com/ubuntuit">Twitter</a></li>
<li><a href="https://www.youtube.com/ubuntuitpromozione">YouTube</a></li>
<li><a href="https://telegram.me/ubuntuit">Telegram</a></li>
<li>
<a href="https://www.facebook.com/ubuntu.it">
Facebook
</a>
</li>
<li>
<a href="https://twitter.com/ubuntuit">
Twitter
</a>
</li>
<li>
<a href="https://www.youtube.com/ubuntuitpromozione">
YouTube
</a>
</li>
<li>
<a href="https://telegram.me/ubuntuit">
Telegram
</a>
</li>
</ul>
</div>
</nav>
</nav>
{% for navbar in _navbars %}
<nav {%- if loop.index == 1 %} class="main-navbar"{% endif %}>
{% for navbar in _navbars %}
<nav {%- if loop.index== 1 %} class="main-navbar" {% endif %}>
<div class="container">
<ul>
{% if loop.index == 1 %}
<li class="site-name"><a href="{{ url_for("pages.index") }}">ubuntu-it</a></li>
<li class="site-name">
<a href="{{ url_for('pages.index') }}">
ubuntu-it
</a>
</li>
{% endif -%}
{%- for name, url, active in navbar %}
<li>
<a {%- if active %} class="active"{% endif %} href="{{ url }}">{{ name }}</a>
<a {%- if active %} class="active" {% endif %} href="{{ url }}">
{{ name }}
</a>
</li>
{% endfor %}
</ul>
</div>
</nav>
{% endfor %}
</nav>
{% endfor %}
<div class="container">
<div class="container">
{% with messages = get_flashed_messages(with_categories=True) %}
{% if messages %}
{% for category, message in messages %}
<div class="alert {% if category != "message" %}{{ category }}{% else %}info{% endif %}">
<div class="alert {% if category != 'message' %}{{ category }}{% else %}info{% endif %}">
{{ message }}
<span class="close">&times;</span>
</div>
......@@ -129,37 +195,54 @@
<footer>
<p>
Ubuntu e Canonical sono marchi registrati da Canonical
Ltd.
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.
</p>
<p>
Sito web realizzato dal Gruppo Web di Ubuntu-it, con
<a href="https://www.python.org/">Python</a>,
<a href="https://www.palletsproject.com/p/flask/">Flask</a> e
<a href="https://www.sqlite.org/">SQLite</a>.
<a href="https://www.python.org/">
Python
</a>,
<a href="https://www.palletsproject.com/p/flask/">
Flask
</a>
e
<a href="https://www.sqlite.org/">
SQLite
</a>.
</p>
<ul>
<li><a href="{{ url_for("pages.cookies") }}">
<li>
<a href="{{ url_for('pages.cookies') }}">
Informativa sui cookie
</a></li>
<li><a href="https://code.ubuntu-it.org/ubuntu-it-web/www/issues">
</a>
</li>
<li>
<a href="https://code.ubuntu-it.org/ubuntu-it-web/www/issues">
Segnala un problema
</a></li>
<li><a href="https://code.ubuntu-it.org/ubuntu-it-web/www">
</a>
</li>
<li>
<a href="https://code.ubuntu-it.org/ubuntu-it-web/www">
Codice sorgente
</a></li>
<li><a href="https://wiki.ubuntu-it.org/GruppoWeb">
</a>
</li>
<li>
<a href="https://wiki.ubuntu-it.org/GruppoWeb">
Collabora con noi
</a></li>
</a>
</li>
{% if not g.auth_name %}
<li><a href="{{ url_for("auth.login") }}">
<li>
<a href="{{ url_for('auth.login') }}">
Accedi
</a></li>
</a>
</li>
{% endif %}
</ul>
</footer>
</div>
</div>
<script type="text/javascript" src="https://static.ubuntu-it.org/themes/italy/theme.min.js"></script>
<script type="text/javascript" src="https://static.ubuntu-it.org/themes/italy/theme.min.js"></script>
</body>
</body>
</html>
{# Source code of the Ubuntu-it website
# Copyright (C) 2015 Pietro Albini <pietroalbini@ubuntu.com>
# 2015 Riccardo Padovani <rpadovani@ubuntu.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; witout even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
{% extends "layout.html" %}
{% block title %}Contatti{% endblock %}
{% block title %}
Contatti
{% endblock %}
{% block content %}
<div class="page">
<div class="row">
<div class="col">
<h1 class="text-center">Contatti</h1>
<p class="intro text-center">Gli indirizzi mail e le pagine di contatto di Ubuntu-it. Collabora con noi!</p>
<h1 class="text-center">
Contatti
</h1>
<p class="intro text-center">
Gli indirizzi mail e le pagine di contatto di Ubuntu-it. Collabora con noi!
</p>
</div>
</div>
</div>
......@@ -77,6 +66,7 @@
<h2>Gruppi di lavoro</h2>
<p>
La comunità italiana di Ubuntu è organizzata in gruppi di lavoro.
<br/>
Per entrare in contatto con noi e contribuire a rendere Ubuntu
migliore, scrivici utilizzando i canali qui riportati.
</p>
......@@ -206,8 +196,12 @@
</div>
<div class="row text-center">
<div class="col">
<a class="btn" href="http://liste.ubuntu-it.org/cgi-bin/mailman/listinfo">Elenco mailing list</a>
<a class="btn" href="{{ url_for("pages.supporto") }}">Canali di supporto</a>
<a class="btn" href="http://liste.ubuntu-it.org/cgi-bin/mailman/listinfo">
Elenco mailing list
</a>
<a class="btn" href="{{ url_for('pages.supporto') }}">
Canali di supporto
</a>
</div>
</div>
</div>
......
{# Source code of the Ubuntu-it website
# Copyright (C) 2015 Pietro Albini <pietroalbini@ubuntu.com>
# 2015 Marco Montabone <montabone.mrc@gmail.com>
# 2019-2020 Alessandro Viprati <vipri.alessandro@gmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; witout even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
# Copyright (C) 2015 Pietro Albini
<pietroalbini@ubuntu.com>
# 2015 Marco Montabone
<montabone.mrc@gmail.com>
# 2019-2020 Alessandro Viprati
<vipri.alessandro@gmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; witout even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see
<http://www.gnu.org/licenses/>.
#}
{% extends "layout.html" %}
......@@ -24,8 +28,18 @@
<div class="page">
<div class="row background-wallpaper ubuntu-budgie">
<div class="col">
<h1 class="text-center">Ubuntu Budgie</h1>
<p class="intro text-center"><a href="https://ubuntubudgie.org/" target="_blank">Ubuntu Budgie</a> è la versione di Ubuntu basata sull'ambiente grafico <a href="https://github.com/solus-project/budgie-desktop" target="_blank">Budgie</a>.</p>
<h1 class="text-center">
Ubuntu Budgie
</h1>
<p class="intro text-center">
<a href="https://ubuntubudgie.org/" target="_blank">
Ubuntu Budgie
</a>
è la versione di Ubuntu basata sull'ambiente grafico
<a href="https://github.com/solus-project/budgie-desktop" target="_blank">
Budgie
</a>.
</p>
</div>
</div>
</div>
......@@ -40,104 +54,87 @@
</p>
</div>
<div class="col col-quarter">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-budgie/ubuntu-budgie-logo.png") }}" alt="Logo di Ubuntu Budgie">
<img src="{{ url_for('static', filename='images/derivate/ubuntu-budgie/ubuntu-budgie-logo.png') }}"
alt="Logo di Ubuntu Budgie">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<h2>
Flessibile
</h2>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
L'utilizzo di Ubuntu Budgie offre la libertà di eseguire un sistema operativo completo e ricco di
funzionalità, preconfigurato con la maggior parte, se non tutte, le applicazioni necessarie per
l'attività informatica quotidiana, o di modificare l'aspetto, il funzionamento o le applicazioni
eseguite in base ai propri gusti.
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-budgie/file.png") }}" alt="Nome">
<img src="{{ url_for('static', filename='images/derivate/ubuntu-budgie/ubuntu-budgie-desktop.png') }}">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<h2>
Sicuro
</h2>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
Ubuntu Budgie è stato progettato pensando alla sicurezza. A differenza dei sistemi operativi che si
aggiornano solo una volta al mese, Ubuntu Budgie riceve aggiornamenti continui. Gli aggiornamenti
includono patch di sicurezza per Ubuntu Budgie e tutti i suoi componenti. Anche gli aggiornamenti di
sicurezza per tutte le applicazioni installate vengono forniti con la stessa frequenza. In questo modo
si ha la certezza di avere la protezione più recente per tutto il software del computer, non appena
disponibile!
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-budgie/file.png") }}" alt="Nome">
<img src="{{ url_for('static', filename='images/derivate/ubuntu-budgie/ubuntu-budgie-security.png') }}">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<h2>
Software per ogni esigenza
</h2>
<p>
Testo.
</p>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
Ubuntu Budgie aggiunge una raccolta di applicazioni aggiuntive per trasformare il computer in una
workstation davvero potente: dalla produttività all'intrattenimento!
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-budgie/file.png") }}" alt="Nome">
<img src="{{ url_for('static', filename='images/derivate/ubuntu-budgie/ubuntu-budgie-everything.jpg') }}">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-budgie/file.png") }}" alt="Nome">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<h2>
Powered by Steam
</h2>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
Negli ultimi due anni Linux è diventato una piattaforma di gioco di prima classe grazie all'arrivo della
piattaforma Steam su Linux. Al momento in cui scriviamo, Steam ha più di 2000 titoli indie e AAA di alta
qualità pronti per Ubuntu Budgie. Se Steam è un importante passo avanti per il gioco su Linux, ci sono
anche molti titoli Open Source di alta qualità e divertenti disponibili per Ubuntu Budgie. Non importa
se vi piacciono i simulatori di volo, le corse automobilistiche, gli sparatutto in prima persona, i
giochi di salto e corsa o di carte, troverete qualcosa che vi intratterrà.
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-budgie/file.png") }}" alt="Nome">
<img src="{{ url_for('static', filename='images/derivate/ubuntu-budgie/ubuntu-budgie-steam.jpg') }}">
</div>
</div>
<div class="row text-center">
<div>
<a class="btn" href="{{ url_for("download.landing", distro="ubuntu-budgie") }}">Scarica Ubuntu Budgie</a>
<a class="btn" href="https://ubuntubudgie.org/">Sito internazionale</a>
<a class="btn" href="https://ubuntubudgie.org/about">Per saperne di più</a>
<a class="btn" href="{{ url_for('download.landing', distro='ubuntu-budgie') }}">
Scarica Ubuntu Budgie
</a>
<a class="btn" href="https://ubuntubudgie.org/">
Sito internazionale
</a>
<a class="btn" href="https://ubuntubudgie.org/about">
Per saperne di più
</a>
</div>
</div>
</div>
......
......@@ -40,97 +40,7 @@
</p>
</div>
<div class="col col-quarter">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-kylin/ubuntu-kylin-logo.png") }}" alt="Logo di Ubuntu Kylin">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-kylin/file.png") }}" alt="Nome">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-kylin/file.png") }}" alt="Nome">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-kylin/file.png") }}" alt="Nome">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-kylin/file.png") }}" alt="Nome">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-kylin/file.png") }}" alt="Nome">
<img src="{{ url_for('static', filename='images/derivate/ubuntu-kylin/ubuntu-kylin-logo.png') }}" alt="Logo di Ubuntu Kylin">
</div>
</div>
<div class="row text-center">
......
......@@ -44,96 +44,6 @@
<img src="{{ url_for("static", filename="images/derivate/ubuntu-mate/ubuntu-mate-logo.png") }}" alt="Logo di Ubuntu MATE">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-mate/file.png") }}" alt="Nome">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-mate/file.png") }}" alt="Nome">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-mate/file.png") }}" alt="Nome">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-mate/file.png") }}" alt="Nome">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-mate/file.png") }}" alt="Nome">
</div>
</div>
<div class="row text-center">
<div>
<a class="btn" href="{{ url_for("download.landing", distro="ubuntu-mate") }}">Scarica Ubuntu MATE</a>
......
......@@ -44,96 +44,6 @@
<img src="{{ url_for("static", filename="images/derivate/ubuntu-studio/ubuntu-studio-logo.png") }}" alt="Logo di Ubuntu Studio">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-studio/file.png") }}" alt="Nome">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-studio/file.png") }}" alt="Nome">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-studio/file.png") }}" alt="Nome">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-studio/file.png") }}" alt="Nome">
</div>
</div>
<div class="row">
<div class="col" align="justify">
<h2>Titolo2</h2>
<p>
Testo.
</p>
<p>
<ul>
<li>Testo.</li>
<li>Testo.</li>
<li>Testo.</li>
</ul>
</p>
</div>
<div class="col">
<img src="{{ url_for("static", filename="images/derivate/ubuntu-studio/file.png") }}" alt="Nome">
</div>
</div>
<div class="row text-center">
<div>
<a class="btn" href="{{ url_for("download.landing", distro="ubuntu-studio") }}">Scarica Ubuntu Studio</a>
......
{# Source code of the Ubuntu-it website
# Copyright (C) 2015 Pietro Albini <pietroalbini@ubuntu.com>
# Copyright (C) 2021 Alessandro Viprati <vipri.alessandro@gmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; witout even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
# Copyright (C) 2015 Pietro Albini <pietroalbini@ubuntu.com>
# Copyright (C) 2021 Alessandro Viprati <vipri.alessandro@gmail.com>
# Copyright (C) 2023 shadMod
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; witout even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
{% extends "layout.html" %}
{% block title %}Home page{% endblock %}
{% block title %}
Home page
{% endblock %}
{% block content %}
<div class="page">
<div class="row background-wallpaper banner-latest" style="padding: 80px;">
<div class="row background-wallpaper banner-latest p-100">
<div class="col text-center">
<h1>Ubuntu 21.10</h1>
<p class="intro text-center">Le ultime novità dal mondo del software
libero, con stile.</p>
<a class="btn" href="{{ url_for("pages.scopri-ubuntu_nuovo-rilascio") }}">Scopri di più</a>
<a class="btn" href="{{ url_for("download.landing", distro="desktop") }}">Scarica Ubuntu</a>
<h1>
Ubuntu 22.04
</h1>
<p class="intro text-center">
Le ultime novità dal mondo del software libero, con stile.
</p>
<a class="btn" href="{{ url_for('pages.scopri-ubuntu_nuovo-rilascio') }}">
Scopri di più
</a>
<a class="btn" href="{{ url_for('download.landing', distro='desktop') }}">
Scarica Ubuntu
</a>
</div>
</div>
</div>
<div class="page">
<div class="row">
<div class="col">
<h2>Comunità italiana</h2>
<p>Ubuntu-it è la comunità italiana di Ubuntu organizzata in
<a href="{{ url_for('pages.comunita_index') }}">gruppi di lavoro</a>,
ciascuno con obbiettivi diversi: dallo sviluppo
al supporto, alla documentazione, alla promozione...</p>
<h2>
Comunità italiana
</h2>
<p>
Ubuntu-it è la comunità italiana di Ubuntu.
</p>
<p>
Essa è organizzata in diversi
<a href="{{ url_for('pages.comunita_index') }}">
gruppi di lavoro
</a>,
coordinati dal Consiglio della comunità, ciascuno con un obiettivo diverso:
dallo sviluppo, al supporto fino alla promozione.
</p>
</div>
<div class="col">
<h2>Derivate</h2>
<p>Interfacce diverse ma sotto batte lo stesso cuore, per essere
libero di scegliere. Scopri le differenze e gli obiettivi nella
<a href="{{ url_for('pages.derivate_index') }}">pagina dedicata</a>.</p>
<h2>
Derivate
</h2>
<p>
Interfacce diverse ma sotto batte lo stesso cuore, per essere libero di scegliere.
</p>
<p>
Scopri le differenze e gli obiettivi nella
<a href="{{ url_for('pages.derivate_index') }}">
pagina dedicata
</a>.
</p>
</div>
<div class="col">
<h2>Supporto</h2>
<p>Cerca risposte alle tue domande nei
<a href="{{ url_for('pages.supporto') }}">portali di Ubuntu-it</a> e
aiutaci a fornire supporto a chi ne ha bisogno.</p>
<h2>
Supporto
</h2>
<p>
Cerca risposte alle tue domande nei
<a href="{{ url_for('pages.supporto') }}">
portali di Ubuntu-it
</a>
e aiutaci a fornire supporto a chi ne ha bisogno.
</p>
</div>
</div>
</div>
<div class="page">
<div class="row">
<div class="col">
<h2>Ultime novità</h2>
<h2>
Scopri Ubuntu
</h2>
<p>
Veloce, sicuro ed elegantemente semplice.
</p>
<p>
Ubuntu è usato da più di 20 milioni di persone in tutto il mondo ogni giorno.
</p>
</div>
<div class="col">
<p>inserire link ultimi articoli <a href="/news">blog</a>.</p>
<h2>
Ultime novità
</h2>
<ul class="item-list">
<li>
<a href="{{ url_for('pages.derivate_index') }}">
Newsletter Italiana #Ubuntu - 2023.030
</a>
</li>
<li>
<a href="{{ url_for('pages.derivate_index') }}">
Newsletter Italiana #Ubuntu - 2023.029
</a>
</li>
<li>
<a href="{{ url_for('pages.derivate_index') }}">
Newsletter Italiana #Ubuntu - 2023.028
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="page">
<div class="row">
<div class="col col-fourth col-center">
<div class="col">
<h2 class="text-center">
Sponsor tecnici
</h2>
<div class="row">
<div class="col text-center">
<a href="https://www.infomaniak.com/it">
<img src="{{ url_for('static', filename='images/sponsor/infomaniak.png')}}"
style="height:150px;" alt="infomaniak logo"/>
</a>
</div>
<div class="col col-fourth col-center">
<h2>Sponsor tecnico</h2>
<div class="col text-center">
<a href="https://www.top-ix.org/it/home/">
<img src="{{ url_for('static', filename='images/sponsor/topix-logo.png')}}"
style="height:150px;" alt="Top-ix logo"/>
</a>
</div>
<div class="col col-fourth col-center">
<p><a href="http://www.top-ix.org"><img src="{{ url_for("static", filename="images/logo/topix-logo.jpg") }}" style="width:203px; height:150px;" alt="Top-ix logo" /></a></p>
</div>
<div class="col col-fourth col-center">
</div>
</div>
</div>
......
{# Source code of the Ubuntu-it website
# Copyright (C) 2015 Pietro Albini <pietroalbini@ubuntu.com>
# 2015 Riccardo Padovani <rpadovani@ubuntu.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; witout even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
# Copyright (C) 2015 Pietro Albini <pietroalbini@ubuntu.com>
# Copyright (C) 2021 Alessandro Viprati <vipri.alessandro@gmail.com>
# Copyright (C) 2023 shadMod
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; witout even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
{% extends "layout.html" %}
{% block title %}Server{% endblock %}
{% block content %}
<div class="page">
<div class="page container">
<div class="row background-wallpaper server">
<div class="col">
<h1 class="text-center">Server</h1>
<h1 class="text-center">
Server
</h1>
<p class="intro text-center">
Il sistema operativo per server aziendali di tutti i tipi e dimensioni.
</p>
</div>
</div>
</div>
<div class="page container">
<div class="row">
<div class="col">
<h2 class="text-center">Performante</h2>
<h2 class="text-center">
Performante
</h2>
<p>
Ubuntu Server è progettato per server aziendali, ogni suo
elemento si integra perfettamente sulla macchina ospitante.
Ubuntu Server è progettato per server aziendali, ogni suo elemento si integra perfettamente sulla
macchina ospitante.
</p>
</div>
<div class="col">
<h2 class="text-center">Sicuro</h2>
<h2 class="text-center">
Sicuro
</h2>
<p>
Dopo l'installazione Ubuntu Server non presenta nessuna porta
aperta verso l'esterno e contiene solo il software necessario
per un server sicuro.
Dopo l'installazione Ubuntu Server non presenta nessuna porta aperta verso l'esterno e contiene solo il
software necessario per un server sicuro.
</p>
</div>
</div>
<div class="row">
<div class="col">
<h2 class="text-center">Integrato</h2>
<h2 class="text-center">
Integrato
</h2>
<p>
Anche se in azienda non si utilizzano computer con Ubuntu
desktop non c'è alcun problema. Ubuntu Server permette
l'autenticazione da qualsiasi sistema: Linux, Mac Os o Windows.
Anche se in azienda non si utilizzano computer con Ubuntu desktop non c'è alcun problema. Ubuntu Server
permette l'autenticazione da qualsiasi sistema: Linux, Mac Os o Windows.
</p>
</div>
<div class="col">
<h2 class="text-center">Una scelta strategica</h2>
<h2 class="text-center">
Una scelta strategica
</h2>
<p>
Basata su Debian, famosa per la robustezza, l'edizione Server di
Ubuntu ne eredita le ottime prestazioni e aggiornamenti regolari.
Ubuntu Server fornisce un'ottima piattaforma per sviluppare server
con i più diffusi servizi internet: mail, web, DNS, server di file o database.
Basata su Debian, famosa per la robustezza, l'edizione Server di Ubuntu ne eredita le ottime prestazioni
e aggiornamenti regolari. Ubuntu Server fornisce un'ottima piattaforma per sviluppare server con i più
diffusi servizi internet: mail, web, DNS, server di file o database.
</p>
</div>
</div>
</div>
<div class="page container">
<div class="row">
<div class="col">
<h2 class="text-center">Rilasci programmati su cui poter contare</h2>
<h2 class="text-center">
Rilasci programmati su cui poter contare
</h2>
<p>
I rilasci a lungo termine (LTS) sono supportati da Canonical
per cinque anni. Ogni sei mesi, i rilasci intermedi forniscono
nuovo software, mentre gli
<a href="https://wiki.ubuntu-it.org/Rilasci/PointRelease">aggiornamenti HWE</a>
I rilasci a lungo termine (LTS) sono supportati da Canonical per cinque anni. Ogni sei mesi, i rilasci
intermedi forniscono nuovo software, mentre gli
<a href="https://wiki.ubuntu-it.org/Rilasci/PointRelease">
aggiornamenti HWE
</a>
forniscono supporto per le nuove macchine a tutti i rilasci LTS.
</p><br>
<img src="{{ url_for("static", filename="images/scopri-ubuntu/server/releases.png") }}">
<img src="{{ url_for('static', filename='images/scopri-ubuntu/server/releases.png') }}">
</div>
</div>
<div class="row text-center">
<div>
<a class="btn" href="{{ url_for("download.landing", distro="server") }}">Scarica Ubuntu server</a>
<a class="btn" href="https://www.ubuntu.com/server">Scopri di più sul sito internazionale</a>
<a class="btn" href="{{ url_for('download.landing', distro='server') }}">
Scarica Ubuntu server
</a>
<a class="btn" href="https://www.ubuntu.com/server">
Scopri di più sul sito internazionale
</a>
</div>
</div>
</div>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment