diff --git a/weblate_web/static/custom.js b/weblate_web/static/custom.js index 929c81b564..f08fe1b9f1 100644 --- a/weblate_web/static/custom.js +++ b/weblate_web/static/custom.js @@ -254,3 +254,12 @@ ready(() => { "font-size: 20px; font-family: sans-serif", ); }); + +if (typeof SimpleSlider === "function") { + new SimpleSlider(".page-slider", { + slidesPerView: { + 850: 2, + 1165: 3, + }, + }); +} diff --git a/weblate_web/static/img/Dyson-logo.png b/weblate_web/static/img/Dyson-logo.png new file mode 100644 index 0000000000..a7a35c0544 Binary files /dev/null and b/weblate_web/static/img/Dyson-logo.png differ diff --git a/weblate_web/static/img/Logo-Turris.png b/weblate_web/static/img/Logo-Turris.png new file mode 100644 index 0000000000..964fa5402b Binary files /dev/null and b/weblate_web/static/img/Logo-Turris.png differ diff --git a/weblate_web/static/img/LogoFreedomBox.png b/weblate_web/static/img/LogoFreedomBox.png new file mode 100644 index 0000000000..a0409e9f66 Binary files /dev/null and b/weblate_web/static/img/LogoFreedomBox.png differ diff --git a/weblate_web/static/img/LogoOpenSuse.png b/weblate_web/static/img/LogoOpenSuse.png new file mode 100644 index 0000000000..104a2a1c9a Binary files /dev/null and b/weblate_web/static/img/LogoOpenSuse.png differ diff --git a/weblate_web/static/img/LogoPhpMyAdmin.png b/weblate_web/static/img/LogoPhpMyAdmin.png new file mode 100644 index 0000000000..111d45ee64 Binary files /dev/null and b/weblate_web/static/img/LogoPhpMyAdmin.png differ diff --git a/weblate_web/static/img/LogoSonicPi.png b/weblate_web/static/img/LogoSonicPi.png new file mode 100644 index 0000000000..710ff995dd Binary files /dev/null and b/weblate_web/static/img/LogoSonicPi.png differ diff --git a/weblate_web/static/img/Quotes.png b/weblate_web/static/img/Quotes.png new file mode 100644 index 0000000000..e9d74f5a55 Binary files /dev/null and b/weblate_web/static/img/Quotes.png differ diff --git a/weblate_web/static/img/Siemens-logo.png b/weblate_web/static/img/Siemens-logo.png new file mode 100644 index 0000000000..693c67d780 Binary files /dev/null and b/weblate_web/static/img/Siemens-logo.png differ diff --git a/weblate_web/static/img/YouGov-logo.png b/weblate_web/static/img/YouGov-logo.png new file mode 100644 index 0000000000..5dce12fa65 Binary files /dev/null and b/weblate_web/static/img/YouGov-logo.png differ diff --git a/weblate_web/static/img/chevron.png b/weblate_web/static/img/chevron.png new file mode 100644 index 0000000000..c2bfcc8b16 Binary files /dev/null and b/weblate_web/static/img/chevron.png differ diff --git a/weblate_web/static/img/chevron1.png b/weblate_web/static/img/chevron1.png new file mode 100644 index 0000000000..aef882d423 Binary files /dev/null and b/weblate_web/static/img/chevron1.png differ diff --git a/weblate_web/static/img/donald.png b/weblate_web/static/img/donald.png new file mode 100644 index 0000000000..f38f7ac2b4 Binary files /dev/null and b/weblate_web/static/img/donald.png differ diff --git a/weblate_web/static/img/dyson-group.png b/weblate_web/static/img/dyson-group.png new file mode 100644 index 0000000000..61f753584e Binary files /dev/null and b/weblate_web/static/img/dyson-group.png differ diff --git a/weblate_web/static/img/next.svg b/weblate_web/static/img/next.svg new file mode 100644 index 0000000000..866cbf00cc --- /dev/null +++ b/weblate_web/static/img/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/weblate_web/static/img/prev.svg b/weblate_web/static/img/prev.svg new file mode 100644 index 0000000000..d30171ae53 --- /dev/null +++ b/weblate_web/static/img/prev.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/weblate_web/static/img/siemens-group.png b/weblate_web/static/img/siemens-group.png new file mode 100644 index 0000000000..857eb318de Binary files /dev/null and b/weblate_web/static/img/siemens-group.png differ diff --git a/weblate_web/static/img/siemens-log.png b/weblate_web/static/img/siemens-log.png new file mode 100644 index 0000000000..f58f8fa9ec Binary files /dev/null and b/weblate_web/static/img/siemens-log.png differ diff --git a/weblate_web/static/style.css b/weblate_web/static/style.css index 4f4352c8a9..5e13e87942 100644 --- a/weblate_web/static/style.css +++ b/weblate_web/static/style.css @@ -5115,7 +5115,7 @@ html[dir="rtl"] .half-img.rotate img { } } -/* About Us Weblate Team CSS */ +/* About Us Weblate Team */ .content-p { width: 69%; @@ -5716,3 +5716,129 @@ html[dir="rtl"] .user-text-formatting-payment t { .payment-updated { display: flow-root; } + +/*Testimonial and Slider CSS*/ + +.testimonial { + width: 365px; + border-radius: 30px; + background-color: #ffffff; + box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.1); + margin-left: 10px; +} + +.icon-review { + text-align: left; +} +.icon-review img { + margin-left: 50px; +} +.icon-review p { + margin-left: 35px; + margin-top: -25px; + width: 70%; + font-size: 15px; + line-height: 18px; + letter-spacing: 0.5px; + color: #2a3744; +} + +.circle-user { + width: 40px; + height: 40px; + border-radius: 50%; + position: relative; + left: 32px; + margin-top: 20px; +} +.circle-user img { + margin: 0px; + border-radius: 50%; +} + +.icon-user { + display: flex; + text-align: left; + padding-bottom: 25px; +} +.content-user { + margin-top: 20px; + margin-left: 45px; +} +.content-user a { + color: #1fa385; + line-height: 23px; + text-decoration: underline; +} +.content-logo { + margin: 0px !important; +} + +.slider-slide { + display: flex; + -webkit-align-items: center; + align-items: center; + -webkit-justify-content: center; + justify-content: center; +} + +.simple-slider { + height: 400px; +} + +.simple-slider .slider-btn.slider-btn-prev { + left: 11px !important; + box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.1) !important; + background: white !important; + border-radius: 50% !important; + width: 50px !important; + height: 50px !important; +} + +.simple-slider .slider-btn.slider-btn-next { + right: 4px !important; + border-radius: 50% !important; + width: 50px !important; + height: 50px !important; + background: white !important; + box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.1) !important; +} + +.simple-slider .slider-btn.slider-btn-next img { + padding: 18px; + margin: 0px; +} + +.simple-slider .slider-btn.slider-btn-prev img { + padding: 18px; + margin: 0px; +} + +html[dir="rtl"] .icon-review, +html[dir="rtl"] .icon-user { + text-align: right; +} + +html[dir="rtl"] .icon-review img { + margin-left: 0; + margin-right: 50px; +} + +html[dir="rtl"] .icon-review p { + margin-left: 0; + margin-right: 35px; +} + +html[dir="rtl"] .circle-user { + left: auto; + right: 32px; +} + +html[dir="rtl"] .content-user { + margin-left: 0; + margin-right: 45px; +} + +.custom-btn { + margin-top: 2em; +} diff --git a/weblate_web/static/vendor/simpleSlider.min.css b/weblate_web/static/vendor/simpleSlider.min.css new file mode 100644 index 0000000000..93625e5b19 --- /dev/null +++ b/weblate_web/static/vendor/simpleSlider.min.css @@ -0,0 +1,10 @@ +@charset "UTF-8"; +/*! + * SimpleSlider v1.9.0 + * Simple responsive slider created in pure javascript. + * https://github.com/michu2k/SimpleSlider + * + * Copyright 2017-2019 Michał Strumpf + * Published under MIT License + */ +.simple-slider{overflow:hidden;position:relative}.simple-slider .slider-wrapper{height:100%;position:relative;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition-timing-function:cubic-bezier(.7,0,.3,1);transition-timing-function:cubic-bezier(.7,0,.3,1)}.simple-slider .slider-slide{background-size:cover;background-position:center top;height:100%;float:left}.simple-slider .slider-pagination{text-align:center;width:100%;bottom:0;position:absolute}.simple-slider .slider-pagination .pagination-bullet{display:inline-block;cursor:pointer;width:16px;height:5px;margin:4px;background-color:#fff;-webkit-transition:all .3s ease;transition:all .3s ease}.simple-slider .slider-pagination .pagination-bullet.is-active{background-color:#999}.simple-slider .slider-btn{width:30px;height:50px;top:50%;cursor:pointer;background-repeat:no-repeat;position:absolute;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.simple-slider .slider-btn.slider-btn-prev{left:20px;background-image:url(../img/prev.svg);background-position:left}.simple-slider .slider-btn.slider-btn-next{right:20px;background-image:url(../img/next.svg);background-position:right} diff --git a/weblate_web/static/vendor/simpleSlider.min.js b/weblate_web/static/vendor/simpleSlider.min.js new file mode 100644 index 0000000000..673c192eeb --- /dev/null +++ b/weblate_web/static/vendor/simpleSlider.min.js @@ -0,0 +1,9 @@ +/*! + * SimpleSlider v1.9.0 + * Simple responsive slider created in pure javascript. + * https://github.com/michu2k/SimpleSlider + * + * Copyright 2017-2019 Michał Strumpf + * Published under MIT License + */ +"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function _iterableToArray(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t=e&&(d.slidesPerView=n[e])}),d.maxIndex=t?d.slides.length:d.slides.length-d.slidesPerView+1},this.createClones=function(){if(d.options.loop){for(var e,t=d.options.class.slide,n=d.wrapper,i=d.slides.length-1,a=document.createDocumentFragment(),r=document.createDocumentFragment(),o=0;o=d.maxIndex-Math.floor(d.slidesPerView/2)?d.maxIndex-1:d.index);for(var n=0;n=d.slides.length)&&(d.index=d.updateIndex(d.index),d.wrapper.style[d.transitionDuration]="0ms",d.moveWrapper()),d.disableEvents=!1},n))},this.createPagination=function(){if(d.pagination){for(var e,t=d.options,n=t.loop,i=t.class.paginationItem,a=document.createDocumentFragment(),r=n?0:Math.min(d.index,d.maxIndex-1),o=0;o=d.slides.length?0:e<0?d.slides.length-1:e:e>=d.maxIndex?d.maxIndex-1:e<=0?0:e},this.autoplay=function(){var e=d.options,t=e.autoplay,n=e.delay,i=e.speed;t&&(d.timer=setTimeout(function(){d.increaseIndex(),d.changeSlide(!0),d.autoplay()},n+i))},this.resetAutoplay=function(){return clearTimeout(d.timer)},this.updateSliderAfterDrag=function(){var e=d.options.speed;d.drag.focused=!1,d.drag.dragDiff&&(d.autoplay(),100=d.maxIndex-1&&d.drag.dragDiff<0&&(i=100)),d.drag.dragDiff-1*i?d.wrapper.style[d.transform]="translate3d(".concat(-1*n,"px, 0, 0)"):d.updateSliderAfterDrag()},this.mousedownHandler=function(e){e.stopPropagation(),e.preventDefault(),d.wrapper.style[d.transitionDuration]="0ms",d.drag.focused=!0,d.drag.startX=e.pageX},this.mousemoveHandler=function(e){e.stopPropagation(),!d.disableEvents&&d.drag.focused&&("A"===e.target.nodeName&&(d.drag.isLink=!0),d.drag.endX=e.pageX,d.updateSliderDuringDrag())},this.mouseupHandler=function(e){e.stopPropagation(),d.updateSliderAfterDrag()},this.mouseleaveHandler=function(e){e.stopPropagation(),d.updateSliderAfterDrag()},this.clickHandler=function(e){d.drag.isLink&&e.preventDefault(),d.drag.isLink=!1},this.touchstartHandler=function(e){e.stopPropagation(),d.wrapper.style[d.transitionDuration]="0ms",d.drag.focused=!0,d.drag.startX=e.touches[0].pageX},this.touchmoveHandler=function(e){e.stopPropagation(),!d.disableEvents&&d.drag.focused&&(d.drag.endX=e.touches[0].pageX,d.updateSliderDuringDrag())},this.touchendHandler=function(e){e.stopPropagation(),d.updateSliderAfterDrag()},this.visibilitychangeHandler=function(){d.resetAutoplay(),document.hidden||d.autoplay()},this.resizeHandler=function(){var e=d.options.loop,t=d.slidesPerView;d.wrapper.style[d.transitionDuration]="0ms",d.calculateSlidesPerView(),d.setWidth(),d.moveWrapper(),e||t===d.slidesPerView||(d.destroyPagination(),d.createPagination())};var l=function(e){return"string"==typeof document.documentElement.style[e]?e:(e=e.charAt(0).toUpperCase()+e.slice(1),"webkit".concat(e))},n=function(e,t){var n,i;if(null!=t&&"undefined"!=t)for(n in t){var a=t[n];if("object"===_typeof(a))for(i in a)e[n][i]=a[i];else e[n]=a}return e};this.init()}"undefined"!=typeof module&&void 0!==module.exports?module.exports=e:i.SimpleSlider=e}(window); diff --git a/weblate_web/templates/base.html b/weblate_web/templates/base.html index 296b79ab89..6c946a2367 100644 --- a/weblate_web/templates/base.html +++ b/weblate_web/templates/base.html @@ -23,6 +23,10 @@ {% endcompress %} + {% if request.resolver_match.url_name == "home" %} + + {% endif %} + @@ -167,6 +171,10 @@ {% include "snippets/languages.html" %} + {% if request.resolver_match.url_name == "home" %} + + {% endif %} + {% compress js %} diff --git a/weblate_web/templates/index.html b/weblate_web/templates/index.html index 92a6641ed8..3a189ad066 100644 --- a/weblate_web/templates/index.html +++ b/weblate_web/templates/index.html @@ -69,7 +69,11 @@

{% translate "Robust feature set" %}

{% translate "Explore all features" %}
-

{% translate "Users and Supporters" %}

+

{% translate "Companies using Weblate" %}

+ {% include "snippets/reviews.html" %} +
+
+

{% translate "Libre projects" %}

{% include "snippets/users.html" %}
diff --git a/weblate_web/templates/snippets/reviews.html b/weblate_web/templates/snippets/reviews.html new file mode 100644 index 0000000000..03af0d0dde --- /dev/null +++ b/weblate_web/templates/snippets/reviews.html @@ -0,0 +1,80 @@ +{% load i18n static %} + + +
+
+
+
+
+
+ Quotes +

Weblate is a gorgeous app! It really saved my life. Translations are managed within same version control as the code. Weblate is a gorgeous app! It really is my life. Translations are managed within it.

+
+
+
+ Quotes +
+
+

Donald McCalister

+ +

Dyson Electronics

+
+
+
+
+
+
+
+
+ Quotes +

Weblate is a gorgeous app! It really saved my life. Translations are managed within the same version control system as the code. Weblate is a gorgeous app! It really saved my life. Translations are managed within the same version control system as the code.

+
+
+
+

Elvis McCalister

+ +

No Case Study Ltd.

+
+ +
+
+
+
+
+
+
+ Quotes +

Weblate is a gorgeous app! It really saved my life. Translations are managed within the same version control system as the code. Weblate is a gorgeous app! It really saved my life. Translations are managed within the same version control system as the code.

+
+
+
+

Jonathan McCalister

+ +

Siemens Inc.

+
+ +
+
+
+
+
+
+ Quotes +
+
+ Quotes +
+
+ diff --git a/weblate_web/templates/snippets/users.html b/weblate_web/templates/snippets/users.html index cd4c4c100c..a9c5f7291e 100644 --- a/weblate_web/templates/snippets/users.html +++ b/weblate_web/templates/snippets/users.html @@ -1,5 +1,14 @@ {% load i18n static %} + + Turris + + + SonicPi + + + PhpMyAdmin + openSUSE @@ -10,7 +19,7 @@ Fedora - Freedombox + Freedombox Collabora diff --git a/weblate_web/tests.py b/weblate_web/tests.py index b3985a43e0..473da82bf4 100644 --- a/weblate_web/tests.py +++ b/weblate_web/tests.py @@ -802,7 +802,7 @@ def test_index_ar(self) -> None: self.assertContains(response, 'dir="rtl"') self.assertContains( response, - '

المستخدمون والداعمون

', + '

مجموعة ميزات قوية

', html=True, )