Просмотр исходного кода

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

# Conflicts:
#	modules/boonex/groups/install/langs/en.xml
#	modules/boonex/russian/data/langs/bx_groups/ru.xml
RomanL 7 лет назад
Родитель
Сommit
b802c0a63f
55 измененных файлов с 381 добавлено и 294 удалено
  1. 19 0
      inc/classes/BxDolMetatags.php
  2. 4 1
      inc/classes/BxDolProfileForms.php
  3. 2 0
      inc/classes/BxDolSearchExtendedQuery.php
  4. 4 4
      inc/classes/BxDolTranscoderQuery.php
  5. 2 2
      modules/base/general/classes/BxBaseModGeneralDb.php
  6. 31 6
      modules/base/general/template/css/main.css
  7. 14 0
      modules/base/groups/classes/BxBaseModGroupsMenuSnippetMeta.php
  8. 9 16
      modules/base/profile/template/css/main.css
  9. 4 3
      modules/base/profile/template/unit_meta_item.html
  10. 9 8
      modules/boonex/channels/install/sql/enable.sql
  11. 2 0
      modules/boonex/english/data/langs/system/en.xml
  12. 13 12
      modules/boonex/events/install/sql/enable.sql
  13. 1 1
      modules/boonex/groups/classes/BxGroupsSearchResult.php
  14. 12 10
      modules/boonex/groups/install/langs/en.xml
  15. 12 10
      modules/boonex/groups/install/sql/enable.sql
  16. 0 10
      modules/boonex/massmailer/template/images/icons/std-icon.svg
  17. 0 18
      modules/boonex/mobile_apps/install/langs/en.xml
  18. 0 30
      modules/boonex/mobile_apps/install/sql/enable.sql
  19. 0 26
      modules/boonex/mobile_apps/template/images/icons/std-icon.svg
  20. 2 2
      modules/boonex/nexus/classes/BxNexusAlerts.php
  21. 2 2
      modules/boonex/nexus/classes/BxNexusConfig.php
  22. 2 2
      modules/boonex/nexus/classes/BxNexusDb.php
  23. 9 9
      modules/boonex/nexus/classes/BxNexusModule.php
  24. 4 4
      modules/boonex/nexus/classes/BxNexusStudioPage.php
  25. 2 2
      modules/boonex/nexus/classes/BxNexusTemplate.php
  26. 9 9
      modules/boonex/nexus/install/config.php
  27. 2 2
      modules/boonex/nexus/install/installer.php
  28. 18 0
      modules/boonex/nexus/install/langs/en.xml
  29. 3 3
      modules/boonex/nexus/install/sql/disable.sql
  30. 30 0
      modules/boonex/nexus/install/sql/enable.sql
  31. 2 2
      modules/boonex/nexus/install/sql/install.sql
  32. 1 1
      modules/boonex/nexus/install/sql/uninstall.sql
  33. 0 0
      modules/boonex/nexus/js/pulltorefresh.min.js
  34. 1 1
      modules/boonex/nexus/request.php
  35. 7 0
      modules/boonex/nexus/template/images/icons/std-icon.svg
  36. 12 11
      modules/boonex/nexus/template/js.html
  37. 0 0
      modules/boonex/nexus/template/styles.html
  38. 15 14
      modules/boonex/organizations/install/sql/enable.sql
  39. 12 11
      modules/boonex/persons/install/sql/enable.sql
  40. 2 1
      modules/boonex/protean/data/template/system/css/default.less
  41. 3 0
      modules/boonex/protean/data/template/system/css/general.css
  42. 0 4
      modules/boonex/protean/data/template/system/css/menu.css
  43. 2 2
      modules/boonex/protean/install/sql/install.sql
  44. 0 19
      modules/boonex/quoteofday/template/manage_item.html
  45. 0 1
      modules/boonex/ribbons/template/snippet_view.html
  46. 12 10
      modules/boonex/russian/data/langs/bx_groups/ru.xml
  47. 2 0
      modules/boonex/russian/data/langs/system/ru.xml
  48. 11 10
      modules/boonex/spaces/install/sql/enable.sql
  49. 3 2
      modules/boonex/timeline/install/sql/install.sql
  50. 24 0
      scripts/delete_me.html
  51. 11 3
      template/scripts/BxBaseAccountForms.php
  52. 12 2
      template/scripts/BxBaseMenuUnitMeta.php
  53. 22 6
      template/scripts/BxBaseSearchExtended.php
  54. 4 1
      template/scripts/BxBaseSearchExtendedForm.php
  55. 2 1
      template/unit_meta_item.html

+ 19 - 0
inc/classes/BxDolMetatags.php

@@ -590,6 +590,25 @@ class BxDolMetatags extends BxDolFactory implements iBxDolFactoryObject
         );
     }
 
+    /**
+     * Parse address components into associative array with the following indexes:
+     * lat, lng, country, state, city, zip, street, street_number
+     */ 
+    public static function locationsParseComponents($aAdress, $sPrefix = '')
+    {
+        $aKeys = array('lat', 'lng', 'country', 'state', 'city', 'zip', 'street', 'street_number');
+
+        if($sPrefix)
+            $sPrefix .= '_';
+
+        $aRet = array();
+        $iAdress = count($aAdress);
+        for($i = 0; $i < $iAdress; $i++)
+            $aRet[$sPrefix . $aKeys[$i]] = $aAdress[$i];
+
+        return $aRet;
+    }
+
     /**
      * Parse google's formatted address components into array with the following indexes:
      * lat, lng, country, state, city, zip, street, street_number

+ 4 - 1
inc/classes/BxDolProfileForms.php

@@ -25,7 +25,10 @@ class BxDolProfileForms extends BxDolFactory
         if ($isPermalink)
             $sUrl = BxDolPermalinks::getInstance()->permalink($sUrl);
 
-        header('Location: ' . BX_DOL_URL_ROOT . $this->_replaceMarkers($sUrl, $aMarkers));
+        if(strncmp($sUrl, BX_DOL_URL_ROOT, strlen(BX_DOL_URL_ROOT)) !== 0)
+            $sUrl = BX_DOL_URL_ROOT . $sUrl;
+
+        header('Location: ' . $this->_replaceMarkers($sUrl, $aMarkers));
         exit;
     }
 

+ 2 - 0
inc/classes/BxDolSearchExtendedQuery.php

@@ -106,6 +106,8 @@ class BxDolSearchExtendedQuery extends BxDolDb
                     	'values_list_name' => $sList,
                     ));
                 }
+                else if(BxDolService::isSerializedService($aField['values']))
+                    $aFields[$iIndex]['values'] = BxDolService::callSerialized($aField['values']);
                 else
                     $aFields[$iIndex]['values'] = unserialize($aField['values']);
             }

+ 4 - 4
inc/classes/BxDolTranscoderQuery.php

@@ -80,7 +80,7 @@ class BxDolTranscoderQuery extends BxDolDb
 
     public function getFileIdByHandler ($mixedHandler)
     {
-        $sQuery = $this->prepare("SELECT `file_id` FROM {$this->_sTableFiles} WHERE `transcoder_object` = ? AND `handler` = ?", $this->_aObject['object'], $mixedHandler);
+        $sQuery = $this->prepare("SELECT `file_id` FROM {$this->_sTableFiles} WHERE `transcoder_object` = ? AND `handler` = ? LIMIT 1", $this->_aObject['object'], (string)$mixedHandler);
         return $this->getOne($sQuery);
     }
 
@@ -93,7 +93,7 @@ class BxDolTranscoderQuery extends BxDolDb
     public function updateAccessTime($mixedHandler)
     {
         $iTime = time();
-        $sQuery = $this->prepare("UPDATE {$this->_sTableFiles} SET `atime` = ? WHERE `transcoder_object` = ? AND `handler` = ?", $iTime, $this->_aObject['object'], $mixedHandler);
+        $sQuery = $this->prepare("UPDATE {$this->_sTableFiles} SET `atime` = ? WHERE `transcoder_object` = ? AND `handler` = ? LIMIT 1", $iTime, $this->_aObject['object'], (string)$mixedHandler);
         return $this->res($sQuery);
     }
 
@@ -284,7 +284,7 @@ class BxDolTranscoderQuery extends BxDolDb
 
     public function getTranscodedFileData($mixedHandler)
     {
-        $sQuery = $this->prepare("SELECT `data` FROM {$this->_sTableFiles} WHERE `transcoder_object` = ? AND `handler` = ?", $this->_aObject['object'], $mixedHandler);
+        $sQuery = $this->prepare("SELECT `data` FROM {$this->_sTableFiles} WHERE `transcoder_object` = ? AND `handler` = ? LIMIT 1", $this->_aObject['object'], (string)$mixedHandler);
         $s = $this->getOne($sQuery);
         if (!$s)
             return false;
@@ -294,7 +294,7 @@ class BxDolTranscoderQuery extends BxDolDb
     public function updateTranscodedFileData($mixedHandler, $mixedData)
     {
         $sData = $mixedData ? serialize($mixedData) : '';
-        $sQuery = $this->prepare("UPDATE {$this->_sTableFiles} SET `data` = ? WHERE `transcoder_object` = ? AND `handler` = ?", $sData, $this->_aObject['object'], $mixedHandler);
+        $sQuery = $this->prepare("UPDATE {$this->_sTableFiles} SET `data` = ? WHERE `transcoder_object` = ? AND `handler` = ? LIMIT 1", $sData, $this->_aObject['object'], (string)$mixedHandler);
 
         return $this->res($sQuery);
     }

+ 2 - 2
modules/base/general/classes/BxBaseModGeneralDb.php

@@ -141,7 +141,7 @@ class BxBaseModGeneralDb extends BxDolModuleDb
             $sSearchValue = "";
             switch ($aSearchParam['operator']) {
                 case 'like':
-                    $sSearchValue = " LIKE " . $this->escape("%" . $aSearchParam['value'] . "%");
+                    $sSearchValue = " LIKE " . $this->escape("%" . preg_replace('/\s+/', '%', $aSearchParam['value']) . "%");
                     break;
 
                 case 'in':
@@ -163,7 +163,7 @@ class BxBaseModGeneralDb extends BxDolModuleDb
                     if(!isset($CNF['OBJECT_METATAGS']))
                         break;
 
-                    list($fLatitude, $fLongitude, $sCountry, $sState, $sCity, $sZip) = $aSearchParam['value'];
+                    list($fLatitude, $fLongitude, $sCountry, $sState, $sCity, $sZip) = $aSearchParam['value']['array'];
 
                     $aSql = BxDolMetatags::getObjectInstance($CNF['OBJECT_METATAGS'])->locationsGetAsSQLPart($CNF['TABLE_ENTRIES'], $CNF['FIELD_ID'], $sCountry, $sState, $sCity, $sZip);
 

+ 31 - 6
modules/base/general/template/css/main.css

@@ -146,18 +146,43 @@ div.bx-base-general-comments div.bx-base-general-comments-counter-holder {
 
 /* unit meta */
 .bx-base-general-unit-meta {
-    white-space: nowrap;
+    white-space: normal;
     overflow: hidden;
     text-overflow: ellipsis;
-    text-align: left;
 }
