├── js ├── theme.js ├── styleswitch.js └── cookie.js ├── less ├── sidebar.less ├── comment.less ├── theme.less ├── module.less ├── tags.less ├── activities.less ├── oembed.less ├── base │ ├── media.less │ ├── config.less │ ├── space.less │ └── flxgrid.less ├── tour.less ├── well.less ├── progress.less ├── mentioning.less ├── badge.less ├── notification.less ├── pagination.less ├── installer.less ├── popover.less ├── tooltip.less ├── table.less ├── list-group.less ├── datepicker.less ├── gridview.less ├── loader.less ├── space.less ├── base.less ├── dropdown.less ├── variables.less ├── modal.less ├── file.less ├── media.less ├── mixins.less ├── user-feedback.less ├── build.less ├── fonts.less ├── button.less ├── nav.less ├── form.less ├── panel.less ├── markdown.less ├── stream.less ├── topbar.less ├── mobile.less └── highcontrast.less ├── .gitattributes ├── img ├── mime │ ├── pdf.png │ ├── zip.png │ ├── audio.png │ ├── excel.png │ ├── file.png │ ├── image.png │ ├── video.png │ ├── word.png │ ├── indesign.png │ ├── photoshop.png │ ├── powerpoint.png │ └── illustrator.png ├── picker_add.png ├── select_arrow.png ├── wmd-buttons.png ├── icon_search16x16.png └── placeholder-postform-arrow.png ├── ico ├── apple-icon.png ├── favicon_1.ico ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon-96x96.png ├── ms-icon-70x70.png ├── notification.png ├── ms-icon-144x144.png ├── ms-icon-150x150.png ├── ms-icon-310x310.png ├── notification-o.png ├── android-icon-36x36.png ├── android-icon-48x48.png ├── android-icon-72x72.png ├── android-icon-96x96.png ├── apple-icon-114x114.png ├── apple-icon-120x120.png ├── apple-icon-144x144.png ├── apple-icon-152x152.png ├── apple-icon-180x180.png ├── apple-icon-57x57.png ├── apple-icon-60x60.png ├── apple-icon-72x72.png ├── apple-icon-76x76.png ├── android-icon-144x144.png ├── android-icon-192x192.png ├── apple-icon-precomposed.png └── manifest.json ├── .github └── FUNDING.yml ├── screenshot ├── 01_flathub.jpg ├── 02_flathub.jpg ├── 03_flathub.jpg ├── 04_flathub.jpg ├── 05_flathub.jpg ├── 06_flathub.jpg ├── 07_flathub.jpg ├── thumb_flathub.jpg ├── mobile_flathub.jpg └── thumb_flathub_dark.jpg ├── fonts └── pt-sans │ ├── pt-sans-v9-latin_cyrillic-700.eot │ ├── pt-sans-v9-latin_cyrillic-700.ttf │ ├── pt-sans-v9-latin_cyrillic-700.woff │ ├── pt-sans-v9-latin_cyrillic-700.woff2 │ ├── pt-sans-v9-latin_cyrillic-italic.eot │ ├── pt-sans-v9-latin_cyrillic-italic.ttf │ ├── pt-sans-v9-latin_cyrillic-italic.woff │ ├── pt-sans-v9-latin_cyrillic-regular.eot │ ├── pt-sans-v9-latin_cyrillic-regular.ttf │ ├── pt-sans-v9-latin_cyrillic-700italic.eot │ ├── pt-sans-v9-latin_cyrillic-700italic.ttf │ ├── pt-sans-v9-latin_cyrillic-italic.woff2 │ ├── pt-sans-v9-latin_cyrillic-regular.woff │ ├── pt-sans-v9-latin_cyrillic-regular.woff2 │ ├── pt-sans-v9-latin_cyrillic-700italic.woff │ └── pt-sans-v9-latin_cyrillic-700italic.woff2 ├── views ├── user │ ├── widgets │ │ ├── profileEditButton.php │ │ ├── accountTopMenu.php │ │ └── profileHeader.php │ ├── layouts │ │ └── main.php │ └── profile │ │ └── _layout.php ├── post │ ├── widgets │ │ ├── wallEntry.php │ │ └── form.php │ └── post │ │ └── edit.php ├── search │ └── widgets │ │ └── searchMenu.php ├── ui │ ├── widgets │ │ └── counterSetHeader.php │ └── components │ │ └── Theme.php ├── widgets │ └── topNavigation.php ├── comment │ ├── widgets │ │ ├── comments.php │ │ └── showComment.php │ └── comment │ │ └── edit.php ├── dashboard │ └── dashboard │ │ └── index.php ├── like │ └── widgets │ │ └── likeLink.php ├── space │ ├── space │ │ └── _layout.php │ └── widgets │ │ └── spaceChooser.php ├── content │ └── widgets │ │ └── wallCreateContentForm.php └── layouts │ ├── head.php │ └── main.php └── README.md /js/theme.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /less/sidebar.less: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /img/mime/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/img/mime/pdf.png -------------------------------------------------------------------------------- /img/mime/zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/img/mime/zip.png -------------------------------------------------------------------------------- /less/comment.less: -------------------------------------------------------------------------------- 1 | .comment-container .wall-entry-controls { 2 | margin-left: -20px; 3 | } 4 | -------------------------------------------------------------------------------- /ico/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/apple-icon.png -------------------------------------------------------------------------------- /ico/favicon_1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/favicon_1.ico -------------------------------------------------------------------------------- /img/mime/audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/img/mime/audio.png -------------------------------------------------------------------------------- /img/mime/excel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/img/mime/excel.png -------------------------------------------------------------------------------- /img/mime/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/img/mime/file.png -------------------------------------------------------------------------------- /img/mime/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/img/mime/image.png -------------------------------------------------------------------------------- /img/mime/video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/img/mime/video.png -------------------------------------------------------------------------------- /img/mime/word.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/img/mime/word.png -------------------------------------------------------------------------------- /img/picker_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/img/picker_add.png -------------------------------------------------------------------------------- /ico/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/favicon-16x16.png -------------------------------------------------------------------------------- /ico/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/favicon-32x32.png -------------------------------------------------------------------------------- /ico/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/favicon-96x96.png -------------------------------------------------------------------------------- /ico/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/ms-icon-70x70.png -------------------------------------------------------------------------------- /ico/notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/notification.png -------------------------------------------------------------------------------- /img/mime/indesign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/img/mime/indesign.png -------------------------------------------------------------------------------- /img/select_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/img/select_arrow.png -------------------------------------------------------------------------------- /img/wmd-buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/img/wmd-buttons.png -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | github: [WebCrew, felixhahnweilheim] 3 | -------------------------------------------------------------------------------- /ico/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/ms-icon-144x144.png -------------------------------------------------------------------------------- /ico/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/ms-icon-150x150.png -------------------------------------------------------------------------------- /ico/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/ms-icon-310x310.png -------------------------------------------------------------------------------- /ico/notification-o.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/notification-o.png -------------------------------------------------------------------------------- /img/mime/photoshop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/img/mime/photoshop.png -------------------------------------------------------------------------------- /img/mime/powerpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/img/mime/powerpoint.png -------------------------------------------------------------------------------- /ico/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/android-icon-36x36.png -------------------------------------------------------------------------------- /ico/android-icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/android-icon-48x48.png -------------------------------------------------------------------------------- /ico/android-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/android-icon-72x72.png -------------------------------------------------------------------------------- /ico/android-icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/android-icon-96x96.png -------------------------------------------------------------------------------- /ico/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/apple-icon-114x114.png -------------------------------------------------------------------------------- /ico/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/apple-icon-120x120.png -------------------------------------------------------------------------------- /ico/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/apple-icon-144x144.png -------------------------------------------------------------------------------- /ico/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/apple-icon-152x152.png -------------------------------------------------------------------------------- /ico/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/apple-icon-180x180.png -------------------------------------------------------------------------------- /ico/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/apple-icon-57x57.png -------------------------------------------------------------------------------- /ico/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/apple-icon-60x60.png -------------------------------------------------------------------------------- /ico/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/apple-icon-72x72.png -------------------------------------------------------------------------------- /ico/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/apple-icon-76x76.png -------------------------------------------------------------------------------- /img/icon_search16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/img/icon_search16x16.png -------------------------------------------------------------------------------- /img/mime/illustrator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/img/mime/illustrator.png -------------------------------------------------------------------------------- /screenshot/01_flathub.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/screenshot/01_flathub.jpg -------------------------------------------------------------------------------- /screenshot/02_flathub.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/screenshot/02_flathub.jpg -------------------------------------------------------------------------------- /screenshot/03_flathub.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/screenshot/03_flathub.jpg -------------------------------------------------------------------------------- /screenshot/04_flathub.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/screenshot/04_flathub.jpg -------------------------------------------------------------------------------- /screenshot/05_flathub.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/screenshot/05_flathub.jpg -------------------------------------------------------------------------------- /screenshot/06_flathub.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/screenshot/06_flathub.jpg -------------------------------------------------------------------------------- /screenshot/07_flathub.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/screenshot/07_flathub.jpg -------------------------------------------------------------------------------- /ico/android-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/android-icon-144x144.png -------------------------------------------------------------------------------- /ico/android-icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/android-icon-192x192.png -------------------------------------------------------------------------------- /less/theme.less: -------------------------------------------------------------------------------- 1 | /** 2 | * Define or overwrite your theme selectors within this file. 3 | **/ 4 | 5 | body { 6 | 7 | } -------------------------------------------------------------------------------- /screenshot/thumb_flathub.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/screenshot/thumb_flathub.jpg -------------------------------------------------------------------------------- /ico/apple-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/ico/apple-icon-precomposed.png -------------------------------------------------------------------------------- /screenshot/mobile_flathub.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/screenshot/mobile_flathub.jpg -------------------------------------------------------------------------------- /screenshot/thumb_flathub_dark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/screenshot/thumb_flathub_dark.jpg -------------------------------------------------------------------------------- /img/placeholder-postform-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/img/placeholder-postform-arrow.png -------------------------------------------------------------------------------- /less/module.less: -------------------------------------------------------------------------------- 1 | // Modules list 2 | .module-installed { 3 | opacity: 0.5; 4 | .label-success { 5 | background-color: @background3; 6 | } 7 | } -------------------------------------------------------------------------------- /fonts/pt-sans/pt-sans-v9-latin_cyrillic-700.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/fonts/pt-sans/pt-sans-v9-latin_cyrillic-700.eot -------------------------------------------------------------------------------- /fonts/pt-sans/pt-sans-v9-latin_cyrillic-700.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/fonts/pt-sans/pt-sans-v9-latin_cyrillic-700.ttf -------------------------------------------------------------------------------- /fonts/pt-sans/pt-sans-v9-latin_cyrillic-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/fonts/pt-sans/pt-sans-v9-latin_cyrillic-700.woff -------------------------------------------------------------------------------- /fonts/pt-sans/pt-sans-v9-latin_cyrillic-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/fonts/pt-sans/pt-sans-v9-latin_cyrillic-700.woff2 -------------------------------------------------------------------------------- /fonts/pt-sans/pt-sans-v9-latin_cyrillic-italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/fonts/pt-sans/pt-sans-v9-latin_cyrillic-italic.eot -------------------------------------------------------------------------------- /fonts/pt-sans/pt-sans-v9-latin_cyrillic-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/fonts/pt-sans/pt-sans-v9-latin_cyrillic-italic.ttf -------------------------------------------------------------------------------- /fonts/pt-sans/pt-sans-v9-latin_cyrillic-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/fonts/pt-sans/pt-sans-v9-latin_cyrillic-italic.woff -------------------------------------------------------------------------------- /fonts/pt-sans/pt-sans-v9-latin_cyrillic-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/fonts/pt-sans/pt-sans-v9-latin_cyrillic-regular.eot -------------------------------------------------------------------------------- /fonts/pt-sans/pt-sans-v9-latin_cyrillic-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/fonts/pt-sans/pt-sans-v9-latin_cyrillic-regular.ttf -------------------------------------------------------------------------------- /fonts/pt-sans/pt-sans-v9-latin_cyrillic-700italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/fonts/pt-sans/pt-sans-v9-latin_cyrillic-700italic.eot -------------------------------------------------------------------------------- /fonts/pt-sans/pt-sans-v9-latin_cyrillic-700italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/fonts/pt-sans/pt-sans-v9-latin_cyrillic-700italic.ttf -------------------------------------------------------------------------------- /fonts/pt-sans/pt-sans-v9-latin_cyrillic-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/fonts/pt-sans/pt-sans-v9-latin_cyrillic-italic.woff2 -------------------------------------------------------------------------------- /fonts/pt-sans/pt-sans-v9-latin_cyrillic-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/fonts/pt-sans/pt-sans-v9-latin_cyrillic-regular.woff -------------------------------------------------------------------------------- /fonts/pt-sans/pt-sans-v9-latin_cyrillic-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/fonts/pt-sans/pt-sans-v9-latin_cyrillic-regular.woff2 -------------------------------------------------------------------------------- /fonts/pt-sans/pt-sans-v9-latin_cyrillic-700italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/fonts/pt-sans/pt-sans-v9-latin_cyrillic-700italic.woff -------------------------------------------------------------------------------- /fonts/pt-sans/pt-sans-v9-latin_cyrillic-700italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebCrew/HumHub_Flathub_Updated/HEAD/fonts/pt-sans/pt-sans-v9-latin_cyrillic-700italic.woff2 -------------------------------------------------------------------------------- /less/tags.less: -------------------------------------------------------------------------------- 1 | // Tags 2 | .tags { 3 | margin-bottom: -5px; 4 | 5 | .tag { 6 | margin-bottom: 5px; 7 | border-radius: 2px; 8 | padding: 4px 8px; 9 | max-width: 150px; 10 | white-space: nowrap; 11 | overflow: hidden; 12 | text-overflow: ellipsis; 13 | } 14 | } -------------------------------------------------------------------------------- /views/user/widgets/profileEditButton.php: -------------------------------------------------------------------------------- 1 | ' . Yii::t('UserModule.widgets_views_profileEditButton', ''), Url::toRoute('/user/account/edit'), ['class' => 'btn btn-default edit-account']); -------------------------------------------------------------------------------- /less/activities.less: -------------------------------------------------------------------------------- 1 | // Activities 2 | .activities { 3 | max-height: 400px; 4 | overflow: auto; 5 | li .media { 6 | position: relative; 7 | } 8 | li .media .img-space { 9 | position: absolute; 10 | top: 14px; 11 | left: 14px; 12 | } 13 | 14 | li .media .media-body { 15 | max-width:295px; 16 | } 17 | } -------------------------------------------------------------------------------- /less/oembed.less: -------------------------------------------------------------------------------- 1 | .oembed_snippet { 2 | margin-top: 10px; 3 | position: relative; 4 | padding-bottom: 55%; 5 | padding-top: 15px; 6 | height: 0; 7 | overflow: hidden; 8 | } 9 | 10 | .oembed_snippet iframe { 11 | position: absolute; 12 | top: 0; 13 | left: 0; 14 | width: 100%; 15 | height: 100%; 16 | } -------------------------------------------------------------------------------- /less/base/media.less: -------------------------------------------------------------------------------- 1 | @sm: ~'(min-width: 576px)'; 2 | @md: ~'(min-width: 768px)'; 3 | @lg: ~'(min-width: 992px)'; 4 | @xl: ~'(min-width: 1200px)'; 5 | 6 | @msm: ~'(max-width: 576px)'; 7 | @mmd: ~'(max-width: 768px)'; 8 | @mlg: ~'(max-width: 992px)'; 9 | @mxl: ~'(max-width: 1200px)'; -------------------------------------------------------------------------------- /less/tour.less: -------------------------------------------------------------------------------- 1 | // TourModule 2 | ul.tour-list { 3 | list-style: none; 4 | margin-bottom: 0; 5 | padding-left: 10px; 6 | li { 7 | padding-top: 5px; 8 | a { 9 | color: @info; 10 | .fa { 11 | width: 16px; 12 | } 13 | } 14 | } 15 | li.completed { 16 | a { 17 | text-decoration: line-through; 18 | color: @text-color-soft; 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /views/post/widgets/wallEntry.php: -------------------------------------------------------------------------------- 1 | 7 |
8 |
9 | message, ['record' => $post]) ?> 10 |
11 |
12 | -------------------------------------------------------------------------------- /less/well.less: -------------------------------------------------------------------------------- 1 | // 2 | // Well 3 | // -------------------------------------------------- 4 | .well-small { 5 | padding: 20px 20px 20px 20px; 6 | } 7 | 8 | .well { 9 | border: none; 10 | box-shadow: none; 11 | background-color: @background-color-subpage; 12 | border-radius: 0; 13 | margin-bottom: 1px; 14 | hr { 15 | margin: 15px 0 10px; 16 | border-top: 1px solid @background-color-page; 17 | } 18 | table > thead { 19 | font-size: 11px; 20 | } 21 | } -------------------------------------------------------------------------------- /less/progress.less: -------------------------------------------------------------------------------- 1 | // 2 | // Progressbar 3 | // -------------------------------------------------- 4 | .progress { 5 | height: 10px; 6 | margin-bottom: 15px; 7 | box-shadow: none; 8 | background: @background-color-page; 9 | border-radius: 10px; 10 | } 11 | 12 | .progress-bar-info { 13 | background-color: @info; 14 | -webkit-box-shadow: none; 15 | box-shadow: none; 16 | } 17 | 18 | // 19 | // Pjax page loader bar since 1.2 20 | // 21 | #nprogress .bar { 22 | height:2px; 23 | background: @info; 24 | } -------------------------------------------------------------------------------- /less/mentioning.less: -------------------------------------------------------------------------------- 1 | // 2 | //atwho Plugin 3 | // 4 | .atwho-view .cur { 5 | border-left: 3px solid @info; 6 | background-color: #f7f7f7 !important; 7 | } 8 | 9 | .atwho-user, 10 | .atwho-space, 11 | .atwho-input a { 12 | color: @info; 13 | } 14 | 15 | .atwho-input a:hover { 16 | color: @info; 17 | } 18 | 19 | .atwho-view strong { 20 | background-color: #f9f0d2; 21 | } 22 | 23 | .atwho-view .cur strong { 24 | background-color: #f9f0d2; 25 | } 26 | 27 | .atwho-view span { 28 | padding:5px; 29 | } 30 | .atwho-input.form-control { 31 | height: auto; 32 | } 33 | -------------------------------------------------------------------------------- /less/badge.less: -------------------------------------------------------------------------------- 1 | // 2 | // Badges 3 | // -------------------------------------------------- 4 | .badge-space { 5 | margin-top: 6px; 6 | } 7 | 8 | .badge-space-chooser { 9 | padding:3px 5px; 10 | margin-left:1px; 11 | } 12 | 13 | .badge { 14 | padding: 3px 5px; 15 | border-radius: 2px; 16 | font-weight: normal; 17 | font-family: Arial, sans-serif; 18 | font-size: 10px !important; 19 | text-transform: uppercase; 20 | color: #fff; 21 | vertical-align: baseline; 22 | white-space: nowrap; 23 | text-shadow: none; 24 | background-color: @background3; 25 | line-height: 1; 26 | } -------------------------------------------------------------------------------- /less/notification.less: -------------------------------------------------------------------------------- 1 | #notification_overview_filter label { 2 | display:block; 3 | } 4 | 5 | #notification_overview_list { 6 | .img-space { 7 | position:absolute; 8 | top:25px; 9 | left:25px; 10 | } 11 | } 12 | 13 | @media (max-width: 767px) { 14 | .notifications { 15 | position: inherit !important; 16 | float: left !important; 17 | } 18 | 19 | .notifications .dropdown-menu { 20 | width: 300px !important; 21 | margin-left: 0 !important; 22 | .arrow { 23 | margin-left: -142px !important; 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /less/pagination.less: -------------------------------------------------------------------------------- 1 | // 2 | // Pagination 3 | // -------------------------------------------------- 4 | .pagination-container { 5 | text-align: center; 6 | } 7 | 8 | .pagination > .active > a, 9 | .pagination > .active > span, 10 | .pagination > .active > a:hover, 11 | .pagination > .active > span:hover, 12 | .pagination > .active > a:focus, 13 | .pagination > .active > span:focus { 14 | background-color: @primary; 15 | border-color: @primary; 16 | } 17 | 18 | .pagination > li > a, 19 | .pagination > li > span, 20 | .pagination > li > a:hover, 21 | .pagination > li > a:active, 22 | .pagination > li > a:focus { 23 | color: @text-color-highlight; 24 | cursor: pointer; 25 | } 26 | -------------------------------------------------------------------------------- /less/installer.less: -------------------------------------------------------------------------------- 1 | // Panels - Installer 2 | .installer { 3 | .logo { 4 | text-align: center; 5 | } 6 | h2 { 7 | font-weight: 100; 8 | } 9 | .panel { 10 | margin-top: 50px; 11 | h3 { 12 | margin-top: 0; 13 | } 14 | } 15 | .powered, 16 | .powered a { 17 | color: @text-color-soft3 !important; 18 | margin-top: 10px; 19 | font-size: 12px; 20 | } 21 | .fa { 22 | width: 18px; 23 | } 24 | .check-ok { 25 | color: @success; 26 | } 27 | .check-warning { 28 | color: @warning; 29 | } 30 | .check-error { 31 | color: @danger; 32 | } 33 | .prerequisites-list { 34 | ul { 35 | list-style: none; 36 | padding-left: 15px; 37 | li { 38 | padding-bottom: 5px; 39 | } 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /less/popover.less: -------------------------------------------------------------------------------- 1 | // 2 | // popover 3 | // -------------------------------------------------- 4 | .popover { 5 | border: 1px solid rgba(0, 0, 0, 0.15); 6 | border-radius: 4px; 7 | -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); 8 | -moz-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); 9 | box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); 10 | .popover-title { 11 | background: none; 12 | border-bottom: none; 13 | color: @text-color-highlight; 14 | font-weight: 300; 15 | font-size: 16px; 16 | padding: 15px; 17 | } 18 | .popover-content { 19 | font-size: 13px; 20 | padding: 5px 15px; 21 | color: @text-color-highlight; 22 | a { 23 | color: @info; 24 | } 25 | img { 26 | max-width: 100%; 27 | } 28 | } 29 | .popover-navigation { 30 | padding: 15px; 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /ico/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "icons": [ 3 | { 4 | "src": "\/android-icon-36x36.png", 5 | "sizes": "36x36", 6 | "type": "image\/png", 7 | "density": "0.75" 8 | }, 9 | { 10 | "src": "\/android-icon-48x48.png", 11 | "sizes": "48x48", 12 | "type": "image\/png", 13 | "density": "1.0" 14 | }, 15 | { 16 | "src": "\/android-icon-72x72.png", 17 | "sizes": "72x72", 18 | "type": "image\/png", 19 | "density": "1.5" 20 | }, 21 | { 22 | "src": "\/android-icon-96x96.png", 23 | "sizes": "96x96", 24 | "type": "image\/png", 25 | "density": "2.0" 26 | }, 27 | { 28 | "src": "\/android-icon-144x144.png", 29 | "sizes": "144x144", 30 | "type": "image\/png", 31 | "density": "3.0" 32 | }, 33 | { 34 | "src": "\/android-icon-192x192.png", 35 | "sizes": "192x192", 36 | "type": "image\/png", 37 | "density": "4.0" 38 | } 39 | ] 40 | } -------------------------------------------------------------------------------- /views/search/widgets/searchMenu.php: -------------------------------------------------------------------------------- 1 | 5 | 6 | 11 | 12 | 31 | -------------------------------------------------------------------------------- /views/ui/widgets/counterSetHeader.php: -------------------------------------------------------------------------------- 1 | 14 | 15 |
16 | 17 | 18 | hasLink()): ?> 19 | $counter->url], $counter->linkOptions)); ?> 20 | 21 | 22 |
23 | value; ?> 24 |
25 | label; ?> 26 |
27 | 28 | hasLink()): ?> 29 | 30 | 31 | 32 | 33 |
34 | -------------------------------------------------------------------------------- /less/tooltip.less: -------------------------------------------------------------------------------- 1 | // 2 | // Tooltips 3 | // -------------------------------------------------- 4 | .tooltip-inner { 5 | background-color: @primary; 6 | max-width: 400px; 7 | text-align: left; 8 | font-weight: 300; 9 | padding: 2px 8px 4px; 10 | font-weight: bold; 11 | white-space: pre-wrap; 12 | } 13 | 14 | .tooltip { 15 | &.top .tooltip-arrow { 16 | border-top-color: @primary; 17 | } 18 | &.top-left .tooltip-arrow { 19 | border-top-color: @primary; 20 | } 21 | &.top-right .tooltip-arrow { 22 | border-top-color: @primary; 23 | } 24 | &.right .tooltip-arrow { 25 | border-right-color: @primary; 26 | } 27 | &.left .tooltip-arrow { 28 | border-left-color: @primary; 29 | } 30 | &.bottom .tooltip-arrow { 31 | border-bottom-color: @primary; 32 | } 33 | &.bottom-left .tooltip-arrow { 34 | border-bottom-color: @primary; 35 | } 36 | &.bottom-right .tooltip-arrow { 37 | border-bottom-color: @primary; 38 | } 39 | } 40 | 41 | .tooltip.in { 42 | opacity: 1; 43 | filter: alpha(opacity=100); 44 | } -------------------------------------------------------------------------------- /views/user/layouts/main.php: -------------------------------------------------------------------------------- 1 | 12 | beginPage() ?> 13 | 14 | 15 | 16 | <?= Html::encode($this->pageTitle); ?> 17 | 18 | head() ?> 19 | render('@humhub/views/layouts/head'); ?> 20 | 21 | 22 | 23 | 24 | beginBody() ?> 25 | 26 |
27 | FooterMenu::LOCATION_LOGIN]); ?> 28 | endBody() ?> 29 |
30 |
31 |
32 |
33 |
34 | 35 | 36 | 37 | endPage() ?> 38 | -------------------------------------------------------------------------------- /views/widgets/topNavigation.php: -------------------------------------------------------------------------------- 1 | 6 | context->getItems() as $item) : ?> 7 |
12 | 13 |
14 | 15 | 16 | -------------------------------------------------------------------------------- /less/table.less: -------------------------------------------------------------------------------- 1 | // 2 | // Tables 3 | // -------------------------------------------------- 4 | table { 5 | margin-bottom:0px !important; 6 | th { 7 | font-size: 11px; 8 | color: @text-color-soft; 9 | font-weight: normal; 10 | } 11 | thead tr th { 12 | border: none !important; 13 | } 14 | .time { 15 | font-size: 12px; 16 | } 17 | td { 18 | a:hover { 19 | color: @info; 20 | } 21 | } 22 | } 23 | 24 | .table > thead > tr > th, 25 | .table > tbody > tr > th, 26 | .table > tfoot > tr > th, 27 | .table > thead > tr > td, 28 | .table > tbody > tr > td, 29 | .table > tfoot > tr > td { 30 | padding: 10px 10px 10px 0; 31 | 32 | select { 33 | font-size: 12px; 34 | padding: 4px 8px; 35 | height: 30px; 36 | margin: 0; 37 | } 38 | } 39 | 40 | .table-middle > thead > tr > th, 41 | .table-middle > tbody > tr > th, 42 | .table-middle > tfoot > tr > th, 43 | .table-middle > thead > tr > td, 44 | .table-middle > tbody > tr > td, 45 | .table-middle > tfoot > tr > td { 46 | vertical-align: middle !important; 47 | } -------------------------------------------------------------------------------- /js/styleswitch.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | // Check (onLoad) if the cookie is there and set the class if it is 3 | if ($.cookie('highcontrast') == "yes") { 4 | $("body").addClass("highcontrast"); 5 | $("body").removeClass("easycontrast"); 6 | } 7 | 8 | // When the span is clicked 9 | $("#switch").click(function () { 10 | // Check the current cookie value 11 | // If the cookie is empty or set to no, then add highcontrast 12 | if ($.cookie('highcontrast') == "undefined" || $.cookie('highcontrast') == "no") { 13 | // Set cookie value to yes 14 | $.cookie('highcontrast','yes', {expires: 7, path: '/'}); 15 | // Add the class to the body 16 | $("body").addClass("highcontrast"); 17 | $("body").removeClass("easycontrast"); 18 | 19 | } 20 | // If the cookie was already set to yes then remove it 21 | else { 22 | $.cookie('highcontrast','no', {expires: 7, path: '/'}); 23 | $("body").removeClass("highcontrast"); 24 | $("body").addClass("easycontrast"); 25 | } 26 | }); 27 | }); -------------------------------------------------------------------------------- /views/post/widgets/form.php: -------------------------------------------------------------------------------- 1 | 13 | 14 | field($post, 'message')->widget(RichTextField::class, [ 15 | 'id' => 'contentForm_message', 16 | 'form' => $form, 17 | 'layout' => RichTextField::LAYOUT_INLINE, 18 | 'pluginOptions' => ['maxHeight' => '600px'], 19 | 'placeholder' => Yii::t("PostModule.base", "What's on your mind?"), 20 | 'name' => 'message', 21 | 'disabled' => (property_exists(Yii::$app->controller, 'contentContainer') && Yii::$app->controller->contentContainer->isArchived()), 22 | 'disabledText' => Yii::t("PostModule.base", "This space is archived."), 23 | 'mentioningUrl' => $mentioningUrl, 24 | ])->label(false) ?> 25 | 26 | $post->content->container, 28 | 'submitUrl' => $submitUrl, 29 | ]) ?> 30 | -------------------------------------------------------------------------------- /views/comment/widgets/comments.php: -------------------------------------------------------------------------------- 1 | 6 | 23 | 24 | 25 | 33 | -------------------------------------------------------------------------------- /less/list-group.less: -------------------------------------------------------------------------------- 1 | // 2 | // List-Group 3 | // -------------------------------------------------- 4 | .list-group-item { 5 | padding: 6px 15px; 6 | border: none; 7 | border-width: 0 !important; 8 | border-left: 3px solid transparent !important; 9 | background-color: transparent; 10 | font-size: 12px; 11 | font-weight: 600; 12 | i { 13 | font-size: 14px; 14 | } 15 | } 16 | 17 | a.list-group-item:hover, 18 | a.list-group-item.active, 19 | a.list-group-item.active:hover, 20 | a.list-group-item.active:focus { 21 | z-index: 2; 22 | color: @text-color-highlight; 23 | background-color: @background-color-secondary; 24 | border-left: 3px solid @info !important; 25 | } 26 | 27 | @media (max-width: 991px) { 28 | .list-group { 29 | margin-left: 4px; 30 | } 31 | 32 | .list-group-item { 33 | display: inline-block !important; 34 | border-radius: 3px !important; 35 | margin: 4px 0; 36 | margin-bottom: 4px !important; 37 | } 38 | 39 | .list-group-item { 40 | border: none !important; 41 | 42 | } 43 | 44 | a.list-group-item:hover, a.list-group-item.active, a.list-group-item.active:hover, a.list-group-item.active:focus { 45 | border: none !important; 46 | background: @primary !important; 47 | color: #fff !important; 48 | } 49 | } -------------------------------------------------------------------------------- /views/dashboard/dashboard/index.php: -------------------------------------------------------------------------------- 1 | 12 | 13 |
14 |
15 |
16 | $contentContainer, 18 | 'showProfilePostForm' => $showProfilePostForm 19 | ]); 20 | ?> 21 |
22 |
23 | [ 25 | [ 26 | ActivityStreamViewer::class, 27 | ['streamAction' => '/dashboard/dashboard/activity-stream'], 28 | ['sortOrder' => 150] 29 | ] 30 | ] 31 | ]); 32 | ?> 33 | FooterMenu::LOCATION_SIDEBAR]); ?> 34 |
35 |
36 |
37 | -------------------------------------------------------------------------------- /views/user/profile/_layout.php: -------------------------------------------------------------------------------- 1 | context->contentContainer; 9 | 10 | ?> 11 |
12 |
13 |
14 | $user]); ?> 15 |
16 |
17 |
18 |
19 |
20 | $user]); ?> 21 |
22 | hasSidebar()): ?> 23 |
24 | getSidebar() ?> 25 | FooterMenu::LOCATION_SIDEBAR]); ?> 26 |
27 | 28 |
29 |
30 | 31 | hasSidebar()): ?> 32 | FooterMenu::LOCATION_FULL_PAGE]); ?> 33 | 34 |
35 |
36 |
37 | -------------------------------------------------------------------------------- /less/base/config.less: -------------------------------------------------------------------------------- 1 | // Grid settings 2 | 3 | .grid-settings() { 4 | 5 | // settings 6 | @grid-columns: 12; // number of columns 7 | @gutter-width: 16px; // gap between columns 8 | 9 | // media breakpoints (default: as on bootstrap) 10 | @breakpoints: 11 | ~"(min-width: 768px)", 12 | ~"(min-width: 992px)", 13 | ~"(min-width: 1200px)"; 14 | 15 | // max-width of containers according breakpoints 16 | @container-maw: 17 | 750px, 18 | 970px, 19 | 1170px; 20 | 21 | // names for breakpoint suffixes 22 | @suffixes: xs, sm, md, lg; 23 | 24 | // IMPORTANT: suffixes count should be bigger than breakpoints count by 1 25 | // suffixes-count = breakpoints-count + 1 26 | 27 | } 28 | 29 | // Space settings 30 | 31 | .space-settings() { 32 | 33 | @spaces: 0, 8px, 16px, 24px, 40px, 64px, 104px, 168px; 34 | @spacealias: zero, nano, micro, mili, base, kilo, mega, giga; 35 | 36 | // media breakpoints 37 | @breakpoints: 38 | ~"(min-width: 576px)", 39 | ~"(min-width: 768px)", 40 | ~"(min-width: 992px)", 41 | ~"(min-width: 1200px)"; 42 | 43 | // names for breakpoint suffixes 44 | @suffixes: xs, sm, md, lg, xl; 45 | 46 | // IMPORTANT: suffixes count should be bigger than breakpoints count by 1 47 | // suffixes-count = breakpoints-count + 1 48 | } -------------------------------------------------------------------------------- /views/like/widgets/likeLink.php: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | user->isGuest): ?> 11 | 12 | user->loginUrl, ['data-target' => '#globalModal']); ?> 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 0) { ?> 23 | 24 | 25 | () 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /less/datepicker.less: -------------------------------------------------------------------------------- 1 | // Datepicker 2 | .ui-widget-header { 3 | border: none !important; 4 | background: @background-color-main !important; 5 | color: @text-color-secondary !important; 6 | font-weight: 300 !important; 7 | } 8 | 9 | .ui-widget-content { 10 | border: 1px solid #dddcda !important; 11 | border-radius: 0 !important; 12 | background: @background-color-main; 13 | color: @text-color-highlight !important; 14 | -webkit-box-shadow: 0 6px 6px rgba(0, 0, 0, 0.1); 15 | box-shadow: 0 6px 6px rgba(0, 0, 0, 0.1); 16 | } 17 | 18 | .ui-datepicker .ui-datepicker-prev span, 19 | .ui-datepicker .ui-datepicker-next span { 20 | opacity: 0.2; 21 | } 22 | 23 | .ui-datepicker .ui-datepicker-prev:hover, 24 | .ui-datepicker .ui-datepicker-next:hover { 25 | background: @background-color-main !important; 26 | border: none; 27 | margin: 1px; 28 | } 29 | 30 | .ui-state-default, 31 | .ui-widget-content .ui-state-default, 32 | .ui-widget-header .ui-state-default { 33 | border: none !important; 34 | background: @background-color-secondary !important; 35 | color: @text-color-secondary !important; 36 | } 37 | 38 | .ui-state-highlight, 39 | .ui-widget-content .ui-state-highlight, 40 | .ui-widget-header .ui-state-highlight { 41 | border: none !important; 42 | border: 1px solid @background4 !important; 43 | } 44 | 45 | .ui-state-active, 46 | .ui-widget-content .ui-state-active, 47 | .ui-widget-header .ui-state-active { 48 | border: 1px solid @info !important; 49 | background: lighten(@info, 25%) !important; 50 | } -------------------------------------------------------------------------------- /less/gridview.less: -------------------------------------------------------------------------------- 1 | // CGridView 2 | .grid-view { 3 | img { 4 | width: 24px; 5 | height: 24px; 6 | } 7 | } 8 | 9 | .grid-view .filters input, 10 | .grid-view .filters select { 11 | @import (reference, multiple) "form.less"; 12 | .form-control; 13 | border-radius: 4px; 14 | font-size: 12px; 15 | padding: 4px; 16 | } 17 | 18 | .grid-view { 19 | padding: 15px 0 0; 20 | img { 21 | border-radius: 3px; 22 | } 23 | table { 24 | th { 25 | font-size: 13px !important; 26 | font-weight: bold !important; 27 | } 28 | td { 29 | vertical-align:middle !important; 30 | } 31 | tr { 32 | font-size: 13px !important; 33 | } 34 | thead { 35 | tr { 36 | th:first-of-type { 37 | padding-left:5px; 38 | } 39 | } 40 | } 41 | tbody { 42 | tr { 43 | height: 50px; 44 | td:first-of-type { 45 | padding-left:5px; 46 | } 47 | } 48 | } 49 | } 50 | .summary { 51 | font-size: 12px; 52 | color: @text-color-soft3; 53 | } 54 | } 55 | 56 | .permission-grid-editor > .table > tbody > tr:first-child > td { 57 | border: none; 58 | } 59 | .permission-grid-editor { 60 | padding-top:0px; 61 | } 62 | 63 | 64 | // Detail View 65 | .detail-view td, .detail-view th { 66 | padding:8px !important; 67 | } 68 | 69 | .detail-view th { 70 | font-size: 13px; 71 | } -------------------------------------------------------------------------------- /views/space/space/_layout.php: -------------------------------------------------------------------------------- 1 | context; 16 | $space = $context->contentContainer; 17 | 18 | ?> 19 |
20 |
21 |
22 | $space]); ?> 23 |
24 |
25 |
26 |
27 |
28 | $space]); ?> 29 |
30 |
31 | hasSidebar()): ?> 32 |
33 | getSidebar() ?> 34 | FooterMenu::LOCATION_SIDEBAR]); ?> 35 |
36 | 37 |
38 |
39 | $space, 'content' => $content]) ?> 40 |
41 |
42 | 43 | hasSidebar()): ?> 44 | FooterMenu::LOCATION_FULL_PAGE]); ?> 45 | 46 |
47 | -------------------------------------------------------------------------------- /less/loader.less: -------------------------------------------------------------------------------- 1 | // SpinKit (Loader) 2 | .sk-spinner-three-bounce.sk-spinner { 3 | margin: 0 auto; 4 | width: 70px; 5 | text-align: center; 6 | } 7 | 8 | // Ajax loader 9 | .loader { 10 | padding: 30px 0; 11 | .sk-spinner-three-bounce div, .sk-spinner-three-bounce span { 12 | width: 12px; 13 | height: 12px; 14 | background-color: @info; 15 | border-radius: 100%; 16 | display: inline-block; 17 | -webkit-animation: sk-threeBounceDelay 1.4s infinite ease-in-out; 18 | animation: sk-threeBounceDelay 1.4s infinite ease-in-out; 19 | /* Prevent first frame from flickering when animation starts */ 20 | -webkit-animation-fill-mode: both; 21 | animation-fill-mode: both; 22 | } 23 | .sk-spinner-three-bounce .sk-bounce1 { 24 | -webkit-animation-delay: -0.32s; 25 | animation-delay: -0.32s; 26 | } 27 | .sk-spinner-three-bounce .sk-bounce2 { 28 | -webkit-animation-delay: -0.16s; 29 | animation-delay: -0.16s; 30 | } 31 | @-webkit-keyframes sk-threeBounceDelay { 32 | 0%, 33 | 80%, 34 | 100% { 35 | -webkit-transform: scale(0); 36 | transform: scale(0); 37 | } 38 | 40% { 39 | -webkit-transform: scale(1); 40 | transform: scale(1); 41 | } 42 | } 43 | @keyframes sk-threeBounceDelay { 44 | 0%, 45 | 80%, 46 | 100% { 47 | -webkit-transform: scale(0); 48 | transform: scale(0); 49 | } 50 | 40% { 51 | -webkit-transform: scale(1); 52 | transform: scale(1); 53 | } 54 | } 55 | } 56 | 57 | .loader-modal { 58 | padding: 8px 0; 59 | } 60 | 61 | .loader-postform { 62 | padding: 9px 0; 63 | .sk-spinner-three-bounce.sk-spinner { 64 | text-align: left; 65 | margin: 0; 66 | } 67 | } -------------------------------------------------------------------------------- /less/space.less: -------------------------------------------------------------------------------- 1 | // Space > Admin 2 | .space-owner { 3 | text-align: center; 4 | margin: 14px 0; 5 | font-size: 13px; 6 | color: #999; 7 | } 8 | 9 | // Member sign for directory list 10 | .space-member-sign { 11 | color: @success; 12 | position: absolute; 13 | top: 42px; 14 | left: 42px; 15 | font-size: 16px; 16 | background: #fff; 17 | width: 24px; 18 | height: 24px; 19 | padding: 2px 3px 1px 4px; 20 | border-radius: 50px; 21 | border: 2px solid @success; 22 | } 23 | 24 | #space-menu-dropdown i.type { 25 | font-size:16px; 26 | color: #BFBFBF; 27 | } 28 | 29 | #space-menu-spaces [data-space-chooser-item] { 30 | cursor: pointer; 31 | } 32 | 33 | #space-menu-dropdown .input-group-addon { 34 | border-radius: 0px 4px 4px 0px; 35 | } 36 | 37 | #space-menu-dropdown .input-group-addon.focus { 38 | border-radius: 0px 4px 4px 0px; 39 | border: 2px solid @info; 40 | border-left: 0px; 41 | } 42 | #space-menu-dropdown .input-group { 43 | margin-right: 10px; 44 | margin-left: 10px; 45 | } 46 | 47 | #space-menu-search { 48 | border-radius: 4px 0px 0px 4px; 49 | border-right: 0px; 50 | } 51 | 52 | #space-directory-link i { 53 | margin-right:0px; 54 | } 55 | 56 | .space-acronym { 57 | color: #fff; 58 | text-align: center; 59 | display: inline-block; 60 | } 61 | 62 | .current-space-image { 63 | -webkit-border-radius: 2px; 64 | -moz-border-radius: 2px; 65 | border-radius: 2px; 66 | display: inline-block; 67 | position: relative; 68 | max-height: 30px !important; 69 | max-width: 30px !important; 70 | margin: 10px 2px; 71 | 72 | &:hover { 73 | opacity: .9; 74 | } 75 | } 76 | 77 | @media (max-width: 767px) { 78 | #space-menu > .title { 79 | display: none; 80 | } 81 | 82 | #space-menu-dropdown { 83 | width: 300px !important; 84 | } 85 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Updated FlatHub V2 Theme from Alexandra Travkina 2 | Edited and updated by **WebCrew** / Andreas Holzer - [net-twin.de](https://net-twin.de/net/NetTwin) 3 | 4 | Me and Felix had already fixed the most important bugs, there was a lot to do. Please feel free to give us a **STAR** here on my repository. **STARS** provide incentives to continue doing something for the HumHub community. 5 | 6 | The theme can be used with small restrictions (see issues), but the last few bugs still have to be fixed by someone, so please **clone the repository and help PLEASE**. 7 | 8 | You can also help by testing the theme and reporting any bugs or problems. 9 | 10 | ## [HumHub](https://github.com/humhub/humhub) Themes FlatHub 11 | FlatHub - bright and dark flat theme for **HumHub v1.14.0**. 12 | 13 | ![FlatHub](https://raw.githubusercontent.com/WebCrew/humhub_flathub_updated/master/screenshot/thumb_flathub.jpg) 14 | 15 | ![FlatHub](https://raw.githubusercontent.com/WebCrew/humhub_flathub_updated/master/screenshot/06_flathub.jpg) 16 | 17 | ## Features 18 | - Bright flat design 19 | - Or dark flat design 20 | - Style switcher 21 | - Sidebar left position 22 | - Custom main menu 23 | - Login page animated background 24 | - Grid images 25 | - More changes 26 | 27 | ## Install 28 | - Extract archive and rename to FlatHub. 29 | - Put this folder in: yoursite.com/themes 30 | - Activate it from HumHub admin dashboard 31 | 32 | ## Donate 33 | All support and all credits gos to Alexandra -original developer-. I don't want anything for my work, except an STAR for the repository - thank you. 34 | So if you want to donate a few Euros - I think Alexandra does really deserve it! 35 | Buy her a pizza - here are her donation accounts. 36 | 37 | [PayPal](https://paypal.me/forsashatravkina) 38 | 39 | YandexMoney 40 | - 41001757647345 41 | 42 | ## Developers 43 | - **Alexandra Travkina** - [fixel.ru](https://fixel.ru) 44 | - **WebCrew** / Andreas Holzer - [net-twin.de](https://net-twin.de) 45 | - **felixhahnweilheim** / Felix - [felixhahn](https://github.com/felixhahnweilheim) 46 | 47 | -------------------------------------------------------------------------------- /views/content/widgets/wallCreateContentForm.php: -------------------------------------------------------------------------------- 1 | registerJsConfig('content.form', [ 27 | 'defaultVisibility' => $defaultVisibility, 28 | 'disabled' => ($contentContainer instanceof Space && $contentContainer->isArchived()), 29 | 'text' => [ 30 | 'makePrivate' => Yii::t('ContentModule.widgets_views_contentForm', 'Make private'), 31 | 'makePublic' => Yii::t('ContentModule.widgets_views_contentForm', 'Make public'), 32 | 'info.archived' => Yii::t('ContentModule.widgets_views_contentForm', 'This space is archived.') 33 | ]]); 34 | 35 | $pickerUrl = ($contentContainer instanceof Space) ? $contentContainer->createUrl('/space/membership/search') : null; 36 | 37 | ?> 38 | 39 |
40 | 47 | 48 |
49 | -------------------------------------------------------------------------------- /less/base.less: -------------------------------------------------------------------------------- 1 | // 2 | // General 3 | // -------------------------------------------------- 4 | html { 5 | overflow-x: hidden; 6 | overflow-y: scroll; 7 | min-height: 100%; 8 | } 9 | body { 10 | -webkit-text-rendering: optimizeLegibility; 11 | text-rendering: optimizeLegibility; 12 | -webkit-font-smoothing: subpixel-antialiased; 13 | font-smoothing: subpixel-antialiased; 14 | -webkit-text-size-adjust: none; 15 | background-color: @background-color-page; 16 | color: @text-color-main; 17 | font-family: @system; 18 | overflow-x: hidden; 19 | padding-top: 66px; 20 | cursor: default; 21 | 22 | a, 23 | a:hover, 24 | a:focus, 25 | a:active, 26 | a.active { 27 | color: @text-color-highlight; 28 | text-decoration: none; 29 | } 30 | } 31 | 32 | a:hover { 33 | text-decoration: none; 34 | } 35 | 36 | hr { 37 | margin-top: 20px; 38 | margin-left: -20px; 39 | margin-right: -20px; 40 | margin-bottom: 20px; 41 | border-color: @background-color-subpage; 42 | } 43 | 44 | // Cols (change position property to prevent the cutting of tooltips or menus) 45 | .col-md-1, 46 | .col-md-2, 47 | .col-md-3, 48 | .col-md-4, 49 | .col-md-5, 50 | .col-md-6, 51 | .col-md-7, 52 | .col-md-8, 53 | .col-md-9, 54 | .col-md-10, 55 | .col-md-11, 56 | .col-md-12 { 57 | position: inherit; 58 | } 59 | .container { 60 | padding-right: 0; 61 | padding-left: 0; 62 | } 63 | 64 | h4 { 65 | font-weight: 600; 66 | font-size: 150%; 67 | } 68 | 69 | input[type=text], 70 | input[type=password], 71 | input[type=select] { 72 | /* Remove First */ 73 | -webkit-appearance: none; 74 | -moz-appearance: none; 75 | appearance: none; 76 | } 77 | 78 | .powered, 79 | .powered a { 80 | color: #b8c7d3 !important; 81 | } 82 | 83 | .langSwitcher { 84 | display: inline-block; 85 | } 86 | 87 | [data-ui-show-more] { 88 | overflow:hidden; 89 | } 90 | 91 | @media (min-width: 1200px) { 92 | .container { 93 | width: 1024px; 94 | } 95 | } 96 | 97 | .styleswitch { 98 | .turnoff { 99 | display: inline-block; 100 | } 101 | .turnon { 102 | display: none; 103 | } 104 | } -------------------------------------------------------------------------------- /less/dropdown.less: -------------------------------------------------------------------------------- 1 | // 2 | // Dropdowns 3 | // -------------------------------------------------- 4 | .dropdown-menu { 5 | border-radius: 2px; 6 | margin: 0; 7 | 8 | li { 9 | a { 10 | font-size: 13px !important; 11 | font-weight: 400 !important; 12 | i { 13 | margin-right: 5px; 14 | font-size: 14px; 15 | display: inline-block; 16 | width: 14px; 17 | } 18 | } 19 | a:hover, 20 | a:visited, 21 | a:hover, 22 | a:focus { 23 | background: none; 24 | cursor:pointer; 25 | } 26 | } 27 | li:hover, 28 | li.selected { 29 | color: @text-color-highlight; 30 | } 31 | 32 | li:first-child { 33 | margin-top: 3px; 34 | } 35 | 36 | li:last-child { 37 | margin-bottom: 3px; 38 | } 39 | } 40 | 41 | .modal, 42 | .panel, 43 | .nav-tabs { 44 | .dropdown-menu { 45 | border: 1px solid @background3; 46 | li.divider { 47 | background-color: @background-color-secondary; 48 | border-bottom: none; 49 | margin: 9px 1px !important; 50 | } 51 | li { 52 | border-left: 0; 53 | a { 54 | color: @text-color-highlight; 55 | font-size: 14px; 56 | font-weight: 400; 57 | padding: 4px 15px; 58 | i { 59 | margin-right: 5px; 60 | } 61 | } 62 | a:hover { 63 | background: none; 64 | } 65 | } 66 | li:hover, 67 | li.selected { 68 | border-left: 0; 69 | background-color: @background-color-secondary !important; 70 | } 71 | } 72 | } 73 | 74 | ul.contextMenu { 75 | border: 1px solid @background3; 76 | li.divider { 77 | background-color: @background-color-secondary; 78 | border-bottom: none; 79 | margin: 9px 1px !important; 80 | } 81 | li { 82 | border-left: 0; 83 | a { 84 | color: @text-color-highlight; 85 | font-size: 14px; 86 | font-weight: 400; 87 | padding: 4px 15px; 88 | i { 89 | margin-right: 5px; 90 | } 91 | } 92 | a:hover { 93 | background: none; 94 | } 95 | } 96 | li:hover, 97 | li.selected { 98 | border-left: 0; 99 | background-color: @background-color-secondary !important; 100 | } 101 | } -------------------------------------------------------------------------------- /views/user/widgets/accountTopMenu.php: -------------------------------------------------------------------------------- 1 | user->identity; 18 | ?> 19 | user->isGuest): ?> 20 | 21 | render() ?> 22 | 23 | 24 | 25 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /views/layouts/head.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /views/layouts/main.php: -------------------------------------------------------------------------------- 1 | 7 | beginPage() ?> 8 | 9 | 10 | 11 | <?= strip_tags($this->pageTitle); ?> 12 | 13 | 14 | head() ?> 15 | render('head'); ?> 16 | 17 | 18 | registerJsFile($this->theme->getBaseUrl() . '/js/cookie.js'); ?> 19 | registerJsFile($this->theme->getBaseUrl() . '/js/styleswitch.js'); ?> 20 | 21 | 22 | beginBody() ?> 23 | 24 | 25 |
26 |
27 | 30 | 31 |
32 |
33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 |
43 | 44 |
45 |
46 |
47 | 48 |
49 | 50 |
51 | 52 |
53 |
54 | 55 | 56 | 57 | 58 | 59 | registerJsFile($this->theme->getBaseUrl() . '/js/theme.js'); ?> 60 | 61 | endBody() ?> 62 | 63 | 64 | endPage() ?> 65 | -------------------------------------------------------------------------------- /less/variables.less: -------------------------------------------------------------------------------- 1 | // Post settings 2 | 3 | @global-font-family: @system; 4 | @global-font-size: 16px; 5 | @global-line-height: 1.4; 6 | 7 | @post-font-family: @ptSans; 8 | @post-font-size: 18px; 9 | @post-line-height: 1.4; 10 | 11 | 12 | // 13 | // Colors for buttons status etc. 14 | // -------------------------------------------------- 15 | @default: #ededed; 16 | @primary: #495a6f; 17 | @info: #95a5a6; 18 | @success: #97d271; 19 | @warning: #fdd198; 20 | @danger: #ff8989; 21 | @link: @info; 22 | 23 | // 24 | // Text color 25 | // -------------------------------------------------- 26 | 27 | // Default body text color. 28 | @text-color-main: #777; 29 | 30 | // used for some icons and buttons etc. - former @font2 31 | @text-color-secondary: #c3c3c3; 32 | 33 | // highlighted text like some active links hovered links etc. - former @font3 34 | @text-color-highlight: #313131; 35 | 36 | // side information like dates, placeholder, some dropdown headers - former @font4 37 | @text-color-soft: #bebebe; 38 | 39 | // also side information wall entry links (like/comment), help blocks in forms etc. - former @font5 40 | @text-color-soft2: #aeaeae; 41 | 42 | // used in gridview summary and installer - former @font1 43 | @text-color-soft3: #bac2c7; 44 | 45 | // used as contrast color for @primary, @info, @success, @warning, @danger backgrounds for buttons etc. 46 | // Note that @default does not use a contrast color @default is normally combined with @text-color-secondary 47 | @text-color-contrast: #fff; 48 | 49 | 50 | 51 | // 52 | // Text color 53 | // -------------------------------------------------- 54 | 55 | // main content background color should be in contrast with @text-color-main, @text-color-secondary and other text colors 56 | @background-color-main: #fff; 57 | 58 | // used beside others for tabs - former @background1 59 | @background-color-secondary: #f7f7f7; 60 | 61 | // page background which is also used for other ui components as comment box etc. - former @background2 62 | @background-color-page: #edf1f4; 63 | 64 | @background-color-subpage: #fafafa; 65 | 66 | // text highlight 67 | @background-color-highlight: #fff8e0; 68 | 69 | // Additional background colors 70 | @background3: #d7d7d7; 71 | @background4: #b2b2b2; 72 | 73 | // 74 | // Bootstrap Alert boxes 75 | // -------------------------------------------------- 76 | 77 | // Alert box success (used in forms) 78 | @background-color-success: #f7fbf4; 79 | @text-color-success: #84be5e; 80 | @border-color-success: #97d271; 81 | 82 | // Alert box warning (used in forms) 83 | @background-color-warning: #fffbf7; 84 | @text-color-warning: #e9b168; 85 | @border-color-warning: #fdd198; 86 | 87 | // Alert box danger (used in forms) 88 | @background-color-danger: #fff6f6; 89 | @text-color-danger: #ff8989; 90 | @border-color-danger: #ff8989; 91 | 92 | -------------------------------------------------------------------------------- /less/modal.less: -------------------------------------------------------------------------------- 1 | // 2 | // Modals 3 | // -------------------------------------------------- 4 | @media screen and (max-width: 768px) { 5 | .modal-dialog { 6 | width: auto !important; 7 | padding-top: 30px; 8 | padding-bottom: 30px; 9 | } 10 | } 11 | 12 | .modal-top { 13 | z-index: 999999 !important; 14 | } 15 | 16 | .modal-open { 17 | //overflow: visible; 18 | padding-right: 0 !important; 19 | } 20 | 21 | .modal { 22 | overflow-y: visible; 23 | } 24 | 25 | .modal-dialog-extra-small { 26 | width: 400px; 27 | } 28 | 29 | .modal-dialog-small { 30 | width: 500px; 31 | } 32 | 33 | .modal-dialog-normal { 34 | width: 600px; 35 | } 36 | 37 | .modal-dialog-medium { 38 | width: 768px; 39 | } 40 | 41 | .modal-dialog-large { 42 | width: 900px; 43 | } 44 | 45 | @media screen and (max-width: 920px) { 46 | .modal-dialog-large { 47 | width: auto !important; 48 | padding-top: 30px; 49 | padding-bottom: 30px; 50 | } 51 | } 52 | 53 | .modal { 54 | border: none; 55 | h1, 56 | h2, 57 | h3, 58 | h4, 59 | h5 { 60 | margin-top: 20px; 61 | color: @text-color-highlight; 62 | font-weight: 300; 63 | } 64 | h4.media-heading { 65 | margin-top: 0; 66 | } 67 | } 68 | 69 | .modal-title { 70 | font-size: 20px; 71 | font-weight: 200; 72 | color: @text-color-highlight; 73 | } 74 | 75 | .modal-dialog, .modal-content { 76 | min-width:150px; 77 | } 78 | 79 | .modal-content { 80 | -webkit-border-radius: 3px; 81 | -moz-border-radius: 3px; 82 | box-shadow: 0 2px 26px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(0, 0, 0, 0.1); 83 | -webkit-box-shadow: 0 2px 26px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(0, 0, 0, 0.1); 84 | -moz-box-shadow: 0 2px 26px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(0, 0, 0, 0.1); 85 | border: none; 86 | .modal-header { 87 | padding: 20px 20px 0; 88 | border-bottom: none; 89 | text-align: center; 90 | .close { 91 | margin-top: 2px; 92 | margin-right: 5px; 93 | } 94 | } 95 | .modal-body { 96 | padding: 20px; 97 | font-size: 13px; 98 | ul.medialist { 99 | li > a { 100 | 101 | } 102 | } 103 | } 104 | .modal-footer { 105 | margin-top: 0; 106 | text-align: left; 107 | padding: 10px 20px 30px; 108 | border-top: none; 109 | text-align: center; 110 | hr { 111 | margin-top: 0; 112 | } 113 | } 114 | } 115 | 116 | .modal-backdrop { 117 | background-color: rgba(0, 0, 0, 0.5); 118 | } 119 | 120 | // 121 | // Animate.css modifications 122 | // -------------------------------------------------- 123 | .modal-dialog.fadeIn, 124 | .modal-dialog.pulse { 125 | -webkit-animation-duration: 200ms; 126 | -moz-animation-duration: 200ms; 127 | animation-duration: 200ms; 128 | } -------------------------------------------------------------------------------- /less/file.less: -------------------------------------------------------------------------------- 1 | .files, 2 | #postFormFiles_list { 3 | padding-left: 0; 4 | } 5 | 6 | // File upload list for posts 7 | .contentForm-upload-list { 8 | padding-left: 0; 9 | li:first-child { 10 | margin-top: 10px; 11 | } 12 | } 13 | 14 | .file_upload_remove_link, 15 | .file_upload_remove_link:hover { 16 | color: @danger; 17 | cursor: pointer; 18 | } 19 | 20 | .file-preview-item { 21 | text-overflow: ellipsis; 22 | overflow:hidden; 23 | font-size: 13px; 24 | } 25 | 26 | .post-files { 27 | margin-top: 20px; 28 | margin-left: -20px; 29 | margin-right: -20px; 30 | margin-bottom: 20px; 31 | 32 | img { 33 | vertical-align: top; 34 | height: 100% !important; 35 | width: 100% !important; 36 | -webkit-animation-duration: 2s; /* Safari 4.0 - 8.0 */ 37 | animation-duration: 2s; 38 | } 39 | } 40 | 41 | #wallStream.mobile { 42 | .post-files { 43 | margin-top: 10px; 44 | display: flex; 45 | overflow-x: auto; 46 | img { 47 | max-width: 190px; 48 | } 49 | } 50 | } 51 | 52 | .file-preview-content { 53 | cursor: pointer; 54 | } 55 | 56 | // 57 | // Profile image upload 58 | // 59 | .image-upload-container { 60 | position: relative; 61 | .image-upload-buttons { 62 | display: none; 63 | float: right; 64 | } 65 | input[type="file"] { 66 | position: absolute; 67 | 68 | //background-color: red; 69 | opacity: 0; 70 | } 71 | .image-upload-loader { 72 | display: none; 73 | position: absolute; 74 | top: 0; 75 | left: 0; 76 | width: 100%; 77 | height: 100%; 78 | padding: 20px; 79 | background: #f8f8f8; 80 | } 81 | } 82 | 83 | 84 | // Mime-Types 85 | .mime { 86 | background-repeat: no-repeat; 87 | background-position: 0 0; 88 | padding: 1px 0 4px 26px; 89 | } 90 | 91 | .mime-word { 92 | background-image: url("../img/mime/word.png"); 93 | } 94 | 95 | .mime-excel { 96 | background-image: url("../img/mime/excel.png"); 97 | } 98 | 99 | .mime-powerpoint { 100 | background-image: url("../img/mime/powerpoint.png"); 101 | } 102 | 103 | .mime-pdf { 104 | background-image: url("../img/mime/pdf.png"); 105 | } 106 | 107 | .mime-zip { 108 | background-image: url("../img/mime/zip.png"); 109 | } 110 | 111 | .mime-image { 112 | background-image: url("../img/mime/image.png"); 113 | } 114 | 115 | .mime-file { 116 | background-image: url("../img/mime/file.png"); 117 | } 118 | 119 | .mime-photoshop { 120 | background-image: url("../img/mime/photoshop.png"); 121 | } 122 | 123 | .mime-illustrator { 124 | background-image: url("../img/mime/illustrator.png"); 125 | } 126 | 127 | .mime-video { 128 | background-image: url("../img/mime/video.png"); 129 | } 130 | 131 | .mime-audio { 132 | background-image: url("../img/mime/audio.png"); 133 | } -------------------------------------------------------------------------------- /views/post/post/edit.php: -------------------------------------------------------------------------------- 1 | 17 |
18 | 'post-edit-form_' . $model->post->id]); ?> 19 | 20 |
21 | field($model->post, 'message')->widget(RichTextField::class, [ 22 | 'id' => 'post_input_'. $model->post->id, 23 | 'layout' => RichTextField::LAYOUT_INLINE, 24 | 'focus' => true, 25 | 'pluginOptions' => ['maxHeight' => '600px'], 26 | 'placeholder' => Yii::t('PostModule.base', 'Edit your post...') 27 | ])->label(false) ?> 28 | 29 |
'post_upload_' . $model->post->id, 32 | 'tooltip' => Yii::t('ContentModule.base', 'Attach Files'), 33 | 'model' => $model, 34 | 'dropZone' => '#post_edit_' . $model->post->id . ':parent', 35 | 'preview' => '#post_upload_preview_' . $model->post->id, 36 | 'progress' => '#post_upload_progress_' . $model->post->id, 37 | 'max' => Yii::$app->getModule('content')->maxAttachedFiles, 38 | 'cssButtonClass' => 'btn-sm btn-info', 39 | ]); 40 | echo FileHandlerButtonDropdown::widget([ 41 | 'primaryButton' => $uploadButton, 42 | 'handlers' => $fileHandlers, 43 | 'cssButtonClass' => 'btn-info btn-sm', 44 | 'pullRight' => true, 45 | ]); 46 | echo Button::info() 47 | ->icon('send') 48 | ->action('editSubmit', $submitUrl) 49 | ->cssClass(' btn-comment-submit')->sm() 50 | ->submit(); 51 | ?>
52 |
53 | 54 | 'post_upload_progress_'.$model->post->id]) ?> 55 | 56 | 'post_upload_preview_' . $model->post->id, 58 | 'options' => ['style' => 'margin-top:10px'], 59 | 'model' => $model->post, 60 | 'edit' => true 61 | ]) ?> 62 | 63 | 64 |
65 | -------------------------------------------------------------------------------- /less/media.less: -------------------------------------------------------------------------------- 1 | // 2 | // Media-Object 3 | // -------------------------------------------------- 4 | .media-list { 5 | li { 6 | padding: 10px; 7 | border-bottom: 1px solid #eee; 8 | position: relative; 9 | border-left: 3px solid white; 10 | font-size: 12px; 11 | a { 12 | color: @text-color-highlight; 13 | } 14 | } 15 | 16 | .badge-space-type { 17 | background-color: @background-color-secondary; 18 | border: 1px solid @background3; 19 | color: @background4; 20 | padding: 3px 3px 2px 3px; 21 | } 22 | 23 | li.new { 24 | border-left: 3px solid lighten(@info, 30%); 25 | background-color: lighten(@info, 30%); 26 | } 27 | li:hover, 28 | li.selected { 29 | background-color: @background-color-secondary; 30 | border-left: 3px solid @info; 31 | } 32 | } 33 | 34 | .media-list li.placeholder { 35 | font-size: 14px !important; 36 | border-bottom: none; 37 | } 38 | 39 | .media-list li.placeholder:hover { 40 | background: none !important; 41 | border-left: 3px solid white; 42 | } 43 | 44 | .media-left, 45 | .media > .pull-left { 46 | padding-right: 0; 47 | margin-right:10px; 48 | } 49 | 50 | .media:after { 51 | content: ''; 52 | clear: both; 53 | display: block; 54 | } 55 | 56 | .media { 57 | .time { 58 | font-size: 11px; 59 | color: @text-color-soft; 60 | } 61 | .img-space { 62 | position: absolute; 63 | border-radius: 25px; 64 | top: 45px; 65 | left: 45px; 66 | } 67 | .media-body { 68 | vertical-align: middle; 69 | font-size: 13px; 70 | 71 | h4.media-heading { 72 | font-size: 14px; 73 | font-weight: 500; 74 | color: @text-color-highlight; 75 | a { 76 | color: @text-color-highlight; 77 | } 78 | small, 79 | small a { 80 | font-size: 11px; 81 | color: @text-color-soft; 82 | } 83 | .content { 84 | margin-right: 35px; 85 | } 86 | } 87 | 88 | .content a { 89 | word-break: break-all; 90 | } 91 | 92 | h5 { 93 | color: @text-color-soft2; 94 | font-weight: 300; 95 | margin-top: 5px; 96 | margin-bottom: 5px; 97 | min-height: 15px; 98 | } 99 | .module-controls { 100 | font-size: 85%; 101 | a { 102 | color: @info; 103 | } 104 | } 105 | } 106 | .content { 107 | a { 108 | color: @info; 109 | } 110 | } 111 | .content .files a { 112 | color: @text-color-highlight; 113 | border-bottom: 0; 114 | } 115 | } 116 | 117 | .content span { 118 | .text-break; 119 | } -------------------------------------------------------------------------------- /less/mixins.less: -------------------------------------------------------------------------------- 1 | // 2 | // Theme color classes 3 | // (Add this classes to the html elements from your 4 | // modules to adopt the colors from currently 5 | // activated theme) 6 | // -------------------------------------------------- 7 | //@import (reference) "../../protected/vendor/bower-asset/fontawesome/less/font-awesome.less"; 8 | //@import (reference) "../../protected/vendor/bower-asset/bootstrap/less/mixins.less"; 9 | 10 | 11 | /* Default */ 12 | .colorDefault { 13 | color: @default; 14 | } 15 | 16 | .backgroundDefault { 17 | background: @default; 18 | } 19 | 20 | .borderDefault { 21 | border-color: @default; 22 | } 23 | 24 | /* Primary */ 25 | .colorPrimary { 26 | color: @primary !important; 27 | } 28 | 29 | .backgroundPrimary { 30 | background: @primary !important; 31 | } 32 | 33 | .borderPrimary { 34 | border-color: @primary !important; 35 | } 36 | 37 | /* Info */ 38 | .colorInfo { 39 | color: @info !important; 40 | } 41 | 42 | .backgroundInfo { 43 | background: @info !important; 44 | } 45 | 46 | .borderInfo { 47 | border-color: @info !important; 48 | } 49 | 50 | /* Success */ 51 | .colorSuccess { 52 | color: @success !important; 53 | } 54 | 55 | .backgroundSuccess { 56 | background: @success !important; 57 | } 58 | 59 | .borderSuccess { 60 | border-color: @success !important; 61 | } 62 | 63 | /* Warning */ 64 | .colorWarning { 65 | color: @warning !important; 66 | } 67 | 68 | .backgroundWarning { 69 | background: @warning !important; 70 | } 71 | 72 | .borderWarning { 73 | border-color: @warning !important; 74 | } 75 | 76 | /* Danger */ 77 | .colorDanger { 78 | color: @danger !important; 79 | } 80 | 81 | .backgroundDanger { 82 | background: @danger !important; 83 | } 84 | 85 | .borderDanger { 86 | border-color: @danger !important; 87 | } 88 | 89 | /* Fonts */ 90 | .colorFont1 { 91 | color: @text-color-soft3 !important; 92 | } 93 | 94 | .colorFont2 { 95 | color: @text-color-secondary !important; 96 | } 97 | 98 | .colorFont3 { 99 | color: @text-color-highlight !important; 100 | } 101 | 102 | .colorFont4 { 103 | color: @text-color-soft !important; 104 | } 105 | 106 | .colorFont5 { 107 | color: @text-color-soft2 !important; 108 | } 109 | 110 | .heading { 111 | font-size: 16px; 112 | font-weight: 600; 113 | color: @text-color-highlight; 114 | background-color: @background-color-subpage; 115 | padding: 15px 20px; 116 | border: none; 117 | } 118 | 119 | .text-center { 120 | text-align: center !important; 121 | } 122 | 123 | .text-break { 124 | word-wrap: break-word; 125 | overflow-wrap: break-word; 126 | word-wrap: break-word; 127 | -ms-word-break: break-all; 128 | word-break: break-word; 129 | -ms-hyphens: auto; 130 | -moz-hyphens: auto; 131 | -webkit-hyphens: auto; 132 | hyphens: auto; 133 | } 134 | 135 | // 136 | // Thumbnails 137 | // -------------------------------------------------- 138 | .img-rounded { 139 | -webkit-border-radius: 50%; 140 | -moz-border-radius: 50%; 141 | border-radius: 50%; 142 | } -------------------------------------------------------------------------------- /less/user-feedback.less: -------------------------------------------------------------------------------- 1 | // 2 | // Statusbar 3 | // -------------------------------------------------- 4 | .status-bar-body { 5 | color: white; 6 | position: fixed; 7 | width: 100%; 8 | background-color: rgba(0, 0, 0, 0.7); 9 | text-align: center; 10 | padding: 20px; 11 | z-index: 9999999; 12 | bottom: 0px; 13 | display: block; 14 | line-height:20px; 15 | } 16 | 17 | .status-bar-close { 18 | color:white; 19 | fonfont-weight:bold; 20 | font-size:21px; 21 | cursor: pointer; 22 | } 23 | 24 | .status-bar-close:hover { 25 | color:white; 26 | } 27 | 28 | .status-bar-close i { 29 | vertical-align:top !important; 30 | padding-top:3px; 31 | } 32 | 33 | .status-bar-content i { 34 | margin-right:10px; 35 | font-size:21px; 36 | vertical-align:middle; 37 | } 38 | 39 | .status-bar-content .showMore { 40 | color: @info; 41 | float:right; 42 | margin-left:10px; 43 | font-size:0.7em; 44 | cursor:pointer; 45 | vertical-align:middle; 46 | white-space:nowrap; 47 | } 48 | 49 | .status-bar-content .status-bar-details { 50 | text-align:left; 51 | font-size:0.7em; 52 | margin-top:20px; 53 | max-height:200px; 54 | overflow:auto; 55 | } 56 | 57 | .status-bar-content span { 58 | vertical-align:middle; 59 | } 60 | 61 | .status-bar-content i.error, .status-bar-content i.fatal { 62 | color:@danger; 63 | } 64 | 65 | .status-bar-content i.warning { 66 | color:@warning; 67 | } 68 | 69 | .status-bar-content i.info, .status-bar-content i.debug { 70 | color:@info; 71 | } 72 | 73 | .status-bar-content i.success { 74 | color:#85CA2B; 75 | } 76 | 77 | // 78 | // Third Party Tools 79 | // -------------------------------------------------- 80 | // Highlight 81 | .highlight { 82 | background-color: @background-color-highlight; 83 | } 84 | 85 | // 86 | // Bootstrap Alert panels 87 | // -------------------------------------------------- 88 | .alert-default { 89 | color: @text-color-highlight; 90 | background-color: @background-color-secondary; 91 | border-color: @background-color-page; 92 | font-size: 13px; 93 | .info { 94 | margin: 10px 0; 95 | } 96 | } 97 | 98 | .alert-success { 99 | color: @text-color-success; 100 | background-color: @background-color-success; 101 | border-color: @border-color-success; 102 | } 103 | 104 | .alert-warning { 105 | color: @text-color-warning; 106 | background-color: @background-color-warning; 107 | border-color: @border-color-warning; 108 | } 109 | 110 | .alert-danger { 111 | color: @text-color-danger; 112 | background-color: @background-color-danger; 113 | border-color: @border-color-danger; 114 | } 115 | 116 | // 117 | // data-saved feedback Deprecated since 1.2 118 | // -------------------------------------------------- 119 | .data-saved { 120 | padding-left: 10px; 121 | color: @info; 122 | } 123 | 124 | img.bounceIn { 125 | -webkit-animation-duration: 800ms; 126 | -moz-animation-duration: 800ms; 127 | animation-duration: 800ms; 128 | } -------------------------------------------------------------------------------- /views/comment/comment/edit.php: -------------------------------------------------------------------------------- 1 | getModule('content'); 21 | 22 | ?> 23 |
24 | true]); ?> 25 | 26 | 27 | 28 |
29 | field($comment, 'message')->widget(RichTextField::class, [ 30 | 'id' => 'comment_input_' . $comment->id, 31 | 'layout' => RichTextField::LAYOUT_INLINE, 32 | 'pluginOptions' => ['maxHeight' => '300px'], 33 | 'placeholder' => Yii::t('CommentModule.base', 'Edit your comment...'), 34 | 'focus' => true, 35 | 'events' => [ 36 | 'scroll-active' => 'comment.scrollActive', 37 | 'scroll-inactive' => 'comment.scrollInactive' 38 | ] 39 | ])->label(false) ?> 40 | 41 |
'comment_upload_' . $comment->id, 44 | 'model' => $comment, 45 | 'tooltip' => Yii::t('ContentModule.base', 'Attach Files'), 46 | 'dropZone' => '#comment_' . $comment->id, 47 | 'preview' => '#comment_upload_preview_' . $comment->id, 48 | 'progress' => '#comment_upload_progress_' . $comment->id, 49 | 'max' => $contentModule->maxAttachedFiles, 50 | 'cssButtonClass' => 'btn-sm btn-info', 51 | ]); 52 | echo FileHandlerButtonDropdown::widget([ 53 | 'primaryButton' => $uploadButton, 54 | 'handlers' => $fileHandlers, 55 | 'cssButtonClass' => 'btn-info btn-sm', 56 | 'pullRight' => true, 57 | ]); 58 | echo Button::info() 59 | ->icon('send') 60 | ->cssClass('btn-comment-submit')->sm() 61 | ->action('editSubmit', $submitUrl)->submit(); 62 | ?>
63 |
64 | 65 | 66 | 67 | 'comment_upload_preview_' . $comment->id, 69 | 'options' => ['style' => 'margin-top:10px'], 70 | 'model' => $comment, 71 | 'edit' => true 72 | ]); ?> 73 | 74 |
75 | -------------------------------------------------------------------------------- /less/build.less: -------------------------------------------------------------------------------- 1 | // DO not edit this file. This file is only used to build your theme by calling 'lessc -x build.less ../css/theme.css' 2 | 3 | /* Disable default style */ 4 | 5 | // Edit this if your theme folder resides outside of your humhub/themes directory. 6 | @HUMHUB: "../../../static/less"; 7 | 8 | // Import default select2 styles 9 | @import "../../../static/css/select2Theme/build.less"; 10 | 11 | // Import default cards styles 12 | @import "@{HUMHUB}/cards.less"; 13 | 14 | // Import default comment styles 15 | @import "@{HUMHUB}/comment.less"; 16 | 17 | // Fonts 18 | @import "fonts.less"; 19 | 20 | // Overwrite default variables and mixins here 21 | @import "variables.less"; 22 | @import "mixins.less"; 23 | 24 | // Bootstrap 25 | @import "base/media.less"; 26 | @import "base/flxgrid.less"; 27 | @import "base/space.less"; 28 | @import "base/config.less"; 29 | 30 | // Color 31 | @import "highcontrast.less"; 32 | 33 | // Import base components. 34 | @import "base.less"; 35 | @import "topbar.less"; 36 | @import "login.less"; 37 | @import "dropdown.less"; 38 | @import "media.less"; 39 | @import "panel.less"; 40 | @import "installer.less"; 41 | @import "pagination.less"; 42 | @import "well.less"; 43 | @import "nav.less"; 44 | @import "button.less"; 45 | @import "form.less"; 46 | @import "notification.less"; 47 | @import "badge.less"; 48 | @import "popover.less"; 49 | @import "list-group.less"; 50 | @import "modal.less"; 51 | @import "module.less"; 52 | @import "tooltip.less"; 53 | @import "progress.less"; 54 | @import "table.less"; 55 | @import "comment.less"; 56 | @import "gridview.less"; 57 | @import "oembed.less"; 58 | @import "activities.less"; 59 | @import "stream.less"; 60 | @import "space.less"; 61 | @import "file.less"; 62 | @import "tour.less"; 63 | @import "mentioning.less"; 64 | @import "loader.less"; 65 | @import "markdown.less"; 66 | @import "sidebar.less"; 67 | @import "datepicker.less"; 68 | @import "user-feedback.less"; 69 | @import "tags.less"; 70 | @import "richtext.less"; 71 | 72 | // LEGACY/DEPRECATED User- & Space picker 73 | ul.tag_input { 74 | list-style: none; 75 | background-color: @background-color-main; 76 | border: 1px solid #ccc; 77 | border-radius: 4px; 78 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 79 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 80 | -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; 81 | transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; 82 | padding: 0 0 9px 4px; 83 | li img { 84 | margin: 0 5px 0 0; 85 | } 86 | } 87 | 88 | .tag_input_field { 89 | outline: none; 90 | border: none !important; 91 | padding: 5px 4px 0 !important; 92 | width: 170px; 93 | margin: 2px 0 0 !important; 94 | } 95 | 96 | .userInput, 97 | .spaceInput { 98 | background-color: @info; 99 | font-weight: 600; 100 | color: @text-color-contrast; 101 | border-radius: 3px; 102 | font-size: 12px !important; 103 | padding: 2px; 104 | float: left; 105 | margin: 3px 4px 0 0; 106 | } 107 | 108 | .userInput i, 109 | .spaceInput i { 110 | padding: 0 6px; 111 | font-size: 14px; 112 | cursor: pointer; 113 | line-height: 8px; 114 | } 115 | 116 | // Theme 117 | @import "theme.less"; 118 | -------------------------------------------------------------------------------- /views/space/widgets/spaceChooser.php: -------------------------------------------------------------------------------- 1 | '; 15 | 16 | $this->registerJsConfig('space.chooser', [ 17 | 'noSpace' => $noSpaceView, 18 | 'remoteSearchUrl' => Url::to(['/space/browse/search-json']), 19 | 'text' => [ 20 | 'info.remoteAtLeastInput' => Yii::t('SpaceModule.widgets_views_spaceChooser', 'To search for other spaces, type at least {count} characters.', ['count' => 2]), 21 | 'info.emptyOwnResult' => Yii::t('SpaceModule.widgets_views_spaceChooser', 'No member or following spaces found.'), 22 | 'info.emptyResult' => Yii::t('SpaceModule.widgets_views_spaceChooser', 'No result found for the given filter.'), 23 | ], 24 | ]); 25 | ?> 26 | 27 | 85 | -------------------------------------------------------------------------------- /js/cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery Cookie Plugin v1.4.1 3 | * https://github.com/carhartl/jquery-cookie 4 | * 5 | * Copyright 2006, 2014 Klaus Hartl 6 | * Released under the MIT license 7 | */ 8 | (function (factory) { 9 | if (typeof define === 'function' && define.amd) { 10 | // AMD (Register as an anonymous module) 11 | define(['jquery'], factory); 12 | } else if (typeof exports === 'object') { 13 | // Node/CommonJS 14 | module.exports = factory(require('jquery')); 15 | } else { 16 | // Browser globals 17 | factory(jQuery); 18 | } 19 | }(function ($) { 20 | 21 | var pluses = /\+/g; 22 | 23 | function encode(s) { 24 | return config.raw ? s : encodeURIComponent(s); 25 | } 26 | 27 | function decode(s) { 28 | return config.raw ? s : decodeURIComponent(s); 29 | } 30 | 31 | function stringifyCookieValue(value) { 32 | return encode(config.json ? JSON.stringify(value) : String(value)); 33 | } 34 | 35 | function parseCookieValue(s) { 36 | if (s.indexOf('"') === 0) { 37 | // This is a quoted cookie as according to RFC2068, unescape... 38 | s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); 39 | } 40 | 41 | try { 42 | // Replace server-side written pluses with spaces. 43 | // If we can't decode the cookie, ignore it, it's unusable. 44 | // If we can't parse the cookie, ignore it, it's unusable. 45 | s = decodeURIComponent(s.replace(pluses, ' ')); 46 | return config.json ? JSON.parse(s) : s; 47 | } catch(e) {} 48 | } 49 | 50 | function read(s, converter) { 51 | var value = config.raw ? s : parseCookieValue(s); 52 | return $.isFunction(converter) ? converter(value) : value; 53 | } 54 | 55 | var config = $.cookie = function (key, value, options) { 56 | 57 | // Write 58 | 59 | if (arguments.length > 1 && !$.isFunction(value)) { 60 | options = $.extend({}, config.defaults, options); 61 | 62 | if (typeof options.expires === 'number') { 63 | var days = options.expires, t = options.expires = new Date(); 64 | t.setMilliseconds(t.getMilliseconds() + days * 864e+5); 65 | } 66 | 67 | return (document.cookie = [ 68 | encode(key), '=', stringifyCookieValue(value), 69 | options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 70 | options.path ? '; path=' + options.path : '', 71 | options.domain ? '; domain=' + options.domain : '', 72 | options.secure ? '; secure' : '' 73 | ].join('')); 74 | } 75 | 76 | // Read 77 | 78 | var result = key ? undefined : {}, 79 | // To prevent the for loop in the first place assign an empty array 80 | // in case there are no cookies at all. Also prevents odd result when 81 | // calling $.cookie(). 82 | cookies = document.cookie ? document.cookie.split('; ') : [], 83 | i = 0, 84 | l = cookies.length; 85 | 86 | for (; i < l; i++) { 87 | var parts = cookies[i].split('='), 88 | name = decode(parts.shift()), 89 | cookie = parts.join('='); 90 | 91 | if (key === name) { 92 | // If second argument (value) is a function it's a converter... 93 | result = read(cookie, value); 94 | break; 95 | } 96 | 97 | // Prevent storing a cookie that we couldn't decode. 98 | if (!key && (cookie = read(cookie)) !== undefined) { 99 | result[name] = cookie; 100 | } 101 | } 102 | 103 | return result; 104 | }; 105 | 106 | config.defaults = {}; 107 | 108 | $.removeCookie = function (key, options) { 109 | // Must not alter options, thus extending a fresh object... 110 | $.cookie(key, '', $.extend({}, options, { expires: -1 })); 111 | return !$.cookie(key); 112 | }; 113 | 114 | })); 115 | -------------------------------------------------------------------------------- /less/fonts.less: -------------------------------------------------------------------------------- 1 | // Fonts 2 | 3 | @ptSans: 'PT Sans', system-ui, -apple-system, BlinkMacSystemFont, 'SF UI Text', 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif; 4 | @system: -apple-system, BlinkMacSystemFont, 'SF UI Text', 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif; 5 | 6 | /* pt-sans-regular - latin_cyrillic */ 7 | @font-face { 8 | font-family: 'PT Sans'; 9 | font-style: normal; 10 | font-weight: 400; 11 | src: url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-regular.eot'); /* IE9 Compat Modes */ 12 | src: local('PT Sans'), local('PTSans-Regular'), 13 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 14 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-regular.woff2') format('woff2'), /* Super Modern Browsers */ 15 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-regular.woff') format('woff'), /* Modern Browsers */ 16 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-regular.ttf') format('truetype'), /* Safari, Android, iOS */ 17 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-regular.svg#PTSans') format('svg'); /* Legacy iOS */ 18 | } 19 | /* pt-sans-700 - latin_cyrillic */ 20 | @font-face { 21 | font-family: 'PT Sans'; 22 | font-style: normal; 23 | font-weight: 700; 24 | src: url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-700.eot'); /* IE9 Compat Modes */ 25 | src: local('PT Sans Bold'), local('PTSans-Bold'), 26 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 27 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-700.woff2') format('woff2'), /* Super Modern Browsers */ 28 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-700.woff') format('woff'), /* Modern Browsers */ 29 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-700.ttf') format('truetype'), /* Safari, Android, iOS */ 30 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-700.svg#PTSans') format('svg'); /* Legacy iOS */ 31 | } 32 | /* pt-sans-italic - latin_cyrillic */ 33 | @font-face { 34 | font-family: 'PT Sans'; 35 | font-style: italic; 36 | font-weight: 400; 37 | src: url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-italic.eot'); /* IE9 Compat Modes */ 38 | src: local('PT Sans Italic'), local('PTSans-Italic'), 39 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 40 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-italic.woff2') format('woff2'), /* Super Modern Browsers */ 41 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-italic.woff') format('woff'), /* Modern Browsers */ 42 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-italic.ttf') format('truetype'), /* Safari, Android, iOS */ 43 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-italic.svg#PTSans') format('svg'); /* Legacy iOS */ 44 | } 45 | /* pt-sans-700italic - latin_cyrillic */ 46 | @font-face { 47 | font-family: 'PT Sans'; 48 | font-style: italic; 49 | font-weight: 700; 50 | src: url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-700italic.eot'); /* IE9 Compat Modes */ 51 | src: local('PT Sans Bold Italic'), local('PTSans-BoldItalic'), 52 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 53 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-700italic.woff2') format('woff2'), /* Super Modern Browsers */ 54 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-700italic.woff') format('woff'), /* Modern Browsers */ 55 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-700italic.ttf') format('truetype'), /* Safari, Android, iOS */ 56 | url('../fonts/pt-sans/pt-sans-v9-latin_cyrillic-700italic.svg#PTSans') format('svg'); /* Legacy iOS */ 57 | } -------------------------------------------------------------------------------- /views/comment/widgets/showComment.php: -------------------------------------------------------------------------------- 1 | 19 | 20 |
23 | 24 |
25 | 53 | 54 | $user, 'width' => 40, 'htmlOptions' => ['class' => 'pull-left', 'data-contentcontainer-id' => $user->contentcontainer_id]]); ?> 55 |
56 |
57 |

