snapshot of https://github.com/espocrm/espocrm.git (master, 2026-09-18; blobs > 131072B omitted)
Some checks failed
Test / Test on PHP 8.3 (push) Failing after 5s
Test / Test on PHP 8.4 (push) Failing after 4s
Test / Test on PHP 8.5 (push) Failing after 3s
TypeScript static analysis / TypeScript check (push) Failing after 14s
Test Integration on MySQL / Test on PHP 8.3 (push) Failing after 2s
Test Integration on MySQL / Test on PHP 8.5 (push) Failing after 0s
Test Integration on PostgreSQL / Test on PHP 8.4 fix (push) Failing after 1s
Test Integration on PostgreSQL / Test on PHP 8.4 master (push) Failing after 1s

This commit is contained in:
upstream-mirror
2026-09-18 04:19:15 +05:00
commit 7cc7e6b4f3
10077 changed files with 900756 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
.gradient(@color: #F5F5F5, @start: #EEE, @stop: #FFF) {
background: @color;
background: -webkit-gradient(linear,
left bottom,
left top,
color-stop(0, @start),
color-stop(1, @stop));
background: -ms-linear-gradient(bottom,
@start,
@stop);
background: -moz-linear-gradient(center bottom,
@start 0%,
@stop 100%);
background: -o-linear-gradient(@stop,
@start);
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@stop,@start));
}
.bw-gradient(@color: #F5F5F5, @start: 0, @stop: 255) {
background: @color;
background: -webkit-gradient(linear,
left bottom,
left top,
color-stop(0, rgb(@start,@start,@start)),
color-stop(1, rgb(@stop,@stop,@stop)));
background: -ms-linear-gradient(bottom,
rgb(@start,@start,@start) 0%,
rgb(@stop,@stop,@stop) 100%);
background: -moz-linear-gradient(center bottom,
rgb(@start,@start,@start) 0%,
rgb(@stop,@stop,@stop) 100%);
background: -o-linear-gradient(rgb(@stop,@stop,@stop),
rgb(@start,@start,@start));
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",rgb(@stop,@stop,@stop),rgb(@start,@start,@start)));
}
.bordered(@top-color: #EEE, @right-color: #EEE, @bottom-color: #EEE, @left-color: #EEE) {
border-top: solid var(--1px) @top-color;
border-left: solid var(--1px) @left-color;
border-right: solid var(--1px) @right-color;
border-bottom: solid var(--1px) @bottom-color;
}
.drop-shadow(@x-axis: 0, @y-axis: 1px, @blur: 2px, @alpha: 0.1) {
box-shadow: @x-axis @y-axis @blur rgba(0, 0, 0, @alpha);
}
.rounded(@radius: 2px) {
border-radius: @radius;
}
.border-radius(@topright: 0, @bottomright: 0, @bottomleft: 0, @topleft: 0) {
border-top-right-radius: @topright;
border-bottom-right-radius: @bottomright;
border-bottom-left-radius: @bottomleft;
border-top-left-radius: @topleft;
.background-clip(padding-box);
}
.transition-duration(@duration: 0.2s) {
transition-duration: @duration;
}
.transform(...) {
transform: @arguments;
}
.rotation(@deg:5deg){
.transform(rotate(@deg));
}
.transition(@duration:0.2s, @ease:ease-out) {
transition: all @duration @ease;
}
.box-sizing(@sizing: border-box) {
box-sizing: @sizing;
}
.columns(@colwidth: var(--256px), @colcount: 0, @colgap: var(--50px), @columnRuleColor: #EEE, @columnRuleStyle: solid, @columnRuleWidth: var(--1px)) {
column-width: @colwidth;
column-count: @colcount;
column-gap: @colgap;
column-rule-color: @columnRuleColor;
column-rule-style: @columnRuleStyle;
column-rule-width: @columnRuleWidth;
}
.background-clip(@argument: padding-box) {
background-clip: @argument;
}

View File

