Procházet zdrojové kódy

Merge branch 'master' of https://github.com/unaio/una

AntonLV před 8 roky
rodič
revize
d3c4bc38ee

+ 2 - 0
inc/classes/BxDol.php

@@ -171,6 +171,7 @@ interface iBxDolProfile
     public function hasImage();
     public function getPicture();
     public function getAvatar();
+	public function getCover();
     public function getThumb();
     public function getIcon();
     public function getIconModule();
@@ -199,6 +200,7 @@ interface iBxDolProfileService
     public function serviceProfileUnit ($iContentId);
     public function serviceProfilePicture ($iContentId);
     public function serviceProfileAvatar ($iContentId);
+	public function serviceProfileCover ($iContentId); 
     public function serviceProfileThumb ($iContentId);
     public function serviceProfileIcon ($iContentId);
     public function serviceProfileName ($iContentId);

+ 9 - 0
inc/classes/BxDolEditor.php

@@ -63,6 +63,7 @@ class BxDolEditor extends BxDolFactory implements iBxDolFactoryObject
     protected $_aObject;
     protected $_sConfCustom = '';
     protected $_sButtonsCustom = false;
+    protected $_sPluginsCustom = false;
 
     /**
      * Constructor
@@ -121,6 +122,14 @@ class BxDolEditor extends BxDolFactory implements iBxDolFactoryObject
         $this->_sConfCustom = $s;
     }
 
+    /**
+     * Set custom plugins
+     */
+    public function setCustomPlugins ($sPlugins)
+    {
+        $this->_sPluginsCustom = $sPlugins;
+    }
+
     /**
      * Set custom toolbar
      */

+ 9 - 0
inc/classes/BxDolProfile.php

@@ -265,6 +265,15 @@ class BxDolProfile extends BxDolFactory implements iBxDolProfile
         $aInfo = $this->getInfo($iProfileId);
         return BxDolService::call($aInfo['type'], 'profile_avatar', array($aInfo['content_id']));
     }
+	
+	/**
+     * Get cover url
+     */
+    public function getCover($iProfileId = 0)
+    {
+        $aInfo = $this->getInfo($iProfileId);
+        return BxDolService::call($aInfo['type'], 'profile_cover', array($aInfo['content_id']));
+    }
 
     /**
      * Get thumbnail url

+ 8 - 0
inc/classes/BxDolProfileUndefined.php

@@ -110,6 +110,14 @@ class BxDolProfileUndefined extends BxDolFactory implements iBxDolSingleton, iBx
     {
         return BxDolTemplate::getInstance()->getImageUrl('account-avatar.png');
     }
+	
+	/**
+     * Get profile cover
+     */
+    public function getCover()
+    {
+       return BxDolTemplate::getInstance()->getImageUrl('cover.jpg');
+    }
 
     /**
      * Get profile thumb

+ 6 - 1
inc/classes/BxDolSearch.php

@@ -692,12 +692,17 @@ class BxDolSearchResult implements iBxDolReplaceable
     {
         // keyword
         $sKeyword = bx_process_input(isset($this->_aCustomSearchCondition['keyword']) ? $this->_aCustomSearchCondition['keyword'] : bx_get('keyword'));
-        if ($sKeyword !== false)
+        if ($sKeyword) {
             $this->aCurrent['restriction']['keyword'] = array(
                 'value' => $sKeyword,
                 'field' => '',
                 'operator' => 'against'
             );
+        }
+        else {
+            $this->aCurrent['paginate']['num'] = 0;
+            return;
+        }
 
         // owner
         if (isset($_GET['ownerName'])) {

+ 8 - 1
install/sql/system.sql

@@ -291,7 +291,14 @@ INSERT INTO `sys_options`(`category_id`, `name`, `caption`, `value`, `type`, `ex
 (@iCategoryId, 'sys_captcha_default', '_adm_stg_cpt_option_sys_captcha_default', 'sys_recaptcha_new', 'digit', '', '', '', 51),
 (@iCategoryId, 'sys_embed_default', '_adm_stg_cpt_option_sys_embed_default', 'sys_embedly', 'digit', '', '', '', 52),
 
-(@iCategoryId, 'sys_live_updates_interval', '_adm_stg_cpt_option_sys_live_updates_interval', '10000', 'digit', '', '', '', 60);
+(@iCategoryId, 'sys_live_updates_interval', '_adm_stg_cpt_option_sys_live_updates_interval', '10000', 'digit', '', '', '', 60),
+
+(@iCategoryId, 'sys_tinymce_plugins_mini', '_adm_stg_cpt_option_sys_tinymce_plugins_mini', 'autolink,image,link,lists,paste,fullscreen', 'digit', '', '', '', 70),
+(@iCategoryId, 'sys_tinymce_toolbar_mini', '_adm_stg_cpt_option_sys_tinymce_toolbar_mini', 'bold italic underline removeformat | bullist numlist | alignleft aligncenter alignright | blockquote | link unlink image | fullscreen', 'digit', '', '', '', 71),
+(@iCategoryId, 'sys_tinymce_plugins_standard', '_adm_stg_cpt_option_sys_tinymce_plugins_standard', 'advlist,autolink,autosave,code,hr,image,link,lists,media,paste,fullscreen', 'digit', '', '', '', 73),
+(@iCategoryId, 'sys_tinymce_toolbar_standard', '_adm_stg_cpt_option_sys_tinymce_toolbar_standard', 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | fullscreen', 'digit', '', '', '', 74),
+(@iCategoryId, 'sys_tinymce_plugins_full', '_adm_stg_cpt_option_sys_tinymce_plugins_full', 'advlist,anchor,autolink,autoresize,autosave,charmap,code,emoticons,hr,image,link,lists,media,nonbreaking,pagebreak,preview,paste,save,searchreplace,table,textcolor,visualblocks,fullscreen', 'digit', '', '', '', 76),
+(@iCategoryId, 'sys_tinymce_toolbar_full', '_adm_stg_cpt_option_sys_tinymce_toolbar_full', 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image, preview media | forecolor emoticons | fullscreen', 'digit', '', '', '', 77);
 
 
 --

+ 5 - 0
modules/base/profile/classes/BxBaseModProfileModule.php

@@ -243,6 +243,11 @@ class BxBaseModProfileModule extends BxBaseModGeneralModule implements iBxDolCon
     {
         return $this->_serviceTemplateFunc('urlAvatar', $iContentId);
     }
+    
+    public function serviceProfileCover ($iContentId)
+    {
+        return $this->_serviceTemplateFunc('urlCover', $iContentId);
+    }
 
     public function serviceProfileEditUrl ($iContentId)
     {

+ 3 - 3
modules/boonex/convos/install/langs/en.xml

@@ -62,8 +62,8 @@
     <string name="_bx_cnv_menu_title_folders_more"><![CDATA[Conversations folders]]></string>
     <string name="_bx_cnv_menu_set_title_submenu"><![CDATA[Conversations folders]]></string>
     <string name="_bx_cnv_menu_set_title_folders_more"><![CDATA[More folders]]></string>
-    <string name="_bx_cnv_menu_item_title_system_message"><![CDATA[Message]]></string>
-    <string name="_bx_cnv_menu_item_title_message"><![CDATA[Message]]></string>
+    <string name="_bx_cnv_menu_item_title_system_message"><![CDATA[Start conversation]]></string>
+    <string name="_bx_cnv_menu_item_title_message"><![CDATA[Start conversation]]></string>
     <string name="_bx_cnv_menu_item_title_system_message_group"><![CDATA[Group Message]]></string>
     <string name="_bx_cnv_menu_item_title_message_group"><![CDATA[Group Message]]></string>
     <string name="_bx_cnv_menu_item_title_system_mark_unread_entry"><![CDATA[Mark as unread]]></string>
@@ -132,4 +132,4 @@
 <hr />
 <p>{Message}</p>
 {email_footer}]]></string>
-</resources>
+</resources>

+ 10 - 4
modules/boonex/english/data/langs/system/en.xml

@@ -1303,12 +1303,12 @@
 	<string name="_adm_stg_cpt_option_sys_per_page_search_keyword_plural"><![CDATA[Number of items in Site Search results]]></string>
 	<string name="_adm_stg_cpt_option_sys_push_app_id"><![CDATA[OneSignal App ID]]></string>
     <string name="_adm_stg_cpt_option_sys_push_rest_api"><![CDATA[REST API Key]]></string>
-	<string name="_adm_stg_cpt_option_sys_twilio_gate_sid"><![CDATA[Account SID]]></string>
-	<string name="_adm_stg_cpt_option_sys_twilio_gate_token"><![CDATA[Auth token]]></string>
-	<string name="_adm_stg_cpt_option_sys_twilio_gate_from_number"><![CDATA[Default 'From' number for SMS]]></string>
     <string name="_adm_stg_cpt_option_sys_push_short_name"><![CDATA[Short name (required only for http sites. It must match the Subdomain you entered on the Web Push settings on the OneSignal dashboard)]]></string>
     <string name="_adm_stg_cpt_option_sys_push_safari_id"><![CDATA[Apple Safari Web ID on the Web Push settings]]></string>
     <string name="_adm_stg_cpt_option_sys_push_queue_send_per_start"><![CDATA[Number of messages to send from Push queue per run]]></string>
+	<string name="_adm_stg_cpt_option_sys_twilio_gate_sid"><![CDATA[Account SID]]></string>
+	<string name="_adm_stg_cpt_option_sys_twilio_gate_token"><![CDATA[Auth token]]></string>
+	<string name="_adm_stg_cpt_option_sys_twilio_gate_from_number"><![CDATA[Default 'From' number for SMS]]></string>    
 	<string name="_adm_stg_cpt_option_sys_recaptcha_key_private"><![CDATA[reCAPTCHA private key]]></string>
 	<string name="_adm_stg_cpt_option_sys_recaptcha_key_public"><![CDATA[reCAPTCHA public key]]></string>
 	<string name="_adm_stg_cpt_option_sys_redirect_after_account_added"><![CDATA[Redirect after account creation to]]></string>
@@ -1336,7 +1336,13 @@
 	<string name="_adm_stg_cpt_option_sys_transcoder_queue_storage"><![CDATA[Remote video transcoding]]></string>
 	<string name="_adm_stg_cpt_option_template"><![CDATA[Default Template]]></string>
 	<string name="_adm_stg_err_option_template"><![CDATA[Template cannot be empty and must have a valid name.]]></string>
-	<string name="_adm_stg_cpt_option_use_like_operator"><![CDATA[Use operator LIKE for search (recommended for small content)]]></string>
+    <string name="_adm_stg_cpt_option_use_like_operator"><![CDATA[Use operator LIKE for search (recommended for small content)]]></string>
+    <string name="_adm_stg_cpt_option_sys_tinymce_plugins_mini"><![CDATA[TinyMCE plugins for mini editor]]></string>
+    <string name="_adm_stg_cpt_option_sys_tinymce_toolbar_mini"><![CDATA[TinyMCE buttons for mini editor]]></string>
+    <string name="_adm_stg_cpt_option_sys_tinymce_plugins_standard"><![CDATA[TinyMCE plugins for standard editor]]></string>
+    <string name="_adm_stg_cpt_option_sys_tinymce_toolbar_standard"><![CDATA[TinyMCE buttons for standard editor]]></string>
+    <string name="_adm_stg_cpt_option_sys_tinymce_plugins_full"><![CDATA[TinyMCE plugins for full editor]]></string>
+    <string name="_adm_stg_cpt_option_sys_tinymce_toolbar_full"><![CDATA[TinyMCE buttons for full editor]]></string>
 	<string name="_adm_stg_cpt_type_system"><![CDATA[System]]></string>
 	<string name="_adm_stg_scs_save"><![CDATA[Settings were successfully saved]]></string>
 	<string name="_adm_stg_err_save_error_message"><![CDATA[Error in '{0}': {1}]]></string>

+ 1 - 1
modules/boonex/froala/classes/BxFroalaEditor.php

@@ -201,7 +201,7 @@ EOS;
     protected function _getPlugins($b3rdParty = false)
     {
         $a3rdParty = array('embedly', 'image_aviary', 'spell_checker');
-        $a = explode(',', getParam('bx_froala_option_plugins'));
+        $a = explode(',', $this->_sPluginsCustom !== false ? $this->_sPluginsCustom : getParam('bx_froala_option_plugins'));
         return array_filter($a, function ($s) use ($a3rdParty, $b3rdParty) {
             return !($b3rdParty ^ in_array($s, $a3rdParty));
         });

+ 3 - 1
modules/boonex/froala/install/langs/en.xml

@@ -12,5 +12,7 @@
     <string name="_bx_froala_option_toolbar_full"><![CDATA[Toolbar buttons for full editor]]></string>
 
 	<string name="_bx_froala_information"><![CDATA[Information]]></string>
-    <string name="_bx_froala_information_block"><![CDATA[Info here]]></string>
+    <string name="_bx_froala_information_block"><![CDATA[This is <a target="_blank" href="https://www.froala.com/wysiwyg-editor">Froala editor</a> integration.<br />
+        <a target="_blank" href="https://www.froala.com/wysiwyg-editor/docs/plugins">List of plugins</a><br />
+        <a target="_blank" href="https://www.froala.com/wysiwyg-editor/docs/options#toolbarButtons">List of buttons</a>]]></string>
 </resources>

+ 2 - 2
modules/boonex/russian/data/langs/bx_convos/ru.xml

@@ -62,8 +62,8 @@
     <string name="_bx_cnv_menu_title_folders_more"><![CDATA[Переписка - Папки]]></string>
     <string name="_bx_cnv_menu_set_title_submenu"><![CDATA[Переписка - Папки]]></string>
     <string name="_bx_cnv_menu_set_title_folders_more"><![CDATA[Папки - Дополнительно]]></string>
-    <string name="_bx_cnv_menu_item_title_system_message"><![CDATA[Сообщение]]></string>
-    <string name="_bx_cnv_menu_item_title_message"><![CDATA[Сообщение]]></string>
+    <string name="_bx_cnv_menu_item_title_system_message"><![CDATA[Начать переписку]]></string>
+    <string name="_bx_cnv_menu_item_title_message"><![CDATA[Начать переписку]]></string>
     <string name="_bx_cnv_menu_item_title_system_message_group"><![CDATA[Групповое сообщение]]></string>
     <string name="_bx_cnv_menu_item_title_message_group"><![CDATA[Групповое сообщение]]></string>
     <string name="_bx_cnv_menu_item_title_system_mark_unread_entry"><![CDATA[Отметить как непрочитанное]]></string>

+ 10 - 4
modules/boonex/russian/data/langs/system/ru.xml

@@ -1301,12 +1301,12 @@
     <string name="_adm_stg_cpt_option_sys_per_page_search_keyword_plural"><![CDATA[Число элементов на странице в результатах поиска по сайту]]></string>
     <string name="_adm_stg_cpt_option_sys_push_app_id"><![CDATA[OneSignal App ID]]></string>
     <string name="_adm_stg_cpt_option_sys_push_rest_api"><![CDATA[REST API Key]]></string>
+    <string name="_adm_stg_cpt_option_sys_push_short_name"><![CDATA[Короткое имя (требуется только если у вас https сайт. Оно должно совпадать с поддоменом, введёным, в настройках пуш оповещений на OneSignal)]]></string>
+    <string name="_adm_stg_cpt_option_sys_push_safari_id"><![CDATA[Apple Safari Web ID в натройках Web Push]]></string>
+    <string name="_adm_stg_cpt_option_sys_push_queue_send_per_start"><![CDATA[Количество сообщенией, отправляемое из Push очереди при каждом запуске]]></string>
 	<string name="_adm_stg_cpt_option_sys_twilio_gate_sid"><![CDATA[Account SID]]></string>
 	<string name="_adm_stg_cpt_option_sys_twilio_gate_token"><![CDATA[Auth token]]></string>
 	<string name="_adm_stg_cpt_option_sys_twilio_gate_from_number"><![CDATA[Номер для отправки SMS по умолчанию]]></string>
-    <string name="_adm_stg_cpt_option_sys_push_short_name"><![CDATA[Короткое имя (требуется только если у вас https сайт. Оно должно совпадать с поддоменом, введёным, в настройках пуш оповещений на OneSignal)]]></string>
-    <string name="_adm_stg_cpt_option_sys_push_safari_id"><![CDATA[Apple Safari Web ID в натройках Web Push]]></string>
-    <string name="_adm_stg_cpt_option_sys_push_queue_send_per_start"><![CDATA[Количество сообщенией, отправляемое из Push очереди при каждом запуске]]></string>    
 	<string name="_adm_stg_cpt_option_sys_recaptcha_key_private"><![CDATA[reCAPTCHA - приватный ключ]]></string>
 	<string name="_adm_stg_cpt_option_sys_recaptcha_key_public"><![CDATA[reCAPTCHA - публичный ключ]]></string>
 	<string name="_adm_stg_cpt_option_sys_redirect_after_account_added"><![CDATA[Перенаправлять после создания аккаунта на]]></string>
@@ -1334,7 +1334,13 @@
 	<string name="_adm_stg_cpt_option_sys_transcoder_queue_storage"><![CDATA[Удалённая раскодировка видео]]></string>
 	<string name="_adm_stg_cpt_option_template"><![CDATA[Основная тема]]></string>
 	<string name="_adm_stg_err_option_template"><![CDATA[Тема не может быть пустой и должна иметь приемлемое название.]]></string>
-	<string name="_adm_stg_cpt_option_use_like_operator"><![CDATA[Использовать для поиска оператор LIKE (рекомендуется для небольшого содержимого)]]></string>
+    <string name="_adm_stg_cpt_option_use_like_operator"><![CDATA[Использовать для поиска оператор LIKE (рекомендуется для небольшого содержимого)]]></string>
+    <string name="_adm_stg_cpt_option_sys_tinymce_plugins_mini"><![CDATA[TinyMCE компоненты для мини редактора]]></string>
+    <string name="_adm_stg_cpt_option_sys_tinymce_toolbar_mini"><![CDATA[TinyMCE кнопки для мини редактора]]></string>
+    <string name="_adm_stg_cpt_option_sys_tinymce_plugins_standard"><![CDATA[TinyMCE компоненты для стандартного редактора]]></string>
+    <string name="_adm_stg_cpt_option_sys_tinymce_toolbar_standard"><![CDATA[TinyMCE кнопки для стандартного редактора]]></string>
+    <string name="_adm_stg_cpt_option_sys_tinymce_plugins_full"><![CDATA[TinyMCE компоненты для полного редактора]]></string>
+    <string name="_adm_stg_cpt_option_sys_tinymce_toolbar_full"><![CDATA[TinyMCE кнопки для полного редактора]]></string>
 	<string name="_adm_stg_cpt_type_system"><![CDATA[Система]]></string>
 	<string name="_adm_stg_scs_save"><![CDATA[Настройки удачно сохранены]]></string>
 	<string name="_adm_stg_err_save_error_message"><![CDATA[Ошибка в '{0}': {1}]]></string>

+ 1 - 1
modules/boonex/spaces/install/config.php

@@ -18,7 +18,7 @@ $aConfig = array(
     'name' => 'bx_spaces',
     'title' => 'Spaces',
     'note' => 'Spaces functionality.',
-    'version' => '9.0.1.DEV',
+    'version' => '9.0.0.DEV',
     'vendor' => 'BoonEx',
     'help_url' => 'http://feed.una.io/?section={module_name}',
 

+ 1 - 1
searchKeyword.php

@@ -36,7 +36,7 @@ if (bx_get('keyword') !== false) {
 $oTemplate = BxDolTemplate::getInstance();
 $oTemplate->setPageNameIndex (BX_PAGE_DEFAULT);
 $oTemplate->setPageHeader (_t("_Search"));
-$oTemplate->setPageContent ('page_main_code', $oSearch->getForm() . $oSearch->getResultsContainer($sCode));
+$oTemplate->setPageContent ('page_main_code', $oSearch->getForm() . ($sCode ? $oSearch->getResultsContainer($sCode) : ''));
 $oTemplate->getPageCode();
 
 /** @} */

+ 37 - 61
template/scripts/BxBaseEditorTinyMCE.php

@@ -68,23 +68,10 @@ EOS;
      * Standard view initialization params
      */
     protected static $CONF_STANDARD = "
-                        external_plugins: {
-                            advlist: '{bx_url_tinymce}plugins/advlist/plugin.min.js',
-                            autolink: '{bx_url_tinymce}plugins/autolink/plugin.min.js',
-                            autosave: '{bx_url_tinymce}plugins/autosave/plugin.min.js',
-                            code: '{bx_url_tinymce}plugins/code/plugin.min.js',
-                            hr: '{bx_url_tinymce}plugins/hr/plugin.min.js', 
-                            image: '{bx_url_tinymce}plugins/image/plugin.min.js',
-                            link: '{bx_url_tinymce}plugins/link/plugin.min.js',
-                            lists: '{bx_url_tinymce}plugins/lists/plugin.min.js',
-                            media: '{bx_url_tinymce}plugins/media/plugin.min.js',
-                            paste: '{bx_url_tinymce}plugins/paste/plugin.min.js',
-                            fullscreen: '{bx_url_tinymce}plugins/fullscreen/plugin.min.js',
-                            codesample: '{bx_url_tinymce}plugins/codesample/plugin.min.js',
-                        },
+                        external_plugins: {plugins},
                         width: '100%',
                         height: '270',
-                        toolbar: 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | fullscreen codesample',
+                        toolbar: {toolbar},
                         statusbar: true,
                         resize: true,
     ";
@@ -94,18 +81,10 @@ EOS;
      */
     protected static $CONF_MINI = "
                         menubar: false,
-                        external_plugins: {
-                            autolink: '{bx_url_tinymce}plugins/autolink/plugin.min.js',
-                            image: '{bx_url_tinymce}plugins/image/plugin.min.js',
-                            link: '{bx_url_tinymce}plugins/link/plugin.min.js',
-                            lists: '{bx_url_tinymce}plugins/lists/plugin.min.js',
-                            paste: '{bx_url_tinymce}plugins/paste/plugin.min.js',
-                            fullscreen: '{bx_url_tinymce}plugins/fullscreen/plugin.min.js',
-                            codesample: '{bx_url_tinymce}plugins/codesample/plugin.min.js',
-                        },
+                        external_plugins: {plugins},
                         width: '100%',
                         height: '150',                        
-                        toolbar: 'bold italic underline removeformat | bullist numlist | alignleft aligncenter alignright | blockquote | link unlink image | fullscreen codesample',
+                        toolbar: {toolbar},
                         statusbar: true,
                         resize: true,
     ";
@@ -114,39 +93,10 @@ EOS;
      * Full view initialization params
      */
     protected static $CONF_FULL = "
-                        external_plugins: {
-                            advlist: '{bx_url_tinymce}plugins/advlist/plugin.min.js',
-                            anchor: '{bx_url_tinymce}plugins/anchor/plugin.min.js',
-                            autolink: '{bx_url_tinymce}plugins/autolink/plugin.min.js',
-                            autoresize: '{bx_url_tinymce}plugins/autoresize/plugin.min.js',
-                            autosave: '{bx_url_tinymce}plugins/autosave/plugin.min.js',
-                            charmap: '{bx_url_tinymce}plugins/charmap/plugin.min.js',
-                            code: '{bx_url_tinymce}plugins/code/plugin.min.js',
-                            emoticons: '{bx_url_tinymce}plugins/emoticons/plugin.min.js',
-                            hr: '{bx_url_tinymce}plugins/hr/plugin.min.js',
-                            image: '{bx_url_tinymce}plugins/image/plugin.min.js',
-                            link: '{bx_url_tinymce}plugins/link/plugin.min.js',
-                            lists: '{bx_url_tinymce}plugins/lists/plugin.min.js',
-                            media: '{bx_url_tinymce}plugins/media/plugin.min.js',
-                            nonbreaking: '{bx_url_tinymce}plugins/nonbreaking/plugin.min.js',
-                            pagebreak: '{bx_url_tinymce}plugins/pagebreak/plugin.min.js',
-                            preview: '{bx_url_tinymce}plugins/preview/plugin.min.js',
-                            print: '{bx_url_tinymce}plugins/print/plugin.min.js',
-                            paste: '{bx_url_tinymce}plugins/paste/plugin.min.js',
-                            save: '{bx_url_tinymce}plugins/save/plugin.min.js',
-                            searchreplace: '{bx_url_tinymce}plugins/searchreplace/plugin.min.js',
-                            table: '{bx_url_tinymce}plugins/table/plugin.min.js',
-                            textcolor: '{bx_url_tinymce}plugins/textcolor/plugin.min.js',
-                            visualblocks: '{bx_url_tinymce}plugins/visualblocks/plugin.min.js',
-                            fullscreen: '{bx_url_tinymce}plugins/fullscreen/plugin.min.js',
-                            codesample: '{bx_url_tinymce}plugins/codesample/plugin.min.js',
-                        },
+                        external_plugins: {plugins},
                         width: '100%',
                         height: '320',
-                        toolbar: [
-                            'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image',
-                            'print preview media | forecolor emoticons | fullscreen codesample'
-                        ],
+                        toolbar: {toolbar},
                         statusbar: true,
                         resize: true,
                         image_advtab: true,
@@ -180,17 +130,43 @@ EOS;
     {
         // set visual mode
         switch ($iViewMode) {
-            case BX_EDITOR_MINI:
-                 $sToolsItems = self::$CONF_MINI;
+        case BX_EDITOR_MINI:
+                $sToolbarItems = getParam('sys_tinymce_toolbar_mini');
+                $sPlugins = getParam('sys_tinymce_plugins_mini');
+                $sCustomInit = self::$CONF_MINI;
                 break;
             case BX_EDITOR_FULL:
-                $sToolsItems = self::$CONF_FULL;
+                $sToolbarItems = getParam('sys_tinymce_toolbar_full');
+                $sPlugins = getParam('sys_tinymce_plugins_full');
+                $sCustomInit = self::$CONF_FULL;
             break;
             case BX_EDITOR_STANDARD:
             default:
-                 $sToolsItems = self::$CONF_STANDARD;
+                $sToolbarItems = getParam('sys_tinymce_toolbar_standard');
+                $sPlugins = getParam('sys_tinymce_plugins_standard');
+                $sCustomInit = self::$CONF_STANDARD;
         }
 
+        if ($this->_sButtonsCustom !== false) {
+            $sToolbarItems = $this->_sButtonsCustom;
+        }
+        else {
+            $sToolbarItems = json_encode(explode(',', $sToolbarItems));
+        }
+        
+        if ($this->_sPluginsCustom !== false) {
+            $sPlugins = $this->_sPluginsCustom;
+        }
+        else {
+            $a = explode(',', $sPlugins);            
+            foreach ($a as $sPlugin)
+                $aPlugins[$sPlugin] = "{bx_url_tinymce}plugins/$sPlugin/plugin.min.js";
+            $sPlugins = json_encode($aPlugins);
+        }
+        
+        $sCustomInit = str_replace('{toolbar}', $sToolbarItems, $sCustomInit);
+        $sCustomInit = str_replace('{plugins}', $sPlugins, $sCustomInit);
+        
         // detect language
         $sLang = BxDolLanguages::getInstance()->detectLanguageFromArray (self::$CONF_LANGS);
 
@@ -202,7 +178,7 @@ EOS;
 
         // initialize editor
         $sInitEditor = $this->_replaceMarkers(self::$CONF_COMMON, array(
-            'bx_var_custom_init' => $sToolsItems,
+            'bx_var_custom_init' => $sCustomInit,
             'bx_var_custom_conf' => $this->_sConfCustom,
             'bx_var_plugins_path' => bx_js_string(BX_DOL_URL_PLUGINS_PUBLIC, BX_ESCAPE_STR_APOS),
             'bx_var_css_path' => bx_js_string($aCss['url'], BX_ESCAPE_STR_APOS),

+ 5 - 0
template/scripts/BxBaseServices.php

@@ -36,6 +36,11 @@ class BxBaseServices extends BxDol implements iBxDolProfileService
     {
         return $this->_serviceProfileFunc('getAvatar', $iContentId);
     }
+	
+	public function serviceProfileCover ($iContentId)
+    {
+        return $this->_serviceTemplateFunc('urlCover', $iContentId);
+    }
 
     public function serviceProfileEditUrl ($iContentId)
     {