58 | $createdAt]); ?> 59 | 60 | · 61 | 62 | 63 |

64 |
65 | 66 |
67 |
68 | message, ['record' => $comment]); ?> 69 |
70 | $comment]); ?> 71 |
72 | 73 |
74 | $comment]); ?> 75 |
76 |
77 |
78 | -------------------------------------------------------------------------------- /less/base/space.less: -------------------------------------------------------------------------------- 1 | /*! space.less v0.0.2 | MIT License | github.com/paulradzkov/space.less */ 2 | 3 | .space-settings() { 4 | 5 | @spaces: 0, 8px, 16px, 24px, 40px, 64px, 104px, 168px; 6 | @spacealias: zero, nano, micro, mili, base, kilo, mega, giga; 7 | 8 | // media breakpoints 9 | @breakpoints: 10 | ~"(min-width: 576px)", 11 | ~"(min-width: 768px)", 12 | ~"(min-width: 992px)", 13 | ~"(min-width: 1200px)"; 14 | 15 | // names for breakpoint suffixes 16 | @suffixes: xs, sm, md, lg, xl; 17 | 18 | // IMPORTANT: suffixes count should be bigger than breakpoints count by 1 19 | // suffixes-count = breakpoints-count + 1 20 | } 21 | 22 | @space-render: { 23 | 24 | .space-settings(); 25 | 26 | @i: length(@spaces); // how many steps we have 27 | @j: length(@spacealias); // how many aliases we have 28 | @n: length(@breakpoints); // how many breakpoints we have 29 | @m: length(@suffixes); // how many suffixes we have 30 | @first-suffix: extract(@suffixes, 1); // first breakpoint suffix 31 | 32 | // Basic looping in LESS 33 | .loop-space-steps(@class, @suff, @type, @sign, @index: @i) when (@index > 0) and ( @i = @j) { 34 | .loop-space-steps(@class, @suff, @type, @sign, (@index - 1)); // next iteration 35 | @current-alias: extract(@spacealias, @index); 36 | @current-value: extract(@spaces, @index); 37 | @current-pre-value: extract(@spaces, (@index - 1)); 38 | 39 | // we don't want .space-minus-zero-xs { margin: 0;} 40 | & when not ((@class = minus) and (@index = 1)) { 41 | .space-@{class}-@{current-alias}-@{suff} { && { @{type}: (@current-value * @sign); } } 42 | .space-@{class}-top-@{current-alias}-@{suff} { && { @{type}-top: (@current-value * @sign); } } 43 | .space-@{class}-bottom-@{current-alias}-@{suff} { && { @{type}-bottom: (@current-value * @sign); } } 44 | .space-@{class}-left-@{current-alias}-@{suff} { && { @{type}-left: (@current-value * @sign); } } 45 | .space-@{class}-right-@{current-alias}-@{suff} { && { @{type}-right: (@current-value * @sign); } } 46 | .space-@{class}-v-@{current-alias}-@{suff} { && { @{type}-top: (@current-value * @sign); @{type}-bottom: (@current-value * @sign); } } 47 | .space-@{class}-h-@{current-alias}-@{suff} { && { @{type}-left: (@current-value * @sign); @{type}-right: (@current-value * @sign); } } 48 | 49 | // we don't want tall and wide classes on zero and nano steps 50 | & when (@index > 2) { 51 | .space-@{class}-tall-@{current-alias}-@{suff} { && { @{type}: (@current-value * @sign) (@current-pre-value * @sign); } } 52 | .space-@{class}-wide-@{current-alias}-@{suff} { && { @{type}: (@current-pre-value * @sign) (@current-value * @sign); } } 53 | } 54 | } 55 | } 56 | 57 | // Render module with breakpoint suffix 58 | .space(@suff) { 59 | 60 | .space-auto-@{suff} { && { margin: auto; } } 61 | .space-auto-top-@{suff} { && { margin-top: auto; } } 62 | .space-auto-bottom-@{suff} { && { margin-bottom: auto; } } 63 | .space-auto-left-@{suff} { && { margin-left: auto; } } 64 | .space-auto-right-@{suff} { && { margin-right: auto; } } 65 | .space-auto-v-@{suff} { && { margin-top: auto; margin-bottom: auto; } } 66 | .space-auto-h-@{suff} { && { margin-left: auto; margin-right: auto; } } 67 | 68 | .loop-space-steps(in, @suff, padding, 1, @i); 69 | .loop-space-steps(out, @suff, margin, 1, @i); 70 | .loop-space-steps(minus, @suff, margin, -1, @i); 71 | 72 | } 73 | 74 | // Create breakpoints 75 | .responsive(@index: @m) when (@index > 1) and (@m = (@n + 1)) { 76 | .responsive((@index - 1)); // next iteration 77 | @current-class: extract(@suffixes, @index); 78 | @current-breakpoint: extract(@breakpoints, (@index - 1)); 79 | 80 | @media @current-breakpoint { 81 | .space(@current-class); 82 | } 83 | } 84 | 85 | // Render default state before first breakpoint 86 | .space(@first-suffix); 87 | 88 | // Render mediaqueries with breakpoints 89 | .responsive(); 90 | }; 91 | 92 | @space-render(); 93 | -------------------------------------------------------------------------------- /less/button.less: -------------------------------------------------------------------------------- 1 | // 2 | // Buttons 3 | // -------------------------------------------------- 4 | .btn { 5 | float: none; 6 | border: none; 7 | -webkit-box-shadow: none; 8 | box-shadow: none; 9 | -moz-box-shadow: none; 10 | background-image: none; 11 | text-shadow: none; 12 | border-radius: 2px; 13 | outline: none !important; 14 | margin-bottom: 0; 15 | font-size: 12px; 16 | font-weight: 400; 17 | padding: 5px 8px; 18 | 19 | &:active, &.active { 20 | box-shadow: none; 21 | } 22 | } 23 | 24 | .input.btn { 25 | outline: none; 26 | } 27 | 28 | .btn-lg { 29 | padding: 16px 28px; 30 | } 31 | 32 | .btn-sm { 33 | padding: 5px 8px; 34 | font-size: 12px; 35 | i { 36 | font-size: 14px; 37 | } 38 | } 39 | 40 | .btn-xs { 41 | padding: 1px 5px; 42 | font-size: 12px; 43 | } 44 | 45 | .btn-default { 46 | background: @default; 47 | color: @text-color-secondary !important; 48 | &:hover, 49 | &:focus { 50 | background: darken(@default, 2%); 51 | text-decoration: none; 52 | color: @text-color-secondary; 53 | } 54 | &:active, 55 | &.active { 56 | outline: 0; 57 | background: darken(@default, 5%); 58 | } 59 | &.fileinput-button { 60 | border-radius: 2px; 61 | padding: 5px 8px; 62 | 63 | &:hover, &:active, &.active, &:focus { 64 | background: darken(@default, 5%); 65 | } 66 | } 67 | } 68 | 69 | .btn-default[disabled], 70 | .btn-default.disabled { 71 | background: lighten(@default, 2%); 72 | &:hover, 73 | &:focus { 74 | background: lighten(@default, 2%); 75 | } 76 | &:active, 77 | &.active { 78 | background: lighten(@default, 2%); 79 | } 80 | } 81 | 82 | .btn-primary { 83 | background: @primary; 84 | color: @text-color-contrast !important; 85 | &:hover, 86 | &:focus { 87 | background: darken(@primary, 5%); 88 | text-decoration: none; 89 | } 90 | &:active, 91 | &.active { 92 | outline: 0; 93 | background: darken(@primary, 5%) !important; 94 | } 95 | } 96 | 97 | .btn-primary[disabled], 98 | .btn-primary.disabled { 99 | background: lighten(@primary, 5%); 100 | &:hover, 101 | &:focus { 102 | background: lighten(@primary, 5%); 103 | } 104 | &:active, 105 | &.active { 106 | background: lighten(@primary, 5%) !important; 107 | } 108 | } 109 | 110 | .btn-info { 111 | background: @info; 112 | color: @text-color-contrast !important; 113 | padding: 5px 8px; 114 | &:hover, 115 | &:focus { 116 | background: darken(@info, 5%) !important; 117 | text-decoration: none; 118 | } 119 | &:active, 120 | &.active { 121 | outline: 0; 122 | background: darken(@info, 5%); 123 | } 124 | } 125 | 126 | .btn-info[disabled], 127 | .btn-info.disabled { 128 | background: lighten(@info, 5%); 129 | &:hover, 130 | &:focus { 131 | background: lighten(@info, 5%); 132 | } 133 | &:active, 134 | &.active { 135 | background: lighten(@info, 5%) !important; 136 | } 137 | } 138 | 139 | .btn-danger { 140 | background: @danger; 141 | color: @text-color-contrast !important; 142 | padding: 5px 8px; 143 | &:hover, 144 | &:focus { 145 | background: darken(@danger, 5%); 146 | text-decoration: none; 147 | } 148 | &:active, 149 | &.active { 150 | outline: 0; 151 | background: darken(@danger, 5%) !important; 152 | } 153 | } 154 | 155 | .btn-danger[disabled], 156 | .btn-danger.disabled { 157 | background: lighten(@danger, 5%); 158 | &:hover, 159 | &:focus { 160 | background: lighten(@danger, 5%); 161 | } 162 | &:active, 163 | &.active { 164 | background: lighten(@danger, 5%) !important; 165 | } 166 | } 167 | 168 | .btn-success { 169 | background: @success; 170 | color: @text-color-contrast !important; 171 | &:hover, 172 | &:focus { 173 | background: darken(@success, 5%); 174 | text-decoration: none; 175 | } 176 | &:active, 177 | &.active { 178 | outline: 0; 179 | background: darken(@success, 5%) !important; 180 | } 181 | } 182 | 183 | .btn-success[disabled], 184 | .btn-success.disabled { 185 | background: lighten(@success, 5%); 186 | &:hover, 187 | &:focus { 188 | background: lighten(@success, 5%); 189 | } 190 | &:active, 191 | &.active { 192 | background: lighten(@success, 5%) !important; 193 | } 194 | } 195 | 196 | .btn-warning { 197 | background: @warning; 198 | color: @text-color-contrast !important; 199 | &:hover, 200 | &:focus { 201 | background: darken(@warning, 2%); 202 | text-decoration: none; 203 | } 204 | &:active, 205 | &.active { 206 | outline: 0; 207 | background: darken(@warning, 2%) !important; 208 | } 209 | } 210 | 211 | .btn-warning[disabled], 212 | .btn-warning.disabled { 213 | background: lighten(@warning, 5%); 214 | &:hover, 215 | &:focus { 216 | background: lighten(@warning, 5%); 217 | } 218 | &:active, 219 | &.active { 220 | background: lighten(@warning, 5%) !important; 221 | } 222 | } -------------------------------------------------------------------------------- /less/nav.less: -------------------------------------------------------------------------------- 1 | // 2 | // Navs 3 | // -------------------------------------------------- 4 | .tab-sub-menu { 5 | padding-left: 10px; 6 | li > a:hover, li > a:focus { 7 | background-color: @background-color-secondary; 8 | border-bottom-color: #ddd; 9 | } 10 | 11 | li.active > a { 12 | background-color:@background-color-main; 13 | border-bottom-color: transparent; 14 | } 15 | } 16 | 17 | .tab-menu { 18 | padding-top:10px; 19 | background-color: @background-color-main; 20 | 21 | .nav-tabs { 22 | padding-left: 10px; 23 | 24 | li > a { 25 | padding-top:12px; 26 | border-color: #ddd; 27 | border-bottom:1px solid #ddd; 28 | background-color: @background-color-secondary; 29 | max-height: 41px; 30 | outline: none; 31 | } 32 | 33 | li > a:hover, li > a:focus { 34 | padding-top:10px; 35 | border-top: 3px solid #ddd; 36 | } 37 | 38 | li > a:hover { 39 | background-color: @background-color-secondary; 40 | } 41 | 42 | li.active > a, li.active > a:hover { 43 | padding-top:10px; 44 | border-top: 3px solid @info; 45 | } 46 | 47 | li.active > a { 48 | background-color: @background-color-main; 49 | border-bottom-color: transparent; 50 | } 51 | } 52 | } 53 | 54 | ul.tab-menu { 55 | padding-top:10px; 56 | background-color: @background-color-main; 57 | 58 | padding-left: 10px; 59 | } 60 | 61 | ul.tab-menu-settings { 62 | li > a { 63 | padding-top:12px; 64 | border-color: #ddd; 65 | border-bottom:1px solid #ddd; 66 | background-color: @background-color-secondary; 67 | max-height: 41px; 68 | outline: none; 69 | } 70 | 71 | li > a:hover, li > a:focus { 72 | padding-top:10px; 73 | border-top: 3px solid #ddd !important; 74 | } 75 | 76 | li > a:hover { 77 | background-color: @background-color-secondary; 78 | } 79 | 80 | li.active > a, li.active > a:hover, li.active > a:focus { 81 | padding-top:10px; 82 | border-top: 3px solid @info !important; 83 | } 84 | 85 | li.active > a { 86 | background-color: @background-color-main; 87 | border-bottom-color: transparent !important; 88 | } 89 | } 90 | 91 | .nav-pills, 92 | .nav-tabs, 93 | .account { 94 | .dropdown-menu { 95 | background-color: @primary; 96 | border: none; 97 | 98 | li.divider { 99 | background-color: darken(@primary, 5%); 100 | border-bottom: none; 101 | margin: 9px 1px !important; 102 | } 103 | li { 104 | border-left: 0; 105 | a { 106 | color: white; 107 | font-weight: 400; 108 | font-size: 13px; 109 | padding: 4px 15px; 110 | i { 111 | margin-right: 5px; 112 | font-size: 14px; 113 | display: inline-block; 114 | width: 14px; 115 | } 116 | } 117 | a:hover, 118 | a:visited, 119 | a:hover, 120 | a:focus { 121 | background: none; 122 | } 123 | } 124 | li:hover, 125 | li.selected { 126 | border-left: 0; 127 | color: @text-color-contrast !important; 128 | background-color: darken(@primary, 5%) !important; 129 | } 130 | } 131 | } 132 | 133 | .nav-pills.preferences { 134 | .dropdown .dropdown-toggle { 135 | color: @text-color-soft; 136 | } 137 | .dropdown.open { 138 | .dropdown-toggle, 139 | .dropdown-toggle:hover { 140 | background-color: @primary; 141 | } 142 | } 143 | } 144 | 145 | .nav-pills > li.active > a, 146 | .nav-pills > li.active > a:hover, 147 | .nav-pills > li.active > a:focus { 148 | background-color: @primary; 149 | } 150 | 151 | // Nav-Tabs 152 | .nav-tabs { 153 | margin-bottom: 10px; 154 | } 155 | 156 | .list-group { 157 | a [class^="fa-"], 158 | a [class*=" fa-"] { 159 | display: inline-block; 160 | width: 18px; 161 | } 162 | } 163 | 164 | .nav-pills.preferences { 165 | position: absolute; 166 | right: 10px; 167 | top: 10px; 168 | z-index: 10; 169 | .dropdown .dropdown-toggle { 170 | border-radius: 2px; 171 | padding: 2px 10px; 172 | } 173 | .dropdown.open { 174 | .dropdown-toggle, 175 | .dropdown-toggle:hover { 176 | color: white; 177 | } 178 | } 179 | } 180 | 181 | .nav-tabs { 182 | li { 183 | font-weight: 400; 184 | font-size: 12px; 185 | } 186 | } 187 | 188 | .tab-content .tab-pane { 189 | a { 190 | color: @info; 191 | } 192 | .form-group { 193 | margin-bottom: 5px; 194 | } 195 | } 196 | 197 | .nav-tabs.tabs-center { 198 | li { 199 | float: none; 200 | display: inline-block; 201 | } 202 | } 203 | 204 | .nav-tabs.tabs-small { 205 | li > a { 206 | padding: 5px 7px; 207 | } 208 | } 209 | 210 | .nav .caret, 211 | .nav .caret:hover, 212 | .nav .caret:active { 213 | border-top-color: @text-color-highlight; 214 | border-bottom-color: @text-color-highlight; 215 | height: 6.928px; 216 | } 217 | 218 | .nav li.dropdown > a:hover .caret, 219 | .nav li.dropdown > a:active .caret { 220 | border-top-color: @text-color-highlight; 221 | border-bottom-color: @text-color-highlight; 222 | } 223 | 224 | .nav .open > a .caret, 225 | .nav .open > a:hover .caret, 226 | .nav .open > a:focus .caret { 227 | border-top-color: @text-color-highlight; 228 | border-bottom-color: @text-color-highlight; 229 | } 230 | 231 | .nav .open > a, 232 | .nav .open > a:hover, 233 | .nav .open > a:focus { 234 | border-color: #ededed; 235 | color: @text-color-highlight; 236 | .caret { 237 | color: @text-color-highlight; 238 | } 239 | } 240 | 241 | .footer-nav { 242 | filter:opacity(.6); 243 | font-size:12px; 244 | text-align:center; 245 | } 246 | 247 | @media @mmd { 248 | .controls-header { 249 | float: none !important; 250 | } 251 | } 252 | -------------------------------------------------------------------------------- /less/form.less: -------------------------------------------------------------------------------- 1 | // 2 | // Forms 3 | // -------------------------------------------------- 4 | .radio, 5 | .checkbox { 6 | margin-top: 5px !important; 7 | margin-bottom: 0; 8 | } 9 | 10 | .radio label, 11 | .checkbox label { 12 | padding-left: 10px; 13 | } 14 | 15 | .form-control { 16 | border: 2px solid @background-color-subpage; 17 | box-shadow: none; 18 | min-height: 42px; 19 | border-radius: 4px; 20 | padding: 6px 12px; 21 | 22 | &:focus { 23 | border: 2px solid @info; 24 | outline: 0; 25 | box-shadow: none; 26 | } 27 | } 28 | 29 | .form-control.form-search { 30 | border-radius: 30px; 31 | background-image: url("../img/icon_search16x16.png"); 32 | background-repeat: no-repeat; 33 | background-position: 10px 12px; 34 | padding-left: 34px; 35 | } 36 | 37 | .form-group-search { 38 | position: relative; 39 | .form-button-search { 40 | position: absolute; 41 | top: 4px; 42 | right: 4px; 43 | border-radius: 30px; 44 | padding: 8px 16px; 45 | } 46 | } 47 | 48 | textarea { 49 | resize: none; 50 | height: 1.5em; 51 | } 52 | 53 | select.form-control:not([multiple]) { 54 | -webkit-appearance: none; 55 | -moz-appearance: none; 56 | appearance: none; 57 | background-image: url("../img/select_arrow.png") !important; 58 | background-repeat: no-repeat; 59 | background-position: right 13px; 60 | overflow: hidden; 61 | } 62 | 63 | label { 64 | font-weight: normal; 65 | } 66 | 67 | label.control-label { 68 | font-weight: 400; 69 | } 70 | 71 | // Placeholder text 72 | ::-webkit-input-placeholder { 73 | color: @text-color-soft !important; 74 | } 75 | 76 | ::-moz-placeholder { 77 | color: @text-color-soft !important; 78 | } 79 | 80 | /* firefox 19+ */ 81 | :-ms-input-placeholder { 82 | color: @text-color-soft !important; 83 | } 84 | 85 | /* ie */ 86 | input:-moz-placeholder { 87 | color: @text-color-soft !important; 88 | } 89 | 90 | // Placeholder text for empty content 91 | .placeholder { 92 | padding: 10px; 93 | } 94 | 95 | // HTML5 Placeholder jQuery Plugin 96 | input.placeholder, 97 | textarea.placeholder { 98 | padding: 0 0 0 10px; 99 | color: #999; 100 | } 101 | 102 | .help-block-error { 103 | font-size: 12px; 104 | } 105 | 106 | .hint-block, .help-block:not(.help-block-error) { 107 | color: @text-color-soft2 !important; 108 | font-size: 12px; 109 | } 110 | 111 | .hint-block:hover, .help-block:not(.help-block-error):hover { 112 | color: @text-color-secondary !important; 113 | font-size: 12px; 114 | } 115 | 116 | .input-group-addon { 117 | border: none; 118 | } 119 | 120 | a.input-field-addon { 121 | font-size:12px; 122 | float:right; 123 | margin-top:-10px; 124 | } 125 | 126 | a.input-field-addon-sm { 127 | font-size:11px; 128 | float:right; 129 | margin-top:-10px; 130 | } 131 | 132 | .timeZoneInputContainer { 133 | padding-top:10px; 134 | } 135 | 136 | .timeZoneInputContainer ~ .help-block { 137 | margin:0px; 138 | } 139 | 140 | // 141 | // Labels 142 | // -------------------------------------------------- 143 | .label { 144 | text-transform: none; 145 | } 146 | 147 | .label { 148 | border-radius: 50px; 149 | text-transform: none; 150 | display: inline-block; 151 | padding: 3px 10px 4px; 152 | font-weight: 400; 153 | font-size: 10px !important; 154 | color: white !important; 155 | vertical-align: baseline; 156 | white-space: nowrap; 157 | text-shadow: none; 158 | } 159 | 160 | .label-default { 161 | background: @background-color-page; 162 | color: @text-color-secondary !important; 163 | } 164 | 165 | a.label-default:hover { 166 | background: darken(@background-color-page, 5%) !important; 167 | } 168 | 169 | .label-info { 170 | text-transform: none; 171 | background-color: @info; 172 | } 173 | 174 | a.label-info:hover { 175 | background: darken(@info, 5%) !important; 176 | } 177 | 178 | .label-danger { 179 | background-color: @danger; 180 | } 181 | 182 | a.label-danger:hover { 183 | background: darken(@danger, 5%) !important; 184 | } 185 | 186 | .label-success { 187 | background-color: @success; 188 | } 189 | 190 | a.label-success:hover { 191 | background: darken(@success, 5%) !important; 192 | } 193 | 194 | .label-warning { 195 | background-color: @warning; 196 | } 197 | 198 | a.label-warning:hover { 199 | background: darken(@warning, 5%) !important; 200 | } 201 | 202 | // Flatelements 203 | .regular-checkbox:checked + .regular-checkbox-box { 204 | border: 2px solid @info; 205 | background: @info; 206 | color: white; 207 | } 208 | 209 | .regular-checkbox-box.disabled { 210 | background: @background3 !important; 211 | border: 2px solid @background3 !important; 212 | cursor: not-allowed; 213 | } 214 | 215 | .regular-radio:checked + .regular-radio-button:after { 216 | background: @info; 217 | } 218 | 219 | .regular-radio:checked + .regular-radio-button { 220 | background-color: none; 221 | color: #99a1a7; 222 | border: 2px solid @background3; 223 | margin-right: 5px; 224 | } 225 | 226 | .regular-radio.disabled { 227 | background: @background3 !important; 228 | border: 2px solid @background3 !important; 229 | cursor: not-allowed; 230 | } 231 | 232 | // 233 | // Errror handling 234 | // 235 | .errorMessage { 236 | color: @danger; 237 | padding: 10px 0; 238 | } 239 | 240 | // Errror handling 241 | .error { 242 | border-color: @danger !important; 243 | } 244 | 245 | .has-error .help-block, 246 | .has-error .control-label, 247 | .has-error .radio, 248 | .has-error .checkbox, 249 | .has-error .radio-inline, 250 | .has-error .checkbox-inline { 251 | color: @danger !important; 252 | } 253 | 254 | .has-error .form-control, 255 | .has-error .form-control:focus { 256 | border-color: @danger; 257 | -webkit-box-shadow: none; 258 | box-shadow: none; 259 | } 260 | 261 | .has-success .help-block, 262 | .has-success .control-label, 263 | .has-success .radio, 264 | .has-success .checkbox, 265 | .has-success .radio-inline, 266 | .has-success .checkbox-inline { 267 | color: @success; 268 | } 269 | 270 | .has-success .form-control, 271 | .has-success .form-control:focus { 272 | border-color: @success; 273 | -webkit-box-shadow: none; 274 | box-shadow: none; 275 | } 276 | 277 | .has-warning .help-block, 278 | .has-warning .control-label, 279 | .has-warning .radio, 280 | .has-warning .checkbox, 281 | .has-warning .radio-inline, 282 | .has-warning .checkbox-inline { 283 | color: @warning; 284 | } 285 | 286 | .has-warning .form-control, 287 | .has-warning .form-control:focus { 288 | border-color: @warning; 289 | -webkit-box-shadow: none; 290 | box-shadow: none; 291 | } 292 | 293 | .bootstrap-timepicker-widget .form-control { 294 | padding:0px; 295 | } 296 | -------------------------------------------------------------------------------- /less/base/flxgrid.less: -------------------------------------------------------------------------------- 1 | .grid-settings() { 2 | 3 | // settings 4 | @grid-columns: 12; // number of columns 5 | @gutter-width: 30px; // gap between columns 6 | 7 | // media breakpoints (default: as on bootstrap) 8 | @breakpoints: 9 | ~"(min-width: 768px)", 10 | ~"(min-width: 992px)", 11 | ~"(min-width: 1200px)"; 12 | 13 | // max-width of containers according breakpoints 14 | @container-maw: 15 | 750px, 16 | 970px, 17 | 1170px; 18 | 19 | // names for breakpoint suffixes 20 | @suffixes: xs, sm, md, lg; 21 | 22 | // IMPORTANT: suffixes count should be bigger than breakpoints count by 1 23 | // suffixes-count = breakpoints-count + 1 24 | 25 | } 26 | 27 | @grid-render: { 28 | 29 | // calculations 30 | @gutter-compensation: ((@gutter-width * 0.5) * -1); 31 | @half-gutter-width: ((@gutter-width) * 0.5); 32 | @n: length(@breakpoints); // how many breakpoints we have 33 | @m: length(@suffixes); // how many suffixes we have 34 | @first-suffix: extract(@suffixes, 1); // first breakpoint suffix 35 | 36 | // MIXINS 37 | 38 | // Framework grid generation 39 | // 40 | // Used to generate the correct number of grid classes 41 | // given any value of `@grid-columns`. 42 | 43 | .flex-grid-columns(@class) { 44 | .col(@index) { // initial 45 | @item: ~".col-@{class}-@{index}"; 46 | .col((@index + 1), @item); 47 | } 48 | .col(@index, @list) when (@index =< @grid-columns) { // general 49 | @item: ~".col-@{class}-@{index}"; 50 | .col((@index + 1), ~"@{list}, @{item}"); 51 | } 52 | .col(@index, @list) when (@index > @grid-columns) { // terminal 53 | @{list}, 54 | .col-@{class}-shrink, 55 | .col-@{class}-min, 56 | .col-@{class} { 57 | box-sizing: border-box; 58 | flex: 0 0 auto; 59 | padding-right: @half-gutter-width; 60 | padding-left: @half-gutter-width; 61 | } 62 | } 63 | .col(1); // kickstart it 64 | } 65 | 66 | .calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) { 67 | .col-@{class}-@{index} { 68 | flex-basis: percentage((@index / @grid-columns)); 69 | max-width: percentage((@index / @grid-columns)); 70 | min-width: 150px; 71 | } 72 | } 73 | 74 | .calc-grid-column(@index, @class, @type) when (@type = offset) { 75 | .col-@{class}-offset-@{index} { 76 | margin-left: percentage((@index / @grid-columns)); 77 | } 78 | } 79 | 80 | // Basic looping in LESS 81 | .loop-grid-columns(@index, @class, @type) when (@index >= 0) { 82 | .loop-grid-columns((@index - 1), @class, @type); // next iteration 83 | .calc-grid-column(@index, @class, @type); 84 | } 85 | 86 | // Create grid for specific class 87 | .make-grid(@class) { 88 | .flex-grid-columns(@class); 89 | .loop-grid-columns(@grid-columns, @class, width); 90 | .loop-grid-columns(@grid-columns, @class, offset); 91 | .col-modifiers(@class); 92 | } 93 | 94 | // Create additional row modifiers 95 | .row-modifiers(@class) { 96 | .row { 97 | &-reverse-@{class} { 98 | flex-direction: row-reverse; 99 | } 100 | 101 | &-start-@{class} { 102 | justify-content: flex-start; 103 | } 104 | 105 | &-center-@{class} { 106 | justify-content: center; 107 | } 108 | 109 | &-end-@{class} { 110 | justify-content: flex-end; 111 | } 112 | 113 | &-top-@{class} { align-items: flex-start; } 114 | &-middle-@{class} { align-items: center; } 115 | &-bottom-@{class} { align-items: flex-end; } 116 | 117 | &-around-@{class} { justify-content: space-around; } 118 | &-between-@{class} { justify-content: space-between; } 119 | } 120 | } 121 | 122 | // Create modifiers for columns 123 | .col-modifiers(@class) { 124 | 125 | .col { 126 | &-@{class} { 127 | flex-grow: 1; 128 | flex-basis: 0%; 129 | max-width: 100%; 130 | min-width: 0; 131 | } 132 | 133 | &-@{class}-shrink { 134 | flex-grow: 0; 135 | flex-basis: auto; 136 | max-width: 100%; 137 | min-width: 0; 138 | } 139 | 140 | &-@{class}-min { 141 | flex-grow: 0; 142 | flex-basis: 0%; 143 | max-width: 100%; 144 | min-width: 0; 145 | } 146 | 147 | &-first-@{class} { order: -1; } 148 | &-last-@{class} { order: 1; } 149 | 150 | &-flex-@{class} { 151 | display: flex; 152 | flex-direction: column; 153 | align-items: stretch; 154 | } 155 | } 156 | } 157 | 158 | .grow-modifiers(@class) { 159 | .flex-grow-@{class} { 160 | flex-grow: 1; 161 | } 162 | } 163 | 164 | // Create breakpoints 165 | .responsive(@index: @m) when (@index > 1) and (@m = (@n + 1)) { 166 | .responsive((@index - 1)); // next iteration 167 | @current-class: extract(@suffixes, @index); 168 | @current-breakpoint: extract(@breakpoints, (@index - 1)); 169 | 170 | @media @current-breakpoint { 171 | 172 | .container { 173 | max-width: extract(@container-maw, (@index - 1)); 174 | } 175 | 176 | .row-modifiers(@current-class); 177 | 178 | .make-grid(@current-class); 179 | 180 | .grow-modifiers(@current-class); 181 | } 182 | } 183 | 184 | // end of mixins 185 | 186 | // RENDER 187 | 188 | // Call setting 189 | .grid-settings(); 190 | 191 | // Common container 192 | .container { 193 | margin-right: auto; 194 | margin-left: auto; 195 | 196 | &-fluid { 197 | margin-right: auto; 198 | margin-left: auto; 199 | padding-right: @half-gutter-width; 200 | padding-left: @half-gutter-width; 201 | } 202 | } 203 | 204 | // Common row 205 | .row { 206 | box-sizing: border-box; 207 | display: flex; 208 | flex: 0 1 auto; 209 | flex-direction: row; 210 | flex-wrap: wrap; 211 | margin-right: @gutter-compensation; 212 | margin-left: @gutter-compensation; 213 | 214 | &[class*="col-"] { 215 | padding-left: 0; 216 | padding-right: 0; 217 | } 218 | } 219 | 220 | // Render modifiers 221 | .row-modifiers(@first-suffix); 222 | 223 | // Render default state before first breakpoint 224 | .make-grid(@first-suffix); 225 | 226 | // Render default state before first breakpoint 227 | .grow-modifiers(@first-suffix); 228 | 229 | // Render mediaqueries with breakpoints 230 | .responsive(); 231 | 232 | }; 233 | 234 | @grid-render(); 235 | -------------------------------------------------------------------------------- /less/panel.less: -------------------------------------------------------------------------------- 1 | .panel { 2 | border: none; 3 | background-color: @background-color-main; 4 | box-shadow: none; 5 | border-radius: 4px; 6 | position: relative; 7 | margin-bottom: 16px; 8 | h1 { 9 | font-size: 16px; 10 | font-weight: 300; 11 | margin-top: 0; 12 | color: @text-color-highlight; 13 | } 14 | .panel-heading { 15 | .heading; 16 | border-radius: 4px 4px 0 0; 17 | 18 | .heading-link { 19 | color:#6fdbe8 !important; 20 | font-size: 0.8em; 21 | } 22 | } 23 | .panel-body { 24 | padding: 20px; 25 | font-size: 13px; 26 | position: relative; 27 | border-radius: 0 0 4px 4px; 28 | 29 | p { 30 | color: @text-color-highlight; 31 | } 32 | &.message-new { 33 | background-color: @background-color-subpage; 34 | 35 | .ProseMirror-menubar { 36 | background-color: @background-color-subpage; 37 | } 38 | } 39 | } 40 | .statistics { 41 | .entry { 42 | margin-right: 20px; 43 | font-size: 12px; 44 | .count { 45 | color: @info; 46 | font-weight: 600; 47 | font-size: 20px; 48 | line-height: 0.8em; 49 | } 50 | } 51 | } 52 | h3.media-heading { 53 | small { 54 | font-size: 75%; 55 | } 56 | small a { 57 | color: @info; 58 | } 59 | } 60 | } 61 | 62 | .panel-danger { 63 | border: 2px solid @danger; 64 | .panel-heading { 65 | color: @danger; 66 | } 67 | } 68 | 69 | .panel-tour { 70 | .nav > li > a:hover, .nav > li > a:focus { 71 | background-color: @primary; 72 | } 73 | .panel-heading { 74 | background-color: darken(@primary, 10%); 75 | color: @text-color-contrast; 76 | } 77 | .panel-body { 78 | background-color: @primary; 79 | color: @text-color-contrast; 80 | P { 81 | color: @text-color-contrast; 82 | } 83 | .tour-list { 84 | color: lighten(@primary, 40%); 85 | a { 86 | color: lighten(@primary, 40%); 87 | } 88 | } 89 | } 90 | } 91 | 92 | .members { 93 | .panel-body { 94 | padding: 10px 20px 20px 20px; 95 | } 96 | } 97 | 98 | .panel-success { 99 | border: 2px solid @success; 100 | .panel-heading { 101 | color: @success; 102 | } 103 | } 104 | 105 | .panel-warning { 106 | border: 2px solid @warning; 107 | .panel-heading { 108 | color: @warning; 109 | } 110 | } 111 | 112 | .panel.profile { 113 | position: relative; 114 | .controls { 115 | position: absolute; 116 | top: 10px; 117 | right: 10px; 118 | } 119 | } 120 | 121 | .panel.members, 122 | .panel.groups, 123 | .panel.follower, 124 | .panel.spaces { 125 | .panel-body a img { 126 | margin-bottom: 5px; 127 | } 128 | } 129 | 130 | .panel-profile { 131 | .panel-profile-header { 132 | position: relative; 133 | border-top-right-radius: 4px; 134 | border-top-left-radius: 4px; 135 | .img-profile-header-background { 136 | border-top-right-radius: 4px; 137 | border-top-left-radius: 4px; 138 | min-height: 110px; 139 | } 140 | .image-upload-container { 141 | .image-upload-buttons { 142 | display: none; 143 | position: absolute; 144 | left: 20px; 145 | bottom: 10px; 146 | float: none; 147 | } 148 | } 149 | .img-profile-data { 150 | position: absolute; 151 | height: 100%; 152 | width: 100%; 153 | bottom: 0; 154 | right: 0; 155 | left: 0; 156 | top: 0; 157 | padding-bottom: 20px; 158 | padding-right: 20px; 159 | padding-left: 20px; 160 | padding-top: 20px; 161 | border-bottom-right-radius: 0; 162 | border-bottom-left-radius: 0; 163 | color: #fff; 164 | pointer-events: none; 165 | background: -moz-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 1%, rgba(0, 0, 0, 0.38) 100%); 166 | /* FF3.6+ */ 167 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(1%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 0.38))); 168 | /* Chrome,Safari4+ */ 169 | background: -webkit-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 1%, rgba(0, 0, 0, 0.38) 100%); 170 | /* Chrome10+,Safari5.1+ */ 171 | background: -o-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 1%, rgba(0, 0, 0, 0.38) 100%); 172 | /* Opera 11.10+ */ 173 | background: -ms-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 1%, rgba(0, 0, 0, 0.38) 100%); 174 | /* IE10+ */ 175 | background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 1%, rgba(0, 0, 0, 0.38) 100%); 176 | /* W3C */ 177 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#94000000', GradientType=0); 178 | /* IE6-9 */ 179 | h1 { 180 | font-size: 30px; 181 | font-weight: 600; 182 | margin-bottom: 7px; 183 | color: #fff; 184 | max-width: 100%; 185 | white-space: nowrap; 186 | overflow: hidden; 187 | text-overflow: ellipsis; 188 | } 189 | h2 { 190 | font-size: 16px; 191 | font-weight: 300; 192 | margin-top: 0; 193 | } 194 | h1.space { 195 | font-size: 30px; 196 | font-weight: 600; 197 | } 198 | h2.space { 199 | font-size: 13px; 200 | font-weight: 300; 201 | max-width: 100%; 202 | white-space: nowrap; 203 | overflow: hidden; 204 | text-overflow: ellipsis; 205 | } 206 | } 207 | .profile-user-photo-container { 208 | background-color: @background-color-main; 209 | border-radius: 50%; 210 | position: absolute; 211 | bottom: -50px; 212 | z-index: 10; 213 | @media @md { 214 | transform: translate(-50%,0%); 215 | left: 50%; 216 | } 217 | @media @mmd { 218 | right: 20px; 219 | } 220 | .profile-user-photo { 221 | border: 3px solid transparent; 222 | border-radius: 50%; 223 | } 224 | } 225 | } 226 | } 227 | 228 | .panel.pulse, 229 | .panel.fadeIn { 230 | -webkit-animation-duration: 200ms; 231 | -moz-animation-duration: 200ms; 232 | animation-duration: 200ms; 233 | } 234 | 235 | @media (max-width: 767px) { 236 | .panel-profile .panel-profile-header .img-profile-data h1 { 237 | font-size: 20px !important; 238 | } 239 | } 240 | 241 | .panel-body > .tab-menu { 242 | margin-left:-10px; 243 | margin-right:-10px 244 | } 245 | -------------------------------------------------------------------------------- /less/markdown.less: -------------------------------------------------------------------------------- 1 | // Markdown 2 | .markdown-render { 3 | h1, 4 | h2, 5 | h3, 6 | h4, 7 | h5, 8 | h6 { 9 | font-weight: bold !important; 10 | } 11 | h1 { 12 | font-size: 28px !important; 13 | } 14 | h2 { 15 | font-size: 24px !important; 16 | } 17 | h3 { 18 | font-size: 18px !important; 19 | } 20 | h4 { 21 | font-size: 16px !important; 22 | } 23 | h5 { 24 | font-size: 14px !important; 25 | } 26 | h6 { 27 | color: #999; 28 | font-size: 14px !important; 29 | } 30 | 31 | pre { 32 | padding: 0; 33 | border: none; 34 | border-radius: 3px; 35 | code { 36 | padding: 10px; 37 | border-radius: 3px; 38 | font-size: 12px !important; 39 | } 40 | } 41 | a, 42 | a:visited { 43 | background-color: inherit; 44 | text-decoration: none; 45 | color: @info !important; 46 | } 47 | 48 | a.header-anchor { 49 | color: @text-color-main !important; 50 | } 51 | 52 | img { 53 | max-width: 100%; 54 | //display: table-cell !important; 55 | } 56 | 57 | table { 58 | width: 100%; 59 | th { 60 | font-size: 13px; 61 | font-weight: 700; 62 | color: @text-color-highlight; 63 | } 64 | 65 | thead { 66 | tr { 67 | border-bottom: 1px solid @background3; 68 | } 69 | } 70 | 71 | tbody tr td, thead tr th { 72 | border: 1px solid @background3 !important; 73 | padding: 4px; 74 | } 75 | } 76 | } 77 | 78 | .md-editor.active { 79 | border: 2px solid @info !important; 80 | } 81 | 82 | .md-editor textarea { 83 | padding: 10px !important; 84 | } 85 | 86 | [data-ui-markdown], [data-ui-richtext] { 87 | font-family: @post-font-family; 88 | font-size: @post-font-size; 89 | line-height: @post-line-height; 90 | overflow-wrap: break-word; 91 | overflow:hidden; 92 | 93 | h1, h2, h3, h4, h5, h6 { 94 | font-family: @global-font-family; 95 | font-weight: 700; 96 | text-align: start; 97 | color: @text-color-highlight; 98 | } 99 | 100 | h1 { 101 | font-size: 2em !important; 102 | margin-top: 4rem; 103 | } 104 | 105 | h2 { 106 | font-size: 1.7em !important; 107 | margin-top: 3rem; 108 | } 109 | 110 | h3 { 111 | font-size: 1.5em !important; 112 | margin-top: 2rem; 113 | } 114 | 115 | h4 { 116 | font-size: 1.2em !important; 117 | } 118 | 119 | h5 { 120 | font-size: 1em !important; 121 | } 122 | 123 | h6 { 124 | font-size: .85em !important; 125 | } 126 | 127 | p { 128 | font-family: @post-font-family; 129 | font-size: @post-font-size; 130 | line-height: @post-line-height; 131 | } 132 | 133 | p, pre, blockquote { 134 | margin-bottom: 1rem; 135 | margin-top: 1rem; 136 | } 137 | 138 | p:first-of-type { 139 | margin-top: 0; 140 | } 141 | 142 | p:last-child { 143 | margin-bottom: 0; 144 | } 145 | 146 | pre code.hljs { 147 | background-color: #f5f5f5; 148 | } 149 | 150 | blockquote { 151 | border-left-width: 10px; 152 | background-color: rgba(128,128,128,0.05); 153 | border-top-right-radius: 5px; 154 | border-bottom-right-radius: 5px; 155 | padding: 15px 20px; 156 | font-size: 1em; 157 | border-left: 5px solid #888888; 158 | 159 | } 160 | 161 | table { 162 | width: 100%; 163 | th { 164 | font-size: 13px; 165 | font-weight: 700; 166 | color: @text-color-highlight; 167 | background-color: @background-color-secondary; 168 | } 169 | 170 | td, th { 171 | border: 1px solid @background3 !important; 172 | padding: 6px; 173 | } 174 | } 175 | 176 | dt, dd { 177 | margin-top: 5px; 178 | margin-bottom: 5px; 179 | line-height: 1.45; 180 | } 181 | 182 | dt { 183 | font-weight: bold; 184 | } 185 | 186 | dd { 187 | margin-left: 40px; 188 | } 189 | 190 | pre { 191 | text-align: start; 192 | border: 0; 193 | padding: 10px 20px; 194 | border-radius: 5px; 195 | code { 196 | white-space: pre !important; 197 | } 198 | } 199 | 200 | 201 | blockquote ul:last-child, blockquote ol:last-child { 202 | margin-bottom: 0px; 203 | } 204 | 205 | ul, ol { 206 | font-family: @post-font-family; 207 | font-size: @post-font-size; 208 | line-height: @post-line-height; 209 | margin-top: 1rem; 210 | margin-bottom: 1rem; 211 | 212 | li p { 213 | // otherwise single list items p hides the marker 214 | overflow:visible !important; 215 | } 216 | } 217 | 218 | .footnote { 219 | vertical-align: top; 220 | position: relative; 221 | top: -0.5em; 222 | font-size: .8em; 223 | } 224 | 225 | .emoji { 226 | width:16px; 227 | } 228 | 229 | a.not-found { 230 | color: @warning; 231 | } 232 | 233 | li { 234 | border:0 !important; 235 | background-color:transparent !important; 236 | padding:0; 237 | } 238 | 239 | img { 240 | border-radius: 2px; 241 | max-width: 100%; 242 | } 243 | } 244 | 245 | 246 | blockquote { 247 | border-left: 2px dotted #888; 248 | padding-left: 5px; 249 | background: #d0f0ff; 250 | } 251 | 252 | .wmd-panel 253 | { 254 | min-width: 500px; 255 | } 256 | 257 | .wmd-button-bar 258 | { 259 | width: 100%; 260 | background-color: Silver; 261 | } 262 | 263 | .wmd-input 264 | { 265 | height: 300px; 266 | width: 100%; 267 | background-color: Gainsboro; 268 | border: 1px solid DarkGray; 269 | } 270 | 271 | .wmd-preview 272 | { 273 | //background-color: #c0e0ff; 274 | } 275 | 276 | .wmd-button-row 277 | { 278 | position: relative; 279 | margin-left: 5px; 280 | margin-right: 5px; 281 | margin-bottom: 5px; 282 | margin-top: 10px; 283 | padding: 0px; 284 | height: 20px; 285 | } 286 | 287 | .wmd-spacer 288 | { 289 | width: 1px; 290 | height: 20px; 291 | margin-left: 14px; 292 | 293 | position: absolute; 294 | background-color: Silver; 295 | display: inline-block; 296 | list-style: none; 297 | } 298 | 299 | .wmd-button { 300 | width: 20px; 301 | height: 20px; 302 | padding-left: 2px; 303 | padding-right: 3px; 304 | position: absolute; 305 | display: inline-block; 306 | list-style: none; 307 | cursor: pointer; 308 | } 309 | 310 | .wmd-button > span { 311 | background-image: url(../img/wmd-buttons.png); 312 | background-repeat: no-repeat; 313 | background-position: 0px 0px; 314 | width: 20px; 315 | height: 20px; 316 | display: inline-block; 317 | } 318 | 319 | .wmd-spacer1 320 | { 321 | left: 50px; 322 | } 323 | .wmd-spacer2 324 | { 325 | left: 175px; 326 | } 327 | .wmd-spacer3 328 | { 329 | left: 300px; 330 | } 331 | 332 | 333 | 334 | 335 | .wmd-prompt-background 336 | { 337 | background-color: Black; 338 | } 339 | 340 | .wmd-prompt-dialog 341 | { 342 | border: 1px solid #999999; 343 | background-color: #F5F5F5; 344 | } 345 | 346 | .wmd-prompt-dialog > div { 347 | font-size: 0.8em; 348 | font-family: arial, helvetica, sans-serif; 349 | } 350 | 351 | 352 | .wmd-prompt-dialog > form > input[type="text"] { 353 | border: 1px solid #999999; 354 | color: black; 355 | } 356 | 357 | .wmd-prompt-dialog > form > input[type="button"]{ 358 | border: 1px solid #888888; 359 | font-family: trebuchet MS, helvetica, sans-serif; 360 | font-size: 0.8em; 361 | font-weight: bold; 362 | } 363 | -------------------------------------------------------------------------------- /views/ui/components/Theme.php: -------------------------------------------------------------------------------- 1 | view->theme->variable('primary'); 32 | * $isFluid = (boolean) Yii::$app->view->theme->variable('isFluid'); 33 | * ``` 34 | * 35 | * See [[ThemeVariables]] for more details. 36 | * 37 | * @since 1.3 38 | * @inheritdoc 39 | */ 40 | class Theme extends BaseTheme 41 | { 42 | /** 43 | * @var string the name of the theme 44 | */ 45 | public $name; 46 | 47 | /** 48 | * @inheritdoc 49 | */ 50 | private $_baseUrl = null; 51 | 52 | /** 53 | * @var boolean indicates that resources should be published via assetManager 54 | */ 55 | public $publishResources = false; 56 | 57 | /** 58 | * @var ThemeVariables 59 | */ 60 | public $variables = null; 61 | 62 | /** 63 | * @var ThemeViews 64 | */ 65 | public $views = null; 66 | 67 | /** 68 | * @var Theme[] the parent themes 69 | */ 70 | protected $parents; 71 | 72 | 73 | /** 74 | * @inheritdoc 75 | */ 76 | public function init() 77 | { 78 | if ($this->getBasePath() == '') { 79 | $this->setBasePath('@webroot/themes/' . $this->name); 80 | } 81 | 82 | $this->variables = new ThemeVariables(['theme' => $this]); 83 | $this->views = new ThemeViews(['theme' => $this]); 84 | 85 | parent::init(); 86 | } 87 | 88 | /** 89 | * @inheritdoc 90 | */ 91 | public function getBaseUrl() 92 | { 93 | if ($this->_baseUrl !== null) { 94 | return $this->_baseUrl; 95 | } 96 | 97 | $this->_baseUrl = ($this->publishResources) ? $this->publishResources() : rtrim(Yii::getAlias('@web/themes/' . $this->name), '/'); 98 | return $this->_baseUrl; 99 | } 100 | 101 | /** 102 | * Registers theme css and resources to the view 103 | * @param bool $includeParents also register parent themes 104 | */ 105 | public function register($includeParents = true) 106 | { 107 | if ($includeParents) { 108 | foreach (array_reverse($this->getParents()) as $parent) { 109 | /** @var Theme $parent */ 110 | $parent->register(false); 111 | } 112 | } 113 | 114 | if (file_exists($this->getBasePath() . '/css/theme.css')) { 115 | $mtime = filemtime($this->getBasePath() . '/css/theme.css'); 116 | Yii::$app->view->registerCssFile($this->getBaseUrl() . '/css/theme.css?v=' . $mtime, ['depends' => AppAsset::class]); 117 | } 118 | 119 | } 120 | 121 | 122 | /** 123 | * Activate this theme 124 | */ 125 | public function activate() 126 | { 127 | $this->publishResources(true); 128 | $this->variables->flushCache(); 129 | Yii::$app->settings->set('theme', $this->getBasePath()); 130 | Yii::$app->settings->delete('themeParents'); 131 | } 132 | 133 | /** 134 | * Checks whether the Theme is currently active. 135 | * 136 | * @return boolean 137 | */ 138 | public function isActive() 139 | { 140 | return ($this->name === Yii::$app->view->theme->name); 141 | } 142 | 143 | /** 144 | * @inheritdoc 145 | */ 146 | public function applyTo($path) 147 | { 148 | $this->initPathMap(); 149 | 150 | $translated = $this->views->translate($path); 151 | if ($translated !== null) { 152 | return $translated; 153 | } 154 | 155 | // Check if a parent theme may translate this view 156 | foreach ($this->getParents() as $theme) { 157 | $translated = $theme->views->translate($path); 158 | if ($translated !== null) { 159 | return $translated; 160 | } 161 | } 162 | 163 | return parent::applyTo($path); 164 | } 165 | 166 | /** 167 | * Initialize the default view path map including all parent themes 168 | */ 169 | protected function initPathMap() 170 | { 171 | if ($this->pathMap === null) { 172 | $this->pathMap = ['@humhub/views' => [$this->getBasePath() . '/views']]; 173 | 174 | foreach ($this->getParents() as $theme) { 175 | $this->pathMap['@humhub/views'][] = $theme->getBasePath() . '/views'; 176 | } 177 | } 178 | } 179 | 180 | /** 181 | * Publishs theme assets (e.g. images or css) 182 | * 183 | * @param boolean|null $force 184 | * @return string url of published resources 185 | */ 186 | public function publishResources($force = null) 187 | { 188 | if ($force === null) { 189 | $force = (YII_DEBUG); 190 | } 191 | 192 | $published = Yii::$app->assetManager->publish( 193 | $this->getBasePath(), ['forceCopy' => $force, 'except' => ['views/']] 194 | ); 195 | 196 | return $published[1]; 197 | } 198 | 199 | /** 200 | * Returns the value of a given theme variable 201 | * 202 | * @since 1.2 203 | * @param string $key the variable name 204 | * @return string the variable value 205 | */ 206 | public function variable($key, $default = null) 207 | { 208 | return $this->variables->get($key, $default); 209 | } 210 | 211 | /** 212 | * Returns the base/parent themes of this theme. 213 | * The parent is specified in the LESS Variable file as variable "baseTheme". 214 | * 215 | * @see ThemeVariables 216 | * @return Theme[] the theme parents 217 | */ 218 | public function getParents() 219 | { 220 | if ($this->parents !== null) { 221 | return $this->parents; 222 | } 223 | 224 | if ($this->isActive() && BaseSettingsManager::isDatabaseInstalled()) { 225 | $this->parents = static::getActiveParents(); 226 | } 227 | 228 | if ($this->parents === null) { 229 | $this->parents = ThemeHelper::getThemeTree($this, false); 230 | 231 | if ($this->isActive()) { 232 | // Store parent path of currently active theme as settings 233 | // This avoids theme paths lookups 234 | $parentPaths = []; 235 | foreach ($this->parents as $theme) { 236 | $parentPaths[] = $theme->getBasePath(); 237 | } 238 | 239 | if (BaseSettingsManager::isDatabaseInstalled()) { 240 | Yii::$app->settings->setSerialized('themeParents', $parentPaths); 241 | } 242 | } 243 | 244 | } 245 | 246 | return $this->parents; 247 | } 248 | 249 | /** 250 | * Returns the parent themes of the currently active theme. 251 | * These parents are stored in the setting variable "themeParents" for faster lookup. 252 | * 253 | * @return Theme[]|null the themes or null 254 | */ 255 | protected static function getActiveParents() 256 | { 257 | $parentPaths = Yii::$app->settings->getSerialized('themeParents'); 258 | 259 | if (!is_array($parentPaths)) { 260 | return null; 261 | } 262 | 263 | $parents = []; 264 | foreach ($parentPaths as $parentPath) { 265 | $theme = ThemeHelper::getThemeByPath($parentPath); 266 | if ($theme === null) { 267 | Yii::$app->settings->delete('themeParents'); 268 | Yii::error('Could not load stored theme parent! - Deleted parent path.', 'ui'); 269 | return null; 270 | } 271 | $parents[] = $theme; 272 | } 273 | return $parents; 274 | } 275 | 276 | } 277 | -------------------------------------------------------------------------------- /less/stream.less: -------------------------------------------------------------------------------- 1 | // Content create form 2 | .contentForm_options { 3 | margin-top: 10px; 4 | min-height: 29px; 5 | 6 | .btn_container { 7 | position: relative; 8 | .nav-pills { 9 | position: relative; 10 | display: inline-block; 11 | vertical-align: middle; 12 | right: 0; 13 | top: 0; 14 | } 15 | } 16 | } 17 | 18 | #content-topic-bar { 19 | margin-top: 5px; 20 | text-align:right; 21 | .label { 22 | margin-left:4px; 23 | } 24 | } 25 | 26 | #contentFormError { 27 | color: @danger; 28 | padding-left: 0; 29 | list-style: none; 30 | } 31 | 32 | // Empty stream info 33 | .placeholder-empty-stream { 34 | background-image: url("../img/placeholder-postform-arrow.png"); 35 | background-repeat: no-repeat; 36 | padding: 37px 0 0 70px; 37 | margin-left: 90px; 38 | } 39 | 40 | // Wall-Entries 41 | .wall-entry { 42 | position: relative; 43 | 44 | .wall-entry-header { 45 | padding-bottom: 10px; 46 | margin-bottom: 10px; 47 | border-bottom: 1px solid @background-color-page; 48 | 49 | .wall-entry-header-image { 50 | display: table-cell; 51 | width: 40px; 52 | padding-right: 10px; 53 | } 54 | .media-subheading { 55 | .wall-entry-icons { 56 | display: inline-block; 57 | } 58 | } 59 | } 60 | .content { 61 | p, a { 62 | overflow:hidden; 63 | text-overflow:ellipsis; 64 | max-width: 100%; 65 | } 66 | } 67 | .media { 68 | overflow: visible; 69 | 70 | .content { 71 | img.animated { 72 | width: 100% !important; 73 | height: 100% !important; 74 | } 75 | } 76 | } 77 | .well { 78 | border-bottom-right-radius: 4px; 79 | border-bottom-left-radius: 4px; 80 | margin-bottom: -20px; 81 | margin-right: -20px; 82 | margin-left: -20px; 83 | 84 | .comment { 85 | .show-all-link { 86 | background-color: @background-color-subpage; 87 | position: relative; 88 | text-align: center; 89 | border-radius: 4px; 90 | padding: 15px 20px; 91 | margin-bottom: 20px; 92 | margin-top: -20px; 93 | font-size: 12px; 94 | cursor: pointer; 95 | z-index: 5; 96 | 97 | &:hover { 98 | background-color: darken(@background-color-subpage, 5%); 99 | } 100 | } 101 | } 102 | } 103 | 104 | .media-heading { 105 | font-size:14px; 106 | padding-top:1px; 107 | margin-bottom:3px; 108 | .labels { 109 | padding-top:20px; 110 | } 111 | 112 | .viaLink { 113 | font-size:13px; 114 | i { 115 | color: @text-color-soft; 116 | padding-left:4px; 117 | padding-right:4px; 118 | } 119 | } 120 | 121 | } 122 | 123 | .media-subheading { 124 | color: @text-color-soft; 125 | font-size:12px; 126 | 127 | .time { 128 | font-size:12px; 129 | white-space: nowrap; 130 | } 131 | } 132 | } 133 | 134 | .wall-entry-controls { 135 | background-color: @background-color-subpage; 136 | margin-bottom: -20px; 137 | margin-right: -20px; 138 | margin-left: -20px; 139 | margin-top: 20px; 140 | padding-bottom: 20px; 141 | padding-right: 20px; 142 | padding-left: 20px; 143 | padding-top: 20px; 144 | border-bottom-right-radius: 4px; 145 | border-bottom-left-radius: 4px; 146 | width: ~'calc(100% + 40px)'; 147 | display: table; 148 | color: @background-color-subpage; 149 | cursor: default; 150 | 151 | a { 152 | font-size: 12px; 153 | color: @text-color-secondary; 154 | } 155 | 156 | .likeCount { 157 | color: @text-color-secondary; 158 | } 159 | } 160 | 161 | #wall-stream-filter-nav { 162 | font-size: 12px; 163 | margin-bottom: 0; 164 | 165 | .wall-stream-filter-root { 166 | margin:0; 167 | border:0 !important; 168 | } 169 | 170 | .filter-panel { 171 | padding: 0 10px; 172 | } 173 | 174 | .wall-stream-filter-head { 175 | display: table; 176 | width: 100%; 177 | 178 | .wall-stream-filter-bar { 179 | display: table-cell; 180 | white-space: normal; 181 | vertical-align: middle; 182 | float: none; 183 | } 184 | .wall-stream-filter-toggle { 185 | display: table-cell; 186 | vertical-align: middle; 187 | } 188 | } 189 | 190 | .wall-stream-filter-body { 191 | overflow:hidden; 192 | background-color: @background-color-secondary; 193 | border-top: 0; 194 | border-radius: 4px; 195 | margin-bottom: 16px; 196 | } 197 | 198 | hr { 199 | margin:5px 0 0 0; 200 | } 201 | 202 | .topic-remove-label { 203 | float:left; 204 | } 205 | 206 | .topic-remove-label, .content-type-remove-label { 207 | margin-right:6px; 208 | } 209 | 210 | .select2 { 211 | width:260px !important; 212 | margin-bottom:5px; 213 | margin-top:2px; 214 | 215 | .select2-search__field { 216 | height:25px !important; 217 | } 218 | 219 | .select2-selection__choice { 220 | height:23px !important; 221 | 222 | span, i { 223 | line-height: 19px !important; 224 | } 225 | 226 | .img-rounded { 227 | width: 18px !important; 228 | height: 18px !important; 229 | } 230 | } 231 | } 232 | 233 | .wall-stream-filter-bar { 234 | display:inline; 235 | float:right; 236 | white-space: normal; 237 | 238 | .label { 239 | height:18px; 240 | padding-top:4px; 241 | } 242 | .btn, .label { 243 | box-shadow: 0 0 2px @text-color-secondary; 244 | -webkit-box-shadow: 0 0 2px @text-color-secondary; 245 | -moz-box-shadow: 0 0 2px @text-color-secondary; 246 | } 247 | } 248 | } 249 | 250 | @media (max-width: 767px) { 251 | #wall-stream-filter-nav { 252 | .wall-stream-filter-root { 253 | white-space: nowrap; 254 | } 255 | .wall-stream-filter-body { 256 | overflow: auto; 257 | } 258 | } 259 | } 260 | 261 | .filter-root { 262 | margin:15px; 263 | 264 | .row { 265 | display:table !important; 266 | } 267 | 268 | .filter-panel { 269 | padding: 0 5px; 270 | display:table-cell !important; 271 | float:none; 272 | 273 | .filter-block { 274 | strong { 275 | margin-bottom: 5px; 276 | } 277 | 278 | ul.filter-list { 279 | list-style: none; 280 | padding: 0; 281 | margin: 0 0 5px; 282 | 283 | li { 284 | font-size: 12px; 285 | padding: 2px; 286 | a { 287 | color: @text-color-main; 288 | } 289 | } 290 | } 291 | } 292 | 293 | div.filter-block:last-of-type { 294 | ul.filter-list { 295 | margin: 0px; 296 | } 297 | } 298 | } 299 | 300 | .filter-panel + .filter-panel { 301 | border-left: 2px solid @background-color-page; 302 | } 303 | } 304 | 305 | 306 | 307 | .stream-entry-loader { 308 | float:right; 309 | margin-top:5px; 310 | } 311 | 312 | .load-suppressed { 313 | margin-top:-17px; 314 | margin-bottom:15px; 315 | text-align:center; 316 | 317 | a { 318 | display:inline-block; 319 | background-color: white; 320 | padding:5px; 321 | border-radius: 0 0 4px 4px; 322 | border: 1px solid #ddd; 323 | font-size: 11px 324 | } 325 | } 326 | 327 | .select2-container--humhub { 328 | .select2-selection { 329 | border-color: @background-color-subpage; 330 | } 331 | .select2-selection--multiple { 332 | .select2-selection__choice { 333 | padding: 6px 5px 6px 2px; 334 | 335 | .picker-text { 336 | vertical-align: top; 337 | } 338 | } 339 | .select2-selection__choice img { 340 | border-radius: 2px; 341 | margin-top: -4px; 342 | } 343 | .space-acronym { 344 | margin-top: -4px; 345 | } 346 | .no-image { 347 | line-height: 19px !important; 348 | } 349 | } 350 | } 351 | -------------------------------------------------------------------------------- /less/topbar.less: -------------------------------------------------------------------------------- 1 | // 2 | // Topbar 3 | // -------------------------------------------------- 4 | .topbar { 5 | transition: top 0.2s ease-in-out; 6 | position: fixed; 7 | display: block; 8 | height: 50px; 9 | width: 100%; 10 | top: 0; 11 | &.nav-up { 12 | top: -50px; 13 | } 14 | ul.nav { 15 | float: left; 16 | } 17 | ul.nav > li { 18 | float: left; 19 | } 20 | ul.nav > li > a { 21 | padding-top: 15px; 22 | padding-bottom: 15px; 23 | line-height: 20px; 24 | } 25 | .dropdown-footer { 26 | margin: 10px; 27 | } 28 | .dropdown-header { 29 | font-size: 16px; 30 | padding: 3px 10px; 31 | margin-bottom: 10px; 32 | font-weight: 600; 33 | color: @text-color-soft; 34 | 35 | .dropdown-header-link { 36 | position: absolute; 37 | top: 2px; 38 | right: 10px; 39 | a { 40 | color: @info !important; 41 | font-size: 12px; 42 | font-weight: normal; 43 | } 44 | } 45 | } 46 | 47 | .dropdown-header:hover { 48 | color: @text-color-soft; 49 | } 50 | } 51 | 52 | .topbar-bth { 53 | & > a { 54 | background-color: darken(@primary, 5%); 55 | padding: 5px 10px; 56 | margin: 10px 2px; 57 | display: inline-block; 58 | border-radius: 2px; 59 | 60 | &:hover { 61 | background-color: darken(@primary, 10%); 62 | } 63 | } 64 | } 65 | .topbar-bth-div { 66 | background-color: darken(@primary, 5%); 67 | padding: 5px 10px; 68 | margin: 10px 2px; 69 | display: inline-block; 70 | border-radius: 2px; 71 | 72 | &:hover { 73 | background-color: darken(@primary, 10%); 74 | } 75 | } 76 | 77 | #topbar-first { 78 | background-color: @primary; 79 | z-index: 1030; 80 | color: white; 81 | .nav > li > a:hover, 82 | .nav > .open > a { 83 | background-color: darken(@primary, 10%); 84 | } 85 | .nav > .account { 86 | height: 50px; 87 | margin-left: 20px; 88 | &.open { 89 | .dropdown-toggle { 90 | background-color: darken(@primary, 10%); 91 | 92 | &:hover { 93 | background-color: darken(@primary, 10%); 94 | } 95 | } 96 | } 97 | img { 98 | margin-left: 10px; 99 | } 100 | .dropdown-toggle { 101 | background-color: darken(@primary, 5%); 102 | padding: 10px 15px 8px 15px; 103 | line-height: 1.1em; 104 | text-align: left; 105 | span { 106 | font-size: 12px; 107 | } 108 | &:hover { 109 | background-color: darken(@primary, 10%); 110 | } 111 | } 112 | } 113 | .topbar-brand { 114 | position: relative; 115 | z-index: 2; 116 | } 117 | .topbar-actions { 118 | position: relative; 119 | z-index: 3; 120 | } 121 | .navbar-brand { 122 | padding: 15px 20px; 123 | } 124 | .notifications { 125 | margin-right: 20px; 126 | margin-left: 20px; 127 | text-align: center; 128 | z-index: 1; 129 | 130 | @media @md { 131 | position: absolute; 132 | right: 0; 133 | left: 0; 134 | } 135 | 136 | &-frame { 137 | display: inline-flex; 138 | } 139 | .btn-group { 140 | position: relative; 141 | text-align: left; 142 | } 143 | .btn-group > a { 144 | padding: 5px 10px; 145 | margin: 10px 2px; 146 | display: inline-block; 147 | border-radius: 2px; 148 | text-decoration: none; 149 | text-align: left; 150 | } 151 | .btn-group > .label { 152 | position: absolute; 153 | top: 4px; 154 | right: -2px; 155 | border-radius: 25px; 156 | padding: 3px 6px 4px; 157 | } 158 | .arrow:after { 159 | position: absolute; 160 | display: block; 161 | width: 0; 162 | height: 0; 163 | border-color: transparent; 164 | border-style: solid; 165 | border-width: 10px; 166 | content: " "; 167 | top: 1px; 168 | margin-left: -10px; 169 | border-top-width: 0; 170 | border-bottom-color: #fff; 171 | z-index: 1035; 172 | } 173 | .arrow { 174 | position: absolute; 175 | display: block; 176 | width: 0; 177 | height: 0; 178 | border-color: transparent; 179 | border-style: solid; 180 | z-index: 1001; 181 | border-width: 11px; 182 | left: 50%; 183 | margin-left: -18px; 184 | border-top-width: 0; 185 | border-bottom-color: rgba(0, 0, 0, 0.15); 186 | top: -19px; 187 | z-index: 1035; 188 | } 189 | .dropdown-menu { 190 | margin-left: -148px; 191 | width: 350px; 192 | border: 0; 193 | ul.media-list { 194 | max-height: 400px; 195 | overflow: auto; 196 | } 197 | li { 198 | position: relative; 199 | i.approval { 200 | position: absolute; 201 | left: 2px; 202 | top: 36px; 203 | font-size: 14px; 204 | } 205 | i.accepted { 206 | color: #5cb85c; 207 | } 208 | i.declined { 209 | color: #d9534f; 210 | } 211 | a { 212 | color: @text-color-main; 213 | } 214 | &:hover { 215 | background-color: @background-color-subpage; 216 | } 217 | } 218 | li .media { 219 | position: relative; 220 | } 221 | li .media .img-space { 222 | position: absolute; 223 | top: 14px; 224 | left: 14px; 225 | } 226 | } 227 | } 228 | 229 | .dropdown-footer { 230 | margin: 10px 10px 5px; 231 | } 232 | a { 233 | color: white; 234 | } 235 | .caret { 236 | border-top-color: @text-color-soft; 237 | margin-right: 5px; 238 | margin-left: 5px; 239 | } 240 | .btn-group > a { 241 | background-color: darken(@primary, 5%); 242 | 243 | &:hover { 244 | background-color: darken(@primary, 10%); 245 | } 246 | } 247 | .btn-enter { 248 | background-color: darken(@primary, 5%); 249 | margin: 6px 0; 250 | } 251 | .btn-enter:hover { 252 | background-color: darken(@primary, 8%); 253 | } 254 | .media-list { 255 | a { 256 | color: @text-color-highlight; 257 | padding: 0; 258 | } 259 | li { 260 | color: @text-color-highlight; 261 | i.accepted { 262 | color: @info !important; 263 | } 264 | i.declined { 265 | color: @danger !important; 266 | } 267 | } 268 | li.placeholder { 269 | border-bottom: none; 270 | } 271 | .media .media-body { 272 | .label { 273 | padding: 0.1em 0.5em; 274 | } 275 | } 276 | } 277 | .account .user-title { 278 | text-align: right; 279 | span { 280 | color: @background3; 281 | } 282 | } 283 | .dropdown.account > a, 284 | .dropdown.account.open > a, 285 | .dropdown.account > a:hover, 286 | .dropdown.account.open > a:hover { 287 | background-color: @primary; 288 | } 289 | } 290 | 291 | #topbar-second { 292 | top: 50px; 293 | background-color: #fff; 294 | z-index: 1029; 295 | background-image: none; 296 | -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); 297 | -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); 298 | box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); 299 | border-bottom: 1px solid #d4d4d4; 300 | .dropdown-menu { 301 | padding-top: 0; 302 | padding-bottom: 0; 303 | 304 | .divider { 305 | margin: 0; 306 | } 307 | } 308 | 309 | // Space dropdown menu 310 | #space-menu-dropdown, 311 | #search-menu-dropdown { 312 | width: 400px; 313 | .media-list { 314 | max-height: 400px; 315 | overflow: auto; 316 | } 317 | @media screen and (max-width: 768px) { 318 | .media-list { 319 | max-height: 200px; 320 | } 321 | } 322 | form { 323 | margin: 10px; 324 | } 325 | 326 | .search-reset { 327 | position: absolute; 328 | color: #BFBFBF; 329 | margin: 7px; 330 | top:0px; 331 | right: 40px; 332 | z-index:10; 333 | display: none; 334 | cursor: pointer; 335 | } 336 | } 337 | 338 | .nav > li > a { 339 | padding: 7px 13px 0; 340 | text-decoration: none; 341 | text-shadow: none; 342 | font-weight: 600; 343 | font-size: 10px; 344 | min-height: 50px; 345 | text-transform: uppercase; 346 | text-align: center; 347 | &:hover, 348 | &:active, 349 | &:focus { 350 | border-bottom: 3px solid @info; 351 | background-color: @background-color-secondary; 352 | color: @text-color-highlight; 353 | text-decoration: none; 354 | } 355 | i { 356 | font-size: 14px; 357 | } 358 | .caret { 359 | border-top-color: @text-color-secondary; 360 | margin-left: 5px; 361 | } 362 | } 363 | 364 | .nav > li.active > a { 365 | min-height: 47px; 366 | } 367 | 368 | .nav > li > ul > li > a { 369 | border-left: 0; 370 | background-color: #fff; 371 | color: @text-color-highlight; 372 | } 373 | 374 | .nav > li > ul > li > a:hover, .nav > li > ul > li > a.active { 375 | border-left: 0; 376 | background-color: @background-color-secondary; 377 | color: @text-color-highlight; 378 | } 379 | 380 | .nav > li > a#space-menu { 381 | padding-right: 13px; 382 | border-right: 1px solid #ededed; 383 | } 384 | .nav > li > a#search-menu { 385 | padding-top: 15px; 386 | } 387 | .nav > li > a:hover, 388 | .nav .open > a, 389 | .nav > li.active { 390 | border-bottom: 3px solid @info; 391 | background-color: @background-color-secondary; 392 | color: @text-color-highlight; 393 | } 394 | .nav > li.active > a:hover { 395 | border-bottom: none; 396 | } 397 | #space-menu-dropdown li > ul > li > a > .media .media-body p { 398 | color: @text-color-soft; 399 | font-size: 11px; 400 | margin: 0; 401 | font-weight: 400; 402 | } 403 | } 404 | 405 | #space-menu { 406 | .caret { 407 | display: none !important; 408 | } 409 | } 410 | 411 | @media (max-width: 767px) { 412 | .topbar { 413 | padding-left: 0; 414 | padding-right: 0; 415 | } 416 | } 417 | -------------------------------------------------------------------------------- /less/mobile.less: -------------------------------------------------------------------------------- 1 | /*********************************** 2 | ** Humhub Mobile Design 3 | ** Version 1.0 4 | ************************************/ 5 | 6 | // 7 | // Mobile color variables 8 | // -------------------------------------------------- 9 | @mobile-main-color: @primary; 10 | @mobile-color-white: #fff; 11 | @mobile-color-black: #000; 12 | @mobile-color-pale: darken( @mobile-color-white, 7% ); 13 | @mobile-color-dark: lighten( @mobile-color-black, 18% ); 14 | @mobile-color-btn-primary: @mobile-main-color; 15 | @mobile-color-btn-default: #51d56d; 16 | @mobile-background-white: #fff; 17 | @mobile-background-sidebar: #2d3340; 18 | 19 | // 20 | // Mobile mixins 21 | // -------------------------------------------------- 22 | 23 | // Mixins: Display none 24 | .display-none() { 25 | display: none; 26 | } 27 | 28 | // Mixins: Border none mixin 29 | .border-none() { 30 | border: none; 31 | } 32 | 33 | // Mixins: Material shadow box 34 | .panel-shadow() { 35 | box-shadow: 0 -1px 0 #e0e0e0,0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24); 36 | } 37 | 38 | // Mixins: Button Primary 39 | .btn-primary { 40 | background: @mobile-color-btn-primary; 41 | &:hover { 42 | background: darken( @mobile-color-btn-default, 20% ); 43 | } 44 | &:focus { 45 | background: darken( @mobile-color-btn-default, 20% ); 46 | } 47 | } 48 | 49 | // Mixins: Button default 50 | .btn-default { 51 | background: @mobile-color-btn-default; 52 | color: @mobile-color-white !important; 53 | &:hover { 54 | background: darken( @mobile-color-btn-default, 20% ); 55 | } 56 | &:focus { 57 | background: darken( @mobile-color-btn-default, 20% ); 58 | } 59 | } 60 | 61 | // 62 | // Mobile Community Topbar 63 | // -------------------------------------------------- 64 | 65 | // Topbar: Community topbar DEFAULT styling - apply only to the community theme 66 | .topbar-community() { 67 | background: @mobile-main-color; 68 | .notifications .btn-group > a { 69 | padding: 6px 12px 14px 12px; 70 | } 71 | .dropdown.account > a { 72 | background-color: @mobile-main-color; 73 | margin-top: 10px; 74 | } 75 | .nav >.account a { 76 | color: @mobile-color-white; 77 | } 78 | .account .dropdown-menu { 79 | color: @mobile-color-white; 80 | } 81 | .account .dropdown-menu { 82 | background-color: @mobile-main-color; 83 | } 84 | } 85 | 86 | // Topbar: Topbar material shadow box 87 | .topbar-shadow() { 88 | box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); 89 | } 90 | 91 | // Layout: Community top layout fixes 92 | .community-space-layout() { 93 | margin-top: -20px !important 94 | } 95 | 96 | // Mixins: Like and comment button 97 | .like-comment-button() { 98 | padding: 10px 41px; 99 | margin-left: -12px; 100 | } 101 | 102 | // Mixins: Community Navbar horizontal scrolling 103 | .scroll-navbar() { 104 | width: 100%; 105 | display: inline !important; 106 | white-space: nowrap; 107 | float: left; 108 | position: relative; 109 | overflow-x: scroll !important; 110 | } 111 | 112 | // 113 | // Mobile Theme style.less 114 | // -------------------------------------------------- 115 | 116 | // The mobile design will load when screen is less then 768px 117 | @responsive: ~"only screen and (max-width : 768px)"; 118 | 119 | @media @responsive { 120 | 121 | // 122 | // Topbar: styles 123 | // -------------------------------------------------- 124 | 125 | p, .help-block { 126 | overflow: auto; 127 | white-space: normal; 128 | } 129 | 130 | // Login Page: The login page container 131 | .login-container { 132 | background-color: @mobile-background-white; 133 | background-image: none; 134 | #layout-content .panel-default { 135 | box-shadow: none; 136 | } 137 | h1, h2 { 138 | color: @mobile-color-black !important; 139 | } 140 | .panel > .panel-heading, .panel > .panel-body > p { 141 | text-align: center; 142 | } 143 | } 144 | 145 | // Topbar: Topbar styling 146 | #topbar-first { 147 | .topbar-community; // Topbar mixins is used 148 | .topbar-shadow; // Shadow mixins is used 149 | .border-none; 150 | .menu-seperator, #user-account-image { 151 | display: none; 152 | } 153 | 154 | // Topbar Icons: Removing background color from topbar icons 155 | .btn-enter, .btn-group > a { 156 | background-color: transparent; 157 | } 158 | .panel-danger { 159 | border: none; 160 | } 161 | 162 | // Search: Removing border radius from the search form 163 | .form-control.form-search { 164 | border-radius: 0px; 165 | } 166 | 167 | // 168 | .navigation-bars > li > a { 169 | padding: 20px 20px 14px 20px !important; 170 | } 171 | 172 | // Topbar: Removing the topbar icons background color 173 | .nav > li > a:hover, 174 | .nav .open > a, 175 | .nav > li.active, 176 | .dropdown.account.open>a, 177 | .dropdown.account>a:hover, 178 | .dropdown.account.open>a:hover, 179 | .btn-group>a:hover, 180 | .btn-group.open>a, 181 | .btn-group.open>a:hover { 182 | background-color: transparent; 183 | } 184 | 185 | // Topbar: Added a 10px right margin to match the drawer left margin 186 | .topbar-actions { 187 | margin-right: 10px; 188 | } 189 | 190 | // Topbar: Ajusting the notifications button to full width 191 | #dropdown-notifications .btn-default { 192 | width: 100%; 193 | } 194 | } 195 | 196 | // 197 | // Mobile main content 198 | // -------------------------------------------------- 199 | 200 | // Layout Container: Fixed the right padding 201 | #layout-content-container { 202 | padding-right: 0px; 203 | } 204 | 205 | // Layout Contents: Adjusting the contents to fit perfectly on mobile devices 206 | #layout-content { 207 | .list-group { 208 | overflow: auto; 209 | display: inline-block; 210 | margin-top: 5px; 211 | } 212 | 213 | // Layout: Fixed padding issues in mobile devices 214 | .container-fluid, .container { 215 | padding-left: 7px; 216 | padding-right: 22px; 217 | } 218 | 219 | // Layout Panel: Hidden the headings on mobile devices 220 | .col-md-2 > .panel-default > .panel-heading, 221 | .col-md-3 > .panel-default > .panel-heading { 222 | display: none; 223 | } 224 | 225 | .controls-header { 226 | padding-right: 6px; 227 | } 228 | 229 | // Layout: Adjust user profile and space image size 230 | .profile-user-photo-container img, .image-upload-container .space-acronym { 231 | width: 100px !important; 232 | height: 100px !important; 233 | margin-top: 35px; 234 | font-size: 35.6px !important; 235 | } 236 | 237 | // Layout: Adjusting the profile data 238 | .panel-profile .panel-profile-header .img-profile-data { 239 | padding-left: 130px; 240 | padding-top: 42px; 241 | h1 { 242 | font-size: 18px !important; 243 | } 244 | } 245 | 246 | // Layout Panel: Panel shadow and border radius added 247 | .panel { 248 | margin-bottom: 8px; 249 | .panel-shadow; 250 | border-radius: 2px; 251 | } 252 | 253 | // Layout Panel: Fixes text overflow 254 | .panel-default { 255 | white-space: nowrap; 256 | } 257 | 258 | // Layout Form: Fixed width for form dropdown 259 | .contentForm_options .open .dropdown-menu { 260 | width: 155px; 261 | li a { 262 | white-space: normal; 263 | } 264 | } 265 | 266 | // Layout Panel: Makes panel-default scrollable 267 | .col-md-3 .panel-default, .col-md-2 .panel-default { 268 | overflow-x: scroll; 269 | } 270 | 271 | .space-nav .space-module-entries { 272 | display: block; 273 | } 274 | 275 | // Layout Comment: Fixed like & comment format 276 | .likeLinkContainer, .wall-entry-controls > a { 277 | .like-comment-button; 278 | } 279 | 280 | .form-control { 281 | white-space: normal; 282 | &:focus { 283 | border-bottom: none; 284 | } 285 | } 286 | 287 | // Layout Form: Native like form input design 288 | .form-group { 289 | input, select { 290 | border-bottom: 1px solid @mobile-color-pale !important; 291 | border-radius: 0px; 292 | } 293 | &:focus { 294 | border-bottom: 2px solid @mobile-color-pale !important; 295 | } 296 | } 297 | 298 | // Layout Comments: Comments section top maring fix 299 | .comment-container { 300 | margin-top: 24px; 301 | } 302 | 303 | // Layout Comments: 304 | .comment-buttons { 305 | .fileinput-button { 306 | background: @mobile-main-color !important; 307 | padding: 8px 7px 5px 7px; 308 | margin-top: -2px; 309 | border-radius: 2px 0px 0px 2px; 310 | .fa { 311 | color: @mobile-color-white; 312 | } 313 | &:hover { 314 | background: darken( @mobile-main-color, 20% ); 315 | } 316 | } 317 | } 318 | 319 | // Layout Comments: Send button design 320 | .comment_create .btn-comment-submit, 321 | .content_edit .btn-comment-submit { 322 | margin-top: -2px; 323 | padding: 6px 15px 10px 18px; 324 | margin-right: -5px; 325 | border-radius: 0px 2px 2px 0px; 326 | } 327 | 328 | // Layout Space: Space navigation 329 | .space-nav { 330 | .navbar-nav { 331 | .scroll-navbar; 332 | li { 333 | margin-top: 10px; 334 | } 335 | } 336 | .space-details { 337 | .display-none !important; 338 | } 339 | > li { 340 | .display-none; 341 | } 342 | } 343 | 344 | } 345 | 346 | // layout space: Space container 347 | .space-layout-container { 348 | .community-space-layout; // space layout mixins is used 349 | } 350 | 351 | .media-list li:hover, .media-list li.selected { 352 | border-left: none; 353 | } 354 | 355 | // Layout cols: 356 | .col-md-1, .col-md-2, .col-md-3, .col-md-4, 357 | .col-md-5, .col-md-6, .col-md-7, .col-md-8, 358 | .col-md-9, .col-md-10, .col-md-11, .col-md-12 { 359 | padding-right: 0px; 360 | } 361 | } 362 | 363 | // Wallstream: 364 | #wallstream { 365 | 366 | .nav-pills.preferences { 367 | right: 18px; 368 | } 369 | } 370 | 371 | // Form: 372 | .form-control { 373 | .border-none; 374 | background: transparent; 375 | &:focus { 376 | border: none; 377 | background: @mobile-background-white; 378 | } 379 | } 380 | 381 | // Nav: 382 | .nav-pills { 383 | .preferences .dropdown.open .dropdown-toggle, 384 | .preferences .dropdown.open .dropdown-toggle:hover, 385 | .dropdown-menu, 386 | .nav-tabs .dropdown-menu, 387 | .account .dropdown-menu { 388 | background-color: @mobile-background-white; 389 | box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); 390 | } 391 | 392 | // Preferences: 393 | .preferences .dropdown.open .dropdown-toggle, 394 | .preferences .dropdown.open .dropdown-toggle:hover { 395 | background-color: @mobile-main-color; 396 | } 397 | 398 | // Dropdown: 399 | .dropdown-menu li, 400 | .nav-tabs .dropdown-menu li, 401 | .account .dropdown-menu li { 402 | .border-none; 403 | } 404 | 405 | // Divider: 406 | .dropdown-menu li.divider, 407 | .nav-tabs .dropdown-menu li.divider, 408 | .account .dropdown-menu li.divider { 409 | background-color: @mobile-color-pale; 410 | } 411 | 412 | // Dropdown: 413 | .dropdown-menu li a i, 414 | .nav-tabs .dropdown-menu li a i { 415 | display: none; 416 | } 417 | } 418 | 419 | // Nav: 420 | .nav-pills .dropdown-menu li a, 421 | .nav-tabs .dropdown-menu li a, 422 | .account .dropdown-menu li a { 423 | color: @mobile-color-black; 424 | } 425 | 426 | // Group Item: 427 | a.list-group-item:hover, 428 | a.list-group-item.active, 429 | a.list-group-item.active:hover, 430 | a.list-group-item.active:focus { 431 | background: @mobile-main-color !important; 432 | } 433 | 434 | #wrapper.toggled #sidebar-wrapper { 435 | width: 300px; 436 | } 437 | 438 | .form-search:focus { 439 | background: transparent; 440 | } 441 | 442 | // Nav: 443 | .nav-pills .dropdown-menu li:hover, 444 | .nav-tabs .dropdown-menu li:hover, 445 | .account .dropdown-menu li:hover, 446 | .nav-pills .dropdown-menu li.selected, 447 | .nav-tabs .dropdown-menu li.selected, 448 | .account .dropdown-menu li.selected { 449 | border-left: none; 450 | background-color: #f1f1f1 !important; 451 | } 452 | 453 | // Well: Darker well color 454 | .well { 455 | background: darken( @mobile-background-white, 2% ); 456 | } 457 | 458 | .space-nav .nav>li>a .fa { 459 | display: none; 460 | } 461 | 462 | // Scrollbar: Hide Horizontal Scrolling Bar 463 | ::-webkit-scrollbar { 464 | height: 0px; 465 | } 466 | 467 | } -------------------------------------------------------------------------------- /less/highcontrast.less: -------------------------------------------------------------------------------- 1 | .highcontrastColor() { 2 | @hc-base: #121212; 3 | @hc-text: #f4f4f4; 4 | @hc-panel: #181818; 5 | } 6 | .highcontrast { 7 | .highcontrastColor(); 8 | 9 | background-color: @hc-base; 10 | color: @hc-text; 11 | 12 | a { 13 | color: darken(@hc-text, 30%); 14 | 15 | &.active, &:active, &:focus, &:hover { 16 | color: darken(@hc-text, 20%); 17 | } 18 | } 19 | 20 | .styleswitch { 21 | .turnoff { 22 | display: none; 23 | } 24 | .turnon { 25 | display: inline-block; 26 | } 27 | } 28 | 29 | hr { 30 | border-color: lighten(@hc-base, 5%); 31 | } 32 | 33 | .panel { 34 | background-color: @hc-panel; 35 | 36 | .panel-heading { 37 | background-color: lighten(@hc-panel, 2%); 38 | color: darken(@hc-text, 30%); 39 | } 40 | 41 | .panel-body { 42 | p, h1, h2, h3, h4, h5, h6 { 43 | color: @hc-text; 44 | } 45 | &.message-new { 46 | background-color: @hc-panel; 47 | 48 | .ProseMirror-menubar { 49 | background-color: @hc-panel; 50 | 51 | &.focusMenu { 52 | .ProseMirror-menubar { 53 | background-color: @hc-panel; 54 | } 55 | } 56 | .ProseMirror-menuitem { 57 | .ProseMirror-menu-group { 58 | border-color: @hc-panel; 59 | } 60 | .seperator { 61 | border-color: @hc-panel; 62 | } 63 | } 64 | } 65 | } 66 | .media-list { 67 | li { 68 | border-left-color: @hc-panel; 69 | border-bottom-color: lighten(@hc-panel, 2%); 70 | 71 | &.selected, &:hover { 72 | background-color: lighten(@hc-panel, 2%); 73 | border-left-color: @info; 74 | } 75 | } 76 | } 77 | } 78 | &.panel-tour { 79 | .panel-heading { 80 | background-color: darken(@primary, 10%); 81 | color: @text-color-contrast; 82 | } 83 | } 84 | } 85 | 86 | .wall-entry { 87 | .well { 88 | background-color: lighten(@hc-panel, 2%); 89 | 90 | .comment { 91 | .media { 92 | border-color: lighten(@hc-panel, 3%); 93 | 94 | .content { 95 | .files { 96 | a { 97 | color: darken(@hc-text, 30%); 98 | } 99 | } 100 | } 101 | &-body { 102 | a { 103 | color: darken(@hc-text, 30%); 104 | } 105 | } 106 | } 107 | .show-all-link { 108 | background-color: lighten(@hc-panel, 2%); 109 | 110 | &:hover { 111 | background-color: @hc-panel; 112 | } 113 | } 114 | } 115 | .comment_create, .content_edit { 116 | background-color: @hc-panel; 117 | border-color: @hc-panel; 118 | 119 | .form-control { 120 | background-color: @hc-panel; 121 | } 122 | 123 | .comment-buttons { 124 | background-color: @hc-panel; 125 | } 126 | 127 | .ProsemirrorEditor { 128 | &.focusMenu { 129 | .ProseMirror-menubar { 130 | background-color: @hc-panel; 131 | } 132 | } 133 | .ProseMirror-menuitem { 134 | .ProseMirror-menu-group { 135 | border-color: @hc-panel; 136 | } 137 | .seperator { 138 | border-color: @hc-panel; 139 | } 140 | } 141 | } 142 | 143 | .files { 144 | background-color: lighten(@hc-panel, 2%); 145 | } 146 | } 147 | } 148 | &-controls { 149 | background-color: lighten(@hc-panel, 2%); 150 | color: lighten(@hc-panel, 2%); 151 | 152 | a { 153 | color: darken(@hc-text, 30%); 154 | 155 | &.active, &:active, &:focus, &:hover { 156 | color: darken(@hc-text, 20%); 157 | } 158 | } 159 | } 160 | } 161 | 162 | .btn { 163 | &-default, &.fileinput-button { 164 | background-color: lighten(@hc-panel, 2%); 165 | 166 | &:hover, &:focus, &:active, &.active { 167 | background-color: lighten(@hc-panel, 4%); 168 | } 169 | } 170 | } 171 | 172 | .label { 173 | &-default { 174 | background-color: darken(@hc-panel, 1%); 175 | } 176 | } 177 | 178 | .list-group-item { 179 | background-color: @hc-panel; 180 | 181 | &.active, &.active:focus, &.active:hover, &:hover { 182 | background-color: darken(@hc-panel, 1%); 183 | color: @hc-text; 184 | } 185 | } 186 | 187 | .form-control { 188 | background-color: lighten(@hc-panel, 2%); 189 | border-color: lighten(@hc-panel, 2%); 190 | } 191 | 192 | .modal-content { 193 | background-color: lighten(@hc-panel, 2%); 194 | 195 | .modal-header { 196 | h1, h2, h3, h4, h5 { 197 | color: @hc-text; 198 | } 199 | } 200 | } 201 | 202 | .dropdown-menu { 203 | background-color: @hc-panel; 204 | border-color: darken(@hc-panel, 3%) !important; 205 | } 206 | 207 | #topbar-first { 208 | .notifications { 209 | .arrow { 210 | &::after { 211 | border-color: transparent transparent @hc-panel; 212 | } 213 | } 214 | .dropdown-menu { 215 | li { 216 | &:hover { 217 | background-color: transparent; 218 | } 219 | &.new { 220 | &:hover { 221 | background-color: darken(@hc-panel, 2%); 222 | } 223 | } 224 | } 225 | } 226 | } 227 | } 228 | 229 | .input-group-addon { 230 | background-color: darken(@hc-panel, 1%); 231 | } 232 | 233 | .dropdown-menu{ 234 | .divider { 235 | background-color: lighten(@hc-panel, 2%); 236 | } 237 | .media-list { 238 | li { 239 | border-left-color: @hc-panel; 240 | border-bottom-color: lighten(@hc-panel, 2%); 241 | 242 | &.selected, &:hover { 243 | background-color: lighten(@hc-panel, 2%); 244 | border-left-color: @info; 245 | } 246 | &.new { 247 | background-color: darken(@hc-panel, 1%); 248 | border-left-color: darken(@hc-panel, 1%); 249 | 250 | &:hover { 251 | background-color: darken(@hc-panel, 2%); 252 | border-left-color: @info; 253 | } 254 | } 255 | } 256 | } 257 | } 258 | 259 | .panel-profile { 260 | .panel-profile-header { 261 | .profile-user-photo-container { 262 | background-color: @hc-panel; 263 | } 264 | } 265 | } 266 | 267 | .ProsemirrorEditor { 268 | .ProseMirror-menu-active { 269 | background-color: darken(@hc-panel, 3%); 270 | border-color: darken(@hc-panel, 3%) !important; 271 | } 272 | &.focusMenu { 273 | .ProseMirror-menubar { 274 | background-color: lighten(@hc-panel, 2%); 275 | } 276 | } 277 | .ProseMirror-menuitem { 278 | .seperator { 279 | border-color: darken(@hc-panel, 3%); 280 | } 281 | .ProseMirror-menu-group { 282 | border-color: darken(@hc-panel, 3%); 283 | } 284 | } 285 | } 286 | .ProseMirror-prompt { 287 | background-color: @hc-panel; 288 | border-color: @hc-panel; 289 | } 290 | 291 | .comment_create, .content_edit { 292 | background-color: lighten(@hc-panel, 2%); 293 | border-color: lighten(@hc-panel, 2%); 294 | 295 | .comment-buttons { 296 | background-color: lighten(@hc-panel, 2%); 297 | } 298 | 299 | .files { 300 | background-color: @hc-panel; 301 | } 302 | } 303 | 304 | .tab-menu { 305 | background-color: @hc-panel; 306 | .nav-tabs { 307 | border-bottom-color: darken(@hc-panel, 3%); 308 | 309 | li { 310 | &>a { 311 | border-bottom-color: transparent; 312 | background-color: lighten(@hc-panel, 2%); 313 | border-color: darken(@hc-panel, 3%); 314 | } 315 | &.active{ 316 | &>a { 317 | border-bottom-color: transparent; 318 | border-color: darken(@hc-panel, 3%); 319 | background-color: @hc-panel; 320 | color: @hc-text; 321 | } 322 | } 323 | &.hover, &:hover { 324 | &>a { 325 | border-bottom-color: transparent; 326 | background-color: @hc-panel; 327 | border-color: darken(@hc-panel, 3%); 328 | } 329 | } 330 | } 331 | } 332 | } 333 | .nav-tabs { 334 | border-bottom-color: darken(@hc-panel, 3%); 335 | } 336 | .nav > li > a:hover, 337 | .nav > li > a:focus { 338 | background-color: darken(@hc-panel, 1%); 339 | border-color: darken(@hc-panel, 3%); 340 | } 341 | .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus { 342 | border-color: darken(@hc-panel, 3%); 343 | border-bottom-color: transparent; 344 | background-color: @hc-panel; 345 | color: @hc-text; 346 | } 347 | .select2-hidden-accessible { 348 | background-color: lighten(@hc-panel, 2%); 349 | } 350 | .select2-dropdown { 351 | background-color: lighten(@hc-panel, 2%); 352 | border-color: lighten(@hc-panel, 2%); 353 | } 354 | .select2-container--humhub { 355 | background-color: lighten(@hc-panel, 2%); 356 | .select2-selection { 357 | background-color: lighten(@hc-panel, 2%); 358 | border-color: lighten(@hc-panel, 2%); 359 | } 360 | .select2-search--dropdown { 361 | .select2-search__field { 362 | background-color: @hc-panel; 363 | border-color: @hc-panel; 364 | } 365 | } 366 | .select2-results__option[aria-selected=true], 367 | .select2-results__option--highlighted[aria-selected] { 368 | background-color: @hc-panel; 369 | color: @hc-text; 370 | } 371 | } 372 | .table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td { 373 | border-color: lighten(@hc-panel, 2%); 374 | } 375 | .table-hover > tbody > tr:hover { 376 | background-color: lighten(@hc-panel, 2%); 377 | } 378 | .badge { 379 | background-color: lighten(@hc-panel, 2%); 380 | } 381 | .modal .dropdown-menu li.selected, .modal .dropdown-menu li:hover, .nav-tabs .dropdown-menu li.selected, .nav-tabs .dropdown-menu li:hover, .panel .dropdown-menu li.selected, .panel .dropdown-menu li:hover { 382 | background-color: lighten(@hc-panel, 2%); 383 | } 384 | } -------------------------------------------------------------------------------- /views/user/widgets/profileHeader.php: -------------------------------------------------------------------------------- 1 | registerJsFile('@web-static/resources/user/profileHeaderImageUpload.js'); 10 | $this->registerJs("var profileImageUploaderUserGuid='" . $user->guid . "';", \yii\web\View::POS_BEGIN); 11 | $this->registerJs("var profileImageUploaderCurrentUserGuid='" . Yii::$app->user->getIdentity()->guid . "';", \yii\web\View::POS_BEGIN); 12 | $this->registerJs("var profileImageUploaderUrl='" . Url::to(['/user/image/upload', 'userGuid' => $user->guid, 'type' => ImageController::TYPE_PROFILE_IMAGE]) . "';", \yii\web\View::POS_BEGIN); 13 | $this->registerJs("var profileHeaderUploaderUrl='" . Url::to(['/user/image/upload', 'userGuid' => $user->guid, 'type' => ImageController::TYPE_PROFILE_BANNER_IMAGE]) . "';", \yii\web\View::POS_BEGIN); 14 | } 15 | ?> 16 |
17 | 18 |
19 | 20 |
21 | 22 | <?= Yii::t('base', 'Profile image of {displayName}', ['displayName' => Html::encode($user->displayName)]); ?> 26 | 27 | 28 | 29 |
31 | 32 |
33 | 34 | getProfileBannerImage()->hasImage()) { 40 | // change padding to the lower image height 41 | $padding = '50px 350px'; 42 | } 43 | ?> 44 | 45 | 54 | 55 | 56 | 57 | 58 |
59 |

displayName); ?>