@@ -0,0 +1,270 @@
@font-face {
font-family: "summernote";
font-style: normal;
font-weight: 400;
font-display: auto;
src: url("../../fonts/summernote.eot");
src: url("../../fonts/summernote.eot?#iefix") format("embedded-opentype"), url("../../fonts/summernote.woff2") format("woff2"), url("../../fonts/summernote.woff") format("woff"), url("../../fonts/summernote.ttf?0d0d5fac99cc8774d89eb08b1a8323c7") format("truetype");}
[class^="note-icon"]:before,
[class*=" note-icon"]:before {
display: inline-block;
font: normal normal normal 11px/1 summernote;
text-rendering: auto;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
}
.note-icon-fw {
text-align: center;
width: 1.25em;
}
.note-icon-border {
border: solid 0.08em #eee;
border-radius: 0.1em;
padding: 0.2em 0.25em 0.15em;
}
.note-icon-pull-left {
float: left;
}
.note-icon-pull-right {
float: right;
}
.note-icon.note-icon-pull-left {
margin-right: 0.3em;
}
.note-icon.note-icon-pull-right {
margin-left: 0.3em;
}
.note-icon-align::before {
content: "\ea01";
}
.note-icon-align-center::before {
content: "\ea02";
}
.note-icon-align-indent::before {
content: "\ea03";
}
.note-icon-align-justify::before {
content: "\ea04";
}
.note-icon-align-left::before {
content: "\ea05";
}
.note-icon-align-outdent::before {
content: "\ea06";
}
.note-icon-align-right::before {
content: "\ea07";
}
.note-icon-arrow-circle-down::before {
content: "\ea08";
}
.note-icon-arrow-circle-left::before {
content: "\ea09";
}
.note-icon-arrow-circle-right::before {
content: "\ea0a";
}
.note-icon-arrow-circle-up::before {
content: "\ea0b";
}
.note-icon-arrows-alt::before {
content: "\ea0c";
}
.note-icon-arrows-h::before {
content: "\ea0d";
}
.note-icon-arrows-v::before {
content: "\ea0e";
}
.note-icon-bold::before {
content: "\ea0f";
}
.note-icon-caret::before {
content: "\ea10";
}
.note-icon-chain-broken::before {
content: "\ea11";
}
.note-icon-circle::before {
content: "\ea12";
}
.note-icon-close::before {
content: "\ea13";
}
.note-icon-code::before {
content: "\ea14";
}
.note-icon-col-after::before {
content: "\ea15";
}
.note-icon-col-before::before {
content: "\ea16";
}
.note-icon-col-remove::before {
content: "\ea17";
}
.note-icon-eraser::before {
content: "\ea18";
}
.note-icon-float-left::before {
content: "\ea19";
}
.note-icon-float-none::before {
content: "\ea1a";
}
.note-icon-float-right::before {
content: "\ea1b";
}
.note-icon-font::before {
content: "\ea1c";
}
.note-icon-frame::before {
content: "\ea1d";
}
.note-icon-italic::before {
content: "\ea1e";
}
.note-icon-link::before {
content: "\ea1f";
}
.note-icon-magic::before {
content: "\ea20";
}
.note-icon-menu-check::before {
content: "\ea21";
}
.note-icon-minus::before {
content: "\ea22";
}
.note-icon-orderedlist::before {
content: "\ea23";
}
.note-icon-pencil::before {
content: "\ea24";
}
.note-icon-picture::before {
content: "\ea25";
}
.note-icon-question::before {
content: "\ea26";
}
.note-icon-redo::before {
content: "\ea27";
}
.note-icon-rollback::before {
content: "\ea28";
}
.note-icon-row-above::before {
content: "\ea29";
}
.note-icon-row-below::before {
content: "\ea2a";
}
.note-icon-row-remove::before {
content: "\ea2b";
}
.note-icon-special-character::before {
content: "\ea2c";
}
.note-icon-square::before {
content: "\ea2d";
}
.note-icon-strikethrough::before {
content: "\ea2e";
}
.note-icon-subscript::before {
content: "\ea2f";
}
.note-icon-summernote::before {
content: "\ea30";
}
.note-icon-superscript::before {
content: "\ea31";
}
.note-icon-table::before {
content: "\ea32";
}
.note-icon-text-height::before {
content: "\ea33";
}
.note-icon-trash::before {
content: "\ea34";
}
.note-icon-underline::before {
content: "\ea35";
}
.note-icon-undo::before {
content: "\ea36";
}
.note-icon-unorderedlist::before {
content: "\ea37";
}
.note-icon-video::before {
content: "\ea38";
}

