Forráskód Böngészése

Merge branch 'master' of https://github.com/boonex/dolphin

AntonLV 13 éve
szülő
commit
4642f73650
43 módosított fájl, 359 hozzáadás és 86 törlés
  1. 3 0
      inc/classes/BxDolConnection.php
  2. 12 0
      inc/classes/BxDolMenu.php
  3. 5 0
      inc/classes/BxDolPageQuery.php
  4. 2 2
      inc/classes/BxDolPaginate.php
  5. 62 11
      inc/js/functions.js
  6. 4 4
      install/sql/v70.sql
  7. 3 3
      modules/boonex/developer/install/sql/install.sql
  8. 4 2
      modules/boonex/english/data/langs/system.xml
  9. 11 0
      modules/boonex/notes/classes/BxNotesModule.php
  10. 1 0
      modules/boonex/notes/install/langs/en.xml
  11. 7 6
      modules/boonex/notes/install/sql/enable.sql
  12. 27 3
      modules/boonex/persons/classes/BxPersonsMenuViewPerson.php
  13. 20 4
      modules/boonex/persons/classes/BxPersonsModule.php
  14. 2 2
      modules/boonex/persons/classes/BxPersonsPageProfile.php
  15. 12 6
      modules/boonex/persons/install/langs/en.xml
  16. 1 1
      modules/boonex/persons/install/sql/disable.sql
  17. 25 13
      modules/boonex/persons/install/sql/enable.sql
  18. 1 1
      modules/boonex/persons/template/cover.html
  19. 3 1
      modules/boonex/persons/template/css/main.css
  20. 1 1
      modules/boonex/timeline/install/sql/disable.sql
  21. 3 3
      modules/boonex/timeline/install/sql/enable.sql
  22. 1 1
      template/_row_1_column.html
  23. 40 7
      template/css/common.css
  24. 3 2
      template/css/general.css
  25. 9 0
      template/css/media-phone.css
  26. 10 0
      template/css/menu.css
  27. BIN
      template/images/layout_bottom_area_2_columns.png
  28. BIN
      template/images/layout_topbottom_area_2_columns.png
  29. 1 1
      template/layout_2_columns.html
  30. 1 1
      template/layout_3_columns.html
  31. 1 1
      template/layout_bar_left.html
  32. 1 1
      template/layout_bar_right.html
  33. 20 0
      template/layout_bottom_area_2_columns.html
  34. 1 1
      template/layout_top_area_2_columns.html
  35. 1 1
      template/layout_top_area_3_columns.html
  36. 1 1
      template/layout_top_area_bar_left.html
  37. 1 1
      template/layout_top_area_bar_right.html
  38. 28 0
      template/layout_topbottom_area_2_columns.html
  39. 1 1
      template/menu_toolbar.html
  40. 1 1
      template/messageBox.html
  41. 1 1
      template/paginate.html
  42. 7 2
      template/scripts/BxBaseMenu.php
  43. 21 0
      template/scripts/BxBasePage.php

+ 3 - 0
inc/classes/BxDolConnection.php

@@ -167,6 +167,9 @@ class BxDolConnection extends BxDol implements iBxDolFactoryObject {
      * @return array
      * @return array
      */ 
      */ 
     public function actionRemove () {
     public function actionRemove () {
+        $a = $this->actionReject();
+        if (false == $a['err'])
+            return $a;
         return $this->_action ('removeConnection', '_sys_conn_err_connection_does_not_exists', false);
         return $this->_action ('removeConnection', '_sys_conn_err_connection_does_not_exists', false);
     }
     }
 
 

+ 12 - 0
inc/classes/BxDolMenu.php

@@ -109,6 +109,18 @@ class BxDolMenu extends BxDol implements iBxDolFactoryObject {
         $this->_aObject = $aObject;
         $this->_aObject = $aObject;
         $this->_oQuery = new BxDolMenuQuery($this->_aObject);
         $this->_oQuery = new BxDolMenuQuery($this->_aObject);
         $this->_oPermalinks = BxDolPermalinks::getInstance();
         $this->_oPermalinks = BxDolPermalinks::getInstance();
+
+        if (isLogged()) {
+            bx_import('BxDolProfile');
+            $oProfile = BxDolProfile::getInstance();
+            if ($oProfile) {
+                $this->addMarkers(array(
+                    'member_id' => $oProfile->id(),
+                    'member_display_name' => $oProfile->getDisplayName(),
+                    'member_url' => $oProfile->getUrl(),
+                ));
+            }
+        }
     }
     }
 
 
     /**
     /**

+ 5 - 0
inc/classes/BxDolPageQuery.php

@@ -47,6 +47,11 @@ class BxDolPageQuery extends BxDolDb {
         return $aRet;
         return $aRet;
     }
     }
 
 
+    public function getPageBlock($iBlockId) {
+        $sQuery = $this->prepare("SELECT * FROM `sys_pages_blocks` WHERE `object` = ? AND `id` = ?", $this->_aObject['object'], $iBlockId);
+        return $this->getRow($sQuery);
+    }
+
     public function getPageBlockContent($iId) {
     public function getPageBlockContent($iId) {
         $sQuery = $this->prepare("SELECT `content` FROM `sys_pages_blocks` WHERE `id` = ?", $iId);
         $sQuery = $this->prepare("SELECT `content` FROM `sys_pages_blocks` WHERE `id` = ?", $iId);
         return $this->getOne($sQuery);
         return $this->getOne($sQuery);

+ 2 - 2
inc/classes/BxDolPaginate.php

@@ -284,8 +284,8 @@ abstract class BxDolPaginate extends BxDol {
                     'lnk_content' => $this->_sViewAllCaption,
                     'lnk_content' => $this->_sViewAllCaption,
                 ),
                 ),
             ),
             ),
-            'btn_prev' => '<a href="' . $sPrevLnkUrl . '" ' . $sPrevLnkClick . ' class="bx-paginate-btn-prev bx-btn bx-btn-symbol' . $sClassAdd . $sPrevClassAdd . '">' . _t('_sys_paginate_prev') . '</a>',
-            'btn_next' => '<a href="' . $sNextLnkUrl . '" ' . $sNextLnkClick . ' class="bx-paginate-btn-next bx-btn bx-btn-symbol' . $sClassAdd . $sNextClassAdd . '">' . _t('_sys_paginate_next') . '</a>',
+            'btn_prev' => '<a href="' . $sPrevLnkUrl . '" ' . $sPrevLnkClick . ' class="bx-paginate-btn-prev bx-btn' . $sClassAdd . $sPrevClassAdd . '"><i class="sys-icon sys-icon-bigger angle-double-left"></i></a>',
+            'btn_next' => '<a href="' . $sNextLnkUrl . '" ' . $sNextLnkClick . ' class="bx-paginate-btn-next bx-btn' . $sClassAdd . $sNextClassAdd . '"><i class="sys-icon sys-icon-bigger angle-double-right"></i></a>',
             'paginate_class' => $this->_sPaginateClass,
             'paginate_class' => $this->_sPaginateClass,
         );
         );
 
 

+ 62 - 11
inc/js/functions.js

@@ -63,13 +63,29 @@ function getHtmlData( elem, url, callback, method , confirmation)
     }
     }
 }
 }
 
 
-
-function loadDynamicBlock( iBlockID, sUrl ) {
-    if( $ == undefined )
+/**
+ * This function reloads page block automatically, 
+ * just provide any element inside the block and this function will reload the block.
+ * @param e - element inside the block
+ * @return true on success, or false on error - particularly, if block isn't found
+ */
+function loadDynamicBlockAuto(e) {
+    var sUrl = location.href;
+    var sId = $(e).parents('.bx-page-block-container:first').attr('id');
+    
+    if (!sId || !sId.length)
         return false;
         return false;
 
 
-    getHtmlData($('#page_block_' + iBlockID), (sUrl + '&dynamic=tab&pageBlock=' + iBlockID));
+    var aMatches = sId.match(/\-(\d+)$/);
+    if (!aMatches || !aMatches[1])
+        return false;
+        
+    loadDynamicBlock(parseInt(aMatches[1]), sUrl);
+    return true;
+}
 
 
+function loadDynamicBlock(iBlockID, sUrl) {
+    getHtmlData($('#bx-page-block-' + iBlockID), bx_append_url_params(sUrl, 'dynamic=tab&pageBlock=' + iBlockID));
     return true;
     return true;
 }
 }
 
 
