SuiteCRM-Core/include/SuiteMozaik.php
Dillon-Brown 114b895b6d Squashed 'public/legacy/' changes from 2aaee3c558..7ce0eaf560
7ce0eaf560 Merge commit 'a9b7e9d38c89bb831eed5c46ae88e1a340a9e745' into refactor_legacy
77175ae5ca Fix undefined property sentAssignmentNotifications
a12d18b3c9 Update CleanCSVTest
ed7951dc93 Update Composer
21c3adc06f SuiteCRM 7.11.21 Release
d6aa88abd2 Allow filtering Survey campaigns
7ab8113825 Adding new attribute to CaseTest for sentAssignmentNotification as well as other Tests
3b13d3d4ac Retrieve SuiteCRM version in get_server_info
db739a3116 Improve Contacts duplicates list
1ebfecf604 Help text containing quotes is not correctly displayed
9191047355 Wrong spelling of AOR_Reports module
e3aa666d15 fix for #8991
0ae8676656 Link fix to documentation site
e6bcec88cb Notes for abbreviations, VAT, Activity Stream, SAML
d2a0f08ab9 Indentation fix
9602a5ab9f Space typo fix
6105f4b231 Moving comment next to the string
49be1068b5 https url fix
85a3dfb122 SuiteP template translators notes
6025f859e4 Fix for: #9179 AOR_Charts getShortenedLabel fails on utf8 characters
092ab1f7fa Add the ability import Projects
a91fe3995e Fix Issue #4145
5d077d44e2 Fix #9205 - Duplicate audit records.
925f194db2 Fix #9203 - Duplicate notification emails.
16f6fda636 Fix Archive Folder Query
504f16f0a8 Add cases to email object_arr
fe07e1660c Fix only init Currency once
5692da9269 Fix broken image path in reports HTML
ce93d319d7  Fix php notices
013e0eee39 Change pdfheader/pdffooter data type to longtext
175df9ffe9 Set default perms on new log file
4caedf2fdf Update CaseUpdatesHook.php
8d4678fdb1 Remove spaces in fnc call ACLController::filterModuleList()
1e5e8bfecc Fix function declaration of TabController::get_key_array()
9e85083916 Wrong spelling of ProspectLists module
ce8f3b0665 Fix #9201 - Filter form label styling.
568839d1bd Fix #9237 where dates in aow actions & conditions are not saved or displayed correctly
17363c3f60 Fix #6997 - User profile password auto-fill
5b87663738 Correct layout of date fields
1de52dc97d 7.11.20
6737e71506 Fix Users index incompatible with MSSQL
bd9dd96f3a Change populateDefaultValues fatal log on empty field_defs to warning
9039d97b07 Fix theme display issues
ffb434042f Fix Missing locale in FullCalender 3.10
32e8146664 Fix Php compatibility within Admin ConfigureTabs
e0904414a1 Fix Email Address loading performance
fdea144ecb Fix #8319 - Multiple IMAP Inboxes fails to display emails
45a6527e91 Fix #7285 - Allow filter of custom fields on V8 API Get Modules
55dab76a1a Fix #8420 - V8 API issues fails on windows
8994449ef8 Upgrade ElasticSearch to v7.x
cd2e17a49a Implement PDFEngine
1a50079341 Fix PDF_Lib constructors
17035aa25b Replace deprecated fzaninotto/faker with fakerphp/faker
854daa3ef7 Move test namespaces into autoload-dev
a801513237 Upgrade nesbot/carbon to v2.x
889e73b943 Update Travis config to use composer v2.x
22f956cf74 Upgrade composer-merge-plugin to v2.x
753e6242fa Fix PHPUnit 9 deprecations and warnings
f62d8d7bed Fix test case class not matching filename deprecation warnings
1b4cefb5c3 Replace abandoned leafo/scssphp with scssphp/scssphp
53a1cf3765 Upgrade Robo to v3.x
32231c4f1d Update composer.json
5b8ea6cd49 Fix missing default config values
2555dc14b7 Consolidate global search settings
12d51f8e5c Remove duplicate "Global Search" link in the adminpanel
6c28c687ee Implement search engine selection
24a3e9d6c2 Deprecate UnifiedSearchAdvanced
6453ebf25c Unify search engines
a740042295 Remove new/legacy search engine labels
dc8a8bc8e1 Add codeception 4.1.x dependencies to composer
8404643044 Migrate PHPUnit schema for 9.5.x
ac144b8dfc Upgrade PHPUnit to 9.5.x
2f7e5790bc Remove codeception
4882f9531e Fix tests remove incompletes
74596e24b8 Fix tests deprecated asserts
8539246027 Fix tests define return type hints
ff8e2f2973 Update test namespaces for PSR-4/PSR-8
5f17109ce4 Fix tests redundant noinspection
65fa1662d2 Fix tests misordered assert arguments
d3d589c4fc Fix tests use appropriate asserts
f1c8e05d00 Fix tests one-time use variables
fad98fcead Fix tests method invocations
e660423312 Update PHPUnit schema
251bf18f31 Update Travis config to remove PHP 7.2
a715d7120c Update minimum required PHP to v7.3.0
369cd99c3a Fix #9106 - Update securexss for backwards compatibility
b1263f189f Update composer
42c065dd91 7.11.19
cdc3b47207 Fix Calender display issues in FullCalender 3.10
3caa17e1f8 Fix #7999 - Prevent securitygroups mass assign damage
df0c687ad0 Fix #5624 - Make SWSPEditRoleButton::displayList compatible w. parent
a173f1b1d2 Fix #8571 - Remove duplicate code in users detailviewdefs
4e3c62fe56 Fix #8514 - Implement effective opcache file clearing
afca8fa5f8 Fix #8461, #8462 - PHP files are potentially overwritten
5b0f1f13ed Fix #8700 - Various problems in PHPDocs throughout the codebase.
f89f115fe6 Fix #9067 - Fix the drop down width
579b894f65 Add Additional api filter option `like`
88316f8612 Add filters in relationship API
277b9e5520 Add Relationship Beans in V8 API Response
e178ef8495 Fix #9090 - User menu alignment
631c756fc0 Fix #6051 - Modulebuilder labels edit fixes
2c2b5e689b Update JQuery JS Library to v3.6.0
065306623d Update FullCalendar JS Library to v3.10.2
0634e7f533 Update YUI JS Library to 2.9.1
a74ccf7eae Fix #8999 - Hardcoded 'by' label in calls
c8f6cd9061 Fix #9034 - Business Hours does not work in non-english languages
e554511cb0 Fix #8910 - Update the V8 Api to allow for upload of documents similar to notes
ef590862fb Fix #9010 - Add missing 'view task' label on calendar
b339312d79 Fix #8894 - Add missing label for calendar dashlet
f936a6366a Fix #9032 - Prevent Notice Error During Import
42f87aac1d Fix #8182 - Update updateTimeDateFields to handle undefined dates
a744e89bf6 Fix #9075 - Removing deleted related beans via link
b17ef78ced Fix #8988 - Improve upon solution which doesn't cache incomplete beans
315c1ecf63 Fix #7772 - Only index ElasticSearch when enabled
7c05a09d90 Fix #9101 LangText exception breaking ElasticSearch
2bad09d0c0 Fix #8472 - No or not complete Searchresults using elasticsearch engine
6978a22cb1 Fix #6800 - Elasticsearch: Elastic index name is hardcoded
cf8b487e6d Fix #8916 - Misspelled elasticsearch labels
8029916390 Fix #9080 - Update config for google/apiclient at composer.json
318d91a15c Fix #9060 - Project Form action should not be changed if delete is not confirmed
b68834c47b Fix #8676 - New Scheduled Reports does not run
d87c7a0748 Fix #2645 - Calendar quick create ignores required fields
91e9d7540a Deprecate PdfParser
a1ee531f3d Deprecate advanced open discovery (AOD)
122b872c2b Fix subpanel insights to support function query
f2b6be56e2 [Legacy] Update list count query to accept alias name
932d700511 [Legacy] Admin Release Styling Fixes
e13201af39 [Legacy] Quotes & Invoices Faint Line Removed
1f0fdf0fb1 [Legacy] History Subpanel Styling Changes
a01fe52c40 [Legacy] Date Calendar Icon Color Fixes
c84dc60a1c [Legacy] Fix Add Dashlet Tab via Enter Key in Home Page Redirects to Legacy
3ea774916c [Legacy] Make anchor links within Convert Lead module point to S8
290978a5d3 [Legacy] add language labels for user auth guard ACL Error Messages
8d0ccd3ddf create user auth guard backend handler to handle User ACL
377e85090c [Legacy] Scrollbar color fix globally
e776c38c42 [Legacy] Action DropDown Arrow Alignment Fixes
bc384c226e Border Outline Color Fixes
811df34b1f [Legacy] Add utility method to retrieve install languages
39f3629b08 [Legacy] Add labels
e6388fa338 [Legacy] Configure Module Menu Styling Changes
5653a6904a [Legacy] - Increment suitecrm_version.php
95073941fa [Legacy] Add labels
5597e87745 [Legacy] Add EmailAddressLinkMapper to ApiBeanMapper
17e9e91d04 [Legacy] Add LineItemSaveHandler
366dc162e0 [Legacy] Add BeanSaveHandlers
5e38fc88d8 [Legacy] Rename Modules Styling Changes
3bb5a5d6a9 Merge commit '9c71e8c884' into fix/legacy_update
8b45c9a338 [Legacy] Fix Display Module & Subpanel Styling
85d70377d1 [Legacy] Add line item single primary email validation label
da4a6a6c40 [Legacy] Add labels
b80198be11 [Legacy] Add labels
56637aa080 Refactor filter content ApiBeanMapper to use filter mapper
bee6f9c10b [Legacy] Move Legacy Filter Mapper to legacy
6ac12e5bd4 [Legacy] Fix Campaign Email Settings Styling
0aff61bc38 [Legacy] System Settings Hover Button Changes
b9194c1c66 [Legacy] Activity Stream Styling Changes
37b80cefd6 [Legacy] Admin Language Styling Changes
ec53218574 [Legacy] Fix Theme Setting Styling Changes
951e1ae844 [Legacy] Update SugarBean to support custom union query for history timeline widget
49c754ed87 Update history timeline backend handler to handle activities and audit data along with history data
4807b6fa45 [Legacy] Add labels for history timeline widget
174bba1e38 [Legacy] Fix Admin Diagnostic Tool Styling Changes
b10a2d7e26 [Legacy] Fix Button Hover Styling
631cbbbe0e [Leagcy] Workflow & Invoice & Quotes Line Items Styling Fix
ec22f577c9 [Legacy] Fix Help Icon Styling
9a092d2d51 [Legacy] Fix Security Groups Create Styling
96dda062d2 [Legacy] Fix Security Suite Settings Styling
ed05b461aa [Legacy] Dashboard modal dashlet & add tab & edit tab
2b741a982a [Legacy] Fix Role List User Styling
b2abf4588c [Legacy] Fix AOP Settings Styling
763d0ed66b [Legacy] Dashlet Table Scroll Fixes
aa2aebfa82 [Legacy] Add attribute array mapping to ApiBeanMapper
b8e3926ace [Legacy] Add MassUpdatePort
327ddf764d [Legacy] Add labels
d10884fbad [Legacy] Fix Outline Border color
0d08b6684b [Legacy] Add Post Upgrade port service
de0ebec1d4 [Legacy] Fix Business Hours Styling
a69aa7f89b [Legacy] Fix AOS Settings Styling
942b635996 [Legacy] iFrame Modal Page Styling Changes
95c4d8a89a [Legacy] Admin Locale Styling Changes
4b4aade088 [Legacy] Role CreateView Styling Changes
4b8082c1b0 [Legacy] Password Management Styling Changes
f542903e46 [Legacy] Currency Recordview styling changes
0efba176b7 [Legacy] Email Settings Send Email Styling Changes
f8aad710e1 [Legacy] Email Settings Styling Changes
3e41d46bc6 [Legacy] Changes to support Legacy integration of Merge Duplicates action to Suite8
254619ad37 [Legacy] Roles Management Styling Changes
2ac0e9f126 [Legacy] Add legacy portability services to add records or contacts to a target list
42a1ab8e88 [Legacy] Add labels for add to target list messages
8933416dc2 [Legacy] Dashboard Settings ModalPopup Changes
157ce24459 [Legacy] Project Resource Calendar Styling Changes
86b806d990 [Legacy] System Settings CSS Changes
80e5ce0e5e [Legacy] Add Language Label Change Log
b2e9a36e6a [Legacy] Increment suitecrm_version
af1d13f4a6 Merge commit '2473298dc6' into beta2
039df6a308 [Legacy] Add Legacy portability Link Service
cde96fd758 [Legacy] Change Case update wiget items display
8ee998700d [Legacy] Add generic action success label
357655058c [Legacy] Change Cases calculated field rules
49120c6a05 [Legacy] Add non-db source field to cases
6f9cc072db [Legacy] Add null checks to CaseUpdate sendUpdate
cc68ead8ca [Legacy] Remove case threads from case detailviewdefs
b651151cc9 [Legacy] Add case updates widget configuration
5960f06d73 [Legacy] Add record-thread component related labels
2824f62499 [Legacy] Add case updates api bean mappers
7244666094 [Legacy] Add non-db author field to case updates
19e839e022 [Legacy] Add case thread update label
eae9e509f6 define datetime format conversion mappers for datetimecombo field
48ff651d60 [Legacy] Inbound Email ListView Styling Changes
144a01f3c7 [Legacy] Add link label
9a3bbaec3f [Legacy] Labels definition for link entity relationship via record subpanels
1c7b7d1770 [Legacy] Update unlink related labels
79088c678c [Legacy] Add unlink service port
7495fa6d86 [Legacy] Changes for Unlink Subpanel Relationship
c8df2643cf [Legacy] User Profile Styling Changes
ce539098dd [Legacy] Homepage Mobile Changes
22c6e4736e [Legacy] Add Saved filter related labels
6971d34c2c [Legacy] Add SavedSearch module metadata
5a70355c52 [Legacy] Add api to bean mapping handling to ApiBeanMapper
e1a94f7cd1 [Legacy] Add null check to SavedSearch bean
e37dbf171b [Legacy] Add SavedSearch module api bean mappers
a441ec08ef [Legacy] Add ApiBeanModuleMappers
913cce923f Search Bar Mobile Changes
ee1593f735 [Legacy] Remove advanced open discovery (AOD)
8f60fafec3 [Legacy] Define a new function to return all columns defined for the module list view
ead86f0d02 [Legacy] Convert Lead Styling Changes
5606baede5 [Legacy] Subpanel Design Changes
7bf0e84681 [Legacy] Tab Arrwo Misalignment Changes
6a03cc65f2 [Legacy] Inbound Email Styling Changes
784f089a90 [Legacy] Update legacy vendor pathing
aa1e3d8c59 [Legacy] Remove legacy composer
9e990b8ce7 [Legacy] Add global labels for listView Column Selector