-.sys-author ul.bx-menu-custom {
-    margin-top:0.1rem;
-    margin-bottom:0.2rem;
+.sys-author ul.bx-menu-custom.bx-menu-hor,
+.bx-base-general-unit-meta ul.bx-menu-custom.bx-menu-hor {
+    position: relative;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-align-items: flex-start;
+    align-items: flex-start;
+    -webkit-justify-content: flex-start;
+    justify-content: flex-start;
+    -webkit-flex-wrap: wrap;
+    flex-wrap: wrap;
+
+    margin: 0.1rem -0.25rem 0.2rem -0.25rem;
+}
+.sys-author ul.bx-menu-custom.bx-menu-hor > li,
+.bx-base-general-unit-meta ul.bx-menu-custom.bx-menu-hor > li {
+    -webkit-flex: 0 1 auto; 
+    -ms-flex:  0 1 auto; 
+    flex: 0 1 auto;
+
+    white-space: nowrap;
+}
+.sys-author ul.bx-menu-custom.bx-menu-hor > li.bx-menu-item-nl,
+.bx-base-general-unit-meta ul.bx-menu-custom.bx-menu-hor > li.bx-menu-item-nl {
+    width: 100%;
+    height: 0.5rem;
 }
 .sys-author ul.bx-menu-custom.bx-menu-hor > li > span,
 .bx-base-general-unit-meta ul.bx-menu-custom.bx-menu-hor > li > span {
-	margin-right: 0;
+    margin-left: 0;
+    margin-right: 0;
+    padding-left: 0.25rem;
+    padding-right: 0.25rem;
 }
 .sys-author ul.bx-menu-custom li:first-child .bx-base-general-unit-meta-div,
 .bx-base-general-unit-meta ul.bx-menu-custom li:first-child .bx-base-general-unit-meta-div {

+ 14 - 0
modules/base/groups/classes/BxBaseModGroupsMenuSnippetMeta.php

@@ -38,6 +38,20 @@ class BxBaseModGroupsMenuSnippetMeta extends BxBaseModProfileMenuSnippetMeta
         return $this->_getMenuItemConnection($this->_oModule->_oConfig->CNF['OBJECT_CONNECTIONS'], 'remove', $aItem);
     }
 
+    protected function _getMenuItemPrivacy($aItem)
+    {
+        $CNF = &$this->_oModule->_oConfig->CNF;
+
+        $sField = 'FIELD_ALLOW_VIEW_TO';
+        if(empty($CNF[$sField]) || empty($this->_aContentInfo[$CNF[$sField]]))
+            return false;
+
+        if($this->_aContentInfo[$CNF[$sField]] == BX_DOL_PG_ALL)
+            return false;
+
+        return $this->getUnitMetaItemText(_t($CNF['T']['txt_private_group']));
+    }
+
     protected function _getMenuItemMembers($aItem)
     {
         $CNF = &$this->_oModule->_oConfig->CNF;

+ 9 - 16
modules/base/profile/template/css/main.css

@@ -32,22 +32,6 @@
     box-shadow: inset 0px 0px 4px rgba(0, 0, 0, 0.2);
 }
 
-
-/* unit meta */
-.sys-author ul.bx-menu-custom li .bx-base-profile-unit-meta-item,
-.bx-base-general-unit-meta ul.bx-menu-custom li .bx-base-profile-unit-meta-item {
-    height: 1.625rem;
-    padding-left: 0.5rem;
-
-    line-height: 1.625rem;
-}
-
-.sys-author ul.bx-menu-custom li:first-child .bx-base-profile-unit-meta-item,
-.bx-base-general-unit-meta ul.bx-menu-custom li:first-child .bx-base-profile-unit-meta-item {
-    padding-left: 0px;
-}
-
-
 /* browse unit with cover */
 .bx-base-pofile-unit-cover {
     display:block;
@@ -65,6 +49,12 @@
     background-size:cover;
 }
 
+.bx-base-pofile-unit-with-cover .sys-author ul.bx-menu-custom.bx-menu-hor,
+.bx-base-pofile-unit-with-cover .bx-base-general-unit-meta ul.bx-menu-custom.bx-menu-hor {
+    -webkit-justify-content: center;
+    justify-content: center;
+}
+
 img.bx-base-pofile-unit-thumb {
     display: block;
 
@@ -113,6 +103,9 @@ p.bx-base-pofile-unit-thumb.bx-def-ava-size {
     display:inline-block;
     overflow:hidden;
 }
+.bx-base-pofile-unit-with-cover .bx-base-pofile-unit-cnt {
+    height: 100%;
+}
 .bx-base-pofile-unit-with-cover div.bx-def-unit-img {
     display: inline-block;
     vertical-align: middle;

+ 4 - 3
modules/base/profile/template/unit_meta_item.html

@@ -1,5 +1,6 @@
-<bx_if:span><span class="bx-base-profile-unit-meta-item"><span class="bx-def-font-grayed __class__" <bx_repeat:attrs>__key__="__value__"</bx_repeat:attrs>>__content__</span></span></bx_if:span>
-<bx_if:a><span class="bx-base-profile-unit-meta-item"><a class="__class__" <bx_repeat:attrs>__key__="__value__"</bx_repeat:attrs>>__content__</a></span></bx_if:a>
+<bx_if:span><span class="__style_prefix__-div bx-def-font-grayed">&#183;</span><span class="bx-base-profile-unit-meta-item"><span class="bx-def-font-grayed __class__" <bx_repeat:attrs>__key__="__value__"</bx_repeat:attrs>>__content__</span></span></bx_if:span>
+<bx_if:a><span class="__style_prefix__-div bx-def-font-grayed">&#183;</span><span class="bx-base-profile-unit-meta-item"><a class="__class__" <bx_repeat:attrs>__key__="__value__"</bx_repeat:attrs>>__content__</a></span></bx_if:a>
 <bx_if:button><span class="bx-base-profile-unit-meta-item"><a class="bx-btn __class__" <bx_repeat:attrs>__key__="__value__"</bx_repeat:attrs>>__content__</a></span></bx_if:button>
 <bx_if:sbutton><span class="bx-base-profile-unit-meta-item"><a class="bx-btn bx-btn-small __class__" <bx_repeat:attrs>__key__="__value__"</bx_repeat:attrs>>__content__</a></span></bx_if:sbutton>
-<bx_if:custom><span class="bx-base-profile-unit-meta-item">__content__</span></bx_if:custom>
+<bx_if:custom><span class="bx-base-profile-unit-meta-item">__content__</span></bx_if:custom>
+<bx_if:nl></bx_if:nl>

+ 9 - 8
modules/boonex/channels/install/sql/enable.sql

@@ -246,14 +246,15 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 ('bx_channels_snippet_meta', 'bx_channels', '_sys_menu_set_title_snippet_meta', 0);
 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `editable`, `order`) VALUES
-('bx_channels_snippet_meta', 'bx_channels', 'subscribe', '_sys_menu_item_title_system_sm_subscribe', '_sys_menu_item_title_sm_subscribe', '', '', '', '', '', 2147483647, 1, 0, 1, 1),
-('bx_channels_snippet_meta', 'bx_channels', 'unsubscribe', '_sys_menu_item_title_system_sm_unsubscribe', '_sys_menu_item_title_sm_unsubscribe', '', '', '', '', '', 2147483647, 1, 0, 1, 2),
-('bx_channels_snippet_meta', 'bx_channels', 'date', '_sys_menu_item_title_system_sm_date', '_sys_menu_item_title_sm_date', '', '', '', '', '', 2147483647, 0, 0, 1, 3),
-('bx_channels_snippet_meta', 'bx_channels', 'tags', '_sys_menu_item_title_system_sm_tags', '_sys_menu_item_title_sm_tags', '', '', '', '', '', 2147483647, 0, 0, 1, 4),
-('bx_channels_snippet_meta', 'bx_channels', 'views', '_sys_menu_item_title_system_sm_views', '_sys_menu_item_title_sm_views', '', '', '', '', '', 2147483647, 0, 0, 1, 5),
-('bx_channels_snippet_meta', 'bx_channels', 'comments', '_sys_menu_item_title_system_sm_comments', '_sys_menu_item_title_sm_comments', '', '', '', '', '', 2147483647, 0, 0, 1, 6),
-('bx_channels_snippet_meta', 'bx_channels', 'members', '_sys_menu_item_title_system_sm_members', '_sys_menu_item_title_sm_members', '', '', '', '', '', 2147483647, 1, 0, 1, 7),
-('bx_channels_snippet_meta', 'bx_channels', 'subscribers', '_sys_menu_item_title_system_sm_subscribers', '_sys_menu_item_title_sm_subscribers', '', '', '', '', '', 2147483647, 1, 0, 1, 8);
+('bx_channels_snippet_meta', 'bx_channels', 'date', '_sys_menu_item_title_system_sm_date', '_sys_menu_item_title_sm_date', '', '', '', '', '', 2147483647, 0, 0, 1, 1),
+('bx_channels_snippet_meta', 'bx_channels', 'tags', '_sys_menu_item_title_system_sm_tags', '_sys_menu_item_title_sm_tags', '', '', '', '', '', 2147483647, 0, 0, 1, 2),
+('bx_channels_snippet_meta', 'bx_channels', 'views', '_sys_menu_item_title_system_sm_views', '_sys_menu_item_title_sm_views', '', '', '', '', '', 2147483647, 0, 0, 1, 3),
+('bx_channels_snippet_meta', 'bx_channels', 'comments', '_sys_menu_item_title_system_sm_comments', '_sys_menu_item_title_sm_comments', '', '', '', '', '', 2147483647, 0, 0, 1, 4),
+('bx_channels_snippet_meta', 'bx_channels', 'members', '_sys_menu_item_title_system_sm_members', '_sys_menu_item_title_sm_members', '', '', '', '', '', 2147483647, 1, 0, 1, 5),
+('bx_channels_snippet_meta', 'bx_channels', 'subscribers', '_sys_menu_item_title_system_sm_subscribers', '_sys_menu_item_title_sm_subscribers', '', '', '', '', '', 2147483647, 1, 0, 1, 6),
+('bx_channels_snippet_meta', 'bx_channels', 'nl', '_sys_menu_item_title_system_sm_nl', '_sys_menu_item_title_sm_nl', '', '', '', '', '', 2147483647, 1, 0, 1, 7),
+('bx_channels_snippet_meta', 'bx_channels', 'subscribe', '_sys_menu_item_title_system_sm_subscribe', '_sys_menu_item_title_sm_subscribe', '', '', '', '', '', 2147483647, 1, 0, 1, 8),
+('bx_channels_snippet_meta', 'bx_channels', 'unsubscribe', '_sys_menu_item_title_system_sm_unsubscribe', '_sys_menu_item_title_sm_unsubscribe', '', '', '', '', '', 2147483647, 1, 0, 1, 9);
 
 -- MENU: manage tools submenu
 INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 

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

@@ -2239,6 +2239,7 @@ If it is not enabled then please consider implement this optimization, since it
     <string name="_sys_menu_item_title_sm_leave"><![CDATA[Leave]]></string>
     <string name="_sys_menu_item_title_sm_leave_cancel"><![CDATA[Cancel join request]]></string>
     <string name="_sys_menu_item_title_sm_leave_reject"><![CDATA[Reject join request]]></string>
+    <string name="_sys_menu_item_title_sm_nl"><![CDATA[New line]]></string>
     <string name="_sys_menu_item_title_sm_subscribe"><![CDATA[Follow]]></string>
     <string name="_sys_menu_item_title_sm_unsubscribe"><![CDATA[Unfollow]]></string>
     <string name="_sys_menu_item_title_sm_friends"><![CDATA[{0} friends]]></string>
@@ -2314,6 +2315,7 @@ If it is not enabled then please consider implement this optimization, since it
     <string name="_sys_menu_item_title_system_sm_unfriend"><![CDATA[Remove Friend]]></string>
     <string name="_sys_menu_item_title_system_sm_join"><![CDATA[Join]]></string>
     <string name="_sys_menu_item_title_system_sm_leave"><![CDATA[Leave]]></string>
+    <string name="_sys_menu_item_title_system_sm_nl"><![CDATA[New Line]]></string>
     <string name="_sys_menu_item_title_system_sm_subscribe"><![CDATA[Follow]]></string>
     <string name="_sys_menu_item_title_system_sm_friends"><![CDATA[Friends]]></string>
     <string name="_sys_menu_item_title_system_sm_members"><![CDATA[Members]]></string>

+ 13 - 12
modules/boonex/events/install/sql/enable.sql

@@ -327,18 +327,19 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 ('bx_events_snippet_meta', 'bx_events', '_sys_menu_set_title_snippet_meta', 0);
 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `editable`, `order`) VALUES
-('bx_events_snippet_meta', 'bx_events', 'join', '_sys_menu_item_title_system_sm_join', '_sys_menu_item_title_sm_join', '', '', '', '', '', 2147483647, 1, 0, 1, 1),
-('bx_events_snippet_meta', 'bx_events', 'leave', '_sys_menu_item_title_system_sm_leave', '_sys_menu_item_title_sm_leave', '', '', '', '', '', 2147483647, 0, 0, 1, 2),
-('bx_events_snippet_meta', 'bx_events', 'subscribe', '_sys_menu_item_title_system_sm_subscribe', '_sys_menu_item_title_sm_subscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 3),
-('bx_events_snippet_meta', 'bx_events', 'unsubscribe', '_sys_menu_item_title_system_sm_unsubscribe', '_sys_menu_item_title_sm_unsubscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 4),
-('bx_events_snippet_meta', 'bx_events', 'date', '_sys_menu_item_title_system_sm_date', '_sys_menu_item_title_sm_date', '', '', '', '', '', 2147483647, 0, 0, 1, 5),
-('bx_events_snippet_meta', 'bx_events', 'tags', '_sys_menu_item_title_system_sm_tags', '_sys_menu_item_title_sm_tags', '', '', '', '', '', 2147483647, 0, 0, 1, 6),
-('bx_events_snippet_meta', 'bx_events', 'views', '_sys_menu_item_title_system_sm_views', '_sys_menu_item_title_sm_views', '', '', '', '', '', 2147483647, 0, 0, 1, 7),
-('bx_events_snippet_meta', 'bx_events', 'comments', '_sys_menu_item_title_system_sm_comments', '_sys_menu_item_title_sm_comments', '', '', '', '', '', 2147483647, 0, 0, 1, 8),
-('bx_events_snippet_meta', 'bx_events', 'members', '_sys_menu_item_title_system_sm_members', '_sys_menu_item_title_sm_members', '', '', '', '', '', 2147483647, 1, 0, 1, 9),
-('bx_events_snippet_meta', 'bx_events', 'subscribers', '_sys_menu_item_title_system_sm_subscribers', '_sys_menu_item_title_sm_subscribers', '', '', '', '', '', 2147483647, 0, 0, 1, 10),
-('bx_events_snippet_meta', 'bx_events', 'country', '_sys_menu_item_title_system_sm_country', '_sys_menu_item_title_sm_country', '', '', '', '', '', 2147483647, 0, 0, 1, 11),
-('bx_events_snippet_meta', 'bx_events', 'country-city', '_sys_menu_item_title_system_sm_country_city', '_sys_menu_item_title_sm_country_city', '', '', '', '', '', 2147483647, 0, 0, 1, 12);
+('bx_events_snippet_meta', 'bx_events', 'date', '_sys_menu_item_title_system_sm_date', '_sys_menu_item_title_sm_date', '', '', '', '', '', 2147483647, 0, 0, 1, 1),
+('bx_events_snippet_meta', 'bx_events', 'tags', '_sys_menu_item_title_system_sm_tags', '_sys_menu_item_title_sm_tags', '', '', '', '', '', 2147483647, 0, 0, 1, 2),
+('bx_events_snippet_meta', 'bx_events', 'views', '_sys_menu_item_title_system_sm_views', '_sys_menu_item_title_sm_views', '', '', '', '', '', 2147483647, 0, 0, 1, 3),
+('bx_events_snippet_meta', 'bx_events', 'comments', '_sys_menu_item_title_system_sm_comments', '_sys_menu_item_title_sm_comments', '', '', '', '', '', 2147483647, 0, 0, 1, 4),
+('bx_events_snippet_meta', 'bx_events', 'members', '_sys_menu_item_title_system_sm_members', '_sys_menu_item_title_sm_members', '', '', '', '', '', 2147483647, 1, 0, 1, 5),
+('bx_events_snippet_meta', 'bx_events', 'subscribers', '_sys_menu_item_title_system_sm_subscribers', '_sys_menu_item_title_sm_subscribers', '', '', '', '', '', 2147483647, 0, 0, 1, 6),
+('bx_events_snippet_meta', 'bx_events', 'country', '_sys_menu_item_title_system_sm_country', '_sys_menu_item_title_sm_country', '', '', '', '', '', 2147483647, 0, 0, 1, 7),
+('bx_events_snippet_meta', 'bx_events', 'country-city', '_sys_menu_item_title_system_sm_country_city', '_sys_menu_item_title_sm_country_city', '', '', '', '', '', 2147483647, 0, 0, 1, 8),
+('bx_events_snippet_meta', 'bx_events', 'nl', '_sys_menu_item_title_system_sm_nl', '_sys_menu_item_title_sm_nl', '', '', '', '', '', 2147483647, 1, 0, 1, 9),
+('bx_events_snippet_meta', 'bx_events', 'join', '_sys_menu_item_title_system_sm_join', '_sys_menu_item_title_sm_join', '', '', '', '', '', 2147483647, 1, 0, 1, 10),
+('bx_events_snippet_meta', 'bx_events', 'leave', '_sys_menu_item_title_system_sm_leave', '_sys_menu_item_title_sm_leave', '', '', '', '', '', 2147483647, 0, 0, 1, 11),
+('bx_events_snippet_meta', 'bx_events', 'subscribe', '_sys_menu_item_title_system_sm_subscribe', '_sys_menu_item_title_sm_subscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 12),
+('bx_events_snippet_meta', 'bx_events', 'unsubscribe', '_sys_menu_item_title_system_sm_unsubscribe', '_sys_menu_item_title_sm_unsubscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 13);
 
 -- MENU: profile stats
 SET @iNotifMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name` = 'sys_profile_stats' AND `active` = 1 LIMIT 1);

+ 1 - 1
modules/boonex/groups/classes/BxGroupsSearchResult.php

@@ -32,7 +32,7 @@ class BxGroupsSearchResult extends BxBaseModGroupsSearchResult
         		'featured' => array('value' => '', 'field' => 'featured', 'operator' => '<>', 'table' => 'bx_groups_data'),
             ),
             'join' => array (
-                'profile' => array(
+				'profile' => array(
                     'type' => 'INNER',
                     'table' => 'bx_groups_data',
                     'mainField' => 'content_id',

+ 12 - 10
modules/boonex/groups/install/langs/en.xml

@@ -218,17 +218,19 @@
     <string name="_bx_groups_menu_item_title_system_entries_home"><![CDATA[Groups]]></string>
     <string name="_bx_groups_menu_item_title_entries_home"><![CDATA[Groups]]></string>
     <string name="_bx_groups_menu_item_title_system_admt_groups"><![CDATA[Groups]]></string>
-	<string name="_bx_groups_menu_item_title_admt_groups"><![CDATA[Groups]]></string>
-	<string name="_bx_groups_menu_item_title_manage_my"><![CDATA[My Groups]]></string>
-	<string name="_bx_groups_menu_item_title_manage_all"><![CDATA[All Groups]]></string>
-	<string name="_bx_groups_menu_item_title_system_entries_top"><![CDATA[Top]]></string>
-	<string name="_bx_groups_menu_item_title_entries_top"><![CDATA[Top]]></string>
+    <string name="_bx_groups_menu_item_title_admt_groups"><![CDATA[Groups]]></string>
+    <string name="_bx_groups_menu_item_title_manage_my"><![CDATA[My Groups]]></string>
+    <string name="_bx_groups_menu_item_title_manage_all"><![CDATA[All Groups]]></string>
+    <string name="_bx_groups_menu_item_title_system_entries_top"><![CDATA[Top]]></string>
+    <string name="_bx_groups_menu_item_title_entries_top"><![CDATA[Top]]></string>
+    <string name="_bx_groups_menu_item_title_system_sm_privacy"><![CDATA[Privacy]]></string>
+    <string name="_bx_groups_menu_item_title_sm_privacy"><![CDATA[Privacy]]></string>
 
-	<string name="_bx_groups_grid_filter_item_title_adm_select_one_filter1"><![CDATA[All Statuses]]></string>
-	<string name="_bx_groups_grid_filter_item_title_adm_active"><![CDATA[Active]]></string>
-	<string name="_bx_groups_grid_filter_item_title_adm_pending"><![CDATA[Pending]]></string>
-	<string name="_bx_groups_grid_filter_item_title_adm_suspended"><![CDATA[Suspended]]></string>
-	<string name="_bx_groups_grid_column_title_adm_active"><![CDATA[Active]]></string>
+    <string name="_bx_groups_grid_filter_item_title_adm_select_one_filter1"><![CDATA[All Statuses]]></string>
+    <string name="_bx_groups_grid_filter_item_title_adm_active"><![CDATA[Active]]></string>
+    <string name="_bx_groups_grid_filter_item_title_adm_pending"><![CDATA[Pending]]></string>
+    <string name="_bx_groups_grid_filter_item_title_adm_suspended"><![CDATA[Suspended]]></string>
+    <string name="_bx_groups_grid_column_title_adm_active"><![CDATA[Active]]></string>
     <string name="_bx_groups_grid_column_title_adm_name"><![CDATA[Name]]></string>
     <string name="_bx_groups_grid_column_title_adm_added"><![CDATA[Created]]></string>
     <string name="_bx_groups_grid_column_title_adm_account"><![CDATA[Account]]></string>

+ 12 - 10
modules/boonex/groups/install/sql/enable.sql

@@ -300,16 +300,18 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 ('bx_groups_snippet_meta', 'bx_groups', '_sys_menu_set_title_snippet_meta', 0);
 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `editable`, `order`) VALUES
-('bx_groups_snippet_meta', 'bx_groups', 'join', '_sys_menu_item_title_system_sm_join', '_sys_menu_item_title_sm_join', '', '', '', '', '', 2147483647, 1, 0, 1, 1),
-('bx_groups_snippet_meta', 'bx_groups', 'leave', '_sys_menu_item_title_system_sm_leave', '_sys_menu_item_title_sm_leave', '', '', '', '', '', 2147483647, 0, 0, 1, 2),
-('bx_groups_snippet_meta', 'bx_groups', 'subscribe', '_sys_menu_item_title_system_sm_subscribe', '_sys_menu_item_title_sm_subscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 3),
-('bx_groups_snippet_meta', 'bx_groups', 'unsubscribe', '_sys_menu_item_title_system_sm_unsubscribe', '_sys_menu_item_title_sm_unsubscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 4),
-('bx_groups_snippet_meta', 'bx_groups', 'date', '_sys_menu_item_title_system_sm_date', '_sys_menu_item_title_sm_date', '', '', '', '', '', 2147483647, 0, 0, 1, 5),
-('bx_groups_snippet_meta', 'bx_groups', 'tags', '_sys_menu_item_title_system_sm_tags', '_sys_menu_item_title_sm_tags', '', '', '', '', '', 2147483647, 0, 0, 1, 6),
-('bx_groups_snippet_meta', 'bx_groups', 'views', '_sys_menu_item_title_system_sm_views', '_sys_menu_item_title_sm_views', '', '', '', '', '', 2147483647, 0, 0, 1, 7),
-('bx_groups_snippet_meta', 'bx_groups', 'comments', '_sys_menu_item_title_system_sm_comments', '_sys_menu_item_title_sm_comments', '', '', '', '', '', 2147483647, 0, 0, 1, 8),
-('bx_groups_snippet_meta', 'bx_groups', 'members', '_sys_menu_item_title_system_sm_members', '_sys_menu_item_title_sm_members', '', '', '', '', '', 2147483647, 1, 0, 1, 9),
-('bx_groups_snippet_meta', 'bx_groups', 'subscribers', '_sys_menu_item_title_system_sm_subscribers', '_sys_menu_item_title_sm_subscribers', '', '', '', '', '', 2147483647, 0, 0, 1, 10);
+('bx_groups_snippet_meta', 'bx_groups', 'privacy', '_bx_groups_menu_item_title_system_sm_privacy', '_bx_groups_menu_item_title_sm_privacy', '', '', '', '', '', 2147483647, 1, 0, 1, 1),
+('bx_groups_snippet_meta', 'bx_groups', 'date', '_sys_menu_item_title_system_sm_date', '_sys_menu_item_title_sm_date', '', '', '', '', '', 2147483647, 0, 0, 1, 2),
+('bx_groups_snippet_meta', 'bx_groups', 'tags', '_sys_menu_item_title_system_sm_tags', '_sys_menu_item_title_sm_tags', '', '', '', '', '', 2147483647, 0, 0, 1, 3),
+('bx_groups_snippet_meta', 'bx_groups', 'views', '_sys_menu_item_title_system_sm_views', '_sys_menu_item_title_sm_views', '', '', '', '', '', 2147483647, 0, 0, 1, 4),
+('bx_groups_snippet_meta', 'bx_groups', 'comments', '_sys_menu_item_title_system_sm_comments', '_sys_menu_item_title_sm_comments', '', '', '', '', '', 2147483647, 0, 0, 1, 5),
+('bx_groups_snippet_meta', 'bx_groups', 'members', '_sys_menu_item_title_system_sm_members', '_sys_menu_item_title_sm_members', '', '', '', '', '', 2147483647, 1, 0, 1, 6),
+('bx_groups_snippet_meta', 'bx_groups', 'subscribers', '_sys_menu_item_title_system_sm_subscribers', '_sys_menu_item_title_sm_subscribers', '', '', '', '', '', 2147483647, 0, 0, 1, 7),
+('bx_groups_snippet_meta', 'bx_groups', 'nl', '_sys_menu_item_title_system_sm_nl', '_sys_menu_item_title_sm_nl', '', '', '', '', '', 2147483647, 1, 0, 1, 8),
+('bx_groups_snippet_meta', 'bx_groups', 'join', '_sys_menu_item_title_system_sm_join', '_sys_menu_item_title_sm_join', '', '', '', '', '', 2147483647, 1, 0, 1, 9),
+('bx_groups_snippet_meta', 'bx_groups', 'leave', '_sys_menu_item_title_system_sm_leave', '_sys_menu_item_title_sm_leave', '', '', '', '', '', 2147483647, 0, 0, 1, 10),
+('bx_groups_snippet_meta', 'bx_groups', 'subscribe', '_sys_menu_item_title_system_sm_subscribe', '_sys_menu_item_title_sm_subscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 11),
+('bx_groups_snippet_meta', 'bx_groups', 'unsubscribe', '_sys_menu_item_title_system_sm_unsubscribe', '_sys_menu_item_title_sm_unsubscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 12);
 
 -- MENU: profile stats
 SET @iNotifMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name` = 'sys_profile_stats' AND `active` = 1 LIMIT 1);

Разница между файлами не показана из-за своего большого размера
+ 0 - 10
modules/boonex/massmailer/template/images/icons/std-icon.svg


+ 0 - 18
modules/boonex/mobile_apps/install/langs/en.xml

@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources name="en" flag="gb" title="English">
-	<string name="_sys_module_mobileapps"><![CDATA[Mobile Apps]]></string>
-	<string name="_bx_mobileapps"><![CDATA[Mobile Apps]]></string>
-
-	<string name="_bx_mobileapps_setting"><![CDATA[Mobile Apps Setting]]></string>
-    <string name="_bx_mobileapps_adm_stg_cpt_type"><![CDATA[Mobile Apps]]></string>
-    <string name="_bx_mobileapps_adm_stg_cpt_category_general"><![CDATA[General]]></string>
-    <string name="_bx_mobileapps_option_qwerty"><![CDATA[Qwerty]]></string>
-
-	<string name="_bx_mobileapps_information"><![CDATA[Information]]></string>
-    <string name="_bx_mobileapps_information_block"><![CDATA[This module adds neccesary styles and functionalty for proper functionality of UNA mobile apps. Installing this module isn't enough, you need to get source code of mobile apps modify it for your needs and publish in Google and Apple stores.]]></string>
-
-    <string name="_bx_mobileapps_pull_to_refresh"><![CDATA[Pull to refresh]]></string> <!-- потяни, чтобы обновить -->
-    <string name="_bx_mobileapps_release_to_refresh"><![CDATA[Release to refresh]]></string> <!-- отпусти, чтобы обновить -->
-    <string name="_bx_mobileapps_refreshing"><![CDATA[Refreshing]]></string> <!-- обновление -->
-
-</resources>

+ 0 - 30
modules/boonex/mobile_apps/install/sql/enable.sql

@@ -1,30 +0,0 @@
-
--- Settings
-
-SET @iTypeOrder = (SELECT MAX(`order`) FROM `sys_options_types` WHERE `group` = 'modules');
-INSERT INTO `sys_options_types` (`group`, `name`, `caption`, `icon`, `order`) VALUES 
-('modules', 'bx_mobileapps', '_bx_mobileapps_adm_stg_cpt_type', 'bx_mobileapps@modules/boonex/mobile_apps/|std-icon.svg', IF(NOT ISNULL(@iTypeOrder), @iTypeOrder + 1, 1));
-SET @iTypeId = LAST_INSERT_ID();
-
-INSERT INTO `sys_options_categories` (`type_id`, `name`, `caption`, `order` )  
-VALUES (@iTypeId, 'bx_mobileapps_general', '_bx_mobileapps_adm_stg_cpt_category_general', 1);
-SET @iCategId = LAST_INSERT_ID();
-
-INSERT INTO `sys_options` (`name`, `value`, `category_id`, `caption`, `type`, `extra`, `check`, `check_error`, `order`) VALUES
-('bx_mobileapps_option_qwerty', '123', @iCategId, '_bx_mobileapps_option_qwerty', 'digit', '', '', '', 10);
-
--- Injections
-
-INSERT INTO `sys_injections`(`name`, `page_index`, `key`, `type`, `data`, `replace`, `active`) VALUES
-('bx_mobileapps', 0, 'injection_head_begin', 'service', 'a:2:{s:6:"module";s:13:"bx_mobileapps";s:6:"method";s:20:"injection_head_begin";}', 0, 1),
-('bx_mobileapps', 0, 'injection_head', 'service', 'a:2:{s:6:"module";s:13:"bx_mobileapps";s:6:"method";s:14:"injection_head";}', 0, 1);
-
--- Alerts
-
-INSERT INTO `sys_alerts_handlers` SET `name` = 'bx_mobileapps', `class` = 'BxMobileAppsAlerts', `file` = 'modules/boonex/mobile_apps/classes/BxMobileAppsAlerts.php';
-
-SET @iHandlerId = LAST_INSERT_ID();
-
-INSERT INTO `sys_alerts` (`unit`, `action`, `handler_id`) VALUES
-('system', 'page_output', @iHandlerId);
-

+ 0 - 26
modules/boonex/mobile_apps/template/images/icons/std-icon.svg

@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg width="606px" height="606px" viewBox="0 0 606 606" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <title>Mobile Apps</title>
-    <defs>
-        <linearGradient id="linearGradient-1" y2="100%" x2="50%" y1="0%" x1="50%">
-            <stop offset="0%" stop-opacity="0.2" stop-color="#FFFFFF"/>
-            <stop offset="100%" stop-opacity="0.13887" stop-color="#000000"/>
-        </linearGradient>    
-        <path d="M552.268958,552.268958 C600,504.537813 600,431.458333 600,300 C600,168.541667 600,95.4621875 552.268958,47.7310417 C504.537813,0 431.458333,0 300,0 C168.541667,0 95.4621875,0 47.7310417,47.7310417 C0,95.4621875 0,168.541667 0,300 C0,431.458333 0,504.537813 47.7310417,552.268958 C95.4621875,600 168.541667,600 300,600 C431.458333,600 504.537813,600 552.268958,552.268958 Z" id="path-2"></path>
-    </defs>
-    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g transform="translate(3.000000, 3.000000)">
-            <g id="Squircle2-Copy-6">
-                <g id="Shape">
-                    <use fill="#FF4D63" xlink:href="#path-2"></use>
-                    <use stroke="#000000" stroke-width="4.04" fill="url(#linearGradient-1)" xlink:href="#path-2"></use>
-                </g>
-            </g>
-            <g transform="translate(172.000000, 96.000000) scale(0.8, 0.8)" fill="#FFFFFF">
-
-<path fill="#fff" d="M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z"></path>
-
-            </g>
-        </g>
-    </g>
-</svg>

+ 2 - 2
modules/boonex/mobile_apps/classes/BxMobileAppsAlerts.php → modules/boonex/nexus/classes/BxNexusAlerts.php

@@ -3,13 +3,13 @@
  * Copyright (c) UNA, Inc - https://una.io
  * MIT License - https://opensource.org/licenses/MIT
  *
- * @defgroup    MobileApps Mobile Apps
+ * @defgroup    Nexus Nexus - Mobile Apps and Desktop apps connector
  * @ingroup     UnaModules
  *
  * @{
  */
 
-class BxMobileAppsAlerts extends BxDolAlertsResponse
+class BxNexusAlerts extends BxDolAlertsResponse
 {
     protected $_oModule;
     function __construct()

+ 2 - 2
modules/boonex/mobile_apps/classes/BxMobileAppsConfig.php → modules/boonex/nexus/classes/BxNexusConfig.php

@@ -3,13 +3,13 @@
  * Copyright (c) UNA, Inc - https://una.io
  * MIT License - https://opensource.org/licenses/MIT
  *
- * @defgroup    MobileApps Mobile Apps
+ * @defgroup    Nexus Nexus - Mobile Apps and Desktop apps connector
  * @ingroup     UnaModules
  *
  * @{
  */
 
-class BxMobileAppsConfig extends BxDolModuleConfig
+class BxNexusConfig extends BxDolModuleConfig
 {
     function __construct($aModule)
     {

+ 2 - 2
modules/boonex/mobile_apps/classes/BxMobileAppsDb.php → modules/boonex/nexus/classes/BxNexusDb.php

@@ -3,13 +3,13 @@
  * Copyright (c) UNA, Inc - https://una.io
  * MIT License - https://opensource.org/licenses/MIT
  *
- * @defgroup    MobileApps Mobile Apps
+ * @defgroup    Nexus Nexus - Mobile Apps and Desktop apps connector
  * @ingroup     UnaModules
  *
  * @{
  */
 
-class BxMobileAppsDb extends BxDolModuleDb
+class BxNexusDb extends BxDolModuleDb
 {
     function __construct(&$oConfig)
     {

+ 9 - 9
modules/boonex/mobile_apps/classes/BxMobileAppsModule.php → modules/boonex/nexus/classes/BxNexusModule.php

@@ -3,13 +3,13 @@
  * Copyright (c) UNA, Inc - https://una.io
  * MIT License - https://opensource.org/licenses/MIT
  *
- * @defgroup    MobileApps Mobile Apps
+ * @defgroup    Nexus Nexus - Mobile Apps and Desktop apps connector
  * @ingroup     UnaModules
  *
  * @{
  */
 
-class BxMobileAppsModule extends BxDolModule
+class BxNexusModule extends BxDolModule
 {
     function __construct(&$aModule)
     {
@@ -17,7 +17,7 @@ class BxMobileAppsModule extends BxDolModule
     }
 
     /**
-     * Get injection code required for mobile apps
+     * Get injection code required for Nexus apps
      * @return string
      */
     public function serviceInjectionHeadBegin()
@@ -30,7 +30,7 @@ class BxMobileAppsModule extends BxDolModule
     }
     
     /**
-     * Get injection code required for mobile apps
+     * Get injection code required for Nexus apps
      * @return string with Styles and JS code
      */
     public function serviceInjectionHead()
@@ -51,17 +51,17 @@ class BxMobileAppsModule extends BxDolModule
             $iBubbles += $r['bx_if:addon']['content']['addon'];
         }
 
-        $s  = $this->_oTemplate->parseHtmlByName('mobile_apps_styles.html', array());
-        $s .= $this->_oTemplate->parseHtmlByName('mobile_apps_js.html', array(
+        $s  = $this->_oTemplate->parseHtmlByName('styles.html', array());
+        $s .= $this->_oTemplate->parseHtmlByName('js.html', array(
             'msg' => json_encode(array(
                 'loggedin' => isLogged(),                
                 'bubbles_num' => $iBubbles ? $iBubbles : '',
                 'bubbles' => $aBubbles,
                 'push_tags' => array('user' => bx_get_logged_profile_id())
             )),
-            'txt_pull_to_refresh' => bx_js_string(_t('_bx_mobileapps_pull_to_refresh')),
-            'txt_release_to_refresh' => bx_js_string(_t('_bx_mobileapps_release_to_refresh')),
-            'txt_refreshing' => bx_js_string(_t('_bx_mobileapps_refreshing')),
+            'txt_pull_to_refresh' => bx_js_string(_t('_bx_nexus_pull_to_refresh')),
+            'txt_release_to_refresh' => bx_js_string(_t('_bx_nexus_release_to_refresh')),
+            'txt_refreshing' => bx_js_string(_t('_bx_nexus_refreshing')),
         ));
 
         $this->_oTemplate->addJs('pulltorefresh.min.js');

+ 4 - 4
modules/boonex/mobile_apps/classes/BxMobileAppsStudioPage.php → modules/boonex/nexus/classes/BxNexusStudioPage.php

@@ -3,13 +3,13 @@
  * Copyright (c) UNA, Inc - https://una.io
  * MIT License - https://opensource.org/licenses/MIT
  *
- * @defgroup    MobileApps Mobile Apps
+ * @defgroup    Nexus Nexus - Mobile Apps and Desktop apps connector
  * @ingroup     UnaModules
  *
  * @{
  */
 
-class BxMobileAppsStudioPage extends BxTemplStudioModule
+class BxNexusStudioPage extends BxTemplStudioModule
 {
     function __construct($sModule = "", $sPage = "")
     {
@@ -17,13 +17,13 @@ class BxMobileAppsStudioPage extends BxTemplStudioModule
 
         $this->aMenuItems = array(
             array('name' => 'settings', 'icon' => 'cogs', 'title' => '_adm_lmi_cpt_settings'),
-            array('name' => 'help', 'icon' => 'question', 'title' => '_bx_mobileapps_information'),
+            array('name' => 'help', 'icon' => 'question', 'title' => '_bx_nexus_information'),
         );
     }
     
     function getHelp ()
     {
-        return _t('_bx_mobileapps_information_block');
+        return _t('_bx_nexus_information_block');
     }
 }
 

+ 2 - 2
modules/boonex/mobile_apps/classes/BxMobileAppsTemplate.php → modules/boonex/nexus/classes/BxNexusTemplate.php

@@ -3,13 +3,13 @@
  * Copyright (c) UNA, Inc - https://una.io
  * MIT License - https://opensource.org/licenses/MIT
  *
- * @defgroup    MobileApps Mobile Apps
+ * @defgroup    Nexus Nexus - Mobile Apps and Desktop apps connector
  * @ingroup     UnaModules
  *
  * @{
  */
 
-class BxMobileAppsTemplate extends BxDolModuleTemplate
+class BxNexusTemplate extends BxDolModuleTemplate
 {
     function __construct(&$oConfig, &$oDb)
     {

+ 9 - 9
modules/boonex/mobile_apps/install/config.php → modules/boonex/nexus/install/config.php

@@ -3,7 +3,7 @@
  * Copyright (c) UNA, Inc - https://una.io
  * MIT License - https://opensource.org/licenses/MIT
  *
- * @defgroup    MobileApps Mobile Apps
+ * @defgroup    Nexus Nexus - Mobile Apps and Desktop apps connector
  * @ingroup     UnaModules
  *
  * @{
@@ -14,9 +14,9 @@ $aConfig = array(
      * Main Section.
      */
     'type' => BX_DOL_MODULE_TYPE_MODULE,
-    'name' => 'bx_mobileapps',
-    'title' => 'Mobile Apps',
-    'note' => 'Mobile Apps.',
+    'name' => 'bx_nexus',
+    'title' => 'Nexus',
+    'note' => 'Nexus - Mobile Apps and Desktop apps connector.',
     'version' => '9.0.0.DEV',
     'vendor' => 'BoonEx',
 	'help_url' => 'http://feed.una.io/?section={module_name}',
@@ -28,16 +28,16 @@ $aConfig = array(
     /**
      * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
      */
-    'home_dir' => 'boonex/mobile_apps/',
-    'home_uri' => 'mobileapps',
+    'home_dir' => 'boonex/nexus/',
+    'home_uri' => 'nexus',
 
-    'db_prefix' => 'bx_mobileapps_',
-    'class_prefix' => 'BxMobileApps',
+    'db_prefix' => 'bx_nexus_',
+    'class_prefix' => 'BxNexus',
 
     /**
      * Category for language keys.
      */
-    'language_category' => 'Mobile Apps',
+    'language_category' => 'Nexus',
     
     /**
      * Installation/Uninstallation Section.

+ 2 - 2
modules/boonex/mobile_apps/install/installer.php → modules/boonex/nexus/install/installer.php

@@ -3,13 +3,13 @@
  * Copyright (c) UNA, Inc - https://una.io
  * MIT License - https://opensource.org/licenses/MIT
  *
- * @defgroup    MobileApps Mobile Apps
+ * @defgroup    Nexus Nexus - Mobile Apps and Desktop apps connector
  * @ingroup     UnaModules
  *
  * @{
  */
 
-class BxMobileAppsInstaller extends BxDolStudioInstaller
+class BxNexusInstaller extends BxDolStudioInstaller
 {
     function __construct($aConfig)
     {

+ 18 - 0
modules/boonex/nexus/install/langs/en.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+	<string name="_sys_module_nexus"><![CDATA[Nexus]]></string>
+	<string name="_bx_nexus"><![CDATA[Nexus]]></string>
+
+	<string name="_bx_nexus_setting"><![CDATA[Nexus Setting]]></string>
+    <string name="_bx_nexus_adm_stg_cpt_type"><![CDATA[Nexus]]></string>
+    <string name="_bx_nexus_adm_stg_cpt_category_general"><![CDATA[General]]></string>
+    <string name="_bx_nexus_option_qwerty"><![CDATA[Qwerty]]></string>
+
+	<string name="_bx_nexus_information"><![CDATA[Information]]></string>
+    <string name="_bx_nexus_information_block"><![CDATA[This module adds neccesary styles and functionalty for proper functionality of UNA Nexus apps. Installing this module isn't enough, you need to get source code of mobile apps then modify them for your needs then publish in Google and Apple stores.]]></string>
+
+    <string name="_bx_nexus_pull_to_refresh"><![CDATA[Pull to refresh]]></string> <!-- потяни, чтобы обновить -->
+    <string name="_bx_nexus_release_to_refresh"><![CDATA[Release to refresh]]></string> <!-- отпусти, чтобы обновить -->
+    <string name="_bx_nexus_refreshing"><![CDATA[Refreshing]]></string> <!-- обновление -->
+
+</resources>

+ 3 - 3
modules/boonex/mobile_apps/install/sql/disable.sql → modules/boonex/nexus/install/sql/disable.sql

@@ -1,15 +1,15 @@
 
 -- Settings
 
-DELETE FROM `top`, `toc`, `to` USING `sys_options_types` AS `top` LEFT JOIN `sys_options_categories` AS `toc` ON `top`.`id`=`toc`.`type_id` LEFT JOIN `sys_options` AS `to` ON `toc`.`id`=`to`.`category_id` WHERE `top`.`name` = 'bx_mobileapps';
+DELETE FROM `top`, `toc`, `to` USING `sys_options_types` AS `top` LEFT JOIN `sys_options_categories` AS `toc` ON `top`.`id`=`toc`.`type_id` LEFT JOIN `sys_options` AS `to` ON `toc`.`id`=`to`.`category_id` WHERE `top`.`name` = 'bx_nexus';
 
 -- Injections
 
-DELETE FROM `sys_injections` WHERE `name` IN('bx_mobileapps');
+DELETE FROM `sys_injections` WHERE `name` IN('bx_nexus');
 
 -- Alerts
 
-SET @iHandlerId := (SELECT `id` FROM `sys_alerts_handlers` WHERE `name` = 'bx_mobileapps');
+SET @iHandlerId := (SELECT `id` FROM `sys_alerts_handlers` WHERE `name` = 'bx_nexus');
 
 DELETE FROM `sys_alerts_handlers` WHERE `id`  = @iHandlerId;
 DELETE FROM `sys_alerts` WHERE `handler_id` =  @iHandlerId ;

+ 30 - 0
modules/boonex/nexus/install/sql/enable.sql

@@ -0,0 +1,30 @@
+
+-- Settings
+
+SET @iTypeOrder = (SELECT MAX(`order`) FROM `sys_options_types` WHERE `group` = 'modules');
+INSERT INTO `sys_options_types` (`group`, `name`, `caption`, `icon`, `order`) VALUES 
+('modules', 'bx_nexus', '_bx_nexus_adm_stg_cpt_type', 'bx_nexus@modules/boonex/nexus/|std-icon.svg', IF(NOT ISNULL(@iTypeOrder), @iTypeOrder + 1, 1));
+SET @iTypeId = LAST_INSERT_ID();
+
+INSERT INTO `sys_options_categories` (`type_id`, `name`, `caption`, `order` )  
+VALUES (@iTypeId, 'bx_nexus_general', '_bx_nexus_adm_stg_cpt_category_general', 1);
+SET @iCategId = LAST_INSERT_ID();
+
+INSERT INTO `sys_options` (`name`, `value`, `category_id`, `caption`, `type`, `extra`, `check`, `check_error`, `order`) VALUES
+('bx_nexus_option_qwerty', '123', @iCategId, '_bx_nexus_option_qwerty', 'digit', '', '', '', 10);
+
+-- Injections
+
+INSERT INTO `sys_injections`(`name`, `page_index`, `key`, `type`, `data`, `replace`, `active`) VALUES
+('bx_nexus', 0, 'injection_head_begin', 'service', 'a:2:{s:6:"module";s:8:"bx_nexus";s:6:"method";s:20:"injection_head_begin";}', 0, 1),
+('bx_nexus', 0, 'injection_head', 'service', 'a:2:{s:6:"module";s:8:"bx_nexus";s:6:"method";s:14:"injection_head";}', 0, 1);
+
+-- Alerts
+
+INSERT INTO `sys_alerts_handlers` SET `name` = 'bx_nexus', `class` = 'BxNexusAlerts', `file` = 'modules/boonex/nexus/classes/BxNexusAlerts.php';
+
+SET @iHandlerId = LAST_INSERT_ID();
+
+INSERT INTO `sys_alerts` (`unit`, `action`, `handler_id`) VALUES
+('system', 'page_output', @iHandlerId);
+

+ 2 - 2
modules/boonex/mobile_apps/install/sql/install.sql → modules/boonex/nexus/install/sql/install.sql

@@ -3,13 +3,13 @@
 -- Studio page and widget
 
 INSERT INTO `sys_std_pages`(`index`, `name`, `header`, `caption`, `icon`) VALUES
-(3, 'bx_mobileapps', '_bx_mobileapps', '_bx_mobileapps', 'bx_mobileapps@modules/boonex/mobile_apps/|std-icon.svg');
+(3, 'bx_nexus', '_bx_nexus', '_bx_nexus', 'bx_nexus@modules/boonex/nexus/|std-icon.svg');
 SET @iPageId = LAST_INSERT_ID();
 
 SET @iParentPageId = (SELECT `id` FROM `sys_std_pages` WHERE `name` = 'home');
 SET @iParentPageOrder = (SELECT MAX(`order`) FROM `sys_std_pages_widgets` WHERE `page_id` = @iParentPageId);
 INSERT INTO `sys_std_widgets` (`page_id`, `module`, `url`, `click`, `icon`, `caption`, `cnt_notices`, `cnt_actions`) VALUES
-(@iPageId, 'bx_mobileapps', '{url_studio}module.php?name=bx_mobileapps', '', 'bx_mobileapps@modules/boonex/mobile_apps/|std-icon.svg', '_bx_mobileapps', '', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:11:"get_actions";s:6:"params";a:0:{}s:5:"class";s:18:"TemplStudioModules";}');
+(@iPageId, 'bx_nexus', '{url_studio}module.php?name=bx_nexus', '', 'bx_nexus@modules/boonex/nexus/|std-icon.svg', '_bx_nexus', '', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:11:"get_actions";s:6:"params";a:0:{}s:5:"class";s:18:"TemplStudioModules";}');
 INSERT INTO `sys_std_pages_widgets` (`page_id`, `widget_id`, `order`) VALUES
 (@iParentPageId, LAST_INSERT_ID(), IF(ISNULL(@iParentPageOrder), 1, @iParentPageOrder + 1));
 

+ 1 - 1
modules/boonex/mobile_apps/install/sql/uninstall.sql → modules/boonex/nexus/install/sql/uninstall.sql

@@ -3,5 +3,5 @@
 
 DELETE FROM `tp`, `tw`, `tpw`
 USING `sys_std_pages` AS `tp`, `sys_std_widgets` AS `tw`, `sys_std_pages_widgets` AS `tpw`
-WHERE `tp`.`id` = `tw`.`page_id` AND `tw`.`id` = `tpw`.`widget_id` AND `tp`.`name` = 'bx_mobileapps';
+WHERE `tp`.`id` = `tw`.`page_id` AND `tw`.`id` = `tpw`.`widget_id` AND `tp`.`name` = 'bx_nexus';
 

+ 0 - 0
modules/boonex/mobile_apps/js/pulltorefresh.min.js → modules/boonex/nexus/js/pulltorefresh.min.js


+ 1 - 1
modules/boonex/mobile_apps/request.php → modules/boonex/nexus/request.php

@@ -3,7 +3,7 @@
  * Copyright (c) UNA, Inc - https://una.io
  * MIT License - https://opensource.org/licenses/MIT
  *
- * @defgroup    MobileApps Mobile Apps
+ * @defgroup    Nexus Nexus - Mobile Apps and Desktop apps connector
  * @ingroup     UnaModules
  *
  * @{

Разница между файлами не показана из-за своего большого размера
+ 7 - 0
modules/boonex/nexus/template/images/icons/std-icon.svg


+ 12 - 11
modules/boonex/mobile_apps/template/mobile_apps_js.html → modules/boonex/nexus/template/js.html

@@ -38,17 +38,18 @@
         ipcRenderer.send('message', __msg__);
 
         // send messenger badge
-        setInterval(function () {
-            if ('undefined' !== typeof oLiveUpdates && oLiveUpdates._aSystemsActive && 'undefined' !== typeof oLiveUpdates._aSystemsActive.bx_messenger_new_messages) {
-                sMsg = {
-                    'bubbles': {
-                        'notifications-messenger': oLiveUpdates._aSystemsActive.bx_messenger_new_messages,
-                    },
-                };
-                ipcRenderer.send('message', sMsg);
-            }
-        }, 3000);
-        
+        if (typeof window.glBxMessengerOnNotificationChange === 'undefined')
+            window.glBxMessengerOnNotificationChange = [];
+
+        window.glBxMessengerOnNotificationChange.push(function (iNewNumberOfUnreadChats) {
+            sMsg = {
+                'bubbles': {
+                    'notifications-messenger': iNewNumberOfUnreadChats,
+                },
+            };
+            ipcRenderer.send('message', sMsg);
+        });
+
         if ($.cookie('memberID')) {
             // force links to open in external browser in electron
             $(document).ready(function () {

+ 0 - 0
modules/boonex/mobile_apps/template/mobile_apps_styles.html → modules/boonex/nexus/template/styles.html


+ 15 - 14
modules/boonex/organizations/install/sql/enable.sql

@@ -370,20 +370,21 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 ('bx_organizations_snippet_meta', 'bx_organizations', '_sys_menu_set_title_snippet_meta', 0);
 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `editable`, `order`) VALUES
-('bx_organizations_snippet_meta', 'bx_organizations', 'join', '_sys_menu_item_title_system_sm_join', '_sys_menu_item_title_sm_join', '', '', '', '', '', 2147483647, 1, 0, 1, 1),
-('bx_organizations_snippet_meta', 'bx_organizations', 'leave', '_sys_menu_item_title_system_sm_leave', '_sys_menu_item_title_sm_leave', '', '', '', '', '', 2147483647, 0, 0, 1, 2),
-('bx_organizations_snippet_meta', 'bx_organizations', 'befriend', '_sys_menu_item_title_system_sm_befriend', '_sys_menu_item_title_sm_befriend', '', '', '', '', '', 2147483647, 0, 0, 1, 3),
-('bx_organizations_snippet_meta', 'bx_organizations', 'unfriend', '_sys_menu_item_title_system_sm_unfriend', '_sys_menu_item_title_sm_unfriend', '', '', '', '', '', 2147483647, 0, 0, 1, 4),
-('bx_organizations_snippet_meta', 'bx_organizations', 'subscribe', '_sys_menu_item_title_system_sm_subscribe', '_sys_menu_item_title_sm_subscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 5),
-('bx_organizations_snippet_meta', 'bx_organizations', 'unsubscribe', '_sys_menu_item_title_system_sm_unsubscribe', '_sys_menu_item_title_sm_unsubscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 6),
-('bx_organizations_snippet_meta', 'bx_organizations', 'date', '_sys_menu_item_title_system_sm_date', '_sys_menu_item_title_sm_date', '', '', '', '', '', 2147483647, 0, 0, 1, 7),
-('bx_organizations_snippet_meta', 'bx_organizations', 'tags', '_sys_menu_item_title_system_sm_tags', '_sys_menu_item_title_sm_tags', '', '', '', '', '', 2147483647, 0, 0, 1, 8),
-('bx_organizations_snippet_meta', 'bx_organizations', 'views', '_sys_menu_item_title_system_sm_views', '_sys_menu_item_title_sm_views', '', '', '', '', '', 2147483647, 0, 0, 1, 9),
-('bx_organizations_snippet_meta', 'bx_organizations', 'comments', '_sys_menu_item_title_system_sm_comments', '_sys_menu_item_title_sm_comments', '', '', '', '', '', 2147483647, 0, 0, 1, 10),
-('bx_organizations_snippet_meta', 'bx_organizations', 'members', '_sys_menu_item_title_system_sm_members', '_sys_menu_item_title_sm_members', '', '', '', '', '', 2147483647, 1, 0, 1, 11),
-('bx_organizations_snippet_meta', 'bx_organizations', 'friends', '_sys_menu_item_title_system_sm_friends', '_sys_menu_item_title_sm_friends', '', '', '', '', '', 2147483647, 0, 0, 1, 12),
-('bx_organizations_snippet_meta', 'bx_organizations', 'subscribers', '_sys_menu_item_title_system_sm_subscribers', '_sys_menu_item_title_sm_subscribers', '', '', '', '', '', 2147483647, 0, 0, 1, 13),
-('bx_organizations_snippet_meta', 'bx_organizations', 'membership', '_sys_menu_item_title_system_sm_membership', '_sys_menu_item_title_sm_membership', '', '', '', '', '', 2147483647, 0, 0, 1, 14);
+('bx_organizations_snippet_meta', 'bx_organizations', 'date', '_sys_menu_item_title_system_sm_date', '_sys_menu_item_title_sm_date', '', '', '', '', '', 2147483647, 0, 0, 1, 1),
+('bx_organizations_snippet_meta', 'bx_organizations', 'tags', '_sys_menu_item_title_system_sm_tags', '_sys_menu_item_title_sm_tags', '', '', '', '', '', 2147483647, 0, 0, 1, 2),
+('bx_organizations_snippet_meta', 'bx_organizations', 'views', '_sys_menu_item_title_system_sm_views', '_sys_menu_item_title_sm_views', '', '', '', '', '', 2147483647, 0, 0, 1, 3),
+('bx_organizations_snippet_meta', 'bx_organizations', 'comments', '_sys_menu_item_title_system_sm_comments', '_sys_menu_item_title_sm_comments', '', '', '', '', '', 2147483647, 0, 0, 1, 4),
+('bx_organizations_snippet_meta', 'bx_organizations', 'members', '_sys_menu_item_title_system_sm_members', '_sys_menu_item_title_sm_members', '', '', '', '', '', 2147483647, 1, 0, 1, 5),
+('bx_organizations_snippet_meta', 'bx_organizations', 'friends', '_sys_menu_item_title_system_sm_friends', '_sys_menu_item_title_sm_friends', '', '', '', '', '', 2147483647, 0, 0, 1, 6),
+('bx_organizations_snippet_meta', 'bx_organizations', 'subscribers', '_sys_menu_item_title_system_sm_subscribers', '_sys_menu_item_title_sm_subscribers', '', '', '', '', '', 2147483647, 0, 0, 1, 7),
+('bx_organizations_snippet_meta', 'bx_organizations', 'membership', '_sys_menu_item_title_system_sm_membership', '_sys_menu_item_title_sm_membership', '', '', '', '', '', 2147483647, 0, 0, 1, 8),
+('bx_organizations_snippet_meta', 'bx_organizations', 'nl', '_sys_menu_item_title_system_sm_nl', '_sys_menu_item_title_sm_nl', '', '', '', '', '', 2147483647, 1, 0, 1, 9),
+('bx_organizations_snippet_meta', 'bx_organizations', 'join', '_sys_menu_item_title_system_sm_join', '_sys_menu_item_title_sm_join', '', '', '', '', '', 2147483647, 1, 0, 1, 10),
+('bx_organizations_snippet_meta', 'bx_organizations', 'leave', '_sys_menu_item_title_system_sm_leave', '_sys_menu_item_title_sm_leave', '', '', '', '', '', 2147483647, 0, 0, 1, 11),
+('bx_organizations_snippet_meta', 'bx_organizations', 'befriend', '_sys_menu_item_title_system_sm_befriend', '_sys_menu_item_title_sm_befriend', '', '', '', '', '', 2147483647, 0, 0, 1, 12),
+('bx_organizations_snippet_meta', 'bx_organizations', 'unfriend', '_sys_menu_item_title_system_sm_unfriend', '_sys_menu_item_title_sm_unfriend', '', '', '', '', '', 2147483647, 0, 0, 1, 13),
+('bx_organizations_snippet_meta', 'bx_organizations', 'subscribe', '_sys_menu_item_title_system_sm_subscribe', '_sys_menu_item_title_sm_subscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 14),
+('bx_organizations_snippet_meta', 'bx_organizations', 'unsubscribe', '_sys_menu_item_title_system_sm_unsubscribe', '_sys_menu_item_title_sm_unsubscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 15);
 
 -- MENU: notifications menu in account popup
 SET @iNotifMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name` = 'sys_account_notifications' AND `active` = 1 AND `order` < 9999 ORDER BY `order` DESC LIMIT 1);

+ 12 - 11
modules/boonex/persons/install/sql/enable.sql

@@ -323,17 +323,18 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 ('bx_persons_snippet_meta', 'bx_persons', '_sys_menu_set_title_snippet_meta', 0);
 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `editable`, `order`) VALUES
-('bx_persons_snippet_meta', 'bx_persons', 'befriend', '_sys_menu_item_title_system_sm_befriend', '_sys_menu_item_title_sm_befriend', '', '', '', '', '', 2147483647, 1, 0, 1, 1),
-('bx_persons_snippet_meta', 'bx_persons', 'unfriend', '_sys_menu_item_title_system_sm_unfriend', '_sys_menu_item_title_sm_unfriend', '', '', '', '', '', 2147483647, 0, 0, 1, 2),
-('bx_persons_snippet_meta', 'bx_persons', 'subscribe', '_sys_menu_item_title_system_sm_subscribe', '_sys_menu_item_title_sm_subscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 3),
-('bx_persons_snippet_meta', 'bx_persons', 'unsubscribe', '_sys_menu_item_title_system_sm_unsubscribe', '_sys_menu_item_title_sm_unsubscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 4),
-('bx_persons_snippet_meta', 'bx_persons', 'date', '_sys_menu_item_title_system_sm_date', '_sys_menu_item_title_sm_date', '', '', '', '', '', 2147483647, 0, 0, 1, 5),
-('bx_persons_snippet_meta', 'bx_persons', 'tags', '_sys_menu_item_title_system_sm_tags', '_sys_menu_item_title_sm_tags', '', '', '', '', '', 2147483647, 0, 0, 1, 6),
-('bx_persons_snippet_meta', 'bx_persons', 'views', '_sys_menu_item_title_system_sm_views', '_sys_menu_item_title_sm_views', '', '', '', '', '', 2147483647, 0, 0, 1, 7),
-('bx_persons_snippet_meta', 'bx_persons', 'comments', '_sys_menu_item_title_system_sm_comments', '_sys_menu_item_title_sm_comments', '', '', '', '', '', 2147483647, 0, 0, 1, 8),
-('bx_persons_snippet_meta', 'bx_persons', 'friends', '_sys_menu_item_title_system_sm_friends', '_sys_menu_item_title_sm_friends', '', '', '', '', '', 2147483647, 1, 0, 1, 9),
-('bx_persons_snippet_meta', 'bx_persons', 'subscribers', '_sys_menu_item_title_system_sm_subscribers', '_sys_menu_item_title_sm_subscribers', '', '', '', '', '', 2147483647, 0, 0, 1, 10),
-('bx_persons_snippet_meta', 'bx_persons', 'membership', '_sys_menu_item_title_system_sm_membership', '_sys_menu_item_title_sm_membership', '', '', '', '', '', 2147483647, 0, 0, 1, 11);
+('bx_persons_snippet_meta', 'bx_persons', 'date', '_sys_menu_item_title_system_sm_date', '_sys_menu_item_title_sm_date', '', '', '', '', '', 2147483647, 0, 0, 1, 1),
+('bx_persons_snippet_meta', 'bx_persons', 'tags', '_sys_menu_item_title_system_sm_tags', '_sys_menu_item_title_sm_tags', '', '', '', '', '', 2147483647, 0, 0, 1, 2),
+('bx_persons_snippet_meta', 'bx_persons', 'views', '_sys_menu_item_title_system_sm_views', '_sys_menu_item_title_sm_views', '', '', '', '', '', 2147483647, 0, 0, 1, 3),
+('bx_persons_snippet_meta', 'bx_persons', 'comments', '_sys_menu_item_title_system_sm_comments', '_sys_menu_item_title_sm_comments', '', '', '', '', '', 2147483647, 0, 0, 1, 4),
+('bx_persons_snippet_meta', 'bx_persons', 'friends', '_sys_menu_item_title_system_sm_friends', '_sys_menu_item_title_sm_friends', '', '', '', '', '', 2147483647, 1, 0, 1, 5),
+('bx_persons_snippet_meta', 'bx_persons', 'subscribers', '_sys_menu_item_title_system_sm_subscribers', '_sys_menu_item_title_sm_subscribers', '', '', '', '', '', 2147483647, 1, 0, 1, 6),
+('bx_persons_snippet_meta', 'bx_persons', 'membership', '_sys_menu_item_title_system_sm_membership', '_sys_menu_item_title_sm_membership', '', '', '', '', '', 2147483647, 0, 0, 1, 7),
+('bx_persons_snippet_meta', 'bx_persons', 'nl', '_sys_menu_item_title_system_sm_nl', '_sys_menu_item_title_sm_nl', '', '', '', '', '', 2147483647, 1, 0, 1, 8),
+('bx_persons_snippet_meta', 'bx_persons', 'befriend', '_sys_menu_item_title_system_sm_befriend', '_sys_menu_item_title_sm_befriend', '', '', '', '', '', 2147483647, 1, 0, 1, 9),
+('bx_persons_snippet_meta', 'bx_persons', 'unfriend', '_sys_menu_item_title_system_sm_unfriend', '_sys_menu_item_title_sm_unfriend', '', '', '', '', '', 2147483647, 0, 0, 1, 10),
+('bx_persons_snippet_meta', 'bx_persons', 'subscribe', '_sys_menu_item_title_system_sm_subscribe', '_sys_menu_item_title_sm_subscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 11),
+('bx_persons_snippet_meta', 'bx_persons', 'unsubscribe', '_sys_menu_item_title_system_sm_unsubscribe', '_sys_menu_item_title_sm_unsubscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 12);
 
 -- MENU: notifications menu in account popup
 SET @iNotifMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name` = 'sys_account_notifications' AND `active` = 1 AND `order` < 9999 ORDER BY `order` DESC LIMIT 1);

+ 2 - 1
modules/boonex/protean/data/template/system/css/default.less

@@ -725,7 +725,8 @@ a.bx-def-font-h3:hover {
 	border-color: @bx-color-border-form-input-active;
 	background-color: @bx-color-form-input-active;
 }
-.bx-form-value .bx-switcher-cont {
+.bx-form-value .bx-switcher-cont,
+.bx-grid-table .bx-switcher-cont {
 	border-color: @bx-color-border-form-input;
 	border-width: @bx-border-width-form-input;
 

+ 3 - 0
modules/boonex/protean/data/template/system/css/general.css

@@ -24,4 +24,7 @@
 }
 .bx-profile-stats .bx-def-unit-cnt .bx-def-ava-size-max-height {
     max-height: 3.75rem;
+}
+.bx-profile-stats .bx-def-unit-cnt .bx-def-unit-line.bx-def-margin-sec-top {
+    margin-top: 0.25rem;
 }

+ 0 - 4
modules/boonex/protean/data/template/system/css/menu.css

@@ -17,10 +17,6 @@ ul.bx-menu-ver.bx-menu-profile-stats li > .bx-def-padding-sec-leftright {
 ul.bx-menu-ver.bx-menu-profile-stats li > .bx-def-padding-sec-right {
     padding-right: 1.0rem;
 }
-ul.bx-menu-ver.bx-menu-profile-stats li a .sys-icon,
-ul.bx-menu-ver.bx-menu-profile-stats li a span {
-    color: #212121;
-}
 
 ul.bx-menu-ver.bx-menu-profile-stats li.bx-menu-item-profile-stats-profile .bx-menu-addon .bx-def-label.menu {
     background-color: rgba(0,134,214, 1);

+ 2 - 2
modules/boonex/protean/install/sql/install.sql

@@ -1080,7 +1080,7 @@ INSERT INTO `sys_options_mixes2options` (`option`, `mix_id`, `value`) VALUES
 ('bx_protean_menu_page_border_size', @iMixId, '1px'),
 ('bx_protean_menu_page_content_padding', @iMixId, '0px'),
 ('bx_protean_menu_page_font_color', @iMixId, 'rgba(68, 136, 255, 1)'),
-('bx_protean_menu_page_font_color_active', @iMixId, 'rgba(51, 68, 85, 1)'),
+('bx_protean_menu_page_font_color_active', @iMixId, 'rgba(252, 253, 254, 1)'),
 ('bx_protean_menu_page_font_color_hover', @iMixId, 'rgba(68, 136, 255, 0.8)'),
 ('bx_protean_menu_page_font_family', @iMixId, '\"Helvetica Neue\", sans-serif'),
 ('bx_protean_menu_page_font_shadow', @iMixId, 'none'),
@@ -1123,7 +1123,7 @@ INSERT INTO `sys_options_mixes2options` (`option`, `mix_id`, `value`) VALUES
 ('bx_protean_site_logo_alt', @iMixId, ''),
 ('bx_protean_site_logo_height', @iMixId, '48'),
 ('bx_protean_site_logo_width', @iMixId, '240'),
-('bx_protean_styles_custom', @iMixId, 'div.bx-base-pofile-cover {\r\nborder: 1px solid rgba(136, 153, 170, 0.3);\r\nborder-bottom-width: 0;\r\n}\r\n\r\n\r\ndiv.bx-market-unit-cover div.bx-base-text-unit-no-thumb {\r\nborder-width: 0px;\r\n}\r\n\r\n.sys-cpf-header,\r\n.sys-cpf-title,\r\n.sys-cpf-submenu-cnt ul li {\r\nborder-bottom-color: rgba(136, 153, 170, 0.3);\r\n}\r\n\r\n.sys-cpf-submenu-cnt ul li.bx-menu-inter-act {\r\nborder-bottom-color: rgb(17, 34, 51);\r\n}\r\n\r\n\r\n.bx-def-font {\r\nline-height:18px;\r\nline-height:1.2rem;\r\n}\r\nh1,\r\n.bx-def-font-h1 {\r\nline-height:36px;\r\nline-height:2.4rem;\r\n}\r\nh2,\r\n.bx-def-font-h2 {\r\nline-height:29px;\r\nline-height:1.92rem;\r\n}\r\nh3,\r\n.bx-def-font-h3 {\r\nline-height:22px;\r\nline-height:1.44rem;\r\n}\r\n'),
+('bx_protean_styles_custom', @iMixId, 'div.bx-base-pofile-cover {\r\nborder: 1px solid rgba(136, 153, 170, 0.3);\r\nborder-bottom-width: 0;\r\n}\r\n\r\n\r\ndiv.bx-market-unit-cover div.bx-base-text-unit-no-thumb {\r\nborder-width: 0px;\r\n}\r\n\r\n.sys-cpf-header,\r\n.sys-cpf-title,\r\n.sys-cpf-submenu-cnt ul li {\r\nborder-bottom-color: rgba(136, 153, 170, 0.3);\r\n}\r\n\r\n.sys-cpf-submenu-cnt ul li.bx-menu-inter-act {\r\nborder-bottom-color: rgb(17, 34, 51);\r\n}\r\n\r\n\r\n.bx-def-font {\r\nline-height:18px;\r\nline-height:1.2rem;\r\n}\r\nh1,\r\n.bx-def-font-h1 {\r\nline-height:36px;\r\nline-height:2.4rem;\r\n}\r\nh2,\r\n.bx-def-font-h2 {\r\nline-height:29px;\r\nline-height:1.92rem;\r\n}\r\nh3,\r\n.bx-def-font-h3 {\r\nline-height:22px;\r\nline-height:1.44rem;\r\n}\r\n\r\n.bx-def-label {\r\nbackground-color: rgba(245, 250, 255, 0.5);\r\n}\r\n.bx-def-label,\r\n.bx-def-label a,\r\n.bx-def-label .sys-icon {\r\ncolor: rgba(51, 68, 85, 1);\r\n}\r\n\r\n/*--- Forms ---*/\r\n.bx-form-value .bx-form-input-autotoken b {\r\ncolor: rgba(243, 244, 245, 1);\r\n}\r\n\r\n/*--- Timeline ---*/\r\ndiv.bx-tl-view-timeline div.bx-tl-items:before,\r\ndiv.bx-tl-view-timeline div.bx-tl-item-circle {\r\nbackground-color: rgba(51, 68, 85, 1);\r\n}\r\n'),
 ('bx_protean_vpm_font_size_scale', @iMixId, '85%'),
 ('bx_protean_vpt_font_size_scale', @iMixId, '93.75%');
 

+ 0 - 19
modules/boonex/quoteofday/template/manage_item.html

@@ -1,19 +0,0 @@
-<div class="bx-pgt-new-key bx-def-color-bg-block">
-    <div class="bx-pgt-new-key-cnt">
-        __form__
-        <script type="text/javascript">
-            $(document).ready(function () {
-                $("#__form_id__").ajaxForm({ 
-                    dataType: "json",
-                    beforeSubmit: function (formData, jqForm, options) {
-                        bx_loading($("#__form_id__"), true);
-                    },
-                    success: function (data) {
-                        $(".bx-popup-applied:visible").dolPopupHide();
-                        glGrids.__object__.processJson(data, '__action__');
-                    }
-                });
-            });
-        </script>
-    </div>
-</div>

+ 0 - 1
modules/boonex/ribbons/template/snippet_view.html

@@ -9,7 +9,6 @@
             </bx_if:image>
             <bx_if:text>
                 __text__
-        </div>
             </bx_if:text>
         </div>
     </bx_repeat:items>

+ 12 - 10
modules/boonex/russian/data/langs/bx_groups/ru.xml

@@ -219,17 +219,19 @@
     <string name="_bx_groups_menu_item_title_system_entries_home"><![CDATA[Группы]]></string>
     <string name="_bx_groups_menu_item_title_entries_home"><![CDATA[Группы]]></string>
     <string name="_bx_groups_menu_item_title_system_admt_groups"><![CDATA[Группы]]></string>
-	<string name="_bx_groups_menu_item_title_admt_groups"><![CDATA[Группы]]></string>
-	<string name="_bx_groups_menu_item_title_manage_my"><![CDATA[Мои группы]]></string>
-	<string name="_bx_groups_menu_item_title_manage_all"><![CDATA[Все группы]]></string>
-	<string name="_bx_groups_menu_item_title_system_entries_top"><![CDATA[Популярные]]></string>
-	<string name="_bx_groups_menu_item_title_entries_top"><![CDATA[Популярные]]></string>
+	  <string name="_bx_groups_menu_item_title_admt_groups"><![CDATA[Группы]]></string>
+	  <string name="_bx_groups_menu_item_title_manage_my"><![CDATA[Мои группы]]></string>
+	  <string name="_bx_groups_menu_item_title_manage_all"><![CDATA[Все группы]]></string>
+	  <string name="_bx_groups_menu_item_title_system_entries_top"><![CDATA[Популярные]]></string>
+	  <string name="_bx_groups_menu_item_title_entries_top"><![CDATA[Популярные]]></string>
+    <string name="_bx_groups_menu_item_title_system_sm_privacy"><![CDATA[Конфиденциальность]]></string>
+    <string name="_bx_groups_menu_item_title_sm_privacy"><![CDATA[Конфиденциальность]]></string>
 
-	<string name="_bx_groups_grid_filter_item_title_adm_select_one_filter1"><![CDATA[Все статусы]]></string>
-	<string name="_bx_groups_grid_filter_item_title_adm_active"><![CDATA[Активные]]></string>
-	<string name="_bx_groups_grid_filter_item_title_adm_pending"><![CDATA[В ожидании]]></string>
-	<string name="_bx_groups_grid_filter_item_title_adm_suspended"><![CDATA[Заблокированные]]></string>
-	<string name="_bx_groups_grid_column_title_adm_active"><![CDATA[Активные]]></string>
+    <string name="_bx_groups_grid_filter_item_title_adm_select_one_filter1"><![CDATA[Все статусы]]></string>
+    <string name="_bx_groups_grid_filter_item_title_adm_active"><![CDATA[Активные]]></string>
+    <string name="_bx_groups_grid_filter_item_title_adm_pending"><![CDATA[В ожидании]]></string>
+    <string name="_bx_groups_grid_filter_item_title_adm_suspended"><![CDATA[Заблокированные]]></string>
+    <string name="_bx_groups_grid_column_title_adm_active"><![CDATA[Активные]]></string>
     <string name="_bx_groups_grid_column_title_adm_name"><![CDATA[Название]]></string>
     <string name="_bx_groups_grid_column_title_adm_added"><![CDATA[Создание]]></string>
     <string name="_bx_groups_grid_column_title_adm_account"><![CDATA[Аккаунт]]></string>

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

@@ -2240,6 +2240,7 @@
     <string name="_sys_menu_item_title_sm_leave"><![CDATA[Покинуть]]></string>
     <string name="_sys_menu_item_title_sm_leave_cancel"><![CDATA[Отменить присоединение]]></string>
     <string name="_sys_menu_item_title_sm_leave_reject"><![CDATA[Отвергнуть присоединение]]></string>
+    <string name="_sys_menu_item_title_sm_nl"><![CDATA[Новая строка]]></string>
     <string name="_sys_menu_item_title_sm_subscribe"><![CDATA[Получать уведомления]]></string>
     <string name="_sys_menu_item_title_sm_unsubscribe"><![CDATA[Отключить уведомления]]></string>
     <string name="_sys_menu_item_title_sm_friends"><![CDATA[Друзья: {0}]]></string>
@@ -2314,6 +2315,7 @@
     <string name="_sys_menu_item_title_system_sm_unfriend"><![CDATA[Перестать дружить]]></string>
     <string name="_sys_menu_item_title_system_sm_join"><![CDATA[Присоединиться]]></string>
     <string name="_sys_menu_item_title_system_sm_leave"><![CDATA[Покинуть]]></string>
+    <string name="_sys_menu_item_title_system_sm_nl"><![CDATA[Новая строка]]></string>
     <string name="_sys_menu_item_title_system_sm_subscribe"><![CDATA[Получать уведомления]]></string>
     <string name="_sys_menu_item_title_system_sm_unsubscribe"><![CDATA[Отключить уведомления]]></string>
     <string name="_sys_menu_item_title_system_sm_country"><![CDATA[Страна]]></string>

+ 11 - 10
modules/boonex/spaces/install/sql/enable.sql

@@ -304,16 +304,17 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 ('bx_spaces_snippet_meta', 'bx_spaces', '_sys_menu_set_title_snippet_meta', 0);
 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `editable`, `order`) VALUES
-('bx_spaces_snippet_meta', 'bx_spaces', 'join', '_sys_menu_item_title_system_sm_join', '_sys_menu_item_title_sm_join', '', '', '', '', '', 2147483647, 1, 0, 1, 1),
-('bx_spaces_snippet_meta', 'bx_spaces', 'leave', '_sys_menu_item_title_system_sm_leave', '_sys_menu_item_title_sm_leave', '', '', '', '', '', 2147483647, 0, 0, 1, 2),
-('bx_spaces_snippet_meta', 'bx_spaces', 'subscribe', '_sys_menu_item_title_system_sm_subscribe', '_sys_menu_item_title_sm_subscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 3),
-('bx_spaces_snippet_meta', 'bx_spaces', 'unsubscribe', '_sys_menu_item_title_system_sm_unsubscribe', '_sys_menu_item_title_sm_unsubscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 4),
-('bx_spaces_snippet_meta', 'bx_spaces', 'date', '_sys_menu_item_title_system_sm_date', '_sys_menu_item_title_sm_date', '', '', '', '', '', 2147483647, 0, 0, 1, 5),
-('bx_spaces_snippet_meta', 'bx_spaces', 'tags', '_sys_menu_item_title_system_sm_tags', '_sys_menu_item_title_sm_tags', '', '', '', '', '', 2147483647, 0, 0, 1, 6),
-('bx_spaces_snippet_meta', 'bx_spaces', 'views', '_sys_menu_item_title_system_sm_views', '_sys_menu_item_title_sm_views', '', '', '', '', '', 2147483647, 0, 0, 1, 7),
-('bx_spaces_snippet_meta', 'bx_spaces', 'comments', '_sys_menu_item_title_system_sm_comments', '_sys_menu_item_title_sm_comments', '', '', '', '', '', 2147483647, 0, 0, 1, 8),
-('bx_spaces_snippet_meta', 'bx_spaces', 'members', '_sys_menu_item_title_system_sm_members', '_sys_menu_item_title_sm_members', '', '', '', '', '', 2147483647, 1, 0, 1, 9),
-('bx_spaces_snippet_meta', 'bx_spaces', 'subscribers', '_sys_menu_item_title_system_sm_subscribers', '_sys_menu_item_title_sm_subscribers', '', '', '', '', '', 2147483647, 0, 0, 1, 10);
+('bx_spaces_snippet_meta', 'bx_spaces', 'date', '_sys_menu_item_title_system_sm_date', '_sys_menu_item_title_sm_date', '', '', '', '', '', 2147483647, 0, 0, 1, 1),
+('bx_spaces_snippet_meta', 'bx_spaces', 'tags', '_sys_menu_item_title_system_sm_tags', '_sys_menu_item_title_sm_tags', '', '', '', '', '', 2147483647, 0, 0, 1, 2),
+('bx_spaces_snippet_meta', 'bx_spaces', 'views', '_sys_menu_item_title_system_sm_views', '_sys_menu_item_title_sm_views', '', '', '', '', '', 2147483647, 0, 0, 1, 3),
+('bx_spaces_snippet_meta', 'bx_spaces', 'comments', '_sys_menu_item_title_system_sm_comments', '_sys_menu_item_title_sm_comments', '', '', '', '', '', 2147483647, 0, 0, 1, 4),
+('bx_spaces_snippet_meta', 'bx_spaces', 'members', '_sys_menu_item_title_system_sm_members', '_sys_menu_item_title_sm_members', '', '', '', '', '', 2147483647, 1, 0, 1, 5),
+('bx_spaces_snippet_meta', 'bx_spaces', 'subscribers', '_sys_menu_item_title_system_sm_subscribers', '_sys_menu_item_title_sm_subscribers', '', '', '', '', '', 2147483647, 0, 0, 1, 6),
+('bx_spaces_snippet_meta', 'bx_spaces', 'nl', '_sys_menu_item_title_system_sm_nl', '_sys_menu_item_title_sm_nl', '', '', '', '', '', 2147483647, 1, 0, 1, 7),
+('bx_spaces_snippet_meta', 'bx_spaces', 'join', '_sys_menu_item_title_system_sm_join', '_sys_menu_item_title_sm_join', '', '', '', '', '', 2147483647, 1, 0, 1, 8),
+('bx_spaces_snippet_meta', 'bx_spaces', 'leave', '_sys_menu_item_title_system_sm_leave', '_sys_menu_item_title_sm_leave', '', '', '', '', '', 2147483647, 0, 0, 1, 9),
+('bx_spaces_snippet_meta', 'bx_spaces', 'subscribe', '_sys_menu_item_title_system_sm_subscribe', '_sys_menu_item_title_sm_subscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 10),
+('bx_spaces_snippet_meta', 'bx_spaces', 'unsubscribe', '_sys_menu_item_title_system_sm_unsubscribe', '_sys_menu_item_title_sm_unsubscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 11);
 
 -- MENU: profile stats
 SET @iNotifMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name` = 'sys_profile_stats' AND `active` = 1 LIMIT 1);

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

@@ -148,7 +148,8 @@ CREATE TABLE IF NOT EXISTS `bx_timeline_links` (
   `title` varchar(255) NOT NULL,
   `text` text NOT NULL,
   `added` int(11) NOT NULL,
-  PRIMARY KEY (`id`)
+  PRIMARY KEY (`id`),
+  KEY `profile_id` (`profile_id`)
 );
 
 CREATE TABLE IF NOT EXISTS `bx_timeline_links2events` (
@@ -156,7 +157,7 @@ CREATE TABLE IF NOT EXISTS `bx_timeline_links2events` (
   `event_id` int(11) NOT NULL DEFAULT '0',
   `link_id` int(11) NOT NULL DEFAULT '0',
   PRIMARY KEY (`id`),
-  UNIQUE KEY `link` (`event_id`, `link_id`)
+  UNIQUE KEY `link` (`link_id`, `event_id`)
 );
 
 -- TABLES: REPOSTS

+ 24 - 0
scripts/delete_me.html

@@ -0,0 +1,24 @@
+<!-- NEW IMPLEMENETAION: Javascript install - works fine -->
+<link rel="stylesheet" href="//cdn.flowplayer.com/releases/native/stable/style/flowplayer.css">
+<script src="//cdn.flowplayer.com/releases/native/stable/flowplayer.min.js"></script>
+<div id="bx_flowplayer"></div>
+<script>
+flowplayer('#bx_flowplayer', {
+  "ima": {
+    "ads": [
+      { "time": 0, "adTag": "https://mydserver.com/path/vast.xml" },
+      { "time": 20, "adTag": "https://mydserver.com/path/vast2.xml" },
+      { "time": 300, "adTag": "https://mydserver.com/path/vast3.xml" }
+    ],
+    "parameters": { "age": 25, "location": "us" },
+    "show_all_ads_on_seek": false
+  }
+  poster: "__image__",
+  src: [
+    <bx_if:mp4>{ "src": "__mp4__", "type": "video/mp4" },</bx_if:mp4>
+    <bx_if:webm>{ "src": "__webm__", "type": "video/webm; codecs='vp8, vorbis'" },</bx_if:webm>
+    <bx_if:ogv>{ "src": "__ogv__", "type": "video/ogg" },</bx_if:ogv>
+  ],
+  token: 'eyJraWQiOiI1Y0E2QjlRZml5a3EiLCJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJjIjoie1wiYWNsXCI6NixcImlkXCI6XCI1Y0E2QjlRZml5a3FcIn0iLCJpc3MiOiJGbG93cGxheWVyIn0.uSWLyAwUCdKRL9CyKJIJbgfrRnwKhwcIwQgWgbYIB3_TxMvIgBmIQFxle6pa7RgWLUY4qE_zRawJDR0sk_hZqg'
+})
+</script>

+ 11 - 3
template/scripts/BxBaseAccountForms.php

@@ -77,6 +77,9 @@ class BxBaseAccountForms extends BxDolProfileForms
 
         $iProfileId = $this->onAccountCreated($iAccountId, $oForm->isSetPendingApproval());
 
+        $sRelocateCustom = $oForm->getCleanValue('relocate');
+        $bRelocateCustom = !empty($sRelocateCustom);
+
         // perform action
         BxDolAccount::isAllowedCreate ($iProfileId, true);
 
@@ -106,16 +109,21 @@ class BxBaseAccountForms extends BxDolProfileForms
             $a = BxDolService::call($sProfileModule, 'entity_add', array($iProfileId, $aProfileInfo));
 
             // in case of successful profile add redirect to the page after profile creation
-            if (0 == $a['code']) { 
+            if (0 == $a['code']) {
+                if($bRelocateCustom)
+                    $this->_redirectAndExit($sRelocateCustom, false);
+
                 BxDolService::call($sProfileModule, 'redirect_after_add', array($a['content']));
                 return;
             }
             // if creation failed, redirect to create profile form
         }
 
-        $sRedirectUrl = !empty($sProfileModule) ? BxDolService::call($sProfileModule, 'profile_create_url', array(false)) : '';
+        $sRelocate = !empty($sProfileModule) ? BxDolService::call($sProfileModule, 'profile_create_url', array(false)) : '';
+        if(empty($sRelocate))
+            $sRelocate = $bRelocateCustom ? $sRelocateCustom : getParam('sys_redirect_after_account_added');
     
-        $this->_redirectAndExit(!empty($sRedirectUrl) ? $sRedirectUrl : getParam('sys_redirect_after_account_added'), true, array(
+        $this->_redirectAndExit($sRelocate, true, array(
             'account_id' => $iAccountId,
             'profile_id' => $iProfileId,
         ));

+ 12 - 2
template/scripts/BxBaseMenuUnitMeta.php

@@ -42,6 +42,11 @@ class BxBaseMenuUnitMeta extends BxTemplMenuCustom
         return $this->getUnitMetaItem('sbutton', $sContent, $aAttrs);
     }
 
+    public function getUnitMetaItemNl($sContent = '')
+    {
+        return $this->getUnitMetaItem('nl', $sContent);
+    }
+
     public function getUnitMetaItemCustom($sContent)
     {
         return $this->getUnitMetaItem('custom', $sContent);
@@ -49,13 +54,13 @@ class BxBaseMenuUnitMeta extends BxTemplMenuCustom
 
     public function getUnitMetaItem($sName, $sContent, $aAttrs = array(), $sTemplate = 'unit_meta_item.html')
     {
-        if(empty($sContent))
+        if(empty($sContent) && $sName != 'nl')
             return '';
 
         if(!is_array($aAttrs))
             $aAttrs = array();
 
-        $aTags = array('span', 'a', 'button', 'sbutton', 'custom');
+        $aTags = array('span', 'a', 'button', 'sbutton', 'custom', 'nl');
 
         $sTmplVarsClass = ''; 
         if(!empty($aAttrs['class'])) {
@@ -88,6 +93,11 @@ class BxBaseMenuUnitMeta extends BxTemplMenuCustom
         return $this->_oTemplate->parseHtmlByName($sTemplate, $aTmplVars);
     }
     
+    protected function _getMenuItemNl($aItem)
+    {
+        return $this->getUnitMetaItemNl();
+    }
+
     protected function _getMenuItemDefault($aItem)
     {
         $sResult = '';

+ 22 - 6
template/scripts/BxBaseSearchExtended.php

@@ -97,18 +97,30 @@ class BxBaseSearchExtended extends BxDolSearchExtended
 
         $aParamsSearch = array();
         foreach($this->_aObject['fields'] as $aField) {
-            $sValue = $oForm->getCleanValue($aField['name']);
-            if(empty($sValue) || (is_array($sValue) && bx_is_empty_array($sValue)))
+            $mixedValue = $oForm->getCleanValue($aField['name']);
+            if(empty($mixedValue) || (is_array($mixedValue) && bx_is_empty_array($mixedValue)))
                 continue;
 
             $aParamsSearch[$aField['name']] = array(
                 'type' => $aField['search_type'],
-                'value' => $sValue,
+                'value' => $mixedValue,
                 'operator' => $aField['search_operator']
             );
 
-            if(!$bCondition)
-                $aParams['cond'][$aField['name']] = $sValue;
+            if(!$bCondition) {
+                if(!isset($aParams['cond']))
+                    $aParams['cond'] = array();
+
+                switch($oForm->aInputs[$aField['name']]['type']) {
+                    case 'location':
+                        $aParams['cond'][$aField['name']] = $mixedValue['string'];
+                        $aParams['cond'] = array_merge($aParams['cond'], BxDolMetatags::locationsParseComponents($mixedValue['array'], $aField['name']));
+                        break;
+
+                    default:
+                        $aParams['cond'][$aField['name']] = $mixedValue;
+                }
+            }
         }
 
         if(empty($aParamsSearch) || !is_array($aParamsSearch))
@@ -224,6 +236,9 @@ class BxBaseSearchExtended extends BxDolSearchExtended
                     'pass' => !empty($aField['pass']) ? $aField['pass'] : 'Xss'
                 )
             );
+
+            if(in_array($aField['search_type'], array('location')))
+                $aForm['inputs'][$aField['name']]['manual_input'] = true;
         }
 
         $aForm['inputs']['search'] = array(
@@ -241,9 +256,10 @@ class BxBaseSearchExtended extends BxDolSearchExtended
 
         $bJsMode = isset($aParams['js_mode']) ? (bool)$aParams['js_mode'] : $this->_bJsMode;
         $bCondition = !empty($aParams['cond']) && is_array($aParams['cond']);
+        $aValues = !$bJsMode && $bCondition ? $aParams['cond'] : array();
 
         $this->_oForm = new $sClass($aForm, $this->_oTemplate);
-        $this->_oForm->initChecker(!$bJsMode && $bCondition ? $aParams['cond'] : array());
+        $this->_oForm->initChecker($aValues, $aValues);
 
         return $this->_oForm;
     }

+ 4 - 1
template/scripts/BxBaseSearchExtendedForm.php

@@ -31,7 +31,10 @@ class BxBaseSearchExtendedForm extends BxTemplFormView
 
         //--- Process field with 'Location' type. 
         if($bType && $this->aInputs[$sName]['type'] == 'location')
-            return BxDolMetatags::locationsRetrieveFromForm($sName, $this);
+            return array(
+                'string' => parent::getCleanValue($sName), 
+                'array' => BxDolMetatags::locationsRetrieveFromForm($sName, $this)
+            );
 
         //--- Process field with 'Date Range Age' and 'Date-Time Range Age' type.
         if($bType && in_array($this->aInputs[$sName]['type'], array('datepicker_range_age', 'datetime_range_age'))) {

+ 2 - 1
template/unit_meta_item.html

@@ -2,4 +2,5 @@
 <bx_if:a><span class="__style_prefix__-div bx-def-font-grayed">&#183;&nbsp;</span><span class="__style_prefix__-item"><a class="__class__" <bx_repeat:attrs>__key__="__value__"</bx_repeat:attrs>>__content__</a></span></bx_if:a>
 <bx_if:button><span class="__style_prefix__-div bx-def-font-grayed">&#183;&nbsp;</span><span class="__style_prefix__-item"><a class="bx-btn __class__" <bx_repeat:attrs>__key__="__value__"</bx_repeat:attrs>>__content__</a></span></bx_if:button>
 <bx_if:sbutton><span class="__style_prefix__-div bx-def-font-grayed">&#183;&nbsp;</span><span class="__style_prefix__-item"><a class="bx-btn bx-btn-small __class__" <bx_repeat:attrs>__key__="__value__"</bx_repeat:attrs>>__content__</a></span></bx_if:sbutton>
-<bx_if:custom><span class="__style_prefix__-div bx-def-font-grayed">&#183;&nbsp;</span><span class="__style_prefix__-item">__content__</span></bx_if:custom>
+<bx_if:custom><span class="__style_prefix__-div bx-def-font-grayed">&#183;&nbsp;</span><span class="__style_prefix__-item">__content__</span></bx_if:custom>
+<bx_if:nl></bx_if:nl>

Некоторые файлы не были показаны из-за большого количества измененных файлов