60 | 61 |

profile->title); ?>

62 |
63 | 64 | 65 | 66 | 95 | 96 |
97 | 98 |
99 | 100 | profileImage->hasImage()) : ?> 101 | 102 | 140x140 105 | 106 | 107 | 140x140 110 | 111 | 112 | 113 | 114 |
116 | 117 |
118 | 119 |
120 |
121 |
124 |
125 |
126 |
127 | 128 |
129 | 131 | 132 | 133 | 142 | 143 | 'modal_profileimagedelete', 146 | 'linkOutput' => 'a', 147 | 'ariaLabel' => Yii::t('UserModule.base', 'Delete profile image'), 148 | 'title' => Yii::t('UserModule.widgets_views_deleteImage', 'Confirm image deleting'), 149 | 'message' => Yii::t('UserModule.widgets_views_deleteImage', 'Do you really want to delete your profile image?'), 150 | 'buttonTrue' => Yii::t('UserModule.widgets_views_deleteImage', 'Delete'), 151 | 'buttonFalse' => Yii::t('UserModule.widgets_views_deleteImage', 'Cancel'), 152 | 'linkContent' => '', 153 | 'cssClass' => 'btn btn-danger btn-sm', 154 | 'style' => $user->getProfileImage()->hasImage() ? '' : 'display: none;', 155 | 'linkHref' => Url::to(["/user/image/delete", 'type' => ImageController::TYPE_PROFILE_IMAGE, 'userGuid' => $user->guid]), 156 | 'confirmJS' => 'function(jsonResp) { resetProfileImage(jsonResp); }' 157 | ]); 158 | ?> 159 |
160 | 161 | 162 |
163 | 164 | 165 |
166 | 167 |
168 | 169 |
170 |
171 |
172 | $user]); ?> 173 | 174 |
175 | $user, 178 | 'widgets' => [ 179 | [\humhub\modules\user\widgets\ProfileEditButton::class, ['user' => $user], []], 180 | [\humhub\modules\user\widgets\UserFollowButton::class, ['user' => $user], []], 181 | [\humhub\modules\friendship\widgets\FriendshipButton::class, ['user' => $user], []], 182 | ] 183 | ]); 184 | ?> 185 |
186 |
187 |
188 |
189 |
190 |
191 | 192 | 193 | 212 | --------------------------------------------------------------------------------