git-subtree-dir: public/legacy
git-subtree-split: 7ce0eaf560b55293ca3f105ac776ff936b319679
2021-08-30 10:17:18 +01:00

280 lines
11 KiB
PHP

<?php
class SuiteMozaik
{
private $mozaikPath = 'include/javascript/mozaik';
private $vendorPath;
private static $defaultThumbnails = array(
'headline' => array(
'label' => 'Headline',
//'tpl' => 'tpls/default/headline.html',
'tpl' => 'string:<p><h1>Add your headline here..</h1></p>',
'thumbnail' => 'tpls/default/thumbs/headline.png',
),
'content' => array(
'label' => 'Content',
'tpl' => 'string:<h2>Title</h2><p>{lipsum}</p>',
'thumbnail' => 'tpls/default/thumbs/content1.png',
),
'content2' => array(
'label' => 'Content with two columns',
'tpl' => 'string:<table style="width:100%;"><tbody><tr><td><h2>Title</h2></td><td><h2>Title</h2></td></tr><tr><td>{lipsum}</td><td>{lipsum}</td></tr></tbody></table>',
'thumbnail' => 'tpls/default/thumbs/content2.png',
),
'content3' => array(
'label' => 'Content with three columns',
'tpl' => 'string:<table style="width:100%;"><tbody><tr><td><h2>Title</h2></td><td><h2>Title</h2></td><td><h2>Title</h2></td></tr><tr><td>{lipsum}</td><td>{lipsum}</td><td>{lipsum}</td></tr></tbody></table>',
'thumbnail' => 'tpls/default/thumbs/content3.png',
),
'image1left' => array(
'label' => 'Content with left image',
'tpl' => 'string:<table style="width:100%;"><tbody><tr><td>{imageSmall}</td><td><h2>Title</h2>{lipsum}</td></tr></tbody></table>',
'thumbnail' => 'tpls/default/thumbs/image1left.png',
),
'image1right' => array(
'label' => 'Content with right image',
'tpl' => 'string:<table style="width:100%;"><tbody><tr><td><h2>Title</h2>{lipsum}</td><td>{imageSmall}</td></tr></tbody></table>',
'thumbnail' => 'tpls/default/thumbs/image1right.png',
),
'image2' => array(
'label' => 'Content with two image',
'tpl' => 'string:<table style="width:100%;"><tbody><tr><td>{imageSmall}</td><td><h2>Title</h2>{lipsum}</td><td>{imageSmall}</td><td><h2>Title</h2>{lipsum}</td></tr></tbody></table>',
'thumbnail' => 'tpls/default/thumbs/image2.png',
),
'image3' => array(
'label' => 'Content with three image',
'tpl' => 'string:<table style="width:100%;"><tbody><tr><td>{image}</td><td>{image}</td><td>{image}</td></tr><tr><td><h2>Title</h2>{lipsum}</td><td><h2>Title</h2>{lipsum}</td><td><h2>Title</h2>{lipsum}</td></tr></tbody></table>',
'thumbnail' => 'tpls/default/thumbs/image3.png',
),
'footer' => array(
'label' => 'Footer',
//'tpl' => 'tpls/default/footer.html',
'tpl' => 'string:<p class="footer">Take your footer contents and information here..</p>',
'thumbnail' => 'tpls/default/thumbs/footer.png',
),
);
private $thumbsCache = array();
private $autoInsertThumbnails = true;
private static $devMode = false;
public function __construct()
{
$this->vendorPath = './../../vendor/';
if ($this->autoInsertThumbnails) {
if (count($this->getThumbs())==0 || self::$devMode) {
$ord = 0;
foreach (self::$defaultThumbnails as $thumbName => $thumbData) {
$templateSectionLine = BeanFactory::newBean('TemplateSectionLine');
$templateSectionLine->name = $thumbData['label'];
$templateSectionLine->description = preg_replace('/^string:/', '', $thumbData['tpl']);
$templateSectionLine->description = str_replace('{lipsum}', $this->getContentLipsum(), $templateSectionLine->description);
$templateSectionLine->description = str_replace('{imageSmall}', $this->getContentImageSample(130), $templateSectionLine->description);
$templateSectionLine->description = str_replace('{image}', $this->getContentImageSample(), $templateSectionLine->description);
$templateSectionLine->thumbnail = file_exists($this->mozaikPath . '/' . $thumbData['thumbnail']) ? $this->mozaikPath . '/' . $thumbData['thumbnail'] : null;
$templateSectionLine->ord = ++$ord;
$templateSectionLine->save();
}
}
$this->thumbsCache = array();
}
}
private function getContentLipsum()
{
return 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam tempus odio ante, in feugiat ex pretium eu. In pharetra tincidunt urna et malesuada. Etiam aliquet auctor justo eu placerat. In nec sollicitudin enim. Nulla facilisi. In viverra velit turpis, et lobortis nunc eleifend id. Curabitur semper tincidunt vulputate. Nullam fermentum pellentesque ullamcorper.';
}
private function getContentImageSample($width = null)
{
if (is_numeric($width)) {
$width = ' width="' . $width . '"';
} else {
$width = '';
}
$splits = explode('index.php', $_SERVER['REQUEST_URI']);
$url = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['SERVER_NAME'] . $splits[0];
$image = '<img src="' . $url . $this->mozaikPath . '/tpls/default/images/sample.jpg" ' . $width . ' />';
return $image;
}
public function getDependenciesHTML()
{
$html = <<<HTML
<script src='{$this->vendorPath}/tinymce/tinymce/tinymce.min.js'></script>
<script src="{$this->vendorPath}/gymadarasz/imagesloaded/imagesloaded.pkgd.min.js"></script>
<!-- for color picker plugin -->
<link rel="stylesheet" media="screen" type="text/css" href="{$this->mozaikPath}/colorpicker/css/colorpicker.css" />
<script type="text/javascript" src="{$this->mozaikPath}/colorpicker/js/colorpicker.js"></script>
HTML;
return $html;
}
public function getIncludeHTML()
{
$html = <<<HTML
<link rel="stylesheet" href="{$this->mozaikPath}/jquery.mozaik.css">
<script src='{$this->mozaikPath}/jquery.mozaik.js'></script>
HTML;
return $html;
}
private function tinyMCESetupArgumentFixer($tinyMCESetup = '{}')
{
if (!$tinyMCESetup) {
$tinyMCESetup = '{}';
}
if (is_array($tinyMCESetup) || is_object($tinyMCESetup)) {
$tinyMCESetup = json_encode($tinyMCESetup);
}
if (!preg_match('/^tinyMCE\s*:\s*/', $tinyMCESetup)) {
$tinyMCESetup = "tinyMCE: $tinyMCESetup";
}
return $tinyMCESetup;
}
public function getElementHTML($contents = '', $textareaId = null, $elementId = 'mozaik', $width = '600', $thumbs = array(), $tinyMCESetup = '{}')
{
if (is_numeric($width)) {
$width .= 'px';
}
if (!$thumbs) {
$thumbs = self::$defaultThumbnails;
}
$thumbsJSON = json_encode($thumbs);
$tinyMCESetup = $this->tinyMCESetupArgumentFixer($tinyMCESetup);
$refreshTextareaScript = '';
if ($textareaId) {
$refreshTextareaScript = $this->getRefreshTextareaScript($textareaId, $elementId, $width);
}
$html = <<<HTML
<style type="text/css">
#{$elementId} {position: relative; top: 0; left: 0;}
#{$elementId} ul.mozaik-thumbs li.mozaik-thumbnail {padding: 5px 0;}
#{$elementId} ul.mozaik-thumbs li.mozaik-thumbnail:hover {background-color: lightgray;}
#{$elementId} .mozaik-thumbnail.ui-draggable.ui-draggable-handle {cursor: -webkit-grab;}
#{$elementId} .mozaik-thumbnail.ui-draggable.ui-draggable-handle * {cursor: -webkit-grab;}
#{$elementId} .mozaik-thumbnail.ui-draggable.ui-draggable-handle.ui-draggable-dragging {cursor: -webkit-grabbing;}
#{$elementId} .mozaik-thumbnail.ui-draggable.ui-draggable-handle.ui-draggable-dragging * {cursor: -webkit-grabbing;}
#{$elementId} .mozaik-inner a {text-decoration: underline;}
</style>
<div id="{$elementId}">{$contents}</div>
<script type="text/javascript">
$(function() {
// initialize
if(typeof window.mozaikSettings == 'undefined') {
window.mozaikSettings = {};
}
window.mozaikSettings.{$elementId} = {
base: '{$this->mozaikPath}/',
thumbs: {$thumbsJSON},
editables: 'editable',
style: 'tpls/default/styles/default.css',
namespace: false,
ace: false,
width: '{$width}', // default value
{$tinyMCESetup}
};
window.plgBackground.image = '{$this->mozaikPath}/' + window.plgBackground.image;
$('#{$elementId}').mozaik(window.mozaikSettings.{$elementId});
$(window).mousemove(function(){
var correction = -( ($('#{$elementId}').width()-100) / 2);
$('#{$elementId} .mozaik-thumbnail.ui-draggable-dragging').css('margin-left', correction + 'px');
});
});
// refresh textarea
{$refreshTextareaScript}
</script>
HTML;
return $html;
}
public function getAllHTML($contents = '', $textareaId = null, $elementId = 'mozaik', $width = '600', $group = '', $tinyMCESetup = '{}')
{
if (is_numeric($width)) {
$width .= 'px';
}
$tinyMCESetup = $this->tinyMCESetupArgumentFixer($tinyMCESetup);
$mozaikHTML = $this->getDependenciesHTML();
$mozaikHTML .= $this->getIncludeHTML();
$thumbs = $this->getThumbs($group);
$mozaikHTML .= $this->getElementHTML($contents, $textareaId, $elementId, $width, $thumbs, $tinyMCESetup);
return $mozaikHTML;
}
private function getRefreshTextareaScript($textareaId, $elementId, $width = 'initial')
{
if (is_numeric($width)) {
$width .= 'px';
}
$js = <<<SCRIPT
$(window).mouseup(function(){
$('#{$textareaId}').val($('#{$elementId}').getMozaikValue({width: '{$width}'}));
// fix table editor panel
var found = false;
$('.mce-tinymce').each(function(i,e){
if(!$(e).hasClass('mce-tinymce-inline-inside') && $(e).css('display') == 'block'){
found = true;
}
});
if(!found) {
$('.mce-tinymce-inline-inside').css('display', 'none');
}
});
SCRIPT;
return $js;
}
private function getThumbs($group = '')
{
$cacheGroup = 'cached_' . $group;
if (!isset($this->thumbsCache[$cacheGroup])) {
$db = DBManagerFactory::getInstance();
$_group = $db->quote($group);
$templateSectionLineBean = BeanFactory::getBean('TemplateSectionLine');
$thumbBeans = $templateSectionLineBean->get_full_list('ord', "(grp LIKE '$_group' OR grp IS NULL)");
$thumbs = array();
if ($thumbBeans) {
foreach ($thumbBeans as $thumbBean) {
$thumbs[$thumbBean->name] = array(
'label' => $thumbBean->thumbnail ? $this->getThumbImageHTML($thumbBean->thumbnail, $thumbBean->name) : $thumbBean->name,
'tpl' => 'string:' . html_entity_decode($thumbBean->description),
);
}
}
$this->thumbsCache[$cacheGroup] = $thumbs;
}
$thumbs = $this->thumbsCache[$cacheGroup];
return $thumbs;
}
private function getThumbImageHTML($src, $label)
{
if (file_exists($src)) {
$html = '<img src="' . $src. '" alt="' . $label . '">';
} else {
$html = $label;
}
return $html;
}
}