mirror of
https://github.com/Combodo/iTop.git
synced 2026-03-20 00:14:13 +01:00
Compare commits
3 Commits
feature/61
...
feature/at
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1c2f923811 | ||
|
|
24b2852830 | ||
|
|
5ba44a03ea |
18
README.md
18
README.md
@@ -76,9 +76,7 @@ We would like to give a special thank you 🤗 to the people from the community
|
||||
|
||||
### Names
|
||||
|
||||
- Al Hallak, Amr (a.k.a [@v4yne1](https://github.com/v4yne1))
|
||||
- Alves, David
|
||||
- Audon, Florian
|
||||
- Beck, Pedro
|
||||
- Beer, Christian (a.k.a [@ChristianBeer](https://www.github.com/ChristianBeer))
|
||||
- Bilger, Jean-François
|
||||
@@ -90,26 +88,20 @@ We would like to give a special thank you 🤗 to the people from the community
|
||||
- Colantoni, Maria Laura
|
||||
- Couronné, Guy
|
||||
- Dejin, Bie (a.k.a [@bdejin](https://github.com/bdejin))
|
||||
- Delicado, Elodie
|
||||
- Dvořák, Lukáš
|
||||
- Goethals, Stefan
|
||||
- Giuva, Vincenzo Katriel (a.k.a [@DarkNight97boss](https://github.com/DarkNight97boss))
|
||||
- Gumble, David
|
||||
- Heloir, Arthur
|
||||
- Janssens, Jelle (a.k.a [@janssensjelle](https://github.com/janssensjelle))
|
||||
- Ji, Leeb (冀利斌) (a.k.a [@chileeb](https://github.com/chileeb))
|
||||
- Kaltefleiter, Lars (a.k.a [@larhip](https://www.github.com/larhip))
|
||||
- Khamit, Shamil
|
||||
- Kincel, Martin
|
||||
- Konečný, Kamil
|
||||
- Kunin, Vladimir
|
||||
- Lassiter, Denis (a.k.a [@delassiter](https://github.com/delassiter))
|
||||
- Lassiter, Dennis
|
||||
- Lazcano, Federico
|
||||
- Lucas, Jonathan
|
||||
- Malik, Remie
|
||||
- Mantel, Ina
|
||||
- Martin, Pierre (a.k.a [@Worty](https://github.com/worty-syn))
|
||||
- Melchiorre, Romain
|
||||
- Mindêllo de Andrade, Lucas (a.k.a [@rokam](https://www.github.com/rokam))
|
||||
- Mozart de Oliveira, Eduardo (a.k.a [@eduardomozart](https://github.com/eduardomozart))
|
||||
- Raenker, Martin
|
||||
@@ -121,12 +113,10 @@ We would like to give a special thank you 🤗 to the people from the community
|
||||
- Seki, Shoji
|
||||
- Shilov, Vladimir
|
||||
- Stetina, Pavel (a.k.a [@Stetinac](https://github.com/Stetinac))
|
||||
- Stukalov, Ilya (a.k.a [@ilya](https://www.github.com/ilya-stukalov))
|
||||
- Stukalov, Ilya (a.k.a [@ilya](https://www.github.com/ilya)-stukalov)
|
||||
- Tarjányi, Csaba (a.k.a [@tacsaby](https://github.com/tacsaby))
|
||||
- Toraya, Chairat (a.k.a [@Kyokito1412](https://github.com/Kyokito1412))
|
||||
- Tulio, Marco
|
||||
- Turrubiates, Miguel
|
||||
- Višnjić, Aldin (a.k.a[@viliald](https://github.com/viliald))
|
||||
- Vlk, Karel (a.k.a [@vlk-charles](https://www.github.com/vlk-charles))
|
||||
|
||||
### Aliases
|
||||
@@ -148,6 +138,4 @@ We would like to give a special thank you 🤗 to the people from the community
|
||||
- [ITOMIG](https://www.itomig.de/)
|
||||
- [Pimkie](https://www.pimkie.com/)
|
||||
- [Super-Visions](https://www.super-visions.com/)
|
||||
- [Defence Tech Cyber Security - Malware Lab](https://github.com/DefenceTechSecurity)
|
||||
- Orange Cyberdefense
|
||||
- MipihSIB
|
||||
|
||||
|
||||
@@ -521,7 +521,7 @@ class utils
|
||||
|
||||
// For URL
|
||||
case static::ENUM_SANITIZATION_FILTER_URL:
|
||||
// N°6350 - returns only valid URLs
|
||||
// N°6350 - returns only valid URLs
|
||||
$retValue = filter_var($value, FILTER_VALIDATE_URL);
|
||||
break;
|
||||
|
||||
@@ -554,44 +554,44 @@ class utils
|
||||
switch($sError)
|
||||
{
|
||||
case UPLOAD_ERR_OK:
|
||||
$sTmpName = is_null($sIndex) ? $aFileInfo['tmp_name'] : $aFileInfo['tmp_name'][$sIndex];
|
||||
$sMimeType = is_null($sIndex) ? $aFileInfo['type'] : $aFileInfo['type'][$sIndex];
|
||||
$sName = is_null($sIndex) ? $aFileInfo['name'] : $aFileInfo['name'][$sIndex];
|
||||
$sTmpName = is_null($sIndex) ? $aFileInfo['tmp_name'] : $aFileInfo['tmp_name'][$sIndex];
|
||||
$sMimeType = is_null($sIndex) ? $aFileInfo['type'] : $aFileInfo['type'][$sIndex];
|
||||
$sName = is_null($sIndex) ? $aFileInfo['name'] : $aFileInfo['name'][$sIndex];
|
||||
|
||||
$doc_content = file_get_contents($sTmpName);
|
||||
$doc_content = file_get_contents($sTmpName);
|
||||
$sMimeType = self::GetFileMimeType($sTmpName);
|
||||
$oDocument = new ormDocument($doc_content, $sMimeType, $sName);
|
||||
break;
|
||||
break;
|
||||
|
||||
case UPLOAD_ERR_NO_FILE:
|
||||
// no file to load, it's a normal case, just return an empty document
|
||||
break;
|
||||
// no file to load, it's a normal case, just return an empty document
|
||||
break;
|
||||
|
||||
case UPLOAD_ERR_FORM_SIZE:
|
||||
case UPLOAD_ERR_INI_SIZE:
|
||||
throw new FileUploadException(Dict::Format('UI:Error:UploadedFileTooBig', ini_get('upload_max_filesize')));
|
||||
break;
|
||||
throw new FileUploadException(Dict::Format('UI:Error:UploadedFileTooBig', ini_get('upload_max_filesize')));
|
||||
break;
|
||||
|
||||
case UPLOAD_ERR_PARTIAL:
|
||||
throw new FileUploadException(Dict::S('UI:Error:UploadedFileTruncated.'));
|
||||
break;
|
||||
throw new FileUploadException(Dict::S('UI:Error:UploadedFileTruncated.'));
|
||||
break;
|
||||
|
||||
case UPLOAD_ERR_NO_TMP_DIR:
|
||||
throw new FileUploadException(Dict::S('UI:Error:NoTmpDir'));
|
||||
break;
|
||||
throw new FileUploadException(Dict::S('UI:Error:NoTmpDir'));
|
||||
break;
|
||||
|
||||
case UPLOAD_ERR_CANT_WRITE:
|
||||
throw new FileUploadException(Dict::Format('UI:Error:CannotWriteToTmp_Dir', ini_get('upload_tmp_dir')));
|
||||
break;
|
||||
throw new FileUploadException(Dict::Format('UI:Error:CannotWriteToTmp_Dir', ini_get('upload_tmp_dir')));
|
||||
break;
|
||||
|
||||
case UPLOAD_ERR_EXTENSION:
|
||||
$sName = is_null($sIndex) ? $aFileInfo['name'] : $aFileInfo['name'][$sIndex];
|
||||
throw new FileUploadException(Dict::Format('UI:Error:UploadStoppedByExtension_FileName', $sName));
|
||||
break;
|
||||
$sName = is_null($sIndex) ? $aFileInfo['name'] : $aFileInfo['name'][$sIndex];
|
||||
throw new FileUploadException(Dict::Format('UI:Error:UploadStoppedByExtension_FileName', $sName));
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new FileUploadException(Dict::Format('UI:Error:UploadFailedUnknownCause_Code', $sError));
|
||||
break;
|
||||
throw new FileUploadException(Dict::Format('UI:Error:UploadFailedUnknownCause_Code', $sError));
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -889,10 +889,10 @@ class utils
|
||||
$aDateRegexps = array_values($aSpec);
|
||||
}
|
||||
|
||||
$sDateRegexp = str_replace($aDateTokens, $aDateRegexps, $sFormat);
|
||||
$sDateRegexp = str_replace($aDateTokens, $aDateRegexps, $sFormat);
|
||||
|
||||
if (preg_match('!^(?<head>)'.$sDateRegexp.'(?<tail>)$!', $sDate, $aMatches))
|
||||
{
|
||||
if (preg_match('!^(?<head>)'.$sDateRegexp.'(?<tail>)$!', $sDate, $aMatches))
|
||||
{
|
||||
$sYear = isset($aMatches['year']) ? $aMatches['year'] : 0;
|
||||
$sMonth = isset($aMatches['month']) ? $aMatches['month'] : 1;
|
||||
$sDay = isset($aMatches['day']) ? $aMatches['day'] : 1;
|
||||
@@ -901,11 +901,11 @@ class utils
|
||||
$sSecond = isset($aMatches['second']) ? $aMatches['second'] : 0;
|
||||
return strtotime("$sYear-$sMonth-$sDay $sHour:$sMinute:$sSecond");
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
// http://www.spaweditor.com/scripts/regex/index.php
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
// http://www.spaweditor.com/scripts/regex/index.php
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1334,8 +1334,8 @@ class utils
|
||||
return Session::GetLog();
|
||||
}
|
||||
|
||||
static function DebugBacktrace($iLimit = 5)
|
||||
{
|
||||
static function DebugBacktrace($iLimit = 5)
|
||||
{
|
||||
$aFullTrace = debug_backtrace();
|
||||
$aLightTrace = array();
|
||||
for($i=1; ($i<=$iLimit && $i < count($aFullTrace)); $i++) // Skip the last function call... which is the call to this function !
|
||||
@@ -1343,7 +1343,7 @@ class utils
|
||||
$aLightTrace[$i] = $aFullTrace[$i]['function'].'(), called from line '.$aFullTrace[$i]['line'].' in '.$aFullTrace[$i]['file'];
|
||||
}
|
||||
echo "<p><pre>".print_r($aLightTrace, true)."</pre></p>\n";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the given iTop PHP script, passing it the current credentials
|
||||
@@ -1539,7 +1539,7 @@ class utils
|
||||
if (strlen($sUrl) < SERVER_MAX_URL_LENGTH) {
|
||||
// Static menus: Email this page, CSV Export & Add to Dashboard
|
||||
$aResult[] = new URLPopupMenuItem('UI:Menu:EMail', Dict::S('UI:Menu:EMail'),
|
||||
"mailto:?body=".urlencode($sUrl).' ' // Add an extra space to make it work in Outlook
|
||||
"mailto:?body=".urlencode($sUrl).' ' // Add an extra space to make it work in Outlook
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1961,7 +1961,7 @@ SQL;
|
||||
CURLOPT_HTTPHEADER => $aHTTPHeaders,
|
||||
);
|
||||
|
||||
$aAllOptions = $aCurlOptions + $aOptions;
|
||||
$aAllOptions = $aCurlOptions + $aOptions;
|
||||
$ch = curl_init($sUrl);
|
||||
curl_setopt_array($ch, $aAllOptions);
|
||||
$response = curl_exec($ch);
|
||||
@@ -1986,7 +1986,7 @@ SQL;
|
||||
/**
|
||||
* Get a standard list of character sets
|
||||
*
|
||||
* @param array $aAdditionalEncodings Additional values
|
||||
* @param array $aAdditionalEncodings Additional values
|
||||
* @return array of iconv code => english label, sorted by label
|
||||
*/
|
||||
public static function GetPossibleEncodings($aAdditionalEncodings = array())
|
||||
@@ -2221,13 +2221,13 @@ SQL;
|
||||
case 'image/gif':
|
||||
case 'image/jpeg':
|
||||
case 'image/png':
|
||||
$img = @imagecreatefromstring($oImage->GetData());
|
||||
break;
|
||||
$img = @imagecreatefromstring($oImage->GetData());
|
||||
break;
|
||||
|
||||
default:
|
||||
// Unsupported image type, return the image as-is
|
||||
//throw new Exception("Unsupported image type: '".$oImage->GetMimeType()."'. Cannot resize the image, original image will be used.");
|
||||
return $oImage;
|
||||
// Unsupported image type, return the image as-is
|
||||
//throw new Exception("Unsupported image type: '".$oImage->GetMimeType()."'. Cannot resize the image, original image will be used.");
|
||||
return $oImage;
|
||||
}
|
||||
if ($img === false)
|
||||
{
|
||||
@@ -2259,16 +2259,16 @@ SQL;
|
||||
switch ($oImage->GetMimeType())
|
||||
{
|
||||
case 'image/gif':
|
||||
imagegif($new); // send image to output buffer
|
||||
break;
|
||||
imagegif($new); // send image to output buffer
|
||||
break;
|
||||
|
||||
case 'image/jpeg':
|
||||
imagejpeg($new, null, 80); // null = send image to output buffer, 80 = good quality
|
||||
break;
|
||||
imagejpeg($new, null, 80); // null = send image to output buffer, 80 = good quality
|
||||
break;
|
||||
|
||||
case 'image/png':
|
||||
imagepng($new, null, 5); // null = send image to output buffer, 5 = medium compression
|
||||
break;
|
||||
imagepng($new, null, 5); // null = send image to output buffer, 5 = medium compression
|
||||
break;
|
||||
}
|
||||
$oResampledImage = new ormDocument(ob_get_contents(), $oImage->GetMimeType(), $oImage->GetFileName());
|
||||
@ob_end_clean();
|
||||
@@ -2298,16 +2298,16 @@ SQL;
|
||||
$data .= mt_rand();
|
||||
$hash = strtoupper(hash('ripemd128', $uid . md5($data)));
|
||||
$sUUID = '{' .
|
||||
substr($hash, 0, 8) .
|
||||
'-' .
|
||||
substr($hash, 8, 4) .
|
||||
'-' .
|
||||
substr($hash, 12, 4) .
|
||||
'-' .
|
||||
substr($hash, 16, 4) .
|
||||
'-' .
|
||||
substr($hash, 20, 12) .
|
||||
'}';
|
||||
substr($hash, 0, 8) .
|
||||
'-' .
|
||||
substr($hash, 8, 4) .
|
||||
'-' .
|
||||
substr($hash, 12, 4) .
|
||||
'-' .
|
||||
substr($hash, 16, 4) .
|
||||
'-' .
|
||||
substr($hash, 20, 12) .
|
||||
'}';
|
||||
return $sUUID;
|
||||
}
|
||||
|
||||
@@ -2319,7 +2319,7 @@ SQL;
|
||||
*/
|
||||
public static function GetCurrentModuleName($iCallDepth = 0)
|
||||
{
|
||||
return ModuleService::GetInstance()->GetCurrentModuleName($iCallDepth + 1);
|
||||
return ModuleService::GetInstance()->GetCurrentModuleName($iCallDepth + 1);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2366,7 +2366,7 @@ SQL;
|
||||
*/
|
||||
public static function GetCurrentModuleSetting($sProperty, $defaultvalue = null)
|
||||
{
|
||||
return ModuleService::GetInstance()->GetCurrentModuleSetting($sProperty, $defaultvalue);
|
||||
return ModuleService::GetInstance()->GetCurrentModuleSetting($sProperty, $defaultvalue);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2375,7 +2375,7 @@ SQL;
|
||||
*/
|
||||
public static function GetCompiledModuleVersion($sModuleName)
|
||||
{
|
||||
return ModuleService::GetInstance()->GetCompiledModuleVersion($sModuleName);
|
||||
return ModuleService::GetInstance()->GetCompiledModuleVersion($sModuleName);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3109,29 +3109,19 @@ TXT
|
||||
$aMentionMatches = [];
|
||||
$sText = html_entity_decode($sText);
|
||||
|
||||
$aMentionAllowedClasses = MetaModel::GetConfig()->Get('mentions.allowed_classes');
|
||||
preg_match_all('/<a\s*([^>]*)data-object-class="([^"]*)"\s.*data-object-key="([^"]*)"\s*([^>]*)>(.*)<\/a>/Ui', $sText, $aMentionMatches);
|
||||
preg_match_all('/<a\s*([^>]*)data-object-class="([^"]*)"\s.*data-object-key="([^"]*)"/Ui', $sText, $aMentionMatches);
|
||||
foreach ($aMentionMatches[0] as $iMatchIdx => $sCompleteMatch) {
|
||||
$sMatchedClass = $aMentionMatches[2][$iMatchIdx];
|
||||
$sMatchedId = $aMentionMatches[3][$iMatchIdx];
|
||||
$sMatchedName = $aMentionMatches[5][$iMatchIdx];
|
||||
|
||||
$sMentionPrefix = array_search($sMatchedClass, $aMentionAllowedClasses);
|
||||
if ($sMentionPrefix === false) {
|
||||
continue;
|
||||
}
|
||||
//tests if the name starts with $sMentionPrefix (e.g. '@' for 'Contact' class)
|
||||
if (str_starts_with($sMatchedName, $sMentionPrefix) === false) {
|
||||
continue;
|
||||
}
|
||||
// Prepare array for matched class if not already present
|
||||
if (!array_key_exists($sMatchedClass, $aMentionedObjects)) {
|
||||
$aMentionedObjects[$sMatchedClass] = array();
|
||||
}
|
||||
// Add matched ID if not already there
|
||||
if (!in_array($sMatchedId, $aMentionedObjects[$sMatchedClass])) {
|
||||
$aMentionedObjects[$sMatchedClass][] = $sMatchedId;
|
||||
}
|
||||
// Prepare array for matched class if not already present
|
||||
if (!array_key_exists($sMatchedClass, $aMentionedObjects)) {
|
||||
$aMentionedObjects[$sMatchedClass] = array();
|
||||
}
|
||||
// Add matched ID if not already there
|
||||
if (!in_array($sMatchedId, $aMentionedObjects[$sMatchedClass])) {
|
||||
$aMentionedObjects[$sMatchedClass][] = $sMatchedId;
|
||||
}
|
||||
}
|
||||
|
||||
return $aMentionedObjects;
|
||||
|
||||
@@ -181,6 +181,23 @@ abstract class AttributeDefinition
|
||||
return $this->GetSearchType() != static::SEARCH_WIDGET_TYPE_RAW;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function IsComputed()
|
||||
{
|
||||
return $this->IsParam('expression');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
* @throws \OQLException
|
||||
*/
|
||||
protected function GetComputedPrerequisiteAttributes(): array {
|
||||
$oExpression = Expression::FromOQL($this->m_aParams['expression']);
|
||||
return $oExpression->ListRequiredFields();
|
||||
}
|
||||
|
||||
/** @var string */
|
||||
protected $m_sCode;
|
||||
/** @var array */
|
||||
@@ -2717,7 +2734,11 @@ class AttributeDBFieldVoid extends AttributeDefinition
|
||||
|
||||
public function GetPrerequisiteAttributes($sClass = null)
|
||||
{
|
||||
return $this->Get("depends_on");
|
||||
$aPrerequisiteAttributes = $this->Get("depends_on");
|
||||
if($this->IsComputed()) {
|
||||
$aPrerequisiteAttributes = array_merge($aPrerequisiteAttributes, $this->GetComputedPrerequisiteAttributes());
|
||||
}
|
||||
return $aPrerequisiteAttributes;
|
||||
}
|
||||
|
||||
public static function IsBasedOnDBColumns()
|
||||
@@ -2732,7 +2753,7 @@ class AttributeDBFieldVoid extends AttributeDefinition
|
||||
|
||||
public function IsWritable()
|
||||
{
|
||||
return !$this->IsMagic();
|
||||
return !$this->IsMagic() && !$this->IsComputed();
|
||||
}
|
||||
|
||||
public function GetSQLExpr()
|
||||
@@ -2962,14 +2983,12 @@ class AttributeInteger extends AttributeDBField
|
||||
|
||||
public function MakeRealValue($proposedValue, $oHostObj)
|
||||
{
|
||||
if (is_null($proposedValue))
|
||||
if (is_null($proposedValue) || $proposedValue === '')
|
||||
{
|
||||
return null;
|
||||
} elseif(gettype($proposedValue) !== 'integer') {
|
||||
IssueLog::Warning("Trying to set integer attribute ".$this->GetCode()." to type".gettype($proposedValue).".");
|
||||
}
|
||||
if ($proposedValue === '')
|
||||
{
|
||||
return null;
|
||||
} // 0 is transformed into '' !
|
||||
|
||||
return (int)$proposedValue;
|
||||
}
|
||||
@@ -4465,7 +4484,7 @@ class AttributeText extends AttributeString
|
||||
{
|
||||
// Is there a way to know the current limitation for mysql?
|
||||
// See mysql_field_len()
|
||||
return 65535;
|
||||
return 16383; // number of characters (that can be 1-4 bytes long), not of bytes
|
||||
}
|
||||
|
||||
public static function RenderWikiHtml($sText, $bWikiOnly = false)
|
||||
|
||||
@@ -25,8 +25,7 @@ define('EXPORTER_DEFAULT_CHUNK_SIZE', 1000);
|
||||
class BulkExportException extends Exception
|
||||
{
|
||||
protected $sLocalizedMessage;
|
||||
|
||||
public function __construct($message, $sLocalizedMessage, $code = 0, $previous = null)
|
||||
public function __construct($message, $sLocalizedMessage, $code = null, $previous = null)
|
||||
{
|
||||
parent::__construct($message, $code, $previous);
|
||||
$this->sLocalizedMessage = $sLocalizedMessage;
|
||||
|
||||
@@ -706,6 +706,8 @@ abstract class DBObject implements iDisplay
|
||||
}
|
||||
$this->_Set($sAttCode, $realvalue);
|
||||
|
||||
$this->UpdateDependentComputedAttributes($sAttCode);
|
||||
|
||||
$this->UpdateMetaAttributes(array($sAttCode));
|
||||
|
||||
// The object has changed, reset caches
|
||||
@@ -760,10 +762,10 @@ abstract class DBObject implements iDisplay
|
||||
*/
|
||||
public function SetTrim($sAttCode, $sValue)
|
||||
{
|
||||
$oAttDef = MetaModel::GetAttributeDef(get_class($this), $sAttCode);
|
||||
$iMaxSize = $oAttDef->GetMaxSize();
|
||||
$sLength = mb_strlen($sValue);
|
||||
if ($iMaxSize && ($sLength > $iMaxSize)) {
|
||||
if (!$this->StringFitsInField($sAttCode, $sValue)) {
|
||||
$oAttDef = MetaModel::GetAttributeDef(get_class($this), $sAttCode);
|
||||
$iMaxSize = $oAttDef->GetMaxSize();
|
||||
$sLength = mb_strlen($sValue);
|
||||
$sMessage = " -truncated ($sLength chars)";
|
||||
$sValue = mb_substr($sValue, 0, $iMaxSize - mb_strlen($sMessage)).$sMessage;
|
||||
}
|
||||
@@ -818,6 +820,24 @@ abstract class DBObject implements iDisplay
|
||||
$oKPI->ComputeStatsForExtension($this, 'AfterDelete');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sAttCode
|
||||
* @param string $sValue
|
||||
*
|
||||
* @return bool
|
||||
* @throws \Exception
|
||||
*
|
||||
* @Since 3.2.2
|
||||
*/
|
||||
public function StringFitsInField(string $sAttCode, string $sValue): bool
|
||||
{
|
||||
$oAttDef = MetaModel::GetAttributeDef(get_class($this), $sAttCode);
|
||||
$iMaxSize = $oAttDef->GetMaxSize();
|
||||
$sLength = mb_strlen($sValue);
|
||||
|
||||
return !($iMaxSize && ($sLength > $iMaxSize));
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute (and optionally start) the StopWatches deadlines
|
||||
*
|
||||
@@ -6974,5 +6994,28 @@ abstract class DBObject implements iDisplay
|
||||
{
|
||||
return array_key_exists($sSection, $this->aContext);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sAttCode
|
||||
*
|
||||
* @return void
|
||||
* @throws CoreException
|
||||
* @throws OQLException
|
||||
* @throws Exception
|
||||
*/
|
||||
private function UpdateDependentComputedAttributes(string $sAttCode): void
|
||||
{
|
||||
foreach (MetaModel::GetDependentAttributes(get_class($this), $sAttCode) as $sCode) {
|
||||
$oAttDef = MetaModel::GetAttributeDef(get_class($this), $sCode);
|
||||
if ($oAttDef->IsComputed()) {
|
||||
$oExpression = Expression::FromOQL($oAttDef->GetParams()['expression']);
|
||||
$value = $this->EvaluateExpression($oExpression);
|
||||
$aAllowedValues = $oAttDef->GetAllowedValues();
|
||||
if(is_null($aAllowedValues) || in_array($value, $aAllowedValues)) {
|
||||
$this->_Set($sCode, $oAttDef->MakeRealValue($value, $this));
|
||||
} ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,6 @@ use Combodo\iTop\Application\WebPage\iTopPDF;
|
||||
use Combodo\iTop\Application\WebPage\PDFPage;
|
||||
use Combodo\iTop\Application\WebPage\WebPage;
|
||||
use Combodo\iTop\Renderer\BlockRenderer;
|
||||
use Combodo\iTop\Service\Router\Router;
|
||||
|
||||
/**
|
||||
* Special kind of Graph for producing some nice output
|
||||
@@ -1471,7 +1470,6 @@ class DisplayableGraph extends SimpleGraph
|
||||
try {
|
||||
$this->InitFromGraphviz();
|
||||
$sExportAsPdfURL = utils::GetAbsoluteUrlAppRoot().'pages/ajax.render.php?operation=relation_pdf&relation='.$sRelation.'&direction='.($this->bDirectionDown ? 'down' : 'up');
|
||||
$sExportAsPdfURL2 = Router::GetInstance()->GenerateUrl('export.choose_global_params', ['format' => 'pdf']);
|
||||
$sContext = $oAppContext->GetForLink();
|
||||
$sDrillDownURL = utils::GetAbsoluteUrlAppRoot().'pages/UI.php?operation=details&class=%1$s&id=%2$s&'.$sContext;
|
||||
$sExportAsDocumentURL = utils::GetAbsoluteUrlAppRoot().'pages/ajax.render.php?operation=relation_attachment&relation='.$sRelation.'&direction='.($this->bDirectionDown ? 'down' : 'up');
|
||||
@@ -1497,8 +1495,7 @@ class DisplayableGraph extends SimpleGraph
|
||||
'sources' => ($this->bDirectionDown ? $this->aSourceObjects : $this->aSinkObjects),
|
||||
'excluded' => $aExcludedByClass,
|
||||
'grouping_threshold' => $iGroupingThreshold,
|
||||
'export_as_pdf' => array('url' => $sExportAsPdfURL, 'label' => Dict::S('UI:Relation:ExportAsPDF')),
|
||||
'export_as_bob' => array('url' => $sExportAsPdfURL2, 'label' => Dict::S('UI:Relation:ExportAsBob')),
|
||||
'export_as_pdf' => array('url' => $sExportAsPdfURL, 'label' => Dict::S('UI:Relation:ExportAsPDF')),
|
||||
'transaction_id' => utils::GetNewTransactionId(),
|
||||
'export_as_attachment' => array('url' => $sExportAsDocumentURL, 'label' => Dict::S('UI:Relation:ExportAsAttachment'), 'obj_class' => $sObjClass, 'obj_key' => $iObjKey),
|
||||
'drill_down' => array('url' => $sDrillDownURL, 'label' => Dict::S('UI:Relation:DrillDown')),
|
||||
|
||||
@@ -2661,7 +2661,7 @@ abstract class MetaModel
|
||||
*/
|
||||
public static function GetAttributeFlags($sClass, $sState, $sAttCode)
|
||||
{
|
||||
$iFlags = 0; // By default (if no life cycle) no flag at all
|
||||
$iFlags = 0;
|
||||
if (self::HasLifecycle($sClass)) {
|
||||
$aStates = MetaModel::EnumStates($sClass);
|
||||
if (!array_key_exists($sState, $aStates)) {
|
||||
|
||||
@@ -133,7 +133,6 @@ if (!defined('PORTAL_ID'))
|
||||
|
||||
// Env. vars to be used in templates and others
|
||||
$_ENV['COMBODO_CURRENT_ENVIRONMENT'] = utils::GetCurrentEnvironment();
|
||||
$_ENV['COMBODO_APPROOT'] = APPROOT;
|
||||
$_ENV['COMBODO_ABSOLUTE_URL'] = utils::GetAbsoluteUrlAppRoot();
|
||||
$_ENV['COMBODO_CONF_APP_ICON_URL'] = MetaModel::GetConfig()->Get('app_icon_url');
|
||||
$_ENV['COMBODO_MODULES_ABSOLUTE_URL'] = utils::GetAbsoluteUrlModulesRoot();
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
twig:
|
||||
default_path: '%combodo.modules.absolute_path%'
|
||||
paths:
|
||||
'%combodo.approot%images/': ~
|
||||
debug: '%kernel.debug%'
|
||||
strict_variables: '%kernel.debug%'
|
||||
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
# Copyright (C) 2010-2024 Combodo SAS
|
||||
#
|
||||
# This file is part of iTop.
|
||||
#
|
||||
# iTop is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# iTop is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with iTop. If not, see <http://www.gnu.org/licenses/>
|
||||
|
||||
p_preferences_set_preference:
|
||||
path: '/preferences/setPreference'
|
||||
defaults:
|
||||
_controller: 'Combodo\iTop\Portal\Controller\PreferencesController::SetPreferenceAction'
|
||||
@@ -27,7 +27,6 @@ parameters:
|
||||
|
||||
# Used in templates
|
||||
combodo.current_environment: '%env(string:COMBODO_CURRENT_ENVIRONMENT)%'
|
||||
combodo.approot: '%env(string:COMBODO_APPROOT)%'
|
||||
combodo.absolute_url: '%env(string:COMBODO_ABSOLUTE_URL)%'
|
||||
combodo.conf.app_icon_url: '%env(string:COMBODO_CONF_APP_ICON_URL)%'
|
||||
combodo.modules.absolute_url: '%env(string:COMBODO_MODULES_ABSOLUTE_URL)%'
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1,4 @@
|
||||
@import "themes/all";
|
||||
@import '../../../../../css/common/main.scss';
|
||||
@import "utils/all";
|
||||
@import "pages/base";
|
||||
@import "themes/all";
|
||||
|
||||
@@ -5,5 +5,4 @@
|
||||
@import "modal";
|
||||
@import "form";
|
||||
@import "input";
|
||||
@import "caselog";
|
||||
@import "progress-bar";
|
||||
@import "caselog";
|
||||
@@ -1,21 +1,298 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-button--padding-y: 6px !default;
|
||||
$ipb-button--padding-x: 9px !default;
|
||||
|
||||
$ipb-button-colors: (
|
||||
'' : (
|
||||
'primary': (
|
||||
'': (
|
||||
$common-color-blue-800,
|
||||
$common-color-white-100,
|
||||
$common-color-blue-900
|
||||
),
|
||||
':hover': (
|
||||
$common-color-blue-700,
|
||||
$common-color-white-100,
|
||||
$common-color-blue-800
|
||||
),
|
||||
':active': (
|
||||
$common-color-blue-900,
|
||||
$common-color-white-100,
|
||||
$common-color-blue-950
|
||||
),
|
||||
':disabled': (
|
||||
$common-color-blue-200,
|
||||
$common-color-blue-600,
|
||||
$common-color-blue-300
|
||||
),
|
||||
),
|
||||
'default': (
|
||||
'': (
|
||||
$common-color-white-100,
|
||||
$common-color-grey-800,
|
||||
$common-color-grey-600
|
||||
),
|
||||
':hover': (
|
||||
$common-color-grey-100,
|
||||
$common-color-grey-900,
|
||||
$common-color-grey-700
|
||||
),
|
||||
':active': (
|
||||
$common-color-grey-200,
|
||||
$common-color-grey-900,
|
||||
$common-color-grey-700
|
||||
),
|
||||
':disabled': (
|
||||
$common-color-grey-200,
|
||||
$common-color-grey-700,
|
||||
$common-color-grey-300
|
||||
),
|
||||
),
|
||||
'success': (
|
||||
'': (
|
||||
$common-color-success-900,
|
||||
$common-color-white-100,
|
||||
$common-color-success-900
|
||||
),
|
||||
':hover': (
|
||||
$common-color-success-800,
|
||||
$common-color-green-100,
|
||||
$common-color-success-900
|
||||
),
|
||||
':active': (
|
||||
$common-color-success-950,
|
||||
$common-color-green-100,
|
||||
$common-color-success-950
|
||||
),
|
||||
':disabled': (
|
||||
$common-color-grey-200,
|
||||
$common-color-grey-700,
|
||||
$common-color-grey-300
|
||||
),
|
||||
),
|
||||
'warning': (
|
||||
'': (
|
||||
$common-color-warning-700,
|
||||
$common-color-white-100,
|
||||
$common-color-warning-900
|
||||
),
|
||||
':hover': (
|
||||
$common-color-warning-600,
|
||||
$common-color-warning-100,
|
||||
$common-color-warning-700
|
||||
),
|
||||
':active': (
|
||||
$common-color-warning-800,
|
||||
$common-color-warning-100,
|
||||
$common-color-warning-900
|
||||
),
|
||||
':disabled': (
|
||||
$common-color-grey-200,
|
||||
$common-color-grey-700,
|
||||
$common-color-grey-300
|
||||
),
|
||||
),
|
||||
'danger': (
|
||||
'': (
|
||||
$common-color-danger-800,
|
||||
$common-color-white-100,
|
||||
$common-color-danger-900
|
||||
),
|
||||
':hover': (
|
||||
$common-color-danger-700,
|
||||
$common-color-danger-100,
|
||||
$common-color-danger-800
|
||||
),
|
||||
':active': (
|
||||
$common-color-danger-900,
|
||||
$common-color-danger-100,
|
||||
$common-color-danger-950
|
||||
),
|
||||
':disabled': (
|
||||
$common-color-grey-200,
|
||||
$common-color-grey-700,
|
||||
$common-color-grey-300
|
||||
),
|
||||
),
|
||||
'info': (
|
||||
'': (
|
||||
$common-color-information-800,
|
||||
$common-color-white-100,
|
||||
$common-color-information-900
|
||||
),
|
||||
':hover': (
|
||||
$common-color-information-700,
|
||||
$common-color-information-100,
|
||||
$common-color-information-800
|
||||
),
|
||||
':active': (
|
||||
$common-color-information-900,
|
||||
$common-color-information-100,
|
||||
$common-color-information-950
|
||||
),
|
||||
':disabled': (
|
||||
$common-color-grey-200,
|
||||
$common-color-grey-700,
|
||||
$common-color-grey-300
|
||||
),
|
||||
),
|
||||
),
|
||||
'alternative' : (
|
||||
'primary': (
|
||||
'': (
|
||||
$common-color-transparent,
|
||||
$common-color-blue-800,
|
||||
$common-color-transparent
|
||||
),
|
||||
':hover': (
|
||||
$common-color-blue-100,
|
||||
$common-color-blue-900,
|
||||
$common-color-blue-100
|
||||
),
|
||||
':active': (
|
||||
$common-color-blue-200,
|
||||
$common-color-blue-900,
|
||||
$common-color-blue-200
|
||||
),
|
||||
':disabled': (
|
||||
$common-color-blue-200,
|
||||
$common-color-blue-600,
|
||||
$common-color-blue-300
|
||||
),
|
||||
),
|
||||
'default': (
|
||||
'': (
|
||||
$common-color-transparent,
|
||||
$common-color-grey-800,
|
||||
$common-color-transparent
|
||||
),
|
||||
':hover': (
|
||||
$common-color-grey-200,
|
||||
$common-color-grey-900,
|
||||
$common-color-grey-200
|
||||
),
|
||||
':active': (
|
||||
$common-color-grey-300,
|
||||
$common-color-grey-900,
|
||||
$common-color-grey-300
|
||||
),
|
||||
':disabled': (
|
||||
$common-color-transparent,
|
||||
$common-color-grey-500,
|
||||
$common-color-transparent
|
||||
),
|
||||
),
|
||||
'success': (
|
||||
'': (
|
||||
$common-color-transparent,
|
||||
$common-color-success-900,
|
||||
$common-color-transparent
|
||||
),
|
||||
':hover': (
|
||||
$common-color-success-100,
|
||||
$common-color-success-900,
|
||||
$common-color-success-100
|
||||
),
|
||||
':active': (
|
||||
$common-color-success-200,
|
||||
$common-color-success-900,
|
||||
$common-color-success-200
|
||||
),
|
||||
':disabled': (
|
||||
$common-color-grey-200,
|
||||
$common-color-grey-700,
|
||||
$common-color-grey-300
|
||||
),
|
||||
),
|
||||
'warning': (
|
||||
'': (
|
||||
$common-color-transparent,
|
||||
$common-color-warning-800,
|
||||
$common-color-transparent
|
||||
),
|
||||
':hover': (
|
||||
$common-color-warning-100,
|
||||
$common-color-warning-900,
|
||||
$common-color-warning-100
|
||||
),
|
||||
':active': (
|
||||
$common-color-warning-200,
|
||||
$common-color-warning-900,
|
||||
$common-color-warning-200
|
||||
),
|
||||
':disabled': (
|
||||
$common-color-grey-200,
|
||||
$common-color-grey-700,
|
||||
$common-color-grey-300
|
||||
),
|
||||
),
|
||||
'danger': (
|
||||
'': (
|
||||
$common-color-transparent,
|
||||
$common-color-danger-800,
|
||||
$common-color-transparent
|
||||
),
|
||||
':hover': (
|
||||
$common-color-danger-100,
|
||||
$common-color-danger-800,
|
||||
$common-color-danger-100
|
||||
),
|
||||
':active': (
|
||||
$common-color-danger-200,
|
||||
$common-color-danger-800,
|
||||
$common-color-danger-200
|
||||
),
|
||||
':disabled': (
|
||||
$common-color-grey-200,
|
||||
$common-color-grey-700,
|
||||
$common-color-grey-300
|
||||
),
|
||||
),
|
||||
'info': (
|
||||
'': (
|
||||
$common-color-transparent,
|
||||
$common-color-information-800,
|
||||
$common-color-transparent
|
||||
),
|
||||
':hover': (
|
||||
$common-color-information-100,
|
||||
$common-color-information-800,
|
||||
$common-color-information-100
|
||||
),
|
||||
':active': (
|
||||
$common-color-information-200,
|
||||
$common-color-information-800,
|
||||
$common-color-information-200
|
||||
),
|
||||
':disabled': (
|
||||
$common-color-grey-200,
|
||||
$common-color-grey-700,
|
||||
$common-color-grey-300
|
||||
),
|
||||
),
|
||||
),
|
||||
) !default;
|
||||
|
||||
.ipb-button, .btn{
|
||||
--ibp-button-border-radius-top-left: 4px;
|
||||
--ibp-button-border-radius-top-right: 4px;
|
||||
--ibp-button-border-radius-bottom-right: 4px;
|
||||
--ibp-button-border-radius-bottom-left: 4px;
|
||||
background-color: $common-color-white-100 !important;
|
||||
border-radius: var(--ibp-button-border-radius-top-left) var(--ibp-button-border-radius-top-right) var(--ibp-button-border-radius-bottom-right) var(--ibp-button-border-radius-bottom-left);
|
||||
border: solid 1px $common-color-blue-700;
|
||||
padding: $ipb-button--padding-y $ipb-button--padding-x;
|
||||
color: $common-color-blue-800 !important;
|
||||
cursor: pointer;
|
||||
@each $sType, $aColors in $ipb-button-colors {
|
||||
@each $sColor, $sPseudoClasses in $aColors {
|
||||
@each $sPseudoClass, $sAttributes in $sPseudoClasses {
|
||||
&.ipb-is-#{$sColor}#{if($sType != '', ".ipb-is-#{$sType}", '')}#{$sPseudoClass}, &.btn-#{$sColor}#{if($sType != '', ".#{$sType}", '')}#{$sPseudoClass} {
|
||||
background-color: nth($sAttributes, 1) !important;
|
||||
color: nth($sAttributes, 2) !important;
|
||||
border-color: nth($sAttributes, 3) !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@extend %common-font-size-150;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,27 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$messaging-self-primary-color: $common-color-blue-100 !default;
|
||||
$messaging-self-secondary-color: $common-color-blue-800 !default;
|
||||
$messaging-1st-peer-primary-color: $white !default;
|
||||
$messaging-1st-peer-secondary-color: $common-color-grey-400 !default;
|
||||
$messaging-2nd-peer-primary-color: $white !default;
|
||||
$messaging-2nd-peer-secondary-color: $common-color-grey-400 !default;
|
||||
$messaging-3rd-peer-primary-color: $white !default;
|
||||
$messaging-3rd-peer-secondary-color: $common-color-grey-300 !default;
|
||||
$messaging-4th-peer-primary-color: $white !default;
|
||||
$messaging-4th-peer-secondary-color: $common-color-grey-400 !default;
|
||||
$messaging-5th-peer-primary-color: $white !default;
|
||||
$messaging-5th-peer-secondary-color: $common-color-grey-400 !default;
|
||||
|
||||
$ipb-caselog-thread--border: 1px solid $common-color-grey-400 !default;
|
||||
$ipb-caselog-thread--border-top: none !default;
|
||||
|
||||
$ipb-caselog-thread--header--padding: 12px !default;
|
||||
$ipb-caselog-thread--header--background-color: $common-color-white-100 !default;
|
||||
$ipb-caselog-thread--header--span--color: $common-color-grey-800 !default;
|
||||
|
||||
$ipb-caselog-thread--header-toggler--color: inherit !default;
|
||||
|
||||
$ipb-caselog-thread--header-toggler--hover--active-focus--color: inherit !default;
|
||||
|
||||
$ipb-caselog-thread--header-toggler--not-first-child--margin: 0 0.4em 0 0.2em !default;
|
||||
|
||||
@@ -16,24 +30,33 @@ $ipb-caselog-thread--header-info--first-child--margin-left: 0 !default;
|
||||
$ipb-caselog-thread--header-info--span--span--margin-left: $ipb-caselog-thread--header-info--span--margin-left !default;
|
||||
|
||||
$ipb-caselog-thread--content--padding: 12px !default;
|
||||
$ipb-caselog-thread--content--background-color: $common-color-grey-100 !default;
|
||||
|
||||
$ipb-caselog-thread--date--margin-bottom: 10px !default;
|
||||
$ipb-caselog-thread--date--color: $common-color-grey-800 !default;
|
||||
|
||||
$ipb-caselog-thread--block--min-height: 40px !default;
|
||||
$ipb-caselog-thread--block--margin-bottom: 15px !default;
|
||||
$ipb-caselog-thread--block--last-child--margin-bottom: 0 !default;
|
||||
|
||||
$ipb-caselog-thread--block-medallion--block-entries--border: 1px solid $common-color-grey-200 !default;
|
||||
|
||||
$ipb-caselog-thread--block-medallion--width: 40px !default;
|
||||
$ipb-caselog-thread--block-medallion--height: $ipb-caselog-thread--block-medallion--width !default;
|
||||
$ipb-caselog-thread--block-medallion--color: $common-color-blue-800 !default;
|
||||
$ipb-caselog-thread--block-medallion--background-color: $common-color-blue-100 !default;
|
||||
|
||||
$ipb-caselog-thread--block-user--margin-left: 54px !default;
|
||||
$ipb-caselog-thread--block-user--color: $ipb-caselog-thread--block-medallion--color !default;
|
||||
|
||||
$ipb-caselog-thread--block-entries--margin-x: 60px !default;
|
||||
$ipb-caselog-thread--block-entries--border-radius: $common-border-radius-500 !default;
|
||||
$ipb-caselog-thread--block-entries--background-color: $ipb-caselog-thread--block-medallion--background-color !default;
|
||||
$ipb-caselog-thread--block-entries--color: $ipb-caselog-thread--block-medallion--color !default;
|
||||
|
||||
$ipb-caselog-thread--block-entry--padding-y: 8px !default;
|
||||
$ipb-caselog-thread--block-entry--padding-x: 10px !default;
|
||||
$ipb-caselog-thread--block-entry--border-bottom: 1px solid $common-color-grey-200 !default;
|
||||
|
||||
$ipb-caselog-thread--block-entry-content--height: 0px !default;
|
||||
|
||||
@@ -45,10 +68,24 @@ $ipb-caselog-thread--block-entry-toggler--top: 2px !default;
|
||||
$ipb-caselog-thread--block-entry-toggler--right: 5px !default;
|
||||
$ipb-caselog-thread--block-entry-toggler--padding-y: 2px !default;
|
||||
$ipb-caselog-thread--block-entry-toggler--padding-x: 5px !default;
|
||||
$ipb-caselog-thread--block-entry-toggler--background-color: $ipb-caselog-thread--block-medallion--background-color !default;
|
||||
|
||||
$ipb-caselog-thread--block-me--block-user--margin-right: 54px !default;
|
||||
$ipb-caselog-thread--block-me--block-entries--margin-left: initial !default;
|
||||
$ipb-caselog-thread--block-me--block-entries--margin-right: $ipb-caselog-thread--block-entries--margin-x !default;
|
||||
$ipb-caselog-thread--block-me--block-entry--first--content--border-left-color: transparent !default;
|
||||
$ipb-caselog-thread--block-me--block-entry--first--content--border-right-color: $ipb-caselog-thread--block-medallion--background-color !default;
|
||||
|
||||
|
||||
|
||||
$ipb-caselog-thread--block-colors: (
|
||||
1: ($common-color-white-100, $common-color-grey-700),
|
||||
2: ($common-color-white-100, $common-color-grey-700),
|
||||
3: ($common-color-white-100, $common-color-grey-700),
|
||||
4: ($common-color-white-100, $common-color-grey-700),
|
||||
5: ($common-color-white-100, $common-color-grey-700)
|
||||
);
|
||||
|
||||
|
||||
$messaging-block-medallion-size: 40px !default;
|
||||
$messaging-block-entries-margin-x: 60px !default;
|
||||
@@ -56,22 +93,28 @@ $messaging-block-entries-margin-x: 60px !default;
|
||||
|
||||
.ipb-caselog-thread {
|
||||
position: relative;
|
||||
border: $ipb-caselog-thread--border;
|
||||
border-top: $ipb-caselog-thread--border-top;
|
||||
}
|
||||
.ipb-caselog-thread--header{
|
||||
padding: $ipb-caselog-thread--header--padding;
|
||||
background-color: $ipb-caselog-thread--header--background-color;
|
||||
border-bottom: none;
|
||||
|
||||
@extend %common-font-size-100;
|
||||
|
||||
span{
|
||||
color: $ipb-caselog-thread--header--span--color;
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--header-toggler{
|
||||
cursor: pointer;
|
||||
color: $ipb-caselog-thread--header-toggler--color;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover,
|
||||
&:active,
|
||||
&:focus{
|
||||
color: $ipb-caselog-thread--header-toggler--hover--active-focus--color;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@@ -99,11 +142,13 @@ $messaging-block-entries-margin-x: 60px !default;
|
||||
|
||||
.ipb-caselog-thread--content{
|
||||
padding: $ipb-caselog-thread--content--padding;
|
||||
background-color: $ipb-caselog-thread--content--background-color;
|
||||
}
|
||||
|
||||
.ipb-caselog-thread--date{
|
||||
margin-bottom: $ipb-caselog-thread--date--margin-bottom;
|
||||
text-align: center;
|
||||
color: $ipb-caselog-thread--date--color;
|
||||
|
||||
@extend %common-font-size-150;
|
||||
&:first-child{
|
||||
@@ -120,7 +165,10 @@ $messaging-block-entries-margin-x: 60px !default;
|
||||
margin-bottom: $ipb-caselog-thread--block--last-child--margin-bottom;
|
||||
}
|
||||
}
|
||||
|
||||
.ipb-caselog-thread--block-medallion,
|
||||
.ipb-caselog-thread--block-entries{
|
||||
border: $ipb-caselog-thread--block-medallion--block-entries--border;
|
||||
}
|
||||
|
||||
.ipb-caselog-thread--block-medallion{
|
||||
position: absolute;
|
||||
@@ -129,11 +177,13 @@ $messaging-block-entries-margin-x: 60px !default;
|
||||
width: $ipb-caselog-thread--block-medallion--width;
|
||||
height: $ipb-caselog-thread--block-medallion--height;
|
||||
line-height: $ipb-caselog-thread--block-medallion--height;
|
||||
color: $ipb-caselog-thread--block-medallion--color; /* .ipb-caselog-thread--block-entries color */
|
||||
text-align: center;
|
||||
@extend %common-font-size-250;
|
||||
|
||||
background-size: 100%; /* Full size is necessary for images with filled background to fit nicely in the medallion, even if this means that images with a transparent background might appear cropped */
|
||||
background-position: center center;
|
||||
background-color: $ipb-caselog-thread--block-medallion--background-color; /* .ipb-caselog-thread--block-entries background-color */
|
||||
background-repeat: no-repeat;
|
||||
border-radius: 100%;
|
||||
}
|
||||
@@ -141,6 +191,7 @@ $messaging-block-entries-margin-x: 60px !default;
|
||||
.ipb-caselog-thread--block-user{
|
||||
display: none;
|
||||
margin-left: $ipb-caselog-thread--block-user--margin-left;
|
||||
color: $ipb-caselog-thread--block-user--color; /* .ipb-caselog-thread--block-entries background-color */
|
||||
|
||||
@extend %common-font-ral-bol-100;
|
||||
}
|
||||
@@ -151,11 +202,14 @@ $messaging-block-entries-margin-x: 60px !default;
|
||||
margin-left: $ipb-caselog-thread--block-entries--margin-x;
|
||||
max-width: calc(100% - #{$ipb-caselog-thread--block-entries--margin-x});
|
||||
border-radius: $ipb-caselog-thread--block-entries--border-radius;
|
||||
background-color: $ipb-caselog-thread--block-entries--background-color;
|
||||
color: $ipb-caselog-thread--block-entries--color;
|
||||
}
|
||||
|
||||
.ipb-caselog-thread--block-entry{
|
||||
position: relative;
|
||||
padding: $ipb-caselog-thread--block-entry--padding-y $ipb-caselog-thread--block-entry--padding-x;
|
||||
border-bottom: $ipb-caselog-thread--block-entry--border-bottom;
|
||||
|
||||
img{
|
||||
max-width: 100%;
|
||||
@@ -210,13 +264,9 @@ $messaging-block-entries-margin-x: 60px !default;
|
||||
padding: $ipb-caselog-thread--block-entry-toggler--padding-y $ipb-caselog-thread--block-entry-toggler--padding-x;
|
||||
opacity: 0;
|
||||
cursor: pointer;
|
||||
background-color: $ipb-caselog-thread--block-entry-toggler--background-color; /* .ipb-caselog-thread--block-entries background-color */
|
||||
transition: all 0.2s linear;
|
||||
}
|
||||
.ipb-caselog-thread--block-entry:not(.closed):hover{
|
||||
.ipb-caselog-thread--block-entry-toggler{
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.ipb-caselog-thread--block-me{
|
||||
text-align: right;
|
||||
@@ -247,9 +297,166 @@ $messaging-block-entries-margin-x: 60px !default;
|
||||
.ipb-caselog-thread--block-entry-content:before{
|
||||
left: initial;
|
||||
right: -15px;
|
||||
border-right-color: transparent;
|
||||
border-left-color: $ipb-caselog-thread--block-me--block-entry--first--content--border-right-color; /* .ipb-caselog-thread--block-entries background-color */
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ipb-caselog-thread--block-color-1{
|
||||
.ipb-caselog-thread--block-medallion{
|
||||
color: $messaging-1st-peer-secondary-color;
|
||||
background-color: $messaging-1st-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-user{
|
||||
color: $messaging-1st-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-entries{
|
||||
color: $messaging-1st-peer-secondary-color;
|
||||
background-color: $messaging-1st-peer-primary-color;
|
||||
|
||||
.ipb-caselog-thread--block-entry{
|
||||
.ipb-caselog-thread--block-entry-toggler{
|
||||
background-color: $messaging-1st-peer-primary-color;
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-entry:first-child{
|
||||
.ipb-caselog-thread--block-entry-content:before{
|
||||
border-top-color: $messaging-1st-peer-primary-color;
|
||||
border-right-color: $messaging-1st-peer-primary-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-color-2{
|
||||
.ipb-caselog-thread--block-medallion{
|
||||
color: $messaging-2nd-peer-secondary-color;
|
||||
background-color: $messaging-2nd-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-user{
|
||||
color: $messaging-2nd-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-entries{
|
||||
color: $messaging-2nd-peer-secondary-color;
|
||||
background-color: $messaging-2nd-peer-primary-color;
|
||||
|
||||
.ipb-caselog-thread--block-entry{
|
||||
.ipb-caselog-thread--block-entry-toggler{
|
||||
background-color: $messaging-2nd-peer-primary-color;
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-entry:first-child{
|
||||
.ipb-caselog-thread--block-entry-content:before{
|
||||
border-top-color: $messaging-2nd-peer-primary-color;
|
||||
border-right-color: $messaging-2nd-peer-primary-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-color-3{
|
||||
.ipb-caselog-thread--block-medallion{
|
||||
color: $messaging-3rd-peer-secondary-color;
|
||||
background-color: $messaging-3rd-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-user{
|
||||
color: $messaging-3rd-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-entries{
|
||||
color: $messaging-3rd-peer-secondary-color;
|
||||
background-color: $messaging-3rd-peer-primary-color;
|
||||
|
||||
.ipb-caselog-thread--block-entry{
|
||||
.ipb-caselog-thread--block-entry-toggler{
|
||||
background-color: $messaging-3rd-peer-primary-color;
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-entry:first-child{
|
||||
.ipb-caselog-thread--block-entry-content:before{
|
||||
border-top-color: $messaging-3rd-peer-primary-color;
|
||||
border-right-color: $messaging-3rd-peer-primary-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-color-4{
|
||||
.ipb-caselog-thread--block-medallion{
|
||||
color: $messaging-4th-peer-secondary-color;
|
||||
background-color: $messaging-4th-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-user{
|
||||
color: $messaging-4th-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-entries{
|
||||
color: $messaging-4th-peer-secondary-color;
|
||||
background-color: $messaging-4th-peer-primary-color;
|
||||
|
||||
.ipb-caselog-thread--block-entry{
|
||||
.ipb-caselog-thread--block-entry-toggler{
|
||||
background-color: $messaging-4th-peer-primary-color;
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-entry:first-child{
|
||||
.ipb-caselog-thread--block-entry-content:before{
|
||||
border-top-color: $messaging-4th-peer-primary-color;
|
||||
border-right-color: $messaging-4th-peer-primary-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-color-5{
|
||||
.ipb-caselog-thread--block-medallion{
|
||||
color: $messaging-5th-peer-secondary-color;
|
||||
background-color: $messaging-5th-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-user{
|
||||
color: $messaging-5th-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-entries{
|
||||
color: $messaging-5th-peer-secondary-color;
|
||||
background-color: $messaging-5th-peer-primary-color;
|
||||
|
||||
|
||||
.ipb-caselog-thread--block-entry{
|
||||
.ipb-caselog-thread--block-entry-toggler{
|
||||
background-color: $messaging-5th-peer-primary-color;
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-entry:first-child{
|
||||
.ipb-caselog-thread--block-entry-content:before{
|
||||
border-top-color: $messaging-5th-peer-primary-color;
|
||||
border-right-color: $messaging-5th-peer-primary-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@each $index, $colors in $ipb-caselog-thread--block-colors {
|
||||
.ipb-caselog-thread--block-color-#{$index} {
|
||||
.ipb-caselog-thread--block-medallion {
|
||||
color: nth($colors, 2);
|
||||
background-color: nth($colors, 1);
|
||||
}
|
||||
.ipb-caselog-thread--block-user {
|
||||
color: nth($colors, 1);
|
||||
}
|
||||
.ipb-caselog-thread--block-entries {
|
||||
color: nth($colors, 2);
|
||||
background-color: nth($colors, 1);
|
||||
|
||||
.ipb-caselog-thread--block-entry {
|
||||
.ipb-caselog-thread--block-entry-toggler {
|
||||
background-color: nth($colors, 1);
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-entry:first-child {
|
||||
.ipb-caselog-thread--block-entry-content:before {
|
||||
border-top-color: nth($colors, 1);
|
||||
border-right-color: nth($colors, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-dropdown--background-color: $ipb-color-white-100 !default;
|
||||
$ipb-dropdown--border: 1px solid $ipb-color-grey-300 !default;
|
||||
$ipb-dropdown--border-radius: $common-border-radius-400 !default;
|
||||
|
||||
$ipb-dropdown--li--background-color: $ipb-dropdown--background-color !default;
|
||||
|
||||
$ipb-dropdown--a--padding-y: $common-spacing-400 !default;
|
||||
$ipb-dropdown--a--padding-x: $common-spacing-500 !default;
|
||||
$ipb-dropdown--a--border-radius: $ipb-dropdown--border-radius !default;
|
||||
$ipb-dropdown--a--color: $ipb-color-grey-900 !default;
|
||||
|
||||
$ipb-dropdown--li--hover--background-color: $ipb-color-grey-200 !default;
|
||||
$ipb-dropdown--li--hover--a--color: $ipb-color-grey-800 !default;
|
||||
|
||||
$ipb-dropdown--icon--margin-right: $common-spacing-300 !default;
|
||||
|
||||
@@ -16,9 +18,12 @@ ipb-dropdown {
|
||||
display: none;
|
||||
position: absolute;
|
||||
width: max-content;
|
||||
background: $ipb-dropdown--background-color;
|
||||
border: $ipb-dropdown--border;
|
||||
border-radius: $ipb-dropdown--border-radius;
|
||||
list-style: none;
|
||||
li {
|
||||
background-color: $ipb-dropdown--li--background-color;
|
||||
a {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
@@ -26,6 +31,13 @@ ipb-dropdown {
|
||||
border-radius: $ipb-dropdown--a--border-radius;
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
color: $ipb-dropdown--a--color;
|
||||
}
|
||||
&:hover {
|
||||
background: $ipb-dropdown--li--hover--background-color;
|
||||
a {
|
||||
color: $ipb-dropdown--li--hover--a--color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb--fieldset--background-color: $common-color-grey-50 !default;
|
||||
$ipb--fieldset--padding-y: 10px !default;
|
||||
$ipb--fieldset--padding-x: 7px !default;
|
||||
$ipb--fieldset--border: 1px solid $common-color-grey-200 !default;
|
||||
$ipb--fieldset--border-radius: $common-border-radius-500 !default;
|
||||
|
||||
$ipb--fieldset--legend--padding-y: $common-spacing-0 !default;
|
||||
@@ -14,12 +10,19 @@ $ipb--fieldset--legend--padding-x: 13px !default;
|
||||
$ipb-field--has-tooltip-or-is-mandatory--vertical-align: top !default;
|
||||
$ipb-field--has-tooltip-or-is-mandatory--left: $common-spacing-200 !default;
|
||||
|
||||
$ipb-field--has-tooltip--content: "\f05a" !default;
|
||||
$ipb-field--has-tooltip--color: $common-color-grey-700 !default;
|
||||
|
||||
$ipb-field--is-mandatory--content: "\f069" !default;
|
||||
$ipb-field--is-mandatory--color: $common-color-orange-700 !default;
|
||||
$ipb-field--is-mandatory--font-size: 0.6rem !default;
|
||||
|
||||
.form_fields {
|
||||
fieldset {
|
||||
background-color: $common-color-grey-50;
|
||||
padding: $ipb--fieldset--padding-y $ipb--fieldset--padding-x;
|
||||
border-radius: $ipb--fieldset--border-radius;
|
||||
border: $ipb--fieldset--border;
|
||||
legend {
|
||||
padding: $ipb--fieldset--legend--padding-y $ipb--fieldset--legend--padding-x;
|
||||
}
|
||||
@@ -35,10 +38,14 @@ $ipb-field--is-mandatory--font-size: 0.6rem !default;
|
||||
}
|
||||
|
||||
.form_field_label > .control-label[data-tooltip-instantiated="true"]:after {
|
||||
content: $ipb-field--has-tooltip--content;
|
||||
color: $ipb-field--has-tooltip--color;
|
||||
cursor: pointer;
|
||||
@extend %common-font-size-50;
|
||||
}
|
||||
|
||||
.form_field .form_mandatory .control-label:after{
|
||||
content: $ipb-field--is-mandatory--content;
|
||||
color: $ipb-field--is-mandatory--color;
|
||||
font-size: $common-font-size-20;
|
||||
};
|
||||
@@ -1,37 +1,18 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-form-control--border-radius: $common-border-radius-300 !default;
|
||||
$ipb-form-control--color: $common-color-grey-800 !default;
|
||||
$ipb-form-control--border-radius: $common-border-radius-500 !default;
|
||||
$ipb-form-control--box-shadow: none !default;
|
||||
$ipb-form-control--input-group-addon--border-top-right-radius: 0 !default;
|
||||
$ipb-form-control--input-group-addon--border-bottom-right-radius: 0 !default;
|
||||
|
||||
$ipb-input-group-addon--border-radius: $ipb-form-control--border-radius !default;
|
||||
|
||||
$ipb-input-group-addon--form-control--border-top-left-radius: 0 !default;
|
||||
$ipb-input-group-addon--form-control--border-bottom-left-radius: 0 !default;
|
||||
|
||||
$ipb-form-control--is-focused--border-color: $common-color-primary-700 !default;
|
||||
$ipb-form-control--is-focused--box-shadow: none !default;
|
||||
|
||||
.form-control {
|
||||
border-radius: $ipb-form-control--border-radius;
|
||||
color: $ipb-form-control--color;
|
||||
border-radius: $common-border-radius-500 !important;
|
||||
-webkit-box-shadow: $ipb-form-control--box-shadow;
|
||||
box-shadow: $ipb-form-control--box-shadow;
|
||||
&:focus {
|
||||
border-color: $ipb-form-control--is-focused--border-color;
|
||||
box-shadow: $ipb-form-control--is-focused--box-shadow;
|
||||
-webkit-box-shadow: $ipb-form-control--is-focused--box-shadow;
|
||||
}
|
||||
}
|
||||
|
||||
.form-control:has(+ .input-group-addon) {
|
||||
border-top-right-radius: $ipb-form-control--input-group-addon--border-top-right-radius;
|
||||
border-bottom-right-radius: $ipb-form-control--input-group-addon--border-bottom-right-radius;
|
||||
}
|
||||
|
||||
.form-control + .input-group-addon {
|
||||
border-top-left-radius: $ipb-input-group-addon--form-control--border-top-left-radius;
|
||||
border-bottom-left-radius: $ipb-input-group-addon--form-control--border-bottom-left-radius;
|
||||
}
|
||||
@@ -1,28 +1,36 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
/* SCSS variables */
|
||||
$ipb-modal--max-height: 90vh !default;
|
||||
$ipb-modal--max-width: 90vw !default;
|
||||
$ipb-modal--border-radius: $common-border-radius-500 !default;
|
||||
|
||||
$ipb-modal--header--padding: $common-spacing-500 !default;
|
||||
$ipb-modal--header--background-color: $common-color-white-100 !default;
|
||||
$ipb-modal--header--color: $common-color-grey-900 !default;
|
||||
$ipb-modal--header--border-radius: $ipb-modal--border-radius $ipb-modal--border-radius 0 0 !default;
|
||||
|
||||
$ipb-modal--footer-padding: $ipb-modal--header--padding !default;
|
||||
$ipb-modal--header--close--color: $common-color-grey-900 !default;
|
||||
$ipb-modal--header--close--opacity: 1 !default;
|
||||
$ipb-modal--header--close--hover--color: $common-color-grey-700 !default;
|
||||
|
||||
$ipb-modal--backdrop--opacity: 0.6 !default;
|
||||
$ipb-modal--backdrop--background-color: $common-color-blue-grey-800 !default;
|
||||
$ipb-modal--backdrop--backdrop-filter: blur(2px) !default;
|
||||
|
||||
$ipb-modal--content--border-radius: $ipb-modal--border-radius !default;
|
||||
$ipb-modal--content--border: 1px solid $common-color-grey-400 !default;
|
||||
|
||||
$ipb-modal--title--color: $ipb-modal--header--color !default;
|
||||
$ipb-modal--title--to-clipboard--margin: $common-spacing-200 !default;
|
||||
$ipb-modal--title--span--margin-left: 5px !default;
|
||||
$ipb-modal--title--span--separator--margin-right: $common-spacing-200 !default;
|
||||
$ipb-modal--title--span--separator--width: $common-size-100 !default;
|
||||
$ipb-modal--title--span--separator--height: $ipb-modal--title--span--separator--width !default;
|
||||
$ipb-modal--title--span--separator--margin-right: $common-spacing-200 !default;
|
||||
$ipb-modal--title--span--separator--margin-top: calc(-1 * #{$ipb-modal--title--span--separator--height} / 2) !default;
|
||||
$ipb-modal--title--span--separator--border-radius: $common-border-radius-full !default;
|
||||
$ipb-modal--title--span--separator--background-color: $common-color-grey-800 !default;
|
||||
|
||||
|
||||
|
||||
@@ -32,28 +40,40 @@ $ipb-modal--title--span--separator--border-radius: $common-border-radius-full !d
|
||||
max-height: $ipb-modal--max-height !important;
|
||||
max-width: $ipb-modal--max-width !important;
|
||||
border-radius: $ipb-modal--border-radius;
|
||||
.modal-header {
|
||||
background-color: $ipb-modal--header--background-color;
|
||||
color: $ipb-modal--header--color;
|
||||
}
|
||||
}
|
||||
|
||||
.modal-backdrop.in {
|
||||
opacity: $ipb-modal--backdrop--opacity;
|
||||
background-color: $ipb-modal--backdrop--background-color;
|
||||
backdrop-filter: $ipb-modal--backdrop--backdrop-filter;
|
||||
}
|
||||
|
||||
.modal-content {
|
||||
border-radius: $ipb-modal--content--border-radius !important;
|
||||
border: $ipb-modal--content--border;
|
||||
box-shadow: none !important;
|
||||
-webkit-box-shadow: none !important;
|
||||
}
|
||||
|
||||
.modal-header {
|
||||
padding: $ipb-modal--header--padding;
|
||||
border-radius:$ipb-modal--header--border-radius !important;
|
||||
.close {
|
||||
color: $ipb-modal--header--close--color;
|
||||
opacity: $ipb-modal--header--close--opacity;
|
||||
|
||||
@extend %common-font-size-400;
|
||||
&:hover {
|
||||
color: $ipb-modal--header--close--hover--color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.modal-footer {
|
||||
padding: $ipb-modal--footer-padding;
|
||||
}
|
||||
|
||||
.modal-title {
|
||||
color: $ipb-modal--title--color !important;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@@ -64,10 +84,10 @@ $ipb-modal--title--span--separator--border-radius: $common-border-radius-full !d
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin-right: $ipb-modal--title--span--separator--margin-right;
|
||||
margin-top: $ipb-modal--title--span--separator--margin-top;
|
||||
width: $ipb-modal--title--span--separator--width;
|
||||
height: $ipb-modal--title--span--separator--height;
|
||||
border-radius: $ipb-modal--title--span--separator--border-radius;
|
||||
background-color: $ipb-modal--title--span--separator--background-color;
|
||||
}
|
||||
}
|
||||
.url-to-clipboard.url-to-clipboard-icon {
|
||||
|
||||
@@ -1,12 +1,8 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-panel--border-radius: $common-border-radius-300!default;
|
||||
|
||||
|
||||
.ipb-panel {
|
||||
border: 1px solid $common-color-grey-400;
|
||||
border-radius: 0 $common-border-radius-500 $common-border-radius-500 $common-border-radius-500;
|
||||
box-shadow: none;
|
||||
-webkit-box-shadow: none;
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
$ipb-progress--height: $common-size-350 !default;
|
||||
$ipb-progress--border-radius: $common-border-radius-500 !default;
|
||||
|
||||
$ipb-progress--bar--line-height: $ipb-progress--height !default;
|
||||
$ipb-progress--bar--border-radius: $ipb-progress--border-radius !default;
|
||||
|
||||
.ipb-progress, .progress {
|
||||
height: $ipb-progress--height;
|
||||
border-radius: $ipb-progress--border-radius;
|
||||
}
|
||||
|
||||
.ipb-progress--bar, .progress-bar {
|
||||
background-color: $ipb-color-primary-600;
|
||||
color: #ffffff;
|
||||
line-height: $ipb-progress--bar--line-height;
|
||||
border-radius: $ipb-progress--bar--border-radius;
|
||||
|
||||
@extend %common-font-ral-med-150;
|
||||
}
|
||||
@@ -1,29 +1,23 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
@import "../node_modules/bulma-scss/utilities/mixins";
|
||||
@import "../../../../../../node_modules/bulma-scss/utilities/mixins";
|
||||
|
||||
/* SCSS variables */
|
||||
$ipb-tile--width: 450px !default;
|
||||
$ipb-tile--min-width: 150px !default;
|
||||
$ipb-tile--padding: $common-spacing-500 !default;
|
||||
$ipb-tile--margin: $common-spacing-400 !default;
|
||||
$ipb-tile--border-color: $common-color-grey-200 !default;
|
||||
$ipb-tile--border-width: 1px !default;
|
||||
$ipb-tile--border-radius: $common-border-radius-500 !default;
|
||||
|
||||
$ipb-tile--background-color: $common-color-white-100 !default;
|
||||
$ipb-tile--decoration--size: 44px !default;
|
||||
$ipb-tile--decoration--padding: $common-spacing-400 !default;
|
||||
$ipb-tile--decoration--hover--background: common-adjust-alpha($common-color-blue-700, .1) !default;
|
||||
$ipb-tile--decoration--background: common-adjust-lightness($ipb-tile--decoration--hover--background, 38%) !default;
|
||||
$ipb-tile--decoration--icon--color: $common-color-blue-700 !default;
|
||||
$ipb-tile--decoration--icon--font-size: $common-font-size-250 !default;
|
||||
|
||||
$ipb-tile--title--color: $common-base-variable--text-color !default;
|
||||
$ipb-tile--title--font-size: $common-font-size-400 !default;
|
||||
|
||||
$ipb-tile--manage-brick--chart--margin-top: $common-spacing-500 !default;
|
||||
$ipb-tile--manage-brick--badge--margin-top: $common-font-size-400 !default;
|
||||
$ipb-tile--manage-brick--badge--count--padding: 0 $common-spacing-300 !default;
|
||||
$ipb-tile--manage-brick--badge--count--font-size: $common-font-size-300 !default;
|
||||
$ipb-tile--manage-brick--badge--label--font-size: $common-font-size-100 !default;
|
||||
$ipb-tile--manage-brick--top-list--margin-top: $common-spacing-500 !default;
|
||||
$ipb-tile--description--color: $common-base-variable--text-color !default;
|
||||
|
||||
.ipb-tile{
|
||||
position: relative;
|
||||
@@ -32,12 +26,15 @@ $ipb-tile--manage-brick--top-list--margin-top: $common-spacing-500 !default;
|
||||
min-width: $ipb-tile--min-width;
|
||||
margin: $ipb-tile--margin;
|
||||
padding: $ipb-tile--padding;
|
||||
background-color: $ipb-tile--background-color;
|
||||
border: $ipb-tile--border-width solid $ipb-tile--border-color;
|
||||
border-radius: $ipb-tile--border-radius;
|
||||
white-space: normal;
|
||||
flex-grow: 1;
|
||||
|
||||
&[data-role="navigation-trigger"] {
|
||||
cursor: pointer;
|
||||
@include ipb-heavy-animated-border;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,6 +68,7 @@ $ipb-tile--manage-brick--top-list--margin-top: $common-spacing-500 !default;
|
||||
width: $ipb-tile--decoration--size;
|
||||
height: $ipb-tile--decoration--size;
|
||||
padding: $ipb-tile--decoration--padding;
|
||||
background-color: $ipb-tile--decoration--background;
|
||||
border-radius: $ipb-tile--border-radius;
|
||||
text-align: center;
|
||||
transition: background-color 1s ease;
|
||||
@@ -83,9 +81,15 @@ $ipb-tile--manage-brick--top-list--margin-top: $common-spacing-500 !default;
|
||||
}
|
||||
}
|
||||
}
|
||||
.ipb-tile:hover{
|
||||
.ipb-tile--decoration{
|
||||
background-color: $ipb-tile--decoration--hover--background;
|
||||
}
|
||||
}
|
||||
|
||||
.ipb-tile--decoration--icon {
|
||||
&.icon {
|
||||
color: $ipb-tile--decoration--icon--color;
|
||||
font-size: $ipb-tile--decoration--icon--font-size;
|
||||
}
|
||||
|
||||
@@ -98,6 +102,7 @@ $ipb-tile--manage-brick--top-list--margin-top: $common-spacing-500 !default;
|
||||
|
||||
.ipb-tile--title{
|
||||
flex-grow: 1;
|
||||
color: $ipb-tile--title--color;
|
||||
font-size: $ipb-tile--title--font-size;
|
||||
font-weight: bold;
|
||||
@include ipb-text-overflow-ellipsis;
|
||||
@@ -121,6 +126,8 @@ $ipb-tile--manage-brick--top-list--margin-top: $common-spacing-500 !default;
|
||||
/* description */
|
||||
|
||||
.ipb-tile--description{
|
||||
color: $ipb-tile--description--color;
|
||||
|
||||
@extend %common-font-ral-nor-150;
|
||||
}
|
||||
|
||||
@@ -137,19 +144,36 @@ $ipb-tile--manage-brick--top-list--margin-top: $common-spacing-500 !default;
|
||||
/* ManageBrick tile display */
|
||||
/****************************/
|
||||
|
||||
$ipb-tile--manage-brick--chart--margin-top: $common-spacing-500 !default;
|
||||
$ipb-tile--manage-brick--badge--margin-top: $common-font-size-400 !default;
|
||||
$ipb-tile--manage-brick--badge--count--padding: 0 $common-spacing-300 !default;
|
||||
$ipb-tile--manage-brick--badge--count--font-size: $common-font-size-300 !default;
|
||||
$ipb-tile--manage-brick--badge--label--font-size: $common-font-size-100 !default;
|
||||
$ipb-tile--manage-brick--badge--hover--item--background: common-adjust-alpha($common-base-variable--text-color, .1) !default;
|
||||
$ipb-tile--manage-brick--top-list--margin-top: $common-spacing-500 !default;
|
||||
|
||||
/* title */
|
||||
|
||||
.ipb-tile--manage .ipb-tile--title {
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
> span:first-child {
|
||||
@include ipb-text-overflow-ellipsis;
|
||||
}
|
||||
|
||||
> span:nth-child(2) {
|
||||
@include ipb-following-dot;
|
||||
|
||||
> .class-icon {
|
||||
width: 20px;
|
||||
margin-left: 5px;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/* chart */
|
||||
@@ -181,6 +205,10 @@ $ipb-tile--manage-brick--top-list--margin-top: $common-spacing-500 !default;
|
||||
font-size: $ipb-tile--manage-brick--badge--label--font-size;
|
||||
}
|
||||
|
||||
/* top list */
|
||||
|
||||
.ipb-tile--manage-brick--top-list {
|
||||
}
|
||||
|
||||
|
||||
/***********************/
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
@import "navigation-menu";
|
||||
@import "page";
|
||||
@import "home";
|
||||
@import "tabs";
|
||||
@import "home";
|
||||
@@ -1,7 +1,4 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
/* SCSS variables */
|
||||
|
||||
.ipb-home .ipb-page--main-wrapper:before{
|
||||
content: '';
|
||||
@@ -11,6 +8,8 @@
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-image: url("../img/backgrounds/dots-left-top.svg");
|
||||
background-size: 30%;
|
||||
background-position-y: top;
|
||||
background-position-x: left;
|
||||
background-repeat: no-repeat;
|
||||
@@ -25,6 +24,8 @@
|
||||
right: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-image: url("../img/backgrounds/dots-right-bottom.svg");
|
||||
background-size: 30%;
|
||||
background-position-y: bottom;
|
||||
background-position-x: right;
|
||||
background-repeat: no-repeat;
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
@import "../node_modules/bulma-scss/utilities/mixins";
|
||||
@import "../../../../../../node_modules/bulma-scss/utilities/mixins";
|
||||
|
||||
$ipb-navigation-menu--flex-column-gap: $common-spacing-300 !default;
|
||||
$ipb-navigation-menu--background-color: $common-color-blue-grey-900 !default;
|
||||
$ipb-navigation-menu--nav-vertical--width: 60px !default;
|
||||
$ipb-navigation-menu--nav-vertical--is-expanded--width: 280px !default;
|
||||
$ipb-navigation-menu--nav-horizontal--height: 56px !default;
|
||||
@@ -19,11 +14,16 @@ $ipb-navigation-menu--menu-entry--wrapper--flex-column-gap: $common-spacing-500
|
||||
$ipb-navigation-menu--menu-entry--size: 44px !default;
|
||||
$ipb-navigation-menu--menu-entry--border-radius: $common-border-radius-500 !default;
|
||||
$ipb-navigation-menu--menu-entry--padding: $common-spacing-300 !default;
|
||||
$ipb-navigation-menu--menu-entry--active--icon--color: $common-color-orange-600 !default;
|
||||
$ipb-navigation-menu--menu-entry--active--color: $common-color-grey-800 !default;
|
||||
$ipb-navigation-menu--menu-entry--active--background-color: $common-color-white-100 !default;
|
||||
$ipb-navigation-menu--menu-entry--icon-size: 28px !default;
|
||||
$ipb-navigation-menu--menu-entry--font-size: 2rem !default;
|
||||
$ipb-navigation-menu--separator--width: $common-spacing-400 !default;
|
||||
$ipb-navigation-menu--menu-entry--more--background-color: #455a6447 !default;
|
||||
$ipb-navigation-menu--user-part--flex-column-gap: $common-spacing-300 !default;
|
||||
$ipb-navigation-menu--user-card--flex-column-gap: $common-spacing-300;
|
||||
$ipb-navigation-menu--user-card--photo--background-color: #585653 !default;
|
||||
$ipb-navigation-menu--user-card--photo--size: 36px !default;
|
||||
$dropdown-menu--items-remainder--padding: $common-spacing-300 !default;
|
||||
$dropdown-menu--items-remainder--border-radius: $common-border-radius-700 !default;
|
||||
@@ -36,12 +36,18 @@ $dropdown-menu--items-remainder--border-radius: $common-border-radius-700 !defau
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border-radius: 0 $ipb-navigation-menu--border-radius $ipb-navigation-menu--border-radius 0;
|
||||
background-color: $ipb-navigation-menu--background-color;
|
||||
column-gap: $ipb-navigation-menu--flex-column-gap;
|
||||
|
||||
// in expanded state
|
||||
&.ipb-is-expanded {
|
||||
width: $ipb-navigation-menu--nav-vertical--is-expanded--width;
|
||||
|
||||
// expand menu toggle animation
|
||||
.ipb-navigation-menu--top-part--toggle--expand-menu {
|
||||
@include ipb-toggle-nav-animated-chevron-right;
|
||||
}
|
||||
|
||||
// make menu entry fill available space
|
||||
.ipb-navigation-menu--menu-entry--brick-item {
|
||||
width: 100%;
|
||||
@@ -77,6 +83,11 @@ $dropdown-menu--items-remainder--border-radius: $common-border-radius-700 !defau
|
||||
|
||||
}
|
||||
|
||||
// expand toggle menu
|
||||
.ipb-navigation-menu--top-part--toggle--expand-menu {
|
||||
@include ipb-toggle-nav;
|
||||
}
|
||||
|
||||
// SEPARATOR ////////////////////////////////////////////
|
||||
|
||||
.ipb-navigation-menu--separator {
|
||||
@@ -91,6 +102,7 @@ $dropdown-menu--items-remainder--border-radius: $common-border-radius-700 !defau
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 $ipb-navigation-menu--middle-part--is-vertical--padding;
|
||||
@include ipb-scrollbar;
|
||||
}
|
||||
|
||||
// menu entries
|
||||
@@ -107,10 +119,22 @@ $dropdown-menu--items-remainder--border-radius: $common-border-radius-700 !defau
|
||||
|
||||
// entry wrapper
|
||||
.ipb-navigation-menu--menu-entry--wrapper {
|
||||
|
||||
// entry title
|
||||
.ipb-navigation-menu--menu-entry--title {
|
||||
@include ipb-text-overflow-ellipsis;
|
||||
@extend %common-font-ral-nor-200;
|
||||
}
|
||||
|
||||
&.active .ipb-navigation-menu--menu-entry {
|
||||
background-color: $ipb-navigation-menu--menu-entry--active--background-color;
|
||||
color: $ipb-navigation-menu--menu-entry--active--color;
|
||||
|
||||
.ipb-navigation-menu--menu-entry--icon {
|
||||
color: $ipb-navigation-menu--menu-entry--active--icon--color;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// menu entry
|
||||
@@ -127,6 +151,8 @@ $dropdown-menu--items-remainder--border-radius: $common-border-radius-700 !defau
|
||||
align-items: center;
|
||||
column-gap: $ipb-navigation-menu--menu-entry--wrapper--flex-column-gap;
|
||||
border-radius: $ipb-navigation-menu--menu-entry--border-radius;
|
||||
color: whitesmoke;
|
||||
@include ipb-transition(#{"background-color, color"});
|
||||
|
||||
// entry icon
|
||||
.ipb-navigation-menu--menu-entry--icon {
|
||||
@@ -135,6 +161,13 @@ $dropdown-menu--items-remainder--border-radius: $common-border-radius-700 !defau
|
||||
font-size: $ipb-navigation-menu--menu-entry--font-size;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
// hover and focus effect
|
||||
&:hover, &:focus:not(.ipb-not-focusable) {
|
||||
color: white;
|
||||
background-color: $common-color-blue-grey-700;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// drop down items remainder
|
||||
@@ -145,6 +178,7 @@ $dropdown-menu--items-remainder--border-radius: $common-border-radius-700 !defau
|
||||
// drop down menu items remainder
|
||||
.ipb-dropdown-menu--items-remainder {
|
||||
padding: $dropdown-menu--items-remainder--padding;
|
||||
background-color: $ipb-navigation-menu--background-color;
|
||||
border-bottom-left-radius: $dropdown-menu--items-remainder--border-radius;
|
||||
border-bottom-right-radius: $dropdown-menu--items-remainder--border-radius;
|
||||
-webkit-box-shadow: none;
|
||||
@@ -161,6 +195,7 @@ $dropdown-menu--items-remainder--border-radius: $common-border-radius-700 !defau
|
||||
display: flex;
|
||||
align-items: center;
|
||||
column-gap: $ipb-navigation-menu--user-part--flex-column-gap;
|
||||
background-color: $common-color-grey-800;
|
||||
border-radius: 0 0 $ipb-navigation-menu--border-radius 0;
|
||||
|
||||
// toggle mobile menu
|
||||
@@ -178,6 +213,7 @@ $dropdown-menu--items-remainder--border-radius: $common-border-radius-700 !defau
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
@extend %common-font-ral-nor-150;
|
||||
color: white !important;
|
||||
text-decoration: none;
|
||||
overflow-x: hidden;
|
||||
|
||||
@@ -190,6 +226,7 @@ $dropdown-menu--items-remainder--border-radius: $common-border-radius-700 !defau
|
||||
background-size: 100%;
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
background-color: $ipb-navigation-menu--user-card--photo--background-color;
|
||||
border-radius: 100%;
|
||||
}
|
||||
|
||||
@@ -205,12 +242,23 @@ $dropdown-menu--items-remainder--border-radius: $common-border-radius-700 !defau
|
||||
.ipb-navigation-menu--user-card--name {
|
||||
flex-grow: 1;
|
||||
overflow-x: hidden;
|
||||
|
||||
> div {
|
||||
@include ipb-text-overflow-ellipsis;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MOBILE MENU ////////////////////////////////////////////
|
||||
|
||||
// mobile open toggle menu
|
||||
.ipb-navigation-menu--user-part--toggle--open-mobile-menu {
|
||||
@include ipb-toggle-nav;
|
||||
}
|
||||
|
||||
// mobile menu overlay
|
||||
.ipb-navigation-menu-overlay {
|
||||
display: none;
|
||||
@@ -219,6 +267,7 @@ $dropdown-menu--items-remainder--border-radius: $common-border-radius-700 !defau
|
||||
top: $ipb-navigation-menu--nav-horizontal--height;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-color: rgba(0, 0, 0, 0.28);
|
||||
z-index: 9998;
|
||||
}
|
||||
|
||||
@@ -356,7 +405,9 @@ $dropdown-menu--items-remainder--border-radius: $common-border-radius-700 !defau
|
||||
width: 100%;
|
||||
max-height: 0;
|
||||
padding: 0 12px;
|
||||
background-color: $ipb-navigation-menu--background-color;
|
||||
z-index: 9999;
|
||||
@include ipb-transition(max-height, ease, 0.5s);
|
||||
|
||||
.ipb-navigation-menu--menu-entries {
|
||||
margin: 15px 0;
|
||||
@@ -406,7 +457,15 @@ $dropdown-menu--items-remainder--border-radius: $common-border-radius-700 !defau
|
||||
.ipb-navigation-menu--middle-part {
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
// toggle animation
|
||||
.ipb-navigation-menu--user-part--toggle--open-mobile-menu {
|
||||
@include ipb-toggle-nav-animated-cross;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
@import "../node_modules/bulma-scss/utilities/mixins";
|
||||
@import "../../../../../../node_modules/bulma-scss/utilities/mixins";
|
||||
|
||||
/* SCSS variables */
|
||||
$ipb-page--main-wrapper--padding: $common-spacing-600 $common-spacing-700 !default;
|
||||
$ipb-page--main-header--margin-bottom: $common-size-250 !default;
|
||||
$ipb-page--main-header--information--title--font-size: $common-font-size-450 !default;
|
||||
$ipb-page--main-header--information--title--color: $common-base-variable--text-color !default;
|
||||
$ipb-page--main-header--information--subtitle--padding: $common-spacing-200 !default;
|
||||
$ipb-page--main-header--information--subtitle--font-size: $common-font-size-250 !default;
|
||||
$ipb-page--main-header--information--subtitle--color: $common-base-variable--text-color !default;
|
||||
|
||||
html {
|
||||
font-size: 12px;
|
||||
@@ -51,10 +48,16 @@ body{
|
||||
.ipb-page--main-header--information--title{
|
||||
font-size: $ipb-page--main-header--information--title--font-size;
|
||||
font-weight: bold;
|
||||
color: $ipb-page--main-header--information--title--color;
|
||||
|
||||
> span ~ span {
|
||||
@include ipb-following-dot;
|
||||
}
|
||||
}
|
||||
|
||||
.ipb-page--main-header--information--subtitle{
|
||||
font-size: $ipb-page--main-header--information--subtitle--font-size;
|
||||
color: $ipb-page--main-header--information--subtitle--color;
|
||||
padding: $ipb-page--main-header--information--subtitle--padding;
|
||||
max-width: 1400px;
|
||||
}
|
||||
@@ -73,6 +76,7 @@ body{
|
||||
|
||||
.ipb-copyright {
|
||||
text-decoration: none !important;
|
||||
color: $common-color-secondary-800;
|
||||
}
|
||||
|
||||
@include mobile {
|
||||
@@ -93,5 +97,6 @@ body{
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-tabs--tab--badge--border-radius: $common-border-radius-500 !default;
|
||||
$ipb-tabs--tab--badge--padding-y: 3px !default;
|
||||
$ipb-tabs--tab--badge--padding-x: 5px !default;
|
||||
$ipb-tabs--tab--badge--margin-left: $common-spacing-200 !default;
|
||||
|
||||
|
||||
$ipb-tabs--tab--active--indicator--width: $common-size-150 !default;
|
||||
$ipb-tabs--tab--active--indicator--height: $ipb-tabs--tab--active--indicator--width !default;
|
||||
$ipb-tabs--tab--active--indicator--margin-right: $common-spacing-300 !default;
|
||||
$ipb-tabs--tab--active--indicator--border-radius: $common-border-radius-full !default;
|
||||
|
||||
.ipb-tabs.nav-pills > li{
|
||||
> a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@extend %common-font-ral-med-150;
|
||||
|
||||
> .badge {
|
||||
border-radius: $ipb-tabs--tab--badge--border-radius;
|
||||
padding: $ipb-tabs--tab--badge--padding-y $ipb-tabs--tab--badge--padding-x;
|
||||
margin-left: $ipb-tabs--tab--badge--margin-left;
|
||||
}
|
||||
}
|
||||
|
||||
&.active > a {
|
||||
&:before {
|
||||
content: " ";
|
||||
display: inline-block;
|
||||
width: $ipb-tabs--tab--active--indicator--width;
|
||||
height: $ipb-tabs--tab--active--indicator--height;
|
||||
margin-right: $ipb-tabs--tab--active--indicator--margin-right;
|
||||
border-radius: $ipb-tabs--tab--active--indicator--border-radius;
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -1,6 +1,7 @@
|
||||
@import "utils/variables/path";
|
||||
@import 'common/main.scss';
|
||||
@import "utils/all";
|
||||
@import "mixins";
|
||||
@import "components/all";
|
||||
@import "vendors/all";
|
||||
@import "pages/all";
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* TODO 3.3.0: move these to individual files */
|
||||
/* SCSS variables (can be overloaded) */
|
||||
/* SCSS variables */
|
||||
$ipb-following-dot--size: $common-size-150 !default;
|
||||
$ipb-following-dot--color: $ipb-color-primary-600 !default;
|
||||
$ipb-following-dot--margin-top: calc(-1 * #{$ipb-following-dot--size} / 2) !default;
|
||||
$ipb-following-dot--margin-bottom: auto !default;
|
||||
$ipb-following-dot--color: $common-color-orange-600 !default;
|
||||
$ipb-following-dot--margin-y: auto !default;
|
||||
$ipb-following-dot--margin-x: $common-spacing-300 !default;
|
||||
|
||||
@mixin ipb-following-dot($size:$ipb-following-dot--size, $color:$ipb-following-dot--color) {
|
||||
@@ -19,13 +12,13 @@ $ipb-following-dot--margin-x: $common-spacing-300 !default;
|
||||
background-color: $color;
|
||||
border-radius: 50%;
|
||||
display: inline-block;
|
||||
margin: $ipb-following-dot--margin-top $ipb-following-dot--margin-x $ipb-following-dot--margin-bottom $ipb-following-dot--margin-x;
|
||||
margin: $ipb-following-dot--margin-y $ipb-following-dot--margin-x;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
/* SCSS variables */
|
||||
$ipb-heavy-animated-border--border-color: $ipb-color-blue-grey-700 !default;
|
||||
$ipb-heavy-animated-border--border-color: $common-color-blue-grey-700 !default;
|
||||
$ipb-heavy-animated-border--border-width: $common-size-50 !default;
|
||||
$ipb-heavy-animated-border--border-radius: $common-border-radius-500 !default;
|
||||
|
||||
@@ -51,7 +44,7 @@ $ipb-heavy-animated-border--border-radius: $common-border-radius-500 !default;
|
||||
|
||||
|
||||
/* SCSS variables */
|
||||
$ipb-toggle-nav--color: $ipb-color-white-100 !default;
|
||||
$ipb-toggle-nav--color: white !default;
|
||||
|
||||
@mixin ipb-toggle-nav($color:$ipb-toggle-nav--color) {
|
||||
|
||||
@@ -153,7 +146,7 @@ $ipb-toggle-nav--color: $ipb-color-white-100 !default;
|
||||
}
|
||||
|
||||
/* SCSS variables */
|
||||
$ipb-scrollbar--color: $ipb-color-grey-200 $ipb-color-blue-grey-800 !default;
|
||||
$ipb-scrollbar--color: $common-color-grey-200 $common-color-blue-grey-800 !default;
|
||||
|
||||
@mixin ipb-scrollbar($overflowX:hidden, $overflowY:auto, $scrollbarWidth:thin, $scrollbarColor:$ipb-scrollbar--color) {
|
||||
overflow-x: $overflowX;
|
||||
@@ -0,0 +1,8 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-body-text-color: $ipb-color-grey-900 !default;
|
||||
$ipb-body-background-color: $ipb-color-white-200 !default;
|
||||
@@ -1,16 +1,14 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
@import "../../../../../../../node_modules/bulma-scss/utilities/mixins";
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
@import "../node_modules/bulma-scss/utilities/mixins";
|
||||
$ipb-browse-brick--mosaic-item--highlight-color: $common-color-blue-800, $common-color-orange-800, $common-color-green-800, $common-color-pink-800, $common-color-cyan-800, $common-color-yellow-800, $common-color-purple-800;
|
||||
|
||||
$ipb-browse-brick-panel--row--margin: $common-spacing-0 !default;
|
||||
$ipb-browse-brick-panel--brick-content-toolbar--padding: $common-spacing-400 !default;
|
||||
|
||||
$ipb-content-mosaic--padding: $common-spacing-0 !default;
|
||||
$ipb-browse-brick--mosaic-breadcrumb--padding: $common-spacing-200 !default;
|
||||
$ipb-browse-brick--mosaic-breadcrumb--active--color: $common-color-grey-800 !default;
|
||||
$ipb-browse-brick--mosaic-breadcrumb--a--color: $common-color-primary-800 !default;
|
||||
|
||||
$ipb-browse-brick--mosaic--gap: $common-spacing-300 !default;
|
||||
$ipb-browse-brick--mosaic--small--grid-template-columns: 1fr !default;
|
||||
@@ -22,7 +20,10 @@ $ipb-browse-brick--mosaic-group-item--min-height: $common-size-550 !default;
|
||||
$ipb-browse-brick--mosaic-group-item--height: auto !default;
|
||||
$ipb-browse-brick--mosaic-group-item--width: 100% !default;
|
||||
$ipb-browse-brick--mosaic-group-item--margin: $common-spacing-0 !default;
|
||||
$ipb-browse-brick--mosaic-group-item--color: $common-base-variable--text-color !default;
|
||||
$ipb-browse-brick--mosaic-group-item--border: 1px solid $common-color-grey-300 !default;
|
||||
$ipb-browse-brick--mosaic-group-item--border-radius: $common-border-radius-300 !default;
|
||||
$ipb-browse-brick--mosaic-group-item--background-color: $common-color-white-100 !default;
|
||||
$ipb-browse-brick--mosaic-group-item--animation--transform-x: -20px !default;
|
||||
|
||||
$ipb-browse-brick--mosaic-group-item--actions--top: $common-spacing-500 !default;
|
||||
@@ -31,30 +32,49 @@ $ipb-browse-brick--mosaic-item--height: 100% !default;
|
||||
$ipb-browse-brick--mosaic-item--padding: $common-spacing-600 !default;
|
||||
$ipb-browse-brick--mosaic-item--margin: $common-spacing-0 !default;
|
||||
$ipb-browse-brick--mosaic-item--border-radius: $ipb-browse-brick--mosaic-group-item--border-radius !default;
|
||||
$ipb-browse-brick--mosaic-item--background-color: $common-color-white-100 !default;
|
||||
$ipb-browse-brick--mosaic-item--color: $common-base-variable--text-color !default;
|
||||
$ipb-browse-brick--mosaic-item--hover--color: inherit !default;
|
||||
$ipb-browse-brick--mosaic-item--hover--background-color--alpha: 0.05 !default;
|
||||
|
||||
$ipb-browse-brick--mosaic-item-description--color: $common-color-grey-800 !default;
|
||||
|
||||
$ipb-browse-brick--mosaic-item-image--height: 44px !default;
|
||||
$ipb-browse-brick--mosaic-item-image--width: 44px !default;
|
||||
$ipb-browse-brick--mosaic-item-image--border-radius: $common-border-radius-700 !default;
|
||||
$ipb-browse-brick--mosaic-item-image--padding: $common-spacing-0 !default;
|
||||
$ipb-browse-brick--mosaic-item-image--margin-bottom: $common-spacing-500 !default;
|
||||
|
||||
$ipb-browse-brick--mosaic-item-image--background-color: common-adjust-alpha($common-color-blue-700, .1) !default;
|
||||
$ipb-browse-brick--mosaic-item-image--background-color--alpha: 0.1 !default;
|
||||
$ipb-browse-brick--mosaic-item-image--color: $common-color-blue-700 !default;
|
||||
|
||||
$ipb-browse-brick--mosaic-item-image--img--height: $common-size-300 !default;
|
||||
|
||||
$ipb-browse-brick--mosaic-item-description--margin-top: $common-spacing-300 !default;
|
||||
|
||||
$ipb-browse-brick-panel--mosaic--background-color: transparent !default;
|
||||
$ipb-browse-brick-panel--mosaic--border: none !default;
|
||||
|
||||
$ipb-browse-brick-panel--dataTables_wrapper--padding-x: $common-spacing-0 !default;
|
||||
$ipb-browse-brick-panel--dataTables_wrapper--padding-y: $common-size-200 !default;
|
||||
$ipb-browse-brick-panel--dataTables_wrapper--row--div--padding-x: $common-size-200 !default;
|
||||
$ipb-browse-brick-panel--dataTables_wrapper--row--div--padding-y: $common-size-0 !default;
|
||||
|
||||
|
||||
$ipb-browse-brick--tree-item--color: $common-color-grey-900 !default;
|
||||
$ipb-browse-brick--tree-item--hyperlink--color: $common-hyperlink-color !default;
|
||||
|
||||
|
||||
$ipb-browse-brick--tree-item-filter-data--color: $common-color-grey-800 !default;
|
||||
$ipb-browse-brick--tree-item-filter-data--margin-top: $common-spacing-300 !default;
|
||||
$ipb-browse-brick--tree-item-filter-data--item--margin-y: $common-spacing-0 !default;
|
||||
$ipb-browse-brick--tree-item-filter-data--item--margin-x: $common-spacing-300 !default;
|
||||
|
||||
$ipb-browse-brick--tree-item--description--margin-top: $common-spacing-200 !default;
|
||||
$ipb-browse-brick--tree-item--description--color: $common-color-grey-800 !default;
|
||||
|
||||
$ipb-browse-brick--tree-item--wrapper--padding-top: $common-spacing-500 !default;
|
||||
$ipb-browse-brick--tree-item--wrapper--color: inherit !default;
|
||||
|
||||
$ipb-browse-brick--tree-item-image--height: $common-size-350 !default;
|
||||
$ipb-browse-brick--tree-item-image--width: $common-size-350 !default;
|
||||
@@ -70,20 +90,18 @@ $ipb-browse-brick--tree-item-image--has-glyphicon--margin-right: $common-spacing
|
||||
$ipb-browse-brick--tree-item--has-glyphicon--description--margin-left: 19px !default;
|
||||
|
||||
|
||||
$ipb-browse-brick--list-group-item--padding: $common-spacing-0 !default;
|
||||
$ipb-browse-brick--list-group-item--padding-left: $common-spacing-500 !default;
|
||||
$ipb-browse-brick--list-group-item--padding-y: $common-spacing-0 !default;
|
||||
$ipb-browse-brick--list-group-item--padding-x: $common-spacing-500 !default;
|
||||
$ipb-browse-brick--list-group-item--margin-bottom: -1px !default;
|
||||
$ipb-browse-brick--list-group-item--background-color: $common-color-white-100 !default;
|
||||
$ipb-browse-brick--list-group-item--border: 1px solid $common-color-grey-400 !default;
|
||||
|
||||
$ipb-browse-brick--list-group--margin-bottom: $common-spacing-0 !default;
|
||||
$ipb-browse-brick--list-group-item--tree-item-wrapper--padding-bottom: $common-spacing-500 !default;
|
||||
|
||||
|
||||
$ipb-browse-brick--list-group--tree--margin: $common-spacing-0 !default;
|
||||
|
||||
$ipb-browse-brick--no-item--illustration--max-width: 100% !default;
|
||||
$ipb-browse-brick--no-item--illustration--padding-y: $common-spacing-600 !default;
|
||||
$ipb-browse-brick--no-item--illustration--padding-x: $common-spacing-500 !default;
|
||||
$ipb-browse-brick--no-item--illustration--svg--max-width: $common-size-700 !default;
|
||||
|
||||
$ipb-browse-brick--list-group--tree--background-color: $common-color-white-100 !default;
|
||||
|
||||
// Common
|
||||
.ipb-browse-brick-panel {
|
||||
@@ -105,13 +123,23 @@ $ipb-browse-brick--no-item--illustration--svg--max-width: $common-size-700 !defa
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
// Mosaic view
|
||||
// Mosaic view
|
||||
.page_browse_brick_as_mosaic .ipb-browse-brick-panel{
|
||||
background-color: $ipb-browse-brick-panel--mosaic--background-color !important;
|
||||
border: $ipb-browse-brick-panel--mosaic--border !important;
|
||||
}
|
||||
|
||||
#brick_content_mosaic{
|
||||
padding: $ipb-content-mosaic--padding;
|
||||
}
|
||||
#mosaic-breadcrumb {
|
||||
padding: $ipb-browse-brick--mosaic-breadcrumb--padding;
|
||||
a {
|
||||
color: $ipb-browse-brick--mosaic-breadcrumb--a--color;
|
||||
}
|
||||
.active {
|
||||
color: $ipb-browse-brick--mosaic-breadcrumb--active--color;
|
||||
}
|
||||
}
|
||||
|
||||
.mosaic-group {
|
||||
@@ -145,7 +173,23 @@ $ipb-browse-brick--no-item--illustration--svg--max-width: $common-size-700 !defa
|
||||
height: $ipb-browse-brick--mosaic-group-item--height;
|
||||
width: $ipb-browse-brick--mosaic-group-item--width;
|
||||
margin: $ipb-browse-brick--mosaic-group-item--margin;
|
||||
color: $ipb-browse-brick--mosaic-group-item--color;
|
||||
border: $ipb-browse-brick--mosaic-group-item--border;
|
||||
border-radius: $ipb-browse-brick--mosaic-group-item--border-radius;
|
||||
background-color: $ipb-browse-brick--mosaic-group-item--background-color;
|
||||
|
||||
@for $i from 1 through length($ipb-browse-brick--mosaic-item--highlight-color) {
|
||||
&:nth-child(#{length($ipb-browse-brick--mosaic-item--highlight-color)}n + #{$i}){
|
||||
.mosaic-item:hover{
|
||||
background-color: common-adjust-alpha(nth($ipb-browse-brick--mosaic-item--highlight-color, $i), $ipb-browse-brick--mosaic-item--hover--background-color--alpha);
|
||||
}
|
||||
.mosaic-item-image {
|
||||
background-color: common-adjust-alpha(nth($ipb-browse-brick--mosaic-item--highlight-color, $i), $ipb-browse-brick--mosaic-item-image--background-color--alpha);
|
||||
color: nth($ipb-browse-brick--mosaic-item--highlight-color, $i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
> .mosaic-group-item-actions {
|
||||
position: absolute;
|
||||
@@ -162,7 +206,15 @@ $ipb-browse-brick--no-item--illustration--svg--max-width: $common-size-700 !defa
|
||||
padding: $ipb-browse-brick--mosaic-item--padding;
|
||||
margin: $ipb-browse-brick--mosaic-item--margin;
|
||||
border-radius: $ipb-browse-brick--mosaic-item--border-radius;
|
||||
|
||||
background-color: $ipb-browse-brick--mosaic-item--background-color;
|
||||
color: $ipb-browse-brick--mosaic-item--color;
|
||||
transition: background-color 0.3s linear;
|
||||
|
||||
|
||||
&:hover {
|
||||
color: $ipb-browse-brick--mosaic-item--hover--color;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -177,6 +229,7 @@ $ipb-browse-brick--no-item--illustration--svg--max-width: $common-size-700 !defa
|
||||
|
||||
.mosaic-item-description {
|
||||
@extend %common-font-ral-nor-150;
|
||||
color: $ipb-browse-brick--mosaic-item-description--color;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -187,6 +240,8 @@ $ipb-browse-brick--no-item--illustration--svg--max-width: $common-size-700 !defa
|
||||
padding: $ipb-browse-brick--mosaic-item-image--padding;
|
||||
margin-bottom: $ipb-browse-brick--mosaic-item-image--margin-bottom;
|
||||
border-radius: $ipb-browse-brick--mosaic-item-image--border-radius;
|
||||
background-color: $ipb-browse-brick--mosaic-item-image--background-color;
|
||||
color: $ipb-browse-brick--mosaic-item-image--color;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-transform: capitalize;
|
||||
@@ -218,22 +273,26 @@ $ipb-browse-brick--no-item--illustration--svg--max-width: $common-size-700 !defa
|
||||
}
|
||||
|
||||
.list-group-item .list-group-item-text, .tree-item {
|
||||
@extend %common-font-ral-bol-150;
|
||||
color: $ipb-browse-brick--tree-item--color;
|
||||
|
||||
@extend %common-font-ral-bol-150;
|
||||
& a {
|
||||
@extend %common-font-size-150;
|
||||
color: $ipb-browse-brick--tree-item--hyperlink--color;
|
||||
}
|
||||
}
|
||||
|
||||
.list-group.tree .list-group-item .list-group-item-description {
|
||||
display: block;
|
||||
margin-top: $ipb-browse-brick--tree-item--description--margin-top;
|
||||
color: $ipb-browse-brick--tree-item--description--color;
|
||||
|
||||
@extend %common-font-ral-nor-100;
|
||||
}
|
||||
|
||||
.list-group-item .tree-item-wrapper .tree-item-filter-data {
|
||||
margin-top: $ipb-browse-brick--tree-item-filter-data--margin-top;
|
||||
color: $ipb-browse-brick--tree-item-filter-data--color;
|
||||
@extend %common-font-ral-med-100;
|
||||
|
||||
> span:not(:last-child):after {
|
||||
@@ -241,6 +300,7 @@ $ipb-browse-brick--no-item--illustration--svg--max-width: $common-size-700 !defa
|
||||
margin: $ipb-browse-brick--tree-item-filter-data--item--margin-y $ipb-browse-brick--tree-item-filter-data--item--margin-x;
|
||||
}
|
||||
a {
|
||||
color: $ipb-browse-brick--tree-item-filter-data--color;
|
||||
font-size: $common-font-size-100 !important;
|
||||
}
|
||||
}
|
||||
@@ -248,15 +308,32 @@ $ipb-browse-brick--no-item--illustration--svg--max-width: $common-size-700 !defa
|
||||
#brick_content_tree .list-group-item>.tree-item-wrapper {
|
||||
display: flex;
|
||||
padding-top: $ipb-browse-brick--tree-item--wrapper--padding-top;
|
||||
color: $ipb-browse-brick--tree-item--wrapper--color;
|
||||
text-decoration: inherit;
|
||||
cursor: pointer
|
||||
}
|
||||
|
||||
#brick_content_tree .list-group-item {
|
||||
.list-group-item {
|
||||
display: block;
|
||||
position: relative;
|
||||
padding: $ipb-browse-brick--list-group-item--padding $ipb-browse-brick--list-group-item--padding $ipb-browse-brick--list-group-item--padding $ipb-browse-brick--list-group-item--padding-left;
|
||||
padding: $ipb-browse-brick--list-group-item--padding-y $ipb-browse-brick--list-group-item--padding-x;
|
||||
margin-bottom: $ipb-browse-brick--list-group-item--margin-bottom;
|
||||
background-color: $ipb-browse-brick--list-group-item--background-color;
|
||||
border: $ipb-browse-brick--list-group-item--border;
|
||||
border-bottom: none;
|
||||
|
||||
|
||||
@for $i from 1 through length($ipb-browse-brick--mosaic-item--highlight-color) {
|
||||
&:nth-child(#{length($ipb-browse-brick--mosaic-item--highlight-color)}n + #{$i - 1}) {
|
||||
&:hover {
|
||||
background-color: common-adjust-alpha(nth($ipb-browse-brick--mosaic-item--highlight-color, $i), $ipb-browse-brick--mosaic-item--hover--background-color--alpha);
|
||||
}
|
||||
> .tree-item-wrapper .tree-item-image {
|
||||
background-color: common-adjust-alpha(nth($ipb-browse-brick--mosaic-item--highlight-color, $i), $ipb-browse-brick--mosaic-item-image--background-color--alpha);
|
||||
color: nth($ipb-browse-brick--mosaic-item--highlight-color, $i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -302,20 +379,5 @@ $ipb-browse-brick--no-item--illustration--svg--max-width: $common-size-700 !defa
|
||||
|
||||
.list-group.tree {
|
||||
margin: $ipb-browse-brick--list-group--tree--margin;
|
||||
}
|
||||
|
||||
.ipb-browse-brick--no-item--illustration {
|
||||
width: $ipb-browse-brick--no-item--illustration--max-width;
|
||||
display: flex;
|
||||
flex-direction: column;;
|
||||
padding: $ipb-browse-brick--no-item--illustration--padding-y $ipb-browse-brick--no-item--illustration--padding-x;
|
||||
> svg {
|
||||
max-width: $ipb-browse-brick--no-item--illustration--svg--max-width;
|
||||
height: inherit;
|
||||
align-self: center;
|
||||
}
|
||||
}
|
||||
|
||||
.ipb-browse-brick--no-item--text {
|
||||
@extend %common-font-ral-med-300;
|
||||
background-color: $ipb-browse-brick--list-group--tree--background-color;
|
||||
}
|
||||
@@ -1,9 +1,3 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-manage-brick--panel--body--padding-y: $common-spacing-500 !default;
|
||||
$ipb-manage-brick--panel--body--padding-x: $common-spacing-0 !default;
|
||||
|
||||
@@ -13,15 +7,24 @@ $ipb-manage-brick--panel--body--datatable--row--margin: $common-spacing-0 !defau
|
||||
$ipb-manage-brick--panel--body--datatable--row--padding-y: $common-spacing-0 !default;
|
||||
$ipb-manage-brick--panel--body--datatable--row--padding-x: $common-spacing-400 !default;
|
||||
|
||||
$ipb-manage-brick--tabs--tab--border: solid 1px $common-color-grey-400 !default;
|
||||
$ipb-manage-brick--tabs--tab--badge--border-radius: $common-border-radius-500 !default;
|
||||
$ipb-manage-brick--tabs--tab--badge--padding-y: 3px !default;
|
||||
$ipb-manage-brick--tabs--tab--badge--padding-x: 5px !default;
|
||||
$ipb-manage-brick--tabs--tab--badge--margin-left: $common-spacing-200 !default;
|
||||
|
||||
$ipb-manage-brick--tabs--tab--background-color: $common-color-grey-100 !default;
|
||||
$ipb-manage-brick--tabs--tab--color: $common-color-grey-900 !default;
|
||||
$ipb-manage-brick--tabs--tab--active--background-color: $common-color-white-100 !default;
|
||||
$ipb-manage-brick--tabs--tab--active--badge--background-color: $common-color-grey-200 !default;
|
||||
$ipb-manage-brick--tabs--tab--active--indicator--background-color: $common-color-primary-600 !default;
|
||||
$ipb-manage-brick--tabs--tab--active--indicator--width: $common-size-150 !default;
|
||||
$ipb-manage-brick--tabs--tab--active--indicator--height: $ipb-manage-brick--tabs--tab--active--indicator--width !default;
|
||||
$ipb-manage-brick--tabs--tab--active--indicator--margin-right: $common-spacing-300 !default;
|
||||
$ipb-manage-brick--tabs--tab--active--indicator--border-radius: $common-border-radius-full !default;
|
||||
|
||||
$ipb-manage-brick--panel--body--table--margin-top: $common-spacing-500 !default;
|
||||
|
||||
$ipb-manage-brick--no-result--illustration--width: 100% !default;
|
||||
$ipb-manage-brick--no-result--illustration--padding-y: $common-spacing-600 !default;
|
||||
$ipb-manage-brick--no-result--illustration--padding-x: $common-spacing-500 !default;
|
||||
$ipb-manage-brick--no-result--illustration--svg--max-width: $common-size-700 !default;
|
||||
|
||||
|
||||
.ipb-manage-brick--panel--body {
|
||||
padding: $ipb-manage-brick--panel--body--padding-y $ipb-manage-brick--panel--body--padding-x 0 $ipb-manage-brick--panel--body--padding-x;
|
||||
|
||||
@@ -37,51 +40,79 @@ $ipb-manage-brick--no-result--illustration--svg--max-width: $common-size-700 !de
|
||||
|
||||
|
||||
}
|
||||
.ipb-manage-brick--tabs.grouping_tabs.nav-pills > li{
|
||||
> a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background-color: $ipb-manage-brick--tabs--tab--background-color;
|
||||
color: $ipb-manage-brick--tabs--tab--color;
|
||||
|
||||
@extend %common-font-ral-med-150;
|
||||
|
||||
> .badge {
|
||||
color: $common-color-grey-900;
|
||||
background-color: transparent;
|
||||
border-radius: $ipb-manage-brick--tabs--tab--badge--border-radius;
|
||||
padding: $ipb-manage-brick--tabs--tab--badge--padding-y $ipb-manage-brick--tabs--tab--badge--padding-x;
|
||||
margin-left: $ipb-manage-brick--tabs--tab--badge--margin-left;
|
||||
}
|
||||
|
||||
border: $ipb-manage-brick--tabs--tab--border;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
&.active > a {
|
||||
background-color: $ipb-manage-brick--tabs--tab--active--background-color;
|
||||
|
||||
&:before {
|
||||
content: " ";
|
||||
display: inline-block;
|
||||
width: $ipb-manage-brick--tabs--tab--active--indicator--width;
|
||||
height: $ipb-manage-brick--tabs--tab--active--indicator--height;
|
||||
margin-right: $ipb-manage-brick--tabs--tab--active--indicator--margin-right;
|
||||
border-radius: $ipb-manage-brick--tabs--tab--active--indicator--border-radius;
|
||||
background-color: $ipb-manage-brick--tabs--tab--active--indicator--background-color;
|
||||
}
|
||||
|
||||
> .badge {
|
||||
background-color: $ipb-manage-brick--tabs--tab--active--badge--background-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ipb-manage-brick--panel--body--table {
|
||||
margin-top: $ipb-manage-brick--panel--body--table--margin-top !important;
|
||||
}
|
||||
|
||||
|
||||
.ipb-manage-brick--export-action {
|
||||
color: $common-color-grey-800;
|
||||
}
|
||||
|
||||
.ipb-manage-brick--export-action--icon {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.ipb-export--feedback {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
$ipb-manage-brick--pie-chart--colors:
|
||||
$common-color-blue-400 $common-color-blue-950 "rgb(44, 160, 44)",
|
||||
$common-color-blue-500 $common-color-blue-950 "rgb(214, 39, 40)",
|
||||
$common-color-blue-600 $common-color-blue-100 "rgb(148, 103, 189)",
|
||||
$common-color-blue-700 $common-color-blue-100 "rgb(140, 86, 75)",
|
||||
$common-color-blue-800 $common-color-blue-100 "rgb(227, 119, 194)",
|
||||
$common-color-blue-900 $common-color-blue-100 "rgb(127, 127, 127)",
|
||||
$common-color-blue-950 $common-color-blue-100 "rgb(188, 189, 34)",
|
||||
$common-color-blue-100 $common-color-blue-950 "rgb(23, 190, 207)",
|
||||
$common-color-blue-200 $common-color-blue-950 "rgb(31, 119, 180)",
|
||||
$common-color-blue-300 $common-color-blue-950 "rgb(255, 127, 14)"
|
||||
!default;
|
||||
|
||||
.ipb-export-message {
|
||||
@extend %common-font-ral-med-150;
|
||||
margin: $common-spacing-300 $common-spacing-0;
|
||||
@each $background, $text, $originalColor in $ipb-manage-brick--pie-chart--colors {
|
||||
.c3-chart-arc path[style="fill: #{$originalColor}; cursor: pointer; opacity: 1;"] {
|
||||
fill: $background !important;
|
||||
}
|
||||
|
||||
.ipb-export--illustration {
|
||||
align-self: center;
|
||||
margin: 24px 0;
|
||||
max-width: $common-size-650;
|
||||
max-height: $common-size-650;
|
||||
> svg {
|
||||
max-width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.c3-legend-item-tile[style="stroke: #{$originalColor}; pointer-events: none;"] {
|
||||
stroke: $background !important;
|
||||
}
|
||||
|
||||
.ipb-manage-brick--no-result--illustration {
|
||||
width: $ipb-manage-brick--no-result--illustration--width;
|
||||
display: flex;
|
||||
flex-direction: column;;
|
||||
padding: $ipb-manage-brick--no-result--illustration--padding-y $ipb-manage-brick--no-result--illustration--padding-x;
|
||||
> svg {
|
||||
max-width: $ipb-manage-brick--no-result--illustration--svg--max-width;
|
||||
height: inherit;
|
||||
align-self: center;
|
||||
}
|
||||
.c3-chart-arc:has(path[style="fill: #{$originalColor}; cursor: pointer; opacity: 1;"]) text {
|
||||
fill: $text !important;
|
||||
}
|
||||
|
||||
.ipb-manage-brick--no-result--text {
|
||||
@extend %common-font-ral-med-300;
|
||||
}
|
||||
@@ -1,10 +1,5 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-object-brick--url-to-clipboard--opacity: 0.5 !default;
|
||||
$ipb-object-brick--url-to-clipboard-tooltip-copied--color: $common-color-green-500!default;
|
||||
$ipb-object-brick--url-to-clipboard-tooltip-copied--margin-right: $common-spacing-200!default;
|
||||
|
||||
|
||||
@@ -20,5 +15,6 @@ $ipb-object-brick--url-to-clipboard-tooltip-copied--margin-right: $common-spacin
|
||||
}
|
||||
// Used for clipboard's tooltip, which is not part of .url-to-clipboard element
|
||||
.url-to-clipboard-tooltip-copied {
|
||||
color: $ipb-object-brick--url-to-clipboard-tooltip-copied--color;
|
||||
margin-right: $ipb-object-brick--url-to-clipboard-tooltip-copied--margin-right;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -15,10 +15,10 @@
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
*/
|
||||
@import 'common/main.scss';
|
||||
@import '../../../../../css/common/main.scss';
|
||||
@import 'variables.scss';
|
||||
@import "utils/all";
|
||||
@import '../node_modules/ckeditor5-itop-build/build/styles/compiled-theme';
|
||||
@import '../../../../../node_modules/ckeditor5-itop-build/build/styles/compiled-theme';
|
||||
|
||||
/*!
|
||||
* Combodo portal template v1.0.0
|
||||
@@ -275,6 +275,201 @@ footer{
|
||||
padding-top: 15px;
|
||||
}
|
||||
|
||||
//.home .tile{
|
||||
// display: block;
|
||||
// margin-bottom: 8px;
|
||||
// padding: 0em 1em;
|
||||
// min-height: 4em;
|
||||
// background-color: $white;
|
||||
// background-image: none;
|
||||
// border: none;
|
||||
// border-radius: 0px;
|
||||
// text-align: center;
|
||||
// text-decoration: none;
|
||||
// white-space: normal;
|
||||
// line-height: 4em;
|
||||
// box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15);
|
||||
//}
|
||||
//.home .tile .tile_decoration{
|
||||
// position: absolute;
|
||||
// top: 0.3em;
|
||||
// left: 2.5em;
|
||||
//}
|
||||
//.home .tile .tile_title{
|
||||
// font-weight: bold;
|
||||
// color: $gray;
|
||||
//}
|
||||
//
|
||||
//.home .tile .tile_title > span.icon {
|
||||
// color: $combodo-orange;
|
||||
//}
|
||||
//
|
||||
//.home .tile .tile_description{
|
||||
// display: none;
|
||||
// color: #555555;
|
||||
//}
|
||||
//
|
||||
//
|
||||
///**********************************/
|
||||
///* ManageBrick badge tile display */
|
||||
///**********************************/
|
||||
//.home a.tile.tile_badge > div {
|
||||
// display: table;
|
||||
// width: 100%;
|
||||
//}
|
||||
//
|
||||
//.home a.tile.tile_badge > div > div {
|
||||
// display: table-row;
|
||||
//}
|
||||
//
|
||||
//.home a.tile.tile_badge > div > div > div {
|
||||
// display: table-cell;
|
||||
//}
|
||||
//
|
||||
//@media (max-width: 768px) {
|
||||
// .home a.tile.tile_badge > div > div > div.tile_body div.tile_count {
|
||||
// position: absolute;
|
||||
// top: 0em;
|
||||
// right: 2em;
|
||||
// text-align: right;
|
||||
// font-size: 1.2em;
|
||||
// }
|
||||
// .home a.tile.tile_badge > div.tile_description {
|
||||
// display: none;
|
||||
// }
|
||||
//}
|
||||
//@media (min-width: 768px) {
|
||||
// .home .tile{
|
||||
// display: block;
|
||||
// margin-bottom: 25px;
|
||||
// padding: 40px 40px 30px 40px;
|
||||
// min-height: 10em;
|
||||
// text-align: left;
|
||||
// transition: all 0.2s linear;
|
||||
// }
|
||||
// .home .tile:hover{
|
||||
// box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.10);
|
||||
// }
|
||||
// .home .tile .tile_decoration{
|
||||
// display: block;
|
||||
// position: relative;
|
||||
// float: left;
|
||||
// top: 1.5em;
|
||||
// left: initial;
|
||||
// margin: 0px 30px 15px 0px;
|
||||
// }
|
||||
// .home .tile .tile_body{
|
||||
// display: block;
|
||||
// padding-left: 4.3em;
|
||||
// text-align: left;
|
||||
// line-height: 1.5em;
|
||||
// }
|
||||
// .home .tile .tile_title{
|
||||
// margin-bottom: 1em;
|
||||
// font-size: 1.0em;
|
||||
// }
|
||||
// .home .tile .tile_description{
|
||||
// display: block;
|
||||
// text-align: left;
|
||||
// }
|
||||
//
|
||||
// .home a.tile.tile_badge{
|
||||
// height: 10em;
|
||||
// overflow: hidden;
|
||||
// }
|
||||
// .home a.tile.tile_badge > div > div > div.tile_decoration{
|
||||
// top: unset;
|
||||
// vertical-align: middle;
|
||||
// }
|
||||
// .home a.tile.tile_badge > div > div > div.tile_decoration > span.icon {
|
||||
// font-size: 4em;
|
||||
// }
|
||||
// .home a.tile.tile_badge > div > div > div.tile_body{
|
||||
// position: relative;
|
||||
// padding: 0;
|
||||
// margin: 0;
|
||||
// vertical-align: middle;
|
||||
// text-align: right;
|
||||
// }
|
||||
// .home a.tile.tile_badge > div > div > div.tile_body .tile_title{
|
||||
// margin-top: 1em;
|
||||
// margin-bottom: 0;
|
||||
// font-size: 1em;
|
||||
// font-weight: normal;
|
||||
// }
|
||||
// .home a.tile.tile_badge > div > div > div.tile_body .tile_count{
|
||||
// position: absolute;
|
||||
// top: 0;
|
||||
// right: 0;
|
||||
// font-size: 2em;
|
||||
// font-weight: bold;
|
||||
// color: $gray;
|
||||
// }
|
||||
// .home a.tile.tile_badge .tile_description{
|
||||
// display: none;
|
||||
// }
|
||||
//}
|
||||
//@media (min-width: 992px) {
|
||||
// .home .tile{
|
||||
// min-height: 14em;
|
||||
// padding: 30px 40px 30px 40px;
|
||||
// }
|
||||
// .home .tile .tile_decoration > span.icon{
|
||||
// font-size: 4em;
|
||||
// }
|
||||
// .home .tile .tile_body{
|
||||
// padding-left: 6.3em;
|
||||
// }
|
||||
// .home .tile .tile_title{
|
||||
// font-size: 1.4em;
|
||||
// }
|
||||
// .home .tile .tile_description{
|
||||
// font-size: 1.2em;
|
||||
// }
|
||||
//
|
||||
// .home a.tile.tile_badge > div > div > div.tile_body .tile_title{
|
||||
// font-size: 1.2em;
|
||||
// }
|
||||
// .home a.tile.tile_badge > div > div > div.tile_body .tile_count{
|
||||
// font-size: 3em;
|
||||
// }
|
||||
// .home a.tile.tile_badge > div > div > div.tile_decoration > span.icon {
|
||||
// font-size: 4em;
|
||||
// }
|
||||
// .home a.tile.tile_badge .tile_description{
|
||||
// display: block;
|
||||
// font-size: 1em;
|
||||
// text-align: center;
|
||||
// }
|
||||
//}
|
||||
//@media (min-width: 1200px) {
|
||||
// .home .tile{
|
||||
// margin-bottom: 40px;
|
||||
// min-height: 15em;
|
||||
// padding: 40px 50px 30px 50px;
|
||||
// }
|
||||
// .home .tile .tile_decoration{
|
||||
// margin: 0px 40px 15px 0px;
|
||||
// top: 1.5em;
|
||||
// }
|
||||
// .home .tile .tile_decoration > span.icon{
|
||||
// font-size: 6em;
|
||||
// }
|
||||
// .home .tile .tile_body{
|
||||
// padding-left: 9.1em;
|
||||
// }
|
||||
// .home .tile .tile_title{
|
||||
// font-size: 1.5em;
|
||||
// }
|
||||
// .home .tile .tile_description{
|
||||
// font-size: 1.2em;
|
||||
// }
|
||||
//
|
||||
// .home a.tile.tile_badge > div > div > div.tile_decoration > span.icon {
|
||||
// font-size: 6em;
|
||||
// }
|
||||
//}
|
||||
|
||||
/********************/
|
||||
/* Modules settings */
|
||||
/********************/
|
||||
@@ -294,7 +489,13 @@ footer{
|
||||
#main-header-actions{
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
/* This is no longer necessary but we keep it just in case */
|
||||
/*#main-header-actions .btn-group .btn{
|
||||
padding: 0em 1.5em;
|
||||
line-height: 2.4em;
|
||||
font-size: 14px;
|
||||
background-image: none;
|
||||
}*/
|
||||
@media (min-width: 768px) {
|
||||
#main-header:after{
|
||||
clear: both;
|
||||
|
||||
@@ -1,9 +1,3 @@
|
||||
@import 'common/main.scss';
|
||||
/* Import shame first as we want to override some of its styles */
|
||||
@import "shame";
|
||||
@import "../utils/all";
|
||||
@import "utils/all";
|
||||
@import "pages/all";
|
||||
@import "components/all";
|
||||
@import "vendors/all";
|
||||
@import "layout/all";
|
||||
@import "shame";
|
||||
@@ -1,22 +1,35 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
/*!
|
||||
* Copyright (C) 2013-2024 Combodo SAS
|
||||
*
|
||||
* This file is part of iTop.
|
||||
*
|
||||
* iTop is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* iTop is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
*/
|
||||
|
||||
@import 'variables.scss';
|
||||
|
||||
/*
|
||||
/*!
|
||||
* Combodo portal theme v2.7.0
|
||||
* Based on Bootswatch Simplex
|
||||
*/
|
||||
/*
|
||||
/*!
|
||||
* bootswatch v3.3.5
|
||||
* Homepage: http://bootswatch.com
|
||||
* Copyright 2012-2015 Thomas Park
|
||||
* Licensed under MIT
|
||||
* Based on Bootstrap
|
||||
*/
|
||||
/*
|
||||
/*!
|
||||
* Bootstrap v3.3.5 (http://getbootstrap.com)
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
@@ -36,6 +49,10 @@
|
||||
html {
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0)
|
||||
}
|
||||
body {
|
||||
color: $text-color;
|
||||
background-color: $body-bg;
|
||||
}
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
@@ -1357,6 +1374,15 @@ th {
|
||||
.table-bordered>thead>tr>td {
|
||||
border-bottom-width: 2px
|
||||
}
|
||||
.table-striped>tbody>tr:nth-of-type(odd) {
|
||||
background-color: $table-bg-accent;
|
||||
}
|
||||
.table-striped>tbody>tr:hover {
|
||||
background-color: $table-bg-hover;
|
||||
}
|
||||
.table-hover>tbody>tr:hover {
|
||||
background-color: $table-bg-hover;
|
||||
}
|
||||
table col[class*="col-"] {
|
||||
position: static;
|
||||
float: none;
|
||||
@@ -1368,6 +1394,111 @@ table th[class*="col-"] {
|
||||
float: none;
|
||||
display: table-cell
|
||||
}
|
||||
.table>thead>tr>td.active,
|
||||
.table>tbody>tr>td.active,
|
||||
.table>tfoot>tr>td.active,
|
||||
.table>thead>tr>th.active,
|
||||
.table>tbody>tr>th.active,
|
||||
.table>tfoot>tr>th.active,
|
||||
.table>thead>tr.active>td,
|
||||
.table>tbody>tr.active>td,
|
||||
.table>tfoot>tr.active>td,
|
||||
.table>thead>tr.active>th,
|
||||
.table>tbody>tr.active>th,
|
||||
.table>tfoot>tr.active>th {
|
||||
background-color: #f5f5f5
|
||||
}
|
||||
.table-hover>tbody>tr>td.active:hover,
|
||||
.table-hover>tbody>tr>th.active:hover,
|
||||
.table-hover>tbody>tr.active:hover>td,
|
||||
.table-hover>tbody>tr:hover>.active,
|
||||
.table-hover>tbody>tr.active:hover>th {
|
||||
background-color: #e8e8e8
|
||||
}
|
||||
.table>thead>tr>td.success,
|
||||
.table>tbody>tr>td.success,
|
||||
.table>tfoot>tr>td.success,
|
||||
.table>thead>tr>th.success,
|
||||
.table>tbody>tr>th.success,
|
||||
.table>tfoot>tr>th.success,
|
||||
.table>thead>tr.success>td,
|
||||
.table>tbody>tr.success>td,
|
||||
.table>tfoot>tr.success>td,
|
||||
.table>thead>tr.success>th,
|
||||
.table>tbody>tr.success>th,
|
||||
.table>tfoot>tr.success>th {
|
||||
background-color: $state-success-bg
|
||||
}
|
||||
.table-hover>tbody>tr>td.success:hover,
|
||||
.table-hover>tbody>tr>th.success:hover,
|
||||
.table-hover>tbody>tr.success:hover>td,
|
||||
.table-hover>tbody>tr:hover>.success,
|
||||
.table-hover>tbody>tr.success:hover>th {
|
||||
background-color: #d0e9c6
|
||||
}
|
||||
.table>thead>tr>td.info,
|
||||
.table>tbody>tr>td.info,
|
||||
.table>tfoot>tr>td.info,
|
||||
.table>thead>tr>th.info,
|
||||
.table>tbody>tr>th.info,
|
||||
.table>tfoot>tr>th.info,
|
||||
.table>thead>tr.info>td,
|
||||
.table>tbody>tr.info>td,
|
||||
.table>tfoot>tr.info>td,
|
||||
.table>thead>tr.info>th,
|
||||
.table>tbody>tr.info>th,
|
||||
.table>tfoot>tr.info>th {
|
||||
background-color: $state-info-bg
|
||||
}
|
||||
.table-hover>tbody>tr>td.info:hover,
|
||||
.table-hover>tbody>tr>th.info:hover,
|
||||
.table-hover>tbody>tr.info:hover>td,
|
||||
.table-hover>tbody>tr:hover>.info,
|
||||
.table-hover>tbody>tr.info:hover>th {
|
||||
background-color: #c4e3f3
|
||||
}
|
||||
.table>thead>tr>td.warning,
|
||||
.table>tbody>tr>td.warning,
|
||||
.table>tfoot>tr>td.warning,
|
||||
.table>thead>tr>th.warning,
|
||||
.table>tbody>tr>th.warning,
|
||||
.table>tfoot>tr>th.warning,
|
||||
.table>thead>tr.warning>td,
|
||||
.table>tbody>tr.warning>td,
|
||||
.table>tfoot>tr.warning>td,
|
||||
.table>thead>tr.warning>th,
|
||||
.table>tbody>tr.warning>th,
|
||||
.table>tfoot>tr.warning>th {
|
||||
background-color: $state-warning-bg
|
||||
}
|
||||
.table-hover>tbody>tr>td.warning:hover,
|
||||
.table-hover>tbody>tr>th.warning:hover,
|
||||
.table-hover>tbody>tr.warning:hover>td,
|
||||
.table-hover>tbody>tr:hover>.warning,
|
||||
.table-hover>tbody>tr.warning:hover>th {
|
||||
background-color: #faf2cc
|
||||
}
|
||||
.table>thead>tr>td.danger,
|
||||
.table>tbody>tr>td.danger,
|
||||
.table>tfoot>tr>td.danger,
|
||||
.table>thead>tr>th.danger,
|
||||
.table>tbody>tr>th.danger,
|
||||
.table>tfoot>tr>th.danger,
|
||||
.table>thead>tr.danger>td,
|
||||
.table>tbody>tr.danger>td,
|
||||
.table>tfoot>tr.danger>td,
|
||||
.table>thead>tr.danger>th,
|
||||
.table>tbody>tr.danger>th,
|
||||
.table>tfoot>tr.danger>th {
|
||||
background-color: $state-danger-bg
|
||||
}
|
||||
.table-hover>tbody>tr>td.danger:hover,
|
||||
.table-hover>tbody>tr>th.danger:hover,
|
||||
.table-hover>tbody>tr.danger:hover>td,
|
||||
.table-hover>tbody>tr:hover>.danger,
|
||||
.table-hover>tbody>tr.danger:hover>th {
|
||||
background-color: #ebcccc
|
||||
}
|
||||
.table-responsive {
|
||||
overflow-x: auto;
|
||||
min-height: 0.01%
|
||||
@@ -3034,16 +3165,31 @@ select[multiple].input-group-sm>.input-group-btn>.btn {
|
||||
border: 1px solid #dddddd
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.nav-tabs.nav-justified > li > a {
|
||||
.nav-tabs.nav-justified>li>a {
|
||||
border-bottom: 1px solid #dddddd;
|
||||
border-radius: $border-radius-base $border-radius-base 0 0
|
||||
}
|
||||
.nav-tabs.nav-justified > .active > a,
|
||||
.nav-tabs.nav-justified > .active > a:hover,
|
||||
.nav-tabs.nav-justified > .active > a:focus {
|
||||
.nav-tabs.nav-justified>.active>a,
|
||||
.nav-tabs.nav-justified>.active>a:hover,
|
||||
.nav-tabs.nav-justified>.active>a:focus {
|
||||
border-bottom-color: #fcfcfc
|
||||
}
|
||||
}
|
||||
.nav-pills>li {
|
||||
float: left
|
||||
}
|
||||
.nav-pills>li>a {
|
||||
border-radius: $border-radius-base
|
||||
}
|
||||
.nav-pills>li+li {
|
||||
margin-left: 2px
|
||||
}
|
||||
.nav-pills>li.active>a,
|
||||
.nav-pills>li.active>a:hover,
|
||||
.nav-pills>li.active>a:focus {
|
||||
color: #ffffff;
|
||||
background-color: $brand-primary
|
||||
}
|
||||
.nav-stacked>li {
|
||||
float: none
|
||||
}
|
||||
@@ -5936,6 +6082,37 @@ table.dataTable{
|
||||
}
|
||||
}
|
||||
}
|
||||
/* ManageBrick grouping tabs. Should be placed somewhere else? */
|
||||
.grouping_tabs{
|
||||
&.nav-pills > li > a{
|
||||
color: #444;
|
||||
background-color: #F5F5F5;
|
||||
|
||||
&:hover,
|
||||
&:focus{
|
||||
text-decoration: none;
|
||||
background-color: #DDDDDD;
|
||||
}
|
||||
|
||||
> .badge{
|
||||
color: #ea7d1e;;
|
||||
background-color: transparent;
|
||||
}
|
||||
}
|
||||
&.nav-pills > li.active{
|
||||
> a,
|
||||
> a:hover,
|
||||
> a:focus{
|
||||
color: #444;
|
||||
background-color: #FCFCFC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Temp */
|
||||
.label{
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
/* SCSS variables */
|
||||
$ipb-alert--message--color: $ipb-body-text-color !default;
|
||||
$ipb-alert--icon--font-size: $common-font-size-300 !default;
|
||||
$ipb-alert--icon--width: 24px !default;
|
||||
@@ -66,8 +61,8 @@ $ipb-alerts-colors: (
|
||||
$icon: map-get($alert-color, "icon");
|
||||
$background-color: common-adjust-alpha($color, .1);
|
||||
|
||||
.ipb-alert.alert-#{$name}, .ipb-alert.ipb-is-#{$name} {
|
||||
background: linear-gradient(113deg, $background-color 0px, $background-color 60px, transparent 60px), $ipb-alert--background-color;
|
||||
.ipb-alert.alert-#{$name} {
|
||||
background: linear-gradient(113deg, $background-color 0px, $background-color 60px, transparent 60px), white;
|
||||
border-left-color: $color;
|
||||
|
||||
&:before {
|
||||
|
||||
@@ -1,13 +1,7 @@
|
||||
@import "alert";
|
||||
@import "button";
|
||||
@import "caselog";
|
||||
@import "datatables";
|
||||
@import "dropdown";
|
||||
@import "form";
|
||||
@import "illustration";
|
||||
@import "input";
|
||||
@import "modal";
|
||||
@import "nav";
|
||||
@import "navigation-menu";
|
||||
@import "panel";
|
||||
@import "progress-bar";
|
||||
@import "tile";
|
||||
|
||||
@@ -1,299 +1,33 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
/* SCSS variables */
|
||||
$btn--border-radius: $common-border-radius-300 !default;
|
||||
$btn--active--color: $common-color-white-100 !default;
|
||||
$btn--active--background-color: $common-color-blue-grey-900 !default;
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-button-colors: (
|
||||
'' : (
|
||||
'primary': (
|
||||
'': (
|
||||
$ipb-color-blue-800,
|
||||
$ipb-color-white-100,
|
||||
$ipb-color-blue-900
|
||||
),
|
||||
':hover': (
|
||||
$ipb-color-blue-700,
|
||||
$ipb-color-white-100,
|
||||
$ipb-color-blue-800
|
||||
),
|
||||
':active': (
|
||||
$ipb-color-blue-900,
|
||||
$ipb-color-white-100,
|
||||
$ipb-color-blue-950
|
||||
),
|
||||
':disabled': (
|
||||
$ipb-color-blue-200,
|
||||
$ipb-color-blue-600,
|
||||
$ipb-color-blue-300
|
||||
),
|
||||
),
|
||||
'default': (
|
||||
'': (
|
||||
$ipb-color-white-100,
|
||||
$ipb-color-grey-800,
|
||||
$ipb-color-grey-600
|
||||
),
|
||||
':hover': (
|
||||
$ipb-color-grey-100,
|
||||
$ipb-color-grey-900,
|
||||
$ipb-color-grey-700
|
||||
),
|
||||
':active': (
|
||||
$ipb-color-grey-200,
|
||||
$ipb-color-grey-900,
|
||||
$ipb-color-grey-700
|
||||
),
|
||||
':disabled': (
|
||||
$ipb-color-grey-200,
|
||||
$ipb-color-grey-700,
|
||||
$ipb-color-grey-300
|
||||
),
|
||||
),
|
||||
'success': (
|
||||
'': (
|
||||
$ipb-color-success-900,
|
||||
$ipb-color-white-100,
|
||||
$ipb-color-success-900
|
||||
),
|
||||
':hover': (
|
||||
$ipb-color-success-800,
|
||||
$ipb-color-green-100,
|
||||
$ipb-color-success-900
|
||||
),
|
||||
':active': (
|
||||
$ipb-color-success-950,
|
||||
$ipb-color-green-100,
|
||||
$ipb-color-success-950
|
||||
),
|
||||
':disabled': (
|
||||
$ipb-color-grey-200,
|
||||
$ipb-color-grey-700,
|
||||
$ipb-color-grey-300
|
||||
),
|
||||
),
|
||||
'warning': (
|
||||
'': (
|
||||
$ipb-color-warning-700,
|
||||
$ipb-color-white-100,
|
||||
$ipb-color-warning-900
|
||||
),
|
||||
':hover': (
|
||||
$ipb-color-warning-600,
|
||||
$ipb-color-warning-100,
|
||||
$ipb-color-warning-700
|
||||
),
|
||||
':active': (
|
||||
$ipb-color-warning-800,
|
||||
$ipb-color-warning-100,
|
||||
$ipb-color-warning-900
|
||||
),
|
||||
':disabled': (
|
||||
$ipb-color-grey-200,
|
||||
$ipb-color-grey-700,
|
||||
$ipb-color-grey-300
|
||||
),
|
||||
),
|
||||
'danger': (
|
||||
'': (
|
||||
$ipb-color-danger-800,
|
||||
$ipb-color-white-100,
|
||||
$ipb-color-danger-900
|
||||
),
|
||||
':hover': (
|
||||
$ipb-color-danger-700,
|
||||
$ipb-color-danger-100,
|
||||
$ipb-color-danger-800
|
||||
),
|
||||
':active': (
|
||||
$ipb-color-danger-900,
|
||||
$ipb-color-danger-100,
|
||||
$ipb-color-danger-950
|
||||
),
|
||||
':disabled': (
|
||||
$ipb-color-grey-200,
|
||||
$ipb-color-grey-700,
|
||||
$ipb-color-grey-300
|
||||
),
|
||||
),
|
||||
'info': (
|
||||
'': (
|
||||
$ipb-color-information-800,
|
||||
$ipb-color-white-100,
|
||||
$ipb-color-information-900
|
||||
),
|
||||
':hover': (
|
||||
$ipb-color-information-700,
|
||||
$ipb-color-information-100,
|
||||
$ipb-color-information-800
|
||||
),
|
||||
':active': (
|
||||
$ipb-color-information-900,
|
||||
$ipb-color-information-100,
|
||||
$ipb-color-information-950
|
||||
),
|
||||
':disabled': (
|
||||
$ipb-color-grey-200,
|
||||
$ipb-color-grey-700,
|
||||
$ipb-color-grey-300
|
||||
),
|
||||
),
|
||||
),
|
||||
'alternative' : (
|
||||
'primary': (
|
||||
'': (
|
||||
$ipb-color-transparent,
|
||||
$ipb-color-blue-800,
|
||||
$ipb-color-transparent
|
||||
),
|
||||
':hover': (
|
||||
$ipb-color-blue-100,
|
||||
$ipb-color-blue-900,
|
||||
$ipb-color-blue-100
|
||||
),
|
||||
':active': (
|
||||
$ipb-color-blue-200,
|
||||
$ipb-color-blue-900,
|
||||
$ipb-color-blue-200
|
||||
),
|
||||
':disabled': (
|
||||
$ipb-color-blue-200,
|
||||
$ipb-color-blue-600,
|
||||
$ipb-color-blue-300
|
||||
),
|
||||
),
|
||||
'default': (
|
||||
'': (
|
||||
$ipb-color-transparent,
|
||||
$ipb-color-grey-800,
|
||||
$ipb-color-transparent
|
||||
),
|
||||
':hover': (
|
||||
$ipb-color-grey-200,
|
||||
$ipb-color-grey-900,
|
||||
$ipb-color-grey-200
|
||||
),
|
||||
':active': (
|
||||
$ipb-color-grey-300,
|
||||
$ipb-color-grey-900,
|
||||
$ipb-color-grey-300
|
||||
),
|
||||
':disabled': (
|
||||
$ipb-color-transparent,
|
||||
$ipb-color-grey-500,
|
||||
$ipb-color-transparent
|
||||
),
|
||||
),
|
||||
'success': (
|
||||
'': (
|
||||
$ipb-color-transparent,
|
||||
$ipb-color-success-900,
|
||||
$ipb-color-transparent
|
||||
),
|
||||
':hover': (
|
||||
$ipb-color-success-100,
|
||||
$ipb-color-success-900,
|
||||
$ipb-color-success-100
|
||||
),
|
||||
':active': (
|
||||
$ipb-color-success-200,
|
||||
$ipb-color-success-900,
|
||||
$ipb-color-success-200
|
||||
),
|
||||
':disabled': (
|
||||
$ipb-color-grey-200,
|
||||
$ipb-color-grey-700,
|
||||
$ipb-color-grey-300
|
||||
),
|
||||
),
|
||||
'warning': (
|
||||
'': (
|
||||
$ipb-color-transparent,
|
||||
$ipb-color-warning-800,
|
||||
$ipb-color-transparent
|
||||
),
|
||||
':hover': (
|
||||
$ipb-color-warning-100,
|
||||
$ipb-color-warning-900,
|
||||
$ipb-color-warning-100
|
||||
),
|
||||
':active': (
|
||||
$ipb-color-warning-200,
|
||||
$ipb-color-warning-900,
|
||||
$ipb-color-warning-200
|
||||
),
|
||||
':disabled': (
|
||||
$ipb-color-grey-200,
|
||||
$ipb-color-grey-700,
|
||||
$ipb-color-grey-300
|
||||
),
|
||||
),
|
||||
'danger': (
|
||||
'': (
|
||||
$ipb-color-transparent,
|
||||
$ipb-color-danger-800,
|
||||
$ipb-color-transparent
|
||||
),
|
||||
':hover': (
|
||||
$ipb-color-danger-100,
|
||||
$ipb-color-danger-800,
|
||||
$ipb-color-danger-100
|
||||
),
|
||||
':active': (
|
||||
$ipb-color-danger-200,
|
||||
$ipb-color-danger-800,
|
||||
$ipb-color-danger-200
|
||||
),
|
||||
':disabled': (
|
||||
$ipb-color-grey-200,
|
||||
$ipb-color-grey-700,
|
||||
$ipb-color-grey-300
|
||||
),
|
||||
),
|
||||
'info': (
|
||||
'': (
|
||||
$ipb-color-transparent,
|
||||
$ipb-color-information-800,
|
||||
$ipb-color-transparent
|
||||
),
|
||||
':hover': (
|
||||
$ipb-color-information-100,
|
||||
$ipb-color-information-800,
|
||||
$ipb-color-information-100
|
||||
),
|
||||
':active': (
|
||||
$ipb-color-information-200,
|
||||
$ipb-color-information-800,
|
||||
$ipb-color-information-200
|
||||
),
|
||||
':disabled': (
|
||||
$ipb-color-grey-200,
|
||||
$ipb-color-grey-700,
|
||||
$ipb-color-grey-300
|
||||
),
|
||||
),
|
||||
),
|
||||
) !default;
|
||||
$ipb-button--background-color: $ipb-color-white-100 !default;
|
||||
$ipb-button--color: $ipb-color-blue-800 !default;
|
||||
$ipb-button--border-color:$ipb-color-blue-700 !default;
|
||||
$ipb-button--border: solid 1px $ipb-button--border-color !default;
|
||||
|
||||
.ipb-button, .btn{
|
||||
background-color: $ipb-button--background-color !important;
|
||||
color: $ipb-button--color !important;
|
||||
border: $ipb-button--border;
|
||||
|
||||
@each $sType, $aColors in $ipb-button-colors {
|
||||
@each $sColor, $sPseudoClasses in $aColors {
|
||||
@each $sPseudoClass, $sAttributes in $sPseudoClasses {
|
||||
&.ipb-is-#{$sColor}#{if($sType != '', ".ipb-is-#{$sType}", '')}#{$sPseudoClass}, &.btn-#{$sColor}#{if($sType != '', ".#{$sType}", '')}#{$sPseudoClass} {
|
||||
background-color: nth($sAttributes, 1) !important;
|
||||
color: nth($sAttributes, 2) !important;
|
||||
border-color: nth($sAttributes, 3) !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.btn{
|
||||
border-radius: $btn--border-radius !important;
|
||||
}
|
||||
|
||||
.btn.active{
|
||||
background-color: #263238 !important;
|
||||
color: $btn--active--color !important;
|
||||
}
|
||||
|
||||
.btn-group .btn:first-child{
|
||||
border-top-right-radius: 0 !important;
|
||||
border-bottom-right-radius: 0 !important;
|
||||
}
|
||||
|
||||
.btn-group .btn:last-child{
|
||||
border-top-left-radius: 0 !important;
|
||||
border-bottom-left-radius: 0 !important;
|
||||
}
|
||||
|
||||
// todo
|
||||
.btn.btn-secondary:hover {
|
||||
color: unset;
|
||||
}
|
||||
|
||||
.btn.btn-secondary:active {
|
||||
color: unset;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,285 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$messaging-self-primary-color: $ipb-color-blue-100 !default;
|
||||
$messaging-self-secondary-color: $ipb-color-blue-800 !default;
|
||||
$messaging-1st-peer-primary-color: $ipb-color-white-100 !default;
|
||||
$messaging-1st-peer-secondary-color: $ipb-color-grey-400 !default;
|
||||
$messaging-2nd-peer-primary-color: $ipb-color-white-100 !default;
|
||||
$messaging-2nd-peer-secondary-color: $ipb-color-grey-400 !default;
|
||||
$messaging-2nd-peer-secondary-color: $ipb-color-grey-400 !default;
|
||||
$messaging-3rd-peer-primary-color: $ipb-color-white-100 !default;
|
||||
$messaging-3rd-peer-secondary-color: $ipb-color-grey-300 !default;
|
||||
$messaging-4th-peer-primary-color: $ipb-color-white-100 !default;
|
||||
$messaging-4th-peer-secondary-color: $ipb-color-grey-400 !default;
|
||||
$messaging-5th-peer-primary-color: $ipb-color-white-100 !default;
|
||||
$messaging-5th-peer-secondary-color: $ipb-color-grey-400 !default;
|
||||
|
||||
$ipb-caselog-thread--border-color: $ipb-color-grey-400 !default;
|
||||
$ipb-caselog-thread--border: 1px solid $ipb-caselog-thread--border-color !default;
|
||||
|
||||
$ipb-caselog-thread--header--background-color: $ipb-color-white-100 !default;
|
||||
$ipb-caselog-thread--header--span--color: $ipb-color-grey-800 !default;
|
||||
|
||||
$ipb-caselog-thread--header-toggler--color: inherit !default;
|
||||
|
||||
$ipb-caselog-thread--header-toggler--hover--active-focus--color: inherit !default;
|
||||
|
||||
$ipb-caselog-thread--content--background-color: $ipb-color-grey-100 !default;
|
||||
|
||||
$ipb-caselog-thread--date--color: $ipb-color-grey-800 !default;
|
||||
|
||||
$ipb-caselog-thread--block-medallion--block-entries--border-color: $ipb-color-grey-200 !default;
|
||||
$ipb-caselog-thread--block-medallion--block-entries--border: 1px solid $ipb-caselog-thread--block-medallion--block-entries--border-color !default;
|
||||
|
||||
$ipb-caselog-thread--block-medallion--color: $ipb-color-blue-800 !default;
|
||||
$ipb-caselog-thread--block-medallion--background-color: $ipb-color-blue-100 !default;
|
||||
|
||||
$ipb-caselog-thread--block-user--color: $ipb-caselog-thread--block-medallion--color !default;
|
||||
|
||||
$ipb-caselog-thread--block-entries--background-color: $ipb-caselog-thread--block-medallion--background-color !default;
|
||||
$ipb-caselog-thread--block-entries--color: $ipb-caselog-thread--block-medallion--color !default;
|
||||
|
||||
$ipb-caselog-thread--block-entry--border-bottom-color: $ipb-color-grey-200 !default;
|
||||
$ipb-caselog-thread--block-entry--border-bottom: 1px solid $ipb-caselog-thread--block-entry--border-bottom-color !default;
|
||||
|
||||
$ipb-caselog-thread--block-entry-toggler--background-color: $ipb-caselog-thread--block-medallion--background-color !default;
|
||||
|
||||
$ipb-caselog-thread--block-me--block-entry--first--content--border-left-color: transparent !default;
|
||||
$ipb-caselog-thread--block-me--block-entry--first--content--border-right-color: $ipb-caselog-thread--block-medallion--background-color !default;
|
||||
|
||||
$ipb-caselog-thread--block-colors: (
|
||||
1: ($ipb-color-white-100, $ipb-color-grey-700),
|
||||
2: ($ipb-color-white-100, $ipb-color-grey-700),
|
||||
3: ($ipb-color-white-100, $ipb-color-grey-700),
|
||||
4: ($ipb-color-white-100, $ipb-color-grey-700),
|
||||
5: ($ipb-color-white-100, $ipb-color-grey-700)
|
||||
);
|
||||
|
||||
.ipb-caselog-thread {
|
||||
border: $ipb-caselog-thread--border;
|
||||
}
|
||||
|
||||
.ipb-caselog-thread--header{
|
||||
background-color: $ipb-caselog-thread--header--background-color;
|
||||
span{
|
||||
color: $ipb-caselog-thread--header--span--color;
|
||||
}
|
||||
}
|
||||
|
||||
.ipb-caselog-thread--header-toggler{
|
||||
color: $ipb-caselog-thread--header-toggler--color;
|
||||
|
||||
&:hover,
|
||||
&:active,
|
||||
&:focus{
|
||||
color: $ipb-caselog-thread--header-toggler--hover--active-focus--color;
|
||||
}
|
||||
}
|
||||
|
||||
.ipb-caselog-thread--block-medallion,
|
||||
.ipb-caselog-thread--block-entries{
|
||||
border: $ipb-caselog-thread--block-medallion--block-entries--border;
|
||||
}
|
||||
|
||||
.ipb-caselog-thread--content{
|
||||
background-color: $ipb-caselog-thread--content--background-color;
|
||||
}
|
||||
|
||||
.ipb-caselog-thread--date {
|
||||
color: $ipb-caselog-thread--date--color;
|
||||
}
|
||||
|
||||
.ipb-caselog-thread--block-medallion{
|
||||
color: $ipb-caselog-thread--block-medallion--color; /* .ipb-caselog-thread--block-entries color */
|
||||
background-color: $ipb-caselog-thread--block-medallion--background-color; /* .ipb-caselog-thread--block-entries background-color */
|
||||
}
|
||||
|
||||
.ipb-caselog-thread--block-user{
|
||||
color: $ipb-caselog-thread--block-user--color; /* .ipb-caselog-thread--block-entries background-color */
|
||||
}
|
||||
|
||||
.ipb-caselog-thread--block-entries{
|
||||
background-color: $ipb-caselog-thread--block-entries--background-color;
|
||||
color: $ipb-caselog-thread--block-entries--color;
|
||||
}
|
||||
|
||||
.ipb-caselog-thread--block-entry {
|
||||
border-bottom: $ipb-caselog-thread--block-entry--border-bottom;
|
||||
}
|
||||
|
||||
.ipb-caselog-thread--block-entry-toggler{
|
||||
background-color: $ipb-caselog-thread--block-entry-toggler--background-color; /* .ipb-caselog-thread--block-entries background-color */
|
||||
}
|
||||
|
||||
|
||||
.ipb-caselog-thread--block-me{
|
||||
.ipb-caselog-thread--block-entries{
|
||||
.ipb-caselog-thread--block-entry:first-child{
|
||||
.ipb-caselog-thread--block-entry-content:before{
|
||||
border-right-color: $ipb-caselog-thread--block-me--block-entry--first--content--border-left-color;
|
||||
border-left-color: $ipb-caselog-thread--block-me--block-entry--first--content--border-right-color; /* .ipb-caselog-thread--block-entries background-color */
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.ipb-caselog-thread--block-color-1{
|
||||
.ipb-caselog-thread--block-medallion{
|
||||
color: $messaging-1st-peer-secondary-color;
|
||||
background-color: $messaging-1st-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-user{
|
||||
color: $messaging-1st-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-entries{
|
||||
color: $messaging-1st-peer-secondary-color;
|
||||
background-color: $messaging-1st-peer-primary-color;
|
||||
|
||||
.ipb-caselog-thread--block-entry{
|
||||
.ipb-caselog-thread--block-entry-toggler{
|
||||
background-color: $messaging-1st-peer-primary-color;
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-entry:first-child{
|
||||
.ipb-caselog-thread--block-entry-content:before{
|
||||
border-top-color: $messaging-1st-peer-primary-color;
|
||||
border-right-color: $messaging-1st-peer-primary-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-color-2{
|
||||
.ipb-caselog-thread--block-medallion{
|
||||
color: $messaging-2nd-peer-secondary-color;
|
||||
background-color: $messaging-2nd-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-user{
|
||||
color: $messaging-2nd-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-entries{
|
||||
color: $messaging-2nd-peer-secondary-color;
|
||||
background-color: $messaging-2nd-peer-primary-color;
|
||||
|
||||
.ipb-caselog-thread--block-entry{
|
||||
.ipb-caselog-thread--block-entry-toggler{
|
||||
background-color: $messaging-2nd-peer-primary-color;
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-entry:first-child{
|
||||
.ipb-caselog-thread--block-entry-content:before{
|
||||
border-top-color: $messaging-2nd-peer-primary-color;
|
||||
border-right-color: $messaging-2nd-peer-primary-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-color-3{
|
||||
.ipb-caselog-thread--block-medallion{
|
||||
color: $messaging-3rd-peer-secondary-color;
|
||||
background-color: $messaging-3rd-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-user{
|
||||
color: $messaging-3rd-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-entries{
|
||||
color: $messaging-3rd-peer-secondary-color;
|
||||
background-color: $messaging-3rd-peer-primary-color;
|
||||
|
||||
.ipb-caselog-thread--block-entry{
|
||||
.ipb-caselog-thread--block-entry-toggler{
|
||||
background-color: $messaging-3rd-peer-primary-color;
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-entry:first-child{
|
||||
.ipb-caselog-thread--block-entry-content:before{
|
||||
border-top-color: $messaging-3rd-peer-primary-color;
|
||||
border-right-color: $messaging-3rd-peer-primary-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-color-4{
|
||||
.ipb-caselog-thread--block-medallion{
|
||||
color: $messaging-4th-peer-secondary-color;
|
||||
background-color: $messaging-4th-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-user{
|
||||
color: $messaging-4th-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-entries{
|
||||
color: $messaging-4th-peer-secondary-color;
|
||||
background-color: $messaging-4th-peer-primary-color;
|
||||
|
||||
.ipb-caselog-thread--block-entry{
|
||||
.ipb-caselog-thread--block-entry-toggler{
|
||||
background-color: $messaging-4th-peer-primary-color;
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-entry:first-child{
|
||||
.ipb-caselog-thread--block-entry-content:before{
|
||||
border-top-color: $messaging-4th-peer-primary-color;
|
||||
border-right-color: $messaging-4th-peer-primary-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-color-5{
|
||||
.ipb-caselog-thread--block-medallion{
|
||||
color: $messaging-5th-peer-secondary-color;
|
||||
background-color: $messaging-5th-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-user{
|
||||
color: $messaging-5th-peer-primary-color;
|
||||
}
|
||||
.ipb-caselog-thread--block-entries{
|
||||
color: $messaging-5th-peer-secondary-color;
|
||||
background-color: $messaging-5th-peer-primary-color;
|
||||
|
||||
|
||||
.ipb-caselog-thread--block-entry{
|
||||
.ipb-caselog-thread--block-entry-toggler{
|
||||
background-color: $messaging-5th-peer-primary-color;
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-entry:first-child{
|
||||
.ipb-caselog-thread--block-entry-content:before{
|
||||
border-top-color: $messaging-5th-peer-primary-color;
|
||||
border-right-color: $messaging-5th-peer-primary-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@each $index, $colors in $ipb-caselog-thread--block-colors {
|
||||
.ipb-caselog-thread--block-color-#{$index} {
|
||||
.ipb-caselog-thread--block-medallion {
|
||||
color: nth($colors, 2);
|
||||
background-color: nth($colors, 1);
|
||||
}
|
||||
.ipb-caselog-thread--block-user {
|
||||
color: nth($colors, 1);
|
||||
}
|
||||
.ipb-caselog-thread--block-entries {
|
||||
color: nth($colors, 2);
|
||||
background-color: nth($colors, 1);
|
||||
|
||||
.ipb-caselog-thread--block-entry {
|
||||
.ipb-caselog-thread--block-entry-toggler {
|
||||
background-color: nth($colors, 1);
|
||||
}
|
||||
}
|
||||
.ipb-caselog-thread--block-entry:first-child {
|
||||
.ipb-caselog-thread--block-entry-content:before {
|
||||
border-top-color: nth($colors, 1);
|
||||
border-right-color: nth($colors, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,3 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ibo-vendors-datatables--column-sorting-icon--opacity: 0.3 !default;
|
||||
$ibo-vendors-datatables--column-sorting-icon--opacity--is-sorted: 1 !default;
|
||||
$ibo-vendors-datatables--column-sorting-icon--content: "\f0dc" !default;
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-dropdown--background-color: $ipb-color-white-100 !default;
|
||||
$ipb-dropdown--border-color: $ipb-color-grey-300 !default;
|
||||
$ipb-dropdown--border: 1px solid $ipb-dropdown--border-color !default;
|
||||
|
||||
$ipb-dropdown--li--background-color: $ipb-dropdown--background-color !default;
|
||||
|
||||
$ipb-dropdown--a--color: $ipb-color-grey-900 !default;
|
||||
|
||||
$ipb-dropdown--li--hover--background-color: $ipb-color-grey-200 !default;
|
||||
$ipb-dropdown--li--hover--a--color: $ipb-color-grey-800 !default;
|
||||
|
||||
ipb-dropdown {
|
||||
background-color: $ipb-dropdown--background-color;
|
||||
border: $ipb-dropdown--border;
|
||||
li {
|
||||
background-color: $ipb-dropdown--li--background-color;
|
||||
a {
|
||||
color: $ipb-dropdown--a--color;
|
||||
}
|
||||
&:hover {
|
||||
background: $ipb-dropdown--li--hover--background-color;
|
||||
a {
|
||||
color: $ipb-dropdown--li--hover--a--color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb--fieldset--background-color: $ipb-color-grey-50 !default;
|
||||
$ipb--fieldset--border-color: $ipb-color-grey-200 !default;
|
||||
$ipb--fieldset--border: 1px solid $ipb--fieldset--border-color !default;
|
||||
|
||||
$ipb--fieldset--inside--fieldset--background-color: $ipb-color-grey-100 !default;
|
||||
|
||||
$ipb-field--has-tooltip--content: "\f05a" !default;
|
||||
$ipb-field--has-tooltip--color: $ipb-color-grey-700 !default;
|
||||
|
||||
$ipb-field--is-mandatory--content: "\f069" !default;
|
||||
$ipb-field--is-mandatory--color: $ipb-color-primary-700 !default;
|
||||
|
||||
.form_fields {
|
||||
fieldset {
|
||||
background-color: $ipb--fieldset--background-color;
|
||||
border: $ipb--fieldset--border;
|
||||
fieldset {
|
||||
background-color: $ipb--fieldset--inside--fieldset--background-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.form_field_label > .control-label[data-tooltip-instantiated="true"]:after {
|
||||
content: $ipb-field--has-tooltip--content;
|
||||
color: $ipb-field--has-tooltip--color;
|
||||
}
|
||||
|
||||
.form_field .form_mandatory .control-label:after{
|
||||
content: $ipb-field--is-mandatory--content;
|
||||
color: $ipb-field--is-mandatory--color;
|
||||
};
|
||||
@@ -1,11 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-svg-illustration--fill: $ipb-color-primary-700 !default;
|
||||
|
||||
.ipb-svg-illustration--container > svg *[fill="#6c63ff"]{
|
||||
fill: $ipb-svg-illustration--fill;
|
||||
}
|
||||
@@ -1,27 +1,7 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-form-control--color: $common-color-grey-800 !default;
|
||||
$ipb-form-control--is-focused--border-color: $common-color-primary-700 !default;
|
||||
|
||||
$ipb-input-group-addon--border-color: $ipb-color-grey-300 !default;
|
||||
$ipb-input-group-addon--border: 1px solid $ipb-input-group-addon--border-color !default;
|
||||
$ipb-input-group-addon--background-color: $common-color-grey-100 !default;
|
||||
$ipb-input-group-addon--color: $common-color-grey-800 !default;
|
||||
/* SCSS variables */
|
||||
$form-control--border-radius: $common-border-radius-300 !default;
|
||||
|
||||
|
||||
.form-control {
|
||||
color: $ipb-form-control--color;
|
||||
&:focus {
|
||||
border-color: $ipb-form-control--is-focused--border-color;
|
||||
}
|
||||
border-radius: $form-control--border-radius!important;
|
||||
}
|
||||
|
||||
.input-group-addon {
|
||||
border: $ipb-input-group-addon--border;
|
||||
background-color: $ipb-input-group-addon--background-color;
|
||||
color: $ipb-input-group-addon--color;
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-modal--header--background-color: $ipb-color-white-100 !default;
|
||||
$ipb-modal--header--color: $ipb-color-grey-900 !default;
|
||||
|
||||
$ipb-modal--header--close--color: $ipb-color-grey-900 !default;
|
||||
$ipb-modal--header--close--opacity: 1 !default;
|
||||
$ipb-modal--header--close--hover--color: $ipb-color-grey-700 !default;
|
||||
|
||||
$ipb-modal--backdrop--opacity: 0.6 !default;
|
||||
$ipb-modal--backdrop--background-color: $ipb-color-blue-grey-800 !default;
|
||||
$ipb-modal--backdrop--backdrop-filter: blur(2px) !default;
|
||||
|
||||
$ipb-modal--content--border-color: $ipb-color-grey-400 !default;
|
||||
$ipb-modal--content--border: 1px solid $ipb-modal--content--border-color !default;
|
||||
|
||||
$ipb-modal--title--color: $ipb-modal--header--color !default;
|
||||
|
||||
$ipb-modal--title--span--separator--background-color: $ipb-color-grey-800 !default;
|
||||
|
||||
|
||||
|
||||
.modal .modal-dialog{
|
||||
|
||||
.modal-header {
|
||||
background-color: $ipb-modal--header--background-color;
|
||||
color: $ipb-modal--header--color;
|
||||
}
|
||||
}
|
||||
|
||||
.modal-backdrop.in {
|
||||
background-color: common-adjust-alpha($ipb-modal--backdrop--background-color, $ipb-modal--backdrop--opacity);
|
||||
backdrop-filter: $ipb-modal--backdrop--backdrop-filter;
|
||||
}
|
||||
|
||||
.modal-content {
|
||||
border: $ipb-modal--content--border;
|
||||
}
|
||||
|
||||
.modal-header {
|
||||
.close {
|
||||
color: $ipb-modal--header--close--color;
|
||||
opacity: $ipb-modal--header--close--opacity;
|
||||
&:hover {
|
||||
color: $ipb-modal--header--close--hover--color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.modal-title {
|
||||
color: $ipb-modal--title--color !important;
|
||||
|
||||
span ~ span {
|
||||
&:before {
|
||||
background-color: $ipb-modal--title--span--separator--background-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,4 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
/* SCSS variables */
|
||||
$nav-pills--li--border-radius: $common-border-radius-300 !default;
|
||||
|
||||
.nav-pills > li > a{
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
.nav > li {
|
||||
display: flex;
|
||||
}
|
||||
.nav > li > a {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav > li > a {
|
||||
color: $common-color-grey-300;
|
||||
}
|
||||
@@ -1,27 +1,8 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-panel--border-color: $ipb-color-grey-400 !default;
|
||||
$ipb-panel--border: 1px solid $ipb-panel--border-color !default;
|
||||
$ipb-panel--background-color: $ipb-color-white-100 !default;
|
||||
|
||||
$ipb-panel--heading--border-color: $ipb-color-grey-400 !default;
|
||||
$ipb-panel--heading--background-color: $ipb-color-grey-100 !default;
|
||||
$ipb-panel--heading--color: $ipb-color-grey-800 !default;
|
||||
/* SCSS variables */
|
||||
$panel--border-radius: $common-border-radius-300!default;
|
||||
|
||||
|
||||
|
||||
.ipb-panel, .panel{
|
||||
.panel{
|
||||
box-shadow: none;
|
||||
border: $ipb-panel--border;
|
||||
background-color: $ipb-panel--background-color;
|
||||
&.panel-default .panel-heading {
|
||||
border-color: $ipb-panel--heading--border-color;
|
||||
background-color: $ipb-panel--heading--background-color;
|
||||
color: $ipb-panel--heading--color;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
$ipb-progress--background-color: $ipb-color-grey-200 !default;
|
||||
|
||||
$ipb-progress--bar--background-color: $ipb-color-primary-700 !default;
|
||||
$ipb-progress--bar--color: $ipb-color-white-100 !default;
|
||||
|
||||
|
||||
.ipb-progress, .progress {
|
||||
background-color: $ipb-progress--background-color;
|
||||
}
|
||||
|
||||
.ipb-progress--bar, .progress-bar {
|
||||
background-color: $ipb-color-primary-700;
|
||||
color: $ipb-progress--bar--color;
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-tile--background-color: $ipb-color-white-100 !default;
|
||||
$ipb-tile--border-color: $ipb-color-grey-200 !default;
|
||||
$ipb-tile--border: 1px solid $ipb-tile--border-color!default;
|
||||
|
||||
$ipb-tile--decoration--opacity: 0.1 !default;
|
||||
$ipb-tile--decoration--background-color: common-adjust-alpha($ipb-color-blue-700, $ipb-tile--decoration--opacity) !default;
|
||||
$ipb-tile--decoration--hover--opacity: 0.25 !default;
|
||||
$ipb-tile--decoration--hover--background-color: common-adjust-alpha($ipb-tile--decoration--background-color, $ipb-tile--decoration--hover--opacity) !default;
|
||||
$ipb-tile--decoration--icon--color: $ipb-color-blue-700 !default;
|
||||
|
||||
$ipb-tile--title--color: $common-base-variable--text-color !default;
|
||||
|
||||
$ipb-tile--description--color: $common-base-variable--text-color !default;
|
||||
|
||||
.ipb-tile{
|
||||
background-color: $ipb-tile--background-color;
|
||||
border: $ipb-tile--border;
|
||||
|
||||
&[data-role="navigation-trigger"] {
|
||||
@include ipb-heavy-animated-border;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.ipb-tile--decoration {
|
||||
background-color: $ipb-tile--decoration--background-color;
|
||||
}
|
||||
.ipb-tile:hover {
|
||||
.ipb-tile--decoration {
|
||||
background-color: $ipb-tile--decoration--hover--background-color;
|
||||
}
|
||||
}
|
||||
|
||||
.ipb-tile--decoration--icon {
|
||||
&.icon {
|
||||
color: $ipb-tile--decoration--icon--color;
|
||||
}
|
||||
}
|
||||
|
||||
.ipb-tile--title{
|
||||
color: $ipb-tile--title--color;
|
||||
}
|
||||
|
||||
.ipb-tile--description{
|
||||
color: $ipb-tile--description--color;
|
||||
}
|
||||
|
||||
.ipb-tile--manage .ipb-tile--title {
|
||||
> span:first-child {
|
||||
@include ipb-text-overflow-ellipsis;
|
||||
}
|
||||
> span:nth-child(2) {
|
||||
@include ipb-following-dot;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1 @@
|
||||
@import 'home';
|
||||
@import 'navigation-menu';
|
||||
@import 'page';
|
||||
@import 'tabs';
|
||||
@import 'page';
|
||||
@@ -1,21 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-home--main-wrapper--before--background-image: url("../img/backgrounds/dots-left-top.svg") !default;
|
||||
$ipb-home--main-wrapper--before--background-size: 30% !default;
|
||||
|
||||
$ipb-home--main-wrapper--after--background-image: url("../img/backgrounds/dots-right-bottom.svg") !default;
|
||||
$ipb-home--main-wrapper--after--background-size: 30% !default;
|
||||
|
||||
.ipb-home .ipb-page--main-wrapper:before{
|
||||
background-image: $ipb-home--main-wrapper--before--background-image;
|
||||
background-size: $ipb-home--main-wrapper--before--background-size;
|
||||
}
|
||||
|
||||
.ipb-home .ipb-page--main-wrapper:after{
|
||||
background-image: $ipb-home--main-wrapper--after--background-image;
|
||||
background-size: $ipb-home--main-wrapper--after--background-size;
|
||||
}
|
||||
@@ -1,124 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
@import "../node_modules/bulma-scss/utilities/mixins";
|
||||
|
||||
$ipb-navigation-menu--background-color: $ipb-color-blue-grey-900 !default;
|
||||
|
||||
$ipb-navigation-menu--menu-entry--active--icon--color: $ipb-color-primary-600 !default;
|
||||
$ipb-navigation-menu--menu-entry--active--color: $ipb-color-grey-800 !default;
|
||||
$ipb-navigation-menu--menu-entry--active--background-color: $ipb-color-white-100 !default;
|
||||
|
||||
$ipb-navigation-menu--dropdown-menu--items-remainder--color: $ipb-color-white-200 !default;
|
||||
$ipb-navigation-menu--dropdown-menu--items-remainder--hover--color: $ipb-color-white-100 !default;
|
||||
$ipb-navigation-menu--dropdown-menu--items-remainder--hover--background-color: $ipb-color-blue-grey-700 !default;
|
||||
|
||||
$ipb-navigation-menu--user-card--color: $ipb-color-white-100 !default;
|
||||
$ipb-navigation-menu--user-card--photo--background-color: $ipb-color-grey-700 !default;
|
||||
|
||||
$ipb-navigation-menu--user-part--background-color: $ipb-color-grey-800 !default;
|
||||
|
||||
$ipb-navigation-menu-overlay--opacity: 0.6 !default;
|
||||
$ipb-navigation-menu-overlay--background-color: $ipb-color-blue-grey-800 !default;
|
||||
$ipb-navigation-menu-overlay--backdrop-filter: blur(2px) !default;
|
||||
|
||||
.ipb-navigation-menu {
|
||||
background-color: $ipb-navigation-menu--background-color;
|
||||
|
||||
&.ipb-is-expanded {
|
||||
.ipb-navigation-menu--top-part--toggle--expand-menu {
|
||||
@include ipb-toggle-nav-animated-chevron-right;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ipb-navigation-menu--top-part--toggle--expand-menu {
|
||||
@include ipb-toggle-nav;
|
||||
}
|
||||
|
||||
.ipb-navigation-menu--middle-part {
|
||||
@include ipb-scrollbar;
|
||||
}
|
||||
|
||||
// entry wrapper
|
||||
.ipb-navigation-menu--menu-entry--wrapper {
|
||||
.ipb-navigation-menu--menu-entry--title {
|
||||
@include ipb-text-overflow-ellipsis;
|
||||
}
|
||||
|
||||
&.active .ipb-navigation-menu--menu-entry {
|
||||
background-color: $ipb-navigation-menu--menu-entry--active--background-color;
|
||||
color: $ipb-navigation-menu--menu-entry--active--color;
|
||||
|
||||
.ipb-navigation-menu--menu-entry--icon {
|
||||
color: $ipb-navigation-menu--menu-entry--active--icon--color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// menu entry
|
||||
.ipb-navigation-menu--menu-entry,
|
||||
.ipb-dropdown-menu--items-remainder > li > a {
|
||||
color: $ipb-navigation-menu--dropdown-menu--items-remainder--color;
|
||||
@include ipb-transition(#{"background-color, color"});
|
||||
|
||||
&:hover, &:focus:not(.ipb-not-focusable) {
|
||||
color: $ipb-navigation-menu--dropdown-menu--items-remainder--hover--color;
|
||||
background-color: $ipb-navigation-menu--dropdown-menu--items-remainder--hover--background-color;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.ipb-dropdown-menu--items-remainder {
|
||||
background-color: $ipb-navigation-menu--background-color;
|
||||
}
|
||||
|
||||
.ipb-navigation-menu--user-part {
|
||||
background-color: $ipb-navigation-menu--user-part--background-color;
|
||||
}
|
||||
|
||||
.ipb-navigation-menu--user-card {
|
||||
color: $ipb-navigation-menu--user-card--color !important;
|
||||
.ipb-navigation-menu--user-card--photo {
|
||||
background-color: $ipb-navigation-menu--user-card--photo--background-color;
|
||||
}
|
||||
|
||||
.ipb-navigation-menu--user-card--infos {
|
||||
// username
|
||||
.ipb-navigation-menu--user-card--name {
|
||||
> div {
|
||||
@include ipb-text-overflow-ellipsis;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.ipb-navigation-menu-overlay {
|
||||
background-color: common-adjust-alpha($ipb-navigation-menu-overlay--background-color, $ipb-navigation-menu-overlay--opacity);
|
||||
backdrop-filter: $ipb-navigation-menu-overlay--backdrop-filter;
|
||||
}
|
||||
|
||||
.ipb-navigation-menu--user-part--toggle--open-mobile-menu {
|
||||
@include ipb-toggle-nav;
|
||||
}
|
||||
|
||||
@include mobile {
|
||||
.ipb-body {
|
||||
.ipb-navigation-menu {
|
||||
.ipb-navigation-menu--middle-part {
|
||||
background-color: $ipb-navigation-menu--background-color;
|
||||
@include ipb-transition(max-height, ease, 0.5s);
|
||||
}
|
||||
&.ipb-is-opened {
|
||||
// toggle animation
|
||||
.ipb-navigation-menu--user-part--toggle--open-mobile-menu {
|
||||
@include ipb-toggle-nav-animated-cross;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,30 +1,4 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-copyright--color: $ipb-color-secondary-800 !default;
|
||||
|
||||
$ipb-page--main-header--information--title--color: $common-base-variable--text-color !default;
|
||||
$ipb-page--main-header--information--subtitle--color: $common-base-variable--text-color !default;
|
||||
|
||||
|
||||
body{
|
||||
@extend %common-font-ral-med-100;
|
||||
}
|
||||
|
||||
.ipb-copyright {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
.ipb-page--main-header--information--title{
|
||||
color: $ipb-page--main-header--information--title--color;
|
||||
> span ~ span {
|
||||
@include ipb-following-dot;
|
||||
}
|
||||
}
|
||||
|
||||
.ipb-page--main-header--information--subtitle {
|
||||
color: $ipb-page--main-header--information--subtitle--color;
|
||||
}
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-tabs--tab--border-color: $ipb-color-grey-400 !default;
|
||||
$ipb-tabs--tab--border: solid 1px $ipb-tabs--tab--border-color !default;
|
||||
|
||||
$ipb-tabs--tab--background-color: $ipb-color-grey-100 !default;
|
||||
$ipb-tabs--tab--color: $ipb-color-grey-900 !default;
|
||||
$ipb-tabs--tab--badge--background-color: transparent !default;
|
||||
$ipb-tabs--tab--badge--color: $ipb-color-grey-900 !default;
|
||||
$ipb-tabs--tab--hover--background-color: $ipb-color-grey-300 !default;
|
||||
$ipb-tabs--tab--hover--color: $ipb-color-grey-900 !default;
|
||||
$ipb-tabs--tab--badge--hover--background-color: $ipb-tabs--tab--hover--background-color !default;
|
||||
$ipb-tabs--tab--active--background-color: $ipb-color-white-100 !default;
|
||||
$ipb-tabs--tab--active--badge--background-color: $ipb-color-grey-200 !default;
|
||||
$ipb-tabs--tab--active--indicator--background-color: $ipb-color-primary-600 !default;
|
||||
|
||||
.ipb-tabs.nav-pills > li{
|
||||
> a {
|
||||
background-color: $ipb-tabs--tab--background-color;
|
||||
color: $ipb-tabs--tab--color;
|
||||
|
||||
> .badge {
|
||||
background-color: $ipb-tabs--tab--badge--background-color;
|
||||
color: $ipb-tabs--tab--badge--color;
|
||||
}
|
||||
|
||||
border: $ipb-tabs--tab--border;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
&.active > a {
|
||||
background-color: $ipb-tabs--tab--active--background-color;
|
||||
&:before {
|
||||
background-color: $ipb-tabs--tab--active--indicator--background-color;
|
||||
}
|
||||
> .badge {
|
||||
background-color: $ipb-tabs--tab--active--badge--background-color;
|
||||
}
|
||||
}
|
||||
&:hover > a, & > a:focus {
|
||||
background-color: $ipb-tabs--tab--hover--background-color;
|
||||
color: $ipb-tabs--tab--hover--color;
|
||||
> .badge {
|
||||
background-color: $ipb-tabs--tab--badge--hover--background-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
@import "base";
|
||||
@import "bricks/all";
|
||||
@@ -1,13 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-body-text-color: $ipb-color-grey-900 !default;
|
||||
$ipb-body-background-color: $ipb-color-white-200 !default;
|
||||
|
||||
body {
|
||||
color: $ipb-body-text-color;
|
||||
background-color: $ipb-body-background-color;
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
@import "browse-brick";
|
||||
@import "manage-brick";
|
||||
@import "object-brick";
|
||||
@@ -1,150 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
@import "../node_modules/bulma-scss/utilities/mixins";
|
||||
|
||||
$ipb-browse-brick--mosaic-item--highlight-color: $ipb-color-blue-800, $ipb-color-orange-800, $ipb-color-green-800, $ipb-color-pink-800, $ipb-color-cyan-800, $ipb-color-yellow-800, $ipb-color-purple-800;
|
||||
|
||||
$ipb-browse-brick--mosaic-breadcrumb--active--color: $ipb-color-grey-800 !default;
|
||||
$ipb-browse-brick--mosaic-breadcrumb--a--color: $ipb-color-primary-800 !default;
|
||||
|
||||
|
||||
$ipb-browse-brick--mosaic-group-item--color: $common-base-variable--text-color !default;
|
||||
$ipb-browse-brick--mosaic-group-item--border-color: $ipb-color-grey-300 !default;
|
||||
$ipb-browse-brick--mosaic-group-item--border: 1px solid $ipb-browse-brick--mosaic-group-item--border-color !default;
|
||||
$ipb-browse-brick--mosaic-group-item--background-color: $ipb-color-white-100 !default;
|
||||
$ipb-browse-brick--mosaic-item--background-color: $ipb-color-white-100 !default;
|
||||
$ipb-browse-brick--mosaic-item--color: $common-base-variable--text-color !default;
|
||||
$ipb-browse-brick--mosaic-item--hover--color: inherit !default;
|
||||
$ipb-browse-brick--mosaic-item--hover--background-color--alpha: 0.05 !default;
|
||||
|
||||
$ipb-browse-brick--mosaic-item-description--color: $ipb-color-grey-800 !default;
|
||||
|
||||
$ipb-browse-brick--mosaic-item-image--background-color: common-adjust-alpha($ipb-color-blue-700, .1) !default;
|
||||
$ipb-browse-brick--mosaic-item-image--background-color--alpha: 0.1 !default;
|
||||
$ipb-browse-brick--mosaic-item-image--color: $ipb-color-blue-700 !default;
|
||||
|
||||
$ipb-browse-brick-panel--mosaic--background-color: transparent !default;
|
||||
$ipb-browse-brick-panel--mosaic--border: none !default;
|
||||
|
||||
$ipb-browse-brick--tree-item--color: $ipb-color-grey-900 !default;
|
||||
$ipb-browse-brick--tree-item--hyperlink--color: $common-hyperlink-color !default;
|
||||
|
||||
$ipb-browse-brick--tree-item-filter-data--color: $ipb-color-grey-800 !default;
|
||||
|
||||
$ipb-browse-brick--tree-item--description--color: $ipb-color-grey-800 !default;
|
||||
|
||||
$ipb-browse-brick--tree-item--wrapper--color: inherit !default;
|
||||
|
||||
$ipb-browse-brick--list-group-item--background-color: $ipb-color-white-100 !default;
|
||||
$ipb-browse-brick--list-group-item--border-top-color: $ipb-color-grey-400 !default;
|
||||
$ipb-browse-brick--list-group-item--border-top: 1px solid $ipb-browse-brick--list-group-item--border-top-color !default;
|
||||
|
||||
$ipb-browse-brick--list-group--tree--background-color: $ipb-color-white-100 !default;
|
||||
|
||||
$ipb-browse-brick--no-item--text--color: $ipb-color-grey-800 !default;
|
||||
|
||||
.page_browse_brick_as_mosaic .ipb-browse-brick-panel{
|
||||
background-color: $ipb-browse-brick-panel--mosaic--background-color !important;
|
||||
border: $ipb-browse-brick-panel--mosaic--border !important;
|
||||
}
|
||||
|
||||
#mosaic-breadcrumb {
|
||||
a {
|
||||
color: $ipb-browse-brick--mosaic-breadcrumb--a--color;
|
||||
}
|
||||
.active {
|
||||
color: $ipb-browse-brick--mosaic-breadcrumb--active--color;
|
||||
}
|
||||
}
|
||||
|
||||
.mosaic-group-item {
|
||||
background-color: $ipb-browse-brick--mosaic-group-item--background-color;
|
||||
color: $ipb-browse-brick--mosaic-group-item--color;
|
||||
border: $ipb-browse-brick--mosaic-group-item--border;
|
||||
|
||||
@for $i from 1 through length($ipb-browse-brick--mosaic-item--highlight-color) {
|
||||
&:nth-child(#{length($ipb-browse-brick--mosaic-item--highlight-color)}n + #{$i}){
|
||||
.mosaic-item:hover{
|
||||
background-color: common-adjust-alpha(nth($ipb-browse-brick--mosaic-item--highlight-color, $i), $ipb-browse-brick--mosaic-item--hover--background-color--alpha);
|
||||
}
|
||||
.mosaic-item-image {
|
||||
background-color: common-adjust-alpha(nth($ipb-browse-brick--mosaic-item--highlight-color, $i), $ipb-browse-brick--mosaic-item-image--background-color--alpha);
|
||||
color: nth($ipb-browse-brick--mosaic-item--highlight-color, $i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mosaic-item {
|
||||
background-color: $ipb-browse-brick--mosaic-item--background-color;
|
||||
color: $ipb-browse-brick--mosaic-item--color;
|
||||
|
||||
&:hover {
|
||||
color: $ipb-browse-brick--mosaic-item--hover--color;
|
||||
}
|
||||
}
|
||||
|
||||
.mosaic-item-text {
|
||||
.mosaic-item-description {
|
||||
color: $ipb-browse-brick--mosaic-item-description--color;
|
||||
}
|
||||
}
|
||||
|
||||
.mosaic-item-image {
|
||||
background-color: $ipb-browse-brick--mosaic-item-image--background-color;
|
||||
color: $ipb-browse-brick--mosaic-item-image--color;
|
||||
}
|
||||
|
||||
.list-group-item .list-group-item-text, .tree-item {
|
||||
color: $ipb-browse-brick--tree-item--color;
|
||||
|
||||
& a {
|
||||
color: $ipb-browse-brick--tree-item--hyperlink--color;
|
||||
}
|
||||
}
|
||||
|
||||
.list-group.tree .list-group-item .list-group-item-description {
|
||||
color: $ipb-browse-brick--tree-item--description--color;
|
||||
}
|
||||
|
||||
.list-group-item .tree-item-wrapper .tree-item-filter-data {
|
||||
color: $ipb-browse-brick--tree-item-filter-data--color;
|
||||
a {
|
||||
color: $ipb-browse-brick--tree-item-filter-data--color;
|
||||
}
|
||||
}
|
||||
|
||||
#brick_content_tree .list-group-item>.tree-item-wrapper {;
|
||||
color: $ipb-browse-brick--tree-item--wrapper--color;
|
||||
}
|
||||
|
||||
#brick_content_tree .list-group-item {
|
||||
background-color: $ipb-browse-brick--list-group-item--background-color;
|
||||
border: none;
|
||||
border-top: $ipb-browse-brick--list-group-item--border-top;
|
||||
|
||||
|
||||
@for $i from 1 through length($ipb-browse-brick--mosaic-item--highlight-color) {
|
||||
&:nth-child(#{length($ipb-browse-brick--mosaic-item--highlight-color)}n + #{$i - 1}) {
|
||||
&:hover {
|
||||
background-color: common-adjust-alpha(nth($ipb-browse-brick--mosaic-item--highlight-color, $i), $ipb-browse-brick--mosaic-item--hover--background-color--alpha);
|
||||
}
|
||||
> .tree-item-wrapper .tree-item-image {
|
||||
background-color: common-adjust-alpha(nth($ipb-browse-brick--mosaic-item--highlight-color, $i), $ipb-browse-brick--mosaic-item-image--background-color--alpha);
|
||||
color: nth($ipb-browse-brick--mosaic-item--highlight-color, $i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.list-group.tree {
|
||||
background-color: $ipb-browse-brick--list-group--tree--background-color;
|
||||
}
|
||||
|
||||
.ipb-browse-brick--no-item--text {
|
||||
color: $ipb-browse-brick--no-item--text--color;
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-manage-brick--export-action--color: $ipb-color-grey-800 !default;
|
||||
$ipb-manage-brick--no-result--text--color: $ipb-color-grey-800 !default;
|
||||
|
||||
$ipb-manage-brick--pie-chart--colors:
|
||||
$ipb-color-blue-400 $ipb-color-blue-950 "rgb(44, 160, 44)",
|
||||
$ipb-color-blue-500 $ipb-color-blue-950 "rgb(214, 39, 40)",
|
||||
$ipb-color-blue-600 $ipb-color-blue-100 "rgb(148, 103, 189)",
|
||||
$ipb-color-blue-700 $ipb-color-blue-100 "rgb(140, 86, 75)",
|
||||
$ipb-color-blue-800 $ipb-color-blue-100 "rgb(227, 119, 194)",
|
||||
$ipb-color-blue-900 $ipb-color-blue-100 "rgb(127, 127, 127)",
|
||||
$ipb-color-blue-950 $ipb-color-blue-100 "rgb(188, 189, 34)",
|
||||
$ipb-color-blue-100 $ipb-color-blue-950 "rgb(23, 190, 207)",
|
||||
$ipb-color-blue-200 $ipb-color-blue-950 "rgb(31, 119, 180)",
|
||||
$ipb-color-blue-300 $ipb-color-blue-950 "rgb(255, 127, 14)"
|
||||
!default;
|
||||
|
||||
@each $background, $text, $originalColor in $ipb-manage-brick--pie-chart--colors {
|
||||
.c3-chart-arc path[style="fill: #{$originalColor}; cursor: pointer; opacity: 1;"] {
|
||||
fill: $background !important;
|
||||
}
|
||||
.c3-legend-item-tile[style="stroke: #{$originalColor}; pointer-events: none;"] {
|
||||
stroke: $background !important;
|
||||
}
|
||||
.c3-chart-arc:has(path[style="fill: #{$originalColor}; cursor: pointer; opacity: 1;"]) text {
|
||||
fill: $text !important;
|
||||
}
|
||||
}
|
||||
|
||||
.ipb-manage-brick--export-action {
|
||||
color: $ipb-manage-brick--export-action--color;
|
||||
}
|
||||
|
||||
.ipb-manage-brick--no-result--text {
|
||||
color: $ipb-manage-brick--no-result--text--color;
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-object-brick--url-to-clipboard-tooltip-copied--color: $ipb-color-green-500!default;
|
||||
|
||||
.url-to-clipboard-tooltip-copied {
|
||||
color: $ipb-object-brick--url-to-clipboard-tooltip-copied--color;
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
@import "variables/all";
|
||||
@@ -1 +0,0 @@
|
||||
@import "colors/all";
|
||||
@@ -1,9 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
@import "base-palette";
|
||||
@import "semantic-palette";
|
||||
@import "lifecycle-palette";
|
||||
@import "skeleton-palette";
|
||||
@@ -1,127 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/*
|
||||
Base color palette
|
||||
CSS variables
|
||||
These are defined in themes/ as utils/ is included thrice and each time these variables are redeclared in the stylesheets
|
||||
*/
|
||||
:root {
|
||||
--ipb-color-white-100: #{$ipb-color-white-100};
|
||||
--ipb-color-white-200: #{$ipb-color-white-200};
|
||||
--ipb-color-transparent: #{$ipb-color-transparent};
|
||||
|
||||
--ipb-color-grey-50: #{$ipb-color-grey-50};
|
||||
--ipb-color-grey-100: #{$ipb-color-grey-100};
|
||||
--ipb-color-grey-200: #{$ipb-color-grey-200};
|
||||
--ipb-color-grey-300: #{$ipb-color-grey-300};
|
||||
--ipb-color-grey-400: #{$ipb-color-grey-400};
|
||||
--ipb-color-grey-500: #{$ipb-color-grey-500};
|
||||
--ipb-color-grey-600: #{$ipb-color-grey-600};
|
||||
--ipb-color-grey-700: #{$ipb-color-grey-700};
|
||||
--ipb-color-grey-800: #{$ipb-color-grey-800};
|
||||
--ipb-color-grey-900: #{$ipb-color-grey-900};
|
||||
--ipb-color-grey-950: #{$ipb-color-grey-950};
|
||||
|
||||
--ipb-color-blue-grey-50: #{$ipb-color-blue-grey-50};
|
||||
--ipb-color-blue-grey-100: #{$ipb-color-blue-grey-100};
|
||||
--ipb-color-blue-grey-200: #{$ipb-color-blue-grey-200};
|
||||
--ipb-color-blue-grey-300: #{$ipb-color-blue-grey-300};
|
||||
--ipb-color-blue-grey-400: #{$ipb-color-blue-grey-400};
|
||||
--ipb-color-blue-grey-500: #{$ipb-color-blue-grey-500};
|
||||
--ipb-color-blue-grey-600: #{$ipb-color-blue-grey-600};
|
||||
--ipb-color-blue-grey-700: #{$ipb-color-blue-grey-700};
|
||||
--ipb-color-blue-grey-800: #{$ipb-color-blue-grey-800};
|
||||
--ipb-color-blue-grey-900: #{$ipb-color-blue-grey-900};
|
||||
--ipb-color-blue-grey-950: #{$ipb-color-blue-grey-950};
|
||||
|
||||
--ipb-color-blue-100: #{$ipb-color-blue-100};
|
||||
--ipb-color-blue-200: #{$ipb-color-blue-200};
|
||||
--ipb-color-blue-300: #{$ipb-color-blue-300};
|
||||
--ipb-color-blue-400: #{$ipb-color-blue-400};
|
||||
--ipb-color-blue-500: #{$ipb-color-blue-500};
|
||||
--ipb-color-blue-600: #{$ipb-color-blue-600};
|
||||
--ipb-color-blue-700: #{$ipb-color-blue-700};
|
||||
--ipb-color-blue-800: #{$ipb-color-blue-800};
|
||||
--ipb-color-blue-900: #{$ipb-color-blue-900};
|
||||
--ipb-color-blue-950: #{$ipb-color-blue-950};
|
||||
|
||||
--ipb-color-cyan-100: #{$ipb-color-cyan-100};
|
||||
--ipb-color-cyan-200: #{$ipb-color-cyan-200};
|
||||
--ipb-color-cyan-300: #{$ipb-color-cyan-300};
|
||||
--ipb-color-cyan-400: #{$ipb-color-cyan-400};
|
||||
--ipb-color-cyan-500: #{$ipb-color-cyan-500};
|
||||
--ipb-color-cyan-600: #{$ipb-color-cyan-600};
|
||||
--ipb-color-cyan-700: #{$ipb-color-cyan-700};
|
||||
--ipb-color-cyan-800: #{$ipb-color-cyan-800};
|
||||
--ipb-color-cyan-900: #{$ipb-color-cyan-900};
|
||||
--ipb-color-cyan-950: #{$ipb-color-cyan-950};
|
||||
|
||||
--ipb-color-green-100: #{$ipb-color-green-100};
|
||||
--ipb-color-green-200: #{$ipb-color-green-200};
|
||||
--ipb-color-green-300: #{$ipb-color-green-300};
|
||||
--ipb-color-green-400: #{$ipb-color-green-400};
|
||||
--ipb-color-green-500: #{$ipb-color-green-500};
|
||||
--ipb-color-green-600: #{$ipb-color-green-600};
|
||||
--ipb-color-green-700: #{$ipb-color-green-700};
|
||||
--ipb-color-green-800: #{$ipb-color-green-800};
|
||||
--ipb-color-green-900: #{$ipb-color-green-900};
|
||||
--ipb-color-green-950: #{$ipb-color-green-950};
|
||||
|
||||
--ipb-color-orange-100: #{$ipb-color-orange-100};
|
||||
--ipb-color-orange-200: #{$ipb-color-orange-200};
|
||||
--ipb-color-orange-300: #{$ipb-color-orange-300};
|
||||
--ipb-color-orange-400: #{$ipb-color-orange-400};
|
||||
--ipb-color-orange-500: #{$ipb-color-orange-500};
|
||||
--ipb-color-orange-600: #{$ipb-color-orange-600};
|
||||
--ipb-color-orange-700: #{$ipb-color-orange-700};
|
||||
--ipb-color-orange-800: #{$ipb-color-orange-800};
|
||||
--ipb-color-orange-900: #{$ipb-color-orange-900};
|
||||
--ipb-color-orange-950: #{$ipb-color-orange-950};
|
||||
|
||||
--ipb-color-red-100: #{$ipb-color-red-100};
|
||||
--ipb-color-red-200: #{$ipb-color-red-200};
|
||||
--ipb-color-red-300: #{$ipb-color-red-300};
|
||||
--ipb-color-red-400: #{$ipb-color-red-400};
|
||||
--ipb-color-red-500: #{$ipb-color-red-500};
|
||||
--ipb-color-red-600: #{$ipb-color-red-600};
|
||||
--ipb-color-red-700: #{$ipb-color-red-700};
|
||||
--ipb-color-red-800: #{$ipb-color-red-800};
|
||||
--ipb-color-red-900: #{$ipb-color-red-900};
|
||||
--ipb-color-red-950: #{$ipb-color-red-950};
|
||||
|
||||
--ipb-color-pink-100: #{$ipb-color-pink-100};
|
||||
--ipb-color-pink-200: #{$ipb-color-pink-200};
|
||||
--ipb-color-pink-300: #{$ipb-color-pink-300};
|
||||
--ipb-color-pink-400: #{$ipb-color-pink-400};
|
||||
--ipb-color-pink-500: #{$ipb-color-pink-500};
|
||||
--ipb-color-pink-600: #{$ipb-color-pink-600};
|
||||
--ipb-color-pink-700: #{$ipb-color-pink-700};
|
||||
--ipb-color-pink-800: #{$ipb-color-pink-800};
|
||||
--ipb-color-pink-900: #{$ipb-color-pink-900};
|
||||
--ipb-color-pink-950: #{$ipb-color-pink-950};
|
||||
|
||||
--ipb-color-yellow-100: #{$ipb-color-yellow-100};
|
||||
--ipb-color-yellow-200: #{$ipb-color-yellow-200};
|
||||
--ipb-color-yellow-300: #{$ipb-color-yellow-300};
|
||||
--ipb-color-yellow-400: #{$ipb-color-yellow-400};
|
||||
--ipb-color-yellow-500: #{$ipb-color-yellow-500};
|
||||
--ipb-color-yellow-600: #{$ipb-color-yellow-600};
|
||||
--ipb-color-yellow-700: #{$ipb-color-yellow-700};
|
||||
--ipb-color-yellow-800: #{$ipb-color-yellow-800};
|
||||
--ipb-color-yellow-900: #{$ipb-color-yellow-900};
|
||||
--ipb-color-yellow-950: #{$ipb-color-yellow-950};
|
||||
|
||||
--ipb-color-purple-100: #{$ipb-color-purple-100};
|
||||
--ipb-color-purple-200: #{$ipb-color-purple-200};
|
||||
--ipb-color-purple-300: #{$ipb-color-purple-300};
|
||||
--ipb-color-purple-400: #{$ipb-color-purple-400};
|
||||
--ipb-color-purple-500: #{$ipb-color-purple-500};
|
||||
--ipb-color-purple-600: #{$ipb-color-purple-600};
|
||||
--ipb-color-purple-700: #{$ipb-color-purple-700};
|
||||
--ipb-color-purple-800: #{$ipb-color-purple-800};
|
||||
--ipb-color-purple-900: #{$ipb-color-purple-900};
|
||||
--ipb-color-purple-950: #{$ipb-color-purple-950};
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/*
|
||||
Lifecycle palette
|
||||
CSS variables
|
||||
These are defined in themes/ as utils/ is included thrice and each time these variables are redeclared in the stylesheets
|
||||
*/
|
||||
:root {
|
||||
--ipb-lifecycle-new-state-primary-color: #{$ipb-lifecycle-new-state-primary-color};
|
||||
--ipb-lifecycle-new-state-secondary-color: #{$ipb-lifecycle-new-state-secondary-color};
|
||||
--ipb-lifecycle-neutral-state-primary-color: #{$ipb-lifecycle-neutral-state-primary-color};
|
||||
--ipb-lifecycle-neutral-state-secondary-color: #{$ipb-lifecycle-neutral-state-secondary-color};
|
||||
--ipb-lifecycle-waiting-state-primary-color: #{$ipb-lifecycle-waiting-state-primary-color};
|
||||
--ipb-lifecycle-waiting-state-secondary-color: #{$ipb-lifecycle-waiting-state-secondary-color};
|
||||
--ipb-lifecycle-success-state-primary-color: #{$ipb-lifecycle-success-state-primary-color};
|
||||
--ipb-lifecycle-success-state-secondary-color: #{$ipb-lifecycle-success-state-secondary-color};
|
||||
--ipb-lifecycle-failure-state-primary-color: #{$ipb-lifecycle-failure-state-primary-color};
|
||||
--ipb-lifecycle-failure-state-secondary-color: #{$ipb-lifecycle-failure-state-secondary-color};
|
||||
--ipb-lifecycle-frozen-state-primary-color: #{$ipb-lifecycle-frozen-state-primary-color};
|
||||
--ipb-lifecycle-frozen-state-secondary-color: #{$ipb-lifecycle-frozen-state-secondary-color};
|
||||
|
||||
--ipb-lifecycle-active-state-primary-color: #{$ipb-lifecycle-active-state-primary-color};
|
||||
--ipb-lifecycle-active-state-secondary-color: #{$ipb-lifecycle-active-state-secondary-color};
|
||||
--ipb-lifecycle-inactive-state-primary-color: #{$ipb-lifecycle-inactive-state-primary-color};
|
||||
--ipb-lifecycle-inactive-state-secondary-color: #{$ipb-lifecycle-inactive-state-secondary-color};
|
||||
}
|
||||
@@ -1,94 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/*
|
||||
Semantic palettes
|
||||
CSS variables
|
||||
These are defined in themes/ as utils/ is included thrice and each time these variables are redeclared in the stylesheets
|
||||
*/
|
||||
:root {
|
||||
--ipb-color-primary-100: #{$ipb-color-primary-100};
|
||||
--ipb-color-primary-200: #{$ipb-color-primary-200};
|
||||
--ipb-color-primary-300: #{$ipb-color-primary-300};
|
||||
--ipb-color-primary-400: #{$ipb-color-primary-400};
|
||||
--ipb-color-primary-500: #{$ipb-color-primary-500};
|
||||
--ipb-color-primary-600: #{$ipb-color-primary-600};
|
||||
--ipb-color-primary-700: #{$ipb-color-primary-700};
|
||||
--ipb-color-primary-800: #{$ipb-color-primary-800};
|
||||
--ipb-color-primary-900: #{$ipb-color-primary-900};
|
||||
--ipb-color-primary-950: #{$ipb-color-primary-950};
|
||||
|
||||
--ipb-color-secondary-100: #{$ipb-color-secondary-100};
|
||||
--ipb-color-secondary-200: #{$ipb-color-secondary-200};
|
||||
--ipb-color-secondary-300: #{$ipb-color-secondary-300};
|
||||
--ipb-color-secondary-400: #{$ipb-color-secondary-400};
|
||||
--ipb-color-secondary-500: #{$ipb-color-secondary-500};
|
||||
--ipb-color-secondary-600: #{$ipb-color-secondary-600};
|
||||
--ipb-color-secondary-700: #{$ipb-color-secondary-700};
|
||||
--ipb-color-secondary-800: #{$ipb-color-secondary-800};
|
||||
--ipb-color-secondary-900: #{$ipb-color-secondary-900};
|
||||
--ipb-color-secondary-950: #{$ipb-color-secondary-950};
|
||||
|
||||
--ipb-color-information-100: #{$ipb-color-information-100};
|
||||
--ipb-color-information-200: #{$ipb-color-information-200};
|
||||
--ipb-color-information-300: #{$ipb-color-information-300};
|
||||
--ipb-color-information-400: #{$ipb-color-information-400};
|
||||
--ipb-color-information-500: #{$ipb-color-information-500};
|
||||
--ipb-color-information-600: #{$ipb-color-information-600};
|
||||
--ipb-color-information-700: #{$ipb-color-information-700};
|
||||
--ipb-color-information-800: #{$ipb-color-information-800};
|
||||
--ipb-color-information-900: #{$ipb-color-information-900};
|
||||
--ipb-color-information-950: #{$ipb-color-information-950};
|
||||
|
||||
--ipb-color-success-100: #{$ipb-color-success-100};
|
||||
--ipb-color-success-200: #{$ipb-color-success-200};
|
||||
--ipb-color-success-300: #{$ipb-color-success-300};
|
||||
--ipb-color-success-400: #{$ipb-color-success-400};
|
||||
--ipb-color-success-500: #{$ipb-color-success-500};
|
||||
--ipb-color-success-600: #{$ipb-color-success-600};
|
||||
--ipb-color-success-700: #{$ipb-color-success-700};
|
||||
--ipb-color-success-800: #{$ipb-color-success-800};
|
||||
--ipb-color-success-900: #{$ipb-color-success-900};
|
||||
--ipb-color-success-950: #{$ipb-color-success-950};
|
||||
|
||||
--ipb-color-warning-100: #{$ipb-color-warning-100};
|
||||
--ipb-color-warning-200: #{$ipb-color-warning-200};
|
||||
--ipb-color-warning-300: #{$ipb-color-warning-300};
|
||||
--ipb-color-warning-400: #{$ipb-color-warning-400};
|
||||
--ipb-color-warning-500: #{$ipb-color-warning-500};
|
||||
--ipb-color-warning-600: #{$ipb-color-warning-600};
|
||||
--ipb-color-warning-700: #{$ipb-color-warning-700};
|
||||
--ipb-color-warning-800: #{$ipb-color-warning-800};
|
||||
--ipb-color-warning-900: #{$ipb-color-warning-900};
|
||||
--ipb-color-warning-950: #{$ipb-color-warning-950};
|
||||
|
||||
--ipb-color-danger-100: #{$ipb-color-danger-100};
|
||||
--ipb-color-danger-200: #{$ipb-color-danger-200};
|
||||
--ipb-color-danger-300: #{$ipb-color-danger-300};
|
||||
--ipb-color-danger-400: #{$ipb-color-danger-400};
|
||||
--ipb-color-danger-500: #{$ipb-color-danger-500};
|
||||
--ipb-color-danger-600: #{$ipb-color-danger-600};
|
||||
--ipb-color-danger-700: #{$ipb-color-danger-700};
|
||||
--ipb-color-danger-800: #{$ipb-color-danger-800};
|
||||
--ipb-color-danger-900: #{$ipb-color-danger-900};
|
||||
--ipb-color-danger-950: #{$ipb-color-danger-950};
|
||||
|
||||
--ipb-color-error-100: #{$ipb-color-error-100};
|
||||
--ipb-color-error-200: #{$ipb-color-error-200};
|
||||
--ipb-color-error-300: #{$ipb-color-error-300};
|
||||
--ipb-color-error-400: #{$ipb-color-error-400};
|
||||
--ipb-color-error-500: #{$ipb-color-error-500};
|
||||
--ipb-color-error-600: #{$ipb-color-error-600};
|
||||
--ipb-color-error-700: #{$ipb-color-error-700};
|
||||
--ipb-color-error-800: #{$ipb-color-error-800};
|
||||
--ipb-color-error-900: #{$ipb-color-error-900};
|
||||
--ipb-color-error-950: #{$ipb-color-error-950};
|
||||
|
||||
--ipb-caselog-color-highlight-1: #{$ipb-caselog-highlight-color-1};
|
||||
--ipb-caselog-color-highlight-2: #{$ipb-caselog-highlight-color-2};
|
||||
--ipb-caselog-color-highlight-3: #{$ipb-caselog-highlight-color-3};
|
||||
--ipb-caselog-color-highlight-4: #{$ipb-caselog-highlight-color-4};
|
||||
--ipb-caselog-color-highlight-5: #{$ipb-caselog-highlight-color-5};
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* Skeleton palette
|
||||
CSS variables
|
||||
These are defined in themes/ as utils/ is included thrice and each time these variables are redeclared in the stylesheets
|
||||
*/
|
||||
:root {
|
||||
--skeleton-start-color: #{$ipb-skeleton-start-color};
|
||||
--skeleton-stop-color: #{$ipb-skeleton-stop-color};
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
@import "datatables";
|
||||
@@ -1,129 +0,0 @@
|
||||
$ipb-vendors--datatables--paginate-button--colors: map-get(map-get(map-get($ipb-button-colors, ''), 'default'), '') !default;
|
||||
$ipb-vendors--datatables--paginate-button--hover--colors: map-get(map-get(map-get($ipb-button-colors, ''), 'default'), ':hover') !default;
|
||||
$ipb-vendors--datatables--paginate-button--focus--colors: map-get(map-get(map-get($ipb-button-colors, ''), 'default'), ':active') !default;
|
||||
$ipb-vendors--datatables--paginate-button--disabled--colors: map-get(map-get(map-get($ipb-button-colors, ''), 'default'), ':disabled') !default;
|
||||
$ipb-vendors--datatables--paginate-button--active--colors: map-get(map-get(map-get($ipb-button-colors, ''), 'primary'), '') !default;
|
||||
$ipb-vendors--datatables--paginate-button--active--hover--colors: map-get(map-get(map-get($ipb-button-colors, ''), 'primary'), ':hover') !default;
|
||||
|
||||
$ipb-vendors-datatables--columns-header--border-bottom-color: $ipb-color-grey-400 !default;
|
||||
$ipb-vendors-datatables--columns-header--border-bottom: 2px solid $ipb-vendors-datatables--columns-header--border-bottom-color !default;
|
||||
|
||||
$ipb-vendors-datatables--row--is-odd--background-color: $ipb-color-white-100 !default;
|
||||
$ipb-vendors-datatables--row--is-even--background-color: $ipb-color-white-200 !default;
|
||||
$ipb-vendors-datatables--row--hover--background-color: $ipb-color-blue-100 !default;
|
||||
$ipb-vendors-datatables--row--is-selected--color: $ipb-color-blue-900 !default;
|
||||
$ipb-vendors-datatables--row--is-selected--background-color: $ipb-color-blue-200 !default;
|
||||
$ipb-vendors-datatables--row--is-selected--hover--background-color: $ipb-color-blue-100 !default;
|
||||
|
||||
$ipb-vendors-datatables--row-highlight--colors:(
|
||||
'red': ($ipb-color-red-100, $ipb-color-red-200),
|
||||
'danger': ($ipb-color-danger-200, $ipb-color-danger-300),
|
||||
'alert': ($ipb-color-red-200, $ipb-color-red-300),
|
||||
'orange': ($ipb-color-orange-100, $ipb-color-orange-200),
|
||||
'warning': ($ipb-color-warning-200, $ipb-color-warning-300),
|
||||
'blue': ($ipb-color-blue-200, $ipb-color-blue-300),
|
||||
'info': ($ipb-color-information-200, $ipb-color-information-300),
|
||||
'green': ($ipb-color-green-100, $ipb-color-green-200),
|
||||
'success': ($ipb-color-success-100, $ipb-color-success-200),
|
||||
) !default;
|
||||
|
||||
$ipb-vendors-datatables--row-highlight--first-cell--colors:(
|
||||
'red': ($ipb-color-red-300),
|
||||
'danger': ($ipb-color-danger-400),
|
||||
'alert': ($ipb-color-red-400),
|
||||
'orange': ($ipb-color-orange-300),
|
||||
'warning': ($ipb-color-warning-400),
|
||||
'blue': ($ipb-color-blue-400),
|
||||
'info': ($ipb-color-information-400),
|
||||
'green': ($ipb-color-green-300),
|
||||
'success': ($ipb-color-success-300),
|
||||
) !default;
|
||||
|
||||
.table {
|
||||
> thead > tr > th {
|
||||
border-bottom: $ipb-vendors-datatables--columns-header--border-bottom !important;
|
||||
}
|
||||
}
|
||||
|
||||
.table-striped > tbody > tr{
|
||||
background-color: $ipb-vendors-datatables--row--is-even--background-color;
|
||||
&:nth-of-type(2n+1) {
|
||||
background-color: $ipb-vendors-datatables--row--is-odd--background-color;
|
||||
}
|
||||
@each $sColorLabel, $aAttributes in $ipb-vendors-datatables--row-highlight--colors {
|
||||
$sBgColor: nth($aAttributes, 1);
|
||||
$sBgColorHover: nth($aAttributes, 2);
|
||||
&.ipb-is-#{$sColorLabel}, &.#{$sColorLabel}{
|
||||
td {
|
||||
background-color: $sBgColor;
|
||||
}
|
||||
&:hover td {
|
||||
background-color: $sBgColorHover;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@each $sColorLabel, $aAttributes in $ipb-vendors-datatables--row-highlight--first-cell--colors {
|
||||
$sBgColor: nth($aAttributes, 1);
|
||||
&.ipb-is-#{$sColorLabel} td:first-child::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 3px;
|
||||
height: 100%;
|
||||
background-color: $sBgColor;
|
||||
}
|
||||
}
|
||||
&:hover {
|
||||
background-color: $ipb-vendors-datatables--row--hover--background-color;
|
||||
}
|
||||
}
|
||||
|
||||
table.dataTable {
|
||||
> thead, tbody, tfoot {
|
||||
> tr.selected {
|
||||
background-color: $ipb-vendors-datatables--row--is-selected--background-color;
|
||||
color: $ipb-vendors-datatables--row--is-selected--color;
|
||||
&:hover {
|
||||
background-color: $ipb-vendors-datatables--row--is-selected--hover--background-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.pagination > .paginate_button{
|
||||
> a {
|
||||
background-color: nth($ipb-vendors--datatables--paginate-button--colors, 1);
|
||||
color: nth($ipb-vendors--datatables--paginate-button--colors, 2);
|
||||
border-color: nth($ipb-vendors--datatables--paginate-button--colors, 3);
|
||||
|
||||
&:hover {
|
||||
background-color: nth($ipb-vendors--datatables--paginate-button--hover--colors, 1);
|
||||
color: nth($ipb-vendors--datatables--paginate-button--hover--colors, 2);
|
||||
border-color: nth($ipb-vendors--datatables--paginate-button--hover--colors, 3)
|
||||
}
|
||||
|
||||
&:focus {
|
||||
background-color: nth($ipb-vendors--datatables--paginate-button--focus--colors, 1);
|
||||
color: nth($ipb-vendors--datatables--paginate-button--focus--colors, 2);
|
||||
border-color: nth($ipb-vendors--datatables--paginate-button--focus--colors, 3)
|
||||
|
||||
}
|
||||
}
|
||||
&.disabled > a {
|
||||
background-color: nth($ipb-vendors--datatables--paginate-button--disabled--colors, 1);
|
||||
color: nth($ipb-vendors--datatables--paginate-button--disabled--colors, 2);
|
||||
border-color: nth($ipb-vendors--datatables--paginate-button--disabled--colors, 3)
|
||||
}
|
||||
&.active > a {
|
||||
background-color: nth($ipb-vendors--datatables--paginate-button--active--colors, 1);
|
||||
color: nth($ipb-vendors--datatables--paginate-button--active--colors, 2);
|
||||
border-color: nth($ipb-vendors--datatables--paginate-button--active--colors, 3);
|
||||
&:hover{
|
||||
background-color: nth($ipb-vendors--datatables--paginate-button--active--hover--colors, 1);
|
||||
color: nth($ipb-vendors--datatables--paginate-button--active--hover--colors, 2);
|
||||
border-color: nth($ipb-vendors--datatables--paginate-button--active--hover--colors, 3)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,2 @@
|
||||
@import "helpers/all";
|
||||
@import "variables/all";
|
||||
@import "mixins/all";
|
||||
@import "variables/all";
|
||||
@@ -121,4 +121,123 @@ $ipb-color-purple-800: $common-color-purple-800 !default;
|
||||
$ipb-color-purple-900: $common-color-purple-900 !default;
|
||||
$ipb-color-purple-950: $common-color-purple-950 !default;
|
||||
|
||||
$ipb-colors: $common-colors;
|
||||
$ipb-colors: $common-colors;
|
||||
|
||||
/* CSS variables */
|
||||
:root {
|
||||
--ipb-color-white-100: #{$ipb-color-white-100};
|
||||
--ipb-color-white-200: #{$ipb-color-white-200};
|
||||
--ipb-color-transparent: #{$ipb-color-transparent};
|
||||
|
||||
--ipb-color-grey-50: #{$ipb-color-grey-50};
|
||||
--ipb-color-grey-100: #{$ipb-color-grey-100};
|
||||
--ipb-color-grey-200: #{$ipb-color-grey-200};
|
||||
--ipb-color-grey-300: #{$ipb-color-grey-300};
|
||||
--ipb-color-grey-400: #{$ipb-color-grey-400};
|
||||
--ipb-color-grey-500: #{$ipb-color-grey-500};
|
||||
--ipb-color-grey-600: #{$ipb-color-grey-600};
|
||||
--ipb-color-grey-700: #{$ipb-color-grey-700};
|
||||
--ipb-color-grey-800: #{$ipb-color-grey-800};
|
||||
--ipb-color-grey-900: #{$ipb-color-grey-900};
|
||||
--ipb-color-grey-950: #{$ipb-color-grey-950};
|
||||
|
||||
--ipb-color-blue-grey-50: #{$ipb-color-blue-grey-50};
|
||||
--ipb-color-blue-grey-100: #{$ipb-color-blue-grey-100};
|
||||
--ipb-color-blue-grey-200: #{$ipb-color-blue-grey-200};
|
||||
--ipb-color-blue-grey-300: #{$ipb-color-blue-grey-300};
|
||||
--ipb-color-blue-grey-400: #{$ipb-color-blue-grey-400};
|
||||
--ipb-color-blue-grey-500: #{$ipb-color-blue-grey-500};
|
||||
--ipb-color-blue-grey-600: #{$ipb-color-blue-grey-600};
|
||||
--ipb-color-blue-grey-700: #{$ipb-color-blue-grey-700};
|
||||
--ipb-color-blue-grey-800: #{$ipb-color-blue-grey-800};
|
||||
--ipb-color-blue-grey-900: #{$ipb-color-blue-grey-900};
|
||||
--ipb-color-blue-grey-950: #{$ipb-color-blue-grey-950};
|
||||
|
||||
--ipb-color-blue-100: #{$ipb-color-blue-100};
|
||||
--ipb-color-blue-200: #{$ipb-color-blue-200};
|
||||
--ipb-color-blue-300: #{$ipb-color-blue-300};
|
||||
--ipb-color-blue-400: #{$ipb-color-blue-400};
|
||||
--ipb-color-blue-500: #{$ipb-color-blue-500};
|
||||
--ipb-color-blue-600: #{$ipb-color-blue-600};
|
||||
--ipb-color-blue-700: #{$ipb-color-blue-700};
|
||||
--ipb-color-blue-800: #{$ipb-color-blue-800};
|
||||
--ipb-color-blue-900: #{$ipb-color-blue-900};
|
||||
--ipb-color-blue-950: #{$ipb-color-blue-950};
|
||||
|
||||
--ipb-color-cyan-100: #{$ipb-color-cyan-100};
|
||||
--ipb-color-cyan-200: #{$ipb-color-cyan-200};
|
||||
--ipb-color-cyan-300: #{$ipb-color-cyan-300};
|
||||
--ipb-color-cyan-400: #{$ipb-color-cyan-400};
|
||||
--ipb-color-cyan-500: #{$ipb-color-cyan-500};
|
||||
--ipb-color-cyan-600: #{$ipb-color-cyan-600};
|
||||
--ipb-color-cyan-700: #{$ipb-color-cyan-700};
|
||||
--ipb-color-cyan-800: #{$ipb-color-cyan-800};
|
||||
--ipb-color-cyan-900: #{$ipb-color-cyan-900};
|
||||
--ipb-color-cyan-950: #{$ipb-color-cyan-950};
|
||||
|
||||
--ipb-color-green-100: #{$ipb-color-green-100};
|
||||
--ipb-color-green-200: #{$ipb-color-green-200};
|
||||
--ipb-color-green-300: #{$ipb-color-green-300};
|
||||
--ipb-color-green-400: #{$ipb-color-green-400};
|
||||
--ipb-color-green-500: #{$ipb-color-green-500};
|
||||
--ipb-color-green-600: #{$ipb-color-green-600};
|
||||
--ipb-color-green-700: #{$ipb-color-green-700};
|
||||
--ipb-color-green-800: #{$ipb-color-green-800};
|
||||
--ipb-color-green-900: #{$ipb-color-green-900};
|
||||
--ipb-color-green-950: #{$ipb-color-green-950};
|
||||
|
||||
--ipb-color-orange-100: #{$ipb-color-orange-100};
|
||||
--ipb-color-orange-200: #{$ipb-color-orange-200};
|
||||
--ipb-color-orange-300: #{$ipb-color-orange-300};
|
||||
--ipb-color-orange-400: #{$ipb-color-orange-400};
|
||||
--ipb-color-orange-500: #{$ipb-color-orange-500};
|
||||
--ipb-color-orange-600: #{$ipb-color-orange-600};
|
||||
--ipb-color-orange-700: #{$ipb-color-orange-700};
|
||||
--ipb-color-orange-800: #{$ipb-color-orange-800};
|
||||
--ipb-color-orange-900: #{$ipb-color-orange-900};
|
||||
--ipb-color-orange-950: #{$ipb-color-orange-950};
|
||||
|
||||
--ipb-color-red-100: #{$ipb-color-red-100};
|
||||
--ipb-color-red-200: #{$ipb-color-red-200};
|
||||
--ipb-color-red-300: #{$ipb-color-red-300};
|
||||
--ipb-color-red-400: #{$ipb-color-red-400};
|
||||
--ipb-color-red-500: #{$ipb-color-red-500};
|
||||
--ipb-color-red-600: #{$ipb-color-red-600};
|
||||
--ipb-color-red-700: #{$ipb-color-red-700};
|
||||
--ipb-color-red-800: #{$ipb-color-red-800};
|
||||
--ipb-color-red-900: #{$ipb-color-red-900};
|
||||
--ipb-color-red-950: #{$ipb-color-red-950};
|
||||
|
||||
--ipb-color-pink-100: #{$ipb-color-pink-100};
|
||||
--ipb-color-pink-200: #{$ipb-color-pink-200};
|
||||
--ipb-color-pink-300: #{$ipb-color-pink-300};
|
||||
--ipb-color-pink-400: #{$ipb-color-pink-400};
|
||||
--ipb-color-pink-500: #{$ipb-color-pink-500};
|
||||
--ipb-color-pink-600: #{$ipb-color-pink-600};
|
||||
--ipb-color-pink-700: #{$ipb-color-pink-700};
|
||||
--ipb-color-pink-800: #{$ipb-color-pink-800};
|
||||
--ipb-color-pink-900: #{$ipb-color-pink-900};
|
||||
--ipb-color-pink-950: #{$ipb-color-pink-950};
|
||||
|
||||
--ipb-color-yellow-100: #{$ipb-color-yellow-100};
|
||||
--ipb-color-yellow-200: #{$ipb-color-yellow-200};
|
||||
--ipb-color-yellow-300: #{$ipb-color-yellow-300};
|
||||
--ipb-color-yellow-400: #{$ipb-color-yellow-400};
|
||||
--ipb-color-yellow-500: #{$ipb-color-yellow-500};
|
||||
--ipb-color-yellow-600: #{$ipb-color-yellow-600};
|
||||
--ipb-color-yellow-700: #{$ipb-color-yellow-700};
|
||||
--ipb-color-yellow-800: #{$ipb-color-yellow-800};
|
||||
--ipb-color-yellow-900: #{$ipb-color-yellow-900};
|
||||
--ipb-color-yellow-950: #{$ipb-color-yellow-950};
|
||||
|
||||
--ipb-color-purple-100: #{$ipb-color-purple-100};
|
||||
--ipb-color-purple-200: #{$ipb-color-purple-200};
|
||||
--ipb-color-purple-300: #{$ipb-color-purple-300};
|
||||
--ipb-color-purple-400: #{$ipb-color-purple-400};
|
||||
--ipb-color-purple-500: #{$ipb-color-purple-500};
|
||||
--ipb-color-purple-600: #{$ipb-color-purple-600};
|
||||
--ipb-color-purple-700: #{$ipb-color-purple-700};
|
||||
--ipb-color-purple-800: #{$ipb-color-purple-800};
|
||||
--ipb-color-purple-900: #{$ipb-color-purple-900};
|
||||
--ipb-color-purple-950: #{$ipb-color-purple-950};
|
||||
}
|
||||
@@ -57,4 +57,25 @@ $ipb-lifecycle-states-colors: (
|
||||
'primary-color': $ipb-lifecycle-inactive-state-primary-color,
|
||||
'secondary-color': $ipb-lifecycle-inactive-state-secondary-color,
|
||||
),
|
||||
);
|
||||
);
|
||||
|
||||
/* CSS varibales */
|
||||
:root {
|
||||
--ipb-lifecycle-new-state-primary-color: #{$ipb-lifecycle-new-state-primary-color};
|
||||
--ipb-lifecycle-new-state-secondary-color: #{$ipb-lifecycle-new-state-secondary-color};
|
||||
--ipb-lifecycle-neutral-state-primary-color: #{$ipb-lifecycle-neutral-state-primary-color};
|
||||
--ipb-lifecycle-neutral-state-secondary-color: #{$ipb-lifecycle-neutral-state-secondary-color};
|
||||
--ipb-lifecycle-waiting-state-primary-color: #{$ipb-lifecycle-waiting-state-primary-color};
|
||||
--ipb-lifecycle-waiting-state-secondary-color: #{$ipb-lifecycle-waiting-state-secondary-color};
|
||||
--ipb-lifecycle-success-state-primary-color: #{$ipb-lifecycle-success-state-primary-color};
|
||||
--ipb-lifecycle-success-state-secondary-color: #{$ipb-lifecycle-success-state-secondary-color};
|
||||
--ipb-lifecycle-failure-state-primary-color: #{$ipb-lifecycle-failure-state-primary-color};
|
||||
--ipb-lifecycle-failure-state-secondary-color: #{$ipb-lifecycle-failure-state-secondary-color};
|
||||
--ipb-lifecycle-frozen-state-primary-color: #{$ipb-lifecycle-frozen-state-primary-color};
|
||||
--ipb-lifecycle-frozen-state-secondary-color: #{$ipb-lifecycle-frozen-state-secondary-color};
|
||||
|
||||
--ipb-lifecycle-active-state-primary-color: #{$ipb-lifecycle-active-state-primary-color};
|
||||
--ipb-lifecycle-active-state-secondary-color: #{$ipb-lifecycle-active-state-secondary-color};
|
||||
--ipb-lifecycle-inactive-state-primary-color: #{$ipb-lifecycle-inactive-state-primary-color};
|
||||
--ipb-lifecycle-inactive-state-secondary-color: #{$ipb-lifecycle-inactive-state-secondary-color};
|
||||
}
|
||||
@@ -98,3 +98,89 @@ $ipb-caselog-highlight-color-5: $common-caselog-highlight-color-5 !default;
|
||||
$ipb-caselog-highlight-color-6: $common-caselog-highlight-color-6 !default;
|
||||
$ipb-caselog-highlight-color-7: $common-caselog-highlight-color-7 !default;
|
||||
$ipb-caselog-highlight-colors: $common-caselog-highlight-colors !default;
|
||||
|
||||
/* CSS variables */
|
||||
:root {
|
||||
--ipb-color-primary-100: #{$ipb-color-primary-100};
|
||||
--ipb-color-primary-200: #{$ipb-color-primary-200};
|
||||
--ipb-color-primary-300: #{$ipb-color-primary-300};
|
||||
--ipb-color-primary-400: #{$ipb-color-primary-400};
|
||||
--ipb-color-primary-500: #{$ipb-color-primary-500};
|
||||
--ipb-color-primary-600: #{$ipb-color-primary-600};
|
||||
--ipb-color-primary-700: #{$ipb-color-primary-700};
|
||||
--ipb-color-primary-800: #{$ipb-color-primary-800};
|
||||
--ipb-color-primary-900: #{$ipb-color-primary-900};
|
||||
--ipb-color-primary-950: #{$ipb-color-primary-950};
|
||||
|
||||
--ipb-color-secondary-100: #{$ipb-color-secondary-100};
|
||||
--ipb-color-secondary-200: #{$ipb-color-secondary-200};
|
||||
--ipb-color-secondary-300: #{$ipb-color-secondary-300};
|
||||
--ipb-color-secondary-400: #{$ipb-color-secondary-400};
|
||||
--ipb-color-secondary-500: #{$ipb-color-secondary-500};
|
||||
--ipb-color-secondary-600: #{$ipb-color-secondary-600};
|
||||
--ipb-color-secondary-700: #{$ipb-color-secondary-700};
|
||||
--ipb-color-secondary-800: #{$ipb-color-secondary-800};
|
||||
--ipb-color-secondary-900: #{$ipb-color-secondary-900};
|
||||
--ipb-color-secondary-950: #{$ipb-color-secondary-950};
|
||||
|
||||
--ipb-color-information-100: #{$ipb-color-information-100};
|
||||
--ipb-color-information-200: #{$ipb-color-information-200};
|
||||
--ipb-color-information-300: #{$ipb-color-information-300};
|
||||
--ipb-color-information-400: #{$ipb-color-information-400};
|
||||
--ipb-color-information-500: #{$ipb-color-information-500};
|
||||
--ipb-color-information-600: #{$ipb-color-information-600};
|
||||
--ipb-color-information-700: #{$ipb-color-information-700};
|
||||
--ipb-color-information-800: #{$ipb-color-information-800};
|
||||
--ipb-color-information-900: #{$ipb-color-information-900};
|
||||
--ipb-color-information-950: #{$ipb-color-information-950};
|
||||
|
||||
--ipb-color-success-100: #{$ipb-color-success-100};
|
||||
--ipb-color-success-200: #{$ipb-color-success-200};
|
||||
--ipb-color-success-300: #{$ipb-color-success-300};
|
||||
--ipb-color-success-400: #{$ipb-color-success-400};
|
||||
--ipb-color-success-500: #{$ipb-color-success-500};
|
||||
--ipb-color-success-600: #{$ipb-color-success-600};
|
||||
--ipb-color-success-700: #{$ipb-color-success-700};
|
||||
--ipb-color-success-800: #{$ipb-color-success-800};
|
||||
--ipb-color-success-900: #{$ipb-color-success-900};
|
||||
--ipb-color-success-950: #{$ipb-color-success-950};
|
||||
|
||||
--ipb-color-warning-100: #{$ipb-color-warning-100};
|
||||
--ipb-color-warning-200: #{$ipb-color-warning-200};
|
||||
--ipb-color-warning-300: #{$ipb-color-warning-300};
|
||||
--ipb-color-warning-400: #{$ipb-color-warning-400};
|
||||
--ipb-color-warning-500: #{$ipb-color-warning-500};
|
||||
--ipb-color-warning-600: #{$ipb-color-warning-600};
|
||||
--ipb-color-warning-700: #{$ipb-color-warning-700};
|
||||
--ipb-color-warning-800: #{$ipb-color-warning-800};
|
||||
--ipb-color-warning-900: #{$ipb-color-warning-900};
|
||||
--ipb-color-warning-950: #{$ipb-color-warning-950};
|
||||
|
||||
--ipb-color-danger-100: #{$ipb-color-danger-100};
|
||||
--ipb-color-danger-200: #{$ipb-color-danger-200};
|
||||
--ipb-color-danger-300: #{$ipb-color-danger-300};
|
||||
--ipb-color-danger-400: #{$ipb-color-danger-400};
|
||||
--ipb-color-danger-500: #{$ipb-color-danger-500};
|
||||
--ipb-color-danger-600: #{$ipb-color-danger-600};
|
||||
--ipb-color-danger-700: #{$ipb-color-danger-700};
|
||||
--ipb-color-danger-800: #{$ipb-color-danger-800};
|
||||
--ipb-color-danger-900: #{$ipb-color-danger-900};
|
||||
--ipb-color-danger-950: #{$ipb-color-danger-950};
|
||||
|
||||
--ipb-color-error-100: #{$ipb-color-error-100};
|
||||
--ipb-color-error-200: #{$ipb-color-error-200};
|
||||
--ipb-color-error-300: #{$ipb-color-error-300};
|
||||
--ipb-color-error-400: #{$ipb-color-error-400};
|
||||
--ipb-color-error-500: #{$ipb-color-error-500};
|
||||
--ipb-color-error-600: #{$ipb-color-error-600};
|
||||
--ipb-color-error-700: #{$ipb-color-error-700};
|
||||
--ipb-color-error-800: #{$ipb-color-error-800};
|
||||
--ipb-color-error-900: #{$ipb-color-error-900};
|
||||
--ipb-color-error-950: #{$ipb-color-error-950};
|
||||
|
||||
--ipb-caselog-color-highlight-1: #{$ipb-caselog-highlight-color-1};
|
||||
--ipb-caselog-color-highlight-2: #{$ipb-caselog-highlight-color-2};
|
||||
--ipb-caselog-color-highlight-3: #{$ipb-caselog-highlight-color-3};
|
||||
--ipb-caselog-color-highlight-4: #{$ipb-caselog-highlight-color-4};
|
||||
--ipb-caselog-color-highlight-5: #{$ipb-caselog-highlight-color-5};
|
||||
}
|
||||
@@ -7,4 +7,11 @@
|
||||
/* - Colors used by skeletons svg to display placeholders */
|
||||
|
||||
$ipb-skeleton-start-color: $common-skeleton-start-color !default;
|
||||
$ipb-skeleton-stop-color: $common-skeleton-stop-color !default;
|
||||
$ipb-skeleton-stop-color: $common-skeleton-stop-color !default;
|
||||
|
||||
/* CSS variables */
|
||||
/* Skeleton CSS3 variables are not ipb prefixed as they are not iTop backoffice exclusives*/
|
||||
:root {
|
||||
--skeleton-start-color: #{$ipb-skeleton-start-color};
|
||||
--skeleton-stop-color: #{$ipb-skeleton-stop-color};
|
||||
}
|
||||
@@ -1,14 +1,49 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables (can be overloaded) */
|
||||
$ipb-vendors-datatables--cell--padding-x: $common-spacing-400 !default;
|
||||
$ipb-vendors-datatables--cell--padding-y: 10px !default;
|
||||
|
||||
$ipb-vendors-datatables--columns-header--border-bottom: 2px solid $common-color-grey-400 !default;
|
||||
|
||||
$ipb-vendors--datatables--paginate-button--colors: map-get(map-get(map-get($ipb-button-colors, ''), 'default'), '') !default;
|
||||
$ipb-vendors--datatables--paginate-button--hover--colors: map-get(map-get(map-get($ipb-button-colors, ''), 'default'), ':hover') !default;
|
||||
$ipb-vendors--datatables--paginate-button--focus--colors: map-get(map-get(map-get($ipb-button-colors, ''), 'default'), ':active') !default;
|
||||
$ipb-vendors--datatables--paginate-button--disabled--colors: map-get(map-get(map-get($ipb-button-colors, ''), 'default'), ':disabled') !default;
|
||||
$ipb-vendors--datatables--paginate-button--active--colors: map-get(map-get(map-get($ipb-button-colors, ''), 'primary'), '') !default;
|
||||
$ipb-vendors--datatables--paginate-button--active--hover--colors: map-get(map-get(map-get($ipb-button-colors, ''), 'primary'), ':hover') !default;
|
||||
|
||||
$ipb-vendors-datatables--row--background-color--is-odd: $common-color-white-100 !default;
|
||||
$ipb-vendors-datatables--row--background-color--is-even: $common-color-white-200 !default;
|
||||
|
||||
$ipb-vendors-datatables--row-highlight--first-cell--width: 3px !default;
|
||||
|
||||
$ipb-vendors-datatables--row-highlight--colors:(
|
||||
'red': ($common-color-red-100, $common-color-red-200),
|
||||
'danger': ($common-color-danger-200, $common-color-danger-300),
|
||||
'alert': ($common-color-red-200, $common-color-red-300),
|
||||
'orange': ($common-color-orange-100, $common-color-orange-200),
|
||||
'warning': ($common-color-warning-200, $common-color-warning-300),
|
||||
'blue': ($common-color-blue-200, $common-color-blue-300),
|
||||
'info': ($common-color-information-200, $common-color-information-300),
|
||||
'green': ($common-color-green-100, $common-color-green-200),
|
||||
'success': ($common-color-success-100, $common-color-success-200),
|
||||
) !default;
|
||||
|
||||
$ipb-vendors-datatables--row-highlight--first-cell--colors:(
|
||||
'red': ($common-color-red-300),
|
||||
'danger': ($common-color-danger-400),
|
||||
'alert': ($common-color-red-400),
|
||||
'orange': ($common-color-orange-300),
|
||||
'warning': ($common-color-warning-400),
|
||||
'blue': ($common-color-blue-400),
|
||||
'info': ($common-color-information-400),
|
||||
'green': ($common-color-green-300),
|
||||
'success': ($common-color-success-300),
|
||||
) !default;
|
||||
|
||||
.table {
|
||||
> thead, tbody, tfoot {
|
||||
> tr {
|
||||
@@ -19,13 +54,83 @@ $ipb-vendors-datatables--row-highlight--first-cell--width: 3px !default;
|
||||
}
|
||||
}
|
||||
}
|
||||
> thead > tr > th {
|
||||
border-bottom: $ipb-vendors-datatables--columns-header--border-bottom !important;
|
||||
}
|
||||
}
|
||||
|
||||
.table-striped > tbody > tr{
|
||||
background-color: $ipb-vendors-datatables--row--background-color--is-even;
|
||||
cursor: pointer;
|
||||
&:nth-of-type(2n+1) {
|
||||
background-color: $ipb-vendors-datatables--row--background-color--is-odd;
|
||||
}
|
||||
@each $sColorLabel, $aAttributes in $ipb-vendors-datatables--row-highlight--colors {
|
||||
$sBgColor: nth($aAttributes, 1);
|
||||
$sBgColorHover: nth($aAttributes, 2);
|
||||
&.ipb-is-#{$sColorLabel}, &.#{$sColorLabel}{
|
||||
td {
|
||||
background-color: $sBgColor;
|
||||
}
|
||||
&:hover td {
|
||||
background-color: $sBgColorHover;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@each $sColorLabel, $aAttributes in $ipb-vendors-datatables--row-highlight--first-cell--colors {
|
||||
$sBgColor: nth($aAttributes, 1);
|
||||
&.ipb-is-#{$sColorLabel} td:first-child::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 3px;
|
||||
height: 100%;
|
||||
background-color: $sBgColor;
|
||||
}
|
||||
}
|
||||
&:hover {
|
||||
background-color: $common-color-blue-100;
|
||||
}
|
||||
}
|
||||
|
||||
.pagination > .paginate_button{
|
||||
> a {
|
||||
background-color: nth($ipb-vendors--datatables--paginate-button--colors, 1);
|
||||
color: nth($ipb-vendors--datatables--paginate-button--colors, 2);
|
||||
border-color: nth($ipb-vendors--datatables--paginate-button--colors, 3);
|
||||
|
||||
&:hover {
|
||||
background-color: nth($ipb-vendors--datatables--paginate-button--hover--colors, 1);
|
||||
color: nth($ipb-vendors--datatables--paginate-button--hover--colors, 2);
|
||||
border-color: nth($ipb-vendors--datatables--paginate-button--hover--colors, 3)
|
||||
}
|
||||
|
||||
&:focus {
|
||||
background-color: nth($ipb-vendors--datatables--paginate-button--focus--colors, 1);
|
||||
color: nth($ipb-vendors--datatables--paginate-button--focus--colors, 2);
|
||||
border-color: nth($ipb-vendors--datatables--paginate-button--focus--colors, 3)
|
||||
|
||||
}
|
||||
}
|
||||
&.disabled > a {
|
||||
background-color: nth($ipb-vendors--datatables--paginate-button--disabled--colors, 1);
|
||||
color: nth($ipb-vendors--datatables--paginate-button--disabled--colors, 2);
|
||||
border-color: nth($ipb-vendors--datatables--paginate-button--disabled--colors, 3)
|
||||
}
|
||||
&.active > a {
|
||||
background-color: nth($ipb-vendors--datatables--paginate-button--active--colors, 1);
|
||||
color: nth($ipb-vendors--datatables--paginate-button--active--colors, 2);
|
||||
border-color: nth($ipb-vendors--datatables--paginate-button--active--colors, 3);
|
||||
&:hover{
|
||||
background-color: nth($ipb-vendors--datatables--paginate-button--active--hover--colors, 1);
|
||||
color: nth($ipb-vendors--datatables--paginate-button--active--hover--colors, 2);
|
||||
border-color: nth($ipb-vendors--datatables--paginate-button--active--hover--colors, 3)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dataTables_length, .dataTables_filter, .dataTables_info {
|
||||
@extend %common-font-ral-nor-150;
|
||||
}
|
||||
}
|
||||
@@ -245,10 +245,6 @@ class NavigationMenuElement extends HTMLElement {
|
||||
}
|
||||
|
||||
Expand(bSaveUserPreference = false) {
|
||||
// save user preference
|
||||
if (bSaveUserPreference) {
|
||||
oUserPreferences.setPreference('portal.navigation_menu.expanded', 'expanded');
|
||||
}
|
||||
// sync attribute
|
||||
if (this.getAttribute(NavigationMenuElement.DATA_EXPANDED_STATE) !== 'expanded') {
|
||||
this.setAttribute(NavigationMenuElement.DATA_EXPANDED_STATE, 'expanded');
|
||||
@@ -261,13 +257,13 @@ class NavigationMenuElement extends HTMLElement {
|
||||
// dispatch events
|
||||
window.dispatchEvent(new Event('resize')); // do layout
|
||||
this.dispatchEvent(new CustomEvent("state", {detail: 'expanded'}));
|
||||
// save user preference
|
||||
if (bSaveUserPreference) {
|
||||
SetUserPreference('portal.navigation_menu.expanded', 'expanded', true);
|
||||
}
|
||||
}
|
||||
|
||||
Collapse(bSaveUserPreference = false) {
|
||||
// save user preference
|
||||
if (bSaveUserPreference) {
|
||||
oUserPreferences.setPreference('portal.navigation_menu.expanded', 'collapsed');
|
||||
}
|
||||
// sync attribute
|
||||
if (this.getAttribute(NavigationMenuElement.DATA_EXPANDED_STATE) !== 'collapsed') {
|
||||
this.setAttribute(NavigationMenuElement.DATA_EXPANDED_STATE, 'collapsed');
|
||||
@@ -280,6 +276,10 @@ class NavigationMenuElement extends HTMLElement {
|
||||
// dispatch events
|
||||
window.dispatchEvent(new Event('resize')); // do layout
|
||||
this.dispatchEvent(new CustomEvent("state", {detail: 'collapsed'}));
|
||||
// save user preference
|
||||
if (bSaveUserPreference) {
|
||||
SetUserPreference('portal.navigation_menu.expanded', 'collapsed', true);
|
||||
}
|
||||
}
|
||||
|
||||
IsExpanded() {
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2013-2024 Combodo SAS
|
||||
*
|
||||
* This file is part of iTop.
|
||||
*
|
||||
* iTop is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* iTop is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
*/
|
||||
|
||||
class UserPreferences {
|
||||
|
||||
constructor(sUrl) {
|
||||
this.sUrl = sUrl;
|
||||
}
|
||||
|
||||
setPreference(key, value) {
|
||||
|
||||
let $data = new FormData();
|
||||
$data.append("key", key);
|
||||
$data.append("value", value);
|
||||
|
||||
fetch(this.sUrl, {
|
||||
method: "POST",
|
||||
body: $data,
|
||||
}).then(
|
||||
(response) => {
|
||||
if (!response.ok) {
|
||||
throw new Error(`Network response was not ok: ${response.statusText}`);
|
||||
}
|
||||
return response.json();
|
||||
}
|
||||
).catch(
|
||||
(error) => {
|
||||
console.error('Unable to set user preference:', error);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,65 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Copyright (C) 2013-2024 Combodo SAS
|
||||
*
|
||||
* This file is part of iTop.
|
||||
*
|
||||
* iTop is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* iTop is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
*/
|
||||
|
||||
namespace Combodo\iTop\Portal\Controller;
|
||||
|
||||
use appUserPreferences;
|
||||
use Exception;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController as SymfonyAbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
/**
|
||||
* Class PreferencesController
|
||||
*
|
||||
* @package Combodo\iTop\Portal\Controller
|
||||
* @since 3.3.0
|
||||
*/
|
||||
class PreferencesController extends SymfonyAbstractController
|
||||
{
|
||||
|
||||
/**
|
||||
* Set a preference for the current user.
|
||||
*
|
||||
* @param \Symfony\Component\HttpFoundation\Request $oRequest
|
||||
*
|
||||
* @return \Symfony\Component\HttpFoundation\JsonResponse
|
||||
*/
|
||||
public function SetPreferenceAction(Request $oRequest): JsonResponse
|
||||
{
|
||||
$sStatus = 'success';
|
||||
|
||||
// retrieve the parameters from the request
|
||||
$sKey = $oRequest->request->get('key');
|
||||
$sValue = $oRequest->request->get('value');
|
||||
|
||||
// set user preference
|
||||
try{
|
||||
appUserPreferences::SetPref($sKey, $sValue);
|
||||
}
|
||||
catch(Exception){
|
||||
$sStatus = 'error';
|
||||
}
|
||||
|
||||
return new JsonResponse([
|
||||
'status' => $sStatus,
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -77,7 +77,7 @@ class Basic extends AbstractConfiguration
|
||||
'id' => $_ENV['PORTAL_ID'],
|
||||
'ui_version' => '2025',
|
||||
'ui_settings' => [
|
||||
'navigation_menu' => 'vertical',
|
||||
'navigation_menu' => 'horizontal',
|
||||
],
|
||||
'name' => 'Page:DefaultTitle',
|
||||
'logo' => Branding::GetPortalLogoAbsoluteUrl(),
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block pMainContentHolder%}
|
||||
{% if iItemsCount > 0 or sSearchValue is not empty %}
|
||||
{% if iItemsCount > 0 or sSearchValue is not null %}
|
||||
{% block bBrowseHeaderContent %}
|
||||
{% endblock %}
|
||||
<div class="ipb-panel ipb-browse-brick-panel panel panel-default">
|
||||
@@ -36,8 +36,7 @@
|
||||
{% else %}
|
||||
<div class="ipb-panel panel panel-default">
|
||||
<div class="ipb-panel--body panel-body">
|
||||
<div class="ipb-browse-brick--no-item--illustration ipb-svg-illustration--container">{{ source('illustrations/undraw_empty_alternative.svg') }}</div>
|
||||
<h3 class="ipb-browse-brick--no-item--text text-center">{{ 'Brick:Portal:Browse:Filter:NoData'|dict_s }}</h3>
|
||||
<h3 class="text-center">{{ 'Brick:Portal:Browse:Filter:NoData'|dict_s }}</h3>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
{% block pMainContentHolder %}
|
||||
{% if aGroupingTabsValues|length > 1 %}
|
||||
<ul class="ipb-manage-brick--tabs ipb-tabs nav nav-pills grouping_tabs">
|
||||
<ul class="ipb-manage-brick--tabs nav nav-pills grouping_tabs">
|
||||
{% for aGroupingTab in aGroupingTabsValues %}
|
||||
<li{% if sGroupingTab is defined and sGroupingTab == aGroupingTab.value %} class="active"{% endif %} data-id="{{ aGroupingTab.value }}" data-label="{{ aGroupingTab.label }}" data-item-count="{{ aGroupingTab.count }}">
|
||||
<a href="{{ app.url_generator.generate('p_manage_brick_display_as', {'sBrickId': sBrickId, 'sDisplayMode': sDisplayMode, 'sGroupingTab': aGroupingTab.value}) }}"
|
||||
@@ -43,10 +43,9 @@
|
||||
{% endif %}
|
||||
|
||||
{% if iTableCount == 0 %}
|
||||
<div class="ipb-panel panel panel-default">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<div class="ipb-manage-brick--no-result--illustration ipb-svg-illustration--container">{{ source("illustrations/undraw_empty.svg") }}</div>
|
||||
<h3 class="ipb-manage-brick--no-result--text text-center">{{ 'Brick:Portal:Manage:Table:NoData'|dict_s }}</h3>
|
||||
<h3 class="text-center">{{ 'Brick:Portal:Manage:Table:NoData'|dict_s }}</h3>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
@@ -10,18 +10,15 @@
|
||||
<p id="export-error" class="ipb-alert alert alert-danger" role="alert"></p>
|
||||
</div>
|
||||
|
||||
<div id="export-feedback" class="ipb-export--feedback">
|
||||
<div id="export-feedback">
|
||||
<p id="export-excel-warning" class="ipb-alert alert alert-warning" role="alert">{{ 'UI:Bulk:Export:MaliciousInjection:Alert:Message'|dict_format(sWikiUrl)|raw }}</p>
|
||||
<div class="ipb-export--illustration ipb-svg-illustration--container">
|
||||
{{ source('illustrations/undraw_export-files.svg') }}
|
||||
</div>
|
||||
<div class="ipb-progress progress">
|
||||
<div class="ipb-progress--bar progress-bar" role="progressbar" style="width: 0%"
|
||||
<p class="export-message" style="text-align:center;">{{ 'ExcelExport:PreparingExport'|dict_s }}</p>
|
||||
<div class="progress">
|
||||
<div class="progress-bar" role="progressbar" style="width: 0%"
|
||||
aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">
|
||||
<span class="progress-message">0%</span>
|
||||
</div>
|
||||
</div>
|
||||
<p class="ipb-export-message export-message" style="text-align:center;">{{ 'ExcelExport:PreparingExport'|dict_s }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<ul class="ipb-tabs nav nav-pills _tabs">
|
||||
<ul class="nav nav-pills _tabs">
|
||||
{% if aTabsValues is defined and aTabsValues|length > 0 %}
|
||||
<li{% if sTab == "user-info" %} class="active"{% endif %} data-id="user-info" data-label="{{ 'MyAccount:UserInfo:Tab:Title'|dict_s }}">
|
||||
<a href="{{ app.url_generator.generate('p_user_profile_brick', {'sBrickId': oBrick.GetId(), 'sDisplayMode': '_self', 'sTab': "user-info"}) }}"
|
||||
|
||||
@@ -160,8 +160,6 @@
|
||||
<script type="text/javascript" src="{{ app['combodo.absolute_url'] ~ 'node_modules/clipboard/dist/clipboard.min.js'|add_itop_version }}"></script>
|
||||
<script type="text/javascript" src="{{ app['combodo.absolute_url'] ~ 'js/clipboardwidget.js'|add_itop_version }}"></script>
|
||||
<script type="text/javascript" src="{{ app['combodo.portal.base.absolute_url'] ~ 'js/portal-clipboard.js'|add_itop_version }}"></script>
|
||||
{# User Preferences #}
|
||||
<script type="text/javascript" src="{{ app['combodo.portal.base.absolute_url'] ~ 'js/user_preferences.js'|add_itop_version }}"></script>
|
||||
{# custom elements #}
|
||||
<script type="text/javascript" src="{{ app['combodo.portal.base.absolute_url'] ~ 'js/custom_elements/base_element.js'|add_itop_version }}"></script>
|
||||
<script type="text/javascript" src="{{ app['combodo.portal.base.absolute_url'] ~ 'js/custom_elements/tile_element.js'|add_itop_version }}"></script>
|
||||
@@ -281,8 +279,8 @@
|
||||
{
|
||||
return '{{ app['url_generator'].generate('p_session_message_add')|raw }}';
|
||||
};
|
||||
// user preferences object
|
||||
const oUserPreferences = new UserPreferences('{{ app['url_generator'].generate('p_preferences_set_preference')|raw }}');
|
||||
// used to allow SetUserPreferences to be called from the UI
|
||||
const oUserPreferences = JSON.parse('{{ user_preferences|json_encode|e('js') }}');
|
||||
/**
|
||||
* @param sUrl {string} The URL to append the new param to
|
||||
* @param sParamName {string} Name of the parameter
|
||||
|
||||
@@ -25,7 +25,6 @@ return array(
|
||||
'Combodo\\iTop\\Portal\\Controller\\DefaultController' => $baseDir . '/src/Controller/DefaultController.php',
|
||||
'Combodo\\iTop\\Portal\\Controller\\ManageBrickController' => $baseDir . '/src/Controller/ManageBrickController.php',
|
||||
'Combodo\\iTop\\Portal\\Controller\\ObjectController' => $baseDir . '/src/Controller/ObjectController.php',
|
||||
'Combodo\\iTop\\Portal\\Controller\\PreferencesController' => $baseDir . '/src/Controller/PreferencesController.php',
|
||||
'Combodo\\iTop\\Portal\\Controller\\SessionMessageController' => $baseDir . '/src/Controller/SessionMessageController.php',
|
||||
'Combodo\\iTop\\Portal\\Controller\\UserProfileBrickController' => $baseDir . '/src/Controller/UserProfileBrickController.php',
|
||||
'Combodo\\iTop\\Portal\\DataCollector\\PortalCollector' => $baseDir . '/src/DataCollector/PortalCollector.php',
|
||||
|
||||
@@ -45,7 +45,6 @@ class ComposerStaticInitCombodo_ItopPortalBase_Portal
|
||||
'Combodo\\iTop\\Portal\\Controller\\DefaultController' => __DIR__ . '/../..' . '/src/Controller/DefaultController.php',
|
||||
'Combodo\\iTop\\Portal\\Controller\\ManageBrickController' => __DIR__ . '/../..' . '/src/Controller/ManageBrickController.php',
|
||||
'Combodo\\iTop\\Portal\\Controller\\ObjectController' => __DIR__ . '/../..' . '/src/Controller/ObjectController.php',
|
||||
'Combodo\\iTop\\Portal\\Controller\\PreferencesController' => __DIR__ . '/../..' . '/src/Controller/PreferencesController.php',
|
||||
'Combodo\\iTop\\Portal\\Controller\\SessionMessageController' => __DIR__ . '/../..' . '/src/Controller/SessionMessageController.php',
|
||||
'Combodo\\iTop\\Portal\\Controller\\UserProfileBrickController' => __DIR__ . '/../..' . '/src/Controller/UserProfileBrickController.php',
|
||||
'Combodo\\iTop\\Portal\\DataCollector\\PortalCollector' => __DIR__ . '/../..' . '/src/DataCollector/PortalCollector.php',
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
'name' => '__root__',
|
||||
'pretty_version' => 'dev-develop',
|
||||
'version' => 'dev-develop',
|
||||
'reference' => 'c203329236dfb3c05aa02ac73ab12dd1fe52143e',
|
||||
'reference' => '6d8d747575dc9cd4b53dc9592eb646b692d3ea86',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../../',
|
||||
'aliases' => array(),
|
||||
@@ -13,7 +13,7 @@
|
||||
'__root__' => array(
|
||||
'pretty_version' => 'dev-develop',
|
||||
'version' => 'dev-develop',
|
||||
'reference' => 'c203329236dfb3c05aa02ac73ab12dd1fe52143e',
|
||||
'reference' => '6d8d747575dc9cd4b53dc9592eb646b692d3ea86',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../../',
|
||||
'aliases' => array(),
|
||||
|
||||
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 21 KiB |
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 11 KiB |
@@ -496,7 +496,6 @@ $(function()
|
||||
{
|
||||
sHtml += '<li><a href="#" id="'+sPopupMenuId+'_attachment">'+this.options.export_as_attachment.label+'</a></li>';
|
||||
}
|
||||
sHtml += '<li><a href="#" id="' + sPopupMenuId + '_bob" href="' + this.options.export_as_bob.url + '">' + this.options.export_as_bob.label + '</a></li>';
|
||||
//sHtml += '<li><a href="#" id="'+sPopupMenuId+'_reload">Refresh</a></li>';
|
||||
sHtml += '</ul></li></ul></div>';
|
||||
sHtml += '</div>';
|
||||
@@ -508,9 +507,6 @@ $(function()
|
||||
|
||||
|
||||
var me = this;
|
||||
$('#' + sPopupMenuId + '_bob').on('click', function () {
|
||||
me.export_as_bob();
|
||||
});
|
||||
$('#'+sPopupMenuId+'_pdf').on('click', function() { me.export_as_pdf(); });
|
||||
$('#'+sPopupMenuId+'_attachment').on('click', function() { me.export_as_attachment(); });
|
||||
$('#'+sId+'_zoom').slider({ min: 0, max: 5, value: 1, step: 0.25, change: function() { me._on_zoom_change( $(this).slider('value')); } });
|
||||
@@ -579,47 +575,8 @@ $(function()
|
||||
});
|
||||
|
||||
},
|
||||
export_as_bob: function ()
|
||||
export_as_pdf: function()
|
||||
{
|
||||
var sId = this.element.attr('id');
|
||||
var me = this;
|
||||
var oParams = {};
|
||||
oParams.g = this.options.grouping_threshold;
|
||||
oParams.context_key = this.options.context_key;
|
||||
oParams.transaction_id = this.options.transaction_id;
|
||||
oParams.contexts = {};
|
||||
$('#' + sId + '_contexts').multiselect('getChecked').each(function () {
|
||||
oParams.contexts[$(this).val()] = me.options.additional_contexts[$(this).val()].oql;
|
||||
});
|
||||
|
||||
oParams.excluded_classes = {};
|
||||
for (k in this.options.excluded_classes) {
|
||||
oParams.excluded_classes[k] = this.options.excluded_classes[k];
|
||||
}
|
||||
oParams.sources = {};
|
||||
for (var k1 in this.options.sources) {
|
||||
oParams.sources[k1] = {};
|
||||
for (var k2 in this.options.sources[k1]) {
|
||||
oParams.sources[k1][k2] = this.options.sources[k1][k2];
|
||||
}
|
||||
}
|
||||
oParams.excluded = {};
|
||||
for (var k1 in this.options.excluded) {
|
||||
oParams.options.excluded[k1] = {};
|
||||
for (var k2 in this.options.excluded[k1]) {
|
||||
oParams.excluded[k1][k2] = this.options.excluded[k1][k2];
|
||||
}
|
||||
}
|
||||
oParams.list_classes = {};
|
||||
$("#dh_flash_criterion_outer [name= 'excluded[]']").each(function (index, element) {
|
||||
oParams.list_classes[index] = $(element).val();
|
||||
});
|
||||
|
||||
$.post(this.options.export_as_bob.url, oParams, function (data) {
|
||||
$('body').append(data);
|
||||
});
|
||||
},
|
||||
export_as_pdf: function () {
|
||||
this._export_dlg(this.options.labels.export_pdf_title, this.options.export_as_pdf.url, 'download_pdf');
|
||||
},
|
||||
_export_dlg: function(sTitle, sSubmitUrl, sOperation)
|
||||
|
||||
16
js/utils.js
16
js/utils.js
@@ -595,22 +595,6 @@ function ExportInitButton(sSelector) {
|
||||
});
|
||||
}
|
||||
|
||||
function ExportImpactButton(sSelector) {
|
||||
$(sSelector).on('click', function () {
|
||||
var form = $('#export-form');
|
||||
var actionUrl = form.attr('action');
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: actionUrl,
|
||||
data: form.serialize(), // serializes the form's elements.
|
||||
success: function (data) {
|
||||
$(sSelector).html(data); // show response from the php script.
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 3.0.0 N°4367 deprecated, use {@see CombodoSanitizer.EscapeHtml} instead
|
||||
*
|
||||
|
||||
@@ -502,7 +502,6 @@ return array(
|
||||
'Combodo\\iTop\\Service\\Events\\EventService' => $baseDir . '/sources/Service/Events/EventService.php',
|
||||
'Combodo\\iTop\\Service\\Events\\EventServiceLog' => $baseDir . '/sources/Service/Events/EventServiceLog.php',
|
||||
'Combodo\\iTop\\Service\\Events\\iEventServiceSetup' => $baseDir . '/sources/Service/Events/iEventServiceSetup.php',
|
||||
'Combodo\\iTop\\Service\\Export\\ExportController' => $baseDir . '/sources/Controller/Export/ExportController.php',
|
||||
'Combodo\\iTop\\Service\\Import\\CSVImportPageProcessor' => $baseDir . '/sources/Service/Import/CSVImportPageProcessor.php',
|
||||
'Combodo\\iTop\\Service\\InterfaceDiscovery\\InterfaceDiscovery' => $baseDir . '/sources/Service/InterfaceDiscovery/InterfaceDiscovery.php',
|
||||
'Combodo\\iTop\\Service\\Links\\LinkSetDataTransformer' => $baseDir . '/sources/Service/Links/LinkSetDataTransformer.php',
|
||||
@@ -3231,5 +3230,5 @@ return array(
|
||||
'privUITransactionFile' => $baseDir . '/application/transaction.class.inc.php',
|
||||
'privUITransactionSession' => $baseDir . '/application/transaction.class.inc.php',
|
||||
'utils' => $baseDir . '/application/utils.inc.php',
|
||||
'©' => $vendorDir . '/symfony/cache/Traits/ValueWrapper.php',
|
||||
'<EFBFBD>' => $vendorDir . '/symfony/cache/Traits/ValueWrapper.php',
|
||||
);
|
||||
|
||||
@@ -892,7 +892,6 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
|
||||
'Combodo\\iTop\\Service\\Events\\EventService' => __DIR__ . '/../..' . '/sources/Service/Events/EventService.php',
|
||||
'Combodo\\iTop\\Service\\Events\\EventServiceLog' => __DIR__ . '/../..' . '/sources/Service/Events/EventServiceLog.php',
|
||||
'Combodo\\iTop\\Service\\Events\\iEventServiceSetup' => __DIR__ . '/../..' . '/sources/Service/Events/iEventServiceSetup.php',
|
||||
'Combodo\\iTop\\Service\\Export\\ExportController' => __DIR__ . '/../..' . '/sources/Controller/Export/ExportController.php',
|
||||
'Combodo\\iTop\\Service\\Import\\CSVImportPageProcessor' => __DIR__ . '/../..' . '/sources/Service/Import/CSVImportPageProcessor.php',
|
||||
'Combodo\\iTop\\Service\\InterfaceDiscovery\\InterfaceDiscovery' => __DIR__ . '/../..' . '/sources/Service/InterfaceDiscovery/InterfaceDiscovery.php',
|
||||
'Combodo\\iTop\\Service\\Links\\LinkSetDataTransformer' => __DIR__ . '/../..' . '/sources/Service/Links/LinkSetDataTransformer.php',
|
||||
|
||||
@@ -2134,6 +2134,7 @@ EOF
|
||||
$this->CompileCommonProperty('default_value', $oField, $aParameters, $sModuleRelativeDir, '');
|
||||
$this->CompileCommonProperty('is_null_allowed', $oField, $aParameters, $sModuleRelativeDir, false);
|
||||
$this->CompileCommonProperty('allowed_values', $oField, $aParameters, $sModuleRelativeDir);
|
||||
$this->CompileCommonProperty('computed', $oField, $aParameters, $sModuleRelativeDir, false);
|
||||
$aParameters['depends_on'] = $sDependencies;
|
||||
} elseif ($sAttType == 'AttributeEnum') {
|
||||
$this->CompileAttributeEnumValues($sModuleRelativeDir, $sClass, $sAttCode, $oField, $aParameters, $sCss);
|
||||
@@ -2141,6 +2142,7 @@ EOF
|
||||
$this->CompileCommonProperty('sql', $oField, $aParameters, $sModuleRelativeDir);
|
||||
$this->CompileCommonProperty('default_value', $oField, $aParameters, $sModuleRelativeDir, '');
|
||||
$this->CompileCommonProperty('is_null_allowed', $oField, $aParameters, $sModuleRelativeDir, false);
|
||||
$this->CompileCommonProperty('computed', $oField, $aParameters, $sModuleRelativeDir, false);
|
||||
$aParameters['depends_on'] = $sDependencies;
|
||||
} elseif ($sAttType == 'AttributeMetaEnum') {
|
||||
$this->CompileAttributeEnumValues($sModuleRelativeDir, $sClass, $sAttCode, $oField, $aParameters, $sCss);
|
||||
@@ -2269,6 +2271,7 @@ EOF
|
||||
$this->CompileCommonProperty('is_null_allowed', $oField, $aParameters, $sModuleRelativeDir, false);
|
||||
$this->CompileCommonProperty('default_value', $oField, $aParameters, $sModuleRelativeDir, '');
|
||||
$this->CompileCommonProperty('allowed_values', $oField, $aParameters, $sModuleRelativeDir);
|
||||
$this->CompileCommonProperty('computed', $oField, $aParameters, $sModuleRelativeDir, false);
|
||||
$aParameters['depends_on'] = $sDependencies;
|
||||
}
|
||||
|
||||
@@ -2413,7 +2416,19 @@ EOF
|
||||
}
|
||||
$aParameters['thresholds'] = 'array('.implode(', ', $aThresholds).')';
|
||||
break;
|
||||
case 'computed':
|
||||
$oComputed = $oField->GetOptionalElement('computed');
|
||||
if(is_null($oComputed)) {
|
||||
break;
|
||||
}
|
||||
|
||||
$sExpression = self::QuoteForPHP($oComputed->GetChildText('expression'));
|
||||
if(is_null($sExpression) || $sExpression === '') {
|
||||
throw new DOMFormatException("missing (or empty) mandatory tag expression under the tag '".$oField->nodeName."'");
|
||||
}
|
||||
|
||||
$aParameters['expression'] = $sExpression;
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1,815 +0,0 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Combodo\iTop\Service\Export;
|
||||
|
||||
use BulkExport;
|
||||
use Combodo\iTop\Application\TwigBase\Controller\Controller;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Field\FieldUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Form\Form;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Form\FormUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Input\InputUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectOptionUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Panel\PanelUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Layout\MultiColumn\Column\ColumnUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Layout\MultiColumn\MultiColumnUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Layout\UIContentBlockUIBlockFactory;
|
||||
use Combodo\iTop\Application\WebPage\AjaxPage;
|
||||
use Combodo\iTop\Application\WebPage\WebPage;
|
||||
use Combodo\iTop\Service\Router\Router;
|
||||
use Dict;
|
||||
use Exception;
|
||||
use MetaModel;
|
||||
use UserRights;
|
||||
use utils;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class ExportController extends Controller
|
||||
{
|
||||
public const ROUTE_NAMESPACE = 'export';
|
||||
/**
|
||||
* @return AjaxPage
|
||||
* @throws \ApplicationException
|
||||
* @throws \CoreException
|
||||
* @throws \OQLException
|
||||
*/
|
||||
public static function OperationChooseGlobalParams()
|
||||
{
|
||||
$sFormat = utils::ReadParam('format', '');
|
||||
|
||||
$sExportBtnLabel = json_encode(Dict::S('UI:Button:Export'));
|
||||
$sJSTitle = json_encode(utils::EscapeHtml(utils::ReadParam('dialog_title', '', false, 'raw_data')));
|
||||
$oP = new AjaxPage($sJSTitle);
|
||||
$oP->add('<div id="interactive_export_dlg">');
|
||||
$oP->add_ready_script(
|
||||
<<<EOF
|
||||
$('#interactive_export_dlg').dialog({
|
||||
autoOpen: true,
|
||||
modal: true,
|
||||
width: '80%',
|
||||
height: 'auto',
|
||||
maxHeight: $(window).height() - 50,
|
||||
title: $sJSTitle,
|
||||
close: function() { $('#export-form').attr('data-state', 'cancelled'); $(this).remove(); },
|
||||
buttons: [
|
||||
{text: $sExportBtnLabel, id: 'export-dlg-submit', click: function() {} }
|
||||
]
|
||||
});
|
||||
|
||||
setTimeout(function() { $('#interactive_export_dlg').dialog('option', { position: { my: "center", at: "center", of: window }}); $('#export-btn').hide(); ExportImpactButton('#export-dlg-submit'); }, 100);
|
||||
EOF
|
||||
);
|
||||
|
||||
$oForm = self::GetFormWithHiddenParams($sFormat, $oP);
|
||||
/*
|
||||
A AJOUTER PEUT-ETRE PLUS TARD
|
||||
sHtmlForm += '<tr><td>'+this.options.labels.title+'</td><td><input name="title" value="'+this.options.labels.untitled+'" style="width: 20em;"/></td></tr>';
|
||||
sHtmlForm += '<tr><td>'+this.options.labels.comments+'</td><td><textarea style="width: 20em; height:5em;" name="comments"/></textarea></td></tr>';
|
||||
*/
|
||||
/* first select params specific to the export format */
|
||||
$oExporter = BulkExport::FindExporter($sFormat);
|
||||
if ($oExporter === null) {
|
||||
$aSupportedFormats = BulkExport::FindSupportedFormats();
|
||||
$oP->add("Invalid output format: '$sFormat'. The supported formats are: ".implode(', ', array_keys($aSupportedFormats)));
|
||||
$oP->add('</div>');
|
||||
return $oP;
|
||||
}
|
||||
$UIContentBlock = UIContentBlockUIBlockFactory::MakeStandard('form_part_'.$sFormat)->AddCSSClass('form_part');
|
||||
$oForm->AddSubBlock($UIContentBlock);
|
||||
$UIContentBlock->AddSubBlock($oExporter->GetFormPart($oP, $sFormat.'_options'));
|
||||
|
||||
$aSelectedClasses = utils::ReadParam('list_classes', '', false, utils::ENUM_SANITIZATION_FILTER_RAW_DATA);
|
||||
|
||||
$oPanel = PanelUIBlockFactory::MakeNeutral(Dict::S('UI:Export:Class:SelectedClasses'));
|
||||
$oForm->AddSubBlock($oPanel);
|
||||
$oMulticolumn = MultiColumnUIBlockFactory::MakeStandard('selected_classes');
|
||||
$oPanel->AddSubBlock($oMulticolumn);
|
||||
$oMulticolumn->AddCSSClass('ibo-multi-column--export');
|
||||
$oColumn1 = ColumnUIBlockFactory::MakeStandard();
|
||||
$oMulticolumn->AddColumn($oColumn1);
|
||||
$oColumn2 = ColumnUIBlockFactory::MakeStandard();
|
||||
$oMulticolumn->AddColumn($oColumn2);
|
||||
foreach ($aSelectedClasses as $i => $sClass) {
|
||||
$oBlock = FieldUIBlockFactory::MakeStandard(MetaModel::GetName($sClass)) ;
|
||||
$oValue = SelectUIBlockFactory::MakeForSelect($sClass);
|
||||
$oValue->AddOption(SelectOptionUIBlockFactory::MakeForSelectOption('standard', Dict::S('UI:Export:Class:Standard'), true));
|
||||
$oValue->AddOption(SelectOptionUIBlockFactory::MakeForSelectOption('user', Dict::S('UI:Export:Class:User'), false));
|
||||
$oValue->AddOption(SelectOptionUIBlockFactory::MakeForSelectOption('custom', Dict::S('UI:Export:Class:Custom'), false));
|
||||
$oBlock->AddSubBlock($oValue);
|
||||
if ($i%2 == 0) {
|
||||
$oColumn1->AddSubBlock($oBlock);
|
||||
} else {
|
||||
$oColumn2->AddSubBlock($oBlock);
|
||||
}
|
||||
}
|
||||
|
||||
$oP->add('</div>');
|
||||
|
||||
|
||||
return $oP;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
///
|
||||
///
|
||||
/// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/* function DisplayForm(WebPage $oP, $sAction = '', $sExpression = '', $sFormat = null)
|
||||
{
|
||||
$oExportSearch = null;
|
||||
$oP->add_script(DateTimeFormat::GetJSSQLToCustomFormat());
|
||||
$sJSDefaultDateTimeFormat = json_encode((string)AttributeDateTime::GetFormat());
|
||||
$oP->add_script(
|
||||
<<<EOF
|
||||
function FormatDatesInPreview(sRadioSelector, sPreviewSelector)
|
||||
{
|
||||
if ($('#'+sRadioSelector+'_date_time_format_default').prop('checked'))
|
||||
{
|
||||
sPHPFormat = $sJSDefaultDateTimeFormat;
|
||||
}
|
||||
else
|
||||
{
|
||||
sPHPFormat = $('#'+sRadioSelector+'_custom_date_time_format').val();
|
||||
}
|
||||
$('#interactive_fields_'+sPreviewSelector+' .user-formatted-date-time').each(function() {
|
||||
var val = $(this).attr('data-date');
|
||||
var sDisplay = DateTimeFormatFromPHP(val, sPHPFormat);
|
||||
$(this).html(sDisplay);
|
||||
});
|
||||
$('#interactive_fields_'+sPreviewSelector+' .user-formatted-date').each(function() {
|
||||
var val = $(this).attr('data-date');
|
||||
var sDisplay = DateFormatFromPHP(val, sPHPFormat);
|
||||
$(this).html(sDisplay);
|
||||
});
|
||||
}
|
||||
EOF
|
||||
);
|
||||
$oP->LinkScriptFromAppRoot('js/tabularfieldsselector.js');
|
||||
$oP->LinkScriptFromAppRoot('js/jquery.dragtable.js');
|
||||
$oP->LinkStylesheetFromAppRoot('css/dragtable.css');
|
||||
|
||||
/* $oForm = FormUIBlockFactory::MakeStandard("export-form");
|
||||
$oForm->SetAction($sAction);
|
||||
$oForm->AddDataAttribute("state", "not-yet-started");
|
||||
$oP->AddSubBlock($oForm);*
|
||||
|
||||
$bExpressionIsValid = true;
|
||||
$sExpressionError = '';
|
||||
if ($sExpression === null) {
|
||||
$bExpressionIsValid = false;
|
||||
} else if ($sExpression !== '') {
|
||||
try {
|
||||
$oExportSearch = DBObjectSearch::FromOQL($sExpression);
|
||||
$oExportSearch->UpdateContextFromUser();
|
||||
}
|
||||
catch (OQLException $e) {
|
||||
$bExpressionIsValid = false;
|
||||
$sExpressionError = $e->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
if (!$bExpressionIsValid) {
|
||||
DisplayExpressionForm($oP, $sAction, $sExpression, $sExpressionError,$oForm);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden("expression", $sExpression));
|
||||
$oExportSearch = DBObjectSearch::FromOQL($sExpression);
|
||||
$oExportSearch->UpdateContextFromUser();
|
||||
|
||||
$aFormPartsByFormat = array();
|
||||
$aAllFormParts = array();
|
||||
|
||||
// One specific format was chosen
|
||||
$oSelect = InputUIBlockFactory::MakeForHidden("format", utils::EscapeHtml($sFormat));
|
||||
$oForm->AddSubBlock($oSelect);
|
||||
|
||||
/* $oExporter = BulkExport::FindExporter($sFormat, $oExportSearch);
|
||||
$aParts = $oExporter->EnumFormParts();
|
||||
foreach ($aParts as $sPartId => $void) {
|
||||
$aAllFormParts[$sPartId] = $oExporter;
|
||||
}
|
||||
$aFormPartsByFormat[$sFormat] = array_keys($aAllFormParts);
|
||||
|
||||
foreach ($aAllFormParts as $sPartId => $oExport) {
|
||||
$UIContentBlock = UIContentBlockUIBlockFactory::MakeStandard('form_part_'.$sPartId)->AddCSSClass('form_part');
|
||||
$oForm->AddSubBlock($UIContentBlock);
|
||||
$UIContentBlock->AddSubBlock($oExport->GetFormPart($oP, $sPartId));
|
||||
}*
|
||||
//end of form
|
||||
$oBlockExport = UIContentBlockUIBlockFactory::MakeStandard("export-feedback")->SetIsHidden(true);
|
||||
$oBlockExport->AddSubBlock(new Html('<p class="export-message" style="text-align:center;">'.Dict::S('ExcelExport:PreparingExport').'</p>'));
|
||||
$oBlockExport->AddSubBlock(new Html('<div class="export-progress-bar" style="max-width:30em; margin-left:auto;margin-right:auto;"><div class="export-progress-message" style="text-align:center;"></div></div>'));
|
||||
$oP->AddSubBlock($oBlockExport);
|
||||
if ($sFormat == null) {//if it's global export
|
||||
$oP->AddSubBlock(ButtonUIBlockFactory::MakeForPrimaryAction('export', Dict::S('UI:Button:Export'), 'export', false, 'export-btn'));
|
||||
}
|
||||
$oBlockResult = UIContentBlockUIBlockFactory::MakeStandard("export_text_result")->SetIsHidden(true);
|
||||
$oBlockResult->AddSubBlock(new Html(Dict::S('Core:BulkExport:ExportResult')));
|
||||
|
||||
$oTextArea = new TextArea('export_content', '', 'export_content');
|
||||
$oTextArea->AddCSSClass('ibo-input-text--export');
|
||||
$oBlockResult->AddSubBlock($oTextArea);
|
||||
$oP->AddSubBlock($oBlockResult);
|
||||
|
||||
$sJSParts = json_encode($aFormPartsByFormat);
|
||||
$oP->add_ready_script(
|
||||
<<<EOF
|
||||
window.aFormParts = $sJSParts;
|
||||
$('#format_selector').on('change init', function() {
|
||||
ExportToggleFormat($(this).val());
|
||||
}).trigger('init');
|
||||
|
||||
$('.export-progress-bar').progressbar({
|
||||
value: 0,
|
||||
change: function() {
|
||||
$('.export-progress-message').text( $(this).progressbar( "value" ) + "%" );
|
||||
},
|
||||
complete: function() {
|
||||
$('.export-progress-message').text( '100 %' );
|
||||
}
|
||||
});
|
||||
|
||||
ExportInitButton('#export-btn');
|
||||
|
||||
EOF
|
||||
);
|
||||
|
||||
}
|
||||
/*_export_dlg: function(sTitle, sSubmitUrl, sOperation)
|
||||
{
|
||||
var sId = this.element.attr('id');
|
||||
var me = this;
|
||||
var oPositions = {};
|
||||
for(k in this.aNodes)
|
||||
{
|
||||
oPositions[this.aNodes[k].id] = {x: this.aNodes[k].x, y: this.aNodes[k].y };
|
||||
}
|
||||
var sHtmlForm = '<div id="GraphExportDlg'+this.element.attr('id')+'"><form id="graph_'+this.element.attr('id')+'_export_dlg" target="_blank" action="'+sSubmitUrl+'" method="post">';
|
||||
sHtmlForm += '<input type="hidden" name="g" value="'+this.options.grouping_threshold+'">';
|
||||
sHtmlForm += '<input type="hidden" name="context_key" value="'+this.options.context_key+'">';
|
||||
sHtmlForm += '<input type="hidden" name="transaction_id" value="'+this.options.transaction_id+'">';
|
||||
$('#'+sId+'_contexts').multiselect('getChecked').each(function() {
|
||||
sHtmlForm += '<input type="hidden" name="contexts['+$(this).val()+']" value="'+me.options.additional_contexts[$(this).val()].oql+'">';
|
||||
});
|
||||
|
||||
sHtmlForm += '<input type="hidden" name="positions" value="">';
|
||||
for(k in this.options.excluded_classes)
|
||||
{
|
||||
sHtmlForm += '<input type="hidden" name="excluded_classes[]" value="'+this.options.excluded_classes[k]+'">';
|
||||
}
|
||||
for(var k1 in this.options.sources)
|
||||
{
|
||||
for(var k2 in this.options.sources[k1])
|
||||
{
|
||||
sHtmlForm += '<input type="hidden" name="sources['+k1+'][]" value="'+this.options.sources[k1][k2]+'">';
|
||||
}
|
||||
}
|
||||
for(var k1 in this.options.excluded)
|
||||
{
|
||||
for(var k2 in this.options.excluded[k1])
|
||||
{
|
||||
sHtmlForm += '<input type="hidden" name="excluded['+k1+'][]" value="'+this.options.excluded[k1][k2]+'">';
|
||||
}
|
||||
}
|
||||
if (sOperation == 'attachment')
|
||||
{
|
||||
sHtmlForm += '<input type="hidden" name="obj_class" value="'+this.options.export_as_attachment.obj_class+'">';
|
||||
sHtmlForm += '<input type="hidden" name="obj_key" value="'+this.options.export_as_attachment.obj_key+'">';
|
||||
}
|
||||
sHtmlForm += '<table>';
|
||||
sHtmlForm += '<tr><td>'+this.options.page_format.label+'</td><td><select name="p">';
|
||||
for(k in this.options.page_format.values)
|
||||
{
|
||||
var sSelected = (k == this.options.page_format['default']) ? ' selected' : '';
|
||||
sHtmlForm += '<option value="'+k+'"'+sSelected+'>'+this.options.page_format.values[k]+'</option>';
|
||||
}
|
||||
sHtmlForm += '</select></td></tr>';
|
||||
sHtmlForm += '<tr><td>'+this.options.page_orientation.label+'</td><td><select name="o">';
|
||||
for(k in this.options.page_orientation.values)
|
||||
{
|
||||
var sSelected = (k == this.options.page_orientation['default']) ? ' selected' : '';
|
||||
sHtmlForm += '<option value="'+k+'"'+sSelected+'>'+this.options.page_orientation.values[k]+'</option>';
|
||||
}
|
||||
sHtmlForm += '</select></td></tr>';
|
||||
sHtmlForm += '<tr><td>'+this.options.labels.title+'</td><td><input name="title" value="'+this.options.labels.untitled+'" style="width: 20em;"/></td></tr>';
|
||||
sHtmlForm += '<tr><td>'+this.options.labels.comments+'</td><td><textarea style="width: 20em; height:5em;" name="comments"/></textarea></td></tr>';
|
||||
sHtmlForm += '<tr><td colspan=2><input type="checkbox" checked id="include_list_checkbox" name="include_list" value="1"><label for="include_list_checkbox"> '+this.options.labels.include_list+'</label></td></tr>';
|
||||
sHtmlForm += '<table>';
|
||||
sHtmlForm += '</form></div>';
|
||||
|
||||
$('body').append(sHtmlForm);
|
||||
$('#graph_'+this.element.attr('id')+'_export_dlg input[name="positions"]').val(JSON.stringify(oPositions));
|
||||
var me = this;
|
||||
if (sOperation == 'attachment')
|
||||
{
|
||||
$('#GraphExportDlg'+this.element.attr('id')+' form').on('submit', function() { return me._on_export_as_attachment(); });
|
||||
}
|
||||
$('#GraphExportDlg'+this.element.attr('id')).dialog({
|
||||
width: 'auto',
|
||||
modal: true,
|
||||
title: sTitle,
|
||||
close: function() { $(this).remove(); },
|
||||
buttons: [
|
||||
{text: this.options.labels['cancel'], click: function() { $(this).dialog('close');} },
|
||||
{text: this.options.labels['export'], click: function() { $('#graph_'+me.element.attr('id')+'_export_dlg').submit(); $(this).dialog('close');} },
|
||||
]
|
||||
});
|
||||
},
|
||||
*/
|
||||
/*
|
||||
private function SelectColumns($sOQL): array
|
||||
{
|
||||
$sWidgetId = 'tabular_fields_selector';
|
||||
$oSearch = DBObjectSearch::FromOQL($sOQL);
|
||||
$oSet = new DBObjectSet($oSearch);
|
||||
$aSelectedClasses = $oSearch->GetSelectedClasses();
|
||||
$aAuthorizedClasses = array();
|
||||
foreach($aSelectedClasses as $sAlias => $sClassName)
|
||||
{
|
||||
if (UserRights::IsActionAllowed($sClassName, UR_ACTION_BULK_READ, $oSet) != UR_ALLOWED_NO)
|
||||
{
|
||||
$aAuthorizedClasses[$sAlias] = $sClassName;
|
||||
}
|
||||
}
|
||||
$aAllFieldsByAlias = array();
|
||||
$aAllAttCodes = array();
|
||||
foreach($aAuthorizedClasses as $sAlias => $sClass)
|
||||
{
|
||||
$aAllFields = array();
|
||||
if (count($aAuthorizedClasses) > 1 )
|
||||
{
|
||||
$sShortAlias = $sAlias.'.';
|
||||
}
|
||||
else
|
||||
{
|
||||
$sShortAlias = '';
|
||||
}
|
||||
if ($this->IsExportableField($sClass, 'id'))
|
||||
{
|
||||
$sFriendlyNameAttCode = MetaModel::GetFriendlyNameAttributeCode($sClass);
|
||||
if (is_null($sFriendlyNameAttCode))
|
||||
{
|
||||
// The friendly name is made of several attribute
|
||||
$aSubAttr = array(
|
||||
array('attcodeex' => 'id', 'code' => $sShortAlias.'id', 'unique_label' => $sShortAlias.Dict::S('UI:CSVImport:idField'), 'label' => $sShortAlias.'id'),
|
||||
array('attcodeex' => 'friendlyname', 'code' => $sShortAlias.'friendlyname', 'unique_label' => $sShortAlias.Dict::S('Core:FriendlyName-Label'), 'label' => $sShortAlias.Dict::S('Core:FriendlyName-Label')),
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
// The friendly name has no added value
|
||||
$aSubAttr = array();
|
||||
}
|
||||
$aAllFields[] = array('attcodeex' => 'id', 'code' => $sShortAlias.'id', 'unique_label' => $sShortAlias.Dict::S('UI:CSVImport:idField'), 'label' => Dict::S('UI:CSVImport:idField'), 'subattr' => $aSubAttr);
|
||||
}
|
||||
foreach(MetaModel::ListAttributeDefs($sClass) as $sAttCode => $oAttDef)
|
||||
{
|
||||
if($this->IsSubAttribute($sClass, $sAttCode, $oAttDef)) continue;
|
||||
|
||||
if ($this->IsExportableField($sClass, $sAttCode, $oAttDef))
|
||||
{
|
||||
$sShortLabel = $oAttDef->GetLabel();
|
||||
$sLabel = $sShortAlias.$oAttDef->GetLabel();
|
||||
$aSubAttr = $this->GetSubAttributes($sClass, $sAttCode, $oAttDef);
|
||||
$aValidSubAttr = array();
|
||||
foreach($aSubAttr as $aSubAttDef)
|
||||
{
|
||||
$aValidSubAttr[] = array('attcodeex' => $aSubAttDef['code'], 'code' => $sShortAlias.$aSubAttDef['code'], 'label' => $aSubAttDef['label'], 'unique_label' => $sShortAlias.$aSubAttDef['unique_label']);
|
||||
}
|
||||
$aAllFields[] = array('attcodeex' => $sAttCode, 'code' => $sShortAlias.$sAttCode, 'label' => $sShortLabel, 'unique_label' => $sLabel, 'subattr' => $aValidSubAttr);
|
||||
}
|
||||
}
|
||||
usort($aAllFields, array(get_class($this), 'SortOnLabel'));
|
||||
if (count($aAuthorizedClasses) > 1)
|
||||
{
|
||||
$sKey = MetaModel::GetName($sClass).' ('.$sAlias.')';
|
||||
}
|
||||
else
|
||||
{
|
||||
$sKey = MetaModel::GetName($sClass);
|
||||
}
|
||||
$aAllFieldsByAlias[$sKey] = $aAllFields;
|
||||
|
||||
foreach ($aAllFields as $aFieldSpec)
|
||||
{
|
||||
$sAttCode = $aFieldSpec['attcodeex'];
|
||||
if (count($aFieldSpec['subattr']) > 0)
|
||||
{
|
||||
foreach ($aFieldSpec['subattr'] as $aSubFieldSpec)
|
||||
{
|
||||
$aAllAttCodes[$sAlias][] = $aSubFieldSpec['attcodeex'];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$aAllAttCodes[$sAlias][] = $sAttCode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$JSAllFields = json_encode($aAllFieldsByAlias);
|
||||
|
||||
// First, fetch only the ids - the rest will be fetched by an object reload
|
||||
$oSet = new DBObjectSet($oSearch);
|
||||
$iCount = $oSet->Count();
|
||||
|
||||
foreach ($oSearch->GetSelectedClasses() as $sAlias => $sClass)
|
||||
{
|
||||
$aColumns[$sAlias] = array();
|
||||
}
|
||||
$oSet->OptimizeColumnLoad($aColumns);
|
||||
$iPreviewLimit = 3;
|
||||
$oSet->SetLimit($iPreviewLimit);
|
||||
$aSampleData = array();
|
||||
while($aRow = $oSet->FetchAssoc())
|
||||
{
|
||||
$aSampleRow = array();
|
||||
foreach($aAuthorizedClasses as $sAlias => $sClass)
|
||||
{
|
||||
if (count($aAuthorizedClasses) > 1) {
|
||||
$sShortAlias = $sAlias.'.';
|
||||
} else {
|
||||
$sShortAlias = '';
|
||||
}
|
||||
if (isset($aAllAttCodes[$sAlias])) {
|
||||
foreach ($aAllAttCodes[$sAlias] as $sAttCodeEx) {
|
||||
$oObj = $aRow[$sAlias];
|
||||
$aSampleRow[$sShortAlias.$sAttCodeEx] = $oObj ? $this->GetSampleData($oObj, $sAttCodeEx) : '';
|
||||
}
|
||||
}
|
||||
}
|
||||
$aSampleData[] = $aSampleRow;
|
||||
}
|
||||
$sJSSampleData = json_encode($aSampleData);
|
||||
$aLabels = array(
|
||||
'preview_header' => Dict::S('Core:BulkExport:DragAndDropHelp'),
|
||||
'empty_preview' => Dict::S('Core:BulkExport:EmptyPreview'),
|
||||
'columns_order' => Dict::S('Core:BulkExport:ColumnsOrder'),
|
||||
'columns_selection' => Dict::S('Core:BulkExport:AvailableColumnsFrom_Class'),
|
||||
'check_all' => Dict::S('Core:BulkExport:CheckAll'),
|
||||
'uncheck_all' => Dict::S('Core:BulkExport:UncheckAll'),
|
||||
'no_field_selected' => Dict::S('Core:BulkExport:NoFieldSelected'),
|
||||
);
|
||||
$sJSLabels = json_encode($aLabels);
|
||||
$oP->add_ready_script(
|
||||
<<<EOF
|
||||
$('#$sWidgetId').tabularfieldsselector({fields: $JSAllFields, value_holder: '#tabular_fields', advanced_holder: '#tabular_advanced', sample_data: $sJSSampleData, total_count: $iCount, preview_limit: $iPreviewLimit, labels: $sJSLabels });
|
||||
EOF
|
||||
);
|
||||
$oUIContentBlock = UIContentBlockUIBlockFactory::MakeStandard($sWidgetId);
|
||||
$oUIContentBlock->AddCSSClass('ibo-tabularbulkexport');
|
||||
|
||||
return $oUIContentBlock;
|
||||
}
|
||||
|
||||
public static function operationGeneratePdf()
|
||||
{
|
||||
require_once(APPROOT.'core/simplegraph.class.inc.php');
|
||||
require_once(APPROOT.'core/relationgraph.class.inc.php');
|
||||
require_once(APPROOT.'core/displayablegraph.class.inc.php');
|
||||
$sRelation = utils::ReadParam('relation', 'impacts');
|
||||
$sDirection = utils::ReadParam('direction', 'down');
|
||||
|
||||
$iGroupingThreshold = utils::ReadParam('g', 5, false, 'integer');
|
||||
$sPageFormat = utils::ReadParam('p', 'A4');
|
||||
$sPageOrientation = utils::ReadParam('o', 'L');
|
||||
$sTitle = utils::ReadParam('title', '', false, 'raw_data');
|
||||
$sPositions = utils::ReadParam('positions', null, false, 'raw_data');
|
||||
$aExcludedClasses = utils::ReadParam('excluded_classes', array(), false, 'raw_data');
|
||||
$bIncludeList = (bool)utils::ReadParam('include_list', false);
|
||||
$sComments = utils::ReadParam('comments', '', false, 'raw_data');
|
||||
$aContexts = utils::ReadParam('contexts', array(), false, 'raw_data');
|
||||
$sContextKey = utils::ReadParam('context_key', '', false, 'raw_data');
|
||||
$aPositions = null;
|
||||
if ($sPositions != null) {
|
||||
$aPositions = json_decode($sPositions, true);
|
||||
}
|
||||
|
||||
// Get the list of source objects
|
||||
$aSources = utils::ReadParam('sources', array(), false, 'raw_data');
|
||||
$aSourceObjects = array();
|
||||
foreach ($aSources as $sClass => $aIDs) {
|
||||
$oSearch = new DBObjectSearch($sClass);
|
||||
$oSearch->AddCondition('id', $aIDs, 'IN');
|
||||
$oSet = new DBObjectSet($oSearch);
|
||||
while ($oObj = $oSet->Fetch()) {
|
||||
$aSourceObjects[] = $oObj;
|
||||
}
|
||||
}
|
||||
$sSourceClass = '*';
|
||||
if (count($aSourceObjects) == 1) {
|
||||
$sSourceClass = get_class($aSourceObjects[0]);
|
||||
}
|
||||
|
||||
// Get the list of excluded objects
|
||||
$aExcluded = utils::ReadParam('excluded', array(), false, 'raw_data');
|
||||
$aExcludedObjects = array();
|
||||
foreach ($aExcluded as $sClass => $aIDs) {
|
||||
$oSearch = new DBObjectSearch($sClass);
|
||||
$oSearch->AddCondition('id', $aIDs, 'IN');
|
||||
$oSet = new DBObjectSet($oSearch);
|
||||
while ($oObj = $oSet->Fetch()) {
|
||||
$aExcludedObjects[] = $oObj;
|
||||
}
|
||||
}
|
||||
|
||||
$iMaxRecursionDepth = MetaModel::GetConfig()->Get('relations_max_depth');
|
||||
if ($sDirection == 'up') {
|
||||
$oRelGraph = MetaModel::GetRelatedObjectsUp($sRelation, $aSourceObjects, $iMaxRecursionDepth, true, $aContexts);
|
||||
} else {
|
||||
$oRelGraph = MetaModel::GetRelatedObjectsDown($sRelation, $aSourceObjects, $iMaxRecursionDepth, true, $aExcludedObjects, $aContexts);
|
||||
}
|
||||
|
||||
// Remove excluded classes from the graph
|
||||
if (count($aExcludedClasses) > 0) {
|
||||
$oIterator = new RelationTypeIterator($oRelGraph, 'Node');
|
||||
foreach ($oIterator as $oNode) {
|
||||
$oObj = $oNode->GetProperty('object');
|
||||
if ($oObj && in_array(get_class($oObj), $aExcludedClasses)) {
|
||||
$oRelGraph->FilterNode($oNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$oPage = new PDFPage($sTitle, $sPageFormat, $sPageOrientation);
|
||||
$oPage->SetContentDisposition('attachment', $sTitle.'.pdf');
|
||||
|
||||
$oGraph = DisplayableGraph::FromRelationGraph($oRelGraph, $iGroupingThreshold, ($sDirection == 'down'), true);
|
||||
$oGraph->InitFromGraphviz();
|
||||
if ($aPositions != null) {
|
||||
$oGraph->UpdatePositions($aPositions);
|
||||
}
|
||||
|
||||
$aGroups = array();
|
||||
$oIterator = new RelationTypeIterator($oGraph, 'Node');
|
||||
foreach ($oIterator as $oNode) {
|
||||
if ($oNode instanceof DisplayableGroupNode) {
|
||||
$aGroups[$oNode->GetProperty('group_index')] = $oNode->GetObjects();
|
||||
}
|
||||
}
|
||||
// First page is the graph
|
||||
$oGraph->RenderAsPDF($oPage, $sComments, $sContextKey);
|
||||
|
||||
if ($bIncludeList) {
|
||||
// Then the lists of objects (one table per finalclass)
|
||||
$aResults = array();
|
||||
$oIterator = new RelationTypeIterator($oRelGraph, 'Node');
|
||||
foreach ($oIterator as $oNode) {
|
||||
$oObj = $oNode->GetProperty('object'); // Some nodes (Redundancy Nodes and Group) do not contain an object
|
||||
if ($oObj) {
|
||||
$sObjClass = get_class($oObj);
|
||||
if (!array_key_exists($sObjClass, $aResults)) {
|
||||
$aResults[$sObjClass] = array();
|
||||
}
|
||||
$aResults[$sObjClass][] = $oObj;
|
||||
}
|
||||
}
|
||||
|
||||
$oPage->get_tcpdf()->AddPage();
|
||||
$oPage->get_tcpdf()->SetFontSize(10); // Reset the font size to its default
|
||||
$oPage->AddSubBlock(TitleUIBlockFactory::MakeNeutral(Dict::S('UI:RelationshipList')));
|
||||
$iLoopTimeLimit = MetaModel::GetConfig()->Get('max_execution_time_per_loop');
|
||||
foreach ($aResults as $sListClass => $aObjects) {
|
||||
set_time_limit($iLoopTimeLimit * count($aObjects));
|
||||
$oSet = CMDBObjectSet::FromArray($sListClass, $aObjects);
|
||||
$oSet->SetShowObsoleteData(utils::ShowObsoleteData());
|
||||
$oTitle = new Html(Dict::Format('UI:Search:Count_ObjectsOf_Class_Found', $oSet->Count(), Metamodel::GetName($sListClass)));
|
||||
$oPage->AddSubBlock(TitleUIBlockFactory::MakeStandard($oTitle, 2));
|
||||
$oPage->AddSubBlock(cmdbAbstractObject::GetDataTableFromDBObjectSet($oSet, array('table_id' => $sSourceClass.'_'.$sRelation.'_'.$sDirection.'_'.$sListClass)));
|
||||
}
|
||||
|
||||
// Then the content of the groups (one table per group)
|
||||
if (count($aGroups) > 0) {
|
||||
$oPage->get_tcpdf()->AddPage();
|
||||
$oPage->AddSubBlock(TitleUIBlockFactory::MakeNeutral(Dict::S('UI:RelationGroups')));
|
||||
foreach ($aGroups as $idx => $aObjects) {
|
||||
set_time_limit($iLoopTimeLimit * count($aObjects));
|
||||
$sListClass = get_class(current($aObjects));
|
||||
$oSet = CMDBObjectSet::FromArray($sListClass, $aObjects);
|
||||
$sIconUrl = MetaModel::GetClassIcon($sListClass, false);
|
||||
$sIconUrl = str_replace(utils::GetAbsoluteUrlModulesRoot(), APPROOT.'env-'.utils::GetCurrentEnvironment().'/', $sIconUrl);
|
||||
$oTitle = new Html("<img src=\"$sIconUrl\" style=\"vertical-align:middle;width: 24px; height: 24px;\"/> ".Dict::Format('UI:RelationGroupNumber_N', (1 + $idx)), Metamodel::GetName($sListClass));
|
||||
$oPage->AddSubBlock(TitleUIBlockFactory::MakeStandard($oTitle, 2));
|
||||
$oPage->AddSubBlock(cmdbAbstractObject::GetDataTableFromDBObjectSet($oSet));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
public static function OperationSelectColumns()
|
||||
{
|
||||
//select all the fields for the 'customs' classes
|
||||
|
||||
$sJSTitle = json_encode(utils::EscapeHtml(utils::ReadParam('dialog_title', '', false, 'raw_data')));
|
||||
$oP = new AjaxPage($sJSTitle);
|
||||
$sFormat = utils::ReadParam('format', '');
|
||||
$oForm = self::GetFormWithHiddenParams($sFormat, $oP);
|
||||
|
||||
$oExporter = BulkExport::FindExporter($sFormat);
|
||||
if ($oExporter === null) {
|
||||
$aSupportedFormats = BulkExport::FindSupportedFormats();
|
||||
$oP->add("Invalid output format: '$sFormat'. The supported formats are: ".implode(', ', array_keys($aSupportedFormats)));
|
||||
$oP->add('</div>');
|
||||
return $oP;
|
||||
}
|
||||
$oExporter->ReadParameters();
|
||||
foreach ($oExporter->GetStatusInfo() as $sKey => $sValue) {
|
||||
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden($sKey, $sValue));
|
||||
}
|
||||
|
||||
|
||||
$sWidgetId = 'tabular_fields_selector';
|
||||
$aClassesChoice = [];
|
||||
$aClasses = utils::ReadParam('list_classes', '', false, utils::ENUM_SANITIZATION_FILTER_CLASS);
|
||||
foreach($aClasses as $sClassName)
|
||||
{
|
||||
$sSelection = utils::ReadParam($sClassName, '', false, utils::ENUM_SANITIZATION_FILTER_STRING);
|
||||
$aClassesChoice[$sClassName] = $sSelection;
|
||||
}
|
||||
|
||||
$aAllFieldsByAlias = array();
|
||||
$aAllAttCodes = array();
|
||||
/* foreach($aAuthorizedClasses as $sAlias => $sClass)
|
||||
{
|
||||
$aAllFields = array();
|
||||
if (count($aAuthorizedClasses) > 1 )
|
||||
{
|
||||
$sShortAlias = $sAlias.'.';
|
||||
}
|
||||
else
|
||||
{
|
||||
$sShortAlias = '';
|
||||
}
|
||||
if ($this->IsExportableField($sClass, 'id'))
|
||||
{
|
||||
$sFriendlyNameAttCode = MetaModel::GetFriendlyNameAttributeCode($sClass);
|
||||
if (is_null($sFriendlyNameAttCode))
|
||||
{
|
||||
// The friendly name is made of several attribute
|
||||
$aSubAttr = array(
|
||||
array('attcodeex' => 'id', 'code' => $sShortAlias.'id', 'unique_label' => $sShortAlias.Dict::S('UI:CSVImport:idField'), 'label' => $sShortAlias.'id'),
|
||||
array('attcodeex' => 'friendlyname', 'code' => $sShortAlias.'friendlyname', 'unique_label' => $sShortAlias.Dict::S('Core:FriendlyName-Label'), 'label' => $sShortAlias.Dict::S('Core:FriendlyName-Label')),
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
// The friendly name has no added value
|
||||
$aSubAttr = array();
|
||||
}
|
||||
$aAllFields[] = array('attcodeex' => 'id', 'code' => $sShortAlias.'id', 'unique_label' => $sShortAlias.Dict::S('UI:CSVImport:idField'), 'label' => Dict::S('UI:CSVImport:idField'), 'subattr' => $aSubAttr);
|
||||
}
|
||||
foreach(MetaModel::ListAttributeDefs($sClass) as $sAttCode => $oAttDef)
|
||||
{
|
||||
if($this->IsSubAttribute($sClass, $sAttCode, $oAttDef)) continue;
|
||||
|
||||
if ($this->IsExportableField($sClass, $sAttCode, $oAttDef))
|
||||
{
|
||||
$sShortLabel = $oAttDef->GetLabel();
|
||||
$sLabel = $sShortAlias.$oAttDef->GetLabel();
|
||||
$aSubAttr = $this->GetSubAttributes($sClass, $sAttCode, $oAttDef);
|
||||
$aValidSubAttr = array();
|
||||
foreach($aSubAttr as $aSubAttDef)
|
||||
{
|
||||
$aValidSubAttr[] = array('attcodeex' => $aSubAttDef['code'], 'code' => $sShortAlias.$aSubAttDef['code'], 'label' => $aSubAttDef['label'], 'unique_label' => $sShortAlias.$aSubAttDef['unique_label']);
|
||||
}
|
||||
$aAllFields[] = array('attcodeex' => $sAttCode, 'code' => $sShortAlias.$sAttCode, 'label' => $sShortLabel, 'unique_label' => $sLabel, 'subattr' => $aValidSubAttr);
|
||||
}
|
||||
}
|
||||
usort($aAllFields, array(get_class($this), 'SortOnLabel'));
|
||||
if (count($aAuthorizedClasses) > 1)
|
||||
{
|
||||
$sKey = MetaModel::GetName($sClass).' ('.$sAlias.')';
|
||||
}
|
||||
else
|
||||
{
|
||||
$sKey = MetaModel::GetName($sClass);
|
||||
}
|
||||
$aAllFieldsByAlias[$sKey] = $aAllFields;
|
||||
|
||||
foreach ($aAllFields as $aFieldSpec)
|
||||
{
|
||||
$sAttCode = $aFieldSpec['attcodeex'];
|
||||
if (count($aFieldSpec['subattr']) > 0)
|
||||
{
|
||||
foreach ($aFieldSpec['subattr'] as $aSubFieldSpec)
|
||||
{
|
||||
$aAllAttCodes[$sAlias][] = $aSubFieldSpec['attcodeex'];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$aAllAttCodes[$sAlias][] = $sAttCode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$JSAllFields = json_encode($aAllFieldsByAlias);
|
||||
|
||||
// First, fetch only the ids - the rest will be fetched by an object reload
|
||||
$oSearch = new DBObjectSearch($sSelectedClass);
|
||||
$oSet = new CMDBObjectSet($oSearch);
|
||||
$iCount = $oSet->Count();
|
||||
|
||||
foreach ($oSearch->GetSelectedClasses() as $sAlias => $sClass)
|
||||
{
|
||||
$aColumns[$sAlias] = array();
|
||||
}
|
||||
$oSet->OptimizeColumnLoad($aColumns);
|
||||
$iPreviewLimit = 3;
|
||||
$oSet->SetLimit($iPreviewLimit);
|
||||
$aSampleData = array();
|
||||
while($aRow = $oSet->FetchAssoc())
|
||||
{
|
||||
$aSampleRow = array();
|
||||
foreach($aAuthorizedClasses as $sAlias => $sClass)
|
||||
{
|
||||
if (count($aAuthorizedClasses) > 1) {
|
||||
$sShortAlias = $sAlias.'.';
|
||||
} else {
|
||||
$sShortAlias = '';
|
||||
}
|
||||
if (isset($aAllAttCodes[$sAlias])) {
|
||||
foreach ($aAllAttCodes[$sAlias] as $sAttCodeEx) {
|
||||
$oObj = $aRow[$sAlias];
|
||||
$aSampleRow[$sShortAlias.$sAttCodeEx] = $oObj ? $this->GetSampleData($oObj, $sAttCodeEx) : '';
|
||||
}
|
||||
}
|
||||
}
|
||||
$aSampleData[] = $aSampleRow;
|
||||
}
|
||||
$sJSSampleData = json_encode($aSampleData);
|
||||
$aLabels = array(
|
||||
'preview_header' => Dict::S('Core:BulkExport:DragAndDropHelp'),
|
||||
'empty_preview' => Dict::S('Core:BulkExport:EmptyPreview'),
|
||||
'columns_order' => Dict::S('Core:BulkExport:ColumnsOrder'),
|
||||
'columns_selection' => Dict::S('Core:BulkExport:AvailableColumnsFrom_Class'),
|
||||
'check_all' => Dict::S('Core:BulkExport:CheckAll'),
|
||||
'uncheck_all' => Dict::S('Core:BulkExport:UncheckAll'),
|
||||
'no_field_selected' => Dict::S('Core:BulkExport:NoFieldSelected'),
|
||||
);
|
||||
$sJSLabels = json_encode($aLabels);
|
||||
$oP->add_ready_script(
|
||||
<<<EOF
|
||||
$('#$sWidgetId').tabularfieldsselector({fields: $JSAllFields, value_holder: '#tabular_fields', advanced_holder: '#tabular_advanced', sample_data: $sJSSampleData, total_count: $iCount, preview_limit: $iPreviewLimit, labels: $sJSLabels });
|
||||
EOF
|
||||
);
|
||||
$oUIContentBlock = UIContentBlockUIBlockFactory::MakeStandard($sWidgetId);
|
||||
$oUIContentBlock->AddCSSClass('ibo-tabularbulkexport');
|
||||
*/
|
||||
return $oP;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $sFormat
|
||||
* @param AjaxPage $oP
|
||||
* @return Form
|
||||
* @throws Exception
|
||||
*/
|
||||
public static function GetFormWithHiddenParams(mixed $sFormat, AjaxPage $oP): Form
|
||||
{
|
||||
$oForm = FormUIBlockFactory::MakeStandard("export-form");
|
||||
// $oForm->SetAction(utils::GetAbsoluteUrlAppRoot().'webservices/export-v2.php');
|
||||
$oForm->SetAction(Router::GetInstance()->GenerateUrl('export.select_columns', ['format' => $sFormat]));
|
||||
$oForm->AddDataAttribute("state", "not-yet-started");
|
||||
$oP->AddSubBlock($oForm);
|
||||
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden('format', $sFormat));
|
||||
|
||||
//Add params coming from the screen
|
||||
$iTransactionId = isset($aExtraParams['transaction_id']) ? $aExtraParams['transaction_id'] : utils::GetNewTransactionId();
|
||||
$oP->SetTransactionId($iTransactionId);
|
||||
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden('transaction_id', $iTransactionId));
|
||||
|
||||
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden('context_key', utils::ReadParam('context_key', '', false, 'raw_data')));
|
||||
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden('g', utils::ReadParam('g', '')));
|
||||
$aContexts = utils::ReadParam('contexts', '');
|
||||
foreach ($aContexts as $sContext) {
|
||||
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden('contexts', $sContext));
|
||||
}
|
||||
$aExcludedClasses = utils::ReadParam('excluded_classes', '');
|
||||
foreach ($aExcludedClasses as $sExcludedClass) {
|
||||
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden('excluded_classes', $sExcludedClass));
|
||||
}
|
||||
$aSources = utils::ReadParam('sources', '');
|
||||
foreach ($aSources as $sKey => $aSource) {
|
||||
foreach ($aSource as $sSource) {
|
||||
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden('sources[' . $sKey . ']', $sSource));
|
||||
}
|
||||
}
|
||||
$aExcludeds = utils::ReadParam('excluded', '');
|
||||
foreach ($aExcludeds as $sKey => $aExcluded) {
|
||||
foreach ($aExcluded as $sExcluded) {
|
||||
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden('excluded[' . $sKey . ']', $sExcluded));
|
||||
}
|
||||
}
|
||||
$aSelectedClasses = utils::ReadParam('list_classes', '', false, utils::ENUM_SANITIZATION_FILTER_RAW_DATA);
|
||||
foreach ($aSelectedClasses as $sSelectedClass) {
|
||||
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden('list_classes', $sSelectedClass));
|
||||
}
|
||||
return $oForm;
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user