View File

@@ -0,0 +1,493 @@
@import "elements.less";
/* Theme Variables
------------------------------------------*/
@border-color: #a9a9a9;
@background-color: #f5f5f5;
@img-margin-left: 10px;
@img-margin-right: 10px;
/* Layout
------------------------------------------*/
.note-editor {
position: relative;
/* dropzone */
@dropzone-color: lightskyblue;
@dropzone-active-color: darken(@dropzone-color, 30);
.note-dropzone {
position: absolute;
display: none;
z-index: 100;
color: @dropzone-color;
background-color: white;
opacity: 0.95;
.note-dropzone-message {
display: table-cell;
vertical-align: middle;
text-align: center;
font-size: var(--28px);
font-weight: bold;
}
&.hover {
color: @dropzone-active-color;
}
}
&.dragover .note-dropzone {
display: table;
}
.note-editing-area {
position: relative;
.note-editable {
outline: none;
sup {
vertical-align: super;
}
sub {
vertical-align: sub;
}
}
img.note-float-left {
margin-right: @img-margin-right;
}
img.note-float-right {
margin-left: @img-margin-left;
}
}
}
/* Frame mode layout
------------------------------------------*/
.note-editor.note-frame {
border: var(--1px) solid @border-color;
/* codeview mode */
&.codeview {
.note-editing-area {
.note-editable {
display: none;
}
.note-codable {
display: block;
}
}
}
.note-editing-area {
overflow: hidden;
/* editable */
.note-editable {
background-color: #fff;
color: #000;
padding: var(--10px);
overflow: auto;
&[contenteditable="false"] {
background-color: #e5e5e5;
}
}
/* codeable */
.note-codable {
display: none;
width: 100%;
padding: 10px;
border: none;
box-shadow: none;
font-family: Menlo, Monaco, monospace, sans-serif;
font-size: var(--14px);
color: #ccc;
background-color: #222;
resize: none;
/* override BS2 default style */
.box-sizing(border-box);
.rounded(0);
margin-bottom: 0;
}
}
/* fullscreen mode */
&.fullscreen {
position: fixed;
top: 0;
left: 0;
width: 100% !important;
z-index: 1050; /* bs3 modal-backdrop: 1030, bs2: 1040 */
.note-editable {
background-color: white;
}
.note-resizebar {
display: none;
}
}
/* statusbar */
.note-statusbar {
background-color: @background-color;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
.note-resizebar {
padding-top: 1px;
height: 8px;
width: 100%;
cursor: ns-resize;
.note-icon-bar {
width: 20px;
margin: 1px auto;
border-top: 1px solid @border-color;
}
}
}
.note-placeholder {
padding: 10px;
}
}
/* Popover
------------------------------------------*/
.note-popover.popover {
max-width: none;
.popover-content {
a {
display: inline-block;
max-width: 200px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap; /* for FF */
vertical-align: middle; /* for FF */
}
}
.arrow {
left: 20px !important;
}
}
/* Popover and Toolbar (Button container)
------------------------------------------*/
.note-popover .popover-content, .panel-heading.note-toolbar {
margin: 0;
padding: 0 0 5px 5px;
&>.btn-group {
margin-top: 5px;
margin-left: 0;
margin-right: 5px;
}
.btn-group {
.note-table {
min-width: 0;
padding: 5px;
.note-dimension-picker {
font-size: var(--18px);
.note-dimension-picker-mousecatcher {
position: absolute !important;
z-index: 3;
width: 10em;
height: 10em;
cursor: pointer;
}
.note-dimension-picker-unhighlighted {
position: relative !important;
z-index: 1;
width: 5em;
height: 5em;
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat;
}
.note-dimension-picker-highlighted {
position: absolute !important;
z-index: 2;
width: 1em;
height: 1em;
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat;
}
}
}
}
.note-style {
h1, h2, h3, h4, h5, h6, blockquote {
margin: 0;
}
}
.note-color {
.dropdown-toggle {
width: 20px;
padding-left: 5px;
}
.dropdown-menu {
min-width: 337px;
.note-palette {
display: inline-block;
margin: 0;
width: 160px;
&:first-child {
margin: 0 5px;
}
.note-palette-title {
font-size: var(--12px);
margin: 2px 7px;
text-align: center;
border-bottom: 1px solid #eee;
}
.note-color-reset {
margin: 3px;
padding: 0 3px;
width: 100%;
font-size: var(--11px);
cursor: pointer;
.rounded(5px);
}
.note-color-row {
height: 20px;
}
.note-color-reset:hover {
background: #eee;
}
}
}
}
.note-para {
.dropdown-menu {
min-width: 216px;
padding: 5px;
&>div:first-child {
margin-right: 5px;
}
}
}
/* dropdown-menu for toolbar and popover */
.dropdown-menu {
min-width: 90px;
/* dropdown-menu right position */
/* http://forrst.com/posts/Bootstrap_right_positioned_dropdown-2KB */
&.right {
right: 0;
left: auto;
&::before { right: 9px; left: auto !important; }
&::after { right: 10px; left: auto !important; }
}
/* dropdown-menu for selectbox */
&.note-check {
li a i {
//color: deepskyblue; // Espo
visibility: hidden;
}
li a.checked i {
visibility: visible;
}
}
// Espo
.note-palette {
padding-bottom: var(--4px);
input.note-color-select-btn {
position: relative;
top: var(--4px);
left: var(--4px);
border: 0;
}
.note-holder-custom {
display: none;
}
.note-color-select {
display: none;
}
}
}
.note-fontsize-10 {
font-size: var(--10px);
}
/* color palette for toolbar and popover */
.note-color-palette {
line-height: 1;
div {
.note-color-btn {
width: 20px;
height: 20px;
padding: 0;
margin: 0;
border: 1px solid #fff;
}
.note-color-btn:hover {
border: 1px solid #000;
}
}
}
}
/* Dialog
------------------------------------------*/
.note-dialog {
&>div {
display: none; /* BS2's hide pacth. */
}
.form-group { /* overwrite BS's form-horizontal minus margins */
margin-left: 0;
margin-right: 0;
}
.note-modal-form {
margin: 0; /* overwrite BS2's form margin bottom */
}
.note-image-dialog {
.note-dropzone {
min-height: 100px;
font-size: var(--30px);
line-height: 4; /* vertical-align */
color: lightgray;
text-align: center;
border: 4px dashed lightgray;
margin-bottom: 10px;
}
}
// [workaround] firefox fileinput
@-moz-document url-prefix() {
.note-image-input {
height: auto;
}
}
}
/* Placeholder
------------------------------------------*/
.note-placeholder {
position: absolute;
display: none;
color: gray;
}
/* Handle
------------------------------------------*/
.note-handle {
/* control selection */
.note-control-selection {
position: absolute;
display: none;
border: 1px solid black;
&>div { position: absolute; }
.note-control-selection-bg {
width: 100%;
height: 100%;
background-color: black;
opacity: 0.30;
}
.note-control-handle {
width: 7px;
height: 7px;
border: 1px solid black;
}
.note-control-holder {
.note-control-handle;
}
.note-control-sizing {
.note-control-handle;
background-color: white;
}
.note-control-nw {
top: -5px;
left: -5px;
border-right: none;
border-bottom: none;
}
.note-control-ne {
top: -5px;
right: -5px;
border-bottom: none;
border-left: none;
}
.note-control-sw {
bottom: -5px;
left: -5px;
border-top: none;
border-right: none;
}
.note-control-se {
right: -5px;
bottom: -5px;
cursor: se-resize;
}
.note-control-se.note-control-holder {
cursor: default;
border-top: none;
border-left: none;
}
.note-control-selection-info {
right: 0;
bottom: 0;
padding: 5px;
margin: 5px;
color: white;
background-color: black;
font-size: var(--12px);
.rounded(5px);
opacity: 0.7;
}
}
}
.note-hint-popover {
min-width: 100px;
padding: 2px;
.popover-content {
padding: 3px;
max-height: 150px;
overflow: auto;
.note-hint-group {
.note-hint-item {
display: block !important;
padding: 3px;
&.active, &:hover {
display: block;
clear: both;
font-weight: 400;
line-height: 1.4;
color: white;
white-space: nowrap;
text-decoration: none;
background-color: #428bca;
outline: 0;
cursor: pointer;
}
}
}
}
}