diff --git a/.arcconfig b/.arcconfig new file mode 100644 --- /dev/null +++ b/.arcconfig @@ -0,0 +1,4 @@ +{ + "phabricator.uri" : "https://phabricator.kde.org/" +} + 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,28 @@ *.pyc +*.lock +vendor +bin +var +logs +src/Data/ +config/services.php +public + +###> 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/README b/README --- a/README +++ b/README @@ -20,7 +20,7 @@ Git (for English) and Subversion (for other languages) and build HTML and PDF files from the DocBook sources. -A PHP framework to display the built documentation in a easy to use interface. +A PHP framework (build with symfony) to display the built documentation in a easy to use interface. The Python script and the related modules replace the Bash script (generator) which was in use from 2005 to 2015. diff --git a/assets/css/app.css b/assets/css/app.css new file mode 100644 --- /dev/null +++ b/assets/css/app.css @@ -0,0 +1,3 @@ +body { + background-color: lightgray; +} 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,636 @@ +@import '~bootstrap/scss/bootstrap'; +@import '~jquery-ui/themes/base/all.css'; +@import './aetherCore.scss'; + +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,1) +} +.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" +} + +@include media-breakpoint-up(md) { + .row.m-0 .list-group-item { + border-radius: 0; + border-left-width: 0; + } + .row.m-0 .list-group-item:nth-child(even) { + border-right-width: 0; + } + + .row.m-0 .list-group-item:nth-child(-n + 2) { + border-top-width: 0 + } + + .row.m-0 .list-group-item:nth-last-child(1), + .row.m-0 .list-group-item:nth-child(2n+1):nth-last-child(1) { + border-bottom-width: 0 + } +} + +@include media-breakpoint-down(sm) { + .row.m-0 .list-group-item { + border-radius: 0; + border-left-width: 0; + border-right-width: 0; + border-bottom-width: 0; + } + .row.m-0 .list-group-item:hover { + border-bottom-width: 1px; + } + .row.m-0 .list-group-item:first-child { + border-top-width: 0; + } +} 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,456 @@ +@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 copied 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 { + width: 90%; + max-width: 1000px; + margin-left: auto; + margin-right: auto; +} + +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
joh;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$g P$B=S1|y}TeU7V2
zo($Sj33Qg8*o?waez`5$s{3&ezsQffeua0^RC>MkpVP`HBs)taX7QEONFGj-XEdss
za0A1*aRSDW&r 3UW%L{Q)nrH(Fq)fiF`^Z0DWh0(eO{xDur*vf-3
z=zH5m+mMn-OWi?Ghb1-+>E=BAIBX9#ef3GPxZiSRN$XMMd!A<;)IVuV3I*eWBfC~_
zvHhBtQ!me}Nk11@j00P!RFFRU?bZrua1WETzgXTMbdsqcy7m%; TGJ&YRvqNfb_lKJH
zfM?A4@lGC(fd`&vIp=0uwC0oTthMdV){UNo7%hcoWHN_w`?d4+MFR~BFNO8*&eJ(Z
z9;LX}ZAjg|Fu7N0j{asWVmTSt=-^)){-woH^gv%*-n%k-xRw#NueI<5H*Mi5FTELS
zcI`}WP8mL|j7+LJFu(e2ygRP@gLvEhW7!}O%K7~P_3mn26H&29 0xSSj;#jCVb{>zWD27m(b@IwW7d0~PA
zf|Vayng9sFzaZ+?K1dKZ9G>_|Y!6t{`qz@CnmowD+71c4K9{|No1LR2mxYOkwV9)X
zE7$*gXD%}&x1fm`FRzIyk13MZ^o5xTp9PE;$!*HdjpX5lnR5aboIreNM?a>&A530G
KMYI`emVd5P}qLp=UIj3HT|(7%mBoIiipIvP{l=#zcOKz;1|k4-Mih|_w|h_@fs~>Anw}H=K;Y0dzbm>=Dn&zk_Yef`}?%SLWR_C~ePgW&U`+M5jkY3aLH^BjN2n
z=kQs9nR_9Vr8<@>iu;p7Kzf?LbBS!?p$;>{O7Hx8ZJ}3
z>^Wcok|aGH2UWC}8Ik7#m2PK)63@V}rps1lUX%Xkl^K-uIC4byLI4oze!lC$_C6o+
z(+bS;qwO_(Y>(3(4d3(A-U#!3CCJJkT+^O`u^r)*hY_(xixWK{YXI3@zv-C5x@@O4
zvS8_be1H+#e|RYqCuPmTiiSYSY-~e}+S_!PaJQRGk5v(Qg0!(@JH|}Yh$FG^70fDb
zA#F!*hM!&nusw;#dEZp^&n;CyO9dwb$Ix)eaa=TKM|bkA{ROem+TM&;&j5%0^82_E
zt=EQ*m$~?L!`WfW!nt~nF##e{G$p=P6YB2pfr7sVx@{i#$*mdb@77Q1Dvg4b4Y@o%
zX$d)X5?E$+{I`m#a7MS yiOCq%?Y_C8;rXbVT5NSvIwwwax`
z_(ucUkJsOJ7AawKvJV&;*35q{yeoO$@6g_rHnZ~?fTQ&rcl=BSfp`&uJYwz6Pl{d7
z)GeHA0Iur;ob{OEE)!UkE*Y9^ubrk|3s`GQ8C84Ry;QtpC!&B5*c4N@;=vTEyo)U~
zI5wtw$?k62gViLFv$1N`>SXCC(lYDSo%!iO;}JOs`1awpP`=~#BW5iR1=m|8i{#(S
zmlyeEl~
I21qEO(Vjjn*ZLes=H+fKmC`wu#Cz2%mi8@gVYWFD{kaGSGTrQv9-CTB**
z^AV@tCtPdHJ2R(PfPM>$b(bd-|2sv
+Y>tVKs_c0k5n^&edgAa(%QNDE+m>%39c?dQ5VdyKy7c4G;rvE)~5wHts
zV_5hEiU5H?P&fG(ZkA?lC@~8c6d*tdUOrK7UOsL
^*~P{=ri0U+A?jCted-?
zEdha2rN`i8i0j~kUCYRfmi5@ad^hJi1rglKJZG=GX4FKHOz-1bENukLnZh&wUe4mN
zDOII@=yT9EpbQ-?U994s`V-7Y0M3fw&WPWJ(B-;G)UA1K^X$eAbe>_nF9k<~FmwHI
zfpiv%SIlgj`2toM6z!U_S>2uM>|zKok8^Q6cgBsi@kvd*8x}W~gj4nd=XAIsFTwsF
z^)QgolL^zRg{jYx91X${0rI6j?SFZ+%qw0-WM(HODXVIhHdPgHve%es;uIII=Kb-!
zii(;vA1)h