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$@ + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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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 - - - - - - - 0) { ?> - - - - - - show(); ?> - - - - - - - \n
\n"; - $hotspotstart = '\n"; - if (!isset($site_search) || ($site_search == true)) { - print $searchstart; - include_once("search.inc"); - print $end; - } - else if ($site_search == "custom") { - print $searchstart; - include_once("$site_root/includes/search.inc"); - print $end; - } - - if (isset($site_hotspot)) { - if ($site_hotspot === true) { - print $hotspotstart; - include_once("hotspot.inc"); - print $end; - } - else - if ($site_hotspot == "custom") { - print $hotspotstart; - include_once("$site_root/includes/hotspot.inc"); - print $end; - } - } - ?> - - - - - - - - - - - - - - - | - | - - - -$name
\n"; -else - $contact = i18n_var("Maintained by kde.org Webmaster
\n"); -?> - - -
- - - - - - - - diff --git a/include/docs.inc b/include/docs.inc deleted file mode 100644 --- a/include/docs.inc +++ /dev/null @@ -1,14 +0,0 @@ -push("Docs Default","/media/styles/standard.css;/docs.css"); - -?> diff --git a/include/docs_classes.inc b/include/docs_classes.inc deleted file mode 100644 --- a/include/docs_classes.inc +++ /dev/null @@ -1,54 +0,0 @@ -name=$name; - $this->items=explode(";",$group); - } - function show($alt) - { - if ( count($this->items) ) - { - $numitems = count( $this->items ); - for ($i=0; $i < $numitems; $i++) - { - echo '\n"; - } - } - } -} - -class StylesheetList -{ - var $items= array(); - function push($name,$group) - { - array_push($this->items,new StylesheetGroup($name,$group)); - } - function show() - { - if ( count($this->items) ) - { - $numitems = count( $this->items ); - for ($i=0; $i < $numitems; $i++) - { - $this->items[$i]->show($i>0); - } - } - } -} - - - -?> diff --git a/include/functions.inc b/include/functions.inc deleted file mode 100644 --- a/include/functions.inc +++ /dev/null @@ -1,304 +0,0 @@ -" . i18n_var("Latest News") . "\n"; - - $news = new RDF(); - $rdf_pieces = $news->openRDF($file); - - if(!$items) - { - $items = 5; // default - } - $rdf_items = count($rdf_pieces); - if ($rdf_items > $items) - { - $rdf_items = $items; - } - - //only open the file if it has something in it - if ($rdf_items > 0) - { - /* Don't display the last story twice - * if there is less than the requested number of stories - * in the RDF file */ - if ($rdf_items < $items) - { - $rdf_items = $rdf_items - 1; - } - - $alternate = false; - - print "\n"; - - if ($summaryonly) - print "\n\n"; - - $prevDate = ""; - for($x=1;$x<=$rdf_items;$x++) - { - $alternate = !$alternate; - if ($alternate) - { - $color = "newsbox1"; - } - else - { - $color = "newsbox2"; - } - ereg("(.*)", $rdf_pieces[$x], $title); - ereg("(.*)", $rdf_pieces[$x], $date); - ereg("(.*)", $rdf_pieces[$x], $fullstory); - print "\n"; - - $printDate = $date[1]; - - $title[1] = utf8_encode($title[1]); - - if ($summaryonly) - { - print "\n"; - print "\n"; - $prevDate = $printDate; - } - else - { - print "\n"; - print "\n"; - } - - print "\n"; - - } - print "
" . i18n_var("Date") . "" . i18n_var("Headline") . "
".(($printDate == $prevDate) ? " " : "$printDate")."$title[1]

$printDate: $title[1]

$fullstory[1]
\n"; - } -} - -function begin_under_construction() -{ - if ($_SERVER["QUERY_STRING"] != "test") - print("\n"); -} - -function startTranslation($dictionary) -{ - global $site_root; - global $site_external; - $topleveldir = explode("/", $_SERVER['REQUEST_URI']); - - if ($site_root == "./") // if the page is not under a sub-directory - { - if (($site_external && ($_SERVER['SERVER_NAME'] != "kde.org")) || !$site_external) // if the page is something like kde.org or konqueror.org - { - $dir_file = $site_root . "/media/includes/i18n/" . $dictionary . "/" . "root.inc"; - $media_file = $site_root . "/media/includes/i18n/" . $dictionary . "/" . "media.inc"; - } - else // something like kde.org/apps/konqueror or kde.org/areas/kde-ev - { - $dir_file = "../../" . $site_root . "/media/includes/i18n/" . $dictionary . "/" . "root.inc"; - $media_file = "../../" . $site_root . "/media/includes/i18n/" . $dictionary . "/" . "media.inc"; - } - } - else - { - if (($site_external && ($_SERVER['SERVER_NAME'] != "kde.org")) || !$site_external) // if the page is something like kde.org or konqueror.org - { - $dir_file = $site_root . "/media/includes/i18n/" . $dictionary . "/" . $topleveldir[1] . ".inc"; - $media_file = $site_root . "/media/includes/i18n/" . $dictionary . "/" . "media.inc"; - } - else // someting like kde.org/apps/konqueror - { - $dir_file = "../../" . $site_root . "/media/includes/i18n/" . $dictionary . "/" . $topleveldir[1] . ".inc"; - $media_file = "../../" . $site_root . "/media/includes/i18n/" . $dictionary . "/" . "media.inc"; - } - } - - if ($dictionary != "en") - { - global $text; //needed! - if (file_exists($media_file)) - { - include($media_file); - } - if (file_exists($dir_file)) - { - include($dir_file); - } - } -} - -function i18nDebug() -{ - global $text; - print "text contains " . count($text) . " items \n"; -} - -function i18n_var($translate) -{ - global $text; - global $site_locale; - if ($site_locale == "en") - { - return $translate; - } - else - { - $translated = $text[$translate]; - if ($translated == "") - { - return $translate; - } - else - { - return $translated; - } - } -} - -function i18n($translate) -{ - global $text; - global $site_locale; - if ($site_locale == "en") - { - print $translate; - } - else - { - $translated = $text[$translate]; - if ($translated == "") - { - print $translate; - } - else - { - print $translated; - } - } -} - -function niceFileSize($path) -{ - if (file_exists($path)) - { - $size = filesize($path); - if ($size > (1024 * 1024)) - { - echo "(" . round($size/(1024*1024)) . "MB)"; - } - else - if ($size > 1024) - { - echo "(" . round($size/1024) . "KB)"; - } - else - { - echo "(" . round($size) . "B)"; - } - } - else - { - echo "(File not available on this server, use printing.kde.org or koffice.org instead)"; - } -} - -function siteLogo($path, $width, $height) -{ - return "src=\"$path\" width=\"$width\" height=\"$height\""; -} - -?> diff --git a/include/header.inc b/include/header.inc deleted file mode 100644 --- a/include/header.inc +++ /dev/null @@ -1,294 +0,0 @@ -\n"; - print "\n"; -?> - - - - - <?php print $title; ?> - - - - - - - - - - - - - - -\n"; - if (isset($rss_feed2_link)) - print "\n"; -?> - -show(); - else - { - if (!$rtl) - echo ''; - else - echo ''; - } -?> - - - - -'; - else - echo ''; -?> - - - -" > - - - - - - - - - - - - -
-
- - - -
-
- - - 0) { ?> - - - -
0) print 'rowspan="2"'; ?> > -
- $page_title\n"; - ?> diff --git a/include/header_docs.inc b/include/header_docs.inc deleted file mode 100644 --- a/include/header_docs.inc +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - KDE Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- Skip to main content :: - - \"Home\" - :: - \"\" - -
KDE Documentation
- - -
- -
- - Help :: - Contact Us - - :: Skip to Link Menu
- -   -
-
-
- - - -
-
- -"; -?> diff --git a/include/initialize.inc.php b/include/initialize.inc.php deleted file mode 100644 --- a/include/initialize.inc.php +++ /dev/null @@ -1,97 +0,0 @@ - diff --git a/include/produce_lists.inc.php b/include/produce_lists.inc.php deleted file mode 100644 --- a/include/produce_lists.inc.php +++ /dev/null @@ -1,61 +0,0 @@ - 0, - 'kdelibs' => 0, - 'calligra' => 5, - 'kdereview' => 10, - ); - if ( array_key_exists($p, $weights) ) { - $w = $weights[$p]; - } elseif ( strncmp($p, 'extragear-', strlen('extragear-')) == 0 ) { - $w = 7; - } else { - $w = 2; - } - return $w; -} - -/* - Compare packages, so that a certain order is enforced - (libraries first, then Applications, Extragear and Review) -*/ -function cmp_packages( $p1, $p2 ) -{ - $w1 = package_weight( $p1 ); - $w2 = package_weight( $p2 ); - $dw = $w1 - $w2; - if ( $dw == 0 ) { - /* same weight, so normal comparison */ - return strcmp( $p1, $p2 ); - } else { - return $dw; - } -} - -/* $packagelist: Complete list of all available packages */ -$packagelist = array_keys( $modules_programs ); -usort( $packagelist, 'cmp_packages' ); -/* Check if the requested package is a valid one */ -if ( $selected_package != "" and - (! in_array($selected_package, $packagelist) ) ) { - $selected_package_nonexist = $selected_package; - $show_intro = true; -} - -?> \ No newline at end of file diff --git a/include/staticappdata.inc.php b/include/staticappdata.inc.php deleted file mode 100644 --- a/include/staticappdata.inc.php +++ /dev/null @@ -1,466 +0,0 @@ - diff --git a/index.php b/index.php deleted file mode 100644 --- a/index.php +++ /dev/null @@ -1,546 +0,0 @@ - 0, 'stable5' => 1, 'trunk4' => 2, 'stable4' => 3); - if (in_array($b1, $base_array) && in_array($b2, $base_array)) { - return $base_array[$b1] - $base_array[$b2]; - } -} - -/* - Return the proper package/namespace for the specified application and - branch, using the knowledge generated by the documentation - generator. -*/ -function get_namespace($application, $branch) -{ - global $programs_multiplemodules; - if ( array_key_exists($application, $programs_multiplemodules) ) { - // multiple packages/namespaces: check in the special list of programs_docs - // with multiple modules if there is specific module for the current branch. - foreach ( $programs_multiplemodules[$application] as $s_branch => $s_module ) { - if ( $s_branch == $branch ) { - return $s_module; - } - } - } else { - global $modules_programs; - // single module for all branches, find it - foreach ( $modules_programs as $module => $module_apps ) { - if ( in_array($application, $module_apps) ) { - return $module; - } - } - } -} - -function build_url( $application='', $package='', $lang='', $branch='', $html_path='' ) -{ - $params = array(); - if ( strlen($branch) > 0 ) - $params[] = "branch=".$branch; - if ( strlen($lang) > 0 ) - $params[] = "language=".$lang; - if ( strlen($package) > 0 ) - $params[] = "package=".$package; - if ( strlen($application) > 0 ) - $params[] = "application=".$application; - if ( strlen($html_path) > 0 ) - $params[] = "path=".$html_path; - return "/index.php?" . implode('&', $params); -} - -function build_path( $branch='', $lang='', $application='', $html_path='' ) -{ - $package = get_namespace($application, $branch); - return $branch . - "/" . $lang . - "/" . $package . - "/" . $application . - "/" . $html_path; -} - -function language_for_application_exist( $app, $lang ) -{ - global $programs_docs; - return (array_key_exists($lang, $programs_docs[$app])); -} - -function branch_exist( $app, $lang, $branch ) -{ - global $programs_docs; - // no translations for the specified application in the current language - if ( !language_for_application_exist($app, $lang) ) { - return ""; - } - // Handle old URL - compatibility with the old schema - $compatibility_branches = array( - "development" => array("trunk5", "trunk4"), - "stable" => array("stable5", "stable4"), - ); - // Search in compatibility branches first - if ( array_key_exists($branch, $compatibility_branches) ) { - foreach ( $compatibility_branches[$branch] as $comp_branch ) { - # echo "Looking for $comp_branch into ".var_dump($programs_docs[$app][$lang]); - if ( in_array($comp_branch, $programs_docs[$app][$lang]) ) { - return $comp_branch; - } - } - } - // Normal branch - if ( in_array($branch, $programs_docs[$app][$lang]) ) { - return $branch; - } - return ""; -} - -if ( $selected_application != "" ) { - $apps = array($selected_application); - - // If branch is specified and correct, jump to the documentation - if ( $selected_branch != "" ) { - if (!language_for_application_exist( $selected_application, $selected_language )) { - $selected_language_nonexist = $selected_language; - $selected_language = "en"; - } - $looked_branch = branch_exist( $selected_application, $selected_language, $selected_branch ); - if ( $looked_branch != "" ) { - header( "Location: /".build_path( $looked_branch, $selected_language, $selected_application, $html_path ) ); - } else { - $selected_branch_nonexist = $selected_branch; - $selected_branch = ""; - } - } -} elseif ( $selected_package != "" ) { - $apps = $modules_programs[$selected_package]; -} else { - $show_intro = true; -} - -/* This is the actual start of the page as the media framework knows it */ - - -/* include('include/docs.inc'); */ - - $applications_list_json = json_encode(array_keys($programs_docs)); - include('include/functions.inc'); - include('include/header_docs.inc'); - -/* We are really printing HTML, WOW */ - -/* Build the menu */ - -echo ""; - -echo " -
-"; -echo " - -"; - - - - -echo " -
-
    -
  • -Language: - -
  • -
  • -Documentation branch: - -
  • -
  • -Match: - -
  • -
  • -Words: - -
  • -
  • - -
  • -
- - -
-"; - - -// end of search block - -echo " -

This server contains the complete user documentation for KDE (except the playground module).

-

You can select the release and language of the documentation you are searching for. Not all languages have all documentation translated.

-

The API documentation is available at api.kde.org.

- -

"; - - -if (isset($name) && isset($url)) { - $contact = i18n_var("Maintained by ") . " $name
\n"; -} else { - $contact = i18n_var("Maintained by kde.org Webmaster
\n"); -} - -print $contact; - -echo "

"; - i18n("KDE and K Desktop Environment are trademarks of"); -echo " "; - i18n("KDE e.V."); -echo " | "; - i18n("Legal"); -echo " -

- -
-"; - -echo ""; - -echo ""; // id=navigation - -/* - Check for packages/dirctories with subdirectories - Used to produce the i.e. kcontrol break out boxes. -*/ - -include 'include/staticappdata.inc.php'; - -/* Introduced because of the kocontrol/* */ -echo "
"; - -if ($selected_application_nonexist != "") { -echo " -
-

The application $selected_application_from_user -could not be found. Please check if you entered the name correctly, or use the -navigation on the left to access the complete KDE User Documentation.

-
-"; -} - -if ($selected_branch_nonexist != "") { -echo " -
-

The branch $selected_branch_nonexist -is not available for the specified application/language.

-
-"; -} - -if ($selected_language_nonexist != "") { -echo " -
-

The requested language $selected_language_nonexist -could not be found. US English was used instead.

-
-"; -} - -if ($selected_package_nonexist != "") { -echo " -
-

The package $selected_package_nonexist -could not be found.

-
-"; -} - -if (isset($url_nonexist)) { -echo " -
-

The file $url_nonexist could not be found. -Please check if you entered the URL correctly, or use the navigation on the left -to access the complete KDE User Documentation.

-

If you reached this page from another part of the KDE Documentation website or from an other KDE website, -please notify the KDE Documentation -Team and report the page where you found the wrong link, so we can fix the problem.

-
-"; -} - - -if ( $show_intro ) { - - include ("intro.inc.html"); - -} else { - #kdepimlibs has no applications - if ( (in_array($selected_package, $package_no_application_array) ) == false ) { - echo "

Module: $selected_package

"; - echo "
    "; - } - foreach ( $apps as $application ) { - - /* If the check for a subdir is positive, the subdir is added to the - subdir_array which is handled below */ - foreach ( $check_array as $check_string ) { - $check = strpos( $application, $check_string ); - if ( $check === false ) { - $applicationname = $application; - $checktest = false; - } else { - $checktest = true; - $subdir_array[]=$application; - break; - } - } - - /* Identity is important here */ - if ( $checktest === true ) { - continue; - } - - /* Ignore the oddities defined above */ - foreach ( $ignore_array as $ignore_string ) { - $test_string = $selected_package . "/" . $application; - if ( $test_string == $ignore_string ) { - $breaktest = true; - break; - } else { - $breaktest = false; - } - } - - if ( $breaktest === true ) { - continue; - } - - if ( $application == "kcontrol" or $application == "kcontrol5") { - /* If there ever is a kcontrol docbook outside kdebase - file_exists must be used. - */ - continue; - } - /* - catch docs which are there but have no index.docbook - or are otherwise broken - */ - $total_branches = $programs_docs[$applicationname][$selected_language]; - if(isset($appdisplayname_array[$applicationname])) { - $appdisplayname = $appdisplayname_array[$applicationname]; - } else { - $appdisplayname = $applicationname; - } - if ( $total_branches > 0 ) { - $app_branches = $programs_docs[$applicationname][$selected_language]; - usort( $app_branches, 'cmp_branches' ); - echo "
  • $appdisplayname
      "; - foreach ( $app_branches as $available_branch ) { - $candidate_html = build_path( $available_branch, $selected_language, $application, 'index.html' ); - if ( file_exists( $candidate_html ) ) { - echo "
    • "; - - echo "".$branch_description[$available_branch].""; - - $candidate_pdf = build_path( $available_branch, $selected_language, $application, $application.".pdf" ); - if ( file_exists( $candidate_pdf ) ) { - echo " (PDF)\n"; - } - echo "
    • "; - } - } - echo "
  • \n"; - } else { - echo "
  • ".$appdisplayname."". - "
    No documentation available for this language
  • "; - } - } - #kdepimlibs has no applications - if ( (in_array($selected_package, $package_no_application_array) ) == false ) { - echo "
"; - } - /* Needed for breaking up the subboxes (see kdebase)*/ - $previous_dir=""; - - /* Iterate over the subdir_array produced - above and break it into according boxes - */ - foreach ( $subdir_array as $application ) { - $current_dir = substr( $application, 0, strpos( $application, '/' ) ); - - if ( $current_dir != $previous_dir ) { - if ( $previous_dir != "" ) { - echo ""; - } - echo "

". $appdisplayname_array[$current_dir] ."

"; - echo "
    "; - } - - $applicationname = str_replace( '/', '', strstr( $application, '/' ) ); - - $app_branches = $programs_docs[$application][$selected_language]; - usort( $app_branches, 'cmp_branches' ); - echo "
  • $appdisplayname_array[$applicationname]
      "; - foreach ( $app_branches as $available_branch ) { - $candidate_html = build_path( $available_branch, $selected_language, $application, 'index.html' ); - if ( file_exists( $candidate_html ) ) { - echo "
    • "; - - echo "". - "". $branch_description[$available_branch] ."".""; - $candidate_pdf = build_path( $available_branch, $selected_language, - $application, $applicationname.".pdf" ); - if ( file_exists( $candidate_pdf ) ) { - echo " (PDF)\n"; - } - echo "
    • "; - } - } - echo "
  • \n"; - - $previous_dir = $current_dir; - } - echo "
"; -} - -/* END appswrapper */ -echo "
"; -echo "" -?> - - diff --git a/intro.inc.html b/intro.inc.html deleted file mode 100644 --- a/intro.inc.html +++ /dev/null @@ -1,53 +0,0 @@ - -
- -

Welcome

- -

- Welcome to the KDE documentation site. This page holds the - complete KDE User Documentation in over 25 languages. Thanks - to the enormous efforts by our documentation and translation - teams you can access thousands of pages of documentation. -

-

- Before you start searching the library or asking - questions on the mailing lists, there is a good chance your - answer is already in the - KDE UserBase or the - KDE Community Forums. - They have a hotspot in the right menubar, where you have - fast access to them. -

-

- If you are looking for developer documentation, the - KDE Techbase - is the place where you get what you are looking for. -

- -

Navigation

-

- There are two menubars on the site. The left one allows you to navigate - through the available KDE packages, languages and versions. The right - menubar holds quicklinks to KDE UserBase and the KDE Community Forums, - and allows you to search the complete documentation in all languages. -

-

- Select the language, the version of KDE and the package, - the application you want is in. For now only the stable and - the development versions of the documentation are available. -

- -

Other Information

-

- The documentation for KDE Extragear applications is only available - in the development section. -

-

- System Settings (KControl) documentation gets separate boxes, since it - is very big and most users only want a small part of them. -

- -

- I hope you find what you are searching for. Have fun with KDE! -

-
diff --git a/kde-chunk-online.xsl b/kde-chunk-online.xsl --- a/kde-chunk-online.xsl +++ b/kde-chunk-online.xsl @@ -44,7 +44,7 @@ 0 0 /HEAD/common/ - + 1 @@ -65,6 +65,8 @@ + + diff --git a/kde-navig-online.xsl b/kde-navig-online.xsl --- a/kde-navig-online.xsl +++ b/kde-navig-online.xsl @@ -1,8 +1,8 @@ - - - + version="1.0"> + + + @@ -34,156 +34,157 @@ - - + + - +
+ +
- +
- + - - - - - + + + + + - - - - + + +
diff --git a/package.json b/package.json new file mode 100644 --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "devDependencies": { + "@symfony/webpack-encore": "^0.22.0", + "bootstrap": "^4.2.1", + "jquery": "^3.3.1", + "jquery-ui": "^1.12.1", + "node-sass": "^4.11.0", + "popper.js": "^1.14.6", + "sass-loader": "^7.1.0", + "webpack-notifier": "^1.6.0" + }, + "license": "UNLICENSED", + "private": true, + "scripts": { + "dev-server": "encore dev-server", + "dev": "encore dev", + "watch": "encore dev --watch", + "build": "encore production --progress" + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..15ff1d165ef37c35fe1661941813ec21da32ae0f GIT binary patch literal 1150 zc$}qE$xl;p5Pl~90UV5H4=#02T@#H_^yooNT#g>p#Px&+E*4P=SScPjoh;0pOS;ErVN+XH|TD1H6^mBgmpxW5#!QacY^X9$z=9`)CNzy#J%E~1AT_hc! zFG&j}Nm7wfh$2dy4?XKypxE3oo?nhqX3#8U``bH(rh>6b#lGpnY7DklqW@t9Ow}tD zysBl&J0)_>S~YC??OgMPZVO^TKOzA)y6QJ`Zuga4u+*+EjzM)t4fTjjdf_(e;OoAD zWOx#ZZ~#7A6U8nup2yUX=UC7y;SW5jKsJ*^;@bpc*_-#m-n55(5lcp<;A%Sw!@0$O za4=|=FwfuzCtMFsqpNNMMmy^;__&h%jd*+S7{=_k;k8{S|0pcf>l}udmGjmCc&%6Q zx$gn(`737m)BI92|CWPF5lGpI0*%@lA;T fcWo!|>e_C?Tl>%NQS3xmUaLYcBK8}1=|9g;JYdlH literal 0 Hc$@handle($request); +$response->send(); +$kernel->terminate($request, $response); diff --git a/robots.txt b/public/robots.txt rename from robots.txt rename to public/robots.txt diff --git a/src/Controller/.gitignore b/src/Controller/.gitignore new file mode 100644 diff --git a/src/Controller/MainController.php b/src/Controller/MainController.php new file mode 100644 --- /dev/null +++ b/src/Controller/MainController.php @@ -0,0 +1,329 @@ +render('index.html.twig', [ + 'modules_programs' => GeneratedData::modules_programs, + 'lang' => $_locale, + 'search_form' => $this->createSearchForm()->createView(), + 'all_application_names' => $this->getAllApplicationsName($_locale, $translator), + 'languages' => GeneratedData::languagelist, + 'branch_descriptions' => GeneratedData::branch_description, + ]); + } + + /** + * @Route("/{_locale}/search", name="search", defaults={"_locale": "en"}, requirements={"_locale": "%app.locales%"}) + * @param string $_locale + * @param Request $request + * @param TranslatorInterface $translator + * @return Response + * @throws \Psr\Cache\InvalidArgumentException + */ + public function searchAction(string $_locale, Request $request, TranslatorInterface $translator): Response + { + // create search form + $search = new Search(); + $form = $this->createForm(SearchBarType::class, $search, [ + 'action' => $this->generateUrl('search'), + ]); + + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + // do the search with the provided search term + $searchTerm = $search->getSearchTerm(); + $cache = new FilesystemAdapter(); + $searchResult = []; + $searchTermSimple = str_replace('/', '-', $searchTerm); + $searchResultCache = $cache->getItem('search.' . $_locale . '.' . $searchTermSimple); + + if (!$searchResultCache->isHit()) { + foreach (GeneratedData::modules_programs as $module => $moduleContent) { + foreach ($moduleContent as $submodule) { + $array = explode('/', $submodule); + if (array_key_exists($_locale, GeneratedData::programs_docs[$submodule])) { + $branch_available = GeneratedData::programs_docs[$submodule][$_locale]; + + if (count($array) == 1 && strpos(($displayName = $translator->trans($submodule, [], "modules")), $searchTerm) !== false) { + $searchResult[$module][$submodule] = ["branch" => $branch_available]; + } elseif (count($array) == 2 + && strpos(($displayName = $translator->trans($array[1], [], "modules")), $searchTerm) !== false) { + $searchResult[$module][$array[0]][$array[1]] = ["branch" => $branch_available]; + } + } + } + } + $searchResultCache->set($searchResult); + $cache->save($searchResultCache); + } else { + $searchResult = $searchResultCache->get(); + } + + + return $this->render('search.html.twig', [ + 'lang' => $_locale, + 'search_term' => $search->getSearchTerm(), + 'search_result' => $searchResult, + 'branch_descriptions' => GeneratedData::branch_description, + 'all_application_names' => $this->getAllApplicationsName($_locale, $translator), + 'search_form' => $this->createSearchForm()->createView(), + 'languages' => GeneratedData::languagelist, + ]); + } + + // no search term provided + // create page with only search form + return $this->render('search.html.twig', [ + 'lang' => $_locale, + 'search_result' => null, + 'all_application_names' => $this->getAllApplicationsName($_locale, $translator), + 'search_form' => $this->createSearchForm()->createView(), + 'languages' => GeneratedData::languagelist, + 'branch_descriptions' => GeneratedData::branch_description, + ]); + + } + + /** + * @Route("/{_locale}/{module}", name="module", defaults={"_locale": "en"}, requirements={"_locale": "%app.locales%"}) + * @param string $_locale + * @param string $module + * @param TranslatorInterface $translator + * @return Response + * @throws \Exception + */ + public function moduleAction(string $_locale, string $module, TranslatorInterface $translator): Response + { + if (!array_key_exists($module, GeneratedData::modules_programs)) { + throw new \Exception("Module is unknown"); + } + + $submodules = []; + + foreach (GeneratedData::modules_programs[$module] as $submodule) { + $array = explode('/', $submodule); + if (array_key_exists($_locale, GeneratedData::programs_docs[$submodule])) { + $branch_available = GeneratedData::programs_docs[$submodule][$_locale]; + if (count($array) == 1) { + $submodules[$submodule] = ["branch" => $branch_available]; + } elseif (count($array) == 2) { + $submodules[$array[0]][$array[1]] = ["branch" => $branch_available]; + } + } + } + + return $this->render('module.html.twig', [ + 'lang' => $_locale, + 'module' => $module, + 'categories' => $submodules, + 'branch_descriptions' => GeneratedData::branch_description, + 'search_form' => $this->createSearchForm()->createView(), + 'all_application_names' => $this->getAllApplicationsName($_locale, $translator), + 'languages' => GeneratedData::languagelist, + ]); + } + + public function languageListDropdown() + { + return $this->render( + 'language_dropdown.html.twig', [ + 'languages' => GeneratedData::languagelist, + 'full_language_name' => StaticAppData::full_language_name, + ] + ); + } + + /** + * @return SearchBarType + */ + private function createSearchForm(): FormInterface + { + // create search form + $search = new Search(); + $form = $this->createForm(SearchBarType::class, $search, [ + 'action' => $this->generateUrl('search'), + ]); + return $form; + } + + private function getAllApplicationsName(string $_locale, TranslatorInterface $translator): string + { + $cache = new FilesystemAdapter(); + $applicationsNameCache = $cache->getItem('applicationsName.' . $_locale); + + if (!$applicationsNameCache->isHit()) { + $applicationsName = []; + foreach (GeneratedData::modules_programs as $module => $moduleContent) { + foreach ($moduleContent as $submodule) { + $array = explode('/', $submodule); + if (count($array) == 1) { + $applicationsName[] = $translator->trans($submodule, [], "modules"); + } elseif (count($array) == 2) { + $applicationsName[] = $translator->trans($array[1], [], "modules"); + } + } + } + $applicationsNameString = ''; + foreach ($applicationsName as $name) { + $applicationsNameString .= $name . ', '; + } + $applicationsNameCache->set($applicationsNameString); + $cache->save($applicationsNameCache); + return $applicationsNameString; + } else { + return $applicationsNameCache->get(); + } + } + + /** + * Compare branches (priority), used by usort()/uasort() + * @param string $b1 + * @param string $b2 + * @return string + */ + function cmp_branches(string $b1, string $b2): string + { + $base_array = array('trunk5' => 0, 'stable5' => 1, 'trunk4' => 2, 'stable4' => 3); + if (in_array($b1, $base_array) && in_array($b2, $base_array)) { + return $base_array[$b1] - $base_array[$b2]; + } + } + + + /** + * Return the proper package/namespace for the specified application and + * branch, using the knowledge generated by the documentation + * generator. + * @param string $application + * @param string $branch + * @return string + */ + function get_namespace(string $application, string $branch): string + { + if (array_key_exists($application, GeneratedData::programs_multiplemodules)) { + // multiple packages/namespaces: check in the special list of programs_docs + // with multiple modules if there is specific module for the current branch. + foreach (GeneratedData::programs_multiplemodules[$application] as $s_branch => $s_module) { + if ($s_branch == $branch) { + return $s_module; + } + } + } else { + global $modules_programs; + // single module for all branches, find it + foreach ($modules_programs as $module => $module_apps) { + if (in_array($application, $module_apps)) { + return $module; + } + } + } + } + + function build_url(string $application = '', string $package = '', string $lang = '', string $branch = '', string $html_path = ''): string + { + $params = array(); + if (strlen($branch) > 0) + $params[] = "branch=" . $branch; + if (strlen($lang) > 0) + $params[] = "language=" . $lang; + if (strlen($package) > 0) + $params[] = "package=" . $package; + if (strlen($application) > 0) + $params[] = "application=" . $application; + if (strlen($html_path) > 0) + $params[] = "path=" . $html_path; + return "/index.php?" . implode('&', $params); + } + + /** + * Get path to handbook + * @param string $branch + * @param string $lang + * @param string $application + * @param string $html_path + * @return string + */ + function build_path(string $branch = '', string $lang = '', string $application = '', string $html_path = ''): string + { + $package = $this->get_namespace($application, $branch); + return $branch . + "/" . $lang . + "/" . $package . + "/" . $application . + "/" . $html_path; + } + + /** + * Check if translation exist + * @param string $app + * @param string $lang + * @return bool + */ + function language_for_application_exist(string $app, string $lang): bool + { + return (array_key_exists($lang, $this->programs_docs[$app])); + } + + /** + * Check if text exist for the specified branch and language + * @param $app + * @param $lang + * @param $branch + * @return string the branch + */ + function branch_exist($app, $lang, $branch): string + { + // no translations for the specified application in the current language + if (!language_for_application_exist($app, $lang)) { + return ""; + } + // Handle old URL - compatibility with the old schema + $compatibility_branches = array( + "development" => array("trunk5", "trunk4"), + "stable" => array("stable5", "stable4"), + ); + // Search in compatibility branches first + if (array_key_exists($branch, $compatibility_branches)) { + foreach ($compatibility_branches[$branch] as $comp_branch) { + # echo "Looking for $comp_branch into ".var_dump($this->programs_docs[$app][$lang]); + if (in_array($comp_branch, $this->programs_docs[$app][$lang])) { + return $comp_branch; + } + } + } + // Normal branch + if (in_array($branch, $this->programs_docs[$app][$lang])) { + return $branch; + } + return ""; + } +} + diff --git a/src/Data/StaticAppData.php b/src/Data/StaticAppData.php new file mode 100644 --- /dev/null +++ b/src/Data/StaticAppData.php @@ -0,0 +1,90 @@ + "English", + "ca" => "Català", + "fr" => "Français", + "de" => "Deutsch", + "uk" => "українська", + ]; +} + +?> diff --git a/src/Entity/Search.php b/src/Entity/Search.php new file mode 100644 --- /dev/null +++ b/src/Entity/Search.php @@ -0,0 +1,24 @@ +searchTerm; + } + + /** + * @param string|null $search + */ + public function setSearchTerm(?string $search): void + { + $this->searchTerm = $search; + } +} \ No newline at end of file diff --git a/src/Form/SearchBarType.php b/src/Form/SearchBarType.php new file mode 100644 --- /dev/null +++ b/src/Form/SearchBarType.php @@ -0,0 +1,28 @@ +add('search_term', SearchType::class, [ + 'translation_domain' => 'app', + ]) + ->add('Search', SubmitType::class, [ + 'label' => 'Search', + 'translation_domain' => 'app' + ]); + } +} \ No newline at end of file diff --git a/src/Kernel.php b/src/Kernel.php new file mode 100644 --- /dev/null +++ b/src/Kernel.php @@ -0,0 +1,58 @@ +getProjectDir().'/var/cache/'.$this->environment; + } + + public function getLogDir() + { + return $this->getProjectDir().'/var/log'; + } + + public function registerBundles() + { + $contents = require $this->getProjectDir().'/config/bundles.php'; + foreach ($contents as $class => $envs) { + if ($envs[$this->environment] ?? $envs['all'] ?? false) { + yield new $class(); + } + } + } + + protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader) + { + $container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php')); + $container->setParameter('container.dumper.inline_class_loader', true); + $confDir = $this->getProjectDir().'/config'; + + $loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{packages}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob'); + } + + protected function configureRoutes(RouteCollectionBuilder $routes) + { + $confDir = $this->getProjectDir().'/config'; + + $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob'); + $routes->import($confDir.'/{routes}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, '/', 'glob'); + $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob'); + } +} diff --git a/styles/darkbackground.css b/styles/darkbackground.css deleted file mode 100644 --- a/styles/darkbackground.css +++ /dev/null @@ -1,273 +0,0 @@ -/** - * based on code by Sebastian Faubel - * modified by Christoph Cullmann and Olaf Schmidt - */ - -/* common (X)HTML formats */ - -body { -font-size: 100%; -line-height: 1.2em; /* Note: it is inherited as is, not recalculated! */ -background-color: #000022; -color: white; -font-family: sans-serif; -padding: 0; -margin: 0; -} - -table, td, th { -font-family: sans-serif; -padding: 0; -margin: 0; -text-align: left; -background-color: black; -} - -input, select { -font-size: 0.8em; -line-height: 1em; -} - -form { -margin: 0; -padding: 0; -} - -optgroup { -font-style: normal; -} - -a:link { -color: #CCCCFF; -text-decoration: underline; -} - -a:visited { -color: #FFCCFF; -text-decoration: underline; -} - -a:hover { -text-decoration: underline; -} - -/* navigation header, this is the combined area with logo and section links */ - -#nav_header_top { -text-align: right; -} - -#nav_header_bottom { -clear: left; -padding: 0.3em; -background-color: black; -text-align: left; -} - -#nav_header_logo, #nav_header_logo_right { -display: none; -} - -/* title text */ -#nav_header_title { -float: left; -font-size: 2em; -line-height: 1.4em; -padding-left: 0.2em; -} - -/* location combo */ -#nav_header_location { -} - -/* location URL */ -#nav_header_bottom_left { -vertical-align: middle; - -font-size: 0.8em; -line-height: 1.1em; -} - -/* place for the links to contact, sitemap, ... s*/ -#nav_header_bottom_right { -float: right; -vertical-align: middle; - -font-size: 0.8em; -line-height: 1.1em; -} - -/* main color definitions */ - -.menuheader { -height: 0; -line-height: 0; -margin: 0; -padding: 0; -font-size: 0; -} - -#leftmenu, #rightmenu { -width: 20%; -} - -#leftmenu h2, #rightmenu h2 { -font-size: 1em; -padding-left: 1em; -vertical-align: middle; -background-color: #000022; -color: white; -margin-top: 0; -} - -#rightmenu h3 { -padding: 0.3em 0.8em; -font-size: 1em; -} - -#leftmenu ul, #rightmenu ul { -margin: 0; -padding-left: 0.5em; -padding-bottom: 1em; -} - -#leftmenu ul { -list-style-type: none; -} - -#rightmenu ul { -list-style-type: none; -} - -#leftmenu li, #rightmenu li { -font-size: 0.8em; -} - -#leftmenu li { -margin-left: 1em; -} - -#rightmenu li { -margin-left: 1.5em; -} - -#leftmenu ul ul, #rightmenu ul ul { -margin: 0; -padding-left: 0; -} - -#leftmenu li li, #rightmenu li li{ -font-size: 0.8em; -margin-left: 2em; -list-style-type: square; -} - -/** - * page footer - */ - -/* background + border at top */ -#footer { -background-color: #000022; -} - -/* footer text stuff + image */ -#footer_text { -display: none; -} - -/* classes */ - -/* static IDs, ordered top to bottom */ - -#content { -border: 1px solid white; -padding: 0em 0.7em 1.5em 0.7em; -text-align: justify; -background-color: black; -} - -#content td, #content th { -font-family: sans-serif; -padding: 0.25em; -margin: 0; -text-align: left; -} - -#content h4, #content h3, #content h2, #content h1 { -text-align: left; -line-height: 1em; /* without this lines stick in each other for headings */ -} - -#quicklinks { -font-size: 1em; -text-align: center; -margin-top: 1em; -margin-left: 0.5em; -margin-bottom: 0.5em; -margin-right: 0.5em; -} - -.menu_box { -background-color: black; -} - -#search { -text-align: center; -padding: 0.2em 0.2em 0.2em 0.2em; -} - -#search label { -display: none; -} - -#search input, #search select { -width: 95%; -margin-bottom: 2px; -} - -#hotspot { -font-size: 0.8em; -line-height: 1em; -text-align: center; -padding: 0 0 0.8em 0; -} - -#rightmenu h3 { -margin-bottom: 0; -} - -.newsbox1 { -background-color: #000022; -margin-top: 1em; -margin-bottom: 0.5em; -} - -.newsbox2 { -background-color: black; -margin-top: 1em; -margin-bottom: 0.5em -} - -/* common style for tables used in the page */ -.table_box { -background-color: #000022; -border: 0; -padding: 0; -margin: 0; -border-spacing: 0; -} - -.table_box th { -background-color: #000022; -color: white; -} - -/* hidden stuff */ -.doNotDisplay { -display: none; -} - -@media aural { .doNotDisplay { -display: inline; -}} diff --git a/styles/print-rtl.css b/styles/print-rtl.css deleted file mode 100644 --- a/styles/print-rtl.css +++ /dev/null @@ -1,63 +0,0 @@ -/** - * based on code by Sebastian Faubel - * modified by Christoph Cullmann - */ - -/* common (X)HTML formats */ - -body { -background-color: white; -color: black; -font-family: sans-serif; -padding: 0; -margin: 0; -} - -table, td, th { -font-family: sans-serif; -line-height: 1em; -padding: 0; -margin: 0; -text-align: left; -} - -input, select, textarea { -font-family: sans-serif; -} - -optgroup { -font-style: normal; -} - -a:link { -color: #036; -} - -a:visited { -color: #555AAA; -} - -/* main color definitions */ - -.invisible, #nav_header_logo, #nav_header_location, #nav_header_bottom, #footer, .menuheader, #leftmenu, #rightmenu, #leftmenu h2, #leftmenu ul, #search { -display: none; -width: 0; -overflow: hidden; -} - -#content { -background-color: white; -text-align: justify; -line-height: 1.5em; -background-color: white; -padding-right: 2em; -} - -/* static IDs, ordered top to bottom */ - -/* div { border: 1px solid black; } */ - -/* hidden stuff */ -.doNotDisplay { - display: none; -} \ No newline at end of file diff --git a/styles/print.css b/styles/print.css deleted file mode 100644 --- a/styles/print.css +++ /dev/null @@ -1,63 +0,0 @@ -/** - * based on code by Sebastian Faubel - * modified by Christoph Cullmann - */ - -/* common (X)HTML formats */ - -body { -background-color: white; -color: black; -font-family: sans-serif; -padding: 0; -margin: 0; -} - -table, td, th { -font-family: sans-serif; -line-height: 1em; -padding: 0; -margin: 0; -text-align: left; -} - -input, select, textarea { -font-family: sans-serif; -} - -optgroup { -font-style: normal; -} - -a:link { -color: #036; -} - -a:visited { -color: #555AAA; -} - -/* main color definitions */ - -.invisible, #nav_header_logo, #nav_header_location, #nav_header_bottom, #footer, .menuheader, #leftmenu, #rightmenu, #leftmenu h2, #leftmenu ul, #search, #footer { -display: none; -width: 0; -overflow: hidden; -} - -#content { -background-color: white; -text-align: justify; -line-height: 1.5em; -background-color: white; -padding-right: 2em; -} - -/* static IDs, ordered top to bottom */ - -/* div { border: 1px solid black; } */ - -/* hidden stuff */ -.doNotDisplay { - display: none; -} \ No newline at end of file diff --git a/styles/standard-rtl.css b/styles/standard-rtl.css deleted file mode 100644 --- a/styles/standard-rtl.css +++ /dev/null @@ -1,360 +0,0 @@ -/** - * based on code by Sebastian Faubel - * modified by Christoph Cullmann and Olaf Schmidt - */ - -/* common (X)HTML formats */ - -body { -font-size: 100%; -line-height: 1.2em; /* Note: it is inherited as is, not recalculated! */ -background-color: white; -color: black; -font-family: sans-serif; -padding: 0; -margin: 0; -} - -table, td, th { -font-family: sans-serif; -padding: 0; -margin: 0; -} - -input, select { -font-size: 0.8em; -line-height: 1em; -} - -form { -margin: 0; -padding: 0; -} - -optgroup { -font-style: normal; -} - -a:link { -color: #0000C0; -text-decoration: none; -} - -a:visited { -color: #800080; -text-decoration: none; -} - -a:hover { -text-decoration: underline; -} - -/* navigation header, this is the combined area with logo and section links */ - -#nav_header_top { -height: 52px; -background-color: #418ade; -border-bottom: 1px solid #000000; -} - -#nav_header_bottom { -padding: 6px 6px 6px 84px; -background-color: #dfe7f3; -border-bottom: 1px solid #000000; -} - -#nav_header_logo { -float: left; -padding: 10px; -} - -#nav_header_logo a img { -width: 64px; -height: 64px; -} - -#nav_header_logo_right { -float: right; -padding: 10px; -} - -/* title text */ -#nav_header_title { -position: absolute; -top: 12px; -left: 86px; -border: 0px; -font-size: 32px; -font-weight: bold; -color: white; -white-space: nowrap; - -line-height: 36px; -} - -/* location combo */ -#nav_header_location { -position: absolute; -top: 12px; -right: 8px; -border: 0px; -color: #444; -vertical-align: middle; -white-space: nowrap; - -font-size: 14px; -} - -/* location URL */ -#nav_header_bottom_left { -vertical-align: middle; - -font-size: 0.8em; -line-height: 1.1em; -} - -/* place for the links to contact, sitemap, ... s*/ -#nav_header_bottom_right { -float: left; -vertical-align: middle; - -font-size: 0.8em; -line-height: 1.1em; -} - -/* main color definitions */ - -.menuheader { -height: 0; -line-height: 0; -margin: 0; -padding: 0; -font-size: 0; -} - -#leftmenu, #rightmenu { -width: 20%; -} - -#leftmenu h2, #rightmenu h2 { -font-size: 1em; -padding-right: 1em; -vertical-align: middle; -background-color: #418ade; -border-top: 0.3em solid #418ade; -border-bottom: 0.3em solid #418ade; -color: white; -margin-top: 0; -} - -#rightmenu h3 { -padding: 0.3em 0.8em; -font-size: 1em; -margin-bottom: 0; -} - -#leftmenu ul, #rightmenu ul { -margin: 0; -padding-right: 0.5em; -padding-bottom: 1em; -} - -#leftmenu ul { -list-style-type: none; -} - -#rightmenu ul { -list-style-type: none; -} - -#leftmenu li, #rightmenu li { -font-size: 0.8em; -} - -#leftmenu li { -margin-right: 1em; -} - -#rightmenu li { -margin-right: 1.5em; -} - -#leftmenu ul ul, #rightmenu ul ul { -margin: 0; -padding-right: 0; -} - -#leftmenu li li, #rightmenu li li { -font-size: 0.8em; -margin-right: 2em; -} - -li.here a:link, li.here a:visited, li.here li.here a:link, li.here li.here a:visited { -text-decoration: underline; -} - -li.here li a:link, li.here li a:visited { -text-decoration: none; -} - -li.here a:hover, li.here li a:hover, li.here li.here a:hover { -text-decoration: underline; -} - -/** - * page footer - */ - -/* background + border at top */ -#footer { -border-top: 1px solid #000000; -background-image: url(../images/footer_bg.png); -background-repeat: repeat-x; -background-position: bottom left; -width: 100%; -height: 100px; -} - -/* left footer, contains the text */ -#footer_text { -left: 0px; -text-align: right; -padding: 0em 1.5em 0em 1.5em; -clear: both; -background-image: url(../images/footer_left.png); -background-repeat: no-repeat; -background-position: bottom left; -width: 100%; -height: 100px; -bottom:0px; -} - -/* classes */ - -#main, #content { -clear: both; -} - -#content { -background-color: white; -padding: 0.5em 0.7em 1.5em 0.7em; -text-align: justify; -} - -#content td, #content th { -font-family: sans-serif; -padding: 0.25em; -margin: 0; -text-align: left; -} - -#content h4, #content h3, #content h2, #content h1 { -color: #418ade; -line-height: 1em; /* without this lines stick in each other for headings */ -} - -#quicklinks { -background-color: #E6F0F9; -font-size: 1em; -padding: 1em; -text-align: center; -margin-top: 1em; -margin-left: 0.5em; -margin-bottom: 0.5em; -margin-right: 0.5em; -} - -#leftmenu, #rightmenu { -background-color: white; -color: #036; -} - -.menu_box { -border-top: 8px solid white; -border-right: 8px solid white; -border-left: 8px solid white; - -background-color: #dfe7f3; -} - -#search { -text-align: center; -padding: 0.2em 0.2em 0.2em 0.2em; -} - -#search label { -display: none; -} - -#search input, #search select { -width: 95%; -margin-bottom: 2px; -} - -#hotspot { -font-size: 0.8em; -line-height: 1em; -text-align: center; -padding: 0 0 0.8em 0; -} - -.newsbox1 { -background-color: #E6F0F9; -margin-top: 1em; -margin-bottom: 0.5em; -} - -.newsbox2 { -background-color: white; -margin-top: 1em; -margin-bottom: 0.5em -} - -/* common style for tables used in the page */ -.table_box { -background-color: #dfe7f3; -border: 0; -padding: 0; -margin: 0; -border-spacing: 0; -} - -.table_box th { -background-color: #418ade; -color: white; -} - -/* needed for edu.kde.org */ -.contentheader, #content h4.contentheader { -font-size: 1em; -font-weight: bold; -line-height: 1.2em; -padding: 0.1em 0 0.2em 1em; -vertical-align: middle; -background-color: #418ade; -color: white; -margin: 0; -} - -/* Very common pattern on developer.kde.org: a list of links - to other pages with a brief italicized description below the link. - Can be created with
  • link

  • */ - -ul.linklist p { - font-size: small; - font-style: italic; -} - -ul.linklist p em { - font-style: normal; - font-weight: bold; -} - -/* hidden stuff */ -.doNotDisplay { -display: none; -} - -@media aural { .doNotDisplay { -display: inline; -}} diff --git a/styles/standard.css b/styles/standard.css deleted file mode 100644 --- a/styles/standard.css +++ /dev/null @@ -1,368 +0,0 @@ -/** - * based on code by Sebastian Faubel - * modified by Christoph Cullmann and Olaf Schmidt - */ - -/* common (X)HTML formats */ - -body { -font-size: 100%; -line-height: 1.2em; /* Note: it is inherited as is, not recalculated! */ -background-color: white; -color: black; -font-family: sans-serif; -padding: 0; -margin: 0; -} - -table, td, th { -font-family: sans-serif; -padding: 0; -margin: 0; -text-align: left; -} - -input, select { -font-size: 0.8em; -line-height: 1em; -} - -form { -margin: 0; -padding: 0; -} - -optgroup { -font-style: normal; -} - -a:link { -color: #0000C0; -text-decoration: none; -} - -a:visited { -color: #800080; -text-decoration: none; -} - -a:hover { -text-decoration: underline; -} - -/* navigation header, this is the combined area with logo and section links */ - -#nav_header_top { -height: 52px; - -text-align: right; - -background-color: #418ade; -border-bottom: 1px solid #000000; -} - -#nav_header_bottom { -padding: 6px 6px 6px 84px; -background-color: #dfe7f3; -border-bottom: 1px solid #000000; - -text-align: left; -} - -#nav_header_logo { -float: left; -padding: 10px; -} - -#nav_header_logo a img { -width: 64px; -height: 64px; -} - -#nav_header_logo_right { -float: right; -padding: 10px; -} - -/* title text */ -#nav_header_title { -position: absolute; -top: 12px; -left: 86px; -border: 0px; -font-size: 32px; -font-weight: bold; -color: white; -white-space: nowrap; - -line-height: 36px; -} - -/* location combo */ -#nav_header_location { -position: absolute; -top: 12px; -right: 8px; -border: 0px; -color: #444; -vertical-align: middle; -white-space: nowrap; - -font-size: 14px; -} - -/* location URL */ -#nav_header_bottom_left { -vertical-align: middle; - -font-size: 0.8em; -line-height: 1.1em; -} - -/* place for the links to contact, sitemap, ... s*/ -#nav_header_bottom_right { -float: right; -vertical-align: middle; - -font-size: 0.8em; -line-height: 1.1em; -} - -/* main color definitions */ - -.menuheader { -height: 0; -line-height: 0; -margin: 0; -padding: 0; -font-size: 0; -} - -#leftmenu, #rightmenu { -width: 20%; -} - -#leftmenu h2, #rightmenu h2 { -font-size: 1em; -padding-left: 1em; -vertical-align: middle; -background-color: #418ade; -border-top: 0.3em solid #418ade; -border-bottom: 0.3em solid #418ade; -color: white; -margin-top: 0; -} - -#rightmenu h3 { -padding: 0.3em 0.8em; -font-size: 1em; -margin-bottom: 0; -} - -#leftmenu ul, #rightmenu ul { -margin: 0; -padding-left: 0.5em; -padding-bottom: 1em; -} - -#leftmenu ul { -list-style-type: none; -} - -#rightmenu ul { -list-style-type: none; -} - -#leftmenu li, #rightmenu li { -font-size: 0.8em; -} - -#leftmenu li { -margin-left: 1em; -} - -#rightmenu li { -margin-left: 1.5em; -} - -#leftmenu ul ul, #rightmenu ul ul { -margin: 0; -padding-left: 0; -} - -#leftmenu li li, #rightmenu li li { -font-size: 0.8em; -margin-left: 2em; -} - -li.here a:link, li.here a:visited, li.here li.here a:link, li.here li.here a:visited { -text-decoration: underline; -} - -li.here li a:link, li.here li a:visited { -text-decoration: none; -} - -li.here a:hover, li.here li a:hover, li.here li.here a:hover { -text-decoration: underline; -} - -/** - * page footer - */ - -/* background + border at top */ -#footer { -border-top: 1px solid #000000; -background-image: url(../images/footer_bg.png); -background-repeat: repeat-x; -background-position: bottom left; -width: 100%; -height: 100px; -} - -/* left footer, contains the text */ -#footer_text { -left: 0px; -text-align: left; -padding: 0em 1.5em 0em 1.5em; -clear: both; -background-image: url(../images/footer_right.png); -background-repeat: no-repeat; -background-position: bottom right; -width: 100%; -height: 100px; -bottom:0px; -} - -/* classes */ - -#main, #content { -clear: both; -} - -#content { -background-color: white; -padding: 0.5em 0.7em 1.5em 0.7em; -text-align: justify; -} - -#content td, #content th { -font-family: sans-serif; -padding: 0.25em; -margin: 0; -text-align: left; -} - -#content h4, #content h3, #content h2, #content h1 { -color: #418ade; -text-align: left; -line-height: 1em; /* without this lines stick in each other for headings */ -} - -#quicklinks { -background-color: #E6F0F9; -font-size: 1em; -padding: 1em; -text-align: center; -margin-top: 1em; -margin-left: 0.5em; -margin-bottom: 0.5em; -margin-right: 0.5em; -} - -#leftmenu, #rightmenu { -background-color: white; -color: #036; -} - -.menu_box { -border-top: 8px solid white; - -border-right: 8px solid white; -border-left: 8px solid white; - -background-color: #dfe7f3; -} - -#search { -text-align: center; -padding: 0.2em 0.2em 0.2em 0.2em; -} - -#search label { -display: none; -} - -#search input, #search select { -width: 95%; -margin-bottom: 2px; -} - -#hotspot { -font-size: 0.8em; -line-height: 1em; -text-align: center; -padding: 0 0 0.8em 0; -} - -.newsbox1 { -background-color: #E6F0F9; -margin-top: 1em; -margin-bottom: 0.5em; -} - -.newsbox2 { -background-color: white; -margin-top: 1em; -margin-bottom: 0.5em -} - -/* common style for tables used in the page */ -.table_box { -background-color: #dfe7f3; -border: 0; -padding: 0; -margin: 0; -border-spacing: 0; -} - -.table_box th { -background-color: #418ade; -color: white; -} - -/* needed for edu.kde.org */ -.contentheader, #content h4.contentheader { -font-size: 1em; -font-weight: bold; -line-height: 1.2em; -padding: 0.1em 0 0.2em 1em; -vertical-align: middle; -background-color: #418ade; -color: white; -margin: 0; -} - -/* Very common pattern on developer.kde.org: a list of links - to other pages with a brief italicized description below the link. - Can be created with
  • link

  • */ - -ul.linklist p { - font-size: small; - font-style: italic; -} - -ul.linklist p em { - font-style: normal; - font-weight: bold; -} - -/* hidden stuff */ -.doNotDisplay { -display: none; -} - -@media aural { .doNotDisplay { -display: inline; -}} diff --git a/styles/yellowonblue.css b/styles/yellowonblue.css deleted file mode 100644 --- a/styles/yellowonblue.css +++ /dev/null @@ -1,273 +0,0 @@ -/** - * based on code by Sebastian Faubel - * modified by Christoph Cullmann and Olaf Schmidt - */ - -/* common (X)HTML formats */ - -body { -font-size: 100%; -line-height: 1.2em; /* Note: it is inherited as is, not recalculated! */ -background-color: #000099; -color: #ffff00; -font-family: sans-serif; -padding: 0; -margin: 0; -} - -table, td, th { -font-family: sans-serif; -padding: 0; -margin: 0; -text-align: left; -background-color: #000066; -} - -input, select { -font-size: 0.8em; -line-height: 1em; -} - -form { -margin: 0; -padding: 0; -} - -optgroup { -font-style: normal; -} - -a:link { -color: #99ff00; -text-decoration: underline; -} - -a:visited { -color: #ff9900; -text-decoration: underline; -} - -a:hover { -text-decoration: underline; -} - -/* navigation header, this is the combined area with logo and section links */ - -#nav_header_top { -text-align: right; -} - -#nav_header_bottom { -clear: left; -padding: 0.3em; -background-color: #000066; -text-align: left; -} - -#nav_header_logo, #nav_header_logo_right { -display: none; -} - -/* title text */ -#nav_header_title { -float: left; -font-size: 2em; -line-height: 1.4em; -padding-left: 0.2em; -} - -/* location combo */ -#nav_header_location { -text-align: right; -} - -/* location URL */ -#nav_header_bottom_left { -vertical-align: middle; - -font-size: 0.8em; -line-height: 1.1em; -} - -/* place for the links to contact, sitemap, ... s*/ -#nav_header_bottom_right { -float: right; -vertical-align: middle; - -font-size: 0.8em; -line-height: 1.1em; -} - -/* main color definitions */ - -.menuheader { -height: 0; -line-height: 0; -margin: 0; -padding: 0; -font-size: 0; -} - -#leftmenu, #rightmenu { -width: 20%; -} - -#leftmenu h2, #rightmenu h2 { -font-size: 1em; -padding-left: 1em; -vertical-align: middle; -background-color: #000099; -color: #ffff00; -margin-top: 0; -} - -#rightmenu h3 { -padding: 0.3em 0.8em; -font-size: 1em; -} - -#leftmenu ul, #rightmenu ul { -margin: 0; -padding-left: 0.5em; -padding-bottom: 1em; -} - -#leftmenu ul { -list-style-type: none; -} - -#rightmenu ul { -list-style-type: none; -} - -#leftmenu li, #rightmenu li { -font-size: 0.8em; -} - -#leftmenu li { -margin-left: 1em; -} - -#rightmenu li { -margin-left: 1.5em; -} - -#leftmenu ul ul, #rightmenu ul ul { -margin: 0; -padding-left: 0; -} - -#leftmenu li li, #rightmenu li li{ -font-size: 0.8em; -margin-left: 2em; -list-style-type: square; -} - -/** - * page footer - */ - -/* background + border at top */ -#footer { -background-color: #000099; -} - -/* footer text stuff + image */ -#footer_text { -display: none; -} - -/* classes */ - -/* static IDs, ordered top to bottom */ - -#content { -border: 1px solid #ffff00; -padding: 0em 0.7em 1.5em 0.7em; -text-align: justify; -background-color: #000066; -} - -#content td, #content th { -font-family: sans-serif; -padding: 0.25em; -margin: 0; -text-align: left; -} - -#content h4, #content h3, #content h2, #content h1 { -text-align: left; -line-height: 1em; /* without this lines stick in each other for headings */ -} - -#quicklinks { -font-size: 1em; -text-align: center; -margin-top: 1em; -margin-left: 0.5em; -margin-bottom: 0.5em; -margin-right: 0.5em; -} - -.menu_box { -background-color: #000066; -} - -#search { -text-align: center; -padding: 0.2em 0.2em 0.2em 0.2em; -} - -#search label { -display: none; -} - -#search input, #search select { -width: 95%; -margin-bottom: 2px; -} - -#hotspot { -font-size: 0.8em; -line-height: 1em; -text-align: center; -padding: 0 0 0.8em 0; -} - -#rightmenu h3 { -margin-bottom: 0; -} - -.newsbox1 { -background-color: #000099; -margin-top: 1em; -margin-bottom: 0.5em; -} - -.newsbox2 { -background-color: #000066; -margin-top: 1em; -margin-bottom: 0.5em -} - -/* common style for tables used in the page */ -.table_box { -background-color: #000099; -border: 0; -padding: 0; -margin: 0; -border-spacing: 0; -} - -.table_box th { -background-color: #000099; -color: #ffff00; -} -/* hidden stuff */ -.doNotDisplay { -display: none; -} - -@media aural { .doNotDisplay { -display: inline; -}} diff --git a/templates/base.html.twig b/templates/base.html.twig new file mode 100644 --- /dev/null +++ b/templates/base.html.twig @@ -0,0 +1,238 @@ +{% trans_default_domain 'app' %} + + + + + + + {% block title %}KDE Documentation {% endblock %} + {% block stylesheets %} + {{ encore_entry_link_tags('app') }} + {% endblock %} + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    + {# APPLICATIONS SEARCH #} + {{ form_start(search_form, {'attr': {'class': 'form-row', 'novalidate': 'novalidate'}}) }} +
    + {{ form_widget(search_form.search_term, {'attr': {'aria-label': 'Search', 'placeholder': 'Search', 'class': 'form-control mb-2', 'value': search_term is defined ? search_term : '', 'id': 'autocomplete'}} ) }} +
    +
    + {{ form_widget(search_form.Search, {'attr': {'id': 'autocomplete', 'class': 'btn btn-outline-success mb-2 col-md-12'}}) }} +
    + {{ form_end(search_form) }} + + {# MAIN CONTENT #} + {% block body %}{% endblock %} + + {# OMEGA SEARCH #} +

    Advanced search

    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    + + + +
    +
    +
    + +{% block javascripts %} + {{ encore_entry_script_tags('app') }} +{% endblock %} + + diff --git a/templates/index.html.twig b/templates/index.html.twig new file mode 100644 --- /dev/null +++ b/templates/index.html.twig @@ -0,0 +1,21 @@ +{% extends 'base.html.twig' %} + +{% trans_default_domain 'app' %} + +{% block body %} +

    {% trans %}Welcome{% endtrans %}

    +

    {% trans %}Welcome to the KDE documentation site. This page holds the complete KDE User Documentation in over 25 + languages. Thanks to the enormous efforts by our documentation and translation teams you can access + thousands of pages of documentation.{% endtrans %}

    +

    {% trans %}Before you start searching the library or asking questions on the mailing lists, there is a good chance your + answer is already in the KDE UserBase or the KDE Community Forums.{% endtrans %}

    +

    {% trans %}If you are looking for developer documentation, the KDE + Techbase is the place where you get what you are looking for.{% endtrans %}

    +

    {% trans %}Categories{% endtrans %}

    + +{% endblock %} diff --git a/templates/language_dropdown.html.twig b/templates/language_dropdown.html.twig new file mode 100644 --- /dev/null +++ b/templates/language_dropdown.html.twig @@ -0,0 +1,12 @@ +
    + {% for language in languages %} + {% if loop.index0 % 3 == 0 and loop.index0 != 0 %} +
    +
    + {% endif %} + {# TODO there is probably a better way #} + {{ full_language_name[language] is defined ? full_language_name[language] : language }} + {% endfor %} +
    +
    diff --git a/templates/module.html.twig b/templates/module.html.twig new file mode 100644 --- /dev/null +++ b/templates/module.html.twig @@ -0,0 +1,43 @@ +{% extends 'base.html.twig' %} + +{% trans_default_domain 'app' %} + +{% block body %} +

    Module: {{ module }}

    + {% for category,submodules in categories %} +

    {{ category|trans({}, 'modules') }}

    + {% if submodules.branch is defined %} + + {% else %} +
    + {% for submodule,branchs in submodules %} + {% if loop.index0 % 2 == 0 and loop.index0 != 0 %} +
    +
    + {% endif %} +
    + {{ submodule|trans({}, 'modules') }} + +
    + {% endfor %} +
    + {% endif %} + {% endfor %} +{% endblock %} diff --git a/templates/search.html.twig b/templates/search.html.twig new file mode 100644 --- /dev/null +++ b/templates/search.html.twig @@ -0,0 +1,48 @@ +{% extends 'base.html.twig' %} + +{% trans_default_domain 'app' %} + +{% block body %} + {% if search_result is defined %} + {% for module, moduleContent in search_result %} + {% for category, submodules in moduleContent %} +

    {{ category|trans({}, 'modules') }}

    + {% if submodules.branch is defined %} + + {% else %} +
    + {% for submodule,branchs in submodules %} + {% if loop.index0 % 2 == 0 and loop.index0 != 0 %} +
    +
    + {% endif %} +
    + {{ submodule|trans({},'modules') }} + +
    + {% endfor %} +
    + {% endif %} + {% endfor %} + {% endfor %} + {% else %} + TODO ADD TEXT + {% endif %} +{% endblock %} diff --git a/translations/.gitignore b/translations/.gitignore new file mode 100644 diff --git a/translations/app.ca.yaml b/translations/app.ca.yaml new file mode 100644 --- /dev/null +++ b/translations/app.ca.yaml @@ -0,0 +1,2 @@ +navbar: + language: Català \ No newline at end of file diff --git a/translations/app.de.yaml b/translations/app.de.yaml new file mode 100644 --- /dev/null +++ b/translations/app.de.yaml @@ -0,0 +1,15 @@ +index.welcome: __index.welcome +index.content1: __index.content1 +index.content2: __index.content2 +index.content3: __index.content3 +index.categories: __index.categories +navbar.help: __navbar.help +navbar.contact: __navbar.contact +navbar.donate: __navbar.donate +navbar.language: __navbar.language +'Donate to KDE': '__Donate to KDE' +'Why Donate?': '__Why Donate?' +'Get Involved in KDE': '__Get Involved in KDE' +'KDE on Facebook': '__KDE on Facebook' +'KDE on Twitter': '__KDE on Twitter' +'KDE on Google+': '__KDE on Google+' diff --git a/translations/app.en.yaml b/translations/app.en.yaml new file mode 100644 --- /dev/null +++ b/translations/app.en.yaml @@ -0,0 +1,55 @@ +language: English +'KDE Documentation': 'KDE Documentation' +'Toggle navigation': 'Toggle navigation' +'Homepage of the KDE non-profit Organization': 'Homepage of the KDE non-profit Organization' +'Donate to KDE': 'Donate to KDE' +'Why donate?': 'Why donate?' +'Get Involved in KDE': 'Get Involved in KDE' +'and the': 'and the' +'logo (': 'logo (:' +'are registered trademarks of': 'are registered trademarks of:' +Legal: Legal +Search: Search +Help: Help +'Contact Us': 'Contact Us' +Donate: Donate +'''Your donation is smaller than 2€. This means that most of your donation\nwill end up in processing fees. Do you want to continue?': '''Your donation is smaller than 2€. This means that most of your donation\nwill end up in processing fees. Do you want to continue?' +'Donate via PayPal': 'Donate via PayPal' +'Other ways to donate': 'Other ways to donate' +Products: Products +Plasma: Plasma +'KDE Applications': 'KDE Applications' +'Plasma Mobile': 'Plasma Mobile' +'KDE neon': 'KDE neon' +WikiToLearn: WikiToLearn +Develop: Develop +'TechBase Wiki': 'TechBase Wiki' +'Api Documentation': 'Api Documentation' +'Qt Documentation': 'Qt Documentation' +'Inqlude Documentation': 'Inqlude Documentation' +'News & Press': 'News & Press' +Announcements: Announcements +Kde.news: Kde.news +'Planet KDE': 'Planet KDE' +Screenshots: Screenshots +'Press Contact': 'Press Contact' +Resources: Resources +'Community Wiki': 'Community Wiki' +'UserBase Wiki': 'UserBase Wiki' +'Miscellaneous Stuff': '>Miscellaneous Stuff' +Support: Support +'International Websites': 'International Websites' +'Download KDE Software': 'Download KDE Software' +Destinations: Destinations +'KDE Store': 'KDE Store' +'KDE Free Qt Foundation': 'KDE Free Qt Foundation' +'KDE Timeline': 'KDE Timeline' +'KDE on Facebook': 'KDE on Facebook' +'KDE on Google+': 'KDE on Google+' +'KDE on Twitter': 'KDE on Twitter' +') are registered trademarks of': ') are registered trademarks of' +Welcome: Welcome +Categories: Categories +"Welcome to the KDE documentation site. This page holds the complete KDE User Documentation in over 25\n languages. Thanks to the enormous efforts by our documentation and translation teams you can access\n thousands of pages of documentation.": "Welcome to the KDE documentation site. This page holds the complete KDE User Documentation in over 25\n languages. Thanks to the enormous efforts by our documentation and translation teams you can access\n thousands of pages of documentation." +"Before you start searching the library or asking questions on the mailing lists, there is a good chance your\n answer is already in the KDE UserBase or the KDE Community Forums.": "Before you start searching the library or asking questions on the mailing lists, there is a good chance your\n answer is already in the KDE UserBase or the KDE Community Forums." +"If you are looking for developer documentation, the KDE\n Techbase is the place where you get what you are looking for.": "If you are looking for developer documentation, the KDE\n Techbase is the place where you get what you are looking for." diff --git a/translations/app.fr.yaml b/translations/app.fr.yaml new file mode 100644 --- /dev/null +++ b/translations/app.fr.yaml @@ -0,0 +1,53 @@ +language: Français +'KDE Documentation': 'Documentation de KDE' +'Toggle navigation': 'Basculer la navigation' +Help: Aide +'Contact Us': 'Contacter nous' +Donate: Donation +'Donate to KDE': 'Faire un don à KDE' +'Why donate?': 'Pourquoi donner ?' +'''Your donation is smaller than 2€. This means that most of your donation\nwill end up in processing fees. Do you want to continue?': '__''Your donation is smaller than 2€. This means that most of your donation\nwill end up in processing fees. Do you want to continue?' +'Donate via PayPal': 'Donner via PayPal' +'Other ways to donate': 'Autre moyen de donner' +Products: Produits +Plasma: Plasma +'KDE Applications': 'KDE Applications' +'Plasma Mobile': 'Plasma Mobile' +'KDE neon': 'KDE neon' +WikiToLearn: WikiToLearn +Develop: Développer +'TechBase Wiki': 'TechBase Wiki' +'Api Documentation': "Documentation de l'Api" +'Qt Documentation': 'Documentation de Qt' +'Inqlude Documentation': 'Documentation de Inqlude' +'News & Press': 'Nouvelles et presse' +Announcements: Annonce +Kde.news: Kde.news +'Planet KDE': 'Planet KDE' +Screenshots: "Capture d'écran" +'Press Contact': 'Contact presse' +Resources: Ressources +'Community Wiki': 'Community Wiki' +'UserBase Wiki': 'UserBase Wiki' +'Miscellaneous Stuff': 'Autres' +Support: Support +'International Websites': '__International Websites' +'Download KDE Software': '__Download KDE Software' +Destinations: __Destinations +'KDE Store': '__KDE Store' +'KDE Free Qt Foundation': '__KDE Free Qt Foundation' +'KDE Timeline': '__KDE Timeline' +'Get Involved in KDE': '__Get Involved in KDE' +'KDE on Facebook': '__KDE on Facebook' +'KDE on Google+': '__KDE on Google+' +'KDE on Twitter': '__KDE on Twitter' +'and the': 'et le ' +'logo (': 'logo (' +') are registered trademarks of': ') sont des marques déposées de ' +'Homepage of the KDE non-profit Organization': "Page d'accueil de l'organisation non-lucrative de KDE' +Legal: Légal +Welcome: Bienvenue +"Bienvenue sur le site de la documenation de KDE. This page holds the complete KDE User Documentation in over 25\n languages. Thanks to the enormous efforts by our documentation and translation teams you can access\n thousands of pages of documentation.": "__Welcome to the KDE documentation site. This page holds the complete KDE User Documentation in over 25\n languages. Thanks to the enormous efforts by our documentation and translation teams you can access\n thousands of pages of documentation." +"Before you start searching the library or asking questions on the mailing lists, there is a good chance your\n answer is already in the KDE UserBase or the KDE Community Forums.": "__Before you start searching the library or asking questions on the mailing lists, there is a good chance your\n answer is already in the KDE UserBase or the KDE Community Forums." +"If you are looking for developer documentation, the KDE\n Techbase is the place where you get what you are looking for.": "__If you are looking for developer documentation, the KDE\n Techbase is the place where you get what you are looking for." +Categories: Catégories diff --git a/translations/app.uk.yaml b/translations/app.uk.yaml new file mode 100644 --- /dev/null +++ b/translations/app.uk.yaml @@ -0,0 +1,2 @@ +navbar: + language: українська \ No newline at end of file diff --git a/translations/modules.en.yaml b/translations/modules.en.yaml new file mode 100644 --- /dev/null +++ b/translations/modules.en.yaml @@ -0,0 +1,429 @@ +kcontrol: System Settings Modules +kcontrol5: System Settings Modules +kioslave: Kioslaves +kioslave5: Kioslaves + +#kdelibs +sonnet: Check Spelling +data: Data URLs +http: http/https +file: file +ftp: FTP +help: help +mailto: mailto +rlogin: rlogin +telnet: telnet +webdav: webdav/webdavs + +#kdepimlibs +kresources: KDE PIM Resources (deprecated) +imap: imap +ldap: ldap +mbox: mbox +nntp: nntp +pop3: pop3 +sieve: sieve +smtp: smtp + +#applications +kdepasswd: Password &, User Account # move to kcontrol, it is a kcm +kate: Kate +katepart: Kate Part +kfind: KFind +konsole: Konsole/ +konqueror: Konqueror +kwrite: KWrite +dolphin: Dolphin +keditbookmarks: Bookmark Editor + +#kde-runtime +kdebugdialog: KDebugDialog +kdebugdialog5: KDebugDialog +knetattach: KNetAttach +documentationnotfound: Documentation not found +onlinehelp: Online Help +khelpcenter: KHelpCenter +kdesu: KDE su +fundamentals: KDE Fundamentals + +#kde-runtime kcontrol +attica: Social Desktop +cache: Cache +componentchooser: Default Applications +cookies: Cookies +ebrowsing: Web Shortcuts +emoticons: Emoticons +filemanager: File Management +filetypes: File Associations +formats: Formats +history: History +icons: Icons +kcmcgi: CGI Script +kcmcss: Appearance +kcmlaunchfeedback: Launch Feedback +kcmnotify: System Notification +kcm_ssl: SSL Preferences +kded: Service Manager +khtml-adblock: AdBlocK Filters +khtml-behavior: Web Browsing +khtml-general: General Konqueror Behavior +khtml-java-js: Java and JavaScript +khtml-plugins: Browser Plugins +kwineffects: Desktop Effects +language: Country/Region & Language +nepomuk: Desktop Search +netpref: Connection Preferences +performance: Performance +phonon: Audio and Video Settings +proxy: Proxy +smb: Windows Shares +solid-device-automounter: Removable Devices +spellchecking: Spell Checker +translations: Translations +trash: Trash +useragent: Browser Identification + +#kde-runtime kioslaves +bookmarks: bookmarks +bzip2: bzip2 / bzip +cgi: cgi +finger: finger +fish: fish +floppy: Floppy +gzip: gzip +info: Info +man: Man +nepomuksearch: nepomuksearch +network: network +nfs: nfs +sftp: sftp +tar: tar +thumbnail: thumbnail +xz: xz / lzma + +#kde-workspace +plasma-desktop: Plasma Manual +plasma-pa: Audio Volume +systemsettings: System Settings +kfontview: Font Viewer +klipper: Klipper +kdm: KDM Login Manager +kinfocenter: KDE Info Center +kmenuedit: KDE Menu Editor +ksysguard: System Monitor +PolicyKit-kde: PolicyKit-kde +#kde-workspace kcontrol +autostart: Autostart +baloo: File Search Settings +bell: System Bell +clock: Date & Time +colors: Colors +cursortheme: Cursor Theme +desktop: Virtual Desktops +desktopthemedetails: Desktop Themes +fontinst: Font Management +fonts: Fonts +joystick: Joystick +kcmaccess: Accessibility +kcmsmserver: Session Management +kcmstyle: Style +keyboard: Keyboard +keys: Shortcuts +kgamma5: Monitor Gamma +khotkeys: Custom Shortcuts +kwincompositing: Desktop Effects +kwindecoration: Window Decorations +kwinscreenedges: Screen Edges +kwintabbox: Task Switcher +mouse: Mouse +paths: Paths +powerdevil: Power Management +screenlocker: Screen Locker +screensaver: Screen Locker +solid-actions: Device Actions +solid-hardware: Information Sources +splashscreen: Splash Screen +webshortcuts: Web Shortcuts +windowbehaviour: Window Behavior +windowspecific: Window Rules +workspaceoptions: Workspace + +#kdeaccessibility/ +jovie: Jovie +kmag: KMagnifier +kmousetool: KMouseTool +kmouth: KMouth + +#kdeadmin/ +kcron: Task Scheduler # move to kcontrol, it is a kcm +ksystemlog: KSystemLog +kuser: KUser + +#kdeedu +artikulate: Artikulate +blinken: Blinken +cantor: Cantor +kalgebra: KAlgebra +kalzium: Kalzium +kanagram: Kanagram +kbruch: KBruch +kgeography: KGeography +khangman: KHangMan +kig: Kig +kiten: Kiten +klettres: KLettres +kmplot: KmPlot +kstars: KStars +ktouch: KTouch +kturtle: KTurtle +kwordquiz: KWordQuiz +marble: Marble +minuet: Minuet +pairseditor: Pairs Editor +parley: Parley +rocs: Rocs +step: Step + +#kdegames +bomber: Bomber +bovo: Bovo +granatier: Granatier +kajongg: Kajongg +kapman: Kapman +katomic: KAtomic +knavalbattle: Naval Battle +kblackbox: KBlackbox +kblocks: KBlocks +kbounce: KBounce +kbreakout: KBreakout +kdiamond: KDiamond +kfourinline: KFourInLine +kgoldrunner: KGoldrunner +kigo: Kigo +killbots: Killbots +kiriki: Kiriki +kjumpingcube: KJumpingCube +klickety: Klickety +knights: Knights +klines: Kolor Lines +kmahjongg: KMahjongg +kmines: KMines +knetwalk: KNetwalk +kolf: Kolf +kollision: Kollision +konquest: Konquest +kpat: KPatience +kreversi: KReversi +kshisen: Shisen-Sho +ksirk: KSirk +kspaceduel: KSpaceDuel +ksquares: KSquares +ksudoku: KSudoku +ktron: KSnakeDuel +ktuberling: KTuberling +kubrick: Kubrick +lskat: LSkat +palapeli: Palapeli +picmi: Picmi + +#kdegraphics +gwenview: Gwenview +kolourpaint: KolourPaint +kruler: KRuler +ksnapshot: KSnapshot +okular: Okular +spectacle: Spectacle + +#kdegraphics kcontrol +kamera: Digital Camera +kgamma: Monitor Gamma + +#kdemultimedia +dragonplayer: Dragon Player +juk: JuK +kdenlive: Kdenlive +kmix: KMix +kwave: Kwave + +#kdemultimedia kcontrol +cddbretrieval: CDDB Retrieval +cddbretrieval5: CDDB Retrieval + +#kdemultimedia kioslave +audiocd: audiocd + +#kdenetwork +kget: KGet +kopete: Kopete +kppp: KPPP +krdc: KRDC +krfb: Desktop Sharing +recentdocuments: Recent Documents + +#kdepim +akonadi_archivemail_agent: Archive Mail Agent +akonadi_followupreminder_agent: Follow Up Reminder Agent +akonadi_folderarchive_agent: Folder Archive Agent +akonadi_notes_agent: Notes Agent +akonadi_sendlater_agent: Send Later Agent +akregator: Akregator +blogilo: Blogilo +contactthemeeditor: Contact Theme Editor +headerthemeeditor: Header Theme Editor +importwizard: Import Wizard +kabcclient: KABC-Client +kalarm: KAlarm +kjots: KJots +kleopatra: Kleopatra +kmail: KMail +kmail2: KMail +kmailcvt: KMailCVT +knode: KNode +knotes: KNotes +konsolekalendar: KonsoleKalendar +kontact: Kontact +kontact-admin: Kontact Administrator's Guide +korganizer: KOrganizer +ktimetracker: KTimeTracker +ktnef: KTnef +kwatchgnupg: KWatchGnuPG +pimsettingexporter: PIM Setting Exporter +sieveeditor: Sieve Script Editor + +#kdepim kioslave +news: news +#kdesdk + +cervisia: Cervisia +kapptemplate: KAppTemplate +kcachegrind: KCachegrind +kompare: Kompare +lokalize: Lokalize +okteta: Okteta +umbrello: Umbrello + +#kdetoys +amor: Amor +kteatime: KTeatime + +#kdeutils +ark: Ark +filelight: Filelight +kbackup: KBackup +kcalc: KCalc +kcharselect: KCharSelect +kdf: KDiskFree +kfloppy: KFloppy +kgpg: KGpg +ktimer: KTimer +kwallet: KWallet +kwallet5: KWallet +kwalletmanager: KWallet Manager +sweeper: Sweeper + +#kdeutils kcontrol +blockdevices: Block Devices +kremotecontrol: Remote Control + +#kdewebdev +kfilereplace: KFileReplace +kimagemapeditor: KImageMapEditor +klinkstatus: KLinkStatus + +#calligra +sheets: Calligra Sheets +calligra: Calligra +kexi: Kexi +stage: Calligra Stage + +#extragear-accessibility +afaras: Afaras +ssc: Sample Acquisition Tool +sscd: Sample Acquisition Tool Daemon +simond: Simon Daemon +simon: Simon Speech Recognition Tool +sam: Simon Accoustic Model Manager +ksimond: Simon Daemon Frontend + +#extragear-base kcontrol +wacomtablet: KCM Tablet + +#extragear-edu +gcompris: GCompris Administration +labplot2: LabPlot + +#extragear-games + +#extragear-graphics +digikam: digiKam +kcoloredit: KColorEdit +kgraphviewer: KGraphViewer +kiconedit: KIconEdit +kipi-plugins: Kipi Plugins +kphotoalbum: KPhotoAlbum +kpovmodeler: KPovModeler +kuickshow: KuickShow +kxstitch: KXStitch +showfoto: Showfoto +skanlite: Skanlite +SymbolEditor: SymbolEditor + +#extragear-kdevelop +kdevelop: KDevelop + +#extragear-multimedia +amarok: Amarok +k3b: K3b +kaffeine: Kaffeine +kamoso: Kamoso +kaudiocreator: KAudioCreator +kmid: KMid +kmplayer: KMPlayer +kplayer: KPlayer + +#extragear-network +choqok: Choqok +kopete-cryptography: Cryptography Plugin +rekonq: rekonq +konversation: Konversation +ktorrent: KTorrent +smb4k: Smb4K + +#extragear-network kioslave +gopher: gopher +gdrive: gdrive + +#extragear-office +kbibtex: KBibTeX +kile: Kile +kmymoney: KMyMoney +skrooge: Skrooge +tellico: Tellico + +#extragear-pim +ksig: KSig +trojita: Trojita + +#extragear-sdk +xsldbg: xsldbg +kxsldbg: KXSLDbg + +#extragear-sysadmin +partitionmanager: Partition Manager +kiosktool: KIOSK Admin Tool + +#extragear-utils +katimon: Katimon +kdesrc-build: kdesrc-build Script +keurocalc: KEuroCalc +kpager: KPager +krecipes: Krecipes +kronometer: Kronometer +krusader: Krusader +nepomukshell: Nepomuk Shell +rsibreak: RSIBreak +kdiff3: KDiff3 +kdots: KDots +kpeg: KPeg +rkward: RKWard +rkwardplugins: RKWard Plugins diff --git a/translations/modules.uk.yaml b/translations/modules.uk.yaml new file mode 100644 --- /dev/null +++ b/translations/modules.uk.yaml @@ -0,0 +1,429 @@ +kcontrol: System Settings Modules +kcontrol5: System Settings Modules +kioslave: Kioslaves +kioslave5: Kioslaves + +#kdelibs +sonnet: Check Spelling +data: Адреси даних +http: http / https +file: file +ftp: FTP +help: help +mailto: mailto +rlogin: rlogin +telnet: telnet +webdav: webdav / webdavs + +#kdepimlibs +kresources: KDE PIM Resources (deprecated) +imap: imap +ldap: ldap +mbox: mbox +nntp: nntp +pop3: pop3 +sieve: sieve +smtp: smtp + +#applications +kdepasswd: Password &, User Account # move to kcontrol, it is a kcm +kate: Kate +katepart: Kate Part +kfind: KFind +konsole: Konsole/ +konqueror: Konqueror +kwrite: KWrite +dolphin: Dolphin +keditbookmarks: Bookmark Editor + +#kde-runtime +kdebugdialog: KDebugDialog +kdebugdialog5: KDebugDialog +knetattach: KNetAttach +documentationnotfound: Documentation not found +onlinehelp: Online Help +khelpcenter: KHelpCenter +kdesu: Підручник KDE su +fundamentals: KDE Fundamentals + +#kde-runtime kcontrol +attica: Social Desktop +cache: Cache +componentchooser: Типові програми +cookies: Куки +ebrowsing: Web Shortcuts +emoticons: Емоційки +filemanager: File Management +filetypes: Прив’язка файлів +formats: Формати +history: History +icons: Піктограми +kcmcgi: CGI Script +kcmcss: Appearance +kcmlaunchfeedback: Показ запуску +kcmnotify: Параметри системних сповіщень +kcm_ssl: Версія і сертифікати SSL +kded: Фонові служби +khtml-adblock: AdBlocK Filters +khtml-behavior: Web Browsing +khtml-general: General Konqueror Behavior +khtml-java-js: Java and JavaScript +khtml-plugins: Browser Plugins +kwineffects: Ефекти стільниці +language: Country/Region & Language +nepomuk: Desktop Search +netpref: Connection Preferences +performance: Performance +phonon: Параметри звуку та відео +proxy: Проксі +smb: Спільні ресурси Windows +solid-device-automounter: Портативні пристрої +spellchecking: Перевірка правопису +translations: Мова +trash: Смітник +useragent: Ідентифікація навігатора + +#kde-runtime kioslaves +bookmarks: bookmarks +bzip2: bzip2 / bzip +cgi: cgi +finger: finger +fish: fish +floppy: Floppy +gzip: gzip +info: Info +man: Man +nepomuksearch: nepomuksearch +network: network +nfs: nfs +sftp: sftp +tar: tar +thumbnail: thumbnail +xz: xz / lzma + +#kde-workspace +plasma-desktop: Довідник з Плазми--output-format +plasma-pa: Гучність звуку +systemsettings: Системних параметрів +kfontview: Переглядач шрифтів +klipper: Klipper +kdm: KDM Login Manager +kinfocenter: Центр інформації +kmenuedit: Редактора меню KDE +ksysguard: System Monitor +PolicyKit-kde: PolicyKit-kde +#kde-workspace kcontrol +autostart: Автозапуск +baloo: Пошук у файлах +bell: System Bell +clock: Дата і час +colors: Кольори +cursortheme: Тема вказівника +desktop: Віртуальні стільниці +desktopthemedetails: Тема стільниці +fontinst: Керування шрифтами +fonts: Шрифти +joystick: Джойстик +kcmaccess: Доступність +kcmsmserver: Керування сеансами +kcmstyle: Стиль віджетів +keyboard: Клавіатура +keys: Скорочення +kgamma5: Гама монітора +khotkeys: Нетипові скорочення +kwincompositing: Ефекти стільниці +kwindecoration: Поведінка вікон +kwinscreenedges: Краї екрана +kwintabbox: Перемикання задач +mouse: Мишка +paths: Місця +powerdevil: Керування живленням +screenlocker: Блокування екрана +screensaver: Блокування екрана +solid-actions: Дії з пристроями +solid-hardware: Information Sources +splashscreen: Splash Screen +webshortcuts: Вебскорочення +windowbehaviour: Поведінка вікон +windowspecific: Правила вікон +workspaceoptions: Поведінка робочого простору + +#kdeaccessibility/ +jovie: Jovie +kmag: KMagnifier +kmousetool: KMouseTool +kmouth: KMouth + +#kdeadmin/ +kcron: Task Scheduler # move to kcontrol, it is a kcm +ksystemlog: KSystemLog +kuser: KUser + +#kdeedu +artikulate: Artikulate +blinken: Blinken +cantor: Cantor +kalgebra: KAlgebra +kalzium: Kalzium +kanagram: Kanagram +kbruch: KBruch +kgeography: KGeography +khangman: KHangMan +kig: Kig +kiten: Kiten +klettres: KLettres +kmplot: KmPlot +kstars: KStars +ktouch: KTouch +kturtle: KTurtle +kwordquiz: KWordQuiz +marble: Marble +minuet: Minuet +pairseditor: Pairs Editor +parley: Parley +rocs: Rocs +step: Step + +#kdegames +bomber: Bomber +bovo: Bovo +granatier: Granatier +kajongg: Kajongg +kapman: Kapman +katomic: KAtomic +knavalbattle: Naval Battle +kblackbox: KBlackbox +kblocks: KBlocks +kbounce: KBounce +kbreakout: KBreakout +kdiamond: KDiamond +kfourinline: KFourInLine +kgoldrunner: KGoldrunner +kigo: Kigo +killbots: Killbots +kiriki: Kiriki +kjumpingcube: KJumpingCube +klickety: Klickety +knights: Knights +klines: Kolor Lines +kmahjongg: KMahjongg +kmines: KMines +knetwalk: KNetwalk +kolf: Kolf +kollision: Kollision +konquest: Konquest +kpat: KPatience +kreversi: KReversi +kshisen: Shisen-Sho +ksirk: KSirk +kspaceduel: KSpaceDuel +ksquares: KSquares +ksudoku: KSudoku +ktron: KSnakeDuel +ktuberling: KTuberling +kubrick: Kubrick +lskat: LSkat +palapeli: Palapeli +picmi: Picmi + +#kdegraphics +gwenview: Gwenview +kolourpaint: KolourPaint +kruler: KRuler +ksnapshot: KSnapshot +okular: Okular +spectacle: Spectacle + +#kdegraphics kcontrol +kamera: Digital Camera +kgamma: Monitor Gamma + +#kdemultimedia +dragonplayer: Dragon Player +juk: JuK +kdenlive: Kdenlive +kmix: KMix +kwave: Kwave + +#kdemultimedia kcontrol +cddbretrieval: CDDB Retrieval +cddbretrieval5: CDDB Retrieval + +#kdemultimedia kioslave +audiocd: audiocd + +#kdenetwork +kget: KGet +kopete: Kopete +kppp: KPPP +krdc: KRDC +krfb: Desktop Sharing +recentdocuments: Recent Documents + +#kdepim +akonadi_archivemail_agent: Archive Mail Agent +akonadi_followupreminder_agent: Follow Up Reminder Agent +akonadi_folderarchive_agent: Folder Archive Agent +akonadi_notes_agent: Notes Agent +akonadi_sendlater_agent: Send Later Agent +akregator: Akregator +blogilo: Blogilo +contactthemeeditor: Contact Theme Editor +headerthemeeditor: Header Theme Editor +importwizard: Import Wizard +kabcclient: KABC-Client +kalarm: KAlarm +kjots: KJots +kleopatra: Kleopatra +kmail: KMail +kmail2: KMail +kmailcvt: KMailCVT +knode: KNode +knotes: KNotes +konsolekalendar: KonsoleKalendar +kontact: Kontact +kontact-admin: Kontact Administrator's Guide +korganizer: KOrganizer +ktimetracker: KTimeTracker +ktnef: KTnef +kwatchgnupg: KWatchGnuPG +pimsettingexporter: PIM Setting Exporter +sieveeditor: Sieve Script Editor + +#kdepim kioslave +news: news +#kdesdk + +cervisia: Cervisia +kapptemplate: KAppTemplate +kcachegrind: KCachegrind +kompare: Kompare +lokalize: Lokalize +okteta: Okteta +umbrello: Umbrello + +#kdetoys +amor: Amor +kteatime: KTeatime + +#kdeutils +ark: Ark +filelight: Filelight +kbackup: KBackup +kcalc: KCalc +kcharselect: KCharSelect +kdf: KDiskFree +kfloppy: KFloppy +kgpg: KGpg +ktimer: KTimer +kwallet: KWallet +kwallet5: KWallet +kwalletmanager: KWallet Manager +sweeper: Sweeper + +#kdeutils kcontrol +blockdevices: Block Devices +kremotecontrol: Remote Control + +#kdewebdev +kfilereplace: KFileReplace +kimagemapeditor: KImageMapEditor +klinkstatus: KLinkStatus + +#calligra +sheets: Calligra Sheets +calligra: Calligra +kexi: Kexi +stage: Calligra Stage + +#extragear-accessibility +afaras: Afaras +ssc: Sample Acquisition Tool +sscd: Sample Acquisition Tool Daemon +simond: Simon Daemon +simon: Simon Speech Recognition Tool +sam: Simon Accoustic Model Manager +ksimond: Simon Daemon Frontend + +#extragear-base kcontrol +wacomtablet: KCM Tablet + +#extragear-edu +gcompris: GCompris Administration +labplot2: LabPlot + +#extragear-games + +#extragear-graphics +digikam: digiKam +kcoloredit: KColorEdit +kgraphviewer: KGraphViewer +kiconedit: KIconEdit +kipi-plugins: Kipi Plugins +kphotoalbum: KPhotoAlbum +kpovmodeler: KPovModeler +kuickshow: KuickShow +kxstitch: KXStitch +showfoto: Showfoto +skanlite: Skanlite +SymbolEditor: SymbolEditor + +#extragear-kdevelop +kdevelop: KDevelop + +#extragear-multimedia +amarok: Amarok +k3b: K3b +kaffeine: Kaffeine +kamoso: Kamoso +kaudiocreator: KAudioCreator +kmid: KMid +kmplayer: KMPlayer +kplayer: KPlayer + +#extragear-network +choqok: Choqok +kopete-cryptography: Cryptography Plugin +rekonq: rekonq +konversation: Konversation +ktorrent: KTorrent +smb4k: Smb4K + +#extragear-network kioslave +gopher: gopher +gdrive: gdrive + +#extragear-office +kbibtex: KBibTeX +kile: Kile +kmymoney: KMyMoney +skrooge: Skrooge +tellico: Tellico + +#extragear-pim +ksig: KSig +trojita: Trojita + +#extragear-sdk +xsldbg: xsldbg +kxsldbg: KXSLDbg + +#extragear-sysadmin +partitionmanager: Partition Manager +kiosktool: KIOSK Admin Tool + +#extragear-utils +katimon: Katimon +kdesrc-build: kdesrc-build Script +keurocalc: KEuroCalc +kpager: KPager +krecipes: Krecipes +kronometer: Kronometer +krusader: Krusader +nepomukshell: Nepomuk Shell +rsibreak: RSIBreak +kdiff3: KDiff3 +kdots: KDots +kpeg: KPeg +rkward: RKWard +rkwardplugins: RKWard Plugins diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,38 @@ +var Encore = require('@symfony/webpack-encore'); + +Encore + // directory where compiled assets will be stored + .setOutputPath('public/build/') + + // public path used by the web server to access the output path + .setPublicPath('/build') + + .addEntry('app', './assets/js/app.js') + .addStyleEntry('doc', './assets/css/doc.scss') + + // will require an extra script tag for runtime.js + // but, you probably want this, unless you're building a single-page app + .enableSingleRuntimeChunk() + + /* + * FEATURE CONFIG + * + * Enable & configure other features below. For a full + * list of features, see: + * https://symfony.com/doc/current/frontend.html#adding-more-features + */ + .cleanupOutputBeforeBuild() + .enableBuildNotifications() + .enableSourceMaps(!Encore.isProduction()) + + // enables Sass/SCSS support + .enableSassLoader() + + // uncomment if you use TypeScript + //.enableTypeScriptLoader() + + // uncomment if you're having problems with a jQuery plugin + .autoProvidejQuery() +; + +module.exports = Encore.getWebpackConfig();