diff --git a/.env b/.env
new file mode 100644
--- /dev/null
+++ b/.env
@@ -0,0 +1,7 @@
+
+###> symfony/framework-bundle ###
+APP_ENV=dev
+APP_SECRET=87b885b76ea9992c5ef17c9eea8a8c65
+#TRUSTED_PROXIES=127.0.0.1,127.0.0.2
+#TRUSTED_HOSTS='^localhost|example\.com$'
+###< symfony/framework-bundle ###
diff --git a/.gitignore b/.gitignore
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,29 @@
*.pyc
+*.lock
+vendor
+bin
+var
+logs
+public/stable5
+public/trunk5
+src/Data/
+config/services.php
+
+###> symfony/webpack-encore-bundle ###
+/node_modules/
+/public/build/
+npm-debug.log
+yarn-error.log
+###< symfony/webpack-encore-bundle ###
+###> symfony/framework-bundle ###
+/.env.local
+/.env.local.php
+/.env.*.local
+/public/bundles/
+/var/
+/vendor/
+###< symfony/framework-bundle ###
+
+###> symfony/web-server-bundle ###
+/.web-server-pid
+###< symfony/web-server-bundle ###
diff --git a/404.php b/404.php
deleted file mode 100644
--- a/404.php
+++ /dev/null
@@ -1,9 +0,0 @@
-
diff --git a/assets/css/app.scss b/assets/css/app.scss
new file mode 100644
--- /dev/null
+++ b/assets/css/app.scss
@@ -0,0 +1 @@
+@import './base';
diff --git a/assets/css/base.scss b/assets/css/base.scss
new file mode 100644
--- /dev/null
+++ b/assets/css/base.scss
@@ -0,0 +1,601 @@
+@import "~bootstrap/scss/bootstrap";
+@import '~jquery-ui/themes/base/all.css';
+
+body {
+ font-family:'Noto Sans', sans-serif
+}
+p {
+ line-height:2em
+}
+h1,h2,h3 {
+ line-height:1.5em
+}
+ul>li {
+ line-height:2em
+}
+.header {
+ position:sticky;
+ top:0;
+ display:block;
+ z-index:2;
+ background-color:rgba(255,255,255,0.95)
+}
+.header>* {
+ margin:auto;
+ max-width:1140px
+}
+.header::after {
+ content:"";
+ clear:both;
+ display:block;
+ background-size:100% 5px;
+ position:absolute;
+ height:5px;
+ width:100%;
+ left:0;
+ bottom:0;
+ background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAFCAYAAACzSkmrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAACkSURBVDiN7dExDsIwDEbh9we1soXE6eCEbJyInQNwgKgxQ9WWFrIShr7ZkewvYm/V5fbwLj8NoKTec0lGzp66ZAzJS8jQ4EKG5KLY+FIeYBAOMoRHyFC4YJwpcqVixGYWnHHG1ebs700YHxBAHWM6DqoYHxBvswvGEegbnL1q/pAqxgQB1DE2EEAdY4aABeMEHH57+n+m8/UerZfYW0qtF9hb9wI2bU03vw4M8QAAAABJRU5ErkJggg==");
+ z-index:-1
+}
+#kHeaderNav {
+ padding:0;
+ position:relative
+}
+#kHeaderNav button {
+ outline:0
+}
+#kHeaderNav .navbar-toggler {
+ position:relative
+}
+#kHeaderNav .navbar-toggler:before {
+ position:absolute;
+ top:0;
+ left:50%;
+ width:42px;
+ margin-left:-21px;
+ content:"=";
+ color:#4d4d4d;
+ font-family:"glyph";
+ font-size:22px;
+ font-weight:normal;
+ text-indent:0px;
+ text-align:center;
+ line-height:50px;
+ display:inline-block;
+ text-decoration:none !important
+}
+#kHeaderNav a.nav-link,#kHeaderNav a.dropdown-item {
+ color:#334545;
+ height:50px;
+ line-height:50px;
+ padding:0 20px
+}
+#kHeaderNav a:hover {
+ color:#3daefd
+}
+#kHeaderNav a.nav-link.active {
+ color:#FFF
+}
+#kHeaderNav a.nav-link.active:hover {
+ color:#FFF
+}
+#kHeaderNav .dropdown-menu {
+ padding:0
+}
+#kHeaderNav a.active:hover,#kHeaderNav .dropdown-menu.show a.nav-link {
+ color:#334545
+}
+#kHeaderNav a:active,#kHeaderNav .active,#kHeaderNav a.dropdown-item:active,#kHeaderNav .navbar-brand-active,#kHeaderNav .dropdown-toggle.show a.nav-link {
+ background:#54a3d8;
+ color:#FFF
+}
+#kHeaderNav .dropdown-toggle.show {
+ position:relative
+}
+#kHeaderNav .dropdown-toggle::after {
+ content:"" !important;
+ display:none
+}
+#kHeaderNav .dropdown-toggle .nav-link::after {
+ display:inline-block;
+ width:0;
+ height:0;
+ margin-left:.5em;
+ vertical-align:.255em;
+ content:"";
+ border-top:.3em solid;
+ border-right:.3em solid transparent;
+ border-bottom:0;
+ border-left:.3em solid transparent
+}
+#kHeaderNav .dropdown-menu {
+ border-radius:0px;
+ border:1px solid #54a3d8;
+ border-top:none;
+ margin:0;
+ padding:0;
+ background-color:initial
+}
+@media (min-width: 575px) {
+ #kHeaderNav .dropdown-menu {
+ background-color:#fff
+ }
+}
+#kHeaderNav .dropdown-menu a {
+ display:block;
+ text-align:center;
+ text-decoration:none;
+ background-size:100%;
+ background-position:center;
+ background-repeat:no-repeat;
+ transition:background-size 0.4s;
+ position:relative
+}
+#kHeaderNav .dropdown-menu a::before {
+ content:'';
+ width:100%;
+ height:100%;
+ top:0;
+ left:0;
+ position:absolute;
+ background-repeat:no-repeat;
+ background-position:center;
+ background-size:101%;
+ z-index:-1;
+ transition:background-size 0.3s
+}
+#kHeaderNav .navbar-toggler {
+ order:2
+}
+#KontactGlobalLogo {
+ margin:0;
+ margin-top:-3px;
+ text-align:center;
+ line-height:50px;
+ height:50px;
+ padding:0 10px;
+ order:1
+}
+#KontactGlobalLogo>img {
+ width:70%;
+ margin-top:-3px
+}
+#kMainNavbar {
+ order:4
+}
+@media (min-width: 768px) {
+ #kMainNavbar {
+ order:3
+ }
+}
+#KMadeByKDE {
+ order:3;
+ padding-right:15px
+}
+#KMadeByKDE span {
+ display:none
+}
+@media (min-width: 768px) {
+ #KMadeByKDE span {
+ display:inline
+ }
+}
+@media (min-width: 768px) {
+ #KMadeByKDE {
+ order:4
+ }
+}
+main.main, .contentBody {
+ margin:auto;
+ margin-bottom:50px;
+ width:100%;
+ max-width:1140px;
+ padding:0 30px
+}
+@media (min-width: 1140px) {
+ main.main, .contentBody {
+ padding-left:0;
+ padding-right:0
+ }
+}
+main .block, .contentBody .block {
+ padding:30px 20px
+}
+main.navfix, .contentBody.navfix {
+ margin-top:50px
+}
+#kWelcome {
+ font-size:18px;
+ border-radius:2px;
+ border:solid 1px #abdaf9;
+ background-color:#e1f2ff;
+ color:#375a7d;
+ padding:10px 20px;
+ margin-top:60px;
+ margin-bottom:60px;
+ text-align:center
+}
+#kWelcome p {
+ padding:0;
+ margin:0
+}
+#kFooter {
+ background-color:#eff1f1;
+ color:#7f8c8d;
+ position:relative;
+ padding-top:12px;
+ font-size:12px;
+ width:100%;
+ clear:both
+}
+#kFooter a {
+ text-decoration:none;
+ color:#2980b9
+}
+#kFooter section {
+ width:100%;
+ max-width:1140px;
+ margin:auto;
+ padding:0 20px
+}
+#kFooter #KSiteDonateForm {
+ background-color:#abf9c7;
+ border:solid 1px #7ceca4;
+ border-radius:2px;
+ margin-top:10px;
+ padding-top:10px;
+ padding-bottom:10px
+}
+#kFooter #KSiteDonateForm h3 {
+ font-size:14px;
+ font-weight:bold;
+ color:#377d50;
+ padding:0 0 10px;
+ margin:0
+}
+#kFooter #KSiteDonateForm h3 a {
+ font-width:normal;
+ margin-left:20px;
+ color:#2980b9
+}
+#kFooter #KSiteDonateForm h3 a::before {
+ content:"( ";
+ color:#377d50
+}
+#kFooter #KSiteDonateForm h3 a::after {
+ content:" )";
+ color:#377d50
+}
+#kFooter #KSiteDonateForm #otherWaysDonate {
+ display:inline-block;
+ font-size:14px;
+ margin-top:10px
+}
+#kFooter #KGlobalContributorLinks {
+ padding:0 20px;
+ box-sizing:border-box;
+ max-width:100%;
+ background-color:rgba(0,0,0,0.05);
+ position:relative;
+ margin:auto
+}
+#kFooter #KGlobalContributorLinks nav {
+ max-width:1100px;
+ padding:0;
+ line-height:50px;
+ margin:auto;
+ font-size:14px;
+ width:100%;
+ position:relative
+}
+#kFooter #KGlobalLegalInfo {
+ padding:20px
+}
+#kFooter #KGlobalLegalInfo small {
+ font-size:12px
+}
+#kFooter #KGlobalLegalInfo figure {
+ display:inline-block;
+ padding:0;
+ margin:0
+}
+#kFooter #KGlobalLegalInfo small+small::before {
+ content:" | ";
+ color:#bdc3c7;
+ margin:0 10px
+}
+#kLinks {
+ padding:30px 20px 30px 0
+}
+#kLinks nav {
+ width:20%;
+ display:inline-block;
+ box-sizing:border-box;
+ vertical-align:top;
+ font-size:12px;
+ padding:10px 0 10px 20px
+}
+#kLinks nav h3 {
+ font-size:14px;
+ color:#95a5a6;
+ margin:0 0 10px 0;
+ font-weight:bold
+}
+#kLinks a {
+ display:block;
+ line-height:150%
+}
+#kLinks a::after {
+ color:#7f8c8d;
+ position:relative;
+ content:">";
+ font-family:"glyph";
+ vertical-align:baseline;
+ top:.1em;
+ padding-left:10px
+}
+.konqi {
+ float:right;
+ width:250px;
+ margin-top:-50px;
+ margin-left:40px
+}
+.icon {
+ margin-left:20px
+}
+.icon::before {
+ content:"";
+ position:absolute;
+ display:block;
+ width:32px;
+ height:50px;
+ left:5px;
+ background-repeat:no-repeat;
+ background-size:24px;
+ background-position:center
+}
+.preview {
+ cursor:pointer
+}
+#kImagePreview {
+ text-align:center
+}
+#kImagePreview img {
+ margin:auto;
+ cursor:pointer;
+ max-width:100%
+}
+#kImagePreviewContainer {
+ width:100%;
+ height:100%;
+ display:flex;
+ flex-direction:column;
+ align-items:center;
+ pointer-events:none
+}
+.kSocialLinks {
+ line-height:50px
+}
+.kSocialLinks a:not(.no-glyph) {
+ display:inline-block;
+ color:#fafafa;
+ background:#27AE60;
+ position:relative;
+ text-indent:-9999px;
+ width:24px;
+ line-height:30px;
+ padding:0px 10px;
+ border-radius:3px;
+ transition:all .2s
+}
+.kSocialLinks a:after {
+ content:"@";
+ font-family:'glyph';
+ font-size:24px;
+ text-indent:0px;
+ color:#fafafa;
+ position:absolute;
+ top:0px;
+ left:0px;
+ right:0px;
+ text-align:center
+}
+.kSocialLinks a.shareFacebook {
+ background-color:#2980b9
+}
+.kSocialLinks a.shareGoogle {
+ background-color:#d35400
+}
+.kSocialLinks a.shareTwitter {
+ background-color:#3daefd
+}
+.kSocialLinks a.shareForum {
+ background-color:#0068c6
+}
+.kSocialLinks a.shareTelegram {
+ background-color:#2ca5e0
+}
+.kSocialLinks a.shareFacebook:hover {
+ background-color:#3498db
+}
+.kSocialLinks a.shareGoogle:hover {
+ background-color:#f67400
+}
+.kSocialLinks a.shareTwitter:hover {
+ background-color:#70c3fe
+}
+.kSocialLinks a.shareForum:hover {
+ background-color:#1078d6
+}
+.kSocialLinks a.shareTelegram:hover {
+ background-color:#2ca5e0
+}
+.kSocialLinks a.shareFacebook:after {
+ content:"F"
+}
+.kSocialLinks a.shareGoogle:after {
+ content:"G"
+}
+.kSocialLinks a.shareTwitter:after {
+ content:"T"
+}
+.kSocialLinks a.shareForum:after {
+ content:"K"
+}
+.kSocialLinks a.shareMastodon:after {
+ content:"M"
+}
+
+a#KDEGlobalLogo.navbar-brand {
+ padding-left: 5px;
+ padding-right: 5px;
+ img {
+ padding-left: 5px;
+ paddinf-right: 5px;
+ }
+ &:hover {
+ color: white;
+ }
+}
+
+@include media-breakpoint-up(md) {
+ #languages-dropdown {
+ width: 350px;
+ }
+}
+
+@include media-breakpoint-down(lg) {
+ .nav-item.form-inline {
+ margin-bottom: 5px;
+ padding-left: 20px;
+ }
+}
+@font-face {
+ font-family:'glyph';
+ src:url("glyph/glyph.eot?d1eayo");
+ src:url("glyph/glyph.eot?d1eayo#iefix") format("embedded-opentype"),url("glyph/glyph.ttf?d1eayo") format("truetype"),url("glyph/glyph.woff?d1eayo") format("woff"),url("glyph/glyph.svg?d1eayo#glyph") format("svg");
+ font-weight:normal;
+ font-style:normal
+}
+[class^="glyph-"],[class*=" glyph-"] {
+ font-family:'glyph';
+ speak:none;
+ font-style:normal;
+ font-weight:normal;
+ font-variant:normal;
+ text-transform:none;
+ line-height:1;
+ -webkit-font-smoothing:antialiased;
+ -moz-osx-font-smoothing:grayscale
+}
+.glyph-favorite:before {
+ content:"\e900"
+}
+.glyph-link:before {
+ content:"\6c"
+}
+.glyph-share-diaspora:before {
+ content:"\2a"
+}
+.glyph-share-facebook:before {
+ content:"\46"
+}
+.glyph-share-gplus:before {
+ content:"\47"
+}
+.glyph-share-reddit:before {
+ content:"\52"
+}
+.glyph-share-twitter:before {
+ content:"\54"
+}
+.glyph-share-ycombinator:before {
+ content:"\59"
+}
+.glyph-view-catalog:before {
+ content:"\e908"
+}
+.glyph-view-categories:before {
+ content:"\e909"
+}
+.glyph-view-fullscreen:before {
+ content:"\e90a"
+}
+.glyph-view-list-details:before {
+ content:"\e90b"
+}
+.glyph-view-list-icons:before {
+ content:"\e90c"
+}
+.glyph-view-list-text:before {
+ content:"\e90d"
+}
+.glyph-view-list-tree:before {
+ content:"\e90e"
+}
+.glyph-view-media-playlist:before {
+ content:"\e90f"
+}
+.glyph-window-new:before {
+ content:"\57"
+}
+.glyph-video:before {
+ content:"\56"
+}
+.glyph-cancel:before {
+ content:"\5c"
+}
+.glyph-check:before {
+ content:"\63"
+}
+.glyph-close:before {
+ content:"\58"
+}
+.glyph-logo-kde:before {
+ content:"\4b"
+}
+.glyph-logo-plasma:before {
+ content:"\50"
+}
+.glyph-logo-plasmamobile:before {
+ content:"\4d"
+}
+.glyph-clear:before {
+ content:"\78"
+}
+.glyph-go-down:before {
+ content:"\76"
+}
+.glyph-go-home:before {
+ content:"\48"
+}
+.glyph-go-next:before {
+ content:"\3e"
+}
+.glyph-go-previous:before {
+ content:"\3c"
+}
+.glyph-go-up:before {
+ content:"\5e"
+}
+.glyph-hamburger:before {
+ content:"\3d"
+}
+.glyph-info:before {
+ content:"\49"
+}
+.glyph-new-window:before {
+ content:"\77"
+}
+.glyph-search:before {
+ content:"\51"
+}
+.glyph-settings:before {
+ content:"\53"
+}
+.glyph-share:before {
+ content:"\73"
+}
+.glyph-share-telegram:before {
+ content:"\2197"
+}
\ No newline at end of file
diff --git a/assets/css/doc.scss b/assets/css/doc.scss
new file mode 100644
--- /dev/null
+++ b/assets/css/doc.scss
@@ -0,0 +1,451 @@
+@import "base";
+
+/* Actual documentation styling */
+div.table table {
+ text-align: left; /* Disable justification */
+ border: 1px solid black;
+ border-collapse: collapse;
+}
+
+/* Give alternating row colors */
+div.table tr:nth-child(odd) {
+ background-color: #eee;
+}
+
+div.table tr:nth-child(even) {
+ background-color: white;
+}
+
+div.table th {
+ background-color: white;
+ font-weight: normal;
+ text-align: center;
+ vertical-align: middle;
+ border-bottom: 1px solid black;
+}
+
+div.table td {
+ text-align: left;
+ padding: 4px;
+}
+
+
+// alert from bootstrap 4
+
+$theme-colors: (note: #27ae60, tip: #3daee9, important: #f67400, warning: #da4453);
+
+@each $color, $value in $theme-colors {
+ div.#{$color} {
+ position: relative;
+ padding: $alert-padding-y $alert-padding-x;
+ margin-bottom: $alert-margin-bottom;
+ border: $alert-border-width solid transparent;
+ @include border-radius($alert-border-radius);
+ @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level));
+ // Headings for larger alerts
+ .title {
+ // Specified to prevent conflicts of changing $headings-color
+ color: inherit;
+ }
+ a {
+ font-weight: $alert-link-font-weight;
+ }
+ }
+}
+
+/* Make the content wrapping div have a nice margin. */
+body div.chapter, body div.sect1, body div.book, body div.article {
+ margin-left: 2em;
+ margin-right: 2em;
+}
+
+div.sect2 {
+ width: 100%;
+}
+
+.programlisting {
+
+ /* This will work someday */
+ border-radius: 7px;
+
+ /* To support border radius on our OSS browser friends when
+ * viewing online */
+ -webkit-border-radius: 7px;
+ -moz-border-radius: 7px;
+}
+
+.programlisting {
+ border: 1px solid black;
+ background: white;
+}
+
+
+.guimenu, .guimenuitem, .guisubmenu,
+.guilabel, .interface, .guibutton {
+ background-color: rgb(220, 220, 220);
+ color: black;
+ border: 1px solid rgb(190, 190, 190);
+ border-radius: 3px;
+}
+
+.shortcut {
+ background-color: #DDF;
+ border: 1px dotted #BBF;
+ font-weight: normal;
+ border-radius: 2px;
+}
+
+.keycap, .keysym {
+ background-color: #DFDFFF;
+ font-weight: bold;
+ border-radius: 2px;
+}
+
+.informalexample {
+ margin: 0;
+ border: 0;
+ border-left: 1px dotted black;
+ padding: 0 0 0 4px;
+}
+
+div.tip {
+ margin-bottom: 12pt;
+}
+
+div.titlepage {
+ margin-left: 0;
+}
+
+h3.title {
+ margin-left: 0;
+}
+
+.screenshot, .informalfigure {
+ border: 1px solid gray;
+ background-color: rgb(240, 240, 240);
+}
+
+/* We no longer render
s around s, but this hides them in case
+ * old generated HTML is displayed with the new style.
+ */
+.mediaobject hr, .mediaobjectco hr {
+ display: none;
+}
+
+/* Used for the text and footer area at the bottom. */
+#footer {
+ width: 100%;
+}
+
+/*
+ KDE-wide default CSS for HTML documentation (all media types).
+ Copyright (C) 2000 Frederik Fouvry
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 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; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ Send comments, suggestions, etc. to Frederik Fouvry
+ . */
+
+/*
+ Important note: these setting may be overridden by localised CSS. Do not
+ add here any localization-sensitive style declarations.
+
+ Any updates should be validated, e.g. http://jigsaw.w3.org/css-validator/ */
+
+/* Note: "should be inherit" means that in a proper browser inherit should work.
+ Somehow Netscape manages to interpret "inherit" as bright green.
+ Yuck. */
+
+.legalnotice, .copyright {
+ padding: 0;
+ margin: 0;
+}
+
+.abstract {
+ font-weight: bolder;
+ padding-right: 1em;
+}
+
+.toc, .list-of-tables {
+ padding-left: 1em;
+}
+
+.sect1, .chapter, .synopsis, .appendix, .preface, .article, .refsect1, .index, .glossary, .glossdiv, .gloss-article, .section {
+ padding-left: 1em;
+}
+
+.gloss-article, .glossdiv {
+ padding-right: 1em;
+}
+
+.toc .chapter {
+ padding: 0 0 0 1em;
+}
+
+.author {
+ color: rgb(82, 80, 82);
+ font-weight: bolder;
+ padding: 0;
+ margin: 0;
+}
+
+.othercredit {
+ line-height: 1em;
+}
+
+.chapter .sect1, .chapter .titlepage, .sect1 .titlepage, .article .titlepage {
+ padding: 0em;
+}
+
+.titlepage {
+ padding-left: 1em;
+ padding-right: 1em;
+}
+
+/* Links in Navigation */
+
+.navLeft a:link, .navCenter a:link, .navRight a:link, .header a:link, .header a:visited, .bottom-nav a:link, .bottom-nav a:visited {
+ color: #41597A;
+ font-weight: bold;
+}
+
+
+/* Nice link colors for the main text */
+
+:link {
+ color: #41597A;
+}
+
+:visited {
+ color: #597ba8;
+}
+
+.navLeft {
+ position: absolute;
+ left: 20px;
+}
+
+.navRight {
+ position: absolute;
+ right: 20px;
+}
+
+.navCenter {
+ text-align: center;
+ align: center;
+}
+
+.bannerBottomLeft {
+ position: absolute;
+ left: 0px;
+}
+
+.bannerBottomRight {
+ position: absolute;
+ right: 0px;
+}
+
+/* A little bit of padding makes the tables for keybindings etc much easier to read */
+
+table {
+ padding: 5px;
+}
+
+dl {
+ margin-top: 0em;
+ margin-bottom: 0.5em;
+ margin-left: 0.5em;
+}
+
+dd {
+ margin-left: 1.5em;
+}
+
+dt {
+ margin-top: 1em;
+}
+
+div.toc dt {
+ margin-top: 0px;
+}
+
+div.screenshot {
+ margin-bottom: 1em;
+ margin-top: 1em;
+}
+
+div.informalexample {
+ border-style: dotted;
+ padding: 10px;
+}
+
+/* But no padding for navigation elements */
+
+.toplogo, .navbackground {
+ padding: 0px;
+}
+
+table.programlisting
+table.screen {
+ border-style: none;
+ background-color: rgb(224, 224, 224);
+ table-layout: auto; /* 100%? */
+ color: rgb(0, 0, 0); /* should be inherit */
+}
+
+/* Same as previous block, but more general (previous is HTML only)
+ Not all browsers understand this yet.
+ TABLE[class~=programlisting]
+ TABLE[class~=screen] { border-style: none;
+ background-color: rgb(224,224,224);
+ table-layout: auto;
+ color: inherit;
+}
+*/
+
+p {
+ text-align: justify;
+}
+
+/* More specific settings */
+/* Temporary patch: browsers break on bad HTML */
+/* P, H1, H2, H3, H4, H5, TD, TH { font-family: Helvetica, Arial, sans-serif;
+ } */
+
+p, h1, h2, h3, h4, h5, h6, td, th {
+ font-family: sans-serif;
+}
+
+/* Visual cues for GUI elements etc in the text */
+
+.guimenu, .guimenuitem, .guisubmenu {
+ background-color: rgb(220, 220, 220);
+ color: rgb(0, 0, 0); /* should be inherit */
+}
+
+.guilabel, .interface, .guibutton, .guiicon {
+ background-color: rgb(220, 220, 220);
+ color: rgb(0, 0, 0); /* should be inherit */
+}
+
+.shortcut {
+ background-color: rgb(220, 220, 220);
+ color: rgb(0, 0, 0); /* should be inherit */
+}
+
+.shortcut .keycap {
+ background-color: rgb(220, 220, 220);
+ color: rgb(0, 0, 0); /* should be inherit */
+}
+
+.question {
+ font-weight: bolder;
+}
+
+.accel {
+ background-color: rgb(220, 220, 220);
+ color: rgb(0, 0, 0);
+ text-decoration: underline;
+}
+
+.option, .command {
+ background-color: rgb(255, 255, 255);
+ color: rgb(0, 96, 160);
+ font-weight: bold;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ color: rgb(82, 80, 82);
+ background-color: transparent;
+}
+
+.arg, .parameter, .replaceable {
+ background-color: rgb(255, 255, 255);
+ color: rgb(0, 128, 64);
+ font-style: italic;
+}
+
+.screen, .programlisting {
+ background-color: rgb(220, 220, 220);
+ color: rgb(0, 0, 0); /* should be inherit */
+ border-style: dotted;
+ border-color: rgb(0, 0, 0);
+ border-width: thin;
+ padding: 5px;
+}
+
+
+/* This one is set in inches because the admonitions are set in inches
+ and they're more difficult to change. We can live with it in here,
+ for the meantime, it gives consistent margins */
+
+.example {
+ margin-left: 0.5in;
+ margin-right: 0.5in;
+}
+
+div.mediaobject, div.mediaobjectco {
+ /* float: right; */
+ /* might make it much nicer. although someone has to
+ understand the rules ;-) You also don't want it to be
+ surrounded by text it doesn't refer to ... But that
+ may be among others a question of writing style. */
+ text-align: center;
+ /* a bit of a hack: it should
+ position _images_ */
+
+ img {
+ max-width: 100%;
+ }
+}
+
+.caption {
+ margin: 0em 2em 0em 2em;
+ text-align: center;
+}
+
+.inlinemediaobject {
+ vertical-align: baseline;
+ padding-right: 1em;
+ padding-left: 1em;
+}
+
+/* An idea that could be nice: a search engine looking for specific
+classes could display them in some conspicuous color. All that is
+needed is an on the fly generated style element/style sheet. */
+
+/* Only used in the hand-made HTML license texts */
+body.license {
+ background-color: rgb(255, 255, 255);
+ text-align: justify;
+ color: rgb(0, 0, 0);
+}
+
+pre.license {
+ background-color: rgb(255, 255, 255);
+ font-family: monospace;
+ color: rgb(0, 0, 0);
+}
+
+.pagination {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.contentBody {
+ margin-left: 5%;
+ margin-right: 5%;
+ width: 90%;
+}
diff --git a/assets/glyph/glyph.eot b/assets/glyph/glyph.eot
new file mode 100644
index 0000000000000000000000000000000000000000..733439ed3249ac3f40e4393ad07c8ec440540ab2
GIT binary patch
literal 5712
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
literal 0
Hc$@
+
+
\ No newline at end of file
diff --git a/assets/glyph/glyph.ttf b/assets/glyph/glyph.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..6bca8bcc5fd89221bb20b652d8d06df54bb0b53e
GIT binary patch
literal 5556
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.2)
+if (is_array($env = @include dirname(__DIR__).'/.env.local.php')) {
+ $_SERVER += $env;
+ $_ENV += $env;
+} elseif (!class_exists(Dotenv::class)) {
+ throw new RuntimeException('Please run "composer require symfony/dotenv" to load the ".env" files configuring the application.');
+} else {
+ $path = dirname(__DIR__).'/.env';
+ $dotenv = new Dotenv();
+
+ // load all the .env files
+ if (method_exists($dotenv, 'loadEnv')) {
+ $dotenv->loadEnv($path);
+ } else {
+ // fallback code in case your Dotenv component is not 4.2 or higher (when loadEnv() was added)
+
+ if (file_exists($path) || !file_exists($p = "$path.dist")) {
+ $dotenv->load($path);
+ } else {
+ $dotenv->load($p);
+ }
+
+ if (null === $env = $_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) {
+ $dotenv->populate(array('APP_ENV' => $env = 'dev'));
+ }
+
+ if ('test' !== $env && file_exists($p = "$path.local")) {
+ $dotenv->load($p);
+ $env = $_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? $env;
+ }
+
+ if (file_exists($p = "$path.$env")) {
+ $dotenv->load($p);
+ }
+
+ if (file_exists($p = "$path.$env.local")) {
+ $dotenv->load($p);
+ }
+ }
+}
+
+$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev';
+$_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV'];
+$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0';
diff --git a/config/bundles.php b/config/bundles.php
new file mode 100644
--- /dev/null
+++ b/config/bundles.php
@@ -0,0 +1,13 @@
+ ['all' => true],
+ Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
+ Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
+ Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
+ Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
+ Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true, 'test' => true],
+ Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
+ Symfony\Bundle\WebServerBundle\WebServerBundle::class => ['dev' => true],
+ Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true],
+];
diff --git a/config/packages/assets.yaml b/config/packages/assets.yaml
new file mode 100644
--- /dev/null
+++ b/config/packages/assets.yaml
@@ -0,0 +1,3 @@
+framework:
+ assets:
+ json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'
diff --git a/config/packages/cache.yaml b/config/packages/cache.yaml
new file mode 100644
--- /dev/null
+++ b/config/packages/cache.yaml
@@ -0,0 +1,19 @@
+framework:
+ cache:
+ # Put the unique name of your app here: the prefix seed
+ # is used to compute stable namespaces for cache keys.
+ #prefix_seed: your_vendor_name/app_name
+
+ # The app cache caches to the filesystem by default.
+ # Other options include:
+
+ # Redis
+ #app: cache.adapter.redis
+ #default_redis_provider: redis://localhost
+
+ # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues)
+ #app: cache.adapter.apcu
+
+ # Namespaced pools use the above "app" backend by default
+ #pools:
+ #my.dedicated.cache: ~
diff --git a/config/packages/dev/debug.yaml b/config/packages/dev/debug.yaml
new file mode 100644
--- /dev/null
+++ b/config/packages/dev/debug.yaml
@@ -0,0 +1,4 @@
+debug:
+ # Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser.
+ # See the "server:dump" command to start a new server.
+ dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%"
diff --git a/config/packages/dev/easy_log_handler.yaml b/config/packages/dev/easy_log_handler.yaml
new file mode 100644
--- /dev/null
+++ b/config/packages/dev/easy_log_handler.yaml
@@ -0,0 +1,16 @@
+services:
+ EasyCorp\EasyLog\EasyLogHandler:
+ public: false
+ arguments: ['%kernel.logs_dir%/%kernel.environment%.log']
+
+#// FIXME: How to add this configuration automatically without messing up with the monolog configuration?
+#monolog:
+# handlers:
+# buffered:
+# type: buffer
+# handler: easylog
+# channels: ['!event']
+# level: debug
+# easylog:
+# type: service
+# id: EasyCorp\EasyLog\EasyLogHandler
diff --git a/config/packages/dev/monolog.yaml b/config/packages/dev/monolog.yaml
new file mode 100644
--- /dev/null
+++ b/config/packages/dev/monolog.yaml
@@ -0,0 +1,19 @@
+monolog:
+ handlers:
+ main:
+ type: stream
+ path: "%kernel.logs_dir%/%kernel.environment%.log"
+ level: debug
+ channels: ["!event"]
+ # uncomment to get logging in your browser
+ # you may have to allow bigger header sizes in your Web server configuration
+ #firephp:
+ # type: firephp
+ # level: info
+ #chromephp:
+ # type: chromephp
+ # level: info
+ console:
+ type: console
+ process_psr_3_messages: false
+ channels: ["!event", "!doctrine", "!console"]
diff --git a/config/packages/dev/routing.yaml b/config/packages/dev/routing.yaml
new file mode 100644
--- /dev/null
+++ b/config/packages/dev/routing.yaml
@@ -0,0 +1,3 @@
+framework:
+ router:
+ strict_requirements: true
diff --git a/config/packages/dev/web_profiler.yaml b/config/packages/dev/web_profiler.yaml
new file mode 100644
--- /dev/null
+++ b/config/packages/dev/web_profiler.yaml
@@ -0,0 +1,6 @@
+web_profiler:
+ toolbar: true
+ intercept_redirects: false
+
+framework:
+ profiler: { only_exceptions: false }
diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml
new file mode 100644
--- /dev/null
+++ b/config/packages/framework.yaml
@@ -0,0 +1,19 @@
+framework:
+ secret: '%env(APP_SECRET)%'
+ #default_locale: en
+ #csrf_protection: true
+ #http_method_override: true
+
+ # Enables session support. Note that the session will ONLY be started if you read or write from it.
+ # Remove or comment this section to explicitly disable session support.
+ session:
+ handler_id: ~
+ cookie_secure: auto
+ cookie_samesite: lax
+
+ #esi: true
+ #fragments: true
+ php_errors:
+ log: true
+ assets:
+ json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'
diff --git a/config/packages/prod/monolog.yaml b/config/packages/prod/monolog.yaml
new file mode 100644
--- /dev/null
+++ b/config/packages/prod/monolog.yaml
@@ -0,0 +1,25 @@
+monolog:
+ handlers:
+ main:
+ type: fingers_crossed
+ action_level: error
+ handler: nested
+ excluded_404s:
+ # regex: exclude all 404 errors from the logs
+ - ^/
+ nested:
+ type: stream
+ path: "%kernel.logs_dir%/%kernel.environment%.log"
+ level: debug
+ console:
+ type: console
+ process_psr_3_messages: false
+ channels: ["!event", "!doctrine"]
+ deprecation:
+ type: stream
+ path: "%kernel.logs_dir%/%kernel.environment%.deprecations.log"
+ deprecation_filter:
+ type: filter
+ handler: deprecation
+ max_level: info
+ channels: ["php"]
diff --git a/config/packages/routing.yaml b/config/packages/routing.yaml
new file mode 100644
--- /dev/null
+++ b/config/packages/routing.yaml
@@ -0,0 +1,4 @@
+framework:
+ router:
+ strict_requirements: ~
+ utf8: true
diff --git a/config/packages/sensio_framework_extra.yaml b/config/packages/sensio_framework_extra.yaml
new file mode 100644
--- /dev/null
+++ b/config/packages/sensio_framework_extra.yaml
@@ -0,0 +1,3 @@
+sensio_framework_extra:
+ router:
+ annotations: false
diff --git a/config/packages/test/framework.yaml b/config/packages/test/framework.yaml
new file mode 100644
--- /dev/null
+++ b/config/packages/test/framework.yaml
@@ -0,0 +1,4 @@
+framework:
+ test: true
+ session:
+ storage_id: session.storage.mock_file
diff --git a/config/packages/test/monolog.yaml b/config/packages/test/monolog.yaml
new file mode 100644
--- /dev/null
+++ b/config/packages/test/monolog.yaml
@@ -0,0 +1,7 @@
+monolog:
+ handlers:
+ main:
+ type: stream
+ path: "%kernel.logs_dir%/%kernel.environment%.log"
+ level: debug
+ channels: ["!event"]
diff --git a/config/packages/test/routing.yaml b/config/packages/test/routing.yaml
new file mode 100644
--- /dev/null
+++ b/config/packages/test/routing.yaml
@@ -0,0 +1,3 @@
+framework:
+ router:
+ strict_requirements: true
diff --git a/config/packages/test/web_profiler.yaml b/config/packages/test/web_profiler.yaml
new file mode 100644
--- /dev/null
+++ b/config/packages/test/web_profiler.yaml
@@ -0,0 +1,6 @@
+web_profiler:
+ toolbar: false
+ intercept_redirects: false
+
+framework:
+ profiler: { collect: false }
diff --git a/config/packages/translation.yaml b/config/packages/translation.yaml
new file mode 100644
--- /dev/null
+++ b/config/packages/translation.yaml
@@ -0,0 +1,6 @@
+framework:
+ default_locale: en
+ translator:
+ default_path: '%kernel.project_dir%/translations'
+ fallbacks:
+ - '%locale%'
diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml
new file mode 100644
--- /dev/null
+++ b/config/packages/twig.yaml
@@ -0,0 +1,4 @@
+twig:
+ default_path: '%kernel.project_dir%/templates'
+ debug: '%kernel.debug%'
+ strict_variables: '%kernel.debug%'
diff --git a/config/packages/webpack_encore.yaml b/config/packages/webpack_encore.yaml
new file mode 100644
--- /dev/null
+++ b/config/packages/webpack_encore.yaml
@@ -0,0 +1,4 @@
+webpack_encore:
+ # The path where Encore is building the assets.
+ # This should match Encore.setOutputPath() in webpack.config.js.
+ output_path: '%kernel.project_dir%/public/build'
diff --git a/config/routes.yaml b/config/routes.yaml
new file mode 100644
--- /dev/null
+++ b/config/routes.yaml
@@ -0,0 +1,3 @@
+#index:
+# path: /
+# controller: App\Controller\DefaultController::index
diff --git a/config/routes/annotations.yaml b/config/routes/annotations.yaml
new file mode 100644
--- /dev/null
+++ b/config/routes/annotations.yaml
@@ -0,0 +1,3 @@
+controllers:
+ resource: ../../src/Controller/
+ type: annotation
diff --git a/config/routes/dev/twig.yaml b/config/routes/dev/twig.yaml
new file mode 100644
--- /dev/null
+++ b/config/routes/dev/twig.yaml
@@ -0,0 +1,3 @@
+_errors:
+ resource: '@TwigBundle/Resources/config/routing/errors.xml'
+ prefix: /_error
diff --git a/config/routes/dev/web_profiler.yaml b/config/routes/dev/web_profiler.yaml
new file mode 100644
--- /dev/null
+++ b/config/routes/dev/web_profiler.yaml
@@ -0,0 +1,7 @@
+web_profiler_wdt:
+ resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml'
+ prefix: /_wdt
+
+web_profiler_profiler:
+ resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml'
+ prefix: /_profiler
diff --git a/config/services.yaml b/config/services.yaml
new file mode 100644
--- /dev/null
+++ b/config/services.yaml
@@ -0,0 +1,32 @@
+# This file is the entry point to configure your own services.
+# Files in the packages/ subdirectory configure your dependencies.
+
+# Put parameters here that don't need to change on each machine where the app is deployed
+# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
+
+imports:
+ - { resource: 'services.php' }
+
+parameters:
+ locale: 'en'
+
+services:
+ # default configuration for services in *this* file
+ _defaults:
+ autowire: true # Automatically injects dependencies in your services.
+ autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
+
+ # makes classes in src/ available to be used as services
+ # this creates a service per class whose id is the fully-qualified class name
+ App\:
+ resource: '../src/*'
+ exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'
+
+ # controllers are imported separately to make sure services can be injected
+ # as action arguments even if you don't extend any base controller class
+ App\Controller\:
+ resource: '../src/Controller'
+ tags: ['controller.service_arguments']
+
+ # add more service definitions when explicit configuration is needed
+ # please note that last definitions always *replace* previous ones
diff --git a/create_generated_used.php b/create_generated_used.php
--- a/create_generated_used.php
+++ b/create_generated_used.php
@@ -37,19 +37,36 @@
# full length, without the prefix (with code), without the suffix (.json)
$var_name_len = strlen($json_file) - (strlen(JSONFILE_PREFIX) + 3) - 5;
$var_name = substr($json_file, strlen(JSONFILE_PREFIX)+3, $var_name_len);
- echo "\$$var_name = $array_string;\n";
+ echo "const $var_name = $array_string;\n";
+
+ if ($var_name == 'languagelist') {
+ // create special variable for routing parameter _locale in config/services.php
+ $string = '';
+ foreach ($json_array as $lang) {
+ $string .= $lang . '|';
+ }
+ $string = rtrim($string,"|");
+
+ // save content
+ $parameterFile = fopen("./config/services.php", "w");
+ fwrite($parameterFile, "setParameter('app.locales', '$string');\n");
+ fclose($parameterFile);
+ }
}
function convert_files($json_dir)
{
$all_files = scandir($json_dir);
echo "\n";
+ echo "}\n";
}
$json_files_dir = ".";
diff --git a/crontab b/crontab
--- a/crontab
+++ b/crontab
@@ -1,7 +1,7 @@
# m h dom mon dow command
MAILTO=sysadmin@kde.org
15 01 * * thu cd /home/docs/docs && git pull --rebase -q 1>/home/docs/logs/git.log 2>&1
-15 02 * * thu cd /home/docs/docs && ./kdedocgen.py -r -g -s -l doclogconfig.ini -c docgen_conf.ini &>/dev/null
-15 16 * * thu cd /home/docs/docs && ./create_generated_used.php /home/docs/docs/work >/home/docs/website/generated_used.inc.php 2>/home/docs/logs/genused.log
+15 02 * * thu cd /home/docs/docs && ./kdedocgen.py -r -g -s -l doclogconfig.ini -c docgen_conf.ini &>/dev/null && yarn encore production
+15 16 * * thu cd /home/docs/docs && composer update && ./create_generated_used.php /home/docs/docs/work > /home/docs/website/src/Data/GeneratedData.php 2>/home/docs/logs/genused.log
30 16 * * thu cd /home/docs/docs/search && nice -n 19 ./do_xapian_index.sh
30 19 * * thu cd /home/docs/docs && ./rsyncsite
diff --git a/dblatex-cvs-install/bin/dblatex b/dblatex-cvs-install/bin/dblatex
deleted file mode 100755
--- a/dblatex-cvs-install/bin/dblatex
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-#
-# This script is automatically created by
-# ./configure --prefix=/home/phil/sources/dblatex-cvs-install --catalog=/home/phil/cvs-kde/share/apps/ksgmltools2/customization/catalog
-#
-#SGML_CATALOG_FILES is exported by generator
-
-DBLATEX_BASE_DIR=${DBLATEX_BASE_DIR:-/home/docs/docs}
-
-TEXINPUTS=:${DBLATEX_BASE_DIR}/dblatex-cvs-install/share/dblatex/latex//:$TEXINPUTS
-export TEXINPUTS
-
-${DBLATEX_BASE_DIR}/dblatex-cvs-install/share/dblatex/scripts/dblatex $*
diff --git a/docgen_conf.ini b/docgen_conf.ini
--- a/docgen_conf.ini
+++ b/docgen_conf.ini
@@ -1,16 +1,16 @@
[common]
-work_dir=/home/docs/docs/work
-website_dir=/home/docs/website
+work_dir=/home/carl/docs/work
+website_dir=/home/carl/project/docs-kde-org/public
# If the following options are not specified, languages and packages
# are read from the files with the same name
-#languages=
-#packages=
-branches=stable4,trunk4,stable5,trunk5
-static_files=404.php,docs.css,favicon.ico,images,include,index.php,intro.inc.html,robots.txt,styles
+languages=en,ca,fr,uk
+packages=calligra,frameworks,kde-workspace
+branches=stable5,trunk5
+static_files=images,index.php,robots.txt,favicon.ico
excluded_lang_pdf=es,ja
[env.kdelibs4]
-compile_dir=/home/docs/docs/kdelibs
+compile_dir=/home/carl/project/docs-kde-org/kdelibs
docbookxml_path=/usr/share/xml/docbook/schema/dtd/4.2/
docbookxsl_path=/usr/share/xml/docbook/stylesheet/docbook-xsl
diff --git a/doclogconfig.ini b/doclogconfig.ini
--- a/doclogconfig.ini
+++ b/doclogconfig.ini
@@ -21,7 +21,7 @@
class=FileHandler
level=DEBUG
formatter=formatter
-args=('/home/docs/logs/%(logfilename)s.log',)
+args=('/home/carl/project/docs-kde-org/logs/%(logfilename)s.log',)
[formatter_formatter]
format=%(asctime)s:%(levelname)s:%(name)s:%(message)s
diff --git a/docs.css b/docs.css
deleted file mode 100644
--- a/docs.css
+++ /dev/null
@@ -1,436 +0,0 @@
-
-
-
-#content {
-background-color: white;
-/* padding: 0.5em 0.7em 1.5em 0.7em; */
-padding:0;
-margin:0;
-text-align: justify;
-}
-
-#content td, #content th {
-font-family: sans-serif;
-padding: 0;
-margin: 0;
-text-align: left;
-}
-
-#nav_header_logo {
-float: left;
-padding: 10px;
-padding-bottom: 5px;
-}
-
-#nav_header_logo_right {
-float: right;
-padding: 10px;
-padding-bottom: 5px;
-}
-
-/**
- * page footer
- */
-
-
-
-
-/* +++++++++++++++++++++++++++++++++++++++++++++ */
-/*
- docs.kde.org styles
-*/
-/* +++++++++++++++++++++++++++++++++++++++++++++ */
-
-.subdocs {
- font-style: italic;
- color: #505050;
- font-size: 7pt;
-}
-
-.notfinished {
- color: #A0A0A0;
-}
-
-
-ul.branchmenu {
-/* height: 20pt; */
- width: 100%;
- background-color: #418ADE; /*#009754;*/
- color:#FFFFFF;
- font-size: 12pt;
- font-family: sans-serif; /* 'Trebuchet MS'; */
- font-weight: bold;
- text-decoration: none;
- padding: 3px 5px 3px 5px;
- margin:0;
-}
-
-ul.branchmenu li {
- display: inline;
- margin: 0 10px 0 10px;
-}
-
-.branchmenu li.current {
- background-color: #DFE7F3; /*#80C39B; */
- color: #FFFFFF;
-}
-
-.branchmenu a {
- color: #FFFFFF;
- margin: 0 5px 0 5px;
-}
-
-.branchmenu li.current a {
- color: #FFFFFF;
-}
-
-
-.languagemenu {
- width: 100%;
- background-color: #DFE7F3; /*#80C39B;*/
- font-size: 10pt;
- font-family: sans-serif; /*'Trebuchet MS';*/
- font-weight: bold;
- padding: 2px 5px 2px 5px;
- margin:0;
-}
-
-.languagemenu li {
- display: inline;
- margin: 0 5px 0 5px;
-}
-
-.languagemenu li.current {
- background-color: #DFE7F3; /*#80C39B; */
- color: #FFFFFF;
-}
-
-.languagemenu a {
- color: #FFFFFF;
- margin: 0 5px 0 5px;
-}
-
-.languagemenu li.current a {
- background-color:#FFFFFF;
- color:#418ADE; /*#009754; */
- margin: 0 5px 0 5px;
-}
-
-
-
-
-#appswrapper {
- position:absolute;
- top: 90px;
- left: 180px;
- right: 190px;
- margin:0;
- padding:0;
-/* float:left; */
-/* width:66%; */
-/* min-height:700px; */
-/* margin-right:210px; */
-/* border-left-color:#418ADE;
- border-left-width: 7px;
- border-left-style: solid;*/
-/* margin-bottom:-8px; */
-
-}
-
-ul.apps {
-/* position: absolute;
- left: 18%;
- top: 150px;*/
- float:left;
-/* width: 97%; */
- border: #418ADE /*#009754;*/ 1px solid;
-/* border-left-color:#418ADE; /*#009754; */
-/* border-left-width: 0px; */
- font-size: 10pt;
- font-family: sans-serif; /* 'Trebuchet MS';*/
- font-weight: normal;
- color:#000000;
- margin:0px;
- margin-bottom:10px;
- padding:5px;
- list-style-type:none;
-/* min-height: 500px; */
- width: 98%;
-}
-
-ul.apps li.appbox {
- background-color: #FFFFFF;
- border: #418ADE 1px solid;
- border-radius: 5px;
- -moz-border-radius: 5px;
- -webkit-border-radius: 5px;
- /*display: inline;*/
- margin:0px;
- padding:0px;
- float:left;
- width: 49%;
-}
-
-ul.apps li.appbranch {
- background-color: #FFFFFF;
- margin:0px;
- padding:0px;
-}
-
-ul.apps li a {
- padding-left:2px;
- color:#1b2D83;
-}
-
-div.intro {
- float:left;
- border: #418ADE 1px solid;
- font-size: 10pt;
- font-family: sans-serif; /* 'Trebuchet MS';*/
- font-weight: normal;
- color:#000000;
- margin:0px;
- margin-bottom:10px;
- padding:10px;
- list-style-type:none;
-}
-
-div.error {
- float:left;
- border: #E72300 1px solid;
- font-size: 10pt;
- font-family: sans-serif; /* 'Trebuchet MS';*/
- font-weight: normal;
- color:#000000;
- margin:0px;
- margin-bottom:10px;
- padding:10px;
- list-style-type:none;
-}
-
-
-
-#appswrapper h3 {
- color: #505050;
- font-size: 10pt;
- margin:0;
- padding:0;
- margin-bottom: 2px;
- padding-left: 7px;
- font-weight:normal;
- clear:both;
-}
-
-
-#menu {
- position:absolute;
- top: 90px;
- right: 10px;
-/* float:left; */
-/* width: 16%; */
- width:160px;
- text-align:left;
- font-size: 8pt;
- font-family: sans-serif; /* 'Trebuchet MS';*/
- font-weight: normal;
- color:#000000;
- border: 1px solid #418ADE;
- margin: 0px;
- padding:5px;
-}
-
-#docs_search {
- padding:0;
- margin:0;
- margin-top:5px;
- list-style-type: none;
- font-size: 8pt;
- font-weight:normal;
-/* background-color: #418ADE; */
- border: 1px dotted #418ADE;
- color: #000000;
-}
-
-#docs_search li {
- padding: 5px;
-}
-
-#docs_search select {
- width: 80%;
-}
-
-#docs_search .text_input {
- width: 95%;
-}
-
-#docs_search .search_button {
- text-align: right;
- font-size: 9pt;
-}
-
-#important {
- padding:0px;
- margin:0px;
- list-style-type: none;
- font-size: 12pt;
- font-weight:bold;
-/* background-color: #418ADE; */
- border: 1px dotted #418ADE;
- color: #FFFFFF;
-}
-
-#important h3 {
- font-size: 12pt;
-}
-
-#important li {
- padding: 5px;
-}
-
-#important a {
- color: #418ADE;
-}
-
-.smalllanguage {
- font-style: italic;
- color: #A0A0A0;
- font-size: 7pt;
-}
-
-#legal {
-
-background-color: #418ADE;
-color: #FFFFFF;
-padding: 5px;
-}
-
-#navigation {
- position:absolute;
- top: 90px;
- left: 10px;
-/* float:left; */
-/* width: 14%; */
- width: 150px;
- text-align:left;
- font-size: 8pt;
- font-family: sans-serif; /* 'Trebuchet MS';*/
- font-weight: normal;
- color:#000000;
- border: 1px solid #418ADE; /*#009754; */
- margin: 0px;
- padding:5px;
-
-}
-
-#selectionform {
- font-size: 10pt;
- font-family: sans-serif; /*'Trebuchet MS';*/
- font-weight: normal;
- background-color: #418ADE; /*#009754; */
- color:#FFFFFF;
- border: 1px solid #418ADE; /*#009754; */
- margin: 0;
- margin-bottom: 5px;
- padding:0;
- padding-bottom: 3px;
- list-style-type:none;
- min-width: 150px;
-}
-
-#selectionform li {
- padding: 1px 5px 1px 5px;
-}
-
-#selectionform #applybutton {
- margin-top: 3px;
- text-align: right;
- font-size: 9pt;
-}
-
-#applicationform {
- font-size: 10pt;
- font-family: sans-serif; /*'Trebuchet MS';*/
- font-weight: normal;
- background-color: #418ADE; /*#009754; */
- color:#FFFFFF;
- border: 1px solid #418ADE; /*#009754; */
- margin: 0;
- margin-bottom: 5px;
- padding:0;
- padding-bottom: 3px;
- list-style-type:none;
- min-width: 150px;
-}
-
-#applicationform .ui-autocomplete .ui-menu-item {
- font-size: 10pt;
-}
-
-#applicationform li {
- padding: 1px 5px 1px 5px;
-}
-
-#applicationform input {
- width: 69%;
-}
-
-#applicationform #openbutton {
- text-align: right;
- font-size: 7pt;
- width: 29%;
-}
-ul.packagemenu {
-/* background-color: #418ADE; */
-/* text-decoration: none; */
-/* float: left; */
-/* width: 15%; */
- font-size: 10pt;
- font-family: sans-serif; /*'Trebuchet MS';*/
- font-weight: normal;
- color:#000000;
- border: 1px dotted #418ADE; /*#009754; */
- margin: 0;
- padding:0;
- list-style-type:none;
- min-width: 150px;
-}
-
-ul.packagemenu a {
- color:#000000;
- display:block;
-}
-
-
-ul.packagemenu li {
- padding: 1px 5px 1px 5px;
-}
-
-ul.packagemenu li:hover {
- background-color: #DFE7F3; /*#80C39B; */
-}
-
-.packagemenu li.current {
- background-color: #418ADE; /*#009754; */
- color: #FFFFFF;
-/* margin-right: -12px; */
-}
-
-.packagemenu li.current a {
- background-color: #418ADE; /*#009754; */
- color: #FFFFFF;
- display:block;
-}
-
-a.pdf_link {
- color: #A0A0A0;
- font-size: 0.8em;
-}
-
-a.pdf_link_sub:link {
- font-style: italic;
- color: #505050;
- font-size: 7pt;
-}
-
-
-
diff --git a/favicon.ico b/favicon.ico
deleted file mode 100644
index 2c9dd50e4d961b11292cae22cc765d531f4d0d93..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@9M;W3ewrL>+bfYFHZNF`#kfUd;jO0d*=ME
zM6yOa8#YM9+g1|)oJ8`nL?UqzQ<#M1U;DF0o`=;tMV`_-s=cpJ8EB6>_zlz{PE-Xu
z@pGsHrQ!BmjBuhl%$XaJE;Pru(;V%}Zy{Unm3m8Ea$K#NemP)^a*qvi&lji+dX<|o
z&U74eqxZNceJMUXO!lJVb2sXR{gPP!!TUwjL3R{-S-0hTtmQ(`CQAHYqWZ8McN1Lr
z>*PL+dEpGU-ejOj!)jp^Mp*>~O+4F1YYbb=i;JtNJMr@|)BU{?e9JTD9
zottH5M9*lAil?;|%ns==7!8c;I?<)?=W47Iwb5Hp_)0k^^uNcvPED*mU8y@6zIK^u
zy^j7b_t29TPJgN&gBbzzD|6`l>L8up#-Tal#*KJKlpokoxO+WyN9@tWZ$&FlVQzec
zUS$?tU+iRQ!NkhS3Z03rXjA<$%}ipLdMdOoG$c4t=4V5Z*Yo0k3oTzqW1OF7acPmZ
zBu}&{9xN{{u)4ZR%V#^7>}g|J__}*Gk=7(I`emVd5P}qLp=UIj3HT|(7%mBoIiipIvP{l=#zcOKz;&
zFJbb_%OImY%%%bd7c
zj9!(FwjheyWFHZGH=4-pl=w&+&HRcy8qNG(GV>c`=GRg1>xfG5s|dFf{5lGLw^9Ee
Ve(S=Wo6Y>5Uh~YW;eUr&`wy;ov*`c;
diff --git a/images/docs.png b/images/docs.png
deleted file mode 100644
index 6ea007cf8c64d1424a2d5273b39dc178838109e2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
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
diff --git a/images/kde_gear_64.png b/images/kde_gear_64.png
deleted file mode 100644
index dcfb4c14db353825aac188ec243f61a96e3ca4df..0000000000000000000000000000000000000000
GIT binary patch
literal 0
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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
- |
-
-
-
-$name
\n";
-else
- $contact = i18n_var("Maintained by kde.org Webmaster
\n");
-?>
-
-
-
-
-
-
-
-
-
-