@@ -147,6 +163,10 @@ function showPopupAnyHtml(sUrl, sId) {
 
 
 function bx_loading_btn (e, b) {
 function bx_loading_btn (e, b) {
     e = $(e);
     e = $(e);
+
+    if (e.children('div').size())
+        e = e.children('div').first();
+
     if (!b) {
     if (!b) {
         e.find('.bx-loading-ajax-btn').remove();
         e.find('.bx-loading-ajax-btn').remove();
     } else if (!e.find('.bx-loading-ajax-btn').length) {
     } else if (!e.find('.bx-loading-ajax-btn').length) {
@@ -246,12 +266,15 @@ function bx_center_content (sSel, sBlockStyle) {
 
 
 /**
 /**
  * Show pointer popup with menu from URL.
  * Show pointer popup with menu from URL.
- * @param e - element to show popup at
  * @param o - menu object name
  * @param o - menu object name
+ * @param e - element to show popup at
+ * @param options - popup options
+ * @param vars - additional GET variables
  */
  */
-function bx_menu_popup (o, e, options) {
+function bx_menu_popup (o, e, options, vars) {
     var options = options || {};
     var options = options || {};
-    var o = $.extend({}, $.fn.dolPopupDefaultOptions, options, {id: o, url: 'menu.php?o=' + o});
+    var vars = vars || {};
+    var o = $.extend({}, $.fn.dolPopupDefaultOptions, options, {id: o, url: bx_append_url_params('menu.php', $.extend({o:o}, vars))});
     $(e).dolPopupAjax(o);
     $(e).dolPopupAjax(o);
 }
 }
 
 
@@ -351,7 +374,7 @@ function bx_time(sLang, isAutoupdate, sRootSel) {
  * @param iContentId - content id, initiator is always current logged in user
  * @param iContentId - content id, initiator is always current logged in user
  * @param bConfirm - show confirmation dialog
  * @param bConfirm - show confirmation dialog
  */
  */
-function bx_conn_action(sObj, sAction, iContentId, bConfirm) {
+function bx_conn_action(e, sObj, sAction, iContentId, bConfirm) {
     if ('undefined' != typeof(bConfirm) && bConfirm && !confirm(_t('_are you sure?')))
     if ('undefined' != typeof(bConfirm) && bConfirm && !confirm(_t('_are you sure?')))
         return;
         return;
                 
                 
@@ -361,13 +384,21 @@ function bx_conn_action(sObj, sAction, iContentId, bConfirm) {
         id: iContentId
         id: iContentId
     };
     };
     var fCallback = function (data) {
     var fCallback = function (data) {
+        bx_loading_btn(e, 0);
         if ('object' != typeof(data))
         if ('object' != typeof(data))
             return;
             return;
-        if (data.err)
+        if (data.err) {
             alert(data.msg);
             alert(data.msg);
-        else
-            location.reload();
+        } else {
+            if (!loadDynamicBlockAuto(e))
+                location.reload();
+            else
+                $('#bx-popup-ajax-wrapper-bx_persons_view_actions_more').remove();
+        }
     };
     };
+
+    bx_loading_btn(e, 1);
+
     $.ajax({
     $.ajax({
         dataType: 'json',
         dataType: 'json',
         url: sUrlRoot + 'conn.php',
         url: sUrlRoot + 'conn.php',
@@ -376,3 +407,23 @@ function bx_conn_action(sObj, sAction, iContentId, bConfirm) {
         success: fCallback
         success: fCallback
     });
     });
 }
 }
+
+function bx_append_url_params (sUrl, mixedParams) {
+    var sParams = sUrl.indexOf('?') == -1 ? '?' : '&';
+
+    if(mixedParams instanceof Array) {
+    	for(var i in mixedParams)
+            sParams += i + '=' + mixedParams[i] + '&';
+        sParams = sParams.substr(0, sParams.length-1);
+    }
+    else if(mixedParams instanceof Object) {
+    	$.each(mixedParams, function(sKey, sValue) {
+    		sParams += sKey + '=' + sValue + '&';
+    	});
+        sParams = sParams.substr(0, sParams.length-1);
+    }
+    else
+        sParams += mixedParams;
+
+    return sUrl + sParams;
+}

+ 4 - 4
install/sql/v70.sql

@@ -2918,7 +2918,7 @@ INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `tit
 
 
 -- member toolbar menu
 -- member toolbar menu
 INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES
 INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES
-('sys_toolbar_member', 'system', 'account', '_sys_menu_item_title_system_account', '', 'javascript:void(0);', 'bx_menu_popup(''sys_account'', this);', '', 'user', 'sys_account', 510, 1, 0, 1),
+('sys_toolbar_member', 'system', 'account', '_sys_menu_item_title_system_account_menu', '_sys_menu_item_title_account_menu', 'javascript:void(0);', 'bx_menu_popup(''sys_account'', this);', '', 'user', 'sys_account', 510, 1, 0, 1),
 ('sys_toolbar_member', 'system', 'login', '_sys_menu_item_title_system_login', '', 'page.php?i=login', '', '', 'user', '', 1, 1, 0, 2);
 ('sys_toolbar_member', 'system', 'login', '_sys_menu_item_title_system_login', '', 'page.php?i=login', '', '', 'user', '', 1, 1, 0, 2);
 
 
 -- add content menu
 -- add content menu
@@ -3269,9 +3269,9 @@ INSERT INTO `sys_pages_layouts` (`id`, `name`, `icon`, `title`, `template`, `cel
 (6, 'top_area_bar_left', 'layout_top_area_bar_left.png', '_sys_layout_top_area_bar_left', 'layout_top_area_bar_left.html', 3),
 (6, 'top_area_bar_left', 'layout_top_area_bar_left.png', '_sys_layout_top_area_bar_left', 'layout_top_area_bar_left.html', 3),
 (7, 'top_area_bar_right', 'layout_top_area_bar_right.png', '_sys_layout_top_area_bar_right', 'layout_top_area_bar_right.html', 3),
 (7, 'top_area_bar_right', 'layout_top_area_bar_right.png', '_sys_layout_top_area_bar_right', 'layout_top_area_bar_right.html', 3),
 (8, 'top_area_3_columns', 'layout_top_area_3_columns.png', '_sys_layout_top_area_3_columns', 'layout_top_area_3_columns.html', 4),
 (8, 'top_area_3_columns', 'layout_top_area_3_columns.png', '_sys_layout_top_area_3_columns', 'layout_top_area_3_columns.html', 4),
-(9, 'top_area_2_columns', 'layout_top_area_2_columns.png', '_sys_layout_top_area_2_columns', 'layout_top_area_2_columns.html', 3);
-
-
+(9, 'top_area_2_columns', 'layout_top_area_2_columns.png', '_sys_layout_top_area_2_columns', 'layout_top_area_2_columns.html', 3),
+(10, 'topbottom_area_2_columns', 'layout_topbottom_area_2_columns.png', '_sys_layout_topbottom_area_2_columns', 'layout_topbottom_area_2_columns.html', 4),
+(11, 'bottom_area_2_columns', 'layout_bottom_area_2_columns.png', '_sys_layout_bottom_area_2_columns', 'layout_bottom_area_2_columns.html', 3);
 
 
 CREATE TABLE IF NOT EXISTS `sys_pages_design_boxes` (
 CREATE TABLE IF NOT EXISTS `sys_pages_design_boxes` (
   `id` int(11) NOT NULL,
   `id` int(11) NOT NULL,

+ 3 - 3
modules/boonex/developer/install/sql/install.sql

@@ -55,7 +55,7 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 
 
 INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `confirm`, `order`) VALUES
 INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `confirm`, `order`) VALUES
 ('mod_dev_forms', 'independent', 'add', '_bx_dev_frm_btn_forms_gl_create', '', 0, 1),
 ('mod_dev_forms', 'independent', 'add', '_bx_dev_frm_btn_forms_gl_create', '', 0, 1),
-('mod_dev_forms', 'single', 'export', '', 'download-alt', 0, 1),
+('mod_dev_forms', 'single', 'export', '', 'download', 0, 1),
 ('mod_dev_forms', 'single', 'edit', '', 'pencil', 0, 2),
 ('mod_dev_forms', 'single', 'edit', '', 'pencil', 0, 2),
 ('mod_dev_forms_displays', 'independent', 'add', '_bx_dev_frm_btn_displays_gl_create', '', 0, 1),
 ('mod_dev_forms_displays', 'independent', 'add', '_bx_dev_frm_btn_displays_gl_create', '', 0, 1),
 ('mod_dev_forms_displays', 'single', 'edit', '', 'pencil', 0, 1),
 ('mod_dev_forms_displays', 'single', 'edit', '', 'pencil', 0, 1),
@@ -64,7 +64,7 @@ INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `conf
 ('mod_dev_forms_fields', 'single', 'show_to', '_bx_dev_frm_btn_fields_visible', '', 0, 3),
 ('mod_dev_forms_fields', 'single', 'show_to', '_bx_dev_frm_btn_fields_visible', '', 0, 3),
 ('mod_dev_forms_fields', 'independent', 'add', '_bx_dev_frm_btn_fields_create', '', 0, 1),
 ('mod_dev_forms_fields', 'independent', 'add', '_bx_dev_frm_btn_fields_create', '', 0, 1),
 ('mod_dev_forms_pre_lists', 'independent', 'add', '_bx_dev_frm_btn_pre_lists_create', '', 0, 1),
 ('mod_dev_forms_pre_lists', 'independent', 'add', '_bx_dev_frm_btn_pre_lists_create', '', 0, 1),
-('mod_dev_forms_pre_lists', 'single', 'export', '', 'download-alt', 0, 1),
+('mod_dev_forms_pre_lists', 'single', 'export', '', 'download', 0, 1),
 ('mod_dev_forms_pre_lists', 'single', 'edit', '', 'pencil', 0, 2),
 ('mod_dev_forms_pre_lists', 'single', 'edit', '', 'pencil', 0, 2),
 ('mod_dev_forms_pre_lists', 'single', 'delete', '', 'remove', 1, 3),
 ('mod_dev_forms_pre_lists', 'single', 'delete', '', 'remove', 1, 3),
 ('mod_dev_forms_pre_values', 'independent', 'add', '_bx_dev_frm_btn_pre_values_create', '', 0, 1),
 ('mod_dev_forms_pre_values', 'independent', 'add', '_bx_dev_frm_btn_pre_values_create', '', 0, 1),
@@ -284,7 +284,7 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 
 
 INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `confirm`, `order`) VALUES
 INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `confirm`, `order`) VALUES
 ('mod_dev_nav_menus', 'independent', 'add', '_bx_dev_nav_btn_menus_gl_create', '', 0, 1),
 ('mod_dev_nav_menus', 'independent', 'add', '_bx_dev_nav_btn_menus_gl_create', '', 0, 1),
-('mod_dev_nav_menus', 'single', 'export', '', 'download-alt', 0, 1),
+('mod_dev_nav_menus', 'single', 'export', '', 'download', 0, 1),
 ('mod_dev_nav_menus', 'single', 'edit', '', 'pencil', 0, 2),
 ('mod_dev_nav_menus', 'single', 'edit', '', 'pencil', 0, 2),
 ('mod_dev_nav_menus', 'single', 'delete', '', 'remove', 1, 3),
 ('mod_dev_nav_menus', 'single', 'delete', '', 'remove', 1, 3),
 ('mod_dev_nav_sets', 'independent', 'add', '_bx_dev_nav_btn_sets_gl_create', '', 0, 1),
 ('mod_dev_nav_sets', 'independent', 'add', '_bx_dev_nav_btn_sets_gl_create', '', 0, 1),

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

@@ -2425,6 +2425,8 @@ Please click "Continue" below to navigate to the home page of the site.]]></stri
     <string name="_sys_layout_top_area_bar_right"><![CDATA[Top area with right bar]]></string>
     <string name="_sys_layout_top_area_bar_right"><![CDATA[Top area with right bar]]></string>
     <string name="_sys_layout_top_area_3_columns"><![CDATA[Top area with 3 columns]]></string>
     <string name="_sys_layout_top_area_3_columns"><![CDATA[Top area with 3 columns]]></string>
     <string name="_sys_layout_top_area_2_columns"><![CDATA[Top area with 2 columns]]></string>
     <string name="_sys_layout_top_area_2_columns"><![CDATA[Top area with 2 columns]]></string>
+    <string name="_sys_layout_topbottom_area_2_columns"><![CDATA[Top&bottom areas with 2 columns in the middle]]></string>
+    <string name="_sys_layout_bottom_area_2_columns"><![CDATA[Bottom area with 2 columns at top]]></string>
     <string name="_sys_block_types_system"><![CDATA[System]]></string>
     <string name="_sys_block_types_system"><![CDATA[System]]></string>
     <string name="_sys_block_types_custom"><![CDATA[Custom]]></string>
     <string name="_sys_block_types_custom"><![CDATA[Custom]]></string>
     <string name="_sys_block_types_skeletons"><![CDATA[Skeletons]]></string>
     <string name="_sys_block_types_skeletons"><![CDATA[Skeletons]]></string>
@@ -3306,8 +3308,6 @@ More info about URI DNSBL: <br />
     <string name="_sys_x_days"><![CDATA[{0} days]]></string>
     <string name="_sys_x_days"><![CDATA[{0} days]]></string>
 	<string name="_sys_paginate_info"><![CDATA[{0}-{1}]]></string>
 	<string name="_sys_paginate_info"><![CDATA[{0}-{1}]]></string>
 	<string name="_sys_paginate_view_all"><![CDATA[View All]]></string>
 	<string name="_sys_paginate_view_all"><![CDATA[View All]]></string>
-	<string name="_sys_paginate_next"><![CDATA[&#187;]]></string>
-	<string name="_sys_paginate_prev"><![CDATA[&#171;]]></string>
 
 
 	<string name="_sys_menu_title_rss"><![CDATA[RSS]]></string>
 	<string name="_sys_menu_title_rss"><![CDATA[RSS]]></string>
 	<string name="_sys_menu_title_main"><![CDATA[Site Navigation]]></string>
 	<string name="_sys_menu_title_main"><![CDATA[Site Navigation]]></string>
@@ -3343,6 +3343,7 @@ More info about URI DNSBL: <br />
     <string name="_sys_menu_item_title_system_account_settings_pwd"><![CDATA[Change Password]]></string>
     <string name="_sys_menu_item_title_system_account_settings_pwd"><![CDATA[Change Password]]></string>
     <string name="_sys_menu_item_title_system_account_settings_delete"><![CDATA[Delete Account]]></string>
     <string name="_sys_menu_item_title_system_account_settings_delete"><![CDATA[Delete Account]]></string>
     <string name="_sys_menu_item_title_system_account_profile_context"><![CDATA[Switch Profile]]></string>
     <string name="_sys_menu_item_title_system_account_profile_context"><![CDATA[Switch Profile]]></string>
+    <string name="_sys_menu_item_title_system_account_menu"><![CDATA[Account]]></string>
 
 
     <string name="_sys_menu_item_title_home"><![CDATA[Home]]></string>
     <string name="_sys_menu_item_title_home"><![CDATA[Home]]></string>
     <string name="_sys_menu_item_title_about"><![CDATA[About]]></string>    
     <string name="_sys_menu_item_title_about"><![CDATA[About]]></string>    
@@ -3354,6 +3355,7 @@ More info about URI DNSBL: <br />
     <string name="_sys_menu_item_title_account_settings_info"><![CDATA[Edit Account]]></string>
     <string name="_sys_menu_item_title_account_settings_info"><![CDATA[Edit Account]]></string>
     <string name="_sys_menu_item_title_account_settings_delete"><![CDATA[Delete Account]]></string>
     <string name="_sys_menu_item_title_account_settings_delete"><![CDATA[Delete Account]]></string>
     <string name="_sys_menu_item_title_account_profile_context"><![CDATA[Switch Profile]]></string>
     <string name="_sys_menu_item_title_account_profile_context"><![CDATA[Switch Profile]]></string>
+    <string name="_sys_menu_item_title_account_menu"><![CDATA[{member_display_name}]]></string>
 
 
     <string name="_sys_menu_set_title_site"><![CDATA[Site]]></string>
     <string name="_sys_menu_set_title_site"><![CDATA[Site]]></string>
     <string name="_sys_menu_set_title_footer"><![CDATA[Footer]]></string>
     <string name="_sys_menu_set_title_footer"><![CDATA[Footer]]></string>

+ 11 - 0
modules/boonex/notes/classes/BxNotesModule.php

@@ -183,6 +183,17 @@ class BxNotesModule extends BxDolModule {
         return $oMenu ? $oMenu->getCode() : false;
         return $oMenu ? $oMenu->getCode() : false;
     }
     }
 
 
+    public function serviceMyEntriesActions ($iProfileId = 0) {
+        if (!$iProfileId)
+            $iProfileId = bx_process_input(bx_get('profile_id'), BX_DATA_INT);
+        if (!$iProfileId || $iProfileId != $this->_iProfileId)
+            return false;
+
+        bx_import('BxTemplMenu');
+        $oMenu = BxTemplMenu::getObjectInstance('bx_notes_my');
+        return $oMenu ? $oMenu->getCode() : false;
+    }
+
 	public function serviceGetTimelineData()
 	public function serviceGetTimelineData()
     {
     {
         return array(
         return array(

+ 1 - 0
modules/boonex/notes/install/langs/en.xml

@@ -70,6 +70,7 @@
     <string name="_bx_notes_page_title_sys_notes_author"><![CDATA[Notes of author]]></string>
     <string name="_bx_notes_page_title_sys_notes_author"><![CDATA[Notes of author]]></string>
     <string name="_bx_notes_page_title_notes_author"><![CDATA[Notes of {display_name}]]></string>
     <string name="_bx_notes_page_title_notes_author"><![CDATA[Notes of {display_name}]]></string>
     <string name="_bx_notes_page_block_title_notes_author"><![CDATA[Notes of author]]></string>   
     <string name="_bx_notes_page_block_title_notes_author"><![CDATA[Notes of author]]></string>   
+    <string name="_bx_notes_page_block_title_notes_actions"><![CDATA[Notes actions]]></string>
 
 
     <string name="_bx_notes_menu_set_title_view_note"><![CDATA[View Note]]></string>
     <string name="_bx_notes_menu_set_title_view_note"><![CDATA[View Note]]></string>
     <string name="_bx_notes_menu_title_view_note"><![CDATA[View Note]]></string>
     <string name="_bx_notes_menu_title_view_note"><![CDATA[View Note]]></string>

+ 7 - 6
modules/boonex/notes/install/sql/enable.sql

@@ -63,14 +63,14 @@ INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title`, `designb
 -- Dumping data for 'bx_notes_view_note' page
 -- Dumping data for 'bx_notes_view_note' page
 --
 --
 INSERT INTO `sys_objects_page`(`object`, `title_system`, `title`, `module`, `layout_id`, `visible_for_levels`, `visible_for_levels_editable`, `uri`, `url`, `meta_description`, `meta_keywords`, `meta_robots`, `cache_lifetime`, `cache_editable`, `deletable`, `override_class_name`, `override_class_file`) VALUES 
 INSERT INTO `sys_objects_page`(`object`, `title_system`, `title`, `module`, `layout_id`, `visible_for_levels`, `visible_for_levels_editable`, `uri`, `url`, `meta_description`, `meta_keywords`, `meta_robots`, `cache_lifetime`, `cache_editable`, `deletable`, `override_class_name`, `override_class_file`) VALUES 
-('bx_notes_view_note', '_bx_notes_page_title_sys_view_note', '_bx_notes_page_title_view_note', 'bx_notes', 6, 2147483647, 1, 'view-note', '', '', '', '', 0, 1, 0, 'BxNotesPageNote', 'modules/boonex/notes/classes/BxNotesPageNote.php');
+('bx_notes_view_note', '_bx_notes_page_title_sys_view_note', '_bx_notes_page_title_view_note', 'bx_notes', 11, 2147483647, 1, 'view-note', '', '', '', '', 0, 1, 0, 'BxNotesPageNote', 'modules/boonex/notes/classes/BxNotesPageNote.php');
 
 
 INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
 INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
-('bx_notes_view_note', 1, 'bx_notes', '_bx_notes_page_block_title_note_author', 0, 2147483647, 'service', 'a:2:{s:6:\"module\";s:8:\"bx_notes\";s:6:\"method\";s:13:\"entity_author\";}', 0, 0, 0),
-('bx_notes_view_note', 1, 'bx_notes', '_bx_notes_page_block_title_note_actions', 0, 2147483647, 'service', 'a:2:{s:6:\"module\";s:8:\"bx_notes\";s:6:\"method\";s:14:\"entity_actions\";}', 0, 0, 1),
-('bx_notes_view_note', 1, 'bx_notes', '_bx_notes_page_block_title_note_text', 13, 2147483647, 'service', 'a:2:{s:6:\"module\";s:8:\"bx_notes\";s:6:\"method\";s:17:\"entity_text_block\";}', 0, 0, 2),
-('bx_notes_view_note', 1, 'bx_notes', '_bx_notes_page_block_title_note_social_sharing', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:8:\"bx_notes\";s:6:\"method\";s:21:\"entity_social_sharing\";}', 0, 0, 3),
-('bx_notes_view_note', 1, 'bx_notes', '_bx_notes_page_block_title_note_comments', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:8:\"bx_notes\";s:6:\"method\";s:15:\"entity_comments\";}', 0, 0, 4);
+('bx_notes_view_note', 2, 'bx_notes', '_bx_notes_page_block_title_note_author', 0, 2147483647, 'service', 'a:2:{s:6:\"module\";s:8:\"bx_notes\";s:6:\"method\";s:13:\"entity_author\";}', 0, 0, 0),
+('bx_notes_view_note', 3, 'bx_notes', '_bx_notes_page_block_title_note_actions', 0, 2147483647, 'service', 'a:2:{s:6:\"module\";s:8:\"bx_notes\";s:6:\"method\";s:14:\"entity_actions\";}', 0, 0, 0),
+('bx_notes_view_note', 1, 'bx_notes', '_bx_notes_page_block_title_note_text', 13, 2147483647, 'service', 'a:2:{s:6:\"module\";s:8:\"bx_notes\";s:6:\"method\";s:17:\"entity_text_block\";}', 0, 0, 0),
+('bx_notes_view_note', 1, 'bx_notes', '_bx_notes_page_block_title_note_social_sharing', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:8:\"bx_notes\";s:6:\"method\";s:21:\"entity_social_sharing\";}', 0, 0, 1),
+('bx_notes_view_note', 1, 'bx_notes', '_bx_notes_page_block_title_note_comments', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:8:\"bx_notes\";s:6:\"method\";s:15:\"entity_comments\";}', 0, 0, 2);
 
 
 --
 --
 -- Dumping data for 'bx_notes_view_note_comments' page
 -- Dumping data for 'bx_notes_view_note_comments' page
@@ -106,6 +106,7 @@ INSERT INTO `sys_objects_page`(`object`, `uri`, `title_system`, `title`, `module
 ('bx_notes_author', 'notes-author', '_bx_notes_page_title_sys_notes_author', '_bx_notes_page_title_notes_author', 'bx_notes', 5, 2147483647, 1, '', '', '', '', 0, 1, 0, 'BxNotesPageAuthor', 'modules/boonex/notes/classes/BxNotesPageAuthor.php');
 ('bx_notes_author', 'notes-author', '_bx_notes_page_title_sys_notes_author', '_bx_notes_page_title_notes_author', 'bx_notes', 5, 2147483647, 1, '', '', '', '', 0, 1, 0, 'BxNotesPageAuthor', 'modules/boonex/notes/classes/BxNotesPageAuthor.php');
 
 
 INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
 INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_notes_author', 1, 'bx_notes', '_bx_notes_page_block_title_notes_actions', 0, 2147483647, 'service', 'a:2:{s:6:\"module\";s:8:\"bx_notes\";s:6:\"method\";s:18:\"my_entries_actions\";}', 0, 0, 0),
 ('bx_notes_author', 1, 'bx_notes', '_bx_notes_page_block_title_notes_author', 0, 2147483647, 'service', 'a:2:{s:6:\"module\";s:8:\"bx_notes\";s:6:\"method\";s:13:\"browse_author\";}', 0, 0, 1);
 ('bx_notes_author', 1, 'bx_notes', '_bx_notes_page_block_title_notes_author', 0, 2147483647, 'service', 'a:2:{s:6:\"module\";s:8:\"bx_notes\";s:6:\"method\";s:13:\"browse_author\";}', 0, 0, 1);
 
 
 
 

+ 27 - 3
modules/boonex/persons/classes/BxPersonsMenuViewPerson.php

@@ -11,6 +11,7 @@
 
 
 bx_import('BxTemplMenu');
 bx_import('BxTemplMenu');
 bx_import('BxDolProfile');
 bx_import('BxDolProfile');
+bx_import('BxDolModule');
 
 
 /**
 /**
  * 'View person' menu.
  * 'View person' menu.
@@ -40,6 +41,26 @@ class BxPersonsMenuViewPerson extends BxTemplMenu {
 
 
             $this->addMarkers($this->_aProfileInfo);
             $this->addMarkers($this->_aProfileInfo);
             $this->addMarkers(array('profile_id' => $this->_oProfile->id()));
             $this->addMarkers(array('profile_id' => $this->_oProfile->id()));
+
+            if (isLogged()) {
+                bx_import('BxDolConnection');
+                $oConn = BxDolConnection::getObjectInstance('sys_profiles_friends');
+                if ($oConn->isConnectedNotMutual(bx_get_logged_profile_id(), $this->_oProfile->id()))
+                    $this->addMarkers(array(
+                        'title_add_friend' => _t('_bx_persons_menu_item_title_befriend_sent'), 
+                        'title_remove_friend' => _t('_bx_persons_menu_item_title_unfriend_cancel_request'),
+                    ));
+                elseif ($oConn->isConnectedNotMutual($this->_oProfile->id(), bx_get_logged_profile_id()))
+                    $this->addMarkers(array(
+                        'title_add_friend' => _t('_bx_persons_menu_item_title_befriend_confirm'),
+                        'title_remove_friend' => _t('_bx_persons_menu_item_title_unfriend_reject_request'),
+                    ));
+                else
+                    $this->addMarkers(array(
+                        'title_add_friend' => _t('_bx_persons_menu_item_title_befriend'),
+                        'title_remove_friend' => _t('_bx_persons_menu_item_title_unfriend'),
+                    ));
+            }
         }
         }
     }
     }
 
 
@@ -56,8 +77,8 @@ class BxPersonsMenuViewPerson extends BxTemplMenu {
             return false;
             return false;
 
 
         // don't show current item, also this will solve problem when only one view note item is visible
         // don't show current item, also this will solve problem when only one view note item is visible
-        if ('bx_persons_view' == $this->_sObject && $this->_isSelected($a))
-            return false;
+//        if ('bx_persons_view_actions' == $this->_sObject && $this->_isSelected($a))
+//            return false;
 
 
         $sFuncCheckAccess = false;
         $sFuncCheckAccess = false;
         switch ($a['name']) {
         switch ($a['name']) {
@@ -82,12 +103,15 @@ class BxPersonsMenuViewPerson extends BxTemplMenu {
             case 'profile-subscribe-remove':
             case 'profile-subscribe-remove':
                 $sFuncCheckAccess = 'isAllowedSubscribeRemove';
                 $sFuncCheckAccess = 'isAllowedSubscribeRemove';
                 break;
                 break;
+            case 'profile-actions-more':
+                $sFuncCheckAccess = 'isAllowedViewMoreMenu';
+                break;            
         }
         }
 
 
         if (!$sFuncCheckAccess)
         if (!$sFuncCheckAccess)
             return true;
             return true;
 
 
-        return $sFuncCheckAccess && CHECK_ACTION_RESULT_ALLOWED === $this->_oModule->$sFuncCheckAccess($this->_aContentInfo) ? true : false;
+        return $sFuncCheckAccess && $this->_oModule && CHECK_ACTION_RESULT_ALLOWED === $this->_oModule->$sFuncCheckAccess($this->_aContentInfo) ? true : false;
     }
     }
 
 
 }
 }

+ 20 - 4
modules/boonex/persons/classes/BxPersonsModule.php

@@ -175,7 +175,7 @@ class BxPersonsModule extends BxDolModule implements iBxDolProfileService {
             return false;
             return false;
 
 
         bx_import('BxTemplMenu');
         bx_import('BxTemplMenu');
-        $oMenu = BxTemplMenu::getObjectInstance('bx_persons_view');
+        $oMenu = BxTemplMenu::getObjectInstance('bx_persons_view_actions');
         return $oMenu ? $oMenu->getCode() : false;
         return $oMenu ? $oMenu->getCode() : false;
     }
     }
 
 
@@ -344,6 +344,17 @@ class BxPersonsModule extends BxDolModule implements iBxDolProfileService {
         return _t('_sys_txt_access_denied');
         return _t('_sys_txt_access_denied');
     }
     }
 
 
+    /**
+     * @return CHECK_ACTION_RESULT_ALLOWED if access is granted or error message if access is forbidden. 
+     */
+    function isAllowedViewMoreMenu (&$aDataEntry, $isPerformAction = false) {
+        bx_import('BxTemplMenu');
+        $oMenu = BxTemplMenu::getObjectInstance('bx_persons_view_actions_more');
+        if (!$oMenu || !$oMenu->getCode())
+            return _t('_sys_txt_access_denied');
+        return CHECK_ACTION_RESULT_ALLOWED;
+    }
+
     /**
     /**
      * @return CHECK_ACTION_RESULT_ALLOWED if access is granted or error message if access is forbidden. 
      * @return CHECK_ACTION_RESULT_ALLOWED if access is granted or error message if access is forbidden. 
      */
      */
@@ -355,7 +366,9 @@ class BxPersonsModule extends BxDolModule implements iBxDolProfileService {
      * @return CHECK_ACTION_RESULT_ALLOWED if access is granted or error message if access is forbidden. 
      * @return CHECK_ACTION_RESULT_ALLOWED if access is granted or error message if access is forbidden. 
      */
      */
     function isAllowedFriendRemove (&$aDataEntry, $isPerformAction = false) {
     function isAllowedFriendRemove (&$aDataEntry, $isPerformAction = false) {
-        return $this->_isAllowedConnect ($aDataEntry, $isPerformAction, 'sys_profiles_friends', true, true);
+        if (CHECK_ACTION_RESULT_ALLOWED === $this->_isAllowedConnect ($aDataEntry, $isPerformAction, 'sys_profiles_friends', false, true, true))
+            return CHECK_ACTION_RESULT_ALLOWED;
+        return $this->_isAllowedConnect ($aDataEntry, $isPerformAction, 'sys_profiles_friends', false, true, false);
     }
     }
 
 
     /**
     /**
@@ -372,7 +385,7 @@ class BxPersonsModule extends BxDolModule implements iBxDolProfileService {
         return $this->_isAllowedConnect ($aDataEntry, $isPerformAction, 'sys_profiles_subscriptions', false, true);
         return $this->_isAllowedConnect ($aDataEntry, $isPerformAction, 'sys_profiles_subscriptions', false, true);
     }
     }
 
 
-    function _isAllowedConnect (&$aDataEntry, $isPerformAction, $sObjConnection, $isMutual, $isInvertResult) {
+    function _isAllowedConnect (&$aDataEntry, $isPerformAction, $sObjConnection, $isMutual, $isInvertResult, $isSwap = false) {
         if (!$this->_iProfileId)
         if (!$this->_iProfileId)
             return _t('_sys_txt_access_denied');
             return _t('_sys_txt_access_denied');
 
 
@@ -383,7 +396,10 @@ class BxPersonsModule extends BxDolModule implements iBxDolProfileService {
 
 
         bx_import('BxDolConnection');
         bx_import('BxDolConnection');
         $oConn = BxDolConnection::getObjectInstance($sObjConnection);
         $oConn = BxDolConnection::getObjectInstance($sObjConnection);
-        $isConnected = $oConn->isConnected($this->_iProfileId, $oProfile->id(), $isMutual);
+        if ($isSwap)
+            $isConnected = $oConn->isConnected($oProfile->id(), $this->_iProfileId, $isMutual);
+        else
+            $isConnected = $oConn->isConnected($this->_iProfileId, $oProfile->id(), $isMutual);
 
 
         if ($isInvertResult)
         if ($isInvertResult)
             $isConnected = !$isConnected;
             $isConnected = !$isConnected;

+ 2 - 2
modules/boonex/persons/classes/BxPersonsPageProfile.php

@@ -68,7 +68,7 @@ class BxPersonsPageProfile extends BxTemplPage {
                 $aInformers[] = array ('name' => 'bx-persons-status-not-active', 'msg' => _t($this->_aMapStatus2LangKey[$sStatus]), 'type' => BX_INFORMER_ALERT);
                 $aInformers[] = array ('name' => 'bx-persons-status-not-active', 'msg' => _t($this->_aMapStatus2LangKey[$sStatus]), 'type' => BX_INFORMER_ALERT);
             }
             }
         }
         }
-
+/*
         // display pending connetion requests
         // display pending connetion requests
         if (isLogged()) {
         if (isLogged()) {
             $aInformer = false;
             $aInformer = false;
@@ -81,7 +81,7 @@ class BxPersonsPageProfile extends BxTemplPage {
             if ($aInformer)
             if ($aInformer)
                 $aInformers[] = $aInformer;
                 $aInformers[] = $aInformer;
         }
         }
-
+*/
         // display message if it is possible to switch to this profile
         // display message if it is possible to switch to this profile
         $oProfile = $this->_aContentInfo ? BxDolProfile::getInstanceByContentTypeAccount($this->_aContentInfo['id'], 'bx_persons') : false;
         $oProfile = $this->_aContentInfo ? BxDolProfile::getInstanceByContentTypeAccount($this->_aContentInfo['id'], 'bx_persons') : false;
         if ($oProfile)
         if ($oProfile)

+ 12 - 6
modules/boonex/persons/install/langs/en.xml

@@ -66,30 +66,36 @@
 	<string name="_bx_persons_page_block_title_profile_actions"><![CDATA[Actions]]></string>
 	<string name="_bx_persons_page_block_title_profile_actions"><![CDATA[Actions]]></string>
 	<string name="_bx_persons_page_block_title_latest_persons"><![CDATA[Recent Persons]]></string>
 	<string name="_bx_persons_page_block_title_latest_persons"><![CDATA[Recent Persons]]></string>
 
 
-    <string name="_bx_persons_menu_set_title_view_person"><![CDATA[View Person]]></string>
+    <string name="_bx_persons_menu_set_title_view_person_actions"><![CDATA[Person Actions]]></string>
+    <string name="_bx_persons_menu_title_view_person_actions"><![CDATA[Person Actions]]></string>
+    <string name="_bx_persons_menu_set_title_view_person_actions_more"><![CDATA[Person More Actions]]></string>
+    <string name="_bx_persons_menu_title_view_person_actions_more"><![CDATA[Person More Actions]]></string>
     <string name="_bx_persons_menu_set_title_view_person_submenu"><![CDATA[View Person Submenu]]></string>
     <string name="_bx_persons_menu_set_title_view_person_submenu"><![CDATA[View Person Submenu]]></string>
-    <string name="_bx_persons_menu_title_view_person"><![CDATA[View Person]]></string>
     <string name="_bx_persons_menu_title_view_person_submenu"><![CDATA[View Person Submenu]]></string>
     <string name="_bx_persons_menu_title_view_person_submenu"><![CDATA[View Person Submenu]]></string>
     <string name="_bx_persons_menu_item_title_system_edit_person"><![CDATA[Edit Person]]></string>
     <string name="_bx_persons_menu_item_title_system_edit_person"><![CDATA[Edit Person]]></string>
     <string name="_bx_persons_menu_item_title_edit_person"><![CDATA[Edit Profile]]></string>
     <string name="_bx_persons_menu_item_title_edit_person"><![CDATA[Edit Profile]]></string>
     <string name="_bx_persons_menu_item_title_system_delete_person"><![CDATA[Delete Person]]></string>
     <string name="_bx_persons_menu_item_title_system_delete_person"><![CDATA[Delete Person]]></string>
     <string name="_bx_persons_menu_item_title_delete_person"><![CDATA[Delete Profile]]></string>
     <string name="_bx_persons_menu_item_title_delete_person"><![CDATA[Delete Profile]]></string>
-    <string name="_bx_persons_menu_item_title_system_view_person"><![CDATA[View Person]]></string>
-    <string name="_bx_persons_menu_item_title_view_person"><![CDATA[View Profile]]></string>
     <string name="_bx_persons_menu_item_title_system_persons_profile"><![CDATA[Person]]></string>
     <string name="_bx_persons_menu_item_title_system_persons_profile"><![CDATA[Person]]></string>
     <string name="_bx_persons_menu_item_title_persons_profile"><![CDATA[Person]]></string>
     <string name="_bx_persons_menu_item_title_persons_profile"><![CDATA[Person]]></string>
     <string name="_bx_persons_menu_item_title_system_create_person"><![CDATA[Create Person]]></string>
     <string name="_bx_persons_menu_item_title_system_create_person"><![CDATA[Create Person]]></string>
     <string name="_bx_persons_menu_item_title_create_person"><![CDATA[Create Person]]></string>
     <string name="_bx_persons_menu_item_title_create_person"><![CDATA[Create Person]]></string>
     <string name="_bx_persons_menu_item_title_system_view_person_info"><![CDATA[Info]]></string>
     <string name="_bx_persons_menu_item_title_system_view_person_info"><![CDATA[Info]]></string>
     <string name="_bx_persons_menu_item_title_view_person_info"><![CDATA[Info]]></string>
     <string name="_bx_persons_menu_item_title_view_person_info"><![CDATA[Info]]></string>
-    <string name="_bx_persons_menu_item_title_system_befriend"><![CDATA[Befriend]]></string>
-    <string name="_bx_persons_menu_item_title_befriend"><![CDATA[Befriend]]></string>
+    <string name="_bx_persons_menu_item_title_system_befriend"><![CDATA[Add friend]]></string>
+    <string name="_bx_persons_menu_item_title_befriend"><![CDATA[Add friend]]></string>
+    <string name="_bx_persons_menu_item_title_befriend_sent"><![CDATA[Add friend (requested)]]></string>
+    <string name="_bx_persons_menu_item_title_befriend_confirm"><![CDATA[Accept friend request]]></string>
     <string name="_bx_persons_menu_item_title_system_unfriend"><![CDATA[Unfriend]]></string>
     <string name="_bx_persons_menu_item_title_system_unfriend"><![CDATA[Unfriend]]></string>
     <string name="_bx_persons_menu_item_title_unfriend"><![CDATA[Unfriend]]></string>
     <string name="_bx_persons_menu_item_title_unfriend"><![CDATA[Unfriend]]></string>
+    <string name="_bx_persons_menu_item_title_unfriend_cancel_request"><![CDATA[Cancel friend request]]></string>
+    <string name="_bx_persons_menu_item_title_unfriend_reject_request"><![CDATA[Reject friend request]]></string>
     <string name="_bx_persons_menu_item_title_system_subscribe"><![CDATA[Subscribe]]></string>
     <string name="_bx_persons_menu_item_title_system_subscribe"><![CDATA[Subscribe]]></string>
     <string name="_bx_persons_menu_item_title_subscribe"><![CDATA[Subscribe]]></string>
     <string name="_bx_persons_menu_item_title_subscribe"><![CDATA[Subscribe]]></string>
     <string name="_bx_persons_menu_item_title_system_unsubscribe"><![CDATA[Unsubscribe]]></string>
     <string name="_bx_persons_menu_item_title_system_unsubscribe"><![CDATA[Unsubscribe]]></string>
     <string name="_bx_persons_menu_item_title_unsubscribe"><![CDATA[Unsubscribe]]></string>
     <string name="_bx_persons_menu_item_title_unsubscribe"><![CDATA[Unsubscribe]]></string>
+    <string name="_bx_persons_menu_item_title_system_more_actions"><![CDATA[More Actions]]></string>
+    <string name="_bx_persons_menu_item_title_more_actions"><![CDATA[]]></string>
 
 
 	<string name="_bx_persons_txt_error_profile_creation"><![CDATA[Profile creation failed]]></string>
 	<string name="_bx_persons_txt_error_profile_creation"><![CDATA[Profile creation failed]]></string>
 	<string name="_bx_persons_txt_error_profile_update"><![CDATA[Profile update failed]]></string>
 	<string name="_bx_persons_txt_error_profile_update"><![CDATA[Profile update failed]]></string>

+ 1 - 1
modules/boonex/persons/install/sql/disable.sql

@@ -31,7 +31,7 @@ DELETE FROM `sys_pages_blocks` WHERE `module` = 'bx_persons' OR `object` IN('bx_
 
 
 DELETE FROM `sys_objects_menu` WHERE `module` = 'bx_persons';
 DELETE FROM `sys_objects_menu` WHERE `module` = 'bx_persons';
 DELETE FROM `sys_menu_sets` WHERE `module` = 'bx_persons';
 DELETE FROM `sys_menu_sets` WHERE `module` = 'bx_persons';
-DELETE FROM `sys_menu_items` WHERE `module` = 'bx_persons' OR `set_name` IN('bx_persons_view', 'bx_persons_view_submenu');
+DELETE FROM `sys_menu_items` WHERE `module` = 'bx_persons' OR `set_name` IN('bx_persons_view_submenu', 'bx_persons_view_actions', 'bx_persons_view_actions_more');
 
 
 -- ACL
 -- ACL
 
 

+ 25 - 13
modules/boonex/persons/install/sql/enable.sql

@@ -63,13 +63,13 @@ INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbo
 -- Dumping data for 'bx_persons_view_profile' page
 -- Dumping data for 'bx_persons_view_profile' page
 --
 --
 INSERT INTO `sys_objects_page`(`object`, `uri`, `title_system`, `title`, `module`, `layout_id`, `visible_for_levels`, `visible_for_levels_editable`, `url`, `meta_description`, `meta_keywords`, `meta_robots`, `cache_lifetime`, `cache_editable`, `deletable`, `override_class_name`, `override_class_file`) VALUES 
 INSERT INTO `sys_objects_page`(`object`, `uri`, `title_system`, `title`, `module`, `layout_id`, `visible_for_levels`, `visible_for_levels_editable`, `url`, `meta_description`, `meta_keywords`, `meta_robots`, `cache_lifetime`, `cache_editable`, `deletable`, `override_class_name`, `override_class_file`) VALUES 
-('bx_persons_view_profile', 'view-persons-profile', '_bx_persons_page_title_sys_view_profile', '_bx_persons_page_title_view_profile', 'bx_persons', 9, 2147483647, 1, 'page.php?i=view-persons-profile', '', '', '', 0, 1, 0, 'BxPersonsPageProfile', 'modules/boonex/persons/classes/BxPersonsPageProfile.php');
+('bx_persons_view_profile', 'view-persons-profile', '_bx_persons_page_title_sys_view_profile', '_bx_persons_page_title_view_profile', 'bx_persons', 10, 2147483647, 1, 'page.php?i=view-persons-profile', '', '', '', 0, 1, 0, 'BxPersonsPageProfile', 'modules/boonex/persons/classes/BxPersonsPageProfile.php');
 
 
 INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
 INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
-('bx_persons_view_profile', 3, 'bx_persons', '_bx_persons_page_block_title_profile_friends', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:10:\"bx_persons\";s:6:\"method\";s:15:\"profile_friends\";}', 0, 0, 0),
 ('bx_persons_view_profile', 1, 'bx_persons', '_bx_persons_page_block_title_profile_cover', 3, 2147483647, 'service', 'a:2:{s:6:\"module\";s:10:\"bx_persons\";s:6:\"method\";s:13:\"profile_cover\";}', 0, 0, 0),
 ('bx_persons_view_profile', 1, 'bx_persons', '_bx_persons_page_block_title_profile_cover', 3, 2147483647, 'service', 'a:2:{s:6:\"module\";s:10:\"bx_persons\";s:6:\"method\";s:13:\"profile_cover\";}', 0, 0, 0),
 ('bx_persons_view_profile', 1, 'bx_persons', '_bx_persons_page_block_title_profile_actions', 3, 2147483647, 'service', 'a:2:{s:6:\"module\";s:10:\"bx_persons\";s:6:\"method\";s:15:\"profile_actions\";}', 0, 0, 1),
 ('bx_persons_view_profile', 1, 'bx_persons', '_bx_persons_page_block_title_profile_actions', 3, 2147483647, 'service', 'a:2:{s:6:\"module\";s:10:\"bx_persons\";s:6:\"method\";s:15:\"profile_actions\";}', 0, 0, 1),
-('bx_persons_view_profile', 2, 'bx_persons', '_bx_persons_page_block_title_profile_info', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:10:\"bx_persons\";s:6:\"method\";s:12:\"profile_info\";}', 0, 0, 0);
+('bx_persons_view_profile', 2, 'bx_persons', '_bx_persons_page_block_title_profile_info', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:10:\"bx_persons\";s:6:\"method\";s:12:\"profile_info\";}', 0, 0, 0),
+('bx_persons_view_profile', 3, 'bx_persons', '_bx_persons_page_block_title_profile_friends', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:10:\"bx_persons\";s:6:\"method\";s:15:\"profile_friends\";}', 0, 0, 0);
 
 
 --
 --
 -- Dumping data for 'bx_persons_edit_profile' page
 -- Dumping data for 'bx_persons_edit_profile' page
@@ -125,22 +125,34 @@ INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `tit
 
 
 
 
 --
 --
--- Dumping data for 'bx_persons_view' menu
+-- Dumping data for 'bx_persons_view_actions' menu
 --
 --
 INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
 INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
-('bx_persons_view', '_bx_persons_menu_title_view_person', 'bx_persons_view', 'bx_persons', 9, 0, 1, 'BxPersonsMenuViewPerson', 'modules/boonex/persons/classes/BxPersonsMenuViewPerson.php');
+('bx_persons_view_actions', '_bx_persons_menu_title_view_person_actions', 'bx_persons_view_actions', 'bx_persons', 9, 0, 1, 'BxPersonsMenuViewPerson', 'modules/boonex/persons/classes/BxPersonsMenuViewPerson.php');
 
 
 INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
 INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
-('bx_persons_view', 'bx_persons', '_bx_persons_menu_set_title_view_person', 0);
+('bx_persons_view_actions', 'bx_persons', '_bx_persons_menu_set_title_view_person_actions', 0);
 
 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
-('bx_persons_view', 'bx_persons', 'profile-friend-add', '_bx_persons_menu_item_title_system_befriend', '_bx_persons_menu_item_title_befriend', 'javascript:void(0)', 'bx_conn_action(\'sys_profiles_friends\', \'add\', \'{profile_id}\')', '', 'plus', '', 2147483647, 1, 0, 0),
-('bx_persons_view', 'bx_persons', 'profile-friend-remove', '_bx_persons_menu_item_title_system_unfriend', '_bx_persons_menu_item_title_unfriend', 'javascript:void(0)', 'bx_conn_action(\'sys_profiles_friends\', \'remove\', \'{profile_id}\', true)', '', 'plus-circle', '', 2147483647, 1, 0, 1),
-('bx_persons_view', 'bx_persons', 'profile-subscribe-add', '_bx_persons_menu_item_title_system_subscribe', '_bx_persons_menu_item_title_subscribe', 'javascript:void(0)', 'bx_conn_action(\'sys_profiles_subscriptions\', \'add\', \'{profile_id}\')', '', 'check', '', 2147483647, 1, 0, 2),
-('bx_persons_view', 'bx_persons', 'profile-subscribe-remove', '_bx_persons_menu_item_title_system_unsubscribe', '_bx_persons_menu_item_title_unsubscribe', 'javascript:void(0)', 'bx_conn_action(\'sys_profiles_subscriptions\', \'remove\', \'{profile_id}\')', '', 'check-circle', '', 2147483647, 1, 0, 3),
-('bx_persons_view', 'bx_persons', 'view-persons-profile', '_bx_persons_menu_item_title_system_view_person', '_bx_persons_menu_item_title_view_person', 'page.php?i=view-persons-profile&id={content_id}', '', '', 'user', '', 2147483647, 1, 0, 4),
-('bx_persons_view', 'bx_persons', 'edit-persons-profile', '_bx_persons_menu_item_title_system_edit_person', '_bx_persons_menu_item_title_edit_person', 'page.php?i=edit-persons-profile&id={content_id}', '', '', 'pencil', '', 2147483647, 1, 0, 5),
-('bx_persons_view', 'bx_persons', 'delete-persons-profile', '_bx_persons_menu_item_title_system_delete_person', '_bx_persons_menu_item_title_delete_person', 'page.php?i=delete-persons-profile&id={content_id}', '', '', 'remove', '', 2147483647, 1, 0, 6);
+('bx_persons_view_actions', 'bx_persons', 'profile-friend-add', '_bx_persons_menu_item_title_system_befriend', '{title_add_friend}', 'javascript:void(0)', 'bx_conn_action(this, \'sys_profiles_friends\', \'add\', \'{profile_id}\')', '', 'plus', '', 2147483647, 1, 0, 10),
+('bx_persons_view_actions', 'bx_persons', 'profile-subscribe-add', '_bx_persons_menu_item_title_system_subscribe', '_bx_persons_menu_item_title_subscribe', 'javascript:void(0)', 'bx_conn_action(this, \'sys_profiles_subscriptions\', \'add\', \'{profile_id}\')', '', 'check', '', 2147483647, 1, 0, 20),
+('bx_persons_view_actions', 'bx_persons', 'profile-actions-more', '_bx_persons_menu_item_title_system_more_actions', '_bx_persons_menu_item_title_more_actions', 'javascript:void(0)', 'bx_menu_popup(''bx_persons_view_actions_more'', this, {}, {profile_id:{profile_id}});', '', 'cog', 'bx_persons_view_actions_more', 2147483647, 1, 0, 30);
+
+--
+-- Dumping data for 'bx_persons_view_actions_more' menu
+--
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_persons_view_actions_more', '_bx_persons_menu_title_view_person_actions_more', 'bx_persons_view_actions_more', 'bx_persons', 6, 0, 1, 'BxPersonsMenuViewPerson', 'modules/boonex/persons/classes/BxPersonsMenuViewPerson.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_persons_view_actions_more', 'bx_persons', '_bx_persons_menu_set_title_view_person_actions_more', 0);
+
+INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
+('bx_persons_view_actions_more', 'bx_persons', 'profile-friend-remove', '_bx_persons_menu_item_title_system_unfriend', '{title_remove_friend}', 'javascript:void(0)', 'bx_conn_action(this, \'sys_profiles_friends\', \'remove\', \'{profile_id}\')', '', 'minus', '', 2147483647, 1, 0, 10),
+('bx_persons_view_actions_more', 'bx_persons', 'profile-subscribe-remove', '_bx_persons_menu_item_title_system_unsubscribe', '_bx_persons_menu_item_title_unsubscribe', 'javascript:void(0)', 'bx_conn_action(this, \'sys_profiles_subscriptions\', \'remove\', \'{profile_id}\')', '', 'check', '', 2147483647, 1, 0, 20),
+('bx_persons_view_actions_more', 'bx_persons', 'edit-persons-profile', '_bx_persons_menu_item_title_system_edit_person', '_bx_persons_menu_item_title_edit_person', 'page.php?i=edit-persons-profile&id={content_id}', '', '', 'pencil', '', 2147483647, 1, 0, 30),
+('bx_persons_view_actions_more', 'bx_persons', 'delete-persons-profile', '_bx_persons_menu_item_title_system_delete_person', '_bx_persons_menu_item_title_delete_person', 'page.php?i=delete-persons-profile&id={content_id}', '', '', 'remove', '', 2147483647, 1, 0, 40);
+
 
 
 --
 --
 -- Dumping data for 'bx_persons_view_submenu' menu
 -- Dumping data for 'bx_persons_view_submenu' menu

+ 1 - 1
modules/boonex/persons/template/cover.html

@@ -1,6 +1,6 @@
 
 
 <div class="bx-persons-cover">
 <div class="bx-persons-cover">
-    <a class="bx-persons-cover-image bx-def-round-corners" href="__cover_href__" onclick="bx_persons_popup('bx-persons-popup-cover', '__cover_url__')" style="background-image:url(__cover_url__)">&nbsp;</a>
+    <a class="bx-persons-cover-image bx-def-round-corners bx-def-border" href="__cover_href__" onclick="bx_persons_popup('bx-persons-popup-cover', '__cover_url__')" style="background-image:url(__cover_url__)">&nbsp;</a>
     <div class="bx-persons-cover-info bx-def-padding">
     <div class="bx-persons-cover-info bx-def-padding">
         <a href="__picture_href__" onclick="bx_persons_popup('bx-persons-popup-picture', '__picture_url__')"><img class="bx-def-margin-right bx-def-round-corners" src="__picture_preview_url__" /></a>
         <a href="__picture_href__" onclick="bx_persons_popup('bx-persons-popup-picture', '__picture_url__')"><img class="bx-def-margin-right bx-def-round-corners" src="__picture_preview_url__" /></a>
         <h1 class="bx-def-margin-sec-bottom bx-def-margin-sec-top">__title__</h1>
         <h1 class="bx-def-margin-sec-bottom bx-def-margin-sec-top">__title__</h1>

+ 3 - 1
modules/boonex/persons/template/css/main.css

@@ -49,17 +49,19 @@
     box-sizing: border-box;
     box-sizing: border-box;
 }
 }
 
 
+a.bx-persons-cover-image:hover,
 .bx-persons-cover-image {
 .bx-persons-cover-image {
     position:absolute;
     position:absolute;
     width:100%;
     width:100%;
     height:100%;
     height:100%;
+    text-decoration:none;
 
 
     background: url(../images/no-picture-cover.png) no-repeat center center; 
     background: url(../images/no-picture-cover.png) no-repeat center center; 
     -webkit-background-size: cover;
     -webkit-background-size: cover;
     -moz-background-size: cover;
     -moz-background-size: cover;
     -o-background-size: cover;
     -o-background-size: cover;
     background-size: cover;
     background-size: cover;
-    background-color: #333;
+    background-color: #eee;
 }
 }
 
 
 .bx-persons-cover-info {
 .bx-persons-cover-info {

+ 1 - 1
modules/boonex/timeline/install/sql/disable.sql

@@ -19,7 +19,7 @@ DELETE FROM `sys_options_types` WHERE `id` = @iTypeId;
 
 
 -- UPLOADERS
 -- UPLOADERS
 DELETE FROM `sys_objects_uploader` WHERE `object` = 'bx_timeline_simple';
 DELETE FROM `sys_objects_uploader` WHERE `object` = 'bx_timeline_simple';
-DEKETE FROM `sys_objects_storage` WHERE `object` IN ('bx_timeline_photos', 'bx_timeline_photos_preview');
+DELETE FROM `sys_objects_storage` WHERE `object` IN ('bx_timeline_photos', 'bx_timeline_photos_preview');
 DELETE FROM `sys_objects_transcoder_images` WHERE `object` IN ('bx_timeline_photos_preview');
 DELETE FROM `sys_objects_transcoder_images` WHERE `object` IN ('bx_timeline_photos_preview');
 DELETE FROM `sys_transcoder_images_filters` WHERE `transcoder_object` IN ('bx_timeline_photos_preview');
 DELETE FROM `sys_transcoder_images_filters` WHERE `transcoder_object` IN ('bx_timeline_photos_preview');
 
 

+ 3 - 3
modules/boonex/timeline/install/sql/enable.sql

@@ -13,11 +13,11 @@ INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title`, `designb
 ('bx_timeline_account', 1, 'bx_timeline', '_sys_page_block_title_account_settings_menu', 13, 2147483647, 'menu', 'sys_account_settings', 1, 1, 1),
 ('bx_timeline_account', 1, 'bx_timeline', '_sys_page_block_title_account_settings_menu', 13, 2147483647, 'menu', 'sys_account_settings', 1, 1, 1),
 ('bx_timeline_account', 2, 'bx_timeline', '_bx_timeline_page_block_title_view_account', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_view_account";}', 0, 1, 1);
 ('bx_timeline_account', 2, 'bx_timeline', '_bx_timeline_page_block_title_view_account', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_view_account";}', 0, 1, 1);
 
 
-SET @iPBCellProfile = 1;
+SET @iPBCellProfile = 4;
 SET @iPBOrderProfile = (SELECT MAX(`order`) FROM `sys_pages_blocks` WHERE `object`='bx_persons_view_profile' AND `cell_id` = @iPBCellProfile LIMIT 1);
 SET @iPBOrderProfile = (SELECT MAX(`order`) FROM `sys_pages_blocks` WHERE `object`='bx_persons_view_profile' AND `cell_id` = @iPBCellProfile LIMIT 1);
 INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES
 INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES
-('bx_persons_view_profile', @iPBCellProfile, 'bx_timeline', '_bx_timeline_page_block_title_post_profile', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_post_profile";}', 0, 0, @iPBOrderProfile + 1),
-('bx_persons_view_profile', @iPBCellProfile, 'bx_timeline', '_bx_timeline_page_block_title_view_profile', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_view_profile";}', 0, 1, @iPBOrderProfile + 2);
+('bx_persons_view_profile', @iPBCellProfile, 'bx_timeline', '_bx_timeline_page_block_title_post_profile', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_post_profile";}', 0, 0, IFNULL(@iPBOrderProfile, 0) + 1),
+('bx_persons_view_profile', @iPBCellProfile, 'bx_timeline', '_bx_timeline_page_block_title_view_profile', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_view_profile";}', 0, 1, IFNULL(@iPBOrderProfile, 0) + 2);
 
 
 
 
 -- MENUS
 -- MENUS

+ 1 - 1
template/_row_1_column.html

@@ -1,4 +1,4 @@
-    <div class="bx-layout-row">
+    <div class="bx-layout-row bx-clearfix">
         <div class="bx-layout-col bx-layout-1-column-column1">
         <div class="bx-layout-col bx-layout-1-column-column1">
             <div class="bx-layout-cell" id="bx-layout-cell-1">
             <div class="bx-layout-cell" id="bx-layout-cell-1">
                 __cell_1__
                 __cell_1__

+ 40 - 7
template/css/common.css

@@ -162,11 +162,10 @@ blockquote {
     margin-right:auto;
     margin-right:auto;
     margin-left:auto;
     margin-left:auto;
 
 
-    background-color:#F8F8F8;
-    border:7px solid #e2e2e2;
+    background-color:rgba(200, 200, 200, 0.3);
 
 
     text-align:center;
     text-align:center;
-    color:#CCCCCC;
+    color:#fff;
     font-weight:bold;
     font-weight:bold;
     font-size:14px;
     font-size:14px;
     padding:10px;
     padding:10px;
@@ -201,6 +200,10 @@ blockquote {
     margin-left:5px;
     margin-left:5px;
     vertical-align:middle;
     vertical-align:middle;
 }
 }
+.bx-btn .bx-loading-ajax-btn {
+    margin-top:8px;
+    vertical-align:top;
+}
 
 
 /* --------------- button */
 /* --------------- button */
 
 
@@ -249,15 +252,12 @@ blockquote {
 .bx-btn:first-child {
 .bx-btn:first-child {
     margin-left:0;
     margin-left:0;
 }
 }
-.bx-btn img,
-.bx-btn i.sys-icon {
-    margin-right:3px;
-}
 .bx-btn img {
 .bx-btn img {
     width:16px;
     width:16px;
     height:16px;
     height:16px;
 }
 }
 .bx-btn u {
 .bx-btn u {
+    margin-left:2px;
     text-decoration:none;
     text-decoration:none;
 }
 }
 .bx-btn .sys-icon {
 .bx-btn .sys-icon {
@@ -363,6 +363,39 @@ input.bx-btn {
     line-height:16px; 
     line-height:16px; 
 }
 }
 
 
+.bx-btn-group .bx-btn {
+    margin-left:0px;
+    margin-right:0px;
+}
+
+.bx-btn-group .bx-btn + .bx-btn {
+    border-left:none;
+}
+
+.bx-btn-group .bx-btn + .bx-btn:not(:last-child) {
+	border-radius:0px;
+	-moz-border-radius:0px;
+	-webkit-border-radius:0px;
+}
+
+.bx-btn-group .bx-btn:first-child {
+    -webkit-border-top-right-radius: 0px;
+    -webkit-border-bottom-right-radius: 0px;
+    -moz-border-radius-topright: 0px;
+    -moz-border-radius-bottomright: 0px;
+    border-top-right-radius: 0px;
+    border-bottom-right-radius: 0px;
+}
+
+.bx-btn-group .bx-btn:last-child {
+    -webkit-border-top-left-radius: 0px;
+    -webkit-border-bottom-left-radius: 0px;
+    -moz-border-radius-topleft: 0px;
+    -moz-border-radius-bottomleft: 0px;
+    border-top-left-radius: 0px;
+    border-bottom-left-radius: 0px;
+}
+
 /* --------------- button at the end of cut string */
 /* --------------- button at the end of cut string */
 
 
 .bx-str-limit {
 .bx-str-limit {

+ 3 - 2
template/css/general.css

@@ -6,8 +6,9 @@
 /* --------------- toolbar */
 /* --------------- toolbar */
 
 
 #bx-toolbar {
 #bx-toolbar {
-    position: fixed;
+    position:fixed;
     width:100%;
     width:100%;
+    height:50px;
     min-height:50px;
     min-height:50px;
     z-index:900;
     z-index:900;
 
 
@@ -46,7 +47,7 @@
 
 
 #bx-logo-container {
 #bx-logo-container {
     min-height: 44px;
     min-height: 44px;
-    padding-top: 6px; 
+    padding-top: 8px; 
     vertical-align: middle;
     vertical-align: middle;
     text-align: center; 
     text-align: center; 
 }
 }

+ 9 - 0
template/css/media-phone.css

@@ -23,6 +23,9 @@
     max-width:300px !important;
     max-width:300px !important;
     overflow:hidden !important;
     overflow:hidden !important;
 }
 }
+.bx-def-constraint-img img {
+    height:auto !important;
+}
 .bx-def-constraint-pre pre {
 .bx-def-constraint-pre pre {
     overflow:scroll !important;
     overflow:scroll !important;
 }
 }
@@ -51,4 +54,10 @@
     padding:0 !important;
     padding:0 !important;
 }
 }
 
 
+/* menu.css */
+
+ul.bx-menu-toolbar li a span {
+    display:none;
+}
+
 } /* @media end */
 } /* @media end */

+ 10 - 0
template/css/menu.css

@@ -218,6 +218,16 @@ ul.bx-menu-toolbar li a {
     text-decoration:none;
     text-decoration:none;
 }
 }
 
 
+ul.bx-menu-toolbar li a .sys-icon, 
+ul.bx-menu-toolbar li a img,
+ul.bx-menu-toolbar li a span {
+    vertical-align:middle;
+    margin:0 5px 0 5px;
+}
+ul.bx-menu-toolbar li a span {
+    margin-right:0px;
+}
+
 ul.bx-menu-toolbar li:first-child a {
 ul.bx-menu-toolbar li:first-child a {
     margin-left:0;
     margin-left:0;
 }
 }

BIN
template/images/layout_bottom_area_2_columns.png


BIN
template/images/layout_topbottom_area_2_columns.png


+ 1 - 1
template/layout_2_columns.html

@@ -1,6 +1,6 @@
 <!-- layout 2 columns [ start ] -->
 <!-- layout 2 columns [ start ] -->
 <div class="bx-layout-wrapper bx-layout-2-columns">
 <div class="bx-layout-wrapper bx-layout-2-columns">
-    <div class="bx-layout-row">
+    <div class="bx-layout-row bx-clearfix">
         <div class="bx-layout-col bx-layout-2-columns-column1">
         <div class="bx-layout-col bx-layout-2-columns-column1">
             <div class="bx-layout-cell bx-def-padding-sec-right" id="bx-layout-cell-1">
             <div class="bx-layout-cell bx-def-padding-sec-right" id="bx-layout-cell-1">
                 __cell_1__
                 __cell_1__

+ 1 - 1
template/layout_3_columns.html

@@ -1,6 +1,6 @@
 <!-- layout 3 columns [ start ] -->
 <!-- layout 3 columns [ start ] -->
 <div class="bx-layout-wrapper bx-layout-3-columns">
 <div class="bx-layout-wrapper bx-layout-3-columns">
-    <div class="bx-layout-row">
+    <div class="bx-layout-row bx-clearfix">
         <div class="bx-layout-col bx-layout-3-columns-column1">
         <div class="bx-layout-col bx-layout-3-columns-column1">
             <div class="bx-layout-cell bx-def-padding-sec-right" id="bx-layout-cell-1">
             <div class="bx-layout-cell bx-def-padding-sec-right" id="bx-layout-cell-1">
                 __cell_1__
                 __cell_1__

+ 1 - 1
template/layout_bar_left.html

@@ -1,6 +1,6 @@
 <!-- layout bar left [ start ] -->
 <!-- layout bar left [ start ] -->
 <div class="bx-layout-wrapper bx-layout-bar-left">
 <div class="bx-layout-wrapper bx-layout-bar-left">
-    <div class="bx-layout-row">
+    <div class="bx-layout-row bx-clearfix">
         <div class="bx-layout-col bx-layout-bar-left-bar">
         <div class="bx-layout-col bx-layout-bar-left-bar">
             <div class="bx-layout-cell bx-def-padding-sec-right" id="bx-layout-cell-1">
             <div class="bx-layout-cell bx-def-padding-sec-right" id="bx-layout-cell-1">
                 __cell_1__
                 __cell_1__

+ 1 - 1
template/layout_bar_right.html

@@ -1,6 +1,6 @@
 <!-- layout bar right [ start ] -->
 <!-- layout bar right [ start ] -->
 <div class="bx-layout-wrapper bx-layout-bar-right">
 <div class="bx-layout-wrapper bx-layout-bar-right">
-    <div class="bx-layout-row">
+    <div class="bx-layout-row bx-clearfix">
         <div class="bx-layout-col bx-layout-bar-right-content">
         <div class="bx-layout-col bx-layout-bar-right-content">
             <div class="bx-layout-cell bx-def-padding-sec-right" id="bx-layout-cell-1">
             <div class="bx-layout-cell bx-def-padding-sec-right" id="bx-layout-cell-1">
                 __cell_1__
                 __cell_1__

+ 20 - 0
template/layout_bottom_area_2_columns.html

@@ -0,0 +1,20 @@
+<!-- layout top area 2 columns [ start ] -->
+<div class="bx-layout-wrapper bx-layout-top-area-2-columns">
+
+    <div class="bx-layout-row bx-clearfix">
+        <div class="bx-layout-col bx-layout-2-columns-column1">
+            <div class="bx-layout-cell bx-def-padding-sec-right" id="bx-layout-cell-2">
+                __cell_2__
+            </div>
+        </div>
+        <div class="bx-layout-col bx-layout-2-columns-column2">
+            <div class="bx-layout-cell bx-def-padding-sec-left" id="bx-layout-cell-3">
+                __cell_3__
+            </div>
+        </div>
+    </div>
+
+    <bx_include_auto:_row_1_column.html />
+
+</div>
+<!-- layout top area 2 columns [  end  ] -->

+ 1 - 1
template/layout_top_area_2_columns.html

@@ -3,7 +3,7 @@
 
 
     <bx_include_auto:_row_1_column.html />
     <bx_include_auto:_row_1_column.html />
 
 
-    <div class="bx-layout-row">
+    <div class="bx-layout-row bx-clearfix">
         <div class="bx-layout-col bx-layout-2-columns-column1">
         <div class="bx-layout-col bx-layout-2-columns-column1">
             <div class="bx-layout-cell bx-def-padding-sec-right" id="bx-layout-cell-2">
             <div class="bx-layout-cell bx-def-padding-sec-right" id="bx-layout-cell-2">
                 __cell_2__
                 __cell_2__

+ 1 - 1
template/layout_top_area_3_columns.html

@@ -3,7 +3,7 @@
 
 
     <bx_include_auto:_row_1_column.html />
     <bx_include_auto:_row_1_column.html />
 
 
-    <div class="bx-layout-row">
+    <div class="bx-layout-row bx-clearfix">
         <div class="bx-layout-col bx-layout-3-columns-column1">
         <div class="bx-layout-col bx-layout-3-columns-column1">
             <div class="bx-layout-cell bx-def-padding-sec-right" id="bx-layout-cell-2">
             <div class="bx-layout-cell bx-def-padding-sec-right" id="bx-layout-cell-2">
                 __cell_2__
                 __cell_2__

+ 1 - 1
template/layout_top_area_bar_left.html

@@ -3,7 +3,7 @@
 
 
     <bx_include_auto:_row_1_column.html />
     <bx_include_auto:_row_1_column.html />
 
 
-    <div class="bx-layout-row">
+    <div class="bx-layout-row bx-clearfix">
         <div class="bx-layout-col bx-layout-bar-left-bar">
         <div class="bx-layout-col bx-layout-bar-left-bar">
             <div class="bx-layout-cell bx-def-padding-sec-right" id="bx-layout-cell-2">
             <div class="bx-layout-cell bx-def-padding-sec-right" id="bx-layout-cell-2">
                 __cell_2__
                 __cell_2__

+ 1 - 1
template/layout_top_area_bar_right.html

@@ -3,7 +3,7 @@
 
 
     <bx_include_auto:_row_1_column.html />
     <bx_include_auto:_row_1_column.html />
 
 
-    <div class="bx-layout-row">
+    <div class="bx-layout-row bx-clearfix">
         <div class="bx-layout-col bx-layout-bar-right-content">
         <div class="bx-layout-col bx-layout-bar-right-content">
             <div class="bx-layout-cell bx-def-padding-sec-right" id="bx-layout-cell-2">
             <div class="bx-layout-cell bx-def-padding-sec-right" id="bx-layout-cell-2">
                 __cell_2__
                 __cell_2__

+ 28 - 0
template/layout_topbottom_area_2_columns.html

@@ -0,0 +1,28 @@
+<!-- layout top area 2 columns [ start ] -->
+<div class="bx-layout-wrapper bx-layout-top-area-2-columns">
+
+    <bx_include_auto:_row_1_column.html />
+
+    <div class="bx-layout-row bx-clearfix">
+        <div class="bx-layout-col bx-layout-2-columns-column1">
+            <div class="bx-layout-cell bx-def-padding-sec-right" id="bx-layout-cell-2">
+                __cell_2__
+            </div>
+        </div>
+        <div class="bx-layout-col bx-layout-2-columns-column2">
+            <div class="bx-layout-cell bx-def-padding-sec-left" id="bx-layout-cell-3">
+                __cell_3__
+            </div>
+        </div>
+    </div>
+
+    <div class="bx-layout-row bx-clearfix">
+        <div class="bx-layout-col bx-layout-1-column-column1">
+            <div class="bx-layout-cell" id="bx-layout-cell-4">
+                __cell_4__
+            </div>
+        </div>
+    </div>
+
+</div>
+<!-- layout top area 2 columns [  end  ] -->

+ 1 - 1
template/menu_toolbar.html

@@ -1,7 +1,7 @@
 <ul class="bx-menu-toolbar bx-menu-object-__object__">
 <ul class="bx-menu-toolbar bx-menu-object-__object__">
     <bx_repeat:menu_items>
     <bx_repeat:menu_items>
         <li class="__class_add__">
         <li class="__class_add__">
-            <a href="__link__" target="__target__" onclick="__onclick__" class="bx-def-round-corners bx-def-margin-sec-left"><bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon><bx_if:image><img class="bx-def-icon bx-def-icon-size" style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>__title__</a>
+            <a href="__link__" target="__target__" onclick="__onclick__" class="bx-def-round-corners bx-def-margin-sec-left"><bx_if:title><span>__title__</span></bx_if:title><bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon><bx_if:image><img class="bx-def-icon bx-def-icon-size" style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image></a>
         </li>
         </li>
     </bx_repeat:menu_items>
     </bx_repeat:menu_items>
 </ul>
 </ul>

+ 1 - 1
template/messageBox.html

@@ -1,5 +1,5 @@
 <div class="bx-msg-box-container bx-def-margin-top bx-def-margin-bottom" id="__id__">
 <div class="bx-msg-box-container bx-def-margin-top bx-def-margin-bottom" id="__id__">
-    <div class="bx-msg-box bx-def-padding">
+    <div class="bx-msg-box bx-def-padding bx-def-round-corners">
         __msgText__
         __msgText__
     </div>
     </div>
     <bx_if:timer>
     <bx_if:timer>

+ 1 - 1
template/paginate.html

@@ -1,6 +1,6 @@
 <div class="bx-paginate __paginate_class__">
 <div class="bx-paginate __paginate_class__">
 
 
-    <div class="bx-paginate-btns bx-def-margin-sec-left">
+    <div class="bx-paginate-btns bx-def-margin-sec-left bx-btn-group">
         __btn_prev__
         __btn_prev__
         __btn_next__
         __btn_next__
     </div>
     </div>

+ 7 - 2
template/scripts/BxBaseMenu.php

@@ -71,13 +71,14 @@ class BxBaseMenu extends BxDolMenu {
             if (isset($a['visible_for_levels']) && !$this->_isVisible($a))
             if (isset($a['visible_for_levels']) && !$this->_isVisible($a))
                 continue;
                 continue;
 
 
+            $a['title'] = _t($a['title']);
+
             $a = $this->_replaceMarkers($a);
             $a = $this->_replaceMarkers($a);
 
 
             list ($sIcon, $sIconUrl) = $this->_getMenuIcon($a);
             list ($sIcon, $sIconUrl) = $this->_getMenuIcon($a);
 
 
             $a['class_add'] = $this->_isSelected($a) ? 'bx-menu-tab-active' : '';
             $a['class_add'] = $this->_isSelected($a) ? 'bx-menu-tab-active' : '';
-            $a['link'] = isset($a['link']) ? $this->_oPermalinks->permalink($a['link']) : 'javascript:void(0);';
-            $a['title'] = _t($a['title']);
+            $a['link'] = isset($a['link']) ? $this->_oPermalinks->permalink($a['link']) : 'javascript:void(0);';            
             $a['title_attr'] = bx_html_attribute($a['title']);
             $a['title_attr'] = bx_html_attribute($a['title']);
             $a['bx_if:image'] = array (
             $a['bx_if:image'] = array (
                 'condition' => (bool)$sIconUrl,
                 'condition' => (bool)$sIconUrl,
@@ -87,6 +88,10 @@ class BxBaseMenu extends BxDolMenu {
                 'condition' => (bool)$sIcon,
                 'condition' => (bool)$sIcon,
                 'content' => array('icon' => $sIcon), 
                 'content' => array('icon' => $sIcon), 
             );
             );
+            $a['bx_if:title'] = array (
+                'condition' => (bool)$a['title'],
+                'content' => array('title' => $a['title']), 
+            );
 
 
             $aRet[] = $a;
             $aRet[] = $a;
         }
         }

+ 21 - 0
template/scripts/BxBasePage.php

@@ -33,6 +33,18 @@ class BxBasePage extends BxDolPage {
      */
      */
     public function getCode () {
     public function getCode () {
 
 
+        if (bx_get('dynamic') && ($iBlockId = (int)bx_get('pageBlock'))) {
+
+            if (!$this->_isVisiblePage($this->_aObject)) {
+                header('HTTP/1.0 403 Forbidden');
+                exit;
+            }
+            
+            header( 'Content-type:text/html;charset=utf-8' );
+            echo $this->_getBlockOnlyCode($iBlockId);
+            exit;
+        }
+
         if (!$this->_isVisiblePage($this->_aObject))
         if (!$this->_isVisiblePage($this->_aObject))
             return $this->_getPageAccessDeniedMsg ();
             return $this->_getPageAccessDeniedMsg ();
 
 
@@ -90,6 +102,15 @@ class BxBasePage extends BxDolPage {
         return $this->_oTemplate->parseHtmlByName($this->_aObject['template'], $aVars);
         return $this->_oTemplate->parseHtmlByName($this->_aObject['template'], $aVars);
     }
     }
 
 
+    /**
+     * Get one block code only.
+     * @return string
+     */
+    protected function _getBlockOnlyCode ($iBlockId) {
+        $aBlock = $this->_oQuery->getPageBlock((int)$iBlockId);
+        return $this->_getBlockCode($aBlock);
+    }
+
     /**
     /**
      * Get block code.
      * Get block code.
      * @return string
